Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Openload] Broken extraction #20916

Closed
ben-burns opened this issue Apr 30, 2019 · 5 comments
Closed

[Openload] Broken extraction #20916

ben-burns opened this issue Apr 30, 2019 · 5 comments

Comments

@ben-burns
Copy link

@ben-burns ben-burns commented Apr 30, 2019

Checklist

  • I'm reporting a broken site support
  • I've verified that I'm running youtube-dl version 2019.04.30
  • I've checked that all provided URLs are alive and playable in a browser
  • I've checked that all URLs and arguments with special characters are properly quoted or escaped
  • I've searched the bugtracker for similar issues including closed ones

Verbose log

youtube-dl -v https://openload.co/f/kUEfGclsU9o
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v', u'https://openload.co/f/kUEfGclsU9o']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2019.04.30
[debug] Python version 2.7.15rc1 (CPython) - Linux-4.15.0-48-generic-x86_64-with-Ubuntu-18.04-bionic
[debug] exe versions: ffmpeg 3.4.4, ffprobe 3.4.4, phantomjs 2.1.1, rtmpdump 2.4
[debug] Proxy map: {}
[Openload] kUEfGclsU9o: Downloading embed webpage
[Openload] kUEfGclsU9o: Executing JS on webpage
ERROR: Unable to extract stream URL; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/usr/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 796, in extract_info
    ie_result = ie.extract(url)
  File "/usr/bin/youtube-dl/youtube_dl/extractor/common.py", line 529, in extract
    ie_result = self._real_extract(url)
  File "/usr/bin/youtube-dl/youtube_dl/extractor/openload.py", line 1993, in _real_extract
    'stream URL'))
  File "/usr/bin/youtube-dl/youtube_dl/extractor/common.py", line 1004, in _search_regex
    raise RegexNotFoundError('Unable to extract %s' % _name)
RegexNotFoundError: Unable to extract stream URL; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

Description

After upgrading to 2019.04.30 which was the merge that closed #20902, I am still experiencing the same issue.

@ben-burns
Copy link
Author

@ben-burns ben-burns commented Apr 30, 2019

@dstftw I have also included the output from --dump-pages below.

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v', u'https://openload.co/f/kUEfGclsU9o', u'--dump-pages']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2019.04.30
[debug] Python version 2.7.15rc1 (CPython) - Linux-4.15.0-48-generic-x86_64-with-Ubuntu-18.04-bionic
[debug] exe versions: ffmpeg 3.4.4, ffprobe 3.4.4, phantomjs 2.1.1, rtmpdump 2.4
[debug] Proxy map: {}
[Openload] kUEfGclsU9o: Downloading embed webpage
[Openload] Dumping request to https://openload.co/embed/kUEfGclsU9o/
PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuLVVTIj4KPGhlYWQ+CjxzY3JpcHQgc3JjPSIvY2RuLWNnaS9hcHBzL2hlYWQvaU03cWlia3lkN3NwUWF4cWpQOHVFeFdGUXhZLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+d2luZG93LmZpbGVpZD0ia1VFZkdjbHNVOW8iOzwvc2NyaXB0Pgo8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0ic2t5cmltX25vLWF1ZGlvXzEwODAubXA0Ij4KPG1ldGEgbmFtZT0ib2c6dGl0bGUiIGNvbnRlbnQ9InNreXJpbV9uby1hdWRpb18xMDgwLm1wNCI+CjxtZXRhIG5hbWU9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJTdHJlYW0gc2t5cmltX25vLWF1ZGlvXzEwODAubXA0IHZpYSBPcGVubG9hZCI+CjxtZXRhIG5hbWU9Im9nOnR5cGUiIGNvbnRlbnQ9InZpZGVvLm1vdmllIj4KPG1ldGEgbmFtZT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL29wZW5sb2FkLmNvL2VtYmVkL2tVRWZHY2xzVTlvLyI+CjxtZXRhIG5hbWU9Im9nOnNpdGVuYW1lIiBjb250ZW50PSJPcGVubG9hZCI+CjxtZXRhIG5hbWU9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL3RodW1iLm9sb2FkY2RuLm5ldC9zcGxhc2gva1VFZkdjbHNVOW8vZVBsMktmTDZPMkUuanBnIj4KPG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5X2xhcmdlX2ltYWdlIj4KPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0ic2t5cmltX25vLWF1ZGlvXzEwODAubXA0Ij4KPG1ldGEgbmFtZT0idHdpdHRlcjpkZXNjcmlwdGlvbiIgY29udGVudD0iU3RyZWFtIHNreXJpbV9uby1hdWRpb18xMDgwLm1wNCB2aWEgT3BlbmxvYWQiPgo8bWV0YSBuYW1lPSJ0d2l0dGVyOmltYWdlIiBjb250ZW50PSJodHRwczovL3RodW1iLm9sb2FkY2RuLm5ldC9zcGxhc2gva1VFZkdjbHNVOW8vZVBsMktmTDZPMkUuanBnIj4KPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4Ij4KPGxpbmsgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvdmlkZW8uanMvNS4xNS4xL3ZpZGVvLWpzLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CjxsaW5rIGhyZWY9Ii9hc3NldHMvY3NzL3ZpZGVvLmpzL29sdmlkZW8yLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KPHNjcmlwdCBzcmM9Ii9hc3NldHMvanMvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXNzZXRzL2pzL3ZpZGVvanMtaWU4Lm1pbi4zLmpzIj48L3NjcmlwdD48c2NyaXB0Pg0Kd2luZG93Ll9WaWRlb0xvYWRlZD1mYWxzZTsNCjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJtZWRpYXNwYWNlX3dyYXBwZXIiPgo8ZGl2IGNsYXNzPSJ2aWRlb2NvbnRhaW5lciI+CjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDo0ODBweCl7ZGl2I00xNjI4MzFTY3JpcHRSb290QzI0NTIxMXttYXgtd2lkdGg6MzAwcHghaW1wb3J0YW50O21hcmdpbi1sZWZ0Oi0xNTBweCFpbXBvcnRhbnR9fWRpdiNNYXJrZXRHaWRDb21wb3NpdGUyNDUyMTEgLm1nbGluZSxkaXYjTWFya2V0R2lkQ29tcG9zaXRlMjQ1MjExIC5tZ2xpbmUgLmltYWdlLXdpdGgtdGV4dCxkaXYjTWFya2V0R2lkQ29tcG9zaXRlMjQ1MjExIC5tZ2xpbmUgLm1jaW1ne3otaW5kZXg6MX1kaXYubWctY2xvc2UtYnV0dG9uLWRpdi1vdXRlcnt6LWluZGV4Ojk5OTk5OTk5fS5pbWFnZS13aXRoLXRleHR7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O3otaW5kZXg6MX0ubWctY2xvc2UtYnV0dG9uLWRpdi1pbm5lciwubWctY2xvc2UtYnV0dG9uLWRpdi1vdXRlciwubWdib3h7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9Lm1nbGluZXtkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnQ7b3BhY2l0eTouOTk5fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6MjQ5cHgpIGFuZCAobWluLWhlaWdodDowKXsjTWFya2V0R2lkQ29tcG9zaXRlMjQ1MjExIC5pbWFnZS1jb250YWluZXIgaW1nLm1jaW1ne2hlaWdodDo1MHB4IWltcG9ydGFudH19QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LWhlaWdodDozNDlweCkgYW5kIChtaW4taGVpZ2h0OjI1MHB4KXsjTWFya2V0R2lkQ29tcG9zaXRlMjQ1MjExIC5pbWFnZS1jb250YWluZXIgaW1nLm1jaW1ne2hlaWdodDo2MHB4IWltcG9ydGFudH19QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LWhlaWdodDozOTlweCkgYW5kIChtaW4taGVpZ2h0OjM1MHB4KXsjTWFya2V0R2lkQ29tcG9zaXRlMjQ1MjExIC5pbWFnZS1jb250YWluZXIgaW1nLm1jaW1ne2hlaWdodDo2NXB4IWltcG9ydGFudH19QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LWhlaWdodDo0NTBweCkgYW5kIChtaW4taGVpZ2h0OjQwMHB4KXsjTWFya2V0R2lkQ29tcG9zaXRlMjQ1MjExIC5pbWFnZS1jb250YWluZXIgaW1nLm1jaW1ne2hlaWdodDo3NXB4IWltcG9ydGFudH19QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LWhlaWdodDo0NTBweCl7I01hcmtldEdpZENvbXBvc2l0ZTI0NTIxMSAuaW1hZ2UtY29udGFpbmVyIGltZy5tY2ltZ3t3aWR0aDphdXRvIWltcG9ydGFudH0jTWFya2V0R2lkQ29tcG9zaXRlMjQ1MjExIC50ZXh0LWVsZW1lbnRzIC5tY3RpdGxle3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH0jTWFya2V0R2lkQ29tcG9zaXRlMjQ1MjExIC5tZ2JveCAubWdoZWFkZXJ7ZGlzcGxheTpub25lIWltcG9ydGFudH0jTWFya2V0R2lkQ29tcG9zaXRlMjQ1MjExIC5tZ2xpbmV7bWFyZ2luLWJvdHRvbToycHghaW1wb3J0YW50fX0gQG1lZGlhKG1heC13aWR0aDo0ODBweCl7I00xNjI4MzFTY3JpcHRSb290QzI1MzUwNHttaW4taGVpZ2h0OjgwMHB4O319IEBtZWRpYShtaW4td2lkdGg6NDgwcHgpeyNNMTYyODMxU2NyaXB0Um9vdEMyNTM1MDR7bWluLWhlaWdodDoyNzVweDt9fSAjTTE2MjgzMVNjcmlwdFJvb3RDMjUyNDE1e21heC1oZWlnaHQ6MjIwcHg7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi0ycHg7ei1pbmRleDo5OTk5OTk7bWluLXdpZHRoOjkwcHg7bGVmdDo2MHB4O3JpZ2h0OjYwcHh9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6MjMwcHgpLHNjcmVlbiBhbmQgKG1heC13aWR0aDozMDBweCl7I01hcmtldEdpZENvbXBvc2l0ZTI1MjQxNSBzcGFuLm1naGVhZHtmb250LXNpemU6MTJweCFpbXBvcnRhbnR9I01hcmtldEdpZENvbXBvc2l0ZTI1MjQxNSBkaXYubWdoZWFkZXJ7cGFkZGluZy1ib3R0b206NXB4IWltcG9ydGFudDtoZWlnaHQ6MTJweCFpbXBvcnRhbnR9fUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTIwMHB4KSBhbmQgKG1pbi1oZWlnaHQ6MjIwcHgpe2RpdiNNMTYyODMxU2NyaXB0Um9vdEMyNTI0MTV7d2lkdGg6NDAlIWltcG9ydGFudDttYXJnaW4tbGVmdDozMCU7bWFyZ2luLXJpZ2h0OjMwJX19PC9zdHlsZT4KPGRpdiBpZD0iTTE2MjgzMVNjcmlwdFJvb3RDMjQ1MjExIiBzdHlsZT0iZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTotMnB4O3otaW5kZXg6OTk5OTk5O2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi0zMDBweDttYXgtd2lkdGg6NjAwcHg7bWF4LWhlaWdodDo3MHZoICFpbXBvcnRhbnQ7Ij4gPGRpdiBpZD0iTTE2MjgzMVByZWxvYWRDMjQ1MjExIj48L2Rpdj48L2Rpdj4KPGRpdiBpZD0iTTE2MjgzMVNjcmlwdFJvb3RDMjUyNDE1IiBzdHlsZT0iZGlzcGxheTpub25lOyI+PGRpdiBpZD0iTTE2MjgzMVByZWxvYWRDMjUyNDE1Ij48L2Rpdj48L2Rpdj4KPHNjcmlwdD4kKCIjTTE2MjgzMVNjcmlwdFJvb3RDMjQ1MjExLCNNMTYyODMxU2NyaXB0Um9vdEMyNTI0MTUiKS5jbGljayhmdW5jdGlvbihlKXtpZigkKGUudGFyZ2V0KS5oYXNDbGFzcygnaW1hZ2Utd2l0aC10ZXh0Jyl8fCQoZS50YXJnZXQpLmNsb3Nlc3QoJy5pbWFnZS13aXRoLXRleHQnKVswXSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ01hcmtldEdpZENvbXBvc2l0ZTI0NTIxMScpLnN0eWxlLmRpc3BsYXk9J25vbmUnO31yZXR1cm4gdHJ1ZTt9KTs8L3NjcmlwdD4KPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJzcnRTZWxlY3RvciIgc3R5bGU9ImRpc3BsYXk6bm9uZTt2aXNpYmlsaXR5OmhpZGRlbjt3aWR0aDowO2hlaWdodDowOyIgLz4KPGRpdiBpZD0idmlkZW9vdmVybGF5Ij48L2Rpdj4gPHNwYW4gY2xhc3M9InRpdGxlIj5za3lyaW1fbm8tYXVkaW9fMTA4MC5tcDQ8L3NwYW4+IDx2aWRlbyBjbGFzcz0idmlkZW8tanMgdmpzLWRlZmF1bHQtc2tpbiB2anMtYmlnLXBsYXktY2VudGVyZWQiIGlkPSJvbHZpZGVvIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBwb3N0ZXI9Imh0dHBzOi8vdGh1bWIub2xvYWRjZG4ubmV0L3NwbGFzaC9rVUVmR2Nsc1U5by9lUGwyS2ZMNk8yRS5qcGciIGNvbnRyb2xzPgo8dHJhY2sga2luZD0iY2FwdGlvbnMiIHNyY2xhbmc9ImVuIiBsYWJlbD0i4pakIExvYWQgU1JUL1ZUVCBmcm9tIFBDflBDfiIgY2xhc3M9Im9sc3J0IGxvYWR0cmFjayIgLz4KPHRyYWNrIGtpbmQ9ImNhcHRpb25zIiBzcmNsYW5nPSJlbiIgbGFiZWw9IuKWpCBMb2FkIFNSVC9WVFQgZnJvbSBVUkx+VVJMfiIgY2xhc3M9ImxvYWR0cmFjayIgLz4KPC92aWRlbz4KPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQkJdmFyIHN1YnVybCA9ICJodHRwczpcL1wvdGh1bWIub3BlbmxvYWQuY29cL2V4dGVybnN1YlwvMTU1NjcyODk3NH4yMDguOTQuMC4wfkNuNkh2dkowfiI7CgkJCTwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JCgiI21lZGlhc3BhY2Vfd3JhcHBlciwudmlkZW9jb250YWluZXIiKS5vbigiY29udGV4dG1lbnUiLGZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlO30pOzwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FkdmVydDMuanMiPjwvc2NyaXB0Pgo8ZGl2IGlkPSJhZGJkZXRlY3QiIGNsYXNzPSJhZHMgYWRzYm94IGRvdWJsZWNsaWNrIiBzdHlsZT0iaGVpZ2h0OjFweDt3aWR0aDoxcHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDotOTk5cHg7dG9wOi05OTlweDsiPiZuYnNwOzwvZGl2Pgo8c2NyaXB0Pg0KICAgICAgICB3aW5kb3cuYWRibG9jaz1mYWxzZTt3aW5kb3cuYWRibG9jazI9ZmFsc2U7DQogICAgICAgIGlmKHR5cGVvZiBzYWRibCA9PSAidW5kZWZpbmVkIiB8fCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWRiZGV0ZWN0IikuY2xpZW50SGVpZ2h0ID09PSAwKXtkZWxldGUgd2luZG93LmFkYmxvY2s7ZGVsZXRlIHdpbmRvdy5hZGJsb2NrMjt9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeXt2YXIgXzB4ZDk1OT1bIlx4NzNceDYxXHg2RVx4NjRceDYyXHg2Rlx4NzgiLCJceDY4XHg2MVx4NzNceDQxXHg3NFx4NzRceDcyXHg2OVx4NjJceDc1XHg3NFx4NjUiLCJceDY2XHg3Mlx4NjFceDZEXHg2NVx4NDVceDZDXHg2NVx4NkRceDY1XHg2RVx4NzQiLCJceDY0XHg2MVx4NzRceDYxIiwiXHg2OVx4NkVceDY0XHg2NVx4NzhceDRGXHg2NiIsIlx4NjhceDcyXHg2NVx4NjYiLCJceDY0XHg2Rlx4NkRceDYxXHg2OVx4NkUiLCIiLCJceDcwXHg2Q1x4NzVceDY3XHg2OVx4NkVceDczIiwiXHg3NVx4NkVceDY0XHg2NVx4NjZceDY5XHg2RVx4NjVceDY0IiwiXHg2RVx4NjFceDZEXHg2NVx4NjRceDQ5XHg3NFx4NjVceDZEIiwiXHg0M1x4NjhceDcyXHg2Rlx4NkRceDY1XHgyMFx4NTBceDQ0XHg0Nlx4MjBceDU2XHg2OVx4NjVceDc3XHg2NVx4NzIiLCJceDZGXHg2Mlx4NkFceDY1XHg2M1x4NzQiLCJceDYzXHg3Mlx4NjVceDYxXHg3NFx4NjVceDQ1XHg2Q1x4NjVceDZEXHg2NVx4NkVceDc0IiwiXHg2Rlx4NkVceDY1XHg3Mlx4NzJceDZGXHg3MiIsIlx4NzRceDc5XHg3MFx4NjUiLCJceDYxXHg3MFx4NzBceDZDXHg2OVx4NjNceDYxXHg3NFx4NjlceDZGXHg2RVx4MkZceDcwXHg2NFx4NjYiLCJceDczXHg2NVx4NzRceDQxXHg3NFx4NzRceDcyXHg2OVx4NjJceDc1XHg3NFx4NjUiLCJceDczXHg3NFx4NzlceDZDXHg2NSIsIlx4NzZceDY5XHg3M1x4NjlceDYyXHg2OVx4NkNceDY5XHg3NFx4NzlceDNBXHg2OFx4NjlceDY0XHg2NFx4NjVceDZFXHgzQlx4NzdceDY5XHg2NFx4NzRceDY4XHgzQVx4MzBceDNCXHg2OFx4NjVceDY5XHg2N1x4NjhceDc0XHgzQVx4MzBceDNCXHg3MFx4NkZceDczXHg2OVx4NzRceDY5XHg2Rlx4NkVceDNBXHg2MVx4NjJceDczXHg2Rlx4NkNceDc1XHg3NFx4NjVceDNCXHg3NFx4NkZceDcwXHgzQVx4MkRceDM5XHgzOVx4NzBceDc4XHgzQiIsIlx4NjRceDYxXHg3NFx4NjFceDNBXHg2MVx4NzBceDcwXHg2Q1x4NjlceDYzXHg2MVx4NzRceDY5XHg2Rlx4NkVceDJGXHg3MFx4NjRceDY2XHgzQlx4NjJceDYxXHg3M1x4NjVceDM2XHgzNFx4MkNceDRBXHg1Nlx4NDJceDQ1XHg1Mlx4NjlceDMwXHg3OFx4NENceDY3XHgzMFx4NEJceDY0XHg0OFx4NEFceDY4XHg2MVx4NTdceDc4XHg2Q1x4NjNceDZBXHg3N1x4MzhceDRDXHgzMVx4NEFceDc2XHg2Mlx4MzNceDUxXHgzOFx4NTBceDQzXHgzOVx4NTFceDU5XHg1N1x4NjRceDZDXHg2M1x4N0FceDc3XHgzOFx4NENceDMwXHg3NFx4NzBceDVBXHg0OFx4NEVceDYyXHg1MFx4NDRceDc3XHg3Nlx4NTRceDU3XHg1Nlx4NkJceDYxXHg1N1x4NDZceDQzXHg2Mlx4MzNceDY4XHg2Mlx4NERceDQzXHg0MVx4NzdceDQ5XHg0NFx4NERceDY3XHg0RFx4MzFceDMwXHgyQlx4NTBceDZDXHgzMFx4MkJceDUwXHg2QVx4MzRceDJCXHg1MFx4NkFceDM0XHgzRCIsIlx4NjFceDcwXHg3MFx4NjVceDZFXHg2NFx4NDNceDY4XHg2OVx4NkNceDY0IiwiXHg2Mlx4NkZceDY0XHg3OSIsIlx4NzJceDY1XHg2RFx4NkZceDc2XHg2NVx4NDNceDY4XHg2OVx4NkNceDY0IiwiXHg3MFx4NjFceDcyXHg2NVx4NkVceDc0XHg0NVx4NkNceDY1XHg2RFx4NjVceDZFXHg3NCIsIlx4MkZceDY1XHg2RFx4NjJceDY1XHg2NFx4NjJceDZDXHg2Rlx4NjNceDZCXHg2NVx4NjRceDNGXHg3Mlx4NjVceDY2XHg2NVx4NzJceDY1XHg3Mlx4M0QiLCJceDczXHg3NVx4NjJceDczXHg3NFx4NzJceDY5XHg2RVx4NjciLCJceDcyXHg2NVx4NjZceDY1XHg3Mlx4NzJceDY1XHg3MiJdO2Z1bmN0aW9uIGlzU2FuZGJveGVkKF8weDcwODl4Mil7dHJ5e2lmKHdpbmRvd1tfMHhkOTU5WzJdXVtfMHhkOTU5WzFdXShfMHhkOTU5WzBdKSl7XzB4NzA4OXgyKCk7cmV0dXJufX1jYXRjaChlcnIpe307aWYobG9jYXRpb25bXzB4ZDk1OVs1XV1bXzB4ZDk1OVs0XV0oXzB4ZDk1OVszXSkhPSAwJiYgZG9jdW1lbnRbXzB4ZDk1OVs2XV09PSBfMHhkOTU5WzddKXtfMHg3MDg5eDIoKTtyZXR1cm59O2lmKCB0eXBlb2YgbmF2aWdhdG9yW18weGQ5NTlbOF1dIT0gXzB4ZDk1OVs5XSYmICB0eXBlb2YgbmF2aWdhdG9yW18weGQ5NTlbOF1dW18weGQ5NTlbMTBdXSE9IF8weGQ5NTlbOV0mJiBuYXZpZ2F0b3JbXzB4ZDk1OVs4XV1bXzB4ZDk1OVsxMF1dKF8weGQ5NTlbMTFdKSE9IG51bGwpe3ZhciBfMHg3MDg5eDM9ZG9jdW1lbnRbXzB4ZDk1OVsxM11dKF8weGQ5NTlbMTJdKTtfMHg3MDg5eDNbXzB4ZDk1OVsxNF1dPSBmdW5jdGlvbigpe18weDcwODl4MigpfTtfMHg3MDg5eDNbXzB4ZDk1OVsxN11dKF8weGQ5NTlbMTVdLF8weGQ5NTlbMTZdKTtfMHg3MDg5eDNbXzB4ZDk1OVsxN11dKF8weGQ5NTlbMThdLF8weGQ5NTlbMTldKTtfMHg3MDg5eDNbXzB4ZDk1OVsxN11dKF8weGQ5NTlbM10sXzB4ZDk1OVsyMF0pO2RvY3VtZW50W18weGQ5NTlbMjJdXVtfMHhkOTU5WzIxXV0oXzB4NzA4OXgzKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XzB4NzA4OXgzW18weGQ5NTlbMjRdXVtfMHhkOTU5WzIzXV0oXzB4NzA4OXgzKX0sMTUwKX19aXNTYW5kYm94ZWQoZnVuY3Rpb24oKXtsb2NhdGlvbltfMHhkOTU5WzVdXT0gXzB4ZDk1OVsyNV0rIGVuY29kZVVSSUNvbXBvbmVudChkb2N1bWVudFtfMHhkOTU5WzI3XV1bXzB4ZDk1OVsyNl1dKDAsMTUwKSl9KX1jYXRjaChlKXt9DQogICAgICAgICAgICAgICAgZnVuY3Rpb24gcGQoYil7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2EuaHJlZj1iO3JldHVybiBhLmhvc3RuYW1lO30NCiAgICAgICAgd2luZG93LnJlZmRvbWFpbj0iIjsNCiAgICAgICAgdHJ5e3dpbmRvdy5yZWZkb21haW49cGQoZG9jdW1lbnQucmVmZXJyZXIpO31jYXRjaChlKXt9DQogICAgICAgIHRyeXt3aW5kb3cucmVmZG9tYWluPXBkKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pO31jYXRjaChlKXt9DQogICAgICAgIHdpbmRvdy5yZWZsPWRvY3VtZW50LnJlZmVycmVyO2lmKHdpbmRvdy5yZWZsPT0iIil7dHJ5e3dpbmRvdy5yZWZsPXdpbmRvdy5sb2NhdGlvbi5vcmlnaW47fWNhdGNoKGUpe319DQogICAgaWYodHlwZW9mIGFkYmxvY2syID09InVuZGVmaW5lZCIpew0KICAgICAgICB3aW5kb3cuX1ZpZGVvTG9hZGVkPXRydWU7DQogICAgICAgICAgICAgICAgaWYod2luZG93LmZmb3BlbmVkICYmIC9maXJlZm94L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkgc2V0VGltZW91dChmdW5jdGlvbigpe2xvZ3BvcHVwKDEpO30sMjAwMCk7DQogICAgICAgIGlmKCF3aW5kb3cuZXhjbHVkZSl7DQogICAgICAgIHdpbmRvdy50dXJub2ZmPXRydWU7DQogICAgICAgICFmdW5jdGlvbigpe3ZhciBlPSExO2Z1bmN0aW9uIHQoKXt0cnl7dmFyIGU7KGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpKS5yZWw9ImRucy1wcmVmZXRjaCIsZS5ocmVmPSJodHRwOi8vZHpibHlzdWxsaS5jb20vIixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGUpLChlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKSkucmVsPSJwcmVjb25uZWN0IixlLmhyZWY9Imh0dHA6Ly9kemJseXN1bGxpLmNvbS8iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZSl9Y2F0Y2goZSl7fX1mdW5jdGlvbiBuKCl7dmFyIHQ9d2luZG93Lm9wZW4oImFib3V0OmJsYW5rIixNYXRoLnJhbmRvbSgpLCJ3aWR0aD0iK3NjcmVlbi53aWR0aCsiLGhlaWdodD0iK3NjcmVlbi5oZWlnaHQpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmxvY2F0aW9uPWF9LDEwMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcj9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLG4sITEpOmRvY3VtZW50LmRldGFjaEV2ZW50KCJvbmNsaWNrIixuKSxlfHwod2luZG93LnNldFRpbWVvdXQobywxMmU0KSxlPSEwKX1mdW5jdGlvbiBvKCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcj9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLG4sITEpOmRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbmNsaWNrIixuKX1mdW5jdGlvbiBpKCl7d2luZG93Lm9wZW4oYSxNYXRoLnJhbmRvbSgpLCJ3aWR0aD0iK3NjcmVlbi53aWR0aCsiLGhlaWdodD0iK3NjcmVlbi5oZWlnaHQpO3ZhciB0PXdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIpO3QuZm9jdXMoKSx0LmNsb3NlKCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLGksITEpLGV8fCh3aW5kb3cuc2V0VGltZW91dChkLDEyZTQpLGU9ITApfWZ1bmN0aW9uIGQoKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsaSwhMSl9dmFyIGE9Imh0dHA6Ly9kemJseXN1bGxpLmNvbS80Yzk2My5hc3B4PzMwNDImNmFkNGU9ZGlyZWN0JnNpdGVJZD0zMTM0MjczJjM1Y2IwPTAuMCY5OTY0Nz0xMCZhODYwMD1odHRwJTNBJTJGJTJGMzUuMjI1LjIzNC43MyUyRk1UVTFOakkyTkRBek55OHhOVFUzT0RNd09ETTRMekUxTlRZeU5UUTFOemclM0QmMTExYTkmNGFkNDg9IjtpZigvZmlyZWZveC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiEvQW5kcm9pZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpe2lmKC0xPT1sb2NhdGlvbi5ob3N0LmluZGV4T2YoIm9sb2FkLm5ldHdvcmsiKSlyZXR1cm4gdm9pZChsb2NhdGlvbi5ocmVmPWxvY2F0aW9uLmhyZWYucmVwbGFjZSgvKGh0dHA6fGh0dHBzOikoXnxcL1wvKSguKj9cLykvLCJodHRwczovL29sb2FkLm5ldHdvcmsvIikpO2QoKSx0KCl9ZWxzZXtpZigoL0dvb2dsZSBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvcil8fC9PUFIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpJiYhLyhpUGhvbmV8aVBhZHxpUG9kKS8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pJiYtMT09bG9jYXRpb24uaG9zdC5pbmRleE9mKCJvbG9hZC5uZXR3b3JrIikpcmV0dXJuIHZvaWQobG9jYXRpb24uaHJlZj1sb2NhdGlvbi5ocmVmLnJlcGxhY2UoLyhodHRwOnxodHRwczopKF58XC9cLykoLio/XC8pLywiaHR0cHM6Ly9vbG9hZC5uZXR3b3JrLyIpKTtvKCksdCgpfX0oKTsNCiAgICAgICAgfSAgICB9ICAgIGVsc2V7DQogICAgICAgIGlmKCEgL1RWLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICEgL1NhbXN1bmdCcm93c2VyLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQgKSl7DQogICAgICAgIHdpbmRvdy52YXN0dXJsID0gImh0dHBzOi8vZW5naW5lLnNwb3RzY2VuZXJlZC5pbmZvL3ByZXJvbGwuZW5naW5lP2lkPWU4NGRiZTQyLTMyZmUtNDE0My05OTk0LWYwZjE4YzhiZGQwNyZ6aWQ9Mjk0NTImY3ZzPSZ0aW1lPSZzdGR0aW1lPSZhYnI9JnBhZ2V1cmw9IiArIGVuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5ocmVmKSArICImc3ViSWQ9JnRpZD0mcmVzPSZidz0mYmg9Jmt3PSZyZWZlcnJlclVybD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5yZWZsKSArICImcHc9IiArICQoIi52aWRlb2NvbnRhaW5lciIpLndpZHRoKCkgKyAiJnBoPSIgKyAkKCIudmlkZW9jb250YWluZXIiKS5oZWlnaHQoKTsNCiAgICAgICAgdmFyIHJlZmVyID0gKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICB2YXIgcmVzdWx0ID0gJyc7DQoNCiAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgaWYgKHBhcmVudCAhPT0gd2luZG93KSB7DQogICAgICAgICAgICAgIHJlc3VsdCA9IGRvY3VtZW50LnJlZmVycmVyOw0KICAgICAgICAgICAgICB2YXIgb3JpZ2lucyA9IHdpbmRvdy5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnM7DQoNCiAgICAgICAgICAgICAgaWYgKG9yaWdpbnMpIHsNCiAgICAgICAgICAgICAgICB2YXIgZG9tYWluID0gb3JpZ2luc1tvcmlnaW5zLmxlbmd0aCAtIDFdOw0KDQogICAgICAgICAgICAgICAgZG9tYWluICYmIHJlc3VsdC5zdWJzdHJpbmcoMCwgZG9tYWluLmxlbmd0aCkgIT09IGRvbWFpbiAmJiAocmVzdWx0ID0gZG9tYWluKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgcmVzdWx0ID0gdG9wLmxvY2F0aW9uLmhyZWY7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSBjYXRjaCAoZSkge30NCg0KICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0pKCk7DQogICAgICAgIHdpbmRvdy52YXN0dXJsZmFsbGJhY2sgPSBbImh0dHBzOi8vd3d3LnZpZGNwbS5jb20vd2F0Y2gueG1sP2tleT0wZGQzYmViN2ZhYTM5OTliMTMxM2IxZGVjMDM4Zjg2OSZ2YXN0cmVmPSIrZW5jb2RlVVJJQ29tcG9uZW50KHJlZmVyKSwgJ2h0dHBzOi8vc3luZGljYXRpb24uZXhvc3J2LmNvbS9zcGxhc2gtem9uZXMtc3BsaXQucGhwP21haW5fem9uZT0zMTIxMjAyJmZhbGxiYWNrX3pvbmU9Mjk5MDMyMCZyZWY9JytlbmNvZGVVUklDb21wb25lbnQocmVmZXIpXTsNCiAgICAgICAgdmFyIG1ncm9vdGlkID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIm1vYmlsZSIpICE9IC0xID8gIjI1MjQxNSIgOiAiMjQ1MjExIjsNCndpbmRvdy52YXN0Y2IgPSBmdW5jdGlvbihkKXtpZihkPT0nPFZBU1QgdmVyc2lvbj0iMi4wIj48L1ZBU1Q+J3x8ZD09bnVsbHx8ZD09Jycpe3ZhciBwPXZpZGVvanMoJ29sdmlkZW8nKTt2YXIgdD1mYWxzZTtwLm9uKCdmaXJzdHBsYXknLGZ1bmN0aW9uKCl7dD10cnVlfSk7cC5vbigncGF1c2UnLGZ1bmN0aW9uKCl7aWYodCl7dD1mYWxzZTtyZXR1cm47fSQoIiNNMTYyODMxU2NyaXB0Um9vdEMiK21ncm9vdGlkKS5zaG93KCk7fSk7cC5vbigncGxheScsZnVuY3Rpb24oKXskKCIjTTE2MjgzMVNjcmlwdFJvb3RDIittZ3Jvb3RpZCkuaGlkZSgpO30pOyhmdW5jdGlvbigpeyB2YXIgRD1uZXcgRGF0ZSgpLGQ9ZG9jdW1lbnQsYj0nYm9keScsY2U9J2NyZWF0ZUVsZW1lbnQnLGFjPSdhcHBlbmRDaGlsZCcsc3Q9J3N0eWxlJyxkcz0nZGlzcGxheScsbj0nbm9uZScsZ2k9J2dldEVsZW1lbnRCeUlkJyxscD1kLmxvY2F0aW9uLnByb3RvY29sLHdwPWxwLmluZGV4T2YoJ2h0dHAnKT09MD9scDonaHR0cHM6JzsgdmFyIGk9ZFtjZV0oJ2lmcmFtZScpO2lbc3RdW2RzXT1uO2RbZ2ldKCJNMTYyODMxU2NyaXB0Um9vdEMiK21ncm9vdGlkKVthY10oaSk7dHJ5e3ZhciBpdz1pLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7aXcub3BlbigpO2l3LndyaXRlbG4oIjxodCIrIm1sPjxibyIrImR5PjwvYm8iKyJkeT48L2h0IisibWw+Iik7aXcuY2xvc2UoKTt2YXIgYz1pd1tiXTt9IGNhdGNoKGUpe3ZhciBpdz1kO3ZhciBjPWRbZ2ldKCJNMTYyODMxU2NyaXB0Um9vdEMiK21ncm9vdGlkKTt9dmFyIGR2PWl3W2NlXSgnZGl2Jyk7ZHYuaWQ9Ik1HX0lEIjtkdltzdF1bZHNdPW47ZHYuaW5uZXJIVE1MPW1ncm9vdGlkO2NbYWNdKGR2KTsgdmFyIHM9aXdbY2VdKCdzY3JpcHQnKTtzLmFzeW5jPSdhc3luYyc7cy5kZWZlcj0nZGVmZXInO3MuY2hhcnNldD0ndXRmLTgnO3Muc3JjPXdwKyIvL2pzYy5tZ2lkLmNvbS9vL3Avb3BlbmxvYWQuY28uIittZ3Jvb3RpZCsiLmpzP3Q9IitELmdldFllYXIoKStELmdldE1vbnRoKCkrRC5nZXRVVENEYXRlKCkrRC5nZXRVVENIb3VycygpO2NbYWNdKHMpO30pKCk7fX0NCiAgICAgICAgICAgICAgICB9DQogICAgfQ0KICAgIHk9fltdO3k9e19fXzorK3ksJCQkJDooIVtdKyIiKVt5XSxfXyQ6Kyt5LCRfJF86KCFbXSsiIilbeV0sXyRfOisreSwkXyQkOih7fSsiIilbeV0sJCRfJDooeVt5XSsiIilbeV0sXyQkOisreSwkJCRfOighIiIrIiIpW3ldLCRfXzorK3ksJF8kOisreSwkJF9fOih7fSsiIilbeV0sJCRfOisreSwkJCQ6Kyt5LCRfX186Kyt5LCRfXyQ6Kyt5fTt5LiRfPSh5LiRfPXkrIiIpW3kuJF8kXSsoeS5fJD15LiRfW3kuX18kXSkrKHkuJCQ9KHkuJCsiIilbeS5fXyRdKSsoKCF5KSsiIilbeS5fJCRdKyh5Ll9fPXkuJF9beS4kJF9dKSsoeS4kPSghIiIrIiIpW3kuX18kXSkrKHkuXz0oISIiKyIiKVt5Ll8kX10pK3kuJF9beS4kXyRdK3kuX18reS5fJCt5LiQ7eS4kJD15LiQrKCEiIisiIilbeS5fJCRdK3kuX18reS5fK3kuJCt5LiQkO3kuJD0oeS5fX18pW3kuJF9dW3kuJF9dO3kuJCh5LiQoeS4kJCsiXCIiKyJcXCIreS5fXyQreS4kXyQreS5fXyQreS4kJCQkKyIoIit5Ll9fKyJcXCIreS5fXyQreS4kJCQreS5fXyQrIlxcIit5Ll9fJCt5LiQkXyt5Ll9fXyt5LiQkJF8reS5fJCt5LiQkJCQrIlxcIit5LiRfXyt5Ll9fXyt5LiRfJF8reS4kJF8kK3kuJF8kJCsoIVtdKyIiKVt5Ll8kX10reS5fJCt5LiQkX18rIlxcIit5Ll9fJCt5LiRfJCt5Ll8kJCsiXFwiK3kuJF9fK3kuX19fKyI9PVxcIit5LiRfXyt5Ll9fXysiXFxcIiIreS5fKyJcXCIreS5fXyQreS4kXyQreS4kJF8reS4kJF8kK3kuJCQkXyt5LiQkJCQrIlxcIit5Ll9fJCt5LiRfJCt5Ll9fJCsiXFwiK3kuX18kK3kuJF8kK3kuJCRfK3kuJCQkXyt5LiQkXyQrIlxcXCIpe1xcIit5Ll9fJCt5LiQkXyt5Ll8kJCt5LiQkJF8reS5fXysiXFwiK3kuX18kK3kuX18kK3kuX18kKyJcXCIreS5fXyQreS4kXyQreS4kJF8reS5fXyt5LiQkJF8rIlxcIit5Ll9fJCt5LiQkXyt5Ll8kXysiXFwiK3kuX18kK3kuJCRfK3kuJCRfK3kuJF8kXysoIVtdKyIiKVt5Ll8kX10rIigiK3kuJCQkJCt5Ll8rIlxcIit5Ll9fJCt5LiRfJCt5LiQkXyt5LiQkX18reS5fXysiXFwiK3kuX18kK3kuJF8kK3kuX18kK3kuXyQrIlxcIit5Ll9fJCt5LiRfJCt5LiQkXysiKCl7XFwiK3kuX18kK3kuJCRfK3kuJCQkKyJcXCIreS5fXyQreS4kXyQreS5fXyQrIlxcIit5Ll9fJCt5LiRfJCt5LiQkXyt5LiQkXyQreS5fJCsiXFwiK3kuX18kK3kuJCRfK3kuJCQkKyIuXFwiK3kuX18kK3kuJCRfK3kuX19fK3kuXyQrIlxcIit5Ll9fJCt5LiQkXyt5Ll9fXysiXFwiK3kuX18kK3kuX19fK3kuX18kK3kuJCRfJCsiXFwiK3kuX18kK3kuJCRfK3kuXyQkKyJcXCIreS5fXyQreS5fXyQreS4kX18reS5fJCt5LiRfJF8reS4kJF8kK3kuJCQkXyt5LiQkXyQrIj0iK3kuJCQkJCt5LiRfJF8rKCFbXSsiIilbeS5fJF9dKyJcXCIreS5fXyQreS4kJF8reS5fJCQreS4kJCRfKyJ9LCIreS4kJF8reS5fX18reS5fX18rIik7fSIrIlwiIikoKSkoKTsNCiAgICA8L3NjcmlwdD4KPGRpdiBjbGFzcz0iIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CjxwIHN0eWxlPSIiIGlkPSJ5VFpaTEdnZ0EzIj4xODg1NjM0M2ExNGU5YWNkYjI2OGU5ZTdlMDY4MzAyN2UyMjEzZDdmOWMzNjc2MGIzYzY3MDAyMTNiOTdmOWQxOGY3Y2Q3Njc1ZTQ5NDY1YTUwMDI3NDY3NGE2MjNhNDA1Mzc4NmMyMjY0NDU1NTdkMzg3NjY0NzU2YzM3NDI1MTYxNzg0MDAxNjE3OTc2Nzg2OTAzNTU0NjU4NDM3YjAzNjc3YzZmNjYyMjVkNzU2MDQ2N2IwMjRkNDc0ODcwNmIwMTwvcD4KPHAgc3R5bGU9IiIgY2xhc3M9IiIgaWQ9IkR0c0Jsa1ZGUXgiPjY0MEsgb3VnaHQgdG8gYmUgZW5vdWdoIGZvciBhbnlib2R5PC9wPgo8L2Rpdj4KPC9kaXY+CjxzdHlsZT4NCiAgICAgICAgKiB7DQogICAgICAgIG91dGxpbmU6MCAhaW1wb3J0YW50Ow0KICAgICAgICB9DQogICAgICAgIC5mbG93cGxheWVyLCAjbWVkaWFzcGFjZV93cmFwcGVyew0KICAgICAgICAgICAgaGVpZ2h0OjEwMCU7DQogICAgICAgICAgICB3aWR0aDoxMDAlOw0KICAgICAgICAgICAgb3ZlcmZsb3c6aGlkZGVuOw0KICAgICAgICB9DQogICAgICAgIGJvZHl7DQogICAgICAgICAgICBoZWlnaHQ6MTAwJTsNCiAgICAgICAgICAgIHdpZHRoOjEwMCU7DQogICAgICAgICAgICBtYXJnaW46MDsNCiAgICAgICAgICAgIG92ZXJmbG93OmhpZGRlbjsNCiAgICAgICAgICAgIG1hcmdpbjowOw0KICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjpibGFjazsNCiAgICAgICAgfQ0KICAgICAgICBodG1sew0KICAgICAgICAgaGVpZ2h0OjEwMCU7DQogICAgICAgIH0NCiAgICAgICAgICAgIDwvc3R5bGU+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCmV2YWwgKGZ1bmN0aW9uKHAsYSxjLGssZSxkKXtlPWZ1bmN0aW9uKGMpe3JldHVybiBjfTtpZighJycucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoYy0tKXtkW2NdPWtbY118fGN9az1bZnVuY3Rpb24oZSl7cmV0dXJuIGRbZV19XTtlPWZ1bmN0aW9uKCl7cmV0dXJuJ1xcdysnfTtjPTF9O3doaWxlKGMtLSl7aWYoa1tjXSl7cD1wLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxiJytlKGMpKydcXGInLCdnJyksa1tjXSl9fXJldHVybiBwfShmdW5jdGlvbih6KXt2YXIgYT0iMCUzQiU3QyU1WiU1QiUzWjAlM0IlN1ozJTNZJTJaJTJaMCUyQSUyNCUyNCUyNCUyNCUzWSUyOCUyMSU1WiU1QiUyWiUyMiUyMiUyOSU1WjAlNUIlMkEyJTI0JTNZJTJaJTJaMCUyQSUyNDElMjQxJTNZJTI4JTIxJTVaJTVCJTJaJTIyJTIyJTI5JTVaMCU1QiUyQTElMjQxJTNZJTJaJTJaMCUyQSUyNDElMjQlMjQlM1klMjglN1olN0IlMlolMjIlMjIlMjklNVowJTVCJTJBJTI0JTI0MSUyNCUzWSUyODAlNVowJTVCJTJaJTIyJTIyJTI5JTVaMCU1QiUyQTElMjQlMjQlM1klMlolMlowJTJBJTI0JTI0JTI0MSUzWSUyOCUyMSUyMiUyMiUyWiUyMiUyMiUyOSU1WjAlNUIlMkElMjQyJTNZJTJaJTJaMCUyQSUyNDElMjQlM1klMlolMlowJTJBJTI0JTI0MiUzWSUyOCU3WiU3QiUyWiUyMiUyMiUyOSU1WjAlNUIlMkElMjQlMjQxJTNZJTJaJTJaMCUyQSUyNCUyNCUyNCUzWSUyWiUyWjAlMkElMjQzJTNZJTJaJTJaMCUyQSUyNDIlMjQlM1klMlolMlowJTdCJTNaMC4lMjQxJTNCJTI4MC4lMjQxJTNCMCUyWiUyMiUyMiUyOSU1WjAuJTI0MSUyNCU1QiUyWiUyODAuMSUyNCUzQjAuJTI0MSU1WjAuMiUyNCU1QiUyOSUyWiUyODAuJTI0JTI0JTNCJTI4MC4lMjQlMlolMjIlMjIlMjklNVowLjIlMjQlNUIlMjklMlolMjglMjglMjEwJTI5JTJaJTIyJTIyJTI5JTVaMC4xJTI0JTI0JTVCJTJaJTI4MC4yJTNCMC4lMjQxJTVaMC4lMjQlMjQxJTVCJTI5JTJaJTI4MC4lMjQlM0IlMjglMjElMjIlMjIlMlolMjIlMjIlMjklNVowLjIlMjQlNUIlMjklMlolMjgwLjElM0IlMjglMjElMjIlMjIlMlolMjIlMjIlMjklNVowLjElMjQxJTVCJTI5JTJaMC4lMjQxJTVaMC4lMjQxJTI0JTVCJTJaMC4yJTJaMC4xJTI0JTJaMC4lMjQlM1owLiUyNCUyNCUzQjAuJTI0JTJaJTI4JTIxJTIyJTIyJTJaJTIyJTIyJTI5JTVaMC4xJTI0JTI0JTVCJTJaMC4yJTJaMC4xJTJaMC4lMjQlMlowLiUyNCUyNCUzWjAuJTI0JTNCJTI4MC4zJTI5JTVaMC4lMjQxJTVCJTVaMC4lMjQxJTVCJTNaMC4lMjQlMjgwLiUyNCUyODAuJTI0JTI0JTJaJTIyJTVBJTIyJTIyJTJaJTIyJTVBJTVBJTIyJTJaMC4yJTI0JTJaMC4lMjQlMjQxJTJaMC4lMjQlMjQlMjQlMlolMjIlNUElNUElMjIlMlowLjIlMjQlMlowLiUyNDElMjQlMlowLjIlMjQlMlolMjIlNUElNUElMjIlMlowLjIlMjQlMlowLiUyNDElMjQlMlowLiUyNCUyNDElMlowLiUyNCUyNDElMjQlMlowLjElMjQlMlolMjIlNUElNUElMjIlMlowLjIlMjQlMlowLiUyNCUyNDElMlowLiUyNCUyNCUyNCUyWiUyMi4lMjIlMlowLjIlMlowLjElMjQlMlolMjIlNUElNUElMjIlMlowLjIlMjQlMlowLiUyNDElMjQlMlowLjElMjQlMjQlMlowLiUyNCUyNCUyNDElMlolMjIlNUElNUElMjIlMlowLjIlMjQlMlowLiUyNDElMjQlMlowLiUyNCUyNDElMlolMjIlM0IlNUElNUElNUElMjIlMjIlMlowLiUyNDElMjQxJTJaMC4lMjQxJTI0MSUyWjAuMiUyNCUyWjAuJTI0JTI0JTI0JTI0JTJaMC4lMjQxJTI0JTI0JTJaMC4zJTJaMC4lMjQxJTI0MSUyWjAuJTI0JTI0JTI0MSUyWjAuJTI0MSUyNDElMlowLiUyNDElMjQlMjQlMlowLiUyNCUyNDElMjQlMlowLiUyNDIlMlowLiUyNDIlMlowLiUyNCUyNCUyNDElMlowLiUyNDElMjQlMlowLiUyNDElMjQlMjQlMlolMjIlNUElNUElNUElMjIlM1olMjIlMlolMjIlNUElMjIlMjIlMjklMjglMjklMjklMjglMjklM1oiO3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYS5yZXBsYWNlKC9bYS16QS1aXS9nLGZ1bmN0aW9uKGMpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKChjPD0iWiI/OTA6MTIyKT49KGM9Yy5jaGFyQ29kZUF0KDApK3opP2M6Yy0yNik7fSkpO30oMiksNCw0LCgnal5fXl9fXl9fXycrJycpLnNwbGl0KCJeIiksMCx7fSkpCnYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5Yj1bIGZ1bmN0aW9uKHY5YzFiYzAxZTY3NDUyNjUwMDVhYmRkMGNkYTg1NWE0OSl7cmV0dXJuICdlYWIwNmZlMDRkZWI5OTIzMmNiMWIwMmQyNzY1NzdmM2Q3OGM2YTFlMDkwM2MzNTA2N2I5Y2UyNzE2YmExYmYyOWM1NDgwMzcnO30sIGZ1bmN0aW9uKHY5YzFiYzAxZTY3NDUyNjUwMDVhYmRkMGNkYTg1NWE0OSl7cmV0dXJuIHY2MmU3YzA2OGNmNDBmYjcxNmIwYTQwMjJhNjkwN2RkYi5jcmVhdGVFbGVtZW50KHY5YzFiYzAxZTY3NDUyNjUwMDVhYmRkMGNkYTg1NWE0OSk7fSwgZnVuY3Rpb24odjljMWJjMDFlNjc0NTI2NTAwNWFiZGQwY2RhODU1YTQ5KXtyZXR1cm4gdjljMWJjMDFlNjc0NTI2NTAwNWFiZGQwY2RhODU1YTQ5WzBdLmdldENvbnRleHQodjljMWJjMDFlNjc0NTI2NTAwNWFiZGQwY2RhODU1YTQ5WzFdKTt9LCBmdW5jdGlvbih2OWMxYmMwMWU2NzQ1MjY1MDA1YWJkZDBjZGE4NTVhNDkpe3JldHVybiB2OWMxYmMwMWU2NzQ1MjY1MDA1YWJkZDBjZGE4NTVhNDlbMF0udGV4dD12OWMxYmMwMWU2NzQ1MjY1MDA1YWJkZDBjZGE4NTVhNDlbMV07fSwgZnVuY3Rpb24odjljMWJjMDFlNjc0NTI2NTAwNWFiZGQwY2RhODU1YTQ5KXtyZXR1cm4gbnVsbDt9LCBmdW5jdGlvbih2OWMxYmMwMWU2NzQ1MjY1MDA1YWJkZDBjZGE4NTVhNDkpeyc5YTNkNjEyNzM3NGFmMDljMjIwMTViZjNlZGUzYWMwMGEzNmUzZWM2OGUyYWVlODYwODBmYzZlOTNkYzIwYjYxNGQzMjYwMDEnO30sIGZ1bmN0aW9uKHY5YzFiYzAxZTY3NDUyNjUwMDVhYmRkMGNkYTg1NWE0OSl7cmV0dXJuICdjMWEzOGI4YTY3MWY1OGIyMGQ0MDc5YjY4ZDY1MzMyMTZkYjJhMzY0NGZkMGU4MWE5M2YwYjQyYWJmNzcwNDdhYzQ4MTFhNzYnO30sIGZ1bmN0aW9uKHY5YzFiYzAxZTY3NDUyNjUwMDVhYmRkMGNkYTg1NWE0OSl7djljMWJjMDFlNjc0NTI2NTAwNWFiZGQwY2RhODU1YTQ5LnN0eWxlLmRpc3BsYXk9J25vbmUnO3JldHVybiB2OWMxYmMwMWU2NzQ1MjY1MDA1YWJkZDBjZGE4NTVhNDk7fSwgZnVuY3Rpb24odjljMWJjMDFlNjc0NTI2NTAwNWFiZGQwY2RhODU1YTQ5KXt2Y2Q5ZGNkN2MxNTkxOWVlYzA4NDFiZThmYzY0NTgwMGEub25sb2FkPXY5YzFiYzAxZTY3NDUyNjUwMDVhYmRkMGNkYTg1NWE0OX0sIGZ1bmN0aW9uKHY5YzFiYzAxZTY3NDUyNjUwMDVhYmRkMGNkYTg1NWE0OSl7dmNkOWRjZDdjMTU5MTllZWMwODQxYmU4ZmM2NDU4MDBhLnNyYz12OWMxYmMwMWU2NzQ1MjY1MDA1YWJkZDBjZGE4NTVhNDk7fSwgbmV3IEZ1bmN0aW9uKCJ2OWMxYmMwMWU2NzQ1MjY1MDA1YWJkZDBjZGE4NTVhNDkiLCJyZXR1cm4gdW5lc2NhcGUoZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5hdG9iKHY5YzFiYzAxZTY3NDUyNjUwMDVhYmRkMGNkYTg1NWE0OSkpKSIpLCBmdW5jdGlvbih2OWMxYmMwMWU2NzQ1MjY1MDA1YWJkZDBjZGE4NTVhNDkpe3ZiZTNhZTE1N2JjYWYwMWJkNDllYzVhOWIyMjhlOTJmYj1uZXcgRnVuY3Rpb24oJ3Y5YzFiYzAxZTY3NDUyNjUwMDVhYmRkMGNkYTg1NWE0OScsdjA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzEwXSh2YjYyODgyZDMyZTFkMjVhNDdkYWQ3ZWM1Mjk5NmQ2ZDFbdjljMWJjMDFlNjc0NTI2NTAwNWFiZGQwY2RhODU1YTQ5XSkpO3JldHVybiB2YmUzYWUxNTdiY2FmMDFiZDQ5ZWM1YTliMjI4ZTkyZmI7fV07IHZkNTkxMjFmYjNjYWMwOGFhMGE4YjY4MjQ5MzBiYmZjOD1bMCwyNTUsMl07IHZiNjI4ODJkMzJlMWQyNWE0N2RhZDdlYzUyOTk2ZDZkMT1bICdjbVYwZFhKdUpUSXdKMk5oYm5aaGN5Y2xNMEk9JywgJ2NtVjBkWEp1SlRJd0oyNXZibVVuSlROQycsICdjbVYwZFhKdUpUSXdKekprSnlVelFnPT0nLCAnY21WMGRYSnVKVEl3SjNOamNtbHdkQ2NsTTBJPScsICcnLCAndmI2ODU4ZTY4M2UxMmIyYTZmZDEyYjc0OTIyODZkNDgyJywgJ3Y2MTc1OWUxM2VlNjYzOTBlZWJjZWVhNDJlMWJmMzkzZicsICdjbVYwZFhKdUpUSXdKMlJoZEdFbE0wRnBiV0ZuWlNVeVJuQnVaeVV6UW1KaGMyVTJOQ1V5UXljbE0wST0nLCAnJywgJ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FJQUFBQnZGYXF2QUFBRDEwbEVRVlE0alUyVlhXK1U1eG1FcjMzMkFyell4bVlCNDRWRXFUZkVDSnEyZ2hhVTBsYVYyaWdjOElmN29Vbzk2UWRPMDFhMGhSb1RPeGlDWXh1OEdCdnZtaDAvYncvY1ZKM0RtZEhNd2ExYjA3cDM3eDRrbkRPUDRFYVl4S2V5VG03QUFhN0RUOGxESEpGcjhYUG9ra2E3NUV3Y2s1T3dERGRLdUVoQ05tQWliTWhqTXdXZllDdnNrZ3N3akNhM3cwTVRNeTh6eVVwc213YVdjQUZLRVlJNmlyZmtVZ0RYeUV4U2RCYjNrakcwNURFUTdtQWJVS1NKUmMrYkRyWktBUHN3QWEzUVlBMDM0VkJieVVMUzBnNmN4amxkbEpPa3hwZmhkamlTSmxtRUxmT2JJb1VNa2c0NXFhL2dSL0lvdHBNaitGd0g4SHZTQ1NmQ0RoekNLN2t0ajZBVGhoRG9Ja0pMaUNNWWtuUHlhN3dxK3pDTTUrQk1jaEVQelRLOHdmT2hhd2dOM01lTGNJZzc4R05KRXh1ekY1bzRnbzlNQ3pvd05wTnhFNHZaZ0g0b0VOT0N2OGgxRE5sRUVtU213RGJwaDJtWkVhQVZSL2cxTm1GTFZrZ3I5c0lTYk1QOTQyZ2NrQ1hvaGtzNkhYNVZZbGRXWVJqSHNHdTJUWTkwUWUyVHM2QVp3VzNjbHA5REQxcWtHeitEa2RrSzIvS3pZcjdCWGYwdUdaT0xjQjAyWUFZYUFQZndPWnlHSGVpRVNkZ0pzeGc0eEE0K2dSNjBTK2lSajVKR2huRW5iTVRWc0F0ZkoyK1RCYklRRCtRMVRNbWV6SmlHZkVFU2htUldoa0RSRFZ6QjJZQ2NseDdNU1RlZ3k3cWdiUm1FSS9LWXZBdmZRRGNvcDJRaURKTExjS3FRWHRnbWY5TWwwb1NIOENhOE5wQmpETUpsYVVzSEorRXM3TUE0N2llYmVCZSt4RGZpam1uQWNFZDI4RHBNWW9YWnNFeVFCMlEyOXNtL0RUS0FLcDhtRC9DRUFWdmhWSHV4ZnhNL1REMUxXYXIxc3VWMXlWOXJuU3VGa3MzQ0xGNmxucWoxRFpUaVZPcXcrSUx5dk5aUHFFMTFzbVNtMVB2aUFGN0paUEpMZlFaUDhFUHBKQU84QWcvSUdON0RCVElrNkRuWUoyZmhuUTdES2o0T1B6bSsybFZFdnlCVFNUK1pTNGF5S3kvbGd0eUJPZm1qdklBenlRRmNpL3Y2RmlhQWNFV09OSnRoMXp5RFczRkV2b1N2WkJ5dWt5bGREUzkwTVRUUXh6R1E0NzlqTS9Ta0gvNEpDOEs4L2ozNVFKK2JxYkNJQi9DeFdZdkFEM1FDMW1BT0p1QzM1Q1pzeXkvaUNBNGc4UDNrZHdVcXVZTFBrdmZEaEt5WUMyR01rQlg0RjVrTzg3SUpxK1l6YVJSY054M1lnbVY0b0xXOWVPV0hNRnZLWWlsL3FHV3VsbmVsN0JXZUpHMjBackl5UzFtcitWalBwUDZwZUFTVFpEMzBMQ2Zob0tTVDhqMnhrS253WjdnbFQ4azFHT0lFam1CTlBzQVMxSzB3andBRWFHUTl6RXNIdjRMdGRyOS9xZkxVMnBTeVJxYkRSdlZWelFKbGxVeFhMNVRzMXpKVjhyYldmMWhQcEo2dW5xNTFzVEJYeXZQa1dxMHZLYlR1M3YzT2YzczRuZ0VTZ0dOU0NKai82Zml0eFAvWkV2NEQrN2c0eStPRm94d0FBQUFBU1VWT1JLNUNZSUk9JywgJ2NtVjBkWEp1SlRJd2RqWXlaVGRqTURZNFkyWTBNR1ppTnpFMllqQmhOREF5TW1FMk9UQTNaR1JpTG1kbGRFVnNaVzFsYm5SQ2VVbGtLSFk1WXpGaVl6QXhaVFkzTkRVeU5qVXdNRFZoWW1Sa01HTmtZVGcxTldFME9Ta2xNMEk9JywgJ2NtVjBkWEp1SlRJd1pHOWpkVzFsYm5RPScsICdabTl5S0haak9EazFNREF3TW1KbFlqaG1ZelZsTTJZeE1XRTNZVGc0T1RSa1lUTTJPQ1V6Ukhaa05Ua3hNakZtWWpOallXTXdPR0ZoTUdFNFlqWTRNalE1TXpCaVltWmpPQ1UxUWpJbE5VUWxNMElsTWpCMll6ZzVOVEF3TURKaVpXSTRabU0xWlRObU1URmhOMkU0T0RrMFpHRXpOamdsTWpBbE0wTWxNakIyTlRRM056aGpORFZrT1dWaFlXVXlNbUZqWlRnMk5tTTBOakl3Wm1KalpqQXVaR0YwWVM1c1pXNW5kR2dsTTBJbE1qQjJZemc1TlRBd01ESmlaV0k0Wm1NMVpUTm1NVEZoTjJFNE9EazBaR0V6TmpnbE1rSWxNMFEwS1habVlXSmtPR1UyTkRRNU5tRTJOVEV3TkdJeU1tVTROemM0TlRNM05XVmpNaVV5UWlVelJDaDJOVFEzTnpoak5EVmtPV1ZoWVdVeU1tRmpaVGcyTm1NME5qSXdabUpqWmpBdVpHRjBZU1UxUW5aak9EazFNREF3TW1KbFlqaG1ZelZsTTJZeE1XRTNZVGc0T1RSa1lUTTJPQ1UxUkNFbE0wUjJaRFU1TVRJeFptSXpZMkZqTURoaFlUQmhPR0kyT0RJME9UTXdZbUptWXpnbE5VSXhKVFZFS1NVelJuWXdORFZqT0RJM05EWXdOVGhsWVdFNU5tWTRZek0xT0RJME16UmlPVGsxT0NoMk5UUTNOemhqTkRWa09XVmhZV1V5TW1GalpUZzJObU0wTmpJd1ptSmpaakF1WkdGMFlTVTFRblpqT0RrMU1EQXdNbUpsWWpobVl6VmxNMll4TVdFM1lUZzRPVFJrWVRNMk9DVTFSQ2tsTTBGMllqWXlPRGd5WkRNeVpURmtNalZoTkRka1lXUTNaV00xTWprNU5tUTJaREVsTlVJMEpUVkVKVE5DSlRJd2RtWmhZbVE0WlRZME5EazJZVFkxTVRBMFlqSXlaVGczTnpnMU16YzFaV015SlRORWRtWmhZbVE0WlRZME5EazJZVFkxTVRBMFlqSXlaVGczTnpnMU16YzFaV015TG5SeWFXMG9LU1V6UWc9PScsICdjbVYwZFhKdUpUSXdibVYzSlRJd1NXMWhaMlVvS1NVelFnPT0nLCAnY21WMGRYSnVKVEl3VTNSeWFXNW5MbVp5YjIxRGFHRnlRMjlrWlNoMk9XTXhZbU13TVdVMk56UTFNalkxTURBMVlXSmtaREJqWkdFNE5UVmhORGtwSlROQyddOyB2NjJlN2MwNjhjZjQwZmI3MTZiMGE0MDIyYTY5MDdkZGI9djA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzExXSgxMSkoKTsgdjgyYmRiMWRiZmYzN2ZhZmI4MWMxN2M4NThmNTA1ZjMwPW5ldyBGdW5jdGlvbigndjljMWJjMDFlNjc0NTI2NTAwNWFiZGQwY2RhODU1YTQ5Jyx2MDZiOWU4MTdjNGRkY2Y2MGZiZDgyMTEzZjhjMWY0OWJbMTBdKHZiNjI4ODJkMzJlMWQyNWE0N2RhZDdlYzUyOTk2ZDZkMVsxMF0pKTsgdmNkOWRjZDdjMTU5MTllZWMwODQxYmU4ZmM2NDU4MDBhPXYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5Yls3XSh2MDZiOWU4MTdjNGRkY2Y2MGZiZDgyMTEzZjhjMWY0OWJbMTFdKDEzKSgpKTsgdjA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzhdKGZ1bmN0aW9uKCl7IHY4OThjZjE0MWEwMjkyMzc1NjkwZGMyZDg3MGU5ZWE0Yz12ODJiZGIxZGJmZjM3ZmFmYjgxYzE3Yzg1OGY1MDVmMzAodmI2Mjg4MmQzMmUxZDI1YTQ3ZGFkN2VjNTI5OTZkNmQxWzVdKTsgdjQ5ODBkZjJlZWI0OTM3NjM1NGRlN2FkYzQ5YjhjNTE1PXYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5YlsxXSh2MDZiOWU4MTdjNGRkY2Y2MGZiZDgyMTEzZjhjMWY0OWJbMTFdKDApKCkpOyB2NDk4MGRmMmVlYjQ5Mzc2MzU0ZGU3YWRjNDliOGM1MTUud2lkdGg9dmNkOWRjZDdjMTU5MTllZWMwODQxYmU4ZmM2NDU4MDBhLndpZHRoOyB2NDk4MGRmMmVlYjQ5Mzc2MzU0ZGU3YWRjNDliOGM1MTUuaGVpZ2h0PXZjZDlkY2Q3YzE1OTE5ZWVjMDg0MWJlOGZjNjQ1ODAwYS5oZWlnaHQ7IHY0OTgwZGYyZWViNDkzNzYzNTRkZTdhZGM0OWI4YzUxNS5zdHlsZS5kaXNwbGF5PXYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5YlsxMV0oMSkoKTt2ZmFiZDhlNjQ0OTZhNjUxMDRiMjJlODc3ODUzNzVlYzI9dmI2Mjg4MmQzMmUxZDI1YTQ3ZGFkN2VjNTI5OTZkNmQxWzRdOyB2NDIwZTYxZTJlZjZhYTFjMjFjMjA5NmFmMzZlYzlmNTU9djA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzJdKFt2NDk4MGRmMmVlYjQ5Mzc2MzU0ZGU3YWRjNDliOGM1MTUsdjA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzExXSgyKSgpXSk7IHYwNDVjODI3NDYwNThlYWE5NmY4YzM1ODI0MzRiOTk1OD1uZXcgRnVuY3Rpb24oJ3Y5YzFiYzAxZTY3NDUyNjUwMDVhYmRkMGNkYTg1NWE0OScsdjA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzEwXSh2YjYyODgyZDMyZTFkMjVhNDdkYWQ3ZWM1Mjk5NmQ2ZDFbMTRdKSk7IHY0MjBlNjFlMmVmNmFhMWMyMWMyMDk2YWYzNmVjOWY1NS5kcmF3SW1hZ2UodmNkOWRjZDdjMTU5MTllZWMwODQxYmU4ZmM2NDU4MDBhLCB2ZDU5MTIxZmIzY2FjMDhhYTBhOGI2ODI0OTMwYmJmYzhbMF0sIHZkNTkxMjFmYjNjYWMwOGFhMGE4YjY4MjQ5MzBiYmZjOFswXSk7IHY1NDc3OGM0NWQ5ZWFhZTIyYWNlODY2YzQ2MjBmYmNmMD12NDIwZTYxZTJlZjZhYTFjMjFjMjA5NmFmMzZlYzlmNTUuZ2V0SW1hZ2VEYXRhKHZkNTkxMjFmYjNjYWMwOGFhMGE4YjY4MjQ5MzBiYmZjOFswXSwgdmQ1OTEyMWZiM2NhYzA4YWEwYThiNjgyNDkzMGJiZmM4WzBdLHY0OTgwZGYyZWViNDkzNzYzNTRkZTdhZGM0OWI4YzUxNS53aWR0aCx2NDk4MGRmMmVlYjQ5Mzc2MzU0ZGU3YWRjNDliOGM1MTUuaGVpZ2h0KTsgdjAzMmIyNTEyMjc2ODMyM2JhM2ZmMjE2YmFjODhlNjMwPXYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5YlsxMV0oMTIpKCk7IChuZXcgRnVuY3Rpb24odjA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzEwXSh2ZmFiZDhlNjQ0OTZhNjUxMDRiMjJlODc3ODUzNzVlYzIpKSkoKTsgdmI2ODU4ZTY4M2UxMmIyYTZmZDEyYjc0OTIyODZkNDgyPXYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5Yls0XSh2NDIwZTYxZTJlZjZhYTFjMjFjMjA5NmFmMzZlYzlmNTUpO3ZjZDlkY2Q3YzE1OTE5ZWVjMDg0MWJlOGZjNjQ1ODAwYT12MDZiOWU4MTdjNGRkY2Y2MGZiZDgyMTEzZjhjMWY0OWJbNF0odmI2ODU4ZTY4M2UxMmIyYTZmZDEyYjc0OTIyODZkNDgyKTt2NDk4MGRmMmVlYjQ5Mzc2MzU0ZGU3YWRjNDliOGM1MTU9djA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzRdKHY0OTgwZGYyZWViNDkzNzYzNTRkZTdhZGM0OWI4YzUxNSk7djQyMGU2MWUyZWY2YWExYzIxYzIwOTZhZjM2ZWM5ZjU1PXYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5Yls0XSh2NTQ3NzhjNDVkOWVhYWUyMmFjZTg2NmM0NjIwZmJjZjApO3Y1NDc3OGM0NWQ5ZWFhZTIyYWNlODY2YzQ2MjBmYmNmMD12MDZiOWU4MTdjNGRkY2Y2MGZiZDgyMTEzZjhjMWY0OWJbNF0odjQyMGU2MWUyZWY2YWExYzIxYzIwOTZhZjM2ZWM5ZjU1KTt2Yzg5NTAwMDJiZWI4ZmM1ZTNmMTFhN2E4ODk0ZGEzNjg9djA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzRdKHY0MjBlNjFlMmVmNmFhMWMyMWMyMDk2YWYzNmVjOWY1NSk7dmZhYmQ4ZTY0NDk2YTY1MTA0YjIyZTg3Nzg1Mzc1ZWMyPXYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5Yls0XSh2NDIwZTYxZTJlZjZhYTFjMjFjMjA5NmFmMzZlYzlmNTUpO3ZjNzg2ZTE0Y2NjZTFlYTljM2I2ODg4YzcxZDgzM2JhNT12MDZiOWU4MTdjNGRkY2Y2MGZiZDgyMTEzZjhjMWY0OWJbNF0odjQyMGU2MWUyZWY2YWExYzIxYzIwOTZhZjM2ZWM5ZjU1KTt2ZTI2YzRiM2I3MTllNzcxZGEwY2ZlZTlkYzRjZjhiNGQ9djA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzRdKHY0MjBlNjFlMmVmNmFhMWMyMWMyMDk2YWYzNmVjOWY1NSk7dmI2ODU4ZTY4M2UxMmIyYTZmZDEyYjc0OTIyODZkNDgyPXYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5Yls0XSh2NDIwZTYxZTJlZjZhYTFjMjFjMjA5NmFmMzZlYzlmNTUpO3Y1MDcxYjc0NGQyOTg2MTA5OWRhNmMyMWMyOWMwNzM5MD12MDZiOWU4MTdjNGRkY2Y2MGZiZDgyMTEzZjhjMWY0OWJbNF0odjQyMGU2MWUyZWY2YWExYzIxYzIwOTZhZjM2ZWM5ZjU1KTt2NjJlN2MwNjhjZjQwZmI3MTZiMGE0MDIyYTY5MDdkZGI9djA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzRdKHY0MjBlNjFlMmVmNmFhMWMyMWMyMDk2YWYzNmVjOWY1NSk7djAzMmIyNTEyMjc2ODMyM2JhM2ZmMjE2YmFjODhlNjMwPXYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5Yls0XSh2NDIwZTYxZTJlZjZhYTFjMjFjMjA5NmFmMzZlYzlmNTUpO3ZiNjI4ODJkMzJlMWQyNWE0N2RhZDdlYzUyOTk2ZDZkMT12MDZiOWU4MTdjNGRkY2Y2MGZiZDgyMTEzZjhjMWY0OWJbNF0odjQyMGU2MWUyZWY2YWExYzIxYzIwOTZhZjM2ZWM5ZjU1KTt2ZDU5MTIxZmIzY2FjMDhhYTBhOGI2ODI0OTMwYmJmYzg9djA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzRdKHY0MjBlNjFlMmVmNmFhMWMyMWMyMDk2YWYzNmVjOWY1NSk7djljMWJjMDFlNjc0NTI2NTAwNWFiZGQwY2RhODU1YTQ5PXYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5Yls0XSh2NDIwZTYxZTJlZjZhYTFjMjFjMjA5NmFmMzZlYzlmNTUpO3Y5YzFiYzAxZTY3NDUyNjUwMDVhYmRkMGNkYTg1NWE0OT12MDZiOWU4MTdjNGRkY2Y2MGZiZDgyMTEzZjhjMWY0OWJbNF0odjg5OGNmMTQxYTAyOTIzNzU2OTBkYzJkODcwZTllYTRjKTt2MDZiOWU4MTdjNGRkY2Y2MGZiZDgyMTEzZjhjMWY0OWI9djA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzRdKHY0MjBlNjFlMmVmNmFhMWMyMWMyMDk2YWYzNmVjOWY1NSk7IH0pOyB2MDMyYjI1MTIyNzY4MzIzYmEzZmYyMTZiYWM4OGU2MzA9djA2YjllODE3YzRkZGNmNjBmYmQ4MjExM2Y4YzFmNDliWzldKHYwNmI5ZTgxN2M0ZGRjZjYwZmJkODIxMTNmOGMxZjQ5YlsxMV0oNykoKSt2YjYyODgyZDMyZTFkMjVhNDdkYWQ3ZWM1Mjk5NmQ2ZDFbOV0pOw0KJCgiYm9keSIpLm1vdXNldXAoZnVuY3Rpb24oYSl7KCQoYS50YXJnZXQpLmhhc0NsYXNzKCJsb2dvYnJhbmRPdXRzaWRlcGxheWVyIil8fCQoYS50YXJnZXQpLmhhc0NsYXNzKCJsb2dvY29udGFpbmVyIil8fCQoYS50YXJnZXQpLmhhc0NsYXNzKCJ0aXRsZSIpfHwidmlkZW9vdmVybGF5Ij09JChhLnRhcmdldCkuYXR0cigiaWQiKSkmJndpbmRvdy5wb3BBZHNMb2FkZWQmJiQoIiN2aWRlb292ZXJsYXksLnRpdGxlLC5sb2dvY29udGFpbmVyIikuaGlkZSgpfSk7DQpmdW5jdGlvbiB0dyh3LGkpe2lmKHc9PW51bGwpeyQucG9zdCgiaHR0cHM6Ly90dDIub3BlbmxvYWQuY28vcjMvZiIseyJwb3B1cmwiOiJsb3N0IiwicG9wcG9vbCI6Imxvc3QiLCJwb3NpdGlvbiI6NytpfSk7fX0NCjwvc2NyaXB0Pgo8c2NyaXB0Pg0Kd2luZG93LnBvcEFkc0xvYWRlZD1mYWxzZTsNCjwvc2NyaXB0Pgo8c2NyaXB0PmZ1bmN0aW9uIGRvU2Vjb25kUG9wKCl7DQp2YXIgZmlyZWQgPSBmYWxzZTsNCkJldHRlckpzUG9wLnJlc2V0KCk7DQp2YXIgd3M9cmFuZHNpemUoKTsNCkJldHRlckpzUG9wLmFkZCgiaHR0cDovL3N5bmRpY2F0aW9uLmV4b3Nydi5jb20vc3BsYXNoLXpvbmVzLXNwbGl0LnBocD9zdD1yZWYmbWFpbl96b25lPTI3OTI5NDYmdHlwZT04JnN1Yj01JnJlZj0iK2VuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cucmVmbCksIHsNCiAgICBzaG91bGRGaXJlOmZ1bmN0aW9uKCl7cmV0dXJuICFmaXJlZDt9LA0KICAgIGFmdGVyT3BlbjpmdW5jdGlvbih1LG8sdyl7ZmlyZWQ9dHJ1ZTtkb1NlY29uZFBvcFJlYWwoKTt0dyh3LDApOyQucG9zdCgiaHR0cHM6Ly90dDIub3BlbmxvYWQuY28vcjMvZiIseyJwb3B1cmwiOiJ0aGlyZCIsInBvcHBvb2wiOiJzZWNvbmQiLCJwb3NpdGlvbiI6MTd9KTt9LA0KICAgIHdpZHRoOiB3cy53LA0KICAgIGhlaWdodDogd3MuaCwNCiAgICB0b3A6IHdzLnQsDQogICAgbGVmdDogd3MubA0KfSk7DQp9PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCmZ1bmN0aW9uIGdldFVybCgpe3ZhciBlPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSp1cmxzLmxlbmd0aCksbj11cmxzW2VdO3JldHVybiB1cmxzLnNwbGljZShlLDEpLG59ZnVuY3Rpb24gZG9TZWNvbmRQb3BSZWFsKCl7aWYoNCE9b3BlbmVkU2Vjb25kUG9wKXtvcGVuZWRTZWNvbmRQb3ArPTE7dmFyIGU9Z2V0VXJsKCk7aWYob3BlbmVkU2Vjb25kUG9wPT00KXtlPSJodHRwOi8vd3d3LmdyZWF0ZGV4Y2hhbmdlLmNvbS9qdW1wL25leHQucGhwP3I9MjAxODU2MyJ9dHJ5e3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtuLnJlbD0iZG5zLXByZWZldGNoIixuLmhyZWY9ZSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG4pLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLG4ucmVsPSJwcmVjb25uZWN0IixuLmhyZWY9ZSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG4pfWNhdGNoKG8pe30hZnVuY3Rpb24oKXt2YXIgbj0hMSxvPS0xIT1lLmluZGV4T2YoInNwb3RzY2VuZXJlZCIpLHQ9ITEscj17dW5kZXI6IW5vUG9wdW5kZXIsbmV3VGFiOiExLHdpZHRoOiBzY3JlZW4ud2lkdGgsaGVpZ2h0OiBzY3JlZW4uaGVpZ2h0LHNob3VsZEZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4hbiYmIXR9LGNvb2tpZUV4cGlyZXM6LTEscG9wRmFsbGJhY2tPcHRpb25zOnt1bmRlcjohMSxuZXdUYWI6ITF9LGFmdGVyT3BlbjpmdW5jdGlvbihlLG8sdCl7bj0hMCwkLnBvc3QoImh0dHBzOi8vdHQyLm9wZW5sb2FkLmNvL3IzL2YiLHtwb3B1cmw6ZSxwb3Bwb29sOiJzZWNvbmQiLHBvc2l0aW9uOm9wZW5lZFNlY29uZFBvcCsxfSksZG9TZWNvbmRQb3BSZWFsKCksdHcodCwxKX19O2lmKCFub1BvcHVuZGVyKXt2YXIgZD1NYXRoLmZsb29yKDMqTWF0aC5yYW5kb20oKSk7MT09ZCYmKHIudW5kZXI9ITAsci5uZXdUYWI9ITApLDI9PWQmJihyLnVuZGVyPSExLHIubmV3VGFiPSExKX1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7QmV0dGVySnNQb3AucmVzZXQoKTtpZihCZXR0ZXJKc1BvcC5hZGQoZSxyKSxvKXt2YXIgZD17dW5kZXI6IW5vUG9wdW5kZXIsbmV3VGFiOiExLGhlaWdodDogc2NyZWVuLmhlaWdodCx3aWR0aDogc2NyZWVuLndpZHRoLHNob3VsZEZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4hbn0sY29va2llRXhwaXJlczotMSxwb3BGYWxsYmFja09wdGlvbnM6e3VuZGVyOiExLG5ld1RhYjohMX0sYWZ0ZXJPcGVuOmZ1bmN0aW9uKGUsbyx0KXtuPSEwLCQucG9zdCgiaHR0cHM6Ly90dDIub3BlbmxvYWQuY28vcjMvZiIse3BvcHVybDplLHBvcHBvb2w6InNlY29uZCIscG9zaXRpb246b3BlbmVkU2Vjb25kUG9wKzF9KSxkb1NlY29uZFBvcCgpLHR3KHQsMSl9fSxwPWUucmVwbGFjZSgiaHR0cDoiLCJodHRwczoiKS5yZXBsYWNlKCJIYXJkbGluaz10cnVlIiwiSGFyZGxpbms9dHJ1ZSZhcGk9VHJ1ZSIpOyQuZ2V0KHAsZnVuY3Rpb24oZSl7MD09ZS5pbmRleE9mKCJodHRwIikmJih0PSEwLEJldHRlckpzUG9wLmFkZChlLGQpKX0pfX0sMT09b3BlbmVkU2Vjb25kUG9wPzI1MDo0NWUzKX0oKX19aWYoIXdpbmRvdy50dXJub2ZmKXZhciBvcGVuZWRTZWNvbmRQb3A9MCx1cmxzPVsiaHR0cDovL2pmNzFxaDV2MTQuY29tL3M5MnlicGhtam4/a2V5PTUwNTAwZjBkZTRiOWUyNzEzYzA1NDdmNmE2MmQ3ODQ1JnBzaWQ9IitlbmNvZGVVUklDb21wb25lbnQod2luZG93LnJlZmwpLCJodHRwOi8vamY3MXFoNXYxNC5jb20vNnJwY2s3YXE/a2V5PTNhOGJkYjIxZjMzZjNkMGE4OTc4NGJjZWJlYjkzMDNmJnBzaWQ9IitlbmNvZGVVUklDb21wb25lbnQod2luZG93LnJlZmwpLCJodHRwOi8vamY3MXFoNXYxNC5jb20vY3F4OWlzOTA/a2V5PWM4ZjJiNTJhOGE2YmVkNGVmYThiZjEwMTFhMTdkY2Y4JnBzaWQ9IitlbmNvZGVVUklDb21wb25lbnQod2luZG93LnJlZmwpLCJodHRwOi8vY29uc3RpbnRwdHIuY29tLzE2NzUzMDMvIiwiaHR0cDovL3N5bmRpY2F0aW9uLmV4b3Nydi5jb20vc3BsYXNoLXpvbmVzLXNwbGl0LnBocD9zdD1yZWYmbWFpbl96b25lPTI3OTI5NDYmdHlwZT04JnN1Yj0xJnJlZj0iK2VuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cucmVmbCksImh0dHA6Ly9zeW5kaWNhdGlvbi5leG9zcnYuY29tL3NwbGFzaC16b25lcy1zcGxpdC5waHA/c3Q9cmVmJm1haW5fem9uZT0yNzkyOTQ2JnR5cGU9OCZzdWI9MiZyZWY9IitlbmNvZGVVUklDb21wb25lbnQod2luZG93LnJlZmwpLCJodHRwOi8vc3luZGljYXRpb24uZXhvc3J2LmNvbS9zcGxhc2gtem9uZXMtc3BsaXQucGhwP3N0PXJlZiZtYWluX3pvbmU9Mjc5Mjk0NiZ0eXBlPTgmc3ViPTUmcmVmPSIrZW5jb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5yZWZsKSwiaHR0cDovL3d3dy5vbmNsaWNrc3VwZXIuY29tL2p1bXAvbmV4dC5waHA/cj0yMjM3MjcxIiwiaHR0cDovL2VuZ2luZS5zcG90c2NlbmVyZWQuaW5mby9saW5rLmVuZ2luZT9ndWlkPWU4NGRiZTQyLTMyZmUtNDE0My05OTk0LWYwZjE4YzhiZGQwNyZIYXJkbGluaz10cnVlJnRpbWU9MCZDdXJyZW50VXJsPSIrZW5jb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LnJlZmVycmVyKV07DQo8L3NjcmlwdD4KPHNjcmlwdD4NCkZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kfHwoRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgLSB3aGF0IGlzIHRyeWluZyB0byBiZSBib3VuZCBpcyBub3QgY2FsbGFibGUiKTt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksbj10aGlzLGk9ZnVuY3Rpb24oKXt9LG89ZnVuY3Rpb24oKXtyZXR1cm4gbi5hcHBseSh0aGlzIGluc3RhbmNlb2YgaSYmdD90aGlzOnQsZS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpfTtyZXR1cm4gaS5wcm90b3R5cGU9dGhpcy5wcm90b3R5cGUsby5wcm90b3R5cGU9bmV3IGksb30pO3ZhciBCZXR0ZXJKc1BvcD17cmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnVybHM9W119LGFkZDpmdW5jdGlvbih0LGUpe2V8fChlPXt9KSxlLnR5cGV8fCh0aGlzLmNhcC5wb3B1bmRlciYmZS51bmRlciYmImNocm9tZSIhPXRoaXMuY2FwLmVudi5iP2UudHlwZT0icG9wdW5kZXIiOmUudHlwZT0icG9wdXAiLGUuZm9yY2V1bmRlciYmdGhpcy5jYXAucG9wdW5kZXImJihlLnR5cGU9InBvcHVuZGVyIikpLHRoaXMuYWRkVXJsKHQsZSl9LGNvbmZpZzpmdW5jdGlvbigpe30saWdub3JlVG86ZnVuY3Rpb24odCl7dGhpcy5pZ25vcmVzLnB1c2godCl9LGNoZWNrSWdub3JlOmZ1bmN0aW9uKHQpe2lmKCF0LnRhcmdldClyZXR1cm4hMTtpZigwPT10aGlzLmlnbm9yZXMubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgZT0wO2U8dGhpcy5pZ25vcmVzLmxlbmd0aDtlKyspe3ZhciBuPXRoaXMuaWdub3Jlc1tlXTtpZih0LnRhcmdldC5pZCYmdC50YXJnZXQuaWQ9PW4pcmV0dXJuITA7Zm9yKHZhciBpPXQudGFyZ2V0O2kmJmkucGFyZW50RWxlbWVudDspaWYoKGk9aS5wYXJlbnRFbGVtZW50KS5pZCYmaS5pZD09bilyZXR1cm4hMH1yZXR1cm4hMX0sY2hlY2tTdGFja0VtcHR5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy51cmxzLmxlbmd0aDtlKyspe3ZhciBuPXRoaXMudXJsc1tlXTtpZihuLm9wdGlvbnN8fChuLm9wdGlvbnM9e30pLCJmdW5jdGlvbiIhPXR5cGVvZiBuLm9wdGlvbnMuc2hvdWxkRmlyZXx8bi5vcHRpb25zLnNob3VsZEZpcmUoKSlyZXR1cm4hMX1yZXR1cm4hMH0sY2hlY2tTdGFjazpmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMudXJscy5sZW5ndGg7ZSsrKXt2YXIgbj10aGlzLnVybHNbZV07aWYobi5vcHRpb25zfHwobi5vcHRpb25zPXt9KSwiZnVuY3Rpb24iIT10eXBlb2Ygbi5vcHRpb25zLnNob3VsZEZpcmV8fG4ub3B0aW9ucy5zaG91bGRGaXJlKCkpcmV0dXJuIHRoaXMudXJscy5zcGxpY2UoZSwxKSxufXJldHVybiExfSxwcmVsb2FkOmZ1bmN0aW9uKHQpe3RyeXt2YXIgZTsoZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikpLnJlbD0iZG5zLXByZWZldGNoIixlLmhyZWY9dCxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGUpLChlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKSkucmVsPSJwcmVjb25uZWN0IixlLmhyZWY9dCxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGUpfWNhdGNoKGUpe319LHJhbmRzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9d2luZG93LnNjcmVlbi5hdmFpbFdpZHRofHx3aW5kb3cuc2NyZWVuLndpZHRofHx3aW5kb3cub3V0ZXJXaWR0aHx8MTAyNCxlPXdpbmRvdy5zY3JlZW4uYXZhaWxIZWlnaHR8fHdpbmRvdy5zY3JlZW4uaGVpZ2h0fHx3aW5kb3cub3V0ZXJIZWlnaHR8fDc2OCxuPShNYXRoLnJhbmRvbSgpKigxLS45NSkrLjk1KSp0fDAsaT0oTWF0aC5yYW5kb20oKSooMS0uOTUpKy45MikqZXwwO3JldHVybnt3Om4saDppLGw6TWF0aC5tYXgoTWF0aC5yYW5kb20oKSoodC1uKXwwLDApLHQ6TWF0aC5tYXgoTWF0aC5yYW5kb20oKSooZS1pKSouNHwwLDApfX0sX3dpbmRvd09wZW46ZnVuY3Rpb24odCxlKXt2YXIgbixpPSIiK01hdGgucmFuZG9tKCk7Im1zaWUiPT10aGlzLmNhcC5lbnYuYiYmdGhpcy5jYXAuZW52LnY8PTkmJihpPSIiKSxuPWU/d2luZG93Lm9wZW4oIiIsaSxlKTp3aW5kb3cub3BlbigiIixpKTt0cnl7bi5sb2NhdGlvbi5yZXBsYWNlKHQpfWNhdGNoKG8pe31yZXR1cm4gbn0sX29wZW5UYWJ1cDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fd2luZG93T3Blbih0KX0sX29wZW5UYWJ1bmRlcjpmdW5jdGlvbih0KXtpZigwPT10aGlzLmNhcC50YWJ1bmRlcil0aGlzLl9vcGVuVGFidXAodCk7ZWxzZXt2YXIgZT10aGlzLl9vcGVuVGFidXAoZG9jdW1lbnQubG9jYXRpb24uaHJlZik7dGhpcy50aT1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKGUpdHJ5e2RvY3VtZW50LmxvY2F0aW9uLnJlcGxhY2UodCl9Y2F0Y2gobil7Y2xlYXJJbnRlcnZhbCh0aGlzLnRpKX19LmJpbmQodGhpcyksMTApfXJldHVybiEwfSxfZ2V0T3B0U3RyaW5nOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yYW5kc2l6ZSgpO3JldHVybiBvcHRzdHJpbmc9InRvcD0iK3QudCsiLGxlZnQ9Iit0LmwrIix3aWR0aD0iK3QudysiLGhlaWdodD0iK3QuaCsiLHN0YXR1cz0wLGxvY2F0aW9uPTEsdG9vbGJhcj0xLG1lbnViYXI9MSxyZXNpemFibGU9MSxzY3JvbGxiYXJzPTEifSxfb3BlblBvcHVwOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl93aW5kb3dPcGVuKHQsdGhpcy5fZ2V0T3B0U3RyaW5nKCkpfSxfb3BlblBvcHVuZGVyU2FmYXJpOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLG4pe3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2kuc3R5bGU9ImRpc3BsYXk6bm9uZTsiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSk7dmFyIG89aS5jb250ZW50V2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO28udHlwZT0idGV4dC9qYXZhc2NyaXB0IixvLmlubmVySFRNTD0id2luZG93LnBhcmVudCA9IHdpbmRvdy50b3AgPSB3aW5kb3cuZnJhbWVFbGVtZW50ID0gbnVsbDt3aW5kb3cubWtwID0gZnVuY3Rpb24odXJsLCBuYW1lLCBvcHRzKSB7dmFyIHBvcFdpbiA9IHdpbmRvdy5vcGVuKHVybCwgbmFtZSwgb3B0cyk7dHJ5IHtwb3BXaW4ub3BlbmVyID0gbnVsbH0gY2F0Y2ggKGUpIHt9cmV0dXJuIHBvcFdpbjt9OyIsaS5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobyk7dmFyIHI9aS5jb250ZW50V2luZG93Lm1rcCh0LGUsbik7cmV0dXJuIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaSkscn13aW5kb3cubmFtZT0iIitNYXRoLnJhbmRvbSgpO3ZhciBuPWUodCwiIitNYXRoLnJhbmRvbSgpLHRoaXMuX2dldE9wdFN0cmluZygpKTtyZXR1cm4gZSgiIix3aW5kb3cubmFtZSwiIiksd2luZG93Lm5hbWU9bnVsbCxufSxfb3BlblBvcHVuZGVyQmx1cjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9vcGVuUG9wdXAodCk7dHJ5e2RvY3VtZW50LmZvY3VzKCl9Y2F0Y2gobil7fXJldHVybiB3aW5kb3cuZm9jdXMoKSxlLmJsdXIoKSxlfSxfb3BlblBvcHVuZGVyRkY6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlPXRoaXMuX29wZW5Qb3B1cCh0KSwiYWJvdXQ6YmxhbmsiPT10JiYodGhpcy5wcmVwb3A9ZSl9LmJpbmQodGhpcyksMCksc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5vcGVuKCIiLCJfc2VsZiIpO3QmJiF0LmNsb3NlZCYmdC5mb2N1cygpfSwwKSwhMH0sX29wZW5Qb3B1bmRlckNSUHJlOmZ1bmN0aW9uKHQpe3ZhciBlLG49Ijxib2R5PgkJPHNjcmlwdD4JCXZhciBzMWk9MCxzMmk9MDt3aW5kb3cubmFtZT0nJzsJCWZ1bmN0aW9uIHBvc3JlZCgpe3dpbmRvdy5yZXNpemVUbygxMDAsMTAwKTtpZiAod2luZG93LnNjcmVlblk+MTAwKSB3aW5kb3cubW92ZVRvKDAsMCk7IGVsc2Ugd2luZG93Lm1vdmVUbyg5OTk5LDk5OTkpfTsJCWZ1bmN0aW9uIGRhbmNlKCl7aWYgKHMxaT09MCApe3MxaT13aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsgcG9zcmVkKCk7IH0sIDUwKTt9cG9zcmVkKCk7ZG9jdW1lbnQub25tb3VzZW1vdmU9bnVsbDt9OwkJZG9jdW1lbnQub25tb3VzZW1vdmU9ZGFuY2U7CQlmdW5jdGlvbiBwaGFzaCgpe3JldHVybiB3aW5kb3cuc2NyZWVuWCsnLCcrd2luZG93LnNjcmVlblkrJywnK3dpbmRvdy5vdXRlcldpZHRoKycsJyt3aW5kb3cub3V0ZXJIZWlnaHR9OwkJcGhhc2hjPXBoYXNoKCk7czJpPXNldEludGVydmFsKGZ1bmN0aW9uKCl7aWYgKChwaGFzaGMhPXBoYXNoKCkpKSB7IGlmKHBoYXNoYy5pbmRleE9mKCcsMTAwLDEwMCcpID09IC0xKSB7ZGFuY2UoKTt9OyBwaGFzaGM9cGhhc2goKTsgfX0sMTAwKTsJCXZhciBkZXBsb3k9ZnVuY3Rpb24oKQkJewkJCXdpbmRvdy5jbGVhckludGVydmFsKHMxaSk7d2luZG93LmNsZWFySW50ZXJ2YWwoczJpKTtkb2N1bWVudC5vbm1vdXNlbW92ZT1udWxsOwkJCXdpbmRvdy5tb3ZlVG8oIit3aW5kb3cuc2NyZWVuWCsiLCIrd2luZG93LnNjcmVlblkrIik7CQkJd2luZG93LnJlc2l6ZVRvKCIrd2luZG93Lm91dGVyV2lkdGgrIiwgIit3aW5kb3cub3V0ZXJIZWlnaHQrIik7CQkJaWYgKHdpbmRvdy5uYW1lPT0nJykgd2luZG93Lm5hbWU9J3JlYWR5JzsgZWxzZQkJCXdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHdpbmRvdy5uYW1lKTt3aW5kb3cub25ibHVyPW51bGw7CQl9O3dpbmRvdy5vbmJsdXI9ZGVwbG95OwkJdmFyIHRvaT1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmICh3aW5kb3cubmFtZS5sZW5ndGg+NSkge2NsZWFySW50ZXJ2YWwodG9pKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZGVwbG95KCl9LCAiK3QrIik7fSB9LDUwKTsJCTxcL3NjcmlwdD4iLGk9IiIrTWF0aC5yYW5kb20oKTtlPXdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIsaSwidG9wPTk5OTksbGVmdD05OTk5LHdpZHRoPTEwMCxoZWlnaHQ9MTAwIik7dHJ5e2UuZG9jdW1lbnQub3BlbigpLGUuZG9jdW1lbnQud3JpdGUobiksZS5kb2N1bWVudC5jbG9zZSgpfWNhdGNoKG8pe31yZXR1cm4gZX0sX29wZW5Qb3B1bmRlckNSUG9zdDpmdW5jdGlvbih0KXsicmVhZHkiPT10aGlzLnByZXBvcC5uYW1lP3RoaXMucHJlcG9wLmxvY2F0aW9uLnJlcGxhY2UodCk6dGhpcy5wcmVwb3AubmFtZT10fSxfZ2V0TWluaXBvcFN0YXR1czpmdW5jdGlvbih0KXtpZighdHx8dC5jbG9zZWR8fCF0LmxvY2F0aW9uKXJldHVybiJjbG9zZWQiO3RyeXt0Lm5hbWV9Y2F0Y2goZSl7ImVycm9yIn1yZXR1cm4iZXJyb3IiPyJzdWNjZXNzIjoiIj8id2FpdGluZyI6InJlYWR5Ij8icHJlcG9wcmVhZHkiOjB9LF9vcGVuUG9wdW5kZXJDUjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9Ijxib2R5PgkJPHNjcmlwdD4JCXZhciBzMWk9MCxzMmk9MDsJCWZ1bmN0aW9uIHBvc3JlZCgpe3dpbmRvdy5yZXNpemVUbygxMDAsMTAwKTtpZiAod2luZG93LnNjcmVlblk+MTAwKSB3aW5kb3cubW92ZVRvKDAsMCk7IGVsc2Ugd2luZG93Lm1vdmVUbyg5OTk5LDk5OTkpfTsJCWZ1bmN0aW9uIGRhbmNlKCl7aWYgKHMxaT09MCApe3MxaT13aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsgcG9zcmVkKCk7IH0sIDUwKTt9cG9zcmVkKCk7ZG9jdW1lbnQub25tb3VzZW1vdmU9bnVsbDt9OwkJZG9jdW1lbnQub25tb3VzZW1vdmU9ZGFuY2U7CQlmdW5jdGlvbiBwaGFzaCgpe3JldHVybiB3aW5kb3cuc2NyZWVuWCsnLCcrd2luZG93LnNjcmVlblkrJywnK3dpbmRvdy5vdXRlcldpZHRoKycsJyt3aW5kb3cub3V0ZXJIZWlnaHR9OwkJcGhhc2hjPXBoYXNoKCk7czJpPXNldEludGVydmFsKGZ1bmN0aW9uKCl7aWYgKChwaGFzaGMhPXBoYXNoKCkpKSB7IGlmKHBoYXNoYy5pbmRleE9mKCcsMTAwLDEwMCcpID09IC0xKSB7ZGFuY2UoKTt9OyBwaGFzaGM9cGhhc2goKTsgfX0sMTAwKTsJCXZhciBkZXBsb3k9ZnVuY3Rpb24oKQkJewkJCXdpbmRvdy5uYW1lPSdyZWFkeSc7CQkJd2luZG93LmNsZWFySW50ZXJ2YWwoczFpKTt3aW5kb3cuY2xlYXJJbnRlcnZhbChzMmkpO2RvY3VtZW50Lm9ubW91c2Vtb3ZlPW51bGw7CQkJd2luZG93Lm1vdmVUbygiK3dpbmRvdy5zY3JlZW5YKyIsIit3aW5kb3cuc2NyZWVuWSsiKTsJCQl3aW5kb3cucmVzaXplVG8oIit3aW5kb3cub3V0ZXJXaWR0aCsiLCAiK3dpbmRvdy5vdXRlckhlaWdodCsiKTsJCQl3aW5kb3cubG9jYXRpb24ucmVwbGFjZSgnIit0KyInKQkJfTt3aW5kb3cub25ibHVyPWRlcGxveTtzZXRUaW1lb3V0KGRlcGxveSwgIitlKyIpPFwvc2NyaXB0PiIsbz0iIitNYXRoLnJhbmRvbSgpO249d2luZG93Lm9wZW4oIiIsbywidG9wPTk5OTksbGVmdD05OTk5LHdpZHRoPTEwMCxoZWlnaHQ9MTAwIik7dHJ5e24uZG9jdW1lbnQub3BlbigpLG4uZG9jdW1lbnQud3JpdGUoaSksbi5kb2N1bWVudC5jbG9zZSgpfWNhdGNoKHIpe31yZXR1cm4gbn0sX29wZW5Qb3B1bmRlcklFMTE6ZnVuY3Rpb24odCl7dGhpcy50dz10aGlzLl9vcGVuUG9wdXAodCk7cmV0dXJuIHRoaXMuZm9jdXNJbnRlcnZhbCYmY2xlYXJJbnRlcnZhbCh0aGlzLmZvY3VzSW50ZXJ2YWwpLHRoaXMucnVucz0wLHRoaXMuZm9jdXNJbnRlcnZhbD1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3RyeXt0aGlzLnR3JiYodGhpcy50dy5ibHVyKCksdGhpcy50dy5vcGVuZXIuZm9jdXMoKSx3aW5kb3cuc2VsZi5mb2N1cygpLHdpbmRvdy5mb2N1cygpLGRvY3VtZW50LmZvY3VzKCkpfWNhdGNoKHQpe310aGlzLnJ1bnMrKyx0aGlzLnJ1bnM+MTAmJnRoaXMuZm9jdXNJbnRlcnZhbCYmY2xlYXJJbnRlcnZhbCh0aGlzLmZvY3VzSW50ZXJ2YWwpfS5iaW5kKHRoaXMpLDEwMCksdGhpcy50d30sX2RldGVjdEJyb3dzZXI6ZnVuY3Rpb24odCl7dmFyIGUsbixpLG8scjtyZXR1cm4gcj0iZGVza3RvcCIsKG89dC5tYXRjaCgvXk1vemlsbGFcLzVcLjAgXChbXlwpXStcKSBBcHBsZVdlYktpdFwvWzAtOVwuXSsgXChLSFRNTCwgbGlrZSBHZWNrb1wpIENocm9tZVwvKFswLTldKylbMC05XC5dKyBTYWZhcmlcL1swLTlcLl0rJC8pKSYmKGU9ImNocm9tZSIsbj1vWzFdKSwobz10Lm1hdGNoKC8oRmlyZWZveHxPUFIpXC8oWzAtOV0rKS8pKSYmKGU9b1sxXS50b0xvd2VyQ2FzZSgpLG49b1syXSksKG89dC5tYXRjaCgvcnY6KFswLTldKylcLjBcKSBsaWtlIEdlY2tvLykpJiYoZT0ibXNpZSIsbj1vWzFdKSwobz10Lm1hdGNoKC9NU0lFIChbMC05XSspLykpJiYoZT0ibXNpZSIsbj1vWzFdKSwobz10Lm1hdGNoKC9XaW5kb3dzIE5ULykpJiYoaT0id2luZG93cyIpLChvPXQubWF0Y2goLyhbMC05XSspKF8oWzAtOV0rKSl7MCx9IGxpa2UgTWFjIE9TIFgvKSkmJihpPSJpb3MiLGU9InNhZmFyaSIsbj1vWzFdLHI9Im1vYmlsZSIpLChvPXQubWF0Y2goLyhDck9TKVwvKFswLTldKykvKSkmJihlPSJjaHJvbWUiLG49b1syXSxyPSJtb2JpbGUiKSwobz10Lm1hdGNoKC8oRWRnZSlcLyhbMC05XSspLykpJiYoZT1vWzFdLnRvTG93ZXJDYXNlKCksbj1vWzJdKSwobz10Lm1hdGNoKC9cKEtIVE1MLCBsaWtlIEdlY2tvXCkgVmVyc2lvblwvKFswLTldKykvKSkmJihlPSJzYWZhcmkiLG49b1sxXSksKG89dC5tYXRjaCgvTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAvKSkmJihpPSJtYWNvc3giKSx0Lm1hdGNoKC9BbmRyb2lkfGxpa2UgTWFjIE9TIFh8TW9iaWxlfFBob25lLykmJihyPSJtb2JpbGUiKSx0Lm1hdGNoKC9eTW96aWxsYVwvNVwuMCBcKExpbnV4OyBBbmRyb2lkLykmJihpPSJhbmRyb2lkIikse286aSxiOmUsdjpuLGY6cixpOndpbmRvdyE9d2luZG93LnRvcH19LF9nZXRCcm93c2VyQ2FwYWJpbGl0aWVzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGV0ZWN0QnJvd3NlcihuYXZpZ2F0b3IudXNlckFnZW50KSxlPSExLG49ITAsaT0hMCxvPSEwO3JldHVybiJkZXNrdG9wIj09dC5mPygiY2hyb21lIj09dC5iJiYoZT0hMCksImZpcmVmb3giPT10LmImJihlPSEwKSwibXNpZSI9PXQuYiYmdC52PDExJiYobz0hMCxpPSEwLGU9ITApLCJtc2llIj09dC5iJiYxMT09dC52JiYoZT0hMCksInNhZmFyaSI9PXQuYiYmKGU9ITApKToobj0hMSxvPSExKSwxPT10LmkmJihvPSExKSx7ZW52OnQscG9wdXA6bixwb3B1bmRlcjplLHRhYnVwOmksdGFidW5kZXI6b319LF9vcGVuUG9wdW5kZXI6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmNhcC5lbnY7cmV0dXJuImRlc2t0b3AiIT1uLmY/dGhpcy5jYXAudGFidW5kZXI/dGhpcy5fb3BlblRhYnVuZGVyKHQpOnRoaXMuX29wZW5UYWJ1cCh0KToiY2hyb21lIj09bi5iPyh0aGlzLm1pbmlwb3Btb249ITAsdGhpcy5fb3BlblBvcHVuZGVyQ1IodCxlKSk6ImZpcmVmb3giPT1uLmI/dGhpcy5fb3BlblBvcHVuZGVyRkYodCk6Im1zaWUiPT1uLmImJm4udjwxMT90aGlzLl9vcGVuUG9wdW5kZXJCbHVyKHQpOiJtc2llIj09bi5iJiYxMT09bi52P3RoaXMuX29wZW5Qb3B1bmRlcklFMTEodCk6InNhZmFyaSI9PW4uYj90aGlzLl9vcGVuUG9wdW5kZXJTYWZhcmkodCk6ImVkZ2UiPT1uLmI/dGhpcy5jYXAudGFidW5kZXI/dGhpcy5fb3BlblRhYnVuZGVyKHQpOnRoaXMuX29wZW5Qb3B1cCh0KTp2b2lkIDB9LF9wcmVwb3BPcGVuOmZ1bmN0aW9uKHQpeyJjaHJvbWUiPT10aGlzLmNhcC5lbnYuYj90aGlzLnByZXBvcD10aGlzLl9vcGVuUG9wdW5kZXJDUlByZSh0KTp0aGlzLl9vcGVuUG9wdW5kZXIoImFib3V0OmJsYW5rIil9LF9wcmVwb3BSZWFkeTpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMucHJlcG9wfHx0aGlzLnByZXBvcC5jbG9zZWR8fCF0aGlzLnByZXBvcC5sb2NhdGlvbil9LF9wcmVwb3BVc2U6ZnVuY3Rpb24odCl7dGhpcy5zZXR0aW5ncy5vbmJlZm9yZW9wZW4mJih0PXRoaXMuc2V0dGluZ3Mub25iZWZvcmVvcGVuKHQpKTt0cnl7ImNocm9tZSI9PXRoaXMuY2FwLmVudi5iPyh0aGlzLl9vcGVuUG9wdW5kZXJDUlBvc3QodCksdGhpcy5wcmVwb3A9ITEpOih0aGlzLnByZXBvcC5sb2NhdGlvbi5yZXBsYWNlKHQpLHRoaXMucHJlcG9wPSExKX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH0sX3ByZXBvcENsb3NlOmZ1bmN0aW9uKCl7dHJ5e3RoaXMucHJlcG9wLmNsb3NlKCl9Y2F0Y2godCl7cmV0dXJuITF9cmV0dXJuITB9LF9vcGVuQWQ6ZnVuY3Rpb24odCxlKXt0aGlzLnNldHRpbmdzLm9uYmVmb3Jlb3BlbiYmKHQ9dGhpcy5zZXR0aW5ncy5vbmJlZm9yZW9wZW4odCkpO3ZhciBuPWUudHlwZTtyZXR1cm4icG9wdW5kZXIiIT1ufHx0aGlzLmNhcC5wb3B1bmRlcnx8KG49InBvcHVwIiksInRhYnVuZGVyIiE9bnx8dGhpcy5jYXAudGFidW5kZXJ8fChuPSJwb3B1cCIpLCJwb3B1cCIhPW58fHRoaXMuY2FwLnBvcHVwfHwobj0idGFidXAiKSwidGFidXAiIT1ufHx0aGlzLmNhcC50YWJ1cHx8KG49InBvcHVwIiksInBvcHVuZGVyIj09bj90aGlzLl9vcGVuUG9wdW5kZXIodCxlLmNydGltZW91dHx8dGhpcy5zZXR0aW5ncy5jcnRpbWVvdXQpOiJwb3B1cCI9PW4/dGhpcy5fb3BlblBvcHVwKHQpOiJ0YWJ1cCI9PW4/dGhpcy5fb3BlblRhYnVwKHQpOnZvaWQgMH0sYWJvcnRQb3A6ZnVuY3Rpb24oKXt0aGlzLl9wcmVwb3BSZWFkeSgpJiZ0aGlzLl9wcmVwb3BDbG9zZSgpLHRoaXMuY2F0Y2hhbGxkaXYmJnRoaXMuX3JlbW92ZUNhdGNoQWxsRGl2KCksdGhpcy5zZXR0aW5ncy5wcmVwb3A9ITF9LF9vbkV4ZWN1dGU6ZnVuY3Rpb24odCl7aWYoImNsaWNrIj09KHQ9dHx8d2luZG93LmV2ZW50KS50eXBlfHwibW91c2V1cCI9PXQudHlwZXx8Im1vdXNlZG93biI9PXQudHlwZSl7dmFyIGU9ITE7aWYoIndoaWNoImluIHQ/ZT0zPT10LndoaWNoOiJidXR0b24iaW4gdCYmKGU9Mj09dC5idXR0b24pLGUpcmV0dXJuITF9aWYoImlzVHJ1c3RlZCJpbiB0JiYhdC5pc1RydXN0ZWQpcmV0dXJuITE7aWYobmF2aWdhdG9yLnVzZXJBY3RpdmF0aW9uJiYhbmF2aWdhdG9yLnVzZXJBY3RpdmF0aW9uLmlzQWN0aXZlKXJldHVybiExO2lmKHRoaXMubWluaXBvcG1vbil7dmFyIG49dGhpcy5fZ2V0TWluaXBvcFN0YXR1cyh0aGlzLm1pbmlwb3Btb250dyk7aWYoInN1Y2Nlc3MiPT1uKXtpZih0aGlzLm1pbmlwb3Btb249ITEsImNocm9tZSI9PXRoaXMuY2FwLmVudi5iKXJldHVybiExfWVsc2UiY2xvc2VkIj09biYmKHRoaXMubWluaXBvcG1vbj0hMSl9dmFyIGk9dGhpcy5jaGVja1N0YWNrRW1wdHkoKTtpZihpJiZ0aGlzLnNldHRpbmdzLnByZXBvcCYmIXRoaXMuX3ByZXBvcFJlYWR5KCkmJih0aGlzLnNldHRpbmdzLnByZXBvcD0hMSx0aGlzLl9wcmVwb3BPcGVuKHRoaXMuc2V0dGluZ3MuY3J0aW1lb3V0KSksdGhpcy5jYXRjaGFsbGRpdiYmaSYmdGhpcy5fcmVtb3ZlQ2F0Y2hBbGxEaXYoKSx0aGlzLmNoZWNrSWdub3JlKHQpKXJldHVybiExO2lmKGkpcmV0dXJuITE7aWYodGhpcy5zZXR0aW5ncy5wcmVwb3A9ITEsbmF2aWdhdG9yLnVzZXJBY3RpdmF0aW9uJiYhbmF2aWdhdG9yLnVzZXJBY3RpdmF0aW9uLmlzQWN0aXZlKXJldHVybiExO3ZhciBvPXRoaXMuY2hlY2tTdGFjaygpO2lmKCFvKXJldHVybiExO3RoaXMubWluaXBvcG1vbj0hMTt2YXIgcj10aGlzLl9vcGVuQWQoby51cmwsby5vcHRpb25zKTtpZih0aGlzLm1pbmlwb3Btb24mJih0aGlzLm1pbmlwb3Btb250dz1yKSwiZnVuY3Rpb24iPT10eXBlb2Ygby5vcHRpb25zLmFmdGVyT3Blbil0cnl7by5vcHRpb25zLmFmdGVyT3BlbihvLnVybCxvLm9wdGlvbnMscil9Y2F0Y2godCl7fXRoaXMuY2F0Y2hhbGxkaXYmJnRoaXMuY2hlY2tTdGFja0VtcHR5KCkmJnRoaXMuX3JlbW92ZUNhdGNoQWxsRGl2KCl9LF91c2VyQWN0aXZhdGlvbkhhbmRsZXI6ZnVuY3Rpb24oKXtuYXZpZ2F0b3IudXNlckFjdGl2YXRpb24uaXNBY3RpdmUmJnRoaXMuX29uRXhlY3V0ZSh7dHlwZToidWFoIn0pfSxfb25Nb3VzZURvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0fHx0LnNyY0VsZW1lbnR8fHQudG9FbGVtZW50O2lmKHRoaXMuX3ByZXBvcFJlYWR5KCkpcmV0dXJuITE7dmFyIG49ITE7aWYodGhpcy5taW5pcG9wbW9udHcpe3ZhciBpPXRoaXMuX2dldE1pbmlwb3BTdGF0dXModGhpcy5taW5pcG9wbW9udHcpOyJ3YWl0aW5nIj09aSYmKG49ITApLCJwcmVwb3ByZWFkeSI9PWkmJihuPSEwKX1yZXR1cm4hbiYmKCJBIj09ZS50YWdOYW1lJiYoZS5wb3Bqc29yaWdpbmFsaHJlZiYmdGhpcy5jaGVja1N0YWNrRW1wdHkoKT8oZS5ocmVmPWUucG9wanNvcmlnaW5hbGhyZWYsZGVsZXRlIGUucG9wanNvcmlnaW5hbGhyZWYsZS50YXJnZXQ9Il9ibGFuayIsITEpOiEoIl9ibGFuayIhPWUudGFyZ2V0JiZkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiQkFTRSIpLmxlbmd0aD4wJiYiX2JsYW5rIiE9KGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJCQVNFIilbMF0udGFyZ2V0fHwiIikudG9Mb3dlckNhc2UoKSkmJighdGhpcy5jaGVja1N0YWNrRW1wdHkoKSYmKGUucG9wanNvcmlnaW5hbGhyZWY9ZS5ocmVmLGUuaHJlZj0iIyIsdm9pZChlLnRhcmdldD0iIikpKSkpfSxfb25CZWZvcmVVbmxvYWRIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5fcHJlcG9wUmVhZHkoKSYmdGhpcy5fcHJlcG9wQ2xvc2UoKX0sX2lzQ2F0Y2hBbGxOZWVkZWQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2Zvcih2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KSxuPTA7bjxlLmxlbmd0aDtuKyspaWYoKGUuaXRlbShuKS5jbGllbnRIZWlnaHR8fGUuaXRlbShuKS5vZmZzZXRIZWlnaHR8fDApPjMwfHwoZS5pdGVtKG4pLmNsaWVudFdpZHRofHxlLml0ZW0obikub2Zmc2V0V2lkdGh8fDApPjMwKXJldHVybiEwO3JldHVybiExfXJldHVybiB0KCJJRlJBTUUiKXx8dCgiVklERU8iKXx8dCgiT0JKRUNUIil9LF9yZW1vdmVDYXRjaEFsbERpdjpmdW5jdGlvbigpe3RoaXMuY2F0Y2hhbGxkaXYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmNhdGNoYWxsZGl2KSxkZWxldGUgdGhpcy5jYXRjaGFsbGRpdn0sX2NyZWF0ZUNhdGNoQWxsRGl2OmZ1bmN0aW9uKCl7aWYoMD09ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKS5sZW5ndGgpcmV0dXJuITE7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwKTsgei1pbmRleDogMzAwMDAwOyIsZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcj8oImRlc2t0b3AiIT10aGlzLmNhcC5lbnYuZiYmImlvcyI9PXRoaXMuY2FwLmVudi5vJiZ0LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLl9vbkV4ZWN1dGUuYmluZCh0aGlzKSwhMCksdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fb25FeGVjdXRlLmJpbmQodGhpcyksITApKTp0LmF0dGFjaEV2ZW50KCJvbmNsaWNrIix0aGlzLl9vbkV4ZWN1dGUuYmluZCh0aGlzKSksZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXS5hcHBlbmRDaGlsZCh0KSx0aGlzLmNhdGNoYWxsZGl2PXQsITB9LF9kZXBsb3lDYXRjaEFsbDpmdW5jdGlvbigpe3RoaXMuc2V0dGluZ3MuY2F0Y2hhbGxkaXZvZmYmJih0aGlzLl9pc0NhdGNoQWxsTmVlZGVkKCkmJiF0aGlzLmNhdGNoYWxsZGl2P3RoaXMuX2NyZWF0ZUNhdGNoQWxsRGl2KCk6dGhpcy5jYXRjaGFsbG1vbnx8KHRoaXMuY2F0Y2hhbGxtb249c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXt0aGlzLmNhdGNoYWxsZGl2P2NsZWFySW50ZXJ2YWwodGhpcy5jYXRjaGFsbG1vbik6dGhpcy5faXNDYXRjaEFsbE5lZWRlZCgpJiYoY2xlYXJJbnRlcnZhbCh0aGlzLmNhdGNoYWxsbW9uKSx0aGlzLl9jcmVhdGVDYXRjaEFsbERpdigpKX0uYmluZCh0aGlzKSw1MDApKSl9LGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jYXA9dGhpcy5fZ2V0QnJvd3NlckNhcGFiaWxpdGllcygpLHRoaXMudXJscz1bXSx0aGlzLmlnbm9yZXM9W10sdGhpcy5zZXR0aW5ncz17fSx0aGlzLnNldHRpbmdzLnByZXBvcD0hIXQucHJlcG9wJiZ0aGlzLmNhcC5wb3B1bmRlcix0aGlzLnNldHRpbmdzLmNydGltZW91dD10LmNydGltZW91dHx8NmU0LHRoaXMuc2V0dGluZ3MudGFyZ2V0YmxhbmtoYW5kbGVyPXQudGFyZ2V0YmxhbmtoYW5kbGVyfHwhMCx0aGlzLnNldHRpbmdzLm9uYmVmb3Jlb3Blbj10Lm9uYmVmb3Jlb3Blbix0aGlzLnNldHRpbmdzLmNhdGNoYWxsZGl2b2ZmPXQuY2F0Y2hhbGxkaXZ8fCFuYXZpZ2F0b3IudXNlckFjdGl2YXRpb24sdGhpcy5taW5pcG9wbW9uPSExLHRoaXMuX2RlcGxveUNhdGNoQWxsKCksbmF2aWdhdG9yLnVzZXJBY3RpdmF0aW9uJiZzZXRJbnRlcnZhbCh0aGlzLl91c2VyQWN0aXZhdGlvbkhhbmRsZXIuYmluZCh0aGlzKSw1MCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcj8oImRlc2t0b3AiIT10aGlzLmNhcC5lbnYuZiYmImlvcyI9PXRoaXMuY2FwLmVudi5vJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5fb25FeGVjdXRlLmJpbmQodGhpcyksITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9vbkV4ZWN1dGUuYmluZCh0aGlzKSwhMCksdGhpcy5zZXR0aW5ncy50YXJnZXRibGFua2hhbmRsZXImJmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5fb25Nb3VzZURvd25IYW5kbGVyLmJpbmQodGhpcyksITApLHRoaXMuc2V0dGluZ3MucHJlcG9wJiZ3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIix0aGlzLl9vbkJlZm9yZVVubG9hZEhhbmRsZXIuYmluZCh0aGlzKSwhMCkpOihkb2N1bWVudC5hdHRhY2hFdmVudCgib25jbGljayIsdGhpcy5fb25FeGVjdXRlLmJpbmQodGhpcykpLHRoaXMuc2V0dGluZ3MudGFyZ2V0YmxhbmtoYW5kbGVyJiZkb2N1bWVudC5hdHRhY2hFdmVudCgib25tb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duSGFuZGxlci5iaW5kKHRoaXMpKSx0aGlzLnNldHRpbmdzLnByZXBvcCYmd2luZG93LmF0dGFjaEV2ZW50KCJvbmJlZm9yZXVubG9hZCIsdGhpcy5fb25CZWZvcmVVbmxvYWRIYW5kbGVyLmJpbmQodGhpcykpKX0sYWRkVXJsOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuY2FwKXJldHVybiExO3ZhciBuPSExO2lmKHRoaXMuX3ByZXBvcFJlYWR5KCkpe3ZhciBpPSEwOyJmdW5jdGlvbiI9PXR5cGVvZiBlLnNob3VsZEZpcmUmJihpPSExLG49ITEpLCJwb3B1bmRlciI9PWUudHlwZSYmaT90aGlzLl9wcmVwb3BVc2UodCkmJihuPSEwKTppJiZ0aGlzLl9wcmVwb3BDbG9zZSgpfW58fCh0aGlzLnVybHMucHVzaCh7dXJsOnQsb3B0aW9uczplfSksdGhpcy5fZGVwbG95Q2F0Y2hBbGwoKSl9fTtCZXR0ZXJKc1BvcC5wb3B1bmRlckF2YWlsYWJsZT1CZXR0ZXJKc1BvcC5fZ2V0QnJvd3NlckNhcGFiaWxpdGllcygpLnBvcHVuZGVyLEJldHRlckpzUG9wLmluaXQoe3ByZXBvcDohMH0pOzwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQp0cnl7QT1+W107QT17X19fOisrQSwkJCQkOighW10rIiIpW0FdLF9fJDorK0EsJF8kXzooIVtdKyIiKVtBXSxfJF86KytBLCRfJCQ6KHt9KyIiKVtBXSwkJF8kOihBW0FdKyIiKVtBXSxfJCQ6KytBLCQkJF86KCEiIisiIilbQV0sJF9fOisrQSwkXyQ6KytBLCQkX186KHt9KyIiKVtBXSwkJF86KytBLCQkJDorK0EsJF9fXzorK0EsJF9fJDorK0F9O0EuJF89KEEuJF89QSsiIilbQS4kXyRdKyhBLl8kPUEuJF9bQS5fXyRdKSsoQS4kJD0oQS4kKyIiKVtBLl9fJF0pKygoIUEpKyIiKVtBLl8kJF0rKEEuX189QS4kX1tBLiQkX10pKyhBLiQ9KCEiIisiIilbQS5fXyRdKSsoQS5fPSghIiIrIiIpW0EuXyRfXSkrQS4kX1tBLiRfJF0rQS5fXytBLl8kK0EuJDtBLiQkPUEuJCsoISIiKyIiKVtBLl8kJF0rQS5fXytBLl8rQS4kK0EuJCQ7QS4kPShBLl9fXylbQS4kX11bQS4kX107QS4kKEEuJChBLiQkKyJcIiIrIlxcIitBLl9fJCtBLiRfJCtBLl9fJCtBLiQkJCQrIihcXCIrQS5fXyQrQS5fXyQrQS5fX18rQS5fXysiXFwiK0EuX18kK0EuJF8kK0EuJF8kKyghW10rIiIpW0EuXyRfXSsiXFwiK0EuX18kK0EuXyRfK0EuJCRfKyJcXCIrQS5fXyQrQS4kXyQrQS5fXyQrQS4kJCRfKyJcXCIrQS5fXyQrQS4kJF8rQS4kJCQrQS4kJCRfKyJcXCIrQS5fXyQrQS4kJF8rQS5fJF8rIiYmXFwiK0EuX18kK0EuX18kK0EuX19fK0EuX18rIlxcIitBLl9fJCtBLiRfJCtBLiRfJCsoIVtdKyIiKVtBLl8kX10rIlxcIitBLl9fJCtBLl8kXytBLiQkXysiXFwiK0EuX18kK0EuJF8kK0EuX18kK0EuJCQkXysiXFwiK0EuX18kK0EuJCRfK0EuJCQkK0EuJCQkXysiXFwiK0EuX18kK0EuJCRfK0EuXyRfKyIuXFwiK0EuX18kK0EuJCRfK0EuXyQkKyJcXCIrQS5fXyQrQS4kXyQrQS5fX18rQS5fJCsiXFwiK0EuX18kK0EuJCRfK0EuJCQkKyJcXCIrQS5fXyQrQS5fXyQrQS5fX18rIlxcIitBLl9fJCtBLl8kXytBLiRfXysiXFwiK0EuX18kK0EuX18kK0EuJF8kKyJcXCIrQS5fXyQrQS5fXyQrQS4kX18rIikiKyghW10rIiIpW0EuXyRfXStBLl8kK0EuJCRfXytBLiRfJF8rQS5fXysiXFwiK0EuX18kK0EuJF8kK0EuX18kK0EuXyQrIlxcIitBLl9fJCtBLiRfJCtBLiQkXysiLlxcIitBLl9fJCtBLiRfJCtBLl9fXysiXFwiK0EuX18kK0EuJCRfK0EuXyRfK0EuJCQkXytBLiQkJCQrIj1cXFwiXFwiK0EuX18kK0EuJF8kK0EuX19fK0EuX18rQS5fXysiXFwiK0EuX18kK0EuJCRfK0EuX19fKyI6Ly9cXCIrQS5fXyQrQS4kXyQrQS4kJF8rIlxcIitBLl9fJCtBLiQkJCtBLl9fJCtBLiRfJF8rIlxcIitBLl9fJCtBLiRfJCtBLiQkXysiLiIrQS4kJF9fK0EuJF8kXytBLl9fKyIvXFxcIjsiKyJcIiIpKCkpKCk7fWNhdGNoKGUpe30NCndpbmRvdy5wb3BBZHNMb2FkZWQ9dHJ1ZTsNCndpbmRvdy5ub1BvcHVuZGVyID0gIUJldHRlckpzUG9wLnBvcHVuZGVyQXZhaWxhYmxlOw0KZnVuY3Rpb24gcmFuZHNpemUoKXsNCiAgICB2YXIgdz13aW5kb3cuc2NyZWVuLndpZHRoLGg9d2luZG93LnNjcmVlbi5oZWlnaHQ7DQogICAgdmFyIHJ3ID0gKChNYXRoLnJhbmRvbSgpICogKDEgLSAwLjk1KSArIDAuOTUpKncpIHwwOw0KICAgIHZhciByaCA9ICgoTWF0aC5yYW5kb20oKSAqICgxIC0gMC45NSkgKyAwLjk1KSpoKSB8MDsNCiAgICB2YXIgb2wgPSBNYXRoLm1heCgoTWF0aC5yYW5kb20oKSAqICh3LXJ3KSB8IDApLCAwKTsNCiAgICB2YXIgb3QgPSBNYXRoLm1heCgoTWF0aC5yYW5kb20oKSAqIChoLXJoKSB8IDApLCAwKTsNCiAgICByZXR1cm4ge3c6cncsIGg6cmgsIGw6b2wsIHQ6b3R9DQp9DQpCZXR0ZXJKc1BvcC5pZ25vcmVUbygnTTE2MjgzMVNjcmlwdFJvb3RDMjQ1MjExJyk7DQpCZXR0ZXJKc1BvcC5pZ25vcmVUbygnTTE2MjgzMVNjcmlwdFJvb3RDMjUyNDE1Jyk7DQppZighd2luZG93LnR1cm5vZmYpew0KZnVuY3Rpb24gY3JlYXRlQ29va2llKCkge2RhdGUgPSBuZXcgRGF0ZSgpO2RhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSsoMjQqNjAqNjAqMTAwMCkpO3ZhciBleHBpcmVzID0gIjsgZXhwaXJlcz0iK2RhdGUudG9HTVRTdHJpbmcoKTtkb2N1bWVudC5jb29raWUgPSAiZXByb3AxIisiPSIrIm9wZW5lZCIrZXhwaXJlcysiOyBwYXRoPS8iO30NCihmdW5jdGlvbigpew0KdmFyIGZpcmVkID0gZmFsc2U7DQpCZXR0ZXJKc1BvcC5yZXNldCgpOw0KdmFyIHdzPXJhbmRzaXplKCk7DQpCZXR0ZXJKc1BvcC5hZGQoImh0dHA6Ly9zeW5kaWNhdGlvbi5leG9zcnYuY29tL3NwbGFzaC16b25lcy1zcGxpdC5waHA/c3Q9cmVmJm1haW5fem9uZT0yNzkyOTQ2JnR5cGU9OCZzdWI9MyZyZWY9IitlbmNvZGVVUklDb21wb25lbnQod2luZG93LnJlZmwpLCB7DQogICAgdW5kZXI6ICFub1BvcHVuZGVyLA0KICAgIHNob3VsZEZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gIWZpcmVkO30sDQogICAgYWZ0ZXJPcGVuOmZ1bmN0aW9uKHVybCxvLHcpe2NyZWF0ZUNvb2tpZSgpO2ZpcmVkPXRydWU7ZG9TZWNvbmRQb3AoKTsgJC5wb3N0KCJodHRwczovL3R0Mi5vcGVubG9hZC5jby9yMy9mIiwgeyJwb3B1cmwiOnVybCwgInBvcHBvb2wiOiJmaXJzdCIsICJwb3NpdGlvbiI6MX0pO2xvZ3BvcHVwKDApO3R3KHcsMCk7fSwNCiAgICB3aWR0aDogd3MudywNCiAgICBoZWlnaHQ6IHdzLmgsDQogICAgdG9wOiB3cy50LA0KICAgIGxlZnQ6IHdzLmwsDQoJdHlwZToicG9wdW5kZXIiLA0KCWZvcmNldW5kZXI6dHJ1ZQ0KfSk7DQp9KSgpOw0KfQ0KPC9zY3JpcHQ+CjxzY3JpcHQ+DQokLnVybFBhcmFtID0gZnVuY3Rpb24obmFtZSl7DQoJdmFyIHJlc3VsdHMgPSBuZXcgUmVnRXhwKCdbXD8mXScgKyBuYW1lICsgJz0oW14mI10qKScpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpOw0KCWlmIChyZXN1bHRzPT1udWxsKXsNCgkgICByZXR1cm4gbnVsbDsNCgl9DQoJZWxzZXsNCgkgICByZXR1cm4gcmVzdWx0c1sxXSB8fCAwOw0KCX0NCn0NCiQucG9zdCgiaHR0cHM6Ly90dDEub3BlbmxvYWQuY28vcjMvZiIsIHsiYXN5bmMiOiB0cnVlLCAiaHR0cF9yZWZlcmVyIjogZG9jdW1lbnQucmVmZXJyZXIsICJyZWZlcmVyIjogJC51cmxQYXJhbSgicmVmZXJlciIpIH0pOw0KPC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXNzZXRzL2pzL3ZpZGVvLWpzL3ZpZGVvLmpzLm9wZW5sb2FkLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hc3NldHMvanMvdmlkZW8ubWluLjMuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2Fzc2V0cy9qcy92aWRlby1qcy92YXN0NC92aWRlb2pzXzUudmFzdC52cGFpZC5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2Fzc2V0cy9qcy92aWRlby1qcy92aWRlb2pzLmhvdGtleXMubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hc3NldHMvanMvdmlkZW8tanMvdmlkZW8uanMub2wyMS5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij7vvp/Pie++n+++iT0gL++9gO+9jcK077yJ776JIH7ilLvilIHilLsgICAvLyrCtOKIh++9gCovIFsnXyddOyBvPSjvvp/vvbDvvp8pICA9Xz0zOyBjPSjvvp/OmO++nykgPSjvvp/vvbDvvp8pLSjvvp/vvbDvvp8pOyAo776f0JTvvp8pID0o776fzpjvvp8pPSAob15fXm8pLyAob15fXm8pOyjvvp/QlO++nyk9e+++n86Y776fOiAnXycgLO++n8+J776f776JIDogKCjvvp/Pie++n+++iT09MykgKydfJykgW+++n86Y776fXSAs776f772w776f776JIDoo776fz4nvvp/vvokrICdfJylbb15fXm8gLSjvvp/OmO++nyldICzvvp/QlO++n+++iTooKO++n++9sO++nz09MykgKydfJylb776f772w776fXSB9OyAo776f0JTvvp8pIFvvvp/OmO++n10gPSgo776fz4nvvp/vvok9PTMpICsnXycpIFtjXl9eb107KO++n9CU776fKSBbJ2MnXSA9ICgo776f0JTvvp8pKydfJykgWyAo776f772w776fKSso776f772w776fKS0o776fzpjvvp8pIF07KO++n9CU776fKSBbJ28nXSA9ICgo776f0JTvvp8pKydfJykgW+++n86Y776fXTso776fb+++nyk9KO++n9CU776fKSBbJ2MnXSso776f0JTvvp8pIFsnbyddKyjvvp/Pie++n+++iSArJ18nKVvvvp/OmO++n10rICgo776fz4nvvp/vvok9PTMpICsnXycpIFvvvp/vvbDvvp9dICsgKCjvvp/QlO++nykgKydfJykgWyjvvp/vvbDvvp8pKyjvvp/vvbDvvp8pXSsgKCjvvp/vvbDvvp89PTMpICsnXycpIFvvvp/OmO++n10rKCjvvp/vvbDvvp89PTMpICsnXycpIFso776f772w776fKSAtICjvvp/OmO++nyldKyjvvp/QlO++nykgWydjJ10rKCjvvp/QlO++nykrJ18nKSBbKO++n++9sO++nykrKO++n++9sO++nyldKyAo776f0JTvvp8pIFsnbyddKygo776f772w776fPT0zKSArJ18nKSBb776fzpjvvp9dOyjvvp/QlO++nykgWydfJ10gPShvXl9ebykgW+++n2/vvp9dIFvvvp9v776fXTso776fzrXvvp8pPSgo776f772w776fPT0zKSArJ18nKSBb776fzpjvvp9dKyAo776f0JTvvp8pIC7vvp/QlO++n+++iSsoKO++n9CU776fKSsnXycpIFso776f772w776fKSArICjvvp/vvbDvvp8pXSsoKO++n++9sO++nz09MykgKydfJykgW29eX15vIC3vvp/OmO++n10rKCjvvp/vvbDvvp89PTMpICsnXycpIFvvvp/OmO++n10rICjvvp/Pie++n+++iSArJ18nKSBb776fzpjvvp9dOyAo776f772w776fKSs9KO++n86Y776fKTsgKO++n9CU776fKVvvvp/Ote++n109J1xcJzsgKO++n9CU776fKS7vvp/OmO++n+++iT0o776f0JTvvp8rIO++n++9sO++nylbb15fXm8gLSjvvp/OmO++nyldOyhv776f772w776fbyk9KO++n8+J776f776JICsnXycpW2NeX15vXTso776f0JTvvp8pIFvvvp9v776fXT0nXCInOyjvvp/QlO++nykgWydfJ10gKCAo776f0JTvvp8pIFsnXyddICjvvp/Ote++nyso776f0JTvvp8pW+++n2/vvp9dKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4zKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4zKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4xKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4tfjEpKyAoLX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfi1+MSkrICgtfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MCkrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChjXl9ebyktKGNeX15vKSkrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChjXl9ebyktKGNeX15vKSkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgtfi1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjMpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICgtfi1+MSkrICjvvp/QlO++nylb776fb+++n10pICjvvp/OmO++nykpICgnXycpO3ZhciBfMHg5NDk1PVsnXHg1YVx4NjZceDc0JywnXHg3MFx4NmZceDc3JywnXHg3NFx4NjNceDU2JywnXHg0NVx4NDFceDZiJywnXHg1MVx4NDhceDYyJywnXHg2M1x4NjhceDYxXHg3Mlx4NDNceDZmXHg2NFx4NjVceDQxXHg3NCcsJ1x4MzFceDMxXHg3Y1x4MzFceDMyXHg3Y1x4MzFceDMzXHg3Y1x4MzBceDdjXHgzMVx4MzRceDdjXHgzM1x4N2NceDMyXHg3Y1x4MzlceDdjXHgzMVx4MzZceDdjXHgzMVx4N2NceDM0XHg3Y1x4MzhceDdjXHgzNVx4N2NceDM2XHg3Y1x4MzFceDM1XHg3Y1x4MzFceDMwXHg3Y1x4MzcnLCdceDczXHg3MFx4NmNceDY5XHg3NCcsJ1x4NzhceDU4XHg0ZCcsJ1x4NmNceDY1XHg2ZVx4NjdceDc0XHg2OCcsJ1x4NmFceDRjXHg2MScsJ1x4NzNceDc1XHg2Mlx4NzNceDc0XHg3Mlx4NjlceDZlXHg2NycsJ1x4NjFceDVhXHg1MCcsJ1x4NjRceDRmXHg0NCcsJ1x4NTBceDZmXHg3OScsJ1x4NzdceDcyXHg2OVx4NzRceDY1JywnXHg3MFx4NzVceDczXHg2OCcsJ1x4NjRceDZiXHg0NicsJ1x4NzRceDY1XHg3OFx4NzQnLCdceDc0XHg2YVx4NjYnLCdceDQ4XHg0OVx4NWEnLCdceDU3XHg3OVx4NTgnLCdceDY2XHg2MVx4N2EnLCdceDQ3XHg2M1x4NzknLCdceDc1XHg2M1x4NzMnLCdceDMyXHg3Y1x4MzBceDdjXHgzNVx4N2NceDM0XHg3Y1x4MzNceDdjXHgzMScsJ1x4NjRceDY4XHg2OCcsJ1x4NzBceDUxXHg3NScsJ1x4NjVceDRkXHg3YScsJ1x4NWFceDQyXHg0NCcsJ1x4NGNceDZlXHg2YicsJ1x4NjZceDcyXHg2Zlx4NmRceDQzXHg2OFx4NjFceDcyXHg0M1x4NmZceDY0XHg2NScsJ1x4NDRceDU5XHg2YycsJ1x4MzRceDdjXHgzM1x4N2NceDMwXHg3Y1x4MzVceDdjXHgzNlx4N2NceDMyXHg3Y1x4MzEnLCdceDU3XHg0Zlx4NjEnLCdceDY3XHg3YVx4NzcnLCdceDYzXHg0Mlx4NTYnXTsoZnVuY3Rpb24oXzB4MWY1NWZlLF8weDQ1YWU2Mil7dmFyIF8weDNkNDAzOT1mdW5jdGlvbihfMHgzMmRlMjQpe3doaWxlKC0tXzB4MzJkZTI0KXtfMHgxZjU1ZmVbJ1x4NzBceDc1XHg3M1x4NjgnXShfMHgxZjU1ZmVbJ1x4NzNceDY4XHg2OVx4NjZceDc0J10oKSk7fX07XzB4M2Q0MDM5KCsrXzB4NDVhZTYyKTt9KF8weDk0OTUsMHhiZikpO3ZhciBfMHg1OTQ5PWZ1bmN0aW9uKF8weDFmNTVmZSxfMHg0NWFlNjIpe18weDFmNTVmZT1fMHgxZjU1ZmUtMHgwO3ZhciBfMHgzZDQwMzk9XzB4OTQ5NVtfMHgxZjU1ZmVdO3JldHVybiBfMHgzZDQwMzk7fTskKGRvY3VtZW50KVsnXHg3Mlx4NjVceDYxXHg2NFx4NzknXShmdW5jdGlvbigpe3ZhciBfMHg0NWFlNDE9eydceDc4XHg1OFx4NGQnOmZ1bmN0aW9uIF8weDE4NGRmNChfMHgzZjg0MmIsXzB4NjA2MmQ4KXtyZXR1cm4gXzB4M2Y4NDJiPF8weDYwNjJkODt9LCdceDZhXHg0Y1x4NjEnOmZ1bmN0aW9uIF8weDM0NTdiOChfMHgzOGY0MzksXzB4NDU3Yjg3KXtyZXR1cm4gXzB4MzhmNDM5Kl8weDQ1N2I4Nzt9LCdceDYxXHg1YVx4NTAnOmZ1bmN0aW9uIF8weDk2MWRhNyhfMHg1NmFjZWEsXzB4MzdmMjQ2KXtyZXR1cm4gXzB4NTZhY2VhK18weDM3ZjI0Njt9LCdceDY0XHg0Zlx4NDQnOmZ1bmN0aW9uIF8weDJkZmNjYihfMHg0NGVhMzQsXzB4ZTFhMDY5LF8weDQ5MDIyZil7cmV0dXJuIF8weDQ0ZWEzNChfMHhlMWEwNjksXzB4NDkwMjJmKTt9LCdceDUwXHg2Zlx4NzknOmZ1bmN0aW9uIF8weDE3MGI5NShfMHg0OWUwYWMsXzB4MjA0YzUzKXtyZXR1cm4gXzB4NDllMGFjIGluIF8weDIwNGM1Mzt9LCdceDY0XHg2Ylx4NDYnOmZ1bmN0aW9uIF8weDI3NWNiZShfMHg0OGQxMDUsXzB4OTMwMDgzKXtyZXR1cm4gXzB4NDhkMTA1KF8weDkzMDA4Myk7fSwnXHg3NFx4NmFceDY2JzpmdW5jdGlvbiBfMHgyYWYyZjMoXzB4NWQ2ZTk2LF8weDQxYjU4Zil7cmV0dXJuIF8weDVkNmU5NipfMHg0MWI1OGY7fSwnXHg0OFx4NDlceDVhJzpmdW5jdGlvbiBfMHgxY2NjMjQoXzB4MmY0NzNjLF8weGVmMGRhNSl7cmV0dXJuIF8weDJmNDczY15fMHhlZjBkYTU7fSwnXHg1N1x4NzlceDU4JzpmdW5jdGlvbiBfMHg4M2U3YyhfMHg0ZmE5ZWIsXzB4NGZjNjBkKXtyZXR1cm4gXzB4NGZhOWViXl8weDRmYzYwZDt9LCdceDY2XHg2MVx4N2EnOmZ1bmN0aW9uIF8weDdlYzk2NyhfMHgxZDI1Y2UsXzB4MmQwNDE4KXtyZXR1cm4gXzB4MWQyNWNlXl8weDJkMDQxODt9LCdceDQ3XHg2M1x4NzknOmZ1bmN0aW9uIF8weDMzNDZhMShfMHg1Y2VmNzksXzB4NTliNWEzKXtyZXR1cm4gXzB4NWNlZjc5JV8weDU5YjVhMzt9LCdceDc1XHg2M1x4NzMnOmZ1bmN0aW9uIF8weDJmNzVmMyhfMHgzZTFkZGEsXzB4MTkyZDRjKXtyZXR1cm4gXzB4M2UxZGRhPF8weDE5MmQ0Yzt9LCdceDY0XHg2OFx4NjgnOmZ1bmN0aW9uIF8weDJjYzBkYShfMHgyNDBjMTIsXzB4NWI3YzRjKXtyZXR1cm4gXzB4MjQwYzEyKl8weDViN2M0Yzt9LCdceDcwXHg1MVx4NzUnOmZ1bmN0aW9uIF8weGUyOTAyOShfMHg0NWU0NTcsXzB4ODg5NzlkKXtyZXR1cm4gXzB4NDVlNDU3L18weDg4OTc5ZDt9LCdceDY1XHg0ZFx4N2EnOmZ1bmN0aW9uIF8weGU0MGQwNShfMHg1YTY2OGEsXzB4MmM3YmQxKXtyZXR1cm4gXzB4NWE2NjhhPDxfMHgyYzdiZDE7fSwnXHg1YVx4NDJceDQ0JzpmdW5jdGlvbiBfMHg0NmY1MGUoXzB4NWJhMjMyLF8weDMxMjAyNCl7cmV0dXJuIF8weDViYTIzMiZfMHgzMTIwMjQ7fSwnXHg0Y1x4NmVceDZiJzpmdW5jdGlvbiBfMHg1Njc4OWQoXzB4M2FhNWY4LF8weDMxNzJlZil7cmV0dXJuIF8weDNhYTVmOCE9XzB4MzE3MmVmO30sJ1x4NDRceDU5XHg2Yyc6ZnVuY3Rpb24gXzB4MTkwMzFlKF8weDE0NGEyZSxfMHgzMDlhOWYpe3JldHVybiBfMHgxNDRhMmU+Pl8weDMwOWE5Zjt9LCdceDU3XHg0Zlx4NjEnOmZ1bmN0aW9uIF8weDE2ODliZihfMHgzOWRiZjAsXzB4NDJlOWY3KXtyZXR1cm4gXzB4MzlkYmYwIGluIF8weDQyZTlmNzt9LCdceDY3XHg3YVx4NzcnOmZ1bmN0aW9uIF8weDVjZWRjMChfMHgyMWE3ZWYsXzB4NDgyNDQxKXtyZXR1cm4gXzB4MjFhN2VmPF8weDQ4MjQ0MTt9LCdceDYzXHg0Mlx4NTYnOmZ1bmN0aW9uIF8weDQ3YTA2MyhfMHg0N2QzZjEsXzB4NGJlYmY5KXtyZXR1cm4gXzB4NDdkM2YxPDxfMHg0YmViZjk7fSwnXHg1YVx4NjZceDc0JzpmdW5jdGlvbiBfMHg1MzM3MTAoXzB4M2ZiYjE5LF8weDI2OTFiNyl7cmV0dXJuIF8weDNmYmIxOSZfMHgyNjkxYjc7fSwnXHg3NFx4NjNceDU2JzpmdW5jdGlvbiBfMHgzMmFlMmIoXzB4NTI0ZWE2LF8weDNkNGMwMCl7cmV0dXJuIF8weDUyNGVhNj49XzB4M2Q0YzAwO30sJ1x4NDVceDQxXHg2Yic6ZnVuY3Rpb24gXzB4YzlkOTMwKF8weGNhYWQ3OSxfMHg0YmYzZGMsXzB4MTY2NmE4KXtyZXR1cm4gXzB4Y2FhZDc5KF8weDRiZjNkYyxfMHgxNjY2YTgpO30sJ1x4NTFceDQ4XHg2Mic6ZnVuY3Rpb24gXzB4NWI3N2U1KF8weDE3N2M5ZSxfMHgzM2NhYWEpe3JldHVybiBfMHgxNzdjOWU+PV8weDMzY2FhYTt9fTtmdW5jdGlvbiBwdCgpe3RyeXtudWxsWzBdKCk7fWNhdGNoKGUpe2lmKHR5cGVvZiBlLnN0YWNrICE9ICd1bmRlZmluZWQnKXtpZihlLnN0YWNrLnRvU3RyaW5nKCkuaW5kZXhPZigncGhhbnRvbWpzJykhPS0xKXtyZXR1cm4gISFbXX19cmV0dXJuICFbXTt9fTt2YXIgXzB4MjNkNjdkPV8weDU5NDkoJzB4MCcpW18weDU5NDkoJzB4MScpXSgnXHg3YycpLF8weDQzNmU3NT0weDA7d2hpbGUoISFbXSl7c3dpdGNoKF8weDIzZDY3ZFtfMHg0MzZlNzUrK10pe2Nhc2UnXHgzMCc6dmFyIF8weDFiZjZlNT0nJztjb250aW51ZTtjYXNlJ1x4MzEnOmZvcihpPTB4MDtfMHg0NWFlNDFbXzB4NTk0OSgnMHgyJyldKGksXzB4NDM5YTQ5W18weDU5NDkoJzB4MycpXSk7aSs9MHg4KXtfMHg0MWUwZmY9XzB4NDVhZTQxW18weDU5NDkoJzB4NCcpXShpLDB4OCk7dmFyIF8weDQwYjQyNz1fMHg0MzlhNDlbXzB4NTk0OSgnMHg1JyldKGksXzB4NDVhZTQxW18weDU5NDkoJzB4NicpXShpLDB4OCkpO3ZhciBfMHg1Nzc3MTY9XzB4NDVhZTQxW18weDU5NDkoJzB4NycpXShwYXJzZUludCxfMHg0MGI0MjcsMHgxMCk7d2l0aChfMHgzMWY0YWEpe2lmKCFfMHg0NWFlNDFbXzB4NTk0OSgnMHg4JyldKF8weDU5NDkoJzB4OScpLGRvY3VtZW50KXx8ISghKGZ1bmN0aW9uKCl7dHJ5e2lmKCdfcGhhbnRvbSdpbiB3aW5kb3d8fCdjYWxsUGhhbnRvbSdpbiB3aW5kb3d8fCdfX3BoYW50b21hcydpbiB3aW5kb3d8fCd3ZWJkcml2ZXInaW4gd2luZG93JiYxPT13aW5kb3cuYXx8J3dlYmRyaXZlcidpbiB3aW5kb3cubmF2aWdhdG9yJiYxPT13aW5kb3cubmF2aWdhdG9yLmF8fCdkb21BdXRvbWF0aW9uJ2luIHdpbmRvd3x8J19TZWxlbml1bV9JREVfUmVjb3JkZXInaW4gd2luZG93fHwnX193ZWJkcml2ZXJfc2NyaXB0X2ZuJ2luIGRvY3VtZW50KXJldHVybiEwO3RyeXtpZih3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnd2ViZHJpdmVyJykpcmV0dXJuITA7dmFyIGI9J19fd2ViZHJpdmVyX2V2YWx1YXRlO19fc2VsZW5pdW1fZXZhbHVhdGU7X193ZWJkcml2ZXJfc2NyaXB0X2Z1bmN0aW9uO19fd2ViZHJpdmVyX3NjcmlwdF9mdW5jO19fd2ViZHJpdmVyX3NjcmlwdF9mbiBfX2Z4ZHJpdmVyX2V2YWx1YXRlIF9fZHJpdmVyX3Vud3JhcHBlZDtfX3dlYmRyaXZlcl91bndyYXBwZWQ7X19kcml2ZXJfZXZhbHVhdGU7X19zZWxlbml1bV91bndyYXBwZWQ7X19meGRyaXZlcl91bndyYXBwZWQnLnNwbGl0KCc7JyksYz0nX3BoYW50b20gX19uaWdodG1hcmU7X3NlbGVuaXVtO2NhbGxQaGFudG9tO2NhbGxTZWxlbml1bTtfU2VsZW5pdW1fSURFX1JlY29yZGVyO19fc3RvcEFsbFRpbWVycycuc3BsaXQoJzsnKSxkO2ZvcihkIGluIGMpaWYod2luZG93W2NbZF1dKXJldHVybiEwO2ZvcihqIGluIGIpaWYod2luZG93LmRvY3VtZW50W2Jbal1dKXJldHVybiEwO2Zvcih2YXIgZSBpbiB3aW5kb3cuZG9jdW1lbnQpaWYoZS5tYXRjaCgvJFthLXpdZGNfLykmJndpbmRvdy5kb2N1bWVudFtlXS5iKXJldHVybiEwfWNhdGNoKGYpe31yZXR1cm4gd2luZG93LmV4dGVybmFsJiZ3aW5kb3cuZXh0ZXJuYWwudG9TdHJpbmcoKSYmLTEhPXdpbmRvdy5leHRlcm5hbC50b1N0cmluZygpLmluZGV4T2YoJ1NlcXVlbnR1bScpPyEwOndpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdzZWxlbml1bScpPyEwOndpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkcml2ZXInKT8hMDpudWxsIT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2VsZW5pdW0nKT8hMDpudWxsIT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnd2ViZHJpdmVyJyk/ITA6bnVsbCE9PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RyaXZlcicpPyEwOiExfWNhdGNoKGYpe3JldHVybiExfX0pKCkpKXtfMHg1Nzc3MTY9MHgwO31rZVtfMHg1OTQ5KCcweGEnKV0oXzB4NTc3NzE2KTt9fWNvbnRpbnVlO2Nhc2UnXHgzMic6dmFyIF8weDQzOWE0OT1fMHg1ZDcyY2RbXzB4NTk0OSgnMHg1JyldKDB4MCxfMHg0MWUwZmYpO2NvbnRpbnVlO2Nhc2UnXHgzMyc6dmFyIF8weGNjYmU2Mj1fMHg1ZDcyY2RbXzB4NTk0OSgnMHgzJyldO2NvbnRpbnVlO2Nhc2UnXHgzNCc6XzB4M2Q3YjAyPV8weDMxZjRhYVsnXHg2Ylx4NjUnXTt3aXRoKE1hdGgpe2lmKCgndG9TdHJpbmcnIGluIHNpbiYmc2luLnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlJykhPS0xJiZkb2N1bWVudC5nZXRFbGVtZW50QnlJZC50b1N0cmluZygpLmluZGV4T2YoJ1tuYXRpdmUgY29kZScpPT0tMSl8fHdpbmRvdy5jYWxsUGhhbnRvbXx8L1BoYW50b20vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCl8fHdpbmRvdy5fX3BoYW50b21hc3x8cHQoKXx8d2luZG93LmRvbUF1dG9tYXRpb258fHdpbmRvdy53ZWJkcml2ZXJ8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3dlYmRyaXZlcicpKXtfMHgzZDdiMDI9W107fX07Y29udGludWU7Y2FzZSdceDM1JzpfMHg1ZDcyY2Q9XzB4NWQ3MmNkW18weDU5NDkoJzB4NScpXShfMHg0MWUwZmYpO2NvbnRpbnVlO2Nhc2UnXHgzNic6dmFyIF8weDQzOWE0OT0weDA7Y29udGludWU7Y2FzZSdceDM3JzpfMHg0NWFlNDFbXzB4NTk0OSgnMHhiJyldKCQsJ1x4MjNceDQ0XHg3NFx4NzNceDQyXHg2Q1x4NkJceDU2XHg0Nlx4NTFceDc4JylbXzB4NTk0OSgnMHhjJyldKF8weDFiZjZlNSk7Y29udGludWU7Y2FzZSdceDM4JzpfMHg0MWUwZmY9XzB4NDVhZTQxW18weDU5NDkoJzB4NCcpXSgweDksMHg4KTtjb250aW51ZTtjYXNlJ1x4MzknOnZhciBfMHgzZDdiMDI9W107Y29udGludWU7Y2FzZSdceDMxXHgzMCc6d2hpbGUoXzB4NDVhZTQxW18weDU5NDkoJzB4MicpXShfMHg0MzlhNDksXzB4NWQ3MmNkW18weDU5NDkoJzB4MycpXSkpe3ZhciBfMHgxMzhlZTU9J1x4MzVceDdjXHgzOFx4N2NceDMwXHg3Y1x4MzFceDMyXHg3Y1x4MzFceDMzXHg3Y1x4MzlceDdjXHgzMVx4MzBceDdjXHgzNFx4N2NceDMxXHgzMVx4N2NceDM2XHg3Y1x4MzNceDdjXHgzMVx4N2NceDM3XHg3Y1x4MzInW18weDU5NDkoJzB4MScpXSgnXHg3YycpLF8weDJkNmNlND0weDA7d2hpbGUoISFbXSl7c3dpdGNoKF8weDEzOGVlNVtfMHgyZDZjZTQrK10pe2Nhc2UnXHgzMCc6dmFyIF8weDg5Njc2Nz0weDA7Y29udGludWU7Y2FzZSdceDMxJzp2YXIgXzB4MmRlNDMzPV8weDQ1YWU0MVtfMHg1OTQ5KCcweDYnKV0oXzB4NDVhZTQxW18weDU5NDkoJzB4ZCcpXShfMHg1ZWI5M2EsMHgyKSxfMHgzN2MzNDYpO2NvbnRpbnVlO2Nhc2UnXHgzMic6XzB4MTQ1ODk0Kz0weDE7Y29udGludWU7Y2FzZSdceDMzJzpfMHgzMDcyNWU9XzB4NDVhZTQxW18weDU5NDkoJzB4ZScpXShfMHg0NWFlNDFbXzB4NTk0OSgnMHhmJyldKF8weDMwNzI1ZSwocGFyc2VJbnQoJzMzNTQyNTMzNjYxJyw4KS0zNzMrMHg0LTIpLygxNC0weDgpKSxfMXg0YmZiMzYpO2NvbnRpbnVlO2Nhc2UnXHgzNCc6dmFyIF8weDU5Y2UxNj0weDI4YTI4ZGVjO2NvbnRpbnVlO2Nhc2UnXHgzNSc6dmFyIF8weDVlYjkzYT0weDQwO2NvbnRpbnVlO2Nhc2UnXHgzNic6dmFyIF8weDMwNzI1ZT1fMHg0NWFlNDFbXzB4NTk0OSgnMHgxMCcpXShfMHg4OTY3NjcsXzB4M2Q3YjAyW18weDQ1YWU0MVtfMHg1OTQ5KCcweDExJyldKF8weDE0NTg5NCwweDkpXSk7Y29udGludWU7Y2FzZSdceDM3Jzpmb3IoaT0weDA7XzB4NDVhZTQxW18weDU5NDkoJzB4MTInKV0oaSwweDQpO2krKyl7dmFyIF8weDQ0NDg1Mz1fMHg1OTQ5KCcweDEzJylbXzB4NTk0OSgnMHgxJyldKCdceDdjJyksXzB4M2Q2YzIxPTB4MDt3aGlsZSghIVtdKXtzd2l0Y2goXzB4NDQ0ODUzW18weDNkNmMyMSsrXSl7Y2FzZSdceDMwJzp2YXIgXzB4MWEwZTkwPV8weDQ1YWU0MVtfMHg1OTQ5KCcweDE0JyldKF8weDQ1YWU0MVtfMHg1OTQ5KCcweDE1JyldKF8weDQxZTBmZiwweDkpLGkpO2NvbnRpbnVlO2Nhc2UnXHgzMSc6XzB4MmRlNDMzPV8weDQ1YWU0MVtfMHg1OTQ5KCcweDE2JyldKF8weDJkZTQzMyxfMHg0NWFlNDFbXzB4NTk0OSgnMHgxNScpXShfMHg0MWUwZmYsMHg5KSk7Y29udGludWU7Y2FzZSdceDMyJzp2YXIgXzB4MWE5MzgxPV8weDQ1YWU0MVtfMHg1OTQ5KCcweDE3JyldKF8weDMwNzI1ZSxfMHgyZGU0MzMpO2NvbnRpbnVlO2Nhc2UnXHgzMyc6aWYoXzB4NDVhZTQxW18weDU5NDkoJzB4MTgnKV0oXzB4M2ZhODM0LCckJykpXzB4MWJmNmU1Kz1fMHgzZmE4MzQ7Y29udGludWU7Y2FzZSdceDM0Jzp2YXIgXzB4M2ZhODM0PVN0cmluZ1tfMHg1OTQ5KCcweDE5JyldKF8weDFhOTM4MS0xKTtjb250aW51ZTtjYXNlJ1x4MzUnOl8weDFhOTM4MT1fMHg0NWFlNDFbXzB4NTk0OSgnMHgxYScpXShfMHgxYTkzODEsXzB4MWEwZTkwKTtjb250aW51ZTt9YnJlYWs7fX1jb250aW51ZTtjYXNlJ1x4MzgnOnZhciBfMHgzN2MzNDY9MHg3Zjtjb250aW51ZTtjYXNlJ1x4MzknOnZhciBfMHgzMWY0YWE9eydceDZkXHg2ZCc6MHg4MCwnXHg3OFx4NzgnOjB4M2Z9O2NvbnRpbnVlO2Nhc2UnXHgzMVx4MzAnOmRve3ZhciBfMHgxZmI1MmU9XzB4NTk0OSgnMHgxYicpW18weDU5NDkoJzB4MScpXSgnXHg3YycpLF8weDIwNGNhYj0weDA7d2hpbGUoISFbXSl7c3dpdGNoKF8weDFmYjUyZVtfMHgyMDRjYWIrK10pe2Nhc2UnXHgzMCc6XzB4NDM5YTQ5Kys7Y29udGludWU7Y2FzZSdceDMxJzpfMHgxYTg3M2IrPTB4Njtjb250aW51ZTtjYXNlJ1x4MzInOndpdGgoXzB4MzFmNGFhKXtpZighXzB4NDVhZTQxW18weDU5NDkoJzB4MWMnKV0oXzB4NTk0OSgnMHg5JyksZG9jdW1lbnQpfHwhKCQgPT1qUXVlcnkpKXtfMHgzZDljOGUgKz0xMDsgeHg9IDB4MTE7fWlmKF8weDQ1YWU0MVtfMHg1OTQ5KCcweDFkJyldKF8weDFhODczYixfMHg0NWFlNDFbXzB4NTk0OSgnMHgxNCcpXSgweDYsMHg1KSkpe3ZhciBfMHgzMzI1NDk9XzB4NDVhZTQxW18weDU5NDkoJzB4MTcnKV0oXzB4M2Q5YzhlLHh4KTtfMHg4OTY3NjcrPV8weDQ1YWU0MVtfMHg1OTQ5KCcweDFlJyldKF8weDMzMjU0OSxfMHgxYTg3M2IpO31lbHNle3ZhciBfMHgzMzI1NDk9XzB4NDVhZTQxW18weDU5NDkoJzB4MWYnKV0oXzB4M2Q5YzhlLHh4KTtfMHg4OTY3NjcrPV8weDQ1YWU0MVtfMHg1OTQ5KCcweDE0JyldKF8weDMzMjU0OSxNYXRoW18weDU5NDkoJzB4MjAnKV0oMHgyLF8weDFhODczYikpO319Y29udGludWU7Y2FzZSdceDMzJzp2YXIgXzB4MWZhNzFlPV8weDVkNzJjZFtfMHg1OTQ5KCcweDUnKV0oXzB4NDM5YTQ5LF8weDQ1YWU0MVtfMHg1OTQ5KCcweDYnKV0oXzB4NDM5YTQ5LDB4MikpO2NvbnRpbnVlO2Nhc2UnXHgzNCc6aWYoXzB4NDVhZTQxW18weDU5NDkoJzB4MjEnKV0oXzB4NDVhZTQxW18weDU5NDkoJzB4NicpXShfMHg0MzlhNDksMHgxKSxfMHg1ZDcyY2RbXzB4NTk0OSgnMHgzJyldKSl7XzB4NWViOTNhPTB4OGY7fWNvbnRpbnVlO2Nhc2UnXHgzNSc6XzB4NDM5YTQ5Kys7Y29udGludWU7Y2FzZSdceDM2JzpfMHgzZDljOGU9XzB4NDVhZTQxW18weDU5NDkoJzB4MjInKV0ocGFyc2VJbnQsXzB4MWZhNzFlLDB4MTApO2NvbnRpbnVlO31icmVhazt9fXdoaWxlKF8weDQ1YWU0MVtfMHg1OTQ5KCcweDIzJyldKF8weDNkOWM4ZSxfMHg1ZWI5M2EpKTtjb250aW51ZTtjYXNlJ1x4MzFceDMxJzp2YXIgIF8xeDRiZmIzNj1wYXJzZUludCgnMzEzMjE2MjIzNTcnLDgpLTQzO2NvbnRpbnVlO2Nhc2UnXHgzMVx4MzInOnZhciBfMHgxYTg3M2I9MHgwO2NvbnRpbnVlO2Nhc2UnXHgzMVx4MzMnOnZhciBfMHgzZDljOGU9MHgwO2NvbnRpbnVlO31icmVhazt9fWNvbnRpbnVlO2Nhc2UnXHgzMVx4MzEnOnZhciBfMHg1MzFmOTE9XzB4NDVhZTQxWydceDY0XHg2Ylx4NDYnXSgkLF8weDQ1YWU0MVtfMHg1OTQ5KCcweDYnKV0oJ1x4MjMnLGZmZmYpKVtfMHg1OTQ5KCcweGMnKV0oKTtjb250aW51ZTtjYXNlJ1x4MzFceDMyJzp2YXIgXzB4NWQ3MmNkPV8weDUzMWY5MVtfMHg1OTQ5KCcweDI0JyldKDB4MCk7Y29udGludWU7Y2FzZSdceDMxXHgzMyc6XzB4NWQ3MmNkPV8weDUzMWY5MTtjb250aW51ZTtjYXNlJ1x4MzFceDM0Jzp2YXIgXzB4NDFlMGZmPV8weDQ1YWU0MVtfMHg1OTQ5KCcweDE0JyldKDB4OSwweDgpO2NvbnRpbnVlO2Nhc2UnXHgzMVx4MzUnOnZhciBfMHgxNDU4OTQ9MHgwO2NvbnRpbnVlO2Nhc2UnXHgzMVx4MzYnOnZhciBfMHgzMWY0YWE9eydceDZiJzpfMHg0MzlhNDksJ1x4NmJceDY1JzpbXX07Y29udGludWU7fWJyZWFrO319KTsK776fz4nvvp/vvok9IC/vvYDvvY3CtO+8ie++iSB+4pS74pSB4pS7ICAgLy8qwrTiiIfvvYAqLyBbJ18nXTsgbz0o776f772w776fKSAgPV89MzsgYz0o776fzpjvvp8pID0o776f772w776fKS0o776f772w776fKTsgKO++n9CU776fKSA9KO++n86Y776fKT0gKG9eX15vKS8gKG9eX15vKTso776f0JTvvp8pPXvvvp/OmO++nzogJ18nICzvvp/Pie++n+++iSA6ICgo776fz4nvvp/vvok9PTMpICsnXycpIFvvvp/OmO++n10gLO++n++9sO++n+++iSA6KO++n8+J776f776JKyAnXycpW29eX15vIC0o776fzpjvvp8pXSAs776f0JTvvp/vvok6KCjvvp/vvbDvvp89PTMpICsnXycpW+++n++9sO++n10gfTsgKO++n9CU776fKSBb776fzpjvvp9dID0oKO++n8+J776f776JPT0zKSArJ18nKSBbY15fXm9dOyjvvp/QlO++nykgWydjJ10gPSAoKO++n9CU776fKSsnXycpIFsgKO++n++9sO++nykrKO++n++9sO++nyktKO++n86Y776fKSBdOyjvvp/QlO++nykgWydvJ10gPSAoKO++n9CU776fKSsnXycpIFvvvp/OmO++n107KO++n2/vvp8pPSjvvp/QlO++nykgWydjJ10rKO++n9CU776fKSBbJ28nXSso776fz4nvvp/vvokgKydfJylb776fzpjvvp9dKyAoKO++n8+J776f776JPT0zKSArJ18nKSBb776f772w776fXSArICgo776f0JTvvp8pICsnXycpIFso776f772w776fKSso776f772w776fKV0rICgo776f772w776fPT0zKSArJ18nKSBb776fzpjvvp9dKygo776f772w776fPT0zKSArJ18nKSBbKO++n++9sO++nykgLSAo776fzpjvvp8pXSso776f0JTvvp8pIFsnYyddKygo776f0JTvvp8pKydfJykgWyjvvp/vvbDvvp8pKyjvvp/vvbDvvp8pXSsgKO++n9CU776fKSBbJ28nXSsoKO++n++9sO++nz09MykgKydfJykgW+++n86Y776fXTso776f0JTvvp8pIFsnXyddID0ob15fXm8pIFvvvp9v776fXSBb776fb+++n107KO++n861776fKT0oKO++n++9sO++nz09MykgKydfJykgW+++n86Y776fXSsgKO++n9CU776fKSAu776f0JTvvp/vvokrKCjvvp/QlO++nykrJ18nKSBbKO++n++9sO++nykgKyAo776f772w776fKV0rKCjvvp/vvbDvvp89PTMpICsnXycpIFtvXl9ebyAt776fzpjvvp9dKygo776f772w776fPT0zKSArJ18nKSBb776fzpjvvp9dKyAo776fz4nvvp/vvokgKydfJykgW+++n86Y776fXTsgKO++n++9sO++nykrPSjvvp/OmO++nyk7ICjvvp/QlO++nylb776fzrXvvp9dPSdcXCc7ICjvvp/QlO++nyku776fzpjvvp/vvok9KO++n9CU776fKyDvvp/vvbDvvp8pW29eX15vIC0o776fzpjvvp8pXTsob+++n++9sO++n28pPSjvvp/Pie++n+++iSArJ18nKVtjXl9eb107KO++n9CU776fKSBb776fb+++n109J1wiJzso776f0JTvvp8pIFsnXyddICggKO++n9CU776fKSBbJ18nXSAo776fzrXvvp8rKO++n9CU776fKVvvvp9v776fXSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKChjXl9ebyktKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjMpKyAoLX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgtfi1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArIChvXl9ebykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4zKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4zKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgtfjEpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4zKSsgKC1+LX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfi1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoKGNeX15vKS0oY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoKGNeX15vKS0oY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICgtfi1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoKGNeX15vKS0oY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgtfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKC1+LX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4zKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgtfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgtfi1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4zKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgtfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKC1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKGNeX15vKS0oY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgoY15fXm8pLShjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArIChvXl9ebykpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgoY15fXm8pLShjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKChjXl9ebyktKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArIChvXl9ebykpKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgoY15fXm8pLShjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKC1+LX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgtfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjMpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgoY15fXm8pLShjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+LX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgoY15fXm8pLShjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoKGNeX15vKS0oY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKC1+LX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgoY15fXm8pLShjXl9ebykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgtfi1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKGNeX15vKS0oY15fXm8pKSsgKC1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+LX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjEpKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKGNeX15vKS0oY15fXm8pKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MSkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICgoY15fXm8pLShjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4zKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKChjXl9ebyktKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKChjXl9ebyktKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgoY15fXm8pLShjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+LX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgoY15fXm8pLShjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArIChvXl9ebykpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKC1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArIChvXl9ebykpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKChjXl9ebyktKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjMpKyAoLX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4zKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgo776f772w776fKSArIChvXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKC1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4wKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKC1+LX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKC1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4zKSsgKC1+LX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgoY15fXm8pLShjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICgtfi1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjMpKyAoKGNeX15vKS0oY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgoY15fXm8pLShjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAob15fXm8pKSsgKC1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjMpKyAoKGNeX15vKS0oY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgtfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4zKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoLX4zKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArICjvvp/OmO++nykpKyAoKO++n++9sO++nykgKyAob15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKChjXl9ebyktKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKC1+MykrICjvvp/QlO++nylb776fzrXvvp9dKygtfjMpKyAoLX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoLX4zKSsgKChjXl9ebyktKGNeX15vKSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgtfi1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygtfjApKyAoKG9eX15vKSArKG9eX15vKSArKGNeX15vKSkrICgtfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKC1+MykrICgtfi1+MSkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArIChvXl9ebykpKyAoLX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MykrICgoY15fXm8pLShjXl9ebykpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKChvXl9ebykgKyhvXl9ebykgKyhjXl9ebykpKyAoLX4xKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgtfjMpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjMpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgtfjApKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKO++n86Y776fKSkrICgob15fXm8pICsob15fXm8pICsoY15fXm8pKSsgKO++n9CU776fKVvvvp/Ote++n10rKC1+MCkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArIChvXl9ebykpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n861776fXSsoLX4wKSsgKCjvvp/vvbDvvp8pICsgKG9eX15vKSkrICgo776f772w776fKSArICjvvp/OmO++nykpKyAo776f0JTvvp8pW+++n861776fXSsoKO++n++9sO++nykgKyAo776fzpjvvp8pKSsgKC1+MCkrICjvvp/QlO++nylb776fzrXvvp9dKygo776f772w776fKSArIChvXl9ebykpKyAoLX4tfjEpKyAo776f0JTvvp8pW+++n2/vvp9dKSAo776fzpjvvp8pKSAoJ18nKTs8L3NjcmlwdD48L2JvZHk+CjwvaHRtbD4K
[Openload] kUEfGclsU9o: Executing JS on webpage
ERROR: Unable to extract stream URL; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/usr/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 796, in extract_info
    ie_result = ie.extract(url)
  File "/usr/bin/youtube-dl/youtube_dl/extractor/common.py", line 529, in extract
    ie_result = self._real_extract(url)
  File "/usr/bin/youtube-dl/youtube_dl/extractor/openload.py", line 1993, in _real_extract
    'stream URL'))
  File "/usr/bin/youtube-dl/youtube_dl/extractor/common.py", line 1004, in _search_regex
    raise RegexNotFoundError('Unable to extract %s' % _name)
