11.2 sec in total
461 ms
7.4 sec
3.3 sec
Click here to check amazing Samba World Percussion content for Australia. Otherwise, check out these important facts you probably never knew about sambaworldpercussion.com
Samba World Percussion has built a reputation of being a leading importer of quality, unique, samba percussion instruments into Australia. View our online store
Visit sambaworldpercussion.comWe analyzed Sambaworldpercussion.com page load time and found that the first response time was 461 ms and then it took 10.7 sec to load all DOM resources and completely render a web page. This is a poor result, as 90% of websites can load faster.
sambaworldpercussion.com performance score
name
value
score
weighting
Value4.0 s
23/100
10%
Value16.6 s
0/100
25%
Value16.4 s
0/100
10%
Value7,020 ms
0/100
30%
Value0.006
100/100
15%
Value17.3 s
4/100
10%
461 ms
1331 ms
15 ms
491 ms
669 ms
Our browser made a total of 176 requests to load all elements on the main page. We found that 60% of them (105 requests) were addressed to the original Sambaworldpercussion.com, 27% (47 requests) were made to Fonts.gstatic.com and 11% (19 requests) were made to . The less responsive or slowest element that took the longest time to load (2.7 sec) belongs to the original domain Sambaworldpercussion.com.
Page size can be reduced by 500.2 kB (16%)
3.1 MB
2.6 MB
In fact, the total size of Sambaworldpercussion.com main page is 3.1 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. 75% 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 2.0 MB which makes up the majority of the site volume.
Potential reduce by 480.7 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 480.7 kB or 87% of the original size.
Potential reduce by 4.9 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. Samba World Percussion images are well optimized though.
Potential reduce by 14.3 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. This website has mostly compressed JavaScripts.
Potential reduce by 314 B
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. Sambaworldpercussion.com has all CSS files already compressed.
Number of requests can be reduced by 69 (64%)
107
38
The browser has sent 107 CSS, Javascripts, AJAX and image requests in order to completely render the main page of Samba World Percussion. We recommend that multiple CSS and JavaScript files should be merged into one by each type, as it can help reduce assets requests from 38 to 1 for JavaScripts and from 25 to 1 for CSS and as a result speed up the page load time.
sambaworldpercussion.com
461 ms
sambaworldpercussion.com
1331 ms
javascript;base64,V2ViRm9udENvbmZpZz17Z29vZ2xlOntmYW1pbGllczpbIlJvYm90bzoxMDAsMTAwaXRhbGljLDIwMCwyMDBpdGFsaWMsMzAwLDMwMGl0YWxpYyw0MDAsNDAwaXRhbGljLDUwMCw1MDBpdGFsaWMsNjAwLDYwMGl0YWxpYyw3MDAsNzAwaXRhbGljLDgwMCw4MDBpdGFsaWMsOTAwLDkwMGl0YWxpYyIsIlJvYm90byBTbGFiOjEwMCwxMDBpdGFsaWMsMjAwLDIwMGl0YWxpYywzMDAsMzAwaXRhbGljLDQwMCw0MDBpdGFsaWMsNTAwLDUwMGl0YWxpYyw2MDAsNjAwaXRhbGljLDcwMCw3MDBpdGFsaWMsODAwLDgwMGl0YWxpYyw5MDAsOTAwaXRhbGljIiwiT3N3YWxkOjEwMCwxMDBpdGFsaWMsMjAwLDIwMGl0YWxpYywzMDAsMzAwaXRhbGljLDQwMCw0MDBpdGFsaWMsNTAwLDUwMGl0YWxpYyw2MDAsNjAwaXRhbGljLDcwMCw3MDBpdGFsaWMsODAwLDgwMGl0YWxpYyw5MDAsOTAwaXRhbGljIiwiTW9udHNlcnJhdDoxMDAsMTAwaXRhbGljLDIwMCwyMDBpdGFsaWMsMzAwLDMwMGl0YWxpYyw0MDAsNDAwaXRhbGljLDUwMCw1MDBpdGFsaWMsNjAwLDYwMGl0YWxpYyw3MDAsNzAwaXRhbGljLDgwMCw4MDBpdGFsaWMsOTAwLDkwMGl0YWxpYyIsIk9zd2FsZDozMDAsNDAwIiwiUm9ib3RvOjMwMCw0MDAiLCJPcGVuIFNhbnM6MzAwLDQwMCIsIk1vbnRzZXJyYXQ6MzAwLDQwMCZkaXNwbGF5PXN3YXAiXX19O2lmKHR5cGVvZiBXZWJGb250PT09Im9iamVjdCImJnR5cGVvZiBXZWJGb250LmxvYWQ9PT0iZnVuY3Rpb24iKXtXZWJGb250LmxvYWQoV2ViRm9udENvbmZpZyl9
15 ms
webfontloader.min.js
491 ms
86a79717ad43529c51a88f6fbabed3f4.css
669 ms
e2a3d62514346f2b0a768c10ea6320c5.css
672 ms
ac3caebcd41d3e57a96b087ea483a234.css
888 ms
565ec2aa350fd4a15e0c7eb44f32d680.css
671 ms
1bce1ea6e965065c9fb01a4fef9ca9d3.css
673 ms
be2566f938508da383c5d0aa3a74f72c.css
704 ms
cad602993565625e6a3b8d445c0dc0d8.css
880 ms
d7b8e903f4661ae4e7336ee4e6a65aa5.css
909 ms
72b5ae4b4462eb9d08b574544293d4dc.css
927 ms
47d90c38444ec20ac750352b7ec31a05.css
930 ms
4c378888273fdeadc20338453aa5024a.css
912 ms
07dc22b9292c2eb7599160106eb6cedf.css
1091 ms
599327ef00092e89c465a2132ee174cf.css
1092 ms
a54de8ffa3e2604816d5c17b999c22a9.css
1132 ms
c7ac074879909c56eb13bab3d6f2b035.css
1321 ms
976509c02ab6b61579a1a77807b20fe9.css
1368 ms
7faf86ba194881fd246d90dae6f63da0.css
1388 ms
jquery.min.js
1376 ms
a6424dcf50184952a87fdf17e3686b5e.js
1436 ms
646166550357536b4d02321c1efbea30.js
1343 ms
javascript;base64,dmFyIHdjX2FkZF90b19jYXJ0X3BhcmFtcz17ImFqYXhfdXJsIjoiXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJ3Y19hamF4X3VybCI6IlwvP3djLWFqYXg9JSVlbmRwb2ludCUlJmVsZW1lbnRvcl9wYWdlX2lkPTE1MTExIiwiaTE4bl92aWV3X2NhcnQiOiJWaWV3IGNhcnQiLCJjYXJ0X3VybCI6Imh0dHBzOlwvXC9zYW1iYXdvcmxkcGVyY3Vzc2lvbi5jb21cL2NhcnRcLyIsImlzX2NhcnQiOiIiLCJjYXJ0X3JlZGlyZWN0X2FmdGVyX2FkZCI6Im5vIn0=
4 ms
e91da03f76036627e0b7469a58bd6d3c.js
1557 ms
4d660741fb959496215d3ec790d91037.js
1555 ms
javascript;base64,dmFyIHdvb2NvbW1lcmNlX3BhcmFtcz17ImFqYXhfdXJsIjoiXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJ3Y19hamF4X3VybCI6IlwvP3djLWFqYXg9JSVlbmRwb2ludCUlJmVsZW1lbnRvcl9wYWdlX2lkPTE1MTExIn0=
3 ms
9911e52c37efb4d24c5db4036ce761d2.js
1584 ms
zip-widget.min.js
61 ms
checkout-v1.js
115 ms
javascript;base64,dmFyIGVsX2kxM19sb2dpbl9jYXB0Y2hhPW51bGw7dmFyIGVsX2kxM19yZWdpc3Rlcl9jYXB0Y2hhPW51bGw=
2 ms
javascript;base64,KGZ1bmN0aW9uKCl7dGhpcy5fTjI9dGhpcy5fTjJ8fHtfcjpbXSxfZDpbXSxyOmZ1bmN0aW9uKCl7dGhpcy5fci5wdXNoKGFyZ3VtZW50cyl9LGQ6ZnVuY3Rpb24oKXt0aGlzLl9kLnB1c2goYXJndW1lbnRzKX19fSkuY2FsbCh3aW5kb3cpOyFmdW5jdGlvbihhKXthLmluZGV4T2YoIlNhZmFyaSIpPjAmJi0xPT09YS5pbmRleE9mKCJDaHJvbWUiKSYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCItLXNzLXNhZmFyaS1maXgtMjI1OTYyIiwiMXB4Iil9KG5hdmlnYXRvci51c2VyQWdlbnQpOyFmdW5jdGlvbihlLGksbyxyKXsoaT1lLm1hdGNoKC8oQ2hyb21lfEZpcmVmb3h8U2FmYXJpKVwvKFxkKylcLi8pKSYmKCJDaHJvbWUiPT1pWzFdP3I9K2lbMl0+PTMyOiJGaXJlZm94Ij09aVsxXT9yPStpWzJdPj02NToiU2FmYXJpIj09aVsxXSYmKG89ZS5tYXRjaCgvVmVyc2lvblwvKFxkKykvKXx8ZS5tYXRjaCgvKFxkKylbMC05X10rbGlrZSBNYWMvKSkmJihyPStvWzFdPj0xNCksciYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm4yd2VicCIpKX0obmF2aWdhdG9yLnVzZXJBZ2VudCk=
2 ms
65189454290ff9eddb2eaced53ed9f9c.js
1632 ms
b91fd698b7ea8871d1326da8ed3ee0f8.js
2073 ms
3425753609104d51a82bd2023b9f6871.js
1733 ms
859b8d0cd0dbc8c22703f856c006d1b2.js
2663 ms
87e3d402ada07d03a0e39046658a4470.js
1793 ms
javascript;base64,X04yLnIoJ2RvY3VtZW50UmVhZHknLGZ1bmN0aW9uKCl7X04yLnIoWyJkb2N1bWVudFJlYWR5Iiwic21hcnRzbGlkZXItZnJvbnRlbmQiLCJzbWFydHNsaWRlci1iYWNrZ3JvdW5kYW5pbWF0aW9uIiwiU21hcnRTbGlkZXJXaWRnZXRBcnJvd1JldmVhbCIsInNzLXNpbXBsZSJdLGZ1bmN0aW9uKCl7bmV3IF9OMi5TbWFydFNsaWRlclNpbXBsZSgnbjItc3MtMicseyJhZG1pbiI6ITEsImJhY2tncm91bmQudmlkZW8ubW9iaWxlIjoxLCJsb2FkaW5nVGltZSI6MjAwMCwicmFuZG9taXplIjp7InJhbmRvbWl6ZSI6MCwicmFuZG9taXplRmlyc3QiOjF9LCJjYWxsYmFja3MiOiIiLCJhbGlhcyI6eyJpZCI6MCwic21vb3RoU2Nyb2xsIjowLCJzbGlkZVN3aXRjaCI6MCwic2Nyb2xsIjoxfSwiYWxpZ24iOiJub3JtYWwiLCJpc0RlbGF5ZWQiOjAsInJlc3BvbnNpdmUiOnsibWVkaWFRdWVyaWVzIjp7ImFsbCI6ITEsImRlc2t0b3Bwb3J0cmFpdCI6WyIobWluLXdpZHRoOiAxMjAwcHgpIl0sInRhYmxldHBvcnRyYWl0IjpbIihvcmllbnRhdGlvbjogbGFuZHNjYXBlKSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSBhbmQgKG1pbi13aWR0aDogOTAxcHgpIiwiKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkgYW5kIChtaW4td2lkdGg6IDcwMXB4KSJdLCJtb2JpbGVwb3J0cmFpdCI6WyIob3JpZW50YXRpb246IGxhbmRzY2FwZSkgYW5kIChtYXgtd2lkdGg6IDkwMHB4KSIsIihvcmllbnRhdGlvbjogcG9ydHJhaXQpIGFuZCAobWF4LXdpZHRoOiA3MDBweCkiXX0sImJhc2UiOnsic2xpZGVPdXRlcldpZHRoIjoxMjgwLCJzbGlkZU91dGVySGVpZ2h0Ijo0NTAsInNsaWRlcldpZHRoIjoxMjgwLCJzbGlkZXJIZWlnaHQiOjQ1MCwic2xpZGVXaWR0aCI6MTI4MCwic2xpZGVIZWlnaHQiOjQ1MH0sImhpZGVPbiI6eyJkZXNrdG9wTGFuZHNjYXBlIjohMSwiZGVza3RvcFBvcnRyYWl0IjohMSwidGFibGV0TGFuZHNjYXBlIjohMSwidGFibGV0UG9ydHJhaXQiOiExLCJtb2JpbGVMYW5kc2NhcGUiOiExLCJtb2JpbGVQb3J0cmFpdCI6ITF9LCJvblJlc2l6ZUVuYWJsZWQiOiEwLCJ0eXBlIjoiZnVsbHdpZHRoIiwic2xpZGVySGVpZ2h0QmFzZWRPbiI6InJlYWwiLCJmb2N1c1VzZXIiOjEsImZvY3VzRWRnZSI6ImF1dG8iLCJicmVha3BvaW50cyI6W3siZGV2aWNlIjoidGFibGV0UG9ydHJhaXQiLCJ0eXBlIjoibWF4LXNjcmVlbi13aWR0aCIsInBvcnRyYWl0V2lkdGgiOjExOTksImxhbmRzY2FwZVdpZHRoIjoxMTk5fSx7ImRldmljZSI6Im1vYmlsZVBvcnRyYWl0IiwidHlwZSI6Im1heC1zY3JlZW4td2lkdGgiLCJwb3J0cmFpdFdpZHRoIjo3MDAsImxhbmRzY2FwZVdpZHRoIjo5MDB9XSwiZW5hYmxlZERldmljZXMiOnsiZGVza3RvcExhbmRzY2FwZSI6MCwiZGVza3RvcFBvcnRyYWl0IjoxLCJ0YWJsZXRMYW5kc2NhcGUiOjAsInRhYmxldFBvcnRyYWl0IjoxLCJtb2JpbGVMYW5kc2NhcGUiOjAsIm1vYmlsZVBvcnRyYWl0IjoxfSwic2l6ZXMiOnsiZGVza3RvcFBvcnRyYWl0Ijp7IndpZHRoIjoxMjgwLCJoZWlnaHQiOjQ1MCwibWF4IjozMDAwLCJtaW4iOjEyMDB9LCJ0YWJsZXRQb3J0cmFpdCI6eyJ3aWR0aCI6NzAxLCJoZWlnaHQiOjI0NiwiY3VzdG9tSGVpZ2h0IjohMSwibWF4IjoxMTk5LCJtaW4iOjcwMX0sIm1vYmlsZVBvcnRyYWl0Ijp7IndpZHRoIjozMjAsImhlaWdodCI6MTEyLCJjdXN0b21IZWlnaHQiOiExLCJtYXgiOjkwMCwibWluIjozMjB9fSwib3ZlcmZsb3dIaWRkZW5QYWdlIjowLCJmb2N1cyI6eyJvZmZzZXRUb3AiOiIjd3BhZG1pbmJhciIsIm9mZnNldEJvdHRvbSI6IiJ9fSwiY29udHJvbHMiOnsibW91c2V3aGVlbCI6MCwidG91Y2giOiJob3Jpem9udGFsIiwia2V5Ym9hcmQiOjEsImJsb2NrQ2Fyb3VzZWxJbnRlcmFjdGlvbiI6MX0sInBsYXlXaGVuVmlzaWJsZSI6MSwicGxheVdoZW5WaXNpYmxlQXQiOjAuNSwibGF6eUxvYWQiOjEsImxhenlMb2FkTmVpZ2hib3IiOjAsImJsb2NrcmlnaHRjbGljayI6MCwibWFpbnRhaW5TZXNzaW9uIjowLCJhdXRvcGxheSI6eyJlbmFibGVkIjoxLCJzdGFydCI6MSwiZHVyYXRpb24iOjgwMDAsImF1dG9wbGF5TG9vcCI6MSwiYWxsb3dSZVN0YXJ0IjowLCJwYXVzZSI6eyJjbGljayI6MSwibW91c2UiOiIwIiwibWVkaWFTdGFydGVkIjoxfSwicmVzdW1lIjp7ImNsaWNrIjowLCJtb3VzZSI6IjAiLCJtZWRpYUVuZGVkIjoxLCJzbGlkZWNoYW5nZWQiOjB9LCJpbnRlcnZhbCI6MSwiaW50ZXJ2YWxNb2RpZmllciI6Imxvb3AiLCJpbnRlcnZhbFNsaWRlIjoiY3VycmVudCJ9LCJwZXJzcGVjdGl2ZSI6MTAwMCwibGF5ZXJNb2RlIjp7InBsYXlPbmNlIjowLCJwbGF5Rmlyc3RMYXllciI6MSwibW9kZSI6InNraXBwYWJsZSIsImluQW5pbWF0aW9uIjoibWFpbkluRW5kIn0sInBhcmFsbGF4Ijp7ImVuYWJsZWQiOjEsIm1vYmlsZSI6MCwiaXMzRCI6MCwiYW5pbWF0ZSI6MSwiaG9yaXpvbnRhbCI6Im1vdXNlIiwidmVydGljYWwiOiJtb3VzZSIsIm9yaWdpbiI6InNsaWRlciIsInNjcm9sbG1vdmUiOiJib3RoIn0sImJhY2tncm91bmRQYXJhbGxheCI6eyJzdHJlbmd0aCI6MC4zLCJ0YWJsZXQiOjEsIm1vYmlsZSI6MH0sInBvc3RCYWNrZ3JvdW5kQW5pbWF0aW9ucyI6MCwiYmdBbmltYXRpb25zIjp7Imdsb2JhbCI6MCwiY29sb3IiOiJSR0JBKDUxLDUxLDUxLDEpIiwic3BlZWQiOiJub3JtYWwiLCJzbGlkZXMiOlt7ImFuaW1hdGlvbiI6W3sidHlwZSI6IkZsYXQiLCJ0aWxlcyI6eyJjcm9wIjohMSwiZGVsYXkiOjAsInNlcXVlbmNlIjoiRm9yd2FyZERpYWdvbmFsIn0sIm1haW4iOnsidHlwZSI6ImJvdGgiLCJkdXJhdGlvbiI6MC43NSwiY3VycmVudCI6eyJlYXNlIjoiZWFzZU91dEN1YmljIiwic2NhbGUiOjEuNSwib3BhY2l0eSI6MH0sIm5leHQiOnsiZWFzZSI6ImVhc2VPdXRDdWJpYyIsIm9wYWNpdHkiOjAsInNjYWxlIjowLjV9fSwiaW52ZXJ0Ijp7ImN1cnJlbnQiOnsic2NhbGUiOjAuNX0sIm5leHQiOnsic2NhbGUiOjEuNX19fV0sInNwZWVkIjoibm9ybWFsIiwiY29sb3IiOiJSR0JBKDUxLDUxLDUxLDEpIn0seyJhbmltYXRpb24iOlt7InR5cGUiOiJGbGF0IiwidGlsZXMiOnsiY3JvcCI6ITEsImRlbGF5IjowLCJzZXF1ZW5jZSI6IkZvcndhcmREaWFnb25hbCJ9LCJtYWluIjp7InR5cGUiOiJib3RoIiwiZHVyYXRpb24iOjAuNzUsImN1cnJlbnQiOnsiZWFzZSI6ImVhc2VPdXRDdWJpYyIsInNjYWxlIjoxLjUsIm9wYWNpdHkiOjB9LCJuZXh0Ijp7ImVhc2UiOiJlYXNlT3V0Q3ViaWMiLCJvcGFjaXR5IjowLCJzY2FsZSI6MC41fX0sImludmVydCI6eyJjdXJyZW50Ijp7InNjYWxlIjowLjV9LCJuZXh0Ijp7InNjYWxlIjoxLjV9fX1dLCJzcGVlZCI6Im5vcm1hbCIsImNvbG9yIjoiUkdCQSg1MSw1MSw1MSwxKSJ9LHsiYW5pbWF0aW9uIjpbeyJ0eXBlIjoiRmxhdCIsInRpbGVzIjp7ImNyb3AiOiExLCJkZWxheSI6MCwic2VxdWVuY2UiOiJGb3J3YXJkRGlhZ29uYWwifSwibWFpbiI6eyJ0eXBlIjoiYm90aCIsImR1cmF0aW9uIjowLjc1LCJjdXJyZW50Ijp7ImVhc2UiOiJlYXNlT3V0Q3ViaWMiLCJzY2FsZSI6MS41LCJvcGFjaXR5IjowfSwibmV4dCI6eyJlYXNlIjoiZWFzZU91dEN1YmljIiwib3BhY2l0eSI6MCwic2NhbGUiOjAuNX19LCJpbnZlcnQiOnsiY3VycmVudCI6eyJzY2FsZSI6MC41fSwibmV4dCI6eyJzY2FsZSI6MS41fX19XSwic3BlZWQiOiJub3JtYWwiLCJjb2xvciI6IlJHQkEoNTEsNTEsNTEsMSkifSx7ImFuaW1hdGlvbiI6W3sidHlwZSI6IkZsYXQiLCJ0aWxlcyI6eyJjcm9wIjohMSwiZGVsYXkiOjAsInNlcXVlbmNlIjoiRm9yd2FyZERpYWdvbmFsIn0sIm1haW4iOnsidHlwZSI6ImJvdGgiLCJkdXJhdGlvbiI6MC43NSwiY3VycmVudCI6eyJlYXNlIjoiZWFzZU91dEN1YmljIiwic2NhbGUiOjEuNSwib3BhY2l0eSI6MH0sIm5leHQiOnsiZWFzZSI6ImVhc2VPdXRDdWJpYyIsIm9wYWNpdHkiOjAsInNjYWxlIjowLjV9fSwiaW52ZXJ0Ijp7ImN1cnJlbnQiOnsic2NhbGUiOjAuNX0sIm5leHQiOnsic2NhbGUiOjEuNX19fV0sInNwZWVkIjoibm9ybWFsIiwiY29sb3IiOiJSR0JBKDUxLDUxLDUxLDEpIn0seyJhbmltYXRpb24iOlt7InR5cGUiOiJGbGF0IiwidGlsZXMiOnsiY3JvcCI6ITEsImRlbGF5IjowLCJzZXF1ZW5jZSI6IkZvcndhcmREaWFnb25hbCJ9LCJtYWluIjp7InR5cGUiOiJib3RoIiwiZHVyYXRpb24iOjAuNzUsImN1cnJlbnQiOnsiZWFzZSI6ImVhc2VPdXRDdWJpYyIsInNjYWxlIjoxLjUsIm9wYWNpdHkiOjB9LCJuZXh0Ijp7ImVhc2UiOiJlYXNlT3V0Q3ViaWMiLCJvcGFjaXR5IjowLCJzY2FsZSI6MC41fX0sImludmVydCI6eyJjdXJyZW50Ijp7InNjYWxlIjowLjV9LCJuZXh0Ijp7InNjYWxlIjoxLjV9fX1dLCJzcGVlZCI6Im5vcm1hbCIsImNvbG9yIjoiUkdCQSg1MSw1MSw1MSwxKSJ9LHsiYW5pbWF0aW9uIjpbeyJ0eXBlIjoiRmxhdCIsInRpbGVzIjp7ImNyb3AiOiExLCJkZWxheSI6MCwic2VxdWVuY2UiOiJGb3J3YXJkRGlhZ29uYWwifSwibWFpbiI6eyJ0eXBlIjoiYm90aCIsImR1cmF0aW9uIjowLjc1LCJjdXJyZW50Ijp7ImVhc2UiOiJlYXNlT3V0Q3ViaWMiLCJzY2FsZSI6MS41LCJvcGFjaXR5IjowfSwibmV4dCI6eyJlYXNlIjoiZWFzZU91dEN1YmljIiwib3BhY2l0eSI6MCwic2NhbGUiOjAuNX19LCJpbnZlcnQiOnsiY3VycmVudCI6eyJzY2FsZSI6MC41fSwibmV4dCI6eyJzY2FsZSI6MS41fX19XSwic3BlZWQiOiJub3JtYWwiLCJjb2xvciI6IlJHQkEoNTEsNTEsNTEsMSkifSx7ImFuaW1hdGlvbiI6W3sidHlwZSI6IkZsYXQiLCJ0aWxlcyI6eyJjcm9wIjohMSwiZGVsYXkiOjAsInNlcXVlbmNlIjoiRm9yd2FyZERpYWdvbmFsIn0sIm1haW4iOnsidHlwZSI6ImJvdGgiLCJkdXJhdGlvbiI6MC43NSwiY3VycmVudCI6eyJlYXNlIjoiZWFzZU91dEN1YmljIiwic2NhbGUiOjEuNSwib3BhY2l0eSI6MH0sIm5leHQiOnsiZWFzZSI6ImVhc2VPdXRDdWJpYyIsIm9wYWNpdHkiOjAsInNjYWxlIjowLjV9fSwiaW52ZXJ0Ijp7ImN1cnJlbnQiOnsic2NhbGUiOjAuNX0sIm5leHQiOnsic2NhbGUiOjEuNX19fV0sInNwZWVkIjoibm9ybWFsIiwiY29sb3IiOiJSR0JBKDUxLDUxLDUxLDEpIn0seyJhbmltYXRpb24iOlt7InR5cGUiOiJGbGF0IiwidGlsZXMiOnsiY3JvcCI6ITEsImRlbGF5IjowLCJzZXF1ZW5jZSI6IkZvcndhcmREaWFnb25hbCJ9LCJtYWluIjp7InR5cGUiOiJib3RoIiwiZHVyYXRpb24iOjAuNzUsImN1cnJlbnQiOnsiZWFzZSI6ImVhc2VPdXRDdWJpYyIsInNjYWxlIjoxLjUsIm9wYWNpdHkiOjB9LCJuZXh0Ijp7ImVhc2UiOiJlYXNlT3V0Q3ViaWMiLCJvcGFjaXR5IjowLCJzY2FsZSI6MC41fX0sImludmVydCI6eyJjdXJyZW50Ijp7InNjYWxlIjowLjV9LCJuZXh0Ijp7InNjYWxlIjoxLjV9fX1dLCJzcGVlZCI6Im5vcm1hbCIsImNvbG9yIjoiUkdCQSg1MSw1MSw1MSwxKSJ9XX0sIm1haW5hbmltYXRpb24iOnsidHlwZSI6ImZhZGUiLCJkdXJhdGlvbiI6ODAwLCJkZWxheSI6MCwiZWFzZSI6ImVhc2VPdXRRdWFkIiwic2hpZnRlZEJhY2tncm91bmRBbmltYXRpb24iOiJhdXRvIn0sImNhcm91c2VsIjoxLCJpbml0Q2FsbGJhY2tzIjpmdW5jdGlvbigpe25ldyBfTjIuU21hcnRTbGlkZXJXaWRnZXRBcnJvd1JldmVhbCh0aGlzLCJzbGlkZSIpfX0pfSl9KQ==
2 ms
d33959a4dca09b9e7da51169ab94651b.css
1795 ms
bce9085137b36437dc50993765e60a27.css
1874 ms
zip-widget.min.js
50 ms
6273b2f33d7f27b77b46a2f8e3cc3458.css
1751 ms
e96574a49eb262c5231c1847312e431d.css
1811 ms
javascript;base64,dmFyIHJlY2FwdGNoYV90cmFja19vcmRlcl9tZXRob2Q9bnVsbDt2YXIgdmVyaWZ5Q2FsbGJhY2tfb3JkZXJfdHJhY2tfbWV0aG9kPWZ1bmN0aW9uKHJlc3BvbnNlKXtpZihqUXVlcnkoIiN3b29jb21tZXJjZS1vcmRlci10cmFja2luZy1ub25jZSIpLmxlbmd0aD4wKXtpZihyZXNwb25zZS5sZW5ndGghPT0wKXtqUXVlcnkoIltuYW1lPSd0cmFjayddIikucmVtb3ZlQXR0cigidGl0bGUiKTtqUXVlcnkoIltuYW1lPSd0cmFjayddIikuYXR0cigiZGlzYWJsZWQiLCExKTtpZih0eXBlb2YgdHJhY2tpbmdfbWV0aG9kX3JlY2FwdGNoYV92ZXJpZmllZD09PSJmdW5jdGlvbiIpe3RyYWNraW5nX21ldGhvZF9yZWNhcHRjaGFfdmVyaWZpZWQocmVzcG9uc2UpfX19fTtmdW5jdGlvbiByZXJlbmRlcl9yZWNwYWNoYV90cmFja19vcmRlcigpe2lmKGpRdWVyeSgiI3dvb2NvbW1lcmNlLW9yZGVyLXRyYWNraW5nLW5vbmNlIikubGVuZ3RoPjApe2lmKHR5cGVvZiBncmVjYXB0Y2hhIT0ndW5kZWZpbmVkJyYmdHlwZW9mKGdyZWNhcHRjaGEucmVuZGVyKSE9PSd1bmRlZmluZWQnJiZyZWNhcHRjaGFfdHJhY2tfb3JkZXJfbWV0aG9kPT09bnVsbCl7alF1ZXJ5KCJbbmFtZT0ndHJhY2snXSIpLmF0dHIoImRpc2FibGVkIiwhMCk7alF1ZXJ5KCJbbmFtZT0ndHJhY2snXSIpLmF0dHIoInRpdGxlIiwiQ2FwdGNoYSBpcyBhIHJlcXVpcmVkIGZpZWxkLiIpO3RyeXtyZWNhcHRjaGFfdHJhY2tfb3JkZXJfbWV0aG9kPWdyZWNhcHRjaGEucmVuZGVyKCdnLXJlY2FwdGNoYS1vcmRlci10cmFjay1tZXRob2QnLHsnc2l0ZWtleSc6JzZMZE9rQk1VQUFBQUFLb2t5aGdYQ0NZVjBCd1FhR0ljdzA0ZTU1Rl8nLCdjYWxsYmFjayc6J3ZlcmlmeUNhbGxiYWNrX29yZGVyX3RyYWNrX21ldGhvZCd9KX1jYXRjaChlcnJvcil7fX19fQp2YXIgaW50ZXJ2YWxfNjZkYmRmOTAwYmRkYj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKGRvY3VtZW50LnJlYWR5U3RhdGU9PT0nY29tcGxldGUnKXtjbGVhckludGVydmFsKGludGVydmFsXzY2ZGJkZjkwMGJkZGIpO3ZhciByZWNhcHRjaGFfdHJhY2tfb3JkZXJfbWV0aG9kPW51bGw7aWYoalF1ZXJ5KCIjd29vY29tbWVyY2Utb3JkZXItdHJhY2tpbmctbm9uY2UiKS5sZW5ndGg+MCl7alF1ZXJ5KCJbbmFtZT0ndHJhY2snXSIpLmNsaWNrKGZ1bmN0aW9uKCl7aWYoZ3JlY2FwdGNoYS5nZXRSZXNwb25zZSgpPT0iIil7YWxlcnQoIkNhcHRjaGEgaXMgYSByZXF1aXJlZCBmaWVsZC4iKTtyZXR1cm4hMX1lbHNle3JldHVybiEwfX0pO2Z1bmN0aW9uIGNhbGxiYWNrX3JlY3BhY2hhX3RyYWNrX29yZGVyKCl7aWYodHlwZW9mIGdyZWNhcHRjaGEhPSd1bmRlZmluZWQnJiZ0eXBlb2YoZ3JlY2FwdGNoYS5yZW5kZXIpIT09J3VuZGVmaW5lZCcmJnJlY2FwdGNoYV90cmFja19vcmRlcl9tZXRob2Q9PT1udWxsKXtqUXVlcnkoIltuYW1lPSd0cmFjayddIikuYXR0cigiZGlzYWJsZWQiLCEwKTtqUXVlcnkoIltuYW1lPSd0cmFjayddIikuYXR0cigidGl0bGUiLCJDYXB0Y2hhIGlzIGEgcmVxdWlyZWQgZmllbGQuIik7dHJ5e3JlY2FwdGNoYV90cmFja19vcmRlcl9tZXRob2Q9Z3JlY2FwdGNoYS5yZW5kZXIoJ2ctcmVjYXB0Y2hhLW9yZGVyLXRyYWNrLW1ldGhvZCcseydzaXRla2V5JzonNkxkT2tCTVVBQUFBQUtva3loZ1hDQ1lWMEJ3UWFHSWN3MDRlNTVGXycsJ2NhbGxiYWNrJzondmVyaWZ5Q2FsbGJhY2tfb3JkZXJfdHJhY2tfbWV0aG9kJ30pfWNhdGNoKGVycm9yKXt9fWVsc2V7alF1ZXJ5LmdldFNjcmlwdCgiaHR0cHM6Ly93d3cucmVjYXB0Y2hhLm5ldC9yZWNhcHRjaGEvYXBpLmpzP2Zyb209aTEzX3JlY2FwdGNoYSZobD1lbiZvbmxvYWQ9cmVyZW5kZXJfcmVjcGFjaGFfdHJhY2tfb3JkZXIiLGZ1bmN0aW9uKCl7fSl9fQp2YXIgd2FpdEZvckVsX3RyYWNrPWZ1bmN0aW9uKHNlbGVjdG9yLGNhbGxiYWNrKXtpZihqUXVlcnkoIiMiK3NlbGVjdG9yKS5sZW5ndGgpe2NhbGxiYWNrX3JlY3BhY2hhX3RyYWNrX29yZGVyKCl9ZWxzZXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2FpdEZvckVsX3RyYWNrKGpRdWVyeSgiIyIrc2VsZWN0b3IpLGNhbGxiYWNrKX0sMTAwKX19O2pRdWVyeSgiW25hbWU9J3RyYWNrJ10iKS5wYXJlbnQoKS5wcmVwZW5kKGA8ZGl2IGlkPSJhZGRfY2FwdGNoYV9vcmRlcl90cmFjayIgY2xhc3M9ImFkZF9jYXB0Y2hhX29yZGVyX3RyYWNrIHdvb2NvbW1lcmNlLWZvcm0tcm93IHdvb2NvbW1lcmNlLWZvcm0tcm93LS13aWRlIGZvcm0tcm93IGZvcm0tcm93LXdpZGUiPgoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTxsYWJlbCBmb3I9InRyYWNraW5nX21ldGhvZF9jYXB0Y2hhIj5DYXB0Y2hhJm5ic3A7PHNwYW4gY2xhc3M9InJlcXVpcmVkIj4qPC9zcGFuPjwvbGFiZWw+CgkJCQkJCQkJCQkJCQkJCQkJPGRpdiBpZD0iZy1yZWNhcHRjaGEtb3JkZXItdHJhY2stbWV0aG9kIiBuYW1lPSJnLXJlY2FwdGNoYS10cmFjay1vcmRlciIgIGRhdGEtY2FsbGJhY2s9InZlcmlmeUNhbGxiYWNrX29yZGVyX3RyYWNrX21ldGhvZCIgZGF0YS1zaXRla2V5PSI2TGRPa0JNVUFBQUFBS29reWhnWENDWVYwQndRYUdJY3cwNGU1NUZfIiBkYXRhLXRoZW1lPSJsaWdodCIgZGF0YS1zaXplPSJub3JtYWwiPjwvZGl2PjwvZGl2PmApLnJlYWR5KGZ1bmN0aW9uKCl7d2FpdEZvckVsX3RyYWNrKCdnLXJlY2FwdGNoYS1vcmRlci10cmFjay1tZXRob2QnLGZ1bmN0aW9uKCl7fSl9KX19fSwxMDAp
8 ms
cD16aXBtb25leXBheW1lbnQmcm91dGU9dXBkYXRlc2Vzc2lvbic7Zm9ybURhdGEuYXBwZW5kKCJzYXZlemlwYWNjb3VudCIsdmFsdWUuY2hlY2tlZCk7Y29uc3QgcmVxdWVzdE9wdGlvbnM9e21ldGhvZDoiUE9TVCIsYm9keTpmb3JtRGF0YX07ZmV0Y2godXJsLHJlcXVlc3RPcHRpb25zKS50aGVuKHJlc3BvbnNlPT5yZXNwb25zZS5qc29uKCkpfQ==
9 ms
javascript;base64,KGZ1bmN0aW9uKCl7dmFyIGM9ZG9jdW1lbnQuYm9keS5jbGFzc05hbWU7Yz1jLnJlcGxhY2UoL3dvb2NvbW1lcmNlLW5vLWpzLywnd29vY29tbWVyY2UtanMnKTtkb2N1bWVudC5ib2R5LmNsYXNzTmFtZT1jfSkoKQ==
9 ms
4844c85d1470e924b8a6de9d4deacb1f.css
1774 ms
080b5848446c5cbcc9174752fa12c180.css
1860 ms
javascript;base64,dmFyIGFzdHJhPXsiYnJlYWtfcG9pbnQiOiI5MjEiLCJpc1J0bCI6IiIsImlzX3Njcm9sbF90b19pZCI6IiIsImlzX3Njcm9sbF90b190b3AiOiIiLCJpc19oZWFkZXJfZm9vdGVyX2J1aWxkZXJfYWN0aXZlIjoiIiwicmVzcG9uc2l2ZV9jYXJ0X2NsaWNrIjoiZmx5b3V0In0=
8 ms
javascript;base64,dmFyIGNuQXJncz17ImFqYXhVcmwiOiJodHRwczpcL1wvc2FtYmF3b3JsZHBlcmN1c3Npb24uY29tXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJub25jZSI6IjVmZjBjZmJmNjMiLCJoaWRlRWZmZWN0IjoiZmFkZSIsInBvc2l0aW9uIjoiYm90dG9tIiwib25TY3JvbGwiOiExLCJvblNjcm9sbE9mZnNldCI6MTAwLCJvbkNsaWNrIjohMSwiY29va2llTmFtZSI6ImNvb2tpZV9ub3RpY2VfYWNjZXB0ZWQiLCJjb29raWVUaW1lIjoyNTkyMDAwLCJjb29raWVUaW1lUmVqZWN0ZWQiOjI1OTIwMDAsImdsb2JhbENvb2tpZSI6ITEsInJlZGlyZWN0aW9uIjohMCwiY2FjaGUiOiEwLCJyZXZva2VDb29raWVzIjohMSwicmV2b2tlQ29va2llc09wdCI6ImF1dG9tYXRpYyJ9
8 ms
javascript;base64,dmFyIHRoaWNrYm94TDEwbj17Im5leHQiOiJOZXh0ID4iLCJwcmV2IjoiPCBQcmV2IiwiaW1hZ2UiOiJJbWFnZSIsIm9mIjoib2YiLCJjbG9zZSI6IkNsb3NlIiwibm9pZnJhbWVzIjoiVGhpcyBmZWF0dXJlIHJlcXVpcmVzIGlubGluZSBmcmFtZXMuIFlvdSBoYXZlIGlmcmFtZXMgZGlzYWJsZWQgb3IgeW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhlbS4iLCJsb2FkaW5nQW5pbWF0aW9uIjoiaHR0cHM6XC9cL3NhbWJhd29ybGRwZXJjdXNzaW9uLmNvbVwvd3AtaW5jbHVkZXNcL2pzXC90aGlja2JveFwvbG9hZGluZ0FuaW1hdGlvbi5naWYifQ==
8 ms
javascript;base64,dmFyIHdjX29yZGVyX2F0dHJpYnV0aW9uPXsicGFyYW1zIjp7ImxpZmV0aW1lIjoxLjBlLTUsInNlc3Npb24iOjMwLCJiYXNlNjQiOiExLCJhamF4dXJsIjoiaHR0cHM6XC9cL3NhbWJhd29ybGRwZXJjdXNzaW9uLmNvbVwvd3AtYWRtaW5cL2FkbWluLWFqYXgucGhwIiwicHJlZml4Ijoid2Nfb3JkZXJfYXR0cmlidXRpb25fIiwiYWxsb3dUcmFja2luZyI6ITB9LCJmaWVsZHMiOnsic291cmNlX3R5cGUiOiJjdXJyZW50LnR5cCIsInJlZmVycmVyIjoiY3VycmVudF9hZGQucmYiLCJ1dG1fY2FtcGFpZ24iOiJjdXJyZW50LmNtcCIsInV0bV9zb3VyY2UiOiJjdXJyZW50LnNyYyIsInV0bV9tZWRpdW0iOiJjdXJyZW50Lm1kbSIsInV0bV9jb250ZW50IjoiY3VycmVudC5jbnQiLCJ1dG1faWQiOiJjdXJyZW50LmlkIiwidXRtX3Rlcm0iOiJjdXJyZW50LnRybSIsInV0bV9zb3VyY2VfcGxhdGZvcm0iOiJjdXJyZW50LnBsdCIsInV0bV9jcmVhdGl2ZV9mb3JtYXQiOiJjdXJyZW50LmZtdCIsInV0bV9tYXJrZXRpbmdfdGFjdGljIjoiY3VycmVudC50Y3QiLCJzZXNzaW9uX2VudHJ5IjoiY3VycmVudF9hZGQuZXAiLCJzZXNzaW9uX3N0YXJ0X3RpbWUiOiJjdXJyZW50X2FkZC5mZCIsInNlc3Npb25fcGFnZXMiOiJzZXNzaW9uLnBncyIsInNlc3Npb25fY291bnQiOiJ1ZGF0YS52c3QiLCJ1c2VyX2FnZW50IjoidWRhdGEudWFnIn19
8 ms
javascript;base64,dmFyIEpldEVuZ2luZVNldHRpbmdzPXsiYWpheHVybCI6Imh0dHBzOlwvXC9zYW1iYXdvcmxkcGVyY3Vzc2lvbi5jb21cL3dwLWFkbWluXC9hZG1pbi1hamF4LnBocCIsImFqYXhsaXN0aW5nIjoiaHR0cHM6XC9cL3NhbWJhd29ybGRwZXJjdXNzaW9uLmNvbVwvP25vY2FjaGU9MTcyNTY4NTY0NyIsInJlc3ROb25jZSI6IjViNDY3YmU1NTAiLCJob3ZlckFjdGlvblRpbWVvdXQiOiI0MDAiLCJhZGRlZFBvc3RDU1MiOlsiMTUyODYiXX0=
8 ms
javascript;base64,d3AuaTE4bi5zZXRMb2NhbGVEYXRhKHsndGV4dCBkaXJlY3Rpb25cdTAwMDRsdHInOlsnbHRyJ119KQ==
7 ms
javascript;base64,dmFyIEVsZW1lbnRvclByb0Zyb250ZW5kQ29uZmlnPXsiYWpheHVybCI6Imh0dHBzOlwvXC9zYW1iYXdvcmxkcGVyY3Vzc2lvbi5jb21cL3dwLWFkbWluXC9hZG1pbi1hamF4LnBocCIsIm5vbmNlIjoiYTZkODQ4MzNlNiIsInVybHMiOnsiYXNzZXRzIjoiaHR0cHM6XC9cL3NhbWJhd29ybGRwZXJjdXNzaW9uLmNvbVwvd3AtY29udGVudFwvcGx1Z2luc1wvZWxlbWVudG9yLXByb1wvYXNzZXRzXC8iLCJyZXN0IjoiaHR0cHM6XC9cL3NhbWJhd29ybGRwZXJjdXNzaW9uLmNvbVwvd3AtanNvblwvIn0sInNoYXJlQnV0dG9uc05ldHdvcmtzIjp7ImZhY2Vib29rIjp7InRpdGxlIjoiRmFjZWJvb2siLCJoYXNfY291bnRlciI6ITB9LCJ0d2l0dGVyIjp7InRpdGxlIjoiVHdpdHRlciJ9LCJsaW5rZWRpbiI6eyJ0aXRsZSI6IkxpbmtlZEluIiwiaGFzX2NvdW50ZXIiOiEwfSwicGludGVyZXN0Ijp7InRpdGxlIjoiUGludGVyZXN0IiwiaGFzX2NvdW50ZXIiOiEwfSwicmVkZGl0Ijp7InRpdGxlIjoiUmVkZGl0IiwiaGFzX2NvdW50ZXIiOiEwfSwidmsiOnsidGl0bGUiOiJWSyIsImhhc19jb3VudGVyIjohMH0sIm9kbm9rbGFzc25pa2kiOnsidGl0bGUiOiJPSyIsImhhc19jb3VudGVyIjohMH0sInR1bWJsciI6eyJ0aXRsZSI6IlR1bWJsciJ9LCJkaWdnIjp7InRpdGxlIjoiRGlnZyJ9LCJza3lwZSI6eyJ0aXRsZSI6IlNreXBlIn0sInN0dW1ibGV1cG9uIjp7InRpdGxlIjoiU3R1bWJsZVVwb24iLCJoYXNfY291bnRlciI6ITB9LCJtaXgiOnsidGl0bGUiOiJNaXgifSwidGVsZWdyYW0iOnsidGl0bGUiOiJUZWxlZ3JhbSJ9LCJwb2NrZXQiOnsidGl0bGUiOiJQb2NrZXQiLCJoYXNfY291bnRlciI6ITB9LCJ4aW5nIjp7InRpdGxlIjoiWElORyIsImhhc19jb3VudGVyIjohMH0sIndoYXRzYXBwIjp7InRpdGxlIjoiV2hhdHNBcHAifSwiZW1haWwiOnsidGl0bGUiOiJFbWFpbCJ9LCJwcmludCI6eyJ0aXRsZSI6IlByaW50In19LCJ3b29jb21tZXJjZSI6eyJtZW51X2NhcnQiOnsiY2FydF9wYWdlX3VybCI6Imh0dHBzOlwvXC9zYW1iYXdvcmxkcGVyY3Vzc2lvbi5jb21cL2NhcnRcLyIsImNoZWNrb3V0X3BhZ2VfdXJsIjoiaHR0cHM6XC9cL3NhbWJhd29ybGRwZXJjdXNzaW9uLmNvbVwvY2hlY2tvdXRcLyIsImZyYWdtZW50c19ub25jZSI6IjJlYWNjYWYxNmEifX0sImZhY2Vib29rX3NkayI6eyJsYW5nIjoiZW5fQVUiLCJhcHBfaWQiOiIifSwibG90dGllIjp7ImRlZmF1bHRBbmltYXRpb25VcmwiOiJodHRwczpcL1wvc2FtYmF3b3JsZHBlcmN1c3Npb24uY29tXC93cC1jb250ZW50XC9wbHVnaW5zXC9lbGVtZW50b3ItcHJvXC9tb2R1bGVzXC9sb3R0aWVcL2Fzc2V0c1wvYW5pbWF0aW9uc1wvZGVmYXVsdC5qc29uIn19
7 ms
javascript;base64,dmFyIGVsZW1lbnRvckZyb250ZW5kQ29uZmlnPXsiZW52aXJvbm1lbnRNb2RlIjp7ImVkaXQiOiExLCJ3cFByZXZpZXciOiExLCJpc1NjcmlwdERlYnVnIjohMX0sImkxOG4iOnsic2hhcmVPbkZhY2Vib29rIjoiU2hhcmUgb24gRmFjZWJvb2siLCJzaGFyZU9uVHdpdHRlciI6IlNoYXJlIG9uIFR3aXR0ZXIiLCJwaW5JdCI6IlBpbiBpdCIsImRvd25sb2FkIjoiRG93bmxvYWQiLCJkb3dubG9hZEltYWdlIjoiRG93bmxvYWQgaW1hZ2UiLCJmdWxsc2NyZWVuIjoiRnVsbHNjcmVlbiIsInpvb20iOiJab29tIiwic2hhcmUiOiJTaGFyZSIsInBsYXlWaWRlbyI6IlBsYXkgVmlkZW8iLCJwcmV2aW91cyI6IlByZXZpb3VzIiwibmV4dCI6Ik5leHQiLCJjbG9zZSI6IkNsb3NlIn0sImlzX3J0bCI6ITEsImJyZWFrcG9pbnRzIjp7InhzIjowLCJzbSI6NDgwLCJtZCI6NzY4LCJsZyI6MTAyNSwieGwiOjE0NDAsInh4bCI6MTYwMH0sInJlc3BvbnNpdmUiOnsiYnJlYWtwb2ludHMiOnsibW9iaWxlIjp7ImxhYmVsIjoiTW9iaWxlIFBvcnRyYWl0IiwidmFsdWUiOjc2NywiZGVmYXVsdF92YWx1ZSI6NzY3LCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjohMH0sIm1vYmlsZV9leHRyYSI6eyJsYWJlbCI6Ik1vYmlsZSBMYW5kc2NhcGUiLCJ2YWx1ZSI6ODgwLCJkZWZhdWx0X3ZhbHVlIjo4ODAsImRpcmVjdGlvbiI6Im1heCIsImlzX2VuYWJsZWQiOiExfSwidGFibGV0Ijp7ImxhYmVsIjoiVGFibGV0IFBvcnRyYWl0IiwidmFsdWUiOjEwMjQsImRlZmF1bHRfdmFsdWUiOjEwMjQsImRpcmVjdGlvbiI6Im1heCIsImlzX2VuYWJsZWQiOiEwfSwidGFibGV0X2V4dHJhIjp7ImxhYmVsIjoiVGFibGV0IExhbmRzY2FwZSIsInZhbHVlIjoxMjAwLCJkZWZhdWx0X3ZhbHVlIjoxMjAwLCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjohMX0sImxhcHRvcCI6eyJsYWJlbCI6IkxhcHRvcCIsInZhbHVlIjoxMzY2LCJkZWZhdWx0X3ZhbHVlIjoxMzY2LCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjohMX0sIndpZGVzY3JlZW4iOnsibGFiZWwiOiJXaWRlc2NyZWVuIiwidmFsdWUiOjI0MDAsImRlZmF1bHRfdmFsdWUiOjI0MDAsImRpcmVjdGlvbiI6Im1pbiIsImlzX2VuYWJsZWQiOiExfX19LCJ2ZXJzaW9uIjoiMy4xMi4yIiwiaXNfc3RhdGljIjohMSwiZXhwZXJpbWVudGFsRmVhdHVyZXMiOnsiZV9kb21fb3B0aW1pemF0aW9uIjohMCwiZV9vcHRpbWl6ZWRfYXNzZXRzX2xvYWRpbmciOiEwLCJlX29wdGltaXplZF9jc3NfbG9hZGluZyI6ITAsImVfZm9udF9pY29uX3N2ZyI6ITAsImExMXlfaW1wcm92ZW1lbnRzIjohMCwiZm9ybS1zdWJtaXNzaW9ucyI6ITB9LCJ1cmxzIjp7ImFzc2V0cyI6Imh0dHBzOlwvXC9zYW1iYXdvcmxkcGVyY3Vzc2lvbi5jb21cL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2VsZW1lbnRvclwvYXNzZXRzXC8ifSwic3dpcGVyQ2xhc3MiOiJzd2lwZXItY29udGFpbmVyIiwic2V0dGluZ3MiOnsicGFnZSI6W10sImVkaXRvclByZWZlcmVuY2VzIjpbXX0sImtpdCI6eyJib2R5X2JhY2tncm91bmRfYmFja2dyb3VuZCI6ImNsYXNzaWMiLCJnbG9iYWxfaW1hZ2VfbGlnaHRib3giOiJ5ZXMiLCJhY3RpdmVfYnJlYWtwb2ludHMiOlsidmlld3BvcnRfbW9iaWxlIiwidmlld3BvcnRfdGFibGV0Il0sImxpZ2h0Ym94X2VuYWJsZV9jb3VudGVyIjoieWVzIiwibGlnaHRib3hfZW5hYmxlX2Z1bGxzY3JlZW4iOiJ5ZXMiLCJsaWdodGJveF9lbmFibGVfem9vbSI6InllcyIsImxpZ2h0Ym94X2VuYWJsZV9zaGFyZSI6InllcyIsImxpZ2h0Ym94X3RpdGxlX3NyYyI6InRpdGxlIiwibGlnaHRib3hfZGVzY3JpcHRpb25fc3JjIjoiZGVzY3JpcHRpb24iLCJ3b29jb21tZXJjZV9ub3RpY2VzX2VsZW1lbnRzIjpbXX0sInBvc3QiOnsiaWQiOjE1MTExLCJ0aXRsZSI6IlNhbWJhJTIwV29ybGQlMjBQZXJjdXNzaW9uJTIwLSUyMExlYWRpbmclMjBBdXN0cmFsaWFuJTIwSW1wb3J0ZXIiLCJleGNlcnB0IjoiIiwiZmVhdHVyZWRJbWFnZSI6Imh0dHBzOlwvXC9zYW1iYXdvcmxkcGVyY3Vzc2lvbi5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMTRcLzAyXC9zYW1iYS5qcGcifX0=
8 ms
OmF8c2VsZWN0fGlucHV0fGJ1dHRvbnx0ZXh0YXJlYSkkL2kudGVzdCh0LnRhZ05hbWUpfHwodC50YWJJbmRleD0tMSksdC5mb2N1cygpKX0sITEp
8 ms
javascript;base64,alF1ZXJ5KGZ1bmN0aW9uKCQpe2pRdWVyeShmdW5jdGlvbigkKXtpZigkKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfQppZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQppZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CiQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uJykub24oJ2NoYW5nZScsZnVuY3Rpb24oKXt2YXIgc2VsVmFsdWU9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk7aWYoc2VsVmFsdWU9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJykuY2xpY2soZnVuY3Rpb24oKXtjb25zdCBlbGVtZW50cz1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtbm90aWNlJyk7Y29uc3Qgemlwc3Bpbm5lcj1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtc3Bpbm5lcicpO3doaWxlKGVsZW1lbnRzLmxlbmd0aD4wKWVsZW1lbnRzWzBdLnJlbW92ZSgpO3ZhciBjaGVja1ZhbGlkYXRlQnRuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpO2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsJzxkaXYgY2xhc3M9InppcC1zcGlubmVyIj48L2Rpdj4nKTskKCcuemlwLXNwaW5uZXInKS5hZGRDbGFzcygnaXMtYWN0aXZlJyk7dmFyIGVudmlyb25tZW50PSdwcm9kdWN0aW9uJzt2YXIgcHJpdmF0ZWtleT0nJztpZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveCcpLmlzKCc6Y2hlY2tlZCcpKXtlbnZpcm9ubWVudD0nc2FuZGJveCc7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveF9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfWVsc2V7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX0KdmFyIGRhdGE9e3ByaXZhdGVfa2V5OnByaXZhdGVrZXksZW52aXJvbm1lbnQ6ZW52aXJvbm1lbnR9O3ZhciB1cmw9WmlwQXBpS2V5Q2hlY2tVcmw7JC5wb3N0KHVybCxkYXRhLGZ1bmN0aW9uKHJlc3BvbnNlKXtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLHJlc3BvbnNlLm1lc3NhZ2UpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7d2hpbGUoemlwc3Bpbm5lci5sZW5ndGg+MCl6aXBzcGlubmVyWzBdLnJlbW92ZSgpO30pfSk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpOyQoJy5jaGVja19wcml2YXRlX2tleScpLmF0dHIoJ3ZhbHVlJywnQ2hlY2sgUHJpdmF0ZSBLZXkgdmFsaWRhdGlvbicpfSk7alF1ZXJ5KCcuZHJvcGRvd25fcHJvZHVjdF9jYXQnKS5vbignY2hhbmdlJyxmdW5jdGlvbigpe2lmKGpRdWVyeSh0aGlzKS52YWwoKSE9Jycpe3ZhciB0aGlzX3BhZ2U9Jyc7dmFyIGhvbWVfdXJsPSdodHRwczovL3NhbWJhd29ybGRwZXJjdXNzaW9uLmNvbS8nO2lmKGhvbWVfdXJsLmluZGV4T2YoJz8nKT4wKXt0aGlzX3BhZ2U9aG9tZV91cmwrJyZwcm9kdWN0X2NhdD0nK2pRdWVyeSh0aGlzKS52YWwoKX1lbHNle3RoaXNfcGFnZT1ob21lX3VybCsnP3Byb2R1Y3RfY2F0PScralF1ZXJ5KHRoaXMpLnZhbCgpfQpsb2NhdGlvbi5ocmVmPXRoaXNfcGFnZX1lbHNle2xvY2F0aW9uLmhyZWY9J2h0dHBzOi8vc2FtYmF3b3JsZHBlcmN1c3Npb24uY29tL211c2ljLXNob3AvJ319KTtpZihqUXVlcnkoKS5zZWxlY3RXb28pe3ZhciB3Y19wcm9kdWN0X2NhdF9zZWxlY3Q9ZnVuY3Rpb24oKXtqUXVlcnkoJy5kcm9wZG93bl9wcm9kdWN0X2NhdCcpLnNlbGVjdFdvbyh7cGxhY2Vob2xkZXI6J1NlbGVjdCBhIGNhdGVnb3J5JyxtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDo1LHdpZHRoOicxMDAlJyxhbGxvd0NsZWFyOiEwLGxhbmd1YWdlOntub1Jlc3VsdHM6ZnVuY3Rpb24oKXtyZXR1cm4nTm8gbWF0Y2hlcyBmb3VuZCd9fX0pfTt3Y19wcm9kdWN0X2NhdF9zZWxlY3QoKX0KalF1ZXJ5KGZ1bmN0aW9uKCQpe2lmKCQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCl9CmlmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CmlmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24nKS5vbignY2hhbmdlJyxmdW5jdGlvbigpe3ZhciBzZWxWYWx1ZT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKTtpZihzZWxWYWx1ZT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKS5jbGljayhmdW5jdGlvbigpe2NvbnN0IGVsZW1lbnRzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1ub3RpY2UnKTtjb25zdCB6aXBzcGlubmVyPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1zcGlubmVyJyk7d2hpbGUoZWxlbWVudHMubGVuZ3RoPjApZWxlbWVudHNbMF0ucmVtb3ZlKCk7dmFyIGNoZWNrVmFsaWRhdGVCdG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJyk7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywnPGRpdiBjbGFzcz0iemlwLXNwaW5uZXIiPjwvZGl2PicpOyQoJy56aXAtc3Bpbm5lcicpLmFkZENsYXNzKCdpcy1hY3RpdmUnKTt2YXIgZW52aXJvbm1lbnQ9J3Byb2R1Y3Rpb24nO3ZhciBwcml2YXRla2V5PScnO2lmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94JykuaXMoJzpjaGVja2VkJykpe2Vudmlyb25tZW50PSdzYW5kYm94Jztwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9ZWxzZXtwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfQp2YXIgZGF0YT17cHJpdmF0ZV9rZXk6cHJpdmF0ZWtleSxlbnZpcm9ubWVudDplbnZpcm9ubWVudH07dmFyIHVybD1aaXBBcGlLZXlDaGVja1VybDskLnBvc3QodXJsLGRhdGEsZnVuY3Rpb24ocmVzcG9uc2Upe2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcscmVzcG9uc2UubWVzc2FnZSl9KS5hbHdheXMoZnVuY3Rpb24oKXt3aGlsZSh6aXBzcGlubmVyLmxlbmd0aD4wKXppcHNwaW5uZXJbMF0ucmVtb3ZlKCk7fSl9KTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyk7JCgnLmNoZWNrX3ByaXZhdGVfa2V5JykuYXR0cigndmFsdWUnLCdDaGVjayBQcml2YXRlIEtleSB2YWxpZGF0aW9uJyl9KTtqUXVlcnkoZnVuY3Rpb24oJCl7aWYoJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKX0KaWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KaWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQokKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbicpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7dmFyIHNlbFZhbHVlPSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpO2lmKHNlbFZhbHVlPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpLmNsaWNrKGZ1bmN0aW9uKCl7Y29uc3QgZWxlbWVudHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLW5vdGljZScpO2NvbnN0IHppcHNwaW5uZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLXNwaW5uZXInKTt3aGlsZShlbGVtZW50cy5sZW5ndGg+MCllbGVtZW50c1swXS5yZW1vdmUoKTt2YXIgY2hlY2tWYWxpZGF0ZUJ0bj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKTtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLCc8ZGl2IGNsYXNzPSJ6aXAtc3Bpbm5lciI+PC9kaXY+Jyk7JCgnLnppcC1zcGlubmVyJykuYWRkQ2xhc3MoJ2lzLWFjdGl2ZScpO3ZhciBlbnZpcm9ubWVudD0ncHJvZHVjdGlvbic7dmFyIHByaXZhdGVrZXk9Jyc7aWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3gnKS5pcygnOmNoZWNrZWQnKSl7ZW52aXJvbm1lbnQ9J3NhbmRib3gnO3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3hfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX1lbHNle3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9CnZhciBkYXRhPXtwcml2YXRlX2tleTpwcml2YXRla2V5LGVudmlyb25tZW50OmVudmlyb25tZW50fTt2YXIgdXJsPVppcEFwaUtleUNoZWNrVXJsOyQucG9zdCh1cmwsZGF0YSxmdW5jdGlvbihyZXNwb25zZSl7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJyxyZXNwb25zZS5tZXNzYWdlKX0pLmFsd2F5cyhmdW5jdGlvbigpe3doaWxlKHppcHNwaW5uZXIubGVuZ3RoPjApemlwc3Bpbm5lclswXS5yZW1vdmUoKTt9KX0pOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKTskKCcuY2hlY2tfcHJpdmF0ZV9rZXknKS5hdHRyKCd2YWx1ZScsJ0NoZWNrIFByaXZhdGUgS2V5IHZhbGlkYXRpb24nKX0pO2pRdWVyeShmdW5jdGlvbigkKXtpZigkKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfQppZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQppZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CiQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uJykub24oJ2NoYW5nZScsZnVuY3Rpb24oKXt2YXIgc2VsVmFsdWU9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk7aWYoc2VsVmFsdWU9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJykuY2xpY2soZnVuY3Rpb24oKXtjb25zdCBlbGVtZW50cz1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtbm90aWNlJyk7Y29uc3Qgemlwc3Bpbm5lcj1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtc3Bpbm5lcicpO3doaWxlKGVsZW1lbnRzLmxlbmd0aD4wKWVsZW1lbnRzWzBdLnJlbW92ZSgpO3ZhciBjaGVja1ZhbGlkYXRlQnRuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpO2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsJzxkaXYgY2xhc3M9InppcC1zcGlubmVyIj48L2Rpdj4nKTskKCcuemlwLXNwaW5uZXInKS5hZGRDbGFzcygnaXMtYWN0aXZlJyk7dmFyIGVudmlyb25tZW50PSdwcm9kdWN0aW9uJzt2YXIgcHJpdmF0ZWtleT0nJztpZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveCcpLmlzKCc6Y2hlY2tlZCcpKXtlbnZpcm9ubWVudD0nc2FuZGJveCc7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveF9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfWVsc2V7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX0KdmFyIGRhdGE9e3ByaXZhdGVfa2V5OnByaXZhdGVrZXksZW52aXJvbm1lbnQ6ZW52aXJvbm1lbnR9O3ZhciB1cmw9WmlwQXBpS2V5Q2hlY2tVcmw7JC5wb3N0KHVybCxkYXRhLGZ1bmN0aW9uKHJlc3BvbnNlKXtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLHJlc3BvbnNlLm1lc3NhZ2UpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7d2hpbGUoemlwc3Bpbm5lci5sZW5ndGg+MCl6aXBzcGlubmVyWzBdLnJlbW92ZSgpO30pfSk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpOyQoJy5jaGVja19wcml2YXRlX2tleScpLmF0dHIoJ3ZhbHVlJywnQ2hlY2sgUHJpdmF0ZSBLZXkgdmFsaWRhdGlvbicpfSk7alF1ZXJ5KGZ1bmN0aW9uKCQpe2lmKCQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCl9CmlmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CmlmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24nKS5vbignY2hhbmdlJyxmdW5jdGlvbigpe3ZhciBzZWxWYWx1ZT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKTtpZihzZWxWYWx1ZT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKS5jbGljayhmdW5jdGlvbigpe2NvbnN0IGVsZW1lbnRzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1ub3RpY2UnKTtjb25zdCB6aXBzcGlubmVyPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1zcGlubmVyJyk7d2hpbGUoZWxlbWVudHMubGVuZ3RoPjApZWxlbWVudHNbMF0ucmVtb3ZlKCk7dmFyIGNoZWNrVmFsaWRhdGVCdG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJyk7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywnPGRpdiBjbGFzcz0iemlwLXNwaW5uZXIiPjwvZGl2PicpOyQoJy56aXAtc3Bpbm5lcicpLmFkZENsYXNzKCdpcy1hY3RpdmUnKTt2YXIgZW52aXJvbm1lbnQ9J3Byb2R1Y3Rpb24nO3ZhciBwcml2YXRla2V5PScnO2lmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94JykuaXMoJzpjaGVja2VkJykpe2Vudmlyb25tZW50PSdzYW5kYm94Jztwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9ZWxzZXtwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfQp2YXIgZGF0YT17cHJpdmF0ZV9rZXk6cHJpdmF0ZWtleSxlbnZpcm9ubWVudDplbnZpcm9ubWVudH07dmFyIHVybD1aaXBBcGlLZXlDaGVja1VybDskLnBvc3QodXJsLGRhdGEsZnVuY3Rpb24ocmVzcG9uc2Upe2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcscmVzcG9uc2UubWVzc2FnZSl9KS5hbHdheXMoZnVuY3Rpb24oKXt3aGlsZSh6aXBzcGlubmVyLmxlbmd0aD4wKXppcHNwaW5uZXJbMF0ucmVtb3ZlKCk7fSl9KTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyk7JCgnLmNoZWNrX3ByaXZhdGVfa2V5JykuYXR0cigndmFsdWUnLCdDaGVjayBQcml2YXRlIEtleSB2YWxpZGF0aW9uJyl9KTtqUXVlcnkoZnVuY3Rpb24oJCl7aWYoJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKX0KaWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KaWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQokKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbicpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7dmFyIHNlbFZhbHVlPSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpO2lmKHNlbFZhbHVlPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpLmNsaWNrKGZ1bmN0aW9uKCl7Y29uc3QgZWxlbWVudHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLW5vdGljZScpO2NvbnN0IHppcHNwaW5uZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLXNwaW5uZXInKTt3aGlsZShlbGVtZW50cy5sZW5ndGg+MCllbGVtZW50c1swXS5yZW1vdmUoKTt2YXIgY2hlY2tWYWxpZGF0ZUJ0bj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKTtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLCc8ZGl2IGNsYXNzPSJ6aXAtc3Bpbm5lciI+PC9kaXY+Jyk7JCgnLnppcC1zcGlubmVyJykuYWRkQ2xhc3MoJ2lzLWFjdGl2ZScpO3ZhciBlbnZpcm9ubWVudD0ncHJvZHVjdGlvbic7dmFyIHByaXZhdGVrZXk9Jyc7aWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3gnKS5pcygnOmNoZWNrZWQnKSl7ZW52aXJvbm1lbnQ9J3NhbmRib3gnO3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3hfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX1lbHNle3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9CnZhciBkYXRhPXtwcml2YXRlX2tleTpwcml2YXRla2V5LGVudmlyb25tZW50OmVudmlyb25tZW50fTt2YXIgdXJsPVppcEFwaUtleUNoZWNrVXJsOyQucG9zdCh1cmwsZGF0YSxmdW5jdGlvbihyZXNwb25zZSl7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJyxyZXNwb25zZS5tZXNzYWdlKX0pLmFsd2F5cyhmdW5jdGlvbigpe3doaWxlKHppcHNwaW5uZXIubGVuZ3RoPjApemlwc3Bpbm5lclswXS5yZW1vdmUoKTt9KX0pOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKTskKCcuY2hlY2tfcHJpdmF0ZV9rZXknKS5hdHRyKCd2YWx1ZScsJ0NoZWNrIFByaXZhdGUgS2V5IHZhbGlkYXRpb24nKX0pO2pRdWVyeShmdW5jdGlvbigkKXtpZigkKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfQppZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQppZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CiQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uJykub24oJ2NoYW5nZScsZnVuY3Rpb24oKXt2YXIgc2VsVmFsdWU9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk7aWYoc2VsVmFsdWU9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJykuY2xpY2soZnVuY3Rpb24oKXtjb25zdCBlbGVtZW50cz1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtbm90aWNlJyk7Y29uc3Qgemlwc3Bpbm5lcj1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtc3Bpbm5lcicpO3doaWxlKGVsZW1lbnRzLmxlbmd0aD4wKWVsZW1lbnRzWzBdLnJlbW92ZSgpO3ZhciBjaGVja1ZhbGlkYXRlQnRuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpO2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsJzxkaXYgY2xhc3M9InppcC1zcGlubmVyIj48L2Rpdj4nKTskKCcuemlwLXNwaW5uZXInKS5hZGRDbGFzcygnaXMtYWN0aXZlJyk7dmFyIGVudmlyb25tZW50PSdwcm9kdWN0aW9uJzt2YXIgcHJpdmF0ZWtleT0nJztpZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveCcpLmlzKCc6Y2hlY2tlZCcpKXtlbnZpcm9ubWVudD0nc2FuZGJveCc7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveF9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfWVsc2V7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX0KdmFyIGRhdGE9e3ByaXZhdGVfa2V5OnByaXZhdGVrZXksZW52aXJvbm1lbnQ6ZW52aXJvbm1lbnR9O3ZhciB1cmw9WmlwQXBpS2V5Q2hlY2tVcmw7JC5wb3N0KHVybCxkYXRhLGZ1bmN0aW9uKHJlc3BvbnNlKXtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLHJlc3BvbnNlLm1lc3NhZ2UpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7d2hpbGUoemlwc3Bpbm5lci5sZW5ndGg+MCl6aXBzcGlubmVyWzBdLnJlbW92ZSgpO30pfSk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpOyQoJy5jaGVja19wcml2YXRlX2tleScpLmF0dHIoJ3ZhbHVlJywnQ2hlY2sgUHJpdmF0ZSBLZXkgdmFsaWRhdGlvbicpfSk7alF1ZXJ5KGZ1bmN0aW9uKCQpe2lmKCQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCl9CmlmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CmlmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24nKS5vbignY2hhbmdlJyxmdW5jdGlvbigpe3ZhciBzZWxWYWx1ZT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKTtpZihzZWxWYWx1ZT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKS5jbGljayhmdW5jdGlvbigpe2NvbnN0IGVsZW1lbnRzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1ub3RpY2UnKTtjb25zdCB6aXBzcGlubmVyPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1zcGlubmVyJyk7d2hpbGUoZWxlbWVudHMubGVuZ3RoPjApZWxlbWVudHNbMF0ucmVtb3ZlKCk7dmFyIGNoZWNrVmFsaWRhdGVCdG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJyk7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywnPGRpdiBjbGFzcz0iemlwLXNwaW5uZXIiPjwvZGl2PicpOyQoJy56aXAtc3Bpbm5lcicpLmFkZENsYXNzKCdpcy1hY3RpdmUnKTt2YXIgZW52aXJvbm1lbnQ9J3Byb2R1Y3Rpb24nO3ZhciBwcml2YXRla2V5PScnO2lmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94JykuaXMoJzpjaGVja2VkJykpe2Vudmlyb25tZW50PSdzYW5kYm94Jztwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9ZWxzZXtwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfQp2YXIgZGF0YT17cHJpdmF0ZV9rZXk6cHJpdmF0ZWtleSxlbnZpcm9ubWVudDplbnZpcm9ubWVudH07dmFyIHVybD1aaXBBcGlLZXlDaGVja1VybDskLnBvc3QodXJsLGRhdGEsZnVuY3Rpb24ocmVzcG9uc2Upe2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcscmVzcG9uc2UubWVzc2FnZSl9KS5hbHdheXMoZnVuY3Rpb24oKXt3aGlsZSh6aXBzcGlubmVyLmxlbmd0aD4wKXppcHNwaW5uZXJbMF0ucmVtb3ZlKCk7fSl9KTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyk7JCgnLmNoZWNrX3ByaXZhdGVfa2V5JykuYXR0cigndmFsdWUnLCdDaGVjayBQcml2YXRlIEtleSB2YWxpZGF0aW9uJyl9KTtqUXVlcnkoZnVuY3Rpb24oJCl7aWYoJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKX0KaWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KaWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQokKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbicpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7dmFyIHNlbFZhbHVlPSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpO2lmKHNlbFZhbHVlPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpLmNsaWNrKGZ1bmN0aW9uKCl7Y29uc3QgZWxlbWVudHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLW5vdGljZScpO2NvbnN0IHppcHNwaW5uZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLXNwaW5uZXInKTt3aGlsZShlbGVtZW50cy5sZW5ndGg+MCllbGVtZW50c1swXS5yZW1vdmUoKTt2YXIgY2hlY2tWYWxpZGF0ZUJ0bj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKTtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLCc8ZGl2IGNsYXNzPSJ6aXAtc3Bpbm5lciI+PC9kaXY+Jyk7JCgnLnppcC1zcGlubmVyJykuYWRkQ2xhc3MoJ2lzLWFjdGl2ZScpO3ZhciBlbnZpcm9ubWVudD0ncHJvZHVjdGlvbic7dmFyIHByaXZhdGVrZXk9Jyc7aWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3gnKS5pcygnOmNoZWNrZWQnKSl7ZW52aXJvbm1lbnQ9J3NhbmRib3gnO3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3hfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX1lbHNle3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9CnZhciBkYXRhPXtwcml2YXRlX2tleTpwcml2YXRla2V5LGVudmlyb25tZW50OmVudmlyb25tZW50fTt2YXIgdXJsPVppcEFwaUtleUNoZWNrVXJsOyQucG9zdCh1cmwsZGF0YSxmdW5jdGlvbihyZXNwb25zZSl7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJyxyZXNwb25zZS5tZXNzYWdlKX0pLmFsd2F5cyhmdW5jdGlvbigpe3doaWxlKHppcHNwaW5uZXIubGVuZ3RoPjApemlwc3Bpbm5lclswXS5yZW1vdmUoKTt9KX0pOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKTskKCcuY2hlY2tfcHJpdmF0ZV9rZXknKS5hdHRyKCd2YWx1ZScsJ0NoZWNrIFByaXZhdGUgS2V5IHZhbGlkYXRpb24nKX0pO2pRdWVyeShmdW5jdGlvbigkKXtpZigkKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfQppZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQppZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CiQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uJykub24oJ2NoYW5nZScsZnVuY3Rpb24oKXt2YXIgc2VsVmFsdWU9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk7aWYoc2VsVmFsdWU9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJykuY2xpY2soZnVuY3Rpb24oKXtjb25zdCBlbGVtZW50cz1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtbm90aWNlJyk7Y29uc3Qgemlwc3Bpbm5lcj1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtc3Bpbm5lcicpO3doaWxlKGVsZW1lbnRzLmxlbmd0aD4wKWVsZW1lbnRzWzBdLnJlbW92ZSgpO3ZhciBjaGVja1ZhbGlkYXRlQnRuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpO2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsJzxkaXYgY2xhc3M9InppcC1zcGlubmVyIj48L2Rpdj4nKTskKCcuemlwLXNwaW5uZXInKS5hZGRDbGFzcygnaXMtYWN0aXZlJyk7dmFyIGVudmlyb25tZW50PSdwcm9kdWN0aW9uJzt2YXIgcHJpdmF0ZWtleT0nJztpZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveCcpLmlzKCc6Y2hlY2tlZCcpKXtlbnZpcm9ubWVudD0nc2FuZGJveCc7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveF9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfWVsc2V7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX0KdmFyIGRhdGE9e3ByaXZhdGVfa2V5OnByaXZhdGVrZXksZW52aXJvbm1lbnQ6ZW52aXJvbm1lbnR9O3ZhciB1cmw9WmlwQXBpS2V5Q2hlY2tVcmw7JC5wb3N0KHVybCxkYXRhLGZ1bmN0aW9uKHJlc3BvbnNlKXtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLHJlc3BvbnNlLm1lc3NhZ2UpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7d2hpbGUoemlwc3Bpbm5lci5sZW5ndGg+MCl6aXBzcGlubmVyWzBdLnJlbW92ZSgpO30pfSk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpOyQoJy5jaGVja19wcml2YXRlX2tleScpLmF0dHIoJ3ZhbHVlJywnQ2hlY2sgUHJpdmF0ZSBLZXkgdmFsaWRhdGlvbicpfSk7alF1ZXJ5KGZ1bmN0aW9uKCQpe2lmKCQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCl9CmlmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CmlmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24nKS5vbignY2hhbmdlJyxmdW5jdGlvbigpe3ZhciBzZWxWYWx1ZT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKTtpZihzZWxWYWx1ZT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKS5jbGljayhmdW5jdGlvbigpe2NvbnN0IGVsZW1lbnRzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1ub3RpY2UnKTtjb25zdCB6aXBzcGlubmVyPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1zcGlubmVyJyk7d2hpbGUoZWxlbWVudHMubGVuZ3RoPjApZWxlbWVudHNbMF0ucmVtb3ZlKCk7dmFyIGNoZWNrVmFsaWRhdGVCdG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJyk7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywnPGRpdiBjbGFzcz0iemlwLXNwaW5uZXIiPjwvZGl2PicpOyQoJy56aXAtc3Bpbm5lcicpLmFkZENsYXNzKCdpcy1hY3RpdmUnKTt2YXIgZW52aXJvbm1lbnQ9J3Byb2R1Y3Rpb24nO3ZhciBwcml2YXRla2V5PScnO2lmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94JykuaXMoJzpjaGVja2VkJykpe2Vudmlyb25tZW50PSdzYW5kYm94Jztwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9ZWxzZXtwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfQp2YXIgZGF0YT17cHJpdmF0ZV9rZXk6cHJpdmF0ZWtleSxlbnZpcm9ubWVudDplbnZpcm9ubWVudH07dmFyIHVybD1aaXBBcGlLZXlDaGVja1VybDskLnBvc3QodXJsLGRhdGEsZnVuY3Rpb24ocmVzcG9uc2Upe2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcscmVzcG9uc2UubWVzc2FnZSl9KS5hbHdheXMoZnVuY3Rpb24oKXt3aGlsZSh6aXBzcGlubmVyLmxlbmd0aD4wKXppcHNwaW5uZXJbMF0ucmVtb3ZlKCk7fSl9KTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyk7JCgnLmNoZWNrX3ByaXZhdGVfa2V5JykuYXR0cigndmFsdWUnLCdDaGVjayBQcml2YXRlIEtleSB2YWxpZGF0aW9uJyl9KTtqUXVlcnkoZnVuY3Rpb24oJCl7aWYoJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKX0KaWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KaWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQokKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbicpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7dmFyIHNlbFZhbHVlPSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpO2lmKHNlbFZhbHVlPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpLmNsaWNrKGZ1bmN0aW9uKCl7Y29uc3QgZWxlbWVudHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLW5vdGljZScpO2NvbnN0IHppcHNwaW5uZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLXNwaW5uZXInKTt3aGlsZShlbGVtZW50cy5sZW5ndGg+MCllbGVtZW50c1swXS5yZW1vdmUoKTt2YXIgY2hlY2tWYWxpZGF0ZUJ0bj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKTtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLCc8ZGl2IGNsYXNzPSJ6aXAtc3Bpbm5lciI+PC9kaXY+Jyk7JCgnLnppcC1zcGlubmVyJykuYWRkQ2xhc3MoJ2lzLWFjdGl2ZScpO3ZhciBlbnZpcm9ubWVudD0ncHJvZHVjdGlvbic7dmFyIHByaXZhdGVrZXk9Jyc7aWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3gnKS5pcygnOmNoZWNrZWQnKSl7ZW52aXJvbm1lbnQ9J3NhbmRib3gnO3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3hfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX1lbHNle3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9CnZhciBkYXRhPXtwcml2YXRlX2tleTpwcml2YXRla2V5LGVudmlyb25tZW50OmVudmlyb25tZW50fTt2YXIgdXJsPVppcEFwaUtleUNoZWNrVXJsOyQucG9zdCh1cmwsZGF0YSxmdW5jdGlvbihyZXNwb25zZSl7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJyxyZXNwb25zZS5tZXNzYWdlKX0pLmFsd2F5cyhmdW5jdGlvbigpe3doaWxlKHppcHNwaW5uZXIubGVuZ3RoPjApemlwc3Bpbm5lclswXS5yZW1vdmUoKTt9KX0pOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKTskKCcuY2hlY2tfcHJpdmF0ZV9rZXknKS5hdHRyKCd2YWx1ZScsJ0NoZWNrIFByaXZhdGUgS2V5IHZhbGlkYXRpb24nKX0pO2pRdWVyeShmdW5jdGlvbigkKXtpZigkKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfQppZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQppZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CiQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uJykub24oJ2NoYW5nZScsZnVuY3Rpb24oKXt2YXIgc2VsVmFsdWU9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk7aWYoc2VsVmFsdWU9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJykuY2xpY2soZnVuY3Rpb24oKXtjb25zdCBlbGVtZW50cz1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtbm90aWNlJyk7Y29uc3Qgemlwc3Bpbm5lcj1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtc3Bpbm5lcicpO3doaWxlKGVsZW1lbnRzLmxlbmd0aD4wKWVsZW1lbnRzWzBdLnJlbW92ZSgpO3ZhciBjaGVja1ZhbGlkYXRlQnRuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpO2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsJzxkaXYgY2xhc3M9InppcC1zcGlubmVyIj48L2Rpdj4nKTskKCcuemlwLXNwaW5uZXInKS5hZGRDbGFzcygnaXMtYWN0aXZlJyk7dmFyIGVudmlyb25tZW50PSdwcm9kdWN0aW9uJzt2YXIgcHJpdmF0ZWtleT0nJztpZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveCcpLmlzKCc6Y2hlY2tlZCcpKXtlbnZpcm9ubWVudD0nc2FuZGJveCc7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveF9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfWVsc2V7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX0KdmFyIGRhdGE9e3ByaXZhdGVfa2V5OnByaXZhdGVrZXksZW52aXJvbm1lbnQ6ZW52aXJvbm1lbnR9O3ZhciB1cmw9WmlwQXBpS2V5Q2hlY2tVcmw7JC5wb3N0KHVybCxkYXRhLGZ1bmN0aW9uKHJlc3BvbnNlKXtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLHJlc3BvbnNlLm1lc3NhZ2UpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7d2hpbGUoemlwc3Bpbm5lci5sZW5ndGg+MCl6aXBzcGlubmVyWzBdLnJlbW92ZSgpO30pfSk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpOyQoJy5jaGVja19wcml2YXRlX2tleScpLmF0dHIoJ3ZhbHVlJywnQ2hlY2sgUHJpdmF0ZSBLZXkgdmFsaWRhdGlvbicpfSk7alF1ZXJ5KGZ1bmN0aW9uKCQpe2lmKCQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCl9CmlmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CmlmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24nKS5vbignY2hhbmdlJyxmdW5jdGlvbigpe3ZhciBzZWxWYWx1ZT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKTtpZihzZWxWYWx1ZT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKS5jbGljayhmdW5jdGlvbigpe2NvbnN0IGVsZW1lbnRzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1ub3RpY2UnKTtjb25zdCB6aXBzcGlubmVyPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1zcGlubmVyJyk7d2hpbGUoZWxlbWVudHMubGVuZ3RoPjApZWxlbWVudHNbMF0ucmVtb3ZlKCk7dmFyIGNoZWNrVmFsaWRhdGVCdG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJyk7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywnPGRpdiBjbGFzcz0iemlwLXNwaW5uZXIiPjwvZGl2PicpOyQoJy56aXAtc3Bpbm5lcicpLmFkZENsYXNzKCdpcy1hY3RpdmUnKTt2YXIgZW52aXJvbm1lbnQ9J3Byb2R1Y3Rpb24nO3ZhciBwcml2YXRla2V5PScnO2lmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94JykuaXMoJzpjaGVja2VkJykpe2Vudmlyb25tZW50PSdzYW5kYm94Jztwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9ZWxzZXtwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfQp2YXIgZGF0YT17cHJpdmF0ZV9rZXk6cHJpdmF0ZWtleSxlbnZpcm9ubWVudDplbnZpcm9ubWVudH07dmFyIHVybD1aaXBBcGlLZXlDaGVja1VybDskLnBvc3QodXJsLGRhdGEsZnVuY3Rpb24ocmVzcG9uc2Upe2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcscmVzcG9uc2UubWVzc2FnZSl9KS5hbHdheXMoZnVuY3Rpb24oKXt3aGlsZSh6aXBzcGlubmVyLmxlbmd0aD4wKXppcHNwaW5uZXJbMF0ucmVtb3ZlKCk7fSl9KTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyk7JCgnLmNoZWNrX3ByaXZhdGVfa2V5JykuYXR0cigndmFsdWUnLCdDaGVjayBQcml2YXRlIEtleSB2YWxpZGF0aW9uJyl9KTtqUXVlcnkoZnVuY3Rpb24oJCl7aWYoJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKX0KaWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KaWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQokKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbicpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7dmFyIHNlbFZhbHVlPSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpO2lmKHNlbFZhbHVlPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpLmNsaWNrKGZ1bmN0aW9uKCl7Y29uc3QgZWxlbWVudHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLW5vdGljZScpO2NvbnN0IHppcHNwaW5uZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLXNwaW5uZXInKTt3aGlsZShlbGVtZW50cy5sZW5ndGg+MCllbGVtZW50c1swXS5yZW1vdmUoKTt2YXIgY2hlY2tWYWxpZGF0ZUJ0bj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKTtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLCc8ZGl2IGNsYXNzPSJ6aXAtc3Bpbm5lciI+PC9kaXY+Jyk7JCgnLnppcC1zcGlubmVyJykuYWRkQ2xhc3MoJ2lzLWFjdGl2ZScpO3ZhciBlbnZpcm9ubWVudD0ncHJvZHVjdGlvbic7dmFyIHByaXZhdGVrZXk9Jyc7aWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3gnKS5pcygnOmNoZWNrZWQnKSl7ZW52aXJvbm1lbnQ9J3NhbmRib3gnO3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3hfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX1lbHNle3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9CnZhciBkYXRhPXtwcml2YXRlX2tleTpwcml2YXRla2V5LGVudmlyb25tZW50OmVudmlyb25tZW50fTt2YXIgdXJsPVppcEFwaUtleUNoZWNrVXJsOyQucG9zdCh1cmwsZGF0YSxmdW5jdGlvbihyZXNwb25zZSl7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJyxyZXNwb25zZS5tZXNzYWdlKX0pLmFsd2F5cyhmdW5jdGlvbigpe3doaWxlKHppcHNwaW5uZXIubGVuZ3RoPjApemlwc3Bpbm5lclswXS5yZW1vdmUoKTt9KX0pOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKTskKCcuY2hlY2tfcHJpdmF0ZV9rZXknKS5hdHRyKCd2YWx1ZScsJ0NoZWNrIFByaXZhdGUgS2V5IHZhbGlkYXRpb24nKX0pO2pRdWVyeShmdW5jdGlvbigkKXtpZigkKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfQppZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQppZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CiQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uJykub24oJ2NoYW5nZScsZnVuY3Rpb24oKXt2YXIgc2VsVmFsdWU9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk7aWYoc2VsVmFsdWU9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJykuY2xpY2soZnVuY3Rpb24oKXtjb25zdCBlbGVtZW50cz1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtbm90aWNlJyk7Y29uc3Qgemlwc3Bpbm5lcj1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtc3Bpbm5lcicpO3doaWxlKGVsZW1lbnRzLmxlbmd0aD4wKWVsZW1lbnRzWzBdLnJlbW92ZSgpO3ZhciBjaGVja1ZhbGlkYXRlQnRuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpO2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsJzxkaXYgY2xhc3M9InppcC1zcGlubmVyIj48L2Rpdj4nKTskKCcuemlwLXNwaW5uZXInKS5hZGRDbGFzcygnaXMtYWN0aXZlJyk7dmFyIGVudmlyb25tZW50PSdwcm9kdWN0aW9uJzt2YXIgcHJpdmF0ZWtleT0nJztpZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveCcpLmlzKCc6Y2hlY2tlZCcpKXtlbnZpcm9ubWVudD0nc2FuZGJveCc7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveF9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfWVsc2V7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX0KdmFyIGRhdGE9e3ByaXZhdGVfa2V5OnByaXZhdGVrZXksZW52aXJvbm1lbnQ6ZW52aXJvbm1lbnR9O3ZhciB1cmw9WmlwQXBpS2V5Q2hlY2tVcmw7JC5wb3N0KHVybCxkYXRhLGZ1bmN0aW9uKHJlc3BvbnNlKXtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLHJlc3BvbnNlLm1lc3NhZ2UpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7d2hpbGUoemlwc3Bpbm5lci5sZW5ndGg+MCl6aXBzcGlubmVyWzBdLnJlbW92ZSgpO30pfSk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpOyQoJy5jaGVja19wcml2YXRlX2tleScpLmF0dHIoJ3ZhbHVlJywnQ2hlY2sgUHJpdmF0ZSBLZXkgdmFsaWRhdGlvbicpfSk7alF1ZXJ5KGZ1bmN0aW9uKCQpe2lmKCQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCl9CmlmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CmlmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24nKS5vbignY2hhbmdlJyxmdW5jdGlvbigpe3ZhciBzZWxWYWx1ZT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKTtpZihzZWxWYWx1ZT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKS5jbGljayhmdW5jdGlvbigpe2NvbnN0IGVsZW1lbnRzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1ub3RpY2UnKTtjb25zdCB6aXBzcGlubmVyPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1zcGlubmVyJyk7d2hpbGUoZWxlbWVudHMubGVuZ3RoPjApZWxlbWVudHNbMF0ucmVtb3ZlKCk7dmFyIGNoZWNrVmFsaWRhdGVCdG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJyk7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywnPGRpdiBjbGFzcz0iemlwLXNwaW5uZXIiPjwvZGl2PicpOyQoJy56aXAtc3Bpbm5lcicpLmFkZENsYXNzKCdpcy1hY3RpdmUnKTt2YXIgZW52aXJvbm1lbnQ9J3Byb2R1Y3Rpb24nO3ZhciBwcml2YXRla2V5PScnO2lmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94JykuaXMoJzpjaGVja2VkJykpe2Vudmlyb25tZW50PSdzYW5kYm94Jztwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9ZWxzZXtwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfQp2YXIgZGF0YT17cHJpdmF0ZV9rZXk6cHJpdmF0ZWtleSxlbnZpcm9ubWVudDplbnZpcm9ubWVudH07dmFyIHVybD1aaXBBcGlLZXlDaGVja1VybDskLnBvc3QodXJsLGRhdGEsZnVuY3Rpb24ocmVzcG9uc2Upe2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcscmVzcG9uc2UubWVzc2FnZSl9KS5hbHdheXMoZnVuY3Rpb24oKXt3aGlsZSh6aXBzcGlubmVyLmxlbmd0aD4wKXppcHNwaW5uZXJbMF0ucmVtb3ZlKCk7fSl9KTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyk7JCgnLmNoZWNrX3ByaXZhdGVfa2V5JykuYXR0cigndmFsdWUnLCdDaGVjayBQcml2YXRlIEtleSB2YWxpZGF0aW9uJyl9KTtqUXVlcnkoZnVuY3Rpb24oJCl7aWYoJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKX0KaWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KaWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQokKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbicpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7dmFyIHNlbFZhbHVlPSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpO2lmKHNlbFZhbHVlPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpLmNsaWNrKGZ1bmN0aW9uKCl7Y29uc3QgZWxlbWVudHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLW5vdGljZScpO2NvbnN0IHppcHNwaW5uZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLXNwaW5uZXInKTt3aGlsZShlbGVtZW50cy5sZW5ndGg+MCllbGVtZW50c1swXS5yZW1vdmUoKTt2YXIgY2hlY2tWYWxpZGF0ZUJ0bj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKTtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLCc8ZGl2IGNsYXNzPSJ6aXAtc3Bpbm5lciI+PC9kaXY+Jyk7JCgnLnppcC1zcGlubmVyJykuYWRkQ2xhc3MoJ2lzLWFjdGl2ZScpO3ZhciBlbnZpcm9ubWVudD0ncHJvZHVjdGlvbic7dmFyIHByaXZhdGVrZXk9Jyc7aWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3gnKS5pcygnOmNoZWNrZWQnKSl7ZW52aXJvbm1lbnQ9J3NhbmRib3gnO3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3hfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX1lbHNle3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9CnZhciBkYXRhPXtwcml2YXRlX2tleTpwcml2YXRla2V5LGVudmlyb25tZW50OmVudmlyb25tZW50fTt2YXIgdXJsPVppcEFwaUtleUNoZWNrVXJsOyQucG9zdCh1cmwsZGF0YSxmdW5jdGlvbihyZXNwb25zZSl7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJyxyZXNwb25zZS5tZXNzYWdlKX0pLmFsd2F5cyhmdW5jdGlvbigpe3doaWxlKHppcHNwaW5uZXIubGVuZ3RoPjApemlwc3Bpbm5lclswXS5yZW1vdmUoKTt9KX0pOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKTskKCcuY2hlY2tfcHJpdmF0ZV9rZXknKS5hdHRyKCd2YWx1ZScsJ0NoZWNrIFByaXZhdGUgS2V5IHZhbGlkYXRpb24nKX0pO2pRdWVyeShmdW5jdGlvbigkKXtpZigkKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfQppZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQppZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CiQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uJykub24oJ2NoYW5nZScsZnVuY3Rpb24oKXt2YXIgc2VsVmFsdWU9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk7aWYoc2VsVmFsdWU9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJykuY2xpY2soZnVuY3Rpb24oKXtjb25zdCBlbGVtZW50cz1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtbm90aWNlJyk7Y29uc3Qgemlwc3Bpbm5lcj1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6aXAtc3Bpbm5lcicpO3doaWxlKGVsZW1lbnRzLmxlbmd0aD4wKWVsZW1lbnRzWzBdLnJlbW92ZSgpO3ZhciBjaGVja1ZhbGlkYXRlQnRuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpO2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsJzxkaXYgY2xhc3M9InppcC1zcGlubmVyIj48L2Rpdj4nKTskKCcuemlwLXNwaW5uZXInKS5hZGRDbGFzcygnaXMtYWN0aXZlJyk7dmFyIGVudmlyb25tZW50PSdwcm9kdWN0aW9uJzt2YXIgcHJpdmF0ZWtleT0nJztpZigkKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveCcpLmlzKCc6Y2hlY2tlZCcpKXtlbnZpcm9ubWVudD0nc2FuZGJveCc7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2FuZGJveF9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfWVsc2V7cHJpdmF0ZWtleT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX0KdmFyIGRhdGE9e3ByaXZhdGVfa2V5OnByaXZhdGVrZXksZW52aXJvbm1lbnQ6ZW52aXJvbm1lbnR9O3ZhciB1cmw9WmlwQXBpS2V5Q2hlY2tVcmw7JC5wb3N0KHVybCxkYXRhLGZ1bmN0aW9uKHJlc3BvbnNlKXtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLHJlc3BvbnNlLm1lc3NhZ2UpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7d2hpbGUoemlwc3Bpbm5lci5sZW5ndGg+MCl6aXBzcGlubmVyWzBdLnJlbW92ZSgpO30pfSk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBzYW5kYm94IGtleXMnKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHByb2R1Y3Rpb24ga2V5cycpOyQoJy5jaGVja19wcml2YXRlX2tleScpLmF0dHIoJ3ZhbHVlJywnQ2hlY2sgUHJpdmF0ZSBLZXkgdmFsaWRhdGlvbicpfSk7alF1ZXJ5KGZ1bmN0aW9uKCQpe2lmKCQoJy53b29jb21tZXJjZV9zYW5kYm94X2VuYWJsZV9vcHRpb24nKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCl9CmlmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9CmlmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpfWVsc2V7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyl9fSk7JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24nKS5vbignY2hhbmdlJyxmdW5jdGlvbigpe3ZhciBzZWxWYWx1ZT0kKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbiA6c2VsZWN0ZWQnKS52YWwoKTtpZihzZWxWYWx1ZT09PSdhdScpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCk7aWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fSk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpe3ZhciBjaGVja2VkPSQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKTtpZihjaGVja2VkKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKS5jbGljayhmdW5jdGlvbigpe2NvbnN0IGVsZW1lbnRzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1ub3RpY2UnKTtjb25zdCB6aXBzcGlubmVyPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ppcC1zcGlubmVyJyk7d2hpbGUoZWxlbWVudHMubGVuZ3RoPjApZWxlbWVudHNbMF0ucmVtb3ZlKCk7dmFyIGNoZWNrVmFsaWRhdGVCdG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dvb2NvbW1lcmNlX3ppcG1vbmV5X2NoZWNrX2NyZWRlbnRpYWxzJyk7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywnPGRpdiBjbGFzcz0iemlwLXNwaW5uZXIiPjwvZGl2PicpOyQoJy56aXAtc3Bpbm5lcicpLmFkZENsYXNzKCdpcy1hY3RpdmUnKTt2YXIgZW52aXJvbm1lbnQ9J3Byb2R1Y3Rpb24nO3ZhciBwcml2YXRla2V5PScnO2lmKCQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94JykuaXMoJzpjaGVja2VkJykpe2Vudmlyb25tZW50PSdzYW5kYm94Jztwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zYW5kYm94X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9ZWxzZXtwcml2YXRla2V5PSQoJyN3b29jb21tZXJjZV96aXBtb25leV9tZXJjaGFudF9wcml2YXRlX2tleScpLnZhbCgpfQp2YXIgZGF0YT17cHJpdmF0ZV9rZXk6cHJpdmF0ZWtleSxlbnZpcm9ubWVudDplbnZpcm9ubWVudH07dmFyIHVybD1aaXBBcGlLZXlDaGVja1VybDskLnBvc3QodXJsLGRhdGEsZnVuY3Rpb24ocmVzcG9uc2Upe2NoZWNrVmFsaWRhdGVCdG4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcscmVzcG9uc2UubWVzc2FnZSl9KS5hbHdheXMoZnVuY3Rpb24oKXt3aGlsZSh6aXBzcGlubmVyLmxlbmd0aD4wKXppcHNwaW5uZXJbMF0ucmVtb3ZlKCk7fSl9KTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmF0dHIoJ3ZhbHVlJywnRmluZCB5b3VyIHNhbmRib3gga2V5cycpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgcHJvZHVjdGlvbiBrZXlzJyk7JCgnLmNoZWNrX3ByaXZhdGVfa2V5JykuYXR0cigndmFsdWUnLCdDaGVjayBQcml2YXRlIEtleSB2YWxpZGF0aW9uJyl9KTtqUXVlcnkoZnVuY3Rpb24oJCl7aWYoJCgnLndvb2NvbW1lcmNlX3NhbmRib3hfZW5hYmxlX29wdGlvbicpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX1lbHNleyQoJy53b29jb21tZXJjZV90b2dnbGVfcHJvZF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2dnbGVfc2FuZGJveF9maWVsZCcpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKX0KaWYoJCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5wcm9wKCdjaGVja2VkJyk9PSEwKXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpfWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX0KaWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NlbGVjdF9yZWdpb24gOnNlbGVjdGVkJykudmFsKCk9PT0nYXUnKXskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV90b2tlbmlzYXRpb25fZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpOyQoJy53b29jb21tZXJjZV9pZnJhbWVfZW5hYmxlX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuc2hvdygpO2lmKCQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykucHJvcCgnY2hlY2tlZCcpPT0hMCl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCl9fWVsc2V7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfQokKCcud29vY29tbWVyY2Vfc2FuZGJveF9lbmFibGVfb3B0aW9uJykuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KXt2YXIgY2hlY2tlZD0kKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJyk7aWYoY2hlY2tlZCl7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9zYW5kYm94X2ZpZWxkJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3RvZ2dsZV9wcm9kX2ZpZWxkJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfcHJvZF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyl9ZWxzZXskKCcud29vY29tbWVyY2VfdG9nZ2xlX3NhbmRib3hfZmllbGQnKS5jbG9zZXN0KCd0cicpLmhpZGUoKTskKCcud29vY29tbWVyY2VfdG9nZ2xlX3Byb2RfZmllbGQnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2Vfc2FuZGJveF96aXBfY3JlZGV0YWlsX2J0bicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpOyQoJy53b29jb21tZXJjZV9wcm9kX3ppcF9jcmVkZXRhaWxfYnRuJykuY2xvc2VzdCgndHInKS5zaG93KCk7JCgnLndvb2NvbW1lcmNlX3NhbmRib3hfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKX19KTskKCcjd29vY29tbWVyY2VfemlwbW9uZXlfc2VsZWN0X3JlZ2lvbicpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7dmFyIHNlbFZhbHVlPSQoJyN3b29jb21tZXJjZV96aXBtb25leV9zZWxlY3RfcmVnaW9uIDpzZWxlY3RlZCcpLnZhbCgpO2lmKHNlbFZhbHVlPT09J2F1Jyl7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9lbmFibGUnKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfdG9rZW5pc2F0aW9uX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTskKCcud29vY29tbWVyY2VfaWZyYW1lX2VuYWJsZV9vcHRpb24nKS5jbG9zZXN0KCd0cicpLnNob3coKTtpZigkKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLnByb3AoJ2NoZWNrZWQnKT09ITApeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX1lbHNleyQoJy53b29jb21tZXJjZV9iYW5uZXJfZW5hYmxlJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX3Rva2VuaXNhdGlvbl9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2lmcmFtZV9lbmFibGVfb3B0aW9uJykuY2xvc2VzdCgndHInKS5oaWRlKCk7JCgnLndvb2NvbW1lcmNlX2Jhbm5lcl9vcHRpb24nKS5jbG9zZXN0KCd0cicpLmhpZGUoKX19KTskKCcud29vY29tbWVyY2VfYmFubmVyX2VuYWJsZScpLmNoYW5nZShmdW5jdGlvbihldmVudCl7dmFyIGNoZWNrZWQ9JChldmVudC50YXJnZXQpLmlzKCc6Y2hlY2tlZCcpO2lmKGNoZWNrZWQpeyQoJy53b29jb21tZXJjZV9iYW5uZXJfb3B0aW9uJykuY2xvc2VzdCgndHInKS5zaG93KCl9ZWxzZXskKCcud29vY29tbWVyY2VfYmFubmVyX29wdGlvbicpLmNsb3Nlc3QoJ3RyJykuaGlkZSgpfX0pOyQoJyN3b29jb21tZXJjZV96aXBtb25leV9jaGVja19jcmVkZW50aWFscycpLmNsaWNrKGZ1bmN0aW9uKCl7Y29uc3QgZWxlbWVudHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLW5vdGljZScpO2NvbnN0IHppcHNwaW5uZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnemlwLXNwaW5uZXInKTt3aGlsZShlbGVtZW50cy5sZW5ndGg+MCllbGVtZW50c1swXS5yZW1vdmUoKTt2YXIgY2hlY2tWYWxpZGF0ZUJ0bj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd29vY29tbWVyY2VfemlwbW9uZXlfY2hlY2tfY3JlZGVudGlhbHMnKTtjaGVja1ZhbGlkYXRlQnRuLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLCc8ZGl2IGNsYXNzPSJ6aXAtc3Bpbm5lciI+PC9kaXY+Jyk7JCgnLnppcC1zcGlubmVyJykuYWRkQ2xhc3MoJ2lzLWFjdGl2ZScpO3ZhciBlbnZpcm9ubWVudD0ncHJvZHVjdGlvbic7dmFyIHByaXZhdGVrZXk9Jyc7aWYoJCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3gnKS5pcygnOmNoZWNrZWQnKSl7ZW52aXJvbm1lbnQ9J3NhbmRib3gnO3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X3NhbmRib3hfbWVyY2hhbnRfcHJpdmF0ZV9rZXknKS52YWwoKX1lbHNle3ByaXZhdGVrZXk9JCgnI3dvb2NvbW1lcmNlX3ppcG1vbmV5X21lcmNoYW50X3ByaXZhdGVfa2V5JykudmFsKCl9CnZhciBkYXRhPXtwcml2YXRlX2tleTpwcml2YXRla2V5LGVudmlyb25tZW50OmVudmlyb25tZW50fTt2YXIgdXJsPVppcEFwaUtleUNoZWNrVXJsOyQucG9zdCh1cmwsZGF0YSxmdW5jdGlvbihyZXNwb25zZSl7Y2hlY2tWYWxpZGF0ZUJ0bi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJyxyZXNwb25zZS5tZXNzYWdlKX0pLmFsd2F5cyhmdW5jdGlvbigpe3doaWxlKHppcHNwaW5uZXIubGVuZ3RoPjApemlwc3Bpbm5lclswXS5yZW1vdmUoKTt9KX0pOyQoJy53b29jb21tZXJjZV9zYW5kYm94X3ppcF9jcmVkZXRhaWxfYnRuJykuYXR0cigndmFsdWUnLCdGaW5kIHlvdXIgc2FuZGJveCBrZXlzJyk7JCgnLndvb2NvbW1lcmNlX3Byb2RfemlwX2NyZWRldGFpbF9idG4nKS5hdHRyKCd2YWx1ZScsJ0ZpbmQgeW91ciBwcm9kdWN0aW9uIGtleXMnKTskKCcuY2hlY2tfcHJpdmF0ZV9rZXknKS5hdHRyKCd2YWx1ZScsJ0NoZWNrIFByaXZhdGUgS2V5IHZhbGlkYXRpb24nKX0pfSk=
4 ms
f6392f9f4347936ecd946ef27899925e.js
1967 ms
a570d3a930fdef3fd78e0ca93482bbbf.js
1975 ms
bc6b5d10e0f87d08c966c08f49f3b9c2.js
1717 ms
cf074360e0eed1af22474bbdbb4c8625.js
1714 ms
zip_order_button.js
1789 ms
1e7285c4b526d748ed59a0cf0db5e3d1.js
1788 ms
4f0f5e76fc5b77518e34c91f605c2c68.js
1795 ms
1eef9d93c1f4d2461c99ca2678e852c6.js
1671 ms
978f76d57f0194d41f0877817b2b7f96.js
1780 ms
1a4d0fcbb308f780785a5732b4de9380.js
1757 ms
d69c31bf60d28b492a7a8a77b96e093a.js
1813 ms
04e8f6ba7585d51f0a796d81517146e6.js
1797 ms
8e6b3aae1317e8379f5eb858529fb235.js
1840 ms
c569298c92c9e2659f53fe09a9743055.js
1768 ms
65e6e73e671f08da0ca84ea0e110c07c.js
1767 ms
e4ccafde3ddd161dfdbcfb415cf493ce.js
1781 ms
87692a8b14739ecf063018a39305d862.js
1552 ms
cad63d77923d70c3d0e2fec76e0d80f3.js
1589 ms
116a1b9bccde1495938884527c68812f.js
1590 ms
785c32ed45210c6be317e660e66dbb3e.js
1696 ms
6cce910e864ca7f90a7c1068faa7da75.js
1660 ms
867b795a2793871a8569e03ae422b237.js
1669 ms
792f3d8b088819f13a3f7af5a989e5de.js
1581 ms
e4574dd3edd73b7e2690752abff6d414.js
1589 ms
TunedPercussionBanner24.jpg
1803 ms
CajonBanner24.jpg
2076 ms
DjembeBanner24.jpg
1777 ms
MiddleEastBanner24.jpg
1946 ms
SambaShop200720.jpg
1765 ms
BrazilPercussionBanner24.jpg
1920 ms
BannerZenkoHomePage.jpg
1652 ms
LatinPercBanner24.jpg
1927 ms
samba-world-percussion-australia-logo-w.png
1765 ms
css
200 ms
SambaShop290719_1-scaled.jpg
2095 ms
memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff
36 ms
memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff
81 ms
TK3_WkUHHAIjg75cFRf3bXL8LICs1y9osUZiYw.woff
78 ms
TK3_WkUHHAIjg75cFRf3bXL8LICs1xZosUZiYw.woff
80 ms
TK3_WkUHHAIjg75cFRf3bXL8LICs18NvsUZiYw.woff
79 ms
TK3_WkUHHAIjg75cFRf3bXL8LICs1_FvsUZiYw.woff
80 ms
TK3_WkUHHAIjg75cFRf3bXL8LICs169vsUZiYw.woff
81 ms
TK3_WkUHHAIjg75cFRf3bXL8LICs13FvsUZiYw.woff
81 ms
KFOmCnqEu92Fr1Mu4mxM.woff
82 ms
KFOlCnqEu92Fr1MmEU9fBBc-.woff
83 ms
KFOlCnqEu92Fr1MmSU5fBBc-.woff
82 ms
KFOkCnqEu92Fr1MmgVxIIzQ.woff
83 ms
KFOlCnqEu92Fr1MmWUlfBBc-.woff
86 ms
KFOlCnqEu92Fr1MmYUtfBBc-.woff
85 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw5aXw.woff
86 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Hw5aXw.woff
86 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCs16Hw5aXw.woff
87 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvr6Hw5aXw.woff
85 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Xw5aXw.woff
87 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCu173w5aXw.woff
87 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM73w5aXw.woff
86 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvr73w5aXw.woff
87 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvC73w5aXw.woff
87 ms
KFOiCnqEu92Fr1Mu51QrEzAdKQ.woff
87 ms
KFOjCnqEu92Fr1Mu51TjASc6CsI.woff
87 ms
KFOkCnqEu92Fr1Mu51xIIzQ.woff
88 ms
KFOjCnqEu92Fr1Mu51S7ACc6CsI.woff
89 ms
KFOjCnqEu92Fr1Mu51TzBic6CsI.woff
89 ms
KFOjCnqEu92Fr1Mu51TLBCc6CsI.woff
87 ms
BngbUXZYTXPIvIBgJJSb6s3BzlRRfKOFbvjojIWmb2Rl.woff
89 ms
BngbUXZYTXPIvIBgJJSb6s3BzlRRfKOFbvjoDISmb2Rl.woff
87 ms
BngbUXZYTXPIvIBgJJSb6s3BzlRRfKOFbvjo0oSmb2Rl.woff
90 ms
BngbUXZYTXPIvIBgJJSb6s3BzlRRfKOFbvjojISmb2Rl.woff
90 ms
BngbUXZYTXPIvIBgJJSb6s3BzlRRfKOFbvjovoSmb2Rl.woff
91 ms
BngbUXZYTXPIvIBgJJSb6s3BzlRRfKOFbvjoUoOmb2Rl.woff
91 ms
BngbUXZYTXPIvIBgJJSb6s3BzlRRfKOFbvjoa4Omb2Rl.woff
92 ms
BngbUXZYTXPIvIBgJJSb6s3BzlRRfKOFbvjoDIOmb2Rl.woff
116 ms
BngbUXZYTXPIvIBgJJSb6s3BzlRRfKOFbvjoJYOmb2Rl.woff
115 ms
JTUFjIg1_i6t8kCHKm459Wx7xQYXK0vOoz6jq6R8WXh0oA.woff
113 ms
JTUFjIg1_i6t8kCHKm459Wx7xQYXK0vOoz6jqyR9WXh0oA.woff
113 ms
JTUFjIg1_i6t8kCHKm459Wx7xQYXK0vOoz6jq_p9WXh0oA.woff
114 ms
JTUFjIg1_i6t8kCHKm459Wx7xQYXK0vOoz6jq6R9WXh0oA.woff
113 ms
JTUFjIg1_i6t8kCHKm459Wx7xQYXK0vOoz6jq5Z9WXh0oA.woff
113 ms
JTUFjIg1_i6t8kCHKm459Wx7xQYXK0vOoz6jq3p6WXh0oA.woff
113 ms
JTUFjIg1_i6t8kCHKm459Wx7xQYXK0vOoz6jq0N6WXh0oA.woff
113 ms
JTUFjIg1_i6t8kCHKm459Wx7xQYXK0vOoz6jqyR6WXh0oA.woff
112 ms
JTUFjIg1_i6t8kCHKm459Wx7xQYXK0vOoz6jqw16WXh0oA.woff
112 ms
loadingAnimation.gif
720 ms
4cdbf7ae7a04db978f5890a4bf41e832.css
214 ms
logo-light.svg
112 ms
samba-world-percussion-australia-logo-pu91mm5jjk10dlyl3txcp57lewt14kbcjiwonffoi2.png
238 ms
samba-world-percussion-australia-logo-pu91mm5jlqytyid9trywsy5igs0m25h4u44xyhyji4.png
239 ms
AfricanPercussion-1-300x300.jpg
228 ms
BrazilPercussion-300x300.jpg
240 ms
DjembeSeum-300x300.jpg
244 ms
HandPercussion-300x300.jpg
239 ms
LatinPercussionUse-300x300.jpg
443 ms
MiddleEastern-300x300.jpg
447 ms
SambaShop290719_1-300x300.jpg
454 ms
EOFYSaleWeb24-e1717030644209-1024x371.webp
455 ms
SAHP09ZISCOP-300x300.jpg
459 ms
15877EX-300x300.jpg
465 ms
SAKHS17_1-300x300.jpg
672 ms
106-C-300x300.jpg
656 ms
106-C50-EW-300x300.jpg
670 ms
MPK32P-300x300.jpg
685 ms
lp441T-L-300x300.jpg
689 ms
LP-LP446-L-300x300.jpg
692 ms
lp441T-S-300x300.jpg
866 ms
lp441T-M-300x300.jpg
881 ms
LP170_-300x300.jpg
884 ms
SATF11-12MAL-300x300.jpg
897 ms
SATF11-12NB-300x300.jpg
900 ms
LP265A_lge1-300x300.jpg
910 ms
SAKM8-300x300.jpg
1081 ms
8252EX-300x300.jpg
1105 ms
7097EX_2-300x300.jpg
1097 ms
MTCS-C-130-300x300.jpg
1110 ms
MTCS-C-120-300x300.jpg
1111 ms
MTCS-C-110-300x300.jpg
1121 ms
samba-world-percussion-australia-logo-w-pu92fmg8iooe9a8dftdf94mmfv1elvmx5oxe4wy5h8.png
1290 ms
afterpay-available-W.png
1315 ms
sambaworldpercussion.com 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 input fields do not have accessible names
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
[id] attributes on active, focusable elements are not unique
Heading elements are not in a sequentially-descending order
Names and labels
These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, like a screen reader.
Impact
Issue
Links do not have a discernible name
sambaworldpercussion.com best practices score
Trust and Safety
Impact
Issue
Does not use HTTPS
Ensure CSP is effective against XSS attacks
User Experience
Impact
Issue
Serves images with low resolution
General
Impact
Issue
Detected JavaScript libraries
Missing source maps for large first-party JavaScript
sambaworldpercussion.com SEO score
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 Sambaworldpercussion.com 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 Sambaworldpercussion.com 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.
sambaworldpercussion.com
Open Graph data is detected on the main page of Samba World Percussion. This is the best way to make the web page social media friendly. Here is how it looks like on Facebook: