@qbs-origin/origin-form 0.6.5 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,10 @@
1
+ // Inline flag icons (base64 encoded for web component compatibility)
2
+ export const FLAG_ICONS = {
3
+ en: 'data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjggMjAiIHdpZHRoPSIyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHJlY3QgaWQ9ImEiIGhlaWdodD0iMjAiIHJ4PSIzIiB3aWR0aD0iMjgiLz48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHhsaW5rOmhyZWY9IiNhIi8+PC9tYXNrPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjx1c2UgZmlsbD0iIzBhMTdhNyIgeGxpbms6aHJlZj0iI2EiLz48cGF0aCBkPSJtMjkuMjgyNDY5Mi0xLjkxNjQ0NjIzIDEuNDkxMTgxMSAyLjIxMDc2Njg2LTkuNDQ4MzAwNiA2LjM3MjIzMzE0IDYuNjc0NjUwMy4wMDAxMTI5djYuNjY2NjY2NjNsLTYuNjc0NjUwMy0uMDAwNzc5NSA5LjQ0ODMwMDYgNi4zNzMxMjU2LTEuNDkxMTgxMSAyLjIxMDc2NjgtMTEuOTUwMTE5NS04LjA2MDg5MjQuMDAwOTgzNiA3LjQ3Nzc3OTVoLTYuNjY2NjY2NmwtLjAwMDMxNy03LjQ3Nzc3OTUtMTEuOTQ4ODE4OSA4LjA2MDg5MjQtMS40OTExODEwNy0yLjIxMDc2NjggOS40NDgtNi4zNzMxMjU2LTYuNjc0MzQ5NzMuMDAwNzc5NXYtNi42NjY2NjY2M2w2LjY3NDM0OTczLS4wMDAxMTI5LTkuNDQ4LTYuMzcyMjMzMTQgMS40OTExODEwNy0yLjIxMDc2Njg2IDExLjk0ODgxODkgOC4wNi4wMDAzMTctNy40NzY4ODcxaDYuNjY2NjY2NmwtLjAwMDk4MzYgNy40NzY4ODcxeiIgZmlsbD0iI2ZmZiIgbWFzaz0idXJsKCNiKSIvPjxnIHN0cm9rZT0iI2RiMWYzNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2Utd2lkdGg9Ii42NjciPjxwYXRoIGQ9Im0xOC42NjggNi4zMzIgMTIuNjY1LTguMzMyIiBtYXNrPSJ1cmwoI2IpIi8+PHBhdGggZD0ibTIwLjAxMyAyMS4zNSAxMS4zNTQtNy42NTIiIG1hc2s9InVybCgjYikiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzUuMDQ4KSIvPjxwYXRoIGQ9Im04LjAwNiA2LjMxLTExLjg0My03Ljk4MSIgbWFzaz0idXJsKCNiKSIvPjxwYXRoIGQ9Im05LjI5IDIyLjMxLTEzLjEyNy04LjcwNSIgbWFzaz0idXJsKCNiKSIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAzNS45MTUpIi8+PC9nPjxwYXRoIGQ9Im0wIDEyaDEydjhoNHYtOGgxMnYtNGgtMTJ2LThoLTR2OGgtMTJ6IiBmaWxsPSIjZTYyNzNlIiBtYXNrPSJ1cmwoI2IpIi8+PC9nPjwvc3ZnPg==',
4
+ ro: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgd2lkdGg9IjI4cHgiIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDI4IDIwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPg0KICAgIDx0aXRsZT5pY19mbGFnX3JvPC90aXRsZT4NCiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4NCiAgICAgICAgPGcgaWQ9ImljX2ZsYWdfcm8iPg0KICAgICAgICAgICAgPHJlY3QgaWQ9IkJsdWUiIGZpbGw9IiMwMDJCN0YiIHg9IjAiIHk9IjAiIHdpZHRoPSI5LjMzIiBoZWlnaHQ9IjIwIj48L3JlY3Q+DQogICAgICAgICAgICA8cmVjdCBpZD0iWWVsbG93IiBmaWxsPSIjRkNEMTE2IiB4PSI5LjMzIiB5PSIwIiB3aWR0aD0iOS4zMyIgaGVpZ2h0PSIyMCI+PC9yZWN0Pg0KICAgICAgICAgICAgPHJlY3QgaWQ9IlJlZCIgZmlsbD0iI0NFMTEyNiIgeD0iMTguNjYiIHk9IjAiIHdpZHRoPSI5LjM0IiBoZWlnaHQ9IjIwIj48L3JlY3Q+DQogICAgICAgIDwvZz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==',
5
+ de: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjhweCIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIDAgMjggMjAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+aWNfZmxhZ19kZTwvdGl0bGU+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iaWNfZmxhZ19kZSI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJCbGFjayIgZmlsbD0iIzAwMDAwMCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI4IiBoZWlnaHQ9IjYuNjciPjwvcmVjdD4KICAgICAgICAgICAgPHJlY3QgaWQ9IlJlZCIgZmlsbD0iI0REMDAwMCIgeD0iMCIgeT0iNi42NyIgd2lkdGg9IjI4IiBoZWlnaHQ9IjYuNjYiPjwvcmVjdD4KICAgICAgICAgICAgPHJlY3QgaWQ9IkdvbGQiIGZpbGw9IiNGRkNDMDAiIHg9IjAiIHk9IjEzLjMzIiB3aWR0aD0iMjgiIGhlaWdodD0iNi42NyI+PC9yZWN0PgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+',
6
+ fr: 'data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjggMjAiIHdpZHRoPSIyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHJlY3QgaWQ9ImEiIGhlaWdodD0iMjAiIHJ4PSIzIiB3aWR0aD0iMjgiLz48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHhsaW5rOmhyZWY9IiNhIi8+PC9tYXNrPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjx1c2UgZmlsbD0iI2ZmZiIgeGxpbms6aHJlZj0iI2EiLz48cGF0aCBkPSJtMTkgMGg5djIwaC05eiIgZmlsbD0iI2Y0NDY1MyIgbWFzaz0idXJsKCNiKSIvPjxwYXRoIGQ9Im0wIDBoOXYyMGgtOXoiIGZpbGw9IiMxMDM1YmIiIG1hc2s9InVybCgjYikiLz48L2c+PC9zdmc+',
7
+ it: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjhweCIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIDAgMjggMjAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+aWNfZmxhZ19pdDwvdGl0bGU+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iaWNfZmxhZ19pdCI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmVlbiIgZmlsbD0iIzAwOTI0NiIgeD0iMCIgeT0iMCIgd2lkdGg9IjkuMzMiIGhlaWdodD0iMjAiPjwvcmVjdD4KICAgICAgICAgICAgPHJlY3QgaWQ9IldoaXRlIiBmaWxsPSIjRkZGRkZGIiB4PSI5LjMzIiB5PSIwIiB3aWR0aD0iOS4zMyIgaGVpZ2h0PSIyMCI+PC9yZWN0PgogICAgICAgICAgICA8cmVjdCBpZD0iUmVkIiBmaWxsPSIjQ0UyQjM3IiB4PSIxOC42NiIgeT0iMCIgd2lkdGg9IjkuMzQiIGhlaWdodD0iMjAiPjwvcmVjdD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo=',
8
+ es: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgd2lkdGg9IjI4cHgiIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDI4IDIwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPg0KICAgIDx0aXRsZT5pY19mbGFnX2VzPC90aXRsZT4NCiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4NCiAgICAgICAgPGcgaWQ9ImljX2ZsYWdfZXMiPg0KICAgICAgICAgICAgPHJlY3QgaWQ9InJlZC10b3AiIGZpbGw9IiNBQTE1MUIiIHg9IjAiIHk9IjAiIHdpZHRoPSIyOCIgaGVpZ2h0PSI2LjY3Ij48L3JlY3Q+DQogICAgICAgICAgICA8cmVjdCBpZD0ieWVsbG93LW1pZGRsZSIgZmlsbD0iI0YxQkYwMCIgeD0iMCIgeT0iNi42NyIgd2lkdGg9IjI4IiBoZWlnaHQ9IjYuNjYiPjwvcmVjdD4NCiAgICAgICAgICAgIDxyZWN0IGlkPSJyZWQtYm90dG9tIiBmaWxsPSIjQUExNTFCIiB4PSIwIiB5PSIxMy4zMyIgd2lkdGg9IjI4IiBoZWlnaHQ9IjYuNjciPjwvcmVjdD4NCiAgICAgICAgPC9nPg0KICAgIDwvZz4NCjwvc3ZnPg==',
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZy1pY29ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29yaWdpbi1mb3JtL3NyYy9saWIvZmxhZy1pY29ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxRUFBcUU7QUFFckUsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLEVBQUUsRUFBRSx3cURBQXdxRDtJQUM1cUQsRUFBRSxFQUFFLGczQkFBZzNCO0lBQ3AzQixFQUFFLEVBQUUsNDFCQUE0MUI7SUFDaDJCLEVBQUUsRUFBRSxnb0JBQWdvQjtJQUNwb0IsRUFBRSxFQUFFLGcyQkFBZzJCO0lBQ3AyQixFQUFFLEVBQUUsbzRCQUFvNEI7Q0FDaDRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbmxpbmUgZmxhZyBpY29ucyAoYmFzZTY0IGVuY29kZWQgZm9yIHdlYiBjb21wb25lbnQgY29tcGF0aWJpbGl0eSlcblxuZXhwb3J0IGNvbnN0IEZMQUdfSUNPTlMgPSB7XG4gIGVuOiAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCb1pXbG5hSFE5SWpJd0lpQjJhV1YzUW05NFBTSXdJREFnTWpnZ01qQWlJSGRwWkhSb1BTSXlPQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JaUI0Yld4dWN6cDRiR2x1YXowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzk0YkdsdWF5SStQR1JsWm5NK1BISmxZM1FnYVdROUltRWlJR2hsYVdkb2REMGlNakFpSUhKNFBTSXpJaUIzYVdSMGFEMGlNamdpTHo0OGJXRnpheUJwWkQwaVlpSWdabWxzYkQwaUkyWm1aaUkrUEhWelpTQm1hV3hzUFNJalptWm1JaUJtYVd4c0xYSjFiR1U5SW1WMlpXNXZaR1FpSUhoc2FXNXJPbWh5WldZOUlpTmhJaTgrUEM5dFlYTnJQand2WkdWbWN6NDhaeUJtYVd4c1BTSnViMjVsSWlCbWFXeHNMWEoxYkdVOUltVjJaVzV2WkdRaVBqeDFjMlVnWm1sc2JEMGlJekJoTVRkaE55SWdlR3hwYm1zNmFISmxaajBpSTJFaUx6NDhjR0YwYUNCa1BTSnRNamt1TWpneU5EWTVNaTB4TGpreE5qUTBOakl6SURFdU5Ea3hNVGd4TVNBeUxqSXhNRGMyTmpnMkxUa3VORFE0TXpBd05pQTJMak0zTWpJek16RTBJRFl1TmpjME5qVXdNeTR3TURBeE1USTVkall1TmpZMk5qWTJOak5zTFRZdU5qYzBOalV3TXkwdU1EQXdOemM1TlNBNUxqUTBPRE13TURZZ05pNHpOek14TWpVMkxURXVORGt4TVRneE1TQXlMakl4TURjMk5qZ3RNVEV1T1RVd01URTVOUzA0TGpBMk1EZzVNalF1TURBd09UZ3pOaUEzTGpRM056YzNPVFZvTFRZdU5qWTJOalkyTm13dExqQXdNRE14TnkwM0xqUTNOemMzT1RVdE1URXVPVFE0T0RFNE9TQTRMakEyTURnNU1qUXRNUzQwT1RFeE9ERXdOeTB5TGpJeE1EYzJOamdnT1M0ME5EZ3ROaTR6TnpNeE1qVTJMVFl1TmpjME16UTVOek11TURBd056YzVOWFl0Tmk0Mk5qWTJOalkyTTJ3MkxqWTNORE0wT1RjekxTNHdNREF4TVRJNUxUa3VORFE0TFRZdU16Y3lNak16TVRRZ01TNDBPVEV4T0RFd055MHlMakl4TURjMk5qZzJJREV4TGprME9EZ3hPRGtnT0M0d05pNHdNREF6TVRjdE55NDBOelk0T0RjeGFEWXVOalkyTmpZMk5td3RMakF3TURrNE16WWdOeTQwTnpZNE9EY3hlaUlnWm1sc2JEMGlJMlptWmlJZ2JXRnphejBpZFhKc0tDTmlLU0l2UGp4bklITjBjbTlyWlQwaUkyUmlNV1l6TlNJZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJaUJ6ZEhKdmEyVXRkMmxrZEdnOUlpNDJOamNpUGp4d1lYUm9JR1E5SW0weE9DNDJOamdnTmk0ek16SWdNVEl1TmpZMUxUZ3VNek15SWlCdFlYTnJQU0oxY213b0kySXBJaTgrUEhCaGRHZ2daRDBpYlRJd0xqQXhNeUF5TVM0ek5TQXhNUzR6TlRRdE55NDJOVElpSUcxaGMyczlJblZ5YkNnallpa2lJSFJ5WVc1elptOXliVDBpYldGMGNtbDRLREVnTUNBd0lDMHhJREFnTXpVdU1EUTRLU0l2UGp4d1lYUm9JR1E5SW0wNExqQXdOaUEyTGpNeExURXhMamcwTXkwM0xqazRNU0lnYldGemF6MGlkWEpzS0NOaUtTSXZQanh3WVhSb0lHUTlJbTA1TGpJNUlESXlMak14TFRFekxqRXlOeTA0TGpjd05TSWdiV0Z6YXowaWRYSnNLQ05pS1NJZ2RISmhibk5tYjNKdFBTSnRZWFJ5YVhnb01TQXdJREFnTFRFZ01DQXpOUzQ1TVRVcElpOCtQQzluUGp4d1lYUm9JR1E5SW0wd0lERXlhREV5ZGpob05IWXRPR2d4TW5ZdE5HZ3RNVEoyTFRob0xUUjJPR2d0TVRKNklpQm1hV3hzUFNJalpUWXlOek5sSWlCdFlYTnJQU0oxY213b0kySXBJaTgrUEM5blBqd3ZjM1puUGc9PScsXG4gIHJvOiAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejROQ2p4emRtY2dkMmxrZEdnOUlqSTRjSGdpSUdobGFXZG9kRDBpTWpCd2VDSWdkbWxsZDBKdmVEMGlNQ0F3SURJNElESXdJaUIyWlhKemFXOXVQU0l4TGpFaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpUGcwS0lDQWdJRHgwYVhSc1pUNXBZMTltYkdGblgzSnZQQzkwYVhSc1pUNE5DaUFnSUNBOFp5QnBaRDBpVUdGblpTMHhJaUJ6ZEhKdmEyVTlJbTV2Ym1VaUlITjBjbTlyWlMxM2FXUjBhRDBpTVNJZ1ptbHNiRDBpYm05dVpTSWdabWxzYkMxeWRXeGxQU0psZG1WdWIyUmtJajROQ2lBZ0lDQWdJQ0FnUEdjZ2FXUTlJbWxqWDJac1lXZGZjbThpUGcwS0lDQWdJQ0FnSUNBZ0lDQWdQSEpsWTNRZ2FXUTlJa0pzZFdVaUlHWnBiR3c5SWlNd01ESkNOMFlpSUhnOUlqQWlJSGs5SWpBaUlIZHBaSFJvUFNJNUxqTXpJaUJvWldsbmFIUTlJakl3SWo0OEwzSmxZM1ErRFFvZ0lDQWdJQ0FnSUNBZ0lDQThjbVZqZENCcFpEMGlXV1ZzYkc5M0lpQm1hV3hzUFNJalJrTkVNVEUySWlCNFBTSTVMak16SWlCNVBTSXdJaUIzYVdSMGFEMGlPUzR6TXlJZ2FHVnBaMmgwUFNJeU1DSStQQzl5WldOMFBnMEtJQ0FnSUNBZ0lDQWdJQ0FnUEhKbFkzUWdhV1E5SWxKbFpDSWdabWxzYkQwaUkwTkZNVEV5TmlJZ2VEMGlNVGd1TmpZaUlIazlJakFpSUhkcFpIUm9QU0k1TGpNMElpQm9aV2xuYUhROUlqSXdJajQ4TDNKbFkzUStEUW9nSUNBZ0lDQWdJRHd2Wno0TkNpQWdJQ0E4TDJjK0RRbzhMM04yWno0TkNnPT0nLFxuICBkZTogJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0S1BITjJaeUIzYVdSMGFEMGlNamh3ZUNJZ2FHVnBaMmgwUFNJeU1IQjRJaUIyYVdWM1FtOTRQU0l3SURBZ01qZ2dNakFpSUhabGNuTnBiMjQ5SWpFdU1TSWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklpQjRiV3h1Y3pwNGJHbHVhejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOTRiR2x1YXlJK0NpQWdJQ0E4ZEdsMGJHVSthV05mWm14aFoxOWtaVHd2ZEdsMGJHVStDaUFnSUNBOFp5QnBaRDBpVUdGblpTMHhJaUJ6ZEhKdmEyVTlJbTV2Ym1VaUlITjBjbTlyWlMxM2FXUjBhRDBpTVNJZ1ptbHNiRDBpYm05dVpTSWdabWxzYkMxeWRXeGxQU0psZG1WdWIyUmtJajRLSUNBZ0lDQWdJQ0E4WnlCcFpEMGlhV05mWm14aFoxOWtaU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHlaV04wSUdsa1BTSkNiR0ZqYXlJZ1ptbHNiRDBpSXpBd01EQXdNQ0lnZUQwaU1DSWdlVDBpTUNJZ2QybGtkR2c5SWpJNElpQm9aV2xuYUhROUlqWXVOamNpUGp3dmNtVmpkRDRLSUNBZ0lDQWdJQ0FnSUNBZ1BISmxZM1FnYVdROUlsSmxaQ0lnWm1sc2JEMGlJMFJFTURBd01DSWdlRDBpTUNJZ2VUMGlOaTQyTnlJZ2QybGtkR2c5SWpJNElpQm9aV2xuYUhROUlqWXVOallpUGp3dmNtVmpkRDRLSUNBZ0lDQWdJQ0FnSUNBZ1BISmxZM1FnYVdROUlrZHZiR1FpSUdacGJHdzlJaU5HUmtORE1EQWlJSGc5SWpBaUlIazlJakV6TGpNeklpQjNhV1IwYUQwaU1qZ2lJR2hsYVdkb2REMGlOaTQyTnlJK1BDOXlaV04wUGdvZ0lDQWdJQ0FnSUR3dlp6NEtJQ0FnSUR3dlp6NEtQQzl6ZG1jKycsXG4gIGZyOiAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCb1pXbG5hSFE5SWpJd0lpQjJhV1YzUW05NFBTSXdJREFnTWpnZ01qQWlJSGRwWkhSb1BTSXlPQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JaUI0Yld4dWN6cDRiR2x1YXowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzk0YkdsdWF5SStQR1JsWm5NK1BISmxZM1FnYVdROUltRWlJR2hsYVdkb2REMGlNakFpSUhKNFBTSXpJaUIzYVdSMGFEMGlNamdpTHo0OGJXRnpheUJwWkQwaVlpSWdabWxzYkQwaUkyWm1aaUkrUEhWelpTQm1hV3hzUFNJalptWm1JaUJtYVd4c0xYSjFiR1U5SW1WMlpXNXZaR1FpSUhoc2FXNXJPbWh5WldZOUlpTmhJaTgrUEM5dFlYTnJQand2WkdWbWN6NDhaeUJtYVd4c1BTSnViMjVsSWlCbWFXeHNMWEoxYkdVOUltVjJaVzV2WkdRaVBqeDFjMlVnWm1sc2JEMGlJMlptWmlJZ2VHeHBibXM2YUhKbFpqMGlJMkVpTHo0OGNHRjBhQ0JrUFNKdE1Ua2dNR2c1ZGpJd2FDMDVlaUlnWm1sc2JEMGlJMlkwTkRZMU15SWdiV0Z6YXowaWRYSnNLQ05pS1NJdlBqeHdZWFJvSUdROUltMHdJREJvT1hZeU1HZ3RPWG9pSUdacGJHdzlJaU14TURNMVltSWlJRzFoYzJzOUluVnliQ2dqWWlraUx6NDhMMmMrUEM5emRtYysnLFxuICBpdDogJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0S1BITjJaeUIzYVdSMGFEMGlNamh3ZUNJZ2FHVnBaMmgwUFNJeU1IQjRJaUIyYVdWM1FtOTRQU0l3SURBZ01qZ2dNakFpSUhabGNuTnBiMjQ5SWpFdU1TSWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklpQjRiV3h1Y3pwNGJHbHVhejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOTRiR2x1YXlJK0NpQWdJQ0E4ZEdsMGJHVSthV05mWm14aFoxOXBkRHd2ZEdsMGJHVStDaUFnSUNBOFp5QnBaRDBpVUdGblpTMHhJaUJ6ZEhKdmEyVTlJbTV2Ym1VaUlITjBjbTlyWlMxM2FXUjBhRDBpTVNJZ1ptbHNiRDBpYm05dVpTSWdabWxzYkMxeWRXeGxQU0psZG1WdWIyUmtJajRLSUNBZ0lDQWdJQ0E4WnlCcFpEMGlhV05mWm14aFoxOXBkQ0krQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHlaV04wSUdsa1BTSkhjbVZsYmlJZ1ptbHNiRDBpSXpBd09USTBOaUlnZUQwaU1DSWdlVDBpTUNJZ2QybGtkR2c5SWprdU16TWlJR2hsYVdkb2REMGlNakFpUGp3dmNtVmpkRDRLSUNBZ0lDQWdJQ0FnSUNBZ1BISmxZM1FnYVdROUlsZG9hWFJsSWlCbWFXeHNQU0lqUmtaR1JrWkdJaUI0UFNJNUxqTXpJaUI1UFNJd0lpQjNhV1IwYUQwaU9TNHpNeUlnYUdWcFoyaDBQU0l5TUNJK1BDOXlaV04wUGdvZ0lDQWdJQ0FnSUNBZ0lDQThjbVZqZENCcFpEMGlVbVZrSWlCbWFXeHNQU0lqUTBVeVFqTTNJaUI0UFNJeE9DNDJOaUlnZVQwaU1DSWdkMmxrZEdnOUlqa3VNelFpSUdobGFXZG9kRDBpTWpBaVBqd3ZjbVZqZEQ0S0lDQWdJQ0FnSUNBOEwyYytDaUFnSUNBOEwyYytDand2YzNablBnbz0nLFxuICBlczogJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0TkNqeHpkbWNnZDJsa2RHZzlJakk0Y0hnaUlHaGxhV2RvZEQwaU1qQndlQ0lnZG1sbGQwSnZlRDBpTUNBd0lESTRJREl3SWlCMlpYSnphVzl1UFNJeExqRWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmVHeHBibXM5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZlR3hwYm1zaVBnMEtJQ0FnSUR4MGFYUnNaVDVwWTE5bWJHRm5YMlZ6UEM5MGFYUnNaVDROQ2lBZ0lDQThaeUJwWkQwaVVHRm5aUzB4SWlCemRISnZhMlU5SW01dmJtVWlJSE4wY205clpTMTNhV1IwYUQwaU1TSWdabWxzYkQwaWJtOXVaU0lnWm1sc2JDMXlkV3hsUFNKbGRtVnViMlJrSWo0TkNpQWdJQ0FnSUNBZ1BHY2dhV1E5SW1salgyWnNZV2RmWlhNaVBnMEtJQ0FnSUNBZ0lDQWdJQ0FnUEhKbFkzUWdhV1E5SW5KbFpDMTBiM0FpSUdacGJHdzlJaU5CUVRFMU1VSWlJSGc5SWpBaUlIazlJakFpSUhkcFpIUm9QU0l5T0NJZ2FHVnBaMmgwUFNJMkxqWTNJajQ4TDNKbFkzUStEUW9nSUNBZ0lDQWdJQ0FnSUNBOGNtVmpkQ0JwWkQwaWVXVnNiRzkzTFcxcFpHUnNaU0lnWm1sc2JEMGlJMFl4UWtZd01DSWdlRDBpTUNJZ2VUMGlOaTQyTnlJZ2QybGtkR2c5SWpJNElpQm9aV2xuYUhROUlqWXVOallpUGp3dmNtVmpkRDROQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHlaV04wSUdsa1BTSnlaV1F0WW05MGRHOXRJaUJtYVd4c1BTSWpRVUV4TlRGQ0lpQjRQU0l3SWlCNVBTSXhNeTR6TXlJZ2QybGtkR2c5SWpJNElpQm9aV2xuYUhROUlqWXVOamNpUGp3dmNtVmpkRDROQ2lBZ0lDQWdJQ0FnUEM5blBnMEtJQ0FnSUR3dlp6NE5Dand2YzNablBnPT0nLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRmxhZ0NvZGUgPSBrZXlvZiB0eXBlb2YgRkxBR19JQ09OUztcbiJdfQ==
@@ -243,13 +243,15 @@ export class FormlyFieldStepperComponent extends FieldType {
243
243
  appDataId: appDataId,
244
244
  appConfigurationId: applicationId,
245
245
  fillData: fillData,
246
+ initFlowValues: props['initFlowValues'],
246
247
  withNextStep: false,
247
248
  blockPreviousStep: props['blockPreviousStep'] ?? false,
248
249
  env: props['env'],
249
250
  });