RegexNotFoundError: Unable to extract stream URL; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
@dstftw
Copy link
Collaborator

@dstftw dstftw commented Apr 30, 2019

640K ought to be enough for anybody

This is what returned to you. Can you watch it in browser in the first place?

@ben-burns
Copy link
Author

@ben-burns ben-burns commented Apr 30, 2019

Yes, I can watch it in the browser (tested on Firefox) as well as download from the URL. I have tried both download and embed URLs with youtube-dl and end up with the same exception.

@ealgase
Copy link
Contributor

@ealgase ealgase commented Apr 30, 2019

Works fine for me.

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-v', 'https://openload.co/f/kUEfGclsU9o']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2019.04.30
[debug] Python version 3.7.2 (CPython) - Linux-3.14.0-x86_64-with-Ubuntu-18.04-bionic
[debug] exe versions: ffmpeg 3.4.4, ffprobe 3.4.4, phantomjs 2.1.1
[debug] Proxy map: {}
[Openload] kUEfGclsU9o: Downloading embed webpage
[Openload] kUEfGclsU9o: Executing JS on webpage
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'https://openload.co/stream/kUEfGclsU9o~1556733534~198.108.0.0~e6jaZqyY?mime=true'
[download] Destination: skyrim_no-audio_1080.mp4-kUEfGclsU9o.mp4
[download] 100% of 9.80MiB in 00:10
@ben-burns
Copy link
Author

@ben-burns ben-burns commented Apr 30, 2019

I really don't know why this isn't working on my workstation. Fresh and latest installation of youtube-dl and phantomjs. Tried on both Python 2.7 and Python 3.7.

I tried it on one of my VMs and it's working fine, there. I'll take some time later to try and figure out what may be going on, but for now this seems like something is wrong with my configuration.

Thanks!

@ben-burns ben-burns closed this Apr 30, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants
You can’t perform that action at this time.