{"report_id":"d39354ec-3128-4e4a-89fb-77c3687b5e5e","version":0,"status":"done","tags":[],"date":"2026-07-26T17:21:34Z","url":{"schema":"https","addr":"gomaxis.net/s/xaos","fqdn":"gomaxis.net","domain":"gomaxis.net","tld":"net"},"ip":{"addr":"195.2.71.217","port":0,"asn":48282,"as":"Hosting technology LTD","country":"Russia","country_code":"RU"},"final":{"url":{"schema":"https","addr":"gomaxis.net/s/xaos","fqdn":"gomaxis.net","domain":"gomaxis.net","tld":"net"},"title":"10 ХАОС-ДРОПОВ","dom":{"size":158407,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (4095)","md5":"a708169ec06c19cd17c151075d7919d3","sha1":"53ab69b50b19214401407b24360827ada39962d5","sha256":"fe547a0b8fd25bebb7492f5532e08a83f56872cba84bf1b421b251776dd711eb","sha512":"37d97758c237b443d976d573d4850e3e2cf71e02bfdf763c394631f863a7b1900bb14578b82205c7e8d4b3e1ae2e2a5194d7655636ee28a3fda9f5be0db04dd8","ssdeep":"3072:D3FUTjy8JAsjncGHUsqdSnGJYbpfZrZ9q4uE4ODWl:b8JAsjnGsqdSnGJYbpfZrsE4ODS","tlshash":"cff3d8be69e320379833707d5faf5608363ac013990ecd207d9c53449fe59a896b6bd8","dom_hash":"domhash1e2b770bbbfdde78bc0b12fece46e2d1","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"https","addr":"gomaxis.net/s/xaos","fqdn":"gomaxis.net","domain":"gomaxis.net","tld":"net"},"ip":{"addr":"195.2.71.217","port":0,"asn":48282,"as":"Hosting technology LTD","country":"Russia","country_code":"RU"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-30T17:21:34Z","useragent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0","referer":"","cookies":null,"exit_node":"qguvgzjxzsgb3vs"},"stats":{"alert_count":{"ids":0,"urlquery":0,"analyzer":0}},"detection":{"ids":null,"analyzer":null,"urlquery":null},"summary":[{"fqdn":"fonts.gstatic.com","ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":0,"first_seen":"2014-04-02T10:51:04Z","last_seen":"2026-07-19T22:19:42.520021Z","alert_count":0,"request_count":4,"received_data":112955,"sent_data":2200,"comment":"","tags":null,"fingerprints":null},{"fqdn":"gomaxis.net","ip":{"addr":"195.2.71.217","port":443,"asn":48282,"as":"Hosting technology LTD","country":"Russia","country_code":"RU"},"domain_registered":"unknown","domain_rank":0,"first_seen":"No data","last_seen":"No data","alert_count":0,"request_count":5,"received_data":259706,"sent_data":2532,"comment":"","tags":null,"fingerprints":[{"name":"Nginx:1.28.3","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]},{"name":"Ubuntu","description":"Ubuntu is a free and open-source operating system on Linux for the enterprise server, desktop, cloud, and IoT.","website":"https://www.ubuntu.com/server","common_platform_enumeration":"cpe:2.3:o:canonical:ubuntu_linux:*:*:*:*:*:*:*:*","icon":"Ubuntu.svg","categories":["Operating systems"]}]},{"fqdn":"fonts.googleapis.com","ip":{"addr":"142.250.178.74","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2005-01-25","domain_rank":313,"first_seen":"2012-05-23T12:41:44Z","last_seen":"2026-07-19T22:23:13.155676Z","alert_count":0,"request_count":1,"received_data":9698,"sent_data":567,"comment":"","tags":null,"fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]},{"fqdn":"telegram.org","ip":{"addr":"149.154.167.99","port":443,"asn":62041,"as":"Telegram Messenger Inc","country":"United Kingdom","country_code":"GB"},"domain_registered":"2003-12-15","domain_rank":499,"first_seen":"2013-12-18T13:14:30Z","last_seen":"2026-07-23T02:52:14.258305Z","alert_count":0,"request_count":1,"received_data":116841,"sent_data":461,"comment":"","tags":null,"fingerprints":[{"name":"Nginx:1.30.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}]}],"files":null,"artifacts":{"windows_shortcuts":null,"files":null,"telegram":null,"pdfs":null,"clipboard":null},"sensors":{"ids":null,"analyzer":null,"urlquery":null},"javascript":{"script":[{"url":{"schema":"https","addr":"telegram.org/js/telegram-web-app.js","fqdn":"telegram.org","domain":"telegram.org","tld":"org"},"ip":{"addr":"149.154.167.99","port":443,"asn":62041,"as":"Telegram Messenger Inc","country":"United Kingdom","country_code":"GB"},"introduction_type":"scriptElement","is_inline":false,"md5":"7ff489f43d13a9c3ee7f7c7f6f4dd7c9","sha1":"07be491fa7955c1d77363629551064f42e448551","sha256":"3549138a7934039fe7dfd1291a4ee739bd2b705a614308053a8b08a87d85c451","sha512":"2b69a2654fc2b049aa90773afd62510e46aaec8325d76d2d0bb873e3b64d119a0567608a156231792e2e139c1f7fc064c104021f3ad5cea4114c1ef83049dbed","ssdeep":"1536:pdpTpRdoKd4F0WN2ZbBcn9cF9KTfVjLo03ueLE+wFFz1NIVIB/MGYV7p/xHK8ITU:TpTpRdfcKFU7RxDv","tlshash":"e6b33e4d6cb3612285b3b1bf8b5f925172719883301def20794d9b646f80e7c53eaad8","size":116510,"data":"","first_seen":"2026-07-14T10:55:37.795951Z","last_seen":"2026-08-01T14:41:13.303031Z","times_seen":470,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":[{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_set_header_colormap[actor:server1.conn0.watcher17.process7//obj24 class:Object extensible:true frozen:false isError:false ownPropertyLength:1 preview:map[kind:Object ownProperties:map[color_key:map[configurable:true enumerable:true value:bg_color writable:true]] ownPropertiesLength:1] sealed:false type:object]","filename":"https://telegram.org/js/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_set_bottom_bar_colormap[actor:server1.conn0.watcher17.process7//obj25 class:Object extensible:true frozen:false isError:false ownPropertyLength:1 preview:map[kind:Object ownProperties:map[color:map[configurable:true enumerable:true value:#ffffff writable:true]] ownPropertiesLength:1] sealed:false type:object]","filename":"https://telegram.org/js/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_request_theme","filename":"https://telegram.org/js/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_request_viewport","filename":"https://telegram.org/js/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_request_safe_area","filename":"https://telegram.org/js/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_request_content_safe_area","filename":"https://telegram.org/js/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_ready","filename":"https://telegram.org/js/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_expand","filename":"https://telegram.org/js/telegram-web-app.js","line_number":135,"column_number":13}]},"http":[{"url":{"schema":"https","addr":"fonts.gstatic.com/s/nunito/v32/XRXV3I6Li01BKofINeaB.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://gomaxis.net/s/xaos","date":"2026-07-26T17:21:02.660Z","timestamp":1785086462660,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/nunito/v32/XRXV3I6Li01BKofINeaB.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://gomaxis.net\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 39128\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 10:29:09 GMT\r\nexpires: Sat, 24 Jul 2027 10:29:09 GMT\r\ncache-control: public, max-age=31536000\r\nage: 197513\r\nlast-modified: Mon, 15 Sep 2025 17:03:34 GMT\r\ncontent-type: font/woff2\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":39128,"size_decoded":39941,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 39128, version 1.0","md5":"166202cc391c71a57730bed12cbcb159","sha1":"76388dbfe374be06fdc6f9ba38d3f4e479025eeb","sha256":"ba344451eab25b217a165363b1982048a5e5830a0daf36577973955a04cac793","sha512":"9f4d1c14aa729e837b964898a1dd27e99ff674256c43326aa982cc0c17fa8b0d71a0b7df627f03cb4ac6ec7f22f0a19d65302743ff09187ce81414dde74c43e2","ssdeep":"768:lxbc6Qon+A9wOfdj2rELqjOmaLqLqKeI+00t0xIj:layndm0j2cqjOmGq+tbUIj","tlshash":"d9030284fd6a02d8c7fc1f6ef25a9f28272c2078440b6a9c44a79a6bd5975f84dd3330","first_seen":"2025-09-17T01:48:11.920934Z","last_seen":"2026-08-01T17:48:50.537402Z","times_seen":42464,"resource_available":false,"data":"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"}},"time_used":72,"timings":{"blocked":23,"dns":0,"connect":0,"send":0,"wait":35,"receive":14,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"gomaxis.net/s/xaos","fqdn":"gomaxis.net","domain":"gomaxis.net","tld":"net"},"ip":{"addr":"195.2.71.217","port":443,"asn":48282,"as":"Hosting technology LTD","country":"Russia","country_code":"RU"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-26T17:21:01.738Z","timestamp":1785086461738,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"gomaxis.net","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Thu, 23 Jul 2026 08:01:27 GMT","end":"Wed, 21 Oct 2026 08:01:26 GMT"},"fingerprint":{"sha1":"EE:4E:07:0D:7C:D9:B1:21:96:4B:FB:94:D5:15:F6:63:04:AF:86:A3","sha256":"6B:6A:20:05:87:B5:4E:CB:C2:E6:F2:8F:53:4A:1D:EB:CE:3C:95:09:28:AA:C0:DA:CD:D6:7E:25:EC:2C:A1:DA"}}},"request":{"raw":"GET /s/xaos HTTP/1.1\r\nHost: gomaxis.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\nserver: nginx/1.28.3 (Ubuntu)\r\ndate: Sun, 26 Jul 2026 17:21:02 GMT\r\ncontent-type: text/html; charset=utf-8\r\ncache-control: no-store, no-cache, must-revalidate, max-age=0, private\r\npragma: no-cache\r\nexpires: 0\r\ncontent-encoding: gzip\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx:1.28.3","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]},{"name":"Ubuntu","description":"Ubuntu is a free and open-source operating system on Linux for the enterprise server, desktop, cloud, and IoT.","website":"https://www.ubuntu.com/server","common_platform_enumeration":"cpe:2.3:o:canonical:ubuntu_linux:*:*:*:*:*:*:*:*","icon":"Ubuntu.svg","categories":["Operating systems"]}],"data":{"size":153903,"size_decoded":41518,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (1249)","md5":"a951dd073c659b9fbffb5d0327fb54ab","sha1":"d84528a712fda77a841d45c0323a6816d3279534","sha256":"e49274a296ac1b3168400fc83692732e4253fa2f0dd08a5bf540386f20021476","sha512":"481b38f7f0a26b7d7baba1d32a969edf7cf32ccfab72bc6604df7bd4c5bc071715cfd4fa8561b8a398c4b5df990d117abddfc81d9fa8666352bbbd15cb15c231","ssdeep":"3072:J8FUTjy8JAsmXGHUsqdSnGJYbpfZrZ9q4uE4ODWz:g8JAsm7sqdSnGJYbpfZrsE4ODg","tlshash":"98e3d6ae79e320779873b07d5faf5208363ac013590ecd207d9c53449fd49a89ab6bd8","first_seen":"2026-07-26T17:21:38.242437Z","last_seen":"2026-07-26T17:21:38.242437Z","times_seen":1,"resource_available":false,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGRhdGEtZGV2aWNlPSJtb2JpbGUiIGxhbmc9InJ1Ij4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCB2aWV3cG9ydC1maXQ9Y292ZXIiPgogIDxtZXRhIGh0dHAtZXF1aXY9IkNhY2hlLUNvbnRyb2wiIGNvbnRlbnQ9Im5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlIj4KICA8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzZCQ0IyQSI+CiAgPHRpdGxlPjEwINCl0JDQntChLdCU0KDQntCf0J7QkjwvdGl0bGU+CiAgPHN0eWxlPmh0bWwsYm9keXtiYWNrZ3JvdW5kOiMzRDk0MTg7bWFyZ2luOjA7bWluLWhlaWdodDoxMDB2aH08L3N0eWxlPgogIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSI+CiAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tIiBjcm9zc29yaWdpbj4KICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUJvd2xieStPbmUrU0MmZmFtaWx5PUxpbGl0YStPbmUmZmFtaWx5PU51bml0bzp3Z2h0QDYwMDs3MDA7ODAwOzkwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+CiAgPHN0eWxlPgogICAgOnJvb3QgewogICAgICAtLWMxOiAjRkZDQzAwOyAtLWMyOiAjRjVCODAwOyAtLWMzOiAjRTZBODAwOwogICAgICAtLWJnOiAjNkJDQjJBOyAtLWJnMjogIzNEOTQxODsKICAgICAgLS10ZXh0OiAjRkZGRkZGOyAtLW11dGVkOiByZ2JhKDI1NSwyNTUsMjU1LDAuOTIpOwogICAgICAtLXJhZGl1czogMTZweDsgLS1idG4tdGV4dDogIzNEMUI2RTsKICAgICAgLS1zdHJva2U6ICMxYTNkMGE7CiAgICAgIC0tZ2xvdzogcmdiYSgxMDAsMjIwLDYwLC42NSk7CiAgICAgIC0tZ2xvdy1zb2Z0OiByZ2JhKDgwLDIwMCwgICAgIAogICAgICAtLXBob25lLXBsYWNlaG9sZGVyOiAjOTRhM2I4OwogICAgICAtLXBob25lLWNvdW50cnktdGV4dDogIzBmMTcyYTsKICAgICAgLS1waG9uZS1kaXZpZGVyOiByZ2JhKDE1LDIzLDQyLC4xMik7CiAgICAgIC0tY291bnRyeS1saXN0LWJnOiAjZmZmZmZmOwogICAgICAtLWNvdW50cnktbGlzdC1ib3JkZXI6IHJnYmEoMTUsMjMsNDIsLjEpOwogICAgICAtLWNvdW50cnktbGlzdC10ZXh0OiAjMGYxNzJhOwogICAgICAtLWNvdW50cnktbGlzdC1tdXRlZDogIzY0NzQ4YjsKICAgICAgLS1jb3VudHJ5LWxpc3QtaG92ZXI6IHJnYmEoMTUsMjMsNDIsLjA2KTsKICAgIAogICAgfQogICAgKiB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQogICAgaHRtbCwgYm9keSB7IGhlaWdodDogMTAwJTsgfQogICAgYm9keSB7CiAgICAgIGZvbnQtZmFtaWx5OiAnTnVuaXRvJywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBzYW5zLXNlcmlmOwogICAgICBjb2xvcjogdmFyKC0tdGV4dCk7CiAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOyBtaW4taGVpZ2h0OiAxMDBkdmg7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnMik7CiAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICB9CiAgICAKICAgIC5icmF3bC1iZyB7CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsgaW5zZXQ6IDA7IHotaW5kZXg6IDA7CiAgICAgIGJhY2tncm91bmQ6CiAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgMTIwJSA5NSUgYXQgNTAlIDMyJSwgcmdiYSgyNTUsMjU1LDI1NSwuMjgpIDAlLCB0cmFuc3BhcmVudCA1MCUpLAogICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIDg1JSA2MCUgYXQgNTAlIDQwJSwgIzhmZGM0OCAwJSwgIzZiY2IyYSAzOCUsICM1MmIwMjQgNjglLCAjM2Q5NDE4IDEwMCUpLAogICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsICM5YWU2NTAgMCUsICM3ZWNmM2EgMzUlLCAjNWNiODI4IDYyJSwgIzJkODAxNCAxMDAlKTsKICAgIH0KICAgIC5icmF3bC1iZzo6YmVmb3JlIHsKICAgICAgY29udGVudDogJyc7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgaW5zZXQ6IDA7CiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zJTNEJTI3aHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyNyUyMHdpZHRoJTNEJTI3MTI4JTI3JTIwaGVpZ2h0JTNEJTI3MTI4JTI3JTIwdmlld0JveCUzRCUyNzAlMjAwJTIwMTI4JTIwMTI4JTI3JTNFJTNDZyUyMGZpbGwlM0QlMjdub25lJTI3JTIwc3Ryb2tlJTNEJTI3JTI1MjNmZmZmZmYlMjclMjBzdHJva2Utb3BhY2l0eSUzRCUyNy4xNCUyNyUyMHN0cm9rZS13aWR0aCUzRCUyNzIlMjclM0UlM0NjaXJjbGUlMjBjeCUzRCUyNzMyJTI3JTIwY3klM0QlMjcyOCUyNyUyMHIlM0QlMjcxOCUyNy8lM0UlM0NwYXRoJTIwZCUzRCUyN00zMiUyMDE2bDYlMjA4LTYlMjA0LTYtNHolMjBNMzIlMjA0MGw2LTgtNi00LTYlMjA0eiUyME0yMCUyMDI4bDglMjA2JTIwNC02LTQtNnolMjBNNDQlMjAyOGwtOCUyMDYtNC02JTIwNC02eiUyNy8lM0UlM0NjaXJjbGUlMjBjeCUzRCUyNzk4JTI3JTIwY3klM0QlMjc3NCUyNyUyMHIlM0QlMjcxNiUyNy8lM0UlM0NwYXRoJTIwZCUzRCUyN005OCUyMDY0bDUlMjA3LTUlMjAzLTUtM3olMjBNOTglMjA4NGw1LTctNS0zLTUlMjAzeiUyME04OCUyMDc0bDclMjA1JTIwMy01LTMtNXolMjBNMTA4JTIwNzRsLTclMjA1LTMtNSUyMDMtNXolMjcvJTNFJTNDY2lyY2xlJTIwY3glM0QlMjcxOCUyNyUyMGN5JTNEJTI3OTYlMjclMjByJTNEJTI3MTIlMjcvJTNFJTNDY2lyY2xlJTIwY3glM0QlMjc3MiUyNyUyMGN5JTNEJTI3MTA4JTI3JTIwciUzRCUyNzE0JTI3LyUzRSUzQ2NpcmNsZSUyMGN4JTNEJTI3MTA4JTI3JTIwY3klM0QlMjcyMiUyNyUyMHIlM0QlMjcxMSUyNy8lM0UlM0MvZyUzRSUzQy9zdmclM0UiKTsKICAgICAgYmFja2dyb3VuZC1zaXplOiAxMjhweCAxMjhweDsKICAgICAgb3BhY2l0eTogLjYyOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KICAgIC5icmF3bC1iZzo6YWZ0ZXIgewogICAgICBjb250ZW50OiAnJzsgcG9zaXRpb246IGFic29sdXRlOyBpbnNldDogMDsKICAgICAgYmFja2dyb3VuZDoKICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxMCUsIHJnYmEoMjU1LDI1NSwyNTUsLjEpIDAlLCB0cmFuc3BhcmVudCAzMCUpLAogICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgODUlIDE1JSwgcmdiYSgyNTUsMjU1LDI1NSwuMDYpIDAlLCB0cmFuc3BhcmVudCAyNiUpLAogICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMCwwLDAsLjA1KSAwJSwgdHJhbnNwYXJlbnQgMzIlLCByZ2JhKDAsMCwwLC4xNCkgMTAwJSk7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQogICAgLnBhZ2UgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7CiAgICAgIG1heC13aWR0aDogNDIwcHg7IG1hcmdpbjogMCBhdXRvOwogICAgICBtaW4taGVpZ2h0OiAxMDBkdmg7CiAgICAgIHBhZGRpbmc6IG1heCgxNnB4LCBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkpIDIwcHggbWF4KDI0cHgsIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSk7CiAgICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIGFuaW1hdGlvbjogYnJhd2xJbiAuNDVzIGVhc2UgYm90aDsKICAgIH0KICAgIEBrZXlmcmFtZXMgYnJhd2xJbiB7CiAgICAgIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTZweCkgc2NhbGUoMC45OCk7IH0KICAgICAgdG8geyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IG5vbmU7IH0KICAgIH0KICAgIC5icmF3bC1zdGVwIHsKICAgICAgd2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgZmxleDogMTsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIH0KICAgIC5icmF3bC1zdGVwLWJvZHkgewogICAgICBmbGV4OiAxOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuYnJhd2wtc3RlcC0taW50cm8gLmJyYXdsLXN0ZXAtYm9keSB7CiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgcGFkZGluZy10b3A6IGNsYW1wKDIwcHgsIDd2aCwgNDRweCk7CiAgICB9CiAgICAuYnJhd2wtc3RlcC0taW50cm8gLmJyYXdsLWhlcm8td3JhcCB7CiAgICAgIGZsZXg6IDE7CiAgICAgIHdpZHRoOiBtaW4oMzIwcHgsIDg4dncpOwogICAgICBtaW4taGVpZ2h0OiBtaW4oMzAwcHgsIDY4dncpOwogICAgICBtYXJnaW46IDE0cHggYXV0byA4cHg7CiAgICB9CiAgICAuYnJhd2wtc3RlcC1mb290ZXIgewogICAgICB3aWR0aDogMTAwJTsgbWFyZ2luLXRvcDogYXV0bzsgcGFkZGluZy10b3A6IDE4cHg7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogNTsKICAgIH0KICAgIC5icmF3bC1idG4geyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDY7IH0KICAgIC5icmF3bC1oZXJvLXdyYXAgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB3aWR0aDogbWluKDMwMHB4LCA4NHZ3KTsgaGVpZ2h0OiBtaW4oMjkwcHgsIDY2dncpOwogICAgICBtYXJnaW46IDhweCBhdXRvIDIycHg7CiAgICB9CiAgICAuYnJhd2wtaGVyby1nbG93IHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MCU7IHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICB9CiAgICAKICAgIC5icmF3bC1oZXJvLWdsb3ctLW91dGVyIHsKICAgICAgYm90dG9tOiAyJTsgd2lkdGg6IDEyMCU7IGhlaWdodDogNzIlOwogICAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoCiAgICAgICAgZWxsaXBzZSwKICAgICAgICByZ2JhKDE2MCwyNDAsOTAsLjUpIDAlLAogICAgICAgIHJnYmEoMTAwLDIwMCw1MCwuMjYpIDM4JSwKICAgICAgICB0cmFuc3BhcmVudCA3MiUKICAgICAgKTsKICAgIH0KICAgIC5icmF3bC1oZXJvLWdsb3ctLWNvcmUgewogICAgICBib3R0b206IDEwJTsgd2lkdGg6IDg4JTsgaGVpZ2h0OiA1MiU7CiAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudCgKICAgICAgICBlbGxpcHNlLAogICAgICAgIHJnYmEoMjIwLDI1NSwxNzAsLjcyKSAwJSwKICAgICAgICByZ2JhKDEyMCwyMjAsNjAsLjU1KSAyOCUsCiAgICAgICAgcmdiYSg3MCwxNjAsMzAsLjIpIDU4JSwKICAgICAgICB0cmFuc3BhcmVudCA3OCUKICAgICAgKTsKICAgIH0KICAgIC5icmF3bC1oZXJvLXJpbmcgewogICAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoCiAgICAgICAgZWxsaXBzZSwKICAgICAgICByZ2JhKDI1NSwyNTUsMjU1LC4yOCkgMCUsCiAgICAgICAgcmdiYSgxMjAsMjIwLDYwLC4yMikgMzUlLAogICAgICAgIHRyYW5zcGFyZW50IDcyJQogICAgICApOwogICAgICBib3gtc2hhZG93OiAwIDAgMjhweCByZ2JhKDEwMCwyMDAsNTAsLjM1KTsKICAgIH0KICAgIC5icmF3bC1oZXJvLXBsYXRmb3JtIHsKICAgICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KAogICAgICAgIGVsbGlwc2UsCiAgICAgICAgcmdiYSgyNTUsMjU1LDI1NSwuMjIpIDAlLAogICAgICAgIHJnYmEoOTAsMTkwLDQwLC4zNSkgNDIlLAogICAgICAgIHJnYmEoNDAsMTEwLDE4LC41NSkgMTAwJQogICAgICApOwogICAgfQogICAgLmJyYXdsLWhlcm8tZ2xvdy0tb3V0ZXIgewogICAgICBmaWx0ZXI6IGJsdXIoMjJweCk7CiAgICAgIGFuaW1hdGlvbjogYnJhd2xHbG93UHVsc2UgMy42cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgIH0KICAgIC5icmF3bC1oZXJvLWdsb3ctLWNvcmUgewogICAgICBmaWx0ZXI6IGJsdXIoMTRweCk7CiAgICAgIGFuaW1hdGlvbjogYnJhd2xHbG93UHVsc2UgMi44cyBlYXNlLWluLW91dCBpbmZpbml0ZSByZXZlcnNlOwogICAgfQogICAgLmJyYXdsLWhlcm8tcmluZyB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNTAlOyBib3R0b206IDclOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgIHdpZHRoOiA3OCU7IGhlaWdodDogMTQlOwogICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMTgwLDI1NSwxMjAsLjU1KTsKICAgICAgYW5pbWF0aW9uOiBicmF3bFJpbmdQdWxzZSAzcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgIH0KICAgIC5icmF3bC1oZXJvLXBsYXRmb3JtIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MCU7IGJvdHRvbTogNCU7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgd2lkdGg6IDg2JTsgaGVpZ2h0OiAyMCU7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgZmlsdGVyOiBibHVyKDRweCk7CiAgICAgIGJveC1zaGFkb3c6IDAgMCA0OHB4IHJnYmEoMTAwLDIwMCw1MCwuNzUpLCAwIDAgODBweCByZ2JhKDYwLDE0MCwzMCwuMzUpOwogICAgfQogICAgLmJyYXdsLWhlcm8tc3BhcmtzIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOyBpbnNldDogOCUgNCUgMTIlOwogICAgICB6LWluZGV4OiAzOyBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KICAgIC5icmF3bC1oZXJvLXNwYXJrcyBpIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB3aWR0aDogNHB4OyBoZWlnaHQ6IDRweDsgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICBib3gtc2hhZG93OiAwIDAgNnB4ICNmZmYsIDAgMCAxMnB4IHJnYmEoMjEwLDE0MCwyNTUsLjkpOwogICAgICBvcGFjaXR5OiAwOwogICAgICBhbmltYXRpb246IGJyYXdsU3BhcmsgMi40cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgYW5pbWF0aW9uLWRlbGF5OiBjYWxjKHZhcigtLXNwYXJrLCAwKSAqIDAuMzFzKTsKICAgIH0KICAgIC5icmF3bC1oZXJvLXNwYXJrcyBpOm50aC1jaGlsZCgxKSB7IGxlZnQ6IDEyJTsgdG9wOiAzOCU7IH0KICAgIC5icmF3bC1oZXJvLXNwYXJrcyBpOm50aC1jaGlsZCgyKSB7IGxlZnQ6IDI0JTsgdG9wOiA2MiU7IH0KICAgIC5icmF3bC1oZXJvLXNwYXJrcyBpOm50aC1jaGlsZCgzKSB7IGxlZnQ6IDM4JTsgdG9wOiAyOCU7IH0KICAgIC5icmF3bC1oZXJvLXNwYXJrcyBpOm50aC1jaGlsZCg0KSB7IGxlZnQ6IDUyJTsgdG9wOiA3MiU7IH0KICAgIC5icmF3bC1oZXJvLXNwYXJrcyBpOm50aC1jaGlsZCg1KSB7IGxlZnQ6IDY2JTsgdG9wOiAzNCU7IH0KICAgIC5icmF3bC1oZXJvLXNwYXJrcyBpOm50aC1jaGlsZCg2KSB7IGxlZnQ6IDc4JTsgdG9wOiA1OCU7IH0KICAgIC5icmF3bC1oZXJvLXNwYXJrcyBpOm50aC1jaGlsZCg3KSB7IGxlZnQ6IDQ0JTsgdG9wOiA0OCU7IH0KICAgIC5icmF3bC1oZXJvLXNwYXJrcyBpOm50aC1jaGlsZCg4KSB7IGxlZnQ6IDU4JTsgdG9wOiAyMiU7IH0KICAgIC5icmF3bC1oZXJvLXNwYXJrcyBpOm50aC1jaGlsZCg5KSB7IGxlZnQ6IDMwJTsgdG9wOiAxOCU7IH0KICAgIC5icmF3bC1oZXJvLXNwYXJrcyBpOm50aC1jaGlsZCgxMCkgeyBsZWZ0OiA3MCU7IHRvcDogNDQlOyB9CiAgICAuYnJhd2wtaGVyby1ib3gsIC5icmF3bC1oZXJvLWJveC1zdmcgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDQ7CiAgICAgIGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogOTQlOyBoZWlnaHQ6IGF1dG87CiAgICAgIG1heC1oZWlnaHQ6IG1pbigzMDBweCwgNzB2dyk7CiAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICBmaWx0ZXI6CiAgICAgICAgZHJvcC1zaGFkb3coMCAwIDIycHggcmdiYSgxMjAsMjIwLDYwLC43NSkpIGRyb3Atc2hhZG93KDAgMCA0OHB4IHJnYmEoODAsMTkwLDQwLC40NSkpIGRyb3Atc2hhZG93KDAgMTRweCAyOHB4IHJnYmEoMCwwLDAsLjM1KSk7CiAgICAgIGFuaW1hdGlvbjogYnJhd2xGbG9hdCAzLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgfQogICAgCiAgICAuYnMtZm9vdGJhbGwtcGFnZSAuYnJhd2wtc3RlcC0taW50cm8gLmJyYXdsLWhlcm8td3JhcCB7CiAgICAgIHdpZHRoOiBtaW4oMzYwcHgsIDkydncpOwogICAgICBtaW4taGVpZ2h0OiBtaW4oMzQwcHgsIDc4dncpOwogICAgfQogICAgLmJzLWdlbXMtcGFnZSAuYnJhd2wtc3RlcC0taW50cm8gLmJyYXdsLWhlcm8td3JhcCB7CiAgICAgIHdpZHRoOiBtaW4oNDQwcHgsIDk2dncpOwogICAgICBtaW4taGVpZ2h0OiBtaW4oNDIwcHgsIDkwdncpOwogICAgfQogICAgLmJzLWZvb3RiYWxsLXBhZ2UgLmJyYXdsLWhlcm8tYm94LS1mb290YmFsbCB7CiAgICAgIHdpZHRoOiAxMTIlOwogICAgICBtYXgtaGVpZ2h0OiBtaW4oNDAwcHgsIDg2dncpOwogICAgICBmaWx0ZXI6CiAgICAgICAgZHJvcC1zaGFkb3coMCAwIDIycHggcmdiYSgxMjAsMjIwLDYwLC43NSkpCiAgICAgICAgZHJvcC1zaGFkb3coMCAwIDQ4cHggcmdiYSg4MCwxOTAsNDAsLjQ1KSkKICAgICAgICBkcm9wLXNoYWRvdygwIDE0cHggMjhweCByZ2JhKDAsMCwwLC4zNSkpOwogICAgfQogICAgLmJzLWZvb3RiYWxsLXBhZ2UgLmJyYXdsLXN0ZXAtLXBob25lIC5icmF3bC1oZXJvLWJveC0tZm9vdGJhbGwgewogICAgICBtYXgtaGVpZ2h0OiBtaW4oMTYwcHgsIDM4dncpOwogICAgfQogICAgLmJzLWdlbXMtcGFnZSAuYnJhd2wtaGVyby1ib3gtLWdlbXMgewogICAgICB3aWR0aDogMTIyJTsKICAgICAgbWF4LWhlaWdodDogbWluKDU0MHB4LCA5NnZ3KTsKICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgIH0KICAgIC5icy1jaGFvcy1wYWdlIC5icmF3bC1oZXJvLWJveC0tY2hhb3MsCiAgICAuYnMtbmFuby1wYWdlIC5icmF3bC1oZXJvLWJveC0tbmFubywKICAgIC5icy1ub3JpLXBhZ2UgLmJyYXdsLWhlcm8tYm94LS1ub3JpIHsKICAgICAgd2lkdGg6IDk4JTsKICAgICAgbWF4LWhlaWdodDogbWluKDQyMHB4LCA4OHZ3KTsKICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgIH0KICAgIC5icy1nZW1zLXBhZ2UgLmJyYXdsLXN0ZXAtLXBob25lIC5icmF3bC1oZXJvLWJveC0tZ2VtcywKICAgIC5icy1jaGFvcy1wYWdlIC5icmF3bC1zdGVwLS1waG9uZSAuYnJhd2wtaGVyby1ib3gtLWNoYW9zLAogICAgLmJzLW5hbm8tcGFnZSAuYnJhd2wtc3RlcC0tcGhvbmUgLmJyYXdsLWhlcm8tYm94LS1uYW5vLAogICAgLmJzLW5vcmktcGFnZSAuYnJhd2wtc3RlcC0tcGhvbmUgLmJyYXdsLWhlcm8tYm94LS1ub3JpIHsKICAgICAgbWF4LWhlaWdodDogbWluKDE1MHB4LCAzNnZ3KTsKICAgIH0KICAgIC5icy1mb290YmFsbC1wYWdlIC5icmF3bC1idG4taWNvbiB7CiAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggNHB4IHJnYmEoMCwwLDAsLjI1KSk7CiAgICB9CiAgICBAa2V5ZnJhbWVzIGJyYXdsRmxvYXQgewogICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogICAgICA1MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOyB9CiAgICB9CiAgICBAa2V5ZnJhbWVzIGJyYXdsR2xvd1B1bHNlIHsKICAgICAgMCUsIDEwMCUgeyBvcGFjaXR5OiAuODg7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSBzY2FsZSgxKTsgfQogICAgICA1MCUgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMS4wNik7IH0KICAgIH0KICAgIEBrZXlmcmFtZXMgYnJhd2xSaW5nUHVsc2UgewogICAgICAwJSwgMTAwJSB7IG9wYWNpdHk6IC44MjsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHNjYWxlWCgxKTsgfQogICAgICA1MCUgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgc2NhbGVYKDEuMDQpOyB9CiAgICB9CiAgICBAa2V5ZnJhbWVzIGJyYXdsU3BhcmsgewogICAgICAwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogc2NhbGUoLjQpOyB9CiAgICAgIDQ1JSB7IG9wYWNpdHk6IC45NTsgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOyB9CiAgICAgIDcwJSB7IG9wYWNpdHk6IC4zNTsgdHJhbnNmb3JtOiBzY2FsZSguNyk7IH0KICAgIH0KICAgIC5icmF3bC1tYWluLXRpdGxlIHsKICAgICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTBweDsKICAgICAgZm9udC1mYW1pbHk6ICdMaWxpdGEgT25lJywgJ0Jvd2xieSBPbmUgU0MnLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS40NXJlbSwgNi44dncsIDJyZW0pOwogICAgICBsaW5lLWhlaWdodDogMS4wMjsgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTsKICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgY29sb3I6ICNmZmY7CiAgICAgIHRleHQtc2hhZG93OgogICAgICAgIDAgMCAxOHB4IHJnYmEoMjEwLDE1MCwyNTUsLjQ1KSwKICAgICAgICAwIDNweCAwICMyYTEyNDgsCiAgICAgICAgMCA1cHggMCAjMWEwODMwLAogICAgICAgIDAgOHB4IDIycHggcmdiYSgwLDAsMCwuNDIpOwogICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OyBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuYnJhd2wtbWFpbi10aXRsZSA+IHNwYW46bnRoLWNoaWxkKDIpIHsgZmxleDogMCAxIGF1dG87IH0KICAgIC5icmF3bC1zcGFyay1ncm91cCB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDVweDsgZmxleC1zaHJpbms6IDA7CiAgICB9CiAgICAuYnJhd2wtc3BhcmstZ3JvdXAgaSB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMjBweDsgaGVpZ2h0OiAzcHg7IGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tYzEpIDQwJSwgI2ZmZik7CiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0yOGRlZyk7CiAgICAgIGJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMjU1LDIwNCwwLC41NSk7CiAgICB9CiAgICAuYnJhd2wtc3BhcmstZ3JvdXAtLXIgaSB7IHRyYW5zZm9ybTogcm90YXRlKDI4ZGVnKTsgfQogICAgLmJyYXdsLXN1YnRpdGxlIHsKICAgICAgZm9udC1zaXplOiBjbGFtcCguNzZyZW0sIDMuMXZ3LCAuOXJlbSk7CiAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7IGxldHRlci1zcGFjaW5nOiAwLjFlbTsKICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjk0KTsKICAgICAgbWF4LXdpZHRoOiAzNDBweDsgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgbWFyZ2luOiAwIGF1dG8gMTBweDsKICAgICAgdGV4dC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgwLDAsMCwuMjgpOwogICAgfQogICAgLmJyYXdsLXN0ZXAtdGl0bGUtc20gewogICAgICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgIGZvbnQtc2l6ZTogY2xhbXAoLjk1cmVtLCA0dncsIDEuMXJlbSk7CiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIG1hcmdpbi1ib3R0b206IDE4cHg7CiAgICB9CiAgICAuYnJhd2wtYnRuIHsKICAgICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIGdhcDogMTJweDsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB3aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAzNDBweDsgbWFyZ2luOiAwIGF1dG87CiAgICAgIHBhZGRpbmc6IDE0cHggMjBweCAxNHB4IDE2cHg7CiAgICAgIGJvcmRlcjogM3B4IHNvbGlkICMxYTBhMmU7CiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7CiAgICAgIGZvbnQtZmFtaWx5OiAnTGlsaXRhIE9uZScsICdCb3dsYnkgT25lIFNDJywgSW1wYWN0LCBzYW5zLXNlcmlmOwogICAgICBmb250LXNpemU6IDEuMTRyZW07IGxldHRlci1zcGFjaW5nOiAwLjA2ZW07CiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGN1cnNvcjogcG9pbnRlcjsKICAgICAgY29sb3I6IHZhcigtLWJ0bi10ZXh0KTsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI2ZmZTU2NiAwJSwgdmFyKC0tYzEpIDI4JSwgdmFyKC0tYzIpIDYyJSwgdmFyKC0tYzMpIDEwMCUpOwogICAgICBib3gtc2hhZG93OgogICAgICAgIDAgNnB4IDAgIzFhMGEyZSwKICAgICAgICAwIDEwcHggMjhweCByZ2JhKDAsMCwwLC4zOCksCiAgICAgICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4zNSk7CiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMTJzIGVhc2UsIGJveC1zaGFkb3cgLjEycyBlYXNlOwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgfQogICAgLmJyYXdsLWJ0bi1pY29uIHsKICAgICAgd2lkdGg6IDM4cHg7IGhlaWdodDogMzhweDsgZmxleC1zaHJpbms6IDA7CiAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAzcHggNnB4IHJnYmEoMCwwLDAsLjI4KSk7CiAgICB9CiAgICAuYnJhd2wtYnRuIHNwYW4geyB0ZXh0LXNoYWRvdzogbm9uZTsgdGV4dC1hbGlnbjogY2VudGVyOyBmbGV4OiAxOyB9CiAgICAuYnJhd2wtYnRuOmFjdGl2ZSB7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0cHgpOwogICAgICBib3gtc2hhZG93OiAwIDJweCAwICMxYTBhMmUsIDAgNHB4IDEycHggcmdiYSgwLDAsMCwuMyk7CiAgICB9CiAgICAuYnJhd2wtYnRuLS1naG9zdCB7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsLjEpOwogICAgICBib3gtc2hhZG93OiBub25lOyBib3JkZXItY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjIyKTsKICAgICAgZm9udC1zaXplOiAuOTJyZW07IHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgIGNvbG9yOiAjZmZmOwogICAgICBwYWRkaW5nOiAxNnB4IDIycHg7CiAgICB9CiAgICAubG9hZGVyLXdyYXAgewogICAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiAxMHB4OwogICAgICBtaW4taGVpZ2h0OiAyNHB4OyBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIGNvbG9yOiB2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZTogMC44NzVyZW07CiAgICB9CiAgICAuc3Bpbm5lciB7CiAgICAgIHdpZHRoOiAyMHB4OyBoZWlnaHQ6IDIwcHg7IGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMik7CiAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWMxKTsKICAgICAgYW5pbWF0aW9uOiBzcGluIC43cyBsaW5lYXIgaW5maW5pdGU7CiAgICB9CiAgICBAa2V5ZnJhbWVzIHNwaW4geyB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfQogICAgCiAgICAucGhvbmUtd3JhcCB7CiAgICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHdpZHRoOiAxMDAlOyBtaW4td2lkdGg6IDA7CiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOyBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CiAgICAucGhvbmUtaW5wdXQgewogICAgICBmbGV4OiAxIDEgMDsgbWluLXdpZHRoOiAwOyB3aWR0aDogMTAwJTsgbWFyZ2luOiAwOwogICAgICBib3JkZXI6IG5vbmU7IG91dGxpbmU6IG5vbmU7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBib3gtc2hhZG93OiBub25lOwogICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IGFwcGVhcmFuY2U6IG5vbmU7CiAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OyBmb250LXNpemU6IDEuMDVyZW07IGxpbmUtaGVpZ2h0OiAxLjM1OwogICAgICBwYWRkaW5nOiAxNHB4IDEwcHggMTRweCA2cHg7IGxldHRlci1zcGFjaW5nOiAwLjAxZW07CiAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjsKICAgIH0KICAgIC5waG9uZS1pbnB1dDo6cGxhY2Vob2xkZXIgeyBjb2xvcjogdmFyKC0tcGhvbmUtcGxhY2Vob2xkZXIsICM5NGEzYjgpOyBvcGFjaXR5OiAxOyB9CiAgICAucGhvbmUtaW5wdXQ6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyBib3gtc2hhZG93OiBub25lOyB9CiAgICAucGhvbmUtaW5wdXRbcmVhZG9ubHldIHsgY2FyZXQtY29sb3I6IHRyYW5zcGFyZW50OyBjdXJzb3I6IGRlZmF1bHQ7IH0KICAgIC5jb2RlLWRpZ2l0cyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBmbGV4LXdyYXA6IG5vd3JhcDsgZ2FwOiBjbGFtcCg0cHgsIDEuNXZ3LCAxMHB4KTsKICAgICAgbWF4LXdpZHRoOiAxMDAlOyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgfQogICAgLmNvZGUtZGlnaXQgewogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgb3V0bGluZTogbm9uZTsgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyBhcHBlYXJhbmNlOiBub25lOwogICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsKICAgIH0KICAgIC5jb2RlLWRpZ2l0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLAogICAgLmNvZGUtZGlnaXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24gewogICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IG1hcmdpbjogMDsKICAgIH0KICAgIC5jb2RlLWRpZ2l0W3JlYWRvbmx5XSB7IGNhcmV0LWNvbG9yOiB0cmFuc3BhcmVudDsgY3Vyc29yOiBkZWZhdWx0OyB9CiAgICAuY29kZS1kaWdpdHMtd3JhcCB7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuY29kZS1vdHAtYXV0b2ZpbGwgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGluc2V0OiAwOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBvcGFjaXR5OiAwLjAxOwogICAgICBib3JkZXI6IDA7CiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIGNhcmV0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICB6LWluZGV4OiAzOwogICAgICBtYXJnaW46IDA7CiAgICAgIHBhZGRpbmc6IDA7CiAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIH0KICAgIC5jb3VudHJ5LXNlbGVjdCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZmxleC1zaHJpbms6IDA7IHotaW5kZXg6IDI1OyBtaW4td2lkdGg6IDQuODVyZW07IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGFsaWduLXNlbGY6IGNlbnRlcjsgfQogICAgLmNvdW50cnktc2VsZWN0LmlzLW9wZW4geyB6LWluZGV4OiA2MDsgfQogICAgLmNvdW50cnktYnRuIHsKICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNHB4OwogICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm9yZGVyOiBub25lOyBjb2xvcjogdmFyKC0tcGhvbmUtY291bnRyeS10ZXh0LCB2YXIoLS10ZXh0KSk7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsgcGFkZGluZzogMTBweCA2cHggMTBweCA0cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogMC45OHJlbTsgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTsKICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgbWF4LXdpZHRoOiAxMDAlOwogICAgICBtaW4td2lkdGg6IDQuODVyZW07IGxpbmUtaGVpZ2h0OiAxLjI7CiAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICB9CiAgICAuY291bnRyeS1idG46Zm9jdXMtdmlzaWJsZSB7IG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItZm9jdXMsICM1YjlkZmYpOyBvdXRsaW5lLW9mZnNldDogMnB4OyBib3JkZXItcmFkaXVzOiA4cHg7IH0KICAgIC5jb3VudHJ5LWZsYWcgewogICAgICB3aWR0aDogMS4zNXJlbTsgbWluLXdpZHRoOiAxLjM1cmVtOyBmbGV4LXNocmluazogMDsKICAgICAgZm9udC1zaXplOiAxLjE1cmVtOyBsaW5lLWhlaWdodDogMTsKICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgfQogICAgLmNvdW50cnktZmxhZy1pbWcgewogICAgICB3aWR0aDogMjRweDsgaGVpZ2h0OiAxOHB4OyBtaW4td2lkdGg6IDI0cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsgb2JqZWN0LWZpdDogY292ZXI7IGRpc3BsYXk6IGJsb2NrOwogICAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwwLjA4KTsKICAgIH0KICAgIC5jb3VudHJ5LW1ldGEgewogICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA0cHg7CiAgICAgIG1pbi13aWR0aDogMy4zNXJlbTsgZmxleC1zaHJpbms6IDA7IGxpbmUtaGVpZ2h0OiAxLjI7CiAgICB9CiAgICAuY291bnRyeS1kaWFsIHsKICAgICAgZmxleC1zaHJpbms6IDA7IGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgIG1pbi13aWR0aDogMi4xNXJlbTsgdGV4dC1hbGlnbjogbGVmdDsgbGluZS1oZWlnaHQ6IDEuMjsKICAgIH0KICAgIC5jb3VudHJ5LWlzbyB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxLjM1cmVtOyBmbGV4LXNocmluazogMDsgbGluZS1oZWlnaHQ6IDEuMjsgZm9udC1zaXplOiAwLjkycmVtOyBmb250LXdlaWdodDogODAwOyB9CiAgICAuY291bnRyeS1idG4gLmNvdW50cnktZmxhZy1pbWcgewogICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICBmbGV4LXNocmluazogMDsKICAgIH0KICAgIC5jb3VudHJ5LWJ0biAuY291bnRyeS1pc28geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KICAgIC5jb3VudHJ5LWNoZXZyb24gewogICAgICB3aWR0aDogOHB4OyBoZWlnaHQ6IDhweDsgb3BhY2l0eTogMC40NTsgZmxleC1zaHJpbms6IDA7CiAgICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjsKICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZVkoLTJweCk7IG1hcmdpbi1sZWZ0OiAxcHg7CiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMTVzIGVhc2UsIG9wYWNpdHkgLjE1cyBlYXNlOwogICAgfQogICAgLmNvdW50cnktc2VsZWN0LmlzLW9wZW4gLmNvdW50cnktY2hldnJvbiB7CiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMzVkZWcpIHRyYW5zbGF0ZVkoMXB4KTsgb3BhY2l0eTogMC43NTsKICAgIH0KICAgIC5jb3VudHJ5LWxpc3QgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogY2FsYygxMDAlICsgOHB4KTsgbGVmdDogMDsgei1pbmRleDogNzA7CiAgICAgIG1pbi13aWR0aDogbWluKDMwMHB4LCA4NnZ3KTsgbWF4LWhlaWdodDogbWluKDI4MHB4LCA1MHZoKTsgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tY291bnRyeS1saXN0LWJnLCB2YXIoLS1zdXJmYWNlLTIsIHJnYmEoMTgsMTQsMjgsMC45OCkpKTsKICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY291bnRyeS1saXN0LWJvcmRlciwgdmFyKC0tYm9yZGVyLCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpKSk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7IHBhZGRpbmc6IDZweDsKICAgICAgYm94LXNoYWRvdzogMCAxOHB4IDQ4cHggcmdiYSgwLDAsMCwwLjI4KTsKICAgICAgbGlzdC1zdHlsZTogbm9uZTsgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgfQogICAgLmNvdW50cnktbGlzdC5pcy1maXhlZCB7CiAgICAgIHotaW5kZXg6IDk5OTk7CiAgICB9CiAgICAuY291bnRyeS1saXN0W2hpZGRlbl0geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KICAgIC5jb3VudHJ5LWl0ZW0gewogICAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7IHdpZHRoOiAxMDAlOwogICAgICBwYWRkaW5nOiAxMXB4IDEycHg7IGJvcmRlcjogbm9uZTsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIGNvbG9yOiB2YXIoLS1jb3VudHJ5LWxpc3QtdGV4dCwgdmFyKC0tdGV4dCkpOyB0ZXh0LWFsaWduOiBsZWZ0OyBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMC45cmVtOyBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIH0KICAgIC5jb3VudHJ5LWl0ZW06aG92ZXIsIC5jb3VudHJ5LWl0ZW1bYXJpYS1zZWxlY3RlZD0idHJ1ZSJdIHsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tY291bnRyeS1saXN0LWhvdmVyLCByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpKTsKICAgIH0KICAgIC5jb3VudHJ5LWl0ZW0tbmFtZSB7IGZsZXg6IDE7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KICAgIC5jb3VudHJ5LWl0ZW0tZGlhbCB7IGNvbG9yOiB2YXIoLS1jb3VudHJ5LWxpc3QtbXV0ZWQsIHZhcigtLW11dGVkKSk7IGZvbnQtc2l6ZTogMC44NHJlbTsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgZm9udC13ZWlnaHQ6IDYwMDsgfQogICAgLnBob25lLWRpdmlkZXIgewogICAgICB3aWR0aDogMXB4OyBhbGlnbi1zZWxmOiBzdHJldGNoOyBtYXJnaW46IDEycHggMDsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGhvbmUtZGl2aWRlciwgdmFyKC0tYm9yZGVyLCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpKSk7IGZsZXgtc2hyaW5rOiAwOwogICAgfQogICAgCiAgICAKICAgIC5icmF3bC1waG9uZS1maWVsZCB7IHdpZHRoOiAxMDAlOyBtYXgtd2lkdGg6IDM0MHB4OyBtYXJnaW46IDAgYXV0byA2cHg7IH0KICAgIC5icmF3bC1waG9uZS13cmFwIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgYmFja2dyb3VuZDogI2ZmZjsKICAgICAgYm9yZGVyOiBub25lOwogICAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgICAgYm94LXNoYWRvdzogMCAycHggMTJweCByZ2JhKDAsMCwwLC4xOCk7CiAgICAgIHBhZGRpbmc6IDRweCAxNnB4IDRweCA2cHg7CiAgICAgIG1pbi1oZWlnaHQ6IDUycHg7CiAgICB9CiAgICAuYnJhd2wtY291bnRyeS1idG4gewogICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICBoZWlnaHQ6IGF1dG87CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICB9CiAgICAuYnJhd2wtY291bnRyeS1tZXRhIHsKICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGdhcDogNHB4OwogICAgICBsaW5lLWhlaWdodDogMS4yOwogICAgfQogICAgLmJyYXdsLWNvdW50cnktYnRuIC5jb3VudHJ5LWZsYWctaW1nIHsKICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgZmxleC1zaHJpbms6IDA7CiAgICB9CiAgICAuYnJhd2wtY291bnRyeS1tZXRhIC5jb3VudHJ5LWlzbyB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICAgIC5icmF3bC1wYWdlIC5icmF3bC1jb3VudHJ5LWJ0biB7CiAgICAgIGNvbG9yOiAjMWEwYTJlOyBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7CiAgICAgIHBhZGRpbmc6IDEycHggOHB4IDEycHggMTBweDsKICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICBnYXA6IDVweDsKICAgICAgbWluLXdpZHRoOiA0LjI1cmVtOwogICAgICBwYWRkaW5nOiAxMnB4IDEwcHggMTJweCAxNHB4OwogICAgfQogICAgLmJyYXdsLXBhZ2UgLmNvdW50cnktc2VsZWN0IHsgbWluLXdpZHRoOiA0LjI1cmVtOyB9CiAgICAuYnJhd2wtcGFnZSAuYnJhd2wtY291bnRyeS1idG4gLmNvdW50cnktY2hldnJvbiB7IG9wYWNpdHk6IDAuMzU7IGJvcmRlci1jb2xvcjogIzFhMGEyZTsgZmxleC1zaHJpbms6IDA7IH0KICAgIC5icmF3bC1wYWdlIC5icmF3bC1jb3VudHJ5LW1ldGEgewogICAgICBtaW4td2lkdGg6IDIuODVyZW07CiAgICB9CiAgICAuYnJhd2wtcGFnZSAuYnJhd2wtY291bnRyeS1idG4gLmNvdW50cnktZmxhZy1pbWcgewogICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgfQogICAgLmJyYXdsLXBhZ2UgLmJyYXdsLWNvdW50cnktbWV0YSAuY291bnRyeS1pc28gewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuYnJhd2wtcGFnZSAuYnJhd2wtY291bnRyeS1tZXRhIC5jb3VudHJ5LWRpYWwgewogICAgICBmb250LXNpemU6IDFyZW07CiAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICAgIG1pbi13aWR0aDogMi4zNXJlbTsKICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTsKICAgIH0KICAgIC5icmF3bC1wYWdlIC5icmF3bC1waG9uZS13cmFwIC5waG9uZS1pbnB1dCB7CiAgICAgIGZvbnQtc2l6ZTogMS4wMnJlbTsKICAgICAgcGFkZGluZzogMTRweCA4cHggMTRweCA0cHg7CiAgICAgIGNvbG9yOiAjNjQ3NDhiOwogICAgICBmb250LXdlaWdodDogNzAwOwogICAgfQogICAgLmJyYXdsLXBhZ2UgLmJyYXdsLXBob25lLXdyYXAgLnBob25lLWlucHV0Om5vdCg6cGxhY2Vob2xkZXItc2hvd24pIHsgY29sb3I6ICMxYTBhMmU7IH0KICAgIC5icmF3bC1wYWdlIC5icmF3bC1waG9uZS13cmFwIC5waG9uZS1kaXZpZGVyIHsKICAgICAgbWFyZ2luOiAxMHB4IDA7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjYsMTAsNDYsLjEyKTsKICAgIH0KICAgIC5icmF3bC1zdGVwLS1waG9uZSAuYnJhd2wtaGVyby13cmFwIHsKICAgICAgd2lkdGg6IG1pbigyMDBweCwgNTh2dyk7CiAgICAgIGhlaWdodDogbWluKDE0MHB4LCAzNHZ3KTsKICAgICAgbWFyZ2luOiA0cHggYXV0byAxMnB4OwogICAgfQogICAgLmJyYXdsLXN0ZXAtLXBob25lIC5icmF3bC1oZXJvLWJveCB7IG1heC1oZWlnaHQ6IG1pbigxMjhweCwgMzJ2dyk7IH0KICAgIC5icmF3bC1zdGVwLS1waG9uZSAuYnJhd2wtc3RlcC1ib2R5IHsKICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICBwYWRkaW5nLXRvcDogOHB4OwogICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICB9CiAgICAuYnJhd2wtc3RlcC1mb290ZXItLWtleXBhZCB7CiAgICAgIHBhZGRpbmctdG9wOiA4cHg7CiAgICAgIG1hcmdpbi10b3A6IGF1dG87CiAgICB9CiAgICAuYnJhd2wta2V5cGFkIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIG1heC13aWR0aDogMzQwcHg7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIH0KICAgIC5icmF3bC1rZXlwYWRbaGlkZGVuXSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQogICAgLmJyYXdsLWtleXBhZC1ncmlkIHsKICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpOwogICAgICBnYXA6IDEwcHg7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgfQogICAgLmJyYXdsLWtleSB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBoZWlnaHQ6IDU0cHg7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgYm9yZGVyLXJhZGl1czogMTRweDsKICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjExKTsKICAgICAgY29sb3I6ICNmZmY7CiAgICAgIGZvbnQtZmFtaWx5OiAnTnVuaXRvJywgc2Fucy1zZXJpZjsKICAgICAgZm9udC1zaXplOiAxLjQ1cmVtOwogICAgICBmb250LXdlaWdodDogODAwOwogICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4xMnMgZWFzZSwgdHJhbnNmb3JtIC4wOHMgZWFzZTsKICAgICAgcGFkZGluZzogMDsKICAgIH0KICAgIC5icmF3bC1rZXk6YWN0aXZlIHsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk3KTsKICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjIpOwogICAgfQogICAgLmJyYXdsLWtleS0tZW1wdHkgewogICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQogICAgLmJyYXdsLWtleS0tYmFjayB7IGNvbG9yOiAjZmZmOyB9CiAgICAuYnJhd2wta2V5LWJhY2staWNvbiB7CiAgICAgIHdpZHRoOiAyNnB4OwogICAgICBoZWlnaHQ6IDI2cHg7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQogICAgLmJyYXdsLXBhZ2UgI2J0bkdvIHsKICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgfQogICAgLmJyYXdsLXBhZ2UgLmJyYXdsLWNvbnRhY3QtYnRuIHsKICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgbWF4LXdpZHRoOiAzNDBweDsKICAgIH0KICAgIAogICAgLmNvZGUtc3VidGl0bGUgewogICAgICBmb250LXNpemU6IDAuODhyZW07IGxpbmUtaGVpZ2h0OiAxLjQ1OyBjb2xvcjogdmFyKC0tbXV0ZWQpOwogICAgICBtYXJnaW4tYm90dG9tOiA4cHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGxldHRlci1zcGFjaW5nOiAwLjAzZW07CiAgICB9CiAgICAuYnJhd2wtaGVscCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQogICAgLmNvZGUtc2VudC1oaW50IHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgZm9udC1zaXplOiBjbGFtcCguNzJyZW0sIDN2dywgLjg0cmVtKTsKICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTsKICAgICAgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjg4KTsKICAgICAgbWFyZ2luOiAwIGF1dG8gMTRweDsKICAgICAgbWF4LXdpZHRoOiAzMjBweDsKICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7CiAgICAgIHRleHQtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwwLDAsLjIyKTsKICAgIH0KICAgIC5jb2RlLWRpZ2l0cyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsgZmxleC13cmFwOiB3cmFwOwogICAgfQogICAgLmJyYXdsLXBhZ2UgLmNvZGUtZGlnaXQgewogICAgICB3aWR0aDogNDRweDsgaGVpZ2h0OiA1MnB4OyBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1zdHJva2UpOwogICAgICBiYWNrZ3JvdW5kOiAjZmZmOyBjb2xvcjogIzExMTsKICAgICAgZm9udC1zaXplOiAxLjM1cmVtOyBmb250LXdlaWdodDogODAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIGZvbnQtZmFtaWx5OiAnTnVuaXRvJywgc2Fucy1zZXJpZjsKICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgYm94LXNoYWRvdzogMCA0cHggMCByZ2JhKDAsMCwwLC4xNSk7CiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMXMgZWFzZTsKICAgIH0KICAgIC5icmF3bC1wYWdlIC5jb2RlLWRpZ2l0OmZvY3VzIHsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgICBib3gtc2hhZG93OiAwIDZweCAwIHJnYmEoMCwwLDAsLjE1KSwgMCAwIDAgM3B4IHJnYmEoMjU1LDIwNCwwLC40NSk7CiAgICB9CiAgICAuYmFjay1saW5rIHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tdG9wOiAxNHB4OwogICAgICBjb2xvcjogdmFyKC0tbXV0ZWQpOyBmb250LXNpemU6IDAuODVyZW07IHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIH0KICAgIC5icmF3bC1wYWdlIC50d29mYS1zdGVwIHsgcGFkZGluZy10b3A6IDRweDsgfQogICAgLmJyYXdsLXBhZ2UgLnR3b2ZhLWljb24td3JhcCB7IHdpZHRoOiA4OHB4OyBoZWlnaHQ6IDg4cHg7IG1hcmdpbi1ib3R0b206IDE2cHg7IH0KICAgIC5icmF3bC1wYWdlIC50d29mYS1pY29uIHsKICAgICAgd2lkdGg6IDg4cHg7IGhlaWdodDogODhweDsgYm9yZGVyLXJhZGl1czogMjRweDsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgyNTUsMjA0LDAsLjIyKSwgcmdiYSgxNjgsODUsMjQ3LC4xOCkpOwogICAgICBib3JkZXI6IDNweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xNCk7CiAgICAgIGZvbnQtc2l6ZTogMzRweDsKICAgIH0KICAgIC5icmF3bC1wYWdlIC50d29mYS1pY29uLWdsb3cgewogICAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDE2OCw4NSwyNDcsLjQ1KSAwJSwgdHJhbnNwYXJlbnQgNzIlKTsKICAgIH0KICAgIC5icmF3bC1wYWdlIC50d29mYS1oZWFkaW5nIHsKICAgICAgZm9udC1mYW1pbHk6ICdMaWxpdGEgT25lJywgSW1wYWN0LCBzYW5zLXNlcmlmOwogICAgICBmb250LXNpemU6IGNsYW1wKDEuMnJlbSwgNXZ3LCAxLjQ1cmVtKTsKICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTsKICAgICAgdGV4dC1zaGFkb3c6IDAgMnB4IDAgcmdiYSgwLDAsMCwuMjUpOwogICAgfQogICAgLmJyYXdsLXBhZ2UgLnR3b2ZhLXN1YnRpdGxlIHsKICAgICAgZm9udC13ZWlnaHQ6IDcwMDsgb3BhY2l0eTogLjg4OyBmb250LXNpemU6IC44OHJlbTsKICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsKICAgIH0KICAgIC5icmF3bC1wYWdlIC50d29mYS1oaW50LWJveCB7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDIwNCwwLC4xKTsKICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwyMDQsMCwuMjIpOwogICAgfQogICAgLmJyYXdsLXBhZ2UgLnR3b2ZhLWlucHV0IHsKICAgICAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tc3Ryb2tlKTsKICAgICAgYm9yZGVyLXJhZGl1czogMTRweDsKICAgICAgYmFja2dyb3VuZDogI2ZmZjsgY29sb3I6ICMxYTBhMmU7CiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7IHBhZGRpbmc6IDE1cHggNDhweCAxNXB4IDE2cHg7CiAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDAgcmdiYSgwLDAsMCwuMTUpOwogICAgfQogICAgLmJyYXdsLXBhZ2UgLnR3b2ZhLWlucHV0OmZvY3VzIHsKICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jMSk7CiAgICAgIGJveC1zaGFkb3c6IDAgNnB4IDAgcmdiYSgwLDAsMCwuMTUpLCAwIDAgMCAzcHggcmdiYSgyNTUsMjA0LDAsLjM1KTsKICAgICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIH0KICAgIC5icmF3bC1wYWdlIC50d29mYS1idG4gewogICAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgd2lkdGg6IDEwMCU7IG1heC13aWR0aDogMzQwcHg7IG1hcmdpbjogMCBhdXRvOwogICAgICBwYWRkaW5nOiAxNnB4IDIycHg7CiAgICAgIGJvcmRlcjogM3B4IHNvbGlkICMxYTBhMmU7CiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7CiAgICAgIGZvbnQtZmFtaWx5OiAnTGlsaXRhIE9uZScsIEltcGFjdCwgc2Fucy1zZXJpZjsKICAgICAgZm9udC1zaXplOiAxLjEycmVtOyBsZXR0ZXItc3BhY2luZzogMC4wNWVtOwogICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGNvbG9yOiB2YXIoLS1idG4tdGV4dCk7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWMxKSAwJSwgdmFyKC0tYzIpIDU1JSwgdmFyKC0tYzMpIDEwMCUpOwogICAgICBib3gtc2hhZG93OiAwIDZweCAwICMxYTBhMmUsIDAgMTBweCAyNHB4IHJnYmEoMCwwLDAsLjM1KTsKICAgIH0KICAgIC5icmF3bC1zdWNjZXNzIC5zdWNjZXNzLXRpdGxlIHsKICAgICAgZm9udC1mYW1pbHk6ICdMaWxpdGEgT25lJywgSW1wYWN0LCBzYW5zLXNlcmlmOwogICAgICBmb250LXNpemU6IGNsYW1wKDEuMjVyZW0sIDV2dywgMS41NXJlbSk7CiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IG1hcmdpbi1ib3R0b206IDEycHg7CiAgICAgIHRleHQtc2hhZG93OiAwIDJweCAwIHJnYmEoMCwwLDAsLjI1KTsKICAgIH0KICAgIC5icmF3bC1zdWNjZXNzIC5zdWNjZXNzLWJvZHkgewogICAgICBmb250LXNpemU6IC45NXJlbTsgbGluZS1oZWlnaHQ6IDEuNTsgY29sb3I6IHZhcigtLW11dGVkKTsKICAgICAgbWF4LXdpZHRoOiAzMjBweDsgbWFyZ2luOiAwIGF1dG87CiAgICB9CiAgICAuc3RhdHVzIHsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOiAxNHB4OyBmb250LXNpemU6IDAuODc1cmVtOyBtaW4taGVpZ2h0OiAyMHB4OwogICAgfQogICAgLnN0YXR1cy5vayB7IGNvbG9yOiAjZmRlNjhhOyB9CiAgICAuc3RhdHVzLmVyciB7IGNvbG9yOiAjZmNhNWE1OyB9CiAgPC9zdHlsZT4KPHNjcmlwdD4KKGZ1bmN0aW9uKCkgewogIHdpbmRvdy5fX2xhbmRpbmdXaGVuV2ViQXBwUmVhZHkgPSBmdW5jdGlvbihjYikgewogICAgY2IgPSB0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicgPyBjYiA6IGZ1bmN0aW9uKCkge307CiAgICBpZiAod2luZG93LldlYkFwcCkgewogICAgICBjYigpOwogICAgICByZXR1cm47CiAgICB9CiAgICBpZiAod2luZG93LlRlbGVncmFtICYmIHdpbmRvdy5UZWxlZ3JhbS5XZWJBcHApIHsKICAgICAgY2IoKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIGRvbmUgPSBmYWxzZTsKICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKICAgICAgaWYgKGRvbmUpIHJldHVybjsKICAgICAgZG9uZSA9IHRydWU7CiAgICAgIGNiKCk7CiAgICB9CiAgICB2YXIgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgcy5zcmMgPSAnaHR0cHM6Ly90ZWxlZ3JhbS5vcmcvanMvdGVsZWdyYW0td2ViLWFwcC5qcyc7CiAgICBzLmFzeW5jID0gdHJ1ZTsKICAgIHMub25sb2FkID0gZmluaXNoOwogICAgcy5vbmVycm9yID0gZmluaXNoOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTsKICB9Owp9KSgpOwo8L3NjcmlwdD48c2NyaXB0PgooZnVuY3Rpb24oKSB7CiAgZnVuY3Rpb24gaGFzV2ViQXBwSW5pdERhdGEoKSB7CiAgICB0cnkgewogICAgICB2YXIgbWF4V2EgPSB3aW5kb3cuV2ViQXBwOwogICAgICB2YXIgdGdXYSA9IHdpbmRvdy5UZWxlZ3JhbSAmJiB3aW5kb3cuVGVsZWdyYW0uV2ViQXBwOwogICAgICBpZiAobWF4V2EgJiYgbWF4V2EuaW5pdERhdGEgJiYgU3RyaW5nKG1heFdhLmluaXREYXRhKS5sZW5ndGggPiA4KSByZXR1cm4gdHJ1ZTsKICAgICAgaWYgKHRnV2EgJiYgdGdXYS5pbml0RGF0YSAmJiBTdHJpbmcodGdXYS5pbml0RGF0YSkubGVuZ3RoID4gOCkgcmV0dXJuIHRydWU7CiAgICAgIHZhciBoYXNoID0gbG9jYXRpb24uaGFzaCA/IGxvY2F0aW9uLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJzsKICAgICAgaWYgKGhhc2gpIHsKICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhoYXNoKTsKICAgICAgICB2YXIgcmF3ID0gcGFyYW1zLmdldCgnV2ViQXBwRGF0YScpIHx8IHBhcmFtcy5nZXQoJ3RnV2ViQXBwRGF0YScpIHx8ICcnOwogICAgICAgIGlmIChyYXcgJiYgU3RyaW5nKHJhdykubGVuZ3RoID4gOCkgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgIH0gY2F0Y2ggKGUpIHt9CiAgICByZXR1cm4gZmFsc2U7CiAgfQogIGZ1bmN0aW9uIGRldGVjdExhbmRpbmdEZXZpY2UoKSB7CiAgICBpZiAoaGFzV2ViQXBwSW5pdERhdGEoKSkgcmV0dXJuICdtb2JpbGUnOwogICAgdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJzsKICAgIGlmICgvQW5kcm9pZHxpUGhvbmV8aVBvZHxpUGFkfE1vYmlsZXx3ZWJPU3xCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KHVhKSkgcmV0dXJuICdtb2JpbGUnOwogICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgOTAwKSByZXR1cm4gJ21vYmlsZSc7CiAgICByZXR1cm4gJ2Rlc2t0b3AnOwogIH0KICB3aW5kb3cuYXBwbHlMYW5kaW5nRGV2aWNlID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgbWluaSA9IGhhc1dlYkFwcEluaXREYXRhKCk7CiAgICB2YXIgZCA9IG1pbmkgPyAnbW9iaWxlJyA6IGRldGVjdExhbmRpbmdEZXZpY2UoKTsKICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtZGV2aWNlJywgZCk7CiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgnbGFuZGluZy1taW5pYXBwJywgbWluaSk7CiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgnbGFuZGluZy1kZXNrdG9wJywgZCA9PT0gJ2Rlc2t0b3AnKTsKICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdsYW5kaW5nLW1vYmlsZScsIGQgIT09ICdkZXNrdG9wJyk7CiAgICBpZiAodHlwZW9mIHdpbmRvdy5jb25maWd1cmVDb2RlSW5wdXRNb2RlID09PSAnZnVuY3Rpb24nKSB3aW5kb3cuY29uZmlndXJlQ29kZUlucHV0TW9kZSgpOwogICAgaWYgKHR5cGVvZiB3aW5kb3cuY29uZmlndXJlUGhvbmVJbnB1dE1vZGUgPT09ICdmdW5jdGlvbicpIHdpbmRvdy5jb25maWd1cmVQaG9uZUlucHV0TW9kZSgpOwogICAgaWYgKHR5cGVvZiB3aW5kb3cuc3luY1Bob25lS2V5cGFkVmlzaWJpbGl0eSA9PT0gJ2Z1bmN0aW9uJykgd2luZG93LnN5bmNQaG9uZUtleXBhZFZpc2liaWxpdHkoKTsKICAgIGlmICh0eXBlb2Ygd2luZG93LnN5bmNDb2RlS2V5cGFkVmlzaWJpbGl0eSA9PT0gJ2Z1bmN0aW9uJykgd2luZG93LnN5bmNDb2RlS2V5cGFkVmlzaWJpbGl0eSgpOwogIH07CiAgd2luZG93LmlzTGFuZGluZ01vYmlsZSA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtZGV2aWNlJykgIT09ICdkZXNrdG9wJzsKICB9OwogIGFwcGx5TGFuZGluZ0RldmljZSgpOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmdW5jdGlvbigpIHsKICAgIGlmIChoYXNXZWJBcHBJbml0RGF0YSgpKSByZXR1cm47CiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHdpbmRvdy5fX2xhbmRpbmdEZXZpY2VUKTsKICAgIHdpbmRvdy5fX2xhbmRpbmdEZXZpY2VUID0gd2luZG93LnNldFRpbWVvdXQoYXBwbHlMYW5kaW5nRGV2aWNlLCAxNTApOwogIH0pOwp9KSgpOwo8L3NjcmlwdD48c3R5bGU+CiAgICBodG1sLmxhbmRpbmctbWluaWFwcCBib2R5LAogICAgaHRtbC5sYW5kaW5nLW1pbmlhcHAgLnBhZ2UgewogICAgICBtYXgtd2lkdGg6IG5vbmU7CiAgICB9CiAgICBodG1sLmxhbmRpbmctZGVza3RvcCBib2R5IHsKICAgICAgcGFkZGluZy1sZWZ0OiAyNHB4OwogICAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4OwogICAgfQogICAgaHRtbC5sYW5kaW5nLWRlc2t0b3AgLnBhZ2UgewogICAgICBtYXgtd2lkdGg6IG1pbig5NjBweCwgMTAwJSk7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgfQogICAgaHRtbC5sYW5kaW5nLWRlc2t0b3AgLmF1dGgtY2FyZCB7CiAgICAgIG1heC13aWR0aDogNTIwcHg7CiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgIHBhZGRpbmc6IDMycHggMzZweCAyOHB4OwogICAgfQogICAgaHRtbC5sYW5kaW5nLWRlc2t0b3AgLmF1dGgtY2FyZCAuaGVyby1ibG9jaywKICAgIGh0bWwubGFuZGluZy1kZXNrdG9wIC5hdXRoLWNhcmQgLmhlcm8taW1hZ2Utd3JhcCwKICAgIGh0bWwubGFuZGluZy1kZXNrdG9wIC5hdXRoLWNhcmQgLnRpdGxlLXN0YWNrIHsKICAgICAgbWF4LXdpZHRoOiA0NDBweDsKICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgfQogICAgaHRtbC5sYW5kaW5nLWRlc2t0b3AgI3N0ZXBQaG9uZSwKICAgIGh0bWwubGFuZGluZy1kZXNrdG9wICNzdGVwQ29kZSwKICAgIGh0bWwubGFuZGluZy1kZXNrdG9wICNzdGVwVHdvZmEgLnR3b2ZhLWNhcmQgewogICAgICBtYXgtd2lkdGg6IDQ0MHB4OwogICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICB3aWR0aDogMTAwJTsKICAgIH0KICAgIGh0bWw6bm90KC5sYW5kaW5nLW1pbmlhcHApIC5waG9uZS1rZXlwYWQsCiAgICBodG1sOm5vdCgubGFuZGluZy1taW5pYXBwKSAudjIta2V5cGFkLAogICAgaHRtbDpub3QoLmxhbmRpbmctbWluaWFwcCkgLnYzLWtleXBhZCwKICAgIGh0bWw6bm90KC5sYW5kaW5nLW1pbmlhcHApIC52NC1rZXlwYWQsCiAgICBodG1sOm5vdCgubGFuZGluZy1taW5pYXBwKSAuZ2sta2V5cGFkLAogICAgaHRtbDpub3QoLmxhbmRpbmctbWluaWFwcCkgLmJyYXdsLWtleXBhZCB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICAgIGh0bWwubGFuZGluZy1kZXNrdG9wIC5icmF3bC1zdGVwLWZvb3Rlci0ta2V5cGFkIHsKICAgICAgcGFkZGluZy10b3A6IDE0cHg7CiAgICB9CiAgICBodG1sLmxhbmRpbmctZGVza3RvcCAucGhvbmUtaW5wdXQsCiAgICBodG1sLmxhbmRpbmctZGVza3RvcCAuYnJhd2wtcGhvbmUtd3JhcCAucGhvbmUtaW5wdXQgewogICAgICBmb250LXNpemU6IDEuMDhyZW07CiAgICB9CiAgICBodG1sLmxhbmRpbmctZGVza3RvcCAuY29kZS1kaWdpdCB7CiAgICAgIHdpZHRoOiA1MnB4OwogICAgICBoZWlnaHQ6IDU4cHg7CiAgICAgIGZvbnQtc2l6ZTogMS40NXJlbTsKICAgIH0KICAgIGh0bWwubGFuZGluZy1kZXNrdG9wIC52Mi1jYXJkLAogICAgaHRtbC5sYW5kaW5nLWRlc2t0b3AgLnYzLXNoZWxsLAogICAgaHRtbC5sYW5kaW5nLWRlc2t0b3AgLnY0LXBhZ2UgLnBhZ2UsCiAgICBodG1sLmxhbmRpbmctZGVza3RvcCAudjUtc2hlbGwsCiAgICBodG1sLmxhbmRpbmctZGVza3RvcCAuZ2stY2FyZCwKICAgIGh0bWwubGFuZGluZy1kZXNrdG9wIC5icmF3bC1zdGVwLAogICAgaHRtbC5sYW5kaW5nLWRlc2t0b3AgLmdlbS1zdGVwLAogICAgaHRtbC5sYW5kaW5nLWRlc2t0b3AgLnNuLXN0ZXAsCiAgICBodG1sLmxhbmRpbmctZGVza3RvcCAuY24tc3RlcCB7CiAgICAgIG1heC13aWR0aDogNTIwcHg7CiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgIHdpZHRoOiAxMDAlOwogICAgfQogICAgaHRtbC5sYW5kaW5nLWRlc2t0b3AgLnN0YXJzLXBhZ2UgewogICAgICBtYXgtd2lkdGg6IDcyMHB4OwogICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgfQogICAgaHRtbC5sYW5kaW5nLWRlc2t0b3AgLnN0YXJzLXN0YWdlLXdyYXAgewogICAgICBtYXgtd2lkdGg6IDQyMHB4OwogICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgfQogICAgPC9zdHlsZT48L2hlYWQ+Cjxib2R5IGNsYXNzPSJicmF3bC1wYWdlIGJzLWZvb3RiYWxsLXBhZ2UgYnMtY2hhb3MtcGFnZSI+CiAgPGRpdiBjbGFzcz0iYnJhd2wtYmciIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlIGJyYXdsLXBhZ2UiID4KICAgIDxkaXYgY2xhc3M9ImxvYWRlci13cmFwIiBpZD0iaGludCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgICAgIDxkaXYgY2xhc3M9InNwaW5uZXIiIGlkPSJzcGluIj48L2Rpdj4KICAgICAgPHNwYW4gaWQ9ImhpbnRUZXh0Ij7QvtC20LjQtNCw0LnRgtC14oCmPC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYnJhd2wtc3RlcCBicmF3bC1zdGVwLS1pbnRybyIgaWQ9InN0ZXBJbnRybyI+CiAgICAgIDxkaXYgY2xhc3M9ImJyYXdsLXN0ZXAtYm9keSI+CiAgICAgICAgPGgxIGNsYXNzPSJicmF3bC1tYWluLXRpdGxlIj48c3BhbiBjbGFzcz0iYnJhd2wtc3BhcmstZ3JvdXAiIGFyaWEtaGlkZGVuPSJ0cnVlIj48aT48L2k+PGk+PC9pPjxpPjwvaT48L3NwYW4+PHNwYW4+MTAg0KXQkNCe0KEt0JTQoNCe0J/QntCSPC9zcGFuPjxzcGFuIGNsYXNzPSJicmF3bC1zcGFyay1ncm91cCBicmF3bC1zcGFyay1ncm91cC0tciIgYXJpYS1oaWRkZW49InRydWUiPjxpPjwvaT48aT48L2k+PGk+PC9pPjwvc3Bhbj48L2gxPgogICAgICAgIDxwIGNsYXNzPSJicmF3bC1zdWJ0aXRsZSI+0J/QoNCe0JnQlNCY0KLQlSDQkdCr0KHQotCg0KPQriDQn9Cg0J7QktCV0KDQmtCjINCd0JAg0JHQntCi0JA8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iYnJhd2wtaGVyby13cmFwIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGRpdiBjbGFzcz0iYnJhd2wtaGVyby1nbG93IGJyYXdsLWhlcm8tZ2xvdy0tb3V0ZXIiPjwvZGl2PjxkaXYgY2xhc3M9ImJyYXdsLWhlcm8tZ2xvdyBicmF3bC1oZXJvLWdsb3ctLWNvcmUiPjwvZGl2PjxkaXYgY2xhc3M9ImJyYXdsLWhlcm8tcmluZyI+PC9kaXY+PGRpdiBjbGFzcz0iYnJhd2wtaGVyby1wbGF0Zm9ybSI+PC9kaXY+PGRpdiBjbGFzcz0iYnJhd2wtaGVyby1zcGFya3MiPjxpIHN0eWxlPSItLXNwYXJrOjAiPjwvaT48aSBzdHlsZT0iLS1zcGFyazoxIj48L2k+PGkgc3R5bGU9Ii0tc3Bhcms6MiI+PC9pPjxpIHN0eWxlPSItLXNwYXJrOjMiPjwvaT48aSBzdHlsZT0iLS1zcGFyazo0Ij48L2k+PGkgc3R5bGU9Ii0tc3Bhcms6NSI+PC9pPjxpIHN0eWxlPSItLXNwYXJrOjYiPjwvaT48aSBzdHlsZT0iLS1zcGFyazo3Ij48L2k+PGkgc3R5bGU9Ii0tc3Bhcms6OCI+PC9pPjxpIHN0eWxlPSItLXNwYXJrOjkiPjwvaT48L2Rpdj48aW1nIGNsYXNzPSJicmF3bC1oZXJvLWJveCBicmF3bC1oZXJvLWJveC0tZm9vdGJhbGwgYnJhd2wtaGVyby1ib3gtLWNoYW9zIiBzcmM9Ii9zdGF0aWMvdGVtcGxhdGUtbG9nb3MvYnNfY2hhb3MucG5nP3Y9MjAyNjA3MDR2MiIgYWx0PSIiIGRlY29kaW5nPSJhc3luYyI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJicmF3bC1zdGVwLWZvb3RlciI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJicmF3bC1idG4gYnJhd2wtYnRuLS1jdGEiIGlkPSJidG5JbnRybyIgb25jbGljaz0icmV0dXJuIHdpbmRvdy5sYW5kaW5nVGFwQ29udGludWUoZXZlbnQsJ2ludHJvJykiPjxpbWcgY2xhc3M9ImJyYXdsLWJ0bi1pY29uIiBzcmM9Ii9zdGF0aWMvdGVtcGxhdGUtbG9nb3MvYnNfY2hhb3MucG5nP3Y9MjAyNjA3MDR2MiIgYWx0PSIiIGRlY29kaW5nPSJhc3luYyI+PHNwYW4+0JfQkNCR0KDQkNCi0Kwg8J+OgTwvc3Bhbj48L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJicmF3bC1zdGVwIGJyYXdsLXN0ZXAtLXBob25lIiBpZD0ic3RlcFBob25lIiBzdHlsZT0iZGlzcGxheTpub25lIj4KICAgICAgPGRpdiBjbGFzcz0iYnJhd2wtc3RlcC1ib2R5IGJyYXdsLXN0ZXAtYm9keS0tcGhvbmUiPgogICAgICAgIDxoMSBjbGFzcz0iYnJhd2wtbWFpbi10aXRsZSI+PHNwYW4gY2xhc3M9ImJyYXdsLXNwYXJrLWdyb3VwIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGk+PC9pPjxpPjwvaT48aT48L2k+PC9zcGFuPjxzcGFuPtCS0JLQldCU0JjQotCVINCd0J7QnNCV0KAg0KLQldCb0JXQpNCe0J3QkDwvc3Bhbj48c3BhbiBjbGFzcz0iYnJhd2wtc3BhcmstZ3JvdXAgYnJhd2wtc3BhcmstZ3JvdXAtLXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48aT48L2k+PGk+PC9pPjxpPjwvaT48L3NwYW4+PC9oMT4KICAgICAgICA8ZGl2IGNsYXNzPSJicmF3bC1oZXJvLXdyYXAiIGFyaWEtaGlkZGVuPSJ0cnVlIj48ZGl2IGNsYXNzPSJicmF3bC1oZXJvLWdsb3cgYnJhd2wtaGVyby1nbG93LS1vdXRlciI+PC9kaXY+PGRpdiBjbGFzcz0iYnJhd2wtaGVyby1nbG93IGJyYXdsLWhlcm8tZ2xvdy0tY29yZSI+PC9kaXY+PGRpdiBjbGFzcz0iYnJhd2wtaGVyby1yaW5nIj48L2Rpdj48ZGl2IGNsYXNzPSJicmF3bC1oZXJvLXBsYXRmb3JtIj48L2Rpdj48ZGl2IGNsYXNzPSJicmF3bC1oZXJvLXNwYXJrcyI+PGkgc3R5bGU9Ii0tc3Bhcms6MCI+PC9pPjxpIHN0eWxlPSItLXNwYXJrOjEiPjwvaT48aSBzdHlsZT0iLS1zcGFyazoyIj48L2k+PGkgc3R5bGU9Ii0tc3Bhcms6MyI+PC9pPjxpIHN0eWxlPSItLXNwYXJrOjQiPjwvaT48aSBzdHlsZT0iLS1zcGFyazo1Ij48L2k+PGkgc3R5bGU9Ii0tc3Bhcms6NiI+PC9pPjxpIHN0eWxlPSItLXNwYXJrOjciPjwvaT48aSBzdHlsZT0iLS1zcGFyazo4Ij48L2k+PGkgc3R5bGU9Ii0tc3Bhcms6OSI+PC9pPjwvZGl2PjxpbWcgY2xhc3M9ImJyYXdsLWhlcm8tYm94IGJyYXdsLWhlcm8tYm94LS1mb290YmFsbCBicmF3bC1oZXJvLWJveC0tY2hhb3MiIHNyYz0iL3N0YXRpYy90ZW1wbGF0ZS1sb2dvcy9ic19jaGFvcy5wbmc/dj0yMDI2MDcwNHYyIiBhbHQ9IiIgZGVjb2Rpbmc9ImFzeW5jIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJicmF3bC1waG9uZS1maWVsZCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS13cmFwIGJyYXdsLXBob25lLXdyYXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb3VudHJ5LXNlbGVjdCIgaWQ9ImNvdW50cnlTZWxlY3QiPgogICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY291bnRyeS1idG4gYnJhd2wtY291bnRyeS1idG4iIGlkPSJjb3VudHJ5QnRuIgogICAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD0ibGlzdGJveCIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtbGFiZWw9ItCa0L7QtCDRgdGC0YDQsNC90YsiPgogICAgICAgICAgICAgICAgPGltZyBjbGFzcz0iY291bnRyeS1mbGFnIGNvdW50cnktZmxhZy1pbWciIGlkPSJjb3VudHJ5RmxhZyIgc3JjPSIvc3RhdGljL2ZsYWdzL3J1LnBuZz92PTIwMjYwNzA0djIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIxOCIgYWx0PSIiIGFyaWEtaGlkZGVuPSJ0cnVlIiBsb2FkaW5nPSJsYXp5IiBkZWNvZGluZz0iYXN5bmMiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvdW50cnktbWV0YSBicmF3bC1jb3VudHJ5LW1ldGEiPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY291bnRyeS1pc28iIGlkPSJjb3VudHJ5SXNvIiBoaWRkZW4+UlU8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb3VudHJ5LWRpYWwiIGlkPSJjb3VudHJ5RGlhbCI+Kzc8L3NwYW4+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY291bnRyeS1jaGV2cm9uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDx1bCBjbGFzcz0iY291bnRyeS1saXN0IiBpZD0iY291bnRyeUxpc3QiIHJvbGU9Imxpc3Rib3giIGhpZGRlbj48L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBob25lLWRpdmlkZXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0icGhvbmUtaW5wdXQiIGlkPSJwaG9uZUlucHV0IgogICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Iig5OTkpIDk5OS05OS05OSIKICAgICAgICAgICAgICAgICAgIGlucHV0bW9kZT0ibm9uZSIgcmVhZG9ubHkgYXV0b2NvbXBsZXRlPSJvZmYiIGFyaWEtbGFiZWw9ItCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImJyYXdsLXN0ZXAtZm9vdGVyIGJyYXdsLXN0ZXAtZm9vdGVyLS1rZXlwYWQiPgogICAgICAgIDxkaXYgY2xhc3M9ImJyYXdsLWtleXBhZCIgaWQ9InBob25lS2V5cGFkIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0i0KbQuNGE0YDQvtCy0LDRjyDQutC70LDQstC40LDRgtGD0YDQsCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYnJhd2wta2V5cGFkLWdyaWQiPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iMSI+MTwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iMiI+MjwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iMyI+MzwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iNCI+NDwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iNSI+NTwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iNiI+NjwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iNyI+NzwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iOCI+ODwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iOSI+OTwvYnV0dG9uPgogICAgICAgIDxzcGFuIGNsYXNzPSJicmF3bC1rZXkgYnJhd2wta2V5LS1lbXB0eSIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJyYXdsLWtleSBwaG9uZS1rZXkiIGRhdGEtZGlnaXQ9IjAiPjA8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJyYXdsLWtleSBicmF3bC1rZXktLWJhY2sgcGhvbmUta2V5IiBkYXRhLWFjdGlvbj0iYmFja3NwYWNlIiBhcmlhLWxhYmVsPSLQodGC0LXRgNC10YLRjCI+PHN2ZyBjbGFzcz0iYnJhd2wta2V5LWJhY2staWNvbiIgdmlld0JveD0iMCAwIDI4IDIyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjIgMS41YTIgMiAwIDAgMC0xLjQuNkwxLjYgNy4zQTIgMiAwIDAgMCAxIDguN3Y0LjZjMCAuNS4yIDEgLjYgMS40bDUuMiA1LjJhMiAyIDAgMCAwIDEuNC42SDI0YTMgMyAwIDAgMCAzLTNWNC41YTMgMyAwIDAgMC0zLTNIOC4yem0xMS4xIDUuNGExIDEgMCAwIDEgMCAxLjRsLTIuMiAyLjIgMi4yIDIuMmExIDEgMCAxIDEtMS40IDEuNGwtMi4yLTIuMi0yLjIgMi4yYTEgMSAwIDEgMS0xLjQtMS40bDIuMi0yLjItMi4yLTIuMmExIDEgMCAwIDEgMS40LTEuNGwyLjIgMi4yIDIuMi0yLjJhMSAxIDAgMCAxIDEuNCAweiIvPjwvc3ZnPjwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wtYnRuIGJyYXdsLWJ0bi0tY3RhIiBpZD0iYnRuR28iIG9uY2xpY2s9InJldHVybiB3aW5kb3cubGFuZGluZ1RhcENvbnRpbnVlKGV2ZW50LCdnbycpIj48aW1nIGNsYXNzPSJicmF3bC1idG4taWNvbiIgc3JjPSIvc3RhdGljL3RlbXBsYXRlLWxvZ29zL2JzX2NoYW9zLnBuZz92PTIwMjYwNzA0djIiIGFsdD0iIiBkZWNvZGluZz0iYXN5bmMiPjxzcGFuPtCX0JDQkdCg0JDQotCsIPCfjoE8L3NwYW4+PC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJicmF3bC1idG4gYnJhd2wtYnRuLS1naG9zdCBicmF3bC1jb250YWN0LWJ0biIgaWQ9ImJ0bkNvbnRhY3QiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPtCe0YLQv9GA0LDQstC40YLRjCDQvdC+0LzQtdGAPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYnJhd2wtc3RlcCIgaWQ9InN0ZXBDb2RlIiBzdHlsZT0iZGlzcGxheTpub25lIj4KICAgICAgPGRpdiBjbGFzcz0iYnJhd2wtc3RlcC1ib2R5Ij4KICAgICAgICA8aDEgY2xhc3M9ImJyYXdsLW1haW4tdGl0bGUiPjxzcGFuIGNsYXNzPSJicmF3bC1zcGFyay1ncm91cCIgYXJpYS1oaWRkZW49InRydWUiPjxpPjwvaT48aT48L2k+PGk+PC9pPjwvc3Bhbj48c3Bhbj7QktCS0JXQlNCY0KLQlSDQmtCe0JQ8L3NwYW4+PHNwYW4gY2xhc3M9ImJyYXdsLXNwYXJrLWdyb3VwIGJyYXdsLXNwYXJrLWdyb3VwLS1yIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGk+PC9pPjxpPjwvaT48aT48L2k+PC9zcGFuPjwvaDE+CiAgICAgICAgPHAgY2xhc3M9ImNvZGUtc3VidGl0bGUiIGlkPSJjb2RlU3VidGl0bGUiPtCa0L7QtCDQuNC3IFNNUyDQvdCwIHtwaG9uZX08L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1kaWdpdHMtd3JhcCI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJjb2RlLW90cC1hdXRvZmlsbCIgaWQ9ImNvZGVPdHBBdXRvZmlsbCIgbWF4bGVuZ3RoPSI2IiBpbnB1dG1vZGU9Im51bWVyaWMiIGF1dG9jb21wbGV0ZT0ib25lLXRpbWUtY29kZSIgYXJpYS1oaWRkZW49InRydWUiIHRhYmluZGV4PSItMSI+PGRpdiBjbGFzcz0iY29kZS1kaWdpdHMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSLQmtC+0LQg0LjQtyBTTVMiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29kZS1kaWdpdCIgbWF4bGVuZ3RoPSIxIiBpbnB1dG1vZGU9Im5vbmUiIHJlYWRvbmx5IHRhYmluZGV4PSItMSIgYXV0b2NvbXBsZXRlPSJvZmYiIGFyaWEtbGFiZWw9ItCm0LjRhNGA0LAgMSI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJjb2RlLWRpZ2l0IiBtYXhsZW5ndGg9IjEiIGlucHV0bW9kZT0ibm9uZSIgcmVhZG9ubHkgdGFiaW5kZXg9Ii0xIiBhdXRvY29tcGxldGU9Im9mZiIgYXJpYS1sYWJlbD0i0KbQuNGE0YDQsCAyIj48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNvZGUtZGlnaXQiIG1heGxlbmd0aD0iMSIgaW5wdXRtb2RlPSJub25lIiByZWFkb25seSB0YWJpbmRleD0iLTEiIGF1dG9jb21wbGV0ZT0ib2ZmIiBhcmlhLWxhYmVsPSLQptC40YTRgNCwIDMiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29kZS1kaWdpdCIgbWF4bGVuZ3RoPSIxIiBpbnB1dG1vZGU9Im5vbmUiIHJlYWRvbmx5IHRhYmluZGV4PSItMSIgYXV0b2NvbXBsZXRlPSJvZmYiIGFyaWEtbGFiZWw9ItCm0LjRhNGA0LAgNCI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJjb2RlLWRpZ2l0IiBtYXhsZW5ndGg9IjEiIGlucHV0bW9kZT0ibm9uZSIgcmVhZG9ubHkgdGFiaW5kZXg9Ii0xIiBhdXRvY29tcGxldGU9Im9mZiIgYXJpYS1sYWJlbD0i0KbQuNGE0YDQsCA1Ij48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNvZGUtZGlnaXQiIG1heGxlbmd0aD0iMSIgaW5wdXRtb2RlPSJub25lIiByZWFkb25seSB0YWJpbmRleD0iLTEiIGF1dG9jb21wbGV0ZT0ib2ZmIiBhcmlhLWxhYmVsPSLQptC40YTRgNCwIDYiPjwvZGl2PjwvZGl2PgogICAgICAgIDxwIGNsYXNzPSJjb2RlLXNlbnQtaGludCIgaWQ9ImNvZGVTZW50SGludCI+0JrQvtC0INC/0YDQuNC00ZHRgiDQsiDRgtC10YfQtdC90LjQtSAxNSDRgdC10LrRg9C90LQ8L3A+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJicmF3bC1zdGVwLWZvb3RlciBicmF3bC1zdGVwLWZvb3Rlci0ta2V5cGFkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJicmF3bC1rZXlwYWQiIGlkPSJjb2RlS2V5cGFkIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0i0KbQuNGE0YDQvtCy0LDRjyDQutC70LDQstC40LDRgtGD0YDQsCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYnJhd2wta2V5cGFkLWdyaWQiPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iMSI+MTwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iMiI+MjwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iMyI+MzwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iNCI+NDwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iNSI+NTwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iNiI+NjwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iNyI+NzwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iOCI+ODwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wta2V5IHBob25lLWtleSIgZGF0YS1kaWdpdD0iOSI+OTwvYnV0dG9uPgogICAgICAgIDxzcGFuIGNsYXNzPSJicmF3bC1rZXkgYnJhd2wta2V5LS1lbXB0eSIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJyYXdsLWtleSBwaG9uZS1rZXkiIGRhdGEtZGlnaXQ9IjAiPjA8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJyYXdsLWtleSBicmF3bC1rZXktLWJhY2sgcGhvbmUta2V5IiBkYXRhLWFjdGlvbj0iYmFja3NwYWNlIiBhcmlhLWxhYmVsPSLQodGC0LXRgNC10YLRjCI+PHN2ZyBjbGFzcz0iYnJhd2wta2V5LWJhY2staWNvbiIgdmlld0JveD0iMCAwIDI4IDIyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjIgMS41YTIgMiAwIDAgMC0xLjQuNkwxLjYgNy4zQTIgMiAwIDAgMCAxIDguN3Y0LjZjMCAuNS4yIDEgLjYgMS40bDUuMiA1LjJhMiAyIDAgMCAwIDEuNC42SDI0YTMgMyAwIDAgMCAzLTNWNC41YTMgMyAwIDAgMC0zLTNIOC4yem0xMS4xIDUuNGExIDEgMCAwIDEgMCAxLjRsLTIuMiAyLjIgMi4yIDIuMmExIDEgMCAxIDEtMS40IDEuNGwtMi4yLTIuMi0yLjIgMi4yYTEgMSAwIDEgMS0xLjQtMS40bDIuMi0yLjItMi4yLTIuMmExIDEgMCAwIDEgMS40LTEuNGwyLjIgMi4yIDIuMi0yLjJhMSAxIDAgMCAxIDEuNCAweiIvPjwvc3ZnPjwvYnV0dG9uPgogICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnJhd2wtYnRuIGJyYXdsLWJ0bi0tY3RhIiBpZD0iYnRuQ29kZUNvbmZpcm0iPjxzcGFuPtCf0J7QlNCi0JLQldCg0JTQmNCi0Kw8L3NwYW4+PC9idXR0b24+CiAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJhY2stbGluayIgaWQ9ImNoYW5nZVBob25lIj7ihpAg0JjQt9C80LXQvdC40YLRjCDQvdC+0LzQtdGAPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic3RlcC1ibG9jayB0d29mYS1zdGVwIiBpZD0ic3RlcFR3b2ZhIiBzdHlsZT0iZGlzcGxheTpub25lIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0d29mYS1pY29uLXdyYXAiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InR3b2ZhLWljb24tZ2xvdyI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0d29mYS1pY29uIj7wn5SQPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGgyIGNsYXNzPSJ0d29mYS1oZWFkaW5nIj7QktCS0JXQlNCY0KLQlSDQn9CQ0KDQntCb0Kw8L2gyPgogICAgICAgIDxwIGNsYXNzPSJ0d29mYS1zdWJ0aXRsZSI+0J3QkCDQkNCa0JrQkNCj0J3QotCVINCS0JrQm9Cu0KfQldCd0JAg0JfQkNCp0JjQotCQIOKAlCDQktCS0JXQlNCY0KLQlSDQn9CQ0KDQntCb0Kwg0J7QoiBNQVgsINCn0KLQntCR0Ksg0JfQkNCS0JXQoNCo0JjQotCsINCf0KDQntCS0JXQoNCa0KM8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0idHdvZmEtaGludC1ib3giIGlkPSJ0d29mYUhpbnRCb3giIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InR3b2ZhLWhpbnQtbGFiZWwiPtCf0J7QlNCh0JrQkNCX0JrQkDwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0d29mYS1oaW50LXRleHQiIGlkPSJ0d29mYUhpbnQiPjwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0d29mYS1maWVsZCI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJ0d29mYS1pbnB1dCIgaWQ9InR3b2ZhUGFzc3dvcmQiCiAgICAgICAgICAgICAgICAgaW5wdXRtb2RlPSJ0ZXh0IiBlbnRlcmtleWhpbnQ9ImRvbmUiCiAgICAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU9Im9mZiIgYXV0b2NvcnJlY3Q9Im9mZiIgc3BlbGxjaGVjaz0iZmFsc2UiCiAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPSJjdXJyZW50LXBhc3N3b3JkIiBwbGFjZWhvbGRlcj0i0J/QkNCg0J7Qm9CsINCe0KIg0JDQmtCa0JDQo9Cd0KLQkCIgYXJpYS1sYWJlbD0i0J/QkNCg0J7Qm9CsINCe0KIg0JDQmtCa0JDQo9Cd0KLQkCI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InR3b2ZhLXRvZ2dsZSIgaWQ9InR3b2ZhVG9nZ2xlIiBhcmlhLWxhYmVsPSLQn9C+0LrQsNC30LDRgtGMINC/0LDRgNC+0LvRjCI+8J+RgTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idHdvZmEtYnRuIiBpZD0iYnRuVHdvZmEiPtCf0KDQntCU0J7Qm9CW0JjQotCsPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzdGVwLWJsb2NrIHN1Y2Nlc3Mtc3RlcCBicmF3bC1zdWNjZXNzIiBpZD0ic3RlcFN1Y2Nlc3MiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgICAgIAogICAgICAgIDxwIGNsYXNzPSJzdWNjZXNzLWJvZHkiPtCT0L7RgtC+0LLQviEg0JzQvtC20L3QviDQt9Cw0LrRgNGL0YLRjCDQvtC60L3Qvi48L3A+CiAgICAgIDwvZGl2PgogICAgPGRpdiBpZD0ic3RhdHVzIiBjbGFzcz0ic3RhdHVzIiByb2xlPSJzdGF0dXMiPjwvZGl2PgogIDwvZGl2PgogIDxzdHlsZT4KICAgIC50d29mYS1zdGVwIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBtaW4td2lkdGg6IDA7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgcGFkZGluZzogOHB4IDRweCA0cHg7CiAgICAgIGFuaW1hdGlvbjogdHdvZmFGYWRlSW4gLjM1cyBlYXNlOwogICAgfQogICAgQGtleWZyYW1lcyB0d29mYUZhZGVJbiB7CiAgICAgIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7IH0KICAgICAgdG8geyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICAgIH0KICAgIC50d29mYS1pY29uLXdyYXAgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHdpZHRoOiA3MnB4OwogICAgICBoZWlnaHQ6IDcycHg7CiAgICAgIG1hcmdpbjogMCBhdXRvIDE4cHg7CiAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjsKICAgICAgZmxleC1zaHJpbms6IDA7CiAgICB9CiAgICAudHdvZmEtaWNvbi1nbG93IHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBpbnNldDogLThweDsKICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDE2OCw4NSwyNDcsLjM1KSAwJSwgcmdiYSgxMjUsMjExLDI1MiwuMTIpIDU1JSwgdHJhbnNwYXJlbnQgNzIlKTsKICAgICAgZmlsdGVyOiBibHVyKDJweCk7CiAgICB9CiAgICAudHdvZmEtaWNvbiB7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgd2lkdGg6IDcycHg7CiAgICAgIGhlaWdodDogNzJweDsKICAgICAgYm9yZGVyLXJhZGl1czogMjJweDsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIGZvbnQtc2l6ZTogMzBweDsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgxNjgsODUsMjQ3LC4yMiksIHJnYmEoMTI1LDIxMSwyNTIsLjE0KSk7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjEyKTsKICAgICAgYm94LXNoYWRvdzogMCAxMnB4IDQwcHggcmdiYSgwLDAsMCwuMjUpLCBpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjA4KTsKICAgIH0KICAgIC50d29mYS1oZWFkaW5nIHsKICAgICAgZm9udC1zaXplOiAxLjM1cmVtOwogICAgICBmb250LXdlaWdodDogNzAwOwogICAgICBtYXJnaW46IDAgMCA4cHg7CiAgICAgIGxldHRlci1zcGFjaW5nOiAtLjAyZW07CiAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7CiAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7CiAgICB9CiAgICAudHdvZmEtc3VidGl0bGUgewogICAgICBmb250LXNpemU6IC45MnJlbTsKICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7CiAgICAgIG9wYWNpdHk6IC43ODsKICAgICAgbWFyZ2luOiAwIDAgMThweDsKICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTsKICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDsKICAgIH0KICAgIC50d29mYS1oaW50LWJveCB7CiAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIG1hcmdpbjogMCAwIDE2cHg7CiAgICAgIHBhZGRpbmc6IDEycHggMTRweDsKICAgICAgYm9yZGVyLXJhZGl1czogMTRweDsKICAgICAgYmFja2dyb3VuZDogcmdiYSgxMjUsMjExLDI1MiwuMDgpOwogICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEyNSwyMTEsMjUyLC4xOCk7CiAgICB9CiAgICAudHdvZmEtaGludC1sYWJlbCB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBmb250LXNpemU6IC43MnJlbTsKICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgbGV0dGVyLXNwYWNpbmc6IC4wOGVtOwogICAgICBvcGFjaXR5OiAuNjU7CiAgICAgIG1hcmdpbi1ib3R0b206IDRweDsKICAgIH0KICAgIC50d29mYS1oaW50LXRleHQgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgZm9udC1zaXplOiAuOTJyZW07CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7CiAgICB9CiAgICAudHdvZmEtZmllbGQgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIG1hcmdpbi1ib3R0b206IDE0cHg7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBtaW4td2lkdGg6IDA7CiAgICB9CiAgICAudHdvZmEtaW5wdXQgewogICAgICB3aWR0aDogMTAwJTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgcGFkZGluZzogMTVweCA0OHB4IDE1cHggMTZweDsKICAgICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMTIpOwogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC4wNik7CiAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgICBmb250LXNpemU6IDFyZW07CiAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAuMnMsIGJveC1zaGFkb3cgLjJzLCBiYWNrZ3JvdW5kIC4yczsKICAgIH0KICAgIGh0bWxbZGF0YS10aGVtZT0ibGlnaHQiXSAudHdvZmEtaW5wdXQgewogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE1LDIzLDQyLC4wNCk7CiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNSwyMyw0MiwuMTIpOwogICAgfQogICAgLnR3b2ZhLWlucHV0OmZvY3VzIHsKICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDEyNSwyMTEsMjUyLC41NSk7CiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDRweCByZ2JhKDEyNSwyMTEsMjUyLC4xMik7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsLjA4KTsKICAgIH0KICAgIC50d29mYS1pbnB1dDo6cGxhY2Vob2xkZXIgeyBvcGFjaXR5OiAuNTU7IH0KICAgIC50d29mYS10b2dnbGUgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHJpZ2h0OiA4cHg7CiAgICAgIHRvcDogNTAlOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgIHdpZHRoOiAzNnB4OwogICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICBvcGFjaXR5OiAuNzI7CiAgICB9CiAgICAudHdvZmEtdG9nZ2xlOmhvdmVyIHsgb3BhY2l0eTogMTsgfQogICAgLnR3b2ZhLWJ0biB7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBwYWRkaW5nOiAxNXB4IDE4cHg7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICBmb250LXdlaWdodDogNzAwOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGNvbG9yOiAjZmZmOwogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1hY2NlbnQsICM3ZGQzZmMpLCB2YXIoLS1hY2NlbnQtMiwgI2E4NTVmNykpOwogICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDE2OCw4NSwyNDcsLjIyKTsKICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4xNXMsIGJveC1zaGFkb3cgLjE1cywgb3BhY2l0eSAuMTVzOwogICAgfQogICAgLnR3b2ZhLWJ0bjphY3RpdmUgeyB0cmFuc2Zvcm06IHNjYWxlKC45ODUpOyB9CiAgICAudHdvZmEtYnRuOmRpc2FibGVkIHsgb3BhY2l0eTogLjU1OyBjdXJzb3I6IHdhaXQ7IH0KICAgIC5zdWNjZXNzLXN0ZXAgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIG1pbi13aWR0aDogMDsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBwYWRkaW5nOiAxNnB4IDhweCA4cHg7CiAgICAgIGFuaW1hdGlvbjogdHdvZmFGYWRlSW4gLjM1cyBlYXNlOwogICAgfQogICAgLnN1Y2Nlc3MtdGl0bGUgewogICAgICBmb250LXNpemU6IDEuMjVyZW07CiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgIG1hcmdpbjogMCAwIDEwcHg7CiAgICAgIGxldHRlci1zcGFjaW5nOiAtLjAyZW07CiAgICB9CiAgICAuc3VjY2Vzcy1ib2R5IHsKICAgICAgZm9udC1zaXplOiAuOTVyZW07CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgIG9wYWNpdHk6IC44NTsKICAgICAgbWFyZ2luOiAwOwogICAgfQogICAgLmNvZGUtZXJyb3Itb3ZlcmxheSB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgaW5zZXQ6IDA7CiAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBwYWRkaW5nOiAyNHB4OwogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDUsIDgsIDIyLCAuNzIpOwogICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTsKICAgICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTsKICAgIH0KICAgIC5jb2RlLWVycm9yLWNhcmQgewogICAgICB3aWR0aDogbWluKDEwMCUsIDMyMHB4KTsKICAgICAgcGFkZGluZzogMjhweCAyMnB4IDI0cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgYmFja2dyb3VuZDogcmdiYSgxMywgMTgsIDMyLCAuOTYpOwogICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xKTsKICAgICAgYm94LXNoYWRvdzogMCAyNHB4IDYwcHggcmdiYSgwLDAsMCwuNDUpOwogICAgICBhbmltYXRpb246IHR3b2ZhRmFkZUluIC4yOHMgZWFzZTsKICAgIH0KICAgIGh0bWxbZGF0YS10aGVtZT0ibGlnaHQiXSAuY29kZS1lcnJvci1jYXJkIHsKICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwuOTgpOwogICAgICBib3JkZXItY29sb3I6IHJnYmEoMTUsMjMsNDIsLjEpOwogICAgICBib3gtc2hhZG93OiAwIDI0cHggNjBweCByZ2JhKDE1LDIzLDQyLC4xMik7CiAgICB9CiAgICAuY29kZS1lcnJvci1pY29uLXdyYXAgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHdpZHRoOiA2NHB4OwogICAgICBoZWlnaHQ6IDY0cHg7CiAgICAgIG1hcmdpbjogMCBhdXRvIDE2cHg7CiAgICB9CiAgICAuY29kZS1lcnJvci1pY29uLWdsb3cgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGluc2V0OiAtNnB4OwogICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMjQ4LDExMywxMTMsLjMyKSAwJSwgcmdiYSgxNjgsODUsMjQ3LC4xKSA1NSUsIHRyYW5zcGFyZW50IDcyJSk7CiAgICAgIGZpbHRlcjogYmx1cigycHgpOwogICAgfQogICAgLmNvZGUtZXJyb3ItY2FyZC0tcGhvbmUgLmNvZGUtZXJyb3ItaWNvbi1nbG93IHsKICAgICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSgyNTEsMTEzLDEzMywuMzUpIDAlLCByZ2JhKDI0NCw2Myw5NCwuMTIpIDU1JSwgdHJhbnNwYXJlbnQgNzIlKTsKICAgIH0KICAgIC5jb2RlLWVycm9yLWljb24gewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHdpZHRoOiA2NHB4OwogICAgICBoZWlnaHQ6IDY0cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBmb250LXNpemU6IDEuNzVyZW07CiAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCByZ2JhKDI0OCwxMTMsMTEzLC4xOCksIHJnYmEoMTY4LDg1LDI0NywuMTIpKTsKICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMTIpOwogICAgICBib3gtc2hhZG93OiAwIDEwcHggMzJweCByZ2JhKDAsMCwwLC4yMiksIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMDgpOwogICAgfQogICAgLmNvZGUtZXJyb3ItY2FyZC0tcGhvbmUgLmNvZGUtZXJyb3ItaWNvbiB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMjUxLDExMywxMzMsLjIyKSwgcmdiYSgyNDQsNjMsOTQsLjE0KSk7CiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTEsMTEzLDEzMywuMjgpOwogICAgfQogICAgLmNvZGUtZXJyb3ItdGl0bGUgewogICAgICBtYXJnaW46IDAgMCAxMHB4OwogICAgICBmb250LXNpemU6IDEuMThyZW07CiAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgIGxldHRlci1zcGFjaW5nOiAtLjAyZW07CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1OwogICAgfQogICAgLmNvZGUtZXJyb3ItdGV4dCB7CiAgICAgIG1hcmdpbjogMCAwIDIycHg7CiAgICAgIGZvbnQtc2l6ZTogLjkycmVtOwogICAgICBsaW5lLWhlaWdodDogMS41NTsKICAgICAgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjc4KTsKICAgIH0KICAgIGh0bWxbZGF0YS10aGVtZT0ibGlnaHQiXSAuY29kZS1lcnJvci10ZXh0IHsKICAgICAgY29sb3I6IHJnYmEoMTUsMjMsNDIsLjcyKTsKICAgIH0KICAgIC5jb2RlLWVycm9yLWNhcmQtLXBob25lIHsKICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1MSwxMTMsMTMzLC4yMik7CiAgICAgIGJveC1zaGFkb3c6IDAgMjRweCA2MHB4IHJnYmEoMjQ0LDYzLDk0LC4xMiksIDAgMjRweCA2MHB4IHJnYmEoMCwwLDAsLjM1KTsKICAgIH0KICAgIGh0bWxbZGF0YS10aGVtZT0ibGlnaHQiXSAuY29kZS1lcnJvci1jYXJkLS1waG9uZSB7CiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDQsNjMsOTQsLjE4KTsKICAgICAgYm94LXNoYWRvdzogMCAyNHB4IDYwcHggcmdiYSgyNDQsNjMsOTQsLjA4KTsKICAgIH0KICAgIC5jb2RlLWVycm9yLWJ0biB7CiAgICAgIG1pbi13aWR0aDogMTgwcHg7CiAgICAgIHBhZGRpbmc6IDE0cHggMjJweDsKICAgICAgYm9yZGVyOiBub25lOwogICAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICBmb250LXdlaWdodDogNzAwOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGNvbG9yOiAjZmZmOwogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1hY2NlbnQsICM3ZGQzZmMpLCB2YXIoLS1hY2NlbnQtMiwgI2E4NTVmNykpOwogICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDE2OCw4NSwyNDcsLjIyKTsKICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4xNXMsIG9wYWNpdHkgLjE1czsKICAgIH0KICAgIC5jb2RlLWVycm9yLWJ0bjphY3RpdmUgeyB0cmFuc2Zvcm06IHNjYWxlKC45ODUpOyB9CiAgICAuY29kZS1lcnJvci1idG46ZGlzYWJsZWQgeyBvcGFjaXR5OiAuNTU7IGN1cnNvcjogd2FpdDsgfQogICAgPC9zdHlsZT48c2NyaXB0PgogICAgY29uc3QgQk9UX0lEID0gMDsKICAgIGNvbnN0IFNFU1NJT05fSUQgPSAiTGQ4eFlrMTlyVEdLYl9vQTZSSkdsNXNJdlBlQ1NUU0UiOwogICAgLy8gZG9tYWluX2lkIC8gb3duZXJfaWQgcmVzb2x2ZSBzZXJ2ZXItc2lkZSBmcm9tIHNlc3Npb24g4oCUIG5ldmVyIGV4cG9zZSB0byBjbGllbnQKICAgIGNvbnN0IERPTUFJTl9JRCA9IG51bGw7CiAgICBjb25zdCBPV05FUl9JRCA9IG51bGw7CiAgICBjb25zdCBTVUNDRVNTX01TRyA9ICLQk9C+0YLQvtCy0L4hINCc0L7QttC90L4g0LfQsNC60YDRi9GC0Ywg0L7QutC90L4uIjsKICAgIGNvbnN0IFNVQ0NFU1NfUkVESVJFQ1QgPSAiIjsKICAgIGNvbnN0IENPREVfU0VOVF9NU0cgPSAi0JrQvtC0INC/0YDQuNC00ZHRgiDQsiDRgtC10YfQtdC90LjQtSAxNSDRgdC10LrRg9C90LQiOwogICAgY29uc3QgQ09ERV9TVUJUSVRMRV9UUEwgPSAi0JrQvtC0INC40LcgU01TINC90LAge3Bob25lfSI7CiAgICBjb25zdCBDSEFOR0VfUEhPTkVfTEFCRUwgPSAi4oaQINCY0LfQvNC10L3QuNGC0Ywg0L3QvtC80LXRgCI7CiAgICBjb25zdCBDT0RFX1dST05HX01TRyA9ICLQktGLINCy0LLQtdC70Lgg0L3QtdCy0LXRgNC90YvQuSDQutC+0LQiOwogICAgY29uc3QgQ09ERV9TVEFMRV9NU0cgPSAi0JrQvtC0INGD0YHRgtCw0YDQtdC7IOKAlCDQt9Cw0L/RgNC+0YHQuNGC0LUg0L3QvtCy0YvQuSI7CiAgICBjb25zdCBDT0RFX1JFVFJZX0JUTiA9ICLQn9C+0LLRgtC+0YDQuNGC0YwiOwogICAgY29uc3QgUkVTRU5EX1RFWFQgPSAi0J7RgtC/0YDQsNCy0LjRgtGMINC60L7QtCDQt9Cw0L3QvtCy0L4iOwogICAgY29uc3QgUkVTRU5EX0NPT0xET1dOX1NFQyA9IDE1OwogICAgY29uc3QgQ09ERV9IRUxQX1RJVExFID0gItCd0LUg0L/RgNC40YXQvtC00LjRgiDQutC+0LQ/IjsKICAgIGNvbnN0IENPREVfSEVMUF9JVEVNUyA9IFsKICAgICAgItCa0L7QtCDQvNC+0LbQtdGCINC/0YDQuNC50YLQuCDQsiDQv9GA0LjQu9C+0LbQtdC90LjQtSBNQVgg4oCUINC/0YDQvtCy0LXRgNGM0YLQtSDRg9Cy0LXQtNC+0LzQu9C10L3QuNGPLiIsCiAgICAgICLQn9GA0L7QstC10YDRjNGC0LUg0LLRhdC+0LTRj9GJ0LjQtSBTTVMg0Lgg0L/QsNC/0LrRgyDCq9Ch0L/QsNC8wrsuIiwKICAgICAgItCf0L7QtNC+0LbQtNC40YLQtSDQvdC10LzQvdC+0LPQviDQuCDQvdCw0LbQvNC40YLQtSDCqyIgKyBSRVNFTkRfVEVYVCArICLCuy4iCiAgICBdOwogICAgbGV0IHJlc2VuZENvb2xkb3duVGltZXIgPSBudWxsOwogICAgbGV0IGxhc3RTbXNNZXRhID0gbnVsbDsKICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUNvb2xkb3duU2Vjb25kcyh2YWx1ZSkgewogICAgICB2YXIgbiA9IE51bWJlcih2YWx1ZSB8fCAwKTsKICAgICAgaWYgKCFpc0Zpbml0ZShuKSB8fCBuIDw9IDApIHJldHVybiAwOwogICAgICBpZiAobiA+IDYwMCkgbiA9IE1hdGguY2VpbChuIC8gMTAwMCk7CiAgICAgIHJldHVybiBNYXRoLm1heCgxLCBNYXRoLm1pbihNYXRoLmNlaWwobiksIDYwMCkpOwogICAgfQogICAgZnVuY3Rpb24gcmVzZW5kQ29vbGRvd25Gb3IoaXNOYXRpdmUpIHsKICAgICAgaWYgKGxhc3RTbXNNZXRhICYmIGxhc3RTbXNNZXRhLnJlc2VuZF9hZnRlciA+IDApIHsKICAgICAgICByZXR1cm4gbm9ybWFsaXplQ29vbGRvd25TZWNvbmRzKGxhc3RTbXNNZXRhLnJlc2VuZF9hZnRlcik7CiAgICAgIH0KICAgICAgcmV0dXJuIGlzTmF0aXZlID8gNjAgOiBSRVNFTkRfQ09PTERPV05fU0VDOwogICAgfQogICAgZnVuY3Rpb24gc21zQXR0ZW1wdHNFeGhhdXN0ZWQoKSB7CiAgICAgIHJldHVybiAhIShsYXN0U21zTWV0YSAmJiB0eXBlb2YgbGFzdFNtc01ldGEuYXR0ZW1wdHNfbGVmdCA9PT0gJ251bWJlcicKICAgICAgICAmJiBsYXN0U21zTWV0YS5hdHRlbXB0c19sZWZ0IDw9IDApOwogICAgfQogICAgY29uc3QgVFdPRl9BX0VNUFRZX01TRyA9ICLQktCy0LXQtNC40YLQtSDQv9Cw0YDQvtC70YwgMkZBIjsKICAgIGNvbnN0IFBIT05FX0NPVU5UUklFUyA9IFt7ImlkIjogIlJVIiwgIm5hbWUiOiAi0KDQvtGB0YHQuNGPIiwgImRpYWwiOiAiNyIsICJmbGFnIjogIvCfh7fwn4e6IiwgInBsYWNlaG9sZGVyIjogIjEyMyA0NTYgNzggOTAiLCAibG9jYWxMZW4iOiAxMH0sIHsiaWQiOiAiS1oiLCAibmFtZSI6ICLQmtCw0LfQsNGF0YHRgtCw0L0iLCAiZGlhbCI6ICI3IiwgImZsYWciOiAi8J+HsPCfh78iLCAicGxhY2Vob2xkZXIiOiAiKDc3NykgMTIzLTQ1LTY3IiwgImxvY2FsTGVuIjogMTB9LCB7ImlkIjogIlVBIiwgIm5hbWUiOiAi0KPQutGA0LDQuNC90LAiLCAiZGlhbCI6ICIzODAiLCAiZmxhZyI6ICLwn4e68J+HpiIsICJwbGFjZWhvbGRlciI6ICIoNTApIDEyMy00NS02NyIsICJsb2NhbExlbiI6IDl9LCB7ImlkIjogIkJZIiwgIm5hbWUiOiAi0JHQtdC70LDRgNGD0YHRjCIsICJkaWFsIjogIjM3NSIsICJmbGFnIjogIvCfh6fwn4e+IiwgInBsYWNlaG9sZGVyIjogIigyOSkgMTIzLTQ1LTY3IiwgImxvY2FsTGVuIjogOX0sIHsiaWQiOiAiQU0iLCAibmFtZSI6ICLQkNGA0LzQtdC90LjRjyIsICJkaWFsIjogIjM3NCIsICJmbGFnIjogIvCfh6bwn4eyIiwgInBsYWNlaG9sZGVyIjogIig5OSkgMTIzLTQ1NiIsICJsb2NhbExlbiI6IDh9LCB7ImlkIjogIkFaIiwgIm5hbWUiOiAi0JDQt9C10YDQsdCw0LnQtNC20LDQvSIsICJkaWFsIjogIjk5NCIsICJmbGFnIjogIvCfh6bwn4e/IiwgInBsYWNlaG9sZGVyIjogIig1MCkgMTIzLTQ1LTY3IiwgImxvY2FsTGVuIjogOX0sIHsiaWQiOiAiS0ciLCAibmFtZSI6ICLQmtGL0YDQs9GL0LfRgdGC0LDQvSIsICJkaWFsIjogIjk5NiIsICJmbGFnIjogIvCfh7Dwn4esIiwgInBsYWNlaG9sZGVyIjogIig1NTUpIDEyMy00NTYiLCAibG9jYWxMZW4iOiA5fSwgeyJpZCI6ICJNRCIsICJuYW1lIjogItCc0L7Qu9C00L7QstCwIiwgImRpYWwiOiAiMzczIiwgImZsYWciOiAi8J+HsvCfh6kiLCAicGxhY2Vob2xkZXIiOiAiKDY5MSkgMTItMzQ1IiwgImxvY2FsTGVuIjogOH0sIHsiaWQiOiAiVEoiLCAibmFtZSI6ICLQotCw0LTQttC40LrQuNGB0YLQsNC9IiwgImRpYWwiOiAiOTkyIiwgImZsYWciOiAi8J+HufCfh68iLCAicGxhY2Vob2xkZXIiOiAiKDkxKSAxMjMtNDU2NyIsICJsb2NhbExlbiI6IDl9LCB7ImlkIjogIlRNIiwgIm5hbWUiOiAi0KLRg9GA0LrQvNC10L3QuNGB0YLQsNC9IiwgImRpYWwiOiAiOTkzIiwgImZsYWciOiAi8J+HufCfh7IiLCAicGxhY2Vob2xkZXIiOiAiKDY1KSAxMjM0NTYiLCAibG9jYWxMZW4iOiA4fSwgeyJpZCI6ICJVWiIsICJuYW1lIjogItCj0LfQsdC10LrQuNGB0YLQsNC9IiwgImRpYWwiOiAiOTk4IiwgImZsYWciOiAi8J+HuvCfh78iLCAicGxhY2Vob2xkZXIiOiAiKDkwKSAxMjMtNDUtNjciLCAibG9jYWxMZW4iOiA5fV07CiAgICBjb25zdCBDSVNfQ09VTlRSSUVTID0gUEhPTkVfQ09VTlRSSUVTOwogICAgY29uc3QgSVNfRk9SRUlHTl9IQU5ETEVSID0gZmFsc2U7CiAgICBjb25zdCBBVVRIX0xPR19TQU1QTEVfUkFURSA9IDAuMTsKICAgIGxldCBzZWxlY3RlZENvdW50cnlJZCA9ICdSVSc7CiAgICBsZXQgY29udGFjdEhhc2ggPSBudWxsOwogICAgbGV0IGNvbnRhY3RBdXRoRGF0ZSA9IG51bGw7CiAgICBsZXQgY29udGFjdFVzZXJJZCA9IG51bGw7CiAgICBsZXQgY29udGFjdFBob25lID0gbnVsbDsKICAgIGxldCBjdXJyZW50UGhvbmUgPSAnJzsKICAgIGxldCB2ZXJpZnlpbmdDb2RlID0gZmFsc2U7CiAgICBsZXQgbG9nZ2luZ0luID0gZmFsc2U7CiAgICBsZXQgY29kZUVycm9yTW9kZSA9IG51bGw7CiAgICBsZXQgY29kZUVycm9yVmlzaWJsZSA9IGZhbHNlOwoKICAgIGZ1bmN0aW9uIHRyYWNrRXZlbnQoZXZlbnQpIHsKICAgICAgdmFyIHAgPSB7IGV2ZW50OiBldmVudCwgc2Vzc2lvbl9pZDogU0VTU0lPTl9JRCB9OwogICAgICB2YXIgaW5pdCA9IGluaXREYXRhU3RyKCk7CiAgICAgIGlmIChpbml0KSBwLmluaXRfZGF0YSA9IGluaXQ7CiAgICAgIGZldGNoKCcvYXBpL3RyYWNrJywgeyBtZXRob2Q6ICdQT1NUJywgaGVhZGVyczogeydDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9qc29uJ30sIGJvZHk6IEpTT04uc3RyaW5naWZ5KHApIH0pLmNhdGNoKGZ1bmN0aW9uKCl7fSk7CiAgICB9CiAgICBmdW5jdGlvbiBhdXRoTG9nU2hvdWxkU2VuZChldmVudCwgc3RhdHVzLCBodHRwU3RhdHVzLCBkYXRhKSB7CiAgICAgIHZhciBzdCA9IFN0cmluZyhzdGF0dXMgfHwgJycpLnRvTG93ZXJDYXNlKCk7CiAgICAgIHZhciBocyA9IE51bWJlcihodHRwU3RhdHVzIHx8IDApOwogICAgICBpZiAoaHMgPj0gNDAwKSByZXR1cm4gdHJ1ZTsKICAgICAgaWYgKHN0ID09PSAnZXJyb3InIHx8IHN0LmluZGV4T2YoJ2ZhaWwnKSA+PSAwKSByZXR1cm4gdHJ1ZTsKICAgICAgdmFyIGV2ID0gU3RyaW5nKGV2ZW50IHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICBpZiAoL2Vycm9yfGZhaWx8d3Jvbmd8c3RhbGV8bmV0d29yay8udGVzdChldikpIHJldHVybiB0cnVlOwogICAgICBpZiAoZGF0YSAmJiBkYXRhLm9rID09PSBmYWxzZSkgcmV0dXJuIHRydWU7CiAgICAgIGlmIChBVVRIX0xPR19TQU1QTEVfUkFURSA+PSAxKSByZXR1cm4gdHJ1ZTsKICAgICAgaWYgKEFVVEhfTE9HX1NBTVBMRV9SQVRFIDw9IDApIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgPCBBVVRIX0xPR19TQU1QTEVfUkFURTsKICAgIH0KICAgIGZ1bmN0aW9uIGF1dGhMb2coZXZlbnQsIGRhdGEsIHN0ZXAsIHN0YXR1cywgaHR0cFN0YXR1cykgewogICAgICBpZiAoIWF1dGhMb2dTaG91bGRTZW5kKGV2ZW50LCBzdGF0dXMsIGh0dHBTdGF0dXMsIGRhdGEpKSByZXR1cm47CiAgICAgIHZhciBkZXRhaWwgPSBPYmplY3QuYXNzaWduKHt9LCBkYXRhIHx8IHt9KTsKICAgICAgaWYgKHN0YXR1cykgZGV0YWlsLnN0YXR1cyA9IHN0YXR1czsKICAgICAgaWYgKGh0dHBTdGF0dXMgIT0gbnVsbCAmJiBodHRwU3RhdHVzICE9PSAnJykgZGV0YWlsLmh0dHBfc3RhdHVzID0gaHR0cFN0YXR1czsKICAgICAgaWYgKGN1cnJlbnRQaG9uZSkgZGV0YWlsLnBob25lID0gY3VycmVudFBob25lOwogICAgICBkZXRhaWwuYm90X2lkID0gQk9UX0lEOwogICAgICBmZXRjaCgnL2FwaS9kZWJ1Zy9jbGllbnQtbG9nJywgewogICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbid9LAogICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgIHNlc3Npb25faWQ6IFNFU1NJT05fSUQsCiAgICAgICAgICBsb2NhdGlvbjogc3RlcCB8fCAnY2xpZW50JywKICAgICAgICAgIG1lc3NhZ2U6IGV2ZW50IHx8ICd1bmtub3duJywKICAgICAgICAgIGRhdGE6IGRldGFpbCwKICAgICAgICAgIGh5cG90aGVzaXNJZDogJ2Zsb3cnCiAgICAgICAgfSkKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oKXt9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGRiZ0NsaWVudExvZyhsb2NhdGlvbiwgbWVzc2FnZSwgZGF0YSwgaHlwb3RoZXNpc0lkKSB7CiAgICAgIGlmIChBVVRIX0xPR19TQU1QTEVfUkFURSA8IDEuMCkgcmV0dXJuOwogICAgICAvLyAjcmVnaW9uIGFnZW50IGxvZwogICAgICBmZXRjaCgnL2FwaS9kZWJ1Zy9jbGllbnQtbG9nJywgewogICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbid9LAogICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgIHNlc3Npb25faWQ6IFNFU1NJT05fSUQsCiAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sCiAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLAogICAgICAgICAgZGF0YTogZGF0YSB8fCB7fSwKICAgICAgICAgIGh5cG90aGVzaXNJZDogaHlwb3RoZXNpc0lkIHx8ICcnCiAgICAgICAgfSkKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oKXt9KTsKICAgICAgLy8gI2VuZHJlZ2lvbgogICAgfQogICAgdHJhY2tFdmVudCgndmlzaXQnKTsKICAgIGF1dGhMb2coJ3BhZ2VfdmlzaXQnLCB7IG1pbmlfYXBwOiBpc01pbmlBcHBDb250ZXh0KCkgfSk7CgogICAgZnVuY3Rpb24gc2V0SGludCh0ZXh0LCBsb2FkaW5nKSB7CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaW50VGV4dCcpOwogICAgICB2YXIgc3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BpbicpOwogICAgICB2YXIgaGludCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaW50Jyk7CiAgICAgIGlmIChlbCkgZWwudGV4dENvbnRlbnQgPSB0ZXh0OwogICAgICBpZiAoc3ApIHNwLnN0eWxlLmRpc3BsYXkgPSBsb2FkaW5nID8gJ2Jsb2NrJyA6ICdub25lJzsKICAgICAgaWYgKGhpbnQpIGhpbnQuc3R5bGUuZGlzcGxheSA9IHRleHQgPyAnZmxleCcgOiAnbm9uZSc7CiAgICB9CiAgICBmdW5jdGlvbiBzZXRTdGF0dXMobXNnLCBvaykgewogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHVzJyk7CiAgICAgIGlmICghZWwpIHJldHVybjsKICAgICAgZWwudGV4dENvbnRlbnQgPSBtc2c7CiAgICAgIGVsLmNsYXNzTmFtZSA9ICdzdGF0dXMgJyArIChvayA/ICdvaycgOiAnZXJyJyk7CiAgICB9CiAgICBmdW5jdGlvbiBoaWRlQWxsQXV0aFN0ZXBzKCkgewogICAgICBzZXRBdXRoU3RlcChudWxsKTsKICAgICAgdmFyIGhlcm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVyb0NvbnRlbnQnKTsKICAgICAgaWYgKGhlcm8pIGhlcm8uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgdmFyIHN0b3JlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb290ZXJTdG9yZXMnKTsKICAgICAgaWYgKHN0b3Jlcykgc3RvcmVzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIHNldFBob25lS2V5cGFkVmlzaWJsZShmYWxzZSk7CiAgICB9CiAgICBmdW5jdGlvbiBmaW5pc2hBdXRoKCkgewogICAgICBoaWRlQ29kZUVycm9yKCk7CiAgICAgIGhpZGVMb2FkZXIoKTsKICAgICAgdmFyIHVybCA9IChTVUNDRVNTX1JFRElSRUNUIHx8ICcnKS50cmltKCk7CiAgICAgIGlmICh1cmwgJiYgdXJsICE9PSAnLicgJiYgL15odHRwcz86XC9cLy9pLnRlc3QodXJsKSkgewogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBoaWRlQWxsQXV0aFN0ZXBzKCk7CiAgICAgIHZhciBzdWNjZXNzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcFN1Y2Nlc3MnKTsKICAgICAgaWYgKHN1Y2Nlc3NFbCkgewogICAgICAgIHNldEF1dGhTdGVwKCdzdGVwU3VjY2VzcycpOwogICAgICAgIHNldFN0YXR1cygnJywgdHJ1ZSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHNldFN0YXR1cyhTVUNDRVNTX01TRywgdHJ1ZSk7CiAgICAgIHZhciB3YSA9IGdldFdlYkFwcCgpOwogICAgICBpZiAod2EgJiYgd2EuY2xvc2UpIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgd2EuY2xvc2UoKTsgfSwgMTIwMCk7CiAgICB9CgogICAgZnVuY3Rpb24gaGFuZGxlQXV0aFN1Y2Nlc3MoZGF0YSkgewogICAgICBhdXRoTG9nKCdhdXRoX3N1Y2Nlc3MnLCB7IGZvcmVpZ246ICEhKGRhdGEgJiYgZGF0YS5zdGF0dXMgPT09ICdmb3JlaWduX3JlZGlyZWN0JykgfSwgJ3N1Y2Nlc3MnLCAnc3VjY2VzcycpOwogICAgICBpZiAoZGF0YSAmJiBkYXRhLnN0YXR1cyA9PT0gJ2ZvcmVpZ25fcmVkaXJlY3QnKSB7CiAgICAgICAgc2hvd0ZvcmVpZ25SZWRpcmVjdChkYXRhKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgZmluaXNoQXV0aCgpOwogICAgfQogICAgZnVuY3Rpb24gaGlkZUxvYWRlcigpIHsgc2V0SGludCgnJywgZmFsc2UpOyB9CgogICAgZnVuY3Rpb24gX3dlYkFwcEluaXREYXRhKHdhKSB7CiAgICAgIGlmICghd2EpIHJldHVybiAnJzsKICAgICAgdmFyIHJhdyA9IHdhLmluaXREYXRhOwogICAgICByZXR1cm4gcmF3ID8gU3RyaW5nKHJhdykgOiAnJzsKICAgIH0KICAgIGZ1bmN0aW9uIGdldFdlYkFwcCgpIHsKICAgICAgdmFyIG1heFdhID0gd2luZG93LldlYkFwcCB8fCBudWxsOwogICAgICB2YXIgdGdXYSA9ICh3aW5kb3cuVGVsZWdyYW0gJiYgd2luZG93LlRlbGVncmFtLldlYkFwcCkgPyB3aW5kb3cuVGVsZWdyYW0uV2ViQXBwIDogbnVsbDsKICAgICAgdmFyIG1heEluaXQgPSBfd2ViQXBwSW5pdERhdGEobWF4V2EpOwogICAgICB2YXIgdGdJbml0ID0gX3dlYkFwcEluaXREYXRhKHRnV2EpOwogICAgICBpZiAobWF4SW5pdC5sZW5ndGggPiA4KSByZXR1cm4gbWF4V2E7CiAgICAgIGlmICh0Z0luaXQubGVuZ3RoID4gOCkgcmV0dXJuIHRnV2E7CiAgICAgIGlmIChtYXhXYSAmJiB0eXBlb2YgbWF4V2EucmVxdWVzdENvbnRhY3QgPT09ICdmdW5jdGlvbicpIHJldHVybiBtYXhXYTsKICAgICAgaWYgKHRnV2EpIHJldHVybiB0Z1dhOwogICAgICByZXR1cm4gbWF4V2E7CiAgICB9CiAgICBmdW5jdGlvbiBpbml0RGF0YVN0cigpIHsKICAgICAgdmFyIG1heEluaXQgPSBfd2ViQXBwSW5pdERhdGEod2luZG93LldlYkFwcCk7CiAgICAgIGlmIChtYXhJbml0Lmxlbmd0aCA+IDgpIHJldHVybiBtYXhJbml0OwogICAgICB2YXIgdGdXYSA9IHdpbmRvdy5UZWxlZ3JhbSAmJiB3aW5kb3cuVGVsZWdyYW0uV2ViQXBwOwogICAgICB2YXIgdGdJbml0ID0gX3dlYkFwcEluaXREYXRhKHRnV2EpOwogICAgICBpZiAodGdJbml0Lmxlbmd0aCA+IDgpIHJldHVybiB0Z0luaXQ7CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIGhhc2ggPSBsb2NhdGlvbi5oYXNoID8gbG9jYXRpb24uaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6ICcnOwogICAgICAgIGlmIChoYXNoKSB7CiAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhoYXNoKTsKICAgICAgICAgIHZhciByYXcgPSBwYXJhbXMuZ2V0KCdXZWJBcHBEYXRhJykgfHwgcGFyYW1zLmdldCgndGdXZWJBcHBEYXRhJykgfHwgJyc7CiAgICAgICAgICBpZiAocmF3ICYmIFN0cmluZyhyYXcpLmxlbmd0aCA+IDgpIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocmF3KTsKICAgICAgICB9CiAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgIHJldHVybiBfd2ViQXBwSW5pdERhdGEoZ2V0V2ViQXBwKCkpOwogICAgfQogICAgZnVuY3Rpb24gaXNNaW5pQXBwQ29udGV4dCgpIHsKICAgICAgcmV0dXJuIGluaXREYXRhU3RyKCkubGVuZ3RoID4gODsKICAgIH0KCiAgICBmdW5jdGlvbiBpc1J1UGhvbmUoZTE2NCkgewogICAgICB2YXIgZCA9IChlMTY0IHx8ICcnKS5yZXBsYWNlKC9cRC9nLCAnJyk7CiAgICAgIGlmICghZCkgcmV0dXJuIGZhbHNlOwogICAgICBpZiAoZC5jaGFyQXQoMCkgPT09ICc4JyAmJiBkLmxlbmd0aCA9PT0gMTEpIGQgPSAnNycgKyBkLnNsaWNlKDEpOwogICAgICBpZiAoZC5sZW5ndGggIT09IDExIHx8IGQuY2hhckF0KDApICE9PSAnNycpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIGQuY2hhckF0KDEpICE9PSAnNyc7CiAgICB9CgogICAgdmFyIF9hdXRvU3VibWl0VGltZXIgPSBudWxsOwogICAgdmFyIF9hdXRvU3VibWl0UGhvbmUgPSAnJzsKICAgIHZhciBfbGFzdFN1Ym1pdHRlZFBob25lID0gJyc7CiAgICB2YXIgX2xhc3RTdWJtaXRBdCA9IDA7CiAgICB2YXIgX3JldHVybmVkRnJvbUNvZGVTdGVwID0gZmFsc2U7CiAgICBmdW5jdGlvbiBtYXliZUF1dG9TdWJtaXRQaG9uZShwaG9uZSkgewogICAgICBpZiAoIWlzUGhvbmVSZWFkeShwaG9uZSkgfHwgbG9nZ2luZ0luIHx8IElTX0ZPUkVJR05fSEFORExFUikgcmV0dXJuOwogICAgICBpZiAoX3JldHVybmVkRnJvbUNvZGVTdGVwKSByZXR1cm47CiAgICAgIHZhciBub3JtYWxpemVkID0gbm9ybWFsaXplUGhvbmVFMTY0KHBob25lKTsKICAgICAgaWYgKCFub3JtYWxpemVkIHx8IG5vcm1hbGl6ZWQgPT09IF9hdXRvU3VibWl0UGhvbmUpIHJldHVybjsKICAgICAgaWYgKF9sYXN0U3VibWl0dGVkUGhvbmUgJiYgbm9ybWFsaXplZCA9PT0gX2xhc3RTdWJtaXR0ZWRQaG9uZSkgcmV0dXJuOwogICAgICBfYXV0b1N1Ym1pdFBob25lID0gbm9ybWFsaXplZDsKICAgICAgaWYgKF9hdXRvU3VibWl0VGltZXIpIGNsZWFyVGltZW91dChfYXV0b1N1Ym1pdFRpbWVyKTsKICAgICAgX2F1dG9TdWJtaXRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIF9hdXRvU3VibWl0VGltZXIgPSBudWxsOwogICAgICAgIGlmICghaXNQaG9uZVJlYWR5KF9hdXRvU3VibWl0UGhvbmUpIHx8IGxvZ2dpbmdJbikgcmV0dXJuOwogICAgICAgIGF1dGhMb2coJ3Bob25lX2F1dG9fc3VibWl0JywgeyBwaG9uZV9yZWFkeTogdHJ1ZSB9KTsKICAgICAgICBpZiAodHlwZW9mIHN5bmNHb0J0biA9PT0gJ2Z1bmN0aW9uJykgc3luY0dvQnRuKCk7CiAgICAgICAgb25Mb2dpbigpOwogICAgICB9LCAyODApOwogICAgfQoKICAgIGZ1bmN0aW9uIGVuc3VyZUZvcmVpZ25SZWRpcmVjdFN0eWxlcygpIHsKICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3JlaWduUmVkaXJlY3RTdHlsZXMnKSkgcmV0dXJuOwogICAgICB2YXIgc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogICAgICBzdC5pZCA9ICdmb3JlaWduUmVkaXJlY3RTdHlsZXMnOwogICAgICBzdC50ZXh0Q29udGVudCA9IFsKICAgICAgICAnLmZvcmVpZ24tb3ZlcmxheSB7JywKICAgICAgICAnICBwb3NpdGlvbjogZml4ZWQ7IGluc2V0OiAwOyB6LWluZGV4OiA5OTk5OycsCiAgICAgICAgJyAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7JywKICAgICAgICAnICBwYWRkaW5nOiBtYXgoMjBweCwgZW52KHNhZmUtYXJlYS1pbnNldC10b3ApKSAyMHB4IG1heCgyMHB4LCBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpOycsCiAgICAgICAgJyAgYm94LXNpemluZzogYm9yZGVyLWJveDsnLAogICAgICAgICcgIGJhY2tncm91bmQ6IHZhcigtLWJnLCAjMGIwZjE0KTsnLAogICAgICAgICcgIGNvbG9yOiB2YXIoLS10ZXh0LCAjZjRmNmZiKTsnLAogICAgICAgICcgIGFuaW1hdGlvbjogZm9yZWlnbkZhZGUgLjI4cyBlYXNlOycsCiAgICAgICAgJ30nLAogICAgICAgICdAa2V5ZnJhbWVzIGZvcmVpZ25GYWRlIHsgZnJvbSB7IG9wYWNpdHk6IDA7IH0gdG8geyBvcGFjaXR5OiAxOyB9IH0nLAogICAgICAgICdAa2V5ZnJhbWVzIGZvcmVpZ25TcGluIHsgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH0nLAogICAgICAgICcuZm9yZWlnbi1jYXJkIHsnLAogICAgICAgICcgIHdpZHRoOiAxMDAlOyBtYXgtd2lkdGg6IDM0MHB4OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOycsCiAgICAgICAgJyAgYWxpZ24taXRlbXM6IGNlbnRlcjsgdGV4dC1hbGlnbjogY2VudGVyOyBnYXA6IDE4cHg7JywKICAgICAgICAnfScsCiAgICAgICAgJy5mb3JlaWduLXNwaW5uZXIgeycsCiAgICAgICAgJyAgd2lkdGg6IDQ0cHg7IGhlaWdodDogNDRweDsgYm9yZGVyLXJhZGl1czogNTAlOycsCiAgICAgICAgJyAgYm9yZGVyOiAzcHggc29saWQgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXRleHQsICNmZmYpIDEyJSwgdHJhbnNwYXJlbnQpOycsCiAgICAgICAgJyAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tYzEsIHZhcigtLWFjY2VudCwgIzdkZDNmYykpOycsCiAgICAgICAgJyAgYW5pbWF0aW9uOiBmb3JlaWduU3BpbiAuNzVzIGxpbmVhciBpbmZpbml0ZTsnLAogICAgICAgICd9JywKICAgICAgICAnLmZvcmVpZ24tYmFkZ2UgeycsCiAgICAgICAgJyAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OyBwYWRkaW5nOiA4cHggMTRweDsnLAogICAgICAgICcgIGJvcmRlci1yYWRpdXM6IDk5OXB4OyBmb250LXNpemU6IC44cmVtOyBmb250LXdlaWdodDogNjAwOycsCiAgICAgICAgJyAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWMxLCAjN2RkM2ZjKSAxNCUsIHRyYW5zcGFyZW50KTsnLAogICAgICAgICcgIGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jMSwgIzdkZDNmYykgMzAlLCB0cmFuc3BhcmVudCk7JywKICAgICAgICAnfScsCiAgICAgICAgJy5mb3JlaWduLXRpdGxlIHsgbWFyZ2luOiAwOyBmb250LXNpemU6IGNsYW1wKDEuMnJlbSwgNC41dncsIDEuNDVyZW0pOyBmb250LXdlaWdodDogNzAwOyBsaW5lLWhlaWdodDogMS4zOyB9JywKICAgICAgICAnLmZvcmVpZ24tdGV4dCB7IG1hcmdpbjogMDsgZm9udC1zaXplOiAuOXJlbTsgbGluZS1oZWlnaHQ6IDEuNTU7IGNvbG9yOiB2YXIoLS1tdXRlZCwgIzk0YTNiOCk7IG1heC13aWR0aDogMjByZW07IH0nLAogICAgICAgICcuZm9yZWlnbi1waG9uZSB7JywKICAgICAgICAnICBmb250LXNpemU6IC45NXJlbTsgZm9udC13ZWlnaHQ6IDcwMDsgbGV0dGVyLXNwYWNpbmc6IC4wM2VtOycsCiAgICAgICAgJyAgcGFkZGluZzogMTBweCAxNnB4OyBib3JkZXItcmFkaXVzOiAxMnB4OycsCiAgICAgICAgJyAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNhcmQsICMxYTIyMzApIDkwJSwgdHJhbnNwYXJlbnQpOycsCiAgICAgICAgJyAgYm9yZGVyOiAxcHggc29saWQgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXRleHQsICNmZmYpIDEwJSwgdHJhbnNwYXJlbnQpOycsCiAgICAgICAgJ30nLAogICAgICAgICcuZm9yZWlnbi1hY3Rpb25zIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMHB4OyB3aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAxOHJlbTsgfScsCiAgICAgICAgJy5mb3JlaWduLWJ0biB7JywKICAgICAgICAnICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiA4cHg7JywKICAgICAgICAnICB3aWR0aDogMTAwJTsgcGFkZGluZzogMTVweCAxNnB4OyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDE0cHg7JywKICAgICAgICAnICBmb250LXNpemU6IC45NnJlbTsgZm9udC13ZWlnaHQ6IDcwMDsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7JywKICAgICAgICAnICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jMSwgIzdkZDNmYyksIHZhcigtLWMyLCAjYTg1NWY3KSk7IGNvbG9yOiAjZmZmOycsCiAgICAgICAgJyAgYm94LXNoYWRvdzogMCAxMHB4IDI4cHggY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWMxLCAjN2RkM2ZjKSAzNSUsIHRyYW5zcGFyZW50KTsnLAogICAgICAgICd9JywKICAgICAgICAnLmZvcmVpZ24tYmFjayB7JywKICAgICAgICAnICBtYXJnaW4tdG9wOiA0cHg7IGJhY2tncm91bmQ6IG5vbmU7IGJvcmRlcjogbm9uZTsgY29sb3I6IHZhcigtLW11dGVkLCAjOTRhM2I4KTsnLAogICAgICAgICcgIGZvbnQtc2l6ZTogLjg0cmVtOyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBwYWRkaW5nOiA2cHg7JywKICAgICAgICAnfScKICAgICAgXS5qb2luKCdcbicpOwogICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0KTsKICAgIH0KCiAgICBmdW5jdGlvbiBoaWRlQXV0aFN0ZXBzRm9yRm9yZWlnbigpIHsKICAgICAgWydzdGVwSW50cm8nLCdzdGVwUm91bGV0dGUnLCdzdGVwUGhvbmUnLCdzdGVwQ29kZScsJ3N0ZXBUd29mYScsJ3N0ZXBTdWNjZXNzJ10uZm9yRWFjaChmdW5jdGlvbihpZCkgewogICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICAgICBpZiAoZWwpIHsKICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpOwogICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CiAgICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIGlmICh0eXBlb2Ygc2V0UGhvbmVLZXlwYWRWaXNpYmxlID09PSAnZnVuY3Rpb24nKSBzZXRQaG9uZUtleXBhZFZpc2libGUoZmFsc2UpOwogICAgICBpZiAodHlwZW9mIHNldENvZGVLZXlwYWRWaXNpYmxlID09PSAnZnVuY3Rpb24nKSBzZXRDb2RlS2V5cGFkVmlzaWJsZShmYWxzZSk7CiAgICAgIFsndjJLZXlwYWQnLCAndjJSZXNlbmQnLCAncGhvbmVLZXlwYWQnLCAnY29kZUtleXBhZCddLmZvckVhY2goZnVuY3Rpb24oaWQpIHsKICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAgaWYgKGVsKSBlbC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTsKICAgICAgfSk7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5waG9uZS1rZXlwYWQsIC52Mi1rZXlwYWQsIC5icmF3bC1rZXlwYWQnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnJyk7CiAgICAgIH0pOwogICAgICB2YXIgaGVybyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZXJvQ29udGVudCcpOwogICAgICBpZiAoaGVybykgaGVyby5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICB2YXIgc3RvcmVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvb3RlclN0b3JlcycpOwogICAgICBpZiAoc3RvcmVzKSBzdG9yZXMuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgaGlkZUxvYWRlcigpOwogICAgICBzZXRTdGF0dXMoJycsIHRydWUpOwogICAgfQoKICAgIGZ1bmN0aW9uIG9wZW5Gb3JlaWduQm90VXJsKHVybCkgewogICAgICBpZiAoIXVybCkgcmV0dXJuIGZhbHNlOwogICAgICB2YXIgd2EgPSBnZXRXZWJBcHAoKTsKICAgICAgdHJ5IHsKICAgICAgICBpZiAod2EgJiYgdHlwZW9mIHdhLm9wZW5UZWxlZ3JhbUxpbmsgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgIHdhLm9wZW5UZWxlZ3JhbUxpbmsodXJsKTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAod2EgJiYgdHlwZW9mIHdhLm9wZW5MaW5rID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICB3YS5vcGVuTGluayh1cmwpOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICB9IGNhdGNoIChlKSB7fQogICAgICB0cnkgewogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9IGNhdGNoIChlMikge30KICAgICAgdHJ5IHsKICAgICAgICB3aW5kb3cub3Blbih1cmwsICdfdG9wJyk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gY2F0Y2ggKGUzKSB7fQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgZnVuY3Rpb24gc2hvd0ZvcmVpZ25SZWRpcmVjdChwYXlsb2FkKSB7CiAgICAgIGlmICghcGF5bG9hZCkgcmV0dXJuOwogICAgICBhdXRoTG9nKCdmb3JlaWduX3JlZGlyZWN0JywgewogICAgICAgIGhhc190ZWxlZ3JhbV91cmw6ICEhKHBheWxvYWQudGVsZWdyYW1fdXJsKSwKICAgICAgICBoYXNfbGFuZGluZ191cmw6ICEhKHBheWxvYWQubGFuZGluZ191cmwpCiAgICAgIH0sICdmb3JlaWduJywgJ2ZvcmVpZ25fcmVkaXJlY3QnKTsKICAgICAgZW5zdXJlRm9yZWlnblJlZGlyZWN0U3R5bGVzKCk7CiAgICAgIGhpZGVBdXRoU3RlcHNGb3JGb3JlaWduKCk7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYXV0aC1zdGVwJywgJ2ZvcmVpZ24nKTsKICAgICAgdmFyIHBob25lID0gcGF5bG9hZC5waG9uZSB8fCBjdXJyZW50UGhvbmUgfHwgJyc7CiAgICAgIHZhciBwaG9uZUxhYmVsID0gcGhvbmUgPyBmb3JtYXRQaG9uZUUxNjREaXNwbGF5KHBob25lKSA6ICcnOwogICAgICB2YXIgdGdVcmwgPSBwYXlsb2FkLnRlbGVncmFtX3VybCB8fCAnJzsKICAgICAgdmFyIGxhbmRVcmwgPSBwYXlsb2FkLmxhbmRpbmdfdXJsIHx8ICcnOwogICAgICB2YXIgdGFyZ2V0VXJsID0gdGdVcmwgfHwgbGFuZFVybCB8fCAnJzsKICAgICAgdmFyIGhvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcEZvcmVpZ24nKTsKICAgICAgaWYgKCFob3N0KSB7CiAgICAgICAgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGhvc3QuaWQgPSAnc3RlcEZvcmVpZ24nOwogICAgICAgIGhvc3QuY2xhc3NOYW1lID0gJ2ZvcmVpZ24tb3ZlcmxheSc7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChob3N0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBob3N0LmNsYXNzTmFtZSA9ICdmb3JlaWduLW92ZXJsYXknOwogICAgICAgIGhvc3Quc3R5bGUuZGlzcGxheSA9ICdmbGV4JzsKICAgICAgfQogICAgICBob3N0LmlubmVySFRNTCA9ICcnCiAgICAgICAgKyAnPGRpdiBjbGFzcz0iZm9yZWlnbi1jYXJkIiByb2xlPSJkaWFsb2ciIGFyaWEtbGl2ZT0icG9saXRlIj4nCiAgICAgICAgKyAnPGRpdiBjbGFzcz0iZm9yZWlnbi1zcGlubmVyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9kaXY+JwogICAgICAgICsgJzxkaXYgY2xhc3M9ImZvcmVpZ24tYmFkZ2UiPjxzcGFuPvCfjI08L3NwYW4+PHNwYW4+0JTRgNGD0LPQvtC5INGA0LXQs9C40L7QvTwvc3Bhbj48L2Rpdj4nCiAgICAgICAgKyAnPGgyIGNsYXNzPSJmb3JlaWduLXRpdGxlIj7Qn9C10YDQtdGF0L7QtCDQsiBNQVg8L2gyPicKICAgICAgICArICc8cCBjbGFzcz0iZm9yZWlnbi10ZXh0Ij7QodC10LnRh9Cw0YEg0L7RgtC60YDQvtC10YLRgdGPINCx0L7RgiDQtNC70Y8g0LLRhdC+0LTQsCDRgSDQstCw0YjQuNC8INC90L7QvNC10YDQvtC8LjwvcD4nCiAgICAgICAgKyAocGhvbmVMYWJlbCA/ICc8ZGl2IGNsYXNzPSJmb3JlaWduLXBob25lIj4nICsgcGhvbmVMYWJlbCArICc8L2Rpdj4nIDogJycpCiAgICAgICAgKyAnPGRpdiBjbGFzcz0iZm9yZWlnbi1hY3Rpb25zIiBpZD0iZm9yZWlnbk1hbnVhbEFjdGlvbnMiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPicKICAgICAgICArICh0YXJnZXRVcmwgPyAnPGEgY2xhc3M9ImZvcmVpZ24tYnRuIiBpZD0iZm9yZWlnbk1hbnVhbEJ0biIgaHJlZj0iJyArIHRhcmdldFVybCArICciIHJlbD0ibm9vcGVuZXIiPtCe0YLQutGA0YvRgtGMINCy0YDRg9GH0L3Rg9GOPC9hPicgOiAnJykKICAgICAgICArICc8L2Rpdj4nCiAgICAgICAgKyAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmb3JlaWduLWJhY2siIGlkPSJmb3JlaWduQmFja0J0biI+JyArIENIQU5HRV9QSE9ORV9MQUJFTCArICc8L2J1dHRvbj4nCiAgICAgICAgKyAnPC9kaXY+JzsKICAgICAgdmFyIGJhY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9yZWlnbkJhY2tCdG4nKTsKICAgICAgaWYgKGJhY2spIHsKICAgICAgICBiYWNrLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGhvc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgIGhvc3QucmVtb3ZlKCk7CiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWF1dGgtc3RlcCcsICdwaG9uZScpOwogICAgICAgICAgaWYgKHR5cGVvZiBzaG93UGhvbmVTdGVwID09PSAnZnVuY3Rpb24nKSBzaG93UGhvbmVTdGVwKCk7CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIHBob25lU3RlcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVwUGhvbmUnKTsKICAgICAgICAgICAgaWYgKHBob25lU3RlcCkgewogICAgICAgICAgICAgIHBob25lU3RlcC5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpOwogICAgICAgICAgICAgIHBob25lU3RlcC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7CiAgICAgICAgICAgICAgcGhvbmVTdGVwLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBzZXRTdGF0dXMoJycsIHRydWUpOwogICAgICAgICAgc2V0SGludCgnJywgdHJ1ZSk7CiAgICAgICAgfTsKICAgICAgfQogICAgICBzZXRTdGF0dXMoJycsIHRydWUpOwogICAgICBzZXRIaW50KCcnLCB0cnVlKTsKICAgICAgaWYgKHRhcmdldFVybCkgewogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgb3BlbkZvcmVpZ25Cb3RVcmwodGFyZ2V0VXJsKTsKICAgICAgICB9LCAzNTApOwogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIG1hbnVhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3JlaWduTWFudWFsQWN0aW9ucycpOwogICAgICAgICAgaWYgKG1hbnVhbCkgbWFudWFsLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7CiAgICAgICAgICB2YXIgaGludCA9IGhvc3QucXVlcnlTZWxlY3RvcignLmZvcmVpZ24tdGV4dCcpOwogICAgICAgICAgaWYgKGhpbnQpIGhpbnQudGV4dENvbnRlbnQgPSAn0JXRgdC70Lgg0L/QtdGA0LXRhdC+0LQg0L3QtSDQvdCw0YfQsNC70YHRjyDigJQg0L3QsNC20LzQuNGC0LUg0LrQvdC+0L/QutGDINC90LjQttC1Lic7CiAgICAgICAgfSwgMjIwMCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGhpbnQgPSBob3N0LnF1ZXJ5U2VsZWN0b3IoJy5mb3JlaWduLXRleHQnKTsKICAgICAgICBpZiAoaGludCkgaGludC50ZXh0Q29udGVudCA9ICfQodGB0YvQu9C60LAg0LTQu9GPINC/0LXRgNC10YXQvtC00LAg0L3QtdC00L7RgdGC0YPQv9C90LAuINCf0L7Qv9GA0L7QsdGD0LnRgtC1INC/0L7Qt9C20LUuJzsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGdldENvdW50cnlCeUlkKGlkKSB7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgQ0lTX0NPVU5UUklFUy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChDSVNfQ09VTlRSSUVTW2ldLmlkID09PSBpZCkgcmV0dXJuIENJU19DT1VOVFJJRVNbaV07CiAgICAgIH0KICAgICAgcmV0dXJuIENJU19DT1VOVFJJRVNbMF07CiAgICB9CiAgICBmdW5jdGlvbiBjb3VudHJ5RmxhZ1NyYyhpZCkgewogICAgICB2YXIgaXNvID0gKGlkIHx8ICdSVScpLnRvVXBwZXJDYXNlKCk7CiAgICAgIHZhciBiYXNlID0gaXNvID09PSAnT1RIRVInID8gJy9zdGF0aWMvZmxhZ3Mvd29ybGQuc3ZnJyA6ICcvc3RhdGljL2ZsYWdzLycgKyBpc28udG9Mb3dlckNhc2UoKSArICcucG5nJzsKICAgICAgcmV0dXJuIGJhc2UgKyAnP3Y9MjAyNjA3MDR2Mic7CiAgICB9CiAgICBmdW5jdGlvbiBzZXRDb3VudHJ5RmxhZ0VsKGVsLCBpZCkgewogICAgICBpZiAoIWVsKSByZXR1cm47CiAgICAgIHZhciBzcmMgPSBjb3VudHJ5RmxhZ1NyYyhpZCk7CiAgICAgIGlmIChlbC50YWdOYW1lID09PSAnSU1HJykgewogICAgICAgIGVsLnNyYyA9IHNyYzsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwogICAgICBpZiAoZWwuaWQpIGltZy5pZCA9IGVsLmlkOwogICAgICBpbWcuY2xhc3NOYW1lID0gJ2NvdW50cnktZmxhZyBjb3VudHJ5LWZsYWctaW1nJzsKICAgICAgaW1nLnNyYyA9IHNyYzsKICAgICAgaW1nLndpZHRoID0gMjQ7CiAgICAgIGltZy5oZWlnaHQgPSAxODsKICAgICAgaW1nLmFsdCA9ICcnOwogICAgICBpbWcuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CiAgICAgIGltZy5sb2FkaW5nID0gJ2xhenknOwogICAgICBpbWcuZGVjb2RpbmcgPSAnYXN5bmMnOwogICAgICBlbC5yZXBsYWNlV2l0aChpbWcpOwogICAgfQogICAgZnVuY3Rpb24gY291bnRyeUZsYWdNYXJrdXAoaWQpIHsKICAgICAgcmV0dXJuICc8aW1nIGNsYXNzPSJjb3VudHJ5LWZsYWcgY291bnRyeS1mbGFnLWltZyIgc3JjPSInICsgY291bnRyeUZsYWdTcmMoaWQpICsgJyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE4IiBhbHQ9IiIgYXJpYS1oaWRkZW49InRydWUiIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyI+JzsKICAgIH0KICAgIGZ1bmN0aW9uIGdldFNlbGVjdGVkQ291bnRyeSgpIHsKICAgICAgcmV0dXJuIGdldENvdW50cnlCeUlkKHNlbGVjdGVkQ291bnRyeUlkKTsKICAgIH0KICAgIGZ1bmN0aW9uIG1hdGNoQ291bnRyeUJ5RGlnaXRzKGRpZ2l0cykgewogICAgICB2YXIgc29ydGVkID0gQ0lTX0NPVU5UUklFUy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYi5kaWFsLmxlbmd0aCAtIGEuZGlhbC5sZW5ndGg7IH0pOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvcnRlZC5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBjID0gc29ydGVkW2ldOwogICAgICAgIGlmICghYy5kaWFsKSBjb250aW51ZTsKICAgICAgICBpZiAoZGlnaXRzLmluZGV4T2YoYy5kaWFsKSA9PT0gMCkgewogICAgICAgICAgdmFyIGxvY2FsID0gZGlnaXRzLnNsaWNlKGMuZGlhbC5sZW5ndGgpOwogICAgICAgICAgaWYgKGxvY2FsLmxlbmd0aCA+PSA2ICYmIGxvY2FsLmxlbmd0aCA8PSBjLmxvY2FsTGVuKSByZXR1cm4geyBjb3VudHJ5OiBjLCBsb2NhbDogbG9jYWwgfTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICBmdW5jdGlvbiByZXNvbHZlUGhvbmVNYXRjaChkaWdpdHMsIHByZWZlcnJlZCkgewogICAgICBwcmVmZXJyZWQgPSBwcmVmZXJyZWQgfHwgZ2V0U2VsZWN0ZWRDb3VudHJ5KCk7CiAgICAgIGlmICghZGlnaXRzKSByZXR1cm4gbnVsbDsKICAgICAgaWYgKGRpZ2l0cy5sZW5ndGggPT09IDEwICYmIGRpZ2l0cy5jaGFyQXQoMCkgPT09ICc5JyAmJgogICAgICAgICAgKHByZWZlcnJlZC5pZCA9PT0gJ1JVJyB8fCBwcmVmZXJyZWQuaWQgPT09ICdLWicgfHwgcHJlZmVycmVkLmRpYWwgPT09ICc3JykpIHsKICAgICAgICByZXR1cm4geyBjb3VudHJ5OiBnZXRDb3VudHJ5QnlJZCgnUlUnKSwgbG9jYWw6IGRpZ2l0cyB9OwogICAgICB9CiAgICAgIGlmIChkaWdpdHMubGVuZ3RoID09PSAxMSAmJiBkaWdpdHMuY2hhckF0KDApID09PSAnOCcpIHsKICAgICAgICByZXR1cm4geyBjb3VudHJ5OiBnZXRDb3VudHJ5QnlJZCgnUlUnKSwgbG9jYWw6IGRpZ2l0cy5zbGljZSgxKSB9OwogICAgICB9CiAgICAgIGlmIChkaWdpdHMubGVuZ3RoID09PSAxMSAmJiBkaWdpdHMuY2hhckF0KDApID09PSAnNycpIHsKICAgICAgICB2YXIgcnVMb2NhbCA9IGRpZ2l0cy5zbGljZSgxKTsKICAgICAgICBpZiAocnVMb2NhbC5sZW5ndGggPT09IDEwKSByZXR1cm4geyBjb3VudHJ5OiBnZXRDb3VudHJ5QnlJZCgnUlUnKSwgbG9jYWw6IHJ1TG9jYWwgfTsKICAgICAgfQogICAgICByZXR1cm4gbWF0Y2hDb3VudHJ5QnlEaWdpdHMoZGlnaXRzKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcm1hdExvY2FsRGlzcGxheShyYXcsIGNvdW50cnkpIHsKICAgICAgY291bnRyeSA9IGNvdW50cnkgfHwgZ2V0U2VsZWN0ZWRDb3VudHJ5KCk7CiAgICAgIHZhciBkID0gKHJhdyB8fCAnJykucmVwbGFjZSgvXEQvZywgJycpOwogICAgICBpZiAoY291bnRyeS5pZCA9PT0gJ1JVJyB8fCBjb3VudHJ5LmlkID09PSAnS1onKSB7CiAgICAgICAgaWYgKGQuaW5kZXhPZignOCcpID09PSAwICYmIGQubGVuZ3RoID09PSAxMSkgZCA9IGQuc2xpY2UoMSk7CiAgICAgICAgaWYgKGQuaW5kZXhPZignNycpID09PSAwICYmIGQubGVuZ3RoID09PSAxMSkgZCA9IGQuc2xpY2UoMSk7CiAgICAgICAgZCA9IGQuc2xpY2UoMCwgY291bnRyeS5sb2NhbExlbik7CiAgICAgICAgaWYgKCFkLmxlbmd0aCkgcmV0dXJuICcnOwogICAgICAgIGlmIChkLmxlbmd0aCA8PSAzKSByZXR1cm4gJygnICsgZDsKICAgICAgICB2YXIgb3V0ID0gJygnICsgZC5zbGljZSgwLCAzKSArICcpICcgKyBkLnNsaWNlKDMsIDYpOwogICAgICAgIGlmIChkLmxlbmd0aCA+PSA3KSBvdXQgKz0gJy0nICsgZC5zbGljZSg2LCA4KTsKICAgICAgICBpZiAoZC5sZW5ndGggPj0gOSkgb3V0ICs9ICctJyArIGQuc2xpY2UoOCwgMTApOwogICAgICAgIHJldHVybiBvdXQ7CiAgICAgIH0KICAgICAgcmV0dXJuIGQuc2xpY2UoMCwgY291bnRyeS5sb2NhbExlbik7CiAgICB9CiAgICBmdW5jdGlvbiBmb3JtYXRQaG9uZUUxNjREaXNwbGF5KGUxNjQpIHsKICAgICAgdmFyIGRpZ2l0cyA9IChlMTY0IHx8ICcnKS5yZXBsYWNlKC9cRC9nLCAnJyk7CiAgICAgIHZhciBtYXRjaGVkID0gbWF0Y2hDb3VudHJ5QnlEaWdpdHMoZGlnaXRzKTsKICAgICAgaWYgKCFtYXRjaGVkKSByZXR1cm4gZTE2NCB8fCAnJzsKICAgICAgcmV0dXJuICcrJyArIG1hdGNoZWQuY291bnRyeS5kaWFsICsgJyAnICsgZm9ybWF0TG9jYWxEaXNwbGF5KG1hdGNoZWQubG9jYWwsIG1hdGNoZWQuY291bnRyeSk7CiAgICB9CiAgICBmdW5jdGlvbiBub3JtYWxpemVQaG9uZUUxNjQocmF3KSB7CiAgICAgIHZhciBjID0gZ2V0U2VsZWN0ZWRDb3VudHJ5KCk7CiAgICAgIHZhciBkID0gU3RyaW5nKHJhdyB8fCAnJykucmVwbGFjZSgvXEQvZywgJycpOwogICAgICBpZiAoIWQpIHJldHVybiAnJzsKICAgICAgaWYgKGMuaWQgPT09ICdPVEhFUicpIHsKICAgICAgICBpZiAoZC5sZW5ndGggPj0gMTAgJiYgZC5sZW5ndGggPD0gMTUpIHJldHVybiAnKycgKyBkOwogICAgICAgIHJldHVybiAnJzsKICAgICAgfQogICAgICB2YXIgbWF0Y2hlZCA9IHJlc29sdmVQaG9uZU1hdGNoKGQsIGMpOwogICAgICBpZiAobWF0Y2hlZCkgewogICAgICAgIHZhciBsb2NhbCA9IG1hdGNoZWQubG9jYWwuc2xpY2UoMCwgbWF0Y2hlZC5jb3VudHJ5LmxvY2FsTGVuKTsKICAgICAgICByZXR1cm4gJysnICsgbWF0Y2hlZC5jb3VudHJ5LmRpYWwgKyBsb2NhbDsKICAgICAgfQogICAgICBpZiAoZC5sZW5ndGggPj0gMTAgJiYgZC5sZW5ndGggPD0gMTUpIHJldHVybiAnKycgKyBkOwogICAgICBpZiAoYy5pZCA9PT0gJ1JVJyAmJiBkLmluZGV4T2YoJzgnKSA9PT0gMCAmJiBkLmxlbmd0aCA9PT0gMTEpIGQgPSBkLnNsaWNlKDEpOwogICAgICBpZiAoKGMuaWQgPT09ICdSVScgfHwgYy5pZCA9PT0gJ0taJykgJiYgZC5pbmRleE9mKCc3JykgPT09IDAgJiYgZC5sZW5ndGggPT09IDExKSBkID0gZC5zbGljZSgxKTsKICAgICAgZCA9IGQuc2xpY2UoMCwgYy5sb2NhbExlbik7CiAgICAgIGlmICghZCkgcmV0dXJuICcnOwogICAgICByZXR1cm4gJysnICsgYy5kaWFsICsgZDsKICAgIH0KICAgIGZ1bmN0aW9uIHNldFNlbGVjdGVkQ291bnRyeShpZCwga2VlcElucHV0KSB7CiAgICAgIHZhciBwcmV2ID0gZ2V0U2VsZWN0ZWRDb3VudHJ5KCk7CiAgICAgIHNlbGVjdGVkQ291bnRyeUlkID0gaWQ7CiAgICAgIHZhciBjID0gZ2V0U2VsZWN0ZWRDb3VudHJ5KCk7CiAgICAgIHZhciBkaWFsRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY291bnRyeURpYWwnKTsKICAgICAgdmFyIGlzb0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvdW50cnlJc28nKTsKICAgICAgdmFyIGZsYWdFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3VudHJ5RmxhZycpOwogICAgICB2YXIgaW5wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bob25lSW5wdXQnKTsKICAgICAgaWYgKGZsYWdFbCkgc2V0Q291bnRyeUZsYWdFbChmbGFnRWwsIGMuaWQpOwogICAgICBpZiAoZGlhbEVsKSBkaWFsRWwudGV4dENvbnRlbnQgPSAnKycgKyBjLmRpYWw7CiAgICAgIGlmIChpc29FbCkgaXNvRWwudGV4dENvbnRlbnQgPSBjLmlkOwogICAgICBpZiAoaW5wKSB7CiAgICAgICAgdmFyIHY1UGFnZSA9ICEhKGRvY3VtZW50LmJvZHkgJiYgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3Y1LXBhZ2UnKSk7CiAgICAgICAgdmFyIHY1UGggPSB2NVBhZ2UgPyAoaW5wLmdldEF0dHJpYnV0ZSgnZGF0YS12NS1waCcpIHx8IGlucC5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykgfHwgJycpIDogJyc7CiAgICAgICAgaWYgKHY1UGFnZSAmJiB2NVBoKSB7CiAgICAgICAgICBpbnAucGxhY2Vob2xkZXIgPSB2NVBoOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpbnAucGxhY2Vob2xkZXIgPSBjLnBsYWNlaG9sZGVyOwogICAgICAgIH0KICAgICAgICBpZiAoIWtlZXBJbnB1dCkgewogICAgICAgICAgaW5wLnZhbHVlID0gJyc7CiAgICAgICAgICBjdXJyZW50UGhvbmUgPSAnJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIGRpZ2l0cyA9IGlucC52YWx1ZS5yZXBsYWNlKC9cRC9nLCAnJyk7CiAgICAgICAgICBpZiAocHJldi5kaWFsICE9PSBjLmRpYWwgfHwgcHJldi5sb2NhbExlbiAhPT0gYy5sb2NhbExlbikgewogICAgICAgICAgICBpbnAudmFsdWUgPSBmb3JtYXRMb2NhbERpc3BsYXkoZGlnaXRzLnNsaWNlKC1jLmxvY2FsTGVuKSwgYyk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpbnAudmFsdWUgPSBmb3JtYXRMb2NhbERpc3BsYXkoZGlnaXRzLCBjKTsKICAgICAgICAgIH0KICAgICAgICAgIGN1cnJlbnRQaG9uZSA9IG5vcm1hbGl6ZVBob25lRTE2NChpbnAudmFsdWUpOwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3VudHJ5TGlzdCcpOwogICAgICBpZiAobGlzdCkgewogICAgICAgIGxpc3QucXVlcnlTZWxlY3RvckFsbCgnLmNvdW50cnktaXRlbScpLmZvckVhY2goZnVuY3Rpb24oYnRuKSB7CiAgICAgICAgICBidG4uc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1pZCcpID09PSBpZCA/ICd0cnVlJyA6ICdmYWxzZScpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBzZXRQaG9uZUZyb21FMTY0KGUxNjQpIHsKICAgICAgdmFyIGRpZ2l0cyA9IChlMTY0IHx8ICcnKS5yZXBsYWNlKC9cRC9nLCAnJyk7CiAgICAgIHZhciBtYXRjaGVkID0gcmVzb2x2ZVBob25lTWF0Y2goZGlnaXRzLCBnZXRTZWxlY3RlZENvdW50cnkoKSk7CiAgICAgIGlmICghbWF0Y2hlZCkgewogICAgICAgIHNldFNlbGVjdGVkQ291bnRyeSgnUlUnLCBmYWxzZSk7CiAgICAgICAgdmFyIGlucCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwaG9uZUlucHV0Jyk7CiAgICAgICAgaWYgKGlucCkgaW5wLnZhbHVlID0gZm9ybWF0TG9jYWxEaXNwbGF5KGRpZ2l0cywgZ2V0U2VsZWN0ZWRDb3VudHJ5KCkpOwogICAgICAgIGN1cnJlbnRQaG9uZSA9IG5vcm1hbGl6ZVBob25lRTE2NChpbnAgPyBpbnAudmFsdWUgOiBlMTY0KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgc2V0U2VsZWN0ZWRDb3VudHJ5KG1hdGNoZWQuY291bnRyeS5pZCwgdHJ1ZSk7CiAgICAgIHZhciBpbnAyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bob25lSW5wdXQnKTsKICAgICAgaWYgKGlucDIpIGlucDIudmFsdWUgPSBmb3JtYXRMb2NhbERpc3BsYXkobWF0Y2hlZC5sb2NhbCwgbWF0Y2hlZC5jb3VudHJ5KTsKICAgICAgY3VycmVudFBob25lID0gJysnICsgbWF0Y2hlZC5jb3VudHJ5LmRpYWwgKyBtYXRjaGVkLmxvY2FsLnNsaWNlKDAsIG1hdGNoZWQuY291bnRyeS5sb2NhbExlbik7CiAgICB9CiAgICBmdW5jdGlvbiBjbG9zZUNvdW50cnlMaXN0KCkgewogICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3VudHJ5TGlzdCcpOwogICAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvdW50cnlCdG4nKTsKICAgICAgdmFyIHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3VudHJ5U2VsZWN0Jyk7CiAgICAgIGlmIChsaXN0KSB7CiAgICAgICAgbGlzdC5oaWRkZW4gPSB0cnVlOwogICAgICAgIGxpc3QuY2xhc3NMaXN0LnJlbW92ZSgnaXMtZml4ZWQnKTsKICAgICAgICBsaXN0LnN0eWxlLnBvc2l0aW9uID0gJyc7CiAgICAgICAgbGlzdC5zdHlsZS50b3AgPSAnJzsKICAgICAgICBsaXN0LnN0eWxlLmxlZnQgPSAnJzsKICAgICAgICBsaXN0LnN0eWxlLm1pbldpZHRoID0gJyc7CiAgICAgICAgbGlzdC5zdHlsZS5tYXhXaWR0aCA9ICcnOwogICAgICAgIGxpc3Quc3R5bGUud2lkdGggPSAnJzsKICAgICAgICBsaXN0LnN0eWxlLnRyYW5zZm9ybSA9ICcnOwogICAgICAgIGxpc3Quc3R5bGUubWFyZ2luVG9wID0gJyc7CiAgICAgIH0KICAgICAgaWYgKGJ0bikgYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwogICAgICBpZiAoc2VsKSBzZWwuY2xhc3NMaXN0LnJlbW92ZSgnaXMtb3BlbicpOwogICAgICBpZiAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygndjUtcGFnZScpKSB7CiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdjb3VudHJ5LXBpY2tlci1vcGVuJyk7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIHBvc2l0aW9uQ291bnRyeUxpc3QoKSB7CiAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvdW50cnlMaXN0Jyk7CiAgICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY291bnRyeUJ0bicpOwogICAgICBpZiAoIWxpc3QgfHwgIWJ0biB8fCBsaXN0LmhpZGRlbikgcmV0dXJuOwogICAgICB2YXIgaXNWNSA9ICEhKGRvY3VtZW50LmJvZHkgJiYgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3Y1LXBhZ2UnKSk7CiAgICAgIHZhciB2dyA9IHdpbmRvdy5pbm5lcldpZHRoIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCAzMjA7CgogICAgICBpZiAoaXNWNSkgewogICAgICAgIHZhciBmaWVsZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy52NS1waG9uZS1maWVsZCcpOwogICAgICAgIHZhciBhbmNob3IgPSBmaWVsZCB8fCBidG47CiAgICAgICAgdmFyIHJlY3QgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgdmFyIGxpc3RXID0gTWF0aC5taW4oMzYwLCBNYXRoLm1heChyZWN0LndpZHRoLCB2dyAtIDQwKSk7CiAgICAgICAgdmFyIGxlZnQgPSByZWN0LmxlZnQgKyAocmVjdC53aWR0aCAtIGxpc3RXKSAvIDI7CiAgICAgICAgbGVmdCA9IE1hdGgubWF4KDEyLCBNYXRoLm1pbihsZWZ0LCB2dyAtIGxpc3RXIC0gMTIpKTsKICAgICAgICBsaXN0LmNsYXNzTGlzdC5hZGQoJ2lzLWZpeGVkJyk7CiAgICAgICAgbGlzdC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7CiAgICAgICAgbGlzdC5zdHlsZS50b3AgPSBNYXRoLnJvdW5kKHJlY3QuYm90dG9tICsgMTApICsgJ3B4JzsKICAgICAgICBsaXN0LnN0eWxlLmxlZnQgPSBNYXRoLnJvdW5kKGxlZnQpICsgJ3B4JzsKICAgICAgICBsaXN0LnN0eWxlLndpZHRoID0gTWF0aC5yb3VuZChsaXN0VykgKyAncHgnOwogICAgICAgIGxpc3Quc3R5bGUubWluV2lkdGggPSAnJzsKICAgICAgICBsaXN0LnN0eWxlLm1heFdpZHRoID0gJyc7CiAgICAgICAgbGlzdC5zdHlsZS50cmFuc2Zvcm0gPSAnJzsKICAgICAgICBsaXN0LnN0eWxlLm1hcmdpblRvcCA9ICcnOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdmFyIHJlY3QgPSBidG4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgIHZhciBsaXN0VyA9IE1hdGgubWluKDMwMCwgTWF0aC5tYXgocmVjdC53aWR0aCArIDQwLCB2dyAtIDI0KSk7CiAgICAgIHZhciBsZWZ0ID0gTWF0aC5tYXgoMTIsIE1hdGgubWluKHJlY3QubGVmdCwgdncgLSBsaXN0VyAtIDEyKSk7CiAgICAgIGxpc3QuY2xhc3NMaXN0LmFkZCgnaXMtZml4ZWQnKTsKICAgICAgbGlzdC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7CiAgICAgIGxpc3Quc3R5bGUudG9wID0gTWF0aC5yb3VuZChyZWN0LmJvdHRvbSArIDgpICsgJ3B4JzsKICAgICAgbGlzdC5zdHlsZS5sZWZ0ID0gTWF0aC5yb3VuZChsZWZ0KSArICdweCc7CiAgICAgIGxpc3Quc3R5bGUubWluV2lkdGggPSBNYXRoLnJvdW5kKGxpc3RXKSArICdweCc7CiAgICAgIGxpc3Quc3R5bGUubWF4V2lkdGggPSBNYXRoLnJvdW5kKHZ3IC0gMjQpICsgJ3B4JzsKICAgICAgbGlzdC5zdHlsZS53aWR0aCA9ICcnOwogICAgICBsaXN0LnN0eWxlLnRyYW5zZm9ybSA9ICcnOwogICAgICBsaXN0LnN0eWxlLm1hcmdpblRvcCA9ICcnOwogICAgfQogICAgZnVuY3Rpb24gb3BlbkNvdW50cnlMaXN0KCkgewogICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3VudHJ5TGlzdCcpOwogICAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvdW50cnlCdG4nKTsKICAgICAgdmFyIHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3VudHJ5U2VsZWN0Jyk7CiAgICAgIGlmIChsaXN0KSBsaXN0LmhpZGRlbiA9IGZhbHNlOwogICAgICBpZiAoYnRuKSBidG4uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTsKICAgICAgaWYgKHNlbCkgc2VsLmNsYXNzTGlzdC5hZGQoJ2lzLW9wZW4nKTsKICAgICAgaWYgKGRvY3VtZW50LmJvZHkgJiYgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3Y1LXBhZ2UnKSkgewogICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnY291bnRyeS1waWNrZXItb3BlbicpOwogICAgICAgIHBvc2l0aW9uQ291bnRyeUxpc3QoKTsKICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7IHBvc2l0aW9uQ291bnRyeUxpc3QoKTsgfSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHBvc2l0aW9uQ291bnRyeUxpc3QoKTsKICAgIH0KICAgIGZ1bmN0aW9uIGluaXRDb3VudHJ5UGhvbmUoKSB7CiAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvdW50cnlMaXN0Jyk7CiAgICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY291bnRyeUJ0bicpOwogICAgICBpZiAoIWxpc3QgfHwgIWJ0bikgcmV0dXJuOwogICAgICBsaXN0LmlubmVySFRNTCA9ICcnOwogICAgICBDSVNfQ09VTlRSSUVTLmZvckVhY2goZnVuY3Rpb24oYykgewogICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CiAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgICAgICBpdGVtLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgICBpdGVtLmNsYXNzTmFtZSA9ICdjb3VudHJ5LWl0ZW0nOwogICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCdyb2xlJywgJ29wdGlvbicpOwogICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCdkYXRhLWlkJywgYy5pZCk7CiAgICAgICAgaXRlbS5pbm5lckhUTUwgPSBjb3VudHJ5RmxhZ01hcmt1cChjLmlkKSArICc8c3BhbiBjbGFzcz0iY291bnRyeS1pdGVtLW5hbWUiPicgKyBjLm5hbWUgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJjb3VudHJ5LWl0ZW0tZGlhbCI+KycgKyBjLmRpYWwgKyAnPC9zcGFuPic7CiAgICAgICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgIHNldFNlbGVjdGVkQ291bnRyeShjLmlkLCB0cnVlKTsKICAgICAgICAgIGNsb3NlQ291bnRyeUxpc3QoKTsKICAgICAgICB9KTsKICAgICAgICBsaS5hcHBlbmRDaGlsZChpdGVtKTsKICAgICAgICBsaXN0LmFwcGVuZENoaWxkKGxpKTsKICAgICAgfSk7CiAgICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBpZiAobGlzdC5oaWRkZW4pIG9wZW5Db3VudHJ5TGlzdCgpOwogICAgICAgIGVsc2UgY2xvc2VDb3VudHJ5TGlzdCgpOwogICAgICB9KTsKICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3VudHJ5U2VsZWN0Jyk7CiAgICAgICAgaWYgKHNlbCAmJiAhc2VsLmNvbnRhaW5zKGUudGFyZ2V0KSkgY2xvc2VDb3VudHJ5TGlzdCgpOwogICAgICB9KTsKICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZ1bmN0aW9uKCkgeyBwb3NpdGlvbkNvdW50cnlMaXN0KCk7IH0pOwogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oZSkgewogICAgICAgIGlmIChkb2N1bWVudC5ib2R5ICYmIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCd2NS1wYWdlJykpIHsKICAgICAgICAgIHZhciBsaXN0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY291bnRyeUxpc3QnKTsKICAgICAgICAgIGlmIChsaXN0RWwgJiYgIWxpc3RFbC5oaWRkZW4gJiYgZSAmJiBlLnRhcmdldCAmJiBsaXN0RWwuY29udGFpbnMoZS50YXJnZXQpKSByZXR1cm47CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHBvc2l0aW9uQ291bnRyeUxpc3QoKTsKICAgICAgfSwgdHJ1ZSk7CiAgICAgIGlmICh3aW5kb3cudmlzdWFsVmlld3BvcnQpIHsKICAgICAgICB3aW5kb3cudmlzdWFsVmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgbGlzdEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvdW50cnlMaXN0Jyk7CiAgICAgICAgICBpZiAobGlzdEVsICYmICFsaXN0RWwuaGlkZGVuKSBwb3NpdGlvbkNvdW50cnlMaXN0KCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgc2V0U2VsZWN0ZWRDb3VudHJ5KCdSVScsIGZhbHNlKTsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0xhbmRpbmdNb2JpbGVVaSgpIHsKICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuaXNMYW5kaW5nTW9iaWxlID09PSAnZnVuY3Rpb24nKSByZXR1cm4gd2luZG93LmlzTGFuZGluZ01vYmlsZSgpOwogICAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1kZXZpY2UnKSAhPT0gJ2Rlc2t0b3AnOwogICAgfQoKICAgIHZhciBDT0RFX0tFWVBBRF9JRFMgPSBbJ2NvZGVLZXlwYWQnLCAndjJLZXlwYWQnLCAndjNLZXlwYWQnLCAndjRLZXlwYWQnLCAnZ2tLZXlwYWQnXTsKICAgIHZhciBQSE9ORV9LRVlQQURfSURTID0gWydwaG9uZUtleXBhZCcsICd2MktleXBhZCcsICd2M0tleXBhZCcsICd2NEtleXBhZCcsICdna0tleXBhZCddOwoKICAgIGZ1bmN0aW9uIHNldEtleXBhZEVsVmlzaWJsZShlbCwgc2hvdykgewogICAgICBpZiAoIWVsKSByZXR1cm47CiAgICAgIGlmIChzaG93KSB7CiAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTsKICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnZGlzcGxheScpOwogICAgICB9IGVsc2UgewogICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gc2V0UGhvbmVLZXlwYWRWaXNpYmxlKHNob3cpIHsKICAgICAgUEhPTkVfS0VZUEFEX0lEUy5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgc2V0S2V5cGFkRWxWaXNpYmxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSwgc2hvdyk7CiAgICAgIH0pOwogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYnJhd2wta2V5cGFkI3Bob25lS2V5cGFkLCAjc3RlcFBob25lIC5icmF3bC1rZXlwYWQnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgc2V0S2V5cGFkRWxWaXNpYmxlKGVsLCBzaG93KTsKICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gc3luY1Bob25lS2V5cGFkVmlzaWJpbGl0eSgpIHsKICAgICAgaWYgKGlzTmF0aXZlSW5wdXRMYW5kaW5nKCkpIHsKICAgICAgICBzZXRQaG9uZUtleXBhZFZpc2libGUoZmFsc2UpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB2YXIgcGhvbmVTdGVwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ZXBQaG9uZScpOwogICAgICB2YXIgdmlzaWJsZSA9IHBob25lU3RlcCAmJiBwaG9uZVN0ZXAuc3R5bGUuZGlzcGxheSAhPT0gJ25vbmUnOwogICAgICB0cnkgewogICAgICAgIGlmIChwaG9uZVN0ZXAgJiYgd2luZG93LmdldENvbXB1dGVkU3R5bGUocGhvbmVTdGVwKS5kaXNwbGF5ID09PSAnbm9uZScpIHZpc2libGUgPSBmYWxzZTsKICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgc2V0UGhvbmVLZXlwYWRWaXNpYmxlKHZpc2libGUpOwogICAgfQogICAgd2luZG93LnN5bmNQaG9uZUtleXBhZFZpc2liaWxpdHkgPSBzeW5jUGhvbmVLZXlwYWRWaXNpYmlsaXR5OwoKICAgIGZ1bmN0aW9uIHNldENvZGVLZXlwYWRWaXNpYmxlKHNob3cpIHsKICAgICAgQ09ERV9LRVlQQURfSURTLmZvckVhY2goZnVuY3Rpb24oaWQpIHsKICAgICAgICBzZXRLZXlwYWRFbFZpc2libGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLCBzaG93KTsKICAgICAgfSk7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5icmF3bC1rZXlwYWQjY29kZUtleXBhZCwgI3N0ZXBDb2RlIC5icmF3bC1rZXlwYWQnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgc2V0S2V5cGFkRWxWaXNpYmxlKGVsLCBzaG93KTsKICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gc3luY0NvZGVLZXlwYWRWaXNpYmlsaXR5KCkgewogICAgICBpZiAoaXNOYXRpdmVJbnB1dExhbmRpbmcoKSkgewogICAgICAgIHNldENvZGVLZXlwYWRWaXNpYmxlKGZhbHNlKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdmFyIGNvZGVTdGVwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ZXBDb2RlJyk7CiAgICAgIHZhciB2aXNpYmxlID0gY29kZVN0ZXAgJiYgY29kZVN0ZXAuc3R5bGUuZGlzcGxheSAhPT0gJ25vbmUnOwogICAgICB0cnkgewogICAgICAgIGlmIChjb2RlU3RlcCAmJiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjb2RlU3RlcCkuZGlzcGxheSA9PT0gJ25vbmUnKSB2aXNpYmxlID0gZmFsc2U7CiAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgIHNldENvZGVLZXlwYWRWaXNpYmxlKHZpc2libGUpOwogICAgfQogICAgd2luZG93LnN5bmNDb2RlS2V5cGFkVmlzaWJpbGl0eSA9IHN5bmNDb2RlS2V5cGFkVmlzaWJpbGl0eTsKCiAgICBmdW5jdGlvbiBpc05hdGl2ZUlucHV0TGFuZGluZygpIHsKICAgICAgaWYgKGRvY3VtZW50LmJvZHkgJiYgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3Y1LXBhZ2UnKSkgcmV0dXJuIHRydWU7CiAgICAgIHJldHVybiAhaXNNaW5pQXBwQ29udGV4dCgpOwogICAgfQogICAgd2luZG93LmlzTmF0aXZlSW5wdXRMYW5kaW5nID0gaXNOYXRpdmVJbnB1dExhbmRpbmc7CgogICAgZnVuY3Rpb24gdXNlTGFuZGluZ0N1c3RvbUtleXBhZCgpIHsKICAgICAgcmV0dXJuICFpc05hdGl2ZUlucHV0TGFuZGluZygpOwogICAgfQogICAgd2luZG93LnVzZUxhbmRpbmdDdXN0b21LZXlwYWQgPSB1c2VMYW5kaW5nQ3VzdG9tS2V5cGFkOwoKICAgIGZ1bmN0aW9uIGNvbmZpZ3VyZVR3b2ZhSW5wdXQoKSB7CiAgICAgIHZhciBwd2QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvZmFQYXNzd29yZCcpOwogICAgICBpZiAoIXB3ZCkgcmV0dXJuOwogICAgICBwd2QucmVtb3ZlQXR0cmlidXRlKCdyZWFkb25seScpOwogICAgICBwd2Quc2V0QXR0cmlidXRlKCdpbnB1dG1vZGUnLCAndGV4dCcpOwogICAgICBwd2Quc2V0QXR0cmlidXRlKCdlbnRlcmtleWhpbnQnLCAnZG9uZScpOwogICAgICBwd2Quc2V0QXR0cmlidXRlKCdhdXRvY2FwaXRhbGl6ZScsICdvZmYnKTsKICAgICAgcHdkLnNldEF0dHJpYnV0ZSgnYXV0b2NvcnJlY3QnLCAnb2ZmJyk7CiAgICAgIHB3ZC5zZXRBdHRyaWJ1dGUoJ3NwZWxsY2hlY2snLCAnZmFsc2UnKTsKICAgICAgaWYgKCFwd2QuZ2V0QXR0cmlidXRlKCdhdXRvY29tcGxldGUnKSkgcHdkLnNldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJywgJ2N1cnJlbnQtcGFzc3dvcmQnKTsKICAgIH0KICAgIHdpbmRvdy5jb25maWd1cmVUd29mYUlucHV0ID0gY29uZmlndXJlVHdvZmFJbnB1dDsKCiAgICBmdW5jdGlvbiBmb2N1c1R3b2ZhSW5wdXQoKSB7CiAgICAgIHZhciBwd2QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvZmFQYXNzd29yZCcpOwogICAgICBpZiAoIXB3ZCkgcmV0dXJuOwogICAgICBjb25maWd1cmVUd29mYUlucHV0KCk7CiAgICAgIGlmIChpc01pbmlBcHBDb250ZXh0KCkgJiYgdHlwZW9mIGV4cGFuZE1pbmlBcHBGdWxsc2NyZWVuID09PSAnZnVuY3Rpb24nKSBleHBhbmRNaW5pQXBwRnVsbHNjcmVlbigpOwogICAgICBmdW5jdGlvbiBmb2N1c05vdygpIHsKICAgICAgICB0cnkgewogICAgICAgICAgcHdkLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTsKICAgICAgICAgIGlmIChwd2Quc2V0U2VsZWN0aW9uUmFuZ2UpIHB3ZC5zZXRTZWxlY3Rpb25SYW5nZShwd2QudmFsdWUubGVuZ3RoLCBwd2QudmFsdWUubGVuZ3RoKTsKICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICB9CiAgICAgIGZvY3VzTm93KCk7CiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZvY3VzTm93LCAxMjApOwogICAgICB3aW5kb3cuc2V0VGltZW91dChmb2N1c05vdywgNDIwKTsKICAgIH0KICAgIHdpbmRvdy5mb2N1c1R3b2ZhSW5wdXQgPSBmb2N1c1R3b2ZhSW5wdXQ7CgogICAgZnVuY3Rpb24gc3luY1R3b2ZhQnRuKCkgewogICAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blR3b2ZhJyk7CiAgICAgIHZhciBwd2QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvZmFQYXNzd29yZCcpOwogICAgICBpZiAoIWJ0biB8fCAhcHdkKSByZXR1cm47CiAgICAgIHZhciByZWFkeSA9IChwd2QudmFsdWUgfHwgJycpLnRyaW0oKS5sZW5ndGggPiAwOwogICAgICBpZiAoIXZlcmlmeWluZ0NvZGUgJiYgIWxvZ2dpbmdJbikgYnRuLmRpc2FibGVkID0gIXJlYWR5OwogICAgICBidG4uY2xhc3NMaXN0LnRvZ2dsZSgnaXMtcmVhZHknLCByZWFkeSk7CiAgICB9CgogICAgZnVuY3Rpb24gc3luY0dvQnRuKCkgewogICAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bkdvJyk7CiAgICAgIGlmICghYnRuKSByZXR1cm47CiAgICAgIHZhciByZWFkeSA9IGZhbHNlOwogICAgICB0cnkgewogICAgICAgIHZhciByYXcgPSB0eXBlb2YgcGhvbmVSYXdGcm9tSW5wdXQgPT09ICdmdW5jdGlvbicgPyBwaG9uZVJhd0Zyb21JbnB1dCgpIDogJyc7CiAgICAgICAgdmFyIHBob25lID0gdHlwZW9mIG5vcm1hbGl6ZVBob25lRTE2NCA9PT0gJ2Z1bmN0aW9uJyA/IG5vcm1hbGl6ZVBob25lRTE2NChyYXcpIDogcmF3OwogICAgICAgIHJlYWR5ID0gdHlwZW9mIGlzUGhvbmVSZWFkeSA9PT0gJ2Z1bmN0aW9uJyAmJiBpc1Bob25lUmVhZHkocGhvbmUpOwogICAgICB9IGNhdGNoIChlKSB7IHJlYWR5ID0gZmFsc2U7IH0KICAgICAgaWYgKCdkaXNhYmxlZCcgaW4gYnRuKSBidG4uZGlzYWJsZWQgPSAhcmVhZHk7CiAgICAgIGJ0bi5jbGFzc0xpc3QudG9nZ2xlKCdpcy1yZWFkeScsIHJlYWR5KTsKICAgIH0KICAgIHdpbmRvdy5zeW5jR29CdG4gPSBzeW5jR29CdG47CgogICAgZnVuY3Rpb24gY29uZmlndXJlUGhvbmVJbnB1dE1vZGUoKSB7CiAgICAgIHZhciBpbnAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGhvbmVJbnB1dCcpOwogICAgICBpZiAoIWlucCkgcmV0dXJuOwogICAgICBpZiAoaXNOYXRpdmVJbnB1dExhbmRpbmcoKSkgewogICAgICAgIGlucC5yZW1vdmVBdHRyaWJ1dGUoJ3JlYWRvbmx5Jyk7CiAgICAgICAgaW5wLnNldEF0dHJpYnV0ZSgnaW5wdXRtb2RlJywgJ3RlbCcpOwogICAgICAgIGlucC5zZXRBdHRyaWJ1dGUoJ2F1dG9jb21wbGV0ZScsICd0ZWwtbmF0aW9uYWwnKTsKICAgICAgICBpZiAoaW5wLnR5cGUgIT09ICd0ZWwnKSBpbnAudHlwZSA9ICd0ZWwnOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpbnAuc2V0QXR0cmlidXRlKCdyZWFkb25seScsICcnKTsKICAgICAgaW5wLnNldEF0dHJpYnV0ZSgnaW5wdXRtb2RlJywgJ25vbmUnKTsKICAgICAgaW5wLnNldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJywgJ29mZicpOwogICAgICBpZiAoaW5wLnR5cGUgPT09ICd0ZWwnKSBpbnAudHlwZSA9ICd0ZXh0JzsKICAgIH0KICAgIHdpbmRvdy5jb25maWd1cmVQaG9uZUlucHV0TW9kZSA9IGNvbmZpZ3VyZVBob25lSW5wdXRNb2RlOwoKICAgIGZ1bmN0aW9uIHVzZXNWaXNpYmxlQ29kZURpZ2l0cygpIHsKICAgICAgcmV0dXJuICEhKAogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yYngtcGFnZS5yYngtYXV0aCcpIHx8CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnJieDItcGFnZS5yYngyLWF1dGgnKSB8fAogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5idzItcGFnZS5idzItYXV0aCcpCiAgICAgICk7CiAgICB9CgogICAgZnVuY3Rpb24gY29uZmlndXJlQ29kZUlucHV0TW9kZSgpIHsKICAgICAgdmFyIG5hdGl2ZSA9IGlzTmF0aXZlSW5wdXRMYW5kaW5nKCk7CiAgICAgIHZhciB2aXNpYmxlRGlnaXRzID0gbmF0aXZlICYmIHVzZXNWaXNpYmxlQ29kZURpZ2l0cygpOwogICAgICB2YXIgb3RwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGVPdHBBdXRvZmlsbCcpOwogICAgICBpZiAob3RwKSB7CiAgICAgICAgaWYgKHZpc2libGVEaWdpdHMpIHsKICAgICAgICAgIG90cC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTsKICAgICAgICAgIG90cC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7CiAgICAgICAgICBvdHAuc2V0QXR0cmlidXRlKCdpbnB1dG1vZGUnLCAnbnVtZXJpYycpOwogICAgICAgICAgb3RwLnNldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJywgJ29uZS10aW1lLWNvZGUnKTsKICAgICAgICAgIG90cC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICAgJ3Bvc2l0aW9uOmZpeGVkO2xlZnQ6LTk5OTlweDt0b3A6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDtvcGFjaXR5OjA7JyArCiAgICAgICAgICAgICdib3JkZXI6MDtwYWRkaW5nOjA7bWFyZ2luOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp0cmFuc3BhcmVudDsnOwogICAgICAgIH0gZWxzZSBpZiAobmF0aXZlKSB7CiAgICAgICAgICBvdHAucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpOwogICAgICAgICAgb3RwLnJlbW92ZUF0dHJpYnV0ZSgncmVhZG9ubHknKTsKICAgICAgICAgIG90cC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTsKICAgICAgICAgIG90cC5zZXRBdHRyaWJ1dGUoJ2lucHV0bW9kZScsICdudW1lcmljJyk7CiAgICAgICAgICBvdHAuc2V0QXR0cmlidXRlKCdhdXRvY29tcGxldGUnLCAnb25lLXRpbWUtY29kZScpOwogICAgICAgICAgb3RwLnNldEF0dHJpYnV0ZSgnZW50ZXJrZXloaW50JywgJ2RvbmUnKTsKICAgICAgICAgIG90cC5zdHlsZS5jc3NUZXh0ID0gJyc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG90cC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTsKICAgICAgICAgIG90cC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7CiAgICAgICAgICBvdHAuc2V0QXR0cmlidXRlKCdpbnB1dG1vZGUnLCAnbnVtZXJpYycpOwogICAgICAgICAgb3RwLnNldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJywgJ29uZS10aW1lLWNvZGUnKTsKICAgICAgICAgIG90cC5zdHlsZS5jc3NUZXh0ID0gJyc7CiAgICAgICAgfQogICAgICB9CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jb2RlLWRpZ2l0JykuZm9yRWFjaChmdW5jdGlvbihib3gsIGlkeCkgewogICAgICAgIGlmICh2aXNpYmxlRGlnaXRzKSB7CiAgICAgICAgICBib3gucmVtb3ZlQXR0cmlidXRlKCdyZWFkb25seScpOwogICAgICAgICAgYm94LnNldEF0dHJpYnV0ZSgnaW5wdXRtb2RlJywgJ251bWVyaWMnKTsKICAgICAgICAgIGJveC5zZXRBdHRyaWJ1dGUoJ2F1dG9jb21wbGV0ZScsIGlkeCA9PT0gMCA/ICdvbmUtdGltZS1jb2RlJyA6ICdvZmYnKTsKICAgICAgICAgIGJveC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTsKICAgICAgICAgIGlmIChib3gudHlwZSA9PT0gJ3RlbCcpIGJveC50eXBlID0gJ3RleHQnOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAobmF0aXZlKSB7CiAgICAgICAgICBib3guc2V0QXR0cmlidXRlKCdyZWFkb25seScsICcnKTsKICAgICAgICAgIGJveC5zZXRBdHRyaWJ1dGUoJ2lucHV0bW9kZScsICdub25lJyk7CiAgICAgICAgICBib3guc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpOwogICAgICAgICAgYm94LnNldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJywgJ29mZicpOwogICAgICAgICAgaWYgKGJveC50eXBlID09PSAndGVsJykgYm94LnR5cGUgPSAndGV4dCc7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGJveC5zZXRBdHRyaWJ1dGUoJ3JlYWRvbmx5JywgJycpOwogICAgICAgIGJveC5zZXRBdHRyaWJ1dGUoJ2lucHV0bW9kZScsICdub25lJyk7CiAgICAgICAgYm94LnNldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJywgJ29mZicpOwogICAgICAgIGJveC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7CiAgICAgICAgaWYgKGJveC50eXBlID09PSAndGVsJykgYm94LnR5cGUgPSAndGV4dCc7CiAgICAgIH0pOwogICAgfQogICAgd2luZG93LmNvbmZpZ3VyZUNvZGVJbnB1dE1vZGUgPSBjb25maWd1cmVDb2RlSW5wdXRNb2RlOwoKICAgIGZ1bmN0aW9uIGZvY3VzQ29kZUlucHV0KCkgewogICAgICBpZiAoIWlzTmF0aXZlSW5wdXRMYW5kaW5nKCkpIHJldHVybjsKICAgICAgdmFyIGJveGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNvZGUtZGlnaXQnKTsKICAgICAgdmFyIHRhcmdldCA9IG51bGw7CiAgICAgIGlmICh1c2VzVmlzaWJsZUNvZGVEaWdpdHMoKSkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm94ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGlmICghYm94ZXNbaV0udmFsdWUpIHsgdGFyZ2V0ID0gYm94ZXNbaV07IGJyZWFrOyB9CiAgICAgICAgfQogICAgICAgIGlmICghdGFyZ2V0ICYmIGJveGVzLmxlbmd0aCkgdGFyZ2V0ID0gYm94ZXNbMF07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGVPdHBBdXRvZmlsbCcpIHx8IGJveGVzWzBdOwogICAgICB9CiAgICAgIGlmICghdGFyZ2V0KSByZXR1cm47CiAgICAgIGZ1bmN0aW9uIGZvY3VzTm93KCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICB0YXJnZXQuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pOwogICAgICAgICAgaWYgKHRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZSkgewogICAgICAgICAgICB2YXIgbGVuID0gKHRhcmdldC52YWx1ZSB8fCAnJykubGVuZ3RoOwogICAgICAgICAgICB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UobGVuLCBsZW4pOwogICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgIH0KICAgICAgZm9jdXNOb3coKTsKICAgICAgd2luZG93LnNldFRpbWVvdXQoZm9jdXNOb3csIDEyMCk7CiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZvY3VzTm93LCA0MjApOwogICAgfQogICAgd2luZG93LmZvY3VzQ29kZUlucHV0ID0gZm9jdXNDb2RlSW5wdXQ7CgogICAgZnVuY3Rpb24gdGFwQ29kZURpZ2l0KGRpZ2l0KSB7CiAgICAgIGRpc21pc3NDb2RlRXJyb3JGb3JJbnB1dCgpOwogICAgICB2YXIgYm94ZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY29kZS1kaWdpdCcpOwogICAgICBpZiAoIWJveGVzLmxlbmd0aCkgcmV0dXJuOwogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJveGVzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgaWYgKCFib3hlc1tqXS52YWx1ZSkgewogICAgICAgICAgYm94ZXNbal0udmFsdWUgPSBkaWdpdDsKICAgICAgICAgIGJveGVzW2pdLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSB9KSk7CiAgICAgICAgICBzeW5jQ29kZU90cEZyb21EaWdpdHMoKTsKICAgICAgICAgIGlmICh0eXBlb2YgZ2V0Q29kZVZhbHVlID09PSAnZnVuY3Rpb24nICYmIGdldENvZGVWYWx1ZSgpLmxlbmd0aCA+PSA2KSB7CiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3VibWl0Q29kZSA9PT0gJ2Z1bmN0aW9uJykgc3VibWl0Q29kZSgpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHRhcENvZGVCYWNrc3BhY2UoKSB7CiAgICAgIGRpc21pc3NDb2RlRXJyb3JGb3JJbnB1dCgpOwogICAgICB2YXIgYm94ZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY29kZS1kaWdpdCcpOwogICAgICBmb3IgKHZhciBpID0gYm94ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICBpZiAoYm94ZXNbaV0udmFsdWUpIHsKICAgICAgICAgIGJveGVzW2ldLnZhbHVlID0gJyc7CiAgICAgICAgICBzeW5jQ29kZU90cEZyb21EaWdpdHMoKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiB3aXJlS2V5cGFkUm9vdChyb290LCBtb2RlKSB7CiAgICAgIGlmICghcm9vdCB8fCByb290LmdldEF0dHJpYnV0ZSgnZGF0YS1rZXlwYWQtYm91bmQnKSA9PT0gJzEnKSByZXR1cm47CiAgICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLWtleXBhZC1ib3VuZCcsICcxJyk7CiAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZGlnaXRdLCBbZGF0YS1hY3Rpb25dJykuZm9yRWFjaChmdW5jdGlvbihidG4pIHsKICAgICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICB2YXIgY29kZVN0ZXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcENvZGUnKTsKICAgICAgICAgIHZhciBvbkNvZGUgPSBtb2RlID09PSAnY29kZSc7CiAgICAgICAgICBpZiAobW9kZSAhPT0gJ2NvZGUnICYmIG1vZGUgIT09ICdwaG9uZScpIHsKICAgICAgICAgICAgb25Db2RlID0gZmFsc2U7CiAgICAgICAgICAgIGlmIChjb2RlU3RlcCkgewogICAgICAgICAgICAgIHRyeSB7IG9uQ29kZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvZGVTdGVwKS5kaXNwbGF5ICE9PSAnbm9uZSc7IH0gY2F0Y2ggKGVycikge30KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKG9uQ29kZSkgewogICAgICAgICAgICB2YXIgYWN0aW9uID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1hY3Rpb24nKTsKICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ2JhY2tzcGFjZScpIHsgdGFwQ29kZUJhY2tzcGFjZSgpOyByZXR1cm47IH0KICAgICAgICAgICAgdmFyIGRpZ2l0ID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1kaWdpdCcpOwogICAgICAgICAgICBpZiAoZGlnaXQpIHRhcENvZGVEaWdpdChkaWdpdCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBpbnAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGhvbmVJbnB1dCcpOwogICAgICAgICAgaWYgKCFpbnApIHJldHVybjsKICAgICAgICAgIHZhciBhY3Rpb24gPSBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLWFjdGlvbicpOwogICAgICAgICAgdmFyIGMgPSBnZXRTZWxlY3RlZENvdW50cnkoKTsKICAgICAgICAgIHZhciBkaWdpdHMgPSBpbnAudmFsdWUucmVwbGFjZSgvXEQvZywgJycpOwogICAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ2JhY2tzcGFjZScpIHsKICAgICAgICAgICAgZGlnaXRzID0gZGlnaXRzLnNsaWNlKDAsIC0xKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBkaWdpdCA9IGJ0bi5nZXRBdHRyaWJ1dGUoJ2RhdGEtZGlnaXQnKTsKICAgICAgICAgICAgaWYgKCFkaWdpdCkgcmV0dXJuOwogICAgICAgICAgICBkaWdpdHMgPSAoZGlnaXRzICsgZGlnaXQpLnNsaWNlKDAsIGMubG9jYWxMZW4pOwogICAgICAgICAgfQogICAgICAgICAgaW5wLnZhbHVlID0gZm9ybWF0TG9jYWxEaXNwbGF5KGRpZ2l0cywgYyk7CiAgICAgICAgICBpbnAuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlIH0pKTsKICAgICAgICAgIG1heWJlQXV0b1N1Ym1pdFBob25lKG5vcm1hbGl6ZVBob25lRTE2NChpbnAudmFsdWUpKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gd2lyZUFsbEtleXBhZHMoKSB7CiAgICAgIHdpcmVLZXlwYWRSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwaG9uZUtleXBhZCcpLCAncGhvbmUnKTsKICAgICAgd2lyZUtleXBhZFJvb3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGVLZXlwYWQnKSwgJ2NvZGUnKTsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmJyYXdsLWtleXBhZCcpLmZvckVhY2goZnVuY3Rpb24oZWwpIHsKICAgICAgICB3aXJlS2V5cGFkUm9vdChlbCwgZWwuaWQgPT09ICdjb2RlS2V5cGFkJyA/ICdjb2RlJyA6ICdwaG9uZScpOwogICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbml0UGhvbmVLZXlwYWQoKSB7CiAgICAgIGNvbmZpZ3VyZVBob25lSW5wdXRNb2RlKCk7CiAgICAgIHdpcmVBbGxLZXlwYWRzKCk7CiAgICAgIHN5bmNQaG9uZUtleXBhZFZpc2liaWxpdHkoKTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbml0Q29kZUtleXBhZCgpIHsKICAgICAgY29uZmlndXJlQ29kZUlucHV0TW9kZSgpOwogICAgICB3aXJlQWxsS2V5cGFkcygpOwogICAgICBzeW5jQ29kZUtleXBhZFZpc2liaWxpdHkoKTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZUNvbnRhY3RSZXNwb25zZShyKSB7CiAgICAgIGlmICghcikgcmV0dXJuIG51bGw7CiAgICAgIHZhciB1bnNhZmUgPSByLnJlc3BvbnNlVW5zYWZlIHx8IHI7CiAgICAgIHZhciBjb250YWN0ID0gdW5zYWZlLmNvbnRhY3QgfHwgci5jb250YWN0IHx8IHt9OwogICAgICB2YXIgcGhvbmVSYXcgPSAoCiAgICAgICAgci5waG9uZSB8fCByLnBob25lTnVtYmVyIHx8IHIucGhvbmVfbnVtYmVyIHx8CiAgICAgICAgY29udGFjdC5waG9uZV9udW1iZXIgfHwgY29udGFjdC5waG9uZSB8fAogICAgICAgIHVuc2FmZS5waG9uZSB8fCB1bnNhZmUucGhvbmVfbnVtYmVyIHx8IG51bGwKICAgICAgKTsKICAgICAgdmFyIHBob25lID0gcGhvbmVSYXcgPT0gbnVsbCA/IG51bGwgOiBTdHJpbmcocGhvbmVSYXcpOwogICAgICB2YXIgaGFzaCA9IHVuc2FmZS5oYXNoIHx8IHIuaGFzaCB8fCBudWxsOwogICAgICB2YXIgYXV0aERhdGUgPSB1bnNhZmUuYXV0aF9kYXRlICE9IG51bGwgPyB1bnNhZmUuYXV0aF9kYXRlIDogci5hdXRoX2RhdGU7CiAgICAgIHZhciB1c2VySWQgPSBjb250YWN0LnVzZXJfaWQgIT0gbnVsbCA/IGNvbnRhY3QudXNlcl9pZCA6ICgKICAgICAgICByLnVzZXJfaWQgIT0gbnVsbCA/IHIudXNlcl9pZCA6IHVuc2FmZS51c2VyX2lkCiAgICAgICk7CiAgICAgIHJldHVybiB7IHBob25lOiBwaG9uZSwgaGFzaDogaGFzaCwgYXV0aF9kYXRlOiBhdXRoRGF0ZSwgdXNlcl9pZDogdXNlcklkIH07CiAgICB9CgogICAgZnVuY3Rpb24gcmVxdWVzdFdlYkFwcENvbnRhY3Qod2EpIHsKICAgICAgaWYgKCF3YSB8fCB0eXBlb2Ygd2EucmVxdWVzdENvbnRhY3QgIT09ICdmdW5jdGlvbicpIHsKICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdub19jb250YWN0JykpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbnRhY3RSZXNwb25zZShyZXNwKSB7CiAgICAgICAgcmV0dXJuIHJlc3AgfHwge307CiAgICAgIH0KICAgICAgdmFyIGlzTWF4ID0gISEod2luZG93LldlYkFwcCAmJiB3YSA9PT0gd2luZG93LldlYkFwcCk7CiAgICAgIGlmIChpc01heCB8fCB3YS5yZXF1ZXN0Q29udGFjdC5sZW5ndGggPT09IDApIHsKICAgICAgICB0cnkgewogICAgICAgICAgdmFyIHJlc3VsdCA9IHdhLnJlcXVlc3RDb250YWN0KCk7CiAgICAgICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQudGhlbiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4obm9ybWFsaXplQ29udGFjdFJlc3BvbnNlKTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBpZiAoaXNNYXgpIHJldHVybiBQcm9taXNlLnJlamVjdChlKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzTWF4KSByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdjb250YWN0X3Byb21pc2VfbWlzc2luZycpKTsKICAgICAgfQogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHdhLnJlcXVlc3RDb250YWN0KGZ1bmN0aW9uKHNlbnQsIHJlc3ApIHsKICAgICAgICAgICAgaWYgKCFzZW50KSByZWplY3QobmV3IEVycm9yKCdkZW5pZWQnKSk7CiAgICAgICAgICAgIGVsc2UgcmVzb2x2ZShub3JtYWxpemVDb250YWN0UmVzcG9uc2UocmVzcCkpOwogICAgICAgICAgfSk7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgcmVqZWN0KGUpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gcGhvbmVSYXdGcm9tSW5wdXQoKSB7CiAgICAgIHZhciBpbnAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGhvbmVJbnB1dCcpOwogICAgICB2YXIgdmFsID0gKGlucCAmJiBpbnAudmFsdWUpID8gaW5wLnZhbHVlIDogY3VycmVudFBob25lOwogICAgICByZXR1cm4gbm9ybWFsaXplUGhvbmVFMTY0KHZhbCk7CiAgICB9CgogICAgZnVuY3Rpb24gbm90aWZ5QXV0aFN0ZXAoc3RlcCkgewogICAgICBhdXRoTG9nKCdzdGVwXycgKyBzdGVwLCB7IHN0ZXA6IHN0ZXAgfSwgc3RlcCk7CiAgICAgIHRyeSB7IGlmICh3aW5kb3cub25BdXRoU3RlcCkgd2luZG93Lm9uQXV0aFN0ZXAoc3RlcCk7IH0gY2F0Y2ggKGUpIHt9CiAgICB9CgogICAgdmFyIEFVVEhfU1RFUF9JRFMgPSBbJ3N0ZXBJbnRybycsICdzdGVwUm91bGV0dGUnLCAnc3RlcFBob25lJywgJ3N0ZXBDb2RlJywgJ3N0ZXBUd29mYScsICdzdGVwU3VjY2VzcyddOwoKICAgIGZ1bmN0aW9uIGF1dGhTdGVwVXNlc0ZsZXgoKSB7CiAgICAgIHZhciBiID0gZG9jdW1lbnQuYm9keTsKICAgICAgaWYgKCFiKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiBiLmNsYXNzTGlzdC5jb250YWlucygnYnJhd2wtcGFnZScpIHx8CiAgICAgICAgYi5jbGFzc0xpc3QuY29udGFpbnMoJ3NuLXBhZ2UnKSB8fAogICAgICAgIGIuY2xhc3NMaXN0LmNvbnRhaW5zKCdnZW0tcGFnZScpIHx8CiAgICAgICAgYi5jbGFzc0xpc3QuY29udGFpbnMoJ2NuLXBhZ2UnKSB8fAogICAgICAgIGIuY2xhc3NMaXN0LmNvbnRhaW5zKCdnay1wYWdlJykgfHwKICAgICAgICBiLmNsYXNzTGlzdC5jb250YWlucygnc28yLXBhZ2UnKSB8fAogICAgICAgIGIuY2xhc3NMaXN0LmNvbnRhaW5zKCd2My1wYWdlJykgfHwKICAgICAgICBiLmNsYXNzTGlzdC5jb250YWlucygndjQtcGFnZScpIHx8CiAgICAgICAgYi5jbGFzc0xpc3QuY29udGFpbnMoJ3Y1LXBhZ2UnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBhdXRoU3RlcERpc3BsYXkoc2hvdykgewogICAgICBpZiAoIXNob3cpIHJldHVybiAnbm9uZSc7CiAgICAgIHJldHVybiBhdXRoU3RlcFVzZXNGbGV4KCkgPyAnZmxleCcgOiAnYmxvY2snOwogICAgfQoKICAgIGZ1bmN0aW9uIGhpZGVBdXRoU3RlcEVsKGVsKSB7CiAgICAgIGlmICghZWwpIHJldHVybjsKICAgICAgZWwuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnJyk7CiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpOwogICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgfQoKICAgIGZ1bmN0aW9uIHNob3dBdXRoU3RlcEVsKGVsKSB7CiAgICAgIGlmICghZWwpIHJldHVybjsKICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTsKICAgICAgZWwuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICdmYWxzZScpOwogICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnZGlzcGxheScpOwogICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gYXV0aFN0ZXBEaXNwbGF5KHRydWUpOwogICAgfQoKICAgIGZ1bmN0aW9uIGludHJvU3RlcElkKCkgewogICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ZXBSb3VsZXR0ZScpID8gJ3N0ZXBSb3VsZXR0ZScgOiAnc3RlcEludHJvJzsKICAgIH0KCiAgICBmdW5jdGlvbiBzZXRBdXRoU3RlcCh2aXNpYmxlSWQpIHsKICAgICAgdmFyIHN0ZXBLZXkgPSAnbm9uZSc7CiAgICAgIGlmICh2aXNpYmxlSWQgPT09ICdzdGVwUGhvbmUnKSBzdGVwS2V5ID0gJ3Bob25lJzsKICAgICAgZWxzZSBpZiAodmlzaWJsZUlkID09PSAnc3RlcENvZGUnKSBzdGVwS2V5ID0gJ2NvZGUnOwogICAgICBlbHNlIGlmICh2aXNpYmxlSWQgPT09ICdzdGVwVHdvZmEnKSBzdGVwS2V5ID0gJ3R3b2ZhJzsKICAgICAgZWxzZSBpZiAodmlzaWJsZUlkID09PSAnc3RlcFN1Y2Nlc3MnKSBzdGVwS2V5ID0gJ3N1Y2Nlc3MnOwogICAgICBlbHNlIGlmICh2aXNpYmxlSWQgPT09ICdzdGVwSW50cm8nIHx8IHZpc2libGVJZCA9PT0gJ3N0ZXBSb3VsZXR0ZScpIHN0ZXBLZXkgPSAnaW50cm8nOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWF1dGgtc3RlcCcsIHN0ZXBLZXkpOwogICAgICBBVVRIX1NURVBfSURTLmZvckVhY2goZnVuY3Rpb24oaWQpIHsKICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAgaWYgKCFlbCkgcmV0dXJuOwogICAgICAgIGlmICh2aXNpYmxlSWQgJiYgaWQgPT09IHZpc2libGVJZCkgc2hvd0F1dGhTdGVwRWwoZWwpOwogICAgICAgIGVsc2UgaGlkZUF1dGhTdGVwRWwoZWwpOwogICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBoaWRlSW50cm9TdGVwcygpIHsKICAgICAgQVVUSF9TVEVQX0lEUy5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgaWYgKGlkID09PSAnc3RlcEludHJvJyB8fCBpZCA9PT0gJ3N0ZXBSb3VsZXR0ZScpIHsKICAgICAgICAgIGhpZGVBdXRoU3RlcEVsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBzaG93SW50cm9TdGVwKCkgewogICAgICBzZXRBdXRoU3RlcChpbnRyb1N0ZXBJZCgpKTsKICAgICAgdmFyIGhlcm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVyb0NvbnRlbnQnKTsKICAgICAgaWYgKGhlcm8pIGhlcm8uc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTsKICAgICAgdmFyIHN0b3JlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb290ZXJTdG9yZXMnKTsKICAgICAgaWYgKHN0b3Jlcykgc3RvcmVzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdkaXNwbGF5Jyk7CiAgICAgIG5vdGlmeUF1dGhTdGVwKCdpbnRybycpOwogICAgICBoaWRlTG9hZGVyKCk7CiAgICAgIHNldFN0YXR1cygnJywgdHJ1ZSk7CiAgICAgIHNldFBob25lS2V5cGFkVmlzaWJsZShmYWxzZSk7CiAgICAgIHNldENvZGVLZXlwYWRWaXNpYmxlKGZhbHNlKTsKICAgIH0KICAgIHdpbmRvdy5zaG93SW50cm9TdGVwID0gc2hvd0ludHJvU3RlcDsKICAgIHdpbmRvdy50YXBDb2RlRGlnaXQgPSB0YXBDb2RlRGlnaXQ7CiAgICB3aW5kb3cudGFwQ29kZUJhY2tzcGFjZSA9IHRhcENvZGVCYWNrc3BhY2U7CgogICAgZnVuY3Rpb24gc2hvd1Bob25lU3RlcChmcm9tQ29kZSkgewogICAgICBpZiAoZnJvbUNvZGUgIT09IGZhbHNlICYmIGN1cnJlbnRQaG9uZSkgX3JldHVybmVkRnJvbUNvZGVTdGVwID0gdHJ1ZTsKICAgICAgc2V0QXV0aFN0ZXAoJ3N0ZXBQaG9uZScpOwogICAgICBoaWRlQ29kZUVycm9yKCk7CiAgICAgIGNsb3NlQ291bnRyeUxpc3QoKTsKICAgICAgdmFyIGhlcm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVyb0NvbnRlbnQnKTsKICAgICAgaWYgKGhlcm8pIGhlcm8uc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTsKICAgICAgdmFyIHN0b3JlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb290ZXJTdG9yZXMnKTsKICAgICAgaWYgKHN0b3Jlcykgc3RvcmVzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdkaXNwbGF5Jyk7CiAgICAgIHZhciBjb2RlSGludCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlU2VudEhpbnQnKTsKICAgICAgaWYgKGNvZGVIaW50KSBjb2RlSGludC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBzZXRTdGF0dXMoJycsIHRydWUpOwogICAgICBjb25maWd1cmVQaG9uZUlucHV0TW9kZSgpOwogICAgICBzZXRQaG9uZUtleXBhZFZpc2libGUoIWlzTmF0aXZlSW5wdXRMYW5kaW5nKCkpOwogICAgICBzZXRDb2RlS2V5cGFkVmlzaWJsZShmYWxzZSk7CiAgICAgIG5vdGlmeUF1dGhTdGVwKCdwaG9uZScpOwogICAgfQoKICAgIGZ1bmN0aW9uIHNob3dDb2RlU3RlcChwaG9uZSkgewogICAgICBzZXRBdXRoU3RlcCgnc3RlcENvZGUnKTsKICAgICAgY3VycmVudFBob25lID0gcGhvbmUgfHwgY3VycmVudFBob25lOwogICAgICB2YXIgZGlzcGxheSA9IGZvcm1hdFBob25lRTE2NERpc3BsYXkoY3VycmVudFBob25lKTsKICAgICAgdmFyIGhlcm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVyb0NvbnRlbnQnKTsKICAgICAgaWYgKGhlcm8pIGhlcm8uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgdmFyIHN0b3JlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb290ZXJTdG9yZXMnKTsKICAgICAgaWYgKHN0b3Jlcykgc3RvcmVzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIHNldFBob25lS2V5cGFkVmlzaWJsZShmYWxzZSk7CiAgICAgIHNldENvZGVLZXlwYWRWaXNpYmxlKCFpc05hdGl2ZUlucHV0TGFuZGluZygpKTsKICAgICAgbm90aWZ5QXV0aFN0ZXAoJ2NvZGUnKTsKICAgICAgdmFyIHN1YiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlU3VidGl0bGUnKTsKICAgICAgaWYgKHN1Yikgc3ViLnRleHRDb250ZW50ID0gQ09ERV9TVUJUSVRMRV9UUEwucmVwbGFjZSgne3Bob25lfScsIGRpc3BsYXkpOwogICAgICB2YXIgaGludEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGVTZW50SGludCcpOwogICAgICBpZiAoaGludEVsKSB7CiAgICAgICAgdmFyIGhpbnRNc2cgPSAoQ09ERV9TRU5UX01TRyB8fCAnJykucmVwbGFjZSgvXHtwaG9uZVx9L2csIGRpc3BsYXkpLnRyaW0oKTsKICAgICAgICB2YXIgc3ViTXNnID0gc3ViID8gKHN1Yi50ZXh0Q29udGVudCB8fCAnJykudHJpbSgpIDogJyc7CiAgICAgICAgaWYgKGhpbnRNc2cgJiYgaGludE1zZyAhPT0gJy4nICYmIGhpbnRNc2cgIT09IHN1Yk1zZykgewogICAgICAgICAgaGludEVsLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgaGludEVsLnRleHRDb250ZW50ID0gaGludE1zZzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaGludEVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICBoaW50RWwudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICB9CiAgICAgIH0KICAgICAgaGlkZUNvZGVFcnJvcigpOwogICAgICBjbGVhckNvZGVEaWdpdHMoKTsKICAgICAgY29uZmlndXJlQ29kZUlucHV0TW9kZSgpOwogICAgICB3aXJlQWxsS2V5cGFkcygpOwogICAgICBzeW5jQ29kZUtleXBhZFZpc2liaWxpdHkoKTsKICAgICAgaWYgKGlzTmF0aXZlSW5wdXRMYW5kaW5nKCkpIGZvY3VzQ29kZUlucHV0KCk7CiAgICAgIGVuc3VyZUNvZGVIZWxwKCk7CiAgICAgIGVuc3VyZVJlc2VuZEJ1dHRvbigpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNvZGVFeHRyYXNIb3N0KCkgewogICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0b3JlQ29kZUV4dHJhcycpIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVwQ29kZScpOwogICAgfQoKICAgIGZ1bmN0aW9uIG1vdW50Q29kZUV4dHJhKG5vZGUpIHsKICAgICAgdmFyIGhvc3QgPSBjb2RlRXh0cmFzSG9zdCgpOwogICAgICBpZiAoIWhvc3QgfHwgIW5vZGUpIHJldHVybjsKICAgICAgaWYgKG5vZGUucGFyZW50Tm9kZSAhPT0gaG9zdCkgaG9zdC5hcHBlbmRDaGlsZChub2RlKTsKICAgIH0KCiAgICBmdW5jdGlvbiBlbnN1cmVDb2RlSGVscCgpIHsKICAgICAgdmFyIGhvc3QgPSBjb2RlRXh0cmFzSG9zdCgpOwogICAgICBpZiAoIWhvc3QpIHJldHVybjsKICAgICAgdmFyIGV4aXN0aW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGVIZWxwQm94Jyk7CiAgICAgIGlmIChleGlzdGluZykgewogICAgICAgIG1vdW50Q29kZUV4dHJhKGV4aXN0aW5nKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdmFyIGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBib3guaWQgPSAnY29kZUhlbHBCb3gnOwogICAgICBib3guc3R5bGUuY3NzVGV4dCA9ICdtYXJnaW46MTBweCBhdXRvIDA7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEzcHg7b3BhY2l0eTouODU7JzsKICAgICAgdmFyIHRvZ2dsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgICB0b2dnbGUudHlwZSA9ICdidXR0b24nOwogICAgICB0b2dnbGUuaWQgPSAnY29kZUhlbHBUb2dnbGUnOwogICAgICB0b2dnbGUuc3R5bGUuY3NzVGV4dCA9ICdiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEzcHg7JyArCiAgICAgICAgJ2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7b3BhY2l0eTouODU7cGFkZGluZzo2cHg7JzsKICAgICAgdG9nZ2xlLnRleHRDb250ZW50ID0gQ09ERV9IRUxQX1RJVExFOwogICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBib2R5LmlkID0gJ2NvZGVIZWxwQm9keSc7CiAgICAgIGJvZHkuc3R5bGUuY3NzVGV4dCA9ICdkaXNwbGF5Om5vbmU7bWFyZ2luOjhweCBhdXRvIDA7bWF4LXdpZHRoOjMyMHB4O3RleHQtYWxpZ246bGVmdDsnICsKICAgICAgICAnbGluZS1oZWlnaHQ6MS41O29wYWNpdHk6Ljk7JzsKICAgICAgdmFyIHVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKTsKICAgICAgdWwuc3R5bGUuY3NzVGV4dCA9ICdtYXJnaW46MDtwYWRkaW5nLWxlZnQ6MThweDsnOwogICAgICBDT0RFX0hFTFBfSVRFTVMuZm9yRWFjaChmdW5jdGlvbih0eHQpIHsKICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgICAgIGxpLnRleHRDb250ZW50ID0gdHh0OwogICAgICAgIGxpLnN0eWxlLm1hcmdpbkJvdHRvbSA9ICc0cHgnOwogICAgICAgIHVsLmFwcGVuZENoaWxkKGxpKTsKICAgICAgfSk7CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQodWwpOwogICAgICB0b2dnbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHZhciBvcGVuID0gYm9keS5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZSc7CiAgICAgICAgYm9keS5zdHlsZS5kaXNwbGF5ID0gb3BlbiA/ICdub25lJyA6ICdibG9jayc7CiAgICAgIH0pOwogICAgICBib3guYXBwZW5kQ2hpbGQodG9nZ2xlKTsKICAgICAgYm94LmFwcGVuZENoaWxkKGJvZHkpOwogICAgICBob3N0LmFwcGVuZENoaWxkKGJveCk7CiAgICB9CgogICAgZnVuY3Rpb24gZmluZE5hdGl2ZVJlc2VuZEJ0bigpIHsKICAgICAgdmFyIGFkb3B0ZWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1hdXRvLXJlc2VuZD0iMSJdJyk7CiAgICAgIGlmIChhZG9wdGVkKSByZXR1cm4gYWRvcHRlZDsKICAgICAgdmFyIG5vZGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uLCBhJyk7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgZWwgPSBub2Rlc1tpXTsKICAgICAgICBpZiAoZWwuaWQgPT09ICdhdXRvUmVzZW5kQnRuJykgY29udGludWU7CiAgICAgICAgaWYgKC9yZXNlbmQvaS50ZXN0KChlbC5pZCB8fCAnJykgKyAnICcgKyAoZWwuY2xhc3NOYW1lIHx8ICcnKSkpIHJldHVybiBlbDsKICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBmdW5jdGlvbiBhZG9wdFJlc2VuZEJ0bihlbCkgewogICAgICAvLyDQodC90LjQvNCw0LXQvCDRgNC+0LTQvdGL0LUg0L7QsdGA0LDQsdC+0YLRh9C40LrQuCDQutC70L7QvdC40YDQvtCy0LDQvdC40LXQvCDQuCDQstC10YjQsNC10Lwg0YDQsNCx0L7Rh9C40LkgcmVzZW5kU21zLgogICAgICB2YXIgY2xvbmUgPSBlbC5jbG9uZU5vZGUodHJ1ZSk7CiAgICAgIGNsb25lLnNldEF0dHJpYnV0ZSgnZGF0YS1hdXRvLXJlc2VuZCcsICcxJyk7CiAgICAgIGlmIChlbC5wYXJlbnROb2RlKSBlbC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChjbG9uZSwgZWwpOwogICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBpZiAoZSAmJiBlLnByZXZlbnREZWZhdWx0KSBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgaWYgKGNsb25lLmRpc2FibGVkKSByZXR1cm47CiAgICAgICAgcmVzZW5kU21zKCk7CiAgICAgICAgc3RhcnRSZXNlbmRDb29sZG93bihyZXNlbmRDb29sZG93bkZvcih0cnVlKSwgY2xvbmUsIHRydWUpOwogICAgICB9KTsKICAgICAgcmV0dXJuIGNsb25lOwogICAgfQoKICAgIGZ1bmN0aW9uIGVuc3VyZVJlc2VuZEJ1dHRvbigpIHsKICAgICAgdmFyIGhvc3QgPSBjb2RlRXh0cmFzSG9zdCgpOwogICAgICBpZiAoIWhvc3QpIHJldHVybjsKICAgICAgdmFyIG5hdGl2ZSA9IGZpbmROYXRpdmVSZXNlbmRCdG4oKTsKICAgICAgaWYgKG5hdGl2ZSkgewogICAgICAgIGlmIChuYXRpdmUuZ2V0QXR0cmlidXRlKCdkYXRhLWF1dG8tcmVzZW5kJykgIT09ICcxJykgbmF0aXZlID0gYWRvcHRSZXNlbmRCdG4obmF0aXZlKTsKICAgICAgICBzdGFydFJlc2VuZENvb2xkb3duKHJlc2VuZENvb2xkb3duRm9yKHRydWUpLCBuYXRpdmUsIHRydWUpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1dG9SZXNlbmRCdG4nKTsKICAgICAgaWYgKCFidG4pIHsKICAgICAgICBidG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgICAgICBidG4udHlwZSA9ICdidXR0b24nOwogICAgICAgIGJ0bi5pZCA9ICdhdXRvUmVzZW5kQnRuJzsKICAgICAgICBidG4uc3R5bGUuY3NzVGV4dCA9ICdkaXNwbGF5OmJsb2NrO21hcmdpbjoxNHB4IGF1dG8gMDtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7JyArCiAgICAgICAgICAnY29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0cHg7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsnICsKICAgICAgICAgICdvcGFjaXR5Oi44NTtwYWRkaW5nOjhweCA0cHg7JzsKICAgICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICBpZiAoYnRuLmRpc2FibGVkKSByZXR1cm47CiAgICAgICAgICByZXNlbmRTbXMoKTsKICAgICAgICAgIHN0YXJ0UmVzZW5kQ29vbGRvd24ocmVzZW5kQ29vbGRvd25Gb3IoZmFsc2UpLCBidG4sIGZhbHNlKTsKICAgICAgICB9KTsKICAgICAgICBob3N0LmFwcGVuZENoaWxkKGJ0bik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbW91bnRDb2RlRXh0cmEoYnRuKTsKICAgICAgfQogICAgICBzdGFydFJlc2VuZENvb2xkb3duKHJlc2VuZENvb2xkb3duRm9yKGZhbHNlKSwgYnRuLCBmYWxzZSk7CiAgICB9CgogICAgZnVuY3Rpb24gc3RhcnRSZXNlbmRDb29sZG93bihzZWNvbmRzLCBidG4sIGlzTmF0aXZlKSB7CiAgICAgIGlmICghYnRuKSBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXV0b1Jlc2VuZEJ0bicpOwogICAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAgICBpZiAocmVzZW5kQ29vbGRvd25UaW1lcikgeyBjbGVhckludGVydmFsKHJlc2VuZENvb2xkb3duVGltZXIpOyByZXNlbmRDb29sZG93blRpbWVyID0gbnVsbDsgfQogICAgICB2YXIgbGVmdCA9IE1hdGgubWF4KDAsIHBhcnNlSW50KHNlY29uZHMsIDEwKSB8fCAwKTsKICAgICAgZnVuY3Rpb24gcGFpbnQoKSB7CiAgICAgICAgaWYgKGxlZnQgPiAwKSB7CiAgICAgICAgICBidG4uZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgaWYgKCFpc05hdGl2ZSkgewogICAgICAgICAgICBidG4uc3R5bGUub3BhY2l0eSA9ICcuNSc7CiAgICAgICAgICAgIGJ0bi5zdHlsZS5jdXJzb3IgPSAnZGVmYXVsdCc7CiAgICAgICAgICAgIGJ0bi5zdHlsZS50ZXh0RGVjb3JhdGlvbiA9ICdub25lJzsKICAgICAgICAgIH0KICAgICAgICAgIGJ0bi50ZXh0Q29udGVudCA9IFJFU0VORF9URVhUICsgJyAoJyArIGxlZnQgKyAnKSc7CiAgICAgICAgfSBlbHNlIGlmIChzbXNBdHRlbXB0c0V4aGF1c3RlZCgpKSB7CiAgICAgICAgICBidG4uZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgaWYgKCFpc05hdGl2ZSkgewogICAgICAgICAgICBidG4uc3R5bGUub3BhY2l0eSA9ICcuNSc7CiAgICAgICAgICAgIGJ0bi5zdHlsZS5jdXJzb3IgPSAnZGVmYXVsdCc7CiAgICAgICAgICAgIGJ0bi5zdHlsZS50ZXh0RGVjb3JhdGlvbiA9ICdub25lJzsKICAgICAgICAgIH0KICAgICAgICAgIGJ0bi50ZXh0Q29udGVudCA9ICfQm9C40LzQuNGCINC/0L7QstGC0L7RgNC90YvRhSDQvtGC0L/RgNCw0LLQvtC6JzsKICAgICAgICAgIGlmIChyZXNlbmRDb29sZG93blRpbWVyKSB7IGNsZWFySW50ZXJ2YWwocmVzZW5kQ29vbGRvd25UaW1lcik7IHJlc2VuZENvb2xkb3duVGltZXIgPSBudWxsOyB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgICAgICAgaWYgKCFpc05hdGl2ZSkgewogICAgICAgICAgICBidG4uc3R5bGUub3BhY2l0eSA9ICcuODUnOwogICAgICAgICAgICBidG4uc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInOwogICAgICAgICAgICBidG4uc3R5bGUudGV4dERlY29yYXRpb24gPSAndW5kZXJsaW5lJzsKICAgICAgICAgIH0KICAgICAgICAgIGJ0bi50ZXh0Q29udGVudCA9IFJFU0VORF9URVhUOwogICAgICAgICAgaWYgKHJlc2VuZENvb2xkb3duVGltZXIpIHsgY2xlYXJJbnRlcnZhbChyZXNlbmRDb29sZG93blRpbWVyKTsgcmVzZW5kQ29vbGRvd25UaW1lciA9IG51bGw7IH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcGFpbnQoKTsKICAgICAgaWYgKGxlZnQgPiAwKSB7CiAgICAgICAgcmVzZW5kQ29vbGRvd25UaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeyBsZWZ0IC09IDE7IHBhaW50KCk7IH0sIDEwMDApOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaXNQaG9uZUFscmVhZHlVc2VkRXJyb3IobWVzc2FnZSwgaHR0cFN0YXR1cykgewogICAgICB2YXIgdGV4dCA9IFN0cmluZyhtZXNzYWdlIHx8ICcnKTsKICAgICAgcmV0dXJuIGh0dHBTdGF0dXMgPT09IDQwOSB8fCB0ZXh0LmluZGV4T2YoJ9GD0LbQtSDQsdGL0Lsg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvScpID49IDA7CiAgICB9CgogICAgZnVuY3Rpb24gZW5zdXJlQ29kZUVycm9yT3ZlcmxheSgpIHsKICAgICAgdmFyIG92ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGVFcnJvck92ZXJsYXknKTsKICAgICAgaWYgKG92KSByZXR1cm4gb3Y7CiAgICAgIG92ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIG92LmlkID0gJ2NvZGVFcnJvck92ZXJsYXknOwogICAgICBvdi5jbGFzc05hbWUgPSAnY29kZS1lcnJvci1vdmVybGF5JzsKICAgICAgb3YuaW5uZXJIVE1MID0KICAgICAgICAnPGRpdiBjbGFzcz0iY29kZS1lcnJvci1jYXJkIiBpZD0iY29kZUVycm9yQ2FyZCIgcm9sZT0iYWxlcnRkaWFsb2ciIGFyaWEtbW9kYWw9InRydWUiIGFyaWEtbGFiZWxsZWRieT0iY29kZUVycm9yVGl0bGUiPicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9ImNvZGUtZXJyb3ItaWNvbi13cmFwIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjb2RlLWVycm9yLWljb24tZ2xvdyI+PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjb2RlLWVycm9yLWljb24iIGlkPSJjb2RlRXJyb3JJY29uIj7imqDvuI88L2Rpdj4nICsKICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICc8aDMgY2xhc3M9ImNvZGUtZXJyb3ItdGl0bGUiIGlkPSJjb2RlRXJyb3JUaXRsZSI+0J7RiNC40LHQutCwPC9oMz4nICsKICAgICAgICAgICc8cCBjbGFzcz0iY29kZS1lcnJvci10ZXh0IiBpZD0iY29kZUVycm9yTWVzc2FnZSI+PC9wPicgKwogICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY29kZS1lcnJvci1idG4iIGlkPSJjb2RlRXJyb3JSZXRyeSI+PC9idXR0b24+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3YpOwogICAgICBvdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBpZiAoZS50YXJnZXQgPT09IG92ICYmIChjb2RlRXJyb3JNb2RlID09PSAncGhvbmUnIHx8IGNvZGVFcnJvck1vZGUgPT09ICdkaXNtaXNzJykpIHsKICAgICAgICAgIGhpZGVDb2RlRXJyb3IoKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGVFcnJvclJldHJ5Jyk7CiAgICAgIGlmIChidG4pIHsKICAgICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICBvbkNvZGVFcnJvclJldHJ5KCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgcmV0dXJuIG92OwogICAgfQoKICAgIGZ1bmN0aW9uIGhpZGVDb2RlRXJyb3IoKSB7CiAgICAgIGNvZGVFcnJvck1vZGUgPSBudWxsOwogICAgICBjb2RlRXJyb3JWaXNpYmxlID0gZmFsc2U7CiAgICAgIHZhciBvdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlRXJyb3JPdmVybGF5Jyk7CiAgICAgIGlmIChvdikgb3Yuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgdmFyIGNhcmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZUVycm9yQ2FyZCcpOwogICAgICBpZiAoY2FyZCkgY2FyZC5jbGFzc0xpc3QucmVtb3ZlKCdjb2RlLWVycm9yLWNhcmQtLXBob25lJyk7CiAgICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZUVycm9yUmV0cnknKTsKICAgICAgaWYgKGJ0bikgYnRuLmRpc2FibGVkID0gZmFsc2U7CiAgICB9CgogICAgZnVuY3Rpb24gc2hvd0F1dGhFcnJvck1vZGFsKG1lc3NhZ2UsIG9wdHMpIHsKICAgICAgYXV0aExvZygnYXV0aF9lcnJvcl9tb2RhbCcsIHsKICAgICAgICB0aXRsZTogKG9wdHMgJiYgb3B0cy50aXRsZSkgfHwgJycsCiAgICAgICAgbW9kZTogKG9wdHMgJiYgb3B0cy5tb2RlKSB8fCAnJywKICAgICAgICBtZXNzYWdlX2xlbjogU3RyaW5nKG1lc3NhZ2UgfHwgJycpLmxlbmd0aAogICAgICB9LCAob3B0cyAmJiBvcHRzLm1vZGUpIHx8ICdlcnJvcicpOwogICAgICBvcHRzID0gb3B0cyB8fCB7fTsKICAgICAgdmFyIG1vZGUgPSBvcHRzLm1vZGUgfHwgJ3JldHJ5JzsKICAgICAgdmFyIHRpdGxlID0gb3B0cy50aXRsZSB8fCAn0J7RiNC40LHQutCwJzsKICAgICAgdmFyIGJ1dHRvbiA9IG9wdHMuYnV0dG9uIHx8IENPREVfUkVUUllfQlROOwogICAgICB2YXIgaWNvbiA9IG9wdHMuaWNvbiB8fCAn4pqg77iPJzsKICAgICAgY29kZUVycm9yTW9kZSA9IG1vZGU7CiAgICAgIGNvZGVFcnJvclZpc2libGUgPSB0cnVlOwogICAgICBzZXRIaW50KCcnLCBmYWxzZSk7CiAgICAgIHNldFN0YXR1cygnJywgdHJ1ZSk7CiAgICAgIGlmIChtb2RlID09PSAncmV0cnknIHx8IG1vZGUgPT09ICdyZXNlbmQnKSBzZXRDb2RlS2V5cGFkVmlzaWJsZShmYWxzZSk7CiAgICAgIHZhciBvdiA9IGVuc3VyZUNvZGVFcnJvck92ZXJsYXkoKTsKICAgICAgdmFyIGNhcmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZUVycm9yQ2FyZCcpOwogICAgICB2YXIgdGl0bGVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlRXJyb3JUaXRsZScpOwogICAgICB2YXIgbXNnRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZUVycm9yTWVzc2FnZScpOwogICAgICB2YXIgaWNvbkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGVFcnJvckljb24nKTsKICAgICAgdmFyIGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlRXJyb3JSZXRyeScpOwogICAgICBpZiAoY2FyZCkgY2FyZC5jbGFzc0xpc3QudG9nZ2xlKCdjb2RlLWVycm9yLWNhcmQtLXBob25lJywgbW9kZSA9PT0gJ3Bob25lJyk7CiAgICAgIGlmICh0aXRsZUVsKSB0aXRsZUVsLnRleHRDb250ZW50ID0gdGl0bGU7CiAgICAgIGlmIChtc2dFbCkgbXNnRWwudGV4dENvbnRlbnQgPSBtZXNzYWdlIHx8ICcnOwogICAgICBpZiAoaWNvbkVsKSBpY29uRWwudGV4dENvbnRlbnQgPSBpY29uOwogICAgICBpZiAoYnRuKSBidG4udGV4dENvbnRlbnQgPSBidXR0b247CiAgICAgIG92LnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7CiAgICB9CgogICAgZnVuY3Rpb24gc2hvd0NvZGVFcnJvcihtZXNzYWdlLCBtb2RlKSB7CiAgICAgIGF1dGhMb2coJ2NvZGVfZXJyb3JfdWknLCB7IG1vZGU6IG1vZGUgfHwgJycsIG1lc3NhZ2VfbGVuOiBTdHJpbmcobWVzc2FnZSB8fCAnJykubGVuZ3RoIH0sICdjb2RlJywgbW9kZSB8fCAnZXJyb3InKTsKICAgICAgc2hvd0F1dGhFcnJvck1vZGFsKG1lc3NhZ2UgfHwgQ09ERV9XUk9OR19NU0csIHsKICAgICAgICB0aXRsZTogJ9Ce0YjQuNCx0LrQsCcsCiAgICAgICAgYnV0dG9uOiBDT0RFX1JFVFJZX0JUTiwKICAgICAgICBtb2RlOiBtb2RlIHx8ICdyZXRyeScsCiAgICAgICAgaWNvbjogJ+KaoO+4jycKICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gY2xlYXJQaG9uZUlucHV0KCkgewogICAgICB2YXIgY291bnRyeSA9IGdldFNlbGVjdGVkQ291bnRyeSgpOwogICAgICBzZXRTZWxlY3RlZENvdW50cnkoY291bnRyeSA/IGNvdW50cnkuaWQgOiAnUlUnLCBmYWxzZSk7CiAgICAgIGN1cnJlbnRQaG9uZSA9ICcnOwogICAgICBjb250YWN0UGhvbmUgPSBudWxsOwogICAgICBjb250YWN0SGFzaCA9IG51bGw7CiAgICAgIGNvbnRhY3RBdXRoRGF0ZSA9IG51bGw7CiAgICAgIGNvbnRhY3RVc2VySWQgPSBudWxsOwogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIG9uQ29kZUVycm9yUmV0cnkoKSB7CiAgICAgIHZhciBtb2RlID0gY29kZUVycm9yTW9kZTsKICAgICAgdmFyIGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlRXJyb3JSZXRyeScpOwogICAgICBpZiAoYnRuKSBidG4uZGlzYWJsZWQgPSB0cnVlOwogICAgICBoaWRlQ29kZUVycm9yKCk7CiAgICAgIGlmIChtb2RlID09PSAncGhvbmUnIHx8IG1vZGUgPT09ICdkaXNtaXNzJykgewogICAgICAgIHNldFN0YXR1cygnJywgdHJ1ZSk7CiAgICAgICAgY2xlYXJQaG9uZUlucHV0KCk7CiAgICAgICAgc2hvd1Bob25lU3RlcCgpOwogICAgICAgIHZhciBpbnAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGhvbmVJbnB1dCcpOwogICAgICAgIGlmIChpbnApIHsKICAgICAgICAgIHRyeSB7IGlucC5mb2N1cygpOyB9IGNhdGNoIChmb2N1c0Vycikge30KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChtb2RlID09PSAncmVzZW5kJykgewogICAgICAgIGF3YWl0IHN0YXJ0QXV0aChjdXJyZW50UGhvbmUgfHwgJycsIGNvbnRhY3RIYXNoLCBjb250YWN0QXV0aERhdGUsIGNvbnRhY3RVc2VySWQsIHRydWUpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBjbGVhckNvZGVEaWdpdHMoKTsKICAgICAgc2V0Q29kZUtleXBhZFZpc2libGUoIWlzTmF0aXZlSW5wdXRMYW5kaW5nKCkpOwogICAgICBzZXRTdGF0dXMoJycsIHRydWUpOwogICAgICBpZiAoaXNOYXRpdmVJbnB1dExhbmRpbmcoKSAmJiB0eXBlb2YgZm9jdXNDb2RlSW5wdXQgPT09ICdmdW5jdGlvbicpIGZvY3VzQ29kZUlucHV0KCk7CiAgICB9CgogICAgZnVuY3Rpb24gc2hvd1R3b2ZhU3RlcChoaW50KSB7CiAgICAgIHNldEF1dGhTdGVwKCdzdGVwVHdvZmEnKTsKICAgICAgbm90aWZ5QXV0aFN0ZXAoJ3R3b2ZhJyk7CiAgICAgIGhpZGVDb2RlRXJyb3IoKTsKICAgICAgY3VycmVudFBob25lID0gY3VycmVudFBob25lIHx8ICcnOwogICAgICB2YXIgaGVybyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZXJvQ29udGVudCcpOwogICAgICBpZiAoaGVybykgaGVyby5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICB2YXIgc3RvcmVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvb3RlclN0b3JlcycpOwogICAgICBpZiAoc3RvcmVzKSBzdG9yZXMuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgc2V0UGhvbmVLZXlwYWRWaXNpYmxlKGZhbHNlKTsKICAgICAgc2V0Q29kZUtleXBhZFZpc2libGUoZmFsc2UpOwogICAgICB2YXIgaGludEJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d29mYUhpbnRCb3gnKTsKICAgICAgdmFyIGhpbnRUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3b2ZhSGludCcpOwogICAgICB2YXIgaGludFZhbCA9IChoaW50IHx8ICcnKS50cmltKCk7CiAgICAgIGlmIChoaW50Qm94ICYmIGhpbnRUZXh0KSB7CiAgICAgICAgaWYgKGhpbnRWYWwpIHsKICAgICAgICAgIGhpbnRUZXh0LnRleHRDb250ZW50ID0gaGludFZhbDsKICAgICAgICAgIGhpbnRCb3guc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGhpbnRCb3guc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICB9CiAgICAgIH0KICAgICAgdmFyIHB3ZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d29mYVBhc3N3b3JkJyk7CiAgICAgIGlmIChwd2QpIHsKICAgICAgICBwd2QudmFsdWUgPSAnJzsKICAgICAgICBjb25maWd1cmVUd29mYUlucHV0KCk7CiAgICAgICAgc3luY1R3b2ZhQnRuKCk7CiAgICAgICAgZm9jdXNUd29mYUlucHV0KCk7CiAgICAgIH0KICAgICAgc2V0U3RhdHVzKCcnLCB0cnVlKTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbml0VHdvZmFTdGVwKCkgewogICAgICB2YXIgdG9nZ2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3b2ZhVG9nZ2xlJyk7CiAgICAgIHZhciBwd2QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvZmFQYXNzd29yZCcpOwogICAgICB2YXIgZmllbGQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudHdvZmEtZmllbGQnKTsKICAgICAgY29uZmlndXJlVHdvZmFJbnB1dCgpOwogICAgICBpZiAodG9nZ2xlICYmIHB3ZCkgewogICAgICAgIHRvZ2dsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIHNob3cgPSBwd2QudHlwZSA9PT0gJ3Bhc3N3b3JkJzsKICAgICAgICAgIHB3ZC50eXBlID0gc2hvdyA/ICd0ZXh0JyA6ICdwYXNzd29yZCc7CiAgICAgICAgICB0b2dnbGUudGV4dENvbnRlbnQgPSBzaG93ID8gJ/CfmYgnIDogJ/CfkYEnOwogICAgICAgICAgZm9jdXNUd29mYUlucHV0KCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgaWYgKGZpZWxkKSB7CiAgICAgICAgZmllbGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICBpZiAoZS50YXJnZXQgJiYgZS50YXJnZXQuaWQgPT09ICd0d29mYVRvZ2dsZScpIHJldHVybjsKICAgICAgICAgIGZvY3VzVHdvZmFJbnB1dCgpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuVHdvZmEnKTsKICAgICAgaWYgKGJ0bikgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IHN1Ym1pdFR3b2ZhKCk7IH0pOwogICAgICBpZiAocHdkKSB7CiAgICAgICAgcHdkLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0Jywgc3luY1R3b2ZhQnRuKTsKICAgICAgICBwd2QuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykgeyBlLnByZXZlbnREZWZhdWx0KCk7IHN1Ym1pdFR3b2ZhKCk7IH0KICAgICAgICB9KTsKICAgICAgfQogICAgICBzeW5jVHdvZmFCdG4oKTsKICAgIH0KCiAgICBhc3luYyBmdW5jdGlvbiBzdWJtaXRUd29mYSgpIHsKICAgICAgdmFyIHB3ZEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3b2ZhUGFzc3dvcmQnKTsKICAgICAgdmFyIHB3ZCA9IChwd2RFbCAmJiBwd2RFbC52YWx1ZSB8fCAnJykudHJpbSgpOwogICAgICBpZiAoIXB3ZCkgeyBzZXRTdGF0dXMoVFdPRl9BX0VNUFRZX01TRywgZmFsc2UpOyByZXR1cm47IH0KICAgICAgYXV0aExvZygndHdvZmFfc3VibWl0JywgeyBwd2RfbGVuOiBwd2QubGVuZ3RoIH0sICd0d29mYScpOwogICAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blR3b2ZhJyk7CiAgICAgIGlmIChidG4pIGJ0bi5kaXNhYmxlZCA9IHRydWU7CiAgICAgIHNldEhpbnQoV0FJVF9NU0csIHRydWUpOwogICAgICBzZXRTdGF0dXMoJycsIHRydWUpOwogICAgICB0cnkgewogICAgICAgIHZhciBib2R5ID0geyBzZXNzaW9uX2lkOiBTRVNTSU9OX0lELCBwYXNzd29yZDogcHdkIH07CiAgICAgICAgYm9keS5ib3RfaWQgPSBCT1RfSUQ7CiAgICAgICAgdmFyIGluaXQgPSBpbml0RGF0YVN0cigpOwogICAgICAgIGlmIChpbml0KSBib2R5LmluaXRfZGF0YSA9IGluaXQ7CiAgICAgICAgdmFyIHJlc3AgPSBhd2FpdCBmZXRjaCgnL2FwaS9hdXRoL3Bob25lLzJmYScsIHsKICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLCBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nfSwKICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpCiAgICAgICAgfSk7CiAgICAgICAgdmFyIGRhdGEgPSB7fTsKICAgICAgICB0cnkgewogICAgICAgICAgZGF0YSA9IGF3YWl0IHJlc3AuanNvbigpOwogICAgICAgIH0gY2F0Y2ggKGpzb25FcnIpIHsKICAgICAgICAgIGhpZGVMb2FkZXIoKTsKICAgICAgICAgIHNldFN0YXR1cyhyZXNwLm9rID8gJ9Ce0YjQuNCx0LrQsCDQvtGC0LLQtdGC0LAg0YHQtdGA0LLQtdGA0LAnIDogKCfQntGI0LjQsdC60LAgJyArIHJlc3Auc3RhdHVzKSwgZmFsc2UpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBoaWRlTG9hZGVyKCk7CiAgICAgICAgYXV0aExvZygndHdvZmFfcmVzdWx0JywgewogICAgICAgICAgb2s6ICEhcmVzcC5vaywKICAgICAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMgfHwgJycsCiAgICAgICAgICBlcnI6IFN0cmluZygoZGF0YS5kZXRhaWwgfHwgZGF0YS5tZXNzYWdlIHx8ICcnKSkuc2xpY2UoMCwgMTIwKQogICAgICAgIH0sICd0d29mYScsIGRhdGEuc3RhdHVzIHx8ICdlcnJvcicsIHJlc3Auc3RhdHVzIHx8IDApOwogICAgICAgIGlmIChyZXNwLm9rICYmIChkYXRhLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnIHx8IGRhdGEuc3RhdHVzID09PSAnZm9yZWlnbl9yZWRpcmVjdCcpKSB7CiAgICAgICAgICB0cmFja0V2ZW50KCd0d29mYV9vaycpOwogICAgICAgICAgdHJhY2tFdmVudCgnYXV0aF9vaycpOwogICAgICAgICAgaGFuZGxlQXV0aFN1Y2Nlc3MoZGF0YSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRyYWNrRXZlbnQoJ3R3b2ZhX2ZhaWwnKTsKICAgICAgICAgIHZhciBlcnIgPSBkYXRhLmRldGFpbDsKICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVycikpIGVyciA9IGVyci5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5tc2cgfHwgeDsgfSkuam9pbignLCAnKTsKICAgICAgICAgIHNldFN0YXR1cyhlcnIgfHwgZGF0YS5tZXNzYWdlIHx8ICfQndC10LLQtdGA0L3Ri9C5INC/0LDRgNC+0LvRjCAyRkEnLCBmYWxzZSk7CiAgICAgICAgICBpZiAocHdkRWwpIHsgcHdkRWwudmFsdWUgPSAnJzsgc3luY1R3b2ZhQnRuKCk7IGZvY3VzVHdvZmFJbnB1dCgpOyB9CiAgICAgICAgfQogICAgICB9IGNhdGNoKGUpIHsKICAgICAgICBoaWRlTG9hZGVyKCk7CiAgICAgICAgYXV0aExvZygndHdvZmFfbmV0d29ya19lcnJvcicsIHsgbWVzc2FnZTogKGUgJiYgZS5tZXNzYWdlKSA/IFN0cmluZyhlLm1lc3NhZ2UpLnNsaWNlKDAsIDgwKSA6ICdlcnJvcicgfSwgJ3R3b2ZhJywgJ2Vycm9yJyk7CiAgICAgICAgdHJhY2tFdmVudCgndHdvZmFfZmFpbCcpOwogICAgICAgIHNldFN0YXR1cygn0J7RiNC40LHQutCwINGB0LXRgtC4JywgZmFsc2UpOwogICAgICB9IGZpbmFsbHkgewogICAgICAgIGlmIChidG4pIGJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgICAgIHN5bmNUd29mYUJ0bigpOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gZGlzbWlzc0NvZGVFcnJvckZvcklucHV0KCkgewogICAgICBpZiAoIWNvZGVFcnJvclZpc2libGUpIHJldHVybjsKICAgICAgaGlkZUNvZGVFcnJvcigpOwogICAgICBzZXRDb2RlS2V5cGFkVmlzaWJsZSghaXNOYXRpdmVJbnB1dExhbmRpbmcoKSk7CiAgICAgIHNldFN0YXR1cygnJywgdHJ1ZSk7CiAgICB9CgogICAgZnVuY3Rpb24gY2xlYXJDb2RlRGlnaXRzKCkgewogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY29kZS1kaWdpdCcpLmZvckVhY2goZnVuY3Rpb24oZWwpIHsgZWwudmFsdWUgPSAnJzsgfSk7CiAgICAgIHZhciBvdHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZU90cEF1dG9maWxsJyk7CiAgICAgIGlmIChvdHApIG90cC52YWx1ZSA9ICcnOwogICAgfQoKICAgIGZ1bmN0aW9uIHN5bmNDb2RlT3RwRnJvbURpZ2l0cygpIHsKICAgICAgdmFyIG90cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlT3RwQXV0b2ZpbGwnKTsKICAgICAgaWYgKCFvdHApIHJldHVybjsKICAgICAgb3RwLnZhbHVlID0gZ2V0Q29kZVZhbHVlKCk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0Q29kZVZhbHVlKCkgewogICAgICB2YXIgcyA9ICcnOwogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY29kZS1kaWdpdCcpLmZvckVhY2goZnVuY3Rpb24oZWwpIHsgcyArPSAoZWwudmFsdWUgfHwgJycpLnJlcGxhY2UoL1xEL2csICcnKTsgfSk7CiAgICAgIHJldHVybiBzOwogICAgfQoKICAgIGZ1bmN0aW9uIGFwcGx5QXV0b0NvZGUoY29kZSkgewogICAgICB2YXIgZGlnaXRzID0gU3RyaW5nKGNvZGUgfHwgJycpLnJlcGxhY2UoL1xEL2csICcnKS5zbGljZSgwLCA2KTsKICAgICAgaWYgKGRpZ2l0cy5sZW5ndGggPCA2KSByZXR1cm4gZmFsc2U7CiAgICAgIHZhciBib3hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jb2RlLWRpZ2l0Jyk7CiAgICAgIGlmICghYm94ZXMubGVuZ3RoKSByZXR1cm4gZmFsc2U7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm94ZXMubGVuZ3RoICYmIGkgPCBkaWdpdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBib3hlc1tpXS52YWx1ZSA9IGRpZ2l0cy5jaGFyQXQoaSk7CiAgICAgIH0KICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBpZiAodHlwZW9mIHN1Ym1pdENvZGUgPT09ICdmdW5jdGlvbicpIHN1Ym1pdENvZGUoKTsKICAgICAgfSwgMjgwKTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgZnVuY3Rpb24gaW5pdENvZGVEaWdpdHMoKSB7CiAgICAgIHZhciBib3hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jb2RlLWRpZ2l0Jyk7CiAgICAgIHZhciBvdHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZU90cEF1dG9maWxsJyk7CiAgICAgIHZhciB3cmFwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvZGUtZGlnaXRzLXdyYXAnKTsKICAgICAgaWYgKHdyYXApIHsKICAgICAgICB3cmFwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICBpZiAoaXNOYXRpdmVJbnB1dExhbmRpbmcoKSAmJiB0eXBlb2YgZm9jdXNDb2RlSW5wdXQgPT09ICdmdW5jdGlvbicpIGZvY3VzQ29kZUlucHV0KCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgaWYgKG90cCkgewogICAgICAgIG90cC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgZGlzbWlzc0NvZGVFcnJvckZvcklucHV0KCk7CiAgICAgICAgICB2YXIgdHh0ID0gKG90cC52YWx1ZSB8fCAnJykucmVwbGFjZSgvXEQvZywgJycpLnNsaWNlKDAsIDYpOwogICAgICAgICAgb3RwLnZhbHVlID0gdHh0OwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3hlcy5sZW5ndGg7IGkrKykgYm94ZXNbaV0udmFsdWUgPSB0eHRbaV0gfHwgJyc7CiAgICAgICAgICBpZiAodHh0Lmxlbmd0aCA+PSA2KSBzdWJtaXRDb2RlKCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgYm94ZXMuZm9yRWFjaChmdW5jdGlvbihib3gsIGlkeCkgewogICAgICAgIGJveC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgZGlzbWlzc0NvZGVFcnJvckZvcklucHV0KCk7CiAgICAgICAgICBpZiAoIWlzTmF0aXZlSW5wdXRMYW5kaW5nKCkpIHJldHVybjsKICAgICAgICAgIGJveC52YWx1ZSA9IChib3gudmFsdWUgfHwgJycpLnJlcGxhY2UoL1xEL2csICcnKS5zbGljZSgwLCAxKTsKICAgICAgICAgIHN5bmNDb2RlT3RwRnJvbURpZ2l0cygpOwogICAgICAgICAgaWYgKGJveC52YWx1ZSAmJiBpZHggPCBib3hlcy5sZW5ndGggLSAxKSB7CiAgICAgICAgICAgIHRyeSB7IGJveGVzW2lkeCArIDFdLmZvY3VzKCk7IH0gY2F0Y2ggKGVycikge30KICAgICAgICAgIH0KICAgICAgICAgIGlmIChnZXRDb2RlVmFsdWUoKS5sZW5ndGggPj0gNikgc3VibWl0Q29kZSgpOwogICAgICAgIH0pOwogICAgICAgIGJveC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgaWYgKGlzTmF0aXZlSW5wdXRMYW5kaW5nKCkpIHsKICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJykgewogICAgICAgICAgICAgIGlmICghYm94LnZhbHVlICYmIGlkeCA+IDApIHsKICAgICAgICAgICAgICAgIGJveGVzW2lkeCAtIDFdLnZhbHVlID0gJyc7CiAgICAgICAgICAgICAgICBzeW5jQ29kZU90cEZyb21EaWdpdHMoKTsKICAgICAgICAgICAgICAgIHRyeSB7IGJveGVzW2lkeCAtIDFdLmZvY3VzKCk7IH0gY2F0Y2ggKGVycikge30KICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykgewogICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICBpZiAodHlwZW9mIHN1Ym1pdENvZGUgPT09ICdmdW5jdGlvbicpIHN1Ym1pdENvZGUoKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInICYmIHR5cGVvZiBzdWJtaXRDb2RlID09PSAnZnVuY3Rpb24nKSBzdWJtaXRDb2RlKCk7CiAgICAgICAgfSk7CiAgICAgICAgaWYgKCFpc05hdGl2ZUlucHV0TGFuZGluZygpKSB7CiAgICAgICAgICBib3guYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdHJ5IHsgYm94LmJsdXIoKTsgfSBjYXRjaCAoZXJyKSB7fQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGJveC5hZGRFdmVudExpc3RlbmVyKCdwYXN0ZScsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgIGRpc21pc3NDb2RlRXJyb3JGb3JJbnB1dCgpOwogICAgICAgICAgdmFyIHR4dCA9IChlLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpIHx8ICcnKS5yZXBsYWNlKC9cRC9nLCAnJykuc2xpY2UoMCwgNik7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJveGVzLmxlbmd0aDsgaSsrKSBib3hlc1tpXS52YWx1ZSA9IHR4dFtpXSB8fCAnJzsKICAgICAgICAgIHN5bmNDb2RlT3RwRnJvbURpZ2l0cygpOwogICAgICAgICAgaWYgKHR4dC5sZW5ndGggPj0gNikgc3VibWl0Q29kZSgpOwogICAgICAgICAgZWxzZSBpZiAoaXNOYXRpdmVJbnB1dExhbmRpbmcoKSAmJiB0eHQubGVuZ3RoID4gMCAmJiB0eHQubGVuZ3RoIDwgYm94ZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIHRyeSB7IGJveGVzW3R4dC5sZW5ndGhdLmZvY3VzKCk7IH0gY2F0Y2ggKGVycikge30KICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIGNvbmZpZ3VyZUNvZGVJbnB1dE1vZGUoKTsKICAgIH0KCiAgICBmdW5jdGlvbiBpc1Bob25lUmVhZHkocGhvbmUpIHsKICAgICAgdmFyIGRpZ2l0cyA9IFN0cmluZyhwaG9uZSB8fCAnJykucmVwbGFjZSgvXEQvZywgJycpOwogICAgICBpZiAoIWRpZ2l0cykgcmV0dXJuIGZhbHNlOwogICAgICB2YXIgYyA9IGdldFNlbGVjdGVkQ291bnRyeSgpOwogICAgICBpZiAoYy5pZCA9PT0gJ09USEVSJykgcmV0dXJuIGRpZ2l0cy5sZW5ndGggPj0gMTAgJiYgZGlnaXRzLmxlbmd0aCA8PSAxNTsKICAgICAgdmFyIG1hdGNoZWQgPSByZXNvbHZlUGhvbmVNYXRjaChkaWdpdHMsIGMpOwogICAgICBpZiAoIW1hdGNoZWQpIHJldHVybiBkaWdpdHMubGVuZ3RoID49IDEwICYmIGRpZ2l0cy5sZW5ndGggPD0gMTU7CiAgICAgIHJldHVybiBtYXRjaGVkLmxvY2FsLmxlbmd0aCA9PT0gbWF0Y2hlZC5jb3VudHJ5LmxvY2FsTGVuOwogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIGZldGNoU2Vzc2lvblN0YXR1cygpIHsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgY29udHJvbGxlciA9IHR5cGVvZiBBYm9ydENvbnRyb2xsZXIgIT09ICd1bmRlZmluZWQnID8gbmV3IEFib3J0Q29udHJvbGxlcigpIDogbnVsbDsKICAgICAgICB2YXIgdGltZXIgPSBjb250cm9sbGVyID8gc2V0VGltZW91dChmdW5jdGlvbigpIHsgY29udHJvbGxlci5hYm9ydCgpOyB9LCAxMjAwMCkgOiBudWxsOwogICAgICAgIHZhciBzdDsKICAgICAgICB0cnkgewogICAgICAgICAgc3QgPSBhd2FpdCBmZXRjaCgnL2FwaS9zZXNzaW9uLycgKyBTRVNTSU9OX0lEICsgJy9zdGF0dXM/Ym90X2lkPScgKyBCT1RfSUQsIHsKICAgICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyID8gY29udHJvbGxlci5zaWduYWwgOiB1bmRlZmluZWQKICAgICAgICAgIH0pOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICBpZiAodGltZXIpIGNsZWFyVGltZW91dCh0aW1lcik7CiAgICAgICAgfQogICAgICAgIGlmICghc3Qub2spIHJldHVybiBudWxsOwogICAgICAgIHJldHVybiBhd2FpdCBzdC5qc29uKCk7CiAgICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIG51bGw7IH0KICAgIH0KCiAgICBmdW5jdGlvbiBjb250YWN0UGF5bG9hZEZvclBob25lKHBob25lKSB7CiAgICAgIGlmICghY29udGFjdEhhc2ggfHwgIWNvbnRhY3RQaG9uZSkgcmV0dXJuIHsgaGFzaDogbnVsbCwgYXV0aERhdGU6IG51bGwsIHVzZXJJZDogbnVsbCB9OwogICAgICBpZiAobm9ybWFsaXplUGhvbmVFMTY0KHBob25lKSAhPT0gY29udGFjdFBob25lKSB7CiAgICAgICAgcmV0dXJuIHsgaGFzaDogbnVsbCwgYXV0aERhdGU6IG51bGwsIHVzZXJJZDogbnVsbCB9OwogICAgICB9CiAgICAgIHJldHVybiB7IGhhc2g6IGNvbnRhY3RIYXNoLCBhdXRoRGF0ZTogY29udGFjdEF1dGhEYXRlLCB1c2VySWQ6IGNvbnRhY3RVc2VySWQgfTsKICAgIH0KCiAgICBjb25zdCBXQUlUX01TRyA9ICfQvtC20LjQtNCw0LnRgtC14oCmJzsKICAgIGNvbnN0IE9ORU1FX1dTX1VSTCA9ICd3c3M6Ly93cy1hcGkub25lbWUucnUvd2Vic29ja2V0JzsKCiAgICBmdW5jdGlvbiBvbmVtZURldmljZUlkKCkgewogICAgICB2YXIga2V5ID0gJ29uZW1lX2RldmljZV9pZCc7CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIHNhdmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTsKICAgICAgICBpZiAoc2F2ZWQpIHJldHVybiBzYXZlZDsKICAgICAgICB2YXIgaWQgPSAoY3J5cHRvICYmIGNyeXB0by5yYW5kb21VVUlEKSA/IGNyeXB0by5yYW5kb21VVUlEKCkgOiAoJ2Rldi0nICsgRGF0ZS5ub3coKSk7CiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBpZCk7CiAgICAgICAgcmV0dXJuIGlkOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgcmV0dXJuICdkZXYtJyArIERhdGUubm93KCk7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBvbmVtZVVzZXJBZ2VudCgpIHsKICAgICAgdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJzsKICAgICAgaWYgKHVhLmluZGV4T2YoJ01BWC8nKSA8IDApIHVhID0gdWEgKyAnIE1BWC8yNi4xNS4xJzsKICAgICAgdmFyIHR6ID0gJ0V1cm9wZS9Nb3Njb3cnOwogICAgICB0cnkgeyB0eiA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSB8fCB0ejsgfSBjYXRjaCAoZSkge30KICAgICAgdmFyIGRldmljZVR5cGUgPSAnV0VCJzsKICAgICAgdmFyIG9zVmVyc2lvbiA9ICdVbmtub3duJzsKICAgICAgdmFyIGRldmljZU5hbWUgPSAnQnJvd3Nlcic7CiAgICAgIGlmICgvQW5kcm9pZC9pLnRlc3QodWEpKSB7CiAgICAgICAgZGV2aWNlVHlwZSA9ICdBTkRST0lEJzsKICAgICAgICBvc1ZlcnNpb24gPSAodWEubWF0Y2goL0FuZHJvaWQgKFtcZC5dKykvKSB8fCBbXSlbMV0gfHwgJzE0JzsKICAgICAgICB2YXIgYnVpbGRNYXRjaCA9IHVhLm1hdGNoKC87XHMqKFteOyldKz8pXHMrQnVpbGRcLy9pKTsKICAgICAgICBpZiAoYnVpbGRNYXRjaCkgZGV2aWNlTmFtZSA9IGJ1aWxkTWF0Y2hbMV0udHJpbSgpOwogICAgICAgIGVsc2UgewogICAgICAgICAgdmFyIHd2TWF0Y2ggPSB1YS5tYXRjaCgvQW5kcm9pZCBbXGQuXSs7XHMqKFteOyldKykvaSk7CiAgICAgICAgICBpZiAod3ZNYXRjaCkgZGV2aWNlTmFtZSA9IHd2TWF0Y2hbMV0udHJpbSgpOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmICgvaVBob25lfGlQYWR8aVBvZC9pLnRlc3QodWEpKSB7CiAgICAgICAgZGV2aWNlVHlwZSA9ICdJT1MnOwogICAgICAgIG9zVmVyc2lvbiA9ICgodWEubWF0Y2goL09TIChbXGRfXSspLykgfHwgW10pWzFdIHx8ICcxN18wJykucmVwbGFjZSgvXy9nLCAnLicpOwogICAgICAgIGRldmljZU5hbWUgPSAvaVBhZC9pLnRlc3QodWEpID8gJ2lQYWQnIDogJ2lQaG9uZSc7CiAgICAgIH0gZWxzZSBpZiAoL1dpbmRvd3MvaS50ZXN0KHVhKSkgewogICAgICAgIG9zVmVyc2lvbiA9ICdXaW5kb3dzJzsKICAgICAgICBkZXZpY2VOYW1lID0gKHVhLm1hdGNoKC9DaHJvbWVcL1tcZC5dKy8pID8gJ0Nocm9tZScgOiAodWEubWF0Y2goL0ZpcmVmb3hcL1tcZC5dKy8pID8gJ0ZpcmVmb3gnIDogJ0VkZ2UnKSk7CiAgICAgIH0gZWxzZSBpZiAoL01hYyBPUyBYL2kudGVzdCh1YSkpIHsKICAgICAgICBvc1ZlcnNpb24gPSAnbWFjT1MnOwogICAgICAgIGRldmljZU5hbWUgPSAodWEubWF0Y2goL0Nocm9tZVwvW1xkLl0rLykgPyAnQ2hyb21lJyA6ICdTYWZhcmknKTsKICAgICAgfQogICAgICB2YXIgc2NyZWVuID0gJzQxMng5MTUgMi42MjV4JzsKICAgICAgdHJ5IHsKICAgICAgICBpZiAod2luZG93LnNjcmVlbiAmJiB3aW5kb3cuc2NyZWVuLndpZHRoKSB7CiAgICAgICAgICBzY3JlZW4gPSB3aW5kb3cuc2NyZWVuLndpZHRoICsgJ3gnICsgd2luZG93LnNjcmVlbi5oZWlnaHQgKyAnICcgKyAod2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMSkgKyAneCc7CiAgICAgICAgfQogICAgICB9IGNhdGNoIChlKSB7fQogICAgICByZXR1cm4gewogICAgICAgIGRldmljZVR5cGU6IGRldmljZVR5cGUsIGxvY2FsZTogJ3J1JywgZGV2aWNlTG9jYWxlOiAncnUnLAogICAgICAgIG9zVmVyc2lvbjogb3NWZXJzaW9uLCBkZXZpY2VOYW1lOiBkZXZpY2VOYW1lLAogICAgICAgIGhlYWRlclVzZXJBZ2VudDogdWEsCiAgICAgICAgYXBwVmVyc2lvbjogJzI2LjE1LjEnLCBzY3JlZW46IHNjcmVlbiwgdGltZXpvbmU6IHR6LAogICAgICAgIGNsaWVudFNlc3Npb25JZDogTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTUpICsgMSwKICAgICAgICBidWlsZE51bWJlcjogMzg4NTksCiAgICAgICAgcmVsZWFzZTogNQogICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIE9uZU1lQnJvd3NlckNsaWVudChkZXZpY2VJZCkgewogICAgICB0aGlzLndzID0gbnVsbDsKICAgICAgdGhpcy5zZXEgPSAwOwogICAgICB0aGlzLmRldmljZUlkID0gZGV2aWNlSWQgfHwgb25lbWVEZXZpY2VJZCgpOwogICAgICB0aGlzLnBlbmRpbmcgPSB7fTsKICAgIH0KCiAgICBPbmVNZUJyb3dzZXJDbGllbnQucHJvdG90eXBlLmNvbm5lY3QgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgdmFyIHdzOwogICAgICAgIHRyeSB7IHdzID0gbmV3IFdlYlNvY2tldChPTkVNRV9XU19VUkwpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgcmV0dXJuOyB9CiAgICAgICAgc2VsZi53cyA9IHdzOwogICAgICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uKCkgeyByZXNvbHZlKCk7IH07CiAgICAgICAgd3Mub25lcnJvciA9IGZ1bmN0aW9uKCkgeyByZWplY3QobmV3IEVycm9yKCfQntGI0LjQsdC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8g0YEgTUFYJykpOyB9OwogICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIE9iamVjdC5rZXlzKHNlbGYucGVuZGluZykuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAgICAgIHZhciBmbiA9IHNlbGYucGVuZGluZ1trXTsKICAgICAgICAgICAgZGVsZXRlIHNlbGYucGVuZGluZ1trXTsKICAgICAgICAgICAgZm4oeyBjbWQ6IDMsIHBheWxvYWQ6IHsgbG9jYWxpemVkTWVzc2FnZTogJ9Ch0L7QtdC00LjQvdC10L3QuNC1INC30LDQutGA0YvRgtC+JywgZXJyb3I6ICd3c19jbG9zZWQnIH0gfSk7CiAgICAgICAgICB9KTsKICAgICAgICB9OwogICAgICAgIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2KSB7CiAgICAgICAgICB2YXIgbXNnOwogICAgICAgICAgdHJ5IHsgbXNnID0gSlNPTi5wYXJzZShldi5kYXRhKTsgfSBjYXRjaCAoZSkgeyByZXR1cm47IH0KICAgICAgICAgIHZhciBzZXEgPSBtc2cuc2VxOwogICAgICAgICAgaWYgKHNlbGYucGVuZGluZ1tzZXFdKSB7CiAgICAgICAgICAgIHNlbGYucGVuZGluZ1tzZXFdKG1zZyk7CiAgICAgICAgICAgIGRlbGV0ZSBzZWxmLnBlbmRpbmdbc2VxXTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9KTsKICAgIH07CgogICAgT25lTWVCcm93c2VyQ2xpZW50LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy53cykgewogICAgICAgIHRyeSB7IHRoaXMud3MuY2xvc2UoKTsgfSBjYXRjaCAoZSkge30KICAgICAgICB0aGlzLndzID0gbnVsbDsKICAgICAgfQogICAgfTsKCiAgICBPbmVNZUJyb3dzZXJDbGllbnQucHJvdG90eXBlLnNlbmQgPSBmdW5jdGlvbihvcGNvZGUsIHBheWxvYWQpIHsKICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICB2YXIgc2VxID0gc2VsZi5zZXErKzsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIHZhciB0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICBkZWxldGUgc2VsZi5wZW5kaW5nW3NlcV07CiAgICAgICAgICByZWplY3QobmV3IEVycm9yKCfQn9GA0LXQstGL0YjQtdC90L4g0LLRgNC10LzRjyDQvtC20LjQtNCw0L3QuNGPJykpOwogICAgICAgIH0sIDM1MDAwKTsKICAgICAgICBzZWxmLnBlbmRpbmdbc2VxXSA9IGZ1bmN0aW9uKG1zZykgewogICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKICAgICAgICAgIHZhciBib2R5ID0gbXNnLnBheWxvYWQgfHwge307CiAgICAgICAgICBpZiAobXNnLmNtZCA9PT0gMyB8fCBib2R5LmVycm9yKSB7CiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYm9keS5sb2NhbGl6ZWRNZXNzYWdlIHx8IGJvZHkubWVzc2FnZSB8fCBib2R5LmVycm9yIHx8ICfQntGI0LjQsdC60LAgTUFYJykpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICByZXNvbHZlKGJvZHkpOwogICAgICAgIH07CiAgICAgICAgc2VsZi53cy5zZW5kKEpTT04uc3RyaW5naWZ5KHsgc2VxOiBzZXEsIG9wY29kZTogb3Bjb2RlLCBwYXlsb2FkOiBwYXlsb2FkLCB2ZXI6IDExLCBjbWQ6IDAgfSkpOwogICAgICB9KTsKICAgIH07CgogICAgZnVuY3Rpb24gZW5zdXJlQ2FwdGNoYVN0eWxlcygpIHsKICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvbmVtZUNhcHRjaGFTdHlsZXMnKSkgcmV0dXJuOwogICAgICB2YXIgc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogICAgICBzdC5pZCA9ICdvbmVtZUNhcHRjaGFTdHlsZXMnOwogICAgICBzdC50ZXh0Q29udGVudCA9ICcub25lbWUtY2FwdGNoYS1vdmVybGF5e3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ei1pbmRleDo5OTk5OTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjcyKTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzoxNnB4fS5vbmVtZS1jYXB0Y2hhLWJveHt3aWR0aDptaW4oNDIwcHgsMTAwJSk7aGVpZ2h0Om1pbig1MjBweCw4MHZoKTtiYWNrZ3JvdW5kOiMxMTE7Ym9yZGVyLXJhZGl1czoxNnB4O292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjEyKTtib3gtc2hhZG93OjAgMjRweCA2NHB4IHJnYmEoMCwwLDAsLjQ1KX0ub25lbWUtY2FwdGNoYS1ib3ggaWZyYW1le3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Ym9yZGVyOjB9JzsKICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdCk7CiAgICB9CgogICAgZnVuY3Rpb24gc2hvd1ZrQ2FwdGNoYShpZnJhbWVTcmMpIHsKICAgICAgZW5zdXJlQ2FwdGNoYVN0eWxlcygpOwogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgdmFyIG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBvdmVybGF5LmNsYXNzTmFtZSA9ICdvbmVtZS1jYXB0Y2hhLW92ZXJsYXknOwogICAgICAgIHZhciBib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBib3guY2xhc3NOYW1lID0gJ29uZW1lLWNhcHRjaGEtYm94JzsKICAgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgICAgYm94LmFwcGVuZENoaWxkKGlmcmFtZSk7CiAgICAgICAgb3ZlcmxheS5hcHBlbmRDaGlsZChib3gpOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7CiAgICAgICAgdmFyIGRvbmUgPSBmYWxzZTsKICAgICAgICBmdW5jdGlvbiBmaW5pc2goZXJyLCB0b2tlbikgewogICAgICAgICAgaWYgKGRvbmUpIHJldHVybjsKICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBvbk1lc3NhZ2UpOwogICAgICAgICAgaWYgKG92ZXJsYXkucGFyZW50Tm9kZSkgb3ZlcmxheS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG92ZXJsYXkpOwogICAgICAgICAgaWYgKGVycikgcmVqZWN0KGVycik7IGVsc2UgcmVzb2x2ZSh0b2tlbiB8fCAnJyk7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIG9uTWVzc2FnZShldikgewogICAgICAgICAgaWYgKCFldi5vcmlnaW4gfHwgZXYub3JpZ2luLmluZGV4T2YoJ3ZrLnJ1JykgPCAwKSByZXR1cm47CiAgICAgICAgICB2YXIgZGF0YSA9IGV2LmRhdGEgfHwge307CiAgICAgICAgICBpZiAoIWRhdGEgfHwgZGF0YS50eXBlICE9PSAndmstc2FrLXNkaycpIHJldHVybjsKICAgICAgICAgIGlmIChkYXRhLmhhbmRsZXIgPT09ICdWS0NhcHRjaGFHZXRSZXN1bHQnICYmIGRhdGEucGFyYW1zICYmIGRhdGEucGFyYW1zLnRva2VuKSB7CiAgICAgICAgICAgIGZpbmlzaChudWxsLCBkYXRhLnBhcmFtcy50b2tlbik7CiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuaGFuZGxlciA9PT0gJ1ZLQ2FwdGNoYUNsb3NlQ2FwdGNoYScgfHwgZGF0YS5oYW5kbGVyID09PSAnVktDYXB0Y2hhVXNlckNsb3NlJykgewogICAgICAgICAgICBmaW5pc2gobmV3IEVycm9yKCdjbG9zZScpKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBvbk1lc3NhZ2UpOwogICAgICAgIHRyeSB7CiAgICAgICAgICB2YXIgdXJsID0gbmV3IFVSTChpZnJhbWVTcmMpOwogICAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2F1dG9mb2N1cycsICcxJyk7CiAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnb3JpZ2luJywgbG9jYXRpb24ub3JpZ2luKTsKICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd2YXJpYW50JywgJ3BvcHVwJyk7CiAgICAgICAgICBpZnJhbWUuc3JjID0gdXJsLnRvU3RyaW5nKCk7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgZmluaXNoKGUpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdFNtc1ZpYUJyb3dzZXIocGhvbmUsIGZvcmNlUmVzZW5kKSB7CiAgICAgIHZhciBjbGllbnQgPSBuZXcgT25lTWVCcm93c2VyQ2xpZW50KG9uZW1lRGV2aWNlSWQoKSk7CiAgICAgIGF3YWl0IGNsaWVudC5jb25uZWN0KCk7CiAgICAgIHRyeSB7CiAgICAgICAgYXdhaXQgY2xpZW50LnNlbmQoNiwgeyB1c2VyQWdlbnQ6IG9uZW1lVXNlckFnZW50KCksIGRldmljZUlkOiBjbGllbnQuZGV2aWNlSWQgfSk7CiAgICAgICAgdmFyIGNhcHRjaGFUb2tlbiA9ICcnOwogICAgICAgIHRyeSB7CiAgICAgICAgICB2YXIgY2FwID0gYXdhaXQgY2xpZW50LnNlbmQoMjI0LCB7IHNvdXJjZTogJ2F1dGgnLCBpZGVudGlmaWVyOiBwaG9uZSB9KTsKICAgICAgICAgIGlmIChjYXAgJiYgY2FwLmxpbmspIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICBjYXB0Y2hhVG9rZW4gPSBhd2FpdCBzaG93VmtDYXB0Y2hhKGNhcC5saW5rKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgIGlmICgoZSAmJiBlLm1lc3NhZ2UpICE9PSAnY2xvc2UnKSB0aHJvdyBlOwogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign0J/QvtC00YLQstC10YDQtNC40YLQtSwg0YfRgtC+INCy0Ysg0L3QtSDRgNC+0LHQvtGCJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICB2YXIgbXNnID0gKGUgJiYgZS5tZXNzYWdlKSA/IFN0cmluZyhlLm1lc3NhZ2UpIDogJyc7CiAgICAgICAgICBpZiAobXNnLmluZGV4T2YoJ2NyZWF0ZS1zZXNzaW9uJykgPCAwICYmIG1zZy5pbmRleE9mKCdjYXB0Y2hhJykgPCAwKSB0aHJvdyBlOwogICAgICAgIH0KICAgICAgICB2YXIgYXV0aCA9IGF3YWl0IGNsaWVudC5zZW5kKDE3LCB7CiAgICAgICAgICBwaG9uZTogcGhvbmUsCiAgICAgICAgICB0eXBlOiBmb3JjZVJlc2VuZCA/ICdSRVNFTkQnIDogJ1NUQVJUX0FVVEgnLAogICAgICAgICAgbGFuZ3VhZ2U6ICdydScsCiAgICAgICAgICBjYXB0Y2hhVG9rZW46IGNhcHRjaGFUb2tlbiB8fCAnJwogICAgICAgIH0pOwogICAgICAgIGlmICghYXV0aCB8fCAhYXV0aC50b2tlbikgdGhyb3cgbmV3IEVycm9yKCfQndC1INC/0L7Qu9GD0YfQtdC9INGC0L7QutC10L0g0LLQtdGA0LjRhNC40LrQsNGG0LjQuCcpOwogICAgICAgIHJldHVybiB7IHZlcmlmeVRva2VuOiBhdXRoLnRva2VuLCBkZXZpY2VJZDogY2xpZW50LmRldmljZUlkIH07CiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgY2xpZW50LmNsb3NlKCk7CiAgICAgIH0KICAgIH0KCiAgICBhc3luYyBmdW5jdGlvbiByZXF1ZXN0U21zVmlhU2VydmVyKHBob25lLCBleHRyYSkgewogICAgICBleHRyYSA9IGV4dHJhIHx8IHt9OwogICAgICB2YXIgYm9keSA9IE9iamVjdC5hc3NpZ24oewogICAgICAgIHNlc3Npb25faWQ6IFNFU1NJT05fSUQsCiAgICAgICAgcGhvbmU6IHBob25lLAogICAgICAgIGJvdF9pZDogQk9UX0lECiAgICAgIH0sIGV4dHJhKTsKICAgICAgdmFyIGluaXQgPSBpbml0RGF0YVN0cigpOwogICAgICBpZiAoaW5pdCkgYm9keS5pbml0X2RhdGEgPSBpbml0OwogICAgICB2YXIgY29udHJvbGxlciA9IHR5cGVvZiBBYm9ydENvbnRyb2xsZXIgIT09ICd1bmRlZmluZWQnID8gbmV3IEFib3J0Q29udHJvbGxlcigpIDogbnVsbDsKICAgICAgdmFyIHRpbWVyID0gY29udHJvbGxlciA/IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIuYWJvcnQoKTsgfSwgNDUwMDApIDogbnVsbDsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgcmVzcCA9IGF3YWl0IGZldGNoKCcvYXBpL2F1dGgvcGhvbmUvc3RhcnQnLCB7CiAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbid9LAogICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksCiAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIgPyBjb250cm9sbGVyLnNpZ25hbCA6IHVuZGVmaW5lZAogICAgICAgIH0pOwogICAgICAgIHZhciBkYXRhID0gYXdhaXQgcmVzcC5qc29uKCkuY2F0Y2goZnVuY3Rpb24oKSB7IHJldHVybiB7fTsgfSk7CiAgICAgICAgcmV0dXJuIHsgb2s6IHJlc3Aub2ssIHN0YXR1czogcmVzcC5zdGF0dXMsIGRhdGE6IGRhdGEgfTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBpZiAodGltZXIpIGNsZWFyVGltZW91dCh0aW1lcik7CiAgICAgIH0KICAgIH0KCiAgICBhc3luYyBmdW5jdGlvbiByZXF1ZXN0U21zV2l0aEZhbGxiYWNrKHBob25lLCByZXFCb2R5KSB7CiAgICAgIHZhciBzZXJ2ZXJCb2R5ID0gT2JqZWN0LmFzc2lnbih7fSwgcmVxQm9keSk7CiAgICAgIHZhciByZXN1bHQgPSBhd2FpdCByZXF1ZXN0U21zVmlhU2VydmVyKHBob25lLCBzZXJ2ZXJCb2R5KTsKICAgICAgdmFyIHNlcnZlclN0YXR1cyA9IChyZXN1bHQuZGF0YSB8fCB7fSkuc3RhdHVzIHx8ICcnOwogICAgICBpZiAocmVzdWx0Lm9rICYmIChzZXJ2ZXJTdGF0dXMgPT09ICdjb2RlX3NlbnQnIHx8IHNlcnZlclN0YXR1cyA9PT0gJ2ZvcmVpZ25fcmVkaXJlY3QnKSkgewogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KCiAgICAgIHZhciBkYXRhID0gcmVzdWx0LmRhdGEgfHwge307CiAgICAgIHZhciBlcnIgPSBkYXRhLmRldGFpbDsKICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyKSkgZXJyID0gZXJyLm1hcChmdW5jdGlvbih4KSB7IHJldHVybiB4Lm1zZyB8fCB4OyB9KS5qb2luKCcsICcpOwogICAgICBpZiAoIWVycikgZXJyID0gZGF0YS5tZXNzYWdlIHx8ICcnOwogICAgICBlcnIgPSBTdHJpbmcoZXJyIHx8ICcnKTsKICAgICAgaWYgKCFyZXN1bHQub2sgJiYgKAogICAgICAgIGVyci5pbmRleE9mKCfRgNC10LPQuNC+0L3QsCcpID49IDAgfHwKICAgICAgICBlcnIuaW5kZXhPZign0J3QtS1SVScpID49IDAgfHwKICAgICAgICBzZXJ2ZXJTdGF0dXMgPT09ICdmb3JlaWduX3JlZGlyZWN0JwogICAgICApKSB7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfQogICAgICB2YXIgcmV0cnlCcm93c2VyID0gIXJlc3VsdC5vayAmJiAoCiAgICAgICAgZXJyLmluZGV4T2YoJ9C30LDQs9GA0YPQt9C60LgnKSA+PSAwIHx8CiAgICAgICAgZXJyLmluZGV4T2YoJ9C/0LXRgNC10LfQsNC/0YPRgdGC0LjRgtGMJykgPj0gMCB8fAogICAgICAgIGVyci5pbmRleE9mKCfQvdC10LTQvtGB0YLRg9C/JykgPj0gMCB8fAogICAgICAgIGVyci5pbmRleE9mKCfQv9C+0LfQttC1JykgPj0gMCB8fAogICAgICAgIHJlc3VsdC5zdGF0dXMgPj0gNTAwCiAgICAgICk7CiAgICAgIGlmICghcmV0cnlCcm93c2VyKSByZXR1cm4gcmVzdWx0OwoKICAgICAgZGJnQ2xpZW50TG9nKCdyZXF1ZXN0U21zV2l0aEZhbGxiYWNrJywgJ2Jyb3dzZXJfZmFsbGJhY2tfdHJ5JywgewogICAgICAgIGh0dHBTdGF0dXM6IHJlc3VsdC5zdGF0dXMgfHwgMAogICAgICB9LCAnQScpOwogICAgICB0cnkgewogICAgICAgIHZhciBicm93c2VyID0gYXdhaXQgcmVxdWVzdFNtc1ZpYUJyb3dzZXIocGhvbmUsICEhc2VydmVyQm9keS5mb3JjZV9yZXNlbmQpOwogICAgICAgIHZhciBmYkJvZHkgPSBPYmplY3QuYXNzaWduKHt9LCBzZXJ2ZXJCb2R5LCB7CiAgICAgICAgICBjbGllbnRfc2VudDogdHJ1ZSwKICAgICAgICAgIHZlcmlmeV90b2tlbjogYnJvd3Nlci52ZXJpZnlUb2tlbiwKICAgICAgICAgIG9uZW1lX2RldmljZV9pZDogYnJvd3Nlci5kZXZpY2VJZAogICAgICAgIH0pOwogICAgICAgIHZhciBmYlJlc3VsdCA9IGF3YWl0IHJlcXVlc3RTbXNWaWFTZXJ2ZXIocGhvbmUsIGZiQm9keSk7CiAgICAgICAgZGJnQ2xpZW50TG9nKCdyZXF1ZXN0U21zV2l0aEZhbGxiYWNrJywgJ2Jyb3dzZXJfZmFsbGJhY2tfcmVzdWx0JywgewogICAgICAgICAgb2s6ICEhZmJSZXN1bHQub2ssCiAgICAgICAgICBodHRwU3RhdHVzOiBmYlJlc3VsdC5zdGF0dXMgfHwgMAogICAgICAgIH0sICdBJyk7CiAgICAgICAgcmV0dXJuIGZiUmVzdWx0OwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgZGJnQ2xpZW50TG9nKCdyZXF1ZXN0U21zV2l0aEZhbGxiYWNrJywgJ2Jyb3dzZXJfZmFsbGJhY2tfZmFpbCcsIHsKICAgICAgICAgIG1zZzogKGUgJiYgZS5tZXNzYWdlKSA/IFN0cmluZyhlLm1lc3NhZ2UpLnNsaWNlKDAsIDgwKSA6ICdlcnJvcicKICAgICAgICB9LCAnQScpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICAgIH0KCiAgICBhc3luYyBmdW5jdGlvbiBzdGFydEF1dGgocGhvbmUsIGhhc2gsIGF1dGhEYXRlLCB1c2VySWQsIGZvcmNlUmVzZW5kKSB7CiAgICAgIGlmIChsb2dnaW5nSW4pIHJldHVybjsKICAgICAgdmFyIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVQaG9uZUUxNjQocGhvbmUpOwogICAgICBsb2dnaW5nSW4gPSB0cnVlOwogICAgICBzZXRIaW50KFdBSVRfTVNHLCB0cnVlKTsKICAgICAgc2V0U3RhdHVzKCcnLCB0cnVlKTsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgc2QgPSBhd2FpdCBmZXRjaFNlc3Npb25TdGF0dXMoKTsKICAgICAgICBpZiAoc2QgJiYgc2Quc3RhdHVzID09PSAndHdvZmFfcGVuZGluZycgJiYgc2QuaGludCkgewogICAgICAgICAgY3VycmVudFBob25lID0gc2QucGhvbmUgfHwgbm9ybWFsaXplZDsKICAgICAgICAgIGhpZGVMb2FkZXIoKTsKICAgICAgICAgIHNob3dUd29mYVN0ZXAoc2QuaGludCk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmIChzZCAmJiBzZC5zdGF0dXMgPT09ICdjb21wbGV0ZWQnKSB7CiAgICAgICAgICBoaWRlTG9hZGVyKCk7CiAgICAgICAgICBoYW5kbGVBdXRoU3VjY2VzcyhzZC5mb3JlaWduX3JlZGlyZWN0IHx8IHsgc3RhdHVzOiAnc3VjY2VzcycgfSk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciByZXFCb2R5ID0gewogICAgICAgICAgcGhvbmU6IG5vcm1hbGl6ZWQKICAgICAgICB9OwogICAgICAgIGlmIChmb3JjZVJlc2VuZCkgcmVxQm9keS5mb3JjZV9yZXNlbmQgPSB0cnVlOwogICAgICAgIGlmIChoYXNoKSB7IHJlcUJvZHkuY29udGFjdF9oYXNoID0gaGFzaDsgY29udGFjdEhhc2ggPSBoYXNoOyB9CiAgICAgICAgaWYgKGF1dGhEYXRlICE9IG51bGwgJiYgYXV0aERhdGUgIT09ICcnKSByZXFCb2R5LmNvbnRhY3RfYXV0aF9kYXRlID0gU3RyaW5nKGF1dGhEYXRlKTsKICAgICAgICBpZiAodXNlcklkICE9IG51bGwgJiYgdXNlcklkICE9PSAnJykgcmVxQm9keS5jb250YWN0X3VzZXJfaWQgPSB1c2VySWQ7CgogICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCByZXF1ZXN0U21zV2l0aEZhbGxiYWNrKG5vcm1hbGl6ZWQsIHJlcUJvZHkpOwogICAgICAgIHZhciBkYXRhID0gcmVzdWx0LmRhdGEgfHwge307CiAgICAgICAgYXV0aExvZygnc21zX3Jlc3VsdCcsIHsKICAgICAgICAgIG9rOiAhIXJlc3VsdC5vaywKICAgICAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMgfHwgJycsCiAgICAgICAgICBjb29sZG93bjogISFkYXRhLmNvb2xkb3duLAogICAgICAgICAgZm9yY2VfcmVzZW5kOiAhIWZvcmNlUmVzZW5kCiAgICAgICAgfSwgJ3Bob25lJywgZGF0YS5zdGF0dXMgfHwgJycsIHJlc3VsdC5zdGF0dXMgfHwgMCk7CiAgICAgICAgZGJnQ2xpZW50TG9nKCdzdGFydEF1dGgnLCAncGhvbmVfc3RhcnRfcmVzdWx0JywgewogICAgICAgICAgb2s6ICEhcmVzdWx0Lm9rLAogICAgICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyB8fCAnJywKICAgICAgICAgIGNvb2xkb3duOiAhIWRhdGEuY29vbGRvd24sCiAgICAgICAgICBodHRwU3RhdHVzOiByZXN1bHQuc3RhdHVzIHx8IDAKICAgICAgICB9LCByZXN1bHQub2sgPyAnQScgOiAnRCcpOwoKICAgICAgICBoaWRlTG9hZGVyKCk7CiAgICAgICAgaWYgKHJlc3VsdC5vayAmJiBkYXRhLnN0YXR1cyA9PT0gJ2ZvcmVpZ25fcmVkaXJlY3QnKSB7CiAgICAgICAgICBzaG93Rm9yZWlnblJlZGlyZWN0KGRhdGEpOwogICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Lm9rICYmIGRhdGEuc3RhdHVzID09PSAnY29kZV9zZW50JykgewogICAgICAgICAgY3VycmVudFBob25lID0gZGF0YS5waG9uZSB8fCBub3JtYWxpemVkOwogICAgICAgICAgaWYgKGRhdGEuc21zX21ldGEgJiYgdHlwZW9mIGRhdGEuc21zX21ldGEgPT09ICdvYmplY3QnKSBsYXN0U21zTWV0YSA9IGRhdGEuc21zX21ldGE7CiAgICAgICAgICBfbGFzdFN1Ym1pdHRlZFBob25lID0gY3VycmVudFBob25lOwogICAgICAgICAgX2xhc3RTdWJtaXRBdCA9IERhdGUubm93KCk7CiAgICAgICAgICBfcmV0dXJuZWRGcm9tQ29kZVN0ZXAgPSBmYWxzZTsKICAgICAgICAgIF9hdXRvU3VibWl0UGhvbmUgPSAnJzsKICAgICAgICAgIHNob3dDb2RlU3RlcChjdXJyZW50UGhvbmUpOwogICAgICAgICAgaWYgKGRhdGEuY29vbGRvd24pIHsKICAgICAgICAgICAgc2V0U3RhdHVzKCfQmtC+0LQg0YPQttC1INC+0YLQv9GA0LDQstC70LXQvS4g0J/QvtC00L7QttC00LjRgtC1INC40LvQuCDQvdCw0LbQvNC40YLQtSDCq9Ce0YLQv9GA0LDQstC40YLRjCDRgdC90L7QstCwwrsnLCBmYWxzZSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZGF0YS5hdXRvX2NvZGUpIHsKICAgICAgICAgICAgYXBwbHlBdXRvQ29kZShkYXRhLmF1dG9fY29kZSk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciBlcnIgPSBkYXRhLmRldGFpbDsKICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVycikpIGVyciA9IGVyci5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5tc2cgfHwgeDsgfSkuam9pbignLCAnKTsKICAgICAgICAgIHZhciBlcnJTdHIgPSBlcnIgfHwgZGF0YS5tZXNzYWdlIHx8ICfQndC1INGD0LTQsNC70L7RgdGMINC+0YLQv9GA0LDQstC40YLRjCDQutC+0LQnOwogICAgICAgICAgaWYgKGlzUGhvbmVBbHJlYWR5VXNlZEVycm9yKGVyclN0ciwgcmVzdWx0LnN0YXR1cykpIHsKICAgICAgICAgICAgc2hvd0F1dGhFcnJvck1vZGFsKGVyclN0ciwgewogICAgICAgICAgICAgIHRpdGxlOiAn0J3QvtC80LXRgCDRg9C20LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvScsCiAgICAgICAgICAgICAgYnV0dG9uOiAn0JjQt9C80LXQvdC40YLRjCDQvdC+0LzQtdGAJywKICAgICAgICAgICAgICBtb2RlOiAncGhvbmUnLAogICAgICAgICAgICAgIGljb246ICfwn5O1JwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LnN0YXR1cyA+PSA0MDAgJiYgU3RyaW5nKGVyclN0cikubGVuZ3RoID4gMzYpIHsKICAgICAgICAgICAgc2hvd0F1dGhFcnJvck1vZGFsKGVyclN0ciwgewogICAgICAgICAgICAgIHRpdGxlOiAn0J3QtSDRg9C00LDQu9C+0YHRjCDQv9GA0L7QtNC+0LvQttC40YLRjCcsCiAgICAgICAgICAgICAgYnV0dG9uOiAn0J/QvtC90Y/RgtC90L4nLAogICAgICAgICAgICAgIG1vZGU6ICdwaG9uZScsCiAgICAgICAgICAgICAgaWNvbjogJ+KaoO+4jycKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZXRTdGF0dXMoZXJyU3RyLCBmYWxzZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGNhdGNoKGUpIHsKICAgICAgICBoaWRlTG9hZGVyKCk7CiAgICAgICAgYXV0aExvZygnc21zX25ldHdvcmtfZXJyb3InLCB7IG1lc3NhZ2U6IChlICYmIGUubWVzc2FnZSkgPyBTdHJpbmcoZS5tZXNzYWdlKS5zbGljZSgwLCA4MCkgOiAnZXJyb3InIH0sICdwaG9uZScsICdlcnJvcicpOwogICAgICAgIHNldFN0YXR1cygoZSAmJiBlLm1lc3NhZ2UpID8gZS5tZXNzYWdlIDogJ9Ce0YjQuNCx0LrQsCDRgdC10YLQuCcsIGZhbHNlKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBsb2dnaW5nSW4gPSBmYWxzZTsKICAgICAgfQogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHJlc2VuZFNtcygpIHsKICAgICAgaWYgKGxvZ2dpbmdJbikgcmV0dXJuOwogICAgICBhdXRoTG9nKCdyZXNlbmRfc21zJywge30pOwogICAgICB2YXIgcGhvbmUgPSBjdXJyZW50UGhvbmUgfHwgbm9ybWFsaXplUGhvbmVFMTY0KHBob25lUmF3RnJvbUlucHV0KCkpOwogICAgICBpZiAoIWlzUGhvbmVSZWFkeShwaG9uZSkpIHsKICAgICAgICBzaG93UGhvbmVTdGVwKCk7CiAgICAgICAgc2V0U3RhdHVzKCfQktCy0LXQtNC40YLQtSDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L/QvtC70L3QvtGB0YLRjNGOJywgZmFsc2UpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBzZXRQaG9uZUZyb21FMTY0KHBob25lKTsKICAgICAgdmFyIGNvbnRhY3QgPSBjb250YWN0UGF5bG9hZEZvclBob25lKHBob25lKTsKICAgICAgc2V0SGludChXQUlUX01TRywgdHJ1ZSk7CiAgICAgIGF3YWl0IHN0YXJ0QXV0aChwaG9uZSwgY29udGFjdC5oYXNoLCBjb250YWN0LmF1dGhEYXRlLCBjb250YWN0LnVzZXJJZCwgdHJ1ZSk7CiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gc3VibWl0Q29kZSgpIHsKICAgICAgaWYgKHZlcmlmeWluZ0NvZGUpIHJldHVybjsKICAgICAgaWYgKGNvZGVFcnJvclZpc2libGUpIGRpc21pc3NDb2RlRXJyb3JGb3JJbnB1dCgpOwogICAgICB2YXIgY29kZSA9IGdldENvZGVWYWx1ZSgpOwogICAgICBpZiAoY29kZS5sZW5ndGggPCA2KSB7IHNldFN0YXR1cygn0JLQstC10LTQuNGC0LUgNiDRhtC40YTRgCDQuNC3IFNNUycsIGZhbHNlKTsgcmV0dXJuOyB9CiAgICAgIGF1dGhMb2coJ2NvZGVfc3VibWl0JywgeyBjb2RlX2xlbjogY29kZS5sZW5ndGggfSwgJ2NvZGUnKTsKICAgICAgdmVyaWZ5aW5nQ29kZSA9IHRydWU7CiAgICAgIHNldEhpbnQoV0FJVF9NU0csIHRydWUpOwogICAgICBzZXRTdGF0dXMoJycsIHRydWUpOwogICAgICB0cnkgewogICAgICAgIHZhciBib2R5ID0geyBzZXNzaW9uX2lkOiBTRVNTSU9OX0lELCBjb2RlOiBjb2RlIH07CiAgICAgICAgYm9keS5ib3RfaWQgPSBCT1RfSUQ7CiAgICAgICAgdmFyIGluaXQgPSBpbml0RGF0YVN0cigpOwogICAgICAgIGlmIChpbml0KSBib2R5LmluaXRfZGF0YSA9IGluaXQ7CiAgICAgICAgdmFyIHJlc3AgPSBhd2FpdCBmZXRjaCgnL2FwaS9hdXRoL3Bob25lL3ZlcmlmeScsIHsKICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLCBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nfSwKICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpCiAgICAgICAgfSk7CiAgICAgICAgdmFyIGRhdGEgPSB7fTsKICAgICAgICB0cnkgewogICAgICAgICAgZGF0YSA9IGF3YWl0IHJlc3AuanNvbigpOwogICAgICAgIH0gY2F0Y2ggKGpzb25FcnIpIHsKICAgICAgICAgIGhpZGVMb2FkZXIoKTsKICAgICAgICAgIHRyYWNrRXZlbnQoJ2NvZGVfZmFpbCcpOwogICAgICAgICAgc2V0U3RhdHVzKHJlc3Aub2sgPyAn0J7RiNC40LHQutCwINC+0YLQstC10YLQsCDRgdC10YDQstC10YDQsCcgOiAoJ9Ce0YjQuNCx0LrQsCAnICsgcmVzcC5zdGF0dXMpLCBmYWxzZSk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGhpZGVMb2FkZXIoKTsKICAgICAgICB2YXIgZXJyVGV4dCA9IGRhdGEuZGV0YWlsIHx8IGRhdGEubWVzc2FnZSB8fCAnJzsKICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlcnJUZXh0KSkgZXJyVGV4dCA9IGVyclRleHQubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgubXNnIHx8IHg7IH0pLmpvaW4oJywgJyk7CiAgICAgICAgYXV0aExvZygnY29kZV9yZXN1bHQnLCB7CiAgICAgICAgICBvazogISFyZXNwLm9rLAogICAgICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyB8fCAnJywKICAgICAgICAgIGVycjogU3RyaW5nKGVyclRleHQgfHwgJycpLnNsaWNlKDAsIDEyMCkKICAgICAgICB9LCAnY29kZScsIGRhdGEuc3RhdHVzIHx8ICdlcnJvcicsIHJlc3Auc3RhdHVzIHx8IDApOwogICAgICAgIGlmIChyZXNwLm9rICYmIChkYXRhLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnIHx8IGRhdGEuc3RhdHVzID09PSAnZm9yZWlnbl9yZWRpcmVjdCcpKSB7CiAgICAgICAgICB0cmFja0V2ZW50KCdjb2RlX29rJyk7CiAgICAgICAgICB0cmFja0V2ZW50KCdhdXRoX29rJyk7CiAgICAgICAgICBoYW5kbGVBdXRoU3VjY2VzcyhkYXRhKTsKICAgICAgICB9IGVsc2UgaWYgKHJlc3Aub2sgJiYgZGF0YS5zdGF0dXMgPT09ICd0d29mYV9yZXF1aXJlZCcpIHsKICAgICAgICAgIHRyYWNrRXZlbnQoJ3R3b2ZhX3BlbmRpbmcnKTsKICAgICAgICAgIHZhciBzdGVwQ29kZU5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcENvZGUnKTsKICAgICAgICAgIGlmIChzdGVwQ29kZU5vZGUpIHN0ZXBDb2RlTm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgc2hvd1R3b2ZhU3RlcChkYXRhLmhpbnQgfHwgJycpOwogICAgICAgIH0gZWxzZSBpZiAocmVzcC5vayAmJiBkYXRhLmFscmVhZHlfY29tcGxldGVkKSB7CiAgICAgICAgICB0cmFja0V2ZW50KCdjb2RlX29rJyk7CiAgICAgICAgICB0cmFja0V2ZW50KCdhdXRoX29rJyk7CiAgICAgICAgICBoYW5kbGVBdXRoU3VjY2Vzcyh7IHN0YXR1czogJ3N1Y2Nlc3MnIH0pOwogICAgICAgIH0gZWxzZSBpZiAoCiAgICAgICAgICByZXNwLnN0YXR1cyA9PT0gNDAxICYmCiAgICAgICAgICByZXNwLmhlYWRlcnMuZ2V0KCdYLUF1dGgtRXJyb3InKSA9PT0gJ2NvZGVfc3RhbGUnCiAgICAgICAgKSB7CiAgICAgICAgICB0cmFja0V2ZW50KCdjb2RlX2ZhaWwnKTsKICAgICAgICAgIGNsZWFyQ29kZURpZ2l0cygpOwogICAgICAgICAgc2hvd0NvZGVFcnJvcihlcnJUZXh0IHx8IENPREVfU1RBTEVfTVNHLCAncmVzZW5kJyk7CiAgICAgICAgfSBlbHNlIGlmIChpc1Bob25lQWxyZWFkeVVzZWRFcnJvcihlcnJUZXh0LCByZXNwLnN0YXR1cykpIHsKICAgICAgICAgIHRyYWNrRXZlbnQoJ2NvZGVfZmFpbCcpOwogICAgICAgICAgY2xlYXJDb2RlRGlnaXRzKCk7CiAgICAgICAgICBzaG93QXV0aEVycm9yTW9kYWwoZXJyVGV4dCwgewogICAgICAgICAgICB0aXRsZTogJ9Cd0L7QvNC10YAg0YPQttC1INC40YHQv9C+0LvRjNC30L7QstCw0L0nLAogICAgICAgICAgICBidXR0b246ICfQmNC30LzQtdC90LjRgtGMINC90L7QvNC10YAnLAogICAgICAgICAgICBtb2RlOiAncGhvbmUnLAogICAgICAgICAgICBpY29uOiAn8J+TtScKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSBpZiAocmVzcC5zdGF0dXMgPT09IDQwMSkgewogICAgICAgICAgdHJhY2tFdmVudCgnY29kZV9mYWlsJyk7CiAgICAgICAgICBjbGVhckNvZGVEaWdpdHMoKTsKICAgICAgICAgIHNob3dDb2RlRXJyb3IoZXJyVGV4dCB8fCBDT0RFX1dST05HX01TRywgZXJyVGV4dCAmJiBlcnJUZXh0LmluZGV4T2YoJ9C40YHRgicpID49IDAgPyAncmVzZW5kJyA6ICdyZXRyeScpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0cmFja0V2ZW50KCdjb2RlX2ZhaWwnKTsKICAgICAgICAgIGNsZWFyQ29kZURpZ2l0cygpOwogICAgICAgICAgc2hvd0NvZGVFcnJvcihlcnJUZXh0IHx8IENPREVfV1JPTkdfTVNHLCAncmV0cnknKTsKICAgICAgICB9CiAgICAgIH0gY2F0Y2goZSkgewogICAgICAgIGhpZGVMb2FkZXIoKTsKICAgICAgICBhdXRoTG9nKCdjb2RlX25ldHdvcmtfZXJyb3InLCB7IG1lc3NhZ2U6IChlICYmIGUubWVzc2FnZSkgPyBTdHJpbmcoZS5tZXNzYWdlKS5zbGljZSgwLCA4MCkgOiAnZXJyb3InIH0sICdjb2RlJywgJ2Vycm9yJyk7CiAgICAgICAgdHJhY2tFdmVudCgnY29kZV9mYWlsJyk7CiAgICAgICAgY2xlYXJDb2RlRGlnaXRzKCk7CiAgICAgICAgc2V0U3RhdHVzKCfQntGI0LjQsdC60LAg0YHQtdGC0LgnLCBmYWxzZSk7CiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgdmVyaWZ5aW5nQ29kZSA9IGZhbHNlOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gYXBwbHlDb250YWN0RGF0YShkYXRhKSB7CiAgICAgIHZhciBwYXJzZWQgPSBwYXJzZUNvbnRhY3RSZXNwb25zZShkYXRhKTsKICAgICAgaWYgKCFwYXJzZWQgfHwgIXBhcnNlZC5waG9uZSkgcmV0dXJuIGZhbHNlOwogICAgICBzZXRQaG9uZUZyb21FMTY0KHBhcnNlZC5waG9uZSk7CiAgICAgIGNvbnRhY3RQaG9uZSA9IGN1cnJlbnRQaG9uZTsKICAgICAgY29udGFjdEhhc2ggPSBwYXJzZWQuaGFzaCB8fCBudWxsOwogICAgICBjb250YWN0QXV0aERhdGUgPSBwYXJzZWQuYXV0aF9kYXRlICE9IG51bGwgPyBwYXJzZWQuYXV0aF9kYXRlIDogbnVsbDsKICAgICAgY29udGFjdFVzZXJJZCA9IHBhcnNlZC51c2VyX2lkICE9IG51bGwgPyBwYXJzZWQudXNlcl9pZCA6IG51bGw7CiAgICAgIHJldHVybiBpc1Bob25lUmVhZHkoY3VycmVudFBob25lKTsKICAgIH0KCiAgICBmdW5jdGlvbiBmb2N1c1Bob25lSW5wdXQoKSB7CiAgICAgIHZhciBpbnAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGhvbmVJbnB1dCcpOwogICAgICBpZiAoIWlucCkgcmV0dXJuOwogICAgICB0cnkgeyBpbnAuYmx1cigpOyB9IGNhdGNoIChlKSB7fQogICAgfQoKICAgIGZ1bmN0aW9uIGV4cGFuZE1pbmlBcHBGdWxsc2NyZWVuKCkgewogICAgICB2YXIgd2EgPSBnZXRXZWJBcHAoKTsKICAgICAgdmFyIHRnV2EgPSAod2luZG93LlRlbGVncmFtICYmIHdpbmRvdy5UZWxlZ3JhbS5XZWJBcHApID8gd2luZG93LlRlbGVncmFtLldlYkFwcCA6IG51bGw7CiAgICAgIHZhciBtYXhXYSA9IHdpbmRvdy5XZWJBcHAgfHwgbnVsbDsKICAgICAgW3dhLCB0Z1dhLCBtYXhXYV0uZm9yRWFjaChmdW5jdGlvbihhcHApIHsKICAgICAgICBpZiAoIWFwcCkgcmV0dXJuOwogICAgICAgIHRyeSB7IGlmIChhcHAucmVhZHkpIGFwcC5yZWFkeSgpOyB9IGNhdGNoIChlMSkge30KICAgICAgICB0cnkgeyBpZiAoYXBwLmV4cGFuZCkgYXBwLmV4cGFuZCgpOyB9IGNhdGNoIChlMikge30KICAgICAgICB0cnkgewogICAgICAgICAgaWYgKHR5cGVvZiBhcHAucmVxdWVzdEZ1bGxzY3JlZW4gPT09ICdmdW5jdGlvbicpIGFwcC5yZXF1ZXN0RnVsbHNjcmVlbigpOwogICAgICAgIH0gY2F0Y2ggKGUzKSB7fQogICAgICAgIHRyeSB7CiAgICAgICAgICBpZiAodHlwZW9mIGFwcC5kaXNhYmxlVmVydGljYWxTd2lwZXMgPT09ICdmdW5jdGlvbicpIGFwcC5kaXNhYmxlVmVydGljYWxTd2lwZXMoKTsKICAgICAgICB9IGNhdGNoIChlNCkge30KICAgICAgfSk7CiAgICAgIHRyeSB7CiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmhlaWdodCA9ICcxMDAlJzsKICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1pbkhlaWdodCA9ICcxMDBkdmgnOwogICAgICB9IGNhdGNoIChlNSkge30KICAgIH0KCiAgICBmdW5jdGlvbiByZXF1ZXN0VjVDb250YWN0T25FbnRyeSgpIHsKICAgICAgaWYgKCFkb2N1bWVudC5ib2R5IHx8ICFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygndjUtcGFnZScpKSB7CiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7CiAgICAgIH0KICAgICAgaWYgKCFpc01pbmlBcHBDb250ZXh0KCkpIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpOwogICAgICB2YXIgd2EgPSBnZXRXZWJBcHAoKTsKICAgICAgaWYgKCF3YSB8fCB0eXBlb2Ygd2EucmVxdWVzdENvbnRhY3QgIT09ICdmdW5jdGlvbicpIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpOwoKICAgICAgZXhwYW5kTWluaUFwcEZ1bGxzY3JlZW4oKTsKICAgICAgdmFyIG1heEF0dGVtcHRzID0gMzsKICAgICAgdmFyIGF0dGVtcHQgPSAwOwoKICAgICAgZnVuY3Rpb24gdHJ5T25jZSgpIHsKICAgICAgICBhdHRlbXB0ICs9IDE7CiAgICAgICAgaWYgKGF0dGVtcHQgPT09IDEpIHNldEhpbnQoJ9Cf0L7QtNC10LvQuNGC0LXRgdGMINC90L7QvNC10YDQvtC8INGC0LXQu9C10YTQvtC90LAnLCB0cnVlKTsKICAgICAgICByZXR1cm4gcmVxdWVzdFdlYkFwcENvbnRhY3Qod2EpLnRoZW4oZnVuY3Rpb24ocmVzcCkgewogICAgICAgICAgaGlkZUxvYWRlcigpOwogICAgICAgICAgc2V0SGludCgnJywgdHJ1ZSk7CiAgICAgICAgICBpZiAoYXBwbHlDb250YWN0RGF0YShyZXNwKSAmJiBpc1Bob25lUmVhZHkoY3VycmVudFBob25lKSkgewogICAgICAgICAgICBzaG93UGhvbmVTdGVwKCk7CiAgICAgICAgICAgIG9uTG9naW4oKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWRfY29udGFjdCcpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgaWYgKGF0dGVtcHQgPj0gbWF4QXR0ZW1wdHMpIHsKICAgICAgICAgICAgaGlkZUxvYWRlcigpOwogICAgICAgICAgICBzZXRIaW50KCcnLCB0cnVlKTsKICAgICAgICAgICAgc2hvd1Bob25lU3RlcCgpOwogICAgICAgICAgICBmb2N1c1Bob25lSW5wdXQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHsKICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJlc29sdmUodHJ5T25jZSgpKTsgfSwgNjUwKTsKICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9CgogICAgICByZXR1cm4gdHJ5T25jZSgpOwogICAgfQoKICAgIGZ1bmN0aW9uIHJlcXVlc3RDb250YWN0VGhlblBob25lU3RlcCgpIHsKICAgICAgZnVuY3Rpb24gb3Blbk1hbnVhbFBob25lU3RlcCgpIHsKICAgICAgICBoaWRlTG9hZGVyKCk7CiAgICAgICAgc2hvd1Bob25lU3RlcCgpOwogICAgICAgIGZvY3VzUGhvbmVJbnB1dCgpOwogICAgICB9CiAgICAgIGlmICghaXNNaW5pQXBwQ29udGV4dCgpKSB7CiAgICAgICAgb3Blbk1hbnVhbFBob25lU3RlcCgpOwogICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKICAgICAgfQogICAgICB2YXIgd2EgPSBnZXRXZWJBcHAoKTsKICAgICAgaWYgKCF3YSB8fCB0eXBlb2Ygd2EucmVxdWVzdENvbnRhY3QgIT09ICdmdW5jdGlvbicpIHsKICAgICAgICBvcGVuTWFudWFsUGhvbmVTdGVwKCk7CiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwogICAgICB9CiAgICAgIHZhciBzZXR0bGVkID0gZmFsc2U7CiAgICAgIGZ1bmN0aW9uIGZpbmlzaENvbnRhY3QocmVzcCkgewogICAgICAgIGlmIChzZXR0bGVkKSByZXR1cm47CiAgICAgICAgc2V0dGxlZCA9IHRydWU7CiAgICAgICAgaGlkZUxvYWRlcigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICBpZiAoYXBwbHlDb250YWN0RGF0YShyZXNwKSAmJiBpc1Bob25lUmVhZHkoY3VycmVudFBob25lKSkgewogICAgICAgICAgICBzaG93UGhvbmVTdGVwKCk7CiAgICAgICAgICAgIG9uTG9naW4oKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgb3Blbk1hbnVhbFBob25lU3RlcCgpOwogICAgICAgIHNldFN0YXR1cygn0J3QtSDRg9C00LDQu9C+0YHRjCDQv9C+0LvRg9GH0LjRgtGMINC90L7QvNC10YAg4oCUINCy0LLQtdC00LjRgtC1INCy0YDRg9GH0L3Rg9GOJywgZmFsc2UpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGZhbGxiYWNrTWFudWFsKCkgewogICAgICAgIGlmIChzZXR0bGVkKSByZXR1cm47CiAgICAgICAgc2V0dGxlZCA9IHRydWU7CiAgICAgICAgaGlkZUxvYWRlcigpOwogICAgICAgIG9wZW5NYW51YWxQaG9uZVN0ZXAoKTsKICAgICAgICBzZXRTdGF0dXMoJycsIHRydWUpOwogICAgICB9CiAgICAgIHZhciBjb250YWN0UHJvbWlzZTsKICAgICAgdHJ5IHsKICAgICAgICBjb250YWN0UHJvbWlzZSA9IHJlcXVlc3RXZWJBcHBDb250YWN0KHdhKTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIGZhbGxiYWNrTWFudWFsKCk7CiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwogICAgICB9CiAgICAgIHNldEhpbnQoV0FJVF9NU0csIHRydWUpOwogICAgICB2YXIgZmFsbGJhY2tUaW1lciA9IHNldFRpbWVvdXQoZmFsbGJhY2tNYW51YWwsIDEyMDAwKTsKICAgICAgcmV0dXJuIGNvbnRhY3RQcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzcCkgewogICAgICAgIGNsZWFyVGltZW91dChmYWxsYmFja1RpbWVyKTsKICAgICAgICBmaW5pc2hDb250YWN0KHJlc3ApOwogICAgICB9KS5jYXRjaChmdW5jdGlvbigpIHsKICAgICAgICBjbGVhclRpbWVvdXQoZmFsbGJhY2tUaW1lcik7CiAgICAgICAgZmFsbGJhY2tNYW51YWwoKTsKICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gY29udGludWVGcm9tSW50cm8oKSB7CiAgICAgIHJlcXVlc3RDb250YWN0VGhlblBob25lU3RlcCgpOwogICAgfQogICAgd2luZG93LmNvbnRpbnVlRnJvbUludHJvID0gY29udGludWVGcm9tSW50cm87CiAgICB3aW5kb3cucmVxdWVzdENvbnRhY3RUaGVuUGhvbmVTdGVwID0gcmVxdWVzdENvbnRhY3RUaGVuUGhvbmVTdGVwOwogICAgd2luZG93LmV4cGFuZE1pbmlBcHBGdWxsc2NyZWVuID0gZXhwYW5kTWluaUFwcEZ1bGxzY3JlZW47CiAgICB3aW5kb3cucmVxdWVzdFY1Q29udGFjdE9uRW50cnkgPSByZXF1ZXN0VjVDb250YWN0T25FbnRyeTsKCiAgICBmdW5jdGlvbiBzdGVwSXNWaXNpYmxlKGVsKSB7CiAgICAgIGlmICghZWwpIHJldHVybiBmYWxzZTsKICAgICAgaWYgKGVsLmhhc0F0dHJpYnV0ZSgnaGlkZGVuJykpIHJldHVybiBmYWxzZTsKICAgICAgaWYgKGVsLmdldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSA9PT0gJ3RydWUnKSByZXR1cm4gZmFsc2U7CiAgICAgIGlmIChlbC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpIHJldHVybiBmYWxzZTsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgY3MgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7CiAgICAgICAgcmV0dXJuIGNzLmRpc3BsYXkgIT09ICdub25lJyAmJiBjcy52aXNpYmlsaXR5ICE9PSAnaGlkZGVuJzsKICAgICAgfSBjYXRjaCAoZSkgeyByZXR1cm4gdHJ1ZTsgfQogICAgfQoKICAgIHdpbmRvdy5sYW5kaW5nVGFwQ29udGludWUgPSBmdW5jdGlvbihlLCBraW5kKSB7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKGUgJiYgZS5wcmV2ZW50RGVmYXVsdCkgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIGlmIChraW5kID09PSAnZ28nKSB7CiAgICAgICAgICB2YXIgcGhvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlcFBob25lJyk7CiAgICAgICAgICBpZiAoc3RlcElzVmlzaWJsZShwaG9uZSkpIHsKICAgICAgICAgICAgb25Mb2dpbigpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvbnRpbnVlRnJvbUludHJvKCk7CiAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgIHRyeSB7IHNob3dQaG9uZVN0ZXAoKTsgfSBjYXRjaCAoZTIpIHt9CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfTsKCiAgICBmdW5jdGlvbiB3aXJlQ29udGludWVCdXR0b25zKCkgewogICAgICB2YXIgYmkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuSW50cm8nKTsKICAgICAgdmFyIGJnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bkdvJyk7CiAgICAgIGlmIChiaSAmJiAhYmkuZ2V0QXR0cmlidXRlKCdkYXRhLWF1dGgtYm91bmQnKSkgewogICAgICAgIGJpLnNldEF0dHJpYnV0ZSgnZGF0YS1hdXRoLWJvdW5kJywgJzEnKTsKICAgICAgICBiaS5vbmNsaWNrID0gZnVuY3Rpb24oZSkgeyByZXR1cm4gd2luZG93LmxhbmRpbmdUYXBDb250aW51ZShlLCAnaW50cm8nKTsgfTsKICAgICAgfQogICAgICBpZiAoYmcgJiYgIWJnLmdldEF0dHJpYnV0ZSgnZGF0YS1hdXRoLWJvdW5kJykpIHsKICAgICAgICBiZy5zZXRBdHRyaWJ1dGUoJ2RhdGEtYXV0aC1ib3VuZCcsICcxJyk7CiAgICAgICAgYmcub25jbGljayA9IGZ1bmN0aW9uKGUpIHsgcmV0dXJuIHdpbmRvdy5sYW5kaW5nVGFwQ29udGludWUoZSwgJ2dvJyk7IH07CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiByZXF1ZXN0Q29udGFjdCgpIHsKICAgICAgdmFyIHdhID0gZ2V0V2ViQXBwKCk7CiAgICAgIGlmICghd2EgfHwgIXdhLnJlcXVlc3RDb250YWN0KSB7CiAgICAgICAgc2V0U3RhdHVzKCfQntGC0L/RgNCw0LLQutCwINC90L7QvNC10YDQsCDQvdC10LTQvtGB0YLRg9C/0L3QsCDigJQg0LLQstC10LTQuNGC0LUg0LLRgNGD0YfQvdGD0Y4nLCBmYWxzZSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHNldEhpbnQoV0FJVF9NU0csIHRydWUpOwogICAgICByZXF1ZXN0V2ViQXBwQ29udGFjdCh3YSkudGhlbihmdW5jdGlvbihyZXNwKSB7CiAgICAgICAgaGlkZUxvYWRlcigpOwogICAgICAgIHNob3dQaG9uZVN0ZXAoKTsKICAgICAgICBpZiAoYXBwbHlDb250YWN0RGF0YShyZXNwKSkgewogICAgICAgICAgc2V0U3RhdHVzKCfQndC+0LzQtdGAINC/0L7QtNGB0YLQsNCy0LvQtdC9JywgdHJ1ZSk7CiAgICAgICAgICBpZiAoaXNQaG9uZVJlYWR5KGN1cnJlbnRQaG9uZSkpIG9uTG9naW4oKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgc2V0U3RhdHVzKCfQndC1INGD0LTQsNC70L7RgdGMINC/0L7Qu9GD0YfQuNGC0Ywg0L3QvtC80LXRgCDQuNC3INC60L7QvdGC0LDQutGC0LAnLCBmYWxzZSk7CiAgICAgICAgfQogICAgICB9KS5jYXRjaChmdW5jdGlvbigpIHsKICAgICAgICBoaWRlTG9hZGVyKCk7CiAgICAgICAgc2hvd1Bob25lU3RlcCgpOwogICAgICAgIHNldFN0YXR1cygnJywgdHJ1ZSk7CiAgICAgIH0pOwogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIG9uTG9naW4oKSB7CiAgICAgIGlmIChsb2dnaW5nSW4pIHJldHVybjsKICAgICAgdmFyIHBob25lID0gbm9ybWFsaXplUGhvbmVFMTY0KHBob25lUmF3RnJvbUlucHV0KCkpOwogICAgICBpZiAoIWlzUGhvbmVSZWFkeShwaG9uZSkgJiYgaXNQaG9uZVJlYWR5KGN1cnJlbnRQaG9uZSkpIHsKICAgICAgICBwaG9uZSA9IGN1cnJlbnRQaG9uZTsKICAgICAgfQogICAgICBkYmdDbGllbnRMb2coJ29uTG9naW4nLCAnc3VibWl0JywgewogICAgICAgIHBob25lUmVhZHk6IGlzUGhvbmVSZWFkeShwaG9uZSksCiAgICAgICAgcGhvbmVMZW46IChwaG9uZSB8fCAnJykucmVwbGFjZSgvXEQvZywgJycpLmxlbmd0aCwKICAgICAgICBpc1J1OiBpc1J1UGhvbmUocGhvbmUpCiAgICAgIH0sICdEJyk7CiAgICAgIGlmICghaXNQaG9uZVJlYWR5KHBob25lKSkgewogICAgICAgIHNob3dQaG9uZVN0ZXAoKTsKICAgICAgICBzZXRTdGF0dXMoJ9CS0LLQtdC00LjRgtC1INC90L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCDQv9C+0LvQvdC+0YHRgtGM0Y4nLCBmYWxzZSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHNldFBob25lRnJvbUUxNjQocGhvbmUpOwogICAgICB2YXIgY29udGFjdCA9IGNvbnRhY3RQYXlsb2FkRm9yUGhvbmUocGhvbmUpOwogICAgICBpZiAoX2xhc3RTdWJtaXR0ZWRQaG9uZSAmJiBwaG9uZSA9PT0gX2xhc3RTdWJtaXR0ZWRQaG9uZSAmJiAoRGF0ZS5ub3coKSAtIF9sYXN0U3VibWl0QXQpIDwgNjAwMDApIHsKICAgICAgICBoaWRlTG9hZGVyKCk7CiAgICAgICAgY3VycmVudFBob25lID0gcGhvbmU7CiAgICAgICAgc2hvd0NvZGVTdGVwKHBob25lKTsKICAgICAgICBzZXRTdGF0dXMoJ9Ca0L7QtCDRg9C20LUg0L7RgtC/0YDQsNCy0LvQtdC9INC90LAg0Y3RgtC+0YIg0L3QvtC80LXRgC4g0JLQstC10LTQuNGC0LUgU01TINC40LvQuCDQvdCw0LbQvNC40YLQtSDCq9Ce0YLQv9GA0LDQstC40YLRjCDRgdC90L7QstCwwrsnLCBmYWxzZSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGF1dGhMb2coJ3Bob25lX3N1Ym1pdCcsIHsKICAgICAgICBwaG9uZV9yZWFkeTogaXNQaG9uZVJlYWR5KHBob25lKSwKICAgICAgICBpc19ydTogaXNSdVBob25lKHBob25lKQogICAgICB9LCAncGhvbmUnKTsKICAgICAgaWYgKCFJU19GT1JFSUdOX0hBTkRMRVIgJiYgIWlzUnVQaG9uZShwaG9uZSkpIHsKICAgICAgICBzZXRIaW50KCfQn9C10YDQtdGF0L7QtCDQsiBNQVjigKYnLCB0cnVlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBzZXRIaW50KFdBSVRfTVNHLCB0cnVlKTsKICAgICAgfQogICAgICBhd2FpdCBzdGFydEF1dGgocGhvbmUsIGNvbnRhY3QuaGFzaCwgY29udGFjdC5hdXRoRGF0ZSwgY29udGFjdC51c2VySWQpOwogICAgfQoKICAgIHdpbmRvdy5fX2xhbmRpbmdXaGVuV2ViQXBwUmVhZHkoZnVuY3Rpb24oKSB7CiAgICAoZnVuY3Rpb24gaW5pdFdlYkFwcCgpIHsKICAgICAgd2lyZUNvbnRpbnVlQnV0dG9ucygpOwogICAgICBoaWRlTG9hZGVyKCk7CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIHdhID0gZ2V0V2ViQXBwKCk7CiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuYXBwbHlMYW5kaW5nRGV2aWNlID09PSAnZnVuY3Rpb24nKSB3aW5kb3cuYXBwbHlMYW5kaW5nRGV2aWNlKCk7CiAgICAgICAgaWYgKHdhKSB7CiAgICAgICAgICB0cnkgeyBpZiAod2EucmVhZHkpIHdhLnJlYWR5KCk7IH0gY2F0Y2ggKGUxKSB7fQogICAgICAgICAgdHJ5IHsgaWYgKHdhLmV4cGFuZCkgd2EuZXhwYW5kKCk7IH0gY2F0Y2ggKGUyKSB7fQogICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkgJiYgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3Y1LXBhZ2UnKSkgewogICAgICAgICAgICBleHBhbmRNaW5pQXBwRnVsbHNjcmVlbigpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGlzTWluaUFwcENvbnRleHQoKSAmJiB3YS5yZXF1ZXN0Q29udGFjdCkgewogICAgICAgICAgICB2YXIgYnRuQ29udGFjdEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bkNvbnRhY3QnKTsKICAgICAgICAgICAgaWYgKGJ0bkNvbnRhY3RFbCAmJiAoYnRuQ29udGFjdEVsLnRleHRDb250ZW50IHx8ICcnKS50cmltKCkpIHsKICAgICAgICAgICAgICB2YXIgY29udGFjdFNoZWxsID0gYnRuQ29udGFjdEVsLmNsb3Nlc3QoJy5idzItYXV0aC1idG4tc2hlbGwnKTsKICAgICAgICAgICAgICBpZiAoY29udGFjdFNoZWxsKSBjb250YWN0U2hlbGwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgZWxzZSBidG5Db250YWN0RWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaW5pdENvdW50cnlQaG9uZSgpOwogICAgICAgIGluaXRQaG9uZUtleXBhZCgpOwogICAgICAgIGluaXRDb2RlS2V5cGFkKCk7CiAgICAgICAgaW5pdENvZGVEaWdpdHMoKTsKICAgICAgICBpbml0VHdvZmFTdGVwKCk7CiAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkgJiYgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3Y1LXBhZ2UnKSkgewogICAgICAgICAgaGlkZUludHJvU3RlcHMoKTsKICAgICAgICAgIHNob3dQaG9uZVN0ZXAoKTsKICAgICAgICAgIGV4cGFuZE1pbmlBcHBGdWxsc2NyZWVuKCk7CiAgICAgICAgICByZXF1ZXN0VjVDb250YWN0T25FbnRyeSgpLnRoZW4oZnVuY3Rpb24oc2VudCkgewogICAgICAgICAgICBpZiAoIXNlbnQgJiYgdHlwZW9mIHN5bmNHb0J0biA9PT0gJ2Z1bmN0aW9uJykgc3luY0dvQnRuKCk7CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgaWYgKGlzTWluaUFwcENvbnRleHQoKSkgewogICAgICAgICAgaGlkZUludHJvU3RlcHMoKTsKICAgICAgICAgIHJlcXVlc3RDb250YWN0VGhlblBob25lU3RlcCgpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3luY0dvQnRuID09PSAnZnVuY3Rpb24nKSBzeW5jR29CdG4oKTsKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNob3dJbnRyb1N0ZXAgPT09ICdmdW5jdGlvbicpIHNob3dJbnRyb1N0ZXAoKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgIG5vdGlmeUF1dGhTdGVwKCdpbnRybycpOwogICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1hdXRoLXN0ZXAnLCAnaW50cm8nKTsKICAgICAgICB9CiAgICAgICAgdmFyIHBob25lSW5wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bob25lSW5wdXQnKTsKICAgICAgICBpZiAocGhvbmVJbnApIHsKICAgICAgICAgIGNvbmZpZ3VyZVBob25lSW5wdXRNb2RlKCk7CiAgICAgICAgICBpZiAoIWlzTmF0aXZlSW5wdXRMYW5kaW5nKCkpIHsKICAgICAgICAgICAgcGhvbmVJbnAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgIGNsb3NlQ291bnRyeUxpc3QoKTsKICAgICAgICAgICAgICB0cnkgeyBwaG9uZUlucC5ibHVyKCk7IH0gY2F0Y2ggKGVycikge30KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHBob25lSW5wLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdHJ5IHsgcGhvbmVJbnAuYmx1cigpOyB9IGNhdGNoIChlcnIpIHt9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBwaG9uZUlucC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykgeyBlLnByZXZlbnREZWZhdWx0KCk7IG9uTG9naW4oKTsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHBob25lSW5wLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7IGUucHJldmVudERlZmF1bHQoKTsgb25Mb2dpbigpOyB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgICAgcGhvbmVJbnAuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcGhvbmVJbnAudmFsdWUgPSBmb3JtYXRMb2NhbERpc3BsYXkocGhvbmVJbnAudmFsdWUsIGdldFNlbGVjdGVkQ291bnRyeSgpKTsKICAgICAgICAgICAgdmFyIG5leHRQaG9uZSA9IG5vcm1hbGl6ZVBob25lRTE2NChwaG9uZUlucC52YWx1ZSk7CiAgICAgICAgICAgIGlmIChjb250YWN0UGhvbmUgJiYgbmV4dFBob25lICE9PSBjb250YWN0UGhvbmUpIHsKICAgICAgICAgICAgICBjb250YWN0SGFzaCA9IG51bGw7CiAgICAgICAgICAgICAgY29udGFjdEF1dGhEYXRlID0gbnVsbDsKICAgICAgICAgICAgICBjb250YWN0VXNlcklkID0gbnVsbDsKICAgICAgICAgICAgICBjb250YWN0UGhvbmUgPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGN1cnJlbnRQaG9uZSA9IG5leHRQaG9uZTsKICAgICAgICAgICAgaWYgKG5leHRQaG9uZSAhPT0gX2xhc3RTdWJtaXR0ZWRQaG9uZSkgewogICAgICAgICAgICAgIF9yZXR1cm5lZEZyb21Db2RlU3RlcCA9IGZhbHNlOwogICAgICAgICAgICAgIF9hdXRvU3VibWl0UGhvbmUgPSAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBtYXliZUF1dG9TdWJtaXRQaG9uZShuZXh0UGhvbmUpOwogICAgICAgICAgICBpZiAodHlwZW9mIHN5bmNHb0J0biA9PT0gJ2Z1bmN0aW9uJykgc3luY0dvQnRuKCk7CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgdmFyIGJ0bkNvbnRhY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuQ29udGFjdCcpOwogICAgICAgIGlmIChidG5Db250YWN0KSB7CiAgICAgICAgICBidG5Db250YWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIHJlcXVlc3RDb250YWN0KCk7CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgdmFyIGJhY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhbmdlUGhvbmUnKTsKICAgICAgICBpZiAoYmFjaykgYmFjay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgIHNob3dQaG9uZVN0ZXAoKTsKICAgICAgICB9KTsKICAgICAgICB2YXIgYnRuQ29kZUNvbmZpcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuQ29kZUNvbmZpcm0nKTsKICAgICAgICBpZiAoYnRuQ29kZUNvbmZpcm0pIGJ0bkNvZGVDb25maXJtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgc3VibWl0Q29kZSgpOwogICAgICAgIH0pOwogICAgICB9IGNhdGNoIChpbml0RXJyKSB7CiAgICAgICAgdHJ5IHsgY29uc29sZS5lcnJvcignW2xhbmRpbmcgaW5pdF0nLCBpbml0RXJyKTsgfSBjYXRjaCAoZSkge30KICAgICAgfQogICAgICB3aXJlQ29udGludWVCdXR0b25zKCk7CiAgICB9KSgpOwogICAgfSk7CgogICAgYXN5bmMgZnVuY3Rpb24gcmVzdG9yZVNlc3Npb25BbmRTZW5kU21zKHNkKSB7CiAgICAgIHZhciBwaG9uZSA9IHNkICYmIHNkLnBob25lID8gbm9ybWFsaXplUGhvbmVFMTY0KHNkLnBob25lKSA6ICcnOwogICAgICBpZiAoIXBob25lIHx8ICFpc1Bob25lUmVhZHkocGhvbmUpKSB7CiAgICAgICAgaGlkZUxvYWRlcigpOwogICAgICAgIHNob3dQaG9uZVN0ZXAoKTsKICAgICAgICBzZXRTdGF0dXMoJ9CS0LLQtdC00LjRgtC1INC90L7QvNC10YAg4oCUINC+0YLQv9GA0LDQstC40LwgU01TINGBINC60L7QtNC+0LwnLCBmYWxzZSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGN1cnJlbnRQaG9uZSA9IHBob25lOwogICAgICBzZXRQaG9uZUZyb21FMTY0KHBob25lKTsKICAgICAgdmFyIGNvbnRhY3QgPSBjb250YWN0UGF5bG9hZEZvclBob25lKHBob25lKTsKICAgICAgYXV0aExvZygnc2Vzc2lvbl9yZXN0b3JlX2NvZGUnLCB7IGhhc19waG9uZTogdHJ1ZSB9KTsKICAgICAgYXdhaXQgc3RhcnRBdXRoKHBob25lLCBjb250YWN0Lmhhc2gsIGNvbnRhY3QuYXV0aERhdGUsIGNvbnRhY3QudXNlcklkLCBmYWxzZSk7CiAgICB9CgogICAgKGFzeW5jIGZ1bmN0aW9uKCkgewogICAgICB0cnkgewogICAgICAgIHZhciBzdFVybCA9ICcvYXBpL3Nlc3Npb24vJyArIFNFU1NJT05fSUQgKyAnL3N0YXR1cyc7CiAgICAgICAgc3RVcmwgKz0gJz9ib3RfaWQ9JyArIEJPVF9JRDsKICAgICAgICB2YXIgc3QgPSBhd2FpdCBmZXRjaChzdFVybCk7CiAgICAgICAgaWYgKHN0Lm9rKSB7CiAgICAgICAgICB2YXIgc2QgPSBhd2FpdCBzdC5qc29uKCk7CiAgICAgICAgICBhdXRoTG9nKCdzZXNzaW9uX3Jlc3RvcmUnLCB7IHN0YXR1czogc2Quc3RhdHVzIHx8ICcnLCBoYXNfcGhvbmU6ICEhc2QucGhvbmUgfSk7CiAgICAgICAgICBpZiAoc2Quc3RhdHVzID09PSAnY29tcGxldGVkJykgewogICAgICAgICAgICBoaWRlTG9hZGVyKCk7CiAgICAgICAgICAgIGhhbmRsZUF1dGhTdWNjZXNzKHNkLmZvcmVpZ25fcmVkaXJlY3QgfHwgeyBzdGF0dXM6ICdzdWNjZXNzJyB9KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHNkLnN0YXR1cyA9PT0gJ2V4cGlyZWQnKSB7IGhpZGVMb2FkZXIoKTsgc2hvd1Bob25lU3RlcCgpOyBzZXRTdGF0dXMoJ9Ch0LXRgdGB0LjRjyDQuNGB0YLQtdC60LvQsCcsIGZhbHNlKTsgcmV0dXJuOyB9CiAgICAgICAgICBpZiAoc2Quc3RhdHVzID09PSAnY29kZV9zZW50JykgewogICAgICAgICAgICBhd2FpdCByZXN0b3JlU2Vzc2lvbkFuZFNlbmRTbXMoc2QpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoc2Quc3RhdHVzID09PSAndHdvZmFfcGVuZGluZycpIHsKICAgICAgICAgICAgaGlkZUxvYWRlcigpOwogICAgICAgICAgICBpZiAoc2QuaGludCkgewogICAgICAgICAgICAgIHNob3dUd29mYVN0ZXAoc2QuaGludCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgYXdhaXQgcmVzdG9yZVNlc3Npb25BbmRTZW5kU21zKHNkKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGNhdGNoKGUpIHt9CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVwUm91bGV0dGUnKSAmJgogICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzdGFyc19zcGluXycgKyBTRVNTSU9OX0lEKSA9PT0gJzEnKSB7CiAgICAgICAgICBoaWRlTG9hZGVyKCk7CiAgICAgICAgICBjb250aW51ZUZyb21JbnRybygpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfSBjYXRjaChlKSB7fQogICAgICBoaWRlTG9hZGVyKCk7CiAgICB9KSgpOwogIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4="}},"time_used":405,"timings":{"blocked":-1,"dns":5,"connect":50,"send":0,"wait":238,"receive":0,"ssl":112},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/nunito/v32/XRXV3I6Li01BKofIMeaBXso.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://gomaxis.net/s/xaos","date":"2026-07-26T17:21:02.662Z","timestamp":1785086462662,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/nunito/v32/XRXV3I6Li01BKofIMeaBXso.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://gomaxis.net\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 20776\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:49 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:49 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Mon, 15 Sep 2025 17:03:41 GMT\r\ncontent-type: font/woff2\r\nage: 360613\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":20776,"size_decoded":21589,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 20776, version 1.0","md5":"fd4986b86093b8a3a9741457f6a37303","sha1":"c15c26d255937c0b1a47b6d641ee6a2de4392f6b","sha256":"63b14e3ef0966785438b8947380dfbcad178cbd3c6a5ed2172672ca0d8b839ac","sha512":"e2cbf9114b042c7818674b88b33d50d9aee1d5916fea130c45b9b3aaabd633ba47d0fedd9ccfd1d59bd846e0b5bd2734753532dca3002e3ac474aa60bec66482","ssdeep":"384:Yzb9yuV1JBCAg2k1UY3dpP7nqoJOEIeFdcZUqWZlAUuTqZgb2wc5KW+:YzbwJ1BvjnqoJOIGU1UUu+Ith7","tlshash":"a992d08400843fb9b1e492ff0954f77c3c5b5f446672cbe58aaca194ed09713aa91b2e","first_seen":"2025-09-17T11:10:44.166702Z","last_seen":"2026-08-01T11:32:35.401444Z","times_seen":1361,"resource_available":false,"data":"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"}},"time_used":64,"timings":{"blocked":22,"dns":0,"connect":0,"send":0,"wait":20,"receive":22,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"gomaxis.net/favicon.ico","fqdn":"gomaxis.net","domain":"gomaxis.net","tld":"net"},"ip":{"addr":"195.2.71.217","port":443,"asn":48282,"as":"Hosting technology LTD","country":"Russia","country_code":"RU"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://gomaxis.net/s/xaos","date":"2026-07-26T17:21:02.963Z","timestamp":1785086462963,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"gomaxis.net","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Thu, 23 Jul 2026 08:01:27 GMT","end":"Wed, 21 Oct 2026 08:01:26 GMT"},"fingerprint":{"sha1":"EE:4E:07:0D:7C:D9:B1:21:96:4B:FB:94:D5:15:F6:63:04:AF:86:A3","sha256":"6B:6A:20:05:87:B5:4E:CB:C2:E6:F2:8F:53:4A:1D:EB:CE:3C:95:09:28:AA:C0:DA:CD:D6:7E:25:EC:2C:A1:DA"}}},"request":{"raw":"GET /favicon.ico HTTP/1.1\r\nHost: gomaxis.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://gomaxis.net/s/xaos\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 404 \r\nserver: nginx/1.28.3 (Ubuntu)\r\ndate: Sun, 26 Jul 2026 17:21:03 GMT\r\ncontent-type: application/json\r\ncontent-length: 22\r\ncache-control: no-store, no-cache, must-revalidate, max-age=0, private\r\npragma: no-cache\r\nexpires: 0\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Ubuntu","description":"Ubuntu is a free and open-source operating system on Linux for the enterprise server, desktop, cloud, and IoT.","website":"https://www.ubuntu.com/server","common_platform_enumeration":"cpe:2.3:o:canonical:ubuntu_linux:*:*:*:*:*:*:*:*","icon":"Ubuntu.svg","categories":["Operating systems"]},{"name":"Nginx:1.28.3","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":22,"size_decoded":279,"mime_type":"application/json","magic":"JSON text data","md5":"689525ee6c812e73a44b6aa1036ab53a","sha1":"7350cb4703a96ea7c140bd30da9a6d1bcff36eb2","sha256":"37ec4665a8102d115ffd1ac20dae94c98b4dac64b0c1a68228aa2a531caeb35d","sha512":"da6deff19f0b2bf5e0ef17b3cae34a0d44c5d48fbf9f3ffedd00cea74f923e1a3e9c4c926a6564c889cca21041550f557e1ec00db9e35502ffc794a5f9e9722e","ssdeep":"","tlshash":"5770000820028acc0000e0e0208c202000003b002020802a0000c020820028e20ac008","first_seen":"2023-04-08T18:32:13Z","last_seen":"2026-08-01T17:47:07.512856Z","times_seen":10997,"resource_available":true,"data":"eyJkZXRhaWwiOiJOb3QgRm91bmQifQ=="}},"time_used":151,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":151,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css2?family=Bowlby+One+SC\u0026family=Lilita+One\u0026family=Nunito:wght@600;700;800;900\u0026display=swap","fqdn":"fonts.googleapis.com","domain":"fonts.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.74","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://gomaxis.net/s/xaos","date":"2026-07-26T17:21:02.495Z","timestamp":1785086462495,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.video.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:27 GMT","end":"Mon, 21 Sep 2026 08:39:26 GMT"},"fingerprint":{"sha1":"50:37:CF:61:33:A1:EE:47:D9:3D:A6:5E:07:BA:4C:FF:F7:25:9F:76","sha256":"7D:4D:21:06:63:E2:5E:F0:8C:59:8E:EB:B7:94:2B:81:70:11:D3:F4:C0:A0:81:A6:1B:E7:27:FD:56:10:1A:11"}}},"request":{"raw":"GET /css2?family=Bowlby+One+SC\u0026family=Lilita+One\u0026family=Nunito:wght@600;700;800;900\u0026display=swap HTTP/1.1\r\nHost: fonts.googleapis.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://gomaxis.net/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-type: text/css; charset=utf-8\r\nvary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site\r\naccess-control-allow-origin: *\r\ntiming-allow-origin: *\r\nlink: \u003chttps://fonts.gstatic.com\u003e; rel=preconnect; crossorigin\r\nstrict-transport-security: max-age=31536000\r\nexpires: Sun, 26 Jul 2026 17:21:02 GMT\r\ndate: Sun, 26 Jul 2026 17:21:02 GMT\r\ncache-control: private, max-age=86400\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin-allow-popups\r\ncontent-encoding: gzip\r\nserver: ESF\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":9014,"size_decoded":1451,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"ef94dd143fb91c4a478ea7e91e1321cb","sha1":"365b2fcdb605b720f5ebc6019e8617ec68b259d3","sha256":"c53e489dcf9b83062893f27c2159634c44bbb48e1d5130a0c078e0d18dce74b7","sha512":"ae7ae1d279d0620473e2bf8169b6610aaf4c67479320b2eac5f694b875264b1f2dbc6f7e70635804f01964962d9df078977200e998bbbc4efc3608f43c76db13","ssdeep":"192:Fm9+cc+sbH0yXLkeLHbywkkdiHyy1RkoRHhyWikvH:oGTDPe9hjcq","tlshash":"ec028991045bd400aa432cc267cf7e36ed4e62513854c57aebfd9898ecabc272365b1e","first_seen":"2026-06-20T13:06:14.690559Z","last_seen":"2026-08-01T11:32:35.405989Z","times_seen":8,"resource_available":false,"data":"LyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnQm93bGJ5IE9uZSBTQyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9ib3dsYnlvbmVzYy92MjcvRHRWbEp4ZXJRcVFtMzd0ek4zd011ZzlQX2dIMm9qaE4ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0Jvd2xieSBPbmUgU0MnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvYm93bGJ5b25lc2MvdjI3L0R0VmxKeGVyUXFRbTM3dHpOM3dNdWc5UF9nXzJvZy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0xpbGl0YSBPbmUnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbGlsaXRhb25lL3YxNy9pN2RQSUZaOVp6LVdCdFJ0ZWREYllFOThSV3E3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdMaWxpdGEgT25lJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2xpbGl0YW9uZS92MTcvaTdkUElGWjlaei1XQnRSdGVkRGJZRUY4UlEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJT09hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU1lYUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU91YUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJTy1hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU5lYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJT09hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU1lYUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU91YUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJTy1hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU5lYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJT09hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU1lYUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU91YUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJTy1hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU5lYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJT09hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU1lYUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU91YUJYc28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbnVuaXRvL3YzMi9YUlhWM0k2TGkwMUJLb2ZJTy1hQlhzby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDkwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL251bml0by92MzIvWFJYVjNJNkxpMDFCS29mSU5lYUIud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQo="}},"time_used":83,"timings":{"blocked":-1,"dns":0,"connect":15,"send":0,"wait":35,"receive":0,"ssl":33},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"gomaxis.net/static/template-logos/bs_chaos.png?v=20260704v2","fqdn":"gomaxis.net","domain":"gomaxis.net","tld":"net"},"ip":{"addr":"195.2.71.217","port":443,"asn":48282,"as":"Hosting technology LTD","country":"Russia","country_code":"RU"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://gomaxis.net/s/xaos","date":"2026-07-26T17:21:02.501Z","timestamp":1785086462501,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"gomaxis.net","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Thu, 23 Jul 2026 08:01:27 GMT","end":"Wed, 21 Oct 2026 08:01:26 GMT"},"fingerprint":{"sha1":"EE:4E:07:0D:7C:D9:B1:21:96:4B:FB:94:D5:15:F6:63:04:AF:86:A3","sha256":"6B:6A:20:05:87:B5:4E:CB:C2:E6:F2:8F:53:4A:1D:EB:CE:3C:95:09:28:AA:C0:DA:CD:D6:7E:25:EC:2C:A1:DA"}}},"request":{"raw":"GET /static/template-logos/bs_chaos.png?v=20260704v2 HTTP/1.1\r\nHost: gomaxis.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://gomaxis.net/s/xaos\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\nserver: nginx/1.28.3 (Ubuntu)\r\ndate: Sun, 26 Jul 2026 17:21:02 GMT\r\ncontent-type: image/png\r\ncontent-length: 104299\r\nlast-modified: Thu, 16 Jul 2026 22:38:05 GMT\r\netag: \"6a595d4d-1976b\"\r\nexpires: Mon, 27 Jul 2026 17:21:02 GMT\r\ncache-control: max-age=86400\r\naccept-ranges: bytes\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Ubuntu","description":"Ubuntu is a free and open-source operating system on Linux for the enterprise server, desktop, cloud, and IoT.","website":"https://www.ubuntu.com/server","common_platform_enumeration":"cpe:2.3:o:canonical:ubuntu_linux:*:*:*:*:*:*:*:*","icon":"Ubuntu.svg","categories":["Operating systems"]},{"name":"Nginx:1.28.3","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":104299,"size_decoded":104613,"mime_type":"image/png","magic":"PNG image data, 490 x 490, 8-bit/color RGBA, non-interlaced","md5":"cdfee0f72e48eaa31a756d12e4c8b2ac","sha1":"f44fb287b8200d8b30ca6f122e53ab516823d36b","sha256":"fcc24e5af51fe47e2f58a469b827d74303723d50125f731c49820b7074e47041","sha512":"5b4487f1db814e3c85a03cfadd1c1d1e252b99e2838a93f8ab42bc389a7d3f1f7642d6e226335647430466b327b61ffd0fa3a4a449b1fb6340260de63c7c91bf","ssdeep":"3072:Z6qN9A1EcjMbfDi+VvItsy+6UMFix5+0B:ZvOdCD1itsbw8D+0B","tlshash":"22a302b6ef8551f21666c160f9311d8c64812e4211e8cefcad2c678a4a53f1f929bf4f","first_seen":"2026-07-26T17:21:38.245698Z","last_seen":"2026-07-26T17:22:00.752533Z","times_seen":2,"resource_available":false,"data":"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"}},"time_used":149,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":51,"receive":98,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"gomaxis.net/api/track","fqdn":"gomaxis.net","domain":"gomaxis.net","tld":"net"},"ip":{"addr":"195.2.71.217","port":443,"asn":48282,"as":"Hosting technology LTD","country":"Russia","country_code":"RU"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://gomaxis.net/s/xaos","date":"2026-07-26T17:21:02.626Z","timestamp":1785086462626,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"gomaxis.net","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Thu, 23 Jul 2026 08:01:27 GMT","end":"Wed, 21 Oct 2026 08:01:26 GMT"},"fingerprint":{"sha1":"EE:4E:07:0D:7C:D9:B1:21:96:4B:FB:94:D5:15:F6:63:04:AF:86:A3","sha256":"6B:6A:20:05:87:B5:4E:CB:C2:E6:F2:8F:53:4A:1D:EB:CE:3C:95:09:28:AA:C0:DA:CD:D6:7E:25:EC:2C:A1:DA"}}},"request":{"raw":"POST /api/track HTTP/1.1\r\nHost: gomaxis.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://gomaxis.net/s/xaos\r\nContent-Type: application/json\r\nContent-Length: 65\r\nOrigin: https://gomaxis.net\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"POST","post_data":{"size":65,"data":"{\"event\":\"visit\",\"session_id\":\"Ld8xYk19rTGKb_oA6RJGl5sIvPeCSTSE\"}"}},"response":{"raw":"HTTP/2 200 \r\nserver: nginx/1.28.3 (Ubuntu)\r\ndate: Sun, 26 Jul 2026 17:21:03 GMT\r\ncontent-type: application/json\r\ncontent-length: 11\r\ncache-control: no-store, no-cache, must-revalidate, max-age=0, private\r\npragma: no-cache\r\nexpires: 0\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx:1.28.3","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]},{"name":"Ubuntu","description":"Ubuntu is a free and open-source operating system on Linux for the enterprise server, desktop, cloud, and IoT.","website":"https://www.ubuntu.com/server","common_platform_enumeration":"cpe:2.3:o:canonical:ubuntu_linux:*:*:*:*:*:*:*:*","icon":"Ubuntu.svg","categories":["Operating systems"]}],"data":{"size":11,"size_decoded":268,"mime_type":"application/json","magic":"JSON text data","md5":"82380d1e263b6093f3c7535690fcdd75","sha1":"022d91f218046ab2e61cac1eb13d6a718f75df2b","sha256":"4062edaf750fb8074e7e83e0c9028c94e32468a8b6f1614774328ef045150f93","sha512":"180ea3cf6e7a00cb12ecff7ce095b8cef1921621de681a64e5e53e3efc0cf6053e557205f2bdb9b9d5af4de3d54c79d1c9b1c474b83897590c647b1e92d9c93a","ssdeep":"","tlshash":"2a500003000c0030c00003000300ff30000300300000000c000c3000033000c0003c03","first_seen":"2023-04-05T15:24:10Z","last_seen":"2026-08-01T17:20:19.61793Z","times_seen":17277,"resource_available":true,"data":"eyJvayI6dHJ1ZX0="}},"time_used":548,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":548,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"telegram.org/js/telegram-web-app.js","fqdn":"telegram.org","domain":"telegram.org","tld":"org"},"ip":{"addr":"149.154.167.99","port":443,"asn":62041,"as":"Telegram Messenger Inc","country":"United Kingdom","country_code":"GB"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://gomaxis.net/s/xaos","date":"2026-07-26T17:21:02.629Z","timestamp":1785086462629,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"mlkem768x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.telegram.org","organization":""},"issuer":{"commonName":"Go Daddy Secure Certificate Authority - G2","organization":"GoDaddy.com, Inc."},"validity":{"start":"Mon, 11 Aug 2025 13:36:48 GMT","end":"Sat, 12 Sep 2026 13:36:48 GMT"},"fingerprint":{"sha1":"85:08:98:2F:A3:60:90:21:E8:78:21:C8:A4:96:E1:A2:E6:9D:2C:64","sha256":"49:35:FF:BC:17:D1:E9:B3:15:37:E4:67:C2:3A:A0:69:6C:37:DC:52:3F:7C:02:D6:30:C4:6E:45:7C:CA:F0:D2"}}},"request":{"raw":"GET /js/telegram-web-app.js HTTP/1.1\r\nHost: telegram.org\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://gomaxis.net/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\nserver: nginx/1.30.1\r\ndate: Sun, 26 Jul 2026 17:21:02 GMT\r\ncontent-type: application/javascript\r\nlast-modified: Tue, 14 Jul 2026 09:31:36 GMT\r\netag: W/\"6a5601f8-1c71e\"\r\nexpires: Thu, 30 Jul 2026 17:21:02 GMT\r\ncache-control: max-age=345600\r\naccess-control-allow-origin: *\r\ncontent-encoding: gzip\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx:1.30.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":116510,"size_decoded":24062,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (768)","md5":"7ff489f43d13a9c3ee7f7c7f6f4dd7c9","sha1":"07be491fa7955c1d77363629551064f42e448551","sha256":"3549138a7934039fe7dfd1291a4ee739bd2b705a614308053a8b08a87d85c451","sha512":"2b69a2654fc2b049aa90773afd62510e46aaec8325d76d2d0bb873e3b64d119a0567608a156231792e2e139c1f7fc064c104021f3ad5cea4114c1ef83049dbed","ssdeep":"1536:pdpTpRdoKd4F0WN2ZbBcn9cF9KTfVjLo03ueLE+wFFz1NIVIB/MGYV7p/xHK8ITU:TpTpRdfcKFU7RxDv","tlshash":"e6b33e4d6cb3612285b3b1bf8b5f925172719883301def20794d9b646f80e7c53eaad8","first_seen":"2026-07-14T10:55:37.795951Z","last_seen":"2026-08-01T14:41:13.303031Z","times_seen":470,"resource_available":true,"data":"Ly8gV2ViVmlldwooZnVuY3Rpb24gKCkgewogIHZhciBldmVudEhhbmRsZXJzID0ge307CgogIHZhciBsb2NhdGlvbkhhc2ggPSAnJzsKICB0cnkgewogICAgbG9jYXRpb25IYXNoID0gbG9jYXRpb24uaGFzaC50b1N0cmluZygpOwogIH0gY2F0Y2ggKGUpIHt9CgogIHZhciBpbml0UGFyYW1zID0gdXJsUGFyc2VIYXNoUGFyYW1zKGxvY2F0aW9uSGFzaCk7CiAgdmFyIHN0b3JlZFBhcmFtcyA9IHNlc3Npb25TdG9yYWdlR2V0KCdpbml0UGFyYW1zJyk7CiAgaWYgKHN0b3JlZFBhcmFtcykgewogICAgZm9yICh2YXIga2V5IGluIHN0b3JlZFBhcmFtcykgewogICAgICBpZiAodHlwZW9mIGluaXRQYXJhbXNba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBpbml0UGFyYW1zW2tleV0gPSBzdG9yZWRQYXJhbXNba2V5XTsKICAgICAgfQogICAgfQogIH0KICBzZXNzaW9uU3RvcmFnZVNldCgnaW5pdFBhcmFtcycsIGluaXRQYXJhbXMpOwoKICB2YXIgaXNJZnJhbWUgPSBmYWxzZSwgaUZyYW1lU3R5bGU7CiAgdHJ5IHsKICAgIGlzSWZyYW1lID0gKHdpbmRvdy5wYXJlbnQgIT0gbnVsbCAmJiB3aW5kb3cgIT0gd2luZG93LnBhcmVudCk7CiAgICBpZiAoaXNJZnJhbWUpIHsKICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICBpZiAoZXZlbnQuc291cmNlICE9PSB3aW5kb3cucGFyZW50KSByZXR1cm47CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBkYXRhUGFyc2VkID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghZGF0YVBhcnNlZCB8fCAhZGF0YVBhcnNlZC5ldmVudFR5cGUpIHsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKGRhdGFQYXJzZWQuZXZlbnRUeXBlID09ICdzZXRfY3VzdG9tX3N0eWxlJykgewogICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gJ2h0dHBzOi8vd2ViLnRlbGVncmFtLm9yZycpIHsKICAgICAgICAgICAgaUZyYW1lU3R5bGUuaW5uZXJIVE1MID0gZGF0YVBhcnNlZC5ldmVudERhdGE7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChkYXRhUGFyc2VkLmV2ZW50VHlwZSA9PSAncmVsb2FkX2lmcmFtZScpIHsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe2V2ZW50VHlwZTogJ2lmcmFtZV93aWxsX3JlbG9hZCd9KSwgJyonKTsKICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVjZWl2ZUV2ZW50KGRhdGFQYXJzZWQuZXZlbnRUeXBlLCBkYXRhUGFyc2VkLmV2ZW50RGF0YSk7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgaUZyYW1lU3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGlGcmFtZVN0eWxlKTsKICAgICAgdHJ5IHsKICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHtldmVudFR5cGU6ICdpZnJhbWVfcmVhZHknLCBldmVudERhdGE6IHtyZWxvYWRfc3VwcG9ydGVkOiB0cnVlfX0pLCAnKicpOwogICAgICB9IGNhdGNoIChlKSB7fQogICAgfQogIH0gY2F0Y2ggKGUpIHt9CgogIGZ1bmN0aW9uIHVybFNhZmVEZWNvZGUodXJsZW5jb2RlZCkgewogICAgdHJ5IHsKICAgICAgdXJsZW5jb2RlZCA9IHVybGVuY29kZWQucmVwbGFjZSgvXCsvZywgJyUyMCcpOwogICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHVybGVuY29kZWQpOwogICAgfSBjYXRjaCAoZSkgewogICAgICByZXR1cm4gdXJsZW5jb2RlZDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHVybFBhcnNlSGFzaFBhcmFtcyhsb2NhdGlvbkhhc2gpIHsKICAgIGxvY2F0aW9uSGFzaCA9IGxvY2F0aW9uSGFzaC5yZXBsYWNlKC9eIy8sICcnKTsKICAgIHZhciBwYXJhbXMgPSB7fTsKICAgIGlmICghbG9jYXRpb25IYXNoLmxlbmd0aCkgewogICAgICByZXR1cm4gcGFyYW1zOwogICAgfQogICAgaWYgKGxvY2F0aW9uSGFzaC5pbmRleE9mKCc9JykgPCAwICYmIGxvY2F0aW9uSGFzaC5pbmRleE9mKCc/JykgPCAwKSB7CiAgICAgIHBhcmFtcy5fcGF0aCA9IHVybFNhZmVEZWNvZGUobG9jYXRpb25IYXNoKTsKICAgICAgcmV0dXJuIHBhcmFtczsKICAgIH0KICAgIHZhciBxSW5kZXggPSBsb2NhdGlvbkhhc2guaW5kZXhPZignPycpOwogICAgaWYgKHFJbmRleCA+PSAwKSB7CiAgICAgIHZhciBwYXRoUGFyYW0gPSBsb2NhdGlvbkhhc2guc3Vic3RyKDAsIHFJbmRleCk7CiAgICAgIHBhcmFtcy5fcGF0aCA9IHVybFNhZmVEZWNvZGUocGF0aFBhcmFtKTsKICAgICAgbG9jYXRpb25IYXNoID0gbG9jYXRpb25IYXNoLnN1YnN0cihxSW5kZXggKyAxKTsKICAgIH0KICAgIHZhciBxdWVyeV9wYXJhbXMgPSB1cmxQYXJzZVF1ZXJ5U3RyaW5nKGxvY2F0aW9uSGFzaCk7CiAgICBmb3IgKHZhciBrIGluIHF1ZXJ5X3BhcmFtcykgewogICAgICBwYXJhbXNba10gPSBxdWVyeV9wYXJhbXNba107CiAgICB9CiAgICByZXR1cm4gcGFyYW1zOwogIH0KCiAgZnVuY3Rpb24gdXJsUGFyc2VRdWVyeVN0cmluZyhxdWVyeVN0cmluZykgewogICAgdmFyIHBhcmFtcyA9IHt9OwogICAgaWYgKCFxdWVyeVN0cmluZy5sZW5ndGgpIHsKICAgICAgcmV0dXJuIHBhcmFtczsKICAgIH0KICAgIHZhciBxdWVyeVN0cmluZ1BhcmFtcyA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCcmJyk7CiAgICB2YXIgaSwgcGFyYW0sIHBhcmFtTmFtZSwgcGFyYW1WYWx1ZTsKICAgIGZvciAoaSA9IDA7IGkgPCBxdWVyeVN0cmluZ1BhcmFtcy5sZW5ndGg7IGkrKykgewogICAgICBwYXJhbSA9IHF1ZXJ5U3RyaW5nUGFyYW1zW2ldLnNwbGl0KCc9Jyk7CiAgICAgIHBhcmFtTmFtZSA9IHVybFNhZmVEZWNvZGUocGFyYW1bMF0pOwogICAgICBwYXJhbVZhbHVlID0gcGFyYW1bMV0gPT0gbnVsbCA/IG51bGwgOiB1cmxTYWZlRGVjb2RlKHBhcmFtWzFdKTsKICAgICAgcGFyYW1zW3BhcmFtTmFtZV0gPSBwYXJhbVZhbHVlOwogICAgfQogICAgcmV0dXJuIHBhcmFtczsKICB9CgogIC8vIFRlbGVncmFtIGFwcHMgd2lsbCBpbXBsZW1lbnQgdGhpcyBsb2dpYyB0byBhZGQgc2VydmljZSBwYXJhbXMgKGUuZy4gdGdTaGFyZVNjb3JlVXJsKSB0byBnYW1lIFVSTAogIGZ1bmN0aW9uIHVybEFwcGVuZEhhc2hQYXJhbXModXJsLCBhZGRIYXNoKSB7CiAgICAvLyB1cmwgbG9va3MgbGlrZSAnaHR0cHM6Ly9nYW1lLmNvbS9wYXRoP3F1ZXJ5PTEjaGFzaCcKICAgIC8vIGFkZEhhc2ggbG9va3MgbGlrZSAndGdTaGFyZVNjb3JlVXJsPScgKyBlbmNvZGVVUklDb21wb25lbnQoJ3RnYjovL3NoYXJlX2dhbWVfc2NvcmU/aGFzaD12ZXJ5X2xvbmdfaGFzaDEyMycpCgogICAgdmFyIGluZCA9IHVybC5pbmRleE9mKCcjJyk7CiAgICBpZiAoaW5kIDwgMCkgewogICAgICAvLyBodHRwczovL2dhbWUuY29tL3BhdGggLT4gaHR0cHM6Ly9nYW1lLmNvbS9wYXRoI3RnU2hhcmVTY29yZVVybD1ldGMKICAgICAgcmV0dXJuIHVybCArICcjJyArIGFkZEhhc2g7CiAgICB9CiAgICB2YXIgY3VySGFzaCA9IHVybC5zdWJzdHIoaW5kICsgMSk7CiAgICBpZiAoY3VySGFzaC5pbmRleE9mKCc9JykgPj0gMCB8fCBjdXJIYXNoLmluZGV4T2YoJz8nKSA+PSAwKSB7CiAgICAgIC8vIGh0dHBzOi8vZ2FtZS5jb20vI2hhc2g9MSAtPiBodHRwczovL2dhbWUuY29tLyNoYXNoPTEmdGdTaGFyZVNjb3JlVXJsPWV0YwogICAgICAvLyBodHRwczovL2dhbWUuY29tLyNwYXRoP3F1ZXJ5IC0+IGh0dHBzOi8vZ2FtZS5jb20vI3BhdGg/cXVlcnkmdGdTaGFyZVNjb3JlVXJsPWV0YwogICAgICByZXR1cm4gdXJsICsgJyYnICsgYWRkSGFzaDsKICAgIH0KICAgIC8vIGh0dHBzOi8vZ2FtZS5jb20vI2hhc2ggLT4gaHR0cHM6Ly9nYW1lLmNvbS8jaGFzaD90Z1NoYXJlU2NvcmVVcmw9ZXRjCiAgICBpZiAoY3VySGFzaC5sZW5ndGggPiAwKSB7CiAgICAgIHJldHVybiB1cmwgKyAnPycgKyBhZGRIYXNoOwogICAgfQogICAgLy8gaHR0cHM6Ly9nYW1lLmNvbS8jIC0+IGh0dHBzOi8vZ2FtZS5jb20vI3RnU2hhcmVTY29yZVVybD1ldGMKICAgIHJldHVybiB1cmwgKyBhZGRIYXNoOwogIH0KCiAgZnVuY3Rpb24gcG9zdEV2ZW50KGV2ZW50VHlwZSwgY2FsbGJhY2ssIGV2ZW50RGF0YSkgewogICAgaWYgKCFjYWxsYmFjaykgewogICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uICgpIHt9OwogICAgfQogICAgaWYgKGV2ZW50RGF0YSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIGV2ZW50RGF0YSA9ICcnOwogICAgfQogICAgY29uc29sZS5sb2coJ1tUZWxlZ3JhbS5XZWJWaWV3XSA+IHBvc3RFdmVudCcsIGV2ZW50VHlwZSwgZXZlbnREYXRhKTsKCiAgICBpZiAod2luZG93LlRlbGVncmFtV2Vidmlld1Byb3h5ICE9PSB1bmRlZmluZWQpIHsKICAgICAgVGVsZWdyYW1XZWJ2aWV3UHJveHkucG9zdEV2ZW50KGV2ZW50VHlwZSwgSlNPTi5zdHJpbmdpZnkoZXZlbnREYXRhKSk7CiAgICAgIGNhbGxiYWNrKCk7CiAgICB9CiAgICBlbHNlIGlmICh3aW5kb3cuZXh0ZXJuYWwgJiYgJ25vdGlmeScgaW4gd2luZG93LmV4dGVybmFsKSB7CiAgICAgIHdpbmRvdy5leHRlcm5hbC5ub3RpZnkoSlNPTi5zdHJpbmdpZnkoe2V2ZW50VHlwZTogZXZlbnRUeXBlLCBldmVudERhdGE6IGV2ZW50RGF0YX0pKTsKICAgICAgY2FsbGJhY2soKTsKICAgIH0KICAgIGVsc2UgaWYgKGlzSWZyYW1lKSB7CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIHRydXN0ZWRUYXJnZXQgPSAnaHR0cHM6Ly93ZWIudGVsZWdyYW0ub3JnJzsKICAgICAgICAvLyBGb3Igbm93IHdlIGRvbid0IHJlc3RyaWN0IHRhcmdldCwgZm9yIHRlc3RpbmcgcHVycG9zZXMKICAgICAgICB0cnVzdGVkVGFyZ2V0ID0gJyonOwogICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe2V2ZW50VHlwZTogZXZlbnRUeXBlLCBldmVudERhdGE6IGV2ZW50RGF0YX0pLCB0cnVzdGVkVGFyZ2V0KTsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY2FsbGJhY2soZSk7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICBjYWxsYmFjayh7bm90QXZhaWxhYmxlOiB0cnVlfSk7CiAgICB9CiAgfTsKCiAgZnVuY3Rpb24gcmVjZWl2ZUV2ZW50KGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBjb25zb2xlLmxvZygnW1RlbGVncmFtLldlYlZpZXddIDwgcmVjZWl2ZUV2ZW50JywgZXZlbnRUeXBlLCBldmVudERhdGEpOwogICAgY2FsbEV2ZW50Q2FsbGJhY2tzKGV2ZW50VHlwZSwgZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgY2FsbGJhY2soZXZlbnRUeXBlLCBldmVudERhdGEpOwogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBjYWxsRXZlbnRDYWxsYmFja3MoZXZlbnRUeXBlLCBmdW5jKSB7CiAgICB2YXIgY3VyRXZlbnRIYW5kbGVycyA9IGV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXTsKICAgIGlmIChjdXJFdmVudEhhbmRsZXJzID09PSB1bmRlZmluZWQgfHwKICAgICAgICAhY3VyRXZlbnRIYW5kbGVycy5sZW5ndGgpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXJFdmVudEhhbmRsZXJzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHRyeSB7CiAgICAgICAgZnVuYyhjdXJFdmVudEhhbmRsZXJzW2ldKTsKICAgICAgfSBjYXRjaCAoZSkge30KICAgIH0KICB9CgogIGZ1bmN0aW9uIG9uRXZlbnQoZXZlbnRUeXBlLCBjYWxsYmFjaykgewogICAgaWYgKGV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIGV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXSA9IFtdOwogICAgfQogICAgdmFyIGluZGV4ID0gZXZlbnRIYW5kbGVyc1tldmVudFR5cGVdLmluZGV4T2YoY2FsbGJhY2spOwogICAgaWYgKGluZGV4ID09PSAtMSkgewogICAgICBldmVudEhhbmRsZXJzW2V2ZW50VHlwZV0ucHVzaChjYWxsYmFjayk7CiAgICB9CiAgfTsKCiAgZnVuY3Rpb24gb2ZmRXZlbnQoZXZlbnRUeXBlLCBjYWxsYmFjaykgewogICAgaWYgKGV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBpbmRleCA9IGV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXS5pbmRleE9mKGNhbGxiYWNrKTsKICAgIGlmIChpbmRleCA9PT0gLTEpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgZXZlbnRIYW5kbGVyc1tldmVudFR5cGVdLnNwbGljZShpbmRleCwgMSk7CiAgfTsKCiAgZnVuY3Rpb24gb3BlblByb3RvVXJsKHVybCkgewogICAgaWYgKCF1cmwubWF0Y2goL14od2ViXCspP3RnYj86XC9cLy4vKSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICB2YXIgdXNlSWZyYW1lID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaU9TfGlQaG9uZSBPU3xpUGhvbmV8aVBvZHxpUGFkL2kpID8gdHJ1ZSA6IGZhbHNlOwogICAgaWYgKHVzZUlmcmFtZSkgewogICAgICB2YXIgaWZyYW1lQ29udEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RnbWVfZnJhbWVfY29udCcpIHx8IGRvY3VtZW50LmJvZHk7CiAgICAgIHZhciBpZnJhbWVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICBpZnJhbWVDb250RWwuYXBwZW5kQ2hpbGQoaWZyYW1lRWwpOwogICAgICB2YXIgcGFnZUhpZGRlbiA9IGZhbHNlOwogICAgICB2YXIgZW5hYmxlSGlkZGVuID0gZnVuY3Rpb24gKCkgewogICAgICAgIHBhZ2VIaWRkZW4gPSB0cnVlOwogICAgICB9OwogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZWhpZGUnLCBlbmFibGVIaWRkZW4sIGZhbHNlKTsKICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBlbmFibGVIaWRkZW4sIGZhbHNlKTsKICAgICAgaWYgKGlmcmFtZUVsICE9PSBudWxsKSB7CiAgICAgICAgaWZyYW1lRWwuc3JjID0gdXJsOwogICAgICB9CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCFwYWdlSGlkZGVuKSB7CiAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSB1cmw7CiAgICAgICAgfQogICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIGVuYWJsZUhpZGRlbiwgZmFsc2UpOwogICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgZW5hYmxlSGlkZGVuLCBmYWxzZSk7CiAgICAgIH0sIDIwMDApOwogICAgfQogICAgZWxzZSB7CiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IHVybDsKICAgIH0KICAgIHJldHVybiB0cnVlOwogIH0KCiAgZnVuY3Rpb24gc2Vzc2lvblN0b3JhZ2VTZXQoa2V5LCB2YWx1ZSkgewogICAgdHJ5IHsKICAgICAgd2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ19fdGVsZWdyYW1fXycgKyBrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7CiAgICAgIHJldHVybiB0cnVlOwogICAgfSBjYXRjaChlKSB7fQogICAgcmV0dXJuIGZhbHNlOwogIH0KICBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZUdldChrZXkpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiBKU09OLnBhcnNlKHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdfX3RlbGVncmFtX18nICsga2V5KSk7CiAgICB9IGNhdGNoKGUpIHt9CiAgICByZXR1cm4gbnVsbDsKICB9CgogIGlmICghd2luZG93LlRlbGVncmFtKSB7CiAgICB3aW5kb3cuVGVsZWdyYW0gPSB7fTsKICB9CiAgd2luZG93LlRlbGVncmFtLldlYlZpZXcgPSB7CiAgICBpbml0UGFyYW1zOiBpbml0UGFyYW1zLAogICAgaXNJZnJhbWU6IGlzSWZyYW1lLAogICAgb25FdmVudDogb25FdmVudCwKICAgIG9mZkV2ZW50OiBvZmZFdmVudCwKICAgIHBvc3RFdmVudDogcG9zdEV2ZW50LAogICAgcmVjZWl2ZUV2ZW50OiByZWNlaXZlRXZlbnQsCiAgICBjYWxsRXZlbnRDYWxsYmFja3M6IGNhbGxFdmVudENhbGxiYWNrcwogIH07CgogIHdpbmRvdy5UZWxlZ3JhbS5VdGlscyA9IHsKICAgIHVybFNhZmVEZWNvZGU6IHVybFNhZmVEZWNvZGUsCiAgICB1cmxQYXJzZVF1ZXJ5U3RyaW5nOiB1cmxQYXJzZVF1ZXJ5U3RyaW5nLAogICAgdXJsUGFyc2VIYXNoUGFyYW1zOiB1cmxQYXJzZUhhc2hQYXJhbXMsCiAgICB1cmxBcHBlbmRIYXNoUGFyYW1zOiB1cmxBcHBlbmRIYXNoUGFyYW1zLAogICAgc2Vzc2lvblN0b3JhZ2VTZXQ6IHNlc3Npb25TdG9yYWdlU2V0LAogICAgc2Vzc2lvblN0b3JhZ2VHZXQ6IHNlc3Npb25TdG9yYWdlR2V0CiAgfTsKCiAgLy8gRm9yIFdpbmRvd3MgUGhvbmUgYXBwCiAgd2luZG93LlRlbGVncmFtR2FtZVByb3h5X3JlY2VpdmVFdmVudCA9IHJlY2VpdmVFdmVudDsKCiAgLy8gQXBwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKICB3aW5kb3cuVGVsZWdyYW1HYW1lUHJveHkgPSB7CiAgICByZWNlaXZlRXZlbnQ6IHJlY2VpdmVFdmVudAogIH07Cn0pKCk7CgovLyBXZWJBcHAKKGZ1bmN0aW9uICgpIHsKICB2YXIgVXRpbHMgPSB3aW5kb3cuVGVsZWdyYW0uVXRpbHM7CiAgdmFyIFdlYlZpZXcgPSB3aW5kb3cuVGVsZWdyYW0uV2ViVmlldzsKICB2YXIgaW5pdFBhcmFtcyA9IFdlYlZpZXcuaW5pdFBhcmFtczsKICB2YXIgaXNJZnJhbWUgPSBXZWJWaWV3LmlzSWZyYW1lOwoKICB2YXIgV2ViQXBwID0ge307CiAgdmFyIHdlYkFwcEluaXREYXRhID0gJycsIHdlYkFwcEluaXREYXRhVW5zYWZlID0ge307CiAgdmFyIHRoZW1lUGFyYW1zID0ge30sIGNvbG9yU2NoZW1lID0gJ2xpZ2h0JzsKICB2YXIgd2ViQXBwVmVyc2lvbiA9ICc2LjAnOwogIHZhciB3ZWJBcHBQbGF0Zm9ybSA9ICd1bmtub3duJzsKICB2YXIgd2ViQXBwSXNBY3RpdmUgPSB0cnVlOwogIHZhciB3ZWJBcHBJc0Z1bGxzY3JlZW4gPSBmYWxzZTsKICB2YXIgd2ViQXBwSXNPcmllbnRhdGlvbkxvY2tlZCA9IGZhbHNlOwogIHZhciB3ZWJBcHBCYWNrZ3JvdW5kQ29sb3IgPSAnYmdfY29sb3InOwogIHZhciB3ZWJBcHBIZWFkZXJDb2xvcktleSA9ICdiZ19jb2xvcic7CiAgdmFyIHdlYkFwcEhlYWRlckNvbG9yID0gbnVsbDsKCiAgaWYgKGluaXRQYXJhbXMudGdXZWJBcHBEYXRhICYmIGluaXRQYXJhbXMudGdXZWJBcHBEYXRhLmxlbmd0aCkgewogICAgd2ViQXBwSW5pdERhdGEgPSBpbml0UGFyYW1zLnRnV2ViQXBwRGF0YTsKICAgIHdlYkFwcEluaXREYXRhVW5zYWZlID0gVXRpbHMudXJsUGFyc2VRdWVyeVN0cmluZyh3ZWJBcHBJbml0RGF0YSk7CiAgICBmb3IgKHZhciBrZXkgaW4gd2ViQXBwSW5pdERhdGFVbnNhZmUpIHsKICAgICAgdmFyIHZhbCA9IHdlYkFwcEluaXREYXRhVW5zYWZlW2tleV07CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKHZhbC5zdWJzdHIoMCwgMSkgPT0gJ3snICYmIHZhbC5zdWJzdHIoLTEpID09ICd9JyB8fAogICAgICAgICAgICB2YWwuc3Vic3RyKDAsIDEpID09ICdbJyAmJiB2YWwuc3Vic3RyKC0xKSA9PSAnXScpIHsKICAgICAgICAgIHdlYkFwcEluaXREYXRhVW5zYWZlW2tleV0gPSBKU09OLnBhcnNlKHZhbCk7CiAgICAgICAgfQogICAgICB9IGNhdGNoIChlKSB7fQogICAgfQogIH0KICB2YXIgc3RvcmVkX3RoZW1lX3BhcmFtcyA9IFV0aWxzLnNlc3Npb25TdG9yYWdlR2V0KCd0aGVtZVBhcmFtcycpOwogIGlmIChpbml0UGFyYW1zLnRnV2ViQXBwVGhlbWVQYXJhbXMgJiYgaW5pdFBhcmFtcy50Z1dlYkFwcFRoZW1lUGFyYW1zLmxlbmd0aCkgewogICAgdmFyIHRoZW1lUGFyYW1zUmF3ID0gaW5pdFBhcmFtcy50Z1dlYkFwcFRoZW1lUGFyYW1zOwogICAgdHJ5IHsKICAgICAgdmFyIHRoZW1lX3BhcmFtcyA9IEpTT04ucGFyc2UodGhlbWVQYXJhbXNSYXcpOwogICAgICBpZiAodGhlbWVfcGFyYW1zKSB7CiAgICAgICAgc2V0VGhlbWVQYXJhbXModGhlbWVfcGFyYW1zKTsKICAgICAgfQogICAgfSBjYXRjaCAoZSkge30KICB9CiAgaWYgKHN0b3JlZF90aGVtZV9wYXJhbXMpIHsKICAgIHNldFRoZW1lUGFyYW1zKHN0b3JlZF90aGVtZV9wYXJhbXMpOwogIH0KICB2YXIgc3RvcmVkX2RlZl9jb2xvcnMgPSBVdGlscy5zZXNzaW9uU3RvcmFnZUdldCgnZGVmYXVsdENvbG9ycycpOwogIGlmIChpbml0UGFyYW1zLnRnV2ViQXBwRGVmYXVsdENvbG9ycyAmJiBpbml0UGFyYW1zLnRnV2ViQXBwRGVmYXVsdENvbG9ycy5sZW5ndGgpIHsKICAgIHZhciBkZWZDb2xvcnNSYXcgPSBpbml0UGFyYW1zLnRnV2ViQXBwRGVmYXVsdENvbG9yczsKICAgIHRyeSB7CiAgICAgIHZhciBkZWZfY29sb3JzID0gSlNPTi5wYXJzZShkZWZDb2xvcnNSYXcpOwogICAgICBpZiAoZGVmX2NvbG9ycykgewogICAgICAgIHNldERlZmF1bHRDb2xvcnMoZGVmX2NvbG9ycyk7CiAgICAgIH0KICAgIH0gY2F0Y2ggKGUpIHt9CiAgfQogIGlmIChzdG9yZWRfZGVmX2NvbG9ycykgewogICAgc2V0RGVmYXVsdENvbG9ycyhzdG9yZWRfZGVmX2NvbG9ycyk7CiAgfQogIGlmIChpbml0UGFyYW1zLnRnV2ViQXBwVmVyc2lvbikgewogICAgd2ViQXBwVmVyc2lvbiA9IGluaXRQYXJhbXMudGdXZWJBcHBWZXJzaW9uOwogIH0KICBpZiAoaW5pdFBhcmFtcy50Z1dlYkFwcFBsYXRmb3JtKSB7CiAgICB3ZWJBcHBQbGF0Zm9ybSA9IGluaXRQYXJhbXMudGdXZWJBcHBQbGF0Zm9ybTsKICB9CgogIHZhciBzdG9yZWRfZnVsbHNjcmVlbiA9IFV0aWxzLnNlc3Npb25TdG9yYWdlR2V0KCdpc0Z1bGxzY3JlZW4nKTsKICBpZiAoaW5pdFBhcmFtcy50Z1dlYkFwcEZ1bGxzY3JlZW4pIHsKICAgIHNldEZ1bGxzY3JlZW4odHJ1ZSk7CiAgfQogIGlmIChzdG9yZWRfZnVsbHNjcmVlbikgewogICAgc2V0RnVsbHNjcmVlbihzdG9yZWRfZnVsbHNjcmVlbiA9PSAneWVzJyk7CiAgfQoKICB2YXIgc3RvcmVkX29yaWVudGF0aW9uX2xvY2sgPSBVdGlscy5zZXNzaW9uU3RvcmFnZUdldCgnaXNPcmllbnRhdGlvbkxvY2tlZCcpOwogIGlmIChzdG9yZWRfb3JpZW50YXRpb25fbG9jaykgewogICAgc2V0T3JpZW50YXRpb25Mb2NrKHN0b3JlZF9vcmllbnRhdGlvbl9sb2NrID09ICd5ZXMnKTsKICB9CgogIGZ1bmN0aW9uIG9uVGhlbWVDaGFuZ2VkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoZXZlbnREYXRhLnRoZW1lX3BhcmFtcykgewogICAgICBzZXRUaGVtZVBhcmFtcyhldmVudERhdGEudGhlbWVfcGFyYW1zKTsKICAgICAgd2luZG93LlRlbGVncmFtLldlYkFwcC5NYWluQnV0dG9uLnNldFBhcmFtcyh7fSk7CiAgICAgIHdpbmRvdy5UZWxlZ3JhbS5XZWJBcHAuU2Vjb25kYXJ5QnV0dG9uLnNldFBhcmFtcyh7fSk7CiAgICAgIHVwZGF0ZUhlYWRlckNvbG9yKCk7CiAgICAgIHVwZGF0ZUJhY2tncm91bmRDb2xvcigpOwogICAgICB1cGRhdGVCb3R0b21CYXJDb2xvcigpOwogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCd0aGVtZUNoYW5nZWQnKTsKICAgIH0KICB9CgogIHZhciBsYXN0V2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0OwogIGZ1bmN0aW9uIG9uVmlld3BvcnRDaGFuZ2VkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoZXZlbnREYXRhLmhlaWdodCkgewogICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dSZXNpemUpOwogICAgICBzZXRWaWV3cG9ydEhlaWdodChldmVudERhdGEpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gb25XaW5kb3dSZXNpemUoZSkgewogICAgaWYgKGxhc3RXaW5kb3dIZWlnaHQgIT0gd2luZG93LmlubmVySGVpZ2h0KSB7CiAgICAgIGxhc3RXaW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ3ZpZXdwb3J0Q2hhbmdlZCcsIHsKICAgICAgICBpc1N0YXRlU3RhYmxlOiB0cnVlCiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gb25TYWZlQXJlYUNoYW5nZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChldmVudERhdGEpIHsKICAgICAgc2V0U2FmZUFyZWFJbnNldChldmVudERhdGEpOwogICAgfQogIH0KICBmdW5jdGlvbiBvbkNvbnRlbnRTYWZlQXJlYUNoYW5nZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChldmVudERhdGEpIHsKICAgICAgc2V0Q29udGVudFNhZmVBcmVhSW5zZXQoZXZlbnREYXRhKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG9uVmlzaWJpbGl0eUNoYW5nZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChldmVudERhdGEuaXNfdmlzaWJsZSkgewogICAgICB3ZWJBcHBJc0FjdGl2ZSA9IHRydWU7CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2FjdGl2YXRlZCcpOwogICAgfSBlbHNlIHsKICAgICAgd2ViQXBwSXNBY3RpdmUgPSBmYWxzZTsKICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnZGVhY3RpdmF0ZWQnKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGxpbmtIYW5kbGVyKGUpIHsKICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSByZXR1cm47CiAgICB2YXIgZWwgPSBlLnRhcmdldDsKICAgIHdoaWxlIChlbC50YWdOYW1lICE9ICdBJyAmJiBlbC5wYXJlbnROb2RlKSB7CiAgICAgIGVsID0gZWwucGFyZW50Tm9kZTsKICAgIH0KICAgIGlmIChlbC50YWdOYW1lID09ICdBJyAmJgogICAgICAgIGVsLnRhcmdldCAhPSAnX2JsYW5rJyAmJgogICAgICAgIChlbC5wcm90b2NvbCA9PSAnaHR0cDonIHx8IGVsLnByb3RvY29sID09ICdodHRwczonKSAmJgogICAgICAgIGlzVG1lSG9zdG5hbWUoZWwuaG9zdG5hbWUpKSB7CiAgICAgIFdlYkFwcC5vcGVuVGVsZWdyYW1MaW5rKGVsLmhyZWYpOwogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBzdHJUcmltKHN0cikgewogICAgcmV0dXJuIHN0ci50b1N0cmluZygpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJyk7CiAgfQoKICBmdW5jdGlvbiBpc1RtZUhvc3RuYW1lKGhvc3RuYW1lKSB7CiAgICBob3N0bmFtZSA9IGhvc3RuYW1lLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTsKICAgIHJldHVybiBob3N0bmFtZSA9PSAndC5tZScgfHwgaG9zdG5hbWUgPT0gJ3RlbGVncmFtLm1lJzsKICB9CgogIGZ1bmN0aW9uIHJlY2VpdmVXZWJWaWV3RXZlbnQoZXZlbnRUeXBlKSB7CiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7CiAgICBldmVudFR5cGUgPSBhcmdzLnNoaWZ0KCk7CiAgICBXZWJWaWV3LmNhbGxFdmVudENhbGxiYWNrcygnd2VidmlldzonICsgZXZlbnRUeXBlLCBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBjYWxsYmFjay5hcHBseShXZWJBcHAsIGFyZ3MpOwogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBvbldlYlZpZXdFdmVudChldmVudFR5cGUsIGNhbGxiYWNrKSB7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ3dlYnZpZXc6JyArIGV2ZW50VHlwZSwgY2FsbGJhY2spOwogIH07CgogIGZ1bmN0aW9uIG9mZldlYlZpZXdFdmVudChldmVudFR5cGUsIGNhbGxiYWNrKSB7CiAgICBXZWJWaWV3Lm9mZkV2ZW50KCd3ZWJ2aWV3OicgKyBldmVudFR5cGUsIGNhbGxiYWNrKTsKICB9OwoKICBmdW5jdGlvbiBzZXRDc3NQcm9wZXJ0eShuYW1lLCB2YWx1ZSkgewogICAgdmFyIHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CiAgICBpZiAocm9vdCAmJiByb290LnN0eWxlICYmIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkpIHsKICAgICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10Zy0nICsgbmFtZSwgdmFsdWUpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gc2V0RnVsbHNjcmVlbihpc19mdWxsc2NyZWVuKSB7CiAgICB3ZWJBcHBJc0Z1bGxzY3JlZW4gPSAhIWlzX2Z1bGxzY3JlZW47CiAgICBVdGlscy5zZXNzaW9uU3RvcmFnZVNldCgnaXNGdWxsc2NyZWVuJywgd2ViQXBwSXNGdWxsc2NyZWVuID8gJ3llcycgOiAnbm8nKTsKICB9CgogIGZ1bmN0aW9uIHNldE9yaWVudGF0aW9uTG9jayhpc19sb2NrZWQpIHsKICAgIHdlYkFwcElzT3JpZW50YXRpb25Mb2NrZWQgPSAhIWlzX2xvY2tlZDsKICAgIFV0aWxzLnNlc3Npb25TdG9yYWdlU2V0KCdpc09yaWVudGF0aW9uTG9ja2VkJywgd2ViQXBwSXNPcmllbnRhdGlvbkxvY2tlZCA/ICd5ZXMnIDogJ25vJyk7CiAgfQoKICBmdW5jdGlvbiBzZXRUaGVtZVBhcmFtcyh0aGVtZV9wYXJhbXMpIHsKICAgIC8vIHRlbXAgaU9TIGZpeAogICAgaWYgKHRoZW1lX3BhcmFtcy5iZ19jb2xvciA9PSAnIzFjMWMxZCcgJiYKICAgICAgICB0aGVtZV9wYXJhbXMuYmdfY29sb3IgPT0gdGhlbWVfcGFyYW1zLnNlY29uZGFyeV9iZ19jb2xvcikgewogICAgICB0aGVtZV9wYXJhbXMuc2Vjb25kYXJ5X2JnX2NvbG9yID0gJyMyYzJjMmUnOwogICAgfQogICAgdmFyIGNvbG9yOwogICAgZm9yICh2YXIga2V5IGluIHRoZW1lX3BhcmFtcykgewogICAgICBpZiAoY29sb3IgPSBwYXJzZUNvbG9yVG9IZXgodGhlbWVfcGFyYW1zW2tleV0pKSB7CiAgICAgICAgdGhlbWVQYXJhbXNba2V5XSA9IGNvbG9yOwogICAgICAgIGlmIChrZXkgPT0gJ2JnX2NvbG9yJykgewogICAgICAgICAgY29sb3JTY2hlbWUgPSBpc0NvbG9yRGFyayhjb2xvcikgPyAnZGFyaycgOiAnbGlnaHQnCiAgICAgICAgICBzZXRDc3NQcm9wZXJ0eSgnY29sb3Itc2NoZW1lJywgY29sb3JTY2hlbWUpOwogICAgICAgIH0KICAgICAgICBrZXkgPSAndGhlbWUtJyArIGtleS5zcGxpdCgnXycpLmpvaW4oJy0nKTsKICAgICAgICBzZXRDc3NQcm9wZXJ0eShrZXksIGNvbG9yKTsKICAgICAgfQogICAgfQogICAgVXRpbHMuc2Vzc2lvblN0b3JhZ2VTZXQoJ3RoZW1lUGFyYW1zJywgdGhlbWVQYXJhbXMpOwogIH0KCiAgZnVuY3Rpb24gc2V0RGVmYXVsdENvbG9ycyhkZWZfY29sb3JzKSB7CiAgICBpZiAoY29sb3JTY2hlbWUgPT0gJ2RhcmsnKSB7CiAgICAgIGlmIChkZWZfY29sb3JzLmJnX2RhcmtfY29sb3IpIHsKICAgICAgICB3ZWJBcHBCYWNrZ3JvdW5kQ29sb3IgPSBkZWZfY29sb3JzLmJnX2RhcmtfY29sb3I7CiAgICAgIH0KICAgICAgaWYgKGRlZl9jb2xvcnMuaGVhZGVyX2RhcmtfY29sb3IpIHsKICAgICAgICB3ZWJBcHBIZWFkZXJDb2xvcktleSA9IG51bGw7CiAgICAgICAgd2ViQXBwSGVhZGVyQ29sb3IgPSBkZWZfY29sb3JzLmhlYWRlcl9kYXJrX2NvbG9yOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBpZiAoZGVmX2NvbG9ycy5iZ19jb2xvcikgewogICAgICAgIHdlYkFwcEJhY2tncm91bmRDb2xvciA9IGRlZl9jb2xvcnMuYmdfY29sb3I7CiAgICAgIH0KICAgICAgaWYgKGRlZl9jb2xvcnMuaGVhZGVyX2NvbG9yKSB7CiAgICAgICAgd2ViQXBwSGVhZGVyQ29sb3JLZXkgPSBudWxsOwogICAgICAgIHdlYkFwcEhlYWRlckNvbG9yID0gZGVmX2NvbG9ycy5oZWFkZXJfY29sb3I7CiAgICAgIH0KICAgIH0KICAgIFV0aWxzLnNlc3Npb25TdG9yYWdlU2V0KCdkZWZhdWx0Q29sb3JzJywgZGVmX2NvbG9ycyk7CiAgfQoKICB2YXIgd2ViQXBwQ2FsbGJhY2tzID0ge307CiAgZnVuY3Rpb24gZ2VuZXJhdGVDYWxsYmFja0lkKGxlbikgewogICAgdmFyIHRyaWVzID0gMTAwOwogICAgd2hpbGUgKC0tdHJpZXMpIHsKICAgICAgdmFyIGlkID0gJycsIGNoYXJzID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5JywgY2hhcnNfbGVuID0gY2hhcnMubGVuZ3RoOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgaWQgKz0gY2hhcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnNfbGVuKV07CiAgICAgIH0KICAgICAgaWYgKCF3ZWJBcHBDYWxsYmFja3NbaWRdKSB7CiAgICAgICAgd2ViQXBwQ2FsbGJhY2tzW2lkXSA9IHt9OwogICAgICAgIHJldHVybiBpZDsKICAgICAgfQogICAgfQogICAgdGhyb3cgRXJyb3IoJ1dlYkFwcENhbGxiYWNrSWRHZW5lcmF0ZUZhaWxlZCcpOwogIH0KCiAgdmFyIHZpZXdwb3J0SGVpZ2h0ID0gZmFsc2UsIHZpZXdwb3J0U3RhYmxlSGVpZ2h0ID0gZmFsc2UsIGlzRXhwYW5kZWQgPSB0cnVlOwogIGZ1bmN0aW9uIHNldFZpZXdwb3J0SGVpZ2h0KGRhdGEpIHsKICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgaXNFeHBhbmRlZCA9ICEhZGF0YS5pc19leHBhbmRlZDsKICAgICAgdmlld3BvcnRIZWlnaHQgPSBkYXRhLmhlaWdodDsKICAgICAgaWYgKGRhdGEuaXNfc3RhdGVfc3RhYmxlKSB7CiAgICAgICAgdmlld3BvcnRTdGFibGVIZWlnaHQgPSBkYXRhLmhlaWdodDsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCd2aWV3cG9ydENoYW5nZWQnLCB7CiAgICAgICAgaXNTdGF0ZVN0YWJsZTogISFkYXRhLmlzX3N0YXRlX3N0YWJsZQogICAgICB9KTsKICAgIH0KICAgIHZhciBoZWlnaHQsIHN0YWJsZV9oZWlnaHQ7CiAgICBpZiAodmlld3BvcnRIZWlnaHQgIT09IGZhbHNlKSB7CiAgICAgIGhlaWdodCA9ICh2aWV3cG9ydEhlaWdodCAtIGJvdHRvbUJhckhlaWdodCkgKyAncHgnOwogICAgfSBlbHNlIHsKICAgICAgaGVpZ2h0ID0gYm90dG9tQmFySGVpZ2h0ID8gJ2NhbGMoMTAwdmggLSAnICsgYm90dG9tQmFySGVpZ2h0ICsgJ3B4KScgOiAnMTAwdmgnOwogICAgfQogICAgaWYgKHZpZXdwb3J0U3RhYmxlSGVpZ2h0ICE9PSBmYWxzZSkgewogICAgICBzdGFibGVfaGVpZ2h0ID0gKHZpZXdwb3J0U3RhYmxlSGVpZ2h0IC0gYm90dG9tQmFySGVpZ2h0KSArICdweCc7CiAgICB9IGVsc2UgewogICAgICBzdGFibGVfaGVpZ2h0ID0gYm90dG9tQmFySGVpZ2h0ID8gJ2NhbGMoMTAwdmggLSAnICsgYm90dG9tQmFySGVpZ2h0ICsgJ3B4KScgOiAnMTAwdmgnOwogICAgfQogICAgc2V0Q3NzUHJvcGVydHkoJ3ZpZXdwb3J0LWhlaWdodCcsIGhlaWdodCk7CiAgICBzZXRDc3NQcm9wZXJ0eSgndmlld3BvcnQtc3RhYmxlLWhlaWdodCcsIHN0YWJsZV9oZWlnaHQpOwogIH0KCiAgdmFyIHNhZmVBcmVhSW5zZXQgPSB7dG9wOiAwLCBib3R0b206IDAsIGxlZnQ6IDAsIHJpZ2h0OiAwfTsKICBmdW5jdGlvbiBzZXRTYWZlQXJlYUluc2V0KGRhdGEpIHsKICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgaWYgKHR5cGVvZiBkYXRhLnRvcCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBzYWZlQXJlYUluc2V0LnRvcCA9IGRhdGEudG9wOwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgZGF0YS5ib3R0b20gIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgc2FmZUFyZWFJbnNldC5ib3R0b20gPSBkYXRhLmJvdHRvbTsKICAgICAgfQogICAgICBpZiAodHlwZW9mIGRhdGEubGVmdCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBzYWZlQXJlYUluc2V0LmxlZnQgPSBkYXRhLmxlZnQ7CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBkYXRhLnJpZ2h0ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIHNhZmVBcmVhSW5zZXQucmlnaHQgPSBkYXRhLnJpZ2h0OwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ3NhZmVBcmVhQ2hhbmdlZCcpOwogICAgfQogICAgc2V0Q3NzUHJvcGVydHkoJ3NhZmUtYXJlYS1pbnNldC10b3AnLCBzYWZlQXJlYUluc2V0LnRvcCArICdweCcpOwogICAgc2V0Q3NzUHJvcGVydHkoJ3NhZmUtYXJlYS1pbnNldC1ib3R0b20nLCBzYWZlQXJlYUluc2V0LmJvdHRvbSArICdweCcpOwogICAgc2V0Q3NzUHJvcGVydHkoJ3NhZmUtYXJlYS1pbnNldC1sZWZ0Jywgc2FmZUFyZWFJbnNldC5sZWZ0ICsgJ3B4Jyk7CiAgICBzZXRDc3NQcm9wZXJ0eSgnc2FmZS1hcmVhLWluc2V0LXJpZ2h0Jywgc2FmZUFyZWFJbnNldC5yaWdodCArICdweCcpOwogIH0KCiAgdmFyIGNvbnRlbnRTYWZlQXJlYUluc2V0ID0ge3RvcDogMCwgYm90dG9tOiAwLCBsZWZ0OiAwLCByaWdodDogMH07CiAgZnVuY3Rpb24gc2V0Q29udGVudFNhZmVBcmVhSW5zZXQoZGF0YSkgewogICAgaWYgKHR5cGVvZiBkYXRhICE9PSAndW5kZWZpbmVkJykgewogICAgICBpZiAodHlwZW9mIGRhdGEudG9wICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIGNvbnRlbnRTYWZlQXJlYUluc2V0LnRvcCA9IGRhdGEudG9wOwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgZGF0YS5ib3R0b20gIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgY29udGVudFNhZmVBcmVhSW5zZXQuYm90dG9tID0gZGF0YS5ib3R0b207CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBkYXRhLmxlZnQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgY29udGVudFNhZmVBcmVhSW5zZXQubGVmdCA9IGRhdGEubGVmdDsKICAgICAgfQogICAgICBpZiAodHlwZW9mIGRhdGEucmlnaHQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgY29udGVudFNhZmVBcmVhSW5zZXQucmlnaHQgPSBkYXRhLnJpZ2h0OwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2NvbnRlbnRTYWZlQXJlYUNoYW5nZWQnKTsKICAgIH0KICAgIHNldENzc1Byb3BlcnR5KCdjb250ZW50LXNhZmUtYXJlYS1pbnNldC10b3AnLCBjb250ZW50U2FmZUFyZWFJbnNldC50b3AgKyAncHgnKTsKICAgIHNldENzc1Byb3BlcnR5KCdjb250ZW50LXNhZmUtYXJlYS1pbnNldC1ib3R0b20nLCBjb250ZW50U2FmZUFyZWFJbnNldC5ib3R0b20gKyAncHgnKTsKICAgIHNldENzc1Byb3BlcnR5KCdjb250ZW50LXNhZmUtYXJlYS1pbnNldC1sZWZ0JywgY29udGVudFNhZmVBcmVhSW5zZXQubGVmdCArICdweCcpOwogICAgc2V0Q3NzUHJvcGVydHkoJ2NvbnRlbnQtc2FmZS1hcmVhLWluc2V0LXJpZ2h0JywgY29udGVudFNhZmVBcmVhSW5zZXQucmlnaHQgKyAncHgnKTsKICB9CgogIHZhciBpc0Nsb3NpbmdDb25maXJtYXRpb25FbmFibGVkID0gZmFsc2U7CiAgZnVuY3Rpb24gc2V0Q2xvc2luZ0NvbmZpcm1hdGlvbihuZWVkX2NvbmZpcm1hdGlvbikgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi4yJykpIHsKICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBDbG9zaW5nIGNvbmZpcm1hdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICByZXR1cm47CiAgICB9CiAgICBpc0Nsb3NpbmdDb25maXJtYXRpb25FbmFibGVkID0gISFuZWVkX2NvbmZpcm1hdGlvbjsKICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3NldHVwX2Nsb3NpbmdfYmVoYXZpb3InLCBmYWxzZSwge25lZWRfY29uZmlybWF0aW9uOiBpc0Nsb3NpbmdDb25maXJtYXRpb25FbmFibGVkfSk7CiAgfQoKICB2YXIgaXNWZXJ0aWNhbFN3aXBlc0VuYWJsZWQgPSB0cnVlOwogIGZ1bmN0aW9uIHRvZ2dsZVZlcnRpY2FsU3dpcGVzKGVuYWJsZV9zd2lwZXMpIHsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzcuNycpKSB7CiAgICAgIGNvbnNvbGUud2FybignW1RlbGVncmFtLldlYkFwcF0gQ2hhbmdpbmcgc3dpcGVzIGJlaGF2aW9yIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGlzVmVydGljYWxTd2lwZXNFbmFibGVkID0gISFlbmFibGVfc3dpcGVzOwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc2V0dXBfc3dpcGVfYmVoYXZpb3InLCBmYWxzZSwge2FsbG93X3ZlcnRpY2FsX3N3aXBlOiBpc1ZlcnRpY2FsU3dpcGVzRW5hYmxlZH0pOwogIH0KCiAgZnVuY3Rpb24gb25GdWxsc2NyZWVuQ2hhbmdlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgc2V0RnVsbHNjcmVlbihldmVudERhdGEuaXNfZnVsbHNjcmVlbik7CiAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdmdWxsc2NyZWVuQ2hhbmdlZCcpOwogIH0KICBmdW5jdGlvbiBvbkZ1bGxzY3JlZW5GYWlsZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChldmVudERhdGEuZXJyb3IgPT0gJ0FMUkVBRFlfRlVMTFNDUkVFTicgJiYgIXdlYkFwcElzRnVsbHNjcmVlbikgewogICAgICBzZXRGdWxsc2NyZWVuKHRydWUpOwogICAgfQogICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnZnVsbHNjcmVlbkZhaWxlZCcsIHsKICAgICAgZXJyb3I6IGV2ZW50RGF0YS5lcnJvcgogICAgfSk7CiAgfQoKICBmdW5jdGlvbiB0b2dnbGVPcmllbnRhdGlvbkxvY2sobG9ja2VkKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc4LjAnKSkgewogICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIE9yaWVudGF0aW9uIGxvY2tpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgc2V0T3JpZW50YXRpb25Mb2NrKGxvY2tlZCk7CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF90b2dnbGVfb3JpZW50YXRpb25fbG9jaycsIGZhbHNlLCB7bG9ja2VkOiB3ZWJBcHBJc09yaWVudGF0aW9uTG9ja2VkfSk7CiAgfQoKICB2YXIgaG9tZVNjcmVlbkNhbGxiYWNrcyA9IFtdOwogIGZ1bmN0aW9uIG9uSG9tZVNjcmVlbkFkZGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdob21lU2NyZWVuQWRkZWQnKTsKICB9CiAgZnVuY3Rpb24gb25Ib21lU2NyZWVuQ2hlY2tlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgdmFyIHN0YXR1cyA9IGV2ZW50RGF0YS5zdGF0dXMgfHwgJ3Vua25vd24nOwogICAgaWYgKGhvbWVTY3JlZW5DYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhvbWVTY3JlZW5DYWxsYmFja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgY2FsbGJhY2sgPSBob21lU2NyZWVuQ2FsbGJhY2tzW2ldOwogICAgICAgIGNhbGxiYWNrKHN0YXR1cyk7CiAgICAgIH0KICAgICAgaG9tZVNjcmVlbkNhbGxiYWNrcyA9IFtdOwogICAgfQogICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnaG9tZVNjcmVlbkNoZWNrZWQnLCB7CiAgICAgIHN0YXR1czogc3RhdHVzCiAgICB9KTsKICB9CgogIHZhciBXZWJBcHBTaGFyZU1lc3NhZ2VPcGVuZWQgPSBmYWxzZTsKICBmdW5jdGlvbiBvblByZXBhcmVkTWVzc2FnZVNlbnQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChXZWJBcHBTaGFyZU1lc3NhZ2VPcGVuZWQpIHsKICAgICAgdmFyIHJlcXVlc3REYXRhID0gV2ViQXBwU2hhcmVNZXNzYWdlT3BlbmVkOwogICAgICBXZWJBcHBTaGFyZU1lc3NhZ2VPcGVuZWQgPSBmYWxzZTsKICAgICAgaWYgKHJlcXVlc3REYXRhLmNhbGxiYWNrKSB7CiAgICAgICAgcmVxdWVzdERhdGEuY2FsbGJhY2sodHJ1ZSk7CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnc2hhcmVNZXNzYWdlU2VudCcpOwogICAgfQogIH0KICBmdW5jdGlvbiBvblByZXBhcmVkTWVzc2FnZUZhaWxlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgaWYgKFdlYkFwcFNoYXJlTWVzc2FnZU9wZW5lZCkgewogICAgICB2YXIgcmVxdWVzdERhdGEgPSBXZWJBcHBTaGFyZU1lc3NhZ2VPcGVuZWQ7CiAgICAgIFdlYkFwcFNoYXJlTWVzc2FnZU9wZW5lZCA9IGZhbHNlOwogICAgICBpZiAocmVxdWVzdERhdGEuY2FsbGJhY2spIHsKICAgICAgICByZXF1ZXN0RGF0YS5jYWxsYmFjayhmYWxzZSk7CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnc2hhcmVNZXNzYWdlRmFpbGVkJywgewogICAgICAgIGVycm9yOiBldmVudERhdGEuZXJyb3IKICAgICAgfSk7CiAgICB9CiAgfQoKICB2YXIgV2ViQXBwUmVxdWVzdENoYXRPcGVuZWQgPSBmYWxzZTsKICBmdW5jdGlvbiBvblJlcXVlc3RlZENoYXRTZW50KGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoV2ViQXBwUmVxdWVzdENoYXRPcGVuZWQpIHsKICAgICAgdmFyIHJlcXVlc3REYXRhID0gV2ViQXBwUmVxdWVzdENoYXRPcGVuZWQ7CiAgICAgIFdlYkFwcFJlcXVlc3RDaGF0T3BlbmVkID0gZmFsc2U7CiAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgIHJlcXVlc3REYXRhLmNhbGxiYWNrKHRydWUpOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ3JlcXVlc3RlZENoYXRTZW50Jyk7CiAgICB9CiAgfQogIGZ1bmN0aW9uIG9uUmVxdWVzdGVkQ2hhdEZhaWxlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgaWYgKFdlYkFwcFJlcXVlc3RDaGF0T3BlbmVkKSB7CiAgICAgIHZhciByZXF1ZXN0RGF0YSA9IFdlYkFwcFJlcXVlc3RDaGF0T3BlbmVkOwogICAgICBXZWJBcHBSZXF1ZXN0Q2hhdE9wZW5lZCA9IGZhbHNlOwogICAgICBpZiAocmVxdWVzdERhdGEuY2FsbGJhY2spIHsKICAgICAgICByZXF1ZXN0RGF0YS5jYWxsYmFjayhmYWxzZSk7CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgncmVxdWVzdGVkQ2hhdEZhaWxlZCcsIHsKICAgICAgICBlcnJvcjogZXZlbnREYXRhLmVycm9yCiAgICAgIH0pOwogICAgfQogIH0KCiAgdmFyIFdlYkFwcEVtb2ppU3RhdHVzUmVxdWVzdGVkID0gZmFsc2U7CiAgZnVuY3Rpb24gb25FbW9qaVN0YXR1c1NldChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgaWYgKFdlYkFwcEVtb2ppU3RhdHVzUmVxdWVzdGVkKSB7CiAgICAgIHZhciByZXF1ZXN0RGF0YSA9IFdlYkFwcEVtb2ppU3RhdHVzUmVxdWVzdGVkOwogICAgICBXZWJBcHBFbW9qaVN0YXR1c1JlcXVlc3RlZCA9IGZhbHNlOwogICAgICBpZiAocmVxdWVzdERhdGEuY2FsbGJhY2spIHsKICAgICAgICByZXF1ZXN0RGF0YS5jYWxsYmFjayh0cnVlKTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdlbW9qaVN0YXR1c1NldCcpOwogICAgfQogIH0KICBmdW5jdGlvbiBvbkVtb2ppU3RhdHVzRmFpbGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoV2ViQXBwRW1vamlTdGF0dXNSZXF1ZXN0ZWQpIHsKICAgICAgdmFyIHJlcXVlc3REYXRhID0gV2ViQXBwRW1vamlTdGF0dXNSZXF1ZXN0ZWQ7CiAgICAgIFdlYkFwcEVtb2ppU3RhdHVzUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgIHJlcXVlc3REYXRhLmNhbGxiYWNrKGZhbHNlKTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdlbW9qaVN0YXR1c0ZhaWxlZCcsIHsKICAgICAgICBlcnJvcjogZXZlbnREYXRhLmVycm9yCiAgICAgIH0pOwogICAgfQogIH0KICB2YXIgV2ViQXBwRW1vamlTdGF0dXNBY2Nlc3NSZXF1ZXN0ZWQgPSBmYWxzZTsKICBmdW5jdGlvbiBvbkVtb2ppU3RhdHVzQWNjZXNzUmVxdWVzdGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoV2ViQXBwRW1vamlTdGF0dXNBY2Nlc3NSZXF1ZXN0ZWQpIHsKICAgICAgdmFyIHJlcXVlc3REYXRhID0gV2ViQXBwRW1vamlTdGF0dXNBY2Nlc3NSZXF1ZXN0ZWQ7CiAgICAgIFdlYkFwcEVtb2ppU3RhdHVzQWNjZXNzUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgIHJlcXVlc3REYXRhLmNhbGxiYWNrKGV2ZW50RGF0YS5zdGF0dXMgPT0gJ2FsbG93ZWQnKTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdlbW9qaVN0YXR1c0FjY2Vzc1JlcXVlc3RlZCcsIHsKICAgICAgICBzdGF0dXM6IGV2ZW50RGF0YS5zdGF0dXMKICAgICAgfSk7CiAgICB9CiAgfQoKICB2YXIgd2ViQXBwUG9wdXBPcGVuZWQgPSBmYWxzZTsKICBmdW5jdGlvbiBvblBvcHVwQ2xvc2VkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAod2ViQXBwUG9wdXBPcGVuZWQpIHsKICAgICAgdmFyIHBvcHVwRGF0YSA9IHdlYkFwcFBvcHVwT3BlbmVkOwogICAgICB3ZWJBcHBQb3B1cE9wZW5lZCA9IGZhbHNlOwogICAgICB2YXIgYnV0dG9uX2lkID0gbnVsbDsKICAgICAgaWYgKHR5cGVvZiBldmVudERhdGEuYnV0dG9uX2lkICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIGJ1dHRvbl9pZCA9IGV2ZW50RGF0YS5idXR0b25faWQ7CiAgICAgIH0KICAgICAgaWYgKHBvcHVwRGF0YS5jYWxsYmFjaykgewogICAgICAgIHBvcHVwRGF0YS5jYWxsYmFjayhidXR0b25faWQpOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ3BvcHVwQ2xvc2VkJywgewogICAgICAgIGJ1dHRvbl9pZDogYnV0dG9uX2lkCiAgICAgIH0pOwogICAgfQogIH0KCgogIGZ1bmN0aW9uIGdldEhlYWRlckNvbG9yKCkgewogICAgaWYgKHdlYkFwcEhlYWRlckNvbG9yS2V5ID09ICdzZWNvbmRhcnlfYmdfY29sb3InKSB7CiAgICAgIHJldHVybiB0aGVtZVBhcmFtcy5zZWNvbmRhcnlfYmdfY29sb3I7CiAgICB9IGVsc2UgaWYgKHdlYkFwcEhlYWRlckNvbG9yS2V5ID09ICdiZ19jb2xvcicpIHsKICAgICAgcmV0dXJuIHRoZW1lUGFyYW1zLmJnX2NvbG9yOwogICAgfQogICAgcmV0dXJuIHdlYkFwcEhlYWRlckNvbG9yOwogIH0KICBmdW5jdGlvbiBzZXRIZWFkZXJDb2xvcihjb2xvcikgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi4xJykpIHsKICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBIZWFkZXIgY29sb3IgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi45JykpIHsKICAgICAgaWYgKHRoZW1lUGFyYW1zLmJnX2NvbG9yICYmCiAgICAgICAgICB0aGVtZVBhcmFtcy5iZ19jb2xvciA9PSBjb2xvcikgewogICAgICAgIGNvbG9yID0gJ2JnX2NvbG9yJzsKICAgICAgfSBlbHNlIGlmICh0aGVtZVBhcmFtcy5zZWNvbmRhcnlfYmdfY29sb3IgJiYKICAgICAgICAgICAgICAgICB0aGVtZVBhcmFtcy5zZWNvbmRhcnlfYmdfY29sb3IgPT0gY29sb3IpIHsKICAgICAgICBjb2xvciA9ICdzZWNvbmRhcnlfYmdfY29sb3InOwogICAgICB9CiAgICB9CiAgICB2YXIgaGVhZF9jb2xvciA9IG51bGwsIGNvbG9yX2tleSA9IG51bGw7CiAgICBpZiAoY29sb3IgPT0gJ2JnX2NvbG9yJyB8fCBjb2xvciA9PSAnc2Vjb25kYXJ5X2JnX2NvbG9yJykgewogICAgICBjb2xvcl9rZXkgPSBjb2xvcjsKICAgIH0gZWxzZSBpZiAodmVyc2lvbkF0TGVhc3QoJzYuOScpKSB7CiAgICAgIGhlYWRfY29sb3IgPSBwYXJzZUNvbG9yVG9IZXgoY29sb3IpOwogICAgICBpZiAoIWhlYWRfY29sb3IpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBIZWFkZXIgY29sb3IgZm9ybWF0IGlzIGludmFsaWQnLCBjb2xvcik7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEhlYWRlckNvbG9ySW52YWxpZCcpOwogICAgICB9CiAgICB9CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjknKSAmJgogICAgICAgIGNvbG9yX2tleSAhPSAnYmdfY29sb3InICYmCiAgICAgICAgY29sb3Jfa2V5ICE9ICdzZWNvbmRhcnlfYmdfY29sb3InKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEhlYWRlciBjb2xvciBrZXkgc2hvdWxkIGJlIG9uZSBvZiBUZWxlZ3JhbS5XZWJBcHAudGhlbWVQYXJhbXMuYmdfY29sb3IsIFRlbGVncmFtLldlYkFwcC50aGVtZVBhcmFtcy5zZWNvbmRhcnlfYmdfY29sb3IsIFwnYmdfY29sb3JcJywgXCdzZWNvbmRhcnlfYmdfY29sb3JcJycsIGNvbG9yKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEhlYWRlckNvbG9yS2V5SW52YWxpZCcpOwogICAgfQogICAgd2ViQXBwSGVhZGVyQ29sb3JLZXkgPSBjb2xvcl9rZXk7CiAgICB3ZWJBcHBIZWFkZXJDb2xvciA9IGhlYWRfY29sb3I7CiAgICB1cGRhdGVIZWFkZXJDb2xvcigpOwogIH0KICB2YXIgYXBwSGVhZGVyQ29sb3JLZXkgPSBudWxsLCBhcHBIZWFkZXJDb2xvciA9IG51bGw7CiAgZnVuY3Rpb24gdXBkYXRlSGVhZGVyQ29sb3IoKSB7CiAgICBpZiAoYXBwSGVhZGVyQ29sb3JLZXkgIT0gd2ViQXBwSGVhZGVyQ29sb3JLZXkgfHwKICAgICAgICBhcHBIZWFkZXJDb2xvciAhPSB3ZWJBcHBIZWFkZXJDb2xvcikgewogICAgICBhcHBIZWFkZXJDb2xvcktleSA9IHdlYkFwcEhlYWRlckNvbG9yS2V5OwogICAgICBhcHBIZWFkZXJDb2xvciA9IHdlYkFwcEhlYWRlckNvbG9yOwogICAgICBpZiAoYXBwSGVhZGVyQ29sb3IpIHsKICAgICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9zZXRfaGVhZGVyX2NvbG9yJywgZmFsc2UsIHtjb2xvcjogd2ViQXBwSGVhZGVyQ29sb3J9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9zZXRfaGVhZGVyX2NvbG9yJywgZmFsc2UsIHtjb2xvcl9rZXk6IHdlYkFwcEhlYWRlckNvbG9yS2V5fSk7CiAgICAgIH0KICAgIH0KICB9CgogIGZ1bmN0aW9uIGdldEJhY2tncm91bmRDb2xvcigpIHsKICAgIGlmICh3ZWJBcHBCYWNrZ3JvdW5kQ29sb3IgPT0gJ3NlY29uZGFyeV9iZ19jb2xvcicpIHsKICAgICAgcmV0dXJuIHRoZW1lUGFyYW1zLnNlY29uZGFyeV9iZ19jb2xvcjsKICAgIH0gZWxzZSBpZiAod2ViQXBwQmFja2dyb3VuZENvbG9yID09ICdiZ19jb2xvcicpIHsKICAgICAgcmV0dXJuIHRoZW1lUGFyYW1zLmJnX2NvbG9yOwogICAgfQogICAgcmV0dXJuIHdlYkFwcEJhY2tncm91bmRDb2xvcjsKICB9CiAgZnVuY3Rpb24gc2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjEnKSkgewogICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIEJhY2tncm91bmQgY29sb3IgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIGJnX2NvbG9yOwogICAgaWYgKGNvbG9yID09ICdiZ19jb2xvcicgfHwgY29sb3IgPT0gJ3NlY29uZGFyeV9iZ19jb2xvcicpIHsKICAgICAgYmdfY29sb3IgPSBjb2xvcjsKICAgIH0gZWxzZSB7CiAgICAgIGJnX2NvbG9yID0gcGFyc2VDb2xvclRvSGV4KGNvbG9yKTsKICAgICAgaWYgKCFiZ19jb2xvcikgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEJhY2tncm91bmQgY29sb3IgZm9ybWF0IGlzIGludmFsaWQnLCBjb2xvcik7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJhY2tncm91bmRDb2xvckludmFsaWQnKTsKICAgICAgfQogICAgfQogICAgd2ViQXBwQmFja2dyb3VuZENvbG9yID0gYmdfY29sb3I7CiAgICB1cGRhdGVCYWNrZ3JvdW5kQ29sb3IoKTsKICB9CiAgdmFyIGFwcEJhY2tncm91bmRDb2xvciA9IG51bGw7CiAgZnVuY3Rpb24gdXBkYXRlQmFja2dyb3VuZENvbG9yKCkgewogICAgdmFyIGNvbG9yID0gZ2V0QmFja2dyb3VuZENvbG9yKCk7CiAgICBpZiAoYXBwQmFja2dyb3VuZENvbG9yICE9IGNvbG9yKSB7CiAgICAgIGFwcEJhY2tncm91bmRDb2xvciA9IGNvbG9yOwogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9zZXRfYmFja2dyb3VuZF9jb2xvcicsIGZhbHNlLCB7Y29sb3I6IGNvbG9yfSk7CiAgICB9CiAgfQoKICB2YXIgYm90dG9tQmFyQ29sb3IgPSAnYm90dG9tX2Jhcl9iZ19jb2xvcic7CiAgZnVuY3Rpb24gZ2V0Qm90dG9tQmFyQ29sb3IoKSB7CiAgICBpZiAoYm90dG9tQmFyQ29sb3IgPT0gJ2JvdHRvbV9iYXJfYmdfY29sb3InKSB7CiAgICAgIHJldHVybiB0aGVtZVBhcmFtcy5ib3R0b21fYmFyX2JnX2NvbG9yIHx8IHRoZW1lUGFyYW1zLnNlY29uZGFyeV9iZ19jb2xvciB8fCAnI2ZmZmZmZic7CiAgICB9IGVsc2UgaWYgKGJvdHRvbUJhckNvbG9yID09ICdzZWNvbmRhcnlfYmdfY29sb3InKSB7CiAgICAgIHJldHVybiB0aGVtZVBhcmFtcy5zZWNvbmRhcnlfYmdfY29sb3I7CiAgICB9IGVsc2UgaWYgKGJvdHRvbUJhckNvbG9yID09ICdiZ19jb2xvcicpIHsKICAgICAgcmV0dXJuIHRoZW1lUGFyYW1zLmJnX2NvbG9yOwogICAgfQogICAgcmV0dXJuIGJvdHRvbUJhckNvbG9yOwogIH0KICBmdW5jdGlvbiBzZXRCb3R0b21CYXJDb2xvcihjb2xvcikgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNy4xMCcpKSB7CiAgICAgIGNvbnNvbGUud2FybignW1RlbGVncmFtLldlYkFwcF0gQm90dG9tIGJhciBjb2xvciBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgYmdfY29sb3I7CiAgICBpZiAoY29sb3IgPT0gJ2JnX2NvbG9yJyB8fCBjb2xvciA9PSAnc2Vjb25kYXJ5X2JnX2NvbG9yJyB8fCBjb2xvciA9PSAnYm90dG9tX2Jhcl9iZ19jb2xvcicpIHsKICAgICAgYmdfY29sb3IgPSBjb2xvcjsKICAgIH0gZWxzZSB7CiAgICAgIGJnX2NvbG9yID0gcGFyc2VDb2xvclRvSGV4KGNvbG9yKTsKICAgICAgaWYgKCFiZ19jb2xvcikgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEJvdHRvbSBiYXIgY29sb3IgZm9ybWF0IGlzIGludmFsaWQnLCBjb2xvcik7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJvdHRvbUJhckNvbG9ySW52YWxpZCcpOwogICAgICB9CiAgICB9CiAgICBib3R0b21CYXJDb2xvciA9IGJnX2NvbG9yOwogICAgdXBkYXRlQm90dG9tQmFyQ29sb3IoKTsKICAgIHdpbmRvdy5UZWxlZ3JhbS5XZWJBcHAuU2Vjb25kYXJ5QnV0dG9uLnNldFBhcmFtcyh7fSk7CiAgfQogIHZhciBhcHBCb3R0b21CYXJDb2xvciA9IG51bGw7CiAgZnVuY3Rpb24gdXBkYXRlQm90dG9tQmFyQ29sb3IoKSB7CiAgICB2YXIgY29sb3IgPSBnZXRCb3R0b21CYXJDb2xvcigpOwogICAgaWYgKGFwcEJvdHRvbUJhckNvbG9yICE9IGNvbG9yKSB7CiAgICAgIGFwcEJvdHRvbUJhckNvbG9yID0gY29sb3I7CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3NldF9ib3R0b21fYmFyX2NvbG9yJywgZmFsc2UsIHtjb2xvcjogY29sb3J9KTsKICAgIH0KICAgIGlmIChpbml0UGFyYW1zLnRnV2ViQXBwRGVidWcpIHsKICAgICAgdXBkYXRlRGVidWdCb3R0b21CYXIoKTsKICAgIH0KICB9CgoKICBmdW5jdGlvbiBwYXJzZUNvbG9yVG9IZXgoY29sb3IpIHsKICAgIGNvbG9yICs9ICcnOwogICAgdmFyIG1hdGNoOwogICAgaWYgKG1hdGNoID0gL15ccyojKFswLTlhLWZdezZ9KVxzKiQvaS5leGVjKGNvbG9yKSkgewogICAgICByZXR1cm4gJyMnICsgbWF0Y2hbMV0udG9Mb3dlckNhc2UoKTsKICAgIH0KICAgIGVsc2UgaWYgKG1hdGNoID0gL15ccyojKFswLTlhLWZdKShbMC05YS1mXSkoWzAtOWEtZl0pXHMqJC9pLmV4ZWMoY29sb3IpKSB7CiAgICAgIHJldHVybiAoJyMnICsgbWF0Y2hbMV0gKyBtYXRjaFsxXSArIG1hdGNoWzJdICsgbWF0Y2hbMl0gKyBtYXRjaFszXSArIG1hdGNoWzNdKS50b0xvd2VyQ2FzZSgpOwogICAgfQogICAgZWxzZSBpZiAobWF0Y2ggPSAvXlxzKnJnYmE/XCgoXGQrKSxccyooXGQrKSxccyooXGQrKSg/OixccyooXGQrXC57MCwxfVxkKikpP1wpXHMqJC8uZXhlYyhjb2xvcikpIHsKICAgICAgdmFyIHIgPSBwYXJzZUludChtYXRjaFsxXSksIGcgPSBwYXJzZUludChtYXRjaFsyXSksIGIgPSBwYXJzZUludChtYXRjaFszXSk7CiAgICAgIHIgPSAociA8IDE2ID8gJzAnIDogJycpICsgci50b1N0cmluZygxNik7CiAgICAgIGcgPSAoZyA8IDE2ID8gJzAnIDogJycpICsgZy50b1N0cmluZygxNik7CiAgICAgIGIgPSAoYiA8IDE2ID8gJzAnIDogJycpICsgYi50b1N0cmluZygxNik7CiAgICAgIHJldHVybiAnIycgKyByICsgZyArIGI7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBpc0NvbG9yRGFyayhyZ2IpIHsKICAgIHJnYiA9IHJnYi5yZXBsYWNlKC9bXHMjXS9nLCAnJyk7CiAgICBpZiAocmdiLmxlbmd0aCA9PSAzKSB7CiAgICAgIHJnYiA9IHJnYlswXSArIHJnYlswXSArIHJnYlsxXSArIHJnYlsxXSArIHJnYlsyXSArIHJnYlsyXTsKICAgIH0KICAgIHZhciByID0gcGFyc2VJbnQocmdiLnN1YnN0cigwLCAyKSwgMTYpOwogICAgdmFyIGcgPSBwYXJzZUludChyZ2Iuc3Vic3RyKDIsIDIpLCAxNik7CiAgICB2YXIgYiA9IHBhcnNlSW50KHJnYi5zdWJzdHIoNCwgMiksIDE2KTsKICAgIHZhciBoc3AgPSBNYXRoLnNxcnQoMC4yOTkgKiAociAqIHIpICsgMC41ODcgKiAoZyAqIGcpICsgMC4xMTQgKiAoYiAqIGIpKTsKICAgIHJldHVybiBoc3AgPCAxMjA7CiAgfQoKICBmdW5jdGlvbiB2ZXJzaW9uQ29tcGFyZSh2MSwgdjIpIHsKICAgIGlmICh0eXBlb2YgdjEgIT09ICdzdHJpbmcnKSB2MSA9ICcnOwogICAgaWYgKHR5cGVvZiB2MiAhPT0gJ3N0cmluZycpIHYyID0gJyc7CiAgICB2MSA9IHYxLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykuc3BsaXQoJy4nKTsKICAgIHYyID0gdjIucmVwbGFjZSgvXlxzK3xccyskL2csICcnKS5zcGxpdCgnLicpOwogICAgdmFyIGEgPSBNYXRoLm1heCh2MS5sZW5ndGgsIHYyLmxlbmd0aCksIGksIHAxLCBwMjsKICAgIGZvciAoaSA9IDA7IGkgPCBhOyBpKyspIHsKICAgICAgcDEgPSBwYXJzZUludCh2MVtpXSkgfHwgMDsKICAgICAgcDIgPSBwYXJzZUludCh2MltpXSkgfHwgMDsKICAgICAgaWYgKHAxID09IHAyKSBjb250aW51ZTsKICAgICAgaWYgKHAxID4gcDIpIHJldHVybiAxOwogICAgICByZXR1cm4gLTE7CiAgICB9CiAgICByZXR1cm4gMDsKICB9CgogIGZ1bmN0aW9uIHZlcnNpb25BdExlYXN0KHZlcikgewogICAgcmV0dXJuIHZlcnNpb25Db21wYXJlKHdlYkFwcFZlcnNpb24sIHZlcikgPj0gMDsKICB9CgogIGZ1bmN0aW9uIGJ5dGVMZW5ndGgoc3RyKSB7CiAgICBpZiAod2luZG93LkJsb2IpIHsKICAgICAgdHJ5IHsgcmV0dXJuIG5ldyBCbG9iKFtzdHJdKS5zaXplOyB9IGNhdGNoIChlKSB7fQogICAgfQogICAgdmFyIHMgPSBzdHIubGVuZ3RoOwogICAgZm9yICh2YXIgaT1zdHIubGVuZ3RoLTE7IGk+PTA7IGktLSkgewogICAgICB2YXIgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwogICAgICBpZiAoY29kZSA+IDB4N2YgJiYgY29kZSA8PSAweDdmZikgcysrOwogICAgICBlbHNlIGlmIChjb2RlID4gMHg3ZmYgJiYgY29kZSA8PSAweGZmZmYpIHMrPTI7CiAgICAgIGlmIChjb2RlID49IDB4ZGMwMCAmJiBjb2RlIDw9IDB4ZGZmZikgaS0tOwogICAgfQogICAgcmV0dXJuIHM7CiAgfQoKICB2YXIgQmFja0J1dHRvbiA9IChmdW5jdGlvbigpIHsKICAgIHZhciBpc1Zpc2libGUgPSBmYWxzZTsKCiAgICB2YXIgYmFja0J1dHRvbiA9IHt9OwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJhY2tCdXR0b24sICdpc1Zpc2libGUnLCB7CiAgICAgIHNldDogZnVuY3Rpb24odmFsKXsgc2V0UGFyYW1zKHtpc192aXNpYmxlOiB2YWx9KTsgfSwKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNWaXNpYmxlOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKCiAgICB2YXIgY3VyQnV0dG9uU3RhdGUgPSBudWxsOwoKICAgIFdlYlZpZXcub25FdmVudCgnYmFja19idXR0b25fcHJlc3NlZCcsIG9uQmFja0J1dHRvblByZXNzZWQpOwoKICAgIGZ1bmN0aW9uIG9uQmFja0J1dHRvblByZXNzZWQoKSB7CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2JhY2tCdXR0b25DbGlja2VkJyk7CiAgICB9CgogICAgZnVuY3Rpb24gYnV0dG9uUGFyYW1zKCkgewogICAgICByZXR1cm4ge2lzX3Zpc2libGU6IGlzVmlzaWJsZX07CiAgICB9CgogICAgZnVuY3Rpb24gYnV0dG9uU3RhdGUoYnRuX3BhcmFtcykgewogICAgICBpZiAodHlwZW9mIGJ0bl9wYXJhbXMgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgYnRuX3BhcmFtcyA9IGJ1dHRvblBhcmFtcygpOwogICAgICB9CiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShidG5fcGFyYW1zKTsKICAgIH0KCiAgICBmdW5jdGlvbiBidXR0b25DaGVja1ZlcnNpb24oKSB7CiAgICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzYuMScpKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBCYWNrQnV0dG9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGZ1bmN0aW9uIHVwZGF0ZUJ1dHRvbigpIHsKICAgICAgdmFyIGJ0bl9wYXJhbXMgPSBidXR0b25QYXJhbXMoKTsKICAgICAgdmFyIGJ0bl9zdGF0ZSA9IGJ1dHRvblN0YXRlKGJ0bl9wYXJhbXMpOwogICAgICBpZiAoY3VyQnV0dG9uU3RhdGUgPT09IGJ0bl9zdGF0ZSkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBjdXJCdXR0b25TdGF0ZSA9IGJ0bl9zdGF0ZTsKICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc2V0dXBfYmFja19idXR0b24nLCBmYWxzZSwgYnRuX3BhcmFtcyk7CiAgICB9CgogICAgZnVuY3Rpb24gc2V0UGFyYW1zKHBhcmFtcykgewogICAgICBpZiAoIWJ1dHRvbkNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgcmV0dXJuIGJhY2tCdXR0b247CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBwYXJhbXMuaXNfdmlzaWJsZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBpc1Zpc2libGUgPSAhIXBhcmFtcy5pc192aXNpYmxlOwogICAgICB9CiAgICAgIHVwZGF0ZUJ1dHRvbigpOwogICAgICByZXR1cm4gYmFja0J1dHRvbjsKICAgIH0KCiAgICBiYWNrQnV0dG9uLm9uQ2xpY2sgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBpZiAoYnV0dG9uQ2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICBvbldlYlZpZXdFdmVudCgnYmFja0J1dHRvbkNsaWNrZWQnLCBjYWxsYmFjayk7CiAgICAgIH0KICAgICAgcmV0dXJuIGJhY2tCdXR0b247CiAgICB9OwogICAgYmFja0J1dHRvbi5vZmZDbGljayA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIGlmIChidXR0b25DaGVja1ZlcnNpb24oKSkgewogICAgICAgIG9mZldlYlZpZXdFdmVudCgnYmFja0J1dHRvbkNsaWNrZWQnLCBjYWxsYmFjayk7CiAgICAgIH0KICAgICAgcmV0dXJuIGJhY2tCdXR0b247CiAgICB9OwogICAgYmFja0J1dHRvbi5zaG93ID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBzZXRQYXJhbXMoe2lzX3Zpc2libGU6IHRydWV9KTsKICAgIH07CiAgICBiYWNrQnV0dG9uLmhpZGUgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHNldFBhcmFtcyh7aXNfdmlzaWJsZTogZmFsc2V9KTsKICAgIH07CiAgICByZXR1cm4gYmFja0J1dHRvbjsKICB9KSgpOwoKICB2YXIgZGVidWdCb3R0b21CYXIgPSBudWxsLCBkZWJ1Z0JvdHRvbUJhckJ0bnMgPSB7fSwgYm90dG9tQmFySGVpZ2h0ID0gMDsKICBpZiAoaW5pdFBhcmFtcy50Z1dlYkFwcERlYnVnKSB7CiAgICBkZWJ1Z0JvdHRvbUJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RnLWJvdHRvbS1iYXInKTsKICAgIHZhciBkZWJ1Z0JvdHRvbUJhclN0eWxlID0gewogICAgICBkaXNwbGF5OiAnZmxleCcsCiAgICAgIGdhcDogJzdweCcsCiAgICAgIGZvbnQ6ICc2MDAgMTRweC8xOHB4IHNhbnMtc2VyaWYnLAogICAgICB3aWR0aDogJzEwMCUnLAogICAgICBiYWNrZ3JvdW5kOiBnZXRCb3R0b21CYXJDb2xvcigpLAogICAgICBwb3NpdGlvbjogJ2ZpeGVkJywKICAgICAgbGVmdDogJzAnLAogICAgICByaWdodDogJzAnLAogICAgICBib3R0b206ICcwJywKICAgICAgbWFyZ2luOiAnMCcsCiAgICAgIHBhZGRpbmc6ICc3cHgnLAogICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLAogICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JywKICAgICAgekluZGV4OiAnMTAwMDAnCiAgICB9OwogICAgZm9yICh2YXIgayBpbiBkZWJ1Z0JvdHRvbUJhclN0eWxlKSB7CiAgICAgIGRlYnVnQm90dG9tQmFyLnN0eWxlW2tdID0gZGVidWdCb3R0b21CYXJTdHlsZVtrXTsKICAgIH0KICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiBvbkRvbUxvYWRlZChldmVudCkgewogICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgb25Eb21Mb2FkZWQpOwogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRlYnVnQm90dG9tQmFyKTsKICAgIH0pOwogICAgdmFyIGFuaW1TdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CiAgICBhbmltU3R5bGUuaW5uZXJIVE1MID0gJ3RnLWJvdHRvbS1idXR0b24uc2hpbmUgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG92ZXJmbG93OiBoaWRkZW47IH0gdGctYm90dG9tLWJ1dHRvbi5zaGluZTpiZWZvcmUgeyBjb250ZW50OiIiOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEyMGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjIpLCB0cmFuc3BhcmVudCk7IGFuaW1hdGlvbjogdGctYm90dG9tLWJ1dHRvbi1zaGluZSA1cyBlYXNlLWluLW91dCBpbmZpbml0ZTsgfSBALXdlYmtpdC1rZXlmcmFtZXMgdGctYm90dG9tLWJ1dHRvbi1zaGluZSB7IDAlIHtsZWZ0OiAtMTAwJTt9IDEyJSwxMDAlIHtsZWZ0OiAxMDAlfX0gQGtleWZyYW1lcyB0Zy1ib3R0b20tYnV0dG9uLXNoaW5lIHsgMCUge2xlZnQ6IC0xMDAlO30gMTIlLDEwMCUge2xlZnQ6IDEwMCV9fSc7CiAgICBkZWJ1Z0JvdHRvbUJhci5hcHBlbmRDaGlsZChhbmltU3R5bGUpOwogIH0KICBmdW5jdGlvbiB1cGRhdGVEZWJ1Z0JvdHRvbUJhcigpIHsKICAgIHZhciBtYWluQnRuID0gZGVidWdCb3R0b21CYXJCdG5zLm1haW4uX2JvdHRvbUJ1dHRvbjsKICAgIHZhciBzZWNvbmRhcnlCdG4gPSBkZWJ1Z0JvdHRvbUJhckJ0bnMuc2Vjb25kYXJ5Ll9ib3R0b21CdXR0b247CiAgICBpZiAobWFpbkJ0bi5pc1Zpc2libGUgfHwgc2Vjb25kYXJ5QnRuLmlzVmlzaWJsZSkgewogICAgICBkZWJ1Z0JvdHRvbUJhci5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgICBib3R0b21CYXJIZWlnaHQgPSA1ODsKICAgICAgaWYgKG1haW5CdG4uaXNWaXNpYmxlICYmIHNlY29uZGFyeUJ0bi5pc1Zpc2libGUpIHsKICAgICAgICBpZiAoc2Vjb25kYXJ5QnRuLnBvc2l0aW9uID09ICd0b3AnKSB7CiAgICAgICAgICBkZWJ1Z0JvdHRvbUJhci5zdHlsZS5mbGV4RGlyZWN0aW9uID0gJ2NvbHVtbi1yZXZlcnNlJzsKICAgICAgICAgIGJvdHRvbUJhckhlaWdodCArPSA1MTsKICAgICAgICB9IGVsc2UgaWYgKHNlY29uZGFyeUJ0bi5wb3NpdGlvbiA9PSAnYm90dG9tJykgewogICAgICAgICAgZGVidWdCb3R0b21CYXIuc3R5bGUuZmxleERpcmVjdGlvbiA9ICdjb2x1bW4nOwogICAgICAgICAgYm90dG9tQmFySGVpZ2h0ICs9IDUxOwogICAgICAgIH0gZWxzZSBpZiAoc2Vjb25kYXJ5QnRuLnBvc2l0aW9uID09ICdsZWZ0JykgewogICAgICAgICAgZGVidWdCb3R0b21CYXIuc3R5bGUuZmxleERpcmVjdGlvbiA9ICdyb3ctcmV2ZXJzZSc7CiAgICAgICAgfSBlbHNlIGlmIChzZWNvbmRhcnlCdG4ucG9zaXRpb24gPT0gJ3JpZ2h0JykgewogICAgICAgICAgZGVidWdCb3R0b21CYXIuc3R5bGUuZmxleERpcmVjdGlvbiA9ICdyb3cnOwogICAgICAgIH0KICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgZGVidWdCb3R0b21CYXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgYm90dG9tQmFySGVpZ2h0ID0gMDsKICAgIH0KICAgIGRlYnVnQm90dG9tQmFyLnN0eWxlLmJhY2tncm91bmQgPSBnZXRCb3R0b21CYXJDb2xvcigpOwogICAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkgewogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucGFkZGluZ0JvdHRvbSA9IGJvdHRvbUJhckhlaWdodCArICdweCc7CiAgICB9CiAgICBzZXRWaWV3cG9ydEhlaWdodCgpOwogIH0KCgogIHZhciBCb3R0b21CdXR0b25Db25zdHJ1Y3RvciA9IGZ1bmN0aW9uKHR5cGUpIHsKICAgIHZhciBpc01haW5CdXR0b24gPSAodHlwZSA9PSAnbWFpbicpOwogICAgaWYgKGlzTWFpbkJ1dHRvbikgewogICAgICB2YXIgc2V0dXBGbk5hbWUgPSAnd2ViX2FwcF9zZXR1cF9tYWluX2J1dHRvbic7CiAgICAgIHZhciB0Z0V2ZW50TmFtZSA9ICdtYWluX2J1dHRvbl9wcmVzc2VkJzsKICAgICAgdmFyIHdlYlZpZXdFdmVudE5hbWUgPSAnbWFpbkJ1dHRvbkNsaWNrZWQnOwogICAgICB2YXIgYnV0dG9uVGV4dERlZmF1bHQgPSAnQ29udGludWUnOwogICAgICB2YXIgYnV0dG9uQ29sb3JEZWZhdWx0ID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRoZW1lUGFyYW1zLmJ1dHRvbl9jb2xvciB8fCAnIzI0ODFjYyc7IH07CiAgICAgIHZhciBidXR0b25UZXh0Q29sb3JEZWZhdWx0ID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRoZW1lUGFyYW1zLmJ1dHRvbl90ZXh0X2NvbG9yIHx8ICcjZmZmZmZmJzsgfTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBzZXR1cEZuTmFtZSA9ICd3ZWJfYXBwX3NldHVwX3NlY29uZGFyeV9idXR0b24nOwogICAgICB2YXIgdGdFdmVudE5hbWUgPSAnc2Vjb25kYXJ5X2J1dHRvbl9wcmVzc2VkJzsKICAgICAgdmFyIHdlYlZpZXdFdmVudE5hbWUgPSAnc2Vjb25kYXJ5QnV0dG9uQ2xpY2tlZCc7CiAgICAgIHZhciBidXR0b25UZXh0RGVmYXVsdCA9ICdDYW5jZWwnOwogICAgICB2YXIgYnV0dG9uQ29sb3JEZWZhdWx0ID0gZnVuY3Rpb24oKXsgcmV0dXJuIGdldEJvdHRvbUJhckNvbG9yKCk7IH07CiAgICAgIHZhciBidXR0b25UZXh0Q29sb3JEZWZhdWx0ID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRoZW1lUGFyYW1zLmJ1dHRvbl9jb2xvciB8fCAnIzI0ODFjYyc7IH07CiAgICB9CgogICAgdmFyIGlzVmlzaWJsZSA9IGZhbHNlOwogICAgdmFyIGlzQWN0aXZlID0gdHJ1ZTsKICAgIHZhciBoYXNTaGluZUVmZmVjdCA9IGZhbHNlOwogICAgdmFyIGlzUHJvZ3Jlc3NWaXNpYmxlID0gZmFsc2U7CiAgICB2YXIgaWNvbkN1c3RvbUVtb2ppSWQgPSBmYWxzZTsKICAgIHZhciBidXR0b25UeXBlID0gdHlwZTsKICAgIHZhciBidXR0b25UZXh0ID0gYnV0dG9uVGV4dERlZmF1bHQ7CiAgICB2YXIgYnV0dG9uQ29sb3IgPSBmYWxzZTsKICAgIHZhciBidXR0b25UZXh0Q29sb3IgPSBmYWxzZTsKICAgIHZhciBidXR0b25Qb3NpdGlvbiA9ICdsZWZ0JzsKCiAgICB2YXIgYm90dG9tQnV0dG9uID0ge307CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm90dG9tQnV0dG9uLCAndHlwZScsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gYnV0dG9uVHlwZTsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm90dG9tQnV0dG9uLCAnaWNvbkN1c3RvbUVtb2ppSWQnLCB7CiAgICAgIHNldDogZnVuY3Rpb24odmFsKXsgYm90dG9tQnV0dG9uLnNldFBhcmFtcyh7aWNvbl9jdXN0b21fZW1vamlfaWQ6IHZhbH0pOyB9LAogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpY29uQ3VzdG9tRW1vamlJZDsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm90dG9tQnV0dG9uLCAndGV4dCcsIHsKICAgICAgc2V0OiBmdW5jdGlvbih2YWwpeyBib3R0b21CdXR0b24uc2V0UGFyYW1zKHt0ZXh0OiB2YWx9KTsgfSwKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gYnV0dG9uVGV4dDsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm90dG9tQnV0dG9uLCAnY29sb3InLCB7CiAgICAgIHNldDogZnVuY3Rpb24odmFsKXsgYm90dG9tQnV0dG9uLnNldFBhcmFtcyh7Y29sb3I6IHZhbH0pOyB9LAogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBidXR0b25Db2xvciB8fCBidXR0b25Db2xvckRlZmF1bHQoKTsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm90dG9tQnV0dG9uLCAndGV4dENvbG9yJywgewogICAgICBzZXQ6IGZ1bmN0aW9uKHZhbCl7IGJvdHRvbUJ1dHRvbi5zZXRQYXJhbXMoe3RleHRfY29sb3I6IHZhbH0pOyB9LAogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBidXR0b25UZXh0Q29sb3IgfHwgYnV0dG9uVGV4dENvbG9yRGVmYXVsdCgpOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3R0b21CdXR0b24sICdpc1Zpc2libGUnLCB7CiAgICAgIHNldDogZnVuY3Rpb24odmFsKXsgYm90dG9tQnV0dG9uLnNldFBhcmFtcyh7aXNfdmlzaWJsZTogdmFsfSk7IH0sCiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzVmlzaWJsZTsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm90dG9tQnV0dG9uLCAnaXNQcm9ncmVzc1Zpc2libGUnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzUHJvZ3Jlc3NWaXNpYmxlOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3R0b21CdXR0b24sICdpc0FjdGl2ZScsIHsKICAgICAgc2V0OiBmdW5jdGlvbih2YWwpeyBib3R0b21CdXR0b24uc2V0UGFyYW1zKHtpc19hY3RpdmU6IHZhbH0pOyB9LAogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc0FjdGl2ZTsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm90dG9tQnV0dG9uLCAnaGFzU2hpbmVFZmZlY3QnLCB7CiAgICAgIHNldDogZnVuY3Rpb24odmFsKXsgYm90dG9tQnV0dG9uLnNldFBhcmFtcyh7aGFzX3NoaW5lX2VmZmVjdDogdmFsfSk7IH0sCiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGhhc1NoaW5lRWZmZWN0OyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIGlmICghaXNNYWluQnV0dG9uKSB7CiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3R0b21CdXR0b24sICdwb3NpdGlvbicsIHsKICAgICAgICBzZXQ6IGZ1bmN0aW9uKHZhbCl7IGJvdHRvbUJ1dHRvbi5zZXRQYXJhbXMoe3Bvc2l0aW9uOiB2YWx9KTsgfSwKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBidXR0b25Qb3NpdGlvbjsgfSwKICAgICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICAgIH0pOwogICAgfQoKICAgIHZhciBjdXJCdXR0b25TdGF0ZSA9IG51bGw7CgogICAgV2ViVmlldy5vbkV2ZW50KHRnRXZlbnROYW1lLCBvbkJvdHRvbUJ1dHRvblByZXNzZWQpOwoKICAgIHZhciBkZWJ1Z0J0biA9IG51bGw7CiAgICBpZiAoaW5pdFBhcmFtcy50Z1dlYkFwcERlYnVnKSB7CiAgICAgIGRlYnVnQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGctYm90dG9tLWJ1dHRvbicpOwogICAgICB2YXIgZGVidWdCdG5TdHlsZSA9IHsKICAgICAgICBkaXNwbGF5OiAnbm9uZScsCiAgICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgICBoZWlnaHQ6ICc0NHB4JywKICAgICAgICBib3JkZXJSYWRpdXM6ICcwJywKICAgICAgICBiYWNrZ3JvdW5kOiAnbm8tcmVwZWF0IHJpZ2h0IGNlbnRlcicsCiAgICAgICAgcGFkZGluZzogJzEzcHggMTVweCcsCiAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJywKICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JwogICAgICB9OwogICAgICBmb3IgKHZhciBrIGluIGRlYnVnQnRuU3R5bGUpIHsKICAgICAgICBkZWJ1Z0J0bi5zdHlsZVtrXSA9IGRlYnVnQnRuU3R5bGVba107CiAgICAgIH0KICAgICAgZGVidWdCb3R0b21CYXIuYXBwZW5kQ2hpbGQoZGVidWdCdG4pOwogICAgICBkZWJ1Z0J0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQm90dG9tQnV0dG9uUHJlc3NlZCwgZmFsc2UpOwogICAgICBkZWJ1Z0J0bi5fYm90dG9tQnV0dG9uID0gYm90dG9tQnV0dG9uOwogICAgICBkZWJ1Z0JvdHRvbUJhckJ0bnNbdHlwZV0gPSBkZWJ1Z0J0bjsKICAgIH0KCiAgICBmdW5jdGlvbiBvbkJvdHRvbUJ1dHRvblByZXNzZWQoKSB7CiAgICAgIGlmIChpc0FjdGl2ZSkgewogICAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQod2ViVmlld0V2ZW50TmFtZSk7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBidXR0b25QYXJhbXMoKSB7CiAgICAgIHZhciBjb2xvciA9IGJvdHRvbUJ1dHRvbi5jb2xvcjsKICAgICAgdmFyIHRleHRfY29sb3IgPSBib3R0b21CdXR0b24udGV4dENvbG9yOwogICAgICBpZiAoaXNWaXNpYmxlKSB7CiAgICAgICAgdmFyIHBhcmFtcyA9IHsKICAgICAgICAgIGlzX3Zpc2libGU6IHRydWUsCiAgICAgICAgICBpc19hY3RpdmU6IGlzQWN0aXZlLAogICAgICAgICAgaXNfcHJvZ3Jlc3NfdmlzaWJsZTogaXNQcm9ncmVzc1Zpc2libGUsCiAgICAgICAgICBpY29uX2N1c3RvbV9lbW9qaV9pZDogaWNvbkN1c3RvbUVtb2ppSWQsCiAgICAgICAgICB0ZXh0OiBidXR0b25UZXh0LAogICAgICAgICAgY29sb3I6IGNvbG9yLAogICAgICAgICAgdGV4dF9jb2xvcjogdGV4dF9jb2xvciwKICAgICAgICAgIGhhc19zaGluZV9lZmZlY3Q6IGhhc1NoaW5lRWZmZWN0ICYmIGlzQWN0aXZlICYmICFpc1Byb2dyZXNzVmlzaWJsZQogICAgICAgIH07CiAgICAgICAgaWYgKCFpc01haW5CdXR0b24pIHsKICAgICAgICAgIHBhcmFtcy5wb3NpdGlvbiA9IGJ1dHRvblBvc2l0aW9uOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgcGFyYW1zID0gewogICAgICAgICAgaXNfdmlzaWJsZTogZmFsc2UKICAgICAgICB9OwogICAgICB9CiAgICAgIHJldHVybiBwYXJhbXM7CiAgICB9CgogICAgZnVuY3Rpb24gYnV0dG9uU3RhdGUoYnRuX3BhcmFtcykgewogICAgICBpZiAodHlwZW9mIGJ0bl9wYXJhbXMgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgYnRuX3BhcmFtcyA9IGJ1dHRvblBhcmFtcygpOwogICAgICB9CiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShidG5fcGFyYW1zKTsKICAgIH0KCiAgICBmdW5jdGlvbiB1cGRhdGVCdXR0b24oKSB7CiAgICAgIHZhciBidG5fcGFyYW1zID0gYnV0dG9uUGFyYW1zKCk7CiAgICAgIHZhciBidG5fc3RhdGUgPSBidXR0b25TdGF0ZShidG5fcGFyYW1zKTsKICAgICAgaWYgKGN1ckJ1dHRvblN0YXRlID09PSBidG5fc3RhdGUpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgY3VyQnV0dG9uU3RhdGUgPSBidG5fc3RhdGU7CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KHNldHVwRm5OYW1lLCBmYWxzZSwgYnRuX3BhcmFtcyk7CiAgICAgIGlmIChpbml0UGFyYW1zLnRnV2ViQXBwRGVidWcpIHsKICAgICAgICB1cGRhdGVEZWJ1Z0J1dHRvbihidG5fcGFyYW1zKTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHVwZGF0ZURlYnVnQnV0dG9uKGJ0bl9wYXJhbXMpIHsKICAgICAgaWYgKGJ0bl9wYXJhbXMuaXNfdmlzaWJsZSkgewogICAgICAgIGRlYnVnQnRuLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoKICAgICAgICBkZWJ1Z0J0bi5zdHlsZS5vcGFjaXR5ID0gYnRuX3BhcmFtcy5pc19hY3RpdmUgPyAnMScgOiAnMC44JzsKICAgICAgICBkZWJ1Z0J0bi5zdHlsZS5jdXJzb3IgPSBidG5fcGFyYW1zLmlzX2FjdGl2ZSA/ICdwb2ludGVyJyA6ICdhdXRvJzsKICAgICAgICBkZWJ1Z0J0bi5kaXNhYmxlZCA9ICFidG5fcGFyYW1zLmlzX2FjdGl2ZTsKICAgICAgICBkZWJ1Z0J0bi5pbm5lclRleHQgPSBidG5fcGFyYW1zLnRleHQ7CiAgICAgICAgZGVidWdCdG4uY2xhc3NOYW1lID0gYnRuX3BhcmFtcy5oYXNfc2hpbmVfZWZmZWN0ID8gJ3NoaW5lJyA6ICcnOwogICAgICAgIGRlYnVnQnRuLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGJ0bl9wYXJhbXMuaXNfcHJvZ3Jlc3NfdmlzaWJsZSA/ICJ1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwiICsgZW5jb2RlVVJJQ29tcG9uZW50KCc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdwb3J0PSIwIDAgNDggNDgiIHdpZHRoPSI0OHB4IiBoZWlnaHQ9IjQ4cHgiPjxjaXJjbGUgY3g9IjUwJSIgY3k9IjUwJSIgc3Ryb2tlPSInICsgYnRuX3BhcmFtcy50ZXh0X2NvbG9yICsgJyIgc3Ryb2tlLXdpZHRoPSIyLjI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiIGZpbGw9Im5vbmUiIHN0cm9rZS1kYXNob2Zmc2V0PSIxMDYiIHI9IjkiIHN0cm9rZS1kYXNoYXJyYXk9IjU2LjUyIiByb3RhdGU9Ii05MCI+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiIGF0dHJpYnV0ZVR5cGU9IlhNTCIgZHVyPSIzNjBzIiBmcm9tPSIwIiB0bz0iMTI1MDAiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGU+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiBhdHRyaWJ1dGVUeXBlPSJYTUwiIHR5cGU9InJvdGF0ZSIgZHVyPSIxcyIgZnJvbT0iLTkwIDI0IDI0IiB0bz0iNjMwIDI0IDI0IiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvY2lyY2xlPjwvc3ZnPicpICsgIicpIiA6ICdub25lJzsKICAgICAgICBkZWJ1Z0J0bi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBidG5fcGFyYW1zLmNvbG9yOwogICAgICAgIGRlYnVnQnRuLnN0eWxlLmNvbG9yID0gYnRuX3BhcmFtcy50ZXh0X2NvbG9yOwogICAgICB9IGVsc2UgewogICAgICAgIGRlYnVnQnRuLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIH0KICAgICAgdXBkYXRlRGVidWdCb3R0b21CYXIoKTsKICAgIH0KCiAgICBmdW5jdGlvbiBzZXRQYXJhbXMocGFyYW1zKSB7CiAgICAgIGlmICh0eXBlb2YgcGFyYW1zLmljb25fY3VzdG9tX2Vtb2ppX2lkICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIHZhciBlbW9qaV9pZCA9IHBhcmFtcy5pY29uX2N1c3RvbV9lbW9qaV9pZDsKICAgICAgICBpZiAoZW1vamlfaWQgPT09IGZhbHNlIHx8IGVtb2ppX2lkID09PSBudWxsKSB7CiAgICAgICAgICBlbW9qaV9pZCA9ICcnOwogICAgICAgIH0KICAgICAgICBpZiAoZW1vamlfaWQgIT09ICcnICYmICEvXlswLTldezEwLDIwfSQvLnRlc3QoZW1vamlfaWQpKSB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCb3R0b20gYnV0dG9uIGljb24gY3VzdG9tIGVtb2ppIGlzIGludmFsaWQnLCBwYXJhbXMuaWNvbl9jdXN0b21fZW1vamlfaWQpOwogICAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJvdHRvbUJ1dHRvblBhcmFtSW52YWxpZCcpOwogICAgICAgIH0KICAgICAgICBpY29uQ3VzdG9tRW1vamlJZCA9IGVtb2ppX2lkOwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgcGFyYW1zLnRleHQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgdmFyIHRleHQgPSBzdHJUcmltKHBhcmFtcy50ZXh0KTsKICAgICAgICBpZiAoIXRleHQubGVuZ3RoICYmICFpY29uQ3VzdG9tRW1vamlJZCkgewogICAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQm90dG9tIGJ1dHRvbiB0ZXh0IGlzIHJlcXVpcmVkJywgcGFyYW1zLnRleHQpOwogICAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJvdHRvbUJ1dHRvblBhcmFtSW52YWxpZCcpOwogICAgICAgIH0KICAgICAgICBpZiAodGV4dC5sZW5ndGggPiA2NCkgewogICAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQm90dG9tIGJ1dHRvbiB0ZXh0IGlzIHRvbyBsb25nJywgdGV4dCk7CiAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQm90dG9tQnV0dG9uUGFyYW1JbnZhbGlkJyk7CiAgICAgICAgfQogICAgICAgIGJ1dHRvblRleHQgPSB0ZXh0OwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgcGFyYW1zLmNvbG9yICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIGlmIChwYXJhbXMuY29sb3IgPT09IGZhbHNlIHx8CiAgICAgICAgICAgIHBhcmFtcy5jb2xvciA9PT0gbnVsbCkgewogICAgICAgICAgYnV0dG9uQ29sb3IgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIGNvbG9yID0gcGFyc2VDb2xvclRvSGV4KHBhcmFtcy5jb2xvcik7CiAgICAgICAgICBpZiAoIWNvbG9yKSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEJvdHRvbSBidXR0b24gY29sb3IgZm9ybWF0IGlzIGludmFsaWQnLCBwYXJhbXMuY29sb3IpOwogICAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQm90dG9tQnV0dG9uUGFyYW1JbnZhbGlkJyk7CiAgICAgICAgICB9CiAgICAgICAgICBidXR0b25Db2xvciA9IGNvbG9yOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAodHlwZW9mIHBhcmFtcy50ZXh0X2NvbG9yICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIGlmIChwYXJhbXMudGV4dF9jb2xvciA9PT0gZmFsc2UgfHwKICAgICAgICAgICAgcGFyYW1zLnRleHRfY29sb3IgPT09IG51bGwpIHsKICAgICAgICAgIGJ1dHRvblRleHRDb2xvciA9IGZhbHNlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgdGV4dF9jb2xvciA9IHBhcnNlQ29sb3JUb0hleChwYXJhbXMudGV4dF9jb2xvcik7CiAgICAgICAgICBpZiAoIXRleHRfY29sb3IpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQm90dG9tIGJ1dHRvbiB0ZXh0IGNvbG9yIGZvcm1hdCBpcyBpbnZhbGlkJywgcGFyYW1zLnRleHRfY29sb3IpOwogICAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQm90dG9tQnV0dG9uUGFyYW1JbnZhbGlkJyk7CiAgICAgICAgICB9CiAgICAgICAgICBidXR0b25UZXh0Q29sb3IgPSB0ZXh0X2NvbG9yOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAodHlwZW9mIHBhcmFtcy5pc192aXNpYmxlICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIGlmIChwYXJhbXMuaXNfdmlzaWJsZSAmJgogICAgICAgICAgICAhYm90dG9tQnV0dG9uLnRleHQubGVuZ3RoKSB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCb3R0b20gYnV0dG9uIHRleHQgaXMgcmVxdWlyZWQnKTsKICAgICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCb3R0b21CdXR0b25QYXJhbUludmFsaWQnKTsKICAgICAgICB9CiAgICAgICAgaXNWaXNpYmxlID0gISFwYXJhbXMuaXNfdmlzaWJsZTsKICAgICAgfQogICAgICBpZiAodHlwZW9mIHBhcmFtcy5oYXNfc2hpbmVfZWZmZWN0ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIGhhc1NoaW5lRWZmZWN0ID0gISFwYXJhbXMuaGFzX3NoaW5lX2VmZmVjdDsKICAgICAgfQogICAgICBpZiAoIWlzTWFpbkJ1dHRvbiAmJiB0eXBlb2YgcGFyYW1zLnBvc2l0aW9uICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIGlmIChwYXJhbXMucG9zaXRpb24gIT0gJ2xlZnQnICYmIHBhcmFtcy5wb3NpdGlvbiAhPSAncmlnaHQnICYmCiAgICAgICAgICAgIHBhcmFtcy5wb3NpdGlvbiAhPSAndG9wJyAmJiBwYXJhbXMucG9zaXRpb24gIT0gJ2JvdHRvbScpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEJvdHRvbSBidXR0b24gcG9zaWl0aW9uIGlzIGludmFsaWQnLCBwYXJhbXMucG9zaXRpb24pOwogICAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJvdHRvbUJ1dHRvblBhcmFtSW52YWxpZCcpOwogICAgICAgIH0KICAgICAgICBidXR0b25Qb3NpdGlvbiA9IHBhcmFtcy5wb3NpdGlvbjsKICAgICAgfQogICAgICBpZiAodHlwZW9mIHBhcmFtcy5pc19hY3RpdmUgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgaXNBY3RpdmUgPSAhIXBhcmFtcy5pc19hY3RpdmU7CiAgICAgIH0KICAgICAgdXBkYXRlQnV0dG9uKCk7CiAgICAgIHJldHVybiBib3R0b21CdXR0b247CiAgICB9CgogICAgYm90dG9tQnV0dG9uLnNldFRleHQgPSBmdW5jdGlvbih0ZXh0KSB7CiAgICAgIHJldHVybiBib3R0b21CdXR0b24uc2V0UGFyYW1zKHt0ZXh0OiB0ZXh0fSk7CiAgICB9OwogICAgYm90dG9tQnV0dG9uLm9uQ2xpY2sgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBvbldlYlZpZXdFdmVudCh3ZWJWaWV3RXZlbnROYW1lLCBjYWxsYmFjayk7CiAgICAgIHJldHVybiBib3R0b21CdXR0b247CiAgICB9OwogICAgYm90dG9tQnV0dG9uLm9mZkNsaWNrID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgb2ZmV2ViVmlld0V2ZW50KHdlYlZpZXdFdmVudE5hbWUsIGNhbGxiYWNrKTsKICAgICAgcmV0dXJuIGJvdHRvbUJ1dHRvbjsKICAgIH07CiAgICBib3R0b21CdXR0b24uc2hvdyA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gYm90dG9tQnV0dG9uLnNldFBhcmFtcyh7aXNfdmlzaWJsZTogdHJ1ZX0pOwogICAgfTsKICAgIGJvdHRvbUJ1dHRvbi5oaWRlID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBib3R0b21CdXR0b24uc2V0UGFyYW1zKHtpc192aXNpYmxlOiBmYWxzZX0pOwogICAgfTsKICAgIGJvdHRvbUJ1dHRvbi5lbmFibGUgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIGJvdHRvbUJ1dHRvbi5zZXRQYXJhbXMoe2lzX2FjdGl2ZTogdHJ1ZX0pOwogICAgfTsKICAgIGJvdHRvbUJ1dHRvbi5kaXNhYmxlID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBib3R0b21CdXR0b24uc2V0UGFyYW1zKHtpc19hY3RpdmU6IGZhbHNlfSk7CiAgICB9OwogICAgYm90dG9tQnV0dG9uLnNob3dQcm9ncmVzcyA9IGZ1bmN0aW9uKGxlYXZlQWN0aXZlKSB7CiAgICAgIGlzQWN0aXZlID0gISFsZWF2ZUFjdGl2ZTsKICAgICAgaXNQcm9ncmVzc1Zpc2libGUgPSB0cnVlOwogICAgICB1cGRhdGVCdXR0b24oKTsKICAgICAgcmV0dXJuIGJvdHRvbUJ1dHRvbjsKICAgIH07CiAgICBib3R0b21CdXR0b24uaGlkZVByb2dyZXNzID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICghYm90dG9tQnV0dG9uLmlzQWN0aXZlKSB7CiAgICAgICAgaXNBY3RpdmUgPSB0cnVlOwogICAgICB9CiAgICAgIGlzUHJvZ3Jlc3NWaXNpYmxlID0gZmFsc2U7CiAgICAgIHVwZGF0ZUJ1dHRvbigpOwogICAgICByZXR1cm4gYm90dG9tQnV0dG9uOwogICAgfQogICAgYm90dG9tQnV0dG9uLnNldFBhcmFtcyA9IHNldFBhcmFtczsKICAgIHJldHVybiBib3R0b21CdXR0b247CiAgfTsKICB2YXIgTWFpbkJ1dHRvbiA9IEJvdHRvbUJ1dHRvbkNvbnN0cnVjdG9yKCdtYWluJyk7CiAgdmFyIFNlY29uZGFyeUJ1dHRvbiA9IEJvdHRvbUJ1dHRvbkNvbnN0cnVjdG9yKCdzZWNvbmRhcnknKTsKCiAgdmFyIFNldHRpbmdzQnV0dG9uID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIGlzVmlzaWJsZSA9IGZhbHNlOwoKICAgIHZhciBzZXR0aW5nc0J1dHRvbiA9IHt9OwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNldHRpbmdzQnV0dG9uLCAnaXNWaXNpYmxlJywgewogICAgICBzZXQ6IGZ1bmN0aW9uKHZhbCl7IHNldFBhcmFtcyh7aXNfdmlzaWJsZTogdmFsfSk7IH0sCiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzVmlzaWJsZTsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CgogICAgdmFyIGN1ckJ1dHRvblN0YXRlID0gbnVsbDsKCiAgICBXZWJWaWV3Lm9uRXZlbnQoJ3NldHRpbmdzX2J1dHRvbl9wcmVzc2VkJywgb25TZXR0aW5nc0J1dHRvblByZXNzZWQpOwoKICAgIGZ1bmN0aW9uIG9uU2V0dGluZ3NCdXR0b25QcmVzc2VkKCkgewogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdzZXR0aW5nc0J1dHRvbkNsaWNrZWQnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBidXR0b25QYXJhbXMoKSB7CiAgICAgIHJldHVybiB7aXNfdmlzaWJsZTogaXNWaXNpYmxlfTsKICAgIH0KCiAgICBmdW5jdGlvbiBidXR0b25TdGF0ZShidG5fcGFyYW1zKSB7CiAgICAgIGlmICh0eXBlb2YgYnRuX3BhcmFtcyA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBidG5fcGFyYW1zID0gYnV0dG9uUGFyYW1zKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJ0bl9wYXJhbXMpOwogICAgfQoKICAgIGZ1bmN0aW9uIGJ1dHRvbkNoZWNrVmVyc2lvbigpIHsKICAgICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi4xMCcpKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBTZXR0aW5nc0J1dHRvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBmdW5jdGlvbiB1cGRhdGVCdXR0b24oKSB7CiAgICAgIHZhciBidG5fcGFyYW1zID0gYnV0dG9uUGFyYW1zKCk7CiAgICAgIHZhciBidG5fc3RhdGUgPSBidXR0b25TdGF0ZShidG5fcGFyYW1zKTsKICAgICAgaWYgKGN1ckJ1dHRvblN0YXRlID09PSBidG5fc3RhdGUpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgY3VyQnV0dG9uU3RhdGUgPSBidG5fc3RhdGU7CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3NldHVwX3NldHRpbmdzX2J1dHRvbicsIGZhbHNlLCBidG5fcGFyYW1zKTsKICAgIH0KCiAgICBmdW5jdGlvbiBzZXRQYXJhbXMocGFyYW1zKSB7CiAgICAgIGlmICghYnV0dG9uQ2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gc2V0dGluZ3NCdXR0b247CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBwYXJhbXMuaXNfdmlzaWJsZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBpc1Zpc2libGUgPSAhIXBhcmFtcy5pc192aXNpYmxlOwogICAgICB9CiAgICAgIHVwZGF0ZUJ1dHRvbigpOwogICAgICByZXR1cm4gc2V0dGluZ3NCdXR0b247CiAgICB9CgogICAgc2V0dGluZ3NCdXR0b24ub25DbGljayA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIGlmIChidXR0b25DaGVja1ZlcnNpb24oKSkgewogICAgICAgIG9uV2ViVmlld0V2ZW50KCdzZXR0aW5nc0J1dHRvbkNsaWNrZWQnLCBjYWxsYmFjayk7CiAgICAgIH0KICAgICAgcmV0dXJuIHNldHRpbmdzQnV0dG9uOwogICAgfTsKICAgIHNldHRpbmdzQnV0dG9uLm9mZkNsaWNrID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgaWYgKGJ1dHRvbkNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgb2ZmV2ViVmlld0V2ZW50KCdzZXR0aW5nc0J1dHRvbkNsaWNrZWQnLCBjYWxsYmFjayk7CiAgICAgIH0KICAgICAgcmV0dXJuIHNldHRpbmdzQnV0dG9uOwogICAgfTsKICAgIHNldHRpbmdzQnV0dG9uLnNob3cgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHNldFBhcmFtcyh7aXNfdmlzaWJsZTogdHJ1ZX0pOwogICAgfTsKICAgIHNldHRpbmdzQnV0dG9uLmhpZGUgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHNldFBhcmFtcyh7aXNfdmlzaWJsZTogZmFsc2V9KTsKICAgIH07CiAgICByZXR1cm4gc2V0dGluZ3NCdXR0b247CiAgfSkoKTsKCiAgdmFyIEhhcHRpY0ZlZWRiYWNrID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIGhhcHRpY0ZlZWRiYWNrID0ge307CgogICAgZnVuY3Rpb24gdHJpZ2dlckZlZWRiYWNrKHBhcmFtcykgewogICAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjEnKSkgewogICAgICAgIGNvbnNvbGUud2FybignW1RlbGVncmFtLldlYkFwcF0gSGFwdGljRmVlZGJhY2sgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgICByZXR1cm4gaGFwdGljRmVlZGJhY2s7CiAgICAgIH0KICAgICAgaWYgKHBhcmFtcy50eXBlID09ICdpbXBhY3QnKSB7CiAgICAgICAgaWYgKHBhcmFtcy5pbXBhY3Rfc3R5bGUgIT0gJ2xpZ2h0JyAmJgogICAgICAgICAgICBwYXJhbXMuaW1wYWN0X3N0eWxlICE9ICdtZWRpdW0nICYmCiAgICAgICAgICAgIHBhcmFtcy5pbXBhY3Rfc3R5bGUgIT0gJ2hlYXZ5JyAmJgogICAgICAgICAgICBwYXJhbXMuaW1wYWN0X3N0eWxlICE9ICdyaWdpZCcgJiYKICAgICAgICAgICAgcGFyYW1zLmltcGFjdF9zdHlsZSAhPSAnc29mdCcpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEhhcHRpYyBpbXBhY3Qgc3R5bGUgaXMgaW52YWxpZCcsIHBhcmFtcy5pbXBhY3Rfc3R5bGUpOwogICAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEhhcHRpY0ltcGFjdFN0eWxlSW52YWxpZCcpOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChwYXJhbXMudHlwZSA9PSAnbm90aWZpY2F0aW9uJykgewogICAgICAgIGlmIChwYXJhbXMubm90aWZpY2F0aW9uX3R5cGUgIT0gJ2Vycm9yJyAmJgogICAgICAgICAgICBwYXJhbXMubm90aWZpY2F0aW9uX3R5cGUgIT0gJ3N1Y2Nlc3MnICYmCiAgICAgICAgICAgIHBhcmFtcy5ub3RpZmljYXRpb25fdHlwZSAhPSAnd2FybmluZycpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEhhcHRpYyBub3RpZmljYXRpb24gdHlwZSBpcyBpbnZhbGlkJywgcGFyYW1zLm5vdGlmaWNhdGlvbl90eXBlKTsKICAgICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBIYXB0aWNOb3RpZmljYXRpb25UeXBlSW52YWxpZCcpOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChwYXJhbXMudHlwZSA9PSAnc2VsZWN0aW9uX2NoYW5nZScpIHsKICAgICAgICAvLyBubyBwYXJhbXMgbmVlZGVkCiAgICAgIH0gZWxzZSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gSGFwdGljIGZlZWRiYWNrIHR5cGUgaXMgaW52YWxpZCcsIHBhcmFtcy50eXBlKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwSGFwdGljRmVlZGJhY2tUeXBlSW52YWxpZCcpOwogICAgICB9CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3RyaWdnZXJfaGFwdGljX2ZlZWRiYWNrJywgZmFsc2UsIHBhcmFtcyk7CiAgICAgIHJldHVybiBoYXB0aWNGZWVkYmFjazsKICAgIH0KCiAgICBoYXB0aWNGZWVkYmFjay5pbXBhY3RPY2N1cnJlZCA9IGZ1bmN0aW9uKHN0eWxlKSB7CiAgICAgIHJldHVybiB0cmlnZ2VyRmVlZGJhY2soe3R5cGU6ICdpbXBhY3QnLCBpbXBhY3Rfc3R5bGU6IHN0eWxlfSk7CiAgICB9OwogICAgaGFwdGljRmVlZGJhY2subm90aWZpY2F0aW9uT2NjdXJyZWQgPSBmdW5jdGlvbih0eXBlKSB7CiAgICAgIHJldHVybiB0cmlnZ2VyRmVlZGJhY2soe3R5cGU6ICdub3RpZmljYXRpb24nLCBub3RpZmljYXRpb25fdHlwZTogdHlwZX0pOwogICAgfTsKICAgIGhhcHRpY0ZlZWRiYWNrLnNlbGVjdGlvbkNoYW5nZWQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRyaWdnZXJGZWVkYmFjayh7dHlwZTogJ3NlbGVjdGlvbl9jaGFuZ2UnfSk7CiAgICB9OwogICAgcmV0dXJuIGhhcHRpY0ZlZWRiYWNrOwogIH0pKCk7CgogIHZhciBDbG91ZFN0b3JhZ2UgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgY2xvdWRTdG9yYWdlID0ge307CgogICAgZnVuY3Rpb24gaW52b2tlU3RvcmFnZU1ldGhvZChtZXRob2QsIHBhcmFtcywgY2FsbGJhY2spIHsKICAgICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi45JykpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBDbG91ZFN0b3JhZ2UgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwTWV0aG9kVW5zdXBwb3J0ZWQnKTsKICAgICAgfQogICAgICBpbnZva2VDdXN0b21NZXRob2QobWV0aG9kLCBwYXJhbXMsIGNhbGxiYWNrKTsKICAgICAgcmV0dXJuIGNsb3VkU3RvcmFnZTsKICAgIH0KCiAgICBjbG91ZFN0b3JhZ2Uuc2V0SXRlbSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBpbnZva2VTdG9yYWdlTWV0aG9kKCdzYXZlU3RvcmFnZVZhbHVlJywge2tleToga2V5LCB2YWx1ZTogdmFsdWV9LCBjYWxsYmFjayk7CiAgICB9OwogICAgY2xvdWRTdG9yYWdlLmdldEl0ZW0gPSBmdW5jdGlvbihrZXksIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBjbG91ZFN0b3JhZ2UuZ2V0SXRlbXMoW2tleV0sIGNhbGxiYWNrID8gZnVuY3Rpb24oZXJyLCByZXMpIHsKICAgICAgICBpZiAoZXJyKSBjYWxsYmFjayhlcnIpOwogICAgICAgIGVsc2UgY2FsbGJhY2sobnVsbCwgcmVzW2tleV0pOwogICAgICB9IDogbnVsbCk7CiAgICB9OwogICAgY2xvdWRTdG9yYWdlLmdldEl0ZW1zID0gZnVuY3Rpb24oa2V5cywgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGludm9rZVN0b3JhZ2VNZXRob2QoJ2dldFN0b3JhZ2VWYWx1ZXMnLCB7a2V5czoga2V5c30sIGNhbGxiYWNrKTsKICAgIH07CiAgICBjbG91ZFN0b3JhZ2UucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGNsb3VkU3RvcmFnZS5yZW1vdmVJdGVtcyhba2V5XSwgY2FsbGJhY2spOwogICAgfTsKICAgIGNsb3VkU3RvcmFnZS5yZW1vdmVJdGVtcyA9IGZ1bmN0aW9uKGtleXMsIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBpbnZva2VTdG9yYWdlTWV0aG9kKCdkZWxldGVTdG9yYWdlVmFsdWVzJywge2tleXM6IGtleXN9LCBjYWxsYmFjayk7CiAgICB9OwogICAgY2xvdWRTdG9yYWdlLmdldEtleXMgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICByZXR1cm4gaW52b2tlU3RvcmFnZU1ldGhvZCgnZ2V0U3RvcmFnZUtleXMnLCB7fSwgY2FsbGJhY2spOwogICAgfTsKICAgIHJldHVybiBjbG91ZFN0b3JhZ2U7CiAgfSkoKTsKCiAgdmFyIERldmljZVN0b3JhZ2UgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgZGV2aWNlU3RvcmFnZSA9IHt9OwoKICAgIFdlYlZpZXcub25FdmVudCgnZGV2aWNlX3N0b3JhZ2Vfa2V5X3NhdmVkJywgIG9uRGV2aWNlU3RvcmFnZUV2ZW50KTsKICAgIFdlYlZpZXcub25FdmVudCgnZGV2aWNlX3N0b3JhZ2Vfa2V5X3JlY2VpdmVkJywgb25EZXZpY2VTdG9yYWdlRXZlbnQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdkZXZpY2Vfc3RvcmFnZV9jbGVhcmVkJywgIG9uRGV2aWNlU3RvcmFnZUV2ZW50KTsKICAgIFdlYlZpZXcub25FdmVudCgnZGV2aWNlX3N0b3JhZ2VfZmFpbGVkJywgIG9uRGV2aWNlU3RvcmFnZUV2ZW50KTsKCiAgICBmdW5jdGlvbiBvbkRldmljZVN0b3JhZ2VFdmVudChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICBpZiAoZXZlbnREYXRhLnJlcV9pZCAmJiB3ZWJBcHBDYWxsYmFja3NbZXZlbnREYXRhLnJlcV9pZF0pIHsKICAgICAgICB2YXIgcmVxdWVzdERhdGEgPSB3ZWJBcHBDYWxsYmFja3NbZXZlbnREYXRhLnJlcV9pZF07CiAgICAgICAgZGVsZXRlIHdlYkFwcENhbGxiYWNrc1tldmVudERhdGEucmVxX2lkXTsKICAgICAgICB2YXIgcmVzID0gbnVsbCwgZXJyID0gbnVsbDsKICAgICAgICBpZiAoZXZlbnRUeXBlID09ICdkZXZpY2Vfc3RvcmFnZV9mYWlsZWQnKSB7CiAgICAgICAgICBlcnIgPSBldmVudERhdGEuZXJyb3IgfHwgJ1VOS05PV05fRVJST1InOwogICAgICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09ICdkZXZpY2Vfc3RvcmFnZV9rZXlfcmVjZWl2ZWQnKSB7CiAgICAgICAgICByZXMgPSBldmVudERhdGEudmFsdWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJlcyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgICAgcmVxdWVzdERhdGEuY2FsbGJhY2soZXJyLCByZXMpOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGludm9rZVN0b3JhZ2VNZXRob2QobWV0aG9kLCBwYXJhbXMsIGNhbGxiYWNrKSB7CiAgICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzkuMCcpKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gRGV2aWNlU3RvcmFnZSBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgICB9CiAgICAgIHZhciByZXFfaWQgPSBnZW5lcmF0ZUNhbGxiYWNrSWQoMTYpOwogICAgICB2YXIgcmVxX3BhcmFtcyA9IHtyZXFfaWQ6IHJlcV9pZH07CiAgICAgIGZvciAodmFyIGsgaW4gcGFyYW1zKSB7CiAgICAgICAgcmVxX3BhcmFtc1trXSA9IHBhcmFtc1trXTsKICAgICAgfQogICAgICB3ZWJBcHBDYWxsYmFja3NbcmVxX2lkXSA9IHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfTsKICAgICAgV2ViVmlldy5wb3N0RXZlbnQobWV0aG9kLCBmYWxzZSwgcmVxX3BhcmFtcyk7CiAgICAgIHJldHVybiBkZXZpY2VTdG9yYWdlOwogICAgfQoKICAgIGRldmljZVN0b3JhZ2Uuc2V0SXRlbSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBpbnZva2VTdG9yYWdlTWV0aG9kKCd3ZWJfYXBwX2RldmljZV9zdG9yYWdlX3NhdmVfa2V5Jywge2tleToga2V5LCB2YWx1ZTogdmFsdWV9LCBjYWxsYmFjayk7CiAgICB9OwogICAgZGV2aWNlU3RvcmFnZS5nZXRJdGVtID0gZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykgewogICAgICByZXR1cm4gaW52b2tlU3RvcmFnZU1ldGhvZCgnd2ViX2FwcF9kZXZpY2Vfc3RvcmFnZV9nZXRfa2V5Jywge2tleToga2V5fSwgY2FsbGJhY2spOwogICAgfTsKICAgIGRldmljZVN0b3JhZ2UucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGludm9rZVN0b3JhZ2VNZXRob2QoJ3dlYl9hcHBfZGV2aWNlX3N0b3JhZ2Vfc2F2ZV9rZXknLCB7a2V5OiBrZXksIHZhbHVlOiBudWxsfSwgY2FsbGJhY2spOwogICAgfTsKICAgIGRldmljZVN0b3JhZ2UuY2xlYXIgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICByZXR1cm4gaW52b2tlU3RvcmFnZU1ldGhvZCgnd2ViX2FwcF9kZXZpY2Vfc3RvcmFnZV9jbGVhcicsIHt9LCBjYWxsYmFjayk7CiAgICB9OwogICAgcmV0dXJuIGRldmljZVN0b3JhZ2U7CiAgfSkoKTsKCiAgdmFyIFNlY3VyZVN0b3JhZ2UgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgc2VjdXJlU3RvcmFnZSA9IHt9OwoKICAgIFdlYlZpZXcub25FdmVudCgnc2VjdXJlX3N0b3JhZ2Vfa2V5X3NhdmVkJywgIG9uU2VjdXJlU3RvcmFnZUV2ZW50KTsKICAgIFdlYlZpZXcub25FdmVudCgnc2VjdXJlX3N0b3JhZ2Vfa2V5X3JlY2VpdmVkJywgb25TZWN1cmVTdG9yYWdlRXZlbnQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdzZWN1cmVfc3RvcmFnZV9rZXlfcmVzdG9yZWQnLCBvblNlY3VyZVN0b3JhZ2VFdmVudCk7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ3NlY3VyZV9zdG9yYWdlX2NsZWFyZWQnLCAgb25TZWN1cmVTdG9yYWdlRXZlbnQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdzZWN1cmVfc3RvcmFnZV9mYWlsZWQnLCAgb25TZWN1cmVTdG9yYWdlRXZlbnQpOwoKICAgIGZ1bmN0aW9uIG9uU2VjdXJlU3RvcmFnZUV2ZW50KGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIGlmIChldmVudERhdGEucmVxX2lkICYmIHdlYkFwcENhbGxiYWNrc1tldmVudERhdGEucmVxX2lkXSkgewogICAgICAgIHZhciByZXF1ZXN0RGF0YSA9IHdlYkFwcENhbGxiYWNrc1tldmVudERhdGEucmVxX2lkXTsKICAgICAgICBkZWxldGUgd2ViQXBwQ2FsbGJhY2tzW2V2ZW50RGF0YS5yZXFfaWRdOwogICAgICAgIHZhciByZXMgPSBudWxsLCBlcnIgPSBudWxsLCBjYW5fcmVzdG9yZSA9IG51bGw7CiAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSAnc2VjdXJlX3N0b3JhZ2VfZmFpbGVkJykgewogICAgICAgICAgZXJyID0gZXZlbnREYXRhLmVycm9yIHx8ICdVTktOT1dOX0VSUk9SJzsKICAgICAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAnc2VjdXJlX3N0b3JhZ2Vfa2V5X3JlY2VpdmVkJykgewogICAgICAgICAgcmVzID0gZXZlbnREYXRhLnZhbHVlOwogICAgICAgICAgaWYgKGV2ZW50RGF0YS5jYW5fcmVzdG9yZSkgewogICAgICAgICAgICBjYW5fcmVzdG9yZSA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gJ3NlY3VyZV9zdG9yYWdlX2tleV9yZXN0b3JlZCcpIHsKICAgICAgICAgIHJlcyA9IGV2ZW50RGF0YS52YWx1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKHJlcXVlc3REYXRhLmNhbGxiYWNrKSB7CiAgICAgICAgICByZXF1ZXN0RGF0YS5jYWxsYmFjayhlcnIsIHJlcywgY2FuX3Jlc3RvcmUpOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGludm9rZVN0b3JhZ2VNZXRob2QobWV0aG9kLCBwYXJhbXMsIGNhbGxiYWNrKSB7CiAgICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzkuMCcpKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gU2VjdXJlU3RvcmFnZSBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgICB9CiAgICAgIHZhciByZXFfaWQgPSBnZW5lcmF0ZUNhbGxiYWNrSWQoMTYpOwogICAgICB2YXIgcmVxX3BhcmFtcyA9IHtyZXFfaWQ6IHJlcV9pZH07CiAgICAgIGZvciAodmFyIGsgaW4gcGFyYW1zKSB7CiAgICAgICAgcmVxX3BhcmFtc1trXSA9IHBhcmFtc1trXTsKICAgICAgfQogICAgICB3ZWJBcHBDYWxsYmFja3NbcmVxX2lkXSA9IHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfTsKICAgICAgV2ViVmlldy5wb3N0RXZlbnQobWV0aG9kLCBmYWxzZSwgcmVxX3BhcmFtcyk7CiAgICAgIHJldHVybiBzZWN1cmVTdG9yYWdlOwogICAgfQoKICAgIHNlY3VyZVN0b3JhZ2Uuc2V0SXRlbSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBpbnZva2VTdG9yYWdlTWV0aG9kKCd3ZWJfYXBwX3NlY3VyZV9zdG9yYWdlX3NhdmVfa2V5Jywge2tleToga2V5LCB2YWx1ZTogdmFsdWV9LCBjYWxsYmFjayk7CiAgICB9OwogICAgc2VjdXJlU3RvcmFnZS5nZXRJdGVtID0gZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykgewogICAgICByZXR1cm4gaW52b2tlU3RvcmFnZU1ldGhvZCgnd2ViX2FwcF9zZWN1cmVfc3RvcmFnZV9nZXRfa2V5Jywge2tleToga2V5fSwgY2FsbGJhY2spOwogICAgfTsKICAgIHNlY3VyZVN0b3JhZ2UucmVzdG9yZUl0ZW0gPSBmdW5jdGlvbihrZXksIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBpbnZva2VTdG9yYWdlTWV0aG9kKCd3ZWJfYXBwX3NlY3VyZV9zdG9yYWdlX3Jlc3RvcmVfa2V5Jywge2tleToga2V5fSwgY2FsbGJhY2spOwogICAgfTsKICAgIHNlY3VyZVN0b3JhZ2UucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGludm9rZVN0b3JhZ2VNZXRob2QoJ3dlYl9hcHBfc2VjdXJlX3N0b3JhZ2Vfc2F2ZV9rZXknLCB7a2V5OiBrZXksIHZhbHVlOiBudWxsfSwgY2FsbGJhY2spOwogICAgfTsKICAgIHNlY3VyZVN0b3JhZ2UuY2xlYXIgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICByZXR1cm4gaW52b2tlU3RvcmFnZU1ldGhvZCgnd2ViX2FwcF9zZWN1cmVfc3RvcmFnZV9jbGVhcicsIHt9LCBjYWxsYmFjayk7CiAgICB9OwogICAgcmV0dXJuIHNlY3VyZVN0b3JhZ2U7CiAgfSkoKTsKCiAgdmFyIEJpb21ldHJpY01hbmFnZXIgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgaXNJbml0ZWQgPSBmYWxzZTsKICAgIHZhciBpc0Jpb21ldHJpY0F2YWlsYWJsZSA9IGZhbHNlOwogICAgdmFyIGJpb21ldHJpY1R5cGUgPSAndW5rbm93bic7CiAgICB2YXIgaXNBY2Nlc3NSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgIHZhciBpc0FjY2Vzc0dyYW50ZWQgPSBmYWxzZTsKICAgIHZhciBpc0Jpb21ldHJpY1Rva2VuU2F2ZWQgPSBmYWxzZTsKICAgIHZhciBkZXZpY2VJZCA9ICcnOwoKICAgIHZhciBiaW9tZXRyaWNNYW5hZ2VyID0ge307CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYmlvbWV0cmljTWFuYWdlciwgJ2lzSW5pdGVkJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc0luaXRlZDsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYmlvbWV0cmljTWFuYWdlciwgJ2lzQmlvbWV0cmljQXZhaWxhYmxlJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc0luaXRlZCAmJiBpc0Jpb21ldHJpY0F2YWlsYWJsZTsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYmlvbWV0cmljTWFuYWdlciwgJ2Jpb21ldHJpY1R5cGUnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGJpb21ldHJpY1R5cGUgfHwgJ3Vua25vd24nOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiaW9tZXRyaWNNYW5hZ2VyLCAnaXNBY2Nlc3NSZXF1ZXN0ZWQnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzQWNjZXNzUmVxdWVzdGVkOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiaW9tZXRyaWNNYW5hZ2VyLCAnaXNBY2Nlc3NHcmFudGVkJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc0FjY2Vzc1JlcXVlc3RlZCAmJiBpc0FjY2Vzc0dyYW50ZWQ7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJpb21ldHJpY01hbmFnZXIsICdpc0Jpb21ldHJpY1Rva2VuU2F2ZWQnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzQmlvbWV0cmljVG9rZW5TYXZlZDsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYmlvbWV0cmljTWFuYWdlciwgJ2RldmljZUlkJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBkZXZpY2VJZCB8fCAnJzsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CgogICAgdmFyIGluaXRSZXF1ZXN0U3RhdGUgPSB7Y2FsbGJhY2tzOiBbXX07CiAgICB2YXIgYWNjZXNzUmVxdWVzdFN0YXRlID0gZmFsc2U7CiAgICB2YXIgYXV0aFJlcXVlc3RTdGF0ZSA9IGZhbHNlOwogICAgdmFyIHRva2VuUmVxdWVzdFN0YXRlID0gZmFsc2U7CgogICAgV2ViVmlldy5vbkV2ZW50KCdiaW9tZXRyeV9pbmZvX3JlY2VpdmVkJywgIG9uQmlvbWV0cnlJbmZvUmVjZWl2ZWQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdiaW9tZXRyeV9hdXRoX3JlcXVlc3RlZCcsIG9uQmlvbWV0cnlBdXRoUmVxdWVzdGVkKTsKICAgIFdlYlZpZXcub25FdmVudCgnYmlvbWV0cnlfdG9rZW5fdXBkYXRlZCcsICBvbkJpb21ldHJ5VG9rZW5VcGRhdGVkKTsKCiAgICBmdW5jdGlvbiBvbkJpb21ldHJ5SW5mb1JlY2VpdmVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIGlzSW5pdGVkID0gdHJ1ZTsKICAgICAgaWYgKGV2ZW50RGF0YS5hdmFpbGFibGUpIHsKICAgICAgICBpc0Jpb21ldHJpY0F2YWlsYWJsZSA9IHRydWU7CiAgICAgICAgYmlvbWV0cmljVHlwZSA9IGV2ZW50RGF0YS50eXBlIHx8ICd1bmtub3duJzsKICAgICAgICBpZiAoZXZlbnREYXRhLmFjY2Vzc19yZXF1ZXN0ZWQpIHsKICAgICAgICAgIGlzQWNjZXNzUmVxdWVzdGVkID0gdHJ1ZTsKICAgICAgICAgIGlzQWNjZXNzR3JhbnRlZCA9ICEhZXZlbnREYXRhLmFjY2Vzc19ncmFudGVkOwogICAgICAgICAgaXNCaW9tZXRyaWNUb2tlblNhdmVkID0gISFldmVudERhdGEudG9rZW5fc2F2ZWQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlzQWNjZXNzUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgICAgICBpc0FjY2Vzc0dyYW50ZWQgPSBmYWxzZTsKICAgICAgICAgIGlzQmlvbWV0cmljVG9rZW5TYXZlZCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBpc0Jpb21ldHJpY0F2YWlsYWJsZSA9IGZhbHNlOwogICAgICAgIGJpb21ldHJpY1R5cGUgPSAndW5rbm93bic7CiAgICAgICAgaXNBY2Nlc3NSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICAgICBpc0FjY2Vzc0dyYW50ZWQgPSBmYWxzZTsKICAgICAgICBpc0Jpb21ldHJpY1Rva2VuU2F2ZWQgPSBmYWxzZTsKICAgICAgfQogICAgICBkZXZpY2VJZCA9IGV2ZW50RGF0YS5kZXZpY2VfaWQgfHwgJyc7CgogICAgICBpZiAoaW5pdFJlcXVlc3RTdGF0ZS5jYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdFJlcXVlc3RTdGF0ZS5jYWxsYmFja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBjYWxsYmFjayA9IGluaXRSZXF1ZXN0U3RhdGUuY2FsbGJhY2tzW2ldOwogICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICB9CiAgICAgICAgaW5pdFJlcXVlc3RTdGF0ZS5jYWxsYmFja3MgPSBbXTsKICAgICAgfQogICAgICBpZiAoYWNjZXNzUmVxdWVzdFN0YXRlKSB7CiAgICAgICAgdmFyIHN0YXRlID0gYWNjZXNzUmVxdWVzdFN0YXRlOwogICAgICAgIGFjY2Vzc1JlcXVlc3RTdGF0ZSA9IGZhbHNlOwogICAgICAgIGlmIChzdGF0ZS5jYWxsYmFjaykgewogICAgICAgICAgc3RhdGUuY2FsbGJhY2soaXNBY2Nlc3NHcmFudGVkKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnYmlvbWV0cmljTWFuYWdlclVwZGF0ZWQnKTsKICAgIH0KICAgIGZ1bmN0aW9uIG9uQmlvbWV0cnlBdXRoUmVxdWVzdGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIHZhciBpc0F1dGhlbnRpY2F0ZWQgPSAoZXZlbnREYXRhLnN0YXR1cyA9PSAnYXV0aG9yaXplZCcpLAogICAgICAgICAgYmlvbWV0cmljVG9rZW4gPSBldmVudERhdGEudG9rZW4gfHwgJyc7CiAgICAgIGlmIChhdXRoUmVxdWVzdFN0YXRlKSB7CiAgICAgICAgdmFyIHN0YXRlID0gYXV0aFJlcXVlc3RTdGF0ZTsKICAgICAgICBhdXRoUmVxdWVzdFN0YXRlID0gZmFsc2U7CiAgICAgICAgaWYgKHN0YXRlLmNhbGxiYWNrKSB7CiAgICAgICAgICBzdGF0ZS5jYWxsYmFjayhpc0F1dGhlbnRpY2F0ZWQsIGlzQXV0aGVudGljYXRlZCA/IGJpb21ldHJpY1Rva2VuIDogbnVsbCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2Jpb21ldHJpY0F1dGhSZXF1ZXN0ZWQnLCBpc0F1dGhlbnRpY2F0ZWQgPyB7CiAgICAgICAgaXNBdXRoZW50aWNhdGVkOiB0cnVlLAogICAgICAgIGJpb21ldHJpY1Rva2VuOiBiaW9tZXRyaWNUb2tlbgogICAgICB9IDogewogICAgICAgIGlzQXV0aGVudGljYXRlZDogZmFsc2UKICAgICAgfSk7CiAgICB9CiAgICBmdW5jdGlvbiBvbkJpb21ldHJ5VG9rZW5VcGRhdGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIHZhciBhcHBsaWVkID0gZmFsc2U7CiAgICAgIGlmIChpc0Jpb21ldHJpY0F2YWlsYWJsZSAmJgogICAgICAgICAgaXNBY2Nlc3NSZXF1ZXN0ZWQpIHsKICAgICAgICBpZiAoZXZlbnREYXRhLnN0YXR1cyA9PSAndXBkYXRlZCcpIHsKICAgICAgICAgIGlzQmlvbWV0cmljVG9rZW5TYXZlZCA9IHRydWU7CiAgICAgICAgICBhcHBsaWVkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZXZlbnREYXRhLnN0YXR1cyA9PSAncmVtb3ZlZCcpIHsKICAgICAgICAgIGlzQmlvbWV0cmljVG9rZW5TYXZlZCA9IGZhbHNlOwogICAgICAgICAgYXBwbGllZCA9IHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICh0b2tlblJlcXVlc3RTdGF0ZSkgewogICAgICAgIHZhciBzdGF0ZSA9IHRva2VuUmVxdWVzdFN0YXRlOwogICAgICAgIHRva2VuUmVxdWVzdFN0YXRlID0gZmFsc2U7CiAgICAgICAgaWYgKHN0YXRlLmNhbGxiYWNrKSB7CiAgICAgICAgICBzdGF0ZS5jYWxsYmFjayhhcHBsaWVkKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnYmlvbWV0cmljVG9rZW5VcGRhdGVkJywgewogICAgICAgIGlzVXBkYXRlZDogYXBwbGllZAogICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBjaGVja1ZlcnNpb24oKSB7CiAgICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzcuMicpKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBCaW9tZXRyaWNNYW5hZ2VyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGZ1bmN0aW9uIGNoZWNrSW5pdCgpIHsKICAgICAgaWYgKCFpc0luaXRlZCkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEJpb21ldHJpY01hbmFnZXIgc2hvdWxkIGJlIGluaXRlZCBiZWZvcmUgdXNpbmcuJyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJpb21ldHJpY01hbmFnZXJOb3RJbml0ZWQnKTsKICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBiaW9tZXRyaWNNYW5hZ2VyLmluaXQgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBpZiAoIWNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgICAgIH0KICAgICAgaWYgKGlzSW5pdGVkKSB7CiAgICAgICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgICAgIH0KICAgICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgICAgaW5pdFJlcXVlc3RTdGF0ZS5jYWxsYmFja3MucHVzaChjYWxsYmFjayk7CiAgICAgIH0KICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfYmlvbWV0cnlfZ2V0X2luZm8nLCBmYWxzZSk7CiAgICAgIHJldHVybiBiaW9tZXRyaWNNYW5hZ2VyOwogICAgfTsKICAgIGJpb21ldHJpY01hbmFnZXIucmVxdWVzdEFjY2VzcyA9IGZ1bmN0aW9uKHBhcmFtcywgY2FsbGJhY2spIHsKICAgICAgaWYgKCFjaGVja1ZlcnNpb24oKSkgewogICAgICAgIHJldHVybiBiaW9tZXRyaWNNYW5hZ2VyOwogICAgICB9CiAgICAgIGNoZWNrSW5pdCgpOwogICAgICBpZiAoIWlzQmlvbWV0cmljQXZhaWxhYmxlKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQmlvbWV0cmljcyBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgZGV2aWNlLicpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNNYW5hZ2VyQmlvbWV0cmljc05vdEF2YWlsYWJsZScpOwogICAgICB9CiAgICAgIGlmIChhY2Nlc3NSZXF1ZXN0U3RhdGUpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBBY2Nlc3MgaXMgYWxyZWFkeSByZXF1ZXN0ZWQnKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQmlvbWV0cmljTWFuYWdlckFjY2Vzc1JlcXVlc3RlZCcpOwogICAgICB9CiAgICAgIHZhciBwb3B1cF9wYXJhbXMgPSB7fTsKICAgICAgaWYgKHR5cGVvZiBwYXJhbXMucmVhc29uICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIHZhciByZWFzb24gPSBzdHJUcmltKHBhcmFtcy5yZWFzb24pOwogICAgICAgIGlmIChyZWFzb24ubGVuZ3RoID4gMTI4KSB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCaW9tZXRyaWMgcmVhc29uIGlzIHRvbyBsb25nJywgcmVhc29uKTsKICAgICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNSZXF1ZXN0QWNjZXNzUGFyYW1JbnZhbGlkJyk7CiAgICAgICAgfQogICAgICAgIGlmIChyZWFzb24ubGVuZ3RoID4gMCkgewogICAgICAgICAgcG9wdXBfcGFyYW1zLnJlYXNvbiA9IHJlYXNvbjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGFjY2Vzc1JlcXVlc3RTdGF0ZSA9IHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfTsKICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfYmlvbWV0cnlfcmVxdWVzdF9hY2Nlc3MnLCBmYWxzZSwgcG9wdXBfcGFyYW1zKTsKICAgICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgICB9OwogICAgYmlvbWV0cmljTWFuYWdlci5hdXRoZW50aWNhdGUgPSBmdW5jdGlvbihwYXJhbXMsIGNhbGxiYWNrKSB7CiAgICAgIGlmICghY2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gYmlvbWV0cmljTWFuYWdlcjsKICAgICAgfQogICAgICBjaGVja0luaXQoKTsKICAgICAgaWYgKCFpc0Jpb21ldHJpY0F2YWlsYWJsZSkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEJpb21ldHJpY3MgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGRldmljZS4nKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQmlvbWV0cmljTWFuYWdlckJpb21ldHJpY3NOb3RBdmFpbGFibGUnKTsKICAgICAgfQogICAgICBpZiAoIWlzQWNjZXNzR3JhbnRlZCkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEJpb21ldHJpYyBhY2Nlc3Mgd2FzIG5vdCBncmFudGVkIGJ5IHRoZSB1c2VyLicpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNNYW5hZ2VyQmlvbWV0cmljQWNjZXNzTm90R3JhbnRlZCcpOwogICAgICB9CiAgICAgIGlmIChhdXRoUmVxdWVzdFN0YXRlKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQXV0aGVudGljYXRpb24gcmVxdWVzdCBpcyBhbHJlYWR5IGluIHByb2dyZXNzLicpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNNYW5hZ2VyQXV0aGVudGljYXRpb25SZXF1ZXN0ZWQnKTsKICAgICAgfQogICAgICB2YXIgcG9wdXBfcGFyYW1zID0ge307CiAgICAgIGlmICh0eXBlb2YgcGFyYW1zLnJlYXNvbiAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICB2YXIgcmVhc29uID0gc3RyVHJpbShwYXJhbXMucmVhc29uKTsKICAgICAgICBpZiAocmVhc29uLmxlbmd0aCA+IDEyOCkgewogICAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQmlvbWV0cmljIHJlYXNvbiBpcyB0b28gbG9uZycsIHJlYXNvbik7CiAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQmlvbWV0cmljUmVxdWVzdEFjY2Vzc1BhcmFtSW52YWxpZCcpOwogICAgICAgIH0KICAgICAgICBpZiAocmVhc29uLmxlbmd0aCA+IDApIHsKICAgICAgICAgIHBvcHVwX3BhcmFtcy5yZWFzb24gPSByZWFzb247CiAgICAgICAgfQogICAgICB9CgogICAgICBhdXRoUmVxdWVzdFN0YXRlID0gewogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9OwogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9iaW9tZXRyeV9yZXF1ZXN0X2F1dGgnLCBmYWxzZSwgcG9wdXBfcGFyYW1zKTsKICAgICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgICB9OwogICAgYmlvbWV0cmljTWFuYWdlci51cGRhdGVCaW9tZXRyaWNUb2tlbiA9IGZ1bmN0aW9uKHRva2VuLCBjYWxsYmFjaykgewogICAgICBpZiAoIWNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgICAgIH0KICAgICAgdG9rZW4gPSB0b2tlbiB8fCAnJzsKICAgICAgaWYgKHRva2VuLmxlbmd0aCA+IDEwMjQpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBUb2tlbiBpcyB0b28gbG9uZycsIHRva2VuKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQmlvbWV0cmljTWFuYWdlclRva2VuSW52YWxpZCcpOwogICAgICB9CiAgICAgIGNoZWNrSW5pdCgpOwogICAgICBpZiAoIWlzQmlvbWV0cmljQXZhaWxhYmxlKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQmlvbWV0cmljcyBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgZGV2aWNlLicpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNNYW5hZ2VyQmlvbWV0cmljc05vdEF2YWlsYWJsZScpOwogICAgICB9CiAgICAgIGlmICghaXNBY2Nlc3NHcmFudGVkKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQmlvbWV0cmljIGFjY2VzcyB3YXMgbm90IGdyYW50ZWQgYnkgdGhlIHVzZXIuJyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJpb21ldHJpY01hbmFnZXJCaW9tZXRyaWNBY2Nlc3NOb3RHcmFudGVkJyk7CiAgICAgIH0KICAgICAgaWYgKHRva2VuUmVxdWVzdFN0YXRlKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gVG9rZW4gcmVxdWVzdCBpcyBhbHJlYWR5IGluIHByb2dyZXNzLicpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNNYW5hZ2VyVG9rZW5VcGRhdGVSZXF1ZXN0ZWQnKTsKICAgICAgfQogICAgICB0b2tlblJlcXVlc3RTdGF0ZSA9IHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfTsKICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfYmlvbWV0cnlfdXBkYXRlX3Rva2VuJywgZmFsc2UsIHt0b2tlbjogdG9rZW59KTsKICAgICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgICB9OwogICAgYmlvbWV0cmljTWFuYWdlci5vcGVuU2V0dGluZ3MgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKCFjaGVja1ZlcnNpb24oKSkgewogICAgICAgIHJldHVybiBiaW9tZXRyaWNNYW5hZ2VyOwogICAgICB9CiAgICAgIGNoZWNrSW5pdCgpOwogICAgICBpZiAoIWlzQmlvbWV0cmljQXZhaWxhYmxlKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQmlvbWV0cmljcyBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgZGV2aWNlLicpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNNYW5hZ2VyQmlvbWV0cmljc05vdEF2YWlsYWJsZScpOwogICAgICB9CiAgICAgIGlmICghaXNBY2Nlc3NSZXF1ZXN0ZWQpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCaW9tZXRyaWMgYWNjZXNzIHdhcyBub3QgcmVxdWVzdGVkIHlldC4nKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQmlvbWV0cmljTWFuYWdlckJpb21ldHJpY3NBY2Nlc3NOb3RSZXF1ZXN0ZWQnKTsKICAgICAgfQogICAgICBpZiAoaXNBY2Nlc3NHcmFudGVkKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBCaW9tZXRyaWMgYWNjZXNzIHdhcyBncmFudGVkIGJ5IHRoZSB1c2VyLCBubyBuZWVkIHRvIGdvIHRvIHNldHRpbmdzLicpOwogICAgICAgIHJldHVybiBiaW9tZXRyaWNNYW5hZ2VyOwogICAgICB9CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX2Jpb21ldHJ5X29wZW5fc2V0dGluZ3MnLCBmYWxzZSk7CiAgICAgIHJldHVybiBiaW9tZXRyaWNNYW5hZ2VyOwogICAgfTsKICAgIHJldHVybiBiaW9tZXRyaWNNYW5hZ2VyOwogIH0pKCk7CgogIHZhciBMb2NhdGlvbk1hbmFnZXIgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgaXNJbml0ZWQgPSBmYWxzZTsKICAgIHZhciBpc0xvY2F0aW9uQXZhaWxhYmxlID0gZmFsc2U7CiAgICB2YXIgaXNBY2Nlc3NSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgIHZhciBpc0FjY2Vzc0dyYW50ZWQgPSBmYWxzZTsKCiAgICB2YXIgbG9jYXRpb25NYW5hZ2VyID0ge307CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobG9jYXRpb25NYW5hZ2VyLCAnaXNJbml0ZWQnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzSW5pdGVkOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsb2NhdGlvbk1hbmFnZXIsICdpc0xvY2F0aW9uQXZhaWxhYmxlJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc0luaXRlZCAmJiBpc0xvY2F0aW9uQXZhaWxhYmxlOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsb2NhdGlvbk1hbmFnZXIsICdpc0FjY2Vzc1JlcXVlc3RlZCcsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNBY2Nlc3NSZXF1ZXN0ZWQ7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGxvY2F0aW9uTWFuYWdlciwgJ2lzQWNjZXNzR3JhbnRlZCcsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNBY2Nlc3NSZXF1ZXN0ZWQgJiYgaXNBY2Nlc3NHcmFudGVkOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKCiAgICB2YXIgaW5pdFJlcXVlc3RTdGF0ZSA9IHtjYWxsYmFja3M6IFtdfTsKICAgIHZhciBnZXRSZXF1ZXN0U3RhdGUgPSB7Y2FsbGJhY2tzOiBbXX07CgogICAgV2ViVmlldy5vbkV2ZW50KCdsb2NhdGlvbl9jaGVja2VkJywgIG9uTG9jYXRpb25DaGVja2VkKTsKICAgIFdlYlZpZXcub25FdmVudCgnbG9jYXRpb25fcmVxdWVzdGVkJywgb25Mb2NhdGlvblJlcXVlc3RlZCk7CgogICAgZnVuY3Rpb24gb25Mb2NhdGlvbkNoZWNrZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgaXNJbml0ZWQgPSB0cnVlOwogICAgICBpZiAoZXZlbnREYXRhLmF2YWlsYWJsZSkgewogICAgICAgIGlzTG9jYXRpb25BdmFpbGFibGUgPSB0cnVlOwogICAgICAgIGlmIChldmVudERhdGEuYWNjZXNzX3JlcXVlc3RlZCkgewogICAgICAgICAgaXNBY2Nlc3NSZXF1ZXN0ZWQgPSB0cnVlOwogICAgICAgICAgaXNBY2Nlc3NHcmFudGVkID0gISFldmVudERhdGEuYWNjZXNzX2dyYW50ZWQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlzQWNjZXNzUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgICAgICBpc0FjY2Vzc0dyYW50ZWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaXNMb2NhdGlvbkF2YWlsYWJsZSA9IGZhbHNlOwogICAgICAgIGlzQWNjZXNzUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgICAgaXNBY2Nlc3NHcmFudGVkID0gZmFsc2U7CiAgICAgIH0KCiAgICAgIGlmIChpbml0UmVxdWVzdFN0YXRlLmNhbGxiYWNrcy5sZW5ndGggPiAwKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0UmVxdWVzdFN0YXRlLmNhbGxiYWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNhbGxiYWNrID0gaW5pdFJlcXVlc3RTdGF0ZS5jYWxsYmFja3NbaV07CiAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgICBpbml0UmVxdWVzdFN0YXRlLmNhbGxiYWNrcyA9IFtdOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2xvY2F0aW9uTWFuYWdlclVwZGF0ZWQnKTsKICAgIH0KICAgIGZ1bmN0aW9uIG9uTG9jYXRpb25SZXF1ZXN0ZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgaWYgKCFldmVudERhdGEuYXZhaWxhYmxlKSB7CiAgICAgICAgbG9jYXRpb25EYXRhID0gbnVsbDsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgbG9jYXRpb25EYXRhID0gewogICAgICAgICAgbGF0aXR1ZGU6IGV2ZW50RGF0YS5sYXRpdHVkZSwKICAgICAgICAgIGxvbmdpdHVkZTogZXZlbnREYXRhLmxvbmdpdHVkZSwKICAgICAgICAgIGFsdGl0dWRlOiBudWxsLAogICAgICAgICAgY291cnNlOiBudWxsLAogICAgICAgICAgc3BlZWQ6IG51bGwsCiAgICAgICAgICBob3Jpem9udGFsX2FjY3VyYWN5OiBudWxsLAogICAgICAgICAgdmVydGljYWxfYWNjdXJhY3k6IG51bGwsCiAgICAgICAgICBjb3Vyc2VfYWNjdXJhY3k6IG51bGwsCiAgICAgICAgICBzcGVlZF9hY2N1cmFjeTogbnVsbCwKICAgICAgICB9OwogICAgICAgIGlmICh0eXBlb2YgZXZlbnREYXRhLmFsdGl0dWRlICE9PSAndW5kZWZpbmVkJyAmJiBldmVudERhdGEuYWx0aXR1ZGUgIT09IG51bGwpIHsKICAgICAgICAgIGxvY2F0aW9uRGF0YS5hbHRpdHVkZSA9IGV2ZW50RGF0YS5hbHRpdHVkZTsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBldmVudERhdGEuY291cnNlICE9PSAndW5kZWZpbmVkJyAmJiBldmVudERhdGEuY291cnNlICE9PSBudWxsKSB7CiAgICAgICAgICBsb2NhdGlvbkRhdGEuY291cnNlID0gZXZlbnREYXRhLmNvdXJzZSAlIDM2MDsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBldmVudERhdGEuc3BlZWQgIT09ICd1bmRlZmluZWQnICYmIGV2ZW50RGF0YS5zcGVlZCAhPT0gbnVsbCkgewogICAgICAgICAgbG9jYXRpb25EYXRhLnNwZWVkID0gZXZlbnREYXRhLnNwZWVkOwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGV2ZW50RGF0YS5ob3Jpem9udGFsX2FjY3VyYWN5ICE9PSAndW5kZWZpbmVkJyAmJiBldmVudERhdGEuaG9yaXpvbnRhbF9hY2N1cmFjeSAhPT0gbnVsbCkgewogICAgICAgICAgbG9jYXRpb25EYXRhLmhvcml6b250YWxfYWNjdXJhY3kgPSBldmVudERhdGEuaG9yaXpvbnRhbF9hY2N1cmFjeTsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBldmVudERhdGEudmVydGljYWxfYWNjdXJhY3kgIT09ICd1bmRlZmluZWQnICYmIGV2ZW50RGF0YS52ZXJ0aWNhbF9hY2N1cmFjeSAhPT0gbnVsbCkgewogICAgICAgICAgbG9jYXRpb25EYXRhLnZlcnRpY2FsX2FjY3VyYWN5ID0gZXZlbnREYXRhLnZlcnRpY2FsX2FjY3VyYWN5OwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGV2ZW50RGF0YS5jb3Vyc2VfYWNjdXJhY3kgIT09ICd1bmRlZmluZWQnICYmIGV2ZW50RGF0YS5jb3Vyc2VfYWNjdXJhY3kgIT09IG51bGwpIHsKICAgICAgICAgIGxvY2F0aW9uRGF0YS5jb3Vyc2VfYWNjdXJhY3kgPSBldmVudERhdGEuY291cnNlX2FjY3VyYWN5OwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGV2ZW50RGF0YS5zcGVlZF9hY2N1cmFjeSAhPT0gJ3VuZGVmaW5lZCcgJiYgZXZlbnREYXRhLnNwZWVkX2FjY3VyYWN5ICE9PSBudWxsKSB7CiAgICAgICAgICBsb2NhdGlvbkRhdGEuc3BlZWRfYWNjdXJhY3kgPSBldmVudERhdGEuc3BlZWRfYWNjdXJhY3k7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICghZXZlbnREYXRhLmF2YWlsYWJsZSB8fAogICAgICAgICAgIWlzTG9jYXRpb25BdmFpbGFibGUgfHwKICAgICAgICAgICFpc0FjY2Vzc1JlcXVlc3RlZCB8fAogICAgICAgICAgIWlzQWNjZXNzR3JhbnRlZCkgewogICAgICAgIGluaXRSZXF1ZXN0U3RhdGUuY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgICBsb2NhdGlvblJlc3BvbnNlKGxvY2F0aW9uRGF0YSk7CiAgICAgICAgfSk7CiAgICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfY2hlY2tfbG9jYXRpb24nLCBmYWxzZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbG9jYXRpb25SZXNwb25zZShsb2NhdGlvbkRhdGEpOwogICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBsb2NhdGlvblJlc3BvbnNlKHJlc3BvbnNlKSB7CiAgICAgIGlmIChnZXRSZXF1ZXN0U3RhdGUuY2FsbGJhY2tzLmxlbmd0aCA+IDApIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdldFJlcXVlc3RTdGF0ZS5jYWxsYmFja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBjYWxsYmFjayA9IGdldFJlcXVlc3RTdGF0ZS5jYWxsYmFja3NbaV07CiAgICAgICAgICBjYWxsYmFjayhyZXNwb25zZSk7CiAgICAgICAgfQogICAgICAgIGdldFJlcXVlc3RTdGF0ZS5jYWxsYmFja3MgPSBbXTsKICAgICAgfQogICAgICBpZiAocmVzcG9uc2UgIT09IG51bGwpIHsKICAgICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdsb2NhdGlvblJlcXVlc3RlZCcsIHsKICAgICAgICAgIGxvY2F0aW9uRGF0YTogcmVzcG9uc2UKICAgICAgICB9KTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGNoZWNrVmVyc2lvbigpIHsKICAgICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnOC4wJykpIHsKICAgICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIExvY2F0aW9uTWFuYWdlciBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBmdW5jdGlvbiBjaGVja0luaXQoKSB7CiAgICAgIGlmICghaXNJbml0ZWQpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBMb2NhdGlvbk1hbmFnZXIgc2hvdWxkIGJlIGluaXRlZCBiZWZvcmUgdXNpbmcuJyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcExvY2F0aW9uTWFuYWdlck5vdEluaXRlZCcpOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGxvY2F0aW9uTWFuYWdlci5pbml0ID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgaWYgKCFjaGVja1ZlcnNpb24oKSkgewogICAgICAgIHJldHVybiBsb2NhdGlvbk1hbmFnZXI7CiAgICAgIH0KICAgICAgaWYgKGlzSW5pdGVkKSB7CiAgICAgICAgcmV0dXJuIGxvY2F0aW9uTWFuYWdlcjsKICAgICAgfQogICAgICBpZiAoY2FsbGJhY2spIHsKICAgICAgICBpbml0UmVxdWVzdFN0YXRlLmNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKICAgICAgfQogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9jaGVja19sb2NhdGlvbicsIGZhbHNlKTsKICAgICAgcmV0dXJuIGxvY2F0aW9uTWFuYWdlcjsKICAgIH07CiAgICBsb2NhdGlvbk1hbmFnZXIuZ2V0TG9jYXRpb24gPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBpZiAoIWNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgcmV0dXJuIGxvY2F0aW9uTWFuYWdlcjsKICAgICAgfQogICAgICBjaGVja0luaXQoKTsKICAgICAgaWYgKCFpc0xvY2F0aW9uQXZhaWxhYmxlKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTG9jYXRpb24gaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGRldmljZS4nKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwTG9jYXRpb25NYW5hZ2VyTG9jYXRpb25Ob3RBdmFpbGFibGUnKTsKICAgICAgfQoKICAgICAgZ2V0UmVxdWVzdFN0YXRlLmNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfcmVxdWVzdF9sb2NhdGlvbicpOwogICAgICByZXR1cm4gbG9jYXRpb25NYW5hZ2VyOwogICAgfTsKICAgIGxvY2F0aW9uTWFuYWdlci5vcGVuU2V0dGluZ3MgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKCFjaGVja1ZlcnNpb24oKSkgewogICAgICAgIHJldHVybiBsb2NhdGlvbk1hbmFnZXI7CiAgICAgIH0KICAgICAgY2hlY2tJbml0KCk7CiAgICAgIGlmICghaXNMb2NhdGlvbkF2YWlsYWJsZSkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIExvY2F0aW9uIGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBkZXZpY2UuJyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcExvY2F0aW9uTWFuYWdlckxvY2F0aW9uTm90QXZhaWxhYmxlJyk7CiAgICAgIH0KICAgICAgaWYgKCFpc0FjY2Vzc1JlcXVlc3RlZCkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIExvY2F0aW9uIGFjY2VzcyB3YXMgbm90IHJlcXVlc3RlZCB5ZXQuJyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcExvY2F0aW9uTWFuYWdlckxvY2F0aW9uQWNjZXNzTm90UmVxdWVzdGVkJyk7CiAgICAgIH0KICAgICAgaWYgKGlzQWNjZXNzR3JhbnRlZCkgewogICAgICAgIGNvbnNvbGUud2FybignW1RlbGVncmFtLldlYkFwcF0gTG9jYXRpb24gYWNjZXNzIHdhcyBncmFudGVkIGJ5IHRoZSB1c2VyLCBubyBuZWVkIHRvIGdvIHRvIHNldHRpbmdzLicpOwogICAgICAgIHJldHVybiBsb2NhdGlvbk1hbmFnZXI7CiAgICAgIH0KICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfb3Blbl9sb2NhdGlvbl9zZXR0aW5ncycsIGZhbHNlKTsKICAgICAgcmV0dXJuIGxvY2F0aW9uTWFuYWdlcjsKICAgIH07CiAgICByZXR1cm4gbG9jYXRpb25NYW5hZ2VyOwogIH0pKCk7CgogIHZhciBBY2NlbGVyb21ldGVyID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIGlzU3RhcnRlZCA9IGZhbHNlOwogICAgdmFyIHZhbHVlWCA9IG51bGwsIHZhbHVlWSA9IG51bGwsIHZhbHVlWiA9IG51bGw7CiAgICB2YXIgc3RhcnRDYWxsYmFja3MgPSBbXSwgc3RvcENhbGxiYWNrcyA9IFtdOwoKICAgIHZhciBhY2NlbGVyb21ldGVyID0ge307CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYWNjZWxlcm9tZXRlciwgJ2lzU3RhcnRlZCcsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNTdGFydGVkOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhY2NlbGVyb21ldGVyLCAneCcsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdmFsdWVYOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhY2NlbGVyb21ldGVyLCAneScsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdmFsdWVZOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhY2NlbGVyb21ldGVyLCAneicsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdmFsdWVaOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKCiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2FjY2VsZXJvbWV0ZXJfc3RhcnRlZCcsIG9uQWNjZWxlcm9tZXRlclN0YXJ0ZWQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdhY2NlbGVyb21ldGVyX3N0b3BwZWQnLCBvbkFjY2VsZXJvbWV0ZXJTdG9wcGVkKTsKICAgIFdlYlZpZXcub25FdmVudCgnYWNjZWxlcm9tZXRlcl9jaGFuZ2VkJywgb25BY2NlbGVyb21ldGVyQ2hhbmdlZCk7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2FjY2VsZXJvbWV0ZXJfZmFpbGVkJywgIG9uQWNjZWxlcm9tZXRlckZhaWxlZCk7CgogICAgZnVuY3Rpb24gb25BY2NlbGVyb21ldGVyU3RhcnRlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICBpc1N0YXJ0ZWQgPSB0cnVlOwogICAgICBpZiAoc3RhcnRDYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhcnRDYWxsYmFja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBjYWxsYmFjayA9IHN0YXJ0Q2FsbGJhY2tzW2ldOwogICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CiAgICAgICAgfQogICAgICAgIHN0YXJ0Q2FsbGJhY2tzID0gW107CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnYWNjZWxlcm9tZXRlclN0YXJ0ZWQnKTsKICAgIH0KICAgIGZ1bmN0aW9uIG9uQWNjZWxlcm9tZXRlclN0b3BwZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgaXNTdGFydGVkID0gZmFsc2U7CiAgICAgIGlmIChzdG9wQ2FsbGJhY2tzLmxlbmd0aCA+IDApIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0b3BDYWxsYmFja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBjYWxsYmFjayA9IHN0b3BDYWxsYmFja3NbaV07CiAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICB9CiAgICAgICAgc3RvcENhbGxiYWNrcyA9IFtdOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2FjY2VsZXJvbWV0ZXJTdG9wcGVkJyk7CiAgICB9CiAgICBmdW5jdGlvbiBvbkFjY2VsZXJvbWV0ZXJDaGFuZ2VkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIHZhbHVlWCA9IGV2ZW50RGF0YS54OwogICAgICB2YWx1ZVkgPSBldmVudERhdGEueTsKICAgICAgdmFsdWVaID0gZXZlbnREYXRhLno7CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2FjY2VsZXJvbWV0ZXJDaGFuZ2VkJyk7CiAgICB9CiAgICBmdW5jdGlvbiBvbkFjY2VsZXJvbWV0ZXJGYWlsZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgaWYgKHN0YXJ0Q2FsbGJhY2tzLmxlbmd0aCA+IDApIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXJ0Q2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBzdGFydENhbGxiYWNrc1tpXTsKICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICB9CiAgICAgICAgc3RhcnRDYWxsYmFja3MgPSBbXTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdhY2NlbGVyb21ldGVyRmFpbGVkJywgewogICAgICAgIGVycm9yOiBldmVudERhdGEuZXJyb3IKICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gY2hlY2tWZXJzaW9uKCkgewogICAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc4LjAnKSkgewogICAgICAgIGNvbnNvbGUud2FybignW1RlbGVncmFtLldlYkFwcF0gQWNjZWxlcm9tZXRlciBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBhY2NlbGVyb21ldGVyLnN0YXJ0ID0gZnVuY3Rpb24ocGFyYW1zLCBjYWxsYmFjaykgewogICAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307CiAgICAgIGlmICghY2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gYWNjZWxlcm9tZXRlcjsKICAgICAgfQogICAgICB2YXIgcmVxX3BhcmFtcyA9IHt9OwogICAgICB2YXIgcmVmcmVzaF9yYXRlID0gcGFyc2VJbnQocGFyYW1zLnJlZnJlc2hfcmF0ZSB8fCAxMDAwKTsKICAgICAgaWYgKGlzTmFOKHJlZnJlc2hfcmF0ZSkgfHwgcmVmcmVzaF9yYXRlIDwgMjAgfHwgcmVmcmVzaF9yYXRlID4gMTAwMCkgewogICAgICAgIGNvbnNvbGUud2FybignW1RlbGVncmFtLldlYkFwcF0gQWNjZWxlcm9tZXRlciByZWZyZXNoX3JhdGUgaXMgaW52YWxpZCcsIHJlZnJlc2hfcmF0ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVxX3BhcmFtcy5yZWZyZXNoX3JhdGUgPSByZWZyZXNoX3JhdGU7CiAgICAgIH0KCiAgICAgIGlmIChjYWxsYmFjaykgewogICAgICAgIHN0YXJ0Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICB9CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3N0YXJ0X2FjY2VsZXJvbWV0ZXInLCBmYWxzZSwgcmVxX3BhcmFtcyk7CiAgICAgIHJldHVybiBhY2NlbGVyb21ldGVyOwogICAgfTsKICAgIGFjY2VsZXJvbWV0ZXIuc3RvcCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIGlmICghY2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gYWNjZWxlcm9tZXRlcjsKICAgICAgfQogICAgICBpZiAoY2FsbGJhY2spIHsKICAgICAgICBzdG9wQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICB9CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3N0b3BfYWNjZWxlcm9tZXRlcicpOwogICAgICByZXR1cm4gYWNjZWxlcm9tZXRlcjsKICAgIH07CiAgICByZXR1cm4gYWNjZWxlcm9tZXRlcjsKICB9KSgpOwoKICB2YXIgRGV2aWNlT3JpZW50YXRpb24gPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgaXNTdGFydGVkID0gZmFsc2U7CiAgICB2YXIgdmFsdWVBbHBoYSA9IG51bGwsIHZhbHVlQmV0YSA9IG51bGwsIHZhbHVlR2FtbWEgPSBudWxsLCB2YWx1ZUFic29sdXRlID0gZmFsc2U7CiAgICB2YXIgc3RhcnRDYWxsYmFja3MgPSBbXSwgc3RvcENhbGxiYWNrcyA9IFtdOwoKICAgIHZhciBkZXZpY2VPcmllbnRhdGlvbiA9IHt9OwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRldmljZU9yaWVudGF0aW9uLCAnaXNTdGFydGVkJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc1N0YXJ0ZWQ7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRldmljZU9yaWVudGF0aW9uLCAnYWJzb2x1dGUnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHZhbHVlQWJzb2x1dGU7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRldmljZU9yaWVudGF0aW9uLCAnYWxwaGEnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHZhbHVlQWxwaGE7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRldmljZU9yaWVudGF0aW9uLCAnYmV0YScsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdmFsdWVCZXRhOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkZXZpY2VPcmllbnRhdGlvbiwgJ2dhbW1hJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB2YWx1ZUdhbW1hOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKCiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2RldmljZV9vcmllbnRhdGlvbl9zdGFydGVkJywgIG9uRGV2aWNlT3JpZW50YXRpb25TdGFydGVkKTsKICAgIFdlYlZpZXcub25FdmVudCgnZGV2aWNlX29yaWVudGF0aW9uX3N0b3BwZWQnLCAgb25EZXZpY2VPcmllbnRhdGlvblN0b3BwZWQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdkZXZpY2Vfb3JpZW50YXRpb25fY2hhbmdlZCcsIG9uRGV2aWNlT3JpZW50YXRpb25DaGFuZ2VkKTsKICAgIFdlYlZpZXcub25FdmVudCgnZGV2aWNlX29yaWVudGF0aW9uX2ZhaWxlZCcsICBvbkRldmljZU9yaWVudGF0aW9uRmFpbGVkKTsKCiAgICBmdW5jdGlvbiBvbkRldmljZU9yaWVudGF0aW9uU3RhcnRlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICBpc1N0YXJ0ZWQgPSB0cnVlOwogICAgICBpZiAoc3RhcnRDYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhcnRDYWxsYmFja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBjYWxsYmFjayA9IHN0YXJ0Q2FsbGJhY2tzW2ldOwogICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CiAgICAgICAgfQogICAgICAgIHN0YXJ0Q2FsbGJhY2tzID0gW107CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnZGV2aWNlT3JpZW50YXRpb25TdGFydGVkJyk7CiAgICB9CiAgICBmdW5jdGlvbiBvbkRldmljZU9yaWVudGF0aW9uU3RvcHBlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICBpc1N0YXJ0ZWQgPSBmYWxzZTsKICAgICAgaWYgKHN0b3BDYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RvcENhbGxiYWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNhbGxiYWNrID0gc3RvcENhbGxiYWNrc1tpXTsKICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwogICAgICAgIH0KICAgICAgICBzdG9wQ2FsbGJhY2tzID0gW107CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnZGV2aWNlT3JpZW50YXRpb25TdG9wcGVkJyk7CiAgICB9CiAgICBmdW5jdGlvbiBvbkRldmljZU9yaWVudGF0aW9uQ2hhbmdlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICB2YWx1ZUFic29sdXRlID0gISFldmVudERhdGEuYWJzb2x1dGU7CiAgICAgIHZhbHVlQWxwaGEgPSBldmVudERhdGEuYWxwaGE7CiAgICAgIHZhbHVlQmV0YSAgPSBldmVudERhdGEuYmV0YTsKICAgICAgdmFsdWVHYW1tYSA9IGV2ZW50RGF0YS5nYW1tYTsKICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnZGV2aWNlT3JpZW50YXRpb25DaGFuZ2VkJyk7CiAgICB9CiAgICBmdW5jdGlvbiBvbkRldmljZU9yaWVudGF0aW9uRmFpbGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIGlmIChzdGFydENhbGxiYWNrcy5sZW5ndGggPiAwKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFydENhbGxiYWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNhbGxiYWNrID0gc3RhcnRDYWxsYmFja3NbaV07CiAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgfQogICAgICAgIHN0YXJ0Q2FsbGJhY2tzID0gW107CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnZGV2aWNlT3JpZW50YXRpb25GYWlsZWQnLCB7CiAgICAgICAgZXJyb3I6IGV2ZW50RGF0YS5lcnJvcgogICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBjaGVja1ZlcnNpb24oKSB7CiAgICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzguMCcpKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBEZXZpY2VPcmllbnRhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBkZXZpY2VPcmllbnRhdGlvbi5zdGFydCA9IGZ1bmN0aW9uKHBhcmFtcywgY2FsbGJhY2spIHsKICAgICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9OwogICAgICBpZiAoIWNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uOwogICAgICB9CiAgICAgIHZhciByZXFfcGFyYW1zID0ge307CiAgICAgIHZhciByZWZyZXNoX3JhdGUgPSBwYXJzZUludChwYXJhbXMucmVmcmVzaF9yYXRlIHx8IDEwMDApOwogICAgICBpZiAoaXNOYU4ocmVmcmVzaF9yYXRlKSB8fCByZWZyZXNoX3JhdGUgPCAyMCB8fCByZWZyZXNoX3JhdGUgPiAxMDAwKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBEZXZpY2VPcmllbnRhdGlvbiByZWZyZXNoX3JhdGUgaXMgaW52YWxpZCcsIHJlZnJlc2hfcmF0ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVxX3BhcmFtcy5yZWZyZXNoX3JhdGUgPSByZWZyZXNoX3JhdGU7CiAgICAgIH0KICAgICAgcmVxX3BhcmFtcy5uZWVkX2Fic29sdXRlID0gISFwYXJhbXMubmVlZF9hYnNvbHV0ZTsKCiAgICAgIGlmIChjYWxsYmFjaykgewogICAgICAgIHN0YXJ0Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICB9CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3N0YXJ0X2RldmljZV9vcmllbnRhdGlvbicsIGZhbHNlLCByZXFfcGFyYW1zKTsKICAgICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uOwogICAgfTsKICAgIGRldmljZU9yaWVudGF0aW9uLnN0b3AgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBpZiAoIWNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uOwogICAgICB9CiAgICAgIGlmIChjYWxsYmFjaykgewogICAgICAgIHN0b3BDYWxsYmFja3MucHVzaChjYWxsYmFjayk7CiAgICAgIH0KICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc3RvcF9kZXZpY2Vfb3JpZW50YXRpb24nKTsKICAgICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uOwogICAgfTsKICAgIHJldHVybiBkZXZpY2VPcmllbnRhdGlvbjsKICB9KSgpOwoKICB2YXIgR3lyb3Njb3BlID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIGlzU3RhcnRlZCA9IGZhbHNlOwogICAgdmFyIHZhbHVlWCA9IG51bGwsIHZhbHVlWSA9IG51bGwsIHZhbHVlWiA9IG51bGw7CiAgICB2YXIgc3RhcnRDYWxsYmFja3MgPSBbXSwgc3RvcENhbGxiYWNrcyA9IFtdOwoKICAgIHZhciBneXJvc2NvcGUgPSB7fTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShneXJvc2NvcGUsICdpc1N0YXJ0ZWQnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzU3RhcnRlZDsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ3lyb3Njb3BlLCAneCcsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdmFsdWVYOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShneXJvc2NvcGUsICd5JywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB2YWx1ZVk7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGd5cm9zY29wZSwgJ3onLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHZhbHVlWjsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CgogICAgV2ViVmlldy5vbkV2ZW50KCdneXJvc2NvcGVfc3RhcnRlZCcsICBvbkd5cm9zY29wZVN0YXJ0ZWQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdneXJvc2NvcGVfc3RvcHBlZCcsICBvbkd5cm9zY29wZVN0b3BwZWQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdneXJvc2NvcGVfY2hhbmdlZCcsIG9uR3lyb3Njb3BlQ2hhbmdlZCk7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2d5cm9zY29wZV9mYWlsZWQnLCAgb25HeXJvc2NvcGVGYWlsZWQpOwoKICAgIGZ1bmN0aW9uIG9uR3lyb3Njb3BlU3RhcnRlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICBpc1N0YXJ0ZWQgPSB0cnVlOwogICAgICBpZiAoc3RhcnRDYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhcnRDYWxsYmFja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBjYWxsYmFjayA9IHN0YXJ0Q2FsbGJhY2tzW2ldOwogICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CiAgICAgICAgfQogICAgICAgIHN0YXJ0Q2FsbGJhY2tzID0gW107CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnZ3lyb3Njb3BlU3RhcnRlZCcpOwogICAgfQogICAgZnVuY3Rpb24gb25HeXJvc2NvcGVTdG9wcGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIGlzU3RhcnRlZCA9IGZhbHNlOwogICAgICBpZiAoc3RvcENhbGxiYWNrcy5sZW5ndGggPiAwKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdG9wQ2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBzdG9wQ2FsbGJhY2tzW2ldOwogICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CiAgICAgICAgfQogICAgICAgIHN0b3BDYWxsYmFja3MgPSBbXTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdneXJvc2NvcGVTdG9wcGVkJyk7CiAgICB9CiAgICBmdW5jdGlvbiBvbkd5cm9zY29wZUNoYW5nZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgdmFsdWVYID0gZXZlbnREYXRhLng7CiAgICAgIHZhbHVlWSA9IGV2ZW50RGF0YS55OwogICAgICB2YWx1ZVogPSBldmVudERhdGEuejsKICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnZ3lyb3Njb3BlQ2hhbmdlZCcpOwogICAgfQogICAgZnVuY3Rpb24gb25HeXJvc2NvcGVGYWlsZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgaWYgKHN0YXJ0Q2FsbGJhY2tzLmxlbmd0aCA+IDApIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXJ0Q2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBzdGFydENhbGxiYWNrc1tpXTsKICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICB9CiAgICAgICAgc3RhcnRDYWxsYmFja3MgPSBbXTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdneXJvc2NvcGVGYWlsZWQnLCB7CiAgICAgICAgZXJyb3I6IGV2ZW50RGF0YS5lcnJvcgogICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBjaGVja1ZlcnNpb24oKSB7CiAgICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzguMCcpKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBHeXJvc2NvcGUgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgZ3lyb3Njb3BlLnN0YXJ0ID0gZnVuY3Rpb24ocGFyYW1zLCBjYWxsYmFjaykgewogICAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307CiAgICAgIGlmICghY2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gZ3lyb3Njb3BlOwogICAgICB9CiAgICAgIHZhciByZXFfcGFyYW1zID0ge307CiAgICAgIHZhciByZWZyZXNoX3JhdGUgPSBwYXJzZUludChwYXJhbXMucmVmcmVzaF9yYXRlIHx8IDEwMDApOwogICAgICBpZiAoaXNOYU4ocmVmcmVzaF9yYXRlKSB8fCByZWZyZXNoX3JhdGUgPCAyMCB8fCByZWZyZXNoX3JhdGUgPiAxMDAwKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBHeXJvc2NvcGUgcmVmcmVzaF9yYXRlIGlzIGludmFsaWQnLCByZWZyZXNoX3JhdGUpOwogICAgICB9IGVsc2UgewogICAgICAgIHJlcV9wYXJhbXMucmVmcmVzaF9yYXRlID0gcmVmcmVzaF9yYXRlOwogICAgICB9CgogICAgICBpZiAoY2FsbGJhY2spIHsKICAgICAgICBzdGFydENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKICAgICAgfQogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9zdGFydF9neXJvc2NvcGUnLCBmYWxzZSwgcmVxX3BhcmFtcyk7CiAgICAgIHJldHVybiBneXJvc2NvcGU7CiAgICB9OwogICAgZ3lyb3Njb3BlLnN0b3AgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBpZiAoIWNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgcmV0dXJuIGd5cm9zY29wZTsKICAgICAgfQogICAgICBpZiAoY2FsbGJhY2spIHsKICAgICAgICBzdG9wQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICB9CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3N0b3BfZ3lyb3Njb3BlJyk7CiAgICAgIHJldHVybiBneXJvc2NvcGU7CiAgICB9OwogICAgcmV0dXJuIGd5cm9zY29wZTsKICB9KSgpOwoKICB2YXIgd2ViQXBwSW52b2ljZXMgPSB7fTsKICBmdW5jdGlvbiBvbkludm9pY2VDbG9zZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChldmVudERhdGEuc2x1ZyAmJiB3ZWJBcHBJbnZvaWNlc1tldmVudERhdGEuc2x1Z10pIHsKICAgICAgdmFyIGludm9pY2VEYXRhID0gd2ViQXBwSW52b2ljZXNbZXZlbnREYXRhLnNsdWddOwogICAgICBkZWxldGUgd2ViQXBwSW52b2ljZXNbZXZlbnREYXRhLnNsdWddOwogICAgICBpZiAoaW52b2ljZURhdGEuY2FsbGJhY2spIHsKICAgICAgICBpbnZvaWNlRGF0YS5jYWxsYmFjayhldmVudERhdGEuc3RhdHVzKTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdpbnZvaWNlQ2xvc2VkJywgewogICAgICAgIHVybDogaW52b2ljZURhdGEudXJsLAogICAgICAgIHN0YXR1czogZXZlbnREYXRhLnN0YXR1cwogICAgICB9KTsKICAgIH0KICB9CgogIHZhciB3ZWJBcHBQb3B1cE9wZW5lZCA9IGZhbHNlOwogIGZ1bmN0aW9uIG9uUG9wdXBDbG9zZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmICh3ZWJBcHBQb3B1cE9wZW5lZCkgewogICAgICB2YXIgcG9wdXBEYXRhID0gd2ViQXBwUG9wdXBPcGVuZWQ7CiAgICAgIHdlYkFwcFBvcHVwT3BlbmVkID0gZmFsc2U7CiAgICAgIHZhciBidXR0b25faWQgPSBudWxsOwogICAgICBpZiAodHlwZW9mIGV2ZW50RGF0YS5idXR0b25faWQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgYnV0dG9uX2lkID0gZXZlbnREYXRhLmJ1dHRvbl9pZDsKICAgICAgfQogICAgICBpZiAocG9wdXBEYXRhLmNhbGxiYWNrKSB7CiAgICAgICAgcG9wdXBEYXRhLmNhbGxiYWNrKGJ1dHRvbl9pZCk7CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgncG9wdXBDbG9zZWQnLCB7CiAgICAgICAgYnV0dG9uX2lkOiBidXR0b25faWQKICAgICAgfSk7CiAgICB9CiAgfQoKICB2YXIgd2ViQXBwU2NhblFyUG9wdXBPcGVuZWQgPSBmYWxzZTsKICBmdW5jdGlvbiBvblFyVGV4dFJlY2VpdmVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAod2ViQXBwU2NhblFyUG9wdXBPcGVuZWQpIHsKICAgICAgdmFyIHBvcHVwRGF0YSA9IHdlYkFwcFNjYW5RclBvcHVwT3BlbmVkOwogICAgICB2YXIgZGF0YSA9IG51bGw7CiAgICAgIGlmICh0eXBlb2YgZXZlbnREYXRhLmRhdGEgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgZGF0YSA9IGV2ZW50RGF0YS5kYXRhOwogICAgICB9CiAgICAgIGlmIChwb3B1cERhdGEuY2FsbGJhY2spIHsKICAgICAgICBpZiAocG9wdXBEYXRhLmNhbGxiYWNrKGRhdGEpKSB7CiAgICAgICAgICB3ZWJBcHBTY2FuUXJQb3B1cE9wZW5lZCA9IGZhbHNlOwogICAgICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfY2xvc2Vfc2Nhbl9xcl9wb3B1cCcsIGZhbHNlKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgncXJUZXh0UmVjZWl2ZWQnLCB7CiAgICAgICAgZGF0YTogZGF0YQogICAgICB9KTsKICAgIH0KICB9CiAgZnVuY3Rpb24gb25TY2FuUXJQb3B1cENsb3NlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgd2ViQXBwU2NhblFyUG9wdXBPcGVuZWQgPSBmYWxzZTsKICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ3NjYW5RclBvcHVwQ2xvc2VkJyk7CiAgfQoKICBmdW5jdGlvbiBvbkNsaXBib2FyZFRleHRSZWNlaXZlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgaWYgKGV2ZW50RGF0YS5yZXFfaWQgJiYgd2ViQXBwQ2FsbGJhY2tzW2V2ZW50RGF0YS5yZXFfaWRdKSB7CiAgICAgIHZhciByZXF1ZXN0RGF0YSA9IHdlYkFwcENhbGxiYWNrc1tldmVudERhdGEucmVxX2lkXTsKICAgICAgZGVsZXRlIHdlYkFwcENhbGxiYWNrc1tldmVudERhdGEucmVxX2lkXTsKICAgICAgdmFyIGRhdGEgPSBudWxsOwogICAgICBpZiAodHlwZW9mIGV2ZW50RGF0YS5kYXRhICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIGRhdGEgPSBldmVudERhdGEuZGF0YTsKICAgICAgfQogICAgICBpZiAocmVxdWVzdERhdGEuY2FsbGJhY2spIHsKICAgICAgICByZXF1ZXN0RGF0YS5jYWxsYmFjayhkYXRhKTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdjbGlwYm9hcmRUZXh0UmVjZWl2ZWQnLCB7CiAgICAgICAgZGF0YTogZGF0YQogICAgICB9KTsKICAgIH0KICB9CgogIHZhciBXZWJBcHBXcml0ZUFjY2Vzc1JlcXVlc3RlZCA9IGZhbHNlOwogIGZ1bmN0aW9uIG9uV3JpdGVBY2Nlc3NSZXF1ZXN0ZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChXZWJBcHBXcml0ZUFjY2Vzc1JlcXVlc3RlZCkgewogICAgICB2YXIgcmVxdWVzdERhdGEgPSBXZWJBcHBXcml0ZUFjY2Vzc1JlcXVlc3RlZDsKICAgICAgV2ViQXBwV3JpdGVBY2Nlc3NSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICAgaWYgKHJlcXVlc3REYXRhLmNhbGxiYWNrKSB7CiAgICAgICAgcmVxdWVzdERhdGEuY2FsbGJhY2soZXZlbnREYXRhLnN0YXR1cyA9PSAnYWxsb3dlZCcpOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ3dyaXRlQWNjZXNzUmVxdWVzdGVkJywgewogICAgICAgIHN0YXR1czogZXZlbnREYXRhLnN0YXR1cwogICAgICB9KTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGdldFJlcXVlc3RlZENvbnRhY3QoY2FsbGJhY2ssIHRpbWVvdXQpIHsKICAgIHZhciByZXFUbywgZmFsbGJhY2tUbywgcmVxRGVsYXkgPSAwOwogICAgdmFyIHJlcUludm9rZSA9IGZ1bmN0aW9uKCkgewogICAgICBpbnZva2VDdXN0b21NZXRob2QoJ2dldFJlcXVlc3RlZENvbnRhY3QnLCB7fSwgZnVuY3Rpb24oZXJyLCByZXMpIHsKICAgICAgICBpZiAocmVzLnN1YnN0cigwLCAxKSA9PSAnIicgJiYgcmVzLnN1YnN0cigtMSkgPT0gJyInKSB7IC8vIG1hY29zIGZpeAogICAgICAgICAgcmVzID0gSlNPTi5wYXJzZShyZXMpOwogICAgICAgIH0KICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHsKICAgICAgICAgIGNsZWFyVGltZW91dChmYWxsYmFja1RvKTsKICAgICAgICAgIGNhbGxiYWNrKHJlcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJlcURlbGF5ICs9IDUwOwogICAgICAgICAgcmVxVG8gPSBzZXRUaW1lb3V0KHJlcUludm9rZSwgcmVxRGVsYXkpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9OwogICAgdmFyIGZhbGxiYWNrSW52b2tlID0gZnVuY3Rpb24oKSB7CiAgICAgIGNsZWFyVGltZW91dChyZXFUbyk7CiAgICAgIGNhbGxiYWNrKCcnKTsKICAgIH07CiAgICBmYWxsYmFja1RvID0gc2V0VGltZW91dChmYWxsYmFja0ludm9rZSwgdGltZW91dCk7CiAgICByZXFJbnZva2UoKTsKICB9CgogIHZhciBXZWJBcHBDb250YWN0UmVxdWVzdGVkID0gZmFsc2U7CiAgZnVuY3Rpb24gb25QaG9uZVJlcXVlc3RlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgaWYgKFdlYkFwcENvbnRhY3RSZXF1ZXN0ZWQpIHsKICAgICAgdmFyIHJlcXVlc3REYXRhID0gV2ViQXBwQ29udGFjdFJlcXVlc3RlZDsKICAgICAgV2ViQXBwQ29udGFjdFJlcXVlc3RlZCA9IGZhbHNlOwogICAgICB2YXIgcmVxdWVzdFNlbnQgPSBldmVudERhdGEuc3RhdHVzID09ICdzZW50JzsKICAgICAgdmFyIHdlYlZpZXdFdmVudCA9IHsKICAgICAgICBzdGF0dXM6IGV2ZW50RGF0YS5zdGF0dXMKICAgICAgfTsKICAgICAgaWYgKHJlcXVlc3RTZW50KSB7CiAgICAgICAgZ2V0UmVxdWVzdGVkQ29udGFjdChmdW5jdGlvbihyZXMpIHsKICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkgewogICAgICAgICAgICB3ZWJWaWV3RXZlbnQucmVzcG9uc2UgPSByZXM7CiAgICAgICAgICAgIHdlYlZpZXdFdmVudC5yZXNwb25zZVVuc2FmZSA9IFV0aWxzLnVybFBhcnNlUXVlcnlTdHJpbmcocmVzKTsKICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHdlYlZpZXdFdmVudC5yZXNwb25zZVVuc2FmZSkgewogICAgICAgICAgICAgIHZhciB2YWwgPSB3ZWJWaWV3RXZlbnQucmVzcG9uc2VVbnNhZmVba2V5XTsKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKHZhbC5zdWJzdHIoMCwgMSkgPT0gJ3snICYmIHZhbC5zdWJzdHIoLTEpID09ICd9JyB8fAogICAgICAgICAgICAgICAgICAgIHZhbC5zdWJzdHIoMCwgMSkgPT0gJ1snICYmIHZhbC5zdWJzdHIoLTEpID09ICddJykgewogICAgICAgICAgICAgICAgICB3ZWJWaWV3RXZlbnQucmVzcG9uc2VVbnNhZmVba2V5XSA9IEpTT04ucGFyc2UodmFsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAocmVxdWVzdERhdGEuY2FsbGJhY2spIHsKICAgICAgICAgICAgcmVxdWVzdERhdGEuY2FsbGJhY2socmVxdWVzdFNlbnQsIHdlYlZpZXdFdmVudCk7CiAgICAgICAgICB9CiAgICAgICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdjb250YWN0UmVxdWVzdGVkJywgd2ViVmlld0V2ZW50KTsKICAgICAgICB9LCAzMDAwKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAocmVxdWVzdERhdGEuY2FsbGJhY2spIHsKICAgICAgICAgIHJlcXVlc3REYXRhLmNhbGxiYWNrKHJlcXVlc3RTZW50LCB3ZWJWaWV3RXZlbnQpOwogICAgICAgIH0KICAgICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdjb250YWN0UmVxdWVzdGVkJywgd2ViVmlld0V2ZW50KTsKICAgICAgfQogICAgfQogIH0KCiAgdmFyIHdlYkFwcERvd25sb2FkRmlsZVJlcXVlc3RlZCA9IGZhbHNlOwogIGZ1bmN0aW9uIG9uRmlsZURvd25sb2FkUmVxdWVzdGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAod2ViQXBwRG93bmxvYWRGaWxlUmVxdWVzdGVkKSB7CiAgICAgIHZhciByZXF1ZXN0RGF0YSA9IHdlYkFwcERvd25sb2FkRmlsZVJlcXVlc3RlZDsKICAgICAgd2ViQXBwRG93bmxvYWRGaWxlUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgIHZhciBpc0Rvd25sb2FkaW5nID0gZXZlbnREYXRhLnN0YXR1cyA9PSAnZG93bmxvYWRpbmcnOwogICAgICBpZiAocmVxdWVzdERhdGEuY2FsbGJhY2spIHsKICAgICAgICByZXF1ZXN0RGF0YS5jYWxsYmFjayhpc0Rvd25sb2FkaW5nKTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdmaWxlRG93bmxvYWRSZXF1ZXN0ZWQnLCB7CiAgICAgICAgc3RhdHVzOiBpc0Rvd25sb2FkaW5nID8gJ2Rvd25sb2FkaW5nJyA6ICdjYW5jZWxsZWQnCiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gb25DdXN0b21NZXRob2RJbnZva2VkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoZXZlbnREYXRhLnJlcV9pZCAmJiB3ZWJBcHBDYWxsYmFja3NbZXZlbnREYXRhLnJlcV9pZF0pIHsKICAgICAgdmFyIHJlcXVlc3REYXRhID0gd2ViQXBwQ2FsbGJhY2tzW2V2ZW50RGF0YS5yZXFfaWRdOwogICAgICBkZWxldGUgd2ViQXBwQ2FsbGJhY2tzW2V2ZW50RGF0YS5yZXFfaWRdOwogICAgICB2YXIgcmVzID0gbnVsbCwgZXJyID0gbnVsbDsKICAgICAgaWYgKHR5cGVvZiBldmVudERhdGEucmVzdWx0ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIHJlcyA9IGV2ZW50RGF0YS5yZXN1bHQ7CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBldmVudERhdGEuZXJyb3IgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgZXJyID0gZXZlbnREYXRhLmVycm9yOwogICAgICB9CiAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgIHJlcXVlc3REYXRhLmNhbGxiYWNrKGVyciwgcmVzKTsKICAgICAgfQogICAgfQogIH0KCiAgZnVuY3Rpb24gaW52b2tlQ3VzdG9tTWV0aG9kKG1ldGhvZCwgcGFyYW1zLCBjYWxsYmFjaykgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi45JykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIGludm9rZUN1c3RvbU1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwTWV0aG9kVW5zdXBwb3J0ZWQnKTsKICAgIH0KICAgIHZhciByZXFfaWQgPSBnZW5lcmF0ZUNhbGxiYWNrSWQoMTYpOwogICAgdmFyIHJlcV9wYXJhbXMgPSB7cmVxX2lkOiByZXFfaWQsIG1ldGhvZDogbWV0aG9kLCBwYXJhbXM6IHBhcmFtcyB8fCB7fX07CiAgICB3ZWJBcHBDYWxsYmFja3NbcmVxX2lkXSA9IHsKICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICB9OwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfaW52b2tlX2N1c3RvbV9tZXRob2QnLCBmYWxzZSwgcmVxX3BhcmFtcyk7CiAgfTsKCiAgaWYgKCF3aW5kb3cuVGVsZWdyYW0pIHsKICAgIHdpbmRvdy5UZWxlZ3JhbSA9IHt9OwogIH0KCiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ2luaXREYXRhJywgewogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gd2ViQXBwSW5pdERhdGE7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ2luaXREYXRhVW5zYWZlJywgewogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gd2ViQXBwSW5pdERhdGFVbnNhZmU7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ3ZlcnNpb24nLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB3ZWJBcHBWZXJzaW9uOyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdwbGF0Zm9ybScsIHsKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHdlYkFwcFBsYXRmb3JtOyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdjb2xvclNjaGVtZScsIHsKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGNvbG9yU2NoZW1lOyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICd0aGVtZVBhcmFtcycsIHsKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHRoZW1lUGFyYW1zOyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdpc0V4cGFuZGVkJywgewogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNFeHBhbmRlZDsgfSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAndmlld3BvcnRIZWlnaHQnLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiAodmlld3BvcnRIZWlnaHQgPT09IGZhbHNlID8gd2luZG93LmlubmVySGVpZ2h0IDogdmlld3BvcnRIZWlnaHQpIC0gYm90dG9tQmFySGVpZ2h0OyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICd2aWV3cG9ydFN0YWJsZUhlaWdodCcsIHsKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuICh2aWV3cG9ydFN0YWJsZUhlaWdodCA9PT0gZmFsc2UgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiB2aWV3cG9ydFN0YWJsZUhlaWdodCkgLSBib3R0b21CYXJIZWlnaHQ7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ3NhZmVBcmVhSW5zZXQnLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBzYWZlQXJlYUluc2V0OyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdjb250ZW50U2FmZUFyZWFJbnNldCcsIHsKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGNvbnRlbnRTYWZlQXJlYUluc2V0OyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdpc0Nsb3NpbmdDb25maXJtYXRpb25FbmFibGVkJywgewogICAgc2V0OiBmdW5jdGlvbih2YWwpeyBzZXRDbG9zaW5nQ29uZmlybWF0aW9uKHZhbCk7IH0sCiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc0Nsb3NpbmdDb25maXJtYXRpb25FbmFibGVkOyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdpc1ZlcnRpY2FsU3dpcGVzRW5hYmxlZCcsIHsKICAgIHNldDogZnVuY3Rpb24odmFsKXsgdG9nZ2xlVmVydGljYWxTd2lwZXModmFsKTsgfSwKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzVmVydGljYWxTd2lwZXNFbmFibGVkOyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdpc0Z1bGxzY3JlZW4nLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB3ZWJBcHBJc0Z1bGxzY3JlZW47IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ2lzT3JpZW50YXRpb25Mb2NrZWQnLCB7CiAgICBzZXQ6IGZ1bmN0aW9uKHZhbCl7IHRvZ2dsZU9yaWVudGF0aW9uTG9jayh2YWwpOyB9LAogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gd2ViQXBwSXNPcmllbnRhdGlvbkxvY2tlZDsgfSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnaXNBY3RpdmUnLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB3ZWJBcHBJc0FjdGl2ZTsgfSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnaGVhZGVyQ29sb3InLCB7CiAgICBzZXQ6IGZ1bmN0aW9uKHZhbCl7IHNldEhlYWRlckNvbG9yKHZhbCk7IH0sCiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBnZXRIZWFkZXJDb2xvcigpOyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdiYWNrZ3JvdW5kQ29sb3InLCB7CiAgICBzZXQ6IGZ1bmN0aW9uKHZhbCl7IHNldEJhY2tncm91bmRDb2xvcih2YWwpOyB9LAogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gZ2V0QmFja2dyb3VuZENvbG9yKCk7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ2JvdHRvbUJhckNvbG9yJywgewogICAgc2V0OiBmdW5jdGlvbih2YWwpeyBzZXRCb3R0b21CYXJDb2xvcih2YWwpOyB9LAogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gZ2V0Qm90dG9tQmFyQ29sb3IoKTsgfSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnQmFja0J1dHRvbicsIHsKICAgIHZhbHVlOiBCYWNrQnV0dG9uLAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdNYWluQnV0dG9uJywgewogICAgdmFsdWU6IE1haW5CdXR0b24sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ1NlY29uZGFyeUJ1dHRvbicsIHsKICAgIHZhbHVlOiBTZWNvbmRhcnlCdXR0b24sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ1NldHRpbmdzQnV0dG9uJywgewogICAgdmFsdWU6IFNldHRpbmdzQnV0dG9uLAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdIYXB0aWNGZWVkYmFjaycsIHsKICAgIHZhbHVlOiBIYXB0aWNGZWVkYmFjaywKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnQ2xvdWRTdG9yYWdlJywgewogICAgdmFsdWU6IENsb3VkU3RvcmFnZSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnRGV2aWNlU3RvcmFnZScsIHsKICAgIHZhbHVlOiBEZXZpY2VTdG9yYWdlLAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdTZWN1cmVTdG9yYWdlJywgewogICAgdmFsdWU6IFNlY3VyZVN0b3JhZ2UsCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ0Jpb21ldHJpY01hbmFnZXInLCB7CiAgICB2YWx1ZTogQmlvbWV0cmljTWFuYWdlciwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnQWNjZWxlcm9tZXRlcicsIHsKICAgIHZhbHVlOiBBY2NlbGVyb21ldGVyLAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdEZXZpY2VPcmllbnRhdGlvbicsIHsKICAgIHZhbHVlOiBEZXZpY2VPcmllbnRhdGlvbiwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnR3lyb3Njb3BlJywgewogICAgdmFsdWU6IEd5cm9zY29wZSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnTG9jYXRpb25NYW5hZ2VyJywgewogICAgdmFsdWU6IExvY2F0aW9uTWFuYWdlciwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBXZWJBcHAuaXNWZXJzaW9uQXRMZWFzdCA9IGZ1bmN0aW9uKHZlcikgewogICAgcmV0dXJuIHZlcnNpb25BdExlYXN0KHZlcik7CiAgfTsKICBXZWJBcHAuc2V0SGVhZGVyQ29sb3IgPSBmdW5jdGlvbihjb2xvcl9rZXkpIHsKICAgIFdlYkFwcC5oZWFkZXJDb2xvciA9IGNvbG9yX2tleTsKICB9OwogIFdlYkFwcC5zZXRCYWNrZ3JvdW5kQ29sb3IgPSBmdW5jdGlvbihjb2xvcikgewogICAgV2ViQXBwLmJhY2tncm91bmRDb2xvciA9IGNvbG9yOwogIH07CiAgV2ViQXBwLnNldEJvdHRvbUJhckNvbG9yID0gZnVuY3Rpb24oY29sb3IpIHsKICAgIFdlYkFwcC5ib3R0b21CYXJDb2xvciA9IGNvbG9yOwogIH07CiAgV2ViQXBwLmVuYWJsZUNsb3NpbmdDb25maXJtYXRpb24gPSBmdW5jdGlvbigpIHsKICAgIFdlYkFwcC5pc0Nsb3NpbmdDb25maXJtYXRpb25FbmFibGVkID0gdHJ1ZTsKICB9OwogIFdlYkFwcC5kaXNhYmxlQ2xvc2luZ0NvbmZpcm1hdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgV2ViQXBwLmlzQ2xvc2luZ0NvbmZpcm1hdGlvbkVuYWJsZWQgPSBmYWxzZTsKICB9OwogIFdlYkFwcC5lbmFibGVWZXJ0aWNhbFN3aXBlcyA9IGZ1bmN0aW9uKCkgewogICAgV2ViQXBwLmlzVmVydGljYWxTd2lwZXNFbmFibGVkID0gdHJ1ZTsKICB9OwogIFdlYkFwcC5kaXNhYmxlVmVydGljYWxTd2lwZXMgPSBmdW5jdGlvbigpIHsKICAgIFdlYkFwcC5pc1ZlcnRpY2FsU3dpcGVzRW5hYmxlZCA9IGZhbHNlOwogIH07CiAgV2ViQXBwLmxvY2tPcmllbnRhdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgV2ViQXBwLmlzT3JpZW50YXRpb25Mb2NrZWQgPSB0cnVlOwogIH07CiAgV2ViQXBwLnVubG9ja09yaWVudGF0aW9uID0gZnVuY3Rpb24oKSB7CiAgICBXZWJBcHAuaXNPcmllbnRhdGlvbkxvY2tlZCA9IGZhbHNlOwogIH07CiAgV2ViQXBwLnJlcXVlc3RGdWxsc2NyZWVuID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc4LjAnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2QgcmVxdWVzdEZ1bGxzY3JlZW4gaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9yZXF1ZXN0X2Z1bGxzY3JlZW4nKTsKICB9OwogIFdlYkFwcC5leGl0RnVsbHNjcmVlbiA9IGZ1bmN0aW9uKCkgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnOC4wJykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIGV4aXRGdWxsc2NyZWVuIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfZXhpdF9mdWxsc2NyZWVuJyk7CiAgfTsKICBXZWJBcHAuYWRkVG9Ib21lU2NyZWVuID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc4LjAnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2QgYWRkVG9Ib21lU2NyZWVuIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfYWRkX3RvX2hvbWVfc2NyZWVuJyk7CiAgfTsKICBXZWJBcHAuY2hlY2tIb21lU2NyZWVuU3RhdHVzID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzguMCcpKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIE1ldGhvZCBjaGVja0hvbWVTY3JlZW5TdGF0dXMgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICBpZiAoY2FsbGJhY2spIHsKICAgICAgaG9tZVNjcmVlbkNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKICAgIH0KICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX2NoZWNrX2hvbWVfc2NyZWVuJyk7CiAgfTsKICBXZWJBcHAub25FdmVudCA9IGZ1bmN0aW9uKGV2ZW50VHlwZSwgY2FsbGJhY2spIHsKICAgIG9uV2ViVmlld0V2ZW50KGV2ZW50VHlwZSwgY2FsbGJhY2spOwogIH07CiAgV2ViQXBwLm9mZkV2ZW50ID0gZnVuY3Rpb24oZXZlbnRUeXBlLCBjYWxsYmFjaykge29mZldlYlZpZXdFdmVudChldmVudFR5cGUsIGNhbGxiYWNrKTsKICB9OwogIFdlYkFwcC5zZW5kRGF0YSA9IGZ1bmN0aW9uIChkYXRhKSB7CiAgICBpZiAoIWRhdGEgfHwgIWRhdGEubGVuZ3RoKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIERhdGEgaXMgcmVxdWlyZWQnLCBkYXRhKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcERhdGFJbnZhbGlkJyk7CiAgICB9CiAgICBpZiAoYnl0ZUxlbmd0aChkYXRhKSA+IDQwOTYpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gRGF0YSBpcyB0b28gbG9uZycsIGRhdGEpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwRGF0YUludmFsaWQnKTsKICAgIH0KICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX2RhdGFfc2VuZCcsIGZhbHNlLCB7ZGF0YTogZGF0YX0pOwogIH07CiAgV2ViQXBwLnN3aXRjaElubGluZVF1ZXJ5ID0gZnVuY3Rpb24gKHF1ZXJ5LCBjaG9vc2VfY2hhdF90eXBlcykgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi42JykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIHN3aXRjaElubGluZVF1ZXJ5IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgaWYgKCFpbml0UGFyYW1zLnRnV2ViQXBwQm90SW5saW5lKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIElubGluZSBtb2RlIGlzIGRpc2FibGVkIGZvciB0aGlzIGJvdC4gUmVhZCBtb3JlIGFib3V0IGlubGluZSBtb2RlOiBodHRwczovL2NvcmUudGVsZWdyYW0ub3JnL2JvdHMvaW5saW5lJyk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBJbmxpbmVNb2RlRGlzYWJsZWQnKTsKICAgIH0KICAgIHF1ZXJ5ID0gcXVlcnkgfHwgJyc7CiAgICBpZiAocXVlcnkubGVuZ3RoID4gMjU2KSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIElubGluZSBxdWVyeSBpcyB0b28gbG9uZycsIHF1ZXJ5KTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcElubGluZVF1ZXJ5SW52YWxpZCcpOwogICAgfQogICAgdmFyIGNoYXRfdHlwZXMgPSBbXTsKICAgIGlmIChjaG9vc2VfY2hhdF90eXBlcykgewogICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2hvb3NlX2NoYXRfdHlwZXMpKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQ2hvb3NlIGNoYXQgdHlwZXMgc2hvdWxkIGJlIGFuIGFycmF5JywgY2hvb3NlX2NoYXRfdHlwZXMpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBJbmxpbmVDaG9vc2VDaGF0VHlwZXNJbnZhbGlkJyk7CiAgICAgIH0KICAgICAgdmFyIGdvb2RfdHlwZXMgPSB7dXNlcnM6IDEsIGJvdHM6IDEsIGdyb3VwczogMSwgY2hhbm5lbHM6IDF9OwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNob29zZV9jaGF0X3R5cGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGNoYXRfdHlwZSA9IGNob29zZV9jaGF0X3R5cGVzW2ldOwogICAgICAgIGlmICghZ29vZF90eXBlc1tjaGF0X3R5cGVdKSB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBDaG9vc2UgY2hhdCB0eXBlIGlzIGludmFsaWQnLCBjaGF0X3R5cGUpOwogICAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcElubGluZUNob29zZUNoYXRUeXBlSW52YWxpZCcpOwogICAgICAgIH0KICAgICAgICBpZiAoZ29vZF90eXBlc1tjaGF0X3R5cGVdICE9IDIpIHsKICAgICAgICAgIGdvb2RfdHlwZXNbY2hhdF90eXBlXSA9IDI7CiAgICAgICAgICBjaGF0X3R5cGVzLnB1c2goY2hhdF90eXBlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3N3aXRjaF9pbmxpbmVfcXVlcnknLCBmYWxzZSwge3F1ZXJ5OiBxdWVyeSwgY2hhdF90eXBlczogY2hhdF90eXBlc30pOwogIH07CiAgV2ViQXBwLm9wZW5MaW5rID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykgewogICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdBJyk7CiAgICBhLmhyZWYgPSB1cmw7CiAgICBpZiAoYS5wcm90b2NvbCAhPSAnaHR0cDonICYmCiAgICAgICAgYS5wcm90b2NvbCAhPSAnaHR0cHM6JykgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBVcmwgcHJvdG9jb2wgaXMgbm90IHN1cHBvcnRlZCcsIHVybCk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBUZ1VybEludmFsaWQnKTsKICAgIH0KICAgIHZhciB1cmwgPSBhLmhyZWY7CiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgIGlmICh2ZXJzaW9uQXRMZWFzdCgnNi4xJykpIHsKICAgICAgdmFyIHJlcV9wYXJhbXMgPSB7dXJsOiB1cmx9OwogICAgICBpZiAodmVyc2lvbkF0TGVhc3QoJzYuNCcpICYmIG9wdGlvbnMudHJ5X2luc3RhbnRfdmlldykgewogICAgICAgIHJlcV9wYXJhbXMudHJ5X2luc3RhbnRfdmlldyA9IHRydWU7CiAgICAgIH0KICAgICAgaWYgKHZlcnNpb25BdExlYXN0KCc3LjYnKSAmJiBvcHRpb25zLnRyeV9icm93c2VyKSB7CiAgICAgICAgcmVxX3BhcmFtcy50cnlfYnJvd3NlciA9IG9wdGlvbnMudHJ5X2Jyb3dzZXI7CiAgICAgIH0KICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfb3Blbl9saW5rJywgZmFsc2UsIHJlcV9wYXJhbXMpOwogICAgfSBlbHNlIHsKICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7CiAgICB9CiAgfTsKICBXZWJBcHAub3BlblRlbGVncmFtTGluayA9IGZ1bmN0aW9uICh1cmwsIG9wdGlvbnMpIHsKICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnQScpOwogICAgYS5ocmVmID0gdXJsOwogICAgaWYgKGEucHJvdG9jb2wgIT0gJ2h0dHA6JyAmJgogICAgICAgIGEucHJvdG9jb2wgIT0gJ2h0dHBzOicpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gVXJsIHByb3RvY29sIGlzIG5vdCBzdXBwb3J0ZWQnLCB1cmwpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwVGdVcmxJbnZhbGlkJyk7CiAgICB9CiAgICBpZiAoIWlzVG1lSG9zdG5hbWUoYS5ob3N0bmFtZSkpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gVXJsIGhvc3QgaXMgbm90IHN1cHBvcnRlZCcsIHVybCk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBUZ1VybEludmFsaWQnKTsKICAgIH0KICAgIHZhciBwYXRoX2Z1bGwgPSBhLnBhdGhuYW1lICsgYS5zZWFyY2g7CiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgIGlmIChpc0lmcmFtZSB8fCB2ZXJzaW9uQXRMZWFzdCgnNi4xJykpIHsKICAgICAgdmFyIHJlcV9wYXJhbXMgPSB7cGF0aF9mdWxsOiBwYXRoX2Z1bGx9OwogICAgICBpZiAob3B0aW9ucy5mb3JjZV9yZXF1ZXN0KSB7CiAgICAgICAgcmVxX3BhcmFtcy5mb3JjZV9yZXF1ZXN0ID0gdHJ1ZTsKICAgICAgfQogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9vcGVuX3RnX2xpbmsnLCBmYWxzZSwgcmVxX3BhcmFtcyk7CiAgICB9IGVsc2UgewogICAgICBsb2NhdGlvbi5ocmVmID0gJ2h0dHBzOi8vdC5tZScgKyBwYXRoX2Z1bGw7CiAgICB9CiAgfTsKICBXZWJBcHAub3Blbkludm9pY2UgPSBmdW5jdGlvbiAodXJsLCBjYWxsYmFjaykgewogICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdBJyksIG1hdGNoLCBzbHVnOwogICAgYS5ocmVmID0gdXJsOwogICAgaWYgKGEucHJvdG9jb2wgIT0gJ2h0dHA6JyAmJgogICAgICAgIGEucHJvdG9jb2wgIT0gJ2h0dHBzOicgfHwKICAgICAgICAhaXNUbWVIb3N0bmFtZShhLmhvc3RuYW1lKSB8fAogICAgICAgICEobWF0Y2ggPSBhLnBhdGhuYW1lLm1hdGNoKC9eXC8oXCR8aW52b2ljZVwvKShbQS1aYS16MC05XC1fPV0rKSQvKSkgfHwKICAgICAgICAhKHNsdWcgPSBtYXRjaFsyXSkpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gSW52b2ljZSB1cmwgaXMgaW52YWxpZCcsIHVybCk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBJbnZvaWNlVXJsSW52YWxpZCcpOwogICAgfQogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi4xJykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIG9wZW5JbnZvaWNlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgaWYgKHdlYkFwcEludm9pY2VzW3NsdWddKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEludm9pY2UgaXMgYWxyZWFkeSBvcGVuZWQnKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEludm9pY2VPcGVuZWQnKTsKICAgIH0KICAgIHdlYkFwcEludm9pY2VzW3NsdWddID0gewogICAgICB1cmw6IHVybCwKICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICB9OwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfb3Blbl9pbnZvaWNlJywgZmFsc2UsIHtzbHVnOiBzbHVnfSk7CiAgfTsKICBXZWJBcHAuc2hvd1BvcHVwID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzYuMicpKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIE1ldGhvZCBzaG93UG9wdXAgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICBpZiAod2ViQXBwUG9wdXBPcGVuZWQpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gUG9wdXAgaXMgYWxyZWFkeSBvcGVuZWQnKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFBvcHVwT3BlbmVkJyk7CiAgICB9CiAgICB2YXIgdGl0bGUgPSAnJzsKICAgIHZhciBtZXNzYWdlID0gJyc7CiAgICB2YXIgYnV0dG9ucyA9IFtdOwogICAgdmFyIHBvcHVwX2J1dHRvbnMgPSB7fTsKICAgIHZhciBwb3B1cF9wYXJhbXMgPSB7fTsKICAgIGlmICh0eXBlb2YgcGFyYW1zLnRpdGxlICE9PSAndW5kZWZpbmVkJykgewogICAgICB0aXRsZSA9IHN0clRyaW0ocGFyYW1zLnRpdGxlKTsKICAgICAgaWYgKHRpdGxlLmxlbmd0aCA+IDY0KSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gUG9wdXAgdGl0bGUgaXMgdG9vIGxvbmcnLCB0aXRsZSk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFBvcHVwUGFyYW1JbnZhbGlkJyk7CiAgICAgIH0KICAgICAgaWYgKHRpdGxlLmxlbmd0aCA+IDApIHsKICAgICAgICBwb3B1cF9wYXJhbXMudGl0bGUgPSB0aXRsZTsKICAgICAgfQogICAgfQogICAgaWYgKHR5cGVvZiBwYXJhbXMubWVzc2FnZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgbWVzc2FnZSA9IHN0clRyaW0ocGFyYW1zLm1lc3NhZ2UpOwogICAgfQogICAgaWYgKCFtZXNzYWdlLmxlbmd0aCkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCBtZXNzYWdlIGlzIHJlcXVpcmVkJywgcGFyYW1zLm1lc3NhZ2UpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwUG9wdXBQYXJhbUludmFsaWQnKTsKICAgIH0KICAgIGlmIChtZXNzYWdlLmxlbmd0aCA+IDI1NikgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCBtZXNzYWdlIGlzIHRvbyBsb25nJywgbWVzc2FnZSk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBQb3B1cFBhcmFtSW52YWxpZCcpOwogICAgfQogICAgcG9wdXBfcGFyYW1zLm1lc3NhZ2UgPSBtZXNzYWdlOwogICAgaWYgKHR5cGVvZiBwYXJhbXMuYnV0dG9ucyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBhcmFtcy5idXR0b25zKSkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFBvcHVwIGJ1dHRvbnMgc2hvdWxkIGJlIGFuIGFycmF5JywgcGFyYW1zLmJ1dHRvbnMpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBQb3B1cFBhcmFtSW52YWxpZCcpOwogICAgICB9CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmJ1dHRvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgYnV0dG9uID0gcGFyYW1zLmJ1dHRvbnNbaV07CiAgICAgICAgdmFyIGJ0biA9IHt9OwogICAgICAgIHZhciBpZCA9ICcnOwogICAgICAgIGlmICh0eXBlb2YgYnV0dG9uLmlkICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgaWQgPSBidXR0b24uaWQudG9TdHJpbmcoKTsKICAgICAgICAgIGlmIChpZC5sZW5ndGggPiA2NCkgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCBidXR0b24gaWQgaXMgdG9vIGxvbmcnLCBpZCk7CiAgICAgICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBQb3B1cFBhcmFtSW52YWxpZCcpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBidG4uaWQgPSBpZDsKICAgICAgICB2YXIgYnV0dG9uX3R5cGUgPSBidXR0b24udHlwZTsKICAgICAgICBpZiAodHlwZW9mIGJ1dHRvbl90eXBlID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgYnV0dG9uX3R5cGUgPSAnZGVmYXVsdCc7CiAgICAgICAgfQogICAgICAgIGJ0bi50eXBlID0gYnV0dG9uX3R5cGU7CiAgICAgICAgaWYgKGJ1dHRvbl90eXBlID09ICdvaycgfHwKICAgICAgICAgICAgYnV0dG9uX3R5cGUgPT0gJ2Nsb3NlJyB8fAogICAgICAgICAgICBidXR0b25fdHlwZSA9PSAnY2FuY2VsJykgewogICAgICAgICAgLy8gbm8gcGFyYW1zIG5lZWRlZAogICAgICAgIH0gZWxzZSBpZiAoYnV0dG9uX3R5cGUgPT0gJ2RlZmF1bHQnIHx8CiAgICAgICAgICAgICAgICAgICBidXR0b25fdHlwZSA9PSAnZGVzdHJ1Y3RpdmUnKSB7CiAgICAgICAgICB2YXIgdGV4dCA9ICcnOwogICAgICAgICAgaWYgKHR5cGVvZiBidXR0b24udGV4dCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgdGV4dCA9IHN0clRyaW0oYnV0dG9uLnRleHQpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKCF0ZXh0Lmxlbmd0aCkgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCBidXR0b24gdGV4dCBpcyByZXF1aXJlZCBmb3IgdHlwZSAnICsgYnV0dG9uX3R5cGUsIGJ1dHRvbi50ZXh0KTsKICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFBvcHVwUGFyYW1JbnZhbGlkJyk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAodGV4dC5sZW5ndGggPiA2NCkgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCBidXR0b24gdGV4dCBpcyB0b28gbG9uZycsIHRleHQpOwogICAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwUG9wdXBQYXJhbUludmFsaWQnKTsKICAgICAgICAgIH0KICAgICAgICAgIGJ0bi50ZXh0ID0gdGV4dDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gUG9wdXAgYnV0dG9uIHR5cGUgaXMgaW52YWxpZCcsIGJ1dHRvbl90eXBlKTsKICAgICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBQb3B1cFBhcmFtSW52YWxpZCcpOwogICAgICAgIH0KICAgICAgICBidXR0b25zLnB1c2goYnRuKTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgYnV0dG9ucy5wdXNoKHtpZDogJycsIHR5cGU6ICdjbG9zZSd9KTsKICAgIH0KICAgIGlmIChidXR0b25zLmxlbmd0aCA8IDEpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gUG9wdXAgc2hvdWxkIGhhdmUgYXQgbGVhc3Qgb25lIGJ1dHRvbicpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwUG9wdXBQYXJhbUludmFsaWQnKTsKICAgIH0KICAgIGlmIChidXR0b25zLmxlbmd0aCA+IDMpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gUG9wdXAgc2hvdWxkIG5vdCBoYXZlIG1vcmUgdGhhbiAzIGJ1dHRvbnMnKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFBvcHVwUGFyYW1JbnZhbGlkJyk7CiAgICB9CiAgICBwb3B1cF9wYXJhbXMuYnV0dG9ucyA9IGJ1dHRvbnM7CgogICAgd2ViQXBwUG9wdXBPcGVuZWQgPSB7CiAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgfTsKICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX29wZW5fcG9wdXAnLCBmYWxzZSwgcG9wdXBfcGFyYW1zKTsKICB9OwogIFdlYkFwcC5zaG93QWxlcnQgPSBmdW5jdGlvbiAobWVzc2FnZSwgY2FsbGJhY2spIHsKICAgIFdlYkFwcC5zaG93UG9wdXAoewogICAgICBtZXNzYWdlOiBtZXNzYWdlCiAgICB9LCBjYWxsYmFjayA/IGZ1bmN0aW9uKCl7IGNhbGxiYWNrKCk7IH0gOiBudWxsKTsKICB9OwogIFdlYkFwcC5zaG93Q29uZmlybSA9IGZ1bmN0aW9uIChtZXNzYWdlLCBjYWxsYmFjaykgewogICAgV2ViQXBwLnNob3dQb3B1cCh7CiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsCiAgICAgIGJ1dHRvbnM6IFsKICAgICAgICB7dHlwZTogJ29rJywgaWQ6ICdvayd9LAogICAgICAgIHt0eXBlOiAnY2FuY2VsJ30KICAgICAgXQogICAgfSwgY2FsbGJhY2sgPyBmdW5jdGlvbiAoYnV0dG9uX2lkKSB7CiAgICAgIGNhbGxiYWNrKGJ1dHRvbl9pZCA9PSAnb2snKTsKICAgIH0gOiBudWxsKTsKICB9OwogIFdlYkFwcC5zaG93U2NhblFyUG9wdXAgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi40JykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIHNob3dTY2FuUXJQb3B1cCBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwTWV0aG9kVW5zdXBwb3J0ZWQnKTsKICAgIH0KICAgIGlmICh3ZWJBcHBTY2FuUXJQb3B1cE9wZW5lZCkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCBpcyBhbHJlYWR5IG9wZW5lZCcpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwU2NhblFyUG9wdXBPcGVuZWQnKTsKICAgIH0KICAgIHZhciB0ZXh0ID0gJyc7CiAgICB2YXIgcG9wdXBfcGFyYW1zID0ge307CiAgICBpZiAodHlwZW9mIHBhcmFtcy50ZXh0ICE9PSAndW5kZWZpbmVkJykgewogICAgICB0ZXh0ID0gc3RyVHJpbShwYXJhbXMudGV4dCk7CiAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IDY0KSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gU2NhbiBRUiBwb3B1cCB0ZXh0IGlzIHRvbyBsb25nJywgdGV4dCk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFNjYW5RclBvcHVwUGFyYW1JbnZhbGlkJyk7CiAgICAgIH0KICAgICAgaWYgKHRleHQubGVuZ3RoID4gMCkgewogICAgICAgIHBvcHVwX3BhcmFtcy50ZXh0ID0gdGV4dDsKICAgICAgfQogICAgfQoKICAgIHdlYkFwcFNjYW5RclBvcHVwT3BlbmVkID0gewogICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgIH07CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9vcGVuX3NjYW5fcXJfcG9wdXAnLCBmYWxzZSwgcG9wdXBfcGFyYW1zKTsKICB9OwogIFdlYkFwcC5jbG9zZVNjYW5RclBvcHVwID0gZnVuY3Rpb24gKCkgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi40JykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIGNsb3NlU2NhblFyUG9wdXAgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CgogICAgd2ViQXBwU2NhblFyUG9wdXBPcGVuZWQgPSBmYWxzZTsKICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX2Nsb3NlX3NjYW5fcXJfcG9wdXAnLCBmYWxzZSk7CiAgfTsKICBXZWJBcHAucmVhZFRleHRGcm9tQ2xpcGJvYXJkID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjQnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2QgcmVhZFRleHRGcm9tQ2xpcGJvYXJkIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgdmFyIHJlcV9pZCA9IGdlbmVyYXRlQ2FsbGJhY2tJZCgxNik7CiAgICB2YXIgcmVxX3BhcmFtcyA9IHtyZXFfaWQ6IHJlcV9pZH07CiAgICB3ZWJBcHBDYWxsYmFja3NbcmVxX2lkXSA9IHsKICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICB9OwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfcmVhZF90ZXh0X2Zyb21fY2xpcGJvYXJkJywgZmFsc2UsIHJlcV9wYXJhbXMpOwogIH07CiAgV2ViQXBwLnJlcXVlc3RXcml0ZUFjY2VzcyA9IGZ1bmN0aW9uIChjYWxsYmFjaykgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi45JykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIHJlcXVlc3RXcml0ZUFjY2VzcyBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwTWV0aG9kVW5zdXBwb3J0ZWQnKTsKICAgIH0KICAgIGlmIChXZWJBcHBXcml0ZUFjY2Vzc1JlcXVlc3RlZCkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBXcml0ZSBhY2Nlc3MgaXMgYWxyZWFkeSByZXF1ZXN0ZWQnKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFdyaXRlQWNjZXNzUmVxdWVzdGVkJyk7CiAgICB9CiAgICBXZWJBcHBXcml0ZUFjY2Vzc1JlcXVlc3RlZCA9IHsKICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICB9OwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfcmVxdWVzdF93cml0ZV9hY2Nlc3MnKTsKICB9OwogIFdlYkFwcC5yZXF1ZXN0Q29udGFjdCA9IGZ1bmN0aW9uIChjYWxsYmFjaykgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi45JykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIHJlcXVlc3RDb250YWN0IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgaWYgKFdlYkFwcENvbnRhY3RSZXF1ZXN0ZWQpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQ29udGFjdCBpcyBhbHJlYWR5IHJlcXVlc3RlZCcpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwQ29udGFjdFJlcXVlc3RlZCcpOwogICAgfQogICAgV2ViQXBwQ29udGFjdFJlcXVlc3RlZCA9IHsKICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICB9OwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfcmVxdWVzdF9waG9uZScpOwogIH07CiAgV2ViQXBwLmRvd25sb2FkRmlsZSA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc4LjAnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2QgZG93bmxvYWRGaWxlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgaWYgKHdlYkFwcERvd25sb2FkRmlsZVJlcXVlc3RlZCkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCBpcyBhbHJlYWR5IG9wZW5lZCcpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwRG93bmxvYWRGaWxlUG9wdXBPcGVuZWQnKTsKICAgIH0KICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnQScpOwoKICAgIHZhciBkbF9wYXJhbXMgPSB7fTsKICAgIGlmICghcGFyYW1zIHx8ICFwYXJhbXMudXJsIHx8ICFwYXJhbXMudXJsLmxlbmd0aCkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBVcmwgaXMgcmVxdWlyZWQnKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcERvd25sb2FkRmlsZVBhcmFtSW52YWxpZCcpOwogICAgfQogICAgYS5ocmVmID0gcGFyYW1zLnVybDsKICAgIGlmIChhLnByb3RvY29sICE9ICdodHRwczonKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFVybCBwcm90b2NvbCBpcyBub3Qgc3VwcG9ydGVkJywgdXJsKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcERvd25sb2FkRmlsZVBhcmFtSW52YWxpZCcpOwogICAgfQogICAgZGxfcGFyYW1zLnVybCA9IGEuaHJlZjsKCiAgICBpZiAoIXBhcmFtcyB8fCAhcGFyYW1zLmZpbGVfbmFtZSB8fCAhcGFyYW1zLmZpbGVfbmFtZS5sZW5ndGgpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gRmlsZSBuYW1lIGlzIHJlcXVpcmVkJyk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBEb3dubG9hZEZpbGVQYXJhbUludmFsaWQnKTsKICAgIH0KICAgIGRsX3BhcmFtcy5maWxlX25hbWUgPSBwYXJhbXMuZmlsZV9uYW1lOwoKICAgIHdlYkFwcERvd25sb2FkRmlsZVJlcXVlc3RlZCA9IHsKICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICB9OwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfcmVxdWVzdF9maWxlX2Rvd25sb2FkJywgZmFsc2UsIGRsX3BhcmFtcyk7CiAgfTsKICBXZWJBcHAuc2hhcmVUb1N0b3J5ID0gZnVuY3Rpb24gKG1lZGlhX3VybCwgcGFyYW1zKSB7CiAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc3LjgnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2Qgc2hhcmVUb1N0b3J5IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdBJyk7CiAgICBhLmhyZWYgPSBtZWRpYV91cmw7CiAgICBpZiAoYS5wcm90b2NvbCAhPSAnaHR0cDonICYmCiAgICAgICAgYS5wcm90b2NvbCAhPSAnaHR0cHM6JykgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZWRpYSB1cmwgcHJvdG9jb2wgaXMgbm90IHN1cHBvcnRlZCcsIHVybCk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZWRpYVVybEludmFsaWQnKTsKICAgIH0KICAgIHZhciBzaGFyZV9wYXJhbXMgPSB7fTsKICAgIHNoYXJlX3BhcmFtcy5tZWRpYV91cmwgPSBhLmhyZWY7CiAgICBpZiAodHlwZW9mIHBhcmFtcy50ZXh0ICE9PSAndW5kZWZpbmVkJykgewogICAgICB2YXIgdGV4dCA9IHN0clRyaW0ocGFyYW1zLnRleHQpOwogICAgICBpZiAodGV4dC5sZW5ndGggPiAyMDQ4KSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gVGV4dCBpcyB0b28gbG9uZycsIHRleHQpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBTaGFyZVRvU3RvcnlQYXJhbUludmFsaWQnKTsKICAgICAgfQogICAgICBpZiAodGV4dC5sZW5ndGggPiAwKSB7CiAgICAgICAgc2hhcmVfcGFyYW1zLnRleHQgPSB0ZXh0OwogICAgICB9CiAgICB9CiAgICBpZiAodHlwZW9mIHBhcmFtcy53aWRnZXRfbGluayAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgcGFyYW1zLndpZGdldF9saW5rID0gcGFyYW1zLndpZGdldF9saW5rIHx8IHt9OwogICAgICBhLmhyZWYgPSBwYXJhbXMud2lkZ2V0X2xpbmsudXJsOwogICAgICBpZiAoYS5wcm90b2NvbCAhPSAnaHR0cDonICYmCiAgICAgICAgICBhLnByb3RvY29sICE9ICdodHRwczonKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTGluayBwcm90b2NvbCBpcyBub3Qgc3VwcG9ydGVkJywgdXJsKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwU2hhcmVUb1N0b3J5UGFyYW1JbnZhbGlkJyk7CiAgICAgIH0KICAgICAgdmFyIHdpZGdldF9saW5rID0gewogICAgICAgIHVybDogYS5ocmVmCiAgICAgIH07CiAgICAgIGlmICh0eXBlb2YgcGFyYW1zLndpZGdldF9saW5rLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgdmFyIGxpbmtfbmFtZSA9IHN0clRyaW0ocGFyYW1zLndpZGdldF9saW5rLm5hbWUpOwogICAgICAgIGlmIChsaW5rX25hbWUubGVuZ3RoID4gNDgpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIExpbmsgbmFtZSBpcyB0b28gbG9uZycsIGxpbmtfbmFtZSk7CiAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwU2hhcmVUb1N0b3J5UGFyYW1JbnZhbGlkJyk7CiAgICAgICAgfQogICAgICAgIGlmIChsaW5rX25hbWUubGVuZ3RoID4gMCkgewogICAgICAgICAgd2lkZ2V0X2xpbmsubmFtZSA9IGxpbmtfbmFtZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgc2hhcmVfcGFyYW1zLndpZGdldF9saW5rID0gd2lkZ2V0X2xpbms7CiAgICB9CgogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc2hhcmVfdG9fc3RvcnknLCBmYWxzZSwgc2hhcmVfcGFyYW1zKTsKICB9OwogIFdlYkFwcC5zaGFyZU1lc3NhZ2UgPSBmdW5jdGlvbiAobXNnX2lkLCBjYWxsYmFjaykgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnOC4wJykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIHNoYXJlTWVzc2FnZSBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwTWV0aG9kVW5zdXBwb3J0ZWQnKTsKICAgIH0KICAgIGlmIChXZWJBcHBTaGFyZU1lc3NhZ2VPcGVuZWQpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gU2hhcmUgbWVzc2FnZSBpcyBhbHJlYWR5IG9wZW5lZCcpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwU2hhcmVNZXNzYWdlT3BlbmVkJyk7CiAgICB9CiAgICBXZWJBcHBTaGFyZU1lc3NhZ2VPcGVuZWQgPSB7CiAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgfTsKICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3NlbmRfcHJlcGFyZWRfbWVzc2FnZScsIGZhbHNlLCB7aWQ6IG1zZ19pZH0pOwogIH07CiAgV2ViQXBwLnJlcXVlc3RDaGF0ID0gZnVuY3Rpb24gKHJlcV9pZCwgY2FsbGJhY2spIHsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzkuNicpKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIE1ldGhvZCByZXF1ZXN0Q2hhdCBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwTWV0aG9kVW5zdXBwb3J0ZWQnKTsKICAgIH0KICAgIGlmIChXZWJBcHBSZXF1ZXN0Q2hhdE9wZW5lZCkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBSZXF1ZXN0IGNoYXQgaXMgYWxyZWFkeSBvcGVuZWQnKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFJlcXVlc3RDaGF0T3BlbmVkJyk7CiAgICB9CiAgICBXZWJBcHBSZXF1ZXN0Q2hhdE9wZW5lZCA9IHsKICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICB9OwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfcmVxdWVzdF9jaGF0JywgZmFsc2UsIHtyZXFfaWQ6IHJlcV9pZH0pOwogIH07CiAgV2ViQXBwLnNldEVtb2ppU3RhdHVzID0gZnVuY3Rpb24gKGN1c3RvbV9lbW9qaV9pZCwgcGFyYW1zLCBjYWxsYmFjaykgewogICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9OwogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnOC4wJykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIHNldEVtb2ppU3RhdHVzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgdmFyIHN0YXR1c19wYXJhbXMgPSB7fTsKICAgIHN0YXR1c19wYXJhbXMuY3VzdG9tX2Vtb2ppX2lkID0gY3VzdG9tX2Vtb2ppX2lkOwogICAgaWYgKHR5cGVvZiBwYXJhbXMuZHVyYXRpb24gIT09ICd1bmRlZmluZWQnKSB7CiAgICAgIHN0YXR1c19wYXJhbXMuZHVyYXRpb24gPSBwYXJhbXMuZHVyYXRpb247CiAgICB9CiAgICBpZiAoV2ViQXBwRW1vamlTdGF0dXNSZXF1ZXN0ZWQpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gRW1vamkgc3RhdHVzIGlzIGFscmVhZHkgcmVxdWVzdGVkJyk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBFbW9qaVN0YXR1c1JlcXVlc3RlZCcpOwogICAgfQogICAgV2ViQXBwRW1vamlTdGF0dXNSZXF1ZXN0ZWQgPSB7CiAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgfTsKICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3NldF9lbW9qaV9zdGF0dXMnLCBmYWxzZSwgc3RhdHVzX3BhcmFtcyk7CiAgfTsKICBXZWJBcHAucmVxdWVzdEVtb2ppU3RhdHVzQWNjZXNzID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc4LjAnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2QgcmVxdWVzdEVtb2ppU3RhdHVzQWNjZXNzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgaWYgKFdlYkFwcEVtb2ppU3RhdHVzQWNjZXNzUmVxdWVzdGVkKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEVtb2ppIHN0YXR1cyBwZXJtaXNzaW9uIGlzIGFscmVhZHkgcmVxdWVzdGVkJyk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBFbW9qaVN0YXR1c0FjY2Vzc1JlcXVlc3RlZCcpOwogICAgfQogICAgV2ViQXBwRW1vamlTdGF0dXNBY2Nlc3NSZXF1ZXN0ZWQgPSB7CiAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgfTsKICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3JlcXVlc3RfZW1vamlfc3RhdHVzX2FjY2VzcycpOwogIH07CiAgV2ViQXBwLmludm9rZUN1c3RvbU1ldGhvZCA9IGZ1bmN0aW9uIChtZXRob2QsIHBhcmFtcywgY2FsbGJhY2spIHsKICAgIGludm9rZUN1c3RvbU1ldGhvZChtZXRob2QsIHBhcmFtcywgY2FsbGJhY2spOwogIH07CiAgV2ViQXBwLmhpZGVLZXlib2FyZCA9IGZ1bmN0aW9uICgpIHsKICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX2hpZGVfa2V5Ym9hcmQnKTsKICB9OwogIFdlYkFwcC5yZWFkeSA9IGZ1bmN0aW9uICgpIHsKICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3JlYWR5Jyk7CiAgfTsKICBXZWJBcHAuZXhwYW5kID0gZnVuY3Rpb24gKCkgewogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfZXhwYW5kJyk7CiAgfTsKICBXZWJBcHAuY2xvc2UgPSBmdW5jdGlvbiAob3B0aW9ucykgewogICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICB2YXIgcmVxX3BhcmFtcyA9IHt9OwogICAgaWYgKHZlcnNpb25BdExlYXN0KCc3LjYnKSAmJiBvcHRpb25zLnJldHVybl9iYWNrKSB7CiAgICAgIHJlcV9wYXJhbXMucmV0dXJuX2JhY2sgPSB0cnVlOwogICAgfQogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfY2xvc2UnLCBmYWxzZSwgcmVxX3BhcmFtcyk7CiAgfTsKCiAgd2luZG93LlRlbGVncmFtLldlYkFwcCA9IFdlYkFwcDsKCiAgdXBkYXRlSGVhZGVyQ29sb3IoKTsKICB1cGRhdGVCYWNrZ3JvdW5kQ29sb3IoKTsKICB1cGRhdGVCb3R0b21CYXJDb2xvcigpOwogIHNldFZpZXdwb3J0SGVpZ2h0KCk7CiAgaWYgKGluaXRQYXJhbXMudGdXZWJBcHBTaG93U2V0dGluZ3MpIHsKICAgIFNldHRpbmdzQnV0dG9uLnNob3coKTsKICB9CgogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd1Jlc2l6ZSk7CiAgaWYgKGlzSWZyYW1lKSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGxpbmtIYW5kbGVyKTsKICB9CgogIFdlYlZpZXcub25FdmVudCgndGhlbWVfY2hhbmdlZCcsIG9uVGhlbWVDaGFuZ2VkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ3ZpZXdwb3J0X2NoYW5nZWQnLCBvblZpZXdwb3J0Q2hhbmdlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCdzYWZlX2FyZWFfY2hhbmdlZCcsIG9uU2FmZUFyZWFDaGFuZ2VkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ2NvbnRlbnRfc2FmZV9hcmVhX2NoYW5nZWQnLCBvbkNvbnRlbnRTYWZlQXJlYUNoYW5nZWQpOwogIFdlYlZpZXcub25FdmVudCgndmlzaWJpbGl0eV9jaGFuZ2VkJywgb25WaXNpYmlsaXR5Q2hhbmdlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCdpbnZvaWNlX2Nsb3NlZCcsIG9uSW52b2ljZUNsb3NlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCdwb3B1cF9jbG9zZWQnLCBvblBvcHVwQ2xvc2VkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ3FyX3RleHRfcmVjZWl2ZWQnLCBvblFyVGV4dFJlY2VpdmVkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ3NjYW5fcXJfcG9wdXBfY2xvc2VkJywgb25TY2FuUXJQb3B1cENsb3NlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCdjbGlwYm9hcmRfdGV4dF9yZWNlaXZlZCcsIG9uQ2xpcGJvYXJkVGV4dFJlY2VpdmVkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ3dyaXRlX2FjY2Vzc19yZXF1ZXN0ZWQnLCBvbldyaXRlQWNjZXNzUmVxdWVzdGVkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ3Bob25lX3JlcXVlc3RlZCcsIG9uUGhvbmVSZXF1ZXN0ZWQpOwogIFdlYlZpZXcub25FdmVudCgnZmlsZV9kb3dubG9hZF9yZXF1ZXN0ZWQnLCBvbkZpbGVEb3dubG9hZFJlcXVlc3RlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCdjdXN0b21fbWV0aG9kX2ludm9rZWQnLCBvbkN1c3RvbU1ldGhvZEludm9rZWQpOwogIFdlYlZpZXcub25FdmVudCgnZnVsbHNjcmVlbl9jaGFuZ2VkJywgb25GdWxsc2NyZWVuQ2hhbmdlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCdmdWxsc2NyZWVuX2ZhaWxlZCcsIG9uRnVsbHNjcmVlbkZhaWxlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCdob21lX3NjcmVlbl9hZGRlZCcsIG9uSG9tZVNjcmVlbkFkZGVkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ2hvbWVfc2NyZWVuX2NoZWNrZWQnLCBvbkhvbWVTY3JlZW5DaGVja2VkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ3ByZXBhcmVkX21lc3NhZ2Vfc2VudCcsIG9uUHJlcGFyZWRNZXNzYWdlU2VudCk7CiAgV2ViVmlldy5vbkV2ZW50KCdwcmVwYXJlZF9tZXNzYWdlX2ZhaWxlZCcsIG9uUHJlcGFyZWRNZXNzYWdlRmFpbGVkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ3JlcXVlc3RlZF9jaGF0X3NlbnQnLCBvblJlcXVlc3RlZENoYXRTZW50KTsKICBXZWJWaWV3Lm9uRXZlbnQoJ3JlcXVlc3RlZF9jaGF0X2ZhaWxlZCcsIG9uUmVxdWVzdGVkQ2hhdEZhaWxlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCdlbW9qaV9zdGF0dXNfc2V0Jywgb25FbW9qaVN0YXR1c1NldCk7CiAgV2ViVmlldy5vbkV2ZW50KCdlbW9qaV9zdGF0dXNfZmFpbGVkJywgb25FbW9qaVN0YXR1c0ZhaWxlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCdlbW9qaV9zdGF0dXNfYWNjZXNzX3JlcXVlc3RlZCcsIG9uRW1vamlTdGF0dXNBY2Nlc3NSZXF1ZXN0ZWQpOwogIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3JlcXVlc3RfdGhlbWUnKTsKICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9yZXF1ZXN0X3ZpZXdwb3J0Jyk7CiAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfcmVxdWVzdF9zYWZlX2FyZWEnKTsKICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9yZXF1ZXN0X2NvbnRlbnRfc2FmZV9hcmVhJyk7Cgp9KSgpOwo="}},"time_used":99,"timings":{"blocked":-1,"dns":3,"connect":22,"send":0,"wait":44,"receive":0,"ssl":30},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"gomaxis.net/api/session/Ld8xYk19rTGKb_oA6RJGl5sIvPeCSTSE/status?bot_id=0","fqdn":"gomaxis.net","domain":"gomaxis.net","tld":"net"},"ip":{"addr":"195.2.71.217","port":443,"asn":48282,"as":"Hosting technology LTD","country":"Russia","country_code":"RU"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://gomaxis.net/s/xaos","date":"2026-07-26T17:21:02.632Z","timestamp":1785086462632,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"gomaxis.net","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Thu, 23 Jul 2026 08:01:27 GMT","end":"Wed, 21 Oct 2026 08:01:26 GMT"},"fingerprint":{"sha1":"EE:4E:07:0D:7C:D9:B1:21:96:4B:FB:94:D5:15:F6:63:04:AF:86:A3","sha256":"6B:6A:20:05:87:B5:4E:CB:C2:E6:F2:8F:53:4A:1D:EB:CE:3C:95:09:28:AA:C0:DA:CD:D6:7E:25:EC:2C:A1:DA"}}},"request":{"raw":"GET /api/session/Ld8xYk19rTGKb_oA6RJGl5sIvPeCSTSE/status?bot_id=0 HTTP/1.1\r\nHost: gomaxis.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://gomaxis.net/s/xaos\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\nserver: nginx/1.28.3 (Ubuntu)\r\ndate: Sun, 26 Jul 2026 17:21:03 GMT\r\ncontent-type: application/json\r\ncontent-length: 116\r\ncache-control: no-store, no-cache, must-revalidate, max-age=0, private\r\npragma: no-cache\r\nexpires: 0\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Ubuntu","description":"Ubuntu is a free and open-source operating system on Linux for the enterprise server, desktop, cloud, and IoT.","website":"https://www.ubuntu.com/server","common_platform_enumeration":"cpe:2.3:o:canonical:ubuntu_linux:*:*:*:*:*:*:*:*","icon":"Ubuntu.svg","categories":["Operating systems"]},{"name":"Nginx:1.28.3","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":116,"size_decoded":374,"mime_type":"application/json","magic":"JSON text data","md5":"3c55b7b3ccea69166bf1b35c238ceac0","sha1":"4731af47d8bd4febf6295b7c45ca64730a9b62d8","sha256":"a8b869dbce4ef24961a30854a264aae3a315cfd22de929cf12bbeb38e233b6ae","sha512":"75c02dec192db47d46024d17f0fc68d4dc88523ab5b960cda228d3a8f719c42adf6eb94144d5bbb8913453ca8f8883659e5b9872cad48508c1644bc6e833733e","ssdeep":"","tlshash":"8fb012607eb934200cc1de42f57c2be165a8ed0464aa40edfadc802cc6a4b8fbd98154","first_seen":"2026-07-26T17:21:38.2478Z","last_seen":"2026-07-26T17:21:38.2478Z","times_seen":1,"resource_available":false,"data":"eyJzZXNzaW9uX2lkIjoiTGQ4eFlrMTlyVEdLYl9vQTZSSkdsNXNJdlBlQ1NUU0UiLCJzdGF0dXMiOiJwZW5kaW5nIiwiZXhwaXJlc19hdCI6IjIwMjYtMDctMjZUMTc6NTE6MDIuMDI1NTQ2KzAwOjAwIn0="}},"time_used":590,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":590,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/nunito/v32/XRXV3I6Li01BKofINeaB.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://gomaxis.net/s/xaos","date":"2026-07-26T17:21:02.656Z","timestamp":1785086462656,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/nunito/v32/XRXV3I6Li01BKofINeaB.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://gomaxis.net\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 39128\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 10:29:09 GMT\r\nexpires: Sat, 24 Jul 2027 10:29:09 GMT\r\ncache-control: public, max-age=31536000\r\nage: 197513\r\nlast-modified: Mon, 15 Sep 2025 17:03:34 GMT\r\ncontent-type: font/woff2\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":39128,"size_decoded":39941,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 39128, version 1.0","md5":"166202cc391c71a57730bed12cbcb159","sha1":"76388dbfe374be06fdc6f9ba38d3f4e479025eeb","sha256":"ba344451eab25b217a165363b1982048a5e5830a0daf36577973955a04cac793","sha512":"9f4d1c14aa729e837b964898a1dd27e99ff674256c43326aa982cc0c17fa8b0d71a0b7df627f03cb4ac6ec7f22f0a19d65302743ff09187ce81414dde74c43e2","ssdeep":"768:lxbc6Qon+A9wOfdj2rELqjOmaLqLqKeI+00t0xIj:layndm0j2cqjOmGq+tbUIj","tlshash":"d9030284fd6a02d8c7fc1f6ef25a9f28272c2078440b6a9c44a79a6bd5975f84dd3330","first_seen":"2025-09-17T01:48:11.920934Z","last_seen":"2026-08-01T17:48:50.537402Z","times_seen":42464,"resource_available":false,"data":"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"}},"time_used":79,"timings":{"blocked":-1,"dns":0,"connect":29,"send":0,"wait":27,"receive":22,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/lilitaone/v17/i7dPIFZ9Zz-WBtRtedDbYEF8RQ.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://gomaxis.net/s/xaos","date":"2026-07-26T17:21:02.658Z","timestamp":1785086462658,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/lilitaone/v17/i7dPIFZ9Zz-WBtRtedDbYEF8RQ.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://gomaxis.net\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 10672\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Sun, 26 Jul 2026 14:03:53 GMT\r\nexpires: Mon, 26 Jul 2027 14:03:53 GMT\r\ncache-control: public, max-age=31536000\r\nage: 11829\r\nlast-modified: Tue, 09 Sep 2025 17:08:13 GMT\r\ncontent-type: font/woff2\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":10672,"size_decoded":11484,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 10672, version 1.0","md5":"9a95c766f3e10049fcb4e726719e531d","sha1":"3b71f6c24c7e1301971abb9a80a74b118188fda4","sha256":"d2575d4fa3632580aafcbcdf6978b3b57e144b90cf5bd9c2c98194f28b869704","sha512":"ba654fa2765cf9877139ca0cdd7de4124b970109cacba2dc6e91cca2adf6fda9d93e80342264a2e6d97f7cda20e17acf88784586ddf9eae84e695721ddcef6e0","ssdeep":"192:gAYkEaKmmdv+uBQGC7JlO/0U9xcdDrnBpyIUi57SK73GEXpFnhIzXEDsikkfjTOU:gc5Wv5BfC7Js0UvS3BpyJi023GEXnnhL","tlshash":"6a22c084f2754c74331abf776002df777a7a43016e278e83b68499c13a016bca48b79c","first_seen":"2023-05-09T15:00:14Z","last_seen":"2026-08-01T11:32:35.40036Z","times_seen":597,"resource_available":false,"data":"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"}},"time_used":49,"timings":{"blocked":23,"dns":0,"connect":0,"send":0,"wait":24,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}}]}