250
251
  if (!this.isDisplayMode && !props['fillData']) {
251
252
  await this.saveAppData();
252
- this.collectorForm.fillData = fillData;
253
+ this.collectorForm.fillData = this.appData.fillData;
254
+ await this.collectorForm.initAsync();
253
255
  }
254
256
  }
255
257
  async saveAppData() {
@@ -771,4 +773,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
771
773
  type: ViewChild,
772
774
  args: [MatStepper]
773
775
  }] } });
774
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3JpZ2luLWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LWZpZWxkLXN0ZXBwZXIvZm9ybWx5LWZpZWxkLXN0ZXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3JpZ2luLWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LWZpZWxkLXN0ZXBwZXIvZm9ybWx5LWZpZWxkLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUVMLFNBQVMsRUFHVCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFnQixLQUFLLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxjQUFjLEVBQ2QsV0FBVyxFQUNYLGVBQWUsR0FFaEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7OztBQWdCaEYsTUFBTSxPQUFPLDJCQUNYLFNBQVEsU0FBUztJQStCakIsWUFDVSxzQkFBOEMsRUFDOUMsYUFBcUMsRUFDckMsR0FBc0IsRUFDdEIsb0JBQTBDO1FBRWxELEtBQUssRUFBRSxDQUFDO1FBTEEsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxrQkFBYSxHQUFi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Q29udGVudCI6WyJpbXBvcnQgeyBTVEVQUEVSX0dMT0JBTF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTdGVwcGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlcic7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIHRpbWVyLCBmaXJzdFZhbHVlRnJvbSwgY2F0Y2hFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFwcERhdGEsXG4gIEZsdXhUeXBlLFxuICBBcHBEYXRhU3RlcCxcbiAgQXBwRGF0YVNlY3Rpb24sXG4gIEFwcERhdGFDb250cm9sLFxuICBBcHBEYXRhRmlsbCxcbiAgU3RlcENvbnRyb2xUeXBlLFxuICBEaWN0aW9uYXJ5Q29udHJvbERhdGEsXG59IGZyb20gJy4uLy4uL21vZGVscy9mb3Jtcy5tb2RlbCc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwbGljYXRpb25EYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29sbGVjdG9yRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yaWdpbi1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY3JvbGxUb0Vycm9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Njcm9sbC10by1lcnJvci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZvcm1seS1maWVsZC1zdGVwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm1seS1maWVsZC1zdGVwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybWx5LWZpZWxkLXN0ZXBwZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogU1RFUFBFUl9HTE9CQUxfT1BUSU9OUyxcbiAgICAgIHVzZVZhbHVlOiB7IGRpc3BsYXlEZWZhdWx0SW5kaWNhdG9yVHlwZTogZmFsc2UgfSxcbiAgICB9LFxuICAgIEFwcGxpY2F0aW9uRGF0YVNlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1seUZpZWxkU3RlcHBlckNvbXBvbmVudFxuICBleHRlbmRzIEZpZWxkVHlwZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChNYXRTdGVwcGVyKSBzdGVwcGVyITogTWF0U3RlcHBlcjtcbiAgYnV0dG9uc0dyb3VwczogYW55W11bXSA9IFtdO1xuICBzaG93U3RlcHM6IGJvb2xlYW4gPSB0cnVlO1xuICBzaG93U3RlcHNMYWJlbHM6IGJvb2xlYW4gPSB0cnVlO1xuICBzaG93U3RlcHNDb3VudGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgc2hvd0J1dHRvbnNPblRvcDogYm9vbGVhbjtcbiAgc2hvd1Byb2dyZXNzQmFyOiBib29sZWFuO1xuICBzaG93RmluYWxTdGVwOiBib29sZWFuID0gZmFsc2U7XG4gIGlzRmxvd0ZpbmlzaGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGFwcERhdGE6IEFwcERhdGE7XG4gIGlzRGlzcGxheU1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNEZWJ1ZzogYm9vbGVhbiA9IGZhbHNlO1xuICBpc05hdmlnYXRpb25JblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XG4gIGlzU2F2aW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGN1cnJlbnRTdGVwSW5kZXg6IG51bWJlciA9IDA7XG4gIGxvYWRlZFN0ZXBzOiBib29sZWFuW10gPSBbXTtcbiAgcHJpdmF0ZSBjb25maWdVcGRhdGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB2aXNpYmxlRmllbGRzVXBkYXRlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHVwZGF0ZUFuZEdvTmV4dFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGdvTmV4dFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBjb25jYXRlbmF0ZWRGb3JtU3R5bGU6IGFueSA9IHt9O1xuICBidXR0b25zVmVydGljYWxQb3NpdGlvbjogc3RyaW5nID0gJ2JvdHRvbSc7XG5cbiAgaXNOYXZpZ2F0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmluYWxTdGVwRmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnO1xuICBmaWx0ZXJlZFZpc2libGVTdGVwczogYW55W10gPSBbXTtcbiAgcHJvZ3Jlc3NCYXJTdHlsZXM6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBwbGljYXRpb25EYXRhU2VydmljZTogQXBwbGljYXRpb25EYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGNvbGxlY3RvckZvcm06IENvbGxlY3RvckZvcm1Db21wb25lbnQsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgc2Nyb2xsVG9FcnJvclNlcnZpY2U6IFNjcm9sbFRvRXJyb3JTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnByb3BzWydjb21wb25lbnQnXSA9IHRoaXM7XG4gICAgdGhpcy5hcHBseVByb2dyZXNzQmFyU3R5bGVzKCk7XG4gICAgdGhpcy5jb25maWdVcGRhdGVTdWJzY3JpcHRpb24gPVxuICAgICAgdGhpcy5jb2xsZWN0b3JGb3JtLmZvcm1seUNvbmZpZ1VwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZmllbGQgJiYgdGhpcy5maWVsZC5maWVsZEdyb3VwKSB7XG4gICAgICAgICAgdGhpcy5maWVsZC5maWVsZEdyb3VwID0gdGhpcy5leHRyYWN0RmluYWxTdGVwSWZOZWNlc3NhcnkoXG4gICAgICAgICAgICB0aGlzLmZpZWxkLmZpZWxkR3JvdXBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3JlYXRlRmllbGRHcm91cEJ1dHRvbnMoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy52aXNpYmxlRmllbGRzVXBkYXRlZFN1YnNjcmlwdGlvbiA9XG4gICAgICB0aGlzLmNvbGxlY3RvckZvcm0udmlzaWJsZUZpZWxkc1VwZGF0ZWQuc3Vic2NyaWJlKCh2aXNpYmxlRmllbGRzKSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRWaXNpYmxlU3RlcHMgPSB2aXNpYmxlRmllbGRzO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZUFuZEdvTmV4dFN1YnNjcmlwdGlvbiA9XG4gICAgICB0aGlzLmNvbGxlY3RvckZvcm0uZm9ybWx5VXBkYXRlQW5kR29OZXh0LnN1YnNjcmliZShhc3luYyAoZSkgPT4ge1xuICAgICAgICBpZiAoZSAmJiBlLnNlbGVjdGVkT2ZmZXJJZCAmJiB0aGlzLmFwcERhdGE/LmZpbGxEYXRhKSB7XG4gICAgICAgICAgdGhpcy5hcHBEYXRhLmZpbGxEYXRhLm1ldGFkYXRhLm9mZmVySWQgPSBlLnNlbGVjdGVkT2ZmZXJJZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5maWVsZC5maWVsZEdyb3VwIVt0aGlzLmN1cnJlbnRTdGVwSW5kZXhdO1xuICAgICAgICBhd2FpdCB0aGlzLm5hdmlnYXRlQXN5bmMoJ25leHQnLCBzdGVwKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5nb05leHRTdWJzY3JpcHRpb24gPSB0aGlzLmNvbGxlY3RvckZvcm0uZm9ybWx5R29OZXh0LnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgdGhpcy5nb05leHQoKTtcbiAgICB9KTtcbiAgICBhd2FpdCB0aGlzLmluaXRTdGVwKCk7XG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY2hhbmdlcy5maWVsZCkge1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVBcHBEYXRhKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVBcHBEYXRhKHRoaXMuZmllbGQucHJvcHMpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRTdGVwSW5kZXggPj0gdGhpcy50b3RhbFN0ZXBzQ291bnQpIHtcbiAgICAgIHRoaXMuc2hvd0ZpbmFsU3RlcCA9IHRydWU7XG4gICAgICB0aGlzLnNob3dTdGVwcyA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93U3RlcHNDb3VudGVyID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0ZXBwZXIpIHtcbiAgICAgIHRoaXMuc3RlcHBlci5saW5lYXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gdGhpcy5jdXJyZW50U3RlcEluZGV4O1xuICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLnN0ZXBwZXIuX3N0ZXBzLnRvQXJyYXkoKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jdXJyZW50U3RlcEluZGV4OyBpKyspIHtcbiAgICAgICAgc3RlcHNbaV0uY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0ZXBwZXIubGluZWFyID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5maWVsZC5maWVsZEdyb3VwICYmIHRoaXMuZmllbGQuZmllbGRHcm91cC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxvYWRlZFN0ZXBzID0gQXJyYXkodGhpcy5maWVsZC5maWVsZEdyb3VwLmxlbmd0aCkuZmlsbChmYWxzZSk7XG4gICAgICB0aGlzLmxvYWRlZFN0ZXBzW3RoaXMuY3VycmVudFN0ZXBJbmRleF0gPSB0cnVlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2hvd1N0ZXBzIHx8IHRoaXMuY3VycmVudFN0ZXBJbmRleCA9PSAwKSB7XG4gICAgICB0aGlzLnRyaWdnZXJPblBhZ2VTZWxlY3RlZEZvckluZGV4KHRoaXMuY3VycmVudFN0ZXBJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnVXBkYXRlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNvbmZpZ1VwZGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy51cGRhdGVBbmRHb05leHRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudXBkYXRlQW5kR29OZXh0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmdvTmV4dFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5nb05leHRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmlzaWJsZUZpZWxkc1VwZGF0ZWRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudmlzaWJsZUZpZWxkc1VwZGF0ZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0U3RlcCgpIHtcbiAgICBpZiAodGhpcy5maWVsZCkge1xuICAgICAgaWYgKHRoaXMuZmllbGQuZmllbGRHcm91cCkge1xuICAgICAgICB0aGlzLmZpZWxkLmZpZWxkR3JvdXAgPSB0aGlzLmV4dHJhY3RGaW5hbFN0ZXBJZk5lY2Vzc2FyeShcbiAgICAgICAgICB0aGlzLmZpZWxkLmZpZWxkR3JvdXBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5sb2FkZWRTdGVwcyA9IEFycmF5KHRoaXMuZmllbGQuZmllbGRHcm91cC5sZW5ndGgpLmZpbGwoZmFsc2UpO1xuICAgICAgICB0aGlzLmxvYWRlZFN0ZXBzW3RoaXMuY3VycmVudFN0ZXBJbmRleF0gPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZmllbGQucHJvcHMpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZFZpc2libGVTdGVwcyA9IHRoaXMuZmllbGQucHJvcHNbJ2ZpbHRlcmVkRmx1eCddO1xuICAgICAgICB0aGlzLmlzRGVidWcgPSB0aGlzLmZpZWxkLnByb3BzWydpc0RlYnVnJ107XG4gICAgICAgIGNvbnN0IHN0ZXBTZXR0aW5ncyA9IHRoaXMuZmllbGQucHJvcHNbJ3N0ZXBzU2V0dGluZ3MnXTtcbiAgICAgICAgaWYgKHN0ZXBTZXR0aW5ncykge1xuICAgICAgICAgIHRoaXMuc2hvd1N0ZXBzID0gc3RlcFNldHRpbmdzLnNob3dBbGxTdGVwcztcbiAgICAgICAgICB0aGlzLnNob3dTdGVwc0NvdW50ZXIgPSBzdGVwU2V0dGluZ3Muc2hvd0NvdW50ZXI7XG4gICAgICAgICAgdGhpcy5zaG93U3RlcHNMYWJlbHMgPSBzdGVwU2V0dGluZ3Muc2hvd0xhYmVscztcbiAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzc0JhciA9IHN0ZXBTZXR0aW5ncy5zaG93UHJvZ3Jlc3NCYXI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVzaWduQ29uZmlnID0gdGhpcy5maWVsZC5wcm9wc1snZGVzaWduQ29uZmlnJ107XG4gICAgICAgIGlmIChkZXNpZ25Db25maWcpIHtcbiAgICAgICAgICB0aGlzLnNob3dCdXR0b25zT25Ub3AgPVxuICAgICAgICAgICAgZGVzaWduQ29uZmlnLmJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uID09PSAndG9wJztcbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZmllbGQucHJvcHNbJ2Rlc2lnbiddKVxuICAgICAgICAgIC5maWx0ZXIoKGkpID0+IGlbMF0uc3RhcnRzV2l0aCgnLmZvcm0nKSlcbiAgICAgICAgICAuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJvcDogYW55ID0gaVsxXTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHByb3ApLmZvckVhY2goKGopID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRGb3JtU3R5bGVbal0gPSBwcm9wW2pdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5idXR0b25zVmVydGljYWxQb3NpdGlvbiA9XG4gICAgICAgICAgdGhpcy5maWVsZC5wcm9wc1snZGVzaWduJ11bJy5idXR0b25zLWNvbnRhaW5lciddWydhbGlnbi1pdGVtcyddID09XG4gICAgICAgICAgICAnZmxleC1zdGFydCdcbiAgICAgICAgICAgID8gJ3RvcCdcbiAgICAgICAgICAgIDogJ2JvdHRvbSc7XG4gICAgICB9XG4gICAgICB0aGlzLmNyZWF0ZUZpZWxkR3JvdXBCdXR0b25zKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRvdGFsU3RlcHNDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmZpZWxkPy5maWVsZEdyb3VwPy5maWx0ZXIoXG4gICAgICAgIChzdGVwKSA9PiBzdGVwLnByb3BzPy5bJ2ZsdXhUeXBlJ10gIT09IEZsdXhUeXBlLkZpbmFsXG4gICAgICApLmxlbmd0aCA/PyAwXG4gICAgKTtcbiAgfVxuXG4gIGV4dHJhY3RGaW5hbFN0ZXBJZk5lY2Vzc2FyeShcbiAgICBmaWVsZENvbmZpZ3M6IEZvcm1seUZpZWxkQ29uZmlnW11cbiAgKTogRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgbGV0IGZpbHRlcmVkQ29uZmlnOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG4gICAgdGhpcy5maWVsZC5maWVsZEdyb3VwPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICBpZiAoZi5wcm9wcyAmJiBmLnByb3BzWydmbHV4VHlwZSddID09IEZsdXhUeXBlLkZpbmFsKSB7XG4gICAgICAgIHRoaXMuZmluYWxTdGVwRmllbGRDb25maWcgPSBmO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsdGVyZWRDb25maWcucHVzaChmKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVyZWRDb25maWc7XG4gIH1cblxuICBjcmVhdGVGaWVsZEdyb3VwQnV0dG9ucygpIHtcbiAgICBpZiAodGhpcy5maWVsZC5maWVsZEdyb3VwKSB7XG4gICAgICB0aGlzLmJ1dHRvbnNHcm91cHMgPSBbXTtcbiAgICAgIHRoaXMuZmllbGQuZmllbGRHcm91cC5mb3JFYWNoKChmZywgaSkgPT4ge1xuICAgICAgICBjb25zdCBpc0xhc3QgPSBpID09PSB0aGlzLmZpZWxkLmZpZWxkR3JvdXAhLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgbGV0IGJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIGlmIChmZy5wcm9wcykge1xuICAgICAgICAgIGNvbnN0IGZsdXhUeXBlID0gZmcucHJvcHNbJ2ZsdXhUeXBlJ107XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmx1eFR5cGUgPT09IEZsdXhUeXBlLkt5YyB8fFxuICAgICAgICAgICAgZmx1eFR5cGUgPT09IEZsdXhUeXBlLkdlbmVyYXRlRG9jdW1lbnQgfHxcbiAgICAgICAgICAgIGZsdXhUeXBlID09PSBGbHV4VHlwZS5TaWduIHx8XG4gICAgICAgICAgICBmbHV4VHlwZSA9PT0gRmx1eFR5cGUuRW1haWwgfHxcbiAgICAgICAgICAgIGZsdXhUeXBlID09PSBGbHV4VHlwZS5QaG9uZSB8fFxuICAgICAgICAgICAgZmx1eFR5cGUgPT09IEZsdXhUeXBlLk9wZW5CYW5raW5nXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbnNHcm91cHMucHVzaChbXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnRuRGlzYWJsZWQgPVxuICAgICAgICAgICAgZmx1eFR5cGUgPT09IEZsdXhUeXBlLkt5YyB8fFxuICAgICAgICAgICAgZmx1eFR5cGUgPT09IEZsdXhUeXBlLlBob25lIHx8XG4gICAgICAgICAgICBmbHV4VHlwZSA9PT0gRmx1eFR5cGUuRW1haWw7XG4gICAgICAgICAgZmcucHJvcHNbJ2J1dHRvbnNEaXNhYmxlZCddID09PSB0cnVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIChmbHV4VHlwZSA9PT0gRmx1eFR5cGUuS3ljIHx8XG4gICAgICAgICAgICAgIGZsdXhUeXBlID09PSBGbHV4VHlwZS5QaG9uZSB8fFxuICAgICAgICAgICAgICBmbHV4VHlwZSA9PT0gRmx1eFR5cGUuRW1haWwpICYmXG4gICAgICAgICAgICBmZy5wcm9wc1snYnV0dG9uc0Rpc2FibGVkJ10gPT09IGZhbHNlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBidG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGNvbXBvbmVudHNXaXRoRGVmYXVsdExhYmVscyA9XG4gICAgICAgICAgICB0aGlzLmdldENvbXBvbmVudHNXaXRoRGVmYXVsdExhYmVscygpO1xuICAgICAgICAgIGlmIChjb21wb25lbnRzV2l0aERlZmF1bHRMYWJlbHNbZmx1eFR5cGVdKSB7XG4gICAgICAgICAgICBmZy5wcm9wc1snbGFiZWwnXSA9IGNvbXBvbmVudHNXaXRoRGVmYXVsdExhYmVsc1tmbHV4VHlwZV07XG4gICAgICAgICAgICBmZy5wcm9wc1snZGVzY3JpcHRpb24nXSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmZy5wcm9wcz8uWydmbHV4VHlwZSddID09PSBGbHV4VHlwZS5WaWV3T2ZmZXIgfHxcbiAgICAgICAgICBmZy5wcm9wcz8uWydmbHV4VHlwZSddID09PSBGbHV4VHlwZS5QYXVzZVxuICAgICAgICApIHtcbiAgICAgICAgICAvLzEyPWxpc3Qgb2ZmZXJzXG4gICAgICAgICAgdGhpcy5idXR0b25zR3JvdXBzLnB1c2goW10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGJ0bnMgPSB0aGlzLmNyZWF0ZUJ1dHRvbnMoZmcsIGksIGlzTGFzdCwgYnRuRGlzYWJsZWQpO1xuICAgICAgICAgIGlmICh0aGlzLnByb3BzWydkZW1vTW9kZSddID09PSB0cnVlKSB7XG4gICAgICAgICAgICBidG5zLmZvckVhY2goKGI6IHsgdHlwZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKGIudHlwZSA9PT0gJ3N1Ym1pdCcpIHtcbiAgICAgICAgICAgICAgICBidG5zLnNwbGljZShidG5zLmluZGV4T2YoYiksIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHNbJ25vQnV0dG9uc0luVmlldyddID09PSB0cnVlKSB7XG4gICAgICAgICAgICBidG5zLnNwbGljZSgwLCBidG5zLmxlbmd0aCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYnV0dG9uc0dyb3Vwcy5wdXNoKGJ0bnMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjcmVhdGVBcHBEYXRhKHByb3BzOiBhbnkpIHtcbiAgICBjb25zdCBhcHBEYXRhSWQgPSBwcm9wc1snYXBwRGF0YUlkJ107XG4gICAgY29uc3QgYXBwbGljYXRpb25JZCA9IHByb3BzWydhcHBsaWNhdGlvbklkJ10gfHwgMDtcbiAgICBjb25zdCBjdXJyZW50U3RlcElkID1cbiAgICAgIHByb3BzLm1ldGFEYXRhPy5jdXJyZW50U3RlcElkIHx8IHByb3BzLmZsdXhbMF0/LmlkZW50aWZpZXI7XG5cbiAgICBpZiAocHJvcHNbJ2hhc0RpY3Rpb25hcnlEZXBlbmRlbnRTdGVwcyddKSB7XG4gICAgICBhd2FpdCB0aW1lcigxNTApLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0ZXBJbmRleCA9XG4gICAgICB0aGlzLmZpZWxkLmZpZWxkR3JvdXA/LmZpbmRJbmRleChcbiAgICAgICAgKHMpID0+IHMucHJvcHM/Llsnc3RlcElkJ10gPT09IGN1cnJlbnRTdGVwSWRcbiAgICAgICkgfHwgMDtcbiAgICB0aGlzLmlzRGlzcGxheU1vZGUgPSBwcm9wc1snaXNEaXNwbGF5TW9kZSddIHx8IGZhbHNlO1xuXG4gICAgdGhpcy5jdXJyZW50U3RlcEluZGV4ID1cbiAgICAgIHN0ZXBJbmRleCA+PSAwICYmICF0aGlzLmlzRGlzcGxheU1vZGUgPyBzdGVwSW5kZXggOiAwO1xuXG4gICAgY29uc3Qgc3RhdHVzSWQgPSBwcm9wc1snc3RhdHVzSWQnXSB8fCAnJztcbiAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2UgPSBwcm9wc1snZGVmYXVsdExhbmd1YWdlJ107XG5cbiAgICBjb25zdCBmbHV4ID0gKHByb3BzWydmbHV4J10gfHwgW10pLm1hcChcbiAgICAgIChzdGVwOiBhbnkpID0+XG4gICAgICAgIG5ldyBBcHBEYXRhU3RlcChcbiAgICAgICAgICBzdGVwLmlkZW50aWZpZXIsXG4gICAgICAgICAgc3RlcC50eXBlLFxuICAgICAgICAgIChzdGVwLnNlY3Rpb25zIHx8IFtdKS5tYXAoXG4gICAgICAgICAgICAoc2VjdGlvbjogYW55KSA9PlxuICAgICAgICAgICAgICBuZXcgQXBwRGF0YVNlY3Rpb24oXG4gICAgICAgICAgICAgICAgc2VjdGlvbi5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIChzZWN0aW9uLmNvbnRyb2xzIHx8IFtdKS5tYXAoXG4gICAgICAgICAgICAgICAgICAoY29udHJvbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBuZXcgQXBwRGF0YUNvbnRyb2woXG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZmlsbFZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICApO1xuICAgIGNvbnN0IG9mZmVySWQgPSBwcm9wcz8uZmlsbERhdGE/Lm1ldGFkYXRhPy5vZmZlcklkIHx8ICcnO1xuICAgIGNvbnN0IGlzU3VibWl0dGVkID0gcHJvcHM/LmZpbGxEYXRhPy5tZXRhZGF0YT8uaXNTdWJtaXR0ZWQgfHwgZmFsc2U7XG5cbiAgICBjb25zdCBmaWxsRGF0YSA9IG5ldyBBcHBEYXRhRmlsbChcbiAgICAgIGFwcERhdGFJZCxcbiAgICAgIGFwcGxpY2F0aW9uSWQsXG4gICAgICBjdXJyZW50U3RlcElkLFxuICAgICAgc3RhdHVzSWQsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICBmbHV4LFxuICAgICAgb2ZmZXJJZCxcbiAgICAgIGlzU3VibWl0dGVkXG4gICAgKTtcblxuICAgIHRoaXMuYXBwRGF0YSA9IG5ldyBBcHBEYXRhKHtcbiAgICAgIGFwcERhdGFJZDogYXBwRGF0YUlkLFxuICAgICAgYXBwQ29uZmlndXJhdGlvbklkOiBhcHBsaWNhdGlvbklkLFxuICAgICAgZmlsbERhdGE6IGZpbGxEYXRhLFxuICAgICAgd2l0aE5leHRTdGVwOiBmYWxzZSxcbiAgICAgIGJsb2NrUHJldmlvdXNTdGVwOiBwcm9wc1snYmxvY2tQcmV2aW91c1N0ZXAnXSA/PyBmYWxzZSxcbiAgICAgIGVudjogcHJvcHNbJ2VudiddLFxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLmlzRGlzcGxheU1vZGUgJiYgIXByb3BzWydmaWxsRGF0YSddKSB7XG4gICAgICBhd2FpdCB0aGlzLnNhdmVBcHBEYXRhKCk7XG4gICAgICB0aGlzLmNvbGxlY3RvckZvcm0uZmlsbERhdGEgPSBmaWxsRGF0YTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlQXBwRGF0YSgpIHtcbiAgICBpZiAodGhpcy5pc0Rpc3BsYXlNb2RlIHx8IHRoaXMucHJvcHNbJ2RlbW9Nb2RlJ10gPT09IHRydWUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbRGVtbyBNb2RlXSBTa2lwcGluZyBzYXZlQXBwRGF0YSByZXF1ZXN0LicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLmFwcGxpY2F0aW9uRGF0YVNlcnZpY2Uuc2F2ZUFwcCh0aGlzLmFwcERhdGEpLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNyZWF0aW5nIEFwcERhdGEnLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRoaXMuYXBwRGF0YS5maWxsRGF0YSA9IEpTT04ucGFyc2UoZGF0YS5maWxsRGF0YSk7XG4gICAgICAgIHRoaXMuYXBwRGF0YS5ibG9ja1ByZXZpb3VzU3RlcCA9IGRhdGEuYmxvY2tQcmV2aW91c1N0ZXA7XG4gICAgICAgIHRoaXMuY29sbGVjdG9yRm9ybS5mb3JtbHlDb25maWdVcGRhdGVkLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgZHVyaW5nIHNhdmVTdGVwJywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0UHJldmlvdXNTdGVwKCkge1xuICAgIGlmICh0aGlzLmlzRGlzcGxheU1vZGUgfHwgdGhpcy5wcm9wc1snZGVtb01vZGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgY29uc29sZS5sb2coJ1tEZW1vIE1vZGVdIFNraXBwaW5nIGdldFByZXZpb3VzU3RlcCByZXF1ZXN0LicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuYXBwbGljYXRpb25EYXRhU2VydmljZS5nZXRQcmV2aW91c1N0ZXAodGhpcy5hcHBEYXRhLmFwcERhdGFJZCkucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBnZXR0aW5nIHRoZSBwcmV2aW91c1N0ZXAnLCBlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgIClcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICAgICAgdGhpcy5hcHBEYXRhLmZpbGxEYXRhID0gSlNPTi5wYXJzZShkYXRhLmZpbGxEYXRhKTtcbiAgICAgICAgICB0aGlzLmFwcERhdGEuYmxvY2tQcmV2aW91c1N0ZXAgPSBkYXRhLmJsb2NrUHJldmlvdXNTdGVwO1xuICAgICAgICAgIHRoaXMuY29sbGVjdG9yRm9ybS5mb3JtbHlDb25maWdVcGRhdGVkLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIGR1cmluZyBnZXRQcmV2aW91c1N0ZXAnLCBlcnJvcik7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVBcHBEYXRhU3RlcCgpIHtcbiAgICBpZiAodGhpcy5pc0Rpc3BsYXlNb2RlIHx8IHRoaXMucHJvcHNbJ2RlbW9Nb2RlJ10gPT09IHRydWUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbRGVtbyBNb2RlXSBTa2lwcGluZyBzYXZlQXBwRGF0YVN0ZXAgcmVxdWVzdC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgdmlzaWJsZSBzdGVwIGJhc2VkIG9uIGN1cnJlbnRTdGVwSW5kZXhcblxuICAgIGNvbnN0IGN1cnJlbnRWaXNpYmxlU3RlcCA9IHRoaXMuZmlsdGVyZWRWaXNpYmxlU3RlcHNbdGhpcy5jdXJyZW50U3RlcEluZGV4XTtcblxuICAgIGlmICghY3VycmVudFZpc2libGVTdGVwKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05vIGN1cnJlbnQgdmlzaWJsZSBzdGVwIGZvdW5kJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgY29ycmVzcG9uZGluZyBzdGVwIGluIGZpbGxEYXRhLmZsdXggYmFzZWQgb24gdGhlIHZpc2libGUgc3RlcCBpZGVudGlmaWVyXG4gICAgbGV0IGN1cnJlbnRTdGVwID0gdGhpcy5hcHBEYXRhLmZpbGxEYXRhPy5mbHV4LmZpbmQoXG4gICAgICAocykgPT4gcy5zdGVwSWQgPT09IGN1cnJlbnRWaXNpYmxlU3RlcC5pZGVudGlmaWVyXG4gICAgKTtcblxuICAgIC8vIElmIHdlIGNhbid0IGZpbmQgaXQgYnkgaWRlbnRpZmllciwgY3JlYXRlIGl0IG9yIHVwZGF0ZSBtZXRhZGF0YVxuICAgIGlmICghY3VycmVudFN0ZXAgJiYgdGhpcy5hcHBEYXRhLmZpbGxEYXRhKSB7XG4gICAgICAvLyBVcGRhdGUgdGhlIGN1cnJlbnRTdGVwSWQgaW4gbWV0YWRhdGEgdG8gbWF0Y2ggdGhlIGN1cnJlbnQgdmlzaWJsZSBzdGVwXG4gICAgICB0aGlzLmFwcERhdGEuZmlsbERhdGEubWV0YWRhdGEuY3VycmVudFN0ZXBJZCA9XG4gICAgICAgIGN1cnJlbnRWaXNpYmxlU3RlcC5pZGVudGlmaWVyO1xuXG4gICAgICAvLyBUcnkgdG8gZmluZCBpdCBhZ2FpbiBhZnRlciB1cGRhdGluZyBtZXRhZGF0YVxuICAgICAgY3VycmVudFN0ZXAgPSB0aGlzLmFwcERhdGEuZmlsbERhdGEuZmx1eC5maW5kKFxuICAgICAgICAocykgPT4gcy5zdGVwSWQgPT09IGN1cnJlbnRWaXNpYmxlU3RlcC5pZGVudGlmaWVyXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgJ1NhdmluZyBzdGVwIGRhdGEgZm9yIHN0ZXA6JyxcbiAgICAgIGN1cnJlbnRWaXNpYmxlU3RlcC5pZGVudGlmaWVyLFxuICAgICAgJ1N0ZXAgZGF0YTonLFxuICAgICAgY3VycmVudFN0ZXBcbiAgICApO1xuXG4gICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uRGF0YVNlcnZpY2VcbiAgICAgICAgLnNhdmVTdGVwKFxuICAgICAgICAgIHRoaXMuYXBwRGF0YS5hcHBEYXRhSWQsXG4gICAgICAgICAgY3VycmVudFN0ZXAsXG4gICAgICAgICAgdGhpcy5hcHBEYXRhLmZpbGxEYXRhPy5tZXRhZGF0YS5vZmZlcklkXG4gICAgICAgIClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBBcHBEYXRhJywgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICApXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgIHRoaXMuY29sbGVjdG9yRm9ybS5maWxsRGF0YSA9IHRoaXMuYXBwRGF0YS5maWxsRGF0YSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICBkYXRhLmZpbGxEYXRhXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmFwcERhdGEuYmxvY2tQcmV2aW91c1N0ZXAgPSBkYXRhLmJsb2NrUHJldmlvdXNTdGVwO1xuICAgICAgICAgIHRoaXMuY29sbGVjdG9yRm9ybS5mb3JtbHlDb25maWdVcGRhdGVkLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDbGVhciB0aGUgc2F2aW5nIGFmdGVyIGFjdGlvbnMgZmxhZ1xuICAgICAgICB0aGlzLmNvbGxlY3RvckZvcm0uY2xlYXJTYXZpbmdBZnRlckFjdGlvbnNTdGF0ZSgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIGR1cmluZyBzYXZlU3RlcCcsIGVycm9yKTtcbiAgICAgICAgLy8gQ2xlYXIgdGhlIHNhdmluZyBhZnRlciBhY3Rpb25zIGZsYWcgb24gZXJyb3IgYXMgd2VsbFxuICAgICAgICB0aGlzLmNvbGxlY3RvckZvcm0uY2xlYXJTYXZpbmdBZnRlckFjdGlvbnNTdGF0ZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVBcHBEYXRhKHNhdmVDaGFuZ2VzOiBib29sZWFuKSB7XG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IHRoaXMuZm9ybS52YWx1ZTtcblxuICAgIC8vIEdldCB0aGUgY3VycmVudCB2aXNpYmxlIHN0ZXAgdG8gZW5zdXJlIHdlJ3JlIHVwZGF0aW5nIHRoZSByaWdodCBzdGVwIGRhdGFcbiAgICBjb25zdCBjdXJyZW50VmlzaWJsZVN0ZXAgPSB0aGlzLmZpbHRlcmVkVmlzaWJsZVN0ZXBzW3RoaXMuY3VycmVudFN0ZXBJbmRleF07XG5cbiAgICBjb25zdCBmbHV4ID0gKHRoaXMuZmllbGQ/LnByb3BzPy5bJ2ZsdXgnXSB8fCBbXSkubWFwKFxuICAgICAgKHN0ZXA6IGFueSkgPT5cbiAgICAgICAgbmV3IEFwcERhdGFTdGVwKFxuICAgICAgICAgIHN0ZXAuaWRlbnRpZmllcixcbiAgICAgICAgICBzdGVwLnR5cGUsXG4gICAgICAgICAgKHN0ZXAuc2VjdGlvbnMgfHwgW10pLm1hcChcbiAgICAgICAgICAgIChzZWN0aW9uOiBhbnkpID0+XG4gICAgICAgICAgICAgIG5ldyBBcHBEYXRhU2VjdGlvbihcbiAgICAgICAgICAgICAgICBzZWN0aW9uLmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgKHNlY3Rpb24uY29udHJvbHMgfHwgW10pXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKChjb250cm9sOiBhbnkpID0+IGNvbnRyb2wuaWRlbnRpZmllciAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAubWFwKChjb250cm9sOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBmb3JtVmFsdWVzW2NvbnRyb2wuaWRlbnRpZmllcl07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sLnR5cGUgIT09IFN0ZXBDb250cm9sVHlwZS5EaWN0aW9uYXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGxWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZCA9IChuOiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbi50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGAke3BhZCh2YWx1ZS5nZXREYXRlKCkpfS4ke3BhZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5nZXRNb250aCgpICsgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApfS4ke3ZhbHVlLmdldEZ1bGxZZWFyKCl9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFZhbHVlID0gZm9ybWF0dGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyA/IFN0cmluZyh2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBcHBEYXRhQ29udHJvbChjb250cm9sLmlkZW50aWZpZXIsIGZpbGxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGxWYWx1ZUlkID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGxWYWx1ZU5hbWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsbFZhbHVlSWRzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsbFZhbHVlTmFtZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBtdWx0aXBsZSBzZWxlY3Rpb24gKGFycmF5IG9mIHZhbHVlcylcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsVmFsdWVJZHMgPSB2YWx1ZS5tYXAoKHY6IGFueSkgPT4gU3RyaW5nKHYuaWQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFZhbHVlTmFtZXMgPSB2YWx1ZS5tYXAoKHY6IGFueSkgPT4gdi5uYW1lIHx8ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBhbHNvIHNldCBzaW5nbGUgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFZhbHVlSWQgPSBTdHJpbmcodmFsdWVbMF0uaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxWYWx1ZU5hbWUgPSB2YWx1ZVswXS5uYW1lIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUuaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsVmFsdWVJZCA9IFN0cmluZyh2YWx1ZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxWYWx1ZU5hbWUgPSB2YWx1ZS5uYW1lIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFZhbHVlSWQgPSBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWN0aW9uYXJ5Q29udHJvbERhdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc3BlY2lmaWNDb250cm9sRGF0YSBhcyBEaWN0aW9uYXJ5Q29udHJvbERhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaWN0aW9uYXJ5Q29udHJvbERhdGE/LmRpY3Rpb25hcnlVVUlEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbGxlY3RvckZvcm0uZGljdGlvbmFyeU1hcC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlDb250cm9sRGF0YS5kaWN0aW9uYXJ5VVVJRFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGRpY3Rpb25hcnk/LnZhbHVlcz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2KSA9PiB2LmlkID09IHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxWYWx1ZU5hbWUgPSBzZWxlY3RlZE9wdGlvbi5uYW1lIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBDb3VsZCBub3QgZmluZCBkaWN0aW9uYXJ5IHZhbHVlIG5hbWUgZm9yIElEOiAke3ZhbHVlfSBpbiBkaWN0aW9uYXJ5ICR7ZGljdGlvbmFyeUNvbnRyb2xEYXRhLmRpY3Rpb25hcnlVVUlEfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBEaWN0aW9uYXJ5IFVVSUQgbm90IGZvdW5kIGZvciBjb250cm9sOiAke2NvbnRyb2wuaWRlbnRpZmllcn1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQXBwRGF0YUNvbnRyb2woXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsVmFsdWVOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFZhbHVlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsVmFsdWVOYW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxWYWx1ZUlkc1xuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuYXBwRGF0YS5maWxsRGF0YSkge1xuICAgICAgdGhpcy5hcHBEYXRhLmZpbGxEYXRhLmZsdXggPSBmbHV4O1xuXG4gICAgICAvLyBFbnN1cmUgdGhlIG1ldGFkYXRhIHJlZmxlY3RzIHRoZSBjdXJyZW50IHZpc2libGUgc3RlcFxuICAgICAgaWYgKGN1cnJlbnRWaXNpYmxlU3RlcCkge1xuICAgICAgICB0aGlzLmFwcERhdGEuZmlsbERhdGEubWV0YWRhdGEuY3VycmVudFN0ZXBJZCA9XG4gICAgICAgICAgY3VycmVudFZpc2libGVTdGVwLmlkZW50aWZpZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNhdmVDaGFuZ2VzKSB7XG4gICAgICBhd2FpdCB0aGlzLnNhdmVBcHBEYXRhU3RlcCgpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUJ1dHRvbnMoXG4gICAgc3RlcDogYW55LFxuICAgIHN0ZXBJbmRleDogbnVtYmVyLFxuICAgIGxhc3Q6IGJvb2xlYW4sXG4gICAgYnRuRGlzYWJsZWQ6IGJvb2xlYW5cbiAgKTogYW55IHtcbiAgICBsZXQgYnV0dG9uczogYW55W10gPSBbXTtcbiAgICBpZiAoc3RlcC5wcm9wcz8uWydidXR0b25zJ10/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGJ1dHRvbnMgPSBzdGVwLnByb3BzPy5bJ2J1dHRvbnMnXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnV0dG9ucyA9IHRoaXMuZ2V0RGVmYXVsdEJ1dHRvbnMoc3RlcEluZGV4LCBsYXN0KTtcbiAgICB9XG4gICAgYnV0dG9ucy5mb3JFYWNoKChiKSA9PiB0aGlzLnNldHVwQnV0dG9uUHJvcGVydGllcyhiLCBidG5EaXNhYmxlZCkpO1xuICAgIGlmICh0aGlzLmFwcERhdGE/LmZpbGxEYXRhPy5tZXRhZGF0YT8uaXNTdWJtaXR0ZWQpIHtcbiAgICAgIGJ1dHRvbnMgPSBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1dHRvbnM7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRCdXR0b25zKGluZGV4OiBudW1iZXIsIGxhc3Q6IGJvb2xlYW4pOiBhbnlbXSB7XG4gICAgY29uc3QgYnV0dG9uczogYW55W10gPSBbXTtcblxuICAgIGlmICh0aGlzLmFwcERhdGE/LmZpbGxEYXRhPy5tZXRhZGF0YT8uaXNTdWJtaXR0ZWQgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiBidXR0b25zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRGlzcGxheU1vZGUpIHtcbiAgICAgIGJ1dHRvbnMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdiYWNrJyxcbiAgICAgICAgbGFiZWw6ICdCYWNrJyxcbiAgICAgICAgc3R5bGVLZXk6ICcuYnV0dG9uLWJhY2snLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpbmRleCAhPT0gMCAmJiB0aGlzLmFwcERhdGE/LmJsb2NrUHJldmlvdXNTdGVwID09PSBmYWxzZSkge1xuICAgICAgICBidXR0b25zLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdiYWNrJyxcbiAgICAgICAgICBsYWJlbDogJ0JhY2snLFxuICAgICAgICAgIHN0eWxlS2V5OiAnLmJ1dHRvbi1iYWNrJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIWxhc3QpIHtcbiAgICAgICAgYnV0dG9ucy5wdXNoKHsgdHlwZTogJ25leHQnLCBsYWJlbDogJ05leHQnLCBzdHlsZUtleTogJy5idXR0b24tbmV4dCcgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBidXR0b25zLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdzdWJtaXQnLFxuICAgICAgICAgIGxhYmVsOiAnU3VibWl0JyxcbiAgICAgICAgICBzdHlsZUtleTogJy5idXR0b24tc3VibWl0JyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBidXR0b25zO1xuICB9XG5cbiAgYXBwbHlQcm9ncmVzc0JhclN0eWxlcygpIHtcbiAgICBjb25zdCBkZXNpZ25Db25maWcgPSB0aGlzLmZpZWxkLnByb3BzPy5bJ2Rlc2lnbiddO1xuXG4gICAgaWYgKGRlc2lnbkNvbmZpZykge1xuICAgICAgY29uc3QgcHJvZ3Jlc3NCYXJDb25maWcgPSBkZXNpZ25Db25maWdbJy5jb21wb25lbnQtcHJvZ3Jlc3MtYmFyJ107XG4gICAgICBpZiAocHJvZ3Jlc3NCYXJDb25maWcpIHtcbiAgICAgICAgdGhpcy5wcm9ncmVzc0JhclN0eWxlcyA9IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHByb2dyZXNzQmFyQ29uZmlnLmJhY2tncm91bmRDb2xvciB8fCAnI2ZmZmZmZicsXG4gICAgICAgICAgYm9yZGVyQ29sb3I6IHByb2dyZXNzQmFyQ29uZmlnLmJvcmRlckNvbG9yIHx8ICcjMDAwMDAwJyxcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IHByb2dyZXNzQmFyQ29uZmlnLmJvcmRlclJhZGl1cyB8fCAnN3B4JyxcbiAgICAgICAgICBjb2xvcjogcHJvZ3Jlc3NCYXJDb25maWcuY29sb3IgfHwgJyMwMDAwMDAnLFxuICAgICAgICAgIHN0YXJ0Q29sb3I6IHByb2dyZXNzQmFyQ29uZmlnLnN0YXJ0Q29sb3IgfHwgJyM4ODg0QkYnLFxuICAgICAgICAgIGVuZENvbG9yOiBwcm9ncmVzc0JhckNvbmZpZy5lbmRDb2xvciB8fCAnIzg4ODRCRicsXG4gICAgICAgICAgaGVpZ2h0OiBwcm9ncmVzc0JhckNvbmZpZy5oZWlnaHQgfHwgJzRweCcsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0dXBCdXR0b25Qcm9wZXJ0aWVzKGJ1dHRvbjogYW55LCBidG5EaXNhYmxlZDogYm9vbGVhbikge1xuICAgIGJ1dHRvbi5zdHlsZSA9IHRoaXMuZmllbGQucHJvcHM/LlsnZGVzaWduJ11bYnV0dG9uLnN0eWxlS2V5XSB8fCB7fTtcbiAgICBidXR0b24uZGlzYWJsZWQgPSB0aGlzLnByb3BzWydkZW1vTW9kZSddID09PSBmYWxzZSA/IGJ0bkRpc2FibGVkIDogZmFsc2U7XG4gIH1cblxuICBhc3luYyBidXR0b25DbGljayh0eXBlOiBzdHJpbmcsIHN0ZXA6IEZvcm1seUZpZWxkQ29uZmlnKSB7XG4gICAgaWYgKCF0aGlzLmlzTmF2aWdhdGlvbkluUHJvZ3Jlc3MpIHtcbiAgICAgIHRoaXMuaXNOYXZpZ2F0aW9uSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICBhd2FpdCB0aGlzLm5hdmlnYXRlQXN5bmModHlwZSwgc3RlcCk7XG4gICAgICB0aGlzLmlzTmF2aWdhdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZU5leHRBc3luYygpIHtcbiAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuZmllbGQ/LmZpZWxkR3JvdXAhW3RoaXMuY3VycmVudFN0ZXBJbmRleF07XG4gICAgaWYgKGN1cnJlbnRTdGVwKSB7XG4gICAgICBhd2FpdCB0aGlzLmJ1dHRvbkNsaWNrKCduZXh0JywgY3VycmVudFN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJldHJ5Q2xpY2soc3RlcDogYW55KSB7XG4gICAgaWYgKHN0ZXA/LmZpZWxkR3JvdXA/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5yZXRyeVJlY3Vyc2l2ZWx5KHN0ZXAuZmllbGRHcm91cCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvZ3Jlc3NCYXJGaWxsKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnByb2dyZXNzQmFyU3R5bGVzLnN0YXJ0Q29sb3IgfHwgJyM4ODg0QkYnO1xuICAgIGNvbnN0IGVuZCA9IHRoaXMucHJvZ3Jlc3NCYXJTdHlsZXMuZW5kQ29sb3IgfHwgJyM4ODg0QkYnO1xuICAgIHJldHVybiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke3N0YXJ0fSwgJHtlbmR9KWA7XG4gIH1cblxuICByZXRyeVJlY3Vyc2l2ZWx5KGZpZWxkR3JvdXA6IGFueSkge1xuICAgIGlmIChmaWVsZEdyb3VwICYmIGZpZWxkR3JvdXAubGVuZ3RoID4gMCkge1xuICAgICAgZmllbGRHcm91cC5mb3JFYWNoKChmOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gZi5wcm9wcz8uWydjb21wb25lbnQnXTtcbiAgICAgICAgaWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQucmV0cnkpIHtcbiAgICAgICAgICBjb21wb25lbnQucmV0cnkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC5yZXRyeUFzeW5jKSB7XG4gICAgICAgICAgY29tcG9uZW50LnJldHJ5QXN5bmMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJldHJ5UmVjdXJzaXZlbHkoZi5maWVsZEdyb3VwKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlQXN5bmModHlwZTogc3RyaW5nLCBzdGVwOiBGb3JtbHlGaWVsZENvbmZpZykge1xuICAgIHRoaXMuaXNOYXZpZ2F0aW5nID0gdHJ1ZTtcbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuZmllbGQ/LmZpZWxkR3JvdXAgfHwgW107XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gc3RlcHMuaW5kZXhPZihzdGVwKTtcblxuICAgIGlmIChjdXJyZW50SW5kZXggPCAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2SW5kZXggPSBjdXJyZW50SW5kZXggLSAxO1xuXG4gICAgaWYgKFxuICAgICAgKHR5cGUgPT09ICduZXh0JyB8fCB0eXBlID09PSAnc3VibWl0JykgJiZcbiAgICAgIGN1cnJlbnRJbmRleCA8PSBzdGVwcy5sZW5ndGggLSAxXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5wcm9wc1snZGVtb01vZGUnXSA9PT0gZmFsc2UgJiYgIXRoaXMudmFsaWRhdGVGb3JtKHN0ZXApKSB7XG4gICAgICAgIHRoaXMuaXNOYXZpZ2F0aW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnNob3dTdGVwcykge1xuICAgICAgICBjb25zdCBjdXJyZW50RmllbGRHcm91cCA9IHN0ZXBzW2N1cnJlbnRJbmRleF0/LmZpZWxkR3JvdXA7XG4gICAgICAgIGNvbnN0IGNhbkFkdmFuY2UgPSB0aGlzLmNhbkFkdmFuY2VSZWN1cnNpdmVseShjdXJyZW50RmllbGRHcm91cCk7XG4gICAgICAgIGlmICghY2FuQWR2YW5jZSkge1xuICAgICAgICAgIHRoaXMuaXNOYXZpZ2F0aW5nID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVBcHBEYXRhKHRydWUpO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuICAgICAgICBjb25zdCBoYXNBY3Rpb25TdGVwcyA9IGF3YWl0IHRoaXMuZmllbGQ/LnByb3BzPy5bXG4gICAgICAgICAgJ29uU2VsZWN0ZWRQYWdlQ2hhbmdpbmcnXG4gICAgICAgIF0oe1xuICAgICAgICAgIGZyb206IHRoaXMuY3VycmVudFN0ZXBJbmRleCxcbiAgICAgICAgICB0bzogbmV4dEluZGV4LFxuICAgICAgICAgIGN1cnJlbnQ6IHRoaXMuY3VycmVudFN0ZXBJbmRleCxcbiAgICAgICAgICBjYWxsYmFjazogKCkgPT4gdGhpcy5jaGVja0lmRmxvd0lzRmluaXNoZWQoKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdoYXNBY3Rpb25TdGVwcycsIGhhc0FjdGlvblN0ZXBzKTtcblxuICAgICAgICBpZiAoaGFzQWN0aW9uU3RlcHMpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUFwcERhdGEodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNGbG93RmluaXNoZWQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXggPSBuZXh0SW5kZXg7XG4gICAgICAgICAgdGhpcy5sb2FkZWRTdGVwc1tuZXh0SW5kZXhdID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmZpZWxkPy5wcm9wcz8uWydvblNlbGVjdGVkUGFnZUNoYW5nZWQnXSh0aGlzLmN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyT25QYWdlU2VsZWN0ZWRGb3JJbmRleCh0aGlzLmN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN0ZXA/LmZpZWxkR3JvdXA/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGNhbkFkdmFuY2UgPSB0aGlzLmNhbkFkdmFuY2VSZWN1cnNpdmVseShzdGVwLmZpZWxkR3JvdXApO1xuICAgICAgICAgIGlmICghY2FuQWR2YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5pc05hdmlnYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVBbmRHb05leHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUFuZEdvTmV4dCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnYmFjaycgJiYgY3VycmVudEluZGV4ID4gMCkge1xuICAgICAgYXdhaXQgdGhpcy5nZXRQcmV2aW91c1N0ZXAoKTtcbiAgICAgIGlmICghdGhpcy5zaG93U3RlcHMpIHtcbiAgICAgICAgY29uc3QgaGFzQWN0aW9uU3RlcHMgPSBhd2FpdCB0aGlzLmZpZWxkPy5wcm9wcz8uW1xuICAgICAgICAgICdvblNlbGVjdGVkUGFnZUNoYW5naW5nJ1xuICAgICAgICBdKHtcbiAgICAgICAgICBmcm9tOiB0aGlzLmN1cnJlbnRTdGVwSW5kZXgsXG4gICAgICAgICAgdG86IHByZXZJbmRleCxcbiAgICAgICAgICBjdXJyZW50OiB0aGlzLmN1cnJlbnRTdGVwSW5kZXgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChoYXNBY3Rpb25TdGVwcykge1xuICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlQXBwRGF0YSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudFN0ZXBJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgdGhpcy5sb2FkZWRTdGVwc1twcmV2SW5kZXhdID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCAtIDE7XG4gICAgICAgIGNvbnN0IGhhc0FjdGlvblN0ZXBzID0gYXdhaXQgdGhpcy5maWVsZD8ucHJvcHM/LltcbiAgICAgICAgICAnb25TZWxlY3RlZFBhZ2VDaGFuZ2luZydcbiAgICAgICAgXSh7XG4gICAgICAgICAgZnJvbTogdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXgsXG4gICAgICAgICAgdG86IHRhcmdldEluZGV4LFxuICAgICAgICAgIGN1cnJlbnQ6IHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoaGFzQWN0aW9uU3RlcHMpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUFwcERhdGEodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0ZXBwZXIucHJldmlvdXMoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U3RlcEluZGV4ID0gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuaXNOYXZpZ2F0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVBbmRHb05leHQoKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVBcHBEYXRhKHRydWUpO1xuICAgIHRoaXMuZ29OZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdvTmV4dCgpIHtcbiAgICBjb25zdCBjdXJyZW50SWR4ID0gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXg7XG4gICAgY29uc3QgbmV4dElkeCA9IGN1cnJlbnRJZHggKyAxO1xuXG4gICAgY29uc3QgaGFzQWN0aW9uU3RlcHMgPSBhd2FpdCB0aGlzLmZpZWxkPy5wcm9wcz8uWydvblNlbGVjdGVkUGFnZUNoYW5naW5nJ10oe1xuICAgICAgZnJvbTogY3VycmVudElkeCxcbiAgICAgIHRvOiBuZXh0SWR4LFxuICAgICAgY3VycmVudDogY3VycmVudElkeCxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLmNoZWNrSWZGbG93SXNGaW5pc2hlZCgpLFxuICAgIH0pO1xuXG4gICAgaWYgKGhhc0FjdGlvblN0ZXBzKSB7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZUFwcERhdGEodHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXggPSB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleDtcbiAgICB0aGlzLmZpZWxkPy5wcm9wcz8uWydvblNlbGVjdGVkUGFnZUNoYW5nZWQnXSh0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0lmRmxvd0lzRmluaXNoZWQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdGVwcGVyICYmXG4gICAgICB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9PT0gdGhpcy5maWVsZD8uZmllbGRHcm91cD8ubGVuZ3RoISAtIDFcbiAgICApIHtcbiAgICAgIHRoaXMuaXNGbG93RmluaXNoZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50U3RlcEluZGV4ID09PSB0aGlzLmZpZWxkPy5maWVsZEdyb3VwPy5sZW5ndGghIC0gMSkge1xuICAgICAgdGhpcy5pc0Zsb3dGaW5pc2hlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzRmxvd0ZpbmlzaGVkKSB7XG4gICAgICBpZiAodGhpcy5maW5hbFN0ZXBGaWVsZENvbmZpZykge1xuICAgICAgICB0aGlzLnNob3dGaW5hbFN0ZXAgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5maWVsZD8ucHJvcHM/LlsnY29tcGxldGlvbkV2ZW50J10oKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUZvcm0oc3RlcDogRm9ybWx5RmllbGRDb25maWcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wcm9wc1snZGVtb01vZGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICBsZXQgZmlyc3RJbnZhbGlkRmllbGRLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHN0ZXAuZmllbGRHcm91cCkge1xuICAgICAgc3RlcC5maWVsZEdyb3VwLmZvckVhY2goKGYpID0+IHtcbiAgICAgICAgaWYgKGYuZmllbGRHcm91cCkge1xuICAgICAgICAgIGYuZmllbGRHcm91cC5mb3JFYWNoKChjOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgYy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICBpZiAoYy5mb3JtQ29udHJvbC5lcnJvcnMgJiYgIWMuX2hpZGUpIHtcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGludmFsaWQgZmllbGQga2V5IGZvciBzY3JvbGxpbmdcbiAgICAgICAgICAgICAgaWYgKCFmaXJzdEludmFsaWRGaWVsZEtleSAmJiBjLmtleSkge1xuICAgICAgICAgICAgICAgIGZpcnN0SW52YWxpZEZpZWxkS2V5ID0gYy5rZXk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSWYgdmFsaWRhdGlvbiBmYWlsZWQgYW5kIHdlIGhhdmUgYSBmaWVsZCB0byBzY3JvbGwgdG8sIHVzZSB0aGUgc2Nyb2xsIHNlcnZpY2VcbiAgICBpZiAoIWlzVmFsaWQgJiYgZmlyc3RJbnZhbGlkRmllbGRLZXkpIHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9FcnJvclNlcnZpY2Uuc2Nyb2xsVG9GaWVsZChmaXJzdEludmFsaWRGaWVsZEtleSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICBpc1ZhbGlkKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWVsZC5rZXkpIHtcbiAgICAgIHJldHVybiBmaWVsZC5mb3JtQ29udHJvbD8udmFsaWQgPz8gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZC5maWVsZEdyb3VwXG4gICAgICA/IGZpZWxkLmZpZWxkR3JvdXAuZXZlcnkoKGYpID0+IHRoaXMuaXNWYWxpZChmKSlcbiAgICAgIDogdHJ1ZTtcbiAgfVxuXG4gIGlzQ3VzdG9tU3RlcChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RlcFR5cGUgPSB0aGlzLmZpZWxkLmZpZWxkR3JvdXAhW2luZGV4XT8ucHJvcHM/LlsnZmx1eFR5cGUnXTtcbiAgICByZXR1cm4gc3RlcFR5cGUgPT09IEZsdXhUeXBlLkN1c3RvbTtcbiAgfVxuXG4gIGFzeW5jIG9uU3RlcENoYW5nZShldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnNlbGVjdGVkSW5kZXgpIHtcbiAgICAgIGF3YWl0IHRoaXMudHJpZ2dlck9uUGFnZVNlbGVjdGVkRm9ySW5kZXgoZXZlbnQuc2VsZWN0ZWRJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdHJpZ2dlck9uUGFnZVNlbGVjdGVkRm9ySW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGZnID0gdGhpcy5maWVsZC5maWVsZEdyb3VwIVtpbmRleF0/LmZpZWxkR3JvdXA7XG4gICAgdGhpcy50cmlnZ2VyT25QYWdlU2VsZWN0ZWRSZWN1cnNpdmVseShmZyk7XG4gIH1cblxuICBhc3luYyB0cmlnZ2VyT25QYWdlU2VsZWN0ZWRSZWN1cnNpdmVseShmZzogYW55KSB7XG4gICAgaWYgKGZnICYmIGZnLmxlbmd0aCA+IDApIHtcbiAgICAgIGZnLmZvckVhY2goYXN5bmMgKGY6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBmLnByb3BzPy5bJ2NvbXBvbmVudCddO1xuICAgICAgICBpZiAoY29tcG9uZW50Py5vblBhZ2VTZWxlY3RlZEFzeW5jKSB7XG4gICAgICAgICAgYXdhaXQgY29tcG9uZW50Py5vblBhZ2VTZWxlY3RlZEFzeW5jKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBvbmVudD8ub25QYWdlU2VsZWN0ZWQpIHtcbiAgICAgICAgICBjb21wb25lbnQ/Lm9uUGFnZVNlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50cmlnZ2VyT25QYWdlU2VsZWN0ZWRSZWN1cnNpdmVseShmLmZpZWxkR3JvdXApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2FuQWR2YW5jZVJlY3Vyc2l2ZWx5KGZnOiBhbnkpOiBib29sZWFuIHtcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgIGxldCBmaXJzdEludmFsaWRGaWVsZEtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAoZmcgJiYgZmcubGVuZ3RoID4gMCkge1xuICAgICAgZmcuZm9yRWFjaChhc3luYyAoZjogYW55KSA9PiB7XG4gICAgICAgIGxldCBpbm5lclJlc3VsdCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGYucHJvcHM/LlsnY29tcG9uZW50J107XG4gICAgICAgIGlmIChjb21wb25lbnQ/LmNhbkFkdmFuY2UpIHtcbiAgICAgICAgICBpbm5lclJlc3VsdCA9IGNvbXBvbmVudD8uY2FuQWR2YW5jZSgpO1xuICAgICAgICAgIGlmIChpbm5lclJlc3VsdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBmaWVsZCBrZXkgZm9yIHNjcm9sbGluZ1xuICAgICAgICAgICAgaWYgKCFmaXJzdEludmFsaWRGaWVsZEtleSAmJiBmLmtleSkge1xuICAgICAgICAgICAgICBmaXJzdEludmFsaWRGaWVsZEtleSA9IGYua2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbm5lclJlc3VsdCA9IHRoaXMuY2FuQWR2YW5jZVJlY3Vyc2l2ZWx5KGYuZmllbGRHcm91cCk7XG4gICAgICAgIGlmIChpbm5lclJlc3VsdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBJZiB2YWxpZGF0aW9uIGZhaWxlZCBhbmQgd2UgaGF2ZSBhIGZpZWxkIHRvIHNjcm9sbCB0bywgdXNlIHRoZSBzY3JvbGwgc2VydmljZVxuICAgIGlmICghdmFsaWQgJiYgZmlyc3RJbnZhbGlkRmllbGRLZXkpIHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9FcnJvclNlcnZpY2Uuc2Nyb2xsVG9GaWVsZChmaXJzdEludmFsaWRGaWVsZEtleSk7XG4gICAgfSBlbHNlIGlmICghdmFsaWQpIHtcbiAgICAgIC8vIEZhbGxiYWNrOiB0cnkgdG8gc2Nyb2xsIHRvIGZpcnN0IGVycm9yIHVzaW5nIHRoZSBjb2xsZWN0b3IgZm9ybSdzIG1ldGhvZFxuICAgICAgdGhpcy5jb2xsZWN0b3JGb3JtLnNjcm9sbFRvRmlyc3RWYWxpZGF0aW9uRXJyb3IoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH1cblxuICBnZXRDb21wb25lbnRzV2l0aERlZmF1bHRMYWJlbHMoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtGbHV4VHlwZS5LeWNdOiAnS3ljJyxcbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd1N0ZXBzOyBlbHNlIHNpbmdsZVN0ZXBUZW1wbGF0ZVwiPlxuICA8ZGl2IFtuZ1N0eWxlXT1cImNvbmNhdGVuYXRlZEZvcm1TdHlsZVwiPlxuICAgIDxmb3JtbHktZmllbGRcbiAgICAgICpuZ0lmPVwic2hvd0ZpbmFsU3RlcFwiXG4gICAgICBbZmllbGRdPVwiZmluYWxTdGVwRmllbGRDb25maWdcIlxuICAgID48L2Zvcm1seS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPG1hdC1ob3Jpem9udGFsLXN0ZXBwZXJcbiAgICAjc3RlcHBlclxuICAgICpuZ0lmPVwiIXNob3dGaW5hbFN0ZXBcIlxuICAgIFtsaW5lYXJdPVwidHJ1ZVwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblN0ZXBDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW25nU3R5bGVdPVwiY29uY2F0ZW5hdGVkRm9ybVN0eWxlXCJcbiAgPlxuICAgIDxtYXQtc3RlcCAqbmdGb3I9XCJsZXQgc3RlcCBvZiBmaWVsZC5maWVsZEdyb3VwOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbCAqbmdJZj1cInNob3dTdGVwc0xhYmVsc1wiPlxuICAgICAgICB7eyBzdGVwLnByb3BzPy5sYWJlbCB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cImJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uID09ICd0b3AnXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uc0NvbnRhaW5lclwiXG4gICAgICAvPlxuXG4gICAgICA8aDMgW25nU3R5bGVdPVwiZmllbGQucHJvcHM/LlsnZGVzaWduJ11bJy5mb250LWhlYWRpbmctMyddIHx8IHt9XCI+XG4gICAgICAgIHt7IHN0ZXAucHJvcHM/LmRlc2NyaXB0aW9uIH19XG4gICAgICA8L2gzPlxuICAgICAgPGZvcm1seS1maWVsZCBbZmllbGRdPVwic3RlcFwiPjwvZm9ybWx5LWZpZWxkPlxuXG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb24gPT0gJ2JvdHRvbSdcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25zQ29udGFpbmVyXCJcbiAgICAgIC8+XG4gICAgPC9tYXQtc3RlcD5cbiAgICA8IS0tIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIiFzaG93U3RlcHNDb3VudGVyXCIgbWF0U3RlcHBlckljb249XCJudW1iZXJcIj5cbiAgICAgIDxtYXQtaWNvbj5yYWRpb19idXR0b25fY2hlY2tlZDwvbWF0LWljb24+XG4gICAgPC9uZy10ZW1wbGF0ZT4gLS0+XG4gIDwvbWF0LWhvcml6b250YWwtc3RlcHBlcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZVN0ZXBUZW1wbGF0ZT5cbiAgPGRpdiBbbmdTdHlsZV09XCJjb25jYXRlbmF0ZWRGb3JtU3R5bGVcIj5cbiAgICA8Zm9ybWx5LWZpZWxkXG4gICAgICAqbmdJZj1cInNob3dGaW5hbFN0ZXBcIlxuICAgICAgW2ZpZWxkXT1cImZpbmFsU3RlcEZpZWxkQ29uZmlnXCJcbiAgICA+PC9mb3JtbHktZmllbGQ+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzaW5nbGUtc3RlcC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiIXNob3dGaW5hbFN0ZXBcIlxuICAgIFtuZ1N0eWxlXT1cImNvbmNhdGVuYXRlZEZvcm1TdHlsZVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInByb2dyZXNzLWJhci13cmFwcGVyXCJcbiAgICAgICpuZ0lmPVwic2hvd1Byb2dyZXNzQmFyXCJcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiBwcm9ncmVzc0JhclN0eWxlcy5ib3JkZXJSYWRpdXMsXG4gICAgICAgICBoZWlnaHQ6IHByb2dyZXNzQmFyU3R5bGVzLmhlaWdodCxcbiAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInByb2dyZXNzLWJhci1maWxsXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIHdpZHRoOiAoKGN1cnJlbnRTdGVwSW5kZXggKyAxKSAvIHRvdGFsU3RlcHNDb3VudCkgKiAxMDAgKyAnJScsXG4gICAgICAgICAgYmFja2dyb3VuZDogZ2V0UHJvZ3Jlc3NCYXJGaWxsKCksXG4gICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgfVwiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG4gICA8ZGl2IGNsYXNzPVwic2luZ2xlLXN0ZXAtaGVhZGVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2luZ2xlLXN0ZXAtaW5kaWNhdG9yXCJcbiAgICAgICAgKm5nSWY9XCJzaG93U3RlcHNDb3VudGVyO1wiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcC1jdXJyZW50XCI+e3sgY3VycmVudFN0ZXBJbmRleCArIDEgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcC1zZXBhcmF0b3JcIj4vPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXAtdG90YWxcIj57eyB0b3RhbFN0ZXBzQ291bnQgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoMSAqbmdJZj1cInNob3dTdGVwc0xhYmVsc1wiIGNsYXNzPVwic2luZ2xlLXN0ZXAtbGFiZWxcIiAgW25nU3R5bGVdPVwiZmllbGQucHJvcHM/LlsnZGVzaWduJ11bJy5mb250LWhlYWRpbmctMSddIHx8IHt9XCI+XG4gICAgICAgIHt7IGZpZWxkLmZpZWxkR3JvdXAhW2N1cnJlbnRTdGVwSW5kZXhdIS5wcm9wcyEubGFiZWwgfX1cbiAgICAgIDwvaDE+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cImJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uID09ICd0b3AnXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbnNDb250YWluZXJcIlxuICAgIC8+XG5cbiAgICA8aDMgW25nU3R5bGVdPVwiZmllbGQucHJvcHM/LlsnZGVzaWduJ11bJy5mb250LWhlYWRpbmctMyddIHx8IHt9XCI+XG4gICAgICB7eyBmaWVsZCEuZmllbGRHcm91cCFbY3VycmVudFN0ZXBJbmRleF0hLnByb3BzIS5kZXNjcmlwdGlvbiB9fVxuICAgIDwvaDM+XG4gICAgPGZvcm1seS1maWVsZFxuICAgICAgKm5nSWY9XCJsb2FkZWRTdGVwc1tjdXJyZW50U3RlcEluZGV4XVwiXG4gICAgICBbZmllbGRdPVwiZmllbGQhLmZpZWxkR3JvdXAhW2N1cnJlbnRTdGVwSW5kZXhdXCJcbiAgICA+PC9mb3JtbHktZmllbGQ+XG5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cImJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uID09ICdib3R0b20nXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbnNDb250YWluZXJcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zQ29udGFpbmVyPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIGJ1dHRvbnNUZW1wbGF0ZTtcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgaW5kZXg6IGN1cnJlbnRTdGVwSW5kZXgsXG4gICAgICAgIHN0ZXA6IGZpZWxkIS5maWVsZEdyb3VwIVtjdXJyZW50U3RlcEluZGV4XVxuICAgICAgfVxuICAgIFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uc1RlbXBsYXRlIGxldC1pbmRleD1cImluZGV4XCIgbGV0LXN0ZXA9XCJzdGVwXCI+XG4gIDxkaXZcbiAgICAqbmdJZj1cIiFpc0Zsb3dGaW5pc2hlZFwiXG4gICAgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiXG4gICAgW25nU3R5bGVdPVwiZmllbGQucHJvcHM/LlsnZGVzaWduJ11bJy5idXR0b25zLWNvbnRhaW5lciddIHx8IHt9XCJcbiAgPlxuICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uICpuZ0lmPVwiaXNEZWJ1Z1wiIChjbGljayk9XCJyZXRyeUNsaWNrKHN0ZXApXCI+XG4gICAgICBEZWJ1ZyBSZXRyeVxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zR3JvdXBzW2luZGV4XVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgW2NvbG9yXT1cImJ1dHRvbi5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgICBbdHlwZV09XCJidXR0b24udHlwZSA9PT0gJ3N1Ym1pdCcgPyAnc3VibWl0JyA6ICdidXR0b24nXCJcbiAgICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKGJ1dHRvbi50eXBlLCBzdGVwKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJidXR0b24uZGlzYWJsZWQgfHwgaXNTYXZpbmdcIlxuICAgICAgICBbbmdTdHlsZV09XCJidXR0b24uc3R5bGVcIlxuICAgICAgPlxuICAgICAgICB7eyBidXR0b24ubGFiZWwgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCJpc05hdmlnYXRpbmcgfHwgaXNTYXZpbmdcIiBjbGFzcz1cImxvYWRpbmctc3Bpbm5lclwiPlxuICAgICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCIzMlwiPjwvbWF0LXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gKm5nSWY9XCJpc0RlYnVnXCIgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKCduZXh0Jywgc3RlcClcIj5cbiAgICAgIERlYnVnIE5leHRcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
776
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3JpZ2luLWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LWZpZWxkLXN0ZXBwZXIvZm9ybWx5LWZpZWxkLXN0ZXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3JpZ2luLWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LWZpZWxkLXN0ZXBwZXIvZm9ybWx5LWZpZWxkLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUVMLFNBQVMsRUFHVCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFnQixLQUFLLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxjQUFjLEVBQ2QsV0FBVyxFQUNYLGVBQWUsR0FFaEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7OztBQWdCaEYsTUFBTSxPQUFPLDJCQUNYLFNBQVEsU0FBUztJQStCakIsWUFDVSxzQkFBOEMsRUFDOUMsYUFBcUMsRUFDckMsR0FBc0IsRUFDdEIsb0JBQTBDO1FBRWxELEtBQUssRUFBRSxDQUFDO1FBTEEsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxrQkFBYSxHQUFi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LEVBQUUsRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUU7eUJBQ2pEO3dCQUNELHNCQUFzQjtxQkFDdkI7bU1BS3NCLE9BQU87c0JBQTdCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNURVBQRVJfR0xPQkFMX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFN0ZXBwZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgdGltZXIsIGZpcnN0VmFsdWVGcm9tLCBjYXRjaEVycm9yLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQXBwRGF0YSxcbiAgRmx1eFR5cGUsXG4gIEFwcERhdGFTdGVwLFxuICBBcHBEYXRhU2VjdGlvbixcbiAgQXBwRGF0YUNvbnRyb2wsXG4gIEFwcERhdGFGaWxsLFxuICBTdGVwQ29udHJvbFR5cGUsXG4gIERpY3Rpb25hcnlDb250cm9sRGF0YSxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm1zLm1vZGVsJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbkRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBDb2xsZWN0b3JGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vb3JpZ2luLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFNjcm9sbFRvRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2Nyb2xsLXRvLWVycm9yLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybWx5LWZpZWxkLXN0ZXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LWZpZWxkLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtbHktZmllbGQtc3RlcHBlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTVEVQUEVSX0dMT0JBTF9PUFRJT05TLFxuICAgICAgdXNlVmFsdWU6IHsgZGlzcGxheURlZmF1bHRJbmRpY2F0b3JUeXBlOiBmYWxzZSB9LFxuICAgIH0sXG4gICAgQXBwbGljYXRpb25EYXRhU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5RmllbGRTdGVwcGVyQ29tcG9uZW50XG4gIGV4dGVuZHMgRmllbGRUeXBlXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKE1hdFN0ZXBwZXIpIHN0ZXBwZXIhOiBNYXRTdGVwcGVyO1xuICBidXR0b25zR3JvdXBzOiBhbnlbXVtdID0gW107XG4gIHNob3dTdGVwczogYm9vbGVhbiA9IHRydWU7XG4gIHNob3dTdGVwc0xhYmVsczogYm9vbGVhbiA9IHRydWU7XG4gIHNob3dTdGVwc0NvdW50ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBzaG93QnV0dG9uc09uVG9wOiBib29sZWFuO1xuICBzaG93UHJvZ3Jlc3NCYXI6IGJvb2xlYW47XG4gIHNob3dGaW5hbFN0ZXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNGbG93RmluaXNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYXBwRGF0YTogQXBwRGF0YTtcbiAgaXNEaXNwbGF5TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0RlYnVnOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTmF2aWdhdGlvbkluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY3VycmVudFN0ZXBJbmRleDogbnVtYmVyID0gMDtcbiAgbG9hZGVkU3RlcHM6IGJvb2xlYW5bXSA9IFtdO1xuICBwcml2YXRlIGNvbmZpZ1VwZGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHZpc2libGVGaWVsZHNVcGRhdGVkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgdXBkYXRlQW5kR29OZXh0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZ29OZXh0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGNvbmNhdGVuYXRlZEZvcm1TdHlsZTogYW55ID0ge307XG4gIGJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uOiBzdHJpbmcgPSAnYm90dG9tJztcblxuICBpc05hdmlnYXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBmaW5hbFN0ZXBGaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWc7XG4gIGZpbHRlcmVkVmlzaWJsZVN0ZXBzOiBhbnlbXSA9IFtdO1xuICBwcm9ncmVzc0JhclN0eWxlczogYW55ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvbkRhdGFTZXJ2aWNlOiBBcHBsaWNhdGlvbkRhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29sbGVjdG9yRm9ybTogQ29sbGVjdG9yRm9ybUNvbXBvbmVudCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBzY3JvbGxUb0Vycm9yU2VydmljZTogU2Nyb2xsVG9FcnJvclNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucHJvcHNbJ2NvbXBvbmVudCddID0gdGhpcztcbiAgICB0aGlzLmFwcGx5UHJvZ3Jlc3NCYXJTdHlsZXMoKTtcbiAgICB0aGlzLmNvbmZpZ1VwZGF0ZVN1YnNjcmlwdGlvbiA9XG4gICAgICB0aGlzLmNvbGxlY3RvckZvcm0uZm9ybWx5Q29uZmlnVXBkYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5maWVsZCAmJiB0aGlzLmZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgICAgICB0aGlzLmZpZWxkLmZpZWxkR3JvdXAgPSB0aGlzLmV4dHJhY3RGaW5hbFN0ZXBJZk5lY2Vzc2FyeShcbiAgICAgICAgICAgIHRoaXMuZmllbGQuZmllbGRHcm91cFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVhdGVGaWVsZEdyb3VwQnV0dG9ucygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnZpc2libGVGaWVsZHNVcGRhdGVkU3Vic2NyaXB0aW9uID1cbiAgICAgIHRoaXMuY29sbGVjdG9yRm9ybS52aXNpYmxlRmllbGRzVXBkYXRlZC5zdWJzY3JpYmUoKHZpc2libGVGaWVsZHMpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZFZpc2libGVTdGVwcyA9IHZpc2libGVGaWVsZHM7XG4gICAgICB9KTtcblxuICAgIHRoaXMudXBkYXRlQW5kR29OZXh0U3Vic2NyaXB0aW9uID1cbiAgICAgIHRoaXMuY29sbGVjdG9yRm9ybS5mb3JtbHlVcGRhdGVBbmRHb05leHQuc3Vic2NyaWJlKGFzeW5jIChlKSA9PiB7XG4gICAgICAgIGlmIChlICYmIGUuc2VsZWN0ZWRPZmZlcklkICYmIHRoaXMuYXBwRGF0YT8uZmlsbERhdGEpIHtcbiAgICAgICAgICB0aGlzLmFwcERhdGEuZmlsbERhdGEubWV0YWRhdGEub2ZmZXJJZCA9IGUuc2VsZWN0ZWRPZmZlcklkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmZpZWxkLmZpZWxkR3JvdXAhW3RoaXMuY3VycmVudFN0ZXBJbmRleF07XG4gICAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGVBc3luYygnbmV4dCcsIHN0ZXApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmdvTmV4dFN1YnNjcmlwdGlvbiA9IHRoaXMuY29sbGVjdG9yRm9ybS5mb3JtbHlHb05leHQuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICB0aGlzLmdvTmV4dCgpO1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuaW5pdFN0ZXAoKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChjaGFuZ2VzLmZpZWxkKSB7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZUFwcERhdGEoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZUFwcERhdGEodGhpcy5maWVsZC5wcm9wcyk7XG4gICAgaWYgKHRoaXMuY3VycmVudFN0ZXBJbmRleCA+PSB0aGlzLnRvdGFsU3RlcHNDb3VudCkge1xuICAgICAgdGhpcy5zaG93RmluYWxTdGVwID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2hvd1N0ZXBzID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dTdGVwc0NvdW50ZXIgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RlcHBlcikge1xuICAgICAgdGhpcy5zdGVwcGVyLmxpbmVhciA9IGZhbHNlO1xuICAgICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPSB0aGlzLmN1cnJlbnRTdGVwSW5kZXg7XG4gICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RlcHBlci5fc3RlcHMudG9BcnJheSgpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmN1cnJlbnRTdGVwSW5kZXg7IGkrKykge1xuICAgICAgICBzdGVwc1tpXS5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RlcHBlci5saW5lYXIgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkLmZpZWxkR3JvdXAgJiYgdGhpcy5maWVsZC5maWVsZEdyb3VwLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubG9hZGVkU3RlcHMgPSBBcnJheSh0aGlzLmZpZWxkLmZpZWxkR3JvdXAubGVuZ3RoKS5maWxsKGZhbHNlKTtcbiAgICAgIHRoaXMubG9hZGVkU3RlcHNbdGhpcy5jdXJyZW50U3RlcEluZGV4XSA9IHRydWU7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5zaG93U3RlcHMgfHwgdGhpcy5jdXJyZW50U3RlcEluZGV4ID09IDApIHtcbiAgICAgIHRoaXMudHJpZ2dlck9uUGFnZVNlbGVjdGVkRm9ySW5kZXgodGhpcy5jdXJyZW50U3RlcEluZGV4KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWdVcGRhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY29uZmlnVXBkYXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVwZGF0ZUFuZEdvTmV4dFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy51cGRhdGVBbmRHb05leHRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZ29OZXh0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmdvTmV4dFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy52aXNpYmxlRmllbGRzVXBkYXRlZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy52aXNpYmxlRmllbGRzVXBkYXRlZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGluaXRTdGVwKCkge1xuICAgIGlmICh0aGlzLmZpZWxkKSB7XG4gICAgICBpZiAodGhpcy5maWVsZC5maWVsZEdyb3VwKSB7XG4gICAgICAgIHRoaXMuZmllbGQuZmllbGRHcm91cCA9IHRoaXMuZXh0cmFjdEZpbmFsU3RlcElmTmVjZXNzYXJ5KFxuICAgICAgICAgIHRoaXMuZmllbGQuZmllbGRHcm91cFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvYWRlZFN0ZXBzID0gQXJyYXkodGhpcy5maWVsZC5maWVsZEdyb3VwLmxlbmd0aCkuZmlsbChmYWxzZSk7XG4gICAgICAgIHRoaXMubG9hZGVkU3RlcHNbdGhpcy5jdXJyZW50U3RlcEluZGV4XSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWVsZC5wcm9wcykge1xuICAgICAgICB0aGlzLmZpbHRlcmVkVmlzaWJsZVN0ZXBzID0gdGhpcy5maWVsZC5wcm9wc1snZmlsdGVyZWRGbHV4J107XG4gICAgICAgIHRoaXMuaXNEZWJ1ZyA9IHRoaXMuZmllbGQucHJvcHNbJ2lzRGVidWcnXTtcbiAgICAgICAgY29uc3Qgc3RlcFNldHRpbmdzID0gdGhpcy5maWVsZC5wcm9wc1snc3RlcHNTZXR0aW5ncyddO1xuICAgICAgICBpZiAoc3RlcFNldHRpbmdzKSB7XG4gICAgICAgICAgdGhpcy5zaG93U3RlcHMgPSBzdGVwU2V0dGluZ3Muc2hvd0FsbFN0ZXBzO1xuICAgICAgICAgIHRoaXMuc2hvd1N0ZXBzQ291bnRlciA9IHN0ZXBTZXR0aW5ncy5zaG93Q291bnRlcjtcbiAgICAgICAgICB0aGlzLnNob3dTdGVwc0xhYmVscyA9IHN0ZXBTZXR0aW5ncy5zaG93TGFiZWxzO1xuICAgICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzQmFyID0gc3RlcFNldHRpbmdzLnNob3dQcm9ncmVzc0JhcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZXNpZ25Db25maWcgPSB0aGlzLmZpZWxkLnByb3BzWydkZXNpZ25Db25maWcnXTtcbiAgICAgICAgaWYgKGRlc2lnbkNvbmZpZykge1xuICAgICAgICAgIHRoaXMuc2hvd0J1dHRvbnNPblRvcCA9XG4gICAgICAgICAgICBkZXNpZ25Db25maWcuYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb24gPT09ICd0b3AnO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5maWVsZC5wcm9wc1snZGVzaWduJ10pXG4gICAgICAgICAgLmZpbHRlcigoaSkgPT4gaVswXS5zdGFydHNXaXRoKCcuZm9ybScpKVxuICAgICAgICAgIC5mb3JFYWNoKChpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wOiBhbnkgPSBpWzFdO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcCkuZm9yRWFjaCgoaikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZEZvcm1TdHlsZVtqXSA9IHByb3Bbal07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uID1cbiAgICAgICAgICB0aGlzLmZpZWxkLnByb3BzWydkZXNpZ24nXVsnLmJ1dHRvbnMtY29udGFpbmVyJ11bJ2FsaWduLWl0ZW1zJ10gPT1cbiAgICAgICAgICAgICdmbGV4LXN0YXJ0J1xuICAgICAgICAgICAgPyAndG9wJ1xuICAgICAgICAgICAgOiAnYm90dG9tJztcbiAgICAgIH1cbiAgICAgIHRoaXMuY3JlYXRlRmllbGRHcm91cEJ1dHRvbnMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdG90YWxTdGVwc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZmllbGQ/LmZpZWxkR3JvdXA/LmZpbHRlcihcbiAgICAgICAgKHN0ZXApID0+IHN0ZXAucHJvcHM/LlsnZmx1eFR5cGUnXSAhPT0gRmx1eFR5cGUuRmluYWxcbiAgICAgICkubGVuZ3RoID8/IDBcbiAgICApO1xuICB9XG5cbiAgZXh0cmFjdEZpbmFsU3RlcElmTmVjZXNzYXJ5KFxuICAgIGZpZWxkQ29uZmlnczogRm9ybWx5RmllbGRDb25maWdbXVxuICApOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICBsZXQgZmlsdGVyZWRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcbiAgICB0aGlzLmZpZWxkLmZpZWxkR3JvdXA/LmZvckVhY2goKGYpID0+IHtcbiAgICAgIGlmIChmLnByb3BzICYmIGYucHJvcHNbJ2ZsdXhUeXBlJ10gPT0gRmx1eFR5cGUuRmluYWwpIHtcbiAgICAgICAgdGhpcy5maW5hbFN0ZXBGaWVsZENvbmZpZyA9IGY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWx0ZXJlZENvbmZpZy5wdXNoKGYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJlZENvbmZpZztcbiAgfVxuXG4gIGNyZWF0ZUZpZWxkR3JvdXBCdXR0b25zKCkge1xuICAgIGlmICh0aGlzLmZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgIHRoaXMuYnV0dG9uc0dyb3VwcyA9IFtdO1xuICAgICAgdGhpcy5maWVsZC5maWVsZEdyb3VwLmZvckVhY2goKGZnLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzTGFzdCA9IGkgPT09IHRoaXMuZmllbGQuZmllbGRHcm91cCEubGVuZ3RoIC0gMTtcblxuICAgICAgICBsZXQgYnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGZnLnByb3BzKSB7XG4gICAgICAgICAgY29uc3QgZmx1eFR5cGUgPSBmZy5wcm9wc1snZmx1eFR5cGUnXTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBmbHV4VHlwZSA9PT0gRmx1eFR5cGUuS3ljIHx8XG4gICAgICAgICAgICBmbHV4VHlwZSA9PT0gRmx1eFR5cGUuR2VuZXJhdGVEb2N1bWVudCB8fFxuICAgICAgICAgICAgZmx1eFR5cGUgPT09IEZsdXhUeXBlLlNpZ24gfHxcbiAgICAgICAgICAgIGZsdXhUeXBlID09PSBGbHV4VHlwZS5FbWFpbCB8fFxuICAgICAgICAgICAgZmx1eFR5cGUgPT09IEZsdXhUeXBlLlBob25lIHx8XG4gICAgICAgICAgICBmbHV4VHlwZSA9PT0gRmx1eFR5cGUuT3BlbkJhbmtpbmdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uc0dyb3Vwcy5wdXNoKFtdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBidG5EaXNhYmxlZCA9XG4gICAgICAgICAgICBmbHV4VHlwZSA9PT0gRmx1eFR5cGUuS3ljIHx8XG4gICAgICAgICAgICBmbHV4VHlwZSA9PT0gRmx1eFR5cGUuUGhvbmUgfHxcbiAgICAgICAgICAgIGZsdXhUeXBlID09PSBGbHV4VHlwZS5FbWFpbDtcbiAgICAgICAgICBmZy5wcm9wc1snYnV0dG9uc0Rpc2FibGVkJ10gPT09IHRydWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGZsdXhUeXBlID09PSBGbHV4VHlwZS5LeWMgfHxcbiAgICAgICAgICAgICAgZmx1eFR5cGUgPT09IEZsdXhUeXBlLlBob25lIHx8XG4gICAgICAgICAgICAgIGZsdXhUeXBlID09PSBGbHV4VHlwZS5FbWFpbCkgJiZcbiAgICAgICAgICAgIGZnLnByb3BzWydidXR0b25zRGlzYWJsZWQnXSA9PT0gZmFsc2VcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29tcG9uZW50c1dpdGhEZWZhdWx0TGFiZWxzID1cbiAgICAgICAgICAgIHRoaXMuZ2V0Q29tcG9uZW50c1dpdGhEZWZhdWx0TGFiZWxzKCk7XG4gICAgICAgICAgaWYgKGNvbXBvbmVudHNXaXRoRGVmYXVsdExhYmVsc1tmbHV4VHlwZV0pIHtcbiAgICAgICAgICAgIGZnLnByb3BzWydsYWJlbCddID0gY29tcG9uZW50c1dpdGhEZWZhdWx0TGFiZWxzW2ZsdXhUeXBlXTtcbiAgICAgICAgICAgIGZnLnByb3BzWydkZXNjcmlwdGlvbiddID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZnLnByb3BzPy5bJ2ZsdXhUeXBlJ10gPT09IEZsdXhUeXBlLlZpZXdPZmZlciB8fFxuICAgICAgICAgIGZnLnByb3BzPy5bJ2ZsdXhUeXBlJ10gPT09IEZsdXhUeXBlLlBhdXNlXG4gICAgICAgICkge1xuICAgICAgICAgIC8vMTI9bGlzdCBvZmZlcnNcbiAgICAgICAgICB0aGlzLmJ1dHRvbnNHcm91cHMucHVzaChbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgYnRucyA9IHRoaXMuY3JlYXRlQnV0dG9ucyhmZywgaSwgaXNMYXN0LCBidG5EaXNhYmxlZCk7XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHNbJ2RlbW9Nb2RlJ10gPT09IHRydWUpIHtcbiAgICAgICAgICAgIGJ0bnMuZm9yRWFjaCgoYjogeyB0eXBlOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoYi50eXBlID09PSAnc3VibWl0Jykge1xuICAgICAgICAgICAgICAgIGJ0bnMuc3BsaWNlKGJ0bnMuaW5kZXhPZihiKSwgMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5wcm9wc1snbm9CdXR0b25zSW5WaWV3J10gPT09IHRydWUpIHtcbiAgICAgICAgICAgIGJ0bnMuc3BsaWNlKDAsIGJ0bnMubGVuZ3RoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5idXR0b25zR3JvdXBzLnB1c2goYnRucyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFwcERhdGEocHJvcHM6IGFueSkge1xuICAgIGNvbnN0IGFwcERhdGFJZCA9IHByb3BzWydhcHBEYXRhSWQnXTtcbiAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gcHJvcHNbJ2FwcGxpY2F0aW9uSWQnXSB8fCAwO1xuICAgIGNvbnN0IGN1cnJlbnRTdGVwSWQgPVxuICAgICAgcHJvcHMubWV0YURhdGE/LmN1cnJlbnRTdGVwSWQgfHwgcHJvcHMuZmx1eFswXT8uaWRlbnRpZmllcjtcblxuICAgIGlmIChwcm9wc1snaGFzRGljdGlvbmFyeURlcGVuZGVudFN0ZXBzJ10pIHtcbiAgICAgIGF3YWl0IHRpbWVyKDE1MCkudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RlcEluZGV4ID1cbiAgICAgIHRoaXMuZmllbGQuZmllbGRHcm91cD8uZmluZEluZGV4KFxuICAgICAgICAocykgPT4gcy5wcm9wcz8uWydzdGVwSWQnXSA9PT0gY3VycmVudFN0ZXBJZFxuICAgICAgKSB8fCAwO1xuICAgIHRoaXMuaXNEaXNwbGF5TW9kZSA9IHByb3BzWydpc0Rpc3BsYXlNb2RlJ10gfHwgZmFsc2U7XG5cbiAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXggPVxuICAgICAgc3RlcEluZGV4ID49IDAgJiYgIXRoaXMuaXNEaXNwbGF5TW9kZSA/IHN0ZXBJbmRleCA6IDA7XG5cbiAgICBjb25zdCBzdGF0dXNJZCA9IHByb3BzWydzdGF0dXNJZCddIHx8ICcnO1xuICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IHByb3BzWydkZWZhdWx0TGFuZ3VhZ2UnXTtcblxuICAgIGNvbnN0IGZsdXggPSAocHJvcHNbJ2ZsdXgnXSB8fCBbXSkubWFwKFxuICAgICAgKHN0ZXA6IGFueSkgPT5cbiAgICAgICAgbmV3IEFwcERhdGFTdGVwKFxuICAgICAgICAgIHN0ZXAuaWRlbnRpZmllcixcbiAgICAgICAgICBzdGVwLnR5cGUsXG4gICAgICAgICAgKHN0ZXAuc2VjdGlvbnMgfHwgW10pLm1hcChcbiAgICAgICAgICAgIChzZWN0aW9uOiBhbnkpID0+XG4gICAgICAgICAgICAgIG5ldyBBcHBEYXRhU2VjdGlvbihcbiAgICAgICAgICAgICAgICBzZWN0aW9uLmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgKHNlY3Rpb24uY29udHJvbHMgfHwgW10pLm1hcChcbiAgICAgICAgICAgICAgICAgIChjb250cm9sOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIG5ldyBBcHBEYXRhQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5maWxsVmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG4gICAgY29uc3Qgb2ZmZXJJZCA9IHByb3BzPy5maWxsRGF0YT8ubWV0YWRhdGE/Lm9mZmVySWQgfHwgJyc7XG4gICAgY29uc3QgaXNTdWJtaXR0ZWQgPSBwcm9wcz8uZmlsbERhdGE/Lm1ldGFkYXRhPy5pc1N1Ym1pdHRlZCB8fCBmYWxzZTtcblxuICAgIGNvbnN0IGZpbGxEYXRhID0gbmV3IEFwcERhdGFGaWxsKFxuICAgICAgYXBwRGF0YUlkLFxuICAgICAgYXBwbGljYXRpb25JZCxcbiAgICAgIGN1cnJlbnRTdGVwSWQsXG4gICAgICBzdGF0dXNJZCxcbiAgICAgIGRlZmF1bHRMYW5ndWFnZSxcbiAgICAgIGZsdXgsXG4gICAgICBvZmZlcklkLFxuICAgICAgaXNTdWJtaXR0ZWRcbiAgICApO1xuXG4gICAgdGhpcy5hcHBEYXRhID0gbmV3IEFwcERhdGEoe1xuICAgICAgYXBwRGF0YUlkOiBhcHBEYXRhSWQsXG4gICAgICBhcHBDb25maWd1cmF0aW9uSWQ6IGFwcGxpY2F0aW9uSWQsXG4gICAgICBmaWxsRGF0YTogZmlsbERhdGEsXG4gICAgICBpbml0Rmxvd1ZhbHVlczogcHJvcHNbJ2luaXRGbG93VmFsdWVzJ10sXG4gICAgICB3aXRoTmV4dFN0ZXA6IGZhbHNlLFxuICAgICAgYmxvY2tQcmV2aW91c1N0ZXA6IHByb3BzWydibG9ja1ByZXZpb3VzU3RlcCddID8/IGZhbHNlLFxuICAgICAgZW52OiBwcm9wc1snZW52J10sXG4gICAgfSk7XG5cbiAgICBpZiAoIXRoaXMuaXNEaXNwbGF5TW9kZSAmJiAhcHJvcHNbJ2ZpbGxEYXRhJ10pIHtcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZUFwcERhdGEoKTtcbiAgICAgIHRoaXMuY29sbGVjdG9yRm9ybS5maWxsRGF0YSA9IHRoaXMuYXBwRGF0YS5maWxsRGF0YTtcbiAgICAgIGF3YWl0IHRoaXMuY29sbGVjdG9yRm9ybS5pbml0QXN5bmMoKTtcblxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVBcHBEYXRhKCkge1xuICAgIGlmICh0aGlzLmlzRGlzcGxheU1vZGUgfHwgdGhpcy5wcm9wc1snZGVtb01vZGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgY29uc29sZS5sb2coJ1tEZW1vIE1vZGVdIFNraXBwaW5nIHNhdmVBcHBEYXRhIHJlcXVlc3QuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuYXBwbGljYXRpb25EYXRhU2VydmljZS5zYXZlQXBwKHRoaXMuYXBwRGF0YSkucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY3JlYXRpbmcgQXBwRGF0YScsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhpcy5hcHBEYXRhLmZpbGxEYXRhID0gSlNPTi5wYXJzZShkYXRhLmZpbGxEYXRhKTtcbiAgICAgICAgdGhpcy5hcHBEYXRhLmJsb2NrUHJldmlvdXNTdGVwID0gZGF0YS5ibG9ja1ByZXZpb3VzU3RlcDtcbiAgICAgICAgdGhpcy5jb2xsZWN0b3JGb3JtLmZvcm1seUNvbmZpZ1VwZGF0ZWQuZW1pdCgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvY2N1cnJlZCBkdXJpbmcgc2F2ZVN0ZXAnLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRQcmV2aW91c1N0ZXAoKSB7XG4gICAgaWYgKHRoaXMuaXNEaXNwbGF5TW9kZSB8fCB0aGlzLnByb3BzWydkZW1vTW9kZSddID09PSB0cnVlKSB7XG4gICAgICBjb25zb2xlLmxvZygnW0RlbW8gTW9kZV0gU2tpcHBpbmcgZ2V0UHJldmlvdXNTdGVwIHJlcXVlc3QuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5hcHBsaWNhdGlvbkRhdGFTZXJ2aWNlLmdldFByZXZpb3VzU3RlcCh0aGlzLmFwcERhdGEuYXBwRGF0YUlkKS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGdldHRpbmcgdGhlIHByZXZpb3VzU3RlcCcsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgICB0aGlzLmFwcERhdGEuZmlsbERhdGEgPSBKU09OLnBhcnNlKGRhdGEuZmlsbERhdGEpO1xuICAgICAgICAgIHRoaXMuYXBwRGF0YS5ibG9ja1ByZXZpb3VzU3RlcCA9IGRhdGEuYmxvY2tQcmV2aW91c1N0ZXA7XG4gICAgICAgICAgdGhpcy5jb2xsZWN0b3JGb3JtLmZvcm1seUNvbmZpZ1VwZGF0ZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgZHVyaW5nIGdldFByZXZpb3VzU3RlcCcsIGVycm9yKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUFwcERhdGFTdGVwKCkge1xuICAgIGlmICh0aGlzLmlzRGlzcGxheU1vZGUgfHwgdGhpcy5wcm9wc1snZGVtb01vZGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgY29uc29sZS5sb2coJ1tEZW1vIE1vZGVdIFNraXBwaW5nIHNhdmVBcHBEYXRhU3RlcCByZXF1ZXN0LicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgY3VycmVudCB2aXNpYmxlIHN0ZXAgYmFzZWQgb24gY3VycmVudFN0ZXBJbmRleFxuXG4gICAgY29uc3QgY3VycmVudFZpc2libGVTdGVwID0gdGhpcy5maWx0ZXJlZFZpc2libGVTdGVwc1t0aGlzLmN1cnJlbnRTdGVwSW5kZXhdO1xuXG4gICAgaWYgKCFjdXJyZW50VmlzaWJsZVN0ZXApIHtcbiAgICAgIGNvbnNvbGUud2FybignTm8gY3VycmVudCB2aXNpYmxlIHN0ZXAgZm91bmQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIHN0ZXAgaW4gZmlsbERhdGEuZmx1eCBiYXNlZCBvbiB0aGUgdmlzaWJsZSBzdGVwIGlkZW50aWZpZXJcbiAgICBsZXQgY3VycmVudFN0ZXAgPSB0aGlzLmFwcERhdGEuZmlsbERhdGE/LmZsdXguZmluZChcbiAgICAgIChzKSA9PiBzLnN0ZXBJZCA9PT0gY3VycmVudFZpc2libGVTdGVwLmlkZW50aWZpZXJcbiAgICApO1xuXG4gICAgLy8gSWYgd2UgY2FuJ3QgZmluZCBpdCBieSBpZGVudGlmaWVyLCBjcmVhdGUgaXQgb3IgdXBkYXRlIG1ldGFkYXRhXG4gICAgaWYgKCFjdXJyZW50U3RlcCAmJiB0aGlzLmFwcERhdGEuZmlsbERhdGEpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgY3VycmVudFN0ZXBJZCBpbiBtZXRhZGF0YSB0byBtYXRjaCB0aGUgY3VycmVudCB2aXNpYmxlIHN0ZXBcbiAgICAgIHRoaXMuYXBwRGF0YS5maWxsRGF0YS5tZXRhZGF0YS5jdXJyZW50U3RlcElkID1cbiAgICAgICAgY3VycmVudFZpc2libGVTdGVwLmlkZW50aWZpZXI7XG5cbiAgICAgIC8vIFRyeSB0byBmaW5kIGl0IGFnYWluIGFmdGVyIHVwZGF0aW5nIG1ldGFkYXRhXG4gICAgICBjdXJyZW50U3RlcCA9IHRoaXMuYXBwRGF0YS5maWxsRGF0YS5mbHV4LmZpbmQoXG4gICAgICAgIChzKSA9PiBzLnN0ZXBJZCA9PT0gY3VycmVudFZpc2libGVTdGVwLmlkZW50aWZpZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coXG4gICAgICAnU2F2aW5nIHN0ZXAgZGF0YSBmb3Igc3RlcDonLFxuICAgICAgY3VycmVudFZpc2libGVTdGVwLmlkZW50aWZpZXIsXG4gICAgICAnU3RlcCBkYXRhOicsXG4gICAgICBjdXJyZW50U3RlcFxuICAgICk7XG5cbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuYXBwbGljYXRpb25EYXRhU2VydmljZVxuICAgICAgICAuc2F2ZVN0ZXAoXG4gICAgICAgICAgdGhpcy5hcHBEYXRhLmFwcERhdGFJZCxcbiAgICAgICAgICBjdXJyZW50U3RlcCxcbiAgICAgICAgICB0aGlzLmFwcERhdGEuZmlsbERhdGE/Lm1ldGFkYXRhLm9mZmVySWRcbiAgICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIEFwcERhdGEnLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIClcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgdGhpcy5jb2xsZWN0b3JGb3JtLmZpbGxEYXRhID0gdGhpcy5hcHBEYXRhLmZpbGxEYXRhID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGRhdGEuZmlsbERhdGFcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuYXBwRGF0YS5ibG9ja1ByZXZpb3VzU3RlcCA9IGRhdGEuYmxvY2tQcmV2aW91c1N0ZXA7XG4gICAgICAgICAgdGhpcy5jb2xsZWN0b3JGb3JtLmZvcm1seUNvbmZpZ1VwZGF0ZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIENsZWFyIHRoZSBzYXZpbmcgYWZ0ZXIgYWN0aW9ucyBmbGFnXG4gICAgICAgIHRoaXMuY29sbGVjdG9yRm9ybS5jbGVhclNhdmluZ0FmdGVyQWN0aW9uc1N0YXRlKCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgZHVyaW5nIHNhdmVTdGVwJywgZXJyb3IpO1xuICAgICAgICAvLyBDbGVhciB0aGUgc2F2aW5nIGFmdGVyIGFjdGlvbnMgZmxhZyBvbiBlcnJvciBhcyB3ZWxsXG4gICAgICAgIHRoaXMuY29sbGVjdG9yRm9ybS5jbGVhclNhdmluZ0FmdGVyQWN0aW9uc1N0YXRlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUFwcERhdGEoc2F2ZUNoYW5nZXM6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5mb3JtLnZhbHVlO1xuXG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IHZpc2libGUgc3RlcCB0byBlbnN1cmUgd2UncmUgdXBkYXRpbmcgdGhlIHJpZ2h0IHN0ZXAgZGF0YVxuICAgIGNvbnN0IGN1cnJlbnRWaXNpYmxlU3RlcCA9IHRoaXMuZmlsdGVyZWRWaXNpYmxlU3RlcHNbdGhpcy5jdXJyZW50U3RlcEluZGV4XTtcblxuICAgIGNvbnN0IGZsdXggPSAodGhpcy5maWVsZD8ucHJvcHM/LlsnZmx1eCddIHx8IFtdKS5tYXAoXG4gICAgICAoc3RlcDogYW55KSA9PlxuICAgICAgICBuZXcgQXBwRGF0YVN0ZXAoXG4gICAgICAgICAgc3RlcC5pZGVudGlmaWVyLFxuICAgICAgICAgIHN0ZXAudHlwZSxcbiAgICAgICAgICAoc3RlcC5zZWN0aW9ucyB8fCBbXSkubWFwKFxuICAgICAgICAgICAgKHNlY3Rpb246IGFueSkgPT5cbiAgICAgICAgICAgICAgbmV3IEFwcERhdGFTZWN0aW9uKFxuICAgICAgICAgICAgICAgIHNlY3Rpb24uaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAoc2VjdGlvbi5jb250cm9scyB8fCBbXSlcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGNvbnRyb2w6IGFueSkgPT4gY29udHJvbC5pZGVudGlmaWVyICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgIC5tYXAoKGNvbnRyb2w6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZvcm1WYWx1ZXNbY29udHJvbC5pZGVudGlmaWVyXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wudHlwZSAhPT0gU3RlcENvbnRyb2xUeXBlLkRpY3Rpb25hcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsbFZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFkID0gKG46IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gYCR7cGFkKHZhbHVlLmdldERhdGUoKSl9LiR7cGFkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmdldE1vbnRoKCkgKyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9LiR7dmFsdWUuZ2V0RnVsbFllYXIoKX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsVmFsdWUgPSBmb3JtYXR0ZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsVmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nID8gU3RyaW5nKHZhbHVlKSA6IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFwcERhdGFDb250cm9sKGNvbnRyb2wuaWRlbnRpZmllciwgZmlsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsbFZhbHVlSWQgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsbFZhbHVlTmFtZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxsVmFsdWVJZHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxsVmFsdWVOYW1lczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIG11bHRpcGxlIHNlbGVjdGlvbiAoYXJyYXkgb2YgdmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxWYWx1ZUlkcyA9IHZhbHVlLm1hcCgodjogYW55KSA9PiBTdHJpbmcodi5pZCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsVmFsdWVOYW1lcyA9IHZhbHVlLm1hcCgodjogYW55KSA9PiB2Lm5hbWUgfHwgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGFsc28gc2V0IHNpbmdsZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsVmFsdWVJZCA9IFN0cmluZyh2YWx1ZVswXS5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFZhbHVlTmFtZSA9IHZhbHVlWzBdLm5hbWUgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5pZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxWYWx1ZUlkID0gU3RyaW5nKHZhbHVlLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFZhbHVlTmFtZSA9IHZhbHVlLm5hbWUgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsVmFsdWVJZCA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnlDb250cm9sRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5zcGVjaWZpY0NvbnRyb2xEYXRhIGFzIERpY3Rpb25hcnlDb250cm9sRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpY3Rpb25hcnlDb250cm9sRGF0YT8uZGljdGlvbmFyeVVVSUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sbGVjdG9yRm9ybS5kaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xEYXRhLmRpY3Rpb25hcnlVVUlEXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gZGljdGlvbmFyeT8udmFsdWVzPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHYpID0+IHYuaWQgPT0gdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFZhbHVlTmFtZSA9IHNlbGVjdGVkT3B0aW9uLm5hbWUgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYENvdWxkIG5vdCBmaW5kIGRpY3Rpb25hcnkgdmFsdWUgbmFtZSBmb3IgSUQ6ICR7dmFsdWV9IGluIGRpY3Rpb25hcnkgJHtkaWN0aW9uYXJ5Q29udHJvbERhdGEuZGljdGlvbmFyeVVVSUR9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYERpY3Rpb25hcnkgVVVJRCBub3QgZm91bmQgZm9yIGNvbnRyb2w6ICR7Y29udHJvbC5pZGVudGlmaWVyfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBcHBEYXRhQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxWYWx1ZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsVmFsdWVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxWYWx1ZU5hbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFZhbHVlSWRzXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5hcHBEYXRhLmZpbGxEYXRhKSB7XG4gICAgICB0aGlzLmFwcERhdGEuZmlsbERhdGEuZmx1eCA9IGZsdXg7XG5cbiAgICAgIC8vIEVuc3VyZSB0aGUgbWV0YWRhdGEgcmVmbGVjdHMgdGhlIGN1cnJlbnQgdmlzaWJsZSBzdGVwXG4gICAgICBpZiAoY3VycmVudFZpc2libGVTdGVwKSB7XG4gICAgICAgIHRoaXMuYXBwRGF0YS5maWxsRGF0YS5tZXRhZGF0YS5jdXJyZW50U3RlcElkID1cbiAgICAgICAgICBjdXJyZW50VmlzaWJsZVN0ZXAuaWRlbnRpZmllcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2F2ZUNoYW5nZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZUFwcERhdGFTdGVwKCk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlQnV0dG9ucyhcbiAgICBzdGVwOiBhbnksXG4gICAgc3RlcEluZGV4OiBudW1iZXIsXG4gICAgbGFzdDogYm9vbGVhbixcbiAgICBidG5EaXNhYmxlZDogYm9vbGVhblxuICApOiBhbnkge1xuICAgIGxldCBidXR0b25zOiBhbnlbXSA9IFtdO1xuICAgIGlmIChzdGVwLnByb3BzPy5bJ2J1dHRvbnMnXT8ubGVuZ3RoID4gMCkge1xuICAgICAgYnV0dG9ucyA9IHN0ZXAucHJvcHM/LlsnYnV0dG9ucyddO1xuICAgIH0gZWxzZSB7XG4gICAgICBidXR0b25zID0gdGhpcy5nZXREZWZhdWx0QnV0dG9ucyhzdGVwSW5kZXgsIGxhc3QpO1xuICAgIH1cbiAgICBidXR0b25zLmZvckVhY2goKGIpID0+IHRoaXMuc2V0dXBCdXR0b25Qcm9wZXJ0aWVzKGIsIGJ0bkRpc2FibGVkKSk7XG4gICAgaWYgKHRoaXMuYXBwRGF0YT8uZmlsbERhdGE/Lm1ldGFkYXRhPy5pc1N1Ym1pdHRlZCkge1xuICAgICAgYnV0dG9ucyA9IFtdO1xuICAgIH1cbiAgICByZXR1cm4gYnV0dG9ucztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEJ1dHRvbnMoaW5kZXg6IG51bWJlciwgbGFzdDogYm9vbGVhbik6IGFueVtdIHtcbiAgICBjb25zdCBidXR0b25zOiBhbnlbXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMuYXBwRGF0YT8uZmlsbERhdGE/Lm1ldGFkYXRhPy5pc1N1Ym1pdHRlZCA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIGJ1dHRvbnM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEaXNwbGF5TW9kZSkge1xuICAgICAgYnV0dG9ucy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ2JhY2snLFxuICAgICAgICBsYWJlbDogJ0JhY2snLFxuICAgICAgICBzdHlsZUtleTogJy5idXR0b24tYmFjaycsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGluZGV4ICE9PSAwICYmIHRoaXMuYXBwRGF0YT8uYmxvY2tQcmV2aW91c1N0ZXAgPT09IGZhbHNlKSB7XG4gICAgICAgIGJ1dHRvbnMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ2JhY2snLFxuICAgICAgICAgIGxhYmVsOiAnQmFjaycsXG4gICAgICAgICAgc3R5bGVLZXk6ICcuYnV0dG9uLWJhY2snLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghbGFzdCkge1xuICAgICAgICBidXR0b25zLnB1c2goeyB0eXBlOiAnbmV4dCcsIGxhYmVsOiAnTmV4dCcsIHN0eWxlS2V5OiAnLmJ1dHRvbi1uZXh0JyB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ1dHRvbnMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ3N1Ym1pdCcsXG4gICAgICAgICAgbGFiZWw6ICdTdWJtaXQnLFxuICAgICAgICAgIHN0eWxlS2V5OiAnLmJ1dHRvbi1zdWJtaXQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJ1dHRvbnM7XG4gIH1cblxuICBhcHBseVByb2dyZXNzQmFyU3R5bGVzKCkge1xuICAgIGNvbnN0IGRlc2lnbkNvbmZpZyA9IHRoaXMuZmllbGQucHJvcHM/LlsnZGVzaWduJ107XG5cbiAgICBpZiAoZGVzaWduQ29uZmlnKSB7XG4gICAgICBjb25zdCBwcm9ncmVzc0JhckNvbmZpZyA9IGRlc2lnbkNvbmZpZ1snLmNvbXBvbmVudC1wcm9ncmVzcy1iYXInXTtcbiAgICAgIGlmIChwcm9ncmVzc0JhckNvbmZpZykge1xuICAgICAgICB0aGlzLnByb2dyZXNzQmFyU3R5bGVzID0ge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcHJvZ3Jlc3NCYXJDb25maWcuYmFja2dyb3VuZENvbG9yIHx8ICcjZmZmZmZmJyxcbiAgICAgICAgICBib3JkZXJDb2xvcjogcHJvZ3Jlc3NCYXJDb25maWcuYm9yZGVyQ29sb3IgfHwgJyMwMDAwMDAnLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogcHJvZ3Jlc3NCYXJDb25maWcuYm9yZGVyUmFkaXVzIHx8ICc3cHgnLFxuICAgICAgICAgIGNvbG9yOiBwcm9ncmVzc0JhckNvbmZpZy5jb2xvciB8fCAnIzAwMDAwMCcsXG4gICAgICAgICAgc3RhcnRDb2xvcjogcHJvZ3Jlc3NCYXJDb25maWcuc3RhcnRDb2xvciB8fCAnIzg4ODRCRicsXG4gICAgICAgICAgZW5kQ29sb3I6IHByb2dyZXNzQmFyQ29uZmlnLmVuZENvbG9yIHx8ICcjODg4NEJGJyxcbiAgICAgICAgICBoZWlnaHQ6IHByb2dyZXNzQmFyQ29uZmlnLmhlaWdodCB8fCAnNHB4JyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXR1cEJ1dHRvblByb3BlcnRpZXMoYnV0dG9uOiBhbnksIGJ0bkRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgYnV0dG9uLnN0eWxlID0gdGhpcy5maWVsZC5wcm9wcz8uWydkZXNpZ24nXVtidXR0b24uc3R5bGVLZXldIHx8IHt9O1xuICAgIGJ1dHRvbi5kaXNhYmxlZCA9IHRoaXMucHJvcHNbJ2RlbW9Nb2RlJ10gPT09IGZhbHNlID8gYnRuRGlzYWJsZWQgOiBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGJ1dHRvbkNsaWNrKHR5cGU6IHN0cmluZywgc3RlcDogRm9ybWx5RmllbGRDb25maWcpIHtcbiAgICBpZiAoIXRoaXMuaXNOYXZpZ2F0aW9uSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5pc05hdmlnYXRpb25JblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGVBc3luYyh0eXBlLCBzdGVwKTtcbiAgICAgIHRoaXMuaXNOYXZpZ2F0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlTmV4dEFzeW5jKCkge1xuICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5maWVsZD8uZmllbGRHcm91cCFbdGhpcy5jdXJyZW50U3RlcEluZGV4XTtcbiAgICBpZiAoY3VycmVudFN0ZXApIHtcbiAgICAgIGF3YWl0IHRoaXMuYnV0dG9uQ2xpY2soJ25leHQnLCBjdXJyZW50U3RlcCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmV0cnlDbGljayhzdGVwOiBhbnkpIHtcbiAgICBpZiAoc3RlcD8uZmllbGRHcm91cD8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJldHJ5UmVjdXJzaXZlbHkoc3RlcC5maWVsZEdyb3VwKTtcbiAgICB9XG4gIH1cblxuICBnZXRQcm9ncmVzc0JhckZpbGwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMucHJvZ3Jlc3NCYXJTdHlsZXMuc3RhcnRDb2xvciB8fCAnIzg4ODRCRic7XG4gICAgY29uc3QgZW5kID0gdGhpcy5wcm9ncmVzc0JhclN0eWxlcy5lbmRDb2xvciB8fCAnIzg4ODRCRic7XG4gICAgcmV0dXJuIGBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICR7c3RhcnR9LCAke2VuZH0pYDtcbiAgfVxuXG4gIHJldHJ5UmVjdXJzaXZlbHkoZmllbGRHcm91cDogYW55KSB7XG4gICAgaWYgKGZpZWxkR3JvdXAgJiYgZmllbGRHcm91cC5sZW5ndGggPiAwKSB7XG4gICAgICBmaWVsZEdyb3VwLmZvckVhY2goKGY6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBmLnByb3BzPy5bJ2NvbXBvbmVudCddO1xuICAgICAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC5yZXRyeSkge1xuICAgICAgICAgIGNvbXBvbmVudC5yZXRyeSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50LnJldHJ5QXN5bmMpIHtcbiAgICAgICAgICBjb21wb25lbnQucmV0cnlBc3luYygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmV0cnlSZWN1cnNpdmVseShmLmZpZWxkR3JvdXApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbmF2aWdhdGVBc3luYyh0eXBlOiBzdHJpbmcsIHN0ZXA6IEZvcm1seUZpZWxkQ29uZmlnKSB7XG4gICAgdGhpcy5pc05hdmlnYXRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5maWVsZD8uZmllbGRHcm91cCB8fCBbXTtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSBzdGVwcy5pbmRleE9mKHN0ZXApO1xuXG4gICAgaWYgKGN1cnJlbnRJbmRleCA8IDApIHJldHVybjtcblxuICAgIGNvbnN0IHByZXZJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG5cbiAgICBpZiAoXG4gICAgICAodHlwZSA9PT0gJ25leHQnIHx8IHR5cGUgPT09ICdzdWJtaXQnKSAmJlxuICAgICAgY3VycmVudEluZGV4IDw9IHN0ZXBzLmxlbmd0aCAtIDFcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnByb3BzWydkZW1vTW9kZSddID09PSBmYWxzZSAmJiAhdGhpcy52YWxpZGF0ZUZvcm0oc3RlcCkpIHtcbiAgICAgICAgdGhpcy5pc05hdmlnYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuc2hvd1N0ZXBzKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGaWVsZEdyb3VwID0gc3RlcHNbY3VycmVudEluZGV4XT8uZmllbGRHcm91cDtcbiAgICAgICAgY29uc3QgY2FuQWR2YW5jZSA9IHRoaXMuY2FuQWR2YW5jZVJlY3Vyc2l2ZWx5KGN1cnJlbnRGaWVsZEdyb3VwKTtcbiAgICAgICAgaWYgKCFjYW5BZHZhbmNlKSB7XG4gICAgICAgICAgdGhpcy5pc05hdmlnYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUFwcERhdGEodHJ1ZSk7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCArIDE7XG4gICAgICAgIGNvbnN0IGhhc0FjdGlvblN0ZXBzID0gYXdhaXQgdGhpcy5maWVsZD8ucHJvcHM/LltcbiAgICAgICAgICAnb25TZWxlY3RlZFBhZ2VDaGFuZ2luZydcbiAgICAgICAgXSh7XG4gICAgICAgICAgZnJvbTogdGhpcy5jdXJyZW50U3RlcEluZGV4LFxuICAgICAgICAgIHRvOiBuZXh0SW5kZXgsXG4gICAgICAgICAgY3VycmVudDogdGhpcy5jdXJyZW50U3RlcEluZGV4LFxuICAgICAgICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLmNoZWNrSWZGbG93SXNGaW5pc2hlZCgpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc29sZS5sb2coJ2hhc0FjdGlvblN0ZXBzJywgaGFzQWN0aW9uU3RlcHMpO1xuXG4gICAgICAgIGlmIChoYXNBY3Rpb25TdGVwcykge1xuICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlQXBwRGF0YSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc0Zsb3dGaW5pc2hlZCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXBJbmRleCA9IG5leHRJbmRleDtcbiAgICAgICAgICB0aGlzLmxvYWRlZFN0ZXBzW25leHRJbmRleF0gPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZmllbGQ/LnByb3BzPy5bJ29uU2VsZWN0ZWRQYWdlQ2hhbmdlZCddKHRoaXMuY3VycmVudFN0ZXBJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBhd2FpdCB0aGlzLnRyaWdnZXJPblBhZ2VTZWxlY3RlZEZvckluZGV4KHRoaXMuY3VycmVudFN0ZXBJbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3RlcD8uZmllbGRHcm91cD8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgY2FuQWR2YW5jZSA9IHRoaXMuY2FuQWR2YW5jZVJlY3Vyc2l2ZWx5KHN0ZXAuZmllbGRHcm91cCk7XG4gICAgICAgICAgaWYgKCFjYW5BZHZhbmNlKSB7XG4gICAgICAgICAgICB0aGlzLmlzTmF2aWdhdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUFuZEdvTmV4dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlQW5kR29OZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdiYWNrJyAmJiBjdXJyZW50SW5kZXggPiAwKSB7XG4gICAgICBhd2FpdCB0aGlzLmdldFByZXZpb3VzU3RlcCgpO1xuICAgICAgaWYgKCF0aGlzLnNob3dTdGVwcykge1xuICAgICAgICBjb25zdCBoYXNBY3Rpb25TdGVwcyA9IGF3YWl0IHRoaXMuZmllbGQ/LnByb3BzPy5bXG4gICAgICAgICAgJ29uU2VsZWN0ZWRQYWdlQ2hhbmdpbmcnXG4gICAgICAgIF0oe1xuICAgICAgICAgIGZyb206IHRoaXMuY3VycmVudFN0ZXBJbmRleCxcbiAgICAgICAgICB0bzogcHJldkluZGV4LFxuICAgICAgICAgIGN1cnJlbnQ6IHRoaXMuY3VycmVudFN0ZXBJbmRleCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGhhc0FjdGlvblN0ZXBzKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVBcHBEYXRhKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50U3RlcEluZGV4ID0gcHJldkluZGV4O1xuICAgICAgICB0aGlzLmxvYWRlZFN0ZXBzW3ByZXZJbmRleF0gPSB0cnVlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0YXJnZXRJbmRleCA9IHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4IC0gMTtcbiAgICAgICAgY29uc3QgaGFzQWN0aW9uU3RlcHMgPSBhd2FpdCB0aGlzLmZpZWxkPy5wcm9wcz8uW1xuICAgICAgICAgICdvblNlbGVjdGVkUGFnZUNoYW5naW5nJ1xuICAgICAgICBdKHtcbiAgICAgICAgICBmcm9tOiB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICB0bzogdGFyZ2V0SW5kZXgsXG4gICAgICAgICAgY3VycmVudDogdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChoYXNBY3Rpb25TdGVwcykge1xuICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlQXBwRGF0YSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RlcHBlci5wcmV2aW91cygpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXggPSB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5pc05hdmlnYXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUFuZEdvTmV4dCgpIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUFwcERhdGEodHJ1ZSk7XG4gICAgdGhpcy5nb05leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ29OZXh0KCkge1xuICAgIGNvbnN0IGN1cnJlbnRJZHggPSB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleDtcbiAgICBjb25zdCBuZXh0SWR4ID0gY3VycmVudElkeCArIDE7XG5cbiAgICBjb25zdCBoYXNBY3Rpb25TdGVwcyA9IGF3YWl0IHRoaXMuZmllbGQ/LnByb3BzPy5bJ29uU2VsZWN0ZWRQYWdlQ2hhbmdpbmcnXSh7XG4gICAgICBmcm9tOiBjdXJyZW50SWR4LFxuICAgICAgdG86IG5leHRJZHgsXG4gICAgICBjdXJyZW50OiBjdXJyZW50SWR4LFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHRoaXMuY2hlY2tJZkZsb3dJc0ZpbmlzaGVkKCksXG4gICAgfSk7XG5cbiAgICBpZiAoaGFzQWN0aW9uU3RlcHMpIHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQXBwRGF0YSh0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICAgIHRoaXMuY3VycmVudFN0ZXBJbmRleCA9IHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4O1xuICAgIHRoaXMuZmllbGQ/LnByb3BzPy5bJ29uU2VsZWN0ZWRQYWdlQ2hhbmdlZCddKHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4KTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZGbG93SXNGaW5pc2hlZCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnN0ZXBwZXIgJiZcbiAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID09PSB0aGlzLmZpZWxkPy5maWVsZEdyb3VwPy5sZW5ndGghIC0gMVxuICAgICkge1xuICAgICAgdGhpcy5pc0Zsb3dGaW5pc2hlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRTdGVwSW5kZXggPT09IHRoaXMuZmllbGQ/LmZpZWxkR3JvdXA/Lmxlbmd0aCEgLSAxKSB7XG4gICAgICB0aGlzLmlzRmxvd0ZpbmlzaGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNGbG93RmluaXNoZWQpIHtcbiAgICAgIGlmICh0aGlzLmZpbmFsU3RlcEZpZWxkQ29uZmlnKSB7XG4gICAgICAgIHRoaXMuc2hvd0ZpbmFsU3RlcCA9IHRydWU7XG4gICAgICB9XG4gICAgICB0aGlzLmZpZWxkPy5wcm9wcz8uWydjb21wbGV0aW9uRXZlbnQnXSgpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlRm9ybShzdGVwOiBGb3JtbHlGaWVsZENvbmZpZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByb3BzWydkZW1vTW9kZSddID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgIGxldCBmaXJzdEludmFsaWRGaWVsZEtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAoc3RlcC5maWVsZEdyb3VwKSB7XG4gICAgICBzdGVwLmZpZWxkR3JvdXAuZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICBpZiAoZi5maWVsZEdyb3VwKSB7XG4gICAgICAgICAgZi5maWVsZEdyb3VwLmZvckVhY2goKGM6IGFueSkgPT4ge1xuICAgICAgICAgICAgYy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICBjLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIGlmIChjLmZvcm1Db250cm9sLmVycm9ycyAmJiAhYy5faGlkZSkge1xuICAgICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgaW52YWxpZCBmaWVsZCBrZXkgZm9yIHNjcm9sbGluZ1xuICAgICAgICAgICAgICBpZiAoIWZpcnN0SW52YWxpZEZpZWxkS2V5ICYmIGMua2V5KSB7XG4gICAgICAgICAgICAgICAgZmlyc3RJbnZhbGlkRmllbGRLZXkgPSBjLmtleTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBJZiB2YWxpZGF0aW9uIGZhaWxlZCBhbmQgd2UgaGF2ZSBhIGZpZWxkIHRvIHNjcm9sbCB0bywgdXNlIHRoZSBzY3JvbGwgc2VydmljZVxuICAgIGlmICghaXNWYWxpZCAmJiBmaXJzdEludmFsaWRGaWVsZEtleSkge1xuICAgICAgdGhpcy5zY3JvbGxUb0Vycm9yU2VydmljZS5zY3JvbGxUb0ZpZWxkKGZpcnN0SW52YWxpZEZpZWxkS2V5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuXG4gIGlzVmFsaWQoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpZWxkLmtleSkge1xuICAgICAgcmV0dXJuIGZpZWxkLmZvcm1Db250cm9sPy52YWxpZCA/PyBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgID8gZmllbGQuZmllbGRHcm91cC5ldmVyeSgoZikgPT4gdGhpcy5pc1ZhbGlkKGYpKVxuICAgICAgOiB0cnVlO1xuICB9XG5cbiAgaXNDdXN0b21TdGVwKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGVwVHlwZSA9IHRoaXMuZmllbGQuZmllbGRHcm91cCFbaW5kZXhdPy5wcm9wcz8uWydmbHV4VHlwZSddO1xuICAgIHJldHVybiBzdGVwVHlwZSA9PT0gRmx1eFR5cGUuQ3VzdG9tO1xuICB9XG5cbiAgYXN5bmMgb25TdGVwQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuc2VsZWN0ZWRJbmRleCkge1xuICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyT25QYWdlU2VsZWN0ZWRGb3JJbmRleChldmVudC5zZWxlY3RlZEluZGV4KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB0cmlnZ2VyT25QYWdlU2VsZWN0ZWRGb3JJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgZmcgPSB0aGlzLmZpZWxkLmZpZWxkR3JvdXAhW2luZGV4XT8uZmllbGRHcm91cDtcbiAgICB0aGlzLnRyaWdnZXJPblBhZ2VTZWxlY3RlZFJlY3Vyc2l2ZWx5KGZnKTtcbiAgfVxuXG4gIGFzeW5jIHRyaWdnZXJPblBhZ2VTZWxlY3RlZFJlY3Vyc2l2ZWx5KGZnOiBhbnkpIHtcbiAgICBpZiAoZmcgJiYgZmcubGVuZ3RoID4gMCkge1xuICAgICAgZmcuZm9yRWFjaChhc3luYyAoZjogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGYucHJvcHM/LlsnY29tcG9uZW50J107XG4gICAgICAgIGlmIChjb21wb25lbnQ/Lm9uUGFnZVNlbGVjdGVkQXN5bmMpIHtcbiAgICAgICAgICBhd2FpdCBjb21wb25lbnQ/Lm9uUGFnZVNlbGVjdGVkQXN5bmMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcG9uZW50Py5vblBhZ2VTZWxlY3RlZCkge1xuICAgICAgICAgIGNvbXBvbmVudD8ub25QYWdlU2VsZWN0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRyaWdnZXJPblBhZ2VTZWxlY3RlZFJlY3Vyc2l2ZWx5KGYuZmllbGRHcm91cCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjYW5BZHZhbmNlUmVjdXJzaXZlbHkoZmc6IGFueSk6IGJvb2xlYW4ge1xuICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgbGV0IGZpcnN0SW52YWxpZEZpZWxkS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIGlmIChmZyAmJiBmZy5sZW5ndGggPiAwKSB7XG4gICAgICBmZy5mb3JFYWNoKGFzeW5jIChmOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IGlubmVyUmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gZi5wcm9wcz8uWydjb21wb25lbnQnXTtcbiAgICAgICAgaWYgKGNvbXBvbmVudD8uY2FuQWR2YW5jZSkge1xuICAgICAgICAgIGlubmVyUmVzdWx0ID0gY29tcG9uZW50Py5jYW5BZHZhbmNlKCk7XG4gICAgICAgICAgaWYgKGlubmVyUmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIGZpZWxkIGtleSBmb3Igc2Nyb2xsaW5nXG4gICAgICAgICAgICBpZiAoIWZpcnN0SW52YWxpZEZpZWxkS2V5ICYmIGYua2V5KSB7XG4gICAgICAgICAgICAgIGZpcnN0SW52YWxpZEZpZWxkS2V5ID0gZi5rZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlubmVyUmVzdWx0ID0gdGhpcy5jYW5BZHZhbmNlUmVjdXJzaXZlbHkoZi5maWVsZEdyb3VwKTtcbiAgICAgICAgaWYgKGlubmVyUmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIElmIHZhbGlkYXRpb24gZmFpbGVkIGFuZCB3ZSBoYXZlIGEgZmllbGQgdG8gc2Nyb2xsIHRvLCB1c2UgdGhlIHNjcm9sbCBzZXJ2aWNlXG4gICAgaWYgKCF2YWxpZCAmJiBmaXJzdEludmFsaWRGaWVsZEtleSkge1xuICAgICAgdGhpcy5zY3JvbGxUb0Vycm9yU2VydmljZS5zY3JvbGxUb0ZpZWxkKGZpcnN0SW52YWxpZEZpZWxkS2V5KTtcbiAgICB9IGVsc2UgaWYgKCF2YWxpZCkge1xuICAgICAgLy8gRmFsbGJhY2s6IHRyeSB0byBzY3JvbGwgdG8gZmlyc3QgZXJyb3IgdXNpbmcgdGhlIGNvbGxlY3RvciBmb3JtJ3MgbWV0aG9kXG4gICAgICB0aGlzLmNvbGxlY3RvckZvcm0uc2Nyb2xsVG9GaXJzdFZhbGlkYXRpb25FcnJvcigpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIGdldENvbXBvbmVudHNXaXRoRGVmYXVsdExhYmVscygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgW0ZsdXhUeXBlLkt5Y106ICdLeWMnLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJzaG93U3RlcHM7IGVsc2Ugc2luZ2xlU3RlcFRlbXBsYXRlXCI+XG4gIDxkaXYgW25nU3R5bGVdPVwiY29uY2F0ZW5hdGVkRm9ybVN0eWxlXCI+XG4gICAgPGZvcm1seS1maWVsZFxuICAgICAgKm5nSWY9XCJzaG93RmluYWxTdGVwXCJcbiAgICAgIFtmaWVsZF09XCJmaW5hbFN0ZXBGaWVsZENvbmZpZ1wiXG4gICAgPjwvZm9ybWx5LWZpZWxkPlxuICA8L2Rpdj5cblxuICA8bWF0LWhvcml6b250YWwtc3RlcHBlclxuICAgICNzdGVwcGVyXG4gICAgKm5nSWY9XCIhc2hvd0ZpbmFsU3RlcFwiXG4gICAgW2xpbmVhcl09XCJ0cnVlXCJcbiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU3RlcENoYW5nZSgkZXZlbnQpXCJcbiAgICBbbmdTdHlsZV09XCJjb25jYXRlbmF0ZWRGb3JtU3R5bGVcIlxuICA+XG4gICAgPG1hdC1zdGVwICpuZ0Zvcj1cImxldCBzdGVwIG9mIGZpZWxkLmZpZWxkR3JvdXA7IGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsICpuZ0lmPVwic2hvd1N0ZXBzTGFiZWxzXCI+XG4gICAgICAgIHt7IHN0ZXAucHJvcHM/LmxhYmVsIH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb24gPT0gJ3RvcCdcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25zQ29udGFpbmVyXCJcbiAgICAgIC8+XG5cbiAgICAgIDxoMyBbbmdTdHlsZV09XCJmaWVsZC5wcm9wcz8uWydkZXNpZ24nXVsnLmZvbnQtaGVhZGluZy0zJ10gfHwge31cIj5cbiAgICAgICAge3sgc3RlcC5wcm9wcz8uZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvaDM+XG4gICAgICA8Zm9ybWx5LWZpZWxkIFtmaWVsZF09XCJzdGVwXCI+PC9mb3JtbHktZmllbGQ+XG5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJidXR0b25zVmVydGljYWxQb3NpdGlvbiA9PSAnYm90dG9tJ1wiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbnNDb250YWluZXJcIlxuICAgICAgLz5cbiAgICA8L21hdC1zdGVwPlxuICAgIDwhLS0gPG5nLXRlbXBsYXRlICpuZ0lmPVwiIXNob3dTdGVwc0NvdW50ZXJcIiBtYXRTdGVwcGVySWNvbj1cIm51bWJlclwiPlxuICAgICAgPG1hdC1pY29uPnJhZGlvX2J1dHRvbl9jaGVja2VkPC9tYXQtaWNvbj5cbiAgICA8L25nLXRlbXBsYXRlPiAtLT5cbiAgPC9tYXQtaG9yaXpvbnRhbC1zdGVwcGVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlU3RlcFRlbXBsYXRlPlxuICA8ZGl2IFtuZ1N0eWxlXT1cImNvbmNhdGVuYXRlZEZvcm1TdHlsZVwiPlxuICAgIDxmb3JtbHktZmllbGRcbiAgICAgICpuZ0lmPVwic2hvd0ZpbmFsU3RlcFwiXG4gICAgICBbZmllbGRdPVwiZmluYWxTdGVwRmllbGRDb25maWdcIlxuICAgID48L2Zvcm1seS1maWVsZD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNpbmdsZS1zdGVwLWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCIhc2hvd0ZpbmFsU3RlcFwiXG4gICAgW25nU3R5bGVdPVwiY29uY2F0ZW5hdGVkRm9ybVN0eWxlXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtYmFyLXdyYXBwZXJcIlxuICAgICAgKm5nSWY9XCJzaG93UHJvZ3Jlc3NCYXJcIlxuICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAnYm9yZGVyLXJhZGl1cyc6IHByb2dyZXNzQmFyU3R5bGVzLmJvcmRlclJhZGl1cyxcbiAgICAgICAgIGhlaWdodDogcHJvZ3Jlc3NCYXJTdHlsZXMuaGVpZ2h0LFxuICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtYmFyLWZpbGxcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgd2lkdGg6ICgoY3VycmVudFN0ZXBJbmRleCArIDEpIC8gdG90YWxTdGVwc0NvdW50KSAqIDEwMCArICclJyxcbiAgICAgICAgICBiYWNrZ3JvdW5kOiBnZXRQcm9ncmVzc0JhckZpbGwoKSxcbiAgICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xuICAgICAgICB9XCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtc3RlcC1oZWFkZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzaW5nbGUtc3RlcC1pbmRpY2F0b3JcIlxuICAgICAgICAqbmdJZj1cInNob3dTdGVwc0NvdW50ZXI7XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwLWN1cnJlbnRcIj57eyBjdXJyZW50U3RlcEluZGV4ICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwLXNlcGFyYXRvclwiPi88L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcC10b3RhbFwiPnt7IHRvdGFsU3RlcHNDb3VudCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGgxICpuZ0lmPVwic2hvd1N0ZXBzTGFiZWxzXCIgY2xhc3M9XCJzaW5nbGUtc3RlcC1sYWJlbFwiICBbbmdTdHlsZV09XCJmaWVsZC5wcm9wcz8uWydkZXNpZ24nXVsnLmZvbnQtaGVhZGluZy0xJ10gfHwge31cIj5cbiAgICAgICAge3sgZmllbGQuZmllbGRHcm91cCFbY3VycmVudFN0ZXBJbmRleF0hLnByb3BzIS5sYWJlbCB9fVxuICAgICAgPC9oMT5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb24gPT0gJ3RvcCdcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uc0NvbnRhaW5lclwiXG4gICAgLz5cblxuICAgIDxoMyBbbmdTdHlsZV09XCJmaWVsZC5wcm9wcz8uWydkZXNpZ24nXVsnLmZvbnQtaGVhZGluZy0zJ10gfHwge31cIj5cbiAgICAgIHt7IGZpZWxkIS5maWVsZEdyb3VwIVtjdXJyZW50U3RlcEluZGV4XSEucHJvcHMhLmRlc2NyaXB0aW9uIH19XG4gICAgPC9oMz5cbiAgICA8Zm9ybWx5LWZpZWxkXG4gICAgICAqbmdJZj1cImxvYWRlZFN0ZXBzW2N1cnJlbnRTdGVwSW5kZXhdXCJcbiAgICAgIFtmaWVsZF09XCJmaWVsZCEuZmllbGRHcm91cCFbY3VycmVudFN0ZXBJbmRleF1cIlxuICAgID48L2Zvcm1seS1maWVsZD5cblxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb24gPT0gJ2JvdHRvbSdcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uc0NvbnRhaW5lclwiXG4gICAgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J1dHRvbnNDb250YWluZXI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgYnV0dG9uc1RlbXBsYXRlO1xuICAgICAgY29udGV4dDoge1xuICAgICAgICBpbmRleDogY3VycmVudFN0ZXBJbmRleCxcbiAgICAgICAgc3RlcDogZmllbGQhLmZpZWxkR3JvdXAhW2N1cnJlbnRTdGVwSW5kZXhdXG4gICAgICB9XG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zVGVtcGxhdGUgbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtc3RlcD1cInN0ZXBcIj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiIWlzRmxvd0ZpbmlzaGVkXCJcbiAgICBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyXCJcbiAgICBbbmdTdHlsZV09XCJmaWVsZC5wcm9wcz8uWydkZXNpZ24nXVsnLmJ1dHRvbnMtY29udGFpbmVyJ10gfHwge31cIlxuICA+XG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gKm5nSWY9XCJpc0RlYnVnXCIgKGNsaWNrKT1cInJldHJ5Q2xpY2soc3RlcClcIj5cbiAgICAgIERlYnVnIFJldHJ5XG4gICAgPC9idXR0b24+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGJ1dHRvbnNHcm91cHNbaW5kZXhdXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICBbY29sb3JdPVwiYnV0dG9uLmNvbG9yIHx8ICdwcmltYXJ5J1wiXG4gICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlID09PSAnc3VibWl0JyA/ICdzdWJtaXQnIDogJ2J1dHRvbidcIlxuICAgICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2soYnV0dG9uLnR5cGUsIHN0ZXApXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbi5kaXNhYmxlZCB8fCBpc1NhdmluZ1wiXG4gICAgICAgIFtuZ1N0eWxlXT1cImJ1dHRvbi5zdHlsZVwiXG4gICAgICA+XG4gICAgICAgIHt7IGJ1dHRvbi5sYWJlbCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAqbmdJZj1cImlzTmF2aWdhdGluZyB8fCBpc1NhdmluZ1wiIGNsYXNzPVwibG9hZGluZy1zcGlubmVyXCI+XG4gICAgICA8bWF0LXNwaW5uZXIgW2RpYW1ldGVyXT1cIjMyXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiAqbmdJZj1cImlzRGVidWdcIiAoY2xpY2spPVwiYnV0dG9uQ2xpY2soJ25leHQnLCBzdGVwKVwiPlxuICAgICAgRGVidWcgTmV4dFxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=