2.1 sec in total
39 ms
1.4 sec
640 ms
Click here to check amazing Gray And Co content for United States. Otherwise, check out these important facts you probably never knew about grayandco.ca
We take private active trips to new heights by providing extremely high levels of customization for luxury private jet travel.
Visit grayandco.caWe analyzed Grayandco.ca page load time and found that the first response time was 39 ms and then it took 2.1 sec to load all DOM resources and completely render a web page. This is quite a good result, as only 40% of websites can load faster.
grayandco.ca performance score
name
value
score
weighting
Value4.5 s
15/100
10%
Value9.1 s
1/100
25%
Value9.3 s
13/100
10%
Value240 ms
85/100
30%
Value0.161
73/100
15%
Value13.7 s
10/100
10%
39 ms
743 ms
2 ms
114 ms
77 ms
Our browser made a total of 126 requests to load all elements on the main page. We found that 60% of them (75 requests) were addressed to the original Grayandco.ca, 19% (24 requests) were made to and 15% (19 requests) were made to Use.typekit.net. The less responsive or slowest element that took the longest time to load (743 ms) belongs to the original domain Grayandco.ca.
Page size can be reduced by 461.9 kB (10%)
4.7 MB
4.3 MB
In fact, the total size of Grayandco.ca main page is 4.7 MB. This result falls beyond the top 1M of websites and identifies a large and not optimized web page that may take ages to load. 80% of websites need less resources to load and that’s why Accessify’s recommendations for optimization and resource minification can be helpful for this project. Images take 4.0 MB which makes up the majority of the site volume.
Potential reduce by 122.9 kB
HTML content can be minified and compressed by a website’s server. The most efficient way is to compress content using GZIP which reduces data amount travelling through the network between server and browser. HTML code on this page is well minified. It is highly recommended that content of this web page should be compressed using GZIP, as it can save up to 122.9 kB or 79% of the original size.
Potential reduce by 11.6 kB
Image size optimization can help to speed up a website loading time. The chart above shows the difference between the size before and after optimization. Gray And Co images are well optimized though.
Potential reduce by 23.2 kB
It’s better to minify JavaScript in order to improve website performance. The diagram shows the current total size of all JavaScript files against the prospective JavaScript size after its minification and compression. It is highly recommended that all JavaScript files should be compressed and minified as it can save up to 23.2 kB or 12% of the original size.
Potential reduce by 304.3 kB
CSS files minification is very important to reduce a web page rendering time. The faster CSS files can load, the earlier a page can be rendered. Grayandco.ca needs all CSS files to be minified and compressed as it can save up to 304.3 kB or 82% of the original size.
Number of requests can be reduced by 34 (43%)
80
46
The browser has sent 80 CSS, Javascripts, AJAX and image requests in order to completely render the main page of Gray And Co. We recommend that multiple CSS and JavaScript files should be merged into one by each type, as it can help reduce assets requests from 22 to 1 for JavaScripts and from 14 to 1 for CSS and as a result speed up the page load time.
grayandco.ca
39 ms
grayandco.ca
743 ms
javascript;base64,CgkJCXZhciB0ZW1wbGF0ZVVybCA9ICdodHRwczovL2dyYXlhbmRjby5jYS93cC1jb250ZW50L3RoZW1lcy9ncmF5YW5kY28nOwoJCQk=
2 ms
cwk2sdi.css
114 ms
js.cookie.min.js
77 ms
bmV3IE9mZnNjcmVlbkNhbnZhcygzMDAsMTUwKTppLmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGE9ci5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pLG89KGEudGV4dEJhc2VsaW5lPSJ0b3AiLGEuZm9udD0iNjAwIDMycHggQXJpYWwiLHt9KTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe29bZV09dChhLGUsbil9KSxvfWZ1bmN0aW9uIHQoZSl7dmFyIHQ9aS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTt0LnNyYz1lLHQuZGVmZXI9ITAsaS5oZWFkLmFwcGVuZENoaWxkKHQpfSJ1bmRlZmluZWQiIT10eXBlb2YgUHJvbWlzZSYmKG89IndwRW1vamlTZXR0aW5nc1N1cHBvcnRzIixzPVsiZmxhZyIsImVtb2ppIl0sbi5zdXBwb3J0cz17ZXZlcnl0aGluZzohMCxldmVyeXRoaW5nRXhjZXB0RmxhZzohMH0sZT1uZXcgUHJvbWlzZShmdW5jdGlvbihlKXtpLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGUse29uY2U6ITB9KX0pLG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPUpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShvKSk7aWYoIm9iamVjdCI9PXR5cGVvZiBlJiYibnVtYmVyIj09dHlwZW9mIGUudGltZXN0YW1wJiYobmV3IERhdGUpLnZhbHVlT2YoKTxlLnRpbWVzdGFtcCs2MDQ4MDAmJiJvYmplY3QiPT10eXBlb2YgZS5zdXBwb3J0VGVzdHMpcmV0dXJuIGUuc3VwcG9ydFRlc3RzfWNhdGNoKGUpe31yZXR1cm4gbnVsbH0oKTtpZighbil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXImJiJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzJiYidW5kZWZpbmVkIiE9dHlwZW9mIFVSTCYmVVJMLmNyZWF0ZU9iamVjdFVSTCYmInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iKXRyeXt2YXIgZT0icG9zdE1lc3NhZ2UoIitmLnRvU3RyaW5nKCkrIigiK1tKU09OLnN0cmluZ2lmeShzKSx1LnRvU3RyaW5nKCkscC50b1N0cmluZygpXS5qb2luKCIsIikrIikpOyIscj1uZXcgQmxvYihbZV0se3R5cGU6InRleHQvamF2YXNjcmlwdCJ9KSxhPW5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChyKSx7bmFtZToid3BUZXN0RW1vamlTdXBwb3J0cyJ9KTtyZXR1cm4gdm9pZChhLm9ubWVzc2FnZT1mdW5jdGlvbihlKXtjKG49ZS5kYXRhKSxhLnRlcm1pbmF0ZSgpLHQobil9KX1jYXRjaChlKXt9YyhuPWYocyx1LHApKX10KG4pfSkudGhlbihmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSluLnN1cHBvcnRzW3RdPWVbdF0sbi5zdXBwb3J0cy5ldmVyeXRoaW5nPW4uc3VwcG9ydHMuZXZlcnl0aGluZyYmbi5zdXBwb3J0c1t0XSwiZmxhZyIhPT10JiYobi5zdXBwb3J0cy5ldmVyeXRoaW5nRXhjZXB0RmxhZz1uLnN1cHBvcnRzLmV2ZXJ5dGhpbmdFeGNlcHRGbGFnJiZuLnN1cHBvcnRzW3RdKTtuLnN1cHBvcnRzLmV2ZXJ5dGhpbmdFeGNlcHRGbGFnPW4uc3VwcG9ydHMuZXZlcnl0aGluZ0V4Y2VwdEZsYWcmJiFuLnN1cHBvcnRzLmZsYWcsbi5ET01SZWFkeT0hMSxuLnJlYWR5Q2FsbGJhY2s9ZnVuY3Rpb24oKXtuLkRPTVJlYWR5PSEwfX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gZX0pLnRoZW4oZnVuY3Rpb24oKXt2YXIgZTtuLnN1cHBvcnRzLmV2ZXJ5dGhpbmd8fChuLnJlYWR5Q2FsbGJhY2soKSwoZT1uLnNvdXJjZXx8e30pLmNvbmNhdGVtb2ppP3QoZS5jb25jYXRlbW9qaSk6ZS53cGVtb2ppJiZlLnR3ZW1vamkmJih0KGUudHdlbW9qaSksdChlLndwZW1vamkpKSl9KSl9KCh3aW5kb3csZG9jdW1lbnQpLHdpbmRvdy5fd3BlbW9qaVNldHRpbmdzKTsKLyogXV0+ICovCg==
14 ms
style.min.css
26 ms
autoptimize_single_20e8490fab0dcf7557a5c8b54494db6f.php
38 ms
autoptimize_single_359aca8a88b2331aa34ac505acad9911.php
40 ms
autoptimize_single_a0b823f7ab1f0a3a563fb10c3664d2a6.php
40 ms
simplebar.css
97 ms
slick.min.css
76 ms
app.css
51 ms
autoptimize_single_1252914122edd180af1e58c70915e58b.php
39 ms
jquery.min.js
48 ms
jquery-migrate.min.js
42 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgQ2xpX0RhdGEgPSB7Im5uX2Nvb2tpZV9pZHMiOltdLCJjb29raWVsaXN0IjpbXSwibm9uX25lY2Vzc2FyeV9jb29raWVzIjpbXSwiY2NwYUVuYWJsZWQiOiIiLCJjY3BhUmVnaW9uQmFzZWQiOiIiLCJjY3BhQmFyRW5hYmxlZCI6IiIsInN0cmljdGx5RW5hYmxlZCI6WyJuZWNlc3NhcnkiLCJvYmxpZ2F0b2lyZSJdLCJjY3BhVHlwZSI6ImdkcHIiLCJqc19ibG9ja2luZyI6IiIsImN1c3RvbV9pbnRlZ3JhdGlvbiI6IiIsInRyaWdnZXJEb21SZWZyZXNoIjoiIiwic2VjdXJlX2Nvb2tpZXMiOiIifTsKdmFyIGNsaV9jb29raWViYXJfc2V0dGluZ3MgPSB7ImFuaW1hdGVfc3BlZWRfaGlkZSI6IjUwMCIsImFuaW1hdGVfc3BlZWRfc2hvdyI6IjUwMCIsImJhY2tncm91bmQiOiIjRkZGIiwiYm9yZGVyIjoiI2IxYTZhNmMyIiwiYm9yZGVyX29uIjoiIiwiYnV0dG9uXzFfYnV0dG9uX2NvbG91ciI6IiM1NzU0NTEiLCJidXR0b25fMV9idXR0b25faG92ZXIiOiIjNDY0MzQxIiwiYnV0dG9uXzFfbGlua19jb2xvdXIiOiIjZmZmIiwiYnV0dG9uXzFfYXNfYnV0dG9uIjoiMSIsImJ1dHRvbl8xX25ld193aW4iOiIiLCJidXR0b25fMl9idXR0b25fY29sb3VyIjoiIzMzMyIsImJ1dHRvbl8yX2J1dHRvbl9ob3ZlciI6IiMyOTI5MjkiLCJidXR0b25fMl9saW5rX2NvbG91ciI6IiM0NDQiLCJidXR0b25fMl9hc19idXR0b24iOiIiLCJidXR0b25fMl9oaWRlYmFyIjoiIiwiYnV0dG9uXzNfYnV0dG9uX2NvbG91ciI6IiMwMDAiLCJidXR0b25fM19idXR0b25faG92ZXIiOiIjMDAwMDAwIiwiYnV0dG9uXzNfbGlua19jb2xvdXIiOiIjZmZmIiwiYnV0dG9uXzNfYXNfYnV0dG9uIjoiMSIsImJ1dHRvbl8zX25ld193aW4iOiIiLCJidXR0b25fNF9idXR0b25fY29sb3VyIjoiIzAwMCIsImJ1dHRvbl80X2J1dHRvbl9ob3ZlciI6IiMwMDAwMDAiLCJidXR0b25fNF9saW5rX2NvbG91ciI6IiM2MmEzMjkiLCJidXR0b25fNF9hc19idXR0b24iOiIiLCJidXR0b25fN19idXR0b25fY29sb3VyIjoiIzYxYTIyOSIsImJ1dHRvbl83X2J1dHRvbl9ob3ZlciI6IiM0ZTgyMjEiLCJidXR0b25fN19saW5rX2NvbG91ciI6IiNmZmYiLCJidXR0b25fN19hc19idXR0b24iOiIxIiwiYnV0dG9uXzdfbmV3X3dpbiI6IiIsImZvbnRfZmFtaWx5IjoiaW5oZXJpdCIsImhlYWRlcl9maXgiOiIiLCJub3RpZnlfYW5pbWF0ZV9oaWRlIjoiMSIsIm5vdGlmeV9hbmltYXRlX3Nob3ciOiIiLCJub3RpZnlfZGl2X2lkIjoiI2Nvb2tpZS1sYXctaW5mby1iYXIiLCJub3RpZnlfcG9zaXRpb25faG9yaXpvbnRhbCI6InJpZ2h0Iiwibm90aWZ5X3Bvc2l0aW9uX3ZlcnRpY2FsIjoiYm90dG9tIiwic2Nyb2xsX2Nsb3NlIjoiIiwic2Nyb2xsX2Nsb3NlX3JlbG9hZCI6IiIsImFjY2VwdF9jbG9zZV9yZWxvYWQiOiIiLCJyZWplY3RfY2xvc2VfcmVsb2FkIjoiIiwic2hvd2FnYWluX3RhYiI6IjEiLCJzaG93YWdhaW5fYmFja2dyb3VuZCI6IiNmZmYiLCJzaG93YWdhaW5fYm9yZGVyIjoiIzAwMCIsInNob3dhZ2Fpbl9kaXZfaWQiOiIjY29va2llLWxhdy1pbmZvLWFnYWluIiwic2hvd2FnYWluX3hfcG9zaXRpb24iOiIxMDBweCIsInRleHQiOiIjNTc1NDUxIiwic2hvd19vbmNlX3luIjoiIiwic2hvd19vbmNlIjoiMTAwMDAiLCJsb2dnaW5nX29uIjoiIiwiYXNfcG9wdXAiOiIiLCJwb3B1cF9vdmVybGF5IjoiMSIsImJhcl9oZWFkaW5nX3RleHQiOiIiLCJjb29raWVfYmFyX2FzIjoiYmFubmVyIiwicG9wdXBfc2hvd2FnYWluX3Bvc2l0aW9uIjoiYm90dG9tLXJpZ2h0Iiwid2lkZ2V0X3Bvc2l0aW9uIjoibGVmdCJ9Owp2YXIgbG9nX29iamVjdCA9IHsiYWpheF91cmwiOiJodHRwczpcL1wvZ3JheWFuZGNvLmNhXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAifTsKLyogXV0+ICovCg==
11 ms
autoptimize_single_c5592a6fda4d0b779f56db2d5ddac010.php
47 ms
jquery.scrolldepth.min.js
70 ms
slick.min.js
76 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgYWNmX3ZhcnMgPSB7InNsaWRlcl9zcGVlZCI6IjYwMDAifTsKLyogXV0+ICovCg==
11 ms
autoptimize_single_98bc9973f72fe3f1737b032c960be1a0.php
69 ms
js
99 ms
javascript;base64,CglqUXVlcnkoIGRvY3VtZW50ICkucmVhZHkoZnVuY3Rpb24oKXsKCQlqUXVlcnkuc2Nyb2xsRGVwdGgoewoJCQllbGVtZW50czogWycnXSwKCQkJcGVyY2VudGFnZTogdHJ1ZSwKCQkJdXNlclRpbWluZzogdHJ1ZSwKCQkJcGl4ZWxEZXB0aDogZmFsc2UsCgkJCW5vbkludGVyYWN0aW9uOiBmYWxzZSwKCQkJZ3RtT3ZlcnJpZGU6IGZhbHNlLAoJfSk7Cn0pOwo=
10 ms
javascript;base64,dmFyIGFqYXh1cmwgPSAiaHR0cHM6Ly9ncmF5YW5kY28uY2Evd3AtYWRtaW4vYWRtaW4tYWpheC5waHAiOw==
11 ms
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLG8pOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImdmb3JtX21haW5fc2NyaXB0c19sb2FkZWQiLG8pfSxob29rczp7YWN0aW9uOnt9LGZpbHRlcjp7fX0sYWRkQWN0aW9uOmZ1bmN0aW9uKG8sbixyLHQpe2dmb3JtLmFkZEhvb2soImFjdGlvbiIsbyxuLHIsdCl9LGFkZEZpbHRlcjpmdW5jdGlvbihvLG4scix0KXtnZm9ybS5hZGRIb29rKCJmaWx0ZXIiLG8sbixyLHQpfSxkb0FjdGlvbjpmdW5jdGlvbihvKXtnZm9ybS5kb0hvb2soImFjdGlvbiIsbyxhcmd1bWVudHMpfSxhcHBseUZpbHRlcnM6ZnVuY3Rpb24obyl7cmV0dXJuIGdmb3JtLmRvSG9vaygiZmlsdGVyIixvLGFyZ3VtZW50cyl9LHJlbW92ZUFjdGlvbjpmdW5jdGlvbihvLG4pe2dmb3JtLnJlbW92ZUhvb2soImFjdGlvbiIsbyxuKX0scmVtb3ZlRmlsdGVyOmZ1bmN0aW9uKG8sbixyKXtnZm9ybS5yZW1vdmVIb29rKCJmaWx0ZXIiLG8sbixyKX0sYWRkSG9vazpmdW5jdGlvbihvLG4scix0LGkpe251bGw9PWdmb3JtLmhvb2tzW29dW25dJiYoZ2Zvcm0uaG9va3Nbb11bbl09W10pO3ZhciBlPWdmb3JtLmhvb2tzW29dW25dO251bGw9PWkmJihpPW4rIl8iK2UubGVuZ3RoKSxnZm9ybS5ob29rc1tvXVtuXS5wdXNoKHt0YWc6aSxjYWxsYWJsZTpyLHByaW9yaXR5OnQ9bnVsbD09dD8xMDp0fSl9LGRvSG9vazpmdW5jdGlvbihuLG8scil7dmFyIHQ7aWYocj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyLDEpLG51bGwhPWdmb3JtLmhvb2tzW25dW29dJiYoKG89Z2Zvcm0uaG9va3Nbbl1bb10pLnNvcnQoZnVuY3Rpb24obyxuKXtyZXR1cm4gby5wcmlvcml0eS1uLnByaW9yaXR5fSksby5mb3JFYWNoKGZ1bmN0aW9uKG8peyJmdW5jdGlvbiIhPXR5cGVvZih0PW8uY2FsbGFibGUpJiYodD13aW5kb3dbdF0pLCJhY3Rpb24iPT1uP3QuYXBwbHkobnVsbCxyKTpyWzBdPXQuYXBwbHkobnVsbCxyKX0pKSwiZmlsdGVyIj09bilyZXR1cm4gclswXX0scmVtb3ZlSG9vazpmdW5jdGlvbihvLG4sdCxpKXt2YXIgcjtudWxsIT1nZm9ybS5ob29rc1tvXVtuXSYmKHI9KHI9Z2Zvcm0uaG9va3Nbb11bbl0pLmZpbHRlcihmdW5jdGlvbihvLG4scil7cmV0dXJuISEobnVsbCE9aSYmaSE9by50YWd8fG51bGwhPXQmJnQhPW8ucHJpb3JpdHkpfSksZ2Zvcm0uaG9va3Nbb11bbl09cil9fSk7
10 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHtnZm9ybUluaXRTcGlubmVyKCA1LCAnaHR0cHM6Ly9ncmF5YW5kY28uY2Evd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5zdmcnLCB0cnVlICk7alF1ZXJ5KCcjZ2Zvcm1fYWpheF9mcmFtZV81Jykub24oJ2xvYWQnLGZ1bmN0aW9uKCl7dmFyIGNvbnRlbnRzID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnKicpLmh0bWwoKTt2YXIgaXNfcG9zdGJhY2sgPSBjb250ZW50cy5pbmRleE9mKCdHRl9BSkFYX1BPU1RCQUNLJykgPj0gMDtpZighaXNfcG9zdGJhY2spe3JldHVybjt9dmFyIGZvcm1fY29udGVudCA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyNnZm9ybV93cmFwcGVyXzUnKTt2YXIgaXNfY29uZmlybWF0aW9uID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3JtX2NvbmZpcm1hdGlvbl93cmFwcGVyXzUnKS5sZW5ndGggPiAwO3ZhciBpc19yZWRpcmVjdCA9IGNvbnRlbnRzLmluZGV4T2YoJ2dmb3JtUmVkaXJlY3QoKXsnKSA+PSAwO3ZhciBpc19mb3JtID0gZm9ybV9jb250ZW50Lmxlbmd0aCA+IDAgJiYgISBpc19yZWRpcmVjdCAmJiAhIGlzX2NvbmZpcm1hdGlvbjt2YXIgbXQgPSBwYXJzZUludChqUXVlcnkoJ2h0bWwnKS5jc3MoJ21hcmdpbi10b3AnKSwgMTApICsgcGFyc2VJbnQoalF1ZXJ5KCdib2R5JykuY3NzKCdtYXJnaW4tdG9wJyksIDEwKSArIDEwMDtpZihpc19mb3JtKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzUnKS5odG1sKGZvcm1fY29udGVudC5odG1sKCkpO2lmKGZvcm1fY29udGVudC5oYXNDbGFzcygnZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcicpKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzUnKS5hZGRDbGFzcygnZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcicpO30gZWxzZSB7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl81JykucmVtb3ZlQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKTt9c2V0VGltZW91dCggZnVuY3Rpb24oKSB7IC8qIGRlbGF5IHRoZSBzY3JvbGwgYnkgNTAgbWlsbGlzZWNvbmRzIHRvIGZpeCBhIGJ1ZyBpbiBjaHJvbWUgKi8galF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl81Jykub2Zmc2V0KCkudG9wIC0gbXQpOyB9LCA1MCApO2lmKHdpbmRvd1snZ2Zvcm1Jbml0RGF0ZXBpY2tlciddKSB7Z2Zvcm1Jbml0RGF0ZXBpY2tlcigpO31pZih3aW5kb3dbJ2dmb3JtSW5pdFByaWNlRmllbGRzJ10pIHtnZm9ybUluaXRQcmljZUZpZWxkcygpO312YXIgY3VycmVudF9wYWdlID0galF1ZXJ5KCcjZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzUnKS52YWwoKTtnZm9ybUluaXRTcGlubmVyKCA1LCAnaHR0cHM6Ly9ncmF5YW5kY28uY2Evd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5zdmcnLCB0cnVlICk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wYWdlX2xvYWRlZCcsIFs1LCBjdXJyZW50X3BhZ2VdKTt3aW5kb3dbJ2dmX3N1Ym1pdHRpbmdfNSddID0gZmFsc2U7fWVsc2UgaWYoIWlzX3JlZGlyZWN0KXt2YXIgY29uZmlybWF0aW9uX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcuR0ZfQUpBWF9QT1NUQkFDSycpLmh0bWwoKTtpZighY29uZmlybWF0aW9uX2NvbnRlbnQpe2NvbmZpcm1hdGlvbl9jb250ZW50ID0gY29udGVudHM7fWpRdWVyeSgnI2dmb3JtX3dyYXBwZXJfNScpLnJlcGxhY2VXaXRoKGNvbmZpcm1hdGlvbl9jb250ZW50KTtqUXVlcnkoZG9jdW1lbnQpLnNjcm9sbFRvcChqUXVlcnkoJyNnZl81Jykub2Zmc2V0KCkudG9wIC0gbXQpO2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fY29uZmlybWF0aW9uX2xvYWRlZCcsIFs1XSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzUnXSA9IGZhbHNlO3dwLmExMXkuc3BlYWsoalF1ZXJ5KCcjZ2Zvcm1fY29uZmlybWF0aW9uX21lc3NhZ2VfNScpLnRleHQoKSk7fWVsc2V7alF1ZXJ5KCcjZ2Zvcm1fNScpLmFwcGVuZChjb250ZW50cyk7aWYod2luZG93WydnZm9ybVJlZGlyZWN0J10pIHtnZm9ybVJlZGlyZWN0KCk7fX1qUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoImdmb3JtX3ByZV9wb3N0X3JlbmRlciIsIFt7IGZvcm1JZDogIjUiLCBjdXJyZW50UGFnZTogImN1cnJlbnRfcGFnZSIsIGFib3J0OiBmdW5jdGlvbigpIHsgdGhpcy5wcmV2ZW50RGVmYXVsdCgpOyB9IH1dKTsgICAgICAgICAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHsgICAgICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgIH0gICAgICAgIGNvbnN0IGdmb3JtV3JhcHBlckRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAiZ2Zvcm1fd3JhcHBlcl81IiApOyAgICAgICAgaWYgKCBnZm9ybVdyYXBwZXJEaXYgKSB7ICAgICAgICAgICAgY29uc3QgdmlzaWJpbGl0eVNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAic3BhbiIgKTsgICAgICAgICAgICB2aXNpYmlsaXR5U3Bhbi5pZCA9ICJnZm9ybV92aXNpYmlsaXR5X3Rlc3RfNSI7ICAgICAgICAgICAgZ2Zvcm1XcmFwcGVyRGl2Lmluc2VydEFkamFjZW50RWxlbWVudCggImFmdGVyZW5kIiwgdmlzaWJpbGl0eVNwYW4gKTsgICAgICAgIH0gICAgICAgIGNvbnN0IHZpc2liaWxpdHlUZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICJnZm9ybV92aXNpYmlsaXR5X3Rlc3RfNSIgKTsgICAgICAgIGxldCBwb3N0UmVuZGVyRmlyZWQgPSBmYWxzZTsgICAgICAgICAgICAgICAgZnVuY3Rpb24gdHJpZ2dlclBvc3RSZW5kZXIoKSB7ICAgICAgICAgICAgaWYgKCBwb3N0UmVuZGVyRmlyZWQgKSB7ICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAgICB9ICAgICAgICAgICAgcG9zdFJlbmRlckZpcmVkID0gdHJ1ZTsgICAgICAgICAgICBqUXVlcnkoIGRvY3VtZW50ICkudHJpZ2dlciggJ2dmb3JtX3Bvc3RfcmVuZGVyJywgWzUsIGN1cnJlbnRfcGFnZV0gKTsgICAgICAgICAgICBnZm9ybS51dGlscy50cmlnZ2VyKCB7IGV2ZW50OiAnZ2Zvcm0vcG9zdFJlbmRlcicsIG5hdGl2ZTogZmFsc2UsIGRhdGE6IHsgZm9ybUlkOiA1LCBjdXJyZW50UGFnZTogY3VycmVudF9wYWdlIH0gfSApOyAgICAgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgKSB7ICAgICAgICAgICAgICAgIHZpc2liaWxpdHlUZXN0RGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHZpc2liaWxpdHlUZXN0RGl2ICk7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZnVuY3Rpb24gZGVib3VuY2UoIGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSApIHsgICAgICAgICAgICB2YXIgdGltZW91dDsgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgICAgICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDsgICAgICAgICAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTsgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApOyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTsgICAgICAgICAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgIH07ICAgICAgICB9ICAgICAgICBjb25zdCBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlciA9IGRlYm91bmNlKCBmdW5jdGlvbigpIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSwgMjAwICk7ICAgICAgICBpZiAoIHZpc2liaWxpdHlUZXN0RGl2ICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCA9PT0gbnVsbCApIHsgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCAoIG11dGF0aW9ucyApID0+IHsgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goICggbXV0YXRpb24gKSA9PiB7ICAgICAgICAgICAgICAgICAgICBpZiAoIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiB2aXNpYmlsaXR5VGVzdERpdi5vZmZzZXRQYXJlbnQgIT09IG51bGwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkVHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgIH0pOyAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoIGRvY3VtZW50LmJvZHksIHsgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSwgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwgICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdzdHlsZScsICdjbGFzcycgXSwgICAgICAgICAgICB9KTsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgdHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgIH0gICAgfSApO30gKTsgCi8qIF1dPiAqLwo=
10 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHtnZm9ybUluaXRTcGlubmVyKCAxLCAnaHR0cHM6Ly9ncmF5YW5kY28uY2Evd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5zdmcnLCB0cnVlICk7alF1ZXJ5KCcjZ2Zvcm1fYWpheF9mcmFtZV8xJykub24oJ2xvYWQnLGZ1bmN0aW9uKCl7dmFyIGNvbnRlbnRzID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnKicpLmh0bWwoKTt2YXIgaXNfcG9zdGJhY2sgPSBjb250ZW50cy5pbmRleE9mKCdHRl9BSkFYX1BPU1RCQUNLJykgPj0gMDtpZighaXNfcG9zdGJhY2spe3JldHVybjt9dmFyIGZvcm1fY29udGVudCA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyNnZm9ybV93cmFwcGVyXzEnKTt2YXIgaXNfY29uZmlybWF0aW9uID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3JtX2NvbmZpcm1hdGlvbl93cmFwcGVyXzEnKS5sZW5ndGggPiAwO3ZhciBpc19yZWRpcmVjdCA9IGNvbnRlbnRzLmluZGV4T2YoJ2dmb3JtUmVkaXJlY3QoKXsnKSA+PSAwO3ZhciBpc19mb3JtID0gZm9ybV9jb250ZW50Lmxlbmd0aCA+IDAgJiYgISBpc19yZWRpcmVjdCAmJiAhIGlzX2NvbmZpcm1hdGlvbjt2YXIgbXQgPSBwYXJzZUludChqUXVlcnkoJ2h0bWwnKS5jc3MoJ21hcmdpbi10b3AnKSwgMTApICsgcGFyc2VJbnQoalF1ZXJ5KCdib2R5JykuY3NzKCdtYXJnaW4tdG9wJyksIDEwKSArIDEwMDtpZihpc19mb3JtKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzEnKS5odG1sKGZvcm1fY29udGVudC5odG1sKCkpO2lmKGZvcm1fY29udGVudC5oYXNDbGFzcygnZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcicpKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzEnKS5hZGRDbGFzcygnZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcicpO30gZWxzZSB7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8xJykucmVtb3ZlQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKTt9c2V0VGltZW91dCggZnVuY3Rpb24oKSB7IC8qIGRlbGF5IHRoZSBzY3JvbGwgYnkgNTAgbWlsbGlzZWNvbmRzIHRvIGZpeCBhIGJ1ZyBpbiBjaHJvbWUgKi8galF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8xJykub2Zmc2V0KCkudG9wIC0gbXQpOyB9LCA1MCApO2lmKHdpbmRvd1snZ2Zvcm1Jbml0RGF0ZXBpY2tlciddKSB7Z2Zvcm1Jbml0RGF0ZXBpY2tlcigpO31pZih3aW5kb3dbJ2dmb3JtSW5pdFByaWNlRmllbGRzJ10pIHtnZm9ybUluaXRQcmljZUZpZWxkcygpO312YXIgY3VycmVudF9wYWdlID0galF1ZXJ5KCcjZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzEnKS52YWwoKTtnZm9ybUluaXRTcGlubmVyKCAxLCAnaHR0cHM6Ly9ncmF5YW5kY28uY2Evd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5zdmcnLCB0cnVlICk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wYWdlX2xvYWRlZCcsIFsxLCBjdXJyZW50X3BhZ2VdKTt3aW5kb3dbJ2dmX3N1Ym1pdHRpbmdfMSddID0gZmFsc2U7fWVsc2UgaWYoIWlzX3JlZGlyZWN0KXt2YXIgY29uZmlybWF0aW9uX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcuR0ZfQUpBWF9QT1NUQkFDSycpLmh0bWwoKTtpZighY29uZmlybWF0aW9uX2NvbnRlbnQpe2NvbmZpcm1hdGlvbl9jb250ZW50ID0gY29udGVudHM7fWpRdWVyeSgnI2dmb3JtX3dyYXBwZXJfMScpLnJlcGxhY2VXaXRoKGNvbmZpcm1hdGlvbl9jb250ZW50KTtqUXVlcnkoZG9jdW1lbnQpLnNjcm9sbFRvcChqUXVlcnkoJyNnZl8xJykub2Zmc2V0KCkudG9wIC0gbXQpO2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fY29uZmlybWF0aW9uX2xvYWRlZCcsIFsxXSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzEnXSA9IGZhbHNlO3dwLmExMXkuc3BlYWsoalF1ZXJ5KCcjZ2Zvcm1fY29uZmlybWF0aW9uX21lc3NhZ2VfMScpLnRleHQoKSk7fWVsc2V7alF1ZXJ5KCcjZ2Zvcm1fMScpLmFwcGVuZChjb250ZW50cyk7aWYod2luZG93WydnZm9ybVJlZGlyZWN0J10pIHtnZm9ybVJlZGlyZWN0KCk7fX1qUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoImdmb3JtX3ByZV9wb3N0X3JlbmRlciIsIFt7IGZvcm1JZDogIjEiLCBjdXJyZW50UGFnZTogImN1cnJlbnRfcGFnZSIsIGFib3J0OiBmdW5jdGlvbigpIHsgdGhpcy5wcmV2ZW50RGVmYXVsdCgpOyB9IH1dKTsgICAgICAgICAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHsgICAgICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgIH0gICAgICAgIGNvbnN0IGdmb3JtV3JhcHBlckRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAiZ2Zvcm1fd3JhcHBlcl8xIiApOyAgICAgICAgaWYgKCBnZm9ybVdyYXBwZXJEaXYgKSB7ICAgICAgICAgICAgY29uc3QgdmlzaWJpbGl0eVNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAic3BhbiIgKTsgICAgICAgICAgICB2aXNpYmlsaXR5U3Bhbi5pZCA9ICJnZm9ybV92aXNpYmlsaXR5X3Rlc3RfMSI7ICAgICAgICAgICAgZ2Zvcm1XcmFwcGVyRGl2Lmluc2VydEFkamFjZW50RWxlbWVudCggImFmdGVyZW5kIiwgdmlzaWJpbGl0eVNwYW4gKTsgICAgICAgIH0gICAgICAgIGNvbnN0IHZpc2liaWxpdHlUZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICJnZm9ybV92aXNpYmlsaXR5X3Rlc3RfMSIgKTsgICAgICAgIGxldCBwb3N0UmVuZGVyRmlyZWQgPSBmYWxzZTsgICAgICAgICAgICAgICAgZnVuY3Rpb24gdHJpZ2dlclBvc3RSZW5kZXIoKSB7ICAgICAgICAgICAgaWYgKCBwb3N0UmVuZGVyRmlyZWQgKSB7ICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAgICB9ICAgICAgICAgICAgcG9zdFJlbmRlckZpcmVkID0gdHJ1ZTsgICAgICAgICAgICBqUXVlcnkoIGRvY3VtZW50ICkudHJpZ2dlciggJ2dmb3JtX3Bvc3RfcmVuZGVyJywgWzEsIGN1cnJlbnRfcGFnZV0gKTsgICAgICAgICAgICBnZm9ybS51dGlscy50cmlnZ2VyKCB7IGV2ZW50OiAnZ2Zvcm0vcG9zdFJlbmRlcicsIG5hdGl2ZTogZmFsc2UsIGRhdGE6IHsgZm9ybUlkOiAxLCBjdXJyZW50UGFnZTogY3VycmVudF9wYWdlIH0gfSApOyAgICAgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgKSB7ICAgICAgICAgICAgICAgIHZpc2liaWxpdHlUZXN0RGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHZpc2liaWxpdHlUZXN0RGl2ICk7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZnVuY3Rpb24gZGVib3VuY2UoIGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSApIHsgICAgICAgICAgICB2YXIgdGltZW91dDsgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgICAgICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDsgICAgICAgICAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTsgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApOyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTsgICAgICAgICAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgIH07ICAgICAgICB9ICAgICAgICBjb25zdCBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlciA9IGRlYm91bmNlKCBmdW5jdGlvbigpIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSwgMjAwICk7ICAgICAgICBpZiAoIHZpc2liaWxpdHlUZXN0RGl2ICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCA9PT0gbnVsbCApIHsgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCAoIG11dGF0aW9ucyApID0+IHsgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goICggbXV0YXRpb24gKSA9PiB7ICAgICAgICAgICAgICAgICAgICBpZiAoIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiB2aXNpYmlsaXR5VGVzdERpdi5vZmZzZXRQYXJlbnQgIT09IG51bGwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkVHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgIH0pOyAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoIGRvY3VtZW50LmJvZHksIHsgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSwgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwgICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdzdHlsZScsICdjbGFzcycgXSwgICAgICAgICAgICB9KTsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgdHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgIH0gICAgfSApO30gKTsgCi8qIF1dPiAqLwo=
10 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHtnZm9ybUluaXRTcGlubmVyKCAyLCAnaHR0cHM6Ly9ncmF5YW5kY28uY2Evd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5zdmcnLCB0cnVlICk7alF1ZXJ5KCcjZ2Zvcm1fYWpheF9mcmFtZV8yJykub24oJ2xvYWQnLGZ1bmN0aW9uKCl7dmFyIGNvbnRlbnRzID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnKicpLmh0bWwoKTt2YXIgaXNfcG9zdGJhY2sgPSBjb250ZW50cy5pbmRleE9mKCdHRl9BSkFYX1BPU1RCQUNLJykgPj0gMDtpZighaXNfcG9zdGJhY2spe3JldHVybjt9dmFyIGZvcm1fY29udGVudCA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyNnZm9ybV93cmFwcGVyXzInKTt2YXIgaXNfY29uZmlybWF0aW9uID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3JtX2NvbmZpcm1hdGlvbl93cmFwcGVyXzInKS5sZW5ndGggPiAwO3ZhciBpc19yZWRpcmVjdCA9IGNvbnRlbnRzLmluZGV4T2YoJ2dmb3JtUmVkaXJlY3QoKXsnKSA+PSAwO3ZhciBpc19mb3JtID0gZm9ybV9jb250ZW50Lmxlbmd0aCA+IDAgJiYgISBpc19yZWRpcmVjdCAmJiAhIGlzX2NvbmZpcm1hdGlvbjt2YXIgbXQgPSBwYXJzZUludChqUXVlcnkoJ2h0bWwnKS5jc3MoJ21hcmdpbi10b3AnKSwgMTApICsgcGFyc2VJbnQoalF1ZXJ5KCdib2R5JykuY3NzKCdtYXJnaW4tdG9wJyksIDEwKSArIDEwMDtpZihpc19mb3JtKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzInKS5odG1sKGZvcm1fY29udGVudC5odG1sKCkpO2lmKGZvcm1fY29udGVudC5oYXNDbGFzcygnZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcicpKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzInKS5hZGRDbGFzcygnZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcicpO30gZWxzZSB7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yJykucmVtb3ZlQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKTt9c2V0VGltZW91dCggZnVuY3Rpb24oKSB7IC8qIGRlbGF5IHRoZSBzY3JvbGwgYnkgNTAgbWlsbGlzZWNvbmRzIHRvIGZpeCBhIGJ1ZyBpbiBjaHJvbWUgKi8galF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yJykub2Zmc2V0KCkudG9wIC0gbXQpOyB9LCA1MCApO2lmKHdpbmRvd1snZ2Zvcm1Jbml0RGF0ZXBpY2tlciddKSB7Z2Zvcm1Jbml0RGF0ZXBpY2tlcigpO31pZih3aW5kb3dbJ2dmb3JtSW5pdFByaWNlRmllbGRzJ10pIHtnZm9ybUluaXRQcmljZUZpZWxkcygpO312YXIgY3VycmVudF9wYWdlID0galF1ZXJ5KCcjZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzInKS52YWwoKTtnZm9ybUluaXRTcGlubmVyKCAyLCAnaHR0cHM6Ly9ncmF5YW5kY28uY2Evd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5zdmcnLCB0cnVlICk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wYWdlX2xvYWRlZCcsIFsyLCBjdXJyZW50X3BhZ2VdKTt3aW5kb3dbJ2dmX3N1Ym1pdHRpbmdfMiddID0gZmFsc2U7fWVsc2UgaWYoIWlzX3JlZGlyZWN0KXt2YXIgY29uZmlybWF0aW9uX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcuR0ZfQUpBWF9QT1NUQkFDSycpLmh0bWwoKTtpZighY29uZmlybWF0aW9uX2NvbnRlbnQpe2NvbmZpcm1hdGlvbl9jb250ZW50ID0gY29udGVudHM7fWpRdWVyeSgnI2dmb3JtX3dyYXBwZXJfMicpLnJlcGxhY2VXaXRoKGNvbmZpcm1hdGlvbl9jb250ZW50KTtqUXVlcnkoZG9jdW1lbnQpLnNjcm9sbFRvcChqUXVlcnkoJyNnZl8yJykub2Zmc2V0KCkudG9wIC0gbXQpO2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fY29uZmlybWF0aW9uX2xvYWRlZCcsIFsyXSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzInXSA9IGZhbHNlO3dwLmExMXkuc3BlYWsoalF1ZXJ5KCcjZ2Zvcm1fY29uZmlybWF0aW9uX21lc3NhZ2VfMicpLnRleHQoKSk7fWVsc2V7alF1ZXJ5KCcjZ2Zvcm1fMicpLmFwcGVuZChjb250ZW50cyk7aWYod2luZG93WydnZm9ybVJlZGlyZWN0J10pIHtnZm9ybVJlZGlyZWN0KCk7fX1qUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoImdmb3JtX3ByZV9wb3N0X3JlbmRlciIsIFt7IGZvcm1JZDogIjIiLCBjdXJyZW50UGFnZTogImN1cnJlbnRfcGFnZSIsIGFib3J0OiBmdW5jdGlvbigpIHsgdGhpcy5wcmV2ZW50RGVmYXVsdCgpOyB9IH1dKTsgICAgICAgICAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHsgICAgICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgIH0gICAgICAgIGNvbnN0IGdmb3JtV3JhcHBlckRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAiZ2Zvcm1fd3JhcHBlcl8yIiApOyAgICAgICAgaWYgKCBnZm9ybVdyYXBwZXJEaXYgKSB7ICAgICAgICAgICAgY29uc3QgdmlzaWJpbGl0eVNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAic3BhbiIgKTsgICAgICAgICAgICB2aXNpYmlsaXR5U3Bhbi5pZCA9ICJnZm9ybV92aXNpYmlsaXR5X3Rlc3RfMiI7ICAgICAgICAgICAgZ2Zvcm1XcmFwcGVyRGl2Lmluc2VydEFkamFjZW50RWxlbWVudCggImFmdGVyZW5kIiwgdmlzaWJpbGl0eVNwYW4gKTsgICAgICAgIH0gICAgICAgIGNvbnN0IHZpc2liaWxpdHlUZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICJnZm9ybV92aXNpYmlsaXR5X3Rlc3RfMiIgKTsgICAgICAgIGxldCBwb3N0UmVuZGVyRmlyZWQgPSBmYWxzZTsgICAgICAgICAgICAgICAgZnVuY3Rpb24gdHJpZ2dlclBvc3RSZW5kZXIoKSB7ICAgICAgICAgICAgaWYgKCBwb3N0UmVuZGVyRmlyZWQgKSB7ICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAgICB9ICAgICAgICAgICAgcG9zdFJlbmRlckZpcmVkID0gdHJ1ZTsgICAgICAgICAgICBqUXVlcnkoIGRvY3VtZW50ICkudHJpZ2dlciggJ2dmb3JtX3Bvc3RfcmVuZGVyJywgWzIsIGN1cnJlbnRfcGFnZV0gKTsgICAgICAgICAgICBnZm9ybS51dGlscy50cmlnZ2VyKCB7IGV2ZW50OiAnZ2Zvcm0vcG9zdFJlbmRlcicsIG5hdGl2ZTogZmFsc2UsIGRhdGE6IHsgZm9ybUlkOiAyLCBjdXJyZW50UGFnZTogY3VycmVudF9wYWdlIH0gfSApOyAgICAgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgKSB7ICAgICAgICAgICAgICAgIHZpc2liaWxpdHlUZXN0RGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHZpc2liaWxpdHlUZXN0RGl2ICk7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZnVuY3Rpb24gZGVib3VuY2UoIGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSApIHsgICAgICAgICAgICB2YXIgdGltZW91dDsgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgICAgICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDsgICAgICAgICAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTsgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApOyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTsgICAgICAgICAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgIH07ICAgICAgICB9ICAgICAgICBjb25zdCBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlciA9IGRlYm91bmNlKCBmdW5jdGlvbigpIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSwgMjAwICk7ICAgICAgICBpZiAoIHZpc2liaWxpdHlUZXN0RGl2ICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCA9PT0gbnVsbCApIHsgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCAoIG11dGF0aW9ucyApID0+IHsgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goICggbXV0YXRpb24gKSA9PiB7ICAgICAgICAgICAgICAgICAgICBpZiAoIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiB2aXNpYmlsaXR5VGVzdERpdi5vZmZzZXRQYXJlbnQgIT09IG51bGwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkVHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgIH0pOyAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoIGRvY3VtZW50LmJvZHksIHsgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSwgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwgICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdzdHlsZScsICdjbGFzcycgXSwgICAgICAgICAgICB9KTsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgdHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgIH0gICAgfSApO30gKTsgCi8qIF1dPiAqLwo=
9 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHtnZm9ybUluaXRTcGlubmVyKCAzLCAnaHR0cHM6Ly9ncmF5YW5kY28uY2Evd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5zdmcnLCB0cnVlICk7alF1ZXJ5KCcjZ2Zvcm1fYWpheF9mcmFtZV8zJykub24oJ2xvYWQnLGZ1bmN0aW9uKCl7dmFyIGNvbnRlbnRzID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnKicpLmh0bWwoKTt2YXIgaXNfcG9zdGJhY2sgPSBjb250ZW50cy5pbmRleE9mKCdHRl9BSkFYX1BPU1RCQUNLJykgPj0gMDtpZighaXNfcG9zdGJhY2spe3JldHVybjt9dmFyIGZvcm1fY29udGVudCA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyNnZm9ybV93cmFwcGVyXzMnKTt2YXIgaXNfY29uZmlybWF0aW9uID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3JtX2NvbmZpcm1hdGlvbl93cmFwcGVyXzMnKS5sZW5ndGggPiAwO3ZhciBpc19yZWRpcmVjdCA9IGNvbnRlbnRzLmluZGV4T2YoJ2dmb3JtUmVkaXJlY3QoKXsnKSA+PSAwO3ZhciBpc19mb3JtID0gZm9ybV9jb250ZW50Lmxlbmd0aCA+IDAgJiYgISBpc19yZWRpcmVjdCAmJiAhIGlzX2NvbmZpcm1hdGlvbjt2YXIgbXQgPSBwYXJzZUludChqUXVlcnkoJ2h0bWwnKS5jc3MoJ21hcmdpbi10b3AnKSwgMTApICsgcGFyc2VJbnQoalF1ZXJ5KCdib2R5JykuY3NzKCdtYXJnaW4tdG9wJyksIDEwKSArIDEwMDtpZihpc19mb3JtKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzMnKS5odG1sKGZvcm1fY29udGVudC5odG1sKCkpO2lmKGZvcm1fY29udGVudC5oYXNDbGFzcygnZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcicpKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzMnKS5hZGRDbGFzcygnZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcicpO30gZWxzZSB7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8zJykucmVtb3ZlQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKTt9c2V0VGltZW91dCggZnVuY3Rpb24oKSB7IC8qIGRlbGF5IHRoZSBzY3JvbGwgYnkgNTAgbWlsbGlzZWNvbmRzIHRvIGZpeCBhIGJ1ZyBpbiBjaHJvbWUgKi8galF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8zJykub2Zmc2V0KCkudG9wIC0gbXQpOyB9LCA1MCApO2lmKHdpbmRvd1snZ2Zvcm1Jbml0RGF0ZXBpY2tlciddKSB7Z2Zvcm1Jbml0RGF0ZXBpY2tlcigpO31pZih3aW5kb3dbJ2dmb3JtSW5pdFByaWNlRmllbGRzJ10pIHtnZm9ybUluaXRQcmljZUZpZWxkcygpO312YXIgY3VycmVudF9wYWdlID0galF1ZXJ5KCcjZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzMnKS52YWwoKTtnZm9ybUluaXRTcGlubmVyKCAzLCAnaHR0cHM6Ly9ncmF5YW5kY28uY2Evd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5zdmcnLCB0cnVlICk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wYWdlX2xvYWRlZCcsIFszLCBjdXJyZW50X3BhZ2VdKTt3aW5kb3dbJ2dmX3N1Ym1pdHRpbmdfMyddID0gZmFsc2U7fWVsc2UgaWYoIWlzX3JlZGlyZWN0KXt2YXIgY29uZmlybWF0aW9uX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcuR0ZfQUpBWF9QT1NUQkFDSycpLmh0bWwoKTtpZighY29uZmlybWF0aW9uX2NvbnRlbnQpe2NvbmZpcm1hdGlvbl9jb250ZW50ID0gY29udGVudHM7fWpRdWVyeSgnI2dmb3JtX3dyYXBwZXJfMycpLnJlcGxhY2VXaXRoKGNvbmZpcm1hdGlvbl9jb250ZW50KTtqUXVlcnkoZG9jdW1lbnQpLnNjcm9sbFRvcChqUXVlcnkoJyNnZl8zJykub2Zmc2V0KCkudG9wIC0gbXQpO2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fY29uZmlybWF0aW9uX2xvYWRlZCcsIFszXSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzMnXSA9IGZhbHNlO3dwLmExMXkuc3BlYWsoalF1ZXJ5KCcjZ2Zvcm1fY29uZmlybWF0aW9uX21lc3NhZ2VfMycpLnRleHQoKSk7fWVsc2V7alF1ZXJ5KCcjZ2Zvcm1fMycpLmFwcGVuZChjb250ZW50cyk7aWYod2luZG93WydnZm9ybVJlZGlyZWN0J10pIHtnZm9ybVJlZGlyZWN0KCk7fX1qUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoImdmb3JtX3ByZV9wb3N0X3JlbmRlciIsIFt7IGZvcm1JZDogIjMiLCBjdXJyZW50UGFnZTogImN1cnJlbnRfcGFnZSIsIGFib3J0OiBmdW5jdGlvbigpIHsgdGhpcy5wcmV2ZW50RGVmYXVsdCgpOyB9IH1dKTsgICAgICAgICAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHsgICAgICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgIH0gICAgICAgIGNvbnN0IGdmb3JtV3JhcHBlckRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAiZ2Zvcm1fd3JhcHBlcl8zIiApOyAgICAgICAgaWYgKCBnZm9ybVdyYXBwZXJEaXYgKSB7ICAgICAgICAgICAgY29uc3QgdmlzaWJpbGl0eVNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAic3BhbiIgKTsgICAgICAgICAgICB2aXNpYmlsaXR5U3Bhbi5pZCA9ICJnZm9ybV92aXNpYmlsaXR5X3Rlc3RfMyI7ICAgICAgICAgICAgZ2Zvcm1XcmFwcGVyRGl2Lmluc2VydEFkamFjZW50RWxlbWVudCggImFmdGVyZW5kIiwgdmlzaWJpbGl0eVNwYW4gKTsgICAgICAgIH0gICAgICAgIGNvbnN0IHZpc2liaWxpdHlUZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICJnZm9ybV92aXNpYmlsaXR5X3Rlc3RfMyIgKTsgICAgICAgIGxldCBwb3N0UmVuZGVyRmlyZWQgPSBmYWxzZTsgICAgICAgICAgICAgICAgZnVuY3Rpb24gdHJpZ2dlclBvc3RSZW5kZXIoKSB7ICAgICAgICAgICAgaWYgKCBwb3N0UmVuZGVyRmlyZWQgKSB7ICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAgICB9ICAgICAgICAgICAgcG9zdFJlbmRlckZpcmVkID0gdHJ1ZTsgICAgICAgICAgICBqUXVlcnkoIGRvY3VtZW50ICkudHJpZ2dlciggJ2dmb3JtX3Bvc3RfcmVuZGVyJywgWzMsIGN1cnJlbnRfcGFnZV0gKTsgICAgICAgICAgICBnZm9ybS51dGlscy50cmlnZ2VyKCB7IGV2ZW50OiAnZ2Zvcm0vcG9zdFJlbmRlcicsIG5hdGl2ZTogZmFsc2UsIGRhdGE6IHsgZm9ybUlkOiAzLCBjdXJyZW50UGFnZTogY3VycmVudF9wYWdlIH0gfSApOyAgICAgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgKSB7ICAgICAgICAgICAgICAgIHZpc2liaWxpdHlUZXN0RGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHZpc2liaWxpdHlUZXN0RGl2ICk7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZnVuY3Rpb24gZGVib3VuY2UoIGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSApIHsgICAgICAgICAgICB2YXIgdGltZW91dDsgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgICAgICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDsgICAgICAgICAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTsgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApOyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTsgICAgICAgICAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgIH07ICAgICAgICB9ICAgICAgICBjb25zdCBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlciA9IGRlYm91bmNlKCBmdW5jdGlvbigpIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSwgMjAwICk7ICAgICAgICBpZiAoIHZpc2liaWxpdHlUZXN0RGl2ICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCA9PT0gbnVsbCApIHsgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCAoIG11dGF0aW9ucyApID0+IHsgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goICggbXV0YXRpb24gKSA9PiB7ICAgICAgICAgICAgICAgICAgICBpZiAoIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiB2aXNpYmlsaXR5VGVzdERpdi5vZmZzZXRQYXJlbnQgIT09IG51bGwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkVHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgIH0pOyAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoIGRvY3VtZW50LmJvZHksIHsgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSwgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwgICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdzdHlsZScsICdjbGFzcycgXSwgICAgICAgICAgICB9KTsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgdHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgIH0gICAgfSApO30gKTsgCi8qIF1dPiAqLwo=
9 ms
formreset.min.css
65 ms
formsmain.min.css
66 ms
readyclass.min.css
67 ms
browsers.min.css
68 ms
autoptimize_single_a814e25df935e17c09b8fb765308c70a.php
70 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp3cGFfZmllbGRfaW5mbyA9IHsid3BhX2ZpZWxkX25hbWUiOiJmaWVsZDUzODIiLCJ3cGFfZmllbGRfdmFsdWUiOjQ4OTQyNCwid3BhX2FkZF90ZXN0Ijoibm8ifQovKiBdXT4gKi8K
7 ms
wp-polyfill-inert.min.js
66 ms
regenerator-runtime.min.js
67 ms
wp-polyfill.min.js
70 ms
dom-ready.min.js
69 ms
hooks.min.js
74 ms
i18n.min.js
71 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp3cC5pMThuLnNldExvY2FsZURhdGEoIHsgJ3RleHQgZGlyZWN0aW9uXHUwMDA0bHRyJzogWyAnbHRyJyBdIH0gKTsKLyogXV0+ICovCg==
6 ms
a11y.min.js
70 ms
jquery.json.min.js
71 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgZ2Zvcm1faTE4biA9IHsiZGF0ZXBpY2tlciI6eyJkYXlzIjp7Im1vbmRheSI6Ik1vIiwidHVlc2RheSI6IlR1Iiwid2VkbmVzZGF5IjoiV2UiLCJ0aHVyc2RheSI6IlRoIiwiZnJpZGF5IjoiRnIiLCJzYXR1cmRheSI6IlNhIiwic3VuZGF5IjoiU3UifSwibW9udGhzIjp7ImphbnVhcnkiOiJKYW51YXJ5IiwiZmVicnVhcnkiOiJGZWJydWFyeSIsIm1hcmNoIjoiTWFyY2giLCJhcHJpbCI6IkFwcmlsIiwibWF5IjoiTWF5IiwianVuZSI6Ikp1bmUiLCJqdWx5IjoiSnVseSIsImF1Z3VzdCI6IkF1Z3VzdCIsInNlcHRlbWJlciI6IlNlcHRlbWJlciIsIm9jdG9iZXIiOiJPY3RvYmVyIiwibm92ZW1iZXIiOiJOb3ZlbWJlciIsImRlY2VtYmVyIjoiRGVjZW1iZXIifSwiZmlyc3REYXkiOjEsImljb25UZXh0IjoiU2VsZWN0IGRhdGUifX07CnZhciBnZl9sZWdhY3lfbXVsdGkgPSBbXTsKdmFyIGdmb3JtX2dyYXZpdHlmb3JtcyA9IHsic3RyaW5ncyI6eyJpbnZhbGlkX2ZpbGVfZXh0ZW5zaW9uIjoiVGhpcyB0eXBlIG9mIGZpbGUgaXMgbm90IGFsbG93ZWQuIE11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6IiwiZGVsZXRlX2ZpbGUiOiJEZWxldGUgdGhpcyBmaWxlIiwiaW5fcHJvZ3Jlc3MiOiJpbiBwcm9ncmVzcyIsImZpbGVfZXhjZWVkc19saW1pdCI6IkZpbGUgZXhjZWVkcyBzaXplIGxpbWl0IiwiaWxsZWdhbF9leHRlbnNpb24iOiJUaGlzIHR5cGUgb2YgZmlsZSBpcyBub3QgYWxsb3dlZC4iLCJtYXhfcmVhY2hlZCI6Ik1heGltdW0gbnVtYmVyIG9mIGZpbGVzIHJlYWNoZWQiLCJ1bmtub3duX2Vycm9yIjoiVGhlcmUgd2FzIGEgcHJvYmxlbSB3aGlsZSBzYXZpbmcgdGhlIGZpbGUgb24gdGhlIHNlcnZlciIsImN1cnJlbnRseV91cGxvYWRpbmciOiJQbGVhc2Ugd2FpdCBmb3IgdGhlIHVwbG9hZGluZyB0byBjb21wbGV0ZSIsImNhbmNlbCI6IkNhbmNlbCIsImNhbmNlbF91cGxvYWQiOiJDYW5jZWwgdGhpcyB1cGxvYWQiLCJjYW5jZWxsZWQiOiJDYW5jZWxsZWQifSwidmFycyI6eyJpbWFnZXNfdXJsIjoiaHR0cHM6XC9cL2dyYXlhbmRjby5jYVwvd3AtY29udGVudFwvcGx1Z2luc1wvZ3Jhdml0eWZvcm1zXC9pbWFnZXMifX07CnZhciBnZl9nbG9iYWwgPSB7ImdmX2N1cnJlbmN5X2NvbmZpZyI6eyJuYW1lIjoiVS5TLiBEb2xsYXIiLCJzeW1ib2xfbGVmdCI6IiQiLCJzeW1ib2xfcmlnaHQiOiIiLCJzeW1ib2xfcGFkZGluZyI6IiIsInRob3VzYW5kX3NlcGFyYXRvciI6IiwiLCJkZWNpbWFsX3NlcGFyYXRvciI6Ii4iLCJkZWNpbWFscyI6MiwiY29kZSI6IlVTRCJ9LCJiYXNlX3VybCI6Imh0dHBzOlwvXC9ncmF5YW5kY28uY2FcL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2dyYXZpdHlmb3JtcyIsIm51bWJlcl9mb3JtYXRzIjpbXSwic3Bpbm5lclVybCI6Imh0dHBzOlwvXC9ncmF5YW5kY28uY2FcL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2dyYXZpdHlmb3Jtc1wvaW1hZ2VzXC9zcGlubmVyLnN2ZyIsInZlcnNpb25faGFzaCI6IjE5YjZjMDg1MDk4YTg4ODcxOWFkMDU2MDFkM2VlZWY2Iiwic3RyaW5ncyI6eyJuZXdSb3dBZGRlZCI6Ik5ldyByb3cgYWRkZWQuIiwicm93UmVtb3ZlZCI6IlJvdyByZW1vdmVkIiwiZm9ybVNhdmVkIjoiVGhlIGZvcm0gaGFzIGJlZW4gc2F2ZWQuICBUaGUgY29udGVudCBjb250YWlucyB0aGUgbGluayB0byByZXR1cm4gYW5kIGNvbXBsZXRlIHRoZSBmb3JtLiJ9fTsKdmFyIGdmX2dsb2JhbCA9IHsiZ2ZfY3VycmVuY3lfY29uZmlnIjp7Im5hbWUiOiJVLlMuIERvbGxhciIsInN5bWJvbF9sZWZ0IjoiJCIsInN5bWJvbF9yaWdodCI6IiIsInN5bWJvbF9wYWRkaW5nIjoiIiwidGhvdXNhbmRfc2VwYXJhdG9yIjoiLCIsImRlY2ltYWxfc2VwYXJhdG9yIjoiLiIsImRlY2ltYWxzIjoyLCJjb2RlIjoiVVNEIn0sImJhc2VfdXJsIjoiaHR0cHM6XC9cL2dyYXlhbmRjby5jYVwvd3AtY29udGVudFwvcGx1Z2luc1wvZ3Jhdml0eWZvcm1zIiwibnVtYmVyX2Zvcm1hdHMiOltdLCJzcGlubmVyVXJsIjoiaHR0cHM6XC9cL2dyYXlhbmRjby5jYVwvd3AtY29udGVudFwvcGx1Z2luc1wvZ3Jhdml0eWZvcm1zXC9pbWFnZXNcL3NwaW5uZXIuc3ZnIiwidmVyc2lvbl9oYXNoIjoiMTliNmMwODUwOThhODg4NzE5YWQwNTYwMWQzZWVlZjYiLCJzdHJpbmdzIjp7Im5ld1Jvd0FkZGVkIjoiTmV3IHJvdyBhZGRlZC4iLCJyb3dSZW1vdmVkIjoiUm93IHJlbW92ZWQiLCJmb3JtU2F2ZWQiOiJUaGUgZm9ybSBoYXMgYmVlbiBzYXZlZC4gIFRoZSBjb250ZW50IGNvbnRhaW5zIHRoZSBsaW5rIHRvIHJldHVybiBhbmQgY29tcGxldGUgdGhlIGZvcm0uIn19Owp2YXIgZ2ZfZ2xvYmFsID0geyJnZl9jdXJyZW5jeV9jb25maWciOnsibmFtZSI6IlUuUy4gRG9sbGFyIiwic3ltYm9sX2xlZnQiOiIkIiwic3ltYm9sX3JpZ2h0IjoiIiwic3ltYm9sX3BhZGRpbmciOiIiLCJ0aG91c2FuZF9zZXBhcmF0b3IiOiIsIiwiZGVjaW1hbF9zZXBhcmF0b3IiOiIuIiwiZGVjaW1hbHMiOjIsImNvZGUiOiJVU0QifSwiYmFzZV91cmwiOiJodHRwczpcL1wvZ3JheWFuZGNvLmNhXC93cC1jb250ZW50XC9wbHVnaW5zXC9ncmF2aXR5Zm9ybXMiLCJudW1iZXJfZm9ybWF0cyI6W10sInNwaW5uZXJVcmwiOiJodHRwczpcL1wvZ3JheWFuZGNvLmNhXC93cC1jb250ZW50XC9wbHVnaW5zXC9ncmF2aXR5Zm9ybXNcL2ltYWdlc1wvc3Bpbm5lci5zdmciLCJ2ZXJzaW9uX2hhc2giOiIxOWI2YzA4NTA5OGE4ODg3MTlhZDA1NjAxZDNlZWVmNiIsInN0cmluZ3MiOnsibmV3Um93QWRkZWQiOiJOZXcgcm93IGFkZGVkLiIsInJvd1JlbW92ZWQiOiJSb3cgcmVtb3ZlZCIsImZvcm1TYXZlZCI6IlRoZSBmb3JtIGhhcyBiZWVuIHNhdmVkLiAgVGhlIGNvbnRlbnQgY29udGFpbnMgdGhlIGxpbmsgdG8gcmV0dXJuIGFuZCBjb21wbGV0ZSB0aGUgZm9ybS4ifX07CnZhciBnZl9nbG9iYWwgPSB7ImdmX2N1cnJlbmN5X2NvbmZpZyI6eyJuYW1lIjoiVS5TLiBEb2xsYXIiLCJzeW1ib2xfbGVmdCI6IiQiLCJzeW1ib2xfcmlnaHQiOiIiLCJzeW1ib2xfcGFkZGluZyI6IiIsInRob3VzYW5kX3NlcGFyYXRvciI6IiwiLCJkZWNpbWFsX3NlcGFyYXRvciI6Ii4iLCJkZWNpbWFscyI6MiwiY29kZSI6IlVTRCJ9LCJiYXNlX3VybCI6Imh0dHBzOlwvXC9ncmF5YW5kY28uY2FcL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2dyYXZpdHlmb3JtcyIsIm51bWJlcl9mb3JtYXRzIjpbXSwic3Bpbm5lclVybCI6Imh0dHBzOlwvXC9ncmF5YW5kY28uY2FcL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2dyYXZpdHlmb3Jtc1wvaW1hZ2VzXC9zcGlubmVyLnN2ZyIsInZlcnNpb25faGFzaCI6IjE5YjZjMDg1MDk4YTg4ODcxOWFkMDU2MDFkM2VlZWY2Iiwic3RyaW5ncyI6eyJuZXdSb3dBZGRlZCI6Ik5ldyByb3cgYWRkZWQuIiwicm93UmVtb3ZlZCI6IlJvdyByZW1vdmVkIiwiZm9ybVNhdmVkIjoiVGhlIGZvcm0gaGFzIGJlZW4gc2F2ZWQuICBUaGUgY29udGVudCBjb250YWlucyB0aGUgbGluayB0byByZXR1cm4gYW5kIGNvbXBsZXRlIHRoZSBmb3JtLiJ9fTsKLyogXV0+ICovCg==
7 ms
gravityforms.min.js
378 ms
placeholders.jquery.min.js
70 ms
utils.min.js
71 ms
vendor-theme.min.js
71 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgZ2Zvcm1fdGhlbWVfY29uZmlnID0geyJjb21tb24iOnsiZm9ybSI6eyJob25leXBvdCI6eyJ2ZXJzaW9uX2hhc2giOiIxOWI2YzA4NTA5OGE4ODg3MTlhZDA1NjAxZDNlZWVmNiJ9fX0sImhtcl9kZXYiOiIiLCJwdWJsaWNfcGF0aCI6Imh0dHBzOlwvXC9ncmF5YW5kY28uY2FcL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2dyYXZpdHlmb3Jtc1wvYXNzZXRzXC9qc1wvZGlzdFwvIn07Ci8qIF1dPiAqLwo=
6 ms
scripts-theme.min.js
72 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHsgalF1ZXJ5KGRvY3VtZW50KS5vbignZ2Zvcm1fcG9zdF9yZW5kZXInLCBmdW5jdGlvbihldmVudCwgZm9ybUlkLCBjdXJyZW50UGFnZSl7aWYoZm9ybUlkID09IDUpIHtpZih0eXBlb2YgUGxhY2Vob2xkZXJzICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgUGxhY2Vob2xkZXJzLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgICAgIH19IH0gKTtqUXVlcnkoZG9jdW1lbnQpLm9uKCdnZm9ybV9wb3N0X2NvbmRpdGlvbmFsX2xvZ2ljJywgZnVuY3Rpb24oZXZlbnQsIGZvcm1JZCwgZmllbGRzLCBpc0luaXQpe30gKSB9ICk7IAovKiBdXT4gKi8K
5 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoImdmb3JtX3ByZV9wb3N0X3JlbmRlciIsIFt7IGZvcm1JZDogIjUiLCBjdXJyZW50UGFnZTogIjEiLCBhYm9ydDogZnVuY3Rpb24oKSB7IHRoaXMucHJldmVudERlZmF1bHQoKTsgfSB9XSk7ICAgICAgICAgICAgICAgIGlmIChldmVudCAmJiBldmVudC5kZWZhdWx0UHJldmVudGVkKSB7ICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICB9ICAgICAgICBjb25zdCBnZm9ybVdyYXBwZXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggImdmb3JtX3dyYXBwZXJfNSIgKTsgICAgICAgIGlmICggZ2Zvcm1XcmFwcGVyRGl2ICkgeyAgICAgICAgICAgIGNvbnN0IHZpc2liaWxpdHlTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggInNwYW4iICk7ICAgICAgICAgICAgdmlzaWJpbGl0eVNwYW4uaWQgPSAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzUiOyAgICAgICAgICAgIGdmb3JtV3JhcHBlckRpdi5pbnNlcnRBZGphY2VudEVsZW1lbnQoICJhZnRlcmVuZCIsIHZpc2liaWxpdHlTcGFuICk7ICAgICAgICB9ICAgICAgICBjb25zdCB2aXNpYmlsaXR5VGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzUiICk7ICAgICAgICBsZXQgcG9zdFJlbmRlckZpcmVkID0gZmFsc2U7ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJQb3N0UmVuZGVyKCkgeyAgICAgICAgICAgIGlmICggcG9zdFJlbmRlckZpcmVkICkgeyAgICAgICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgfSAgICAgICAgICAgIHBvc3RSZW5kZXJGaXJlZCA9IHRydWU7ICAgICAgICAgICAgalF1ZXJ5KCBkb2N1bWVudCApLnRyaWdnZXIoICdnZm9ybV9wb3N0X3JlbmRlcicsIFs1LCAxXSApOyAgICAgICAgICAgIGdmb3JtLnV0aWxzLnRyaWdnZXIoIHsgZXZlbnQ6ICdnZm9ybS9wb3N0UmVuZGVyJywgbmF0aXZlOiBmYWxzZSwgZGF0YTogeyBmb3JtSWQ6IDUsIGN1cnJlbnRQYWdlOiAxIH0gfSApOyAgICAgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgKSB7ICAgICAgICAgICAgICAgIHZpc2liaWxpdHlUZXN0RGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHZpc2liaWxpdHlUZXN0RGl2ICk7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZnVuY3Rpb24gZGVib3VuY2UoIGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSApIHsgICAgICAgICAgICB2YXIgdGltZW91dDsgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgICAgICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDsgICAgICAgICAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTsgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApOyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTsgICAgICAgICAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgIH07ICAgICAgICB9ICAgICAgICBjb25zdCBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlciA9IGRlYm91bmNlKCBmdW5jdGlvbigpIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSwgMjAwICk7ICAgICAgICBpZiAoIHZpc2liaWxpdHlUZXN0RGl2ICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCA9PT0gbnVsbCApIHsgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCAoIG11dGF0aW9ucyApID0+IHsgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goICggbXV0YXRpb24gKSA9PiB7ICAgICAgICAgICAgICAgICAgICBpZiAoIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiB2aXNpYmlsaXR5VGVzdERpdi5vZmZzZXRQYXJlbnQgIT09IG51bGwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkVHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgIH0pOyAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoIGRvY3VtZW50LmJvZHksIHsgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSwgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwgICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdzdHlsZScsICdjbGFzcycgXSwgICAgICAgICAgICB9KTsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgdHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgIH0gICAgfSApOyAKLyogXV0+ICovCg==
5 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHsgalF1ZXJ5KGRvY3VtZW50KS5vbignZ2Zvcm1fcG9zdF9yZW5kZXInLCBmdW5jdGlvbihldmVudCwgZm9ybUlkLCBjdXJyZW50UGFnZSl7aWYoZm9ybUlkID09IDEpIHtpZih0eXBlb2YgUGxhY2Vob2xkZXJzICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgUGxhY2Vob2xkZXJzLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgICAgIH19IH0gKTtqUXVlcnkoZG9jdW1lbnQpLm9uKCdnZm9ybV9wb3N0X2NvbmRpdGlvbmFsX2xvZ2ljJywgZnVuY3Rpb24oZXZlbnQsIGZvcm1JZCwgZmllbGRzLCBpc0luaXQpe30gKSB9ICk7IAovKiBdXT4gKi8K
5 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoImdmb3JtX3ByZV9wb3N0X3JlbmRlciIsIFt7IGZvcm1JZDogIjEiLCBjdXJyZW50UGFnZTogIjEiLCBhYm9ydDogZnVuY3Rpb24oKSB7IHRoaXMucHJldmVudERlZmF1bHQoKTsgfSB9XSk7ICAgICAgICAgICAgICAgIGlmIChldmVudCAmJiBldmVudC5kZWZhdWx0UHJldmVudGVkKSB7ICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICB9ICAgICAgICBjb25zdCBnZm9ybVdyYXBwZXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggImdmb3JtX3dyYXBwZXJfMSIgKTsgICAgICAgIGlmICggZ2Zvcm1XcmFwcGVyRGl2ICkgeyAgICAgICAgICAgIGNvbnN0IHZpc2liaWxpdHlTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggInNwYW4iICk7ICAgICAgICAgICAgdmlzaWJpbGl0eVNwYW4uaWQgPSAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzEiOyAgICAgICAgICAgIGdmb3JtV3JhcHBlckRpdi5pbnNlcnRBZGphY2VudEVsZW1lbnQoICJhZnRlcmVuZCIsIHZpc2liaWxpdHlTcGFuICk7ICAgICAgICB9ICAgICAgICBjb25zdCB2aXNpYmlsaXR5VGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzEiICk7ICAgICAgICBsZXQgcG9zdFJlbmRlckZpcmVkID0gZmFsc2U7ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJQb3N0UmVuZGVyKCkgeyAgICAgICAgICAgIGlmICggcG9zdFJlbmRlckZpcmVkICkgeyAgICAgICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgfSAgICAgICAgICAgIHBvc3RSZW5kZXJGaXJlZCA9IHRydWU7ICAgICAgICAgICAgalF1ZXJ5KCBkb2N1bWVudCApLnRyaWdnZXIoICdnZm9ybV9wb3N0X3JlbmRlcicsIFsxLCAxXSApOyAgICAgICAgICAgIGdmb3JtLnV0aWxzLnRyaWdnZXIoIHsgZXZlbnQ6ICdnZm9ybS9wb3N0UmVuZGVyJywgbmF0aXZlOiBmYWxzZSwgZGF0YTogeyBmb3JtSWQ6IDEsIGN1cnJlbnRQYWdlOiAxIH0gfSApOyAgICAgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgKSB7ICAgICAgICAgICAgICAgIHZpc2liaWxpdHlUZXN0RGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHZpc2liaWxpdHlUZXN0RGl2ICk7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZnVuY3Rpb24gZGVib3VuY2UoIGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSApIHsgICAgICAgICAgICB2YXIgdGltZW91dDsgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgICAgICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDsgICAgICAgICAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTsgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApOyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTsgICAgICAgICAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgIH07ICAgICAgICB9ICAgICAgICBjb25zdCBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlciA9IGRlYm91bmNlKCBmdW5jdGlvbigpIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSwgMjAwICk7ICAgICAgICBpZiAoIHZpc2liaWxpdHlUZXN0RGl2ICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCA9PT0gbnVsbCApIHsgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCAoIG11dGF0aW9ucyApID0+IHsgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goICggbXV0YXRpb24gKSA9PiB7ICAgICAgICAgICAgICAgICAgICBpZiAoIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiB2aXNpYmlsaXR5VGVzdERpdi5vZmZzZXRQYXJlbnQgIT09IG51bGwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkVHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgIH0pOyAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoIGRvY3VtZW50LmJvZHksIHsgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSwgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwgICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdzdHlsZScsICdjbGFzcycgXSwgICAgICAgICAgICB9KTsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgdHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgIH0gICAgfSApOyAKLyogXV0+ICovCg==
5 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHsgalF1ZXJ5KGRvY3VtZW50KS5vbignZ2Zvcm1fcG9zdF9yZW5kZXInLCBmdW5jdGlvbihldmVudCwgZm9ybUlkLCBjdXJyZW50UGFnZSl7aWYoZm9ybUlkID09IDIpIHtpZih0eXBlb2YgUGxhY2Vob2xkZXJzICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgUGxhY2Vob2xkZXJzLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgICAgIH19IH0gKTtqUXVlcnkoZG9jdW1lbnQpLm9uKCdnZm9ybV9wb3N0X2NvbmRpdGlvbmFsX2xvZ2ljJywgZnVuY3Rpb24oZXZlbnQsIGZvcm1JZCwgZmllbGRzLCBpc0luaXQpe30gKSB9ICk7IAovKiBdXT4gKi8K
4 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoImdmb3JtX3ByZV9wb3N0X3JlbmRlciIsIFt7IGZvcm1JZDogIjIiLCBjdXJyZW50UGFnZTogIjEiLCBhYm9ydDogZnVuY3Rpb24oKSB7IHRoaXMucHJldmVudERlZmF1bHQoKTsgfSB9XSk7ICAgICAgICAgICAgICAgIGlmIChldmVudCAmJiBldmVudC5kZWZhdWx0UHJldmVudGVkKSB7ICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICB9ICAgICAgICBjb25zdCBnZm9ybVdyYXBwZXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggImdmb3JtX3dyYXBwZXJfMiIgKTsgICAgICAgIGlmICggZ2Zvcm1XcmFwcGVyRGl2ICkgeyAgICAgICAgICAgIGNvbnN0IHZpc2liaWxpdHlTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggInNwYW4iICk7ICAgICAgICAgICAgdmlzaWJpbGl0eVNwYW4uaWQgPSAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzIiOyAgICAgICAgICAgIGdmb3JtV3JhcHBlckRpdi5pbnNlcnRBZGphY2VudEVsZW1lbnQoICJhZnRlcmVuZCIsIHZpc2liaWxpdHlTcGFuICk7ICAgICAgICB9ICAgICAgICBjb25zdCB2aXNpYmlsaXR5VGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzIiICk7ICAgICAgICBsZXQgcG9zdFJlbmRlckZpcmVkID0gZmFsc2U7ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJQb3N0UmVuZGVyKCkgeyAgICAgICAgICAgIGlmICggcG9zdFJlbmRlckZpcmVkICkgeyAgICAgICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgfSAgICAgICAgICAgIHBvc3RSZW5kZXJGaXJlZCA9IHRydWU7ICAgICAgICAgICAgalF1ZXJ5KCBkb2N1bWVudCApLnRyaWdnZXIoICdnZm9ybV9wb3N0X3JlbmRlcicsIFsyLCAxXSApOyAgICAgICAgICAgIGdmb3JtLnV0aWxzLnRyaWdnZXIoIHsgZXZlbnQ6ICdnZm9ybS9wb3N0UmVuZGVyJywgbmF0aXZlOiBmYWxzZSwgZGF0YTogeyBmb3JtSWQ6IDIsIGN1cnJlbnRQYWdlOiAxIH0gfSApOyAgICAgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgKSB7ICAgICAgICAgICAgICAgIHZpc2liaWxpdHlUZXN0RGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHZpc2liaWxpdHlUZXN0RGl2ICk7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZnVuY3Rpb24gZGVib3VuY2UoIGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSApIHsgICAgICAgICAgICB2YXIgdGltZW91dDsgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgICAgICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDsgICAgICAgICAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTsgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApOyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTsgICAgICAgICAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgIH07ICAgICAgICB9ICAgICAgICBjb25zdCBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlciA9IGRlYm91bmNlKCBmdW5jdGlvbigpIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSwgMjAwICk7ICAgICAgICBpZiAoIHZpc2liaWxpdHlUZXN0RGl2ICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCA9PT0gbnVsbCApIHsgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCAoIG11dGF0aW9ucyApID0+IHsgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goICggbXV0YXRpb24gKSA9PiB7ICAgICAgICAgICAgICAgICAgICBpZiAoIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiB2aXNpYmlsaXR5VGVzdERpdi5vZmZzZXRQYXJlbnQgIT09IG51bGwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkVHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgIH0pOyAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoIGRvY3VtZW50LmJvZHksIHsgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSwgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwgICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdzdHlsZScsICdjbGFzcycgXSwgICAgICAgICAgICB9KTsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgdHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgIH0gICAgfSApOyAKLyogXV0+ICovCg==
5 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHsgalF1ZXJ5KGRvY3VtZW50KS5vbignZ2Zvcm1fcG9zdF9yZW5kZXInLCBmdW5jdGlvbihldmVudCwgZm9ybUlkLCBjdXJyZW50UGFnZSl7aWYoZm9ybUlkID09IDMpIHtpZih0eXBlb2YgUGxhY2Vob2xkZXJzICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgUGxhY2Vob2xkZXJzLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgICAgIH19IH0gKTtqUXVlcnkoZG9jdW1lbnQpLm9uKCdnZm9ybV9wb3N0X2NvbmRpdGlvbmFsX2xvZ2ljJywgZnVuY3Rpb24oZXZlbnQsIGZvcm1JZCwgZmllbGRzLCBpc0luaXQpe30gKSB9ICk7IAovKiBdXT4gKi8K
4 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoImdmb3JtX3ByZV9wb3N0X3JlbmRlciIsIFt7IGZvcm1JZDogIjMiLCBjdXJyZW50UGFnZTogIjEiLCBhYm9ydDogZnVuY3Rpb24oKSB7IHRoaXMucHJldmVudERlZmF1bHQoKTsgfSB9XSk7ICAgICAgICAgICAgICAgIGlmIChldmVudCAmJiBldmVudC5kZWZhdWx0UHJldmVudGVkKSB7ICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICB9ICAgICAgICBjb25zdCBnZm9ybVdyYXBwZXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggImdmb3JtX3dyYXBwZXJfMyIgKTsgICAgICAgIGlmICggZ2Zvcm1XcmFwcGVyRGl2ICkgeyAgICAgICAgICAgIGNvbnN0IHZpc2liaWxpdHlTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggInNwYW4iICk7ICAgICAgICAgICAgdmlzaWJpbGl0eVNwYW4uaWQgPSAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzMiOyAgICAgICAgICAgIGdmb3JtV3JhcHBlckRpdi5pbnNlcnRBZGphY2VudEVsZW1lbnQoICJhZnRlcmVuZCIsIHZpc2liaWxpdHlTcGFuICk7ICAgICAgICB9ICAgICAgICBjb25zdCB2aXNpYmlsaXR5VGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzMiICk7ICAgICAgICBsZXQgcG9zdFJlbmRlckZpcmVkID0gZmFsc2U7ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJQb3N0UmVuZGVyKCkgeyAgICAgICAgICAgIGlmICggcG9zdFJlbmRlckZpcmVkICkgeyAgICAgICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgfSAgICAgICAgICAgIHBvc3RSZW5kZXJGaXJlZCA9IHRydWU7ICAgICAgICAgICAgalF1ZXJ5KCBkb2N1bWVudCApLnRyaWdnZXIoICdnZm9ybV9wb3N0X3JlbmRlcicsIFszLCAxXSApOyAgICAgICAgICAgIGdmb3JtLnV0aWxzLnRyaWdnZXIoIHsgZXZlbnQ6ICdnZm9ybS9wb3N0UmVuZGVyJywgbmF0aXZlOiBmYWxzZSwgZGF0YTogeyBmb3JtSWQ6IDMsIGN1cnJlbnRQYWdlOiAxIH0gfSApOyAgICAgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgKSB7ICAgICAgICAgICAgICAgIHZpc2liaWxpdHlUZXN0RGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHZpc2liaWxpdHlUZXN0RGl2ICk7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZnVuY3Rpb24gZGVib3VuY2UoIGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSApIHsgICAgICAgICAgICB2YXIgdGltZW91dDsgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgICAgICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDsgICAgICAgICAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTsgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApOyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTsgICAgICAgICAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgIH07ICAgICAgICB9ICAgICAgICBjb25zdCBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlciA9IGRlYm91bmNlKCBmdW5jdGlvbigpIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSwgMjAwICk7ICAgICAgICBpZiAoIHZpc2liaWxpdHlUZXN0RGl2ICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCA9PT0gbnVsbCApIHsgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCAoIG11dGF0aW9ucyApID0+IHsgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goICggbXV0YXRpb24gKSA9PiB7ICAgICAgICAgICAgICAgICAgICBpZiAoIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiB2aXNpYmlsaXR5VGVzdERpdi5vZmZzZXRQYXJlbnQgIT09IG51bGwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkVHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgIH0pOyAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoIGRvY3VtZW50LmJvZHksIHsgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSwgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwgICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdzdHlsZScsICdjbGFzcycgXSwgICAgICAgICAgICB9KTsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgdHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgIH0gICAgfSApOyAKLyogXV0+ICovCg==
4 ms
javascript;base64,Cgljb25zdCBtZW51ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI21lbnUtbWFpbi1uYXZpZ2F0aW9uJyk7CiAgY29uc3QgbWVudUZvb3RlckxlZnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbWVudS1mb290ZXItbGVmdCcpOwogIGNvbnN0IG1lbnVGb290ZXJNaWRkbGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbWVudS1mb290ZXItbWlkZGxlJyk7CiAgY29uc3QgbWVudUZvb3RlclJpZ2h0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI21lbnUtZm9vdGVyLXJpZ2h0Jyk7Cgljb25zdCBkcm9wZG93blBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtZW51LW1haW4tbmF2aWdhdGlvbiAjbWVudS1pdGVtLTE2IGFbaHJlZj0iIyJdJyk7Cgljb25zdCBzZWFyY2hCYXJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNlYXJjaC1iYXInKTsKCWNvbnN0IG5ld3NsZXR0ZXJJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbnB1dF8xXzEnKTsKCWNvbnN0IG5ld3NsZXR0ZXJJbnB1dFNlY29uZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbnB1dF8yXzEnKTsKCWNvbnN0IGhlcm9TbGlkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVyby1pbWFnZXMnKTsKCglpZiAobWVudSkgewoJCW1lbnUuc2V0QXR0cmlidXRlKCdyb2xlJywgJ21lbnUnKTsKCX0KCiAgaWYgKG1lbnVGb290ZXJMZWZ0KSB7CgkJbWVudUZvb3RlckxlZnQuc2V0QXR0cmlidXRlKCdyb2xlJywgJ21lbnUnKTsKCX0KCiAgaWYgKG1lbnVGb290ZXJNaWRkbGUpIHsKCQltZW51Rm9vdGVyTWlkZGxlLnNldEF0dHJpYnV0ZSgncm9sZScsICdtZW51Jyk7Cgl9CgogIGlmIChtZW51Rm9vdGVyUmlnaHQpIHsKCQltZW51Rm9vdGVyUmlnaHQuc2V0QXR0cmlidXRlKCdyb2xlJywgJ21lbnUnKTsKCX0KCglpZiAoZHJvcGRvd25QYXJlbnQpIHsKCQlkcm9wZG93blBhcmVudC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnYnV0dG9uJyk7Cgl9CgoJaWYgKHNlYXJjaEJhcnMpIHsKCQlzZWFyY2hCYXJzLmZvckVhY2goYmFyID0+IHsKCQkJY29uc3QgZm9ybSA9IGJhci5xdWVyeVNlbGVjdG9yKCdmb3JtJyk7CgkJCWNvbnN0IGlucHV0ID0gYmFyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7CgoJCQlpZiAoZm9ybSkgewoJCQkJZm9ybS5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnc2VhcmNoJyk7CgkJCX0KCgkJCWlmIChpbnB1dCkgewoJCQkJaW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ1NlYXJjaCBzaXRlJyk7CgkJCX0KCQl9KTsKCX0KCglpZiAobmV3c2xldHRlcklucHV0KSB7CgkJbmV3c2xldHRlcklucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS1yZXF1aXJlZCcsICd0cnVlJyk7Cgl9CgoJaWYgKG5ld3NsZXR0ZXJJbnB1dFNlY29uZCkgewoJCW5ld3NsZXR0ZXJJbnB1dFNlY29uZC5zZXRBdHRyaWJ1dGUoJ2FyaWEtcmVxdWlyZWQnLCAndHJ1ZScpOwoJfQoKCWlmIChoZXJvU2xpZGVyKSB7CgkJY29uc3Qgc2xpZGVzID0gaGVyb1NsaWRlci5xdWVyeVNlbGVjdG9yQWxsKCcuaGVyby1pbWFnZS1iYW5uZXInKTsKCgkJaWYgKHNsaWRlcykgewoJCQlzbGlkZXMuZm9yRWFjaCgoc2xpZGUpID0+IHsKCQkJCXNsaWRlLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpOwoJCQkJY29uc29sZS5sb2coJ3Rlc3QnKTsKCQkJfSk7CgkJfQoJfQo=
3 ms
simplebar.css
20 ms
p.css
20 ms
simplebar.css
17 ms
grey.svg
37 ms
info-arrow.png
38 ms
white.svg
44 ms
instagram.svg
40 ms
linkedin.svg
40 ms
Facebook.png
38 ms
Gray-CN2024.png
42 ms
GC-Boat-Illustration.png
44 ms
Gray_Co_PJ_Slider.jpg
218 ms
hero-arrow.png
46 ms
Social-Distance.jpg
217 ms
new-logo.png
185 ms
Gray_Co_Where_North_America_Tobemor.jpg
219 ms
GrayHome-02_v3.jpg
216 ms
Gray_Co_Mallorca_Spain_Hike.jpg
231 ms
CNT-Readers-Choice-2020-sliderfooter-transparent.png
218 ms
gatherings-with-family-photo-refresh.jpg
227 ms
SA-2-LP-e1682362352968.jpg
225 ms
retreats-with-colleagues-refresh.jpg
227 ms
Gray_Co_Where_South_Africa_Thumb_Bike_4.jpg
229 ms
Gray_Co_Where_Asia_Thumb_Japan.jpg
228 ms
Gray_Co_Where_Europe_Italy_Bike_Thumb_BEST-1.jpg
232 ms
Gray_Co_Where_North_America_Thumbs_Alaska_Flight.jpg
231 ms
Gray_Co_Where_Aus_Thumb_Swim.jpg
233 ms
Gray_Co_South_America_Thumb_Argentina_Patagonia_Horses.jpg
234 ms
honey-tasting-1.webp
232 ms
Camel-Veronique.png
238 ms
Top-10-Thumb.jpg
233 ms
IMG_3802-scaled-e1668800152551.jpg
238 ms
Aman-Tokyo_Gallery_26.jpg
237 ms
instagram-secondary.svg
235 ms
linkedin-secondary.svg
234 ms
facebook-secondary.svg
239 ms
facebook.svg
302 ms
Gray-Robb2024V2.png
304 ms
d
41 ms
d
182 ms
d
214 ms
d
216 ms
d
213 ms
d
214 ms
d
217 ms
d
216 ms
d
218 ms
d
217 ms
d
219 ms
d
218 ms
d
217 ms
d
219 ms
d
218 ms
d
222 ms
d
224 ms
d
223 ms
CondeNast2023.png
269 ms
RobbReport2023.png
270 ms
CondeNast2022.png
270 ms
FTA_Member_circle_EG_v2.png
269 ms
afar_v1.png
267 ms
ATTA-Member-Badge_v5.png
268 ms
Member-white.png
267 ms
ILTMLogo_KO.png
267 ms
logo_pure_KOV2.png
267 ms
grayandco.ca accessibility score
ARIA
These are opportunities to improve the usage of ARIA in your application which may enhance the experience for users of assistive technology, like a screen reader.
Impact
Issue
[aria-*] attributes do not match their roles
[aria-hidden="true"] elements contain focusable descendents
ARIA input fields do not have accessible names
[role]s do not have all required [aria-*] attributes
ARIA IDs are not unique
Contrast
These are opportunities to improve the legibility of your content.
Impact
Issue
Background and foreground colors do not have a sufficient contrast ratio.
Navigation
These are opportunities to improve keyboard navigation in your application.
Impact
Issue
Heading elements are not in a sequentially-descending order
grayandco.ca best practices score
Trust and Safety
Impact
Issue
Does not use HTTPS
Ensure CSP is effective against XSS attacks
General
Impact
Issue
Detected JavaScript libraries
Page has valid source maps
grayandco.ca SEO score
Content Best Practices
Format your HTML in a way that enables crawlers to better understand your app’s content.
Impact
Issue
Links do not have descriptive text
Mobile Friendly
Make sure your pages are mobile friendly so users don’t have to pinch or zoom in order to read the content pages. [Learn more](https://developers.google.com/search/mobile-sites/).
Impact
Issue
Document uses legible font sizes
Tap targets are not sized appropriately
EN
EN
UTF-8
Language claimed in HTML meta tag should match the language actually used on the web page. Otherwise Grayandco.ca can be misinterpreted by Google and other search engines. Our service has detected that English is used on the page, and it matches the claimed language. Our system also found out that Grayandco.ca main page’s claimed encoding is utf-8. Use of this encoding format is the best practice as the main page visitors from all over the world won’t have any issues with symbol transcription.
grayandco.ca
Open Graph data is detected on the main page of Gray And Co. This is the best way to make the web page social media friendly. Here is how it looks like on Facebook: