<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>NumPEx</provider_name><provider_url>https://numpex.org/fr/</provider_url><title>Groupe de travail sur l'acc&#xE9;l&#xE9;rateur - NumPEx</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="WK52KdhGCy"&gt;&lt;a href="https://numpex.org/fr/groupe-de-travail-sur-laccelerateur/"&gt;Groupe de travail sur l&rsquo;acc&#xE9;l&#xE9;rateur&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://numpex.org/fr/groupe-de-travail-sur-laccelerateur/embed/#?secret=WK52KdhGCy" width="600" height="338" title="&#xAB;&#xA0;Groupe de travail sur l&rsquo;acc&#xE9;l&#xE9;rateur&#xA0;&#xBB; &#x2014; NumPEx" data-secret="WK52KdhGCy" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script&gt;
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=https://numpex.org/wp-includes/js/wp-embed.min.js
&lt;/script&gt;
</html><thumbnail_url>https://numpex.org/wp-content/uploads/sites/6/2023/05/Wallpaper_for_a_science_research_on_super_computing_performance_03-1920px-web.jpg</thumbnail_url><thumbnail_width>1920</thumbnail_width><thumbnail_height>1076</thumbnail_height><description>[vc_row row_height_percent=&#xA0;&#xBB;0&Prime; overlay_alpha=&#xA0;&#xBB;50&Prime; gutter_size=&#xA0;&#xBB;3&Prime; column_width_percent=&#xA0;&#xBB;100&Prime; shift_y=&#xA0;&#xBB;0&Prime; z_index=&#xA0;&#xBB;0&Prime; sticky=&#xA0;&#xBB;yes&#xA0;&#xBB; content_parallax=&#xA0;&#xBB;0&Prime; uncode_shortcode_id=&#xA0;&#xBB;165842&Prime; css=&#xA0;&#xBB;.vc_custom_1785924495010{margin-top: 1% !important;}&#xA0;&#xBB;][vc_column width=&#xA0;&#xBB;1/1&Prime;][vc_raw_html]PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBOdW1QRXgg4oCUIE1lbnUgZGUgc2VjdGlvbnMgc3RpY2t5IOKAlCB2LjYuNAogIE5hb3MgQWdlbmN5IMK3IDIwMjYtMDktMTAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKPHN0eWxlPgogIDpyb290eyAtLW5weC10b3A6IDYwcHg7IH0gLyogaGF1dGV1ciBkdSBoZWFkZXIgVW5jb2RlIHN0aWNreSAqLwogIC5ucHgtc3VibmF2ewogICAgYmFja2dyb3VuZDogI0UwOTkwMDsgLyogb3JhbmdlIGQnYWNjZW50dWF0aW9uIE51bVBFeCAqLwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA4KTsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICB3aWR0aDogMTAwJTsKICAgIHotaW5kZXg6IDQwOwogIH0KICAubnB4LXN1Ym5hdltoaWRkZW5deyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KICAubnB4LXN1Ym5hdi5ucHgtc3R1Y2t7IGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHg7IH0KICAubnB4LXN1Ym5hdi5ucHgtc3R1Y2t7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IHZhcigtLW5weC10b3ApOwogICAgbGVmdDogMDsgcmlnaHQ6IDA7CiAgfQogIC5ucHgtc3VibmF2X19pbm5lcnsKICAgIC8qIHYuNi40IDogbWV0cmlxdWVzIHBpbG90ZWVzIHBhciB2YXJpYWJsZXMuIExlcyB2YWxldXJzIGRlIHJlcGxpCiAgICAgICBTT05UIGNlbGxlcyBkZSBsYSB2LjYuMiA6IHNhbnMgSlMsIHJlbmR1IGlkZW50aXF1ZS4gKi8KICAgIG1heC13aWR0aDogMTE0MHB4OwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBwYWRkaW5nOiAwIDI0cHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgICBnYXA6IDAgdmFyKC0tbnB4LWdhcCwgMTBweCk7CiAgICBtaW4taGVpZ2h0OiA0NnB4OwogICAgcGFkZGluZy10b3A6IDZweDsKICAgIHBhZGRpbmctYm90dG9tOiA2cHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1ucHgtZnMsIDExcHgpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1ucHgtbHMsIC4xMmVtKTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lOwogICAgLyogZm9udC1mYW1pbHk6ICdQb3BwaW5zJywgc3lzdGVtLXVpLCBzYW5zLXNlcmlmOyAqLwogIH0KICAubnB4LXN1Ym5hdl9faW5uZXI6Oi13ZWJraXQtc2Nyb2xsYmFyeyBkaXNwbGF5OiBub25lOyB9CiAgLyogU3DDqWNpZmljaXTDqSByZW5mb3Jjw6llICsgIWltcG9ydGFudCA6IG5ldXRyYWxpc2UgbGVzIGNvdWxldXJzIGRlIGxpZW5zIGR1IHRow6htZSBVbmNvZGUgKG9yYW5nZSBhdSBzdXJ2b2wvY2xpYykgKi8KICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYSwKICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYTp2aXNpdGVkewogICAgY29sb3I6IHJnYmEoMjU1LDI1MCwyNDMsLjg4KSAhaW1wb3J0YW50OyAvKiBibGFuYyBjYXNzw6kgKi8KICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogOHB4IHZhcigtLW5weC1weCwgMTRweCk7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIHRyYW5zaXRpb246IGNvbG9yIC4xOHMsIGJhY2tncm91bmQtY29sb3IgLjE4czsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7ICAvKiB2LjYuNCA6IHVuIGxpYmVsbGUgbmUgc2UgY291cGUgamFtYWlzICovCiAgICBmbGV4OiAwIDAgYXV0bzsgICAgICAgLyogdi42LjQgOiBsZXMgcGFzdGlsbGVzIG5lIHNlIGNvbXByaW1lbnQgcGFzICovCiAgfQogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmhvdmVyLAogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmZvY3VzLAogIG5hdi5ucHgtc3VibmF2IC5ucHgtc3VibmF2X19pbm5lciBhOmFjdGl2ZXsKICAgIGNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC4xMik7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICB9CiAgbmF2Lm5weC1zdWJuYXYgLm5weC1zdWJuYXZfX2lubmVyIGEubnB4LWFjdGl2ZSwKICBuYXYubnB4LXN1Ym5hdiAubnB4LXN1Ym5hdl9faW5uZXIgYS5ucHgtYWN0aXZlOmhvdmVyewogICAgY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICNBODZGMDA7IC8qIG9yYW5nZSBmb25jw6ksIGFwbGF0IHNpbXBsZSAqLwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICB9Cjwvc3R5bGU+Cgo8bmF2IGNsYXNzPSJucHgtc3VibmF2IiBhcmlhLWxhYmVsPSJQYWdlIHNlY3Rpb25zIiBoaWRkZW4+CiAgPGRpdiBjbGFzcz0ibnB4LXN1Ym5hdl9faW5uZXIiPjwvZGl2Pgo8L25hdj4KCjxzY3JpcHQ+CihmdW5jdGlvbigpewogICd1c2Ugc3RyaWN0JzsKCiAgLyogPT09PT09PT09PT09PT09PT09PT0gQ09ORklHIFNJVEUgPT09PT09PT09PT09PT09PT09PT0KICAgICBTZXVsZSB6b25lIMOgIGFkYXB0ZXIgcG91ciByw6l1dGlsaXNlciBsZSBibG9jIGFpbGxldXJzLiAqLwogIHZhciBQUkVGSVggPSAnbmF2LSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByw6lmaXhlIGRlcyBSb3cgSUQgw6AgZMOpdGVjdGVyICovCiAgdmFyIFNUUklQICA9IFsvLShlbnxmcikkL2ksIC8tZXhhLVthLXowLTldKyQvaV07ICAgLyogc3VmZml4ZXMgZCd1bmljaXTDqSDDoCBpZ25vcmVyICAqLwoKICAvKiBSZXBsaSBwb3VyIGxlcyBwYWdlcyBQQVMgRU5DT1JFIE1JR1LDiUVTIHZlcnMgbGUgcHLDqWZpeGUgbmF2LQogICAgICh0eXBpcXVlbWVudCBsZXMgdHJhZHVjdGlvbnMgV1BNTCBkb250IGxlcyBSb3cgSUQgbidvbnQgcGFzIMOpdMOpCiAgICAgcmVub21tw6lzKS4gVXRpbGlzw6kgVU5JUVVFTUVOVCBzaSBsYSBwYWdlIG5lIGNvbnRpZW50IGF1Y3VuZSByb3cKICAgICDCqyBuYXYtIMK7LiBSZXByZW5kIGxlcyBjbMOpcyBkZSBsYSB2LjUgOiB1bmUgcm93IG5vbW3DqWUKICAgICDCqyBjb25zb3J0aXVtLWV4YS1tYS1lbiDCuyBvdSBzaW1wbGVtZW50IMKrIGNvbnNvcnRpdW0gwrsgZXN0CiAgICAgcmV0cm91dsOpZS4gTGlzdGUgZmVybcOpZSA9IGF1Y3VuIHJpc3F1ZSBkZSBmYXV4IHBvc2l0aWYuICovCiAgdmFyIExFR0FDWV9LRVlTID0gWwogICAgJ292ZXJ2aWV3JywgJ2NvbnNvcnRpdW0nLCAncmVzdWx0cycsICdtZXRyaWNzJywgJ3NvZnR3YXJlJywKICAgICduZXdzJywgJ2V2ZW50cycsICdhZ2VuZGEnLCAndGVhbScsICdjb250YWN0JwogIF07CgogIHZhciBMQUJFTFMgPSB7CiAgICAvKiBMaWJlbGzDqXMgcHLDqWbDqXLDqXMgcGFyIGNsw6kuIFRvdXRlIGNsw6kgYWJzZW50ZSBlc3QgYWZmaWNow6llCiAgICAgICBjYXBpdGFsaXPDqWUgdGVsbGUgcXVlbGxlIChuYXYtam9pbi11cyAtPiDCqyBKb2luIFVzIMK7KS4gKi8KICAgIGVuOiB7CiAgICAgICdjb25zb3J0aXVtJzogJ0NvbnNvcnRpdW0gJiBXb3JrcGFja2FnZXMnLAogICAgICAncmVzdWx0cyc6ICAgICdSZXN1bHRzICYgSW1wYWN0JywKICAgICAgJ21ldHJpY3MnOiAgICAnUHJvamVjdCBNZXRyaWNzJywKICAgICAgJ3RlYW0nOiAgICAgICAnVGhlIFRlYW0nCiAgICB9LAogICAgZnI6IHsKICAgICAgJ292ZXJ2aWV3JzogICAnUHLDqXNlbnRhdGlvbicsCiAgICAgICdjb25zb3J0aXVtJzogJ0NvbnNvcnRpdW0gZXQgbG90cyBkZSB0cmF2YWlsJywKICAgICAgJ3Jlc3VsdHMnOiAgICAnUsOpc3VsdGF0cyBldCBpbXBhY3QnLAogICAgICAnbWV0cmljcyc6ICAgICdDaGlmZnJlcyBjbMOpcycsCiAgICAgICdzb2Z0d2FyZSc6ICAgJ0xvZ2ljaWVscycsCiAgICAgICduZXdzJzogICAgICAgJ0FjdHVhbGl0w6lzJywKICAgICAgJ2V2ZW50cyc6ICAgICAnw4l2w6huZW1lbnRzJywKICAgICAgJ3RlYW0nOiAgICAgICAnTOKAmcOpcXVpcGUnCiAgICB9CiAgfTsKICB2YXIgU1RJQ0tfTU9ERSA9ICd1bmNvZGUnOyAvKiAndW5jb2RlJyA9IGxhIHJvdyBnw6hyZSBsZSBzdGlja3kgwrcgJ2pzJyA9IGxlIHNjcmlwdCBjb2xsZSBsdWktbcOqbWUgKi8KICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKICB2YXIgREVCVUcgPSAvWz8mXW5weGRlYnVnPTEvLnRlc3Qod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7CiAgZnVuY3Rpb24gbG9nKCl7CiAgICBpZighREVCVUcgfHwgIXdpbmRvdy5jb25zb2xlIHx8ICFjb25zb2xlLmxvZykgcmV0dXJuOwogICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgWydbbnB4LXN1Ym5hdl0nXS5jb25jYXQoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7CiAgfQoKICAvKiAtLS0tIExhbmd1ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgPGh0bWwgbGFuZz4gcG9zw6kgcGFyIFdQTUwuIFJlcGxpcyBzdWNjZXNzaWZzIHNpIGwnYXR0cmlidXQgbWFucXVlIDoKICAgICB1biBhbmPDqnRyZSBwb3J0ZXVyIGRlIGxhbmcsIHB1aXMgbGVzIGNsYXNzZXMgZHUgYm9keS4gKi8KICBmdW5jdGlvbiBkZXRlY3RMYW5nKGVsKXsKICAgIHZhciB0YWcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykgfHwgJyc7CiAgICBpZighdGFnICYmIGVsICYmIGVsLmNsb3Nlc3QpewogICAgICB2YXIgaG9zdCA9IGVsLmNsb3Nlc3QoJ1tsYW5nXScpOwogICAgICBpZihob3N0KXsgdGFnID0gaG9zdC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKSB8fCAnJzsgfQogICAgfQogICAgaWYoIXRhZyl7CiAgICAgIHZhciBjbHMgPSAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSkgfHwgJyc7CiAgICAgIGlmKC8oPzpsYW5nfGxhbmd1YWdlKS1mclxifGZyW18tXUZSL2kudGVzdChjbHMpKXsgdGFnID0gJ2ZyJzsgfQogICAgfQogICAgcmV0dXJuIC9eZnIvaS50ZXN0KHRhZykgPyAnZnInIDogJ2VuJzsKICB9CgogIGZ1bmN0aW9uIGtleU9mKGlkKXsKICAgIHZhciBrID0gaWQuc2xpY2UoUFJFRklYLmxlbmd0aCkudG9Mb3dlckNhc2UoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBTVFJJUC5sZW5ndGg7IGkrKyl7IGsgPSBrLnJlcGxhY2UoU1RSSVBbaV0sICcnKTsgfQogICAgcmV0dXJuIGs7CiAgfQogIGZ1bmN0aW9uIHRpdGxlQ2FzZShrZXkpewogICAgcmV0dXJuIGtleS5zcGxpdCgnLScpLm1hcChmdW5jdGlvbih3KXsKICAgICAgcmV0dXJuIHcgPyB3LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdy5zbGljZSgxKSA6IHc7CiAgICB9KS5qb2luKCcgJyk7CiAgfQoKICAvKiBEb3VibGUgc8OpY3VyaXTDqSA6IMOpY2FydGUgbGVzIG1lbnVzIGfDqW7DqXLDqXMgcGFyIFdvcmRQcmVzcyBldCB0b3V0IGNlCiAgICAgcXVpIHZpdCBkYW5zIGxhIG5hdmlnYXRpb24gb3UgbGUgaGVhZGVyIOKAlCBpbmNoYW5nw6kgZGVwdWlzIGxhIHYuNi4xLiAqLwogIGZ1bmN0aW9uIGlzU2VjdGlvbkNhbmRpZGF0ZShlbCl7CiAgICB2YXIgdGFnID0gZWwudGFnTmFtZTsKICAgIGlmKHRhZyA9PT0gJ1VMJyB8fCB0YWcgPT09ICdMSScgfHwgdGFnID09PSAnQScgfHwgdGFnID09PSAnTkFWJyl7IHJldHVybiBmYWxzZTsgfQogICAgaWYoZWwuY2xvc2VzdCAmJiBlbC5jbG9zZXN0KCduYXYsIGhlYWRlciwgLm5weC1zdWJuYXYnKSl7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHRydWU7CiAgfQoKICBmdW5jdGlvbiBpbkRvY3VtZW50T3JkZXIoYSwgYil7CiAgICB2YXIgcG9zID0gYS5zZWN0aW9uLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIuc2VjdGlvbik7CiAgICByZXR1cm4gKHBvcyAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKSA/IC0xIDogMTsKICB9CgogIC8qIC0tLS0gRMOpY291dmVydGUgZGVzIHNlY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgMSkgTW9kZSBub21pbmFsIDogdG91dGVzIGxlcyByb3dzIGRvbnQgbCdpZCBjb21tZW5jZSBwYXIgwqsgbmF2LSDCuy4KICAgICAyKSBSZXBsaSA6IHNpIGV0IHNldWxlbWVudCBzaSBsZSBtb2RlIDEgbmUgZG9ubmUgUklFTiwgb24gY2hlcmNoZQogICAgICAgIGxlcyBjbMOpcyBow6lyaXTDqWVzIGRlIGxhIHYuNSwgYXZlYyBvdSBzYW5zIHN1ZmZpeGUuCiAgICAgUmVudm9pZSB7IGVudHJpZXM6IFsuLi5dLCBtb2RlOiAncHJlZml4JyB8ICdsZWdhY3knIHwgJ25vbmUnIH0uICovCiAgZnVuY3Rpb24gZGlzY292ZXIoZGljdCl7CiAgICB2YXIgc2VlbiA9IE9iamVjdC5jcmVhdGUobnVsbCksIGVudHJpZXMgPSBbXTsKCiAgICBmdW5jdGlvbiBwdXNoKGVsLCBrZXkpewogICAgICBpZighZWwgfHwgIWtleSB8fCBzZWVuW2tleV0peyByZXR1cm47IH0KICAgICAgc2VlbltrZXldID0gdHJ1ZTsKICAgICAgZW50cmllcy5wdXNoKHsgc2VjdGlvbjogZWwsIGtleToga2V5LCBsYWJlbDogZGljdFtrZXldIHx8IHRpdGxlQ2FzZShrZXkpIH0pOwogICAgfQoKICAgIHZhciBmb3VuZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZF49IicgKyBQUkVGSVggKyAnIl0nKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBmb3VuZC5sZW5ndGg7IGkrKyl7CiAgICAgIGlmKCFpc1NlY3Rpb25DYW5kaWRhdGUoZm91bmRbaV0pKXsgY29udGludWU7IH0KICAgICAgcHVzaChmb3VuZFtpXSwga2V5T2YoZm91bmRbaV0uaWQpKTsKICAgIH0KICAgIGlmKGVudHJpZXMubGVuZ3RoKXsKICAgICAgd2FybklmUGFydGlhbGx5TWlncmF0ZWQoc2Vlbik7CiAgICAgIHJldHVybiB7IGVudHJpZXM6IGVudHJpZXMsIG1vZGU6ICdwcmVmaXgnIH07CiAgICB9CgogICAgZm9yKHZhciBqID0gMDsgaiA8IExFR0FDWV9LRVlTLmxlbmd0aDsgaisrKXsKICAgICAgdmFyIGsgID0gTEVHQUNZX0tFWVNbal07CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGspIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tpZF49IicgKyBrICsgJy0iXScpOwogICAgICBpZihlbCAmJiBpc1NlY3Rpb25DYW5kaWRhdGUoZWwpKXsgcHVzaChlbCwgayk7IH0KICAgIH0KICAgIGlmKGVudHJpZXMubGVuZ3RoKXsKICAgICAgZW50cmllcy5zb3J0KGluRG9jdW1lbnRPcmRlcik7IC8qIGxhIGxpc3RlIGRlcyBjbMOpcyBuZSBzdWl0IHBhcyBsJ29yZHJlIGRlIGxhIHBhZ2UgKi8KICAgICAgcmV0dXJuIHsgZW50cmllczogZW50cmllcywgbW9kZTogJ2xlZ2FjeScgfTsKICAgIH0KCiAgICByZXR1cm4geyBlbnRyaWVzOiBlbnRyaWVzLCBtb2RlOiAnbm9uZScgfTsKICB9CgogIC8qIC0tLS0gTWlncmF0aW9uIHBhcnRpZWxsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIENhcyBwacOoZ2UgOiBzdXIgdW5lIG3Dqm1lIHBhZ2UgY2VydGFpbmVzIHJvd3Mgb250IMOpdMOpIHJlbm9tbcOpZXMgZW4KICAgICBuYXYt4oCmIGV0IGQnYXV0cmVzIG5vbi4gTGUgbW9kZSBub21pbmFsIGwnZW1wb3J0ZSBldCBsZXMgcm93cyBub24KICAgICByZW5vbW3DqWVzIGRpc3BhcmFpc3NlbnQgU0lMRU5DSUVVU0VNRU5UIGR1IG1lbnUuIE9uIGxlIHNpZ25hbGUuICovCiAgZnVuY3Rpb24gd2FybklmUGFydGlhbGx5TWlncmF0ZWQoc2Vlbil7CiAgICBpZighd2luZG93LmNvbnNvbGUgfHwgIWNvbnNvbGUud2Fybil7IHJldHVybjsgfQogICAgdmFyIHN0cmFnZ2xlcnMgPSBbXTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBMRUdBQ1lfS0VZUy5sZW5ndGg7IGkrKyl7CiAgICAgIHZhciBrID0gTEVHQUNZX0tFWVNbaV07CiAgICAgIGlmKHNlZW5ba10peyBjb250aW51ZTsgfSAvKiBkw6lqw6AgcHLDqXNlbnQgdmlhIHVuZSByb3cgbmF2LSAqLwogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChrKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWRePSInICsgayArICctIl0nKTsKICAgICAgaWYoZWwgJiYgaXNTZWN0aW9uQ2FuZGlkYXRlKGVsKSl7IHN0cmFnZ2xlcnMucHVzaChrICsgJyAoIycgKyBlbC5pZCArICcpJyk7IH0KICAgIH0KICAgIGlmKCFzdHJhZ2dsZXJzLmxlbmd0aCl7IHJldHVybjsgfQogICAgY29uc29sZS53YXJuKAogICAgICAnW25weC1zdWJuYXZdIE1pZ3JhdGlvbiBpbmNvbXBsZXRlIHN1ciBjZXR0ZSBwYWdlIDogJyArIHN0cmFnZ2xlcnMubGVuZ3RoICsKICAgICAgJyByb3cocykgcG9ydGVudCBlbmNvcmUgdW4gYW5jaWVuIFJvdyBJRCBldCBzb250IEFCU0VOVEVTIGR1IG1lbnUgLT4gJyArCiAgICAgIHN0cmFnZ2xlcnMuam9pbignLCAnKSArICdcbicgKwogICAgICAnTGVzIHJlbm9tbWVyIGF2ZWMgbGUgcHJlZml4ZSAiJyArIFBSRUZJWCArICciIChleC4gJyArIFBSRUZJWCArIExFR0FDWV9LRVlTWzBdICsgJykuJwogICAgKTsKICB9CgogIC8qIC0tLS0gTWVzc2FnZSBkZSBkaWFnbm9zdGljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIEludmlzaWJsZSBwb3VyIGxlcyB2aXNpdGV1cnMsIGTDqWNpc2lmIHBvdXIgbGEgcGVyc29ubmUgcXVpIHJlcHJlbmQKICAgICBsZSBkb3NzaWVyIDogb24gZGl0IGNlIHF1aSBhIMOpdMOpIGNoZXJjaMOpIGV0IGNlIHF1aSBhIMOpdMOpIHRyb3V2w6kuICovCiAgZnVuY3Rpb24gd2Fybk5vdGhpbmdGb3VuZCgpewogICAgaWYoIXdpbmRvdy5jb25zb2xlIHx8ICFjb25zb2xlLndhcm4peyByZXR1cm47IH0KICAgIHZhciB3aXRoSWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWRdJyk7CiAgICBjb25zb2xlLndhcm4oCiAgICAgICdbbnB4LXN1Ym5hdl0gQXVjdW5lIHNlY3Rpb24gdHJvdXbDqWUgOiBsYSBiYXJyZSByZXN0ZSBtYXNxdcOpZS5cbicgKwogICAgICAnLSBSZWNoZXJjaMOpIGVuIHByaW9yaXTDqSA6IGRlcyBSb3cgSUQgY29tbWVuw6dhbnQgcGFyICInICsgUFJFRklYICsgJyIgKGV4LiBuYXYtb3ZlcnZpZXcpLlxuJyArCiAgICAgICctIFB1aXMsIGVuIHJlcGxpLCBsZXMgY2xlcyBoZXJpdGVlcyA6ICcgKyBMRUdBQ1lfS0VZUy5qb2luKCcsICcpICsgJy5cbicgKwogICAgICAnLSBQYWdlIGxhbmc9IicgKyAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnbGFuZycpIHx8ICcoYWJzZW50KScpICsgJyIsICcgKwogICAgICB3aXRoSWQubGVuZ3RoICsgJyBlbGVtZW50KHMpIHBvcnRlbnQgdW4gaWQuXG4nICsKICAgICAgJy0gQ2F1c2UgbGEgcGx1cyBmcmVxdWVudGUgOiBsZXMgUm93IElEIGRlIENFVFRFIHBhZ2UgbmUgc29udCBwYXMgbm9tbWVzLiAnICsKICAgICAgJ1NvdXMgV1BNTCB1bmUgdHJhZHVjdGlvbiBlc3QgdW4gcG9zdCBkaXN0aW5jdCDigJQgcmVub21tZXIgbGVzIFJvdyBJRCBkZSBsYSBwYWdlICcgKwogICAgICAnc291cmNlIG5lIHJlbm9tbWUgcGFzIGNldXggZGUgbGEgdHJhZHVjdGlvbiA6IGlsIGZhdXQgbGVzIHNhaXNpciBzdXIgY2hhcXVlIGxhbmd1ZS5cbicgKwogICAgICAnLSBQb3VyIGxhIGxpc3RlIGRlcyBpZHMgcHJlc2VudHMsIHJlY2hhcmdlciBsYSBwYWdlIGF2ZWMgP25weGRlYnVnPTEnCiAgICApOwogICAgaWYoREVCVUcpewogICAgICB2YXIgaWRzID0gW107CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB3aXRoSWQubGVuZ3RoOyBpKyspeyBpZHMucHVzaCh3aXRoSWRbaV0uaWQpOyB9CiAgICAgIGNvbnNvbGUud2FybignW25weC1zdWJuYXZdIGlkcyBwcmVzZW50cyBzdXIgbGEgcGFnZSA6JywgaWRzKTsKICAgIH0KICB9CgogIC8qIC0tLS0gSW5pdGlhbGlzYXRpb24gZCd1bmUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBSZW52b2llIHRydWUgc2kgbGEgYmFycmUgYSDDqXTDqSBjb25zdHJ1aXRlLCBmYWxzZSBzJ2lsIG4neSBhdmFpdAogICAgIGF1Y3VuZSBzZWN0aW9uIChsJ2luc3RhbmNlIHJlc3RlIGFsb3JzIMOpbGlnaWJsZSDDoCB1bmUgbm91dmVsbGUKICAgICB0ZW50YXRpdmUgOiBkYXRhLW5weC1yZWFkeSBuJ2VzdCBwb3PDqSBxdSdlbiBjYXMgZGUgc3VjY8OocykuICovCiAgZnVuY3Rpb24gaW5pdChuYXYpewogICAgdmFyIGlubmVyID0gbmF2LnF1ZXJ5U2VsZWN0b3IoJy5ucHgtc3VibmF2X19pbm5lcicpOwogICAgaWYoIWlubmVyKXsKICAgICAgbmF2LnNldEF0dHJpYnV0ZSgnZGF0YS1ucHgtcmVhZHknLCAnMScpOyAvKiBiYWxpc2FnZSBpbmF0dGVuZHUgOiBuZSBwYXMgYm91Y2xlciBkZXNzdXMgKi8KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgdmFyIGxhbmcgID0gZGV0ZWN0TGFuZyhuYXYpOwogICAgdmFyIGRpY3QgID0gTEFCRUxTW2xhbmddIHx8IHt9OwogICAgdmFyIGZvdW5kID0gZGlzY292ZXIoZGljdCk7CiAgICB2YXIgZW50cmllcyA9IGZvdW5kLmVudHJpZXM7CgogICAgaWYoIWVudHJpZXMubGVuZ3RoKXsgcmV0dXJuIGZhbHNlOyB9CgogICAgbmF2LnNldEF0dHJpYnV0ZSgnZGF0YS1ucHgtcmVhZHknLCAnMScpOwogICAgbG9nKCdtb2RlID0nLCBmb3VuZC5tb2RlLCAnfCBsYW5nID0nLCBsYW5nLCAnfCBlbnRyZWVzID0nLCBlbnRyaWVzLm1hcChmdW5jdGlvbihlKXsKICAgICAgcmV0dXJuIGUua2V5ICsgJyAtPiAnICsgZS5sYWJlbCArICcgKCMnICsgZS5zZWN0aW9uLmlkICsgJyknOwogICAgfSkpOwoKICAgIGlubmVyLmlubmVySFRNTCA9ICcnOwogICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGUpewogICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgYS5ocmVmID0gJyMnICsgZS5zZWN0aW9uLmlkOwogICAgICBhLnRleHRDb250ZW50ID0gZS5sYWJlbDsKICAgICAgaW5uZXIuYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGUubGluayA9IGE7CiAgICB9KTsKICAgIG5hdi5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpOwoKICAgIC8qIC0tLS0gdi42LjQgOiBsYSBiYXJyZSB0aWVudCBzdXIgdW5lIGxpZ25lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgZmxleC13cmFwOm5vd3JhcCBzdXBwcmltZSBsYSAyZSBsaWduZS4gT24gbWVzdXJlIGV0IG9uIHJldGllbnQgbGUKICAgICAgIFBSRU1JRVIgcGFsaWVyIHF1aSByZW50cmUuIExlIHBhbGllciAwIGVzdCBsZSByZW5kdSB2LjYuMiA6IHVuZQogICAgICAgYmFycmUgcXVpIHJlbnRyYWl0IGRlamEgbmUgYm91Z2UgcGFzIGQndW4gcGl4ZWwuIFNpIG1lbWUgbGUKICAgICAgIHBsYW5jaGVyIGRlYm9yZGUgKHRlbGVwaG9uZSksIGxhIGJhcnJlIGRlZmlsZSBob3Jpem9udGFsZW1lbnQuCiAgICAgICBUb3V0IGVzdCBlbnZlbG9wcGUgOiBlbiBjYXMgZCdlcnJldXIgb24gcmV2aWVudCBhdSBwYWxpZXIgMC4gKi8KICAgIHZhciBTVEVQUyA9IFsKICAgICAgeyBmczogJzExcHgnLCAgIGxzOiAnLjEyZW0nLCBweDogJzE0cHgnLCBnYXA6ICcxMHB4JyB9LCAvKiByZW5kdSB2LjYuMiAqLwogICAgICB7IGZzOiAnMTFweCcsICAgbHM6ICcuMDllbScsIHB4OiAnMTNweCcsIGdhcDogJzlweCcgIH0sCiAgICAgIHsgZnM6ICcxMC41cHgnLCBsczogJy4wN2VtJywgcHg6ICcxMnB4JywgZ2FwOiAnOHB4JyAgfSwKICAgICAgeyBmczogJzEwcHgnLCAgIGxzOiAnLjA2ZW0nLCBweDogJzExcHgnLCBnYXA6ICc3cHgnICB9LAogICAgICB7IGZzOiAnOS41cHgnLCAgbHM6ICcuMDVlbScsIHB4OiAnMTBweCcsIGdhcDogJzZweCcgIH0sCiAgICAgIHsgZnM6ICc5cHgnLCAgICBsczogJy4wNGVtJywgcHg6ICc5cHgnLCAgZ2FwOiAnNXB4JyAgfSAgLyogcGxhbmNoZXIgKi8KICAgIF07CiAgICBmdW5jdGlvbiBhcHBseVN0ZXAocyl7CiAgICAgIHZhciBzdCA9IGlubmVyLnN0eWxlOwogICAgICBzdC5zZXRQcm9wZXJ0eSgnLS1ucHgtZnMnLCAgcy5mcyk7CiAgICAgIHN0LnNldFByb3BlcnR5KCctLW5weC1scycsICBzLmxzKTsKICAgICAgc3Quc2V0UHJvcGVydHkoJy0tbnB4LXB4JywgIHMucHgpOwogICAgICBzdC5zZXRQcm9wZXJ0eSgnLS1ucHgtZ2FwJywgcy5nYXApOwogICAgfQogICAgZnVuY3Rpb24gb3ZlcmZsb3dpbmcoKXsgcmV0dXJuIGlubmVyLnNjcm9sbFdpZHRoID4gaW5uZXIuY2xpZW50V2lkdGggKyAxOyB9CgogICAgdmFyIGZpdHRpbmcgPSBmYWxzZSwgbGFzdFcgPSAtMTsKICAgIGZ1bmN0aW9uIGZpdCgpewogICAgICBpZihmaXR0aW5nKXsgcmV0dXJuOyB9CiAgICAgIGZpdHRpbmcgPSB0cnVlOwogICAgICB0cnl7CiAgICAgICAgLyogQmFycmUgbm9uIG1lc3VyYWJsZSAobWFzcXVlZSwgb25nbGV0IHJlcGxpZSkgOiBuZSByaWVuIGNvbmNsdXJlLiAqLwogICAgICAgIGlmKGlubmVyLmNsaWVudFdpZHRoID4gNDApewogICAgICAgICAgdmFyIGksIGNob3NlbiA9IFNURVBTLmxlbmd0aCAtIDE7CiAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBTVEVQUy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIGFwcGx5U3RlcChTVEVQU1tpXSk7CiAgICAgICAgICAgIGlmKCFvdmVyZmxvd2luZygpKXsgY2hvc2VuID0gaTsgYnJlYWs7IH0KICAgICAgICAgIH0KICAgICAgICAgIGlmKGNob3NlbiAhPT0gaSl7IGFwcGx5U3RlcChTVEVQU1tjaG9zZW5dKTsgfQogICAgICAgICAgbGFzdFcgPSBuYXYuY2xpZW50V2lkdGg7CiAgICAgICAgfQogICAgICB9Y2F0Y2goZXJyKXsKICAgICAgICBhcHBseVN0ZXAoU1RFUFNbMF0pOyAgLyogamFtYWlzIGRlIGJhcnJlIGNhc3NlZSAqLwogICAgICB9CiAgICAgIGZpdHRpbmcgPSBmYWxzZTsKICAgIH0KICAgIGZpdCgpOwoKICAgIC8qIExhIHBvbGljZSBkdSB0aGVtZSBhcnJpdmUgZW4gYXN5bmNocm9uZSA6IHJlbWVzdXJlciBhIHNvbiBhcnJpdmVlLiAqLwogICAgaWYoZG9jdW1lbnQuZm9udHMgJiYgZG9jdW1lbnQuZm9udHMucmVhZHkgJiYgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbil7CiAgICAgIHRyeXsgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbihmaXQsIGZpdCk7IH1jYXRjaChlcnIpe30KICAgIH0KICAgIHNldFRpbWVvdXQoZml0LCA2MDApOwogICAgc2V0VGltZW91dChmaXQsIDIwMDApOwoKICAgIC8qIExlIHBhc3NhZ2UgZW4gc3RpY2t5IGNoYW5nZSBsYSBsYXJnZXVyIHNhbnMgZXZlbmVtZW50IHJlc2l6ZS4gKi8KICAgIGlmKHdpbmRvdy5SZXNpemVPYnNlcnZlcil7CiAgICAgIHRyeXsKICAgICAgICBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24oKXsKICAgICAgICAgIGlmKG5hdi5jbGllbnRXaWR0aCAhPT0gbGFzdFcpeyBmaXQoKTsgfQogICAgICAgIH0pLm9ic2VydmUobmF2KTsKICAgICAgfWNhdGNoKGVycil7fQogICAgfQoKICAgIC8qIEVuIG1vZGUgZGVmaWxlbWVudCwgZ2FyZGVyIGxhIHBhc3RpbGxlIGFjdGl2ZSB2aXNpYmxlLiAqLwogICAgZnVuY3Rpb24gcmV2ZWFsKGxpbmspewogICAgICBpZighbGluayB8fCAhb3ZlcmZsb3dpbmcoKSl7IHJldHVybjsgfQogICAgICB2YXIgbCA9IGxpbmsub2Zmc2V0TGVmdCwgciA9IGwgKyBsaW5rLm9mZnNldFdpZHRoOwogICAgICB2YXIgdnMgPSBpbm5lci5zY3JvbGxMZWZ0LCB2ZSA9IHZzICsgaW5uZXIuY2xpZW50V2lkdGg7CiAgICAgIGlmKGwgPCB2cyl7IGlubmVyLnNjcm9sbExlZnQgPSBNYXRoLm1heCgwLCBsIC0gMTIpOyB9CiAgICAgIGVsc2UgaWYociA+IHZlKXsgaW5uZXIuc2Nyb2xsTGVmdCA9IHIgLSBpbm5lci5jbGllbnRXaWR0aCArIDEyOyB9CiAgICB9CgogICAgZnVuY3Rpb24gdG9wT2Zmc2V0KCl7CiAgICAgIHZhciB2ID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tbnB4LXRvcCcpOwogICAgICByZXR1cm4gcGFyc2VJbnQodiwgMTApIHx8IDA7CiAgICB9CiAgICAvKiBEw6lmaWxlbWVudCBhdmVjIGNvbXBlbnNhdGlvbiBkZXMgZGV1eCBtZW51cy4gKi8KICAgIGZ1bmN0aW9uIHRvdGFsT2Zmc2V0KCl7IHJldHVybiB0b3BPZmZzZXQoKSArIG5hdi5vZmZzZXRIZWlnaHQgKyA4OyB9CgogICAgLyogLS0tLSBDb2xsYWdlIDogZml4ZWQgKyBwbGFjZWhvbGRlciBhbnRpLXNhdXQgKG1vZGUgJ2pzJykgLS0tLSAqLwogICAgdmFyIHBoID0gbnVsbDsKICAgIGlmKFNUSUNLX01PREUgPT09ICdqcycpewogICAgICBwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBwaC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBuYXYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocGgsIG5hdik7CiAgICB9CiAgICBmdW5jdGlvbiBzdGljaygpewogICAgICBpZighcGgpeyByZXR1cm47IH0KICAgICAgdmFyIGFuY2hvciA9IChwaC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpID8gbmF2IDogcGg7CiAgICAgIHZhciBzaG91bGQgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIDw9IHRvcE9mZnNldCgpOwogICAgICBpZihzaG91bGQgJiYgIW5hdi5jbGFzc0xpc3QuY29udGFpbnMoJ25weC1zdHVjaycpKXsKICAgICAgICBwaC5zdHlsZS5oZWlnaHQgID0gbmF2Lm9mZnNldEhlaWdodCArICdweCc7CiAgICAgICAgcGguc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgbmF2LmNsYXNzTGlzdC5hZGQoJ25weC1zdHVjaycpOwogICAgICB9ZWxzZSBpZighc2hvdWxkICYmIG5hdi5jbGFzc0xpc3QuY29udGFpbnMoJ25weC1zdHVjaycpKXsKICAgICAgICBuYXYuY2xhc3NMaXN0LnJlbW92ZSgnbnB4LXN0dWNrJyk7CiAgICAgICAgcGguc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgfQogICAgfQoKICAgIC8qIC0tLS0gU2VjdGlvbiBhY3RpdmUgLS0tLSAqLwogICAgdmFyIGxhc3RDdXJyZW50ID0gbnVsbDsKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCgpewogICAgICB2YXIgbGltaXQgPSB0b3RhbE9mZnNldCgpICsgNDsKICAgICAgdmFyIGN1cnJlbnQgPSBudWxsOwogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgaWYoZS5zZWN0aW9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA8PSBsaW1pdCl7IGN1cnJlbnQgPSBlOyB9CiAgICAgIH0pOwogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgZS5saW5rLmNsYXNzTGlzdC50b2dnbGUoJ25weC1hY3RpdmUnLCBlID09PSBjdXJyZW50KTsKICAgICAgfSk7CiAgICAgIGlmKGN1cnJlbnQgIT09IGxhc3RDdXJyZW50KXsKICAgICAgICBsYXN0Q3VycmVudCA9IGN1cnJlbnQ7CiAgICAgICAgaWYoY3VycmVudCl7IHJldmVhbChjdXJyZW50LmxpbmspOyB9CiAgICAgIH0KICAgIH0KCiAgICAvKiAtLS0tIENsaWMgc3VyIHVuZSBlbnRyw6llIC0tLS0gKi8KICAgIHZhciBzbW9vdGggPSAhd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlKXsKICAgICAgZS5saW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgdmFyIHkgPSBlLnNlY3Rpb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0IC0gdG90YWxPZmZzZXQoKTsKICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHksIGJlaGF2aW9yOiBzbW9vdGggPyAnc21vb3RoJyA6ICdhdXRvJyB9KTsKICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgJyMnICsgZS5zZWN0aW9uLmlkKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBmdW5jdGlvbiBvblNjcm9sbCgpeyBzdGljaygpOyBoaWdobGlnaHQoKTsgfQogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24oKXsgZml0KCk7IG9uU2Nyb2xsKCk7IH0pOwogICAgb25TY3JvbGwoKTsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLyogLS0tLSBBbW9yw6dhZ2UgOiB0b3V0ZXMgbGVzIGluc3RhbmNlcywgYXZlYyBxdWVscXVlcyByZWxhbmNlcyAtLS0tLS0KICAgICBMZXMgcm93cyBVbmNvZGUgcGV1dmVudCDDqnRyZSBpbmplY3TDqWVzIGFwcsOocyBsZSBET01Db250ZW50TG9hZGVkCiAgICAgKGxhenkgLyBBSkFYKSA6IG9uIHJldGVudGUgcGVuZGFudCB+Miw1IHMgYXZhbnQgZGUgY29uY2x1cmUuICovCiAgZnVuY3Rpb24gYm9vdCgpewogICAgdmFyIG5hdnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubnB4LXN1Ym5hdjpub3QoW2RhdGEtbnB4LXJlYWR5XSknKTsKICAgIHZhciBwZW5kaW5nID0gMDsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBuYXZzLmxlbmd0aDsgaSsrKXsKICAgICAgaWYoIWluaXQobmF2c1tpXSkpeyBwZW5kaW5nKys7IH0KICAgIH0KICAgIHJldHVybiBwZW5kaW5nOwogIH0KCiAgZnVuY3Rpb24gcnVuKCl7CiAgICBpZihib290KCkgPT09IDApeyByZXR1cm47IH0KICAgIHZhciB0cmllcyA9IDA7CiAgICB2YXIgdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICB0cmllcysrOwogICAgICB2YXIgbGFzdCA9IHRyaWVzID49IDY7IC8qIDYgeCA0MDAgbXMgKi8KICAgICAgaWYoYm9vdCgpID09PSAwIHx8IGxhc3QpewogICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgICAgIGlmKGxhc3QgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm5weC1zdWJuYXY6bm90KFtkYXRhLW5weC1yZWFkeV0pJykpewogICAgICAgICAgd2Fybk5vdGhpbmdGb3VuZCgpOwogICAgICAgIH0KICAgICAgfQogICAgfSwgNDAwKTsKICB9CgogIGlmKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJyl7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgcnVuKTsKICB9ZWxzZXsKICAgIHJ1bigpOwogIH0KfSkoKTsKPC9zY3JpcHQ+[/vc_raw_html][/vc_column][/vc_row][vc_row unlock_row_content=&#xA0;&#xBB;yes&#xA0;&#xBB; row_height_percent=&#xA0;&#xBB;0&Prime; override_padding=&#xA0;&#xBB;yes&#xA0;&#xBB; h_padding=&#xA0;&#xBB;5&Prime; top_padding=&#xA0;&#xBB;5&Prime; bottom_padding=&#xA0;&#xBB;5&Prime; [&hellip;]</description></oembed>
