{"report_id":"e315afdd-32d6-4811-801a-f1b31f6d2eb3","version":0,"status":"done","tags":[],"date":"2026-07-27T05:00:31Z","url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.135","port":0,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"final":{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"title":"circuittradetech","dom":{"size":177465,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (9854)","md5":"e5fc31b55882bc2ae22968741831a259","sha1":"4c1033662abf4bd5a26c36d555d503b6284933d1","sha256":"c99196846d6920294d07a63507648bf0a5e3bba7d6c940b77fb8c7d969287d49","sha512":"8179370d666dc209fa8fdf84f00f7f2fab5f78b104dc68b7197a9298a732fed67fde75ce67fcf33333f46fa7aeefc1416bab3267d607971107f346ce26e948e4","ssdeep":"1536:iAape7zMbP+2IhtYT5Fa001x00w9007X00w5CzSxkw8DdGs/cIX9zMb/fQLubBxW:kU7++dtYT5FImBPzSxkw8DdGs1ohm","tlshash":"2204a52079f35027309f72ca9123271d2692d387c24597e4b9fc43e45fbaca9bab3558","dom_hash":"domhash9e4dfd4e7bdfcc938bf7cbb0f64169de","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.135","port":0,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T05:00:31Z","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":1}},"detection":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null},"summary":[{"fqdn":"translate.google.com","ip":{"addr":"142.250.178.78","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"1997-09-15","domain_rank":609,"first_seen":"2012-05-30T01:30:32Z","last_seen":"2026-07-20T21:58:05.03314Z","alert_count":0,"request_count":2,"received_data":5115,"sent_data":1113,"comment":"","tags":null,"fingerprints":null},{"fqdn":"translate.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":6317,"first_seen":"2012-05-31T07:21:21Z","last_seen":"2026-07-20T14:48:05.930258Z","alert_count":0,"request_count":5,"received_data":272718,"sent_data":2953,"comment":"","tags":null,"fingerprints":null},{"fqdn":"translate-pa.googleapis.com","ip":{"addr":"172.217.117.4","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2005-01-25","domain_rank":8472,"first_seen":"2021-11-04T06:37:42Z","last_seen":"2026-07-21T21:38:43.172366Z","alert_count":0,"request_count":1,"received_data":32351,"sent_data":576,"comment":"","tags":null,"fingerprints":null},{"fqdn":"fonts.googleapis.com","ip":{"addr":"142.250.178.106","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-26T22:23:14.439231Z","alert_count":0,"request_count":1,"received_data":22041,"sent_data":690,"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":"static.getbutton.io","ip":{"addr":"104.26.14.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2019-09-03","domain_rank":386210,"first_seen":"2019-10-01T09:11:58Z","last_seen":"2026-07-25T14:48:54.018453Z","alert_count":0,"request_count":2,"received_data":443348,"sent_data":955,"comment":"","tags":null,"fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}]},{"fqdn":"circuittradetech.com","ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"domain_registered":"2024-03-11","domain_rank":0,"first_seen":"2025-12-29T11:33:25.682205Z","last_seen":"2025-12-29T11:33:25.682205Z","alert_count":85,"request_count":85,"received_data":4096625,"sent_data":49611,"comment":"","tags":null,"fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Bootstrap:3.3.7","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]},{"name":"PHP:7.4.33","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"Elementor","description":"Elementor is a website builder platform for professionals on WordPress.","website":"https://elementor.com","common_platform_enumeration":"","icon":"Elementor.svg","categories":["Page builders","WordPress plugins"]},{"name":"JivoChat","description":"JivoChat is a live chat solution for websites offering customizable web and mobile chat widgets.","website":"https://www.jivosite.com","common_platform_enumeration":"","icon":"JivoChat.png","categories":["Live chat"]},{"name":"Font Awesome","description":"Font Awesome is a font and icon toolkit based on CSS and Less.","website":"https://fontawesome.com/","common_platform_enumeration":"","icon":"Font Awesome.svg","categories":["Font scripts"]},{"name":"jQuery:3.6.4","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"MySQL","description":"MySQL is an open-source relational database management system.","website":"https://mysql.com","common_platform_enumeration":"cpe:2.3:a:mysql:mysql:*:*:*:*:*:*:*:*","icon":"MySQL.svg","categories":["Databases"]},{"name":"WordPress","description":"WordPress is a free and open-source content management system written in PHP and paired with a MySQL or MariaDB database. Features include a plugin architecture and a template system.","website":"https://wordpress.org","common_platform_enumeration":"cpe:2.3:a:wordpress:wordpress:*:*:*:*:*:*:*:*","icon":"WordPress.svg","categories":["CMS","Blogs"]},{"name":"jQuery CDN","description":"jQuery CDN is a way to include jQuery in your website without actually downloading and keeping it your website's folder.","website":"https://code.jquery.com/","common_platform_enumeration":"","icon":"jQuery.svg","categories":["CDN"]}]},{"fqdn":"www.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":146047,"first_seen":"2012-05-29T15:36:17Z","last_seen":"2026-07-26T23:06:30.068608Z","alert_count":0,"request_count":5,"received_data":48622,"sent_data":3097,"comment":"","tags":null,"fingerprints":null},{"fqdn":"fonts.gstatic.com","ip":{"addr":"142.250.178.67","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-26T22:19:52.505461Z","alert_count":0,"request_count":5,"received_data":211579,"sent_data":2823,"comment":"","tags":null,"fingerprints":null},{"fqdn":"www.google.com","ip":{"addr":"142.251.152.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"1997-09-15","domain_rank":22,"first_seen":"2015-05-10T13:11:19Z","last_seen":"2026-07-26T22:51:17.688286Z","alert_count":0,"request_count":1,"received_data":717,"sent_data":552,"comment":"","tags":null,"fingerprints":null}],"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":"circuittradetech.com/k99/assets/wp-includes/js/jquery/jquery-migrate.min5589.js?ver=3.4.1","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"1d6dae7fe5617d9a7cef583039033804","sha1":"6267c462e74865b877d159d83f40642acb58cd03","sha256":"261bd4fe31b6ef4e89e5c02a202840220841b4e6b68b05e8438f62a20c63051f","sha512":"4b45dd01acc33cf3abdd28a47419ab6bcd962aa2b522ed2fbf63d3f31589677ca7ce936aca4b02d63c508859bb42a41d384e4ccd92a60f2daf6eefc7f7825501","ssdeep":"384:5vjxzRDFKvtShyQlmCHFSPoj/0rK977tq23MUGhJ11X:JNKvQhyIUPowy7pqcMUGV1X","tlshash":"2e82962eb5f626319567f1b8e52fcd5a7276048f168d9e00784c81b51f0d838a3b9fe8","size":18713,"data":"","first_seen":"2023-11-09T22:36:28Z","last_seen":"2026-07-27T05:30:59.832639Z","times_seen":57,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"81fd21e95304c7fd1b7ce5641187b71a","sha1":"68fe7dce99cdffcfadd698ddbc9933e92bec9034","sha256":"1314f8d65a17e9dab1fc0584d6ff79fc2378fa3508d72a18048aebd2512a8aef","sha512":"8df479d0912e87797870346f77a91e3894f6c3110b94f30b353f7017a83d18b895d2b81373afd2d1c52ce5f766fb54ca7cc9471d7dff0883dde3fa1f2c051823","ssdeep":"","tlshash":"7ed0120bf430111f049ab125e39159cd75788609053e4d28364290cf3db3f9c130d1b4","size":199,"data":"","first_seen":"2026-05-25T20:34:17.740558Z","last_seen":"2026-07-27T14:36:12.950105Z","times_seen":72,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"779e959f3fa8dc190e3fc3d5bcce5efd","sha1":"f4da9020a2ba9cbfd5de4260853086c5d89b6902","sha256":"24b3d4aa0a5174ae546ab101ec9e0992c48729e1bae88394c0ad3c4618caa731","sha512":"0ec970146aaa4814d5b2c0237a846fc88429cdc8f8f2a760c641474bc068c1d7111579631afceb7babe3e643f13cae891446d0bd0121228d2ec7f9996c3ef093","ssdeep":"","tlshash":"b001592ae58628764953a055cbae6244387600bf7245c211319d6e0b1f538118abfef1","size":677,"data":"","first_seen":"2026-07-27T03:56:42.615202Z","last_seen":"2026-07-27T05:30:59.835805Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"f0967d8d2a89e661942f642df6a067ae","sha1":"67905e9e82b974c08164eb726a2d90bb7996994c","sha256":"987de869c5370a87cd1e1b98fc74d4f5900cc41afd49b7ab9f977d9a7bfaf6fb","sha512":"5df621fd466435b90883d916226bc6e9ba47400893b710d44d01ee96dc585e8b75fd5c42748b7338e4e9c54a14b91522f01c10fd9c527a0c815ecdb860f5ee91","ssdeep":"","tlshash":"a6414556bccf01a066aab667ffe9011431b891471042fc40fcde64785fc191288b9ee5","size":1879,"data":"","first_seen":"2026-07-27T03:56:42.616488Z","last_seen":"2026-07-27T05:01:06.179843Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"dfa76c4d2aa2128e08ddd3723ef5255e","sha1":"f345427566a33faeed63bf123ac5221fa7631058","sha256":"ff54bd2fdbf6db711e4fa24a42a40010331a27c0e2cc222787f7aabd5fd93528","sha512":"6ef8c3027b106032e75a5a5934c1a22cab6e422a8e65a53115b7f7a121738a20311478303c674521241e477f5c41f95cc7a689324402d530264d81571c1baf83","ssdeep":"","tlshash":"f431af1868b210f9049ba067ce6df24ab872013b000acb413cacc9734ff9564a85aa9a","size":1558,"data":"","first_seen":"2026-07-27T03:56:42.617424Z","last_seen":"2026-07-27T05:30:59.836872Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"16e8d5f7fe05639481bdafe60773a65f","sha1":"15a7c3d149cdd7d2555201d97ccf912c9d986d22","sha256":"2384efb45d6e1613a35877cd9e578deb2424e05f6f41796bb377fd03fd42b058","sha512":"e438fcf756f565530bccfa24bd9248fcf831bbf2d7b29cc4e8aabdff1fb60a063f01d83ef51f2bc028577c76e68e78685c4e24958aafcb79ff3b75ceeac43df1","ssdeep":"","tlshash":"0bd09b1ff0de7453407775594f3f91043d12740f3a48f4003d4c64d50f64014451366d","size":207,"data":"","first_seen":"2026-07-27T03:56:42.618308Z","last_seen":"2026-07-27T05:30:59.83736Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"2468e40995bafaf890eb04e96bc23d1c","sha1":"27287c08b8267dbaa2444882d00b4381276ea26c","sha256":"915f1f42f159c9705a5d09fb75d9ac63b5ad19ecb9fa4d1c92ac62860d849ecc","sha512":"0b9ba2dfd10170a1de2b7bae2fb47c9051bba8ace3ea7b721881fd19ee01952fdd4f358540554603df64f7530f32a9167485264cb4a96521b38e5a81e05504ef","ssdeep":"","tlshash":"df11320a2cf43149b90b31226eaed801063a534fec29bc857d4d56507f2d20f22f6798","size":907,"data":"","first_seen":"2026-07-27T03:56:42.619161Z","last_seen":"2026-07-27T05:30:59.83786Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"c4e31f72d8ccfb6b08a978bc5056f90e","sha1":"2e4f27622e49844262f73125fa97f379c257866a","sha256":"dde52b1155f03f8c6f25beb2fd8b068264782836e4df95e074eccbe6bbe3afff","sha512":"c753fc9a15c9fc9086ce5128572b28b22e785a528a5d664322deb24ca01c7020d56996c6727644b729908369306e7bf1e90411251d11983ca8260ca98acd66e6","ssdeep":"","tlshash":"eb11150a1cb42245692731a06eaed0000639534ff819bc857d4d1a502f2e10f33f7788","size":908,"data":"","first_seen":"2026-07-27T03:56:42.620076Z","last_seen":"2026-07-27T05:30:59.838427Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"95b769c361722141648c4ece4e0db588","sha1":"9f55889faeed345d24c164b17ef84e38e53b484e","sha256":"e6d99b96960da2f3a80eac3d2017d3c57afc499697739e11b287f8ad54cb0c9e","sha512":"e0838547dab36e7afd35cfaaa332d72c7c34abd92fb2a771588c5310dcb648a4d306c82981694c8ff73100f2ff6fc826db76c1473d45e5f00719cf9e050a89c3","ssdeep":"","tlshash":"08111e0a1cb43255a92771a06eaed400063a534fe82abc857d4d1a902f2e20f23f7788","size":910,"data":"","first_seen":"2026-07-27T03:56:42.620901Z","last_seen":"2026-07-27T05:30:59.838853Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"f28ce3b8605bbb610b813f1c92a77422","sha1":"c65acca330f0622aa461e01e6cb0e1c577cc26a9","sha256":"07013b079719bad256c6dbd7bb2b40281fdcb4ca4e1acd544b9bcfebbba3405f","sha512":"ad54c5b267d689527021ba55a65dd6085f68b31c6f95613e7ae28f8769cb774dadb7c3e4b7349e20de20fb020b1aca3f8e16594aadcab6f4a3af6dd6c63a5d54","ssdeep":"","tlshash":"a8111e0a1cb42245692732a06eaed000063a534ff829bc857d5d1a507f2e10f33f7788","size":908,"data":"","first_seen":"2026-07-27T03:56:42.621994Z","last_seen":"2026-07-27T05:30:59.839342Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"b68fa07d8534e9451437b38c73f9acce","sha1":"25707aa39b58616fb7c50415de0541cfe5cee55d","sha256":"a2910191ec8ae06fb789ed55ade0d9774fb4811af1a89d21bf2beddf10d112cb","sha512":"55437e7d9f02e74f6b4765377b45c6e69db9368560b3f38c604272e8c352826cf44af263b94b09bfed3e3b0dd295ef19563964007af527d3f3ffba7c2e64639a","ssdeep":"","tlshash":"5ce0c20f66c15de80b4e23043c5f326c78bd1c9450e9f2c072bc24986e1bcb49149211","size":297,"data":"","first_seen":"2026-07-27T03:56:42.629959Z","last_seen":"2026-07-27T05:30:59.839886Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"ee92253de10b33ffdcf613e282f855f4","sha1":"429225fb6e33f9b0b8d7e585e3f3c95a780cd0e3","sha256":"5a8809f82f214fd8e29fc9633b622b75306624141637173a2179877753e0305a","sha512":"97023b7a59c29c7199c491ffbf2c94d13a53fdf239bde1a8de721759a3074652915cc904511ed711c7065c2273820b944e53d3b105f1c5e0c24282d54b4239b4","ssdeep":"","tlshash":"415182347549ad7f83e397957917ba126a6c05244040bdf8f0fc886d14b6a34230be4b","size":2583,"data":"","first_seen":"2026-07-27T03:56:42.631261Z","last_seen":"2026-07-27T05:30:59.840467Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"5cf2bc573399132f305b416b0fdde7e9","sha1":"6fe566559a74eb7d4df10bb82b9b962cd4ec2824","sha256":"9d27d19567c68ec6e71734c6f6aefb7b3855d087dff4b549cc14e9c11bc0ab3c","sha512":"a2fe36e158255bca94daa92c07abf7f75fa2a6ef0cfbef8fc76cf19bf8e289c12a6a0aa8fcb0f62bf54532070fb2efd5159c1f6027863a6a48af0d859cb2424f","ssdeep":"","tlshash":"d971733ceb214437c4f9a4a9b4c31b46f3184212d414941fb9af095d4f4fca8e29677d","size":3759,"data":"","first_seen":"2026-06-08T02:43:52.300968Z","last_seen":"2026-07-27T13:12:32.504409Z","times_seen":25,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"e3c5512de551798cd7771e41837fce6d","sha1":"2657ea0cb844b8c8bbac719aac596a3a20d5099e","sha256":"d6dfe79855e41a5d18ab267868005d62a8e0dd2cd221f4de668d3825376cf40f","sha512":"0d31bf80d01aeb2bce061bdd700c3c7acf2bc6179910da40494b77af30dcaa0b18a0795b013e08e09d7e86f9298813ece3f70ebc0a468ae7f9b940a487b8bf71","ssdeep":"","tlshash":"9d01fe8c9d063a36250bb1e5213f900035b440598815e81cb80ec6e05fb1d94ac0f9ee","size":705,"data":"","first_seen":"2026-07-27T03:56:42.632922Z","last_seen":"2026-07-27T05:01:06.1893Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/metform/public/assets/js/htm.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"fdfac163c1e50619e8e32536bd185cdc","sha1":"e951d6d40b6fece1ecbd306dc0011e66f7fdc8eb","sha256":"cc7b1bdc9f993592735bf965c9a0fa2c513e101535e1f601f0164120bfe3df11","sha512":"b49aca17ab4f8185c5ccc980a91d769c47b3a7aa261f2a460de04332db71369b4c7df12433f83fa051d11c2cf0a4e2fb567611ff81d716195bb2e27a36c67c87","ssdeep":"","tlshash":"9341f1e193e62138915fe072563a8c01b1bc1c59628cf80d7e2c12d5cf168654ffced5","size":2050,"data":"","first_seen":"2026-07-27T03:56:42.509207Z","last_seen":"2026-07-27T05:30:59.832109Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/vendor/wp-polyfill-inert.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"e7bb072e5c9f94f7dd9a7686d4d0dc5a","sha1":"bfb7c763fcbd602bfeb0570bb7c0d9a44b6253c0","sha256":"ddf37c3974cda57aa02d32ad37cdce803142ccbc67f10dc998460839ec93e060","sha512":"13630015589f2daeab75f123efef94a800a56f2b8038f77f95aa028741904591a6051d878b4f9687e8e92cf417e1aca7a5ce2b689ae1c15d25eeda9adb9ec5d5","ssdeep":"192:iGRJNP5E3yHTh8OxJeqr7/+CGbUBCmhpIDNbKJbSi0dGdQsaGFHvnrOLCfLsf5qu:imNlvJhqF3KhM","tlshash":"a332426ea7e429335987b0656d7e8a427636402b044f4d283f1c84ee4f5c93806f2ff8","size":11832,"data":"","first_seen":"2025-09-01T05:50:55.055439Z","last_seen":"2026-07-27T05:30:59.791484Z","times_seen":11,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"166d26153e470e27c3333e5c10081599","sha1":"e10abb24b7acc407d62ea6058cd1a67b2a54d61c","sha256":"bc39b79174c882173cea4d45d4b18676a1a112504dfb1d1b57dee10e6ba749f4","sha512":"a62f0f32aac0e79744cc779b99ced874891bf06ccd2de27c855de643d8c84d36bb9589b683753e9230f564ac198d645aaa223159bb3f22302cd41b44f53e38d5","ssdeep":"192:ZeUlUgzy7P0gCCIqktmk9TGaWQ4xPUWLcXRgSRoFLFInmQxPkh72p+a:4qZ+7P0JjvFFwu1XREpqmUktSf","tlshash":"3ee101851be27c372593b4e996199e34732ec4132949ec82fd5cada85fc1d3087b8ab0","size":7374,"data":"","first_seen":"2025-07-04T20:26:13.188207Z","last_seen":"2026-07-27T05:01:06.128846Z","times_seen":4,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.mina2f8.js?ver=3.19.1","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"367bd7a1a69c01509da43a50349e8788","sha1":"18e7ac3fbf31ff1f4cee6f5811844090404f04a6","sha256":"cb734b189032cb314fc8d3d34c1314d64c7a7698acfcba00e52050fdae9adb93","sha512":"c5190f86721797f0adc75f0e7147b1f685b954ad79f1535487f75a54272d8bbc51f17ac22548cfd378e92a02c19ffcda2409d8bc80a3af1aa4ccd9231bb00fb0","ssdeep":"192:bP6z6AN8i4/5VTcJ7QlnV8fPj0Al/+vLxoUi1hoFWYWlZyVL9J79hFmDzULK+Qo5:OZexqpQlVEjjN+viUhu0LKymvv64e","tlshash":"8ea2963ef5104da300815b19646419c57f4ac103bfaeb42a79bc6f9a2f8e42d93bd63d","size":22429,"data":"","first_seen":"2023-07-01T15:13:09Z","last_seen":"2026-07-27T10:21:19.624341Z","times_seen":28,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/themes/hello-elementor/assets/js/hello-frontend.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"f84c03076112dbf6b5eff97b11a38188","sha1":"3394bec63bddd933513570fc21ef72f764e1e038","sha256":"6c40ba651502891d2444bcfe5c62e8abe1f6d57fd015b9a1960cf86ec806c5b5","sha512":"02181a6ccfbcf08f447eee69c3ed43d33ec1e025dcf0a666fd9c258fa8e8695b0e66c1ce814d5a817ab524f7dac13b516bcaceaef8adcb5023aaba1ac04eda68","ssdeep":"","tlshash":"2d519d0ab29259fa913f20637f0b991e7126809f74056a78356cb3cd4f54ca07bf2b75","size":2543,"data":"","first_seen":"2026-07-27T03:56:42.490535Z","last_seen":"2026-07-27T05:30:59.82332Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/vendor/regenerator-runtime.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"c294b19e3844545e75dac1706034baf7","sha1":"115025b3d4626dae8e5b61f5c5aa7e68aa56de68","sha256":"748e03bdccb80f74991934498360e2308d2601610334c89c10a8f7e7b8e53f14","sha512":"fc3e63085737165b84a1f5159baa0d46a971429664ad3cc9e346ff313f698b95c5c0941ea6f03b8594cda4ccb4fd7c33f205673c8f1e9caed0b65de227ec72e7","ssdeep":"192:qUhEbLnXG8NgStOggaq60Nl6LGkUyiAt+EOnjM9c9rdEQc+0+KiLyEqMULrQdb1r:qwEbLpX3D+c+0+KD5wrf6+cWKs1X","tlshash":"7832dd89baf7b0619303f138896f9408b235945f564ddd097e0ca6b0af91438d7b9fe8","size":11195,"data":"","first_seen":"2025-09-13T14:09:05.182292Z","last_seen":"2026-07-27T05:30:59.786787Z","times_seen":10,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/vendor/wp-polyfill.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"78d592f45c3156d06f02eb64fbba7c24","sha1":"087336e7b9852a1511c21b72b08861307003f566","sha256":"9cf50f241c6056086005b2db74e52c01ac219dc4f3b681396b1ecfaf505b4bb4","sha512":"ce81cbaa09d25a02f5c439622677d68ef7ebf37cef5eb53dd5822a2f079213aeeefe56befeeb04952f6245c67d2f375ed5b2b585fe11a32e16d54f4f5ada5512","ssdeep":"6144:lTcDZtxCb7TJN3piehF2VSwmomo2WAEvYH3HWnUs2AGlEDQCV2MX3sqo0P:l0kdyef3wmLo2WAEvYH3HWnUs2AGlEDX","tlshash":"3c34ad4aaaf13171a243f039866f8909736a548b5d8efd067d0ca2905f5983cc7b9fdc","size":245400,"data":"","first_seen":"2026-07-27T03:56:42.485278Z","last_seen":"2026-07-27T05:30:59.796071Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/vendor/react.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"d1ac981b533da21d8dd0bbddab4c4ea6","sha1":"1b22173e0a2e7dc804ea65197c96a478efe1191c","sha256":"de89a10d5366dbb89e64dfc3a578f3510faf14225adc0a91e68dd1e7d23a2c84","sha512":"af4b8d6ca81fe48b6f1229c0759d10bab30b6b2afdf11e7a5f9031e4cd09c15659a98c4004a9f11a2e0af18e24c5f00eec9f386ce2049bd6d073ad8ec9ce225c","ssdeep":"192:nqK9+9ZeDrG9COQlleS6eYgy+ISCgAvqvs0kCU4Cv3ty4KrYOM6Qoyi0Mb+RDI6K:nqK9qYEQ7ShaM6mHQSYTxzP","tlshash":"09922e58b9f230309613f03a8a5fe8587236a54f1a4ced10390c96a16f5a57cd3bafdd","size":20760,"data":"","first_seen":"2026-07-27T03:56:42.494648Z","last_seen":"2026-07-27T05:30:59.816064Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/vendor/react-dom.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"dc2b81ee6bacc67f973178dbeb145ae8","sha1":"1aa12d5e9992f569c72fb5c85bafe649cb52d588","sha256":"565f4eb5bd4db38acdb1f488f55afc427440aa881719f97f2e49073c4df9d2d6","sha512":"ed9bffeb4a596baa91927496e856e37eaae2709985f5a446390ddbb77ab8a73ecae942cad8cc7e8773a4edb60614fa3daff2a45fd0384ff45a6a9edc9d5af19e","ssdeep":"1536:uyodIzCvwBBYWxwL4QZifagtZvKDEv7ucuUCgnNV1kEF3Ujqf3vL3MTJRXc1:uajXn2qZvXrd38c1","tlshash":"8f4452996ae226719213f13e0eafd8947339a80b074cdc523a0ce5645f5553c87bafec","size":270492,"data":"","first_seen":"2026-07-27T03:56:42.510275Z","last_seen":"2026-07-27T05:30:59.816769Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/jquery/ui/core.min3f14.js?ver=1.13.2","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"e4e8257fe9cfc06e18f707b383fd50c0","sha1":"9238d42f5923a8aad6c139a3c03a0f8c878a63e9","sha256":"7ad8695538b51ac6ae56a87b8261f2d2e3f89d1b654626db93b54c5f57d3798a","sha512":"402f763a9e76e6a2c4f1197f69bdfc50c1a0b8f16b0f91cb637c684c1b0a160c880ec959d7b857f8886601bf90862cb669cc02ee1d7b65cf0f1bdb055211bfc1","ssdeep":"384:CrkpFRdCeNLzKjluPjhC0tc0+hq3fWWsx+aWJ43bv7K39AUb4s3iVpmnoC/jMbtx:BGjyd2Px+Xr9Tb4sMMoC/jw","tlshash":"a1e2650d67e12525d697f03a5c2f8949f232a09f2749ac4cbd5c82e44f1a83882f7fb5","size":33783,"data":"","first_seen":"2023-11-16T04:44:13Z","last_seen":"2026-07-27T05:30:59.785775Z","times_seen":11,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"Function","is_inline":false,"md5":"29d0c84b9d1d8da446a6062c6a840ad9","sha1":"6d6b3a6065667c7c50d92f3889c85ed65a9ad784","sha256":"3c3cbdb71d0d2c22f504f4d63d8a6ffe8d250cde7e58300619be35b6bbab26a1","sha512":"52cfcbf2f7c3521c5a6c6120099ee6822d16e04ffbc04720da925a11242c8c2050f9cfc8d864a6d39a0036ac599f701080195a29a7c5e8d3e9308b91f9f0390f","ssdeep":"","tlshash":"428004d533c350004753117c04571cc4d034447014444d405040d4531c570315115c7c","size":37,"data":"","first_seen":"2023-04-11T21:31:25Z","last_seen":"2026-07-27T18:32:55.189687Z","times_seen":734425,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/metform/public/assets/js/app.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"45b38c664f4eceae60f948b577d64b30","sha1":"097970d830b7c318afdf247c1eda1c28e8597218","sha256":"0a0029f06010e781e569a6589c109666120c365f6b0eaf1d019349077d21b3ee","sha512":"fb70565fb1c476a4f1450555781a7e871e4f68d696ac0976c4cb5e477ec4b6702b0b2e8e6ec678162cb2f4f9578fec6a35cc553a7d720bc42fd7ff1f18ee6020","ssdeep":"24576:lK+fXlNuudu3D9dM1biVOBN/8jpPxJRUU+iPy4kSYOqu23F5rMmZZ1veUvjNk9k2:lK+fXlNuudu3D9dM1biVOBN/8jpPxJRn","tlshash":"a755814dbaf264718253f0394a6f8804b236941f598ced007e4c95a45f6d83da7fafe8","size":1359753,"data":"","first_seen":"2026-07-27T03:56:42.637294Z","last_seen":"2026-07-27T05:30:59.841676Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/_/translate_http/_/js/k=translate_http.tr.no.scrnY6Q2_yw.O/am=BIAABw/d=1/ed=1/rs=AN8SPfq1KlUFqeiFvBMudduzGtb39QWXuw/m=el_main","fqdn":"translate.googleapis.com","domain":"translate.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.74","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"eee9a1207007c5ca4881ae1d2d28501c","sha1":"055b95815ec1c7e235a4cd1b81986d5d91189286","sha256":"10db7fa38c6dbe779e1409808ec38f25074b935da180aa0f225307cc79e1bcd4","sha512":"0d0e9b5d67d5b34cbd057ef33fcfb4719221ed6139a1ab0796edd0018d992cf6c14a9e7bec89c99d8d91831b7a3602575c9c03e64dcf381ba15f0587cde57194","ssdeep":"3072:8D4U6KKZgtBOjsNxt45eITHt28KRu9gKavNuBDHK0QppB0/I:8QcMsb0muBzg","tlshash":"d944e9d8b2a174669363f4a5413f000fb13b68a9f8484dacb28dd8e26df4959417bf7c","size":266390,"data":"","first_seen":"2026-07-22T19:32:39.227777Z","last_seen":"2026-07-27T17:47:56.699565Z","times_seen":316,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/jquery/jquery.minf43b.js?ver=3.7.1","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"2c726692c3463b9200455bb5a63fc060","sha1":"6a8ce9449ad65e13b1b78e9fbac9cd2c99573253","sha256":"e3e9faf8caf4564d4952e8bc09836d41aea7b90a5d46d99f6eaef6c113619aeb","sha512":"763f49f482605cdb5c8f89af146785d90c075f95c24407ff55b5607130f97ed06b8633163ce0c64fff5a626eab4754a385348bbb8d8ab1606fd5fa0a7338248a","ssdeep":"3072:csBiP9TCt/sUp7Pi26wJC1+mvXmQ4apO1ah:hBidCt/sUp7Pl6wJC1+KmeO18","tlshash":"ebe3529a7afa21319207f03a8d6fcc08b276544f1a8ded04790c52a55f1583c97fafe9","size":147109,"data":"","first_seen":"2025-06-28T20:39:24.10035Z","last_seen":"2026-07-27T05:30:59.80116Z","times_seen":52,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/header-footer-elementor/inc/js/frontend.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"3795fe978ac942853382ac785c65ce0c","sha1":"e91c9e696ce04456b44d04065c87cc5482b147f3","sha256":"5259252aa576fa67ab78c1b54a39c090391f5f96998d14fd4767d25210b341eb","sha512":"c1670f7293d1f7cb7c02884404e36307cc7fe3086358747afac9a69a01556213753650a4c0d818e60e20415536b3a4d88d570f7384177a8f81ecd27e0ff2c6da","ssdeep":"192:85w33nAI6LNlyurLDvQaNZLVnnEhIHTEUBGESCuy6rJRvCAd7UQXN10dnNiYGUf9:dAK8FFnfed4QXN81eEL","tlshash":"8ae2008935e71031603f3a6fa6ebc09c73164067c5169a5cbdac45e85fe0a1473f2eba","size":32902,"data":"","first_seen":"2025-07-04T20:26:13.202425Z","last_seen":"2026-07-27T05:30:59.809236Z","times_seen":7,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"static.getbutton.io/widget-send-button/js/init.js","fqdn":"static.getbutton.io","domain":"getbutton.io","tld":"io"},"ip":{"addr":"104.26.14.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"bc3e8108dcd36c0d0c129a726dd8f47f","sha1":"db6320723c55ad91550a1ca87176058bed49d99c","sha256":"791450932271b1682c103cadb334baea8bf68100069c3c3eb317ed8a20098483","sha512":"821203cb21570cee7a989e40a417990e408949e7d239766562cfee62c0a0320c936bfbc8fcb2ecb35067ba1034eb7363d907edb72ccd878ee510640aa7a976b3","ssdeep":"6144:HSFryQhY3HpsS+U6qAcXha0oPKiqLVwoNbsR5LoQGnE2:xQhY3JsS+U6qASoPKiq+oNbsRFoQGnE2","tlshash":"53946de93290f0a653b352b700af240bf379641a785d8860a215ecdcf8b94ed513bf6d","size":442041,"data":"","first_seen":"2026-02-13T07:56:32.581356Z","last_seen":"2026-07-27T16:56:48.649607Z","times_seen":2716,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.google.com/translate_a/element.js?cb=googleTranslateElementInit","fqdn":"translate.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.178.78","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"e9082be6171df6b447c3269f371005e9","sha1":"15544af6a3e50b8881f0ff3fd6b56800f72fa577","sha256":"2bd2af083a8d177bdf904e5a6c6d77ba70bdcddac525a8d972a6652da3f0d01b","sha512":"2ba063672912ca0c438dcbe54845b9bdd195a10364be838f6821781576362cb30dab791b2a50bfacae899694c1609957ea01b7cb1a223d2af2859430b1795f56","ssdeep":"","tlshash":"795112965872e0dac8436c29cfef913961444037ac15ece5be9cd903ffb060ea64d9d8","size":2820,"data":"","first_seen":"2026-07-27T04:05:06.206505Z","last_seen":"2026-07-27T05:00:36.651493Z","times_seen":18,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/escape-html.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"5ec2bbb9a4910365e6c7e5a65dda24bf","sha1":"db3fd154bdd8d78a024f46288fdaabc39dabcaa6","sha256":"5fa2bf49e7bbf739ed2d809b9acb5bbcd8cf753093f7486bec5759378673c69e","sha512":"d9816ac682e1e5cd61f9f8e44e24f610edb4dd4995173e72e50857738a16426d69cdb09db2e33e1cd7afe0eb44b50e5847e5a4f4ec88504695a19bf4379efd3e","ssdeep":"","tlshash":"09416b8dbcf270505207f079845f8419b23d869b18ad1f50be4c61b26f3247d42b5bde","size":1904,"data":"","first_seen":"2026-07-27T03:56:42.49176Z","last_seen":"2026-07-27T05:01:06.10647Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"6bf2d21e9bdb4d04e40b5f9decc60314","sha1":"1f16da2e4fd4d2c9db5fce1e101c3a44be54dd89","sha256":"02f83fb268599737a5a5c8e1db12d562bdaa9ae73cb906c4f63c7b871eeecdb4","sha512":"c23497a91d4221d642363cdf3f47b1a867ab0dca284df0029fd1277848585f119df5268816158889bb15991d477b1e94214ae0eca3d1e26adf7e99ecf53b8fad","ssdeep":"384:ZDCVFGE8Psl1GbOdoEMTGT6Gt7w50xioyTQTflUw4OSIU/3P:5/0JTHlh45IU/3P","tlshash":"de72df096ebb20126f9f7069fd0b55857237402b54899c2778dcd7d80fe24386eb6fa8","size":16048,"data":"","first_seen":"2023-03-12T11:49:12Z","last_seen":"2026-07-27T10:21:19.575257Z","times_seen":64,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":[{"level":"log","text":"JQMIGRATE: Migrate is installed, version 3.4.1","filename":"https://circuittradetech.com/k99/assets/wp-includes/js/jquery/jquery-migrate.min5589.js?ver=3.4.1","line_number":28,"column_number":227},{"level":"log","text":"\u003e longCodeInit","filename":"https://static.getbutton.io/widget-send-button/js/init.js","line_number":2,"column_number":439085},{"level":"log","text":"\u003e try","filename":"https://static.getbutton.io/widget-send-button/js/init.js","line_number":2,"column_number":439267},{"level":"log","text":"config loading..10","filename":"https://static.getbutton.io/widget-send-button/js/init.js","line_number":2,"column_number":259826},{"level":"log","text":"validation...false","filename":"https://static.getbutton.io/widget-send-button/js/init.js","line_number":2,"column_number":254413},{"level":"log","text":"config loading..500","filename":"https://static.getbutton.io/widget-send-button/js/init.js","line_number":2,"column_number":259826}]},"http":[{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/metform/public/assets/js/htm.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.820Z","timestamp":1785128398820,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/metform/public/assets/js/htm.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 775\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:46 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"802-67c3620e-b613f2b85b65de30;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457452\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: e3d178d552304b650ece6ae631d550e9-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":2050,"size_decoded":1361,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (568)","md5":"fdfac163c1e50619e8e32536bd185cdc","sha1":"e951d6d40b6fece1ecbd306dc0011e66f7fdc8eb","sha256":"cc7b1bdc9f993592735bf965c9a0fa2c513e101535e1f601f0164120bfe3df11","sha512":"b49aca17ab4f8185c5ccc980a91d769c47b3a7aa261f2a460de04332db71369b4c7df12433f83fa051d11c2cf0a4e2fb567611ff81d716195bb2e27a36c67c87","ssdeep":"","tlshash":"9341f1e193e62138915fe072563a8c01b1bc1c59628cf80d7e2c12d5cf168654ffced5","first_seen":"2026-07-27T03:56:42.509207Z","last_seen":"2026-07-27T05:30:59.832109Z","times_seen":6,"resource_available":true,"data":"ISBmdW5jdGlvbigpIHsKICAgIHZhciBuID0gZnVuY3Rpb24odCwgZSwgcywgdSkgewogICAgICAgICAgICB2YXIgcjsKICAgICAgICAgICAgZVswXSA9IDA7CiAgICAgICAgICAgIGZvciAodmFyIGggPSAxOyBoIDwgZS5sZW5ndGg7IGgrKykgewogICAgICAgICAgICAgICAgdmFyIHAgPSBlW2grK10sCiAgICAgICAgICAgICAgICAgICAgYSA9IGVbaF0gPyAoZVswXSB8PSBwID8gMSA6IDIsIHNbZVtoKytdXSkgOiBlWysraF07CiAgICAgICAgICAgICAgICAzID09PSBwID8gdVswXSA9IGEgOiA0ID09PSBwID8gdVsxXSA9IE9iamVjdC5hc3NpZ24odVsxXSB8fCB7fSwgYSkgOiA1ID09PSBwID8gKHVbMV0gPSB1WzFdIHx8IHt9KVtlWysraF1dID0gYSA6IDYgPT09IHAgPyB1WzFdW2VbKytoXV0gKz0gYSArICIiIDogcCA/IChyID0gdC5hcHBseShhLCBuKHQsIGEsIHMsIFsiIiwgbnVsbF0pKSwgdS5wdXNoKHIpLCBhWzBdID8gZVswXSB8PSAyIDogKGVbaCAtIDJdID0gMCwgZVtoXSA9IHIpKSA6IHUucHVzaChhKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB1CiAgICAgICAgfSwKICAgICAgICB0ID0gbmV3IE1hcCwKICAgICAgICBlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgcyA9IHQuZ2V0KHRoaXMpOwogICAgICAgICAgICByZXR1cm4gcyB8fCAocyA9IG5ldyBNYXAsIHQuc2V0KHRoaXMsIHMpKSwgKHMgPSBuKHRoaXMsIHMuZ2V0KGUpIHx8IChzLnNldChlLCBzID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCwgZSwgcyA9IDEsIHUgPSAiIiwgciA9ICIiLCBoID0gWzBdLCBwID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAxID09PSBzICYmIChuIHx8ICh1ID0gdS5yZXBsYWNlKC9eXHMqXG5ccyp8XHMqXG5ccyokL2csICIiKSkpID8gaC5wdXNoKDAsIG4sIHUpIDogMyA9PT0gcyAmJiAobiB8fCB1KSA/IChoLnB1c2goMywgbiwgdSksIHMgPSAyKSA6IDIgPT09IHMgJiYgIi4uLiIgPT09IHUgJiYgbiA/IGgucHVzaCg0LCBuLCAwKSA6IDIgPT09IHMgJiYgdSAmJiAhbiA/IGgucHVzaCg1LCAwLCAhMCwgdSkgOiBzID49IDUgJiYgKCh1IHx8ICFuICYmIDUgPT09IHMpICYmIChoLnB1c2gocywgMCwgdSwgZSksIHMgPSA2KSwgbiAmJiAoaC5wdXNoKHMsIG4sIDAsIGUpLCBzID0gNikpLCB1ID0gIiIKICAgICAgICAgICAgICAgICAgICB9LCBhID0gMDsgYSA8IG4ubGVuZ3RoOyBhKyspIHsKICAgICAgICAgICAgICAgICAgICBhICYmICgxID09PSBzICYmIHAoKSwgcChhKSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBuW2FdLmxlbmd0aDsgbysrKSB0ID0gblthXVtvXSwgMSA9PT0gcyA/ICI8IiA9PT0gdCA/IChwKCksIGggPSBbaF0sIHMgPSAzKSA6IHUgKz0gdCA6IDQgPT09IHMgPyAiLS0iID09PSB1ICYmICI+IiA9PT0gdCA/IChzID0gMSwgdSA9ICIiKSA6IHUgPSB0ICsgdVswXSA6IHIgPyB0ID09PSByID8gciA9ICIiIDogdSArPSB0IDogJyInID09PSB0IHx8ICInIiA9PT0gdCA/IHIgPSB0IDogIj4iID09PSB0ID8gKHAoKSwgcyA9IDEpIDogcyAmJiAoIj0iID09PSB0ID8gKHMgPSA1LCBlID0gdSwgdSA9ICIiKSA6ICIvIiA9PT0gdCAmJiAocyA8IDUgfHwgIj4iID09PSBuW2FdW28gKyAxXSkgPyAocCgpLCAzID09PSBzICYmIChoID0gaFswXSksIHMgPSBoLCAoaCA9IGhbMF0pLnB1c2goMiwgMCwgcyksIHMgPSAwKSA6ICIgIiA9PT0gdCB8fCAiXHQiID09PSB0IHx8ICJcbiIgPT09IHQgfHwgIlxyIiA9PT0gdCA/IChwKCksIHMgPSAyKSA6IHUgKz0gdCksIDMgPT09IHMgJiYgIiEtLSIgPT09IHUgJiYgKHMgPSA0LCBoID0gaFswXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBwKCksIGgKICAgICAgICAgICAgfShlKSksIHMpLCBhcmd1bWVudHMsIFtdKSkubGVuZ3RoID4gMSA/IHMgOiBzWzBdCiAgICAgICAgfTsKICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA9IGUgOiBzZWxmLmh0bSA9IGUKfSgpOw=="}},"time_used":86,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":86,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment-dogecoin.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.869Z","timestamp":1785128398869,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment-dogecoin.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 2338\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: fa22473b310f93714ab1432780eb7930-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":2338,"size_decoded":2660,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"cf9e3b1a832be91e0ee444aff0297629","sha1":"a5f3dfeac19984eda4b556ee46f3bba6533963ac","sha256":"8b21115aa46ba7a3a2997c0fe1bbe02bc37d336b3a3ca290dab97f9c3d7a4dc1","sha512":"edb7c1eb8b51b0a08e898e66e722358a150d408d2cbc9dd618daa8b8dcb33286e7a5184560d992e00b4776ce9c38adf806f05b2b06192b52d67bdef6dbe6f40d","ssdeep":"","tlshash":"08413bbe0984069fd95b5074d93b7b790112a940212e2d3d938fb1606ca1f92dcdd0f0","first_seen":"2026-07-27T03:56:42.58651Z","last_seen":"2026-07-27T05:01:06.124204Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":93,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":93,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/mail.svg","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.880Z","timestamp":1785128398880,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/mail.svg HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/svg+xml\r\ncontent-length: 258\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:46 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"1f0-67c3620e-3e783662dace3ad8;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457452\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: e3b77234ab26f304e14a868162273ec5-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.020\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":496,"size_decoded":833,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"6672116a0a2a732bb97a5ef9cfbf89a5","sha1":"8fda549ff534a903618c8b1ac356728df06c6ca1","sha256":"f97bc0a3bad5ffcd3e057498bf85298791b355f8b20a1f787859a8fb345c7eb8","sha512":"198bd9050ef95cc54d516435d98db0640dd88b25a837e80f805a6605d3cc5b7c9dc43931b2f52f1681aed2335a72e14170678effdb4d21a63103b06121f771d0","ssdeep":"","tlshash":"27f05952e1f8fe0cab0497146f94f80012be30ac3f45498878cdb110204ddafe827a89","first_seen":"2026-07-27T03:56:42.559769Z","last_seen":"2026-07-27T05:30:59.808092Z","times_seen":6,"resource_available":false,"data":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgaWQ9IkxheWVyXzIiIGRhdGEtbmFtZT0iTGF5ZXIgMiI+PGcgaWQ9Il8wMS5tYWlsIiBkYXRhLW5hbWU9IjAxLm1haWwiPjxjaXJjbGUgaWQ9ImJhY2tncm91bmQiIGN4PSIyNTYiIGN5PSIyNTYiIGZpbGw9IiMyMTk2ZjMiIHI9IjI1NiIvPjxnIGZpbGw9IiNmZmYiPjxwYXRoIGQ9Im0yNTUuOTQgMjY4LjY0LTEzNC45NC02Ny4zMnYxMzMuNzZhMjUuNjYgMjUuNjYgMCAwIDAgMjUuNTkgMjUuNTloMjE4LjgyYTI1LjY2IDI1LjY2IDAgMCAwIDI1LjU5LTI1LjU5di0xMzIuMzV6Ii8+PHBhdGggZD0ibTI1Ni4wNiAyNDMuMzYgMTM0Ljk0LTY1Ljg2di0uNThhMjUuNjYgMjUuNjYgMCAwIDAgLTI1LjU5LTI1LjU5aC0yMTguODJhMjUuNjYgMjUuNjYgMCAwIDAgLTI1LjU5IDI0LjY3eiIvPjwvZz48L2c+PC9nPjwvc3ZnPg=="}},"time_used":83,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":83,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/header-footer-elementor/inc/widgets-css/frontend378f.css?ver=1.6.22","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.772Z","timestamp":1785128398772,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/header-footer-elementor/inc/widgets-css/frontend378f.css?ver=1.6.22 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 6938\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"126f1-67c3620e-44e21a3c629ed472;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 42b9d57ead920c4da08b310c4ad9c639-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":75505,"size_decoded":7511,"mime_type":"text/css","magic":"Unicode text, UTF-8 text","md5":"eeca095d5d2dd3c658b6e8baa49864b2","sha1":"7eea352359a9d8c05ae8963ace95e0af31a1f528","sha256":"1c826eed94b0c634ef3e304f6f6e8ac76b8f9967262a38f7925b580ff2999ff7","sha512":"7d1ebee45a18a3ef4d44d8c54c994ea86ba736a246b794fb13e58660ebec5b40e4fcd653af30cce622dc054ee637880b38fd3c33655dbd946aa46a489d3d15c9","ssdeep":"768:42+F8R0KAkedPTQs+eXBjBn5IDG8TDb5D8zIGTePV/fHK10mh9zPSULvZVUcbj/1:42+F8R09oqDrVeLQaY","tlshash":"8f73b9c51dc228b49a1a691da3ae976457b60047cf34adac37ed810ccf82342b7f6b57","first_seen":"2026-07-27T03:56:42.587394Z","last_seen":"2026-07-27T05:30:59.830116Z","times_seen":6,"resource_available":false,"data":"LyogTmF2aWdhdGlvbiBNZW51IENTUyAqLwoKdWwuaGZlLW5hdi1tZW51LAouaGZlLW5hdi1tZW51IGxpLAouaGZlLW5hdi1tZW51IHVsIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmUgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5oZmUtbmF2LW1lbnUgbGkubWVudS1pdGVtIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmhmZS1mbHlvdXQtY29udGFpbmVyIC5oZmUtbmF2LW1lbnUgbGkubWVudS1pdGVtIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJhY2tncm91bmQ6IHVuc2V0Owp9CgouaGZlLW5hdi1tZW51IC5zdWItbWVudSBsaS5tZW51LWl0ZW0gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZDogaW5oZXJpdDsKfQoKLmhmZS1uYXYtbWVudV9fdGhlbWUtaWNvbi15ZXMgYnV0dG9uLnN1Yi1tZW51LXRvZ2dsZSB7CiAgICBkaXNwbGF5OiBub25lOwp9CgpkaXYuaGZlLW5hdi1tZW51LAouZWxlbWVudG9yLXdpZGdldC1oZmUtbmF2LW1lbnUgLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgIC1qcy1kaXNwbGF5OiBmbGV4OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC1tb3otYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtbW96LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwsCi5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgewogICAgLWpzLWRpc3BsYXk6IGZsZXg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4Owp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IHsKICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcDsKfQoKLmhmZS1uYXYtbWVudSAucGFyZW50LWhhcy1uby1jaGlsZCAuaGZlLW1lbnUtdG9nZ2xlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLnN1Yi1tZW51LAouaGZlLXN1Ym1lbnUtYWN0aW9uLWhvdmVyIC5oZmUtbGF5b3V0LXZlcnRpY2FsIC5oZmUtbmF2LW1lbnUgLnN1Yi1tZW51IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxNjsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIG9wYWNpdHk6IDA7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMzAwbXMgZWFzZS1pbjsKICAgIHRyYW5zaXRpb246IGFsbCAzMDBtcyBlYXNlLWluOwp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyPi5zdWItbWVudSwKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpmb2N1cz4uc3ViLW1lbnUgewogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIG9wYWNpdHk6IDE7Cn0KCi5oZmUtc3VibWVudS1hY3Rpb24tY2xpY2sgLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpob3Zlcj4uc3ViLW1lbnUsCi5oZmUtc3VibWVudS1hY3Rpb24tY2xpY2sgLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpmb2N1cz4uc3ViLW1lbnUgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgb3BhY2l0eTogMDsKfQoKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxMDAlOwogICAgbGVmdDogMDsKICAgIHotaW5kZXg6IDk5OTk7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICBvcGFjaXR5OiAwOwp9CgouaGZlLWZseW91dC1jb250YWluZXIgLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUgewogICAgdG9wOiAwOwogICAgbGVmdDogMDsKfQoKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUgewogICAgdG9wOiAwOwogICAgbGVmdDogMTAwJTsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpob3Zlcj4uc3ViLW1lbnUsCi5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4uZm9jdXM+LnN1Yi1tZW51IHsKICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMzAwbXMgZWFzZS1vdXQ7CiAgICB0cmFuc2l0aW9uOiBhbGwgMzAwbXMgZWFzZS1vdXQ7Cn0KCi5oZmUtbmF2LW1lbnU6YmVmb3JlLAouaGZlLW5hdi1tZW51OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZGlzcGxheTogdGFibGU7CiAgICBjbGVhcjogYm90aDsKfQoKLyogQWxpZ25lbW50IENTUyAqLwoKLmhmZS1uYXYtbWVudV9fYWxpZ24tcmlnaHQgLmhmZS1uYXYtbWVudSB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgIC1tb3otYm94LXBhY2s6IGVuZDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7Cn0KCi5oZmUtbmF2LW1lbnVfX2FsaWduLXJpZ2h0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaSBhLmhmZS1tZW51LWl0ZW0sCi5oZmUtbmF2LW1lbnVfX2FsaWduLXJpZ2h0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgIC1tb3otYm94LXBhY2s6IGVuZDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7Cn0KCi5oZmUtbmF2LW1lbnVfX2FsaWduLXJpZ2h0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5oZmUtaGFzLXN1Ym1lbnUgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLnJ0bCAuaGZlLW5hdi1tZW51X19hbGlnbi1sZWZ0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5oZmUtaGFzLXN1Ym1lbnUgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLmhmZS1uYXYtbWVudV9fYWxpZ24tcmlnaHQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIGxpLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLnJ0bCAuaGZlLW5hdi1tZW51X19hbGlnbi1sZWZ0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5lbGVtZW50b3ItYnV0dG9uLXdyYXBwZXIgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi5oZmUtbmF2LW1lbnVfX2FsaWduLWxlZnQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIGxpLmhmZS1oYXMtc3VibWVudSAuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyLAoucnRsIC5oZmUtbmF2LW1lbnVfX2FsaWduLXJpZ2h0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5oZmUtaGFzLXN1Ym1lbnUgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLmhmZS1uYXYtbWVudV9fYWxpZ24tbGVmdCAuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgbGkuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyLAoucnRsIC5oZmUtbmF2LW1lbnVfX2FsaWduLXJpZ2h0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5lbGVtZW50b3ItYnV0dG9uLXdyYXBwZXIgewogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLmhmZS1uYXYtbWVudV9fYWxpZ24tY2VudGVyIC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5oZmUtaGFzLXN1Ym1lbnUgLmVsZW1lbnRvci1idXR0b24td3JhcHBlciwKLmhmZS1uYXYtbWVudV9fYWxpZ24tY2VudGVyIC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCBsaS5lbGVtZW50b3ItYnV0dG9uLXdyYXBwZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouaGZlLW5hdi1tZW51X19hbGlnbi1sZWZ0IC5oZmUtbmF2LW1lbnUgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgLW1vei1ib3gtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cn0KCi5oZmUtbmF2LW1lbnVfX2FsaWduLWxlZnQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmhmZS1uYXYtbWVudV9fYWxpZ24tbGVmdCAuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAtbW96LWJveC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKfQoKLmhmZS1uYXYtbWVudV9fYWxpZ24tY2VudGVyIC5oZmUtbmF2LW1lbnUgewogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLW1vei1ib3gtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi5oZmUtbmF2LW1lbnVfX2FsaWduLWNlbnRlciAuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgbGkgYS5oZmUtbWVudS1pdGVtLAouaGZlLW5hdi1tZW51X19hbGlnbi1jZW50ZXIgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC1tb3otYm94LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IHsKICAgIC1qcy1kaXNwbGF5OiBmbGV4OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOwogICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtd3JhcDogd3JhcDsKfQoKLmhmZS1uYXYtbWVudV9fYWxpZ24tanVzdGlmeSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IHsKICAgIHdpZHRoOiAxMDAlOwp9CgouaGZlLW5hdi1tZW51X19hbGlnbi1qdXN0aWZ5IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgbGkubWVudS1pdGVtIHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIC13ZWJraXQtZmxleC1ncm93OiAxOwogICAgLW1vei1ib3gtZmxleDogMTsKICAgIGZsZXgtZ3JvdzogMTsKfQoKLmhmZS1uYXYtbWVudV9fYWxpZ24tanVzdGlmeSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IGxpIGEuaGZlLW1lbnUtaXRlbSB7CiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLW1vei1ib3gtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi8qIEFsaWdubWVudCBDU1MgZW5kcyAqLwoKLmhmZS1hY3RpdmUtbWVudStuYXYgbGk6bm90KDpsYXN0LWNoaWxkKSBhLmhmZS1tZW51LWl0ZW0sCi5oZmUtYWN0aXZlLW1lbnUrbmF2IGxpOm5vdCg6bGFzdC1jaGlsZCkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwp9CgovKiAgSG9yaXpvbnRhbCBNZW51ICovCgouaGZlLW5hdi1tZW51IGEuaGZlLW1lbnUtaXRlbSwKLmhmZS1uYXYtbWVudSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgLWpzLWRpc3BsYXk6IGZsZXg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKICAgIC1tb3otYm94LXBhY2s6IGp1c3RpZnk7CiAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtbW96LWJveC1hbGlnbjogY2VudGVyOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKfQoKLmhmZS1uYXYtbWVudSBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5oZmUtbmF2LW1lbnUgYS5oZmUtc3ViLW1lbnUtaXRlbTpob3ZlciB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5oZmUtbmF2LW1lbnUgLnN1Yi1tZW51IHsKICAgIG1pbi13aWR0aDogMjIwcHg7CiAgICBtYXJnaW46IDA7CiAgICB6LWluZGV4OiA5OTk5Owp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCB7CiAgICBmb250LXNpemU6IDA7Cn0KCi5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIGxpLm1lbnUtaXRlbSwKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWw+bGkubWVudS1pdGVtIHsKICAgIGZvbnQtc2l6ZTogbWVkaXVtOwp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IC5zdWItbWVudSB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNHB4IDEwcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICBib3gtc2hhZG93OiAwIDRweCAxMHB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjEpOwp9CgovKiBJY29ucyBDU1MgKi8KCi5oZmUtc3VibWVudS1pY29uLWFycm93IC5oZmUtbmF2LW1lbnUgLnBhcmVudC1oYXMtY2hpbGQgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAnw6/igJ7igKEnOwp9CgouaGZlLXN1Ym1lbnUtaWNvbi1jbGFzc2ljIC5oZmUtbmF2LW1lbnUgLnBhcmVudC1oYXMtY2hpbGQgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAnw6/GkuKAlCc7Cn0KCi5oZmUtc3VibWVudS1pY29uLXBsdXMgLmhmZS1uYXYtbWVudSAucGFyZW50LWhhcy1jaGlsZCAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcrJzsKfQoKLmhmZS1zdWJtZW51LWljb24tbm9uZSAuaGZlLW5hdi1tZW51IC5wYXJlbnQtaGFzLWNoaWxkIC5zdWItYXJyb3cgewogICAgZGlzcGxheTogbm9uZTsKfQoKLmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudSAucGFyZW50LWhhcy1jaGlsZCAuc3ViLW1lbnUtYWN0aXZlIC5zdWItYXJyb3cgaTpiZWZvcmUsCi5oZmUtbGluay1yZWRpcmVjdC1zZWxmX2xpbmsuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51IC5wYXJlbnQtaGFzLWNoaWxkIC5tZW51LWFjdGl2ZSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICfDr+KAnuKAoCc7Cn0KCi5oZmUtc3VibWVudS1pY29uLXBsdXMgLmhmZS1uYXYtbWVudSAucGFyZW50LWhhcy1jaGlsZCAuc3ViLW1lbnUtYWN0aXZlIC5zdWItYXJyb3cgaTpiZWZvcmUsCi5oZmUtbGluay1yZWRpcmVjdC1zZWxmX2xpbmsuaGZlLXN1Ym1lbnUtaWNvbi1wbHVzIC5oZmUtbmF2LW1lbnUgLnBhcmVudC1oYXMtY2hpbGQgLm1lbnUtYWN0aXZlIC5zdWItYXJyb3cgaTpiZWZvcmUgewogICAgY29udGVudDogJy0nOwp9CgouaGZlLXN1Ym1lbnUtaWNvbi1jbGFzc2ljIC5oZmUtbmF2LW1lbnUgLnBhcmVudC1oYXMtY2hpbGQgLnN1Yi1tZW51LWFjdGl2ZSAuc3ViLWFycm93IGk6YmVmb3JlLAouaGZlLWxpbmstcmVkaXJlY3Qtc2VsZl9saW5rLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51IC5wYXJlbnQtaGFzLWNoaWxkIC5tZW51LWFjdGl2ZSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICfDr8aSy5wnOwp9CgoucnRsIC5oZmUtc3VibWVudS1pY29uLWFycm93IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIHVsIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAnw6/igJ7igJ4nOwp9CgoucnRsIC5oZmUtc3VibWVudS1pY29uLWNsYXNzaWMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICfDr8aS4oSiJzsKfQoKLmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICfDr+KAnuKApic7Cn0KCi5oZmUtc3VibWVudS1pY29uLWNsYXNzaWMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICfDr8aSxaEnOwp9CgovKiBJY29uIENTUyBlbmRzICovCgouaGZlLW5hdi1tZW51LWljb24gewogICAgcGFkZGluZzogMC4zNWVtOwogICAgYm9yZGVyOiAwIHNvbGlkOwp9CgouaGZlLW5hdi1tZW51LWljb24gc3ZnIHsKICAgIHdpZHRoOiAyNXB4OwogICAgaGVpZ2h0OiAyNXB4OwogICAgbGluZS1oZWlnaHQ6IDI1cHg7CiAgICBmb250LXNpemU6IDI1cHg7Cn0KCi5oZmUtbmF2LW1lbnUtaWNvbiBpOmZvY3VzIHsKICAgIG91dGxpbmU6IDA7Cn0KCi5oZmUtaGFzLXN1Ym1lbnUtY29udGFpbmVyIGEuaGZlLW1lbnUtaXRlbTpmb2N1cywKLmhmZS1oYXMtc3VibWVudS1jb250YWluZXIgYS5oZmUtc3ViLW1lbnUtaXRlbTpmb2N1cyB7CiAgICBvdXRsaW5lOiAwOwp9CgovKiBTdWJtZW51cyAqLwoKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpmb2N1cywKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnU6Zm9jdXMsCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4tY29udGFpbmVyOmZvY3VzIHsKICAgIG91dGxpbmU6IDA7Cn0KCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4tY29udGFpbmVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLnN1Yi1tZW51LAouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLnN1Yi1tZW51LAouaGZlLWZseW91dC13cmFwcGVyIC5zdWItbWVudSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBoZWlnaHQ6IDA7Cn0KCi5oZmUtbmF2LW1lbnVfX3N1Ym1lbnUtYXJyb3cgLmhmZS1tZW51LXRvZ2dsZTpiZWZvcmUsCi5oZmUtbmF2LW1lbnVfX3N1Ym1lbnUtcGx1cyAuaGZlLW1lbnUtdG9nZ2xlOmJlZm9yZSwKLmhmZS1uYXYtbWVudV9fc3VibWVudS1jbGFzc2ljIC5oZmUtbWVudS10b2dnbGU6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7CiAgICB6LWluZGV4OiAxOwogICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgICBsaW5lLWhlaWdodDogMDsKfQoKLmhmZS1tZW51LWl0ZW0tY2VudGVyIC5oZmUtbmF2LW1lbnUgbGkgYS5oZmUtbWVudS1pdGVtLAouaGZlLW1lbnUtaXRlbS1jZW50ZXIgLmhmZS1uYXYtbWVudSBsaSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIG1hcmdpbi1yaWdodDogMHB4Owp9CgouaGZlLW5hdi1tZW51X19zdWJtZW51LW5vbmUgLmhmZS1uYXYtbWVudSBsaSBhLmhmZS1tZW51LWl0ZW0sCi5oZmUtbmF2LW1lbnVfX3N1Ym1lbnUtbm9uZSAuaGZlLW5hdi1tZW51IGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgbWFyZ2luLXJpZ2h0OiAwcHg7Cn0KCi5oZmUtbmF2LW1lbnVfX3RvZ2dsZS1pY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGYwYzknOwogICAgZm9udC1mYW1pbHk6ICdmb250QXdlc29tZSc7CiAgICB6LWluZGV4OiAxOwogICAgZm9udC1zaXplOiAyNHB4OwogICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBsaW5lLWhlaWdodDogMDsKfQoKLmhmZS1hY3RpdmUtbWVudSAuaGZlLW5hdi1tZW51X190b2dnbGUtaWNvbjpiZWZvcmUgewogICAgY29udGVudDogJ1xmMDBkJzsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBkaXNwbGF5OwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogZGlzcGxheTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogLjVzOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjVzOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKCAwLCAxLCAwLjUsIDEpOwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciggMCwgMSwgMC41LCAxKTsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgb3BhY2l0eTogMDsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLnN1Yi1tZW51IHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIG9wYWNpdHk6IDA7Cn0KCi5oZmUtYWN0aXZlLW1lbnUrLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgewogICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgIG9wYWNpdHk6IDE7CiAgICBoZWlnaHQ6IGF1dG87Cn0KCi5oZmUtYWN0aXZlLW1lbnUuaGZlLWFjdGl2ZS1tZW51LWZ1bGwtd2lkdGgrLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUsCi5oZmUtYWN0aXZlLW1lbnUuaGZlLWFjdGl2ZS1tZW51LWZ1bGwtd2lkdGgrLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwsCi5oZmUtYWN0aXZlLW1lbnUuaGZlLWFjdGl2ZS1tZW51LWZ1bGwtd2lkdGgrLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMTAwJTsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LAouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51IHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7Cn0KCi5oZmUtbGF5b3V0LWV4cGFuZGlibGUgbmF2IHsKICAgIGhlaWdodDogMDsKfQoKLmhmZS1uYXYtc3ViLW1lbnUtaWNvbiwKLmhmZS1uYXYtbWVudV9faWNvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMTsKfQoKLmhmZS1uYXYtbWVudV9fdG9nZ2xlIHsKICAgIC1qcy1kaXNwbGF5OiBmbGV4OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiAtbW96LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIGZvbnQtc2l6ZTogMjJweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJvcmRlcjogMCBzb2xpZDsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgY29sb3I6ICM0OTRjNGY7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBsaW5lLWhlaWdodDogMTsKfQoKLmhmZS1uYXYtbWVudV9fdG9nZ2xlLWljb24gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtdmFyaWFudDogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0ZXh0LXJlbmRlcmluZzogYXV0bzsKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKfQoKLmhmZS1uYXYtbWVudSAuc3ViLWFycm93IHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgLWpzLWRpc3BsYXk6IGZsZXg7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgIGRpc3BsYXk6IC1tb3otYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgbWFyZ2luLXRvcDogLTEwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAtMTBweDsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSAuc3ViLWFycm93IHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4Owp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLmhmZS1uYXYtbWVudSAuc3ViLWFycm93LAouaGZlLWxheW91dC1leHBhbmRpYmxlIC5zdWItYXJyb3csCi5oZmUtZmx5b3V0LXdyYXBwZXIgLnN1Yi1hcnJvdyB7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgouaGZlLW5hdi1tZW51IC5jaGlsZC1pdGVtLAouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLmhmZS1uYXYtbWVudSAuY2hpbGQtaXRlbSB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHBhZGRpbmc6IDEwcHggMCAxMHB4IDEwcHg7CiAgICBtYXJnaW4tdG9wOiAtMTBweDsKICAgIG1hcmdpbi1ib3R0b206IC0xMHB4OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7Cn0KCi5oZmUtbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudV9fdG9nZ2xlLAouaGZlLWxheW91dC12ZXJ0aWNhbCAuaGZlLW5hdi1tZW51X190b2dnbGUgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgb3BhY2l0eTogMDsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5oZmUtbmF2LW1lbnUtaWNvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLnNhdmVkLWNvbnRlbnQsCi5oZmUtbmF2LW1lbnVfX2xheW91dC1leHBhbmRpYmxlIC5zdWItbWVudSwKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLmNoaWxkLAouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLnNhdmVkLWNvbnRlbnQsCi5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAuc3ViLW1lbnUsCi5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAuY2hpbGQsCi5oZmUtZmx5b3V0LWNvbnRhaW5lciAuc2F2ZWQtY29udGVudCwKLmhmZS1mbHlvdXQtY29udGFpbmVyIC5zdWItbWVudSwKLmhmZS1mbHlvdXQtY29udGFpbmVyIC5jaGlsZCB7CiAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgouaGZlLWZseW91dC1jb250YWluZXIgLmhmZS1uYXYtbWVudSAuc3ViLW1lbnUgewogICAgYmFja2dyb3VuZDogdW5zZXQ7Cn0KCi5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAuaGZlLW1lbnUtdG9nZ2xlOmhvdmVyLAouaGZlLW5hdi1tZW51X19sYXlvdXQtZXhwYW5kaWJsZSAuaGZlLW1lbnUtdG9nZ2xlOmhvdmVyLAouaGZlLWZseW91dC13cmFwcGVyIC5oZmUtbWVudS10b2dnbGU6aG92ZXIgewogICAgYm9yZGVyOiAxcHggZG90dGVkOwp9CgouaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLmhmZS1tZW51LXRvZ2dsZSwKLmhmZS1uYXYtbWVudV9fbGF5b3V0LWV4cGFuZGlibGUgLmhmZS1tZW51LXRvZ2dsZSwKLmhmZS1mbHlvdXQtd3JhcHBlciAuaGZlLW1lbnUtdG9nZ2xlIHsKICAgIGJvcmRlcjogMXB4IGRvdHRlZCB0cmFuc3BhcmVudDsKfQoKLyogQ29tbW9uIEFuaW1hdGlvbiBDU1MgKi8KCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbSBhOmJlZm9yZSwKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtIGE6YWZ0ZXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IDAuM3M7CiAgICB0cmFuc2l0aW9uOiAwLjNzOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTgsIDAuMywgMC4wMDUsIDEpOwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU4LCAwLjMsIDAuMDA1LCAxKTsKfQoKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgb3BhY2l0eTogMDsKfQoKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpob3ZlcjpiZWZvcmUsCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YWZ0ZXIsCi5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06Zm9jdXM6YmVmb3JlLAouaGZlLW5hdi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOmZvY3VzOmFmdGVyLAouaGZlLW5hdi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkOmJlZm9yZSwKLmhmZS1uYXYtbWVudSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbS5oaWdobGlnaHRlZDphZnRlciwKLmhmZS1uYXYtbWVudSAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlLAouaGZlLW5hdi1tZW51IC5jdXJyZW50LW1lbnUtaXRlbTphZnRlciB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7Cn0KCi8qIERvdWJsZSBMaW5lIC8gVW5kZXJsaW5lIC8gT3ZlcmxpbmUgU3R5bGUgKi8KCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICBoZWlnaHQ6IDNweDsKICAgIHdpZHRoOiAxMDAlOwogICAgbGVmdDogMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTU5NWM7CiAgICB6LWluZGV4OiAyOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2dyb3cgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX3VuZGVybGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgaGVpZ2h0OiAwOwogICAgd2lkdGg6IDA7CiAgICBsZWZ0OiA1MCU7Cn0KCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1vdXQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1vdXQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLW91dCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIHRvcDogMTBweDsKfQoKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLW91dCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX2Ryb3Atb3V0IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLW91dCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgYm90dG9tOiAxMHB4Owp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2Ryb3AtaW4gLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1pbiAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX2Ryb3AtaW4gLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICB0b3A6IC0xMHB4Owp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2Ryb3AtaW4gLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmFmdGVyLAouaGZlLXBvaW50ZXJfX3VuZGVybGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLWluIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLWluIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciB7CiAgICBib3R0b206IC0xMHB4Owp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX25vbmUsCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0sCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0gewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBzOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX25vbmU6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX25vbmU6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZTpob3ZlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ub25lOmZvY3VzLAouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1cywKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmU6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmU6aG92ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmU6Zm9jdXMsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouaGZlLXBvaW50ZXJfX3VuZGVybGluZS5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1cywKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19ub25lOmJlZm9yZSwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19ub25lOmFmdGVyLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX25vbmU6aG92ZXIsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZTpmb2N1cywKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBzOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHRvcDogMDsKfQoKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19zbGlkZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX3NsaWRlIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgd2lkdGg6IDEwcHg7CiAgICBsZWZ0OiAtMjBweDsKfQoKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIGJvdHRvbTogMDsKfQoKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19zbGlkZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX3NsaWRlIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciB7CiAgICB3aWR0aDogMTBweDsKICAgIGxlZnQ6IC13ZWJraXQtY2FsYyggMTAwJSArIDIwcHgpOwogICAgbGVmdDogY2FsYyggMTAwJSArIDIwcHgpOwp9CgovKiBGcmFtZWQgU3R5bGUgKi8KCi5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDA7CiAgICByaWdodDogMDsKICAgIGJvcmRlcjogM3B4IHNvbGlkICM1NTU5NWM7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUgewogICAgY29udGVudDogJyc7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2dyb3cgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC43NSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjc1KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX3NocmluayAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjI1KTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMjUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjI1KTsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19zaHJpbmsgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4ycywgLXdlYmtpdC10cmFuc2Zvcm0gMC40czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycywgLXdlYmtpdC10cmFuc2Zvcm0gMC40czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycywgdHJhbnNmb3JtIDAuNHM7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMsIHRyYW5zZm9ybSAwLjRzLCAtd2Via2l0LXRyYW5zZm9ybSAwLjRzOwp9CgouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2RyYXcgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmFmdGVyIHsKICAgIHdpZHRoOiAzcHg7CiAgICBoZWlnaHQ6IDNweDsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlIHsKICAgIGJvcmRlci13aWR0aDogMCAwIDNweCAzcHg7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IHdpZHRoIDAuMXMgMC4ycywgaGVpZ2h0IDAuMXMgMC4zcywgb3BhY2l0eSAwLjEycyAwLjIyczsKICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMXMgMC4ycywgaGVpZ2h0IDAuMXMgMC4zcywgb3BhY2l0eSAwLjEycyAwLjIyczsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICB0b3A6IGluaXRpYWw7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiBpbml0aWFsOwogICAgcmlnaHQ6IDA7CiAgICBib3JkZXItd2lkdGg6IDNweCAzcHggMCAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAwLjFzLCBoZWlnaHQgMC4xcyAwLjFzLCBvcGFjaXR5IDAuMDJzIDAuMThzOwogICAgdHJhbnNpdGlvbjogd2lkdGggMC4xcywgaGVpZ2h0IDAuMXMgMC4xcywgb3BhY2l0eSAwLjAycyAwLjE4czsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlcjphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXM6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1czphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5oaWdobGlnaHRlZDphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5jdXJyZW50LW1lbnUtaXRlbTphZnRlciB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1czpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2RyYXcgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjAycywgaGVpZ2h0IDAuMXMsIHdpZHRoIDAuMXMgMC4xczsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4wMnMsIGhlaWdodCAwLjFzLCB3aWR0aCAwLjFzIDAuMXM7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2RyYXcgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyOmFmdGVyLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1czphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2RyYXcgLmN1cnJlbnQtbWVudS1pdGVtOmFmdGVyIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjAycyAwLjJzLCBoZWlnaHQgMC4xcyAwLjJzLCB3aWR0aCAwLjFzIDAuM3M7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMDJzIDAuMnMsIGhlaWdodCAwLjFzIDAuMnMsIHdpZHRoIDAuMXMgMC4zczsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19jb3JuZXJzIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICB3aWR0aDogM3B4OwogICAgaGVpZ2h0OiAzcHg7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2Nvcm5lcnMgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICBib3JkZXItd2lkdGg6IDNweCAwIDAgM3B4Owp9CgouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19jb3JuZXJzIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHRvcDogaW5pdGlhbDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IGluaXRpYWw7CiAgICByaWdodDogMDsKICAgIGJvcmRlci13aWR0aDogMCAzcHggM3B4IDA7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2Nvcm5lcnMgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2Nvcm5lcnMgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXM6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2Nvcm5lcnMgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2Nvcm5lcnMgLmN1cnJlbnQtbWVudS1pdGVtOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAuY3VycmVudC1tZW51LWl0ZW06YWZ0ZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4wMDJzLCB3aWR0aCAwLjRzLCBoZWlnaHQgMC40czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4wMDJzLCB3aWR0aCAwLjRzLCBoZWlnaHQgMC40czsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0gewogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBzOwp9CgouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19ub25lOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZTphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZTpob3ZlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZTpmb2N1cywKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKfQoKLyogQmFja2dyb3VuZCBTdHlsZSAqLwoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IDAuM3M7CiAgICB0cmFuc2l0aW9uOiAwLjNzOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kOiAjNTU1OTVjOwogICAgei1pbmRleDogLTE7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZCAuY3VycmVudC1tZW51LWl0ZW0gewogICAgY29sb3I6ICNmZmY7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXM6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDE7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHJpbmsgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMik7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IDAuM3M7CiAgICB0cmFuc2l0aW9uOiAwLjNzOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2hyaW5rIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlcjpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHJpbmsgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzOmJlZm9yZSwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NocmluayAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2hyaW5rIC5jdXJyZW50LW1lbnUtaXRlbTpiZWZvcmUgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzLCAtd2Via2l0LXRyYW5zZm9ybSAwLjRzOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cywgLXdlYmtpdC10cmFuc2Zvcm0gMC40czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMsIHRyYW5zZm9ybSAwLjRzOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cywgdHJhbnNmb3JtIDAuNHMsIC13ZWJraXQtdHJhbnNmb3JtIDAuNHM7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zd2VlcC1sZWZ0IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgbGVmdDogMTAwJTsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3N3ZWVwLXJpZ2h0IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgcmlnaHQ6IDEwMCU7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zd2VlcC11cCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIHRvcDogMTAwJTsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3N3ZWVwLWRvd24gLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICBib3R0b206IDEwMCU7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLW91dC12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIGJvdHRvbTogNTAlOwogICAgdG9wOiA1MCU7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgcmlnaHQ6IDUwJTsKICAgIGxlZnQ6IDUwJTsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4tdmVydGljYWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmFmdGVyLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi1ob3Jpem9udGFsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kOiAjNTU1OTVjOwogICAgei1pbmRleDogLTE7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLXZlcnRpY2FsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUgewogICAgdG9wOiAwOwogICAgYm90dG9tOiAxMDAlOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIgewogICAgdG9wOiAxMDAlOwogICAgYm90dG9tOiAwOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXM6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQ6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlIHsKICAgIGJvdHRvbTogNTAlOwp9CgouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLXZlcnRpY2FsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1czphZnRlciwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4tdmVydGljYWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkOmFmdGVyLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi12ZXJ0aWNhbCAuY3VycmVudC1tZW51LWl0ZW06YWZ0ZXIgewogICAgdG9wOiA1MCU7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLWhvcml6b250YWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IDEwMCU7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLWhvcml6b250YWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmFmdGVyIHsKICAgIHJpZ2h0OiAxMDAlOwogICAgbGVmdDogMDsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4taG9yaXpvbnRhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi1ob3Jpem9udGFsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1czpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLWhvcml6b250YWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkOmJlZm9yZSwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4taG9yaXpvbnRhbCAuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlIHsKICAgIGxlZnQ6IDUwJTsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4taG9yaXpvbnRhbCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXI6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19zaHV0dGVyLWluLWhvcml6b250YWwgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzOmFmdGVyLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fc2h1dHRlci1pbi1ob3Jpem9udGFsIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5oaWdobGlnaHRlZDphZnRlciwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX3NodXR0ZXItaW4taG9yaXpvbnRhbCAuY3VycmVudC1tZW51LWl0ZW06YWZ0ZXIgewogICAgcmlnaHQ6IDUwJTsKfQoKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX25vbmUsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDBzOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7Cn0KCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19ub25lOmJlZm9yZSwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX25vbmU6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19ub25lOmhvdmVyLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fbm9uZTpmb2N1cywKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKLmhmZS1wb2ludGVyX19iYWNrZ3JvdW5kLmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmFmdGVyLAouaGZlLXBvaW50ZXJfX2JhY2tncm91bmQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5oZmUtcG9pbnRlcl9fYmFja2dyb3VuZC5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1cyB7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDBzOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7Cn0KCi8qIFRleHQgU3R5bGUgKi8KCi5oZmUtcG9pbnRlcl9fdGV4dC5oZmUtYW5pbWF0aW9uX19za2V3IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX3NrZXcgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3KC04ZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHNrZXcoLThkZWcpOwogICAgdHJhbnNmb3JtOiBza2V3KC04ZGVnKTsKfQoKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX2dyb3cgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMik7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwp9CgouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fc2hyaW5rIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX3NocmluayAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwp9CgouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fZmxvYXQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fZmxvYXQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTsKfQoKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX3NpbmsgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fc2luayAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg4cHgpOwp9CgouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fcm90YXRlIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX3JvdGF0ZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg2ZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg2ZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDZkZWcpOwp9CgouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fbm9uZSwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKfQoKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX25vbmU6YmVmb3JlLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fbm9uZTphZnRlciwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX25vbmU6aG92ZXIsCi5oZmUtcG9pbnRlcl9fdGV4dC5oZmUtYW5pbWF0aW9uX19ub25lOmZvY3VzLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fbm9uZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fdGV4dC5oZmUtYW5pbWF0aW9uX19ub25lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmhmZS1wb2ludGVyX190ZXh0LmhmZS1hbmltYXRpb25fX25vbmUgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsKfQoKLmhmZS1mbHlvdXQtb3ZlcmxheSB7CiAgICBkaXNwbGF5OiBub25lOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwOwogICAgei1pbmRleDogOTk5OTk4OwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuNik7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLyogTm8gbGluayBob3ZlciBlZmZlY3QgdG8gbGFzdCBtZW51IGl0ZW0gKi8KCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uOmFmdGVyLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uZWxlbWVudG9yLWJ1dHRvbjphZnRlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uZWxlbWVudG9yLWJ1dHRvbjpiZWZvcmUgewogICAgaGVpZ2h0OiAwcHg7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtLmVsZW1lbnRvci1idXR0b246YWZ0ZXIgewogICAgYm9yZGVyLXdpZHRoOiAwcHg7Cn0KCi5oZmUtcG9pbnRlcl9fdGV4dC5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uOmhvdmVyLAouaGZlLXBvaW50ZXJfX3RleHQuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW0uZWxlbWVudG9yLWJ1dHRvbjpmb2N1cyB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTsKICAgIHRyYW5zZm9ybTogbm9uZTsKfQoKLmhmZS1mbHlvdXQtY2xvc2UsCi5oZmUtZmx5b3V0LWNsb3NlIHN2ZyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIG1hcmdpbjogNXB4OwogICAgd2lkdGg6IDIzcHg7CiAgICBoZWlnaHQ6IDIzcHg7CiAgICBsaW5lLWhlaWdodDogMjNweDsKICAgIGZvbnQtc2l6ZTogMjNweDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgouaGZlLWZseW91dC13cmFwcGVyIC5oZmUtc2lkZS5oZmUtZmx5b3V0LWxlZnQgewogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogLTEwMCU7CiAgICByaWdodDogYXV0bzsKICAgIGhlaWdodDogMTAwJTsKICAgIC8qaGVpZ2h0OiAxMDB2aDsqLwogICAgd2lkdGg6IDMwMHB4OwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDB2dzsKfQoKLmhmZS1mbHlvdXQtd3JhcHBlciAuaGZlLXNpZGUgewogICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDk5OTk5OTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLmhmZS1mbHlvdXQtd3JhcHBlciAuaGZlLXNpZGUuaGZlLWZseW91dC1zaG93IHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouaGZlLWZseW91dC1jb250ZW50LnB1c2ggewogICAgY29sb3I6ICNmZmZmZmY7Cn0KCi5oZmUtZmx5b3V0LWNvbnRlbnQgdWwgbGkgewogICAgY29sb3I6ICNmZmZmZmY7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqICBGbHlvdXQgTG9jYXRpb24KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCi5oZmUtZmx5b3V0LXdyYXBwZXIgLmhmZS1zaWRlLmhmZS1mbHlvdXQtcmlnaHQgewogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogYXV0bzsKICAgIHJpZ2h0OiAtMTAwJTsKICAgIC8qIGRlZmF1bHQgKi8KICAgIGhlaWdodDogMTAwJTsKICAgIC8qaGVpZ2h0OiAxMDB2aDsqLwogICAgd2lkdGg6IDMwMHB4OwogICAgLyogZGVmYXVsdCAqLwogICAgbWF4LXdpZHRoOiAxMDAlOwp9CgouaGZlLWZseW91dC13cmFwcGVyIC5oZmUtc2lkZS5oZmUtZmx5b3V0LWxlZnQgewogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogLTEwMCU7CiAgICAvKiBkZWZhdWx0ICovCiAgICByaWdodDogYXV0bzsKICAgIGhlaWdodDogMTAwJTsKICAgIC8qaGVpZ2h0OiAxMDB2aDsqLwogICAgd2lkdGg6IDMwMHB4OwogICAgLyogZGVmYXVsdCAqLwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDB2dzsKfQoKLmhmZS1mbHlvdXQtd3JhcHBlciAuaGZlLXNpZGUudG9wIHsKICAgIHRvcDogLTEwMCU7CiAgICAvKiBkZWZhdWx0ICovCiAgICBib3R0b206IGF1dG87CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIHdpZHRoOiAxMDB2dzsKICAgIGhlaWdodDogMzAwcHg7CiAgICAvKiBkZWZhdWx0ICovCiAgICBtYXgtaGVpZ2h0OiAxMDAlOwp9CgouaGZlLWZseW91dC13cmFwcGVyIC5oZmUtc2lkZS5ib3R0b20gewogICAgdG9wOiBhdXRvOwogICAgYm90dG9tOiAtMTAwJTsKICAgIC8qIGRlZmF1bHQgKi8KICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgd2lkdGg6IDEwMHZ3OwogICAgaGVpZ2h0OiAzMDBweDsKICAgIC8qIGRlZmF1bHQgKi8KICAgIG1heC1oZWlnaHQ6IDEwMCU7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqICBGbHlvdXQgQ29udGFpbmVyCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgouaGZlLWZseW91dC1jb250ZW50IHsKICAgIGhlaWdodDogMTAwJTsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICBsaW5lLWhlaWdodDogMS40ZW07CiAgICBjb2xvcjogI2ZmZjsKfQoKLyogaU9TIGZpeCAqLwoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuaGZlLWZseW91dC1jb250ZW50IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICB9Cn0KCi5oZmUtZmx5b3V0LWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5hZG1pbi1iYXIgLmhmZS1zaWRlIHsKICAgIG1hcmdpbi10b3A6IDMycHg7Cn0KCi8qIERyb3Bkb3duIGFuaW1hdGlvbiBDU1MgKi8KCi5oZmUtc3VibWVudS1hbmltYXRpb24tc2xpZGVfdXAgLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbj51bC5zdWItbWVudSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwJSk7CiAgICBvcGFjaXR5OiAwOwogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApIjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMXM7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xczsKfQoKLmhmZS1zdWJtZW51LWFuaW1hdGlvbi1zbGlkZV91cCAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyPnVsLnN1Yi1tZW51IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIG9wYWNpdHk6IDE7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7Cn0KCi5oZmUtc3VibWVudS1hbmltYXRpb24tc2xpZGVfZG93biAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuPnVsLnN1Yi1tZW51IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAlKTsKICAgIG9wYWNpdHk6IDA7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCkiOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4xczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjFzOwp9CgouaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLXNsaWRlX2Rvd24gLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpob3Zlcj51bC5zdWItbWVudSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICBvcGFjaXR5OiAxOwogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiOwp9CgouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnU6bm90KC5oZmUtbmF2LW1lbnVfX2FsaWduLWp1c3RpZnkpOm5vdCguaGZlLW1lbnUtaXRlbS1zcGFjZS1iZXR3ZWVuKSBhLmhmZS1tZW51LWl0ZW0uZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKfQoKLmhmZS1uYXYtbWVudSBsaS5lbGVtZW50b3ItYnV0dG9uLXdyYXBwZXIgewogICAgYWxpZ24tc2VsZjogY2VudGVyOwp9CgovKiBUYWJsZXQgKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKCBtYXgtd2lkdGg6IDEwMjRweCkgewogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgbGksCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDBweDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudV9fdG9nZ2xlLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1sYXlvdXQtdmVydGljYWwgLmhmZS1uYXYtbWVudV9fdG9nZ2xlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1hY3RpdmUtbWVudSsuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IHsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgaGVpZ2h0OiAwOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1hY3RpdmUtbWVudSsuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtYWN0aXZlLW1lbnUrLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIHsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1hY3RpdmUtbWVudS5oZmUtYWN0aXZlLW1lbnUtZnVsbC13aWR0aCsuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLWFjdGl2ZS1tZW51LmhmZS1hY3RpdmUtbWVudS1mdWxsLXdpZHRoKy5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1hY3RpdmUtbWVudS5oZmUtYWN0aXZlLW1lbnUtZnVsbC13aWR0aCsuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5zdWItbWVudSB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUgewogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51X190b2dnbGUsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLWxheW91dC12ZXJ0aWNhbCAuaGZlLW5hdi1tZW51X190b2dnbGUgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCB7CiAgICAgICAgZmxvYXQ6IG5vbmU7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyPi5zdWItbWVudSwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW46aG92ZXI+LnN1Yi1tZW51LAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW46aG92ZXI+LnN1Yi1tZW51IHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbWVudS10b2dnbGU6aG92ZXIgewogICAgICAgIGJvcmRlcjogMXB4IGRvdHRlZDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbWVudS10b2dnbGUgewogICAgICAgIGJvcmRlcjogMXB4IGRvdHRlZCB0cmFuc3BhcmVudDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5zdWItbWVudSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5zdWItbWVudSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMDsKICAgICAgICB0b3A6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuc2F2ZWQtY29udGVudCwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5zdWItbWVudSwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5jaGlsZCB7CiAgICAgICAgbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51IC5zdWItbWVudSB7CiAgICAgICAgbWluLXdpZHRoOiBhdXRvOwogICAgICAgIG1hcmdpbjogMDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLnN1Yi1hcnJvdyB7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0LmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/igJ7igKEnOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQuaGZlLXN1Ym1lbnUtaWNvbi1jbGFzc2ljIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIHVsIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8OvxpLigJQnOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8Ov4oCe4oCgJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0LmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8OvxpLLnCc7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldC5oZmUtc3VibWVudS1pY29uLXBsdXMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LWFjdGl2ZSBhIC5zdWItYXJyb3cgaTpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICctJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnUgLnN1Yi1tZW51IHsKICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LWFjdGl2ZSBhIC5zdWItYXJyb3cgaTpiZWZvcmUsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW5vbmUuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8Ov4oCe4oCeJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbm9uZS5oZmUtc3VibWVudS1pY29uLWNsYXNzaWMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LWFjdGl2ZSBhIC5zdWItYXJyb3cgaTpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICfDr8aS4oSiJwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEuaGZlLW1lbnUtaXRlbSAuc3ViLWFycm93IGk6YmVmb3JlLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lLmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LWFjdGl2ZSBhLmhmZS1tZW51LWl0ZW0gLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8Ov4oCe4oCgJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEuaGZlLW1lbnUtaXRlbSAuc3ViLWFycm93IGk6YmVmb3JlLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEuaGZlLW1lbnUtaXRlbSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/GksucJwogICAgfQogICAgLyogRWZmZWN0IDE6IEZhZGUgaW4gYW5kIHNjYWxlIHVwICovCiAgICAuaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLXNsaWRlX3VwIC5oZmUtbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwuc3ViLW1lbnUsCiAgICAuaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLXNsaWRlX3VwIC5oZmUtbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW46aG92ZXIgdWwuc3ViLW1lbnUsCiAgICAuaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLXNsaWRlX2Rvd24gLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB1bC5zdWItbWVudSwKICAgIC5oZmUtc3VibWVudS1hbmltYXRpb24tc2xpZGVfZG93biAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyIHVsLnN1Yi1tZW51IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBub25lOwogICAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgIH0KICAgIC8qLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSB1bC5zdWItbWVudSB1bC5zdWItbWVudSBsaSBhewogICAgICAgIGJvcmRlci1sZWZ0OiAxNnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgfSovCiAgICAuZWxlbWVudG9yLXdpZGdldC1oZmUtbmF2LW1lbnUuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51LWxheW91dDpub3QoLmhmZS1wb2ludGVyX19mcmFtZWQpIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnUtbGF5b3V0Om5vdCguaGZlLXBvaW50ZXJfX2ZyYW1lZCkgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdW5zZXQgIWltcG9ydGFudDsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUgewogICAgICAgIGJvcmRlcjogMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1oZmUtbmF2LW1lbnUuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLXBvaW50ZXJfX3RleHQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAogICAgLmhmZS1wb2ludGVyX190ZXh0IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1cyB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldC5oZmUtbmF2LW1lbnVfX2FsaWduLWp1c3RpZnkgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSBsaSBhLmhmZS1tZW51LWl0ZW0sCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldC5oZmUtbmF2LW1lbnVfX2FsaWduLWp1c3RpZnkgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSBsaSBhLmhmZS1zdWItbWVudS1pdGVtLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQuaGZlLW5hdi1tZW51X19hbGlnbi1qdXN0aWZ5IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgbGkuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC1tb3otYm94LXBhY2s6IGp1c3RpZnk7CiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICB9Cn0KCi8qIE1vYmlsZSAqLwoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoIG1heC13aWR0aDogNzY3cHgpIHsKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1uYXYtbWVudV9fYWxpZ24tanVzdGlmeSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IGxpIGEuaGZlLW1lbnUtaXRlbSwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1uYXYtbWVudV9fYWxpZ24tanVzdGlmeSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0gLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQuaGZlLW5hdi1tZW51X19hbGlnbi1qdXN0aWZ5IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgbGkuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyIHsKICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC1tb3otYm94LXBhY2s6IGp1c3RpZnk7CiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51X190b2dnbGUsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSB7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgbGkubWVudS1pdGVtLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudSB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1uYXYtdG9nZ2xlLXllcyAuaGZlLWxheW91dC12ZXJ0aWNhbCAuaGZlLW5hdi1tZW51X190b2dnbGUgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5zdWItbWVudSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMDsKICAgICAgICB0b3A6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51IC5zdWItbWVudSB7CiAgICAgICAgbWluLXdpZHRoOiBhdXRvOwogICAgICAgIG1hcmdpbjogMDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW46aG92ZXI+LnN1Yi1tZW51LAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW46aG92ZXI+LnN1Yi1tZW51IHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCB7CiAgICAgICAgZmxvYXQ6IG5vbmU7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1sYXlvdXQtdmVydGljYWwgLmhmZS1uYXYtbWVudV9fdG9nZ2xlLmhmZS1hY3RpdmUtbWVudSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZSwKICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbGF5b3V0LXZlcnRpY2FsIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZSB7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGhlaWdodDogMDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCB7CiAgICAgICAgZmxvYXQ6IG5vbmU7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuc3ViLW1lbnUgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudSB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLWFjdGl2ZS1tZW51Ky5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBoZWlnaHQ6IDA7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLWFjdGl2ZS1tZW51Ky5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1hY3RpdmUtbWVudSsuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLWFjdGl2ZS1tZW51LmhmZS1hY3RpdmUtbWVudS1mdWxsLXdpZHRoKy5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnUgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtYWN0aXZlLW1lbnUuaGZlLWFjdGl2ZS1tZW51LWZ1bGwtd2lkdGgrLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLWFjdGl2ZS1tZW51LmhmZS1hY3RpdmUtbWVudS1mdWxsLXdpZHRoKy5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51IHsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1zdWJtZW51LWljb24tYXJyb3cgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/igJ7igKEnOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUuaGZlLXN1Ym1lbnUtaWNvbi1jbGFzc2ljIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIHVsIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8OvxpLigJQnOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8Ov4oCe4oCgJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8OvxpLLnCc7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtc3VibWVudS1pY29uLXBsdXMgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLnN1Yi1tZW51LWFjdGl2ZSBhIC5zdWItYXJyb3cgaTpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICctJzsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbm9uZS5oZmUtc3VibWVudS1pY29uLWFycm93IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIC5zdWItbWVudS1hY3RpdmUgYSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/igJ7igJ4nOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEgLnN1Yi1hcnJvdyBpOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ8OvxpLihKInCiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW5vbmUuaGZlLXN1Ym1lbnUtaWNvbi1hcnJvdyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEuaGZlLW1lbnUtaXRlbSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/igJ7igKAnOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lLmhmZS1zdWJtZW51LWljb24tY2xhc3NpYyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuc3ViLW1lbnUtYWN0aXZlIGEuaGZlLW1lbnUtaXRlbSAuc3ViLWFycm93IGk6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnw6/GksucJwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1tZW51LXRvZ2dsZTpob3ZlciB7CiAgICAgICAgYm9yZGVyOiAxcHggZG90dGVkOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1tZW51LXRvZ2dsZSB7CiAgICAgICAgYm9yZGVyOiAxcHggZG90dGVkIHRyYW5zcGFyZW50OwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudSAuc3ViLW1lbnUgewogICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgfQogICAgLyogRWZmZWN0IDE6IEZhZGUgaW4gYW5kIHNjYWxlIHVwICovCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1lZmZlY3QtMSAuaGZlLW5hdi1tZW51IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC43KTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjcpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC43KTsKICAgICAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCkiOwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3M7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51IC5zdWItYXJyb3cgewogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICB9CiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZSAubWVudS1pcy1hY3RpdmUuaGZlLWVmZmVjdC0xIC5oZmUtbmF2LW1lbnUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiOwogICAgfQogICAgLyogRWZmZWN0IDI6IFNsaWRlIGZyb20gdGhlIHJpZ2h0ICovCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZS5oZmUtbmF2LXRvZ2dsZS15ZXMgLmhmZS1lZmZlY3QtMiAuaGZlLW5hdi1tZW51IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMCUpOwogICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAlKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKSI7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC41LCAwLjUsIDAuOSk7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNSwgMC41LCAwLjkpOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLm1lbnUtaXMtYWN0aXZlLmhmZS1lZmZlY3QtMiAuaGZlLW5hdi1tZW51IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApIjsKICAgIH0KICAgIC8qIEVmZmVjdCAzOiBTbGlkZSBmcm9tIHRoZSBib3R0b20gKi8KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlLmhmZS1uYXYtdG9nZ2xlLXllcyAuaGZlLWVmZmVjdC0zIC5oZmUtbmF2LW1lbnUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwJSk7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMCUpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApIjsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgfQogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLm1lbnUtaXMtYWN0aXZlLmhmZS1lZmZlY3QtMyAuaGZlLW5hdi1tZW51IHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApIjsKICAgIH0KICAgIC5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5zYXZlZC1jb250ZW50LAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLnN1Yi1tZW51LAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmNoaWxkLAogICAgLmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLnNhdmVkLWNvbnRlbnQsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuc3ViLW1lbnUsCiAgICAuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuY2hpbGQgewogICAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgfQogICAgLmhmZS1zdWJtZW51LWFuaW1hdGlvbi1zbGlkZV91cCAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIHVsLnN1Yi1tZW51LAogICAgLmhmZS1zdWJtZW51LWFuaW1hdGlvbi1zbGlkZV91cCAuaGZlLWxheW91dC1ob3Jpem9udGFsIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyIHVsLnN1Yi1tZW51LAogICAgLmhmZS1zdWJtZW51LWFuaW1hdGlvbi1zbGlkZV9kb3duIC5oZmUtbGF5b3V0LWhvcml6b250YWwgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwuc3ViLW1lbnUsCiAgICAuaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLXNsaWRlX2Rvd24gLmhmZS1sYXlvdXQtaG9yaXpvbnRhbCAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpob3ZlciB1bC5zdWItbWVudSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgLW1zLXRyYW5zZm9ybTogbm9uZTsKICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1oZmUtbmF2LW1lbnUuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLW5hdi1tZW51LWxheW91dDpub3QoLmhmZS1wb2ludGVyX19mcmFtZWQpIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnUtbGF5b3V0Om5vdCguaGZlLXBvaW50ZXJfX2ZyYW1lZCkgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmFmdGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtaGZlLW5hdi1tZW51LmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1uYXYtbWVudS1sYXlvdXQ6bm90KC5oZmUtcG9pbnRlcl9fZnJhbWVkKSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAogICAgLmVsZW1lbnRvci13aWRnZXQtaGZlLW5hdi1tZW51LmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudS1sYXlvdXQ6bm90KC5oZmUtcG9pbnRlcl9fZnJhbWVkKSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnNldCAhaW1wb3J0YW50OwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaGZlLW5hdi1tZW51LmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1wb2ludGVyX19mcmFtZWQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpiZWZvcmUgewogICAgICAgIGJvcmRlcjogMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1oZmUtbmF2LW1lbnUuaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCAuaGZlLXBvaW50ZXJfX3RleHQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAogICAgLmhmZS1wb2ludGVyX190ZXh0IC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTpmb2N1cywKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtcG9pbnRlcl9fdGV4dCAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCiAgICAuaGZlLXBvaW50ZXJfX3RleHQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmZvY3VzIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIC1tcy10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgIH0KfQoKLmhmZS10b2dnbGUtbm8gLmhmZS1sYXlvdXQtZXhwYW5kaWJsZSAuaGZlLW5hdi1tZW51X190b2dnbGUgewogICAgZGlzcGxheTogbm9uZTsKfQoKLyogSWNvbiBjb21tb24gQ1NTICovCgouaGZlLWljb24gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgovKiBNZW51IENhcnQgQ1NTICovCgouaGZlLWNhcnQtbWVudS13cmFwLWN1c3RvbSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMTsKfQoKLmhmZS1jYXJ0LW1lbnUtd3JhcC1jdXN0b20gLmhmZS1jYXJ0LWNvdW50LAouaGZlLWNhcnQtbWVudS13cmFwLWN1c3RvbSAuaGZlLWNhcnQtY291bnQ6YWZ0ZXIgewogICAgYm9yZGVyLWNvbG9yOiAjNzVjMzJjOwogICAgY29sb3I6ICM3NWMzMmM7Cn0KCi5oZmUtY2FydC1tZW51LXdyYXAtY3VzdG9tIC5oZmUtY2FydC1jb3VudCB7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtaW4td2lkdGg6IDIuMWVtOwogICAgbWluLWhlaWdodDogMi4xZW07CiAgICBmb250LXNpemU6IDAuODYwZW07CiAgICBsaW5lLWhlaWdodDogMS44OwogICAgYm9yZGVyLXJhZGl1czogMC4zZW0gMC4zZW0gMC4zZW0gMC4zZW07CiAgICBib3JkZXItd2lkdGg6IDJweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7Cn0KCi8qIERlZmF1bHQgc2tpbiBmb3IgY2FydCovCgouaGZlLWNhcnQtbWVudS13cmFwLWRlZmF1bHQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDE7Cn0KCi5oZmUtY2FydC1tZW51LXdyYXAtZGVmYXVsdCAuaGZlLWNhcnQtY291bnQsCi5oZmUtY2FydC1tZW51LXdyYXAtZGVmYXVsdCAuaGZlLWNhcnQtY291bnQ6YWZ0ZXIgewogICAgYm9yZGVyLWNvbG9yOiAjNzVjMzJjOwogICAgY29sb3I6ICM3NWMzMmM7Cn0KCi5oZmUtY2FydC1tZW51LXdyYXAtZGVmYXVsdCAuaGZlLWNhcnQtY291bnQgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWluLXdpZHRoOiAyLjFlbTsKICAgIG1pbi1oZWlnaHQ6IDIuMWVtOwogICAgZm9udC1zaXplOiAwLjg2MGVtOwogICAgbGluZS1oZWlnaHQ6IDEuODsKICAgIGJvcmRlci1yYWRpdXM6IDBlbSAwZW0gMC4zZW0gMC4zZW07CiAgICBib3JkZXItd2lkdGg6IDJweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBwYWRkaW5nOiAwIC40ZW07Cn0KCi5oZmUtY2FydC1tZW51LXdyYXAtZGVmYXVsdCAuaGZlLWNhcnQtY291bnQ6YWZ0ZXIgewogICAgYm90dG9tOiAxMDAlOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGhlaWdodDogLjhlbTsKICAgIHdpZHRoOiAuOGVtOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgdG9wOiAtLjZlbTsKICAgIGNvbnRlbnQ6ICcgJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgYm9yZGVyLXdpZHRoOiAycHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTBlbTsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMGVtOwogICAgYm9yZGVyLWJvdHRvbTogMDsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLWNhcnQ6bm90KC5oZmUtbWVudS1jYXJ0LS1zaG93LXN1YnRvdGFsLXllcykgLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi10ZXh0IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1jYXJ0LnRvZ2dsZS1pY29uLS1iYWctbGlnaHQgLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi1pY29uIGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcZThlMyc7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1jYXJ0LnRvZ2dsZS1pY29uLS1iYWctbWVkaXVtIC5oZmUtbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbiBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZTQnOwp9CgouZWxlbWVudG9yLXdpZGdldC1oZmUtY2FydC50b2dnbGUtaWNvbi0tYmFnLXNvbGlkIC5oZmUtbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbiBpOmJlZm9yZSB7CiAgICBjb250ZW50OiAnXGU4ZTUnOwp9CgouaGZlLW1lbnUtY2FydF9fdG9nZ2xlIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIGNvbG9yOiAjODE4YTkxOwogICAgYm9yZGVyOiAxcHggc29saWQ7CiAgICBib3JkZXItY29sb3I6IGluaGVyaXQ7CiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi10ZXh0IHsKICAgIG1hcmdpbi1yaWdodDogMC4zZW07Cn0KCi5oZmUtbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIDAuMXM7CiAgICAtby10cmFuc2l0aW9uOiBjb2xvciAwLjFzOwogICAgdHJhbnNpdGlvbjogY29sb3IgMC4xczsKfQoKLmhmZS1tZW51LWNhcnQtLWl0ZW1zLWluZGljYXRvci1idWJibGUgLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi1pY29uW2RhdGEtY291bnRlcl06YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1jb3VudGVyKTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbWluLXdpZHRoOiAxLjZlbTsKICAgIGhlaWdodDogMS42ZW07CiAgICBsaW5lLWhlaWdodDogMS41ZW07CiAgICB0b3A6IC0wLjdlbTsKICAgIHJpZ2h0OiAtMC43ZW07CiAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxMHB4Owp9CgouaGZlLW1lbnUtY2FydC0taXRlbXMtaW5kaWNhdG9yLXBsYWluIC5oZmUtbWVudS1jYXJ0X190b2dnbGUgLmVsZW1lbnRvci1idXR0b24taWNvbltkYXRhLWNvdW50ZXJdOmJlZm9yZSB7CiAgICBjb250ZW50OiBhdHRyKGRhdGEtY291bnRlcik7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwp9CgouaGZlLW1lbnUtY2FydC0tZW1wdHktaW5kaWNhdG9yLWhpZGUgLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbiAuZWxlbWVudG9yLWJ1dHRvbi1pY29uW2RhdGEtY291bnRlcj0iMCJdOmJlZm9yZSB7CiAgICBjb250ZW50OiBub25lOwogICAgZGlzcGxheTogbm9uZTsKfQoKLmhmZS1tZW51LWNhcnRfX3RvZ2dsZSAuZWxlbWVudG9yLWJ1dHRvbi1pY29uIHsKICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDE2OwogICAgLXdlYmtpdC1vcmRlcjogMTU7CiAgICAtbXMtZmxleC1vcmRlcjogMTU7CiAgICBvcmRlcjogMTU7Cn0KCi5oZmUtbWVudS1jYXJ0X190b2dnbGUuZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGNvbG9yOiAjNGQ0ODQ4Owp9CgovKlNlYXJjaCBCb3ggQ1NTKi8KCi5oZmUtc2VhcmNoLWJ1dHRvbi13cmFwcGVyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgouaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5oZmUtc2VhcmNoLWZvcm1fX2lucHV0IHsKICAgIGZsZXgtYmFzaXM6IDEwMCU7Cn0KCi5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIGkuZmEtc2VhcmNoIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAyMHB4OwogICAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgouaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSBpOmJlZm9yZSB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgovKnNlYXJjaCBpY29uIHRvZ2dsZSBjc3MqLwoKLmhmZS1zZWFyY2gtYnV0dG9uLXdyYXBwZXIgaW5wdXRbdHlwZT1zZWFyY2hdIHsKICAgIGJvcmRlcjogMDsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgdHJhbnNpdGlvbjogYWxsIC41czsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBvdXRsaW5lOiBub25lOwp9CgouaGZlLXNlYXJjaC1idXR0b24td3JhcHBlciBidXR0b24gewogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5oZmUtc2VhcmNoLWJ1dHRvbi13cmFwcGVyIGlucHV0W3R5cGU9c2VhcmNoXTpmb2N1cyB7CiAgICBjdXJzb3I6IGF1dG87CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwp9CgouaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSBpbnB1dDotbW96LXBsYWNlaG9sZGVyLAouaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5oZmUtc2VhcmNoLWxheW91dC1pY29uIC5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIC5oZmUtc2VhcmNoLWZvcm1fX2lucHV0IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHVuc2V0OwogICAgaGVpZ2h0OiAxMDAlOwp9CgouaGZlLXNlYXJjaC1idXR0b24td3JhcHBlci5oZmUtaW5wdXQtZm9jdXMgewogICAgZGlzcGxheTogZmxleDsKfQoKLmhmZS1zZWFyY2gtZm9ybV9fY29udGFpbmVyIC5oZmUtc2VhcmNoLXN1Ym1pdCB7CiAgICBtaW4td2lkdGg6IDMlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIgYnV0dG9uI2NsZWFyLAouaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSBidXR0b24jY2xlYXIgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDA7CiAgICB0b3A6IDA7CiAgICBwYWRkaW5nOiAwIDhweDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm90dG9tOiAwOwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5oZmUtc2VhcmNoLWJ1dHRvbi13cmFwcGVyIGlucHV0W3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLAouaGZlLXNlYXJjaC1idXR0b24td3JhcHBlciBpbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwKLmhmZS1zZWFyY2gtYnV0dG9uLXdyYXBwZXIgaW5wdXRbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLAouaGZlLXNlYXJjaC1idXR0b24td3JhcHBlciBpbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5oZmUtc2VhcmNoLWZvcm1fX2NvbnRhaW5lciBidXR0b24jY2xlYXItd2l0aC1idXR0b24gewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgcGFkZGluZzogMCA4cHg7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXNpemU6IDEuMmVtOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmhmZS1zZWFyY2gtYnV0dG9uLXdyYXBwZXIsCi5oZmUtc2VhcmNoLWZvcm1fX2NvbnRhaW5lciwKLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUsCi5oZmUtc2VhcmNoLWJ1dHRvbi13cmFwcGVyIC5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIGksCi5oZmUtc2VhcmNoLWJ1dHRvbi13cmFwcGVyIC5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIGk6YmVmb3JlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmhmZS1zZWFyY2gtYnV0dG9uLXdyYXBwZXIgLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUgLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDA7CiAgICByaWdodDogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgouaGZlLXNlYXJjaC1idXR0b24td3JhcHBlci5oZmUtaW5wdXQtZm9jdXMgLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUgLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDI1MHB4OwogICAgcmlnaHQ6IDA7Cn0KCi5oZmUtc2VhcmNoLWxheW91dC10ZXh0IC5oZmUtc2VhcmNoLWZvcm1fX2NvbnRhaW5lciwKLmhmZS1zZWFyY2gtbGF5b3V0LWljb25fdGV4dCAuaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIsCi5oZmUtc2VhcmNoLWxheW91dC10ZXh0IC5oZmUtc2VhcmNoLWZvcm1fX2NvbnRhaW5lciAuaGZlLXNlYXJjaC1mb3JtX19pbnB1dCwKLmhmZS1zZWFyY2gtbGF5b3V0LWljb25fdGV4dCAuaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIgLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQgewogICAgd2lkdGg6IDEwMCU7Cn0KCi5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIHsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi8qLS0tLS0tLU5hdmlnYXRpb24gbWVudSBhY3RpdmUgcGFyZW50LS0tLS0tLS0tKi8KCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUuaGZlLWFuaW1hdGlvbl9fc2xpZGUgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmFmdGVyLAouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX3NsaWRlIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX3NsaWRlIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19zbGlkZSAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX2ZhZGUgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICBvcGFjaXR5OiAxOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2Ryb3Atb3V0IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1vdXQgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmFmdGVyLAouaGZlLXBvaW50ZXJfX292ZXJsaW5lLmhmZS1hbmltYXRpb25fX2Ryb3Atb3V0IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLWluIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1pbiAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1pbiAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgYm90dG9tOiAwcHg7CiAgICBvcGFjaXR5OiAxOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2Ryb3Atb3V0IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX2Ryb3Atb3V0IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZHJvcC1vdXQgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLWluIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fdW5kZXJsaW5lLmhmZS1hbmltYXRpb25fX2Ryb3AtaW4gLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19kcm9wLWluIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUgewogICAgdG9wOiAwcHg7CiAgICBvcGFjaXR5OiAxOwp9CgouaGZlLXBvaW50ZXJfX2RvdWJsZS1saW5lLmhmZS1hbmltYXRpb25fX2dyb3cgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX191bmRlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX3VuZGVybGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19vdmVybGluZS5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fb3ZlcmxpbmUuaGZlLWFuaW1hdGlvbl9fZ3JvdyAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgaGVpZ2h0OiAzcHg7CiAgICB3aWR0aDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICBvcGFjaXR5OiAxOwp9CgouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19ncm93IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX3NocmluayAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7Cn0KCi5oZmUtcG9pbnRlcl9fZnJhbWVkLmhmZS1hbmltYXRpb25fX2ZhZGUgLm1lbnUtaXRlbS5wYXJlbnQuY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOm5vdCg6aG92ZXIpOm5vdCg6Zm9jdXMpOm5vdCguY3VycmVudC1tZW51LWl0ZW0pOm5vdCguaGlnaGxpZ2h0ZWQpOmJlZm9yZSwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouaGZlLXBvaW50ZXJfX3VuZGVybGluZS5oZmUtYW5pbWF0aW9uX19mYWRlIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19kb3VibGUtbGluZS5oZmUtYW5pbWF0aW9uX19mYWRlIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTpiZWZvcmUsCi5oZmUtcG9pbnRlcl9fZG91YmxlLWxpbmUuaGZlLWFuaW1hdGlvbl9fZmFkZSAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YWZ0ZXIgewogICAgb3BhY2l0eTogMTsKfQoKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fY29ybmVycyAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19jb3JuZXJzIC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciwKLmhmZS1wb2ludGVyX19mcmFtZWQuaGZlLWFuaW1hdGlvbl9fZHJhdyAubWVudS1pdGVtLnBhcmVudC5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KC5jdXJyZW50LW1lbnUtaXRlbSk6bm90KC5oaWdobGlnaHRlZCk6YmVmb3JlLAouaGZlLXBvaW50ZXJfX2ZyYW1lZC5oZmUtYW5pbWF0aW9uX19kcmF3IC5tZW51LWl0ZW0ucGFyZW50LmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoLmN1cnJlbnQtbWVudS1pdGVtKTpub3QoLmhpZ2hsaWdodGVkKTphZnRlciB7CiAgICBib3JkZXItd2lkdGg6IDNweDsKICAgIHdpZHRoOiAxMDAlOwogICAgb3BhY2l0eTogMTsKICAgIGhlaWdodDogMTAwJTsKfQ=="}},"time_used":97,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":72,"receive":25,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/logo.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.793Z","timestamp":1785128398793,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/logo.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: i\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 13900\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: e487e0b5ef2de0b1738e168fcd889e37-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":13900,"size_decoded":14223,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"88ea209e83cc89910477daf02fcff87d","sha1":"135f81176c8c1bfb40066a8712d7700840d89acd","sha256":"57b84d63ca299eb6e5f440317887768803f631e20d726e196ee5d1229fe726f0","sha512":"a90535054374f9653d73595d964ed0e2bee613617f1d6eed1492c2806df11d003cea92c4156824218ed837b483a15d91dfe579fdbbe905063d4c650813dd9a70","ssdeep":"384:XfTCxoifykIdace46AIgPgS+IQYKNkeeQagUQqk4dITi:bCxh6kSNkAIkgS+xYKF97vqk7","tlshash":"c752d008a413d969f48a467dfebb2fc3d390bd913c7949e8c50c853a138d1587e26b88","first_seen":"2026-07-27T03:56:42.49658Z","last_seen":"2026-07-27T05:01:06.144363Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":111,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":111,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/css/widget-icon-list.min.css","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.800Z","timestamp":1785128398800,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/elementor/assets/css/widget-icon-list.min.css HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 940\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 20:43:17 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"2db3-67c3620e-84c14ee9dfae3c21;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 461801\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: f2bd1c0b6d3b1c301bb32dbf47f60d34-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":11699,"size_decoded":1511,"mime_type":"text/css","magic":"ASCII text","md5":"b1e115046f5f8b815ace3f1fb667d214","sha1":"a7162fa3b95d81113fdfc44b18a9b705ee34dab4","sha256":"3b195453d731c95504462ade50f8349ca74bf7b0a0eefaeb0de1311ccfba274d","sha512":"3096b0cbf44e6b585c41d922ce818efb3eb292ec259dc3361735b83d8773b39a94170f6ad56973b9eb9f0a9d28c9cfc071ebc627efa7097c9093b31bdf290c48","ssdeep":"192:qaeGWedRuAWxXi0XXR7KXBcyQghj7IpdVLT8zzSdUcJ/LkNZAEJJJnJ8iJIJr9Jj:U","tlshash":"6232b7957d93410a1aafb81b111b084c61d4d1cfe9baec90f8ad1207dffbec42bb1568","first_seen":"2026-07-27T03:56:42.489568Z","last_seen":"2026-07-27T05:30:59.818587Z","times_seen":6,"resource_available":false,"data":"LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNy0wMi0yMDI0ICovCgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItaWNvbi1saXN0LS1sYXlvdXQtaW5saW5lIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3Itd2lkZ2V0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgbWFyZ2luLXJpZ2h0OiAtOHB4OwogICAgbWFyZ2luLWxlZnQ6IC04cHgKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMuZWxlbWVudG9yLWlubGluZS1pdGVtcyAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIHsKICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgbWFyZ2luLWxlZnQ6IDhweAp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgd2lkdGg6IGF1dG87CiAgICBsZWZ0OiBhdXRvOwogICAgcmlnaHQ6IGF1dG87CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXItdG9wOiAwOwogICAgYm9yZGVyLWJvdHRvbTogMDsKICAgIGJvcmRlci1yaWdodDogMDsKICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgcmlnaHQ6IC04cHgKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMAp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgZGlzcGxheTogZmxleDsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIGFsaWduLWl0ZW1zOiB2YXIoLS1pY29uLXZlcnRpY2FsLWFsaWduLCBjZW50ZXIpCn0KCi5lbGVtZW50b3Itd2lkZ2V0IC5lbGVtZW50b3ItaWNvbi1saXN0LWljb24rLmVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCB7CiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICBwYWRkaW5nLWxlZnQ6IDVweAp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pY29uIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IHZhcigtLWljb24tdmVydGljYWwtb2Zmc2V0LCBpbml0aWFsKQp9CgouZWxlbWVudG9yLXdpZGdldCAuZWxlbWVudG9yLWljb24tbGlzdC1pY29uIHN2ZyB7CiAgICB3aWR0aDogdmFyKC0tZS1pY29uLWxpc3QtaWNvbi1zaXplLCAxZW0pOwogICAgaGVpZ2h0OiB2YXIoLS1lLWljb24tbGlzdC1pY29uLXNpemUsIDFlbSkKfQoKLmVsZW1lbnRvci13aWRnZXQgLmVsZW1lbnRvci1pY29uLWxpc3QtaWNvbiBpIHsKICAgIHdpZHRoOiAxLjI1ZW07CiAgICBmb250LXNpemU6IHZhcigtLWUtaWNvbi1saXN0LWljb24tc2l6ZSkKfQoKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtaWNvbiB7CiAgICB0ZXh0LWFsaWduOiB2YXIoLS1lLWljb24tbGlzdC1pY29uLWFsaWduKQp9CgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3Itd2lkZ2V0LWljb24tbGlzdCAuZWxlbWVudG9yLWljb24tbGlzdC1pY29uIHN2ZyB7CiAgICBtYXJnaW46IHZhcigtLWUtaWNvbi1saXN0LWljb24tbWFyZ2luLCAwIGNhbGModmFyKC0tZS1pY29uLWxpc3QtaWNvbi1zaXplLCAxZW0pICogLjI1KSAwIDApCn0KCi5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1saXN0LWl0ZW0tbGluay1mdWxsX3dpZHRoIGEgewogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgp9CgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgbWFyZ2luOiBhdXRvCn0KCi5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgIHRleHQtYWxpZ246IGxlZnQKfQoKLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9CgouZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAp9CgouZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci1hbGlnbi1yaWdodCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICBsZWZ0OiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLWFsaWduLWxlZnQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgcmlnaHQ6IDAKfQoKQG1lZGlhIChtaW4td2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBtYXJnaW46IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tbGVmdCAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1yaWdodCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbGVmdDogMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1sZWZ0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICByaWdodDogMAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMSkgewogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIG1hcmdpbjogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1yaWdodCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbGVmdDogMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWxlZnQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIHJpZ2h0OiAwCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbWFyZ2luOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLXJpZ2h0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBsZWZ0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tbGVmdCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgcmlnaHQ6IDAKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbWFyZ2luOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXQtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci10YWJsZXQtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItdGFibGV0LWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcyB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3ItdGFibGV0LWFsaWduLXJpZ2h0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBsZWZ0OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci10YWJsZXQtYWxpZ24tbGVmdCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgcmlnaHQ6IDAKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICBtYXJnaW46IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSBhIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldDpub3QoLmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIGxlZnQ6IDAKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1sZWZ0KSAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtOmFmdGVyIHsKICAgICAgICByaWdodDogMAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gYSB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIG1hcmdpbjogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWxlZnQgLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIGEgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0Om5vdCguZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1yaWdodCkgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbGVmdDogMAogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWxlZnQpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIHJpZ2h0OiAwCiAgICB9Cn0="}},"time_used":102,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":102,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/js/spop.min.html","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.838Z","timestamp":1785128398838,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/js/spop.min.html HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/html\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"4e3-67c3620e-d91c0af2fbca04b5;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 89c9527d42b879b31f20a34b6c94ee31-srv-edge3\r\nx-hcdn-cache-status: DYNAMIC\r\nx-hcdn-upstream-rt: 0.017\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":1251,"size_decoded":1009,"mime_type":"text/html","magic":"HTML document, ASCII text, with CRLF, LF line terminators","md5":"8150f458ed6fb9b1db4e5cfa57a1a281","sha1":"6e5726854d28687b560d7fdcb5c782c425c7dfb9","sha256":"4c13d452dd5d49671bd93ca32f2b4f85c78e39b6ab0ad1f38d98ed267f8fd896","sha512":"4cc6a112673aef8bb8bb8a385c26791b805d43bb707b509880e894f1c83bab4e16f13de187036c5f660c3bec1d286258396b7bde65c5d7945c5019665196818c","ssdeep":"","tlshash":"c021353ec1c1560ae0271164fbc1f7a86669825291970f703b9eb176f6cd0bb56a36c8","first_seen":"2024-02-08T16:48:55Z","last_seen":"2026-07-27T18:06:52.993302Z","times_seen":144359,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIHN0eWxlPSJoZWlnaHQ6MTAwJSI+CjxoZWFkPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iIC8+Cjx0aXRsZT4gNDA0IE5vdCBGb3VuZA0KPC90aXRsZT48c3R5bGU+QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXtib2R5e2JhY2tncm91bmQtY29sb3I6IzAwMCFpbXBvcnRhbnR9fTwvc3R5bGU+PC9oZWFkPgo8Ym9keSBzdHlsZT0iY29sb3I6ICM0NDQ7IG1hcmdpbjowO2ZvbnQ6IG5vcm1hbCAxNHB4LzIwcHggQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij4KPGRpdiBzdHlsZT0iaGVpZ2h0OmF1dG87IG1pbi1oZWlnaHQ6MTAwJTsgIj4gICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6ODAwcHg7IG1hcmdpbi1sZWZ0OiAtNDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDMwJTsgbGVmdDo1MCU7Ij4KICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbjowOyBmb250LXNpemU6MTUwcHg7IGxpbmUtaGVpZ2h0OjE1MHB4OyBmb250LXdlaWdodDpib2xkOyI+NDA0PC9oMT4KPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7Zm9udC1zaXplOiAzMHB4OyI+Tm90IEZvdW5kDQo8L2gyPgo8cD5UaGUgcmVzb3VyY2UgcmVxdWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZCBvbiB0aGlzIHNlcnZlciE8L3A+CjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiNmMGYwZjA7IGZvbnQtc2l6ZToxMnB4O21hcmdpbjphdXRvO3BhZGRpbmc6MHB4IDMwcHggMHB4IDMwcHg7cG9zaXRpb246cmVsYXRpdmU7Y2xlYXI6Ym90aDtoZWlnaHQ6MTAwcHg7bWFyZ2luLXRvcDotMTAxcHg7YmFja2dyb3VuZC1jb2xvcjojNDc0NzQ3O2JvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO2JveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpIGluc2V0OyI+Cjxicj5Qcm91ZGx5IHBvd2VyZWQgYnkgTGl0ZVNwZWVkIFdlYiBTZXJ2ZXI8cD5QbGVhc2UgYmUgYWR2aXNlZCB0aGF0IExpdGVTcGVlZCBUZWNobm9sb2dpZXMgSW5jLiBpcyBub3QgYSB3ZWIgaG9zdGluZyBjb21wYW55IGFuZCwgYXMgc3VjaCwgaGFzIG5vIGNvbnRyb2wgb3ZlciBjb250ZW50IGZvdW5kIG9uIHRoaXMgc2l0ZS48L3A+PC9kaXY+PC9ib2R5PjwvaHRtbD4K"}},"time_used":100,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":100,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/tab_img3.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.860Z","timestamp":1785128398860,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/tab_img3.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 618\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: a47ced8e5d122bb62fe28c50362cf696-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.019\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":618,"size_decoded":939,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"d4678d14653b721ce57e1910b5b70e1a","sha1":"cd128c02b997ebc0bdf47b5067c9293083944ed1","sha256":"2dc44beeef86a044240da42fddface673cb0aaefed5924ec203bc6d3c2d27b91","sha512":"772f916eed4c764b3041bd81ad6cd3b6de47f74f154c7a3bc25704106199fe2ac29d2e1ecf59e43e38e6702ac2db9b13136f4395b74450d1988cf5e9a23aea19","ssdeep":"","tlshash":"16f0416f33920a40c04128b4e42b773b8b05ae449001d3a192b1892e6e82648dfb646a","first_seen":"2026-07-27T03:56:42.481377Z","last_seen":"2026-07-27T05:01:06.117633Z","times_seen":3,"resource_available":false,"data":"UklGRmICAABXRUJQVlA4WAoAAAAYAAAAEwAAFAAAQUxQSFMBAAABkGXbtmk789m2bdu2bdvvxcnlPrle98S2bTtVML5SABVC+wRFiIgJAJD76shh/pDZdPCmDfjCGzdtIdkx5HnIlcu7EbrbQ8rwo1l04V5dFk/ZSpQd3lC6R+J4QLANYO+JstsBgGjHmUY6APuTdycv+QMR3bEczQzA4Vx38plUWBn2r+7e5QjQdIft6REABu+t630MwTMagCYm9g6jcBhixnEc/74HRwAaU9YBjYpQYwVh5bMJGoBmOmFAGTFj3BnbzV8O4gxA073Y37WgUZN39/HQkcADU1wXzEYtU1E4akhBLQBoYj5dLwhMtTsof2mrWbZUBtAIGdRMYGzC6sipvfsPn7rAGQXGBKbO1b/fJWyXC0c5jVwmk8tke07ojcY9L3NdAdP4g1v8btUu3c5d+z7t6wD2+c/N86UWiU9ElSCny8BTo1pSY67R7NRoNLQb/xcAVlA4ICYAAADQAgCdASoUABUAPlEkj0WjoiEUBAA4BQS0gAAe0dAAAP78qAAAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAABQAAAADoAQAAQAAABUAAAAAAAAA"}},"time_used":102,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":102,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/days.svg","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.865Z","timestamp":1785128398865,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/days.svg HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/svg+xml\r\ncontent-length: 586\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"48e-67c3620e-c911f403c0e07e4d;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 8a3b0077bf69c63051015f8e64031ff0-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":1166,"size_decoded":1161,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"4bfaac59fa99efdf3b506b99c1a6946e","sha1":"89ade637911943d7a33c4bc84cdcaea9e3989c27","sha256":"4db5f1d02134dd478254dac99db11bb28528ab9273f1e80f7638e47e915168d6","sha512":"fbe428b28dcc318da73b4999d724fe5d716a8735baca32a2e22b0417920ba6619cacdce1892e5f5016d97272cb5389b0c054c14a96b15e35768e4c7ce29509e0","ssdeep":"","tlshash":"8c21dd7a42f94b799485c3af8b14480269e4b0ab922b9984b8df1500df4bcc2ed563db","first_seen":"2026-07-27T03:56:42.604501Z","last_seen":"2026-07-27T05:30:59.830611Z","times_seen":6,"resource_available":false,"data":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iX9Ch0LvQvtC5XzIiIGRhdGEtbmFtZT0i0KHQu9C+0LkgMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0xLCAuY2xzLTIgewogICAgICAgIHN0cm9rZS13aWR0aDogMHB4OwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6ICMzODkwZmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIj4KICAgIDxnPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTIiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIi8+CiAgICAgIDxnIGlkPSJEOTZfQm9hcmRfcGVyZm9ybWFuY2UiIGRhdGEtbmFtZT0iRDk2LCBCb2FyZCwgcGVyZm9ybWFuY2UiPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTYzLjUsMzEuNmgtLjFxMCwuMS4xLDBoMFoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03OC4zLDIwLjFIMjAuOGMtLjMsMC0uNi4zLS42LjZzLjMuNi42LjZoNC40djI5LjVjMCw2LjksNS40LDEyLjUsMTIuMSwxMi45bC03LjEsMTQuM2MtLjIuMywwLC43LjMuOC4xLDAsLjIuMS4zLjEuMiwwLC41LS4xLjYtLjNsNy4zLTE0LjdoMjAuNWw3LjMsMTQuN2MuMS4yLjMuMy42LjMuMSwwLC4yLDAsLjMtLjEuMy0uMi40LS41LjMtLjhsLTctMTQuMWguNGM3LjEsMCwxMy01LjgsMTMtMTN2LTI5LjVoNC40Yy4zLDAsLjYtLjMuNi0uNnMtLjUtLjctLjgtLjdaTTY0LjUsMzcuNmgwYy0uNCwwLS42LS4yLS43LS42bC0uMy00LjEtNy4zLDEzLjRjLS4xLjItLjQuNC0uNy4zbC0xMy40LTIuNC03LjMsOC41Yy0uMS4xLS4zLjItLjUuMi0uMSwwLS4zLDAtLjQtLjItLjMtLjItLjMtLjYtLjEtLjlsNy41LTguOGMuMS0uMi40LS4yLjYtLjJsMTMuMywyLjQsNy40LTEzLjJ2LS4xbC00LjMsMS42Yy0uMy4xLS43LDAtLjgtLjQtLjEtLjMsMC0uNy40LS44bDUuOC0yLjJjLjItLjEuNCwwLC42LjEuMi4xLjMuMy4zLjVsLjUsNi4yYzAsLjQtLjIuNy0uNi43WiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4="}},"time_used":97,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment_matic.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.879Z","timestamp":1785128398879,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment_matic.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 1562\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 58126527e40e31c1151cd85f556baf3c-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.021\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":1562,"size_decoded":1884,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"ff4ebea753034b175e3f1369e999645e","sha1":"87867322f12b87fbc1ad93fd7ad3518848a9b711","sha256":"d4aecf78c2955f5b30ad639c64f7cc7d9bf1869caffce8b35804aa65f853bf81","sha512":"40a7ab6086acda29e2260216f01be6c638cde51f6e7a270b87612776485cd14205970c1597789b5eaca69170cdb5d9d2d05e393774a720f007552bd7efbf701f","ssdeep":"","tlshash":"7f31f93e13c34e08d6d8b57d0530bb919507e2c15e365716474e2dade8ac486cf6b299","first_seen":"2026-07-27T03:56:42.470308Z","last_seen":"2026-07-27T05:01:06.113656Z","times_seen":3,"resource_available":false,"data":"UklGRhIGAABXRUJQVlA4WAoAAAAYAAAAmgAAMgAAQUxQSEUCAAABoANtm1q7+c0MMjPsuGXsWKXZ1tiVuzDjpuREbThKj6rCtOFUmZjdZsPpMgozvMVZ7flX11eVi4iYAHqt9NfLjI3bcOLGm6/YO6eH7HjmJ4L/f3rT9H6x7kOimxvH9Yib/2bYDxf3hTGPoPjFmp5wL6qfLVAw4UBmgpmSMaYld64cUftQfnvMcJ5gMVASrJQcvuVKcCNp2jdanFSzA3WaU5eMu1D/eqJKA/XAKWj0MiI2W1uMoLHf6XFcw1VwaqCBK72WORUTnRXW5h3bTcKXVK6EZgDY3HYl7V5ErqQ9F7kSXCBzBMtO3Z/ip3Eam4FMJAekU6ahte7SyykwGgLkIleCj9hsg3Vosy2hsdbaLMYBldnsgKJDZ5PsVPFgRSpwEa1XhkRy8BJu2QzkIiIVnOrQF0kOqjioRBxUcZkpbJmihFMymJWbpUMXk+xVKcGJeLAxtiGsV0MVSDzcu0nWqhTgRYA84hTtem6EPJzi78kqBhADSFsJzZWZyJWXnqMpPhYVaSAvoInwcKVIogpOhco869C0XxPcrOTBWjgVVwzUKXKgGKjAd0ie1Pt1rlIN3kMdUYPfLFkFNK4MNc45ZyLEA6XZ7ICyS8t/V7tflEqCZUROawO4UDCPMQ2tTrokVstP1SpCRYQUoSurFGJOhWrp1tg3dH7fLF0ubFlkktpYa4tMOibTP9H4e5+Mwioy9eXhvt8lfUHGXPvTEC8uk/4gMu/ub9v+eXGHjNJqImO33/b0iy8+/8CxOTJqJ+iDl+nqswBWUDgg5AIAALAQAJ0BKpsAMwA+USSRRaOiIZOZzOg4BQSxAGs0gB2U3Uu9fkr+M3U/gCekuAeorxK+lT5gP1u/Zn2mf8B7NvQA/V3rE/QM/Xf0yv1p+DL9q/SJ//5UDPG/8++wB+o5IbflLPY3fgCf2dbnXJuBYQojwpw3mw0dbKBz8nVyzH3wula+11p5L3f2B/RTJ0AA/u8pR/7Y4Z1bT/SN+xf3VFUmsGSQECJJQ+Mrox0Xqfv2flNSBJIxn3GSe/8AiVbFcHKMvNE4QGUEr6rmbkAXiUKqQl2jXijKRTQnaMvwqeS+v58SR7c5kT5DggUlcf70PZFKuRPp17Wn8V+j+2kFQPq9fvJAx83u2ZymMd+So1b7wP6OnM/e5esCerTVTiz64zbYk3QJnY8hR55PJaGGRFILl8DgKnel+tlKUKTP6vx0pd0TX64v/v9ucSY+lJ7ljBIMKsSkQANkOf/DXnF/c1fm6N8BCo9L/pCVm+L31O38qkpwKSEsnvNe2BsL/tRTWCe4KDddsZYqCVRNXOQMNh//j8R3/pz/8HQLWytn0gZoy9ax6jzgKswLZjz71yl5wx0/lRLS8T90ztoa79ldHGYjvo1puJ3RtV/3SsY9LvLo9YltgTYC/l72o9DTSAuPp9U6pInKBQLUqO/FnvMV75Rw0ylpQf+EuM8tr7yg/v/yty1hx4VZLBWH4+xlf/Sn4A//V75EKOvYJ6ZcJ5oOV6TYN5L67w15CBNidnjD6fylMHWX3VahcZzKxkKUu/MxcISb5EXu3tv4TrIcsocMQ4mnFH38v8EP9pok9KTFAiTgskc8lS2/g/2xQLxVaPj1UA2VvCWHgE5hg4MCmKdaLMf4t5mil9/+arXdfGBYIg/IFj/FvM90UKlhRLvGnYtwpO7n8px3Oi5xH6PBE9XTixCXRQPzRcjMURq4HX0udsh5nB7zt2Q2wV+klPNqxYYP+DugYDNYKftfoBBLRiC3QAAAAAAARVhJRroAAABFeGlmAABJSSoACAAAAAYAEgEDAAEAAAABAAAAGgEFAAEAAABWAAAAGwEFAAEAAABeAAAAKAEDAAEAAAACAAAAEwIDAAEAAAABAAAAaYcEAAEAAABmAAAAAAAAAEgAAAABAAAASAAAAAEAAAAGAACQBwAEAAAAMDIxMAGRBwAEAAAAAQIDAACgBwAEAAAAMDEwMAGgAwABAAAA//8AAAKgBAABAAAAmwAAAAOgBAABAAAAMwAAAAAAAAA="}},"time_used":84,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":84,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/2023/12/favicon-150x150.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.505Z","timestamp":1785128399505,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/2023/12/favicon-150x150.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: image/webp\r\ncontent-length: 7880\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: e04283186d776f1e3201ce62e35c5584-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":7880,"size_decoded":8202,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"5910629b8341c4963dcd4268b7c58fe1","sha1":"2b2268a1332b220593f53a972edb97956956fdc3","sha256":"7b6b16a0f6fd8f3421195aaa911cd282e5d8da2626a914d3f950bf7b71666e63","sha512":"c8c4bfa8872211bfc166f2172ba38bce42e9cb96baf5a0e35ce83cd822ad9ea4b410f59001460eef75b593153c5b67b277691df44a5ba4baacf6d409db00cd4d","ssdeep":"96:HXGFIubmKaqmJoXlJwKgFXytj1dDXjvUuszTaxow5NzFxyWC6Etg/rp4OcZF5vq:+IWjaw1m6fXjkmxhNBwWCxuAE","tlshash":"cdf1b02d97f15287c9b1407b144bf3eaed68568761cd58c5e90363632fa4866ccc93d8","first_seen":"2026-07-27T03:56:42.560626Z","last_seen":"2026-07-27T05:01:06.173713Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":45,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":45,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/metform/public/assets/css/text-editor3fd0.css?ver=3.8.2","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.779Z","timestamp":1785128398779,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/metform/public/assets/css/text-editor3fd0.css?ver=3.8.2 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 3385\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"64e7-67c3620e-5138d67962848b1b;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 43524af87adcfe26df1a4ab109272046-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":25831,"size_decoded":3957,"mime_type":"text/css","magic":"ASCII text","md5":"b1e6d46a32871a6fd7a668ac77062561","sha1":"7ee72223dc0ba2d177b182092b0445c2484b61a9","sha256":"ed6977cd0b1944c3f162e301511f08b46033bfdcc7ab4d229233b879bb3c10b6","sha512":"6cb9483fbce7e26b9ddf92629955351243a84d716753e59e8a2a92d627f78b1239ea8758e6534f59c21ff989b6ddc6f1e2be9f2c0177f86e1223ddceeeff085d","ssdeep":"768:mrtuPgK/BPR+EQ6CoJnYy3J3JWsIiKsPjnkpFTFjFTF0uF2Tk/DbMYofXYyObKwx:NPgK/BPR+EQ6CoJnYy3J3JWsIiKsPr+t","tlshash":"b1c2fe0feca71cbf412a507d950d12d06fca729390dbaa99f4d1ae8a1fdc0548369e5c","first_seen":"2025-09-13T14:09:05.175265Z","last_seen":"2026-07-27T05:30:59.831603Z","times_seen":7,"resource_available":false,"data":"LyohCiAqIFF1aWxsIEVkaXRvciB2MS4zLjcKICogaHR0cHM6Ly9xdWlsbGpzLmNvbS8KICogQ29weXJpZ2h0IChjKSAyMDE0LCBKYXNvbiBDaGVuCiAqIENvcHlyaWdodCAoYykgMjAxMywgc2FsZXNmb3JjZS5jb20KICovCgoucWwtY29udGFpbmVyIHsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIG1pbi1oZWlnaHQ6IDIwMHB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgaGVpZ2h0OiAxMDAlOwogICAgbWFyZ2luOiAwOwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5xbC1jb250YWluZXIucWwtZGlzYWJsZWQgLnFsLXRvb2x0aXAgewogICAgdmlzaWJpbGl0eTogaGlkZGVuCn0KCi5xbC1jb250YWluZXIucWwtZGlzYWJsZWQgLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWRdPmxpOjpiZWZvcmUgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLnFsLWNsaXBib2FyZCB7CiAgICBsZWZ0OiAtMTAwMDAwcHg7CiAgICBoZWlnaHQ6IDFweDsKICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlCn0KCi5xbC1jbGlwYm9hcmQgcCB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwCn0KCi5xbC1lZGl0b3IgewogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGxpbmUtaGVpZ2h0OiAxLjQyOwogICAgaGVpZ2h0OiAxMDAlOwogICAgb3V0bGluZTogMDsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICBwYWRkaW5nOiAwOwogICAgLW8tdGFiLXNpemU6IDQ7CiAgICB0YWItc2l6ZTogNDsKICAgIC1tb3otdGFiLXNpemU6IDQ7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgd29yZC13cmFwOiBicmVhay13b3JkCn0KCi5xbC1lZGl0b3I+KiB7CiAgICBjdXJzb3I6IHRleHQKfQoKLnFsLWVkaXRvciBibG9ja3F1b3RlLAoucWwtZWRpdG9yIGgxLAoucWwtZWRpdG9yIGgyLAoucWwtZWRpdG9yIGgzLAoucWwtZWRpdG9yIGg0LAoucWwtZWRpdG9yIGg1LAoucWwtZWRpdG9yIGg2LAoucWwtZWRpdG9yIG9sLAoucWwtZWRpdG9yIHAsCi5xbC1lZGl0b3IgcHJlLAoucWwtZWRpdG9yIHVsIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBjb3VudGVyLXJlc2V0OiBsaXN0LTEgbGlzdC0yIGxpc3QtMyBsaXN0LTQgbGlzdC01IGxpc3QtNiBsaXN0LTcgbGlzdC04IGxpc3QtOQp9CgoucWwtZWRpdG9yIG9sLAoucWwtZWRpdG9yIHVsIHsKICAgIHBhZGRpbmctbGVmdDogMS41ZW0KfQoKLnFsLWVkaXRvciBvbD5saSwKLnFsLWVkaXRvciB1bD5saSB7CiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmUKfQoKLnFsLWVkaXRvciB1bD5saTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcMjAyMicKfQoKLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWQ9ZmFsc2VdLAoucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD10cnVlXSB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9CgoucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD1mYWxzZV0+bGkgKiwKLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWQ9dHJ1ZV0+bGkgKiB7CiAgICBwb2ludGVyLWV2ZW50czogYWxsCn0KCi5xbC1lZGl0b3IgdWxbZGF0YS1jaGVja2VkPWZhbHNlXT5saTo6YmVmb3JlLAoucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD10cnVlXT5saTo6YmVmb3JlIHsKICAgIGNvbG9yOiAjNzc3OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgcG9pbnRlci1ldmVudHM6IGFsbAp9CgoucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD10cnVlXT5saTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdcMjYxMScKfQoKLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWQ9ZmFsc2VdPmxpOjpiZWZvcmUgewogICAgY29udGVudDogJ1wyNjEwJwp9CgoucWwtZWRpdG9yIGxpOjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHdpZHRoOiAxLjJlbQp9CgoucWwtZWRpdG9yIGxpOm5vdCgucWwtZGlyZWN0aW9uLXJ0bCk6OmJlZm9yZSB7CiAgICBtYXJnaW4tbGVmdDogLTEuNWVtOwogICAgbWFyZ2luLXJpZ2h0OiAuM2VtOwogICAgdGV4dC1hbGlnbjogcmlnaHQKfQoKLnFsLWVkaXRvciBsaS5xbC1kaXJlY3Rpb24tcnRsOjpiZWZvcmUgewogICAgbWFyZ2luLWxlZnQ6IC4zZW07CiAgICBtYXJnaW4tcmlnaHQ6IC0xLjVlbQp9CgoucWwtZWRpdG9yIG9sIGxpOm5vdCgucWwtZGlyZWN0aW9uLXJ0bCksCi5xbC1lZGl0b3IgdWwgbGk6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDEuNWVtCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtZGlyZWN0aW9uLXJ0bCwKLnFsLWVkaXRvciB1bCBsaS5xbC1kaXJlY3Rpb24tcnRsIHsKICAgIHBhZGRpbmctcmlnaHQ6IDEuNWVtCn0KCi5xbC1lZGl0b3Igb2wgbGkgewogICAgY291bnRlci1yZXNldDogbGlzdC0xIGxpc3QtMiBsaXN0LTMgbGlzdC00IGxpc3QtNSBsaXN0LTYgbGlzdC03IGxpc3QtOCBsaXN0LTk7CiAgICBjb3VudGVyLWluY3JlbWVudDogbGlzdC0wCn0KCi5xbC1lZGl0b3Igb2wgbGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGNvdW50ZXIobGlzdC0wLCBkZWNpbWFsKSAnLiAnCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTEgewogICAgY291bnRlci1pbmNyZW1lbnQ6IGxpc3QtMQp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC0xOmJlZm9yZSB7CiAgICBjb250ZW50OiBjb3VudGVyKGxpc3QtMSwgbG93ZXItYWxwaGEpICcuICcKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMSB7CiAgICBjb3VudGVyLXJlc2V0OiBsaXN0LTIgbGlzdC0zIGxpc3QtNCBsaXN0LTUgbGlzdC02IGxpc3QtNyBsaXN0LTggbGlzdC05Cn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTIgewogICAgY291bnRlci1pbmNyZW1lbnQ6IGxpc3QtMgp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC0yOmJlZm9yZSB7CiAgICBjb250ZW50OiBjb3VudGVyKGxpc3QtMiwgbG93ZXItcm9tYW4pICcuICcKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMiB7CiAgICBjb3VudGVyLXJlc2V0OiBsaXN0LTMgbGlzdC00IGxpc3QtNSBsaXN0LTYgbGlzdC03IGxpc3QtOCBsaXN0LTkKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMyB7CiAgICBjb3VudGVyLWluY3JlbWVudDogbGlzdC0zCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGNvdW50ZXIobGlzdC0zLCBkZWNpbWFsKSAnLiAnCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTMgewogICAgY291bnRlci1yZXNldDogbGlzdC00IGxpc3QtNSBsaXN0LTYgbGlzdC03IGxpc3QtOCBsaXN0LTkKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNCB7CiAgICBjb3VudGVyLWluY3JlbWVudDogbGlzdC00Cn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGNvdW50ZXIobGlzdC00LCBsb3dlci1hbHBoYSkgJy4gJwp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC00IHsKICAgIGNvdW50ZXItcmVzZXQ6IGxpc3QtNSBsaXN0LTYgbGlzdC03IGxpc3QtOCBsaXN0LTkKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNSB7CiAgICBjb3VudGVyLWluY3JlbWVudDogbGlzdC01Cn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGNvdW50ZXIobGlzdC01LCBsb3dlci1yb21hbikgJy4gJwp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC01IHsKICAgIGNvdW50ZXItcmVzZXQ6IGxpc3QtNiBsaXN0LTcgbGlzdC04IGxpc3QtOQp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC02IHsKICAgIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0LTYKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNjpiZWZvcmUgewogICAgY29udGVudDogY291bnRlcihsaXN0LTYsIGRlY2ltYWwpICcuICcKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNiB7CiAgICBjb3VudGVyLXJlc2V0OiBsaXN0LTcgbGlzdC04IGxpc3QtOQp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC03IHsKICAgIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0LTcKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNzpiZWZvcmUgewogICAgY29udGVudDogY291bnRlcihsaXN0LTcsIGxvd2VyLWFscGhhKSAnLiAnCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTcgewogICAgY291bnRlci1yZXNldDogbGlzdC04IGxpc3QtOQp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC04IHsKICAgIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0LTgKfQoKLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtODpiZWZvcmUgewogICAgY29udGVudDogY291bnRlcihsaXN0LTgsIGxvd2VyLXJvbWFuKSAnLiAnCn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTggewogICAgY291bnRlci1yZXNldDogbGlzdC05Cn0KCi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTkgewogICAgY291bnRlci1pbmNyZW1lbnQ6IGxpc3QtOQp9CgoucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC05OmJlZm9yZSB7CiAgICBjb250ZW50OiBjb3VudGVyKGxpc3QtOSwgZGVjaW1hbCkgJy4gJwp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtMTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogM2VtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTE6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDQuNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC0xLnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogM2VtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTEucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA0LjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtMjpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogNmVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTI6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDcuNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC0yLnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogNmVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTIucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiA3LjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtMzpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogOWVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTM6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDEwLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtMy5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDllbQp9CgoucWwtZWRpdG9yIGxpLnFsLWluZGVudC0zLnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMTAuNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC00Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkgewogICAgcGFkZGluZy1sZWZ0OiAxMmVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTQ6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDEzLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtNC5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDEyZW0KfQoKLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtNC5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDEzLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtNTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogMTVlbQp9CgoucWwtZWRpdG9yIGxpLnFsLWluZGVudC01Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkgewogICAgcGFkZGluZy1sZWZ0OiAxNi41ZW0KfQoKLnFsLWVkaXRvciAucWwtaW5kZW50LTUucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNWVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTUucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNi41ZW0KfQoKLnFsLWVkaXRvciAucWwtaW5kZW50LTY6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDE4ZW0KfQoKLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtNjpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogMTkuNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC02LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMThlbQp9CgoucWwtZWRpdG9yIGxpLnFsLWluZGVudC02LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMTkuNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC03Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkgewogICAgcGFkZGluZy1sZWZ0OiAyMWVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTc6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDIyLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtNy5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDIxZW0KfQoKLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtNy5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDIyLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1pbmRlbnQtODpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogMjRlbQp9CgoucWwtZWRpdG9yIGxpLnFsLWluZGVudC04Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkgewogICAgcGFkZGluZy1sZWZ0OiAyNS41ZW0KfQoKLnFsLWVkaXRvciAucWwtaW5kZW50LTgucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNGVtCn0KCi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTgucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNS41ZW0KfQoKLnFsLWVkaXRvciAucWwtaW5kZW50LTk6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7CiAgICBwYWRkaW5nLWxlZnQ6IDI3ZW0KfQoKLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtOTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHsKICAgIHBhZGRpbmctbGVmdDogMjguNWVtCn0KCi5xbC1lZGl0b3IgLnFsLWluZGVudC05LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMjdlbQp9CgoucWwtZWRpdG9yIGxpLnFsLWluZGVudC05LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQgewogICAgcGFkZGluZy1yaWdodDogMjguNWVtCn0KCi5xbC1lZGl0b3IgLnFsLXZpZGVvIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWF4LXdpZHRoOiAxMDAlCn0KCi5xbC1lZGl0b3IgLnFsLXZpZGVvLnFsLWFsaWduLWNlbnRlciB7CiAgICBtYXJnaW46IDAgYXV0bwp9CgoucWwtZWRpdG9yIC5xbC12aWRlby5xbC1hbGlnbi1yaWdodCB7CiAgICBtYXJnaW46IDAgMCAwIGF1dG8KfQoKLnFsLWVkaXRvciAucWwtYmctYmxhY2sgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMAp9CgoucWwtZWRpdG9yIC5xbC1iZy1yZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2U2MDAwMAp9CgoucWwtZWRpdG9yIC5xbC1iZy1vcmFuZ2UgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5MAp9CgoucWwtZWRpdG9yIC5xbC1iZy15ZWxsb3cgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMAp9CgoucWwtZWRpdG9yIC5xbC1iZy1ncmVlbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4YTAwCn0KCi5xbC1lZGl0b3IgLnFsLWJnLWJsdWUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzA2Ywp9CgoucWwtZWRpdG9yIC5xbC1iZy1wdXJwbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzkzZgp9CgoucWwtZWRpdG9yIC5xbC1jb2xvci13aGl0ZSB7CiAgICBjb2xvcjogI2ZmZgp9CgoucWwtZWRpdG9yIC5xbC1jb2xvci1yZWQgewogICAgY29sb3I6ICNlNjAwMDAKfQoKLnFsLWVkaXRvciAucWwtY29sb3Itb3JhbmdlIHsKICAgIGNvbG9yOiAjZjkwCn0KCi5xbC1lZGl0b3IgLnFsLWNvbG9yLXllbGxvdyB7CiAgICBjb2xvcjogI2ZmMAp9CgoucWwtZWRpdG9yIC5xbC1jb2xvci1ncmVlbiB7CiAgICBjb2xvcjogIzAwOGEwMAp9CgoucWwtZWRpdG9yIC5xbC1jb2xvci1ibHVlIHsKICAgIGNvbG9yOiAjMDZjCn0KCi5xbC1lZGl0b3IgLnFsLWNvbG9yLXB1cnBsZSB7CiAgICBjb2xvcjogIzkzZgp9CgoucWwtZWRpdG9yIC5xbC1mb250LXNlcmlmIHsKICAgIGZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBUaW1lcyBOZXcgUm9tYW4sIHNlcmlmCn0KCi5xbC1lZGl0b3IgLnFsLWZvbnQtbW9ub3NwYWNlIHsKICAgIGZvbnQtZmFtaWx5OiBNb25hY28sIENvdXJpZXIgTmV3LCBtb25vc3BhY2UKfQoKLnFsLWVkaXRvciAucWwtc2l6ZS1zbWFsbCB7CiAgICBmb250LXNpemU6IC43NWVtCn0KCi5xbC1lZGl0b3IgLnFsLXNpemUtbGFyZ2UgewogICAgZm9udC1zaXplOiAxLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1zaXplLWh1Z2UgewogICAgZm9udC1zaXplOiAyLjVlbQp9CgoucWwtZWRpdG9yIC5xbC1kaXJlY3Rpb24tcnRsIHsKICAgIGRpcmVjdGlvbjogcnRsOwogICAgdGV4dC1hbGlnbjogaW5oZXJpdAp9CgoucWwtZWRpdG9yIC5xbC1hbGlnbi1jZW50ZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5xbC1lZGl0b3IgLnFsLWFsaWduLWp1c3RpZnkgewogICAgdGV4dC1hbGlnbjoganVzdGlmeQp9CgoucWwtZWRpdG9yIC5xbC1hbGlnbi1yaWdodCB7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9CgoucWwtZWRpdG9yLnFsLWJsYW5rOjpiZWZvcmUgewogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjYpOwogICAgY29udGVudDogYXR0cihkYXRhLXBsYWNlaG9sZGVyKTsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGxlZnQ6IDE1cHg7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAxNXB4Cn0KCi5xbC1zbm93IC5xbC10b29sYmFyOmFmdGVyLAoucWwtc25vdy5xbC10b29sYmFyOmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwogICAgY29udGVudDogJyc7CiAgICBkaXNwbGF5OiB0YWJsZQp9CgoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b24sCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uIHsKICAgIGJhY2tncm91bmQ6IDAgMDsKICAgIGJvcmRlcjogbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZsb2F0OiBsZWZ0OwogICAgaGVpZ2h0OiAyNHB4OwogICAgcGFkZGluZzogM3B4IDVweDsKICAgIHdpZHRoOiAyOHB4Cn0KCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbiBzdmcsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uIHN2ZyB7CiAgICBmbG9hdDogbGVmdDsKICAgIGhlaWdodDogMTAwJQp9CgoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246YWN0aXZlOmhvdmVyLAoucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjphY3RpdmU6aG92ZXIgewogICAgb3V0bGluZTogMAp9CgoucWwtc25vdyAucWwtdG9vbGJhciBpbnB1dC5xbC1pbWFnZVt0eXBlPWZpbGVdLAoucWwtc25vdy5xbC10b29sYmFyIGlucHV0LnFsLWltYWdlW3R5cGU9ZmlsZV0gewogICAgZGlzcGxheTogbm9uZQp9CgoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW0ucWwtc2VsZWN0ZWQsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciwKLnFsLXNub3cgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIsCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbi5xbC1hY3RpdmUsCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpmb2N1cywKLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCwKLnFsLXNub3cucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW06aG92ZXIsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbDpob3ZlciwKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlLAoucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpmb2N1cywKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b246aG92ZXIgewogICAgY29sb3I6ICMwNmMKfQoKLnFsLXNub3cgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1pdGVtLnFsLXNlbGVjdGVkIC5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW0ucWwtc2VsZWN0ZWQgLnFsLXN0cm9rZS5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW06aG92ZXIgLnFsLWZpbGwsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWwucWwtYWN0aXZlIC5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsLnFsLWFjdGl2ZSAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIgLnFsLWZpbGwsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIgLnFsLXN0cm9rZS5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlIC5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlIC5xbC1zdHJva2UucWwtZmlsbCwKLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uOmZvY3VzIC5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246Zm9jdXMgLnFsLXN0cm9rZS5xbC1maWxsLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246aG92ZXIgLnFsLWZpbGwsCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpob3ZlciAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1pdGVtLnFsLXNlbGVjdGVkIC5xbC1maWxsLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1pdGVtOmhvdmVyIC5xbC1maWxsLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUgLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUgLnFsLXN0cm9rZS5xbC1maWxsLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIgLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbDpob3ZlciAucWwtc3Ryb2tlLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uLnFsLWFjdGl2ZSAucWwtZmlsbCwKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlIC5xbC1zdHJva2UucWwtZmlsbCwKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b246Zm9jdXMgLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmZvY3VzIC5xbC1zdHJva2UucWwtZmlsbCwKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b246aG92ZXIgLnFsLWZpbGwsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyIC5xbC1zdHJva2UucWwtZmlsbCB7CiAgICBmaWxsOiAjMDZjCn0KCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtc3Ryb2tlLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW0ucWwtc2VsZWN0ZWQgLnFsLXN0cm9rZS1taXRlciwKLnFsLXNub3cgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1pdGVtOmhvdmVyIC5xbC1zdHJva2UsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsLnFsLWFjdGl2ZSAucWwtc3Ryb2tlLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsLnFsLWFjdGl2ZSAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsOmhvdmVyIC5xbC1zdHJva2UsCi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIgLnFsLXN0cm9rZS1taXRlciwKLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uLnFsLWFjdGl2ZSAucWwtc3Ryb2tlLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlIC5xbC1zdHJva2UtbWl0ZXIsCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpmb2N1cyAucWwtc3Ryb2tlLAoucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246Zm9jdXMgLnFsLXN0cm9rZS1taXRlciwKLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyIC5xbC1zdHJva2UsCi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpob3ZlciAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtc3Ryb2tlLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciAucWwtc3Ryb2tlLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWwucWwtYWN0aXZlIC5xbC1zdHJva2UsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUgLnFsLXN0cm9rZS1taXRlciwKLnFsLXNub3cucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsOmhvdmVyIC5xbC1zdHJva2UsCi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbDpob3ZlciAucWwtc3Ryb2tlLW1pdGVyLAoucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbi5xbC1hY3RpdmUgLnFsLXN0cm9rZSwKLnFsLXNub3cucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlIC5xbC1zdHJva2UtbWl0ZXIsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmZvY3VzIC5xbC1zdHJva2UsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmZvY3VzIC5xbC1zdHJva2UtbWl0ZXIsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyIC5xbC1zdHJva2UsCi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyIC5xbC1zdHJva2UtbWl0ZXIgewogICAgc3Ryb2tlOiAjMDZjCn0KCkBtZWRpYSAocG9pbnRlcjpjb2Fyc2UpIHsKICAgIC5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSksCiAgICAucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSkgewogICAgICAgIGNvbG9yOiAjNDQ0CiAgICB9CiAgICAucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246aG92ZXI6bm90KC5xbC1hY3RpdmUpIC5xbC1maWxsLAogICAgLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyOm5vdCgucWwtYWN0aXZlKSAucWwtc3Ryb2tlLnFsLWZpbGwsCiAgICAucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSkgLnFsLWZpbGwsCiAgICAucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSkgLnFsLXN0cm9rZS5xbC1maWxsIHsKICAgICAgICBmaWxsOiAjNDQ0CiAgICB9CiAgICAucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246aG92ZXI6bm90KC5xbC1hY3RpdmUpIC5xbC1zdHJva2UsCiAgICAucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246aG92ZXI6bm90KC5xbC1hY3RpdmUpIC5xbC1zdHJva2UtbWl0ZXIsCiAgICAucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSkgLnFsLXN0cm9rZSwKICAgIC5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyOm5vdCgucWwtYWN0aXZlKSAucWwtc3Ryb2tlLW1pdGVyIHsKICAgICAgICBzdHJva2U6ICM0NDQKICAgIH0KfQoKLnFsLXNub3cgewogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveAp9CgoucWwtc25vdyAqIHsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3gKfQoKLnFsLXNub3cgLnFsLWhpZGRlbiB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5xbC1zbm93IC5xbC1vdXQtYm90dG9tLAoucWwtc25vdyAucWwtb3V0LXRvcCB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4KfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCkKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAgYSB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAucWwtZmxpcCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpCn0KCi5xbC1zbm93IC5xbC1mb3JtYXRzIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKfQoKLnFsLXNub3cgLnFsLWZvcm1hdHM6YWZ0ZXIgewogICAgY2xlYXI6IGJvdGg7CiAgICBjb250ZW50OiAnJzsKICAgIGRpc3BsYXk6IHRhYmxlCn0KCi5xbC1zbm93IC5xbC1zdHJva2UgewogICAgZmlsbDogbm9uZTsKICAgIHN0cm9rZTogIzQ0NDsKICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgIHN0cm9rZS1saW5lam9pbjogcm91bmQ7CiAgICBzdHJva2Utd2lkdGg6IDIKfQoKLnFsLXNub3cgLnFsLXN0cm9rZS1taXRlciB7CiAgICBmaWxsOiBub25lOwogICAgc3Ryb2tlOiAjNDQ0OwogICAgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOwogICAgc3Ryb2tlLXdpZHRoOiAyCn0KCi5xbC1zbm93IC5xbC1maWxsLAoucWwtc25vdyAucWwtc3Ryb2tlLnFsLWZpbGwgewogICAgZmlsbDogIzQ0NAp9CgoucWwtc25vdyAucWwtZW1wdHkgewogICAgZmlsbDogbm9uZQp9CgoucWwtc25vdyAucWwtZXZlbiB7CiAgICBmaWxsLXJ1bGU6IGV2ZW5vZGQKfQoKLnFsLXNub3cgLnFsLXN0cm9rZS5xbC10aGluLAoucWwtc25vdyAucWwtdGhpbiB7CiAgICBzdHJva2Utd2lkdGg6IDEKfQoKLnFsLXNub3cgLnFsLXRyYW5zcGFyZW50IHsKICAgIG9wYWNpdHk6IC40Cn0KCi5xbC1zbm93IC5xbC1kaXJlY3Rpb24gc3ZnOmxhc3QtY2hpbGQgewogICAgZGlzcGxheTogbm9uZQp9CgoucWwtc25vdyAucWwtZGlyZWN0aW9uLnFsLWFjdGl2ZSBzdmc6bGFzdC1jaGlsZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUKfQoKLnFsLXNub3cgLnFsLWRpcmVjdGlvbi5xbC1hY3RpdmUgc3ZnOmZpcnN0LWNoaWxkIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLnFsLXNub3cgLnFsLWVkaXRvciBoMSB7CiAgICBmb250LXNpemU6IDJlbQp9CgoucWwtc25vdyAucWwtZWRpdG9yIGgyIHsKICAgIGZvbnQtc2l6ZTogMS41ZW0KfQoKLnFsLXNub3cgLnFsLWVkaXRvciBoMyB7CiAgICBmb250LXNpemU6IDEuMTdlbQp9CgoucWwtc25vdyAucWwtZWRpdG9yIGg0IHsKICAgIGZvbnQtc2l6ZTogMWVtCn0KCi5xbC1zbm93IC5xbC1lZGl0b3IgaDUgewogICAgZm9udC1zaXplOiAuODNlbQp9CgoucWwtc25vdyAucWwtZWRpdG9yIGg2IHsKICAgIGZvbnQtc2l6ZTogLjY3ZW0KfQoKLnFsLXNub3cgLnFsLWVkaXRvciBhIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lCn0KCi5xbC1zbm93IC5xbC1lZGl0b3IgYmxvY2txdW90ZSB7CiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkICNjY2M7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDE2cHgKfQoKLnFsLXNub3cgLnFsLWVkaXRvciBjb2RlLAoucWwtc25vdyAucWwtZWRpdG9yIHByZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwOwogICAgYm9yZGVyLXJhZGl1czogM3B4Cn0KCi5xbC1zbm93IC5xbC1lZGl0b3IgcHJlIHsKICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIG1hcmdpbi10b3A6IDVweDsKICAgIHBhZGRpbmc6IDVweCAxMHB4Cn0KCi5xbC1zbm93IC5xbC1lZGl0b3IgY29kZSB7CiAgICBmb250LXNpemU6IDg1JTsKICAgIHBhZGRpbmc6IDJweCA0cHgKfQoKLnFsLXNub3cgLnFsLWVkaXRvciBwcmUucWwtc3ludGF4IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyMzI0MWY7CiAgICBjb2xvcjogI2Y4ZjhmMjsKICAgIG92ZXJmbG93OiB2aXNpYmxlCn0KCi5xbC1zbm93IC5xbC1lZGl0b3IgaW1nIHsKICAgIG1heC13aWR0aDogMTAwJQp9CgoucWwtc25vdyAucWwtcGlja2VyIHsKICAgIGNvbG9yOiAjNDQ0OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZmxvYXQ6IGxlZnQ7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgaGVpZ2h0OiAyNHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgoucWwtc25vdyAucWwtcGlja2VyLWxhYmVsIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGhlaWdodDogMTAwJTsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgcGFkZGluZy1yaWdodDogMnB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCUKfQoKLnFsLXNub3cgLnFsLXBpY2tlci1sYWJlbDo6YmVmb3JlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAyMnB4Cn0KCi5xbC1zbm93IC5xbC1waWNrZXItb3B0aW9ucyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgZGlzcGxheTogbm9uZTsKICAgIG1pbi13aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwCn0KCi5xbC1zbm93IC5xbC1waWNrZXItb3B0aW9ucyAucWwtcGlja2VyLWl0ZW0gewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgcGFkZGluZy10b3A6IDVweAp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWV4cGFuZGVkIC5xbC1waWNrZXItbGFiZWwgewogICAgY29sb3I6ICNjY2M7CiAgICB6LWluZGV4OiAyCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZXhwYW5kZWQgLnFsLXBpY2tlci1sYWJlbCAucWwtZmlsbCB7CiAgICBmaWxsOiAjY2NjCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZXhwYW5kZWQgLnFsLXBpY2tlci1sYWJlbCAucWwtc3Ryb2tlIHsKICAgIHN0cm9rZTogI2NjYwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWV4cGFuZGVkIC5xbC1waWNrZXItb3B0aW9ucyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICB0b3A6IDEwMCU7CiAgICB6LWluZGV4OiAxCn0KCi5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIsCi5xbC1zbm93IC5xbC1pY29uLXBpY2tlciB7CiAgICB3aWR0aDogMjhweAp9CgoucWwtc25vdyAucWwtY29sb3ItcGlja2VyIC5xbC1waWNrZXItbGFiZWwsCi5xbC1zbm93IC5xbC1pY29uLXBpY2tlciAucWwtcGlja2VyLWxhYmVsIHsKICAgIHBhZGRpbmc6IDJweCA0cHgKfQoKLnFsLXNub3cgLnFsLWNvbG9yLXBpY2tlciAucWwtcGlja2VyLWxhYmVsIHN2ZywKLnFsLXNub3cgLnFsLWljb24tcGlja2VyIC5xbC1waWNrZXItbGFiZWwgc3ZnIHsKICAgIHJpZ2h0OiA0cHgKfQoKLnFsLXNub3cgLnFsLWljb24tcGlja2VyIC5xbC1waWNrZXItb3B0aW9ucyB7CiAgICBwYWRkaW5nOiA0cHggMAp9CgoucWwtc25vdyAucWwtaWNvbi1waWNrZXIgLnFsLXBpY2tlci1pdGVtIHsKICAgIGhlaWdodDogMjRweDsKICAgIHdpZHRoOiAyNHB4OwogICAgcGFkZGluZzogMnB4IDRweAp9CgoucWwtc25vdyAucWwtY29sb3ItcGlja2VyIC5xbC1waWNrZXItb3B0aW9ucyB7CiAgICBwYWRkaW5nOiAzcHggNXB4OwogICAgd2lkdGg6IDE1MnB4Cn0KCi5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIgLnFsLXBpY2tlci1pdGVtIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgZmxvYXQ6IGxlZnQ7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBtYXJnaW46IDJweDsKICAgIHBhZGRpbmc6IDA7CiAgICB3aWR0aDogMTZweAp9CgoucWwtc25vdyAucWwtcGlja2VyOm5vdCgucWwtY29sb3ItcGlja2VyKTpub3QoLnFsLWljb24tcGlja2VyKSBzdmcgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbWFyZ2luLXRvcDogLTlweDsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiA1MCU7CiAgICB3aWR0aDogMThweAp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtW2RhdGEtbGFiZWxdOm5vdChbZGF0YS1sYWJlbD0nJ10pOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWxhYmVsW2RhdGEtbGFiZWxdOm5vdChbZGF0YS1sYWJlbD0nJ10pOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLWxhYmVsXTpub3QoW2RhdGEtbGFiZWw9JyddKTo6YmVmb3JlLAoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWxhYmVsW2RhdGEtbGFiZWxdOm5vdChbZGF0YS1sYWJlbD0nJ10pOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWl0ZW1bZGF0YS1sYWJlbF06bm90KFtkYXRhLWxhYmVsPScnXSk6OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItbGFiZWxbZGF0YS1sYWJlbF06bm90KFtkYXRhLWxhYmVsPScnXSk6OmJlZm9yZSB7CiAgICBjb250ZW50OiBhdHRyKGRhdGEtbGFiZWwpCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIHsKICAgIHdpZHRoOiA5OHB4Cn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbTo6YmVmb3JlLAoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWxhYmVsOjpiZWZvcmUgewogICAgY29udGVudDogJ05vcm1hbCcKfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9IjEiXTo6YmVmb3JlLAoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9IjEiXTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdIZWFkaW5nIDEnCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPSIyIl06OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPSIyIl06OmJlZm9yZSB7CiAgICBjb250ZW50OiAnSGVhZGluZyAyJwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT0iMyJdOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT0iMyJdOjpiZWZvcmUgewogICAgY29udGVudDogJ0hlYWRpbmcgMycKfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9IjQiXTo6YmVmb3JlLAoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9IjQiXTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdIZWFkaW5nIDQnCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPSI1Il06OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPSI1Il06OmJlZm9yZSB7CiAgICBjb250ZW50OiAnSGVhZGluZyA1Jwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT0iNiJdOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT0iNiJdOjpiZWZvcmUgewogICAgY29udGVudDogJ0hlYWRpbmcgNicKfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9IjEiXTo6YmVmb3JlIHsKICAgIGZvbnQtc2l6ZTogMmVtCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPSIyIl06OmJlZm9yZSB7CiAgICBmb250LXNpemU6IDEuNWVtCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPSIzIl06OmJlZm9yZSB7CiAgICBmb250LXNpemU6IDEuMTdlbQp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT0iNCJdOjpiZWZvcmUgewogICAgZm9udC1zaXplOiAxZW0KfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9IjUiXTo6YmVmb3JlIHsKICAgIGZvbnQtc2l6ZTogLjgzZW0KfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9IjYiXTo6YmVmb3JlIHsKICAgIGZvbnQtc2l6ZTogLjY3ZW0KfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IHsKICAgIHdpZHRoOiAxMDhweAp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWxhYmVsOjpiZWZvcmUgewogICAgY29udGVudDogJ1NhbnMgU2VyaWYnCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1zZXJpZl06OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT1zZXJpZl06OmJlZm9yZSB7CiAgICBjb250ZW50OiAnU2VyaWYnCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1tb25vc3BhY2VdOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9bW9ub3NwYWNlXTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdNb25vc3BhY2UnCn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1zZXJpZl06OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogR2VvcmdpYSwgVGltZXMgTmV3IFJvbWFuLCBzZXJpZgp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9bW9ub3NwYWNlXTo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiBNb25hY28sIENvdXJpZXIgTmV3LCBtb25vc3BhY2UKfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIHsKICAgIHdpZHRoOiA5OHB4Cn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWl0ZW06OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItbGFiZWw6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnTm9ybWFsJwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLXNpemUgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9c21hbGxdOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9c21hbGxdOjpiZWZvcmUgewogICAgY29udGVudDogJ1NtYWxsJwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLXNpemUgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9bGFyZ2VdOjpiZWZvcmUsCi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9bGFyZ2VdOjpiZWZvcmUgewogICAgY29udGVudDogJ0xhcmdlJwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLXNpemUgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9aHVnZV06OmJlZm9yZSwKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT1odWdlXTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdIdWdlJwp9CgoucWwtc25vdyAucWwtcGlja2VyLnFsLXNpemUgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9c21hbGxdOjpiZWZvcmUgewogICAgZm9udC1zaXplOiAxMHB4Cn0KCi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1sYXJnZV06OmJlZm9yZSB7CiAgICBmb250LXNpemU6IDE4cHgKfQoKLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPWh1Z2VdOjpiZWZvcmUgewogICAgZm9udC1zaXplOiAzMnB4Cn0KCi5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIucWwtYmFja2dyb3VuZCAucWwtcGlja2VyLWl0ZW0gewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZgp9CgoucWwtc25vdyAucWwtY29sb3ItcGlja2VyLnFsLWNvbG9yIC5xbC1waWNrZXItaXRlbSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwCn0KCi5xbC10b29sYmFyLnFsLXNub3cgewogICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIHBhZGRpbmc6IDhweCAwCn0KCi5xbC10b29sYmFyLnFsLXNub3cgLnFsLWZvcm1hdHMgewogICAgbWFyZ2luLXJpZ2h0OiAxNXB4Cn0KCi5xbC10b29sYmFyLnFsLXNub3cgLnFsLXBpY2tlci1sYWJlbCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudAp9CgoucWwtdG9vbGJhci5xbC1zbm93IC5xbC1waWNrZXItb3B0aW9ucyB7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAuMikgMCAycHggOHB4OwogICAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAuMikgMCAycHggOHB4Cn0KCi5xbC10b29sYmFyLnFsLXNub3cgLnFsLXBpY2tlci5xbC1leHBhbmRlZCAucWwtcGlja2VyLWxhYmVsIHsKICAgIGJvcmRlci1jb2xvcjogI2NjYwp9CgoucWwtdG9vbGJhci5xbC1zbm93IC5xbC1waWNrZXIucWwtZXhwYW5kZWQgLnFsLXBpY2tlci1vcHRpb25zIHsKICAgIGJvcmRlci1jb2xvcjogI2NjYwp9CgoucWwtdG9vbGJhci5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIgLnFsLXBpY2tlci1pdGVtLnFsLXNlbGVjdGVkLAoucWwtdG9vbGJhci5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIgLnFsLXBpY2tlci1pdGVtOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogIzAwMAp9CgoucWwtdG9vbGJhci5xbC1zbm93Ky5xbC1jb250YWluZXIucWwtc25vdyB7CiAgICBib3JkZXItdG9wOiAwCn0KCi5xbC1zbm93IC5xbC10b29sdGlwIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNXB4ICNkZGQ7CiAgICBib3gtc2hhZG93OiAwIDAgNXB4ICNkZGQ7CiAgICBjb2xvcjogIzQ0NDsKICAgIHBhZGRpbmc6IDVweCAxMnB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcAp9CgoucWwtc25vdyAucWwtdG9vbHRpcDo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJWaXNpdCBVUkw6IjsKICAgIGxpbmUtaGVpZ2h0OiAyNnB4OwogICAgbWFyZ2luLXJpZ2h0OiA4cHgKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAgaW5wdXRbdHlwZT10ZXh0XSB7CiAgICBkaXNwbGF5OiBub25lOwogICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGhlaWdodDogMjZweDsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDNweCA1cHg7CiAgICB3aWR0aDogMTcwcHgKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAgYS5xbC1wcmV2aWV3IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1heC13aWR0aDogMjAwcHg7CiAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3AKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAgYS5xbC1hY3Rpb246OmFmdGVyIHsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNjY2M7CiAgICBjb250ZW50OiAnRWRpdCc7CiAgICBtYXJnaW4tbGVmdDogMTZweDsKICAgIHBhZGRpbmctcmlnaHQ6IDhweAp9CgoucWwtc25vdyAucWwtdG9vbHRpcCBhLnFsLXJlbW92ZTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICdSZW1vdmUnOwogICAgbWFyZ2luLWxlZnQ6IDhweAp9CgoucWwtc25vdyAucWwtdG9vbHRpcCBhIHsKICAgIGxpbmUtaGVpZ2h0OiAyNnB4Cn0KCi5xbC1zbm93IC5xbC10b29sdGlwLnFsLWVkaXRpbmcgYS5xbC1wcmV2aWV3LAoucWwtc25vdyAucWwtdG9vbHRpcC5xbC1lZGl0aW5nIGEucWwtcmVtb3ZlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXAucWwtZWRpdGluZyBpbnB1dFt0eXBlPXRleHRdIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgoucWwtc25vdyAucWwtdG9vbHRpcC5xbC1lZGl0aW5nIGEucWwtYWN0aW9uOjphZnRlciB7CiAgICBib3JkZXItcmlnaHQ6IDA7CiAgICBjb250ZW50OiAnU2F2ZSc7CiAgICBwYWRkaW5nLXJpZ2h0OiAwCn0KCi5xbC1zbm93IC5xbC10b29sdGlwW2RhdGEtbW9kZT1saW5rXTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJFbnRlciBsaW5rOiIKfQoKLnFsLXNub3cgLnFsLXRvb2x0aXBbZGF0YS1tb2RlPWZvcm11bGFdOjpiZWZvcmUgewogICAgY29udGVudDogIkVudGVyIGZvcm11bGE6Igp9CgoucWwtc25vdyAucWwtdG9vbHRpcFtkYXRhLW1vZGU9dmlkZW9dOjpiZWZvcmUgewogICAgY29udGVudDogIkVudGVyIHZpZGVvOiIKfQoKLnFsLXNub3cgYSB7CiAgICBjb2xvcjogIzA2Ywp9CgoucWwtY29udGFpbmVyLnFsLXNub3cgewogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2MKfQ=="}},"time_used":96,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":96,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/js/frontend-modules.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.833Z","timestamp":1785128398833,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/elementor/assets/js/frontend-modules.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 18913\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"1b6a7-67c3620e-90e4d41156c85d87;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: b9d86d52241f835746ce71c3b79447cd-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":112295,"size_decoded":19503,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (494)","md5":"92bedfe918ede639d624287e06836c29","sha1":"7cb3fdece6b53841e3b4eb7127dab24db1c09ef7","sha256":"7a9c3cf5d7e6f81c5665a3a0cbad85712c0ee8b100205824f7b3f7a785dc0f32","sha512":"f0532b04959eb734999966717a12d3621770f6a541a2bc9668507dcc8a68d8e3a8b22de218c9a10ae5fd9c8e1bfa49457af7f6cfacf73de72b13cf11fe0e7f3d","ssdeep":"1536:d4Chu6dRCA2RwiysR22PrGNt8qOotDKqEE5AYOJsR5kXodvLEuG0Wo11ybXqznXJ:VfOMSn8dBOoh","tlshash":"64b3820a76f264b5024bb07a1a1fc90ab231449f284dfd193d1c52a65f6893d93f9ff8","first_seen":"2025-07-04T20:26:13.137873Z","last_seen":"2026-07-27T05:01:06.171075Z","times_seen":4,"resource_available":false,"data":"LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNy0wMi0yMDI0ICovCihzZWxmLndlYnBhY2tDaHVua2VsZW1lbnRvciA9IHNlbGYud2VicGFja0NodW5rZWxlbWVudG9yIHx8IFtdKS5wdXNoKFsKICAgIFszNTRdLCB7CiAgICAgICAgMzgxOiAoZSwgdCkgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB0LmRlZmF1bHQgPSAoZSwgdCkgPT4gewogICAgICAgICAgICAgICAgdCA9IEFycmF5LmlzQXJyYXkodCkgPyB0IDogW3RdOwogICAgICAgICAgICAgICAgZm9yIChjb25zdCBuIG9mIHQpCiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29uc3RydWN0b3IubmFtZSA9PT0gbi5wcm90b3R5cGVbU3ltYm9sLnRvU3RyaW5nVGFnXSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDgxMzU6IChlLCB0KSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlIHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzOiAiLmVsZW1lbnRvci1lbGVtZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZERvY3VtZW50RWxlbWVudHM6ICIuZWxlbWVudG9yIC5lbGVtZW50b3ItZWxlbWVudCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdE1vZGU6ICJlbGVtZW50b3ItZWRpdC1tb2RlIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudHM6IHRoaXMuJGVsZW1lbnQuZmluZChlLmVsZW1lbnRzKS5ub3QodGhpcy4kZWxlbWVudC5maW5kKGUubmVzdGVkRG9jdW1lbnRFbGVtZW50cykpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RG9jdW1lbnRTZXR0aW5ncyhlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNFZGl0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGVsZW1lbnRvci5zZXR0aW5ncy5wYWdlLm1vZGVsOwogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaChlLmdldEFjdGl2ZUNvbnRyb2xzKCksIChuID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRbbl0gPSBlLmF0dHJpYnV0ZXNbbl0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHQgPSB0aGlzLiRlbGVtZW50LmRhdGEoImVsZW1lbnRvci1zZXR0aW5ncyIpIHx8IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1zKHQsIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBydW5FbGVtZW50c0hhbmRsZXJzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGVsZW1lbnRzLmVhY2goKChlLCB0KSA9PiBzZXRUaW1lb3V0KCgoKSA9PiBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50c0hhbmRsZXIucnVuUmVhZHlUcmlnZ2VyKHQpKSkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQgPSB0aGlzLmdldFNldHRpbmdzKCIkZWxlbWVudCIpLCBzdXBlci5vbkluaXQoKSwgdGhpcy5pc0VkaXQgPSB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKHRoaXMuZ2V0U2V0dGluZ3MoImNsYXNzZXMuZWRpdE1vZGUiKSksIHRoaXMuaXNFZGl0ID8gZWxlbWVudG9yLm9uKCJkb2N1bWVudDpsb2FkZWQiLCAoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3Iuc2V0dGluZ3MucGFnZS5tb2RlbC5vbigiY2hhbmdlIiwgdGhpcy5vblNldHRpbmdzQ2hhbmdlLmJpbmQodGhpcykpCiAgICAgICAgICAgICAgICAgICAgfSkpIDogdGhpcy5ydW5FbGVtZW50c0hhbmRsZXJzKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uU2V0dGluZ3NDaGFuZ2UoKSB7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IF9kZWZhdWx0CiAgICAgICAgfSwKICAgICAgICA2NzUyOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigzMjAzKTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciByID0gaShuKDMwOTApKTsKICAgICAgICAgICAgY2xhc3MgTmVzdGVkVGl0bGVLZXlib2FyZEhhbmRsZXIgZXh0ZW5kcyByLmRlZmF1bHQgewogICAgICAgICAgICAgICAgX19jb25zdHJ1Y3QoZSkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLl9fY29uc3RydWN0KGUpLCB0aGlzLmRpcmVjdGlvbk5leHQgPSAibmV4dCIsIHRoaXMuZGlyZWN0aW9uUHJldmlvdXMgPSAicHJldmlvdXMiLCB0aGlzLmZvY3VzYWJsZUVsZW1lbnRTZWxlY3RvciA9ICdhdWRpbywgYnV0dG9uLCBjYW52YXMsIGRldGFpbHMsIGlmcmFtZSwgaW5wdXQsIHNlbGVjdCwgc3VtbWFyeSwgdGV4dGFyZWEsIHZpZGVvLCBbYWNjZXNza2V5XSwgW2NvbnRlbnRlZGl0YWJsZV0sIFtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PSItMSJdKScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UaXRsZTogIi5lLW4tdGFiLXRpdGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Db250YWluZXI6ICIuZS1uLXRhYnMtY29udGVudCA+IC5lLWNvbiIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUF0dHJpYnV0ZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlU3RhdGVBdHRyaWJ1dGU6ICJhcmlhLXNlbGVjdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRpdGxlU2VsZWN0b3I6ICdbYXJpYS1zZWxlY3RlZD0idHJ1ZSJdJwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVJbmRleDogImRhdGEtdGFiLWluZGV4IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBrZXlEaXJlY3Rpb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycm93TGVmdDogZWxlbWVudG9yRnJvbnRlbmRDb25maWcuaXNfcnRsID8gdGhpcy5kaXJlY3Rpb25OZXh0IDogdGhpcy5kaXJlY3Rpb25QcmV2aW91cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycm93VXA6IHRoaXMuZGlyZWN0aW9uUHJldmlvdXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJvd1JpZ2h0OiBlbGVtZW50b3JGcm9udGVuZENvbmZpZy5pc19ydGwgPyB0aGlzLmRpcmVjdGlvblByZXZpb3VzIDogdGhpcy5kaXJlY3Rpb25OZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyb3dEb3duOiB0aGlzLmRpcmVjdGlvbk5leHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1UaXRsZXM6IHRoaXMuZmluZEVsZW1lbnQoZS5pdGVtVGl0bGUpLAogICAgICAgICAgICAgICAgICAgICAgICAkaXRlbUNvbnRhaW5lcnM6IHRoaXMuZmluZEVsZW1lbnQoZS5pdGVtQ29udGFpbmVyKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGZvY3VzYWJsZUNvbnRhaW5lckVsZW1lbnRzOiB0aGlzLmdldEZvY3VzYWJsZUVsZW1lbnRzKHRoaXMuZmluZEVsZW1lbnQoZS5pdGVtQ29udGFpbmVyKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRGb2N1c2FibGVFbGVtZW50cyhlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZmluZCh0aGlzLmZvY3VzYWJsZUVsZW1lbnRTZWxlY3Rvcikubm90KCJbZGlzYWJsZWRdLCBbaW5lcnRdIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEtleURpcmVjdGlvblZhbHVlKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRTZXR0aW5ncygia2V5RGlyZWN0aW9uIilbZS5rZXldOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbk5leHQgPT09IHQgPyAxIDogLTEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFRpdGxlSW5kZXgoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVJbmRleDogdAogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldFNldHRpbmdzKCJkYXRhc2V0cyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0VGl0bGVGaWx0ZXJTZWxlY3RvcihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUluZGV4OiB0CiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0U2V0dGluZ3MoImRhdGFzZXRzIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBbJHt0fT0iJHtlfSJdYAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QWN0aXZlVGl0bGVFbGVtZW50KCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJhcmlhQXR0cmlidXRlcyIpLmFjdGl2ZVRpdGxlU2VsZWN0b3I7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudHMuJGl0ZW1UaXRsZXMuZmlsdGVyKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kaXRlbVRpdGxlcy5vbih0aGlzLmdldFRpdGxlRXZlbnRzKCkpLCB0aGlzLmVsZW1lbnRzLiRmb2N1c2FibGVDb250YWluZXJFbGVtZW50cy5vbih0aGlzLmdldENvbnRlbnRFbGVtZW50RXZlbnRzKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bmJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kaXRlbVRpdGxlcy5vZmYoKSwgdGhpcy5lbGVtZW50cy4kaXRlbUNvbnRhaW5lcnMuY2hpbGRyZW4oKS5vZmYoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0VGl0bGVFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5ZG93bjogdGhpcy5oYW5kbGVUaXRsZUtleWJvYXJkTmF2aWdhdGlvbi5iaW5kKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0Q29udGVudEVsZW1lbnRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5ZG93bjogdGhpcy5oYW5kbGVDb250ZW50RWxlbWVudEtleWJvYXJkTmF2aWdhdGlvbi5iaW5kKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNEaXJlY3Rpb25LZXkoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbIkFycm93TGVmdCIsICJBcnJvd1JpZ2h0IiwgIkFycm93VXAiLCAiQXJyb3dEb3duIiwgIkhvbWUiLCAiRW5kIl0uaW5jbHVkZXMoZS5rZXkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc0FjdGl2YXRpb25LZXkoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbIkVudGVyIiwgIiAiXS5pbmNsdWRlcyhlLmtleSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRsZVRpdGxlS2V5Ym9hcmROYXZpZ2F0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0RpcmVjdGlvbktleShlKSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBwYXJzZUludCh0aGlzLmdldFRpdGxlSW5kZXgoZS5jdXJyZW50VGFyZ2V0KSkgfHwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmVsZW1lbnRzLiRpdGVtVGl0bGVzLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLmdldFRpdGxlSW5kZXhGb2N1c1VwZGF0ZWQoZSwgdCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlVGl0bGVGb2N1cyhpKSwgZS5zdG9wUHJvcGFnYXRpb24oKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0FjdGl2YXRpb25LZXkoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUucHJldmVudERlZmF1bHQoKSwgdGhpcy5oYW5kZVRpdGxlTGlua0VudGVyT3JTcGFjZUV2ZW50KGUpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldFRpdGxlSW5kZXgoZS5jdXJyZW50VGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJHdpbmRvdy50cmlnZ2VyKCJlbGVtZW50b3IvbmVzdGVkLWVsZW1lbnRzL2FjdGl2YXRlLWJ5LWtleWJvYXJkIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0SWQ6IHRoaXMuZ2V0SUQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlSW5kZXg6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgIkVzY2FwZSIgPT09IGUua2V5ICYmIHRoaXMuaGFuZGxlVGl0bGVFc2NhcGVLZXlFdmVudHMoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRlVGl0bGVMaW5rRW50ZXJPclNwYWNlRXZlbnQoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSAiYSIgPT09IGUgPyAuY3VycmVudFRhcmdldCA/IC50YWdOYW1lID8gLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgJiYgdCAmJiAoZSA/IC5jdXJyZW50VGFyZ2V0ID8gLmNsaWNrKCksIGUuc3RvcFByb3BhZ2F0aW9uKCkpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRUaXRsZUluZGV4Rm9jdXNVcGRhdGVkKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlLmtleSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJIb21lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkVuZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHRoaXMuZ2V0S2V5RGlyZWN0aW9uVmFsdWUoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbiA8IHQgKyByID8gMSA6IDAgPT09IHQgKyByID8gbiA6IHQgKyByCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjaGFuZ2VUaXRsZUZvY3VzKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5lbGVtZW50cy4kaXRlbVRpdGxlcy5maWx0ZXIodGhpcy5nZXRUaXRsZUZpbHRlclNlbGVjdG9yKGUpKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFRpdGxlVGFiaW5kZXgoZSksIHQudHJpZ2dlcigiZm9jdXMiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0VGl0bGVUYWJpbmRleChlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kaXRlbVRpdGxlcy5hdHRyKCJ0YWJpbmRleCIsICItMSIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGl0ZW1UaXRsZXMuZmlsdGVyKHRoaXMuZ2V0VGl0bGVGaWx0ZXJTZWxlY3RvcihlKSkuYXR0cigidGFiaW5kZXgiLCAiMCIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoYW5kbGVUaXRsZUVzY2FwZUtleUV2ZW50cygpIHt9CiAgICAgICAgICAgICAgICBoYW5kbGVDb250ZW50RWxlbWVudEtleWJvYXJkTmF2aWdhdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgIlRhYiIgIT09IGUua2V5IHx8IGUuc2hpZnRLZXkgPyAiRXNjYXBlIiA9PT0gZS5rZXkgJiYgKGUucHJldmVudERlZmF1bHQoKSwgZS5zdG9wUHJvcGFnYXRpb24oKSwgdGhpcy5oYW5kbGVDb250ZW50RWxlbWVudEVzY2FwZUV2ZW50cyhlKSkgOiB0aGlzLmhhbmRsZUNvbnRlbnRFbGVtZW50VGFiRXZlbnRzKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoYW5kbGVDb250ZW50RWxlbWVudEVzY2FwZUV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFjdGl2ZVRpdGxlRWxlbWVudCgpLnRyaWdnZXIoImZvY3VzIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRsZUNvbnRlbnRFbGVtZW50VGFiRXZlbnRzKCkge30KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBOZXN0ZWRUaXRsZUtleWJvYXJkSGFuZGxlcgogICAgICAgIH0sCiAgICAgICAgMTI5MjogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oMzIwMyk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgciA9IGkobigyODIxKSk7CiAgICAgICAgICAgIGNsYXNzIENhcm91c2VsSGFuZGxlckJhc2UgZXh0ZW5kcyByLmRlZmF1bHQgewogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fyb3VzZWw6IGAuJHtlbGVtZW50b3JGcm9udGVuZC5jb25maWcuc3dpcGVyQ2xhc3N9YCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXBlcldyYXBwZXI6ICIuc3dpcGVyLXdyYXBwZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVDb250ZW50OiAiLnN3aXBlci1zbGlkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2lwZXJBcnJvdzogIi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uV3JhcHBlcjogIi5zd2lwZXItcGFnaW5hdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQnVsbGV0OiAiLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQnVsbGV0V3JhcHBlcjogIi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzd2lwZXJDb250YWluZXI6IHRoaXMuJGVsZW1lbnQuZmluZChlLmNhcm91c2VsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzd2lwZXJXcmFwcGVyOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5zd2lwZXJXcmFwcGVyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzd2lwZXJBcnJvd3M6IHRoaXMuJGVsZW1lbnQuZmluZChlLnN3aXBlckFycm93KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdpbmF0aW9uV3JhcHBlcjogdGhpcy4kZWxlbWVudC5maW5kKGUucGFnaW5hdGlvbldyYXBwZXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2luYXRpb25CdWxsZXRzOiB0aGlzLiRlbGVtZW50LmZpbmQoZS5wYWdpbmF0aW9uQnVsbGV0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdpbmF0aW9uQnVsbGV0V3JhcHBlcjogdGhpcy4kZWxlbWVudC5maW5kKGUucGFnaW5hdGlvbkJ1bGxldFdyYXBwZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuJHNsaWRlcyA9IHQuJHN3aXBlckNvbnRhaW5lci5maW5kKGUuc2xpZGVDb250ZW50KSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0U3dpcGVyU2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSArZS5zbGlkZXNfdG9fc2hvdyB8fCAzLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gMSA9PT0gdCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5yZXNwb25zaXZlLmFjdGl2ZUJyZWFrcG9pbnRzLAogICAgICAgICAgICAgICAgICAgICAgICByID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGV0OiBuID8gMSA6IDIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wOiAieWVzIiA9PT0gZS5pbmZpbml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkOiBlLnNwZWVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRWxlbWVudG9yQnJlYWtwb2ludHM6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludHM6IHt9CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgbGV0IG8gPSB0OwogICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGkpLnJldmVyc2UoKS5mb3JFYWNoKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHJbdF0gPyByW3RdIDogbzsKICAgICAgICAgICAgICAgICAgICAgICAgcy5icmVha3BvaW50c1tpW3RdLnZhbHVlXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6ICtlWyJzbGlkZXNfdG9fc2hvd18iICsgdF0gfHwgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1Blckdyb3VwOiArZVsic2xpZGVzX3RvX3Njcm9sbF8iICsgdF0gfHwgMQogICAgICAgICAgICAgICAgICAgICAgICB9LCBlLmltYWdlX3NwYWNpbmdfY3VzdG9tICYmIChzLmJyZWFrcG9pbnRzW2lbdF0udmFsdWVdLnNwYWNlQmV0d2VlbiA9IHRoaXMuZ2V0U3BhY2VCZXR3ZWVuKHQpKSwgbyA9ICtlWyJzbGlkZXNfdG9fc2hvd18iICsgdF0gfHwgbgogICAgICAgICAgICAgICAgICAgIH0pKSwgInllcyIgPT09IGUuYXV0b3BsYXkgJiYgKHMuYXV0b3BsYXkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiBlLmF1dG9wbGF5X3NwZWVkLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlT25JbnRlcmFjdGlvbjogInllcyIgPT09IGUucGF1c2Vfb25faW50ZXJhY3Rpb24KICAgICAgICAgICAgICAgICAgICB9KSwgbiA/IChzLmVmZmVjdCA9IGUuZWZmZWN0LCAiZmFkZSIgPT09IGUuZWZmZWN0ICYmIChzLmZhZGVFZmZlY3QgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzRmFkZTogITAKICAgICAgICAgICAgICAgICAgICB9KSkgOiBzLnNsaWRlc1Blckdyb3VwID0gK2Uuc2xpZGVzX3RvX3Njcm9sbCB8fCAxLCBlLmltYWdlX3NwYWNpbmdfY3VzdG9tICYmIChzLnNwYWNlQmV0d2VlbiA9IHRoaXMuZ2V0U3BhY2VCZXR3ZWVuKCkpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSAiYXJyb3dzIiA9PT0gZS5uYXZpZ2F0aW9uIHx8ICJib3RoIiA9PT0gZS5uYXZpZ2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gImRvdHMiID09PSBlLm5hdmlnYXRpb24gfHwgImJvdGgiID09PSBlLm5hdmlnYXRpb24gfHwgZS5wYWdpbmF0aW9uOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBhICYmIChzLm5hdmlnYXRpb24gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZFbDogIi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IiwKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEVsOiAiLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQiCiAgICAgICAgICAgICAgICAgICAgfSksIGwgJiYgKHMucGFnaW5hdGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgZWw6IGAuZWxlbWVudG9yLWVsZW1lbnQtJHt0aGlzLmdldElEKCl9IC5zd2lwZXItcGFnaW5hdGlvbmAsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUucGFnaW5hdGlvbiA/IGUucGFnaW5hdGlvbiA6ICJidWxsZXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2thYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQnVsbGV0OiAoZSwgdCkgPT4gYDxzcGFuIGNsYXNzPSIke3R9IiBkYXRhLWJ1bGxldC1pbmRleD0iJHtlfSIgYXJpYS1sYWJlbD0iJHtlbGVtZW50b3JGcm9udGVuZC5jb25maWcuaTE4bi5hMTF5Q2Fyb3VzZWxQYWdpbmF0aW9uQnVsbGV0TWVzc2FnZX0gJHtlKzF9Ij48L3NwYW4+YAogICAgICAgICAgICAgICAgICAgIH0pLCAieWVzIiA9PT0gZS5sYXp5bG9hZCAmJiAocy5sYXp5ID0gewogICAgICAgICAgICAgICAgICAgICAgICBsb2FkUHJldk5leHQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBsb2FkUHJldk5leHRBbW91bnQ6IDEKICAgICAgICAgICAgICAgICAgICB9KSwgcy5hMTF5ID0gewogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgcHJldlNsaWRlTWVzc2FnZTogZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmkxOG4uYTExeUNhcm91c2VsUHJldlNsaWRlTWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFNsaWRlTWVzc2FnZTogZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmkxOG4uYTExeUNhcm91c2VsTmV4dFNsaWRlTWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RTbGlkZU1lc3NhZ2U6IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pMThuLmExMXlDYXJvdXNlbEZpcnN0U2xpZGVNZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICBsYXN0U2xpZGVNZXNzYWdlOiBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuaTE4bi5hMTF5Q2Fyb3VzZWxMYXN0U2xpZGVNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgfSwgcy5vbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVDaGFuZ2VUcmFuc2l0aW9uRW5kOiAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmExMXlTZXRTbGlkZUFyaWFIaWRkZW4oKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUNoYW5nZTogKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hMTF5U2V0UGFnaW5hdGlvblRhYmluZGV4KCksIHRoaXMuaGFuZGxlRWxlbWVudEhhbmRsZXJzKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5pdDogKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hMTF5U2V0V2lkZ2V0QXJpYURldGFpbHMoKSwgdGhpcy5hMTF5U2V0UGFnaW5hdGlvblRhYmluZGV4KCksIHRoaXMuYTExeVNldFNsaWRlQXJpYUhpZGRlbigiaW5pdGlhbGlzYXRpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5hcHBseU9mZnNldFNldHRpbmdzKGUsIHMsIHQpLCBzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRPZmZzZXRXaWR0aCgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yRnJvbnRlbmQuZ2V0Q3VycmVudERldmljZU1vZGUoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuY29udHJvbHMuZ2V0UmVzcG9uc2l2ZUNvbnRyb2xWYWx1ZSh0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLCAib2Zmc2V0X3dpZHRoIiwgInNpemUiLCBlKSB8fCAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhcHBseU9mZnNldFNldHRpbmdzKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gZS5vZmZzZXRfc2lkZXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiAiTmVzdGVkQ2Fyb3VzZWwiID09PSB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfHwgIWkgfHwgIm5vbmUiID09PSBpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRPZmZzZXRXaWR0aCgpOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyaWdodCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcmNlU2xpZGVyVG9TaG93TmV4dFNsaWRlV2hlbk9uTGFzdCh0LCBuKSwgdGhpcy5hZGRDbGFzc1RvU3dpcGVyQ29udGFpbmVyKCJvZmZzZXQtcmlnaHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsZWZ0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3NUb1N3aXBlckNvbnRhaW5lcigib2Zmc2V0LWxlZnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib3RoIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9yY2VTbGlkZXJUb1Nob3dOZXh0U2xpZGVXaGVuT25MYXN0KHQsIG4pLCB0aGlzLmFkZENsYXNzVG9Td2lwZXJDb250YWluZXIoIm9mZnNldC1ib3RoIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3JjZVNsaWRlclRvU2hvd05leHRTbGlkZVdoZW5Pbkxhc3QoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGUuc2xpZGVzUGVyVmlldyA9IHQgKyAuMDAxCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhZGRDbGFzc1RvU3dpcGVyQ29udGFpbmVyKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERlZmF1bHRFbGVtZW50cygpLiRzd2lwZXJDb250YWluZXJbMF0uY2xhc3NMaXN0LmFkZChlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXN5bmMgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIGlmIChzdXBlci5vbkluaXQoLi4uYXJndW1lbnRzKSwgIXRoaXMuZWxlbWVudHMuJHN3aXBlckNvbnRhaW5lci5sZW5ndGggfHwgMiA+IHRoaXMuZWxlbWVudHMuJHNsaWRlcy5sZW5ndGgpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuc3dpcGVyOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyID0gYXdhaXQgbmV3IGUodGhpcy5lbGVtZW50cy4kc3dpcGVyQ29udGFpbmVyLCB0aGlzLmdldFN3aXBlclNldHRpbmdzKCkpLCB0aGlzLmVsZW1lbnRzLiRzd2lwZXJDb250YWluZXIuZGF0YSgic3dpcGVyIiwgdGhpcy5zd2lwZXIpOwogICAgICAgICAgICAgICAgICAgICJ5ZXMiID09PSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLnBhdXNlX29uX2hvdmVyICYmIHRoaXMudG9nZ2xlUGF1c2VPbkhvdmVyKCEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRzd2lwZXJBcnJvd3Mub24oImtleWRvd24iLCB0aGlzLm9uRGlyZWN0aW9uQXJyb3dLZXlkb3duLmJpbmQodGhpcykpLCB0aGlzLmVsZW1lbnRzLiRwYWdpbmF0aW9uV3JhcHBlci5vbigia2V5ZG93biIsICIuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IiwgdGhpcy5vbkRpcmVjdGlvbkFycm93S2V5ZG93bi5iaW5kKHRoaXMpKSwgdGhpcy5lbGVtZW50cy4kc3dpcGVyQ29udGFpbmVyLm9uKCJrZXlkb3duIiwgIi5zd2lwZXItc2xpZGUiLCB0aGlzLm9uRGlyZWN0aW9uQXJyb3dLZXlkb3duLmJpbmQodGhpcykpLCB0aGlzLiRlbGVtZW50LmZpbmQoIjpmb2N1c2FibGUiKS5vbigiZm9jdXMiLCB0aGlzLm9uRm9jdXNEaXNhYmxlQXV0b3BsYXkuYmluZCh0aGlzKSksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub24oInJlc2l6ZSIsIHRoaXMuZ2V0U3dpcGVyU2V0dGluZ3MuYmluZCh0aGlzKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRzd2lwZXJBcnJvd3Mub2ZmKCksIHRoaXMuZWxlbWVudHMuJHBhZ2luYXRpb25XcmFwcGVyLm9mZigpLCB0aGlzLmVsZW1lbnRzLiRzd2lwZXJDb250YWluZXIub2ZmKCksIHRoaXMuJGVsZW1lbnQuZmluZCgiOmZvY3VzYWJsZSIpLm9mZigpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9mZigicmVzaXplIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRGlyZWN0aW9uQXJyb3dLZXlkb3duKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmlzX3J0bCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUub3JpZ2luYWxFdmVudC5jb2RlLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdCA/ICJBcnJvd0xlZnQiIDogIkFycm93UmlnaHQiOwogICAgICAgICAgICAgICAgICAgIGlmICghKC0xICE9PSBbIkFycm93TGVmdCIsICJBcnJvd1JpZ2h0Il0uaW5kZXhPZihuKSkpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAodCA/ICJBcnJvd1JpZ2h0IiA6ICJBcnJvd0xlZnQiKSA9PT0gbiA/IHRoaXMuc3dpcGVyLnNsaWRlUHJldigpIDogaSA9PT0gbiAmJiB0aGlzLnN3aXBlci5zbGlkZU5leHQoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Gb2N1c0Rpc2FibGVBdXRvcGxheSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN3aXBlci5hdXRvcGxheS5zdG9wKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVwZGF0ZVN3aXBlck9wdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKClbZV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLnN3aXBlci5wYXJhbXM7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImF1dG9wbGF5X3NwZWVkIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uYXV0b3BsYXkuZGVsYXkgPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNwZWVkIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uc3BlZWQgPSB0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyLnVwZGF0ZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRDaGFuZ2VhYmxlUHJvcGVydGllcygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBwYXVzZV9vbl9ob3ZlcjogInBhdXNlT25Ib3ZlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5X3NwZWVkOiAiZGVsYXkiLAogICAgICAgICAgICAgICAgICAgICAgICBzcGVlZDogInNwZWVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dzX3Bvc2l0aW9uOiAiYXJyb3dzX3Bvc2l0aW9uIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGUuaW5kZXhPZigiaW1hZ2Vfc3BhY2luZ19jdXN0b20iKSkgcmV0dXJuIHZvaWQgdGhpcy51cGRhdGVTcGFjZUJldHdlZW4oZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0Q2hhbmdlYWJsZVByb3BlcnRpZXMoKVtlXSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJwYXVzZV9vbl9ob3ZlciIgPT09IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygicGF1c2Vfb25faG92ZXIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlUGF1c2VPbkhvdmVyKCJ5ZXMiID09PSBlKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy51cGRhdGVTd2lwZXJPcHRpb24oZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWRpdFNldHRpbmdzQ2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICAgICAiYWN0aXZlSXRlbUluZGV4IiA9PT0gZSAmJiB0aGlzLnN3aXBlci5zbGlkZVRvTG9vcCh0aGlzLmdldEVkaXRTZXR0aW5ncygiYWN0aXZlSXRlbUluZGV4IikgLSAxKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0U3BhY2VCZXR3ZWVuKCkgewogICAgICAgICAgICAgICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiBudWxsOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JGcm9udGVuZC51dGlscy5jb250cm9scy5nZXRSZXNwb25zaXZlQ29udHJvbFZhbHVlKHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksICJpbWFnZV9zcGFjaW5nX2N1c3RvbSIsICJzaXplIiwgZSkgfHwgMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdXBkYXRlU3BhY2VCZXR3ZWVuKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5tYXRjaCgiaW1hZ2Vfc3BhY2luZ19jdXN0b21fKC4qKSIpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdCA/IHRbMV0gOiAiZGVza3RvcCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLmdldFNwYWNlQmV0d2VlbihuKTsKICAgICAgICAgICAgICAgICAgICAiZGVza3RvcCIgIT09IG4gJiYgKHRoaXMuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50c1tlbGVtZW50b3JGcm9udGVuZC5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50c1tuXS52YWx1ZV0uc3BhY2VCZXR3ZWVuID0gaSksIHRoaXMuc3dpcGVyLnBhcmFtcy5zcGFjZUJldHdlZW4gPSBpLCB0aGlzLnN3aXBlci51cGRhdGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0UGFnaW5hdGlvbkJ1bGxldHMoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6ICJhcnJheSI7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuJGVsZW1lbnQuZmluZCh0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKS5wYWdpbmF0aW9uQnVsbGV0KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImFycmF5IiA9PT0gZSA/IEFycmF5LmZyb20odCkgOiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhMTF5U2V0V2lkZ2V0QXJpYURldGFpbHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuJGVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgZS5hdHRyKCJhcmlhLXJvbGVkZXNjcmlwdGlvbiIsICJjYXJvdXNlbCIpLCBlLmF0dHIoImFyaWEtbGFiZWwiLCBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuaTE4bi5hMTF5Q2Fyb3VzZWxXcmFwcGVyQXJpYUxhYmVsKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYTExeVNldFBhZ2luYXRpb25UYWJpbmRleCgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5zd2lwZXIgPyAucGFyYW1zLnBhZ2luYXRpb24uYnVsbGV0Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLnN3aXBlciA/IC5wYXJhbXMucGFnaW5hdGlvbi5idWxsZXRBY3RpdmVDbGFzczsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFBhZ2luYXRpb25CdWxsZXRzKCkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuY2xhc3NMaXN0ID8gLmNvbnRhaW5zKHQpIHx8IGUucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSAiQXJyb3dMZWZ0IiA9PT0gZXZlbnQgPyAuY29kZSB8fCAiQXJyb3dSaWdodCIgPT09IGV2ZW50ID8gLmNvZGU7CiAgICAgICAgICAgICAgICAgICAgZXZlbnQgPyAudGFyZ2V0ID8gLmNsYXNzTGlzdCA/IC5jb250YWlucyhlKSAmJiBuICYmIHRoaXMuJGVsZW1lbnQuZmluZChgLiR7dH1gKS50cmlnZ2VyKCJmb2N1cyIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTd2lwZXJXcmFwcGVyVHJhbmZvcm1YVmFsdWUoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSB0aGlzLmVsZW1lbnRzLiRzd2lwZXJXcmFwcGVyWzBdID8gLnN0eWxlLnRyYW5zZm9ybTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IGUucmVwbGFjZSgidHJhbnNsYXRlM2QoIiwgIiIpLCBlID0gZS5zcGxpdCgiLCIpLCBlID0gcGFyc2VJbnQoZVswXS5yZXBsYWNlKCJweCIsICIiKSksIGUgfHwgMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYTExeVNldFNsaWRlQXJpYUhpZGRlbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIm51bWJlciIgIT0gdHlwZW9mKCJpbml0aWFsaXNhdGlvbiIgPT09IChhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6ICIiKSA/IDAgOiB0aGlzLnN3aXBlciA/IC5hY3RpdmVJbmRleCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTd2lwZXJXcmFwcGVyVHJhbmZvcm1YVmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZWxlbWVudHMuJHN3aXBlcldyYXBwZXJbMF0uY2xpZW50V2lkdGg7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kc3dpcGVyQ29udGFpbmVyLmZpbmQodGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzIikuc2xpZGVDb250ZW50KS5lYWNoKCgobiwgaSkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAwIDw9IGkub2Zmc2V0TGVmdCArIGUgJiYgdCA+IGkub2Zmc2V0TGVmdCArIGUgPyAoaS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksIGkucmVtb3ZlQXR0cmlidXRlKCJpbmVydCIpKSA6IChpLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAhMCksIGkuc2V0QXR0cmlidXRlKCJpbmVydCIsICIiKSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRsZUVsZW1lbnRIYW5kbGVycygpIHt9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gQ2Fyb3VzZWxIYW5kbGVyQmFzZQogICAgICAgIH0sCiAgICAgICAgMjgyMTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oMzIwMyk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgciA9IGkobigzMDkwKSk7CiAgICAgICAgICAgIGNsYXNzIFN3aXBlckhhbmRsZXJCYXNlIGV4dGVuZHMgci5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGdldEluaXRpYWxTbGlkZSgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFZGl0U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hY3RpdmVJdGVtSW5kZXggPyBlLmFjdGl2ZUl0ZW1JbmRleCAtIDEgOiAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTbGlkZXNDb3VudCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50cy4kc2xpZGVzLmxlbmd0aAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdG9nZ2xlUGF1c2VPbkhvdmVyKGUpIHsKICAgICAgICAgICAgICAgICAgICBlID8gdGhpcy5lbGVtZW50cy4kc3dpcGVyQ29udGFpbmVyLm9uKHsKICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VlbnRlcjogKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zd2lwZXIuYXV0b3BsYXkuc3RvcCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlbGVhdmU6ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyLmF1dG9wbGF5LnN0YXJ0KCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pIDogdGhpcy5lbGVtZW50cy4kc3dpcGVyQ29udGFpbmVyLm9mZigibW91c2VlbnRlciBtb3VzZWxlYXZlIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRsZUtlbkJ1cm5zKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kYWN0aXZlSW1hZ2VCZyAmJiB0aGlzLiRhY3RpdmVJbWFnZUJnLnJlbW92ZUNsYXNzKGUuY2xhc3Nlcy5rZW5CdXJuc0FjdGl2ZSksIHRoaXMuYWN0aXZlSXRlbUluZGV4ID0gdGhpcy5zd2lwZXIgPyB0aGlzLnN3aXBlci5hY3RpdmVJbmRleCA6IHRoaXMuZ2V0SW5pdGlhbFNsaWRlKCksIHRoaXMuc3dpcGVyID8gdGhpcy4kYWN0aXZlSW1hZ2VCZyA9IGpRdWVyeSh0aGlzLnN3aXBlci5zbGlkZXNbdGhpcy5hY3RpdmVJdGVtSW5kZXhdKS5jaGlsZHJlbigiLiIgKyBlLmNsYXNzZXMuc2xpZGVCYWNrZ3JvdW5kKSA6IHRoaXMuJGFjdGl2ZUltYWdlQmcgPSBqUXVlcnkodGhpcy5lbGVtZW50cy4kc2xpZGVzWzBdKS5jaGlsZHJlbigiLiIgKyBlLmNsYXNzZXMuc2xpZGVCYWNrZ3JvdW5kKSwgdGhpcy4kYWN0aXZlSW1hZ2VCZy5hZGRDbGFzcyhlLmNsYXNzZXMua2VuQnVybnNBY3RpdmUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gU3dpcGVySGFuZGxlckJhc2UKICAgICAgICB9LAogICAgICAgIDMwOTA6IGUgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZS5leHRlbmQoewogICAgICAgICAgICAgICAgJGVsZW1lbnQ6IG51bGwsCiAgICAgICAgICAgICAgICBlZGl0b3JMaXN0ZW5lcnM6IG51bGwsCiAgICAgICAgICAgICAgICBvbkVsZW1lbnRDaGFuZ2U6IG51bGwsCiAgICAgICAgICAgICAgICBvbkVkaXRTZXR0aW5nc0NoYW5nZTogbnVsbCwKICAgICAgICAgICAgICAgIG9uUGFnZVNldHRpbmdzQ2hhbmdlOiBudWxsLAogICAgICAgICAgICAgICAgaXNFZGl0OiBudWxsLAogICAgICAgICAgICAgICAgX19jb25zdHJ1Y3QoZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUoZSkgJiYgKHRoaXMuJGVsZW1lbnQgPSBlLiRlbGVtZW50LCB0aGlzLmlzRWRpdCA9IHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImVsZW1lbnRvci1lbGVtZW50LWVkaXQtbW9kZSIpLCB0aGlzLmlzRWRpdCAmJiB0aGlzLmFkZEVkaXRvckxpc3RlbmVycygpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGlzQWN0aXZlOiAoKSA9PiAhMCwKICAgICAgICAgICAgICAgIGlzRWxlbWVudEluVGhlQ3VycmVudERvY3VtZW50KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiBlbGVtZW50b3IuZG9jdW1lbnRzLmN1cnJlbnREb2N1bWVudC5pZC50b1N0cmluZygpID09PSB0aGlzLiRlbGVtZW50WzBdLmNsb3Nlc3QoIi5lbGVtZW50b3IiKS5kYXRhc2V0LmVsZW1lbnRvcklkCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZmluZEVsZW1lbnQoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy4kZWxlbWVudDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5maW5kKGUpLmZpbHRlcigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkodGhpcykucGFyZW50KCkuY2xvc2VzdCgiLmVsZW1lbnRvci1lbGVtZW50IikuaXModCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRVbmlxdWVIYW5kbGVySUQoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlIHx8IChlID0gdGhpcy5nZXRNb2RlbENJRCgpKSwgdCB8fCAodCA9IHRoaXMuJGVsZW1lbnQpLCBlICsgdC5hdHRyKCJkYXRhLWVsZW1lbnRfdHlwZSIpICsgdGhpcy5nZXRDb25zdHJ1Y3RvcklEKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpbml0RWRpdG9yTGlzdGVuZXJzKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5lZGl0b3JMaXN0ZW5lcnMgPSBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICJlbGVtZW50OmRlc3Ryb3kiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IGVsZW1lbnRvci5jaGFubmVscy5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuY2lkID09PSBlLmdldE1vZGVsQ0lEKCkgJiYgZS5vbkRlc3Ryb3koKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9XSwgZS5vbkVsZW1lbnRDaGFuZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGUuZ2V0V2lkZ2V0VHlwZSgpIHx8IGUuZ2V0RWxlbWVudFR5cGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSAiY2hhbmdlIjsKICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbCIgIT09IHQgJiYgKG4gKz0gIjoiICsgdCksIGUuZWRpdG9yTGlzdGVuZXJzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bzogZWxlbWVudG9yLmNoYW5uZWxzLmVkaXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmdldFVuaXF1ZUhhbmRsZXJJRChuLm1vZGVsLmNpZCwgbi4kZWwpID09PSBlLmdldFVuaXF1ZUhhbmRsZXJJRCgpICYmIGUub25FbGVtZW50Q2hhbmdlKHQubW9kZWwuZ2V0KCJuYW1lIiksIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUub25FZGl0U2V0dGluZ3NDaGFuZ2UgJiYgZS5lZGl0b3JMaXN0ZW5lcnMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiAiY2hhbmdlOmVkaXRTZXR0aW5ncyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBlbGVtZW50b3IuY2hhbm5lbHMuZWRpdG9yLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5tb2RlbC5jaWQgIT09IGUuZ2V0TW9kZWxDSUQoKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IE9iamVjdC5rZXlzKHQuY2hhbmdlZClbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm9uRWRpdFNldHRpbmdzQ2hhbmdlKGksIHQuY2hhbmdlZFtpXSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLCBbInBhZ2UiXS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gIm9uIiArIHRbMF0udG9VcHBlckNhc2UoKSArIHQuc2xpY2UoMSkgKyAiU2V0dGluZ3NDaGFuZ2UiOwogICAgICAgICAgICAgICAgICAgICAgICBlW25dICYmIGUuZWRpdG9yTGlzdGVuZXJzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICJjaGFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IGVsZW1lbnRvci5zZXR0aW5nc1t0XS5tb2RlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW25dKHQuY2hhbmdlZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRFZGl0b3JMaXN0ZW5lcnMoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yTGlzdGVuZXJzIHx8IHRoaXMuaW5pdEVkaXRvckxpc3RlbmVycygpLCB0aGlzLmVkaXRvckxpc3RlbmVycwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFkZEVkaXRvckxpc3RlbmVycygpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0VW5pcXVlSGFuZGxlcklEKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFZGl0b3JMaXN0ZW5lcnMoKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmFkZExpc3RlbmVyT25jZShlLCB0LmV2ZW50LCB0LmNhbGxiYWNrLCB0LnRvKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlbW92ZUVkaXRvckxpc3RlbmVycygpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0VW5pcXVlSGFuZGxlcklEKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFZGl0b3JMaXN0ZW5lcnMoKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLnJlbW92ZUxpc3RlbmVycyhlLCB0LmV2ZW50LCBudWxsLCB0LnRvKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldEVsZW1lbnRUeXBlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50LmRhdGEoImVsZW1lbnRfdHlwZSIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0V2lkZ2V0VHlwZSgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy4kZWxlbWVudC5kYXRhKCJ3aWRnZXRfdHlwZSIpOwogICAgICAgICAgICAgICAgICAgIGlmIChlKSByZXR1cm4gZS5zcGxpdCgiLiIpWzBdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0SUQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnQuZGF0YSgiaWQiKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldE1vZGVsQ0lEKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50LmRhdGEoIm1vZGVsLWNpZCIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0RWxlbWVudFNldHRpbmdzKGUpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgdCA9IHt9OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmdldE1vZGVsQ0lEKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNFZGl0ICYmIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5lbGVtZW50cy5kYXRhW25dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuYXR0cmlidXRlczsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSBpLndpZGdldFR5cGUgfHwgaS5lbFR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuaXNJbm5lciAmJiAociA9ICJpbm5lci0iICsgcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmVsZW1lbnRzLmtleXNbcl07CiAgICAgICAgICAgICAgICAgICAgICAgIHMgfHwgKHMgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuZWxlbWVudHMua2V5c1tyXSA9IFtdLCBqUXVlcnkuZWFjaChlLmNvbnRyb2xzLCAoKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZnJvbnRlbmRfYXZhaWxhYmxlICYmIHMucHVzaChlKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkpLCBqUXVlcnkuZWFjaChlLmdldEFjdGl2ZUNvbnRyb2xzKCksIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgIT09IHMuaW5kZXhPZihlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuID0gaVtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnRvSlNPTiAmJiAobiA9IG4udG9KU09OKCkpLCB0W2VdID0gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdCA9IHRoaXMuJGVsZW1lbnQuZGF0YSgic2V0dGluZ3MiKSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtcyh0LCBlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldEVkaXRTZXR0aW5ncyhlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB7fTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0VkaXQgJiYgKHQgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuZWxlbWVudHMuZWRpdFNldHRpbmdzW3RoaXMuZ2V0TW9kZWxDSUQoKV0uYXR0cmlidXRlcyksIHRoaXMuZ2V0SXRlbXModCwgZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRDdXJyZW50RGV2aWNlU2V0dGluZyhlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLmdldEN1cnJlbnREZXZpY2VTZXR0aW5nKHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksIGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUodGhpcy5nZXRTZXR0aW5ncygpKSAmJiBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUucHJvdG90eXBlLm9uSW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25EZXN0cm95KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNFZGl0ICYmIHRoaXMucmVtb3ZlRWRpdG9yTGlzdGVuZXJzKCksIHRoaXMudW5iaW5kRXZlbnRzICYmIHRoaXMudW5iaW5kRXZlbnRzKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIDIyNjM6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDMyMDMpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIHIgPSBpKG4oMzA5MCkpOwogICAgICAgICAgICBjbGFzcyBTdHJldGNoZWRFbGVtZW50IGV4dGVuZHMgci5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGdldFN0cmV0Y2hlZENsYXNzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZS1zdHJldGNoZWQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTdHJldGNoU2V0dGluZ05hbWUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdHJldGNoX2VsZW1lbnQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTdHJldGNoQWN0aXZlVmFsdWUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ5ZXMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFVuaXF1ZUhhbmRsZXJJRCgpOwogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmFkZExpc3RlbmVyT25jZShlLCAicmVzaXplIiwgdGhpcy5zdHJldGNoKSwgZWxlbWVudG9yRnJvbnRlbmQuYWRkTGlzdGVuZXJPbmNlKGUsICJzdGlja3k6c3RpY2siLCB0aGlzLnN0cmV0Y2gsIHRoaXMuJGVsZW1lbnQpLCBlbGVtZW50b3JGcm9udGVuZC5hZGRMaXN0ZW5lck9uY2UoZSwgInN0aWNreTp1bnN0aWNrIiwgdGhpcy5zdHJldGNoLCB0aGlzLiRlbGVtZW50KSwgZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpICYmICh0aGlzLm9uS2l0Q2hhbmdlU3RyZXRjaENvbnRhaW5lckNoYW5nZSA9IHRoaXMub25LaXRDaGFuZ2VTdHJldGNoQ29udGFpbmVyQ2hhbmdlLmJpbmQodGhpcyksIGVsZW1lbnRvci5jaGFubmVscy5lZGl0b3Iub24oImtpdDpjaGFuZ2U6c3RyZXRjaENvbnRhaW5lciIsIHRoaXMub25LaXRDaGFuZ2VTdHJldGNoQ29udGFpbmVyQ2hhbmdlKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5yZW1vdmVMaXN0ZW5lcnModGhpcy5nZXRVbmlxdWVIYW5kbGVySUQoKSwgInJlc2l6ZSIsIHRoaXMuc3RyZXRjaCksIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiBlbGVtZW50b3IuY2hhbm5lbHMuZWRpdG9yLm9mZigia2l0OmNoYW5nZTpzdHJldGNoQ29udGFpbmVyIiwgdGhpcy5vbktpdENoYW5nZVN0cmV0Y2hDb250YWluZXJDaGFuZ2UpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc0FjdGl2ZShlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSB8fCBlLiRlbGVtZW50Lmhhc0NsYXNzKHRoaXMuZ2V0U3RyZXRjaGVkQ2xhc3MoKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFN0cmV0Y2hFbGVtZW50Rm9yQ29uZmlnKCkgewogICAgICAgICAgICAgICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiBudWxsOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID8gdGhpcy4kZWxlbWVudC5maW5kKGUpIDogdGhpcy4kZWxlbWVudAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0U3RyZXRjaEVsZW1lbnRDb25maWcoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5nZXRTdHJldGNoRWxlbWVudEZvckNvbmZpZygpLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5nZXRTdHJldGNoQ29udGFpbmVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lkZXJTY3JvbGxiYXI6IGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiBlbGVtZW50b3JGcm9udGVuZC5jb25maWcuaXNfcnRsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5pdFN0cmV0Y2goKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdHJldGNoID0gdGhpcy5zdHJldGNoLmJpbmQodGhpcyksIHRoaXMuc3RyZXRjaEVsZW1lbnQgPSBuZXcgZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC50b29scy5TdHJldGNoRWxlbWVudCh0aGlzLmdldFN0cmV0Y2hFbGVtZW50Q29uZmlnKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTdHJldGNoQ29udGFpbmVyKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3JGcm9udGVuZC5nZXRLaXRTZXR0aW5ncygic3RyZXRjaGVkX3NlY3Rpb25fY29udGFpbmVyIikgfHwgd2luZG93CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc1N0cmV0Y2hTZXR0aW5nRW5hYmxlZCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3ModGhpcy5nZXRTdHJldGNoU2V0dGluZ05hbWUoKSkgPT09IHRoaXMuZ2V0U3RyZXRjaEFjdGl2ZVZhbHVlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0cmV0Y2goKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N0cmV0Y2hTZXR0aW5nRW5hYmxlZCgpICYmIHRoaXMuc3RyZXRjaEVsZW1lbnQuc3RyZXRjaCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSh0aGlzLmdldFNldHRpbmdzKCkpICYmICh0aGlzLmluaXRTdHJldGNoKCksIHN1cGVyLm9uSW5pdCguLi5hcmd1bWVudHMpLCB0aGlzLnN0cmV0Y2goKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdHJldGNoU2V0dGluZ05hbWUoKSA9PT0gZSAmJiAodGhpcy5pc1N0cmV0Y2hTZXR0aW5nRW5hYmxlZCgpID8gdGhpcy5zdHJldGNoKCkgOiB0aGlzLnN0cmV0Y2hFbGVtZW50LnJlc2V0KCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbktpdENoYW5nZVN0cmV0Y2hDb250YWluZXJDaGFuZ2UoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdHJldGNoRWxlbWVudC5zZXRTZXR0aW5ncygic2VsZWN0b3JzLmNvbnRhaW5lciIsIHRoaXMuZ2V0U3RyZXRjaENvbnRhaW5lcigpKSwgdGhpcy5zdHJldGNoKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBTdHJldGNoZWRFbGVtZW50CiAgICAgICAgfSwKICAgICAgICA2NDEyOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigzMjAzKSwKICAgICAgICAgICAgICAgIHIgPSBpKG4oNTk1NSkpLAogICAgICAgICAgICAgICAgcyA9IGkobig4MTM1KSksCiAgICAgICAgICAgICAgICBvID0gaShuKDU2NTgpKSwKICAgICAgICAgICAgICAgIGEgPSBpKG4oMjI2MykpLAogICAgICAgICAgICAgICAgbCA9IGkobigzMDkwKSksCiAgICAgICAgICAgICAgICBjID0gaShuKDI4MjEpKSwKICAgICAgICAgICAgICAgIHUgPSBpKG4oMTI5MikpLAogICAgICAgICAgICAgICAgZCA9IGkobig3MzIzKSksCiAgICAgICAgICAgICAgICBoID0gaShuKDMyKSksCiAgICAgICAgICAgICAgICBnID0gaShuKDY3NTIpKTsKICAgICAgICAgICAgci5kZWZhdWx0LmZyb250ZW5kID0gewogICAgICAgICAgICAgICAgRG9jdW1lbnQ6IHMuZGVmYXVsdCwKICAgICAgICAgICAgICAgIHRvb2xzOiB7CiAgICAgICAgICAgICAgICAgICAgU3RyZXRjaEVsZW1lbnQ6IG8uZGVmYXVsdAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhhbmRsZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgQmFzZTogbC5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIFN0cmV0Y2hlZEVsZW1lbnQ6IGEuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBTd2lwZXJCYXNlOiBjLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgQ2Fyb3VzZWxCYXNlOiB1LmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgTmVzdGVkVGFiczogZC5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIE5lc3RlZEFjY29yZGlvbjogaC5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIE5lc3RlZFRpdGxlS2V5Ym9hcmRIYW5kbGVyOiBnLmRlZmF1bHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNTY1ODogZSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlLmV4dGVuZCh7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3M6ICgpID0+ICh7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogbnVsbCwKICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pc19ydGwgPyAicmlnaHQiIDogImxlZnQiLAogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHdpbmRvdwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY29uc2lkZXJTY3JvbGxiYXI6ICExLAogICAgICAgICAgICAgICAgICAgIGNzc091dHB1dDogImlubGluZSIKICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50OiBqUXVlcnkodGhpcy5nZXRTZXR0aW5ncygiZWxlbWVudCIpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzdHJldGNoKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgbGV0IHQ7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGpRdWVyeShlLnNlbGVjdG9ycy5jb250YWluZXIpCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICB0ICYmIHQubGVuZ3RoIHx8ICh0ID0galF1ZXJ5KHRoaXMuZ2V0RGVmYXVsdFNldHRpbmdzKCkuc2VsZWN0b3JzLmNvbnRhaW5lcikpLCB0aGlzLnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmVsZW1lbnRzLiRlbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5pbm5lcldpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLm9mZnNldCgpLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAiZml4ZWQiID09PSBuLmNzcygicG9zaXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHMgPyAwIDogciwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHdpbmRvdyA9PT0gdFswXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB0Lm9mZnNldCgpLmxlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgJiYgKG8gPSBsKSwgciA+IGwgJiYgKG8gPSByIC0gbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29uc2lkZXJTY3JvbGxiYXIgJiYgYSkgewogICAgICAgICAgICAgICAgICAgICAgICBvIC09IHdpbmRvdy5pbm5lcldpZHRoIC0gaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzIHx8IChlbGVtZW50b3JGcm9udGVuZC5jb25maWcuaXNfcnRsICYmIChvID0gaSAtIChuLm91dGVyV2lkdGgoKSArIG8pKSwgbyA9IC1vKSwgZS5tYXJnaW4gJiYgKG8gKz0gZS5tYXJnaW4pOwogICAgICAgICAgICAgICAgICAgIHZhciBjID0ge307CiAgICAgICAgICAgICAgICAgICAgbGV0IHUgPSBpOwogICAgICAgICAgICAgICAgICAgIGUubWFyZ2luICYmICh1IC09IDIgKiBlLm1hcmdpbiksIGMud2lkdGggPSB1ICsgInB4IiwgY1tlLmRpcmVjdGlvbl0gPSBvICsgInB4IiwgInZhcmlhYmxlcyIgIT09IGUuY3NzT3V0cHV0ID8gbi5jc3MoYykgOiB0aGlzLmFwcGx5Q3NzVmFyaWFibGVzKG4sIGMpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmVzZXQoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5lbGVtZW50cy4kZWxlbWVudDsKICAgICAgICAgICAgICAgICAgICAidmFyaWFibGVzIiAhPT0gdC5jc3NPdXRwdXQgPyAoZS53aWR0aCA9ICIiLCBlW3QuZGlyZWN0aW9uXSA9ICIiLCBuLmNzcyhlKSkgOiB0aGlzLnJlc2V0Q3NzVmFyaWFibGVzKG4pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYXBwbHlDc3NWYXJpYWJsZXMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGUuY3NzKCItLXN0cmV0Y2gtd2lkdGgiLCB0LndpZHRoKSwgdC5sZWZ0ID8gZS5jc3MoIi0tc3RyZXRjaC1sZWZ0IiwgdC5sZWZ0KSA6IGUuY3NzKCItLXN0cmV0Y2gtcmlnaHQiLCB0LnJpZ2h0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlc2V0Q3NzVmFyaWFibGVzKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICItLXN0cmV0Y2gtd2lkdGgiOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgIi0tc3RyZXRjaC1sZWZ0IjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICItLXN0cmV0Y2gtcmlnaHQiOiAiIgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICA2NjMwOiAoZSwgdCkgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CgogICAgICAgICAgICBmdW5jdGlvbiBnZXRDaGlsZHJlbldpZHRoKGUpIHsKICAgICAgICAgICAgICAgIGxldCB0ID0gMDsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBlWzBdLnBhcmVudE5vZGUsCiAgICAgICAgICAgICAgICAgICAgaSA9IGdldENvbXB1dGVkU3R5bGUobiksCiAgICAgICAgICAgICAgICAgICAgciA9IHBhcnNlRmxvYXQoaS5nYXApIHx8IDA7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGUubGVuZ3RoOyBuKyspIHQgKz0gZVtuXS5vZmZzZXRXaWR0aCArIHI7CiAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICB9CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5jaGFuZ2VTY3JvbGxTdGF0dXMgPSBmdW5jdGlvbiBjaGFuZ2VTY3JvbGxTdGF0dXMoZSwgdCkgewogICAgICAgICAgICAgICAgIm1vdXNlZG93biIgPT09IHQudHlwZSA/IChlLmNsYXNzTGlzdC5hZGQoImUtc2Nyb2xsIiksIGUuZGF0YXNldC5wYWdlWCA9IHQucGFnZVgpIDogKGUuY2xhc3NMaXN0LnJlbW92ZSgiZS1zY3JvbGwiLCAiZS1zY3JvbGwtYWN0aXZlIiksIGUuZGF0YXNldC5wYWdlWCA9ICIiKQogICAgICAgICAgICB9LCB0LnNldEhvcml6b250YWxTY3JvbGxBbGlnbm1lbnQgPSBmdW5jdGlvbiBzZXRIb3Jpem9udGFsU2Nyb2xsQWxpZ25tZW50KGUpIHsKICAgICAgICAgICAgICAgIGxldCB7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogdCwKICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IG4sCiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNTU1ZhcmlhYmxlOiBpLAogICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxTY3JvbGxTdGF0dXM6IHIKICAgICAgICAgICAgICAgIH0gPSBlOwogICAgICAgICAgICAgICAgaWYgKCF0KSByZXR1cm47CiAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uIGlzSG9yaXpvbnRhbFNjcm9sbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2xpZW50V2lkdGggPCBnZXRDaGlsZHJlbldpZHRoKGUuY2hpbGRyZW4pICYmICJlbmFibGUiID09PSB0CiAgICAgICAgICAgICAgICB9KHQsIHIpID8gdC5zdHlsZS5zZXRQcm9wZXJ0eShpLCAiIik6IGZ1bmN0aW9uIGluaXRpYWxTY3JvbGxQb3NpdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IGVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5pc19ydGw7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJlbmQiID09PSB0KSBlLnN0eWxlLnNldFByb3BlcnR5KG4sICJzdGFydCIpLCBlLnNjcm9sbExlZnQgPSBpID8gLTEgKiBnZXRDaGlsZHJlbldpZHRoKGUuY2hpbGRyZW4pIDogZ2V0Q2hpbGRyZW5XaWR0aChlLmNoaWxkcmVuKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGUuc3R5bGUuc2V0UHJvcGVydHkobiwgInN0YXJ0IiksIGUuc2Nyb2xsTGVmdCA9IDAKICAgICAgICAgICAgICAgIH0odCwgbiwgaSkKICAgICAgICAgICAgfSwgdC5zZXRIb3Jpem9udGFsVGl0bGVTY3JvbGxWYWx1ZXMgPSBmdW5jdGlvbiBzZXRIb3Jpem9udGFsVGl0bGVTY3JvbGxWYWx1ZXMoZSwgdCwgbikgewogICAgICAgICAgICAgICAgY29uc3QgaSA9IGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJlLXNjcm9sbCIpLAogICAgICAgICAgICAgICAgICAgIHIgPSAiZW5hYmxlIiA9PT0gdCwKICAgICAgICAgICAgICAgICAgICBzID0gZS5zY3JvbGxXaWR0aCA+IGUuY2xpZW50V2lkdGg7CiAgICAgICAgICAgICAgICBpZiAoIWkgfHwgIXIgfHwgIXMpIHJldHVybjsKICAgICAgICAgICAgICAgIG4ucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIGNvbnN0IG8gPSBwYXJzZUZsb2F0KGUuZGF0YXNldC5wYWdlWCksCiAgICAgICAgICAgICAgICAgICAgYSA9IG4ucGFnZVggLSBvOwogICAgICAgICAgICAgICAgbGV0IGwgPSAwOwogICAgICAgICAgICAgICAgbCA9IDIwIDwgYSA/IDUgOiAtMjAgPiBhID8gLTUgOiBhOwogICAgICAgICAgICAgICAgZS5zY3JvbGxMZWZ0ID0gZS5zY3JvbGxMZWZ0IC0gbCwgZS5jbGFzc0xpc3QuYWRkKCJlLXNjcm9sbC1hY3RpdmUiKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAyNjE4OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigzMjAzKTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDAsIG4oNzQwKTsKICAgICAgICAgICAgdmFyIHIgPSBpKG4oNzU5NykpLAogICAgICAgICAgICAgICAgcyA9IGkobigzODEpKTsKICAgICAgICAgICAgY2xhc3MgQXJnc09iamVjdCBleHRlbmRzIHIuZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0SW5zdGFuY2VUeXBlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiQXJnc09iamVjdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGUpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCB0aGlzLmFyZ3MgPSBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXF1aXJlQXJndW1lbnQoZSkgewogICAgICAgICAgICAgICAgICAgIGxldCB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiB0aGlzLmFyZ3M7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwgZSkpIHRocm93IEVycm9yKGAke2V9IGlzIHJlcXVpcmVkLmApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXF1aXJlQXJndW1lbnRUeXBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogdGhpcy5hcmdzOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlcXVpcmVBcmd1bWVudChlLCBuKSwgdHlwZW9mIG5bZV0gIT09IHQpIHRocm93IEVycm9yKGAke2V9IGludmFsaWQgdHlwZTogJHt0fS5gKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmVxdWlyZUFyZ3VtZW50SW5zdGFuY2UoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGxldCBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiB0aGlzLmFyZ3M7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVxdWlyZUFyZ3VtZW50KGUsIG4pLCAhKG5bZV0gaW5zdGFuY2VvZiB0IHx8ICgwLCBzLmRlZmF1bHQpKG5bZV0sIHQpKSkgdGhyb3cgRXJyb3IoYCR7ZX0gaW52YWxpZCBpbnN0YW5jZS5gKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmVxdWlyZUFyZ3VtZW50Q29uc3RydWN0b3IoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGxldCBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiB0aGlzLmFyZ3M7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVxdWlyZUFyZ3VtZW50KGUsIG4pLCBuW2VdLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkgIT09IHQucHJvdG90eXBlLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkpIHRocm93IEVycm9yKGAke2V9IGludmFsaWQgY29uc3RydWN0b3IgdHlwZS5gKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IEFyZ3NPYmplY3QKICAgICAgICB9LAogICAgICAgIDg2OTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHQuRm9yY2VNZXRob2RJbXBsZW1lbnRhdGlvbiA9IHZvaWQgMCwgbig3NDApOwogICAgICAgICAgICBjbGFzcyBGb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uIGV4dGVuZHMgRXJyb3IgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiB7fTsKICAgICAgICAgICAgICAgICAgICBzdXBlcihgJHtlLmlzU3RhdGljPyJzdGF0aWMgIjoiIn0ke2UuZnVsbE5hbWV9KCkgc2hvdWxkIGJlIGltcGxlbWVudGVkLCBwbGVhc2UgcHJvdmlkZSAnJHtlLmZ1bmN0aW9uTmFtZXx8ZS5mdWxsTmFtZX0nIGZ1bmN0aW9uYWxpdHkuYCwgdCksIE9iamVjdC5rZXlzKHQpLmxlbmd0aCAmJiBjb25zb2xlLmVycm9yKHQpLCBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBGb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuRm9yY2VNZXRob2RJbXBsZW1lbnRhdGlvbiA9IEZvcmNlTWV0aG9kSW1wbGVtZW50YXRpb247CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IGUgPT4gewogICAgICAgICAgICAgICAgY29uc3QgdCA9IEVycm9yKCkuc3RhY2suc3BsaXQoIlxuIilbMl0udHJpbSgpLAogICAgICAgICAgICAgICAgICAgIG4gPSB0LnN0YXJ0c1dpdGgoImF0IG5ldyIpID8gImNvbnN0cnVjdG9yIiA6IHQuc3BsaXQoIiAiKVsxXSwKICAgICAgICAgICAgICAgICAgICBpID0ge307CiAgICAgICAgICAgICAgICBpZiAoaS5mdW5jdGlvbk5hbWUgPSBuLCBpLmZ1bGxOYW1lID0gbiwgaS5mdW5jdGlvbk5hbWUuaW5jbHVkZXMoIi4iKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBpLmZ1bmN0aW9uTmFtZS5zcGxpdCgiLiIpOwogICAgICAgICAgICAgICAgICAgIGkuY2xhc3NOYW1lID0gZVswXSwgaS5mdW5jdGlvbk5hbWUgPSBlWzFdCiAgICAgICAgICAgICAgICB9IGVsc2UgaS5pc1N0YXRpYyA9ICEwOwogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcmNlTWV0aG9kSW1wbGVtZW50YXRpb24oaSwgZSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNzU5NzogKGUsIHQpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgSW5zdGFuY2VUeXBlIHsKICAgICAgICAgICAgICAgIHN0YXRpY1tTeW1ib2wuaGFzSW5zdGFuY2VdKGUpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgdCA9IHN1cGVyW1N5bWJvbC5oYXNJbnN0YW5jZV0oZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgIWUuY29uc3RydWN0b3IuZ2V0SW5zdGFuY2VUeXBlKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiAoZS5pbnN0YW5jZVR5cGVzIHx8IChlLmluc3RhbmNlVHlwZXMgPSBbXSksIHQgfHwgdGhpcy5nZXRJbnN0YW5jZVR5cGUoKSA9PT0gZS5jb25zdHJ1Y3Rvci5nZXRJbnN0YW5jZVR5cGUoKSAmJiAodCA9ICEwKSwgdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0SW5zdGFuY2VUeXBlID09PSBJbnN0YW5jZVR5cGUuZ2V0SW5zdGFuY2VUeXBlID8gIkJhc2VJbnN0YW5jZVR5cGUiIDogdGhpcy5nZXRJbnN0YW5jZVR5cGUoKTsgLSAxID09PSBlLmluc3RhbmNlVHlwZXMuaW5kZXhPZih0KSAmJiBlLmluc3RhbmNlVHlwZXMucHVzaCh0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgJiYgZSAmJiAodCA9IGUuaW5zdGFuY2VUeXBlcyAmJiBBcnJheS5pc0FycmF5KGUuaW5zdGFuY2VUeXBlcykgJiYgLTEgIT09IGUuaW5zdGFuY2VUeXBlcy5pbmRleE9mKHRoaXMuZ2V0SW5zdGFuY2VUeXBlKCkpKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGdldEluc3RhbmNlVHlwZSgpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JNb2R1bGVzLkZvcmNlTWV0aG9kSW1wbGVtZW50YXRpb24oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSBuZXcudGFyZ2V0OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBbXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZS5fX3Byb3RvX18gJiYgZS5fX3Byb3RvX18ubmFtZTspIHQucHVzaChlLl9fcHJvdG9fXyksIGUgPSBlLl9fcHJvdG9fXzsKICAgICAgICAgICAgICAgICAgICB0LnJldmVyc2UoKS5mb3JFYWNoKChlID0+IHRoaXMgaW5zdGFuY2VvZiBlKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBJbnN0YW5jZVR5cGUKICAgICAgICB9LAogICAgICAgIDExOTI6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgbig3NDApOwogICAgICAgICAgICBjb25zdCBNb2R1bGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBqUXVlcnksCiAgICAgICAgICAgICAgICAgICAgdCA9IGFyZ3VtZW50cywKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBpID0ge307CiAgICAgICAgICAgICAgICBsZXQgcjsKICAgICAgICAgICAgICAgIHRoaXMuZ2V0SXRlbXMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdC5zcGxpdCgiLiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLnNwbGljZSgwLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbi5sZW5ndGgpIHJldHVybiBlW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlW2ldKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtcyhlW2ldLCBuLmpvaW4oIi4iKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZ2V0U2V0dGluZ3MgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1zKHIsIGUpCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5zZXRTZXR0aW5ncyA9IGZ1bmN0aW9uKHQsIGksIHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgfHwgKHMgPSByKSwgIm9iamVjdCIgPT0gdHlwZW9mIHQpIHJldHVybiBlLmV4dGVuZChzLCB0KSwgbjsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IHQuc3BsaXQoIi4iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvLnNwbGljZSgwLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8ubGVuZ3RoID8gKHNbYV0gfHwgKHNbYV0gPSB7fSksIG4uc2V0U2V0dGluZ3Moby5qb2luKCIuIiksIGksIHNbYV0pKSA6IChzW2FdID0gaSwgbikKICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmdldEVycm9yTWVzc2FnZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG47CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZm9yY2VNZXRob2RJbXBsZW1lbnRhdGlvbiIgPT09IGUpIG4gPSBgVGhlIG1ldGhvZCAnJHt0fScgbXVzdCB0byBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgaW5oZXJpdG9yIGNoaWxkLmA7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbiA9ICJBbiBlcnJvciBvY2N1cnMiOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZm9yY2VNZXRob2RJbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKCJmb3JjZU1ldGhvZEltcGxlbWVudGF0aW9uIiwgZSkpCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5vbiA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiB0KSByZXR1cm4gZS5lYWNoKHQsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLm9uKGUsIHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpW2VdIHx8IChpW2VdID0gW10pLCBpW2VdLnB1c2gocikKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5vZmYgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaVtlXSkgcmV0dXJuIG47CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuIGRlbGV0ZSBpW2VdLCBuOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gaVtlXS5pbmRleE9mKHQpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEgIT09IHIgJiYgKGRlbGV0ZSBpW2VdW3JdLCBpW2VdID0gaVtlXS5maWx0ZXIoKGUgPT4gZSkpKSwgbgogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMudHJpZ2dlciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9ICJvbiIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5bcl0gJiYgbltyXS5hcHBseShuLCBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IGlbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvID8gKGUuZWFjaChvLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hcHBseShuLCBzKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4pIDogbgogICAgICAgICAgICAgICAgICAgIH0sIG4uX19jb25zdHJ1Y3QuYXBwbHkobiwgdCksIGUuZWFjaChuLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gbltlXTsKICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdCAmJiAobltlXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYXBwbHkobiwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4uZ2V0RGVmYXVsdFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSB0WzBdOwogICAgICAgICAgICAgICAgICAgICAgICBpICYmIGUuZXh0ZW5kKCEwLCByLCBpKQogICAgICAgICAgICAgICAgICAgIH0oKSwgbi50cmlnZ2VyKCJpbml0IikKICAgICAgICAgICAgfTsKICAgICAgICAgICAgTW9kdWxlLnByb3RvdHlwZS5fX2NvbnN0cnVjdCA9IGZ1bmN0aW9uKCkge30sIE1vZHVsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdFNldHRpbmdzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4ge30KICAgICAgICAgICAgfSwgTW9kdWxlLnByb3RvdHlwZS5nZXRDb25zdHJ1Y3RvcklEID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lCiAgICAgICAgICAgIH0sIE1vZHVsZS5leHRlbmQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0galF1ZXJ5LAogICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIGNoaWxkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIHQuZXh0ZW5kKGNoaWxkLCBuKSwgKGNoaWxkLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodC5leHRlbmQoe30sIG4ucHJvdG90eXBlLCBlKSkpLmNvbnN0cnVjdG9yID0gY2hpbGQsIGNoaWxkLl9fc3VwZXJfXyA9IG4ucHJvdG90eXBlLCBjaGlsZAogICAgICAgICAgICB9LCBlLmV4cG9ydHMgPSBNb2R1bGUKICAgICAgICB9LAogICAgICAgIDY1MTY6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDMyMDMpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIHIgPSBpKG4oMjY0MCkpLmRlZmF1bHQuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5nczogKCkgPT4gKHsKICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgY29sdW1uc0NvdW50OiAzLAogICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsU3BhY2VCZXR3ZWVuOiAzMAogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcjogalF1ZXJ5KHRoaXMuZ2V0U2V0dGluZ3MoImNvbnRhaW5lciIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1zOiBqUXVlcnkodGhpcy5nZXRTZXR0aW5ncygiaXRlbXMiKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcnVuKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmVsZW1lbnRzLiRjb250YWluZXIucG9zaXRpb24oKS50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmdldFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLmNvbHVtbnNDb3VudDsKICAgICAgICAgICAgICAgICAgICB0ICs9IHBhcnNlSW50KHRoaXMuZWxlbWVudHMuJGNvbnRhaW5lci5jc3MoIm1hcmdpbi10b3AiKSwgMTApLCB0aGlzLmVsZW1lbnRzLiRpdGVtcy5lYWNoKChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gTWF0aC5mbG9vcihyIC8gaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0galF1ZXJ5KHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG9bMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0ICsgbi52ZXJ0aWNhbFNwYWNlQmV0d2VlbjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gby5wb3NpdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSByICUgaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbC50b3AgLSB0IC0gZVtjXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgLT0gcGFyc2VJbnQoby5jc3MoIm1hcmdpbi10b3AiKSwgMTApLCB1ICo9IC0xLCBvLmNzcygibWFyZ2luLXRvcCIsIHUgKyAicHgiKSwgZVtjXSArPSBhCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBlLnB1c2goYSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IHIKICAgICAgICB9LAogICAgICAgIDQwMDogKGUsIHQpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gY2xhc3MgU2Nyb2xsIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBzY3JvbGxPYnNlcnZlcihlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHQgPSAwOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Q6IGUucm9vdCB8fCBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICByb290TWFyZ2luOiBlLm9mZnNldCB8fCAiMHB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZXNob2xkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPiAwICYmIGUgPD0gMTAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IDEwMCAvIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZSA9IDA7IGUgPD0gMTAwOyBlICs9IG4pIHQucHVzaChlIC8gMTAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHQucHVzaCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oZS5zZW5zaXRpdml0eSkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uIGhhbmRsZUludGVyc2VjdChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBuWzBdLmJvdW5kaW5nQ2xpZW50UmVjdC55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5bMF0uaXNJbnRlcnNlY3RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaSA8IHQgPyAiZG93biIgOiAidXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IE1hdGguYWJzKHBhcnNlRmxvYXQoKDEwMCAqIG5bMF0uaW50ZXJzZWN0aW9uUmF0aW8pLnRvRml4ZWQoMikpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5jYWxsYmFjayh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zaXRpdml0eTogZS5zZW5zaXRpdml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzSW5WaWV3cG9ydDogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFBlcmNlbnRhZ2U6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25TY3JvbGxEaXJlY3Rpb246IHMKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgPSBpCiAgICAgICAgICAgICAgICAgICAgfSksIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0RWxlbWVudFZpZXdwb3J0UGVyY2VudGFnZShlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IHt9OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBlWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5zdGFydCB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5lbmQgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHdpbmRvdy5pbm5lckhlaWdodCAqIGkgLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB3aW5kb3cuaW5uZXJIZWlnaHQgKiByIC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbi50b3AgLSB3aW5kb3cuaW5uZXJIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwIC0gYSArIHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuLnRvcCArIHMgKyBlLmhlaWdodCgpIC0gYSArIG8sCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihsIC8gYywgMSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KCgxMDAgKiB1KS50b0ZpeGVkKDIpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGdldFBhZ2VTY3JvbGxQZXJjZW50YWdlKCkgewogICAgICAgICAgICAgICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBlLnN0YXJ0IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmVuZCB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHIgKiBuIC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gciArIHMgKyByICogaSAvIDEwMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgKyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCArIHMpIC8gbyAqIDEwMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAyNjQwOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigzMjAzKTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciByID0gaShuKDExOTIpKS5kZWZhdWx0LmV4dGVuZCh7CiAgICAgICAgICAgICAgICBlbGVtZW50czogbnVsbCwKICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50czogKCkgPT4gKHt9KSwKICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7fSwKICAgICAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRFbGVtZW50cygpLCB0aGlzLmJpbmRFdmVudHMoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluaXRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzID0gdGhpcy5nZXREZWZhdWx0RWxlbWVudHMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gcgogICAgICAgIH0sCiAgICAgICAgNTk1NTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oMzIwMyk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgciA9IGkobigxMTkyKSksCiAgICAgICAgICAgICAgICBzID0gaShuKDI2NDApKSwKICAgICAgICAgICAgICAgIG8gPSBpKG4oMjYxOCkpLAogICAgICAgICAgICAgICAgYSA9IGkobig2NTE2KSksCiAgICAgICAgICAgICAgICBsID0gaShuKDQwMCkpLAogICAgICAgICAgICAgICAgYyA9IGkobig4NjkpKSwKICAgICAgICAgICAgICAgIHUgPSB3aW5kb3cuZWxlbWVudG9yTW9kdWxlcyA9IHsKICAgICAgICAgICAgICAgICAgICBNb2R1bGU6IHIuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBWaWV3TW9kdWxlOiBzLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgQXJnc09iamVjdDogby5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgIEZvcmNlTWV0aG9kSW1wbGVtZW50YXRpb246IGMuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICB1dGlsczogewogICAgICAgICAgICAgICAgICAgICAgICBNYXNvbnJ5OiBhLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNjcm9sbDogbC5kZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gdQogICAgICAgIH0sCiAgICAgICAgNzE0ODogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oMzIwMyk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgciA9IGkobig2NzUyKSk7CiAgICAgICAgICAgIGNsYXNzIE5lc3RlZEFjY29yZGlvblRpdGxlS2V5Ym9hcmRIYW5kbGVyIGV4dGVuZHMgci5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIF9fY29uc3RydWN0KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLl9fY29uc3RydWN0KC4uLmFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCA/IHZvaWQgMCA6IGFyZ3VtZW50c1swXTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVRpdGxlID0gZS50b2dnbGVUaXRsZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnN1cGVyLmdldERlZmF1bHRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UaXRsZTogIi5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUNvbnRhaW5lcjogIi5lLW4tYWNjb3JkaW9uLWl0ZW0gPiAuZS1jb24iCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFBdHRyaWJ1dGVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVN0YXRlQXR0cmlidXRlOiAiYXJpYS1leHBhbmRlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVUaXRsZVNlbGVjdG9yOiAnW2FyaWEtZXhwYW5kZWQ9InRydWUiXScKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlSW5kZXg6ICJkYXRhLWFjY29yZGlvbi1pbmRleCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRlVGl0bGVMaW5rRW50ZXJPclNwYWNlRXZlbnQoZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlVGl0bGUoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRsZUNvbnRlbnRFbGVtZW50RXNjYXBlRXZlbnRzKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFjdGl2ZVRpdGxlRWxlbWVudCgpLnRyaWdnZXIoImZvY3VzIiksIHRoaXMudG9nZ2xlVGl0bGUoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRsZVRpdGxlRXNjYXBlS2V5RXZlbnRzKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZSA/IC5jdXJyZW50VGFyZ2V0ID8gLnBhcmVudEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0ID8gLm9wZW47CiAgICAgICAgICAgICAgICAgICAgbiAmJiB0aGlzLnRvZ2dsZVRpdGxlKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gTmVzdGVkQWNjb3JkaW9uVGl0bGVLZXlib2FyZEhhbmRsZXIKICAgICAgICB9LAogICAgICAgIDMyOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigzMjAzKTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciByID0gaShuKDMwOTApKSwKICAgICAgICAgICAgICAgIHMgPSBpKG4oNzE0OCkpOwogICAgICAgICAgICBjbGFzcyBOZXN0ZWRBY2NvcmRpb24gZXh0ZW5kcyByLmRlZmF1bHQgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKSwgdGhpcy5hbmltYXRpb25zID0gbmV3IE1hcAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW9uOiAiLmUtbi1hY2NvcmRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW9uQ29udGVudENvbnRhaW5lcnM6ICIuZS1uLWFjY29yZGlvbiA+IC5lLWNvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvcmRpb25JdGVtczogIi5lLW4tYWNjb3JkaW9uLWl0ZW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW9uSXRlbVRpdGxlczogIi5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW9uQ29udGVudDogIi5lLW4tYWNjb3JkaW9uLWl0ZW0gPiAuZS1jb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW9uV3JhcHBlcjogIi5lLW4tYWNjb3JkaW9uLWl0ZW0iCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfc3RhdGU6ICJleHBhbmRlZCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhY2NvcmRpb246IHRoaXMuZmluZEVsZW1lbnQoZS5hY2NvcmRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudENvbnRhaW5lcnM6IHRoaXMuZmluZEVsZW1lbnQoZS5hY2NvcmRpb25Db250ZW50Q29udGFpbmVycyksCiAgICAgICAgICAgICAgICAgICAgICAgICRhY2NvcmRpb25JdGVtczogdGhpcy5maW5kRWxlbWVudChlLmFjY29yZGlvbkl0ZW1zKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGFjY29yZGlvblRpdGxlczogdGhpcy5maW5kRWxlbWVudChlLmFjY29yZGlvbkl0ZW1UaXRsZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAkYWNjb3JkaW9uQ29udGVudDogdGhpcy5maW5kRWxlbWVudChlLmFjY29yZGlvbkNvbnRlbnQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uSW5pdCguLi5hcmd1bWVudHMpLCBlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgJiYgdGhpcy5pbnRlcmxhY2VDb250YWluZXJzKCksIHRoaXMuaW5qZWN0S2V5Ym9hcmRIYW5kbGVyKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluamVjdEtleWJvYXJkSGFuZGxlcigpIHsKICAgICAgICAgICAgICAgICAgICAibmVzdGVkLWFjY29yZGlvbi5kZWZhdWx0IiA9PT0gdGhpcy5nZXRTZXR0aW5ncygiZWxlbWVudE5hbWUiKSAmJiBuZXcgcy5kZWZhdWx0KHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQ6IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZVRpdGxlOiB0aGlzLmNsaWNrTGlzdGVuZXIuYmluZCh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpbnRlcmxhY2VDb250YWluZXJzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRDb250YWluZXJzOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAkYWNjb3JkaW9uSXRlbXM6IHQKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5nZXREZWZhdWx0RWxlbWVudHMoKTsKICAgICAgICAgICAgICAgICAgICBlLmVhY2goKChlLCBuKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbZV0uYXBwZW5kQ2hpbGQobikKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kYWNjb3JkaW9uVGl0bGVzLm9uKCJjbGljayIsIHRoaXMuY2xpY2tMaXN0ZW5lci5iaW5kKHRoaXMpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdW5iaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGFjY29yZGlvblRpdGxlcy5vZmYoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2xpY2tMaXN0ZW5lcihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlID8gLmN1cnJlbnRUYXJnZXQgPyAuY2xvc2VzdCh0LnNlbGVjdG9ycy5hY2NvcmRpb25XcmFwcGVyKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4ucXVlcnlTZWxlY3Rvcih0LnNlbGVjdG9ycy5hY2NvcmRpb25JdGVtVGl0bGVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4ucXVlcnlTZWxlY3Rvcih0LnNlbGVjdG9ycy5hY2NvcmRpb25Db250ZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2l0ZW1zX2V4cGVuZGVkOiBzCiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWNjb3JkaW9uVGl0bGVzOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFjY29yZGlvbkl0ZW1zOiBhCiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmVsZW1lbnRzOwogICAgICAgICAgICAgICAgICAgICJvbmUiID09PSBzICYmIHRoaXMuY2xvc2VBbGxJdGVtcyhhLCBvKSwgbi5vcGVuID8gdGhpcy5jbG9zZUFjY29yZGlvbkl0ZW0obiwgaSkgOiB0aGlzLnByZXBhcmVPcGVuQW5pbWF0aW9uKG4sIGksIHIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhbmltYXRlSXRlbShlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgZS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwogICAgICAgICAgICAgICAgICAgIGxldCByID0gdGhpcy5hbmltYXRpb25zLmdldChlKTsKICAgICAgICAgICAgICAgICAgICByICYmIHIuY2FuY2VsKCksIHIgPSBlLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFt0LCBuXQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IHRoaXMuZ2V0QW5pbWF0aW9uRHVyYXRpb24oKQogICAgICAgICAgICAgICAgICAgIH0pLCByLm9uZmluaXNoID0gKCkgPT4gdGhpcy5vbkFuaW1hdGlvbkZpbmlzaChlLCBpKSwgdGhpcy5hbmltYXRpb25zLnNldChlLCByKSwgZS5xdWVyeVNlbGVjdG9yKCJzdW1tYXJ5IikgPyAuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIiwgaSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNsb3NlQWNjb3JkaW9uSXRlbShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGAke2Uub2Zmc2V0SGVpZ2h0fXB4YCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGAke3Qub2Zmc2V0SGVpZ2h0fXB4YDsKICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGVJdGVtKGUsIG4sIGksICExKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHJlcGFyZU9wZW5BbmltYXRpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIGUuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIiwgZS5zdHlsZS5oZWlnaHQgPSBgJHtlLm9mZnNldEhlaWdodH1weGAsIGUub3BlbiA9ICEwLCB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKSA9PiB0aGlzLm9wZW5BY2NvcmRpb25JdGVtKGUsIHQsIG4pKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9wZW5BY2NvcmRpb25JdGVtKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gYCR7ZS5vZmZzZXRIZWlnaHR9cHhgLAogICAgICAgICAgICAgICAgICAgICAgICByID0gYCR7dC5vZmZzZXRIZWlnaHQrbi5vZmZzZXRIZWlnaHR9cHhgOwogICAgICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZUl0ZW0oZSwgaSwgciwgITApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5vcGVuID0gdCwgdGhpcy5hbmltYXRpb25zLnNldChlLCBudWxsKSwgZS5zdHlsZS5oZWlnaHQgPSBlLnN0eWxlLm92ZXJmbG93ID0gIiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNsb3NlQWxsSXRlbXMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHQuZWFjaCgoKHQsIG4pID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUFjY29yZGlvbkl0ZW0oZVt0XSwgbikKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEFuaW1hdGlvbkR1cmF0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgdW5pdDogdAogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygibl9hY2NvcmRpb25fYW5pbWF0aW9uX2R1cmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKiAoIm1zIiA9PT0gdCA/IDEgOiAxZTMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gTmVzdGVkQWNjb3JkaW9uCiAgICAgICAgfSwKICAgICAgICA3MzIzOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigzMjAzKTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciByID0gaShuKDMwOTApKSwKICAgICAgICAgICAgICAgIHMgPSBuKDY2MzApOwogICAgICAgICAgICBjbGFzcyBOZXN0ZWRUYWJzIGV4dGVuZHMgci5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyksIHRoaXMucmVzaXplTGlzdGVuZXJOZXN0ZWRUYWJzID0gbnVsbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0VGFiVGl0bGVGaWx0ZXJTZWxlY3RvcihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBbZGF0YS10YWItaW5kZXg9IiR7ZX0iXWAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFRhYkNvbnRlbnRGaWx0ZXJTZWxlY3RvcihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAqOm50aC1jaGlsZCgke2V9KWAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFRhYkluZGV4KGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImRhdGEtdGFiLWluZGV4IikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldENvbnRhaW5lcjogIi5lLW4tdGFicyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJUaXRsZTogIi5lLW4tdGFiLXRpdGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkNvbnRlbnQ6ICIuZS1uLXRhYnMtY29udGVudCA+IC5lLWNvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nQ29udGFpbmVyOiAiLmUtbi10YWJzLWhlYWRpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiQ29udGVudENvbnRhaW5lcnM6ICIuZS1jb24uZS1hY3RpdmUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogImUtYWN0aXZlIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBhcmlhQXR0cmlidXRlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVTdGF0ZUF0dHJpYnV0ZTogImFyaWEtc2VsZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVGl0bGVTZWxlY3RvcjogJ1thcmlhLXNlbGVjdGVkPSJ0cnVlIl0nCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUYWJGbjogInNob3ciLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlVGFiRm46ICJoaWRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlU2VsZjogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVQcmV2aW91czogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9FeHBhbmQ6ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkdGFiVGl0bGVzOiB0aGlzLmZpbmRFbGVtZW50KGUudGFiVGl0bGUpLAogICAgICAgICAgICAgICAgICAgICAgICAkdGFiQ29udGVudHM6IHRoaXMuZmluZEVsZW1lbnQoZS50YWJDb250ZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWRpbmdDb250YWluZXI6IHRoaXMuZmluZEVsZW1lbnQoZS5oZWFkaW5nQ29udGFpbmVyKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEtleWJvYXJkTmF2aWdhdGlvblNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNldHRpbmdzKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFjdGl2YXRlRGVmYXVsdFRhYigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXRFZGl0U2V0dGluZ3MoImFjdGl2ZUl0ZW1JbmRleCIpIHx8IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VGFiRm46IGUuc2hvd1RhYkZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZVRhYkZuOiBlLmhpZGVUYWJGbgogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U2V0dGluZ3MoewogICAgICAgICAgICAgICAgICAgICAgICBzaG93VGFiRm46ICJzaG93IiwKICAgICAgICAgICAgICAgICAgICAgICAgaGlkZVRhYkZuOiAiaGlkZSIKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5jaGFuZ2VBY3RpdmVUYWIodCksIHRoaXMuc2V0U2V0dGluZ3MobikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRlYWN0aXZhdGVBY3RpdmVUYWIoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LmNsYXNzZXMuYWN0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5hcmlhQXR0cmlidXRlcy5hY3RpdmVUaXRsZVNlbGVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICByID0gIi4iICsgbiwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuZWxlbWVudHMuJHRhYlRpdGxlcy5maWx0ZXIoaSksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmVsZW1lbnRzLiR0YWJDb250ZW50cy5maWx0ZXIocik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VGFiRGVhY3RpdmF0aW9uQXR0cmlidXRlcyhzLCBlKSwgby5yZW1vdmVDbGFzcyhuKSwgb1t0LmhpZGVUYWJGbl0oMCwgKCgpID0+IHRoaXMub25IaWRlVGFiQ29udGVudChvKSkpLCBvCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRUaXRsZUFjdGl2YXRpb25BdHRyaWJ1dGVzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4OiAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLmdldFNldHRpbmdzKCJhcmlhQXR0cmlidXRlcyIpLnRpdGxlU3RhdGVBdHRyaWJ1dGVdOiAidHJ1ZSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRUYWJEZWFjdGl2YXRpb25BdHRyaWJ1dGVzKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRTZXR0aW5ncygiYXJpYUF0dHJpYnV0ZXMiKS50aXRsZVN0YXRlQXR0cmlidXRlOwogICAgICAgICAgICAgICAgICAgIGUuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4OiAiLTEiLAogICAgICAgICAgICAgICAgICAgICAgICBbdF06ICJmYWxzZSIKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25IaWRlVGFiQ29udGVudCgpIHt9CiAgICAgICAgICAgICAgICBhY3RpdmF0ZVRhYihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuY2xhc3Nlcy5hY3RpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAic2hvdyIgPT09IHQuc2hvd1RhYkZuID8gMCA6IDQwMDsKICAgICAgICAgICAgICAgICAgICBsZXQgciA9IHRoaXMuZWxlbWVudHMuJHRhYlRpdGxlcy5maWx0ZXIodGhpcy5nZXRUYWJUaXRsZUZpbHRlclNlbGVjdG9yKGUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuZWxlbWVudHMuJHRhYkNvbnRlbnRzLmZpbHRlcih0aGlzLmdldFRhYkNvbnRlbnRGaWx0ZXJTZWxlY3RvcihlKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFyLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gTWF0aC5tYXgoZSAtIDEsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5lbGVtZW50cy4kdGFiVGl0bGVzLmZpbHRlcih0aGlzLmdldFRhYlRpdGxlRmlsdGVyU2VsZWN0b3IodCkpLCBzID0gdGhpcy5lbGVtZW50cy4kdGFiQ29udGVudHMuZmlsdGVyKHRoaXMuZ2V0VGFiQ29udGVudEZpbHRlclNlbGVjdG9yKHQpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByLmF0dHIodGhpcy5nZXRUaXRsZUFjdGl2YXRpb25BdHRyaWJ1dGVzKCkpLCBzLmFkZENsYXNzKG4pLCBzW3Quc2hvd1RhYkZuXShpLCAoKCkgPT4gdGhpcy5vblNob3dUYWJDb250ZW50KHMpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uU2hvd1RhYkNvbnRlbnQoZSkgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cudHJpZ2dlcigiZWxlbWVudG9yLXByby9tb3Rpb24tZngvcmVjYWxjIiksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cudHJpZ2dlcigiZWxlbWVudG9yL25lc3RlZC10YWJzL2FjdGl2YXRlIiwgZSksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cudHJpZ2dlcigiZWxlbWVudG9yL2JnLXZpZGVvL3JlY2FsYyIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc0FjdGl2ZVRhYihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ0cnVlIiA9PT0gdGhpcy5lbGVtZW50cy4kdGFiVGl0bGVzLmZpbHRlcignW2RhdGEtdGFiLWluZGV4PSInICsgZSArICciXScpLmF0dHIodGhpcy5nZXRTZXR0aW5ncygiYXJpYUF0dHJpYnV0ZXMiKS50aXRsZVN0YXRlQXR0cmlidXRlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25UYWJDbGljayhlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpLCB0aGlzLmNoYW5nZUFjdGl2ZVRhYihlLmN1cnJlbnRUYXJnZXQgPyAuZ2V0QXR0cmlidXRlKCJkYXRhLXRhYi1pbmRleCIpLCAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFRhYkV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBjbGljazogdGhpcy5vblRhYkNsaWNrLmJpbmQodGhpcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRIZWFkaW5nRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmVsZW1lbnRzLiRoZWFkaW5nQ29udGFpbmVyWzBdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlZG93bjogcy5jaGFuZ2VTY3JvbGxTdGF0dXMuYmluZCh0aGlzLCBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgbW91c2V1cDogcy5jaGFuZ2VTY3JvbGxTdGF0dXMuYmluZCh0aGlzLCBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VsZWF2ZTogcy5jaGFuZ2VTY3JvbGxTdGF0dXMuYmluZCh0aGlzLCBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgbW91c2Vtb3ZlOiBzLnNldEhvcml6b250YWxUaXRsZVNjcm9sbFZhbHVlcy5iaW5kKHRoaXMsIGUsIHRoaXMuZ2V0SG9yaXpvbnRhbFNjcm9sbFNldHRpbmcoKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJHRhYlRpdGxlcy5vbih0aGlzLmdldFRhYkV2ZW50cygpKSwgdGhpcy5lbGVtZW50cy4kaGVhZGluZ0NvbnRhaW5lci5vbih0aGlzLmdldEhlYWRpbmdFdmVudHMoKSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5lbGVtZW50cy4kaGVhZGluZ0NvbnRhaW5lclswXSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLmdldFRhYnNEaXJlY3Rpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNTU1ZhcmlhYmxlOiAiLS1uLXRhYnMtaGVhZGluZy1qdXN0aWZ5LWNvbnRlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsU2Nyb2xsU3RhdHVzOiB0aGlzLmdldEhvcml6b250YWxTY3JvbGxTZXR0aW5nKCkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXJOZXN0ZWRUYWJzID0gcy5zZXRIb3Jpem9udGFsU2Nyb2xsQWxpZ25tZW50LmJpbmQodGhpcywgZSksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub24oInJlc2l6ZSIsIHRoaXMucmVzaXplTGlzdGVuZXJOZXN0ZWRUYWJzKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJHdpbmRvdy5vbigicmVzaXplIiwgdGhpcy5zZXRUb3VjaE1vZGUuYmluZCh0aGlzKSksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub24oImVsZW1lbnRvci9uZXN0ZWQtdGFicy9hY3RpdmF0ZSIsIHRoaXMucmVJbml0U3dpcGVycyksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub24oImVsZW1lbnRvci9uZXN0ZWQtZWxlbWVudHMvYWN0aXZhdGUtYnkta2V5Ym9hcmQiLCB0aGlzLmNoYW5nZUFjdGl2ZVRhYkJ5S2V5Ym9hcmQuYmluZCh0aGlzKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiR0YWJUaXRsZXMub2ZmKCksIHRoaXMuZWxlbWVudHMuJGhlYWRpbmdDb250YWluZXIub2ZmKCksIHRoaXMuZWxlbWVudHMuJHRhYkNvbnRlbnRzLmNoaWxkcmVuKCkub2ZmKCksIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub2ZmKCJyZXNpemUiKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJHdpbmRvdy5vZmYoImVsZW1lbnRvci9uZXN0ZWQtdGFicy9hY3RpdmF0ZSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZUluaXRTd2lwZXJzKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdC5xdWVyeVNlbGVjdG9yQWxsKGAuJHtlbGVtZW50b3JGcm9udGVuZC5jb25maWcuc3dpcGVyQ2xhc3N9YCk7CiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLnN3aXBlcikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBlLnN3aXBlci5pbml0aWFsaXplZCA9ICExLCBlLnN3aXBlci5pbml0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cyksIHRoaXMuZ2V0U2V0dGluZ3MoImF1dG9FeHBhbmQiKSAmJiB0aGlzLmFjdGl2YXRlRGVmYXVsdFRhYigpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudHMuJGhlYWRpbmdDb250YWluZXJbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5nZXRUYWJzRGlyZWN0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDU1NWYXJpYWJsZTogIi0tbi10YWJzLWhlYWRpbmctanVzdGlmeS1jb250ZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbFN0YXR1czogdGhpcy5nZXRIb3Jpem9udGFsU2Nyb2xsU2V0dGluZygpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAoMCwgcy5zZXRIb3Jpem9udGFsU2Nyb2xsQWxpZ25tZW50KShlKSwgdGhpcy5zZXRUb3VjaE1vZGUoKSwgIm5lc3RlZC10YWJzLmRlZmF1bHQiID09PSB0aGlzLmdldFNldHRpbmdzKCJlbGVtZW50TmFtZSIpICYmIG5ldyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLk5lc3RlZFRpdGxlS2V5Ym9hcmRIYW5kbGVyKHRoaXMuZ2V0S2V5Ym9hcmROYXZpZ2F0aW9uU2V0dGluZ3MoKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWRpdFNldHRpbmdzQ2hhbmdlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAiYWN0aXZlSXRlbUluZGV4IiA9PT0gZSAmJiB0aGlzLmNoYW5nZUFjdGl2ZVRhYih0LCAhMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tTbGlkZXJQcm9wc1RvV2F0Y2goZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudHMuJGhlYWRpbmdDb250YWluZXJbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IHRoaXMuZ2V0VGFic0RpcmVjdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNTU1ZhcmlhYmxlOiAiLS1uLXRhYnMtaGVhZGluZy1qdXN0aWZ5LWNvbnRlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbFN0YXR1czogdGhpcy5nZXRIb3Jpem9udGFsU2Nyb2xsU2V0dGluZygpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBzLnNldEhvcml6b250YWxTY3JvbGxBbGlnbm1lbnQpKGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2hlY2tTbGlkZXJQcm9wc1RvV2F0Y2goZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSBlLmluZGV4T2YoImhvcml6b250YWxfc2Nyb2xsIikgfHwgImJyZWFrcG9pbnRfc2VsZWN0b3IiID09PSBlIHx8IDAgPT09IGUuaW5kZXhPZigidGFic19qdXN0aWZ5X2hvcml6b250YWwiKSB8fCAwID09PSBlLmluZGV4T2YoInRhYnNfdGl0bGVfc3BhY2VfYmV0d2VlbiIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjaGFuZ2VBY3RpdmVUYWIoZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSAmJiBhcmd1bWVudHNbMV0gJiYgdGhpcy5pc0VkaXQgJiYgdGhpcy5pc0VsZW1lbnRJblRoZUN1cnJlbnREb2N1bWVudCgpKSByZXR1cm4gd2luZG93LnRvcC4kZS5ydW4oImRvY3VtZW50L3JlcGVhdGVyL3NlbGVjdCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiBlbGVtZW50b3IuZ2V0Q29udGFpbmVyKHRoaXMuJGVsZW1lbnQuYXR0cigiZGF0YS1pZCIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IHBhcnNlSW50KGUpCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuaXNBY3RpdmVUYWIoZSksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFuLnRvZ2dsZVNlbGYgJiYgdCB8fCAhbi5oaWRlUHJldmlvdXMgfHwgdGhpcy5kZWFjdGl2YXRlQWN0aXZlVGFiKGUpLCAhbi5oaWRlUHJldmlvdXMgJiYgdCAmJiB0aGlzLmRlYWN0aXZhdGVBY3RpdmVUYWIoZSksICF0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQWNjb3JkaW9uVmVyc2lvbigpKSByZXR1cm4gdm9pZCB0aGlzLmFjdGl2YXRlTW9iaWxlVGFiKGUpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlVGFiKGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2hhbmdlQWN0aXZlVGFiQnlLZXlib2FyZChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdC53aWRnZXRJZC50b1N0cmluZygpID09PSB0aGlzLmdldElEKCkudG9TdHJpbmcoKSAmJiB0aGlzLmNoYW5nZUFjdGl2ZVRhYih0LnRpdGxlSW5kZXgsICEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWN0aXZhdGVNb2JpbGVUYWIoZSkgewogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZVRhYihlKSwgdGhpcy5mb3JjZUFjdGl2ZVRhYlRvQmVJblZpZXdwb3J0KGUpCiAgICAgICAgICAgICAgICAgICAgfSksIDEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yY2VBY3RpdmVUYWJUb0JlSW5WaWV3cG9ydChlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5lbGVtZW50cy4kdGFiVGl0bGVzLmZpbHRlcih0aGlzLmdldFRhYlRpdGxlRmlsdGVyU2VsZWN0b3IoZSkpOwogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvci5oZWxwZXJzLmlzSW5WaWV3cG9ydCh0WzBdKSB8fCB0WzBdLnNjcm9sbEludG9WaWV3KHsKICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2s6ICJjZW50ZXIiCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEFjdGl2ZUNsYXNzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNldHRpbmdzKCkuY2xhc3Nlcy5hY3RpdmUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFRhYnNEaXJlY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGVsZW1lbnRvckZyb250ZW5kLmdldEN1cnJlbnREZXZpY2VNb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLmNvbnRyb2xzLmdldFJlc3BvbnNpdmVDb250cm9sVmFsdWUodGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwgInRhYnNfanVzdGlmeV9ob3Jpem9udGFsIiwgIiIsIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRIb3Jpem9udGFsU2Nyb2xsU2V0dGluZygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZWxlbWVudG9yRnJvbnRlbmQuZ2V0Q3VycmVudERldmljZU1vZGUoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuY29udHJvbHMuZ2V0UmVzcG9uc2l2ZUNvbnRyb2xWYWx1ZSh0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLCAiaG9yaXpvbnRhbF9zY3JvbGwiLCAiIiwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzQWNjb3JkaW9uVmVyc2lvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImNvbnRlbnRzIiA9PT0gdGhpcy5lbGVtZW50cy4kaGVhZGluZ0NvbnRhaW5lci5jc3MoImRpc3BsYXkiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0VG91Y2hNb2RlKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKS53aWRnZXRDb250YWluZXI7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSB8fCAicmVzaXplIiA9PT0gZXZlbnQgPyAudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gWyJtb2JpbGUiLCAibW9iaWxlX2V4dHJhIiwgInRhYmxldCIsICJ0YWJsZXRfZXh0cmEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlbGVtZW50b3JGcm9udGVuZC5nZXRDdXJyZW50RGV2aWNlTW9kZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgIT09IHQuaW5kZXhPZihuKSkgcmV0dXJuIHZvaWQgdGhpcy4kZWxlbWVudC5maW5kKGUpLmF0dHIoImRhdGEtdG91Y2gtbW9kZSIsICJ0cnVlIikKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCJvbnRvdWNoc3RhcnQiIGluIHdpbmRvdykgcmV0dXJuIHZvaWQgdGhpcy4kZWxlbWVudC5maW5kKGUpLmF0dHIoImRhdGEtdG91Y2gtbW9kZSIsICJ0cnVlIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5maW5kKGUpLmF0dHIoImRhdGEtdG91Y2gtbW9kZSIsICJmYWxzZSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gTmVzdGVkVGFicwogICAgICAgIH0sCiAgICAgICAgNTA4OTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oOTMwKSwKICAgICAgICAgICAgICAgIHIgPSBuKDkyNjgpLAogICAgICAgICAgICAgICAgcyA9IFR5cGVFcnJvcjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKGkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgdGhyb3cgcyhyKGUpICsgIiBpcyBub3QgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDEzNzg6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDkzMCksCiAgICAgICAgICAgICAgICByID0gU3RyaW5nLAogICAgICAgICAgICAgICAgcyA9IFR5cGVFcnJvcjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBlIHx8IGkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgdGhyb3cgcygiQ2FuJ3Qgc2V0ICIgKyByKGUpICsgIiBhcyBhIHByb3RvdHlwZSIpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDYxMTI6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDg3NTkpLAogICAgICAgICAgICAgICAgciA9IFN0cmluZywKICAgICAgICAgICAgICAgIHMgPSBUeXBlRXJyb3I7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChpKGUpKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgIHRocm93IHMocihlKSArICIgaXMgbm90IGFuIG9iamVjdCIpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDYxOTg6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDQwODgpLAogICAgICAgICAgICAgICAgciA9IG4oNzc0MCksCiAgICAgICAgICAgICAgICBzID0gbigyODcxKSwKICAgICAgICAgICAgICAgIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgbykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSwgbCA9IGkodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcyhsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSByKG8sIGMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBuICE9IG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBjID4gdTspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhID0gbFt1KytdKSAhPSBhKSByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgYyA+IHU7IHUrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGUgfHwgdSBpbiBsKSAmJiBsW3VdID09PSBuKSByZXR1cm4gZSB8fCB1IHx8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhZSAmJiAtMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IHsKICAgICAgICAgICAgICAgIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QoITApLAogICAgICAgICAgICAgICAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKCExKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAyMzA2OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig4MjQwKSwKICAgICAgICAgICAgICAgIHIgPSBpKHt9LnRvU3RyaW5nKSwKICAgICAgICAgICAgICAgIHMgPSBpKCIiLnNsaWNlKTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHMocihlKSwgOCwgLTEpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDM3NTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oMjM3MSksCiAgICAgICAgICAgICAgICByID0gbig5MzApLAogICAgICAgICAgICAgICAgcyA9IG4oMjMwNiksCiAgICAgICAgICAgICAgICBvID0gbigyMTEpKCJ0b1N0cmluZ1RhZyIpLAogICAgICAgICAgICAgICAgYSA9IE9iamVjdCwKICAgICAgICAgICAgICAgIGwgPSAiQXJndW1lbnRzIiA9PSBzKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMKICAgICAgICAgICAgICAgIH0oKSk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGkgPyBzIDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4sIGk7CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlID8gIlVuZGVmaW5lZCIgOiBudWxsID09PSBlID8gIk51bGwiIDogInN0cmluZyIgPT0gdHlwZW9mKG4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbdF0KICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgfSh0ID0gYShlKSwgbykpID8gbiA6IGwgPyBzKHQpIDogIk9iamVjdCIgPT0gKGkgPSBzKHQpKSAmJiByKHQuY2FsbGVlKSA/ICJBcmd1bWVudHMiIDogaQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA4NDc0OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig5NjA2KSwKICAgICAgICAgICAgICAgIHIgPSBuKDYwOTUpLAogICAgICAgICAgICAgICAgcyA9IG4oNDM5OSksCiAgICAgICAgICAgICAgICBvID0gbig3ODI2KTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IHIodCksIGwgPSBvLmYsIGMgPSBzLmYsIHUgPSAwOyB1IDwgYS5sZW5ndGg7IHUrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBkID0gYVt1XTsKICAgICAgICAgICAgICAgICAgICBpKGUsIGQpIHx8IG4gJiYgaShuLCBkKSB8fCBsKGUsIGQsIGModCwgZCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDI1ODU6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDUyODMpLAogICAgICAgICAgICAgICAgciA9IG4oNzgyNiksCiAgICAgICAgICAgICAgICBzID0gbig1NzM2KTsKICAgICAgICAgICAgZS5leHBvcnRzID0gaSA/IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiByLmYoZSwgdCwgcygxLCBuKSkKICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBlW3RdID0gbiwgZQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA1NzM2OiBlID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEoMSAmIGUpLAogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogISgyICYgZSksCiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEoNCAmIGUpLAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDEzNDM6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDkzMCksCiAgICAgICAgICAgICAgICByID0gbig3ODI2KSwKICAgICAgICAgICAgICAgIHMgPSBuKDM3MTIpLAogICAgICAgICAgICAgICAgbyA9IG4oOTQ0NCk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQsIG4sIGEpIHsKICAgICAgICAgICAgICAgIGEgfHwgKGEgPSB7fSk7CiAgICAgICAgICAgICAgICB2YXIgbCA9IGEuZW51bWVyYWJsZSwKICAgICAgICAgICAgICAgICAgICBjID0gdm9pZCAwICE9PSBhLm5hbWUgPyBhLm5hbWUgOiB0OwogICAgICAgICAgICAgICAgaWYgKGkobikgJiYgcyhuLCBjLCBhKSwgYS5nbG9iYWwpIGwgPyBlW3RdID0gbiA6IG8odCwgbik7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBhLnVuc2FmZSA/IGVbdF0gJiYgKGwgPSAhMCkgOiBkZWxldGUgZVt0XQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgbCA/IGVbdF0gPSBuIDogci5mKGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICFhLm5vbkNvbmZpZ3VyYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICFhLm5vbldyaXRhYmxlCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDk0NDQ6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDIwODYpLAogICAgICAgICAgICAgICAgciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByKGksIGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgaVtlXSA9IHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDUyODM6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDM2NzcpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSAhaSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gNyAhPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pWzFdCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgNzg4NjogZSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIHQgPSAib2JqZWN0IiA9PSB0eXBlb2YgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsLAogICAgICAgICAgICAgICAgbiA9IHZvaWQgMCA9PT0gdCAmJiB2b2lkIDAgIT09IHQ7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IHsKICAgICAgICAgICAgICAgIGFsbDogdCwKICAgICAgICAgICAgICAgIElTX0hUTUxEREE6IG4KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgODIxOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigyMDg2KSwKICAgICAgICAgICAgICAgIHIgPSBuKDg3NTkpLAogICAgICAgICAgICAgICAgcyA9IGkuZG9jdW1lbnQsCiAgICAgICAgICAgICAgICBvID0gcihzKSAmJiByKHMuY3JlYXRlRWxlbWVudCk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvID8gcy5jcmVhdGVFbGVtZW50KGUpIDoge30KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNDk5OTogZSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIG5hdmlnYXRvciAmJiBTdHJpbmcobmF2aWdhdG9yLnVzZXJBZ2VudCkgfHwgIiIKICAgICAgICB9LAogICAgICAgIDE0NDg6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGksIHIsIHMgPSBuKDIwODYpLAogICAgICAgICAgICAgICAgbyA9IG4oNDk5OSksCiAgICAgICAgICAgICAgICBhID0gcy5wcm9jZXNzLAogICAgICAgICAgICAgICAgbCA9IHMuRGVubywKICAgICAgICAgICAgICAgIGMgPSBhICYmIGEudmVyc2lvbnMgfHwgbCAmJiBsLnZlcnNpb24sCiAgICAgICAgICAgICAgICB1ID0gYyAmJiBjLnY4OwogICAgICAgICAgICB1ICYmIChyID0gKGkgPSB1LnNwbGl0KCIuIikpWzBdID4gMCAmJiBpWzBdIDwgNCA/IDEgOiArKGlbMF0gKyBpWzFdKSksICFyICYmIG8gJiYgKCEoaSA9IG8ubWF0Y2goL0VkZ2VcLyhcZCspLykpIHx8IGlbMV0gPj0gNzQpICYmIChpID0gby5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pKSAmJiAociA9ICtpWzFdKSwgZS5leHBvcnRzID0gcgogICAgICAgIH0sCiAgICAgICAgODY4NDogZSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gWyJjb25zdHJ1Y3RvciIsICJoYXNPd25Qcm9wZXJ0eSIsICJpc1Byb3RvdHlwZU9mIiwgInByb3BlcnR5SXNFbnVtZXJhYmxlIiwgInRvTG9jYWxlU3RyaW5nIiwgInRvU3RyaW5nIiwgInZhbHVlT2YiXQogICAgICAgIH0sCiAgICAgICAgNzk6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDgyNDApLAogICAgICAgICAgICAgICAgciA9IEVycm9yLAogICAgICAgICAgICAgICAgcyA9IGkoIiIucmVwbGFjZSksCiAgICAgICAgICAgICAgICBvID0gU3RyaW5nKHIoInp4Y2FzZCIpLnN0YWNrKSwKICAgICAgICAgICAgICAgIGEgPSAvXG5ccyphdCBbXjpdKjpbXlxuXSovLAogICAgICAgICAgICAgICAgbCA9IGEudGVzdChvKTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKGwgJiYgInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgIXIucHJlcGFyZVN0YWNrVHJhY2UpCiAgICAgICAgICAgICAgICAgICAgZm9yICg7IHQtLTspIGUgPSBzKGUsIGEsICIiKTsKICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDgzOTU6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDI1ODUpLAogICAgICAgICAgICAgICAgciA9IG4oNzkpLAogICAgICAgICAgICAgICAgcyA9IG4oMjExNCksCiAgICAgICAgICAgICAgICBvID0gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQsIG4sIGEpIHsKICAgICAgICAgICAgICAgIHMgJiYgKG8gPyBvKGUsIHQpIDogaShlLCAic3RhY2siLCByKG4sIGEpKSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgMjExNDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oMzY3NyksCiAgICAgICAgICAgICAgICByID0gbig1NzM2KTsKICAgICAgICAgICAgZS5leHBvcnRzID0gIWkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBFcnJvcigiYSIpOwogICAgICAgICAgICAgICAgcmV0dXJuICEoInN0YWNrIiBpbiBlKSB8fCAoT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJzdGFjayIsIHIoMSwgNykpLCA3ICE9PSBlLnN0YWNrKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIDE2OTU6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDIwODYpLAogICAgICAgICAgICAgICAgciA9IG4oNDM5OSkuZiwKICAgICAgICAgICAgICAgIHMgPSBuKDI1ODUpLAogICAgICAgICAgICAgICAgbyA9IG4oMTM0MyksCiAgICAgICAgICAgICAgICBhID0gbig5NDQ0KSwKICAgICAgICAgICAgICAgIGwgPSBuKDg0NzQpLAogICAgICAgICAgICAgICAgYyA9IG4oNzE4OSk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuLCB1LCBkLCBoLCBnLCBwID0gZS50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgZiA9IGUuZ2xvYmFsLAogICAgICAgICAgICAgICAgICAgIG0gPSBlLnN0YXQ7CiAgICAgICAgICAgICAgICBpZiAobiA9IGYgPyBpIDogbSA/IGlbcF0gfHwgYShwLCB7fSkgOiAoaVtwXSB8fCB7fSkucHJvdG90eXBlKQogICAgICAgICAgICAgICAgICAgIGZvciAodSBpbiB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID0gdFt1XSwgZCA9IGUuZG9udENhbGxHZXRTZXQgPyAoZyA9IHIobiwgdSkpICYmIGcudmFsdWUgOiBuW3VdLCAhYyhmID8gdSA6IHAgKyAobSA/ICIuIiA6ICIjIikgKyB1LCBlLmZvcmNlZCkgJiYgdm9pZCAwICE9PSBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGggPT0gdHlwZW9mIGQpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbChoLCBkKQogICAgICAgICAgICAgICAgICAgICAgICB9KGUuc2hhbSB8fCBkICYmIGQuc2hhbSkgJiYgcyhoLCAic2hhbSIsICEwKSwgbyhuLCB1LCBoLCBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgMzY3NzogZSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFlKCkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNzI1ODogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oNjA1OSksCiAgICAgICAgICAgICAgICByID0gRnVuY3Rpb24ucHJvdG90eXBlLAogICAgICAgICAgICAgICAgcyA9IHIuYXBwbHksCiAgICAgICAgICAgICAgICBvID0gci5jYWxsOwogICAgICAgICAgICBlLmV4cG9ydHMgPSAib2JqZWN0IiA9PSB0eXBlb2YgUmVmbGVjdCAmJiBSZWZsZWN0LmFwcGx5IHx8IChpID8gby5iaW5kKHMpIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gby5hcHBseShzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICA2MDU5OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigzNjc3KTsKICAgICAgICAgICAgZS5leHBvcnRzID0gIWkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBmdW5jdGlvbigpIHt9LmJpbmQoKTsKICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iICE9IHR5cGVvZiBlIHx8IGUuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgOTQxMzogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oNjA1OSksCiAgICAgICAgICAgICAgICByID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGkgPyByLmJpbmQocikgOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiByLmFwcGx5KHIsIGFyZ3VtZW50cykKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNDM5ODogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oNTI4MyksCiAgICAgICAgICAgICAgICByID0gbig5NjA2KSwKICAgICAgICAgICAgICAgIHMgPSBGdW5jdGlvbi5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICBvID0gaSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLAogICAgICAgICAgICAgICAgYSA9IHIocywgIm5hbWUiKSwKICAgICAgICAgICAgICAgIGwgPSBhICYmICJzb21ldGhpbmciID09PSBmdW5jdGlvbiBzb21ldGhpbmcoKSB7fS5uYW1lLAogICAgICAgICAgICAgICAgYyA9IGEgJiYgKCFpIHx8IGkgJiYgbyhzLCAibmFtZSIpLmNvbmZpZ3VyYWJsZSk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IHsKICAgICAgICAgICAgICAgIEVYSVNUUzogYSwKICAgICAgICAgICAgICAgIFBST1BFUjogbCwKICAgICAgICAgICAgICAgIENPTkZJR1VSQUJMRTogYwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAxNTE4OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig4MjQwKSwKICAgICAgICAgICAgICAgIHIgPSBuKDUwODkpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpKHIoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KVtuXSkpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA4MjQwOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig2MDU5KSwKICAgICAgICAgICAgICAgIHIgPSBGdW5jdGlvbi5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICBzID0gci5jYWxsLAogICAgICAgICAgICAgICAgbyA9IGkgJiYgci5iaW5kLmJpbmQocywgcyk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGkgPyBvIDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzLmFwcGx5KGUsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNTYzOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigyMDg2KSwKICAgICAgICAgICAgICAgIHIgPSBuKDkzMCk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IChuID0gaVtlXSwgcihuKSA/IG4gOiB2b2lkIDApIDogaVtlXSAmJiBpW2VdW3RdOwogICAgICAgICAgICAgICAgdmFyIG4KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgMjk2NDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oNTA4OSksCiAgICAgICAgICAgICAgICByID0gbigxODU4KTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBlW3RdOwogICAgICAgICAgICAgICAgcmV0dXJuIHIobikgPyB2b2lkIDAgOiBpKG4pCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDIwODY6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgY2hlY2sgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLk1hdGggPT0gTWF0aCAmJiBlCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGNoZWNrKCJvYmplY3QiID09IHR5cGVvZiBnbG9iYWxUaGlzICYmIGdsb2JhbFRoaXMpIHx8IGNoZWNrKCJvYmplY3QiID09IHR5cGVvZiB3aW5kb3cgJiYgd2luZG93KSB8fCBjaGVjaygib2JqZWN0IiA9PSB0eXBlb2Ygc2VsZiAmJiBzZWxmKSB8fCBjaGVjaygib2JqZWN0IiA9PSB0eXBlb2Ygbi5nICYmIG4uZykgfHwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICB9KCkgfHwgdGhpcyB8fCBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpCiAgICAgICAgfSwKICAgICAgICA5NjA2OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig4MjQwKSwKICAgICAgICAgICAgICAgIHIgPSBuKDMwNjApLAogICAgICAgICAgICAgICAgcyA9IGkoe30uaGFzT3duUHJvcGVydHkpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcyhyKGUpLCB0KQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA3MTUzOiBlID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSB7fQogICAgICAgIH0sCiAgICAgICAgNjc2MTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oNTI4MyksCiAgICAgICAgICAgICAgICByID0gbigzNjc3KSwKICAgICAgICAgICAgICAgIHMgPSBuKDgyMSk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9ICFpICYmICFyKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiA3ICE9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzKCJkaXYiKSwgImEiLCB7CiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KS5hCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgNTk3NDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oODI0MCksCiAgICAgICAgICAgICAgICByID0gbigzNjc3KSwKICAgICAgICAgICAgICAgIHMgPSBuKDIzMDYpLAogICAgICAgICAgICAgICAgbyA9IE9iamVjdCwKICAgICAgICAgICAgICAgIGEgPSBpKCIiLnNwbGl0KTsKICAgICAgICAgICAgZS5leHBvcnRzID0gcigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIW8oInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKQogICAgICAgICAgICB9KSkgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIlN0cmluZyIgPT0gcyhlKSA/IGEoZSwgIiIpIDogbyhlKQogICAgICAgICAgICB9IDogbwogICAgICAgIH0sCiAgICAgICAgNTA3MDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oOTMwKSwKICAgICAgICAgICAgICAgIHIgPSBuKDg3NTkpLAogICAgICAgICAgICAgICAgcyA9IG4oNzUzMCk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciBvLCBhOwogICAgICAgICAgICAgICAgcmV0dXJuIHMgJiYgaShvID0gdC5jb25zdHJ1Y3RvcikgJiYgbyAhPT0gbiAmJiByKGEgPSBvLnByb3RvdHlwZSkgJiYgYSAhPT0gbi5wcm90b3R5cGUgJiYgcyhlLCBhKSwgZQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA5Mjc3OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig4MjQwKSwKICAgICAgICAgICAgICAgIHIgPSBuKDkzMCksCiAgICAgICAgICAgICAgICBzID0gbig0NDg5KSwKICAgICAgICAgICAgICAgIG8gPSBpKEZ1bmN0aW9uLnRvU3RyaW5nKTsKICAgICAgICAgICAgcihzLmluc3BlY3RTb3VyY2UpIHx8IChzLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyhlKQogICAgICAgICAgICB9KSwgZS5leHBvcnRzID0gcy5pbnNwZWN0U291cmNlCiAgICAgICAgfSwKICAgICAgICA4OTQ1OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig4NzU5KSwKICAgICAgICAgICAgICAgIHIgPSBuKDI1ODUpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpKHQpICYmICJjYXVzZSIgaW4gdCAmJiByKGUsICJjYXVzZSIsIHQuY2F1c2UpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDMyNzg6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGksIHIsIHMsIG8gPSBuKDY0MCksCiAgICAgICAgICAgICAgICBhID0gbigyMDg2KSwKICAgICAgICAgICAgICAgIGwgPSBuKDg3NTkpLAogICAgICAgICAgICAgICAgYyA9IG4oMjU4NSksCiAgICAgICAgICAgICAgICB1ID0gbig5NjA2KSwKICAgICAgICAgICAgICAgIGQgPSBuKDQ0ODkpLAogICAgICAgICAgICAgICAgaCA9IG4oODk0NCksCiAgICAgICAgICAgICAgICBnID0gbig3MTUzKSwKICAgICAgICAgICAgICAgIHAgPSAiT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQiLAogICAgICAgICAgICAgICAgZiA9IGEuVHlwZUVycm9yLAogICAgICAgICAgICAgICAgbSA9IGEuV2Vha01hcDsKICAgICAgICAgICAgaWYgKG8gfHwgZC5zdGF0ZSkgewogICAgICAgICAgICAgICAgdmFyIHYgPSBkLnN0YXRlIHx8IChkLnN0YXRlID0gbmV3IG0pOwogICAgICAgICAgICAgICAgdi5nZXQgPSB2LmdldCwgdi5oYXMgPSB2Lmhhcywgdi5zZXQgPSB2LnNldCwgaSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodi5oYXMoZSkpIHRocm93IGYocCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZmFjYWRlID0gZSwgdi5zZXQoZSwgdCksIHQKICAgICAgICAgICAgICAgIH0sIHIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYuZ2V0KGUpIHx8IHt9CiAgICAgICAgICAgICAgICB9LCBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2LmhhcyhlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGIgPSBoKCJzdGF0ZSIpOwogICAgICAgICAgICAgICAgZ1tiXSA9ICEwLCBpID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmICh1KGUsIGIpKSB0aHJvdyBmKHApOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmZhY2FkZSA9IGUsIGMoZSwgYiwgdCksIHQKICAgICAgICAgICAgICAgIH0sIHIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUoZSwgYikgPyBlW2JdIDoge30KICAgICAgICAgICAgICAgIH0sIHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUoZSwgYikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlLmV4cG9ydHMgPSB7CiAgICAgICAgICAgICAgICBzZXQ6IGksCiAgICAgICAgICAgICAgICBnZXQ6IHIsCiAgICAgICAgICAgICAgICBoYXM6IHMsCiAgICAgICAgICAgICAgICBlbmZvcmNlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMoZSkgPyByKGUpIDogaShlLCB7fSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXR0ZXJGb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKHQpIHx8IChuID0gcih0KSkudHlwZSAhPT0gZSkgdGhyb3cgZigiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiICsgZSArICIgcmVxdWlyZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDkzMDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oNzg4NiksCiAgICAgICAgICAgICAgICByID0gaS5hbGw7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGkuSVNfSFRNTEREQSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlIHx8IGUgPT09IHIKICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDcxODk6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDM2NzcpLAogICAgICAgICAgICAgICAgciA9IG4oOTMwKSwKICAgICAgICAgICAgICAgIHMgPSAvI3xcLnByb3RvdHlwZVwuLywKICAgICAgICAgICAgICAgIGlzRm9yY2VkID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gYVtvKGUpXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA9PSBjIHx8IG4gIT0gbCAmJiAocih0KSA/IGkodCkgOiAhIXQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbyA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UocywgIi4iKS50b0xvd2VyQ2FzZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYSA9IGlzRm9yY2VkLmRhdGEgPSB7fSwKICAgICAgICAgICAgICAgIGwgPSBpc0ZvcmNlZC5OQVRJVkUgPSAiTiIsCiAgICAgICAgICAgICAgICBjID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAiUCI7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGlzRm9yY2VkCiAgICAgICAgfSwKICAgICAgICAxODU4OiBlID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDg3NTk6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDkzMCksCiAgICAgICAgICAgICAgICByID0gbig3ODg2KSwKICAgICAgICAgICAgICAgIHMgPSByLmFsbDsKICAgICAgICAgICAgZS5leHBvcnRzID0gci5JU19IVE1MRERBID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiBlID8gbnVsbCAhPT0gZSA6IGkoZSkgfHwgZSA9PT0gcwogICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiBlID8gbnVsbCAhPT0gZSA6IGkoZSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgMzI5NjogZSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgZS5leHBvcnRzID0gITEKICAgICAgICB9LAogICAgICAgIDIwNzE6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDU2MyksCiAgICAgICAgICAgICAgICByID0gbig5MzApLAogICAgICAgICAgICAgICAgcyA9IG4oNTUxNiksCiAgICAgICAgICAgICAgICBvID0gbigxODc2KSwKICAgICAgICAgICAgICAgIGEgPSBPYmplY3Q7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IG8gPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gInN5bWJvbCIgPT0gdHlwZW9mIGUKICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gaSgiU3ltYm9sIik7CiAgICAgICAgICAgICAgICByZXR1cm4gcih0KSAmJiBzKHQucHJvdG90eXBlLCBhKGUpKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAyODcxOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig0MDA1KTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkoZS5sZW5ndGgpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDM3MTI6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDgyNDApLAogICAgICAgICAgICAgICAgciA9IG4oMzY3NyksCiAgICAgICAgICAgICAgICBzID0gbig5MzApLAogICAgICAgICAgICAgICAgbyA9IG4oOTYwNiksCiAgICAgICAgICAgICAgICBhID0gbig1MjgzKSwKICAgICAgICAgICAgICAgIGwgPSBuKDQzOTgpLkNPTkZJR1VSQUJMRSwKICAgICAgICAgICAgICAgIGMgPSBuKDkyNzcpLAogICAgICAgICAgICAgICAgdSA9IG4oMzI3OCksCiAgICAgICAgICAgICAgICBkID0gdS5lbmZvcmNlLAogICAgICAgICAgICAgICAgaCA9IHUuZ2V0LAogICAgICAgICAgICAgICAgZyA9IFN0cmluZywKICAgICAgICAgICAgICAgIHAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksCiAgICAgICAgICAgICAgICBmID0gaSgiIi5zbGljZSksCiAgICAgICAgICAgICAgICBtID0gaSgiIi5yZXBsYWNlKSwKICAgICAgICAgICAgICAgIHYgPSBpKFtdLmpvaW4pLAogICAgICAgICAgICAgICAgYiA9IGEgJiYgIXIoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiA4ICE9PSBwKChmdW5jdGlvbigpIHt9KSwgImxlbmd0aCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDgKICAgICAgICAgICAgICAgICAgICB9KS5sZW5ndGgKICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgIHkgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIiksCiAgICAgICAgICAgICAgICBTID0gZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICJTeW1ib2woIiA9PT0gZihnKHQpLCAwLCA3KSAmJiAodCA9ICJbIiArIG0oZyh0KSwgL15TeW1ib2xcKChbXildKilcKS8sICIkMSIpICsgIl0iKSwgbiAmJiBuLmdldHRlciAmJiAodCA9ICJnZXQgIiArIHQpLCBuICYmIG4uc2V0dGVyICYmICh0ID0gInNldCAiICsgdCksICghbyhlLCAibmFtZSIpIHx8IGwgJiYgZS5uYW1lICE9PSB0KSAmJiAoYSA/IHAoZSwgIm5hbWUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSkgOiBlLm5hbWUgPSB0KSwgYiAmJiBuICYmIG8obiwgImFyaXR5IikgJiYgZS5sZW5ndGggIT09IG4uYXJpdHkgJiYgcChlLCAibGVuZ3RoIiwgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbi5hcml0eQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gJiYgbyhuLCAiY29uc3RydWN0b3IiKSAmJiBuLmNvbnN0cnVjdG9yID8gYSAmJiBwKGUsICJwcm90b3R5cGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBlLnByb3RvdHlwZSAmJiAoZS5wcm90b3R5cGUgPSB2b2lkIDApCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGQoZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8oaSwgInNvdXJjZSIpIHx8IChpLnNvdXJjZSA9IHYoeSwgInN0cmluZyIgPT0gdHlwZW9mIHQgPyB0IDogIiIpKSwgZQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gUygoZnVuY3Rpb24gdG9TdHJpbmcoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcyh0aGlzKSAmJiBoKHRoaXMpLnNvdXJjZSB8fCBjKHRoaXMpCiAgICAgICAgICAgIH0pLCAidG9TdHJpbmciKQogICAgICAgIH0sCiAgICAgICAgNTY4MTogZSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIHQgPSBNYXRoLmNlaWwsCiAgICAgICAgICAgICAgICBuID0gTWF0aC5mbG9vcjsKICAgICAgICAgICAgZS5leHBvcnRzID0gTWF0aC50cnVuYyB8fCBmdW5jdGlvbiB0cnVuYyhlKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9ICtlOwogICAgICAgICAgICAgICAgcmV0dXJuIChpID4gMCA/IG4gOiB0KShpKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAxODc5OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig0MDU5KTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZSA/IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gIiIgOiB0IDogaShlKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA3ODI2OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig1MjgzKSwKICAgICAgICAgICAgICAgIHIgPSBuKDY3NjEpLAogICAgICAgICAgICAgICAgcyA9IG4oODIwMiksCiAgICAgICAgICAgICAgICBvID0gbig2MTEyKSwKICAgICAgICAgICAgICAgIGEgPSBuKDIyNTgpLAogICAgICAgICAgICAgICAgbCA9IFR5cGVFcnJvciwKICAgICAgICAgICAgICAgIGMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksCiAgICAgICAgICAgICAgICB1ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwKICAgICAgICAgICAgICAgIGQgPSAiZW51bWVyYWJsZSIsCiAgICAgICAgICAgICAgICBoID0gImNvbmZpZ3VyYWJsZSIsCiAgICAgICAgICAgICAgICBnID0gIndyaXRhYmxlIjsKICAgICAgICAgICAgdC5mID0gaSA/IHMgPyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICBpZiAobyhlKSwgdCA9IGEodCksIG8obiksICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgJiYgInByb3RvdHlwZSIgPT09IHQgJiYgInZhbHVlIiBpbiBuICYmIGcgaW4gbiAmJiAhbltnXSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdShlLCB0KTsKICAgICAgICAgICAgICAgICAgICBpICYmIGlbZ10gJiYgKGVbdF0gPSBuLnZhbHVlLCBuID0gewogICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IGggaW4gbiA/IG5baF0gOiBpW2hdLAogICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBkIGluIG4gPyBuW2RdIDogaVtkXSwKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICExCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBjKGUsIHQsIG4pCiAgICAgICAgICAgIH0gOiBjIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoZSwgdCwgbikgewogICAgICAgICAgICAgICAgaWYgKG8oZSksIHQgPSBhKHQpLCBvKG4pLCByKSB0cnkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBjKGUsIHQsIG4pCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgaWYgKCJnZXQiIGluIG4gfHwgInNldCIgaW4gbikgdGhyb3cgbCgiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTsKICAgICAgICAgICAgICAgIHJldHVybiAidmFsdWUiIGluIG4gJiYgKGVbdF0gPSBuLnZhbHVlKSwgZQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA0Mzk5OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig1MjgzKSwKICAgICAgICAgICAgICAgIHIgPSBuKDk0MTMpLAogICAgICAgICAgICAgICAgcyA9IG4oNzQ0NiksCiAgICAgICAgICAgICAgICBvID0gbig1NzM2KSwKICAgICAgICAgICAgICAgIGEgPSBuKDQwODgpLAogICAgICAgICAgICAgICAgbCA9IG4oMjI1OCksCiAgICAgICAgICAgICAgICBjID0gbig5NjA2KSwKICAgICAgICAgICAgICAgIHUgPSBuKDY3NjEpLAogICAgICAgICAgICAgICAgZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgICAgICAgIHQuZiA9IGkgPyBkIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpIHsKICAgICAgICAgICAgICAgIGlmIChlID0gYShlKSwgdCA9IGwodCksIHUpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQoZSwgdCkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICBpZiAoYyhlLCB0KSkgcmV0dXJuIG8oIXIocy5mLCBlLCB0KSwgZVt0XSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNjI6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDEzNTIpLAogICAgICAgICAgICAgICAgciA9IG4oODY4NCkuY29uY2F0KCJsZW5ndGgiLCAicHJvdG90eXBlIik7CiAgICAgICAgICAgIHQuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkoZSwgcikKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNjk1MjogKGUsIHQpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB0LmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCiAgICAgICAgfSwKICAgICAgICA1NTE2OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig4MjQwKTsKICAgICAgICAgICAgZS5leHBvcnRzID0gaSh7fS5pc1Byb3RvdHlwZU9mKQogICAgICAgIH0sCiAgICAgICAgMTM1MjogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oODI0MCksCiAgICAgICAgICAgICAgICByID0gbig5NjA2KSwKICAgICAgICAgICAgICAgIHMgPSBuKDQwODgpLAogICAgICAgICAgICAgICAgbyA9IG4oNjE5OCkuaW5kZXhPZiwKICAgICAgICAgICAgICAgIGEgPSBuKDcxNTMpLAogICAgICAgICAgICAgICAgbCA9IGkoW10ucHVzaCk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuLCBpID0gcyhlKSwKICAgICAgICAgICAgICAgICAgICBjID0gMCwKICAgICAgICAgICAgICAgICAgICB1ID0gW107CiAgICAgICAgICAgICAgICBmb3IgKG4gaW4gaSkgIXIoYSwgbikgJiYgcihpLCBuKSAmJiBsKHUsIG4pOwogICAgICAgICAgICAgICAgZm9yICg7IHQubGVuZ3RoID4gYzspIHIoaSwgbiA9IHRbYysrXSkgJiYgKH5vKHUsIG4pIHx8IGwodSwgbikpOwogICAgICAgICAgICAgICAgcmV0dXJuIHUKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNzQ0NjogKGUsIHQpID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgbiA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLAogICAgICAgICAgICAgICAgaSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsCiAgICAgICAgICAgICAgICByID0gaSAmJiAhbi5jYWxsKHsKICAgICAgICAgICAgICAgICAgICAxOiAyCiAgICAgICAgICAgICAgICB9LCAxKTsKICAgICAgICAgICAgdC5mID0gciA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gaSh0aGlzLCBlKTsKICAgICAgICAgICAgICAgIHJldHVybiAhIXQgJiYgdC5lbnVtZXJhYmxlCiAgICAgICAgICAgIH0gOiBuCiAgICAgICAgfSwKICAgICAgICA3NTMwOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigxNTE4KSwKICAgICAgICAgICAgICAgIHIgPSBuKDYxMTIpLAogICAgICAgICAgICAgICAgcyA9IG4oMTM3OCk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoIl9fcHJvdG9fXyIgaW4ge30gPyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0ID0gITEsCiAgICAgICAgICAgICAgICAgICAgbiA9IHt9OwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAoZSA9IGkoT2JqZWN0LnByb3RvdHlwZSwgIl9fcHJvdG9fXyIsICJzZXQiKSkobiwgW10pLCB0ID0gbiBpbnN0YW5jZW9mIEFycmF5CiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihuKSwgcyhpKSwgdCA/IGUobiwgaSkgOiBuLl9fcHJvdG9fXyA9IGksIG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSgpIDogdm9pZCAwKQogICAgICAgIH0sCiAgICAgICAgNzk5OTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oOTQxMyksCiAgICAgICAgICAgICAgICByID0gbig5MzApLAogICAgICAgICAgICAgICAgcyA9IG4oODc1OSksCiAgICAgICAgICAgICAgICBvID0gVHlwZUVycm9yOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiwgYTsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PT0gdCAmJiByKG4gPSBlLnRvU3RyaW5nKSAmJiAhcyhhID0gaShuLCBlKSkpIHJldHVybiBhOwogICAgICAgICAgICAgICAgaWYgKHIobiA9IGUudmFsdWVPZikgJiYgIXMoYSA9IGkobiwgZSkpKSByZXR1cm4gYTsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPT0gdCAmJiByKG4gPSBlLnRvU3RyaW5nKSAmJiAhcyhhID0gaShuLCBlKSkpIHJldHVybiBhOwogICAgICAgICAgICAgICAgdGhyb3cgbygiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIikKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNjA5NTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oNTYzKSwKICAgICAgICAgICAgICAgIHIgPSBuKDgyNDApLAogICAgICAgICAgICAgICAgcyA9IG4oNjIpLAogICAgICAgICAgICAgICAgbyA9IG4oNjk1MiksCiAgICAgICAgICAgICAgICBhID0gbig2MTEyKSwKICAgICAgICAgICAgICAgIGwgPSByKFtdLmNvbmNhdCk7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGkoIlJlZmxlY3QiLCAib3duS2V5cyIpIHx8IGZ1bmN0aW9uIG93bktleXMoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBzLmYoYShlKSksCiAgICAgICAgICAgICAgICAgICAgbiA9IG8uZjsKICAgICAgICAgICAgICAgIHJldHVybiBuID8gbCh0LCBuKGUpKSA6IHQKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgMTYzMjogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oNzgyNikuZjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgbiBpbiBlIHx8IGkoZSwgbiwgewogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbbl0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0W25dID0gZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDk1ODY6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDE4NTgpLAogICAgICAgICAgICAgICAgciA9IFR5cGVFcnJvcjsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKGkoZSkpIHRocm93IHIoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIgKyBlKTsKICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDg5NDQ6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDkxOTcpLAogICAgICAgICAgICAgICAgciA9IG4oNTQyMiksCiAgICAgICAgICAgICAgICBzID0gaSgia2V5cyIpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc1tlXSB8fCAoc1tlXSA9IHIoZSkpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDQ0ODk6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDIwODYpLAogICAgICAgICAgICAgICAgciA9IG4oOTQ0NCksCiAgICAgICAgICAgICAgICBzID0gIl9fY29yZS1qc19zaGFyZWRfXyIsCiAgICAgICAgICAgICAgICBvID0gaVtzXSB8fCByKHMsIHt9KTsKICAgICAgICAgICAgZS5leHBvcnRzID0gbwogICAgICAgIH0sCiAgICAgICAgOTE5NzogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oMzI5NiksCiAgICAgICAgICAgICAgICByID0gbig0NDg5KTsKICAgICAgICAgICAgKGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiByW2VdIHx8IChyW2VdID0gdm9pZCAwICE9PSB0ID8gdCA6IHt9KQogICAgICAgICAgICB9KSgidmVyc2lvbnMiLCBbXSkucHVzaCh7CiAgICAgICAgICAgICAgICB2ZXJzaW9uOiAiMy4zMi4wIiwKICAgICAgICAgICAgICAgIG1vZGU6IGkgPyAicHVyZSIgOiAiZ2xvYmFsIiwKICAgICAgICAgICAgICAgIGNvcHlyaWdodDogIsKpIDIwMTQtMjAyMyBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsCiAgICAgICAgICAgICAgICBsaWNlbnNlOiAiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zMi4wL0xJQ0VOU0UiLAogICAgICAgICAgICAgICAgc291cmNlOiAiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMiCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICA1NTU4OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigxNDQ4KSwKICAgICAgICAgICAgICAgIHIgPSBuKDM2NzcpLAogICAgICAgICAgICAgICAgcyA9IG4oMjA4NikuU3RyaW5nOwogICAgICAgICAgICBlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIXIoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBTeW1ib2woKTsKICAgICAgICAgICAgICAgIHJldHVybiAhcyhlKSB8fCAhKE9iamVjdChlKSBpbnN0YW5jZW9mIFN5bWJvbCkgfHwgIVN5bWJvbC5zaGFtICYmIGkgJiYgaSA8IDQxCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgNzc0MDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oOTUwMiksCiAgICAgICAgICAgICAgICByID0gTWF0aC5tYXgsCiAgICAgICAgICAgICAgICBzID0gTWF0aC5taW47CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gaShlKTsKICAgICAgICAgICAgICAgIHJldHVybiBuIDwgMCA/IHIobiArIHQsIDApIDogcyhuLCB0KQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA0MDg4OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig1OTc0KSwKICAgICAgICAgICAgICAgIHIgPSBuKDk1ODYpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaShyKGUpKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA5NTAyOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig1NjgxKTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSArZTsKICAgICAgICAgICAgICAgIHJldHVybiB0ICE9IHQgfHwgMCA9PT0gdCA/IDAgOiBpKHQpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDQwMDU6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDk1MDIpLAogICAgICAgICAgICAgICAgciA9IE1hdGgubWluOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA+IDAgPyByKGkoZSksIDkwMDcxOTkyNTQ3NDA5OTEpIDogMAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAzMDYwOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig5NTg2KSwKICAgICAgICAgICAgICAgIHIgPSBPYmplY3Q7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiByKGkoZSkpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDEyODg6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDk0MTMpLAogICAgICAgICAgICAgICAgciA9IG4oODc1OSksCiAgICAgICAgICAgICAgICBzID0gbigyMDcxKSwKICAgICAgICAgICAgICAgIG8gPSBuKDI5NjQpLAogICAgICAgICAgICAgICAgYSA9IG4oNzk5OSksCiAgICAgICAgICAgICAgICBsID0gbigyMTEpLAogICAgICAgICAgICAgICAgYyA9IFR5cGVFcnJvciwKICAgICAgICAgICAgICAgIHUgPSBsKCJ0b1ByaW1pdGl2ZSIpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoIXIoZSkgfHwgcyhlKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICB2YXIgbiwgbCA9IG8oZSwgdSk7CiAgICAgICAgICAgICAgICBpZiAobCkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHQgJiYgKHQgPSAiZGVmYXVsdCIpLCBuID0gaShsLCBlLCB0KSwgIXIobikgfHwgcyhuKSkgcmV0dXJuIG47CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgYygiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgJiYgKHQgPSAibnVtYmVyIiksIGEoZSwgdCkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgMjI1ODogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oMTI4OCksCiAgICAgICAgICAgICAgICByID0gbigyMDcxKTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBpKGUsICJzdHJpbmciKTsKICAgICAgICAgICAgICAgIHJldHVybiByKHQpID8gdCA6IHQgKyAiIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAyMzcxOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0ge307CiAgICAgICAgICAgIGlbbigyMTEpKCJ0b1N0cmluZ1RhZyIpXSA9ICJ6IiwgZS5leHBvcnRzID0gIltvYmplY3Qgel0iID09PSBTdHJpbmcoaSkKICAgICAgICB9LAogICAgICAgIDQwNTk6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDM3NSksCiAgICAgICAgICAgICAgICByID0gU3RyaW5nOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoIlN5bWJvbCIgPT09IGkoZSkpIHRocm93IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmciKTsKICAgICAgICAgICAgICAgIHJldHVybiByKGUpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDkyNjg6IGUgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciB0ID0gU3RyaW5nOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0KGUpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJPYmplY3QiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDU0MjI6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDgyNDApLAogICAgICAgICAgICAgICAgciA9IDAsCiAgICAgICAgICAgICAgICBzID0gTWF0aC5yYW5kb20oKSwKICAgICAgICAgICAgICAgIG8gPSBpKDEuLnRvU3RyaW5nKTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICJTeW1ib2woIiArICh2b2lkIDAgPT09IGUgPyAiIiA6IGUpICsgIilfIiArIG8oKytyICsgcywgMzYpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDE4NzY6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDU1NTgpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBpICYmICFTeW1ib2wuc2hhbSAmJiAic3ltYm9sIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yCiAgICAgICAgfSwKICAgICAgICA4MjAyOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbig1MjgzKSwKICAgICAgICAgICAgICAgIHIgPSBuKDM2NzcpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBpICYmIHIoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIDQyICE9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgoZnVuY3Rpb24oKSB7fSksICJwcm90b3R5cGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDQyLAogICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMQogICAgICAgICAgICAgICAgfSkucHJvdG90eXBlCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgNjQwOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBpID0gbigyMDg2KSwKICAgICAgICAgICAgICAgIHIgPSBuKDkzMCksCiAgICAgICAgICAgICAgICBzID0gaS5XZWFrTWFwOwogICAgICAgICAgICBlLmV4cG9ydHMgPSByKHMpICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcocykpCiAgICAgICAgfSwKICAgICAgICAyMTE6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDIwODYpLAogICAgICAgICAgICAgICAgciA9IG4oOTE5NyksCiAgICAgICAgICAgICAgICBzID0gbig5NjA2KSwKICAgICAgICAgICAgICAgIG8gPSBuKDU0MjIpLAogICAgICAgICAgICAgICAgYSA9IG4oNTU1OCksCiAgICAgICAgICAgICAgICBsID0gbigxODc2KSwKICAgICAgICAgICAgICAgIGMgPSBpLlN5bWJvbCwKICAgICAgICAgICAgICAgIHUgPSByKCJ3a3MiKSwKICAgICAgICAgICAgICAgIGQgPSBsID8gYy5mb3IgfHwgYyA6IGMgJiYgYy53aXRob3V0U2V0dGVyIHx8IG87CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzKHUsIGUpIHx8ICh1W2VdID0gYSAmJiBzKGMsIGUpID8gY1tlXSA6IGQoIlN5bWJvbC4iICsgZSkpLCB1W2VdCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDE1NTc6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgdmFyIGkgPSBuKDU2MyksCiAgICAgICAgICAgICAgICByID0gbig5NjA2KSwKICAgICAgICAgICAgICAgIHMgPSBuKDI1ODUpLAogICAgICAgICAgICAgICAgbyA9IG4oNTUxNiksCiAgICAgICAgICAgICAgICBhID0gbig3NTMwKSwKICAgICAgICAgICAgICAgIGwgPSBuKDg0NzQpLAogICAgICAgICAgICAgICAgYyA9IG4oMTYzMiksCiAgICAgICAgICAgICAgICB1ID0gbig1MDcwKSwKICAgICAgICAgICAgICAgIGQgPSBuKDE4NzkpLAogICAgICAgICAgICAgICAgaCA9IG4oODk0NSksCiAgICAgICAgICAgICAgICBnID0gbig4Mzk1KSwKICAgICAgICAgICAgICAgIHAgPSBuKDUyODMpLAogICAgICAgICAgICAgICAgZiA9IG4oMzI5Nik7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQsIG4sIG0pIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gInN0YWNrVHJhY2VMaW1pdCIsCiAgICAgICAgICAgICAgICAgICAgYiA9IG0gPyAyIDogMSwKICAgICAgICAgICAgICAgICAgICB5ID0gZS5zcGxpdCgiLiIpLAogICAgICAgICAgICAgICAgICAgIFMgPSB5W3kubGVuZ3RoIC0gMV0sCiAgICAgICAgICAgICAgICAgICAgdyA9IGkuYXBwbHkobnVsbCwgeSk7CiAgICAgICAgICAgICAgICBpZiAodykgewogICAgICAgICAgICAgICAgICAgIHZhciBFID0gdy5wcm90b3R5cGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFmICYmIHIoRSwgImNhdXNlIikgJiYgZGVsZXRlIEUuY2F1c2UsICFuKSByZXR1cm4gdzsKICAgICAgICAgICAgICAgICAgICB2YXIgVCA9IGkoIkVycm9yIiksCiAgICAgICAgICAgICAgICAgICAgICAgIEMgPSB0KChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGQobSA/IHQgOiBlLCB2b2lkIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBtID8gbmV3IHcoZSkgOiBuZXcgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IG4gJiYgcyhpLCAibWVzc2FnZSIsIG4pLCBnKGksIEMsIGkuc3RhY2ssIDIpLCB0aGlzICYmIG8oRSwgdGhpcykgJiYgdShpLCB0aGlzLCBDKSwgYXJndW1lbnRzLmxlbmd0aCA+IGIgJiYgaChpLCBhcmd1bWVudHNbYl0pLCBpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICBpZiAoQy5wcm90b3R5cGUgPSBFLCAiRXJyb3IiICE9PSBTID8gYSA/IGEoQywgVCkgOiBsKEMsIFQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogcCAmJiB2IGluIHcgJiYgKGMoQywgdywgdiksIGMoQywgdywgInByZXBhcmVTdGFja1RyYWNlIikpLCBsKEMsIHcpLCAhZikgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgRS5uYW1lICE9PSBTICYmIHMoRSwgIm5hbWUiLCBTKSwgRS5jb25zdHJ1Y3RvciA9IEMKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgIHJldHVybiBDCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDc0MDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICB2YXIgaSA9IG4oMTY5NSksCiAgICAgICAgICAgICAgICByID0gbigyMDg2KSwKICAgICAgICAgICAgICAgIHMgPSBuKDcyNTgpLAogICAgICAgICAgICAgICAgbyA9IG4oMTU1NyksCiAgICAgICAgICAgICAgICBhID0gIldlYkFzc2VtYmx5IiwKICAgICAgICAgICAgICAgIGwgPSByW2FdLAogICAgICAgICAgICAgICAgYyA9IDcgIT09IEVycm9yKCJlIiwgewogICAgICAgICAgICAgICAgICAgIGNhdXNlOiA3CiAgICAgICAgICAgICAgICB9KS5jYXVzZSwKICAgICAgICAgICAgICAgIGV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0ge307CiAgICAgICAgICAgICAgICAgICAgbltlXSA9IG8oZSwgdCwgYyksIGkoewogICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGFyaXR5OiAxLAogICAgICAgICAgICAgICAgICAgICAgICBmb3JjZWQ6IGMKICAgICAgICAgICAgICAgICAgICB9LCBuKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGV4cG9ydFdlYkFzc2VtYmx5RXJyb3JDYXVzZVdyYXBwZXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGwgJiYgbFtlXSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBuW2VdID0gbyhhICsgIi4iICsgZSwgdCwgYyksIGkoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcml0eTogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZDogYwogICAgICAgICAgICAgICAgICAgICAgICB9LCBuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKCJFcnJvciIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gRXJyb3IodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzKGUsIHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpLCBleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcigiRXZhbEVycm9yIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBFdmFsRXJyb3IodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzKGUsIHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpLCBleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcigiUmFuZ2VFcnJvciIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gUmFuZ2VFcnJvcih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMoZSwgdGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSksIGV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKCJSZWZlcmVuY2VFcnJvciIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gUmVmZXJlbmNlRXJyb3IodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzKGUsIHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpLCBleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcigiU3ludGF4RXJyb3IiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIFN5bnRheEVycm9yKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyhlLCB0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKSwgZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoIlR5cGVFcnJvciIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gVHlwZUVycm9yKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyhlLCB0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKSwgZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoIlVSSUVycm9yIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBVUklFcnJvcih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMoZSwgdGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSksIGV4cG9ydFdlYkFzc2VtYmx5RXJyb3JDYXVzZVdyYXBwZXIoIkNvbXBpbGVFcnJvciIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gQ29tcGlsZUVycm9yKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyhlLCB0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKSwgZXhwb3J0V2ViQXNzZW1ibHlFcnJvckNhdXNlV3JhcHBlcigiTGlua0Vycm9yIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBMaW5rRXJyb3IodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzKGUsIHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpLCBleHBvcnRXZWJBc3NlbWJseUVycm9yQ2F1c2VXcmFwcGVyKCJSdW50aW1lRXJyb3IiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIFJ1bnRpbWVFcnJvcih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMoZSwgdGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIDMyMDM6IGUgPT4gewogICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBlLmV4cG9ydHMuX19lc01vZHVsZSA9ICEwLCBlLmV4cG9ydHMuZGVmYXVsdCA9IGUuZXhwb3J0cwogICAgICAgIH0KICAgIH0sCiAgICBlID0+IHsKICAgICAgICB2YXIgdDsKICAgICAgICB0ID0gNjQxMiwgZShlLnMgPSB0KQogICAgfQpdKTs="}},"time_used":104,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":102,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment-bitcoin.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.866Z","timestamp":1785128398866,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment-bitcoin.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 4328\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 56a5741c1b6cd3e5cc3ffe128770ff7b-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":4328,"size_decoded":4650,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"3f00ac3d31807c8afd2e9a2fb337b36e","sha1":"9c928c6a047ec2b743e4d6962551e95e417c5e12","sha256":"e4fd4dc98368cfbf14a9849bfe2994a62d408ff250556b2ee93da44097712e3c","sha512":"11f2b2f7f02375a1e7cd9ab3cc8caa5d873f1a396c6c42889c21ed813f24221b1996fa2c78907653c2ceb6c315b31ab1bbfe65f88546ee4fd6e9abe5873a7ac7","ssdeep":"96:X+zKa2Ezn1npZt0gh0KxHamu6OV61yiG9fuM:X/k1npn0+arL41kR","tlshash":"07915b62b78858aaf09774340cd8fe0e31da4b94f914ffe432a5f2190810ba86f1c8a4","first_seen":"2026-07-27T03:56:42.589572Z","last_seen":"2026-07-27T05:01:06.107997Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":97,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment-usdttrc20.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.873Z","timestamp":1785128398873,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment-usdttrc20.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 2104\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: cc804fb4ba7c0831fa6bf7b23d1b7956-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":2104,"size_decoded":2426,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"2172bc8dfc0f5f511c10786de7e70e38","sha1":"f63511f42fbdd0d2b455210d07869c37879ee135","sha256":"c1cf9ea9c36ee4434f87955d5e6daedaeb4b86bb2f6ca19e6f1a95545641decb","sha512":"dce92bc586aad19bee0c9324c70ecaa27469073e78e607fc1b44dc2ad075af118e0ecdeb00f45687d5e8585e16a1a25dc9281f75d67e60cae1e7c0028a3ac47b","ssdeep":"","tlshash":"98410a0e6d604f02cc75e63e0b665b998432e9854437a67d912a422e3f13ca81f2ed99","first_seen":"2026-07-27T03:56:42.531679Z","last_seen":"2026-07-27T05:01:06.118393Z","times_seen":3,"resource_available":false,"data":"UklGRjAIAABXRUJQVlA4WAoAAAAYAAAAmQAAMgAAQUxQSH8EAAABoEXb2iFJusW2URi3bdu2u9S2bdu2bdtGoW2jbBv3If4/IjIKo5eImABmZJFh/f+WWfk+626+enFlac9iGQybce5JlMbc7Jct42A93psa37lkFEreo47HbDIEjfyp6+uSGYDGUdT5e7F0r3gAdX+VJ52zfkAT7jNesc2bNpdNO8ZRGTx76jTVk54J2MZwjUm2TzMKBAg+Qut20RNLVYUaOHTRq5DLtEU5FPVJtk4zxlP4OYuWvSK2VXWOdNVrOhlVIM2xfCb6ZKZll+S4qovkTb0mk77505xySaKoS+fPn780HED1i+fPnz/nKQnIq+YUeVWNmU0he2vJGNIns6wNAHN1ZjaF7K015CtgboD+VL8PQGdqbCgpOXbUa/LjqNHjWir+nP80IDrk/dZqgN22re5kzP7tOxaiLsmG2cZcee22vbGk0IKngdEh77dWUdQ5fGitRW83X//nM21NtkFFqOdr94kA6ri++BaYoGKIpA/lJwE4B1KcOAUlKPdBHTJ5xGMKlwh6BVGcMBlAbzJ6K4XbTHZL5Hny2Mnbj1/OBNDgpfv9syfvh0gWS/qqOAV0Jcnk0GiSdP5VS0ospX0BdCfJ5NAYkuwHOFKeUM1kLwUne3hSuQlAS2o8IKm0fMln8tuSJSt6ooAfmbSikl1hl2+kb9EBA0+RIaMHDXFAPZJM2T9ssgfJD5lhF0AmLatoV6TXN9Ivvyh027j5nw/CIBcqr3APJnmpSuXKU7QkjhUBOEVehHI0meQC5V/BZG9gNPnDHADqk0zsCSDLNZI1MJFMdIayUAjZW/CjNIB8Nqa7KaD/lhGOA0ZNnD1v4fy5U26oI5fKzpNXBdfIbzVq1KxZs2aFe+ROYDLpmUt2EMqGKaQzrpGfq9VUVnxMbhMMg746rBeRTPB5eWsggHIvqbm7JqsPZDLFKeRlTT0E9mHkGHwlkylOIS/CgWRVo/RTodwBoAu1f7LWkuUL1T/Q1FJgE0iOhxfVPxZUMEq5JHWbACzXgQ5aLN6Q3sdOSU/P0NRaYBtETsA70vPYKenpaXAkWdEolk+13dbjgOgCeVmBE+R7qFdk12MyTpKvodpQGKfNS4+vohPka4EjyXVWisy98yhGkHFV9elDco2lInOf3IbL768pWo940VySBxxmNkXW1yTdJnV3WvCS1/MDqE/yy+xN83TI/pak68TuTgtf8Wo+o2Gsqo0AovSIFJVNpPI4UC2EKrcDsHpMZUCm2ppQI4wqNxvO6p4WTz3eizBaEG8HVHWVJB74CwBKv1WwUXWSHQT2CeQsANXdJQn7/wT6kKxiHBT1U+H/yPVRhB4HJGi0x+PFhZl5AVh12v7ww5uLsytCnHvIrhNbBtv8Nn/uguKC7JPnLqgLANaddzz68ObirAoAUG7+nDl2BkL9cJnuDjKtVhYwrJUFTK8T6nub6Ku1XmmsXih2yzTdkZ7BavRPE6xA+gYUGPUgXhafrCZ+mkW6B6CUy/KDp0/tW9CtUHFXmWsppJcmUm3R5bAH6XGsiwUyHOnx/50ysABWUDggyAIAADASAJ0BKpoAMwA+USSORaOiIRGqBjg4BQSxAGtw6J1f+I/IDlHd7O6H7GWtr/FaIDzAfrh/jv7N72/OAdZX6AH6q+k3+2nwsfsN6R2rZR8f18AVS28iEY2+DDB9U1gD+tphhjQUJG14HGPBg6m7O/jiPjhXhiTWS15tKhsBeACo67sLFYQ+aIjWIOw+w1ziWkhDctVsGfbwigAA/su3x52aK9/+3Z/XZ/XVZbf42f//reuFjHhccC1F+N+oT/+51jCSmWyllUWL19rXUQ6KXl08ZsSwBFUgYl7EMRKmj0F97EM7rr5+IqM8qQsSUE3r93JIfbBQCbl2hGQ/adtn703XpIGgildJPqxxbr1bV/MwvYLhWrN/X/org57TUEfg2bJb99MYOsIHl4jSQqbFozYXyi7UV/8xn+xef5377yYLKRnELrA1spyhxdFHpVI03rR3MnET4l2L9eELyFVMCy2Mqu3t/iI8I37XtpWiEjltqz/zAcJXXjzyf/yxT4X/MSzgfPw7vXAT4mkz4c2SXR7BJWUnXl1npvtE6B5use9zEIfhF5XfUHW/ABjMHDW1ifIFeISoCtWZzhzpNVPyNrjDC/IhD3gNAZgtskjPHyiU2Wvh2ca0g1tVK53cIg1jq58sA2HlugrVIXn42kP+Oag13+P+so4sRLrPHYzXe4vf/9Qy9Qd6ADKvvB9tcAVCkZ9x4k9spB4v0sCocqkFKr6x/sFdeyxbLiXhBrto7PI/KIDM75zy50zULDiV1e+Umh/2p9u/230tMMJZrnZhTSIzV4/5SHV/h2SPt5Nb+22Id1do76ZtmvCfGo9U8XjvMjkT4rhcKOfs22oJu9I552rTkQMegF3sWehQjfjKk4aykNbS/pok+b57glVk/7/q9aNf5rje+c//Jc7YHIUB3qaP+b4DXr+HDZVcVJwAE132pblfu35QAABFWElGugAAAEV4aWYAAElJKgAIAAAABgASAQMAAQAAAAEAAAAaAQUAAQAAAFYAAAAbAQUAAQAAAF4AAAAoAQMAAQAAAAIAAAATAgMAAQAAAAEAAABphwQAAQAAAGYAAAAAAAAASAAAAAEAAABIAAAAAQAAAAYAAJAHAAQAAAAwMjEwAZEHAAQAAAABAgMAAKAHAAQAAAAwMTAwAaADAAEAAAD//wAAAqAEAAEAAACaAAAAA6AEAAEAAAAzAAAAAAAAAA=="}},"time_used":89,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":89,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/translate_static/img/loading.gif","fqdn":"translate.googleapis.com","domain":"translate.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":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.879Z","timestamp":1785128399879,"http_version":"HTTP/3","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 /translate_static/img/loading.gif HTTP/1.1\r\nHost: translate.googleapis.com\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, i\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\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 702\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 21:36:56 GMT\r\nexpires: Sat, 24 Jul 2027 21:36:56 GMT\r\ncache-control: public, max-age=31536000\r\nage: 199383\r\nlast-modified: Thu, 03 Oct 2019 10:15:00 GMT\r\ncontent-type: image/gif\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":702,"size_decoded":1361,"mime_type":"image/gif","magic":"GIF image data, version 89a, 16 x 16","md5":"eefaa072b284a305c12c06608333abc2","sha1":"58272721ccc1efda26eaa22354022c7c793edbb6","sha256":"fb6b7bcc1ab09f27db17bcbdf5239ce1d52af34f1fc5125b3fc8528a07848d21","sha512":"c5ccfdcd9ce76de85f043a1733c9f0b620e15babbaf2a5639684c7b2bb8e5a66473c9a83f14cb48d9cb6c6a1c6b36f2c5a28e25abaf131fb85ec5eedecbae4ac","ssdeep":"","tlshash":"5d01dd13f3d50473f66d0075a20cc57f010635daaadad7089a48117cfe1983c5239b82","first_seen":"2023-04-05T11:18:23Z","last_seen":"2026-07-27T17:47:56.696664Z","times_seen":17804,"resource_available":false,"data":"R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/h1CdWlsdCB3aXRoIEdJRiBNb3ZpZSBHZWFyIDQuMAAh/hVNYWRlIGJ5IEFqYXhMb2FkLmluZm8AIfkECQoAAAAsAAAAABAAEAAAAzMIutz+MMpJaxNjCDoIGZwHTphmCUWxMcK6FJnBti5gxMJx0C1bGDndpgc5GAwHSmvnSAAAIfkECQoAAAAsAAAAABAAEAAAAzQIutz+TowhIBuEDLuw5opEcUJRVGAxGSBgTEVbGqh8HLV13+1hGAeAINcY4oZDGbIlJCoSACH5BAkKAAAALAAAAAAQABAAAAM2CLoyIyvKQciQzJRWLwaFYxwO9BlO8UlCYZircBzwCsyzvRzGqCsCWe0X/AGDww8yqWQan78EACH5BAkKAAAALAAAAAAQABAAAAMzCLpiJSvKMoaR7JxWX4WLpgmFIQwEMUSHYRwRqkaCsNEfA2JSXfM9HzA4LBqPyKRyOUwAACH5BAkKAAAALAAAAAAQABAAAAMyCLpyJytK52QU8BjzTIEMJnbDYFxiVJSFhLkeaFlCKc/KQBADHuk8H8MmLBqPyKRSkgAAIfkECQoAAAAsAAAAABAAEAAAAzMIuiDCkDkX43TnvNqeMBnHHOAhLkK2ncpXrKIxDAYLFHNhu7A195UBgTCwCYm7n20pSgAAIfkECQoAAAAsAAAAABAAEAAAAzIIutz+8AkR2ZxVXZoB7tpxcJVgiN1hnN00loVBRsUwFJBgm7YBDQTCQBCbMYDC1s6RAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P4wykmrZULUnCnXHggIwyCOx3EOBDEwqcqwrlAYwmEYB1bapQIgdWIYgp5bEZAAADsAAAAAAAAAAAAK"}},"time_used":16,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/element/log?format=json\u0026hasfast=true\u0026authuser=0","fqdn":"translate.googleapis.com","domain":"translate.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":"fetch","requested_by":"https://circuittradetech.com/","date":"2026-07-27T05:00:09.720Z","timestamp":1785128409720,"http_version":"HTTP/3","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":"OPTIONS /element/log?format=json\u0026hasfast=true\u0026authuser=0 HTTP/1.1\r\nHost: translate.googleapis.com\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\nAccess-Control-Request-Method: POST\r\nAccess-Control-Request-Headers: content-encoding,content-type,x-goog-authuser\r\nReferer: https://circuittradetech.com/\r\nOrigin: https://circuittradetech.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"OPTIONS"},"response":{"raw":"HTTP/3 200 \r\naccess-control-allow-origin: https://circuittradetech.com\r\naccess-control-allow-methods: GET, POST, OPTIONS\r\naccess-control-max-age: 86400\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: X-Playlog-Web,authorization,content-encoding,content-type,x-goog-authuser,origin\r\ncontent-type: text/plain; charset=UTF-8\r\ndate: Mon, 27 Jul 2026 05:00:09 GMT\r\nserver: Playlog\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\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":0,"size_decoded":528,"mime_type":"text/plain; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T18:39:14.176312Z","times_seen":17567823,"resource_available":true,"data":""}},"time_used":30,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":30,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/2023/12/content-image.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"imageset","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.852Z","timestamp":1785128398852,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/2023/12/content-image.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 23186\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 311fc69cbbe3e9691ac2859d219681b4-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.019\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":23186,"size_decoded":23509,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"864ff7ce1ed5e016a80639a46bb99a25","sha1":"1552fec24744e762a0f0f0c4d5b805a0db402fdb","sha256":"8a6f6dbb06635bcfc2fec18883a0e6b4fd264972a898869b0bc66238e1c95b79","sha512":"189aaaecb0e74a354da25868b450ccf6a1bfbb3551e923eca81d720b1aebcf70d56f0067d34ecb6e8163a9951c85d66136b81a5fd05acab74def2ebd779d6283","ssdeep":"384:9ii3oQkO6S8aPBbTyQM+8H6VHurjAZdQ97QpPZAopqBPF0hoo5ssep5wgNu/+zl0:jVYTOBfpyEQOpnoFrowpPNu/K2","tlshash":"eaa2e07a630a2e9cd1c1105e16663bb66cc168f7c2efa59166f8071fbe0d085b3b57c0","first_seen":"2026-07-27T03:56:42.46635Z","last_seen":"2026-07-27T05:01:06.120115Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":110,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":110,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/plan_img.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.854Z","timestamp":1785128398854,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/plan_img.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 2142\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 4be7f8703844788a6a2c412ab04abdde-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":2142,"size_decoded":2464,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"87d019acb7d53a66a387203310f9b12b","sha1":"77776060ef3c26cc0b28d27c5f7de62f1a6f6959","sha256":"6e6efe475a52458e9e16a49cbcb4231316ec77c26cd41569ae1d3528caa8924c","sha512":"609d340a51dc5af7ffeadd24c394e6557a2e9172da3cfd2669bf8b6cab10c3fcb197416d24575f0392a002e70e980f82d0c05916371cecd7f974973473278c42","ssdeep":"","tlshash":"d4414a8913481fbcc4a6ab7c884abf1cdd831381b92b3209735e06314cdecee9110be8","first_seen":"2026-07-27T03:56:42.541496Z","last_seen":"2026-07-27T05:01:06.176294Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":108,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":108,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/2023/12/favicon-300x300.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.503Z","timestamp":1785128399503,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/2023/12/favicon-300x300.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: image/webp\r\ncontent-length: 16416\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 2b9838c262afb61bbf5d3b1a1bdf1081-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":16416,"size_decoded":16739,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"b3d072f44e63b1acda3638d10d229e06","sha1":"0295d0a2a21df036bb99546c2c19613441a79685","sha256":"750da7f6093990604a04e0da1c9cb3c9c041e1a07a4627e7a27f9f62a3c4efa4","sha512":"89bbf1a6f3947200ab325b7aa293dde6f64aaf8a5ec5f38b3391b2db7a1c2d48437815f23902db73dc9489e3f1f64fd846af36c28a183d4971ff0127c719d48b","ssdeep":"384:ntn5ISQ9OabTt9+awkm0XttekcKST38FLqAEydZ4XsL/i:zQjbR9oDkcDMNBEHXsLq","tlshash":"1372d054d8437129ebd6b0f8cf09ef9781394830b9357fe51b28de9e9a854d8180d06d","first_seen":"2026-07-27T03:56:42.611697Z","last_seen":"2026-07-27T05:01:06.104188Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":45,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":45,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/images/branding/product/2x/translate_24dp.png","fqdn":"www.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":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.727Z","timestamp":1785128399727,"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 /images/branding/product/2x/translate_24dp.png HTTP/1.1\r\nHost: www.gstatic.com\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://www.gstatic.com/_/translate_http/_/ss/k=translate_http.tr.B7Dih9Jyjnw.L.F4.O/am=BIAABw/d=0/rs=AN8SPfpC04vrrzQXgs_TCM5EtruwfPzNtQ/m=el_main_css\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6, i\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\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 1842\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 07:17:13 GMT\r\nexpires: Sat, 24 Jul 2027 07:17:13 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 14 Oct 2021 09:08:00 GMT\r\ncontent-type: image/png\r\nvary: Origin\r\nage: 250967\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":1842,"size_decoded":2516,"mime_type":"image/png","magic":"PNG image data, 48 x 48, 8-bit/color RGBA, non-interlaced","md5":"c69c796362406f9e11c7f4bf5bb628da","sha1":"e489ce95ab56208090868882113d7416abf46775","sha256":"4dac0026fbfa2615dce30c0af12830863fe885f84387a0147b9e338f548d5d82","sha512":"d3ad560ed0fd29be7d2cc434694f09e5a6fbea8b29c0611aecb54a1b73b4d722c53f42a19dae9e3d5d358444e50fb8fffbc39d67ce751bdbc8c861f6f95d3162","ssdeep":"","tlshash":"4e31f9fd129220437101ade72165eef798347c15f412da60ce65ba389c9fe20ed9a619","first_seen":"2023-04-05T07:39:29Z","last_seen":"2026-07-27T17:47:56.678318Z","times_seen":72292,"resource_available":false,"data":"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"}},"time_used":16,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate-pa.googleapis.com/v1/supportedLanguages?client=te\u0026display_language=no\u0026key=AIzaSyBWDj0QJvVIx8XOhRegXX5_SrRWxhT5Hs4\u0026callback=callback","fqdn":"translate-pa.googleapis.com","domain":"translate-pa.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"172.217.117.4","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"moz-nullprincipal:{f5da111c-6c02-4cbd-9b4b-f083789b8c10}?https://circuittradetech.com","date":"2026-07-27T04:59:59.776Z","timestamp":1785128399776,"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":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:20 GMT","end":"Mon, 21 Sep 2026 08:39:19 GMT"},"fingerprint":{"sha1":"2A:E6:04:0E:76:A4:02:27:67:28:31:4D:E5:61:19:26:CA:0E:32:84","sha256":"D4:ED:C4:F8:DB:31:8A:2D:35:15:01:14:C0:49:CB:47:FF:5B:CC:17:14:82:63:9B:A8:6F:61:4D:AA:E5:96:94"}}},"request":{"raw":"GET /v1/supportedLanguages?client=te\u0026display_language=no\u0026key=AIzaSyBWDj0QJvVIx8XOhRegXX5_SrRWxhT5Hs4\u0026callback=callback HTTP/1.1\r\nHost: translate-pa.googleapis.com\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://circuittradetech.com/\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\ncross-origin-resource-policy: cross-origin\r\np3p: CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Origin, X-Origin, Referer\r\ncontent-encoding: gzip\r\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\nserver: ESF\r\ncontent-length: 2635\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nset-cookie: NID=533=Sg_RFxEjA5KTuzNhBfZLGvmP0nB6dU5gfTYg3uLdPRsstJLK4G1FtVE4d8cHSditFF75cOHCROnqG1g-WgjaZdwj_CAD-VwswxCZOtbn7ckGZfUuea8tzgvAr4EeShO3Hy59-_aynF9pBwcNqAyo_KT2gYLkSld8tuN0k3xkogRMHMrBzPL-3SpsyPL0Nlz1Q4dLjNz8ZIzaEVJ2TwsFZ8qArDwgUyp78g; expires=Tue, 26-Jan-2027 04:59:59 GMT; path=/; domain=.translate-pa.googleapis.com; HttpOnly\r\nexpires: Mon, 27 Jul 2026 04:59:59 GMT\r\ncache-control: private\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":null,"data":{"size":31482,"size_decoded":3504,"mime_type":"text/javascript; charset=UTF-8","magic":"Unicode text, UTF-8 text","md5":"91115de97ad1a90076e130223cdd90ad","sha1":"f3ad22e4fa892dfbff0d083bc0465fc3a2240317","sha256":"816e9881b1955d8beff3011d93481dad4c4de71bbd80b50ac267e7e45d4c3bad","sha512":"fbca69c3431240ab374b9ccfb06d76074059cdfe2f153743b292020271a8a3a36885189594a97fd74b43249b1f6359af62dfd0731e7b50e024f37faebdccf620","ssdeep":"192:Z6STcB9aqiD0+52DdKXrWryLxizUSTcB9aqdD0+52DdKXrWryLxG:JTcbaU3KXiMxidTcbah3KXiMxG","tlshash":"d0e267bae8b50d9b6a5e65b416fa2a03306041db4edc3c053b1c1e4c6fdec1e6c7169e","first_seen":"2025-09-02T05:12:23.753308Z","last_seen":"2026-07-27T17:47:56.668804Z","times_seen":7694,"resource_available":true,"data":"Ly8gQVBJIGNhbGxiYWNrCmNhbGxiYWNrKHsKICAic291cmNlTGFuZ3VhZ2VzIjogWwogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYXV0byIsCiAgICAgICJuYW1lIjogIkdqZW5ramVubiBzcHLDpWsiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWIiLAogICAgICAibmFtZSI6ICJhYmtoYXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWNlIiwKICAgICAgIm5hbWUiOiAiYWNlaG5lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhY2giLAogICAgICAibmFtZSI6ICJhY2hvbGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWEiLAogICAgICAibmFtZSI6ICJhZmFyIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFmIiwKICAgICAgIm5hbWUiOiAiYWZyaWthYW5zIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNxIiwKICAgICAgIm5hbWUiOiAiYWxiYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhbHoiLAogICAgICAibmFtZSI6ICJhbHVyIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFtIiwKICAgICAgIm5hbWUiOiAiYW1oYXJpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYXIiLAogICAgICAibmFtZSI6ICJhcmFiaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImh5IiwKICAgICAgIm5hbWUiOiAiYXJtZW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJheiIsCiAgICAgICJuYW1lIjogImFzZXJiYWpkc2phbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFzIiwKICAgICAgIm5hbWUiOiAiYXNzYW1lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhdiIsCiAgICAgICJuYW1lIjogImF2YXJpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYXdhIiwKICAgICAgIm5hbWUiOiAiYXdhZGhpIgogICAgfSwKICAgIHsKICAgICAibGFuZ3VhZ2UiOiAiYXkiLAogICAgICAibmFtZSI6ICJheW1hcmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmFuIiwKICAgICAgIm5hbWUiOiAiYmFsaW5lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiYWwiLAogICAgICAibmFtZSI6ICJiYWx1dHNqaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJibSIsCiAgICAgICJuYW1lIjogImJhbWJhcmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmNpIiwKICAgICAgIm5hbWUiOiAiYmFvdWzDqSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiYSIsCiAgICAgICJuYW1lIjogImJhc2praXJzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJldSIsCiAgICAgICJuYW1lIjogImJhc2tpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYnR4IiwKICAgICAgIm5hbWUiOiAiYmF0YWsga2FybyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJidHMiLAogICAgICAibmFtZSI6ICJiYXRhayBzaW1hbHVuZ3VuIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJiYyIsCiAgICAgICJuYW1lIjogImJhdGFrIHRvYmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmVtIiwKICAgICAgIm5hbWUiOiAiYmVtYmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYm4iLAogICAgICAibmFtZSI6ICJiZW5nYWxpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJldyIsCiAgICAgICJuYW1lIjogImJldGF3aSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiaG8iLAogICAgICAibmFtZSI6ICJiaG9qcHVyaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiaWsiLAogICAgICAibmFtZSI6ICJiaWtvbCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJicyIsCiAgICAgICJuYW1lIjogImJvc25pc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYnIiLAogICAgICAibmFtZSI6ICJicmV0b25zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiZyIsCiAgICAgICJuYW1lIjogImJ1bGdhcnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJ1YSIsCiAgICAgICJuYW1lIjogImJ1cmphdGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJteSIsCiAgICAgICJuYW1lIjogImJ1cm1lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjZWIiLAogICAgICAibmFtZSI6ICJjZWJ1YW5vIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNoIiwKICAgICAgIm5hbWUiOiAiY2hhbW9ycm8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibnkiLAogICAgICAibmFtZSI6ICJjaGljaGV3YSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkYSIsCiAgICAgICJuYW1lIjogImRhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZhLUFGIiwKICAgICAgIm5hbWUiOiAiZGFyaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkdiIsCiAgICAgICJuYW1lIjogImRoaXZlaGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZGluIiwKICAgICAgIm5hbWUiOiAiZGlua2EiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZG9pIiwKICAgICAgIm5hbWUiOiAiZG9ncmkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZG92IiwKICAgICAgIm5hbWUiOiAiZG9tYmUiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZHl1IiwKICAgICAgIm5hbWUiOiAiRHl1bGEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZHoiLAogICAgICAibmFtZSI6ICJkem9uZ2toYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJlbiIsCiAgICAgICJuYW1lIjogImVuZ2Vsc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZW8iLAogICAgICAibmFtZSI6ICJlc3BlcmFudG8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZXQiLAogICAgICAibmFtZSI6ICJlc3Rpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZWUiLAogICAgICAibmFtZSI6ICJld2UiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZmEiLAogICAgICAibmFtZSI6ICJmYXJzaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJmaiIsCiAgICAgICJuYW1lIjogImZpamlhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZpIiwKICAgICAgIm5hbWUiOiAiZmluc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZm9uIiwKICAgICAgIm5hbWUiOiAiZm9uIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZyIiwKICAgICAgIm5hbWUiOiAiZnJhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZyLUNBIiwKICAgICAgIm5hbWUiOiAiRnJhbnNrIChDYW5hZGEpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZ5IiwKICAgICAgIm5hbWUiOiAiZnJpc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJmdXIiLAogICAgICAibmFtZSI6ICJmcml1bGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJmZiIsCiAgICAgICJuYW1lIjogImZ1bGZ1bGRlIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZvIiwKICAgICAgIm5hbWUiOiAiZsOmcsO4eXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImdsIiwKICAgICAgIm5hbWUiOiAiZ2FsaXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia2EiLAogICAgICAibmFtZSI6ICJnZW9yZ2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJlbCIsCiAgICAgICJuYW1lIjogImdyZXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImduIiwKICAgICAgIm5hbWUiOiAiZ3VhcmFuw60iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZ3UiLAogICAgICAibmFtZSI6ICJndWphcmF0aSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJnYWEiLAogICAgICAibmFtZSI6ICJnYWEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY25oIiwKICAgICAgIm5hbWUiOiAiaGFraGEgY2hpbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJoYSIsCiAgICAgICJuYW1lIjogImhhdXNhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhhdyIsCiAgICAgICJuYW1lIjogImhhd2FpaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIml3IiwKICAgICAgIm5hbWUiOiAiaGVicmFpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaGlsIiwKICAgICAgIm5hbWUiOiAiaGlsaWdheW5vbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJoaSIsCiAgICAgICJuYW1lIjogImhpbmRpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhtbiIsCiAgICAgICJuYW1lIjogImhtb25nIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhyeCIsCiAgICAgICJuYW1lIjogImh1bnNyaWsiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmUiLAogICAgICAibmFtZSI6ICJodml0ZXJ1c3Npc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaWJhIiwKICAgICAgIm5hbWUiOiAiaWJhbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpZyIsCiAgICAgICJuYW1lIjogImlnYm8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaWxvIiwKICAgICAgIm5hbWUiOiAiaWxva2FubyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpZCIsCiAgICAgICJuYW1lIjogImluZG9uZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaXUtTGF0biIsCiAgICAgICJuYW1lIjogIkludWt0aXR1dCAobGF0aW5zaykiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaXUiLAogICAgICAibmFtZSI6ICJJbnVrdGl0dXQgKHN0YXZlbHNlKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJnYSIsCiAgICAgICJuYW1lIjogImlyc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaXMiLAogICAgICAibmFtZSI6ICJpc2xhbmRzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpdCIsCiAgICAgICJuYW1lIjogIml0YWxpZW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzYWgiLAogICAgICAibmFtZSI6ICJqYWt1dGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJqYW0iLAogICAgICAibmFtZSI6ICJqYW1haWNhbnNrIHBhdG9pcyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJqYSIsCiAgICAgICJuYW1lIjogImphcGFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAianciLAogICAgICAibmFtZSI6ICJqYXZhbmVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInlpIiwKICAgICAgIm5hbWUiOiAiamlkZGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrYWMiLAogICAgICAibmFtZSI6ICJqaW5ncG8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAieW8iLAogICAgICAibmFtZSI6ICJqb3J1YmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia2wiLAogICAgICAibmFtZSI6ICJrYWxhYWxsaXN1dCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrbiIsCiAgICAgICJuYW1lIjogImthbm5hZGEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAieXVlIiwKICAgICAgIm5hbWUiOiAia2FudG9uZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia3IiLAogICAgICAibmFtZSI6ICJrYW51cmkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicGFtIiwKICAgICAgIm5hbWUiOiAia2FwYW1wYW5nYW4iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia2siLAogICAgICAibmFtZSI6ICJrYXNha2hpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2EiLAogICAgICAibmFtZSI6ICJrYXRhbGFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia2VrIiwKICAgICAgIm5hbWUiOiAia2VrY2hpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImtoYSIsCiAgICAgICJuYW1lIjogImtoYXNpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImttIiwKICAgICAgIm5hbWUiOiAia2htZXIiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2dnIiwKICAgICAgIm5hbWUiOiAia2lnYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrZyIsCiAgICAgICJuYW1lIjogImtpa29uZ28iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiemgtQ04iLAogICAgICAibmFtZSI6ICJraW5lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJydyIsCiAgICAgICJuYW1lIjogImtpbnlhcndhbmRhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImt5IiwKICAgICAgIm5hbWUiOiAia2lyZ2lzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInJuIiwKICAgICAgIm5hbWUiOiAia2lydW5kaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrdHUiLAogICAgICAibmFtZSI6ICJraXR1YmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidHJwIiwKICAgICAgIm5hbWUiOiAia29rYm9yb2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia3YiLAogICAgICAibmFtZSI6ICJrb21pIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImdvbSIsCiAgICAgICJuYW1lIjogImtvbmthbmkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia28iLAogICAgICAibmFtZSI6ICJrb3JlYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjbyIsCiAgICAgICJuYW1lIjogImtvcnNpa2Fuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaHQiLAogICAgICAibmFtZSI6ICJrcmVvbCAoSGFpdGkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNycyIsCiAgICAgICJuYW1lIjogImtyZW9sIChTZXljaGVsbGVuZSkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY3JoIiwKICAgICAgIm5hbWUiOiAiS3JpbXRhdGFyaXNrIChreXJpbGxpc2spIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNyaC1MYXRuIiwKICAgICAgIm5hbWUiOiAiS3JpbXRhdGFyaXNrIChsYXRpbnNrKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrcmkiLAogICAgICAibmFtZSI6ICJrcmlvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhyIiwKICAgICAgIm5hbWUiOiAia3JvYXRpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia3UiLAogICAgICAibmFtZSI6ICJrdXJkaXNrIChrdXJtYW5qaSkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2tiIiwKICAgICAgIm5hbWUiOiAia3VyZGlzayAoc29yYW5pKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsbyIsCiAgICAgICJuYW1lIjogImxhb3Rpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibHRnIiwKICAgICAgIm5hbWUiOiAibGF0Z2FsaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxhIiwKICAgICAgIm5hbWUiOiAibGF0aW4iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibHYiLAogICAgICAibmFtZSI6ICJsYXR2aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxpaiIsCiAgICAgICJuYW1lIjogImxpZ3VyaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxpIiwKICAgICAgIm5hbWUiOiAibGltYnVyZ3NrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxuIiwKICAgICAgIm5hbWUiOiAibGluZ2FsYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsdCIsCiAgICAgICJuYW1lIjogImxpdGF1aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxtbyIsCiAgICAgICJuYW1lIjogImxvbWJhcmRpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibGciLAogICAgICAibmFtZSI6ICJsdWdhbmRhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImx1byIsCiAgICAgICJuYW1lIjogImx1byIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsYiIsCiAgICAgICJuYW1lIjogImx1eGVtYm91cmdzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtZyIsCiAgICAgICJuYW1lIjogIm1hZGFnYXNzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1hZCIsCiAgICAgICJuYW1lIjogIm1hZHVyZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibWFpIiwKICAgICAgIm5hbWUiOiAibWFpdGhpbGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibWFrIiwKICAgICAgIm5hbWUiOiAiTWFrYXNzYXIiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibWsiLAogICAgICAibmFtZSI6ICJtYWtlZG9uc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibWwiLAogICAgICAibmFtZSI6ICJtYWxheWFsYW0iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibXMiLAogICAgICAibmFtZSI6ICJtYWxheWlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtcy1BcmFiIiwKICAgICAgIm5hbWUiOiAibWFsYXlpc2sgKGphd2kpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm10IiwKICAgICAgIm5hbWUiOiAibWFsdGVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1hbSIsCiAgICAgICJuYW1lIjogIm1hbSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJndiIsCiAgICAgICJuYW1lIjogIm1hbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1pIiwKICAgICAgIm5hbWUiOiAibWFvcmkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibXIiLAogICAgICAibmFtZSI6ICJtYXJhdGhpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1oIiwKICAgICAgIm5hbWUiOiAibWFyc2hhbGxlc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtd3IiLAogICAgICAibmFtZSI6ICJtYXJ3YWRpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1mZSIsCiAgICAgICJuYW1lIjogIm1hdXJpdGlzayBrcmVvbCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtbmktTXRlaSIsCiAgICAgICJuYW1lIjogIm1laXRlaWxvbiAobWFuaXB1cmkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1pbiIsCiAgICAgICJuYW1lIjogIm1pbmFuZyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsdXMiLAogICAgICAibmFtZSI6ICJtaXpvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1uIiwKICAgICAgIm5hbWUiOiAibW9uZ29sc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibmhlIiwKICAgICAgIm5hbWUiOiAibmFodWF0bCAow7hzdGxpZ2UgSHVhc3RlY2EpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5kYy1aVyIsCiAgICAgICJuYW1lIjogIm5kYXUiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibnIiLAogICAgICAibmFtZSI6ICJuZGViZWxlIChzw7hyKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJubCIsCiAgICAgICJuYW1lIjogIm5lZGVybGFuZHNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5ldyIsCiAgICAgICJuYW1lIjogIk5lcGFsIGJoYXNhIChuZXdhcmkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5lIiwKICAgICAgIm5hbWUiOiAibmVwYWxzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJibS1Oa29vIiwKICAgICAgIm5hbWUiOiAiTktvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5vIiwKICAgICAgIm5hbWUiOiAibm9yc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibnVzIiwKICAgICAgIm5hbWUiOiAibnVlciIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJvYyIsCiAgICAgICJuYW1lIjogIm9rc2l0YW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJvciIsCiAgICAgICJuYW1lIjogIm9yaXlhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm9tIiwKICAgICAgIm5hbWUiOiAib3JvbW8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAib3MiLAogICAgICAibmFtZSI6ICJvc3NldGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwYWciLAogICAgICAibmFtZSI6ICJwYW5nYXNpbmFuIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInBhIiwKICAgICAgIm5hbWUiOiAiUGFuamFiaSAoZ3VybXVraGkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInBhLUFyYWIiLAogICAgICAibmFtZSI6ICJwYW5qYWJpIChzaGFobXVraGkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInBhcCIsCiAgICAgICJuYW1lIjogInBhcGlhbWVudG8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicHMiLAogICAgICAibmFtZSI6ICJwYXNodG8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicGwiLAogICAgICAibmFtZSI6ICJwb2xzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwdCIsCiAgICAgICJuYW1lIjogInBvcnR1Z2lzaXNrIChCcmFzaWwpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInB0LVBUIiwKICAgICAgIm5hbWUiOiAicG9ydHVnaXNpc2sgKFBvcnR1Z2FsKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJxdSIsCiAgICAgICJuYW1lIjogInF1ZWNodWEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicm9tIiwKICAgICAgIm5hbWUiOiAicm9tYW5pIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInJvIiwKICAgICAgIm5hbWUiOiAicnVtZW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJydSIsCiAgICAgICJuYW1lIjogInJ1c3Npc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2UiLAogICAgICAibmFtZSI6ICJzYW1pc2sgKG5vcmQpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNtIiwKICAgICAgIm5hbWUiOiAic2Ftb2Fuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2ciLAogICAgICAibmFtZSI6ICJzYW5nbyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzYSIsCiAgICAgICJuYW1lIjogInNhbnNrcml0IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNhdC1MYXRuIiwKICAgICAgIm5hbWUiOiAiU2FudGFsaSAobGF0aW5zaykiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2F0IiwKICAgICAgIm5hbWUiOiAiU2FudGFsaSAob2wgY2hpa2kpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInN6bCIsCiAgICAgICJuYW1lIjogInNjaGxlc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJuc28iLAogICAgICAibmFtZSI6ICJzZXBlZGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic3IiLAogICAgICAibmFtZSI6ICJzZXJiaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNobiIsCiAgICAgICJuYW1lIjogInNoYW4iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic24iLAogICAgICAibmFtZSI6ICJzaG9uYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzY24iLAogICAgICAibmFtZSI6ICJzaWNpbGlhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNkIiwKICAgICAgIm5hbWUiOiAic2luZGhpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNpIiwKICAgICAgIm5hbWUiOiAic2luZ2FsZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZ2QiLAogICAgICAibmFtZSI6ICJza290c2sgZ8OmbGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzayIsCiAgICAgICJuYW1lIjogInNsb3Zha2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzbCIsCiAgICAgICJuYW1lIjogInNsb3ZlbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNvIiwKICAgICAgIm5hbWUiOiAic29tYWxpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInN0IiwKICAgICAgIm5hbWUiOiAic290aG8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZXMiLAogICAgICAibmFtZSI6ICJzcGFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic3UiLAogICAgICAibmFtZSI6ICJzdW5kYW5lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzdXMiLAogICAgICAibmFtZSI6ICJzdXN1IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInN2IiwKICAgICAgIm5hbWUiOiAic3ZlbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInN3IiwKICAgICAgIm5hbWUiOiAic3dhaGlsaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzcyIsCiAgICAgICJuYW1lIjogInN3YXRpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRnIiwKICAgICAgIm5hbWUiOiAidGFkc2ppa2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0bCIsCiAgICAgICJuYW1lIjogInRhZ2Fsb2ciCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidHkiLAogICAgICAibmFtZSI6ICJ0YWhpdGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiZXItTGF0biIsCiAgICAgICJuYW1lIjogInRhbWF6aWdodCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiZXIiLAogICAgICAibmFtZSI6ICJ0YW1hemlnaHQgKHRpZmluYWdoKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0YSIsCiAgICAgICJuYW1lIjogInRhbWlsIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInR0IiwKICAgICAgIm5hbWUiOiAidGF0YXJpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGUiLAogICAgICAibmFtZSI6ICJ0ZWx1Z3UiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGV0IiwKICAgICAgIm5hbWUiOiAidGV0dW0iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGgiLAogICAgICAibmFtZSI6ICJ0aGFpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJvIiwKICAgICAgIm5hbWUiOiAidGliZXRhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRpIiwKICAgICAgIm5hbWUiOiAidGlncmluamEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGl2IiwKICAgICAgIm5hbWUiOiAidGl2IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRwaSIsCiAgICAgICJuYW1lIjogInRvayBwaXNpbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0byIsCiAgICAgICJuYW1lIjogInRvbmdhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImx1YSIsCiAgICAgICJuYW1lIjogInRzaGlsdWJhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNzIiwKICAgICAgIm5hbWUiOiAidHNqZWtraXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNlIiwKICAgICAgIm5hbWUiOiAidHNqZXRzamVuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2hrIiwKICAgICAgIm5hbWUiOiAidHNqdWt0c2ppc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY3YiLAogICAgICAibmFtZSI6ICJ0c2p1dmFzamlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0cyIsCiAgICAgICJuYW1lIjogInRzb25nYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0biIsCiAgICAgICJuYW1lIjogInRzd2FuYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0Y3kiLAogICAgICAibmFtZSI6ICJ0dWx1IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInR1bSIsCiAgICAgICJuYW1lIjogInR1bWJ1a2EiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGsiLAogICAgICAibmFtZSI6ICJ0dXJrbWVuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidHl2IiwKICAgICAgIm5hbWUiOiAidHV2aW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhayIsCiAgICAgICJuYW1lIjogInR3aSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0ciIsCiAgICAgICJuYW1lIjogInR5cmtpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZGUiLAogICAgICAibmFtZSI6ICJ0eXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInVkbSIsCiAgICAgICJuYW1lIjogInVkbXVydGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ1ZyIsCiAgICAgICJuYW1lIjogInVpZ3VyaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInVrIiwKICAgICAgIm5hbWUiOiAidWtyYWluc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaHUiLAogICAgICAibmFtZSI6ICJ1bmdhcnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInVyIiwKICAgICAgIm5hbWUiOiAidXJkdSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ1eiIsCiAgICAgICJuYW1lIjogInVzYmVraXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInZlIiwKICAgICAgIm5hbWUiOiAidmVuZGEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidmVjIiwKICAgICAgIm5hbWUiOiAidmVuZXRpYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ2aSIsCiAgICAgICJuYW1lIjogInZpZXRuYW1lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjeSIsCiAgICAgICJuYW1lIjogIndhbGlzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIndhciIsCiAgICAgICJuYW1lIjogIndhcmF5LXdhcmF5IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIndvIiwKICAgICAgIm5hbWUiOiAid29sb2YiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAieGgiLAogICAgICAibmFtZSI6ICJ4aG9zYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ5dWEiLAogICAgICAibmFtZSI6ICJ5dWthdGFuc2sgbWF5YSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ6YXAiLAogICAgICAibmFtZSI6ICJ6YXBvdGVjIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInp1IiwKICAgICAgIm5hbWUiOiAienVsdSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjaG0iLAogICAgICAibmFtZSI6ICLDuHN0bWFyaXNrIgogICAgfQogIF0sCiAgInRhcmdldExhbmd1YWdlcyI6IFsKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFiIiwKICAgICAgIm5hbWUiOiAiYWJraGFzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFjZSIsCiAgICAgICJuYW1lIjogImFjZWhuZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWNoIiwKICAgICAgIm5hbWUiOiAiYWNob2xpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFhIiwKICAgICAgIm5hbWUiOiAiYWZhciIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhZiIsCiAgICAgICJuYW1lIjogImFmcmlrYWFucyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzcSIsCiAgICAgICJuYW1lIjogImFsYmFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWx6IiwKICAgICAgIm5hbWUiOiAiYWx1ciIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhbSIsCiAgICAgICJuYW1lIjogImFtaGFyaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImFyIiwKICAgICAgIm5hbWUiOiAiYXJhYmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJoeSIsCiAgICAgICJuYW1lIjogImFybWVuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYXoiLAogICAgICAibmFtZSI6ICJhc2VyYmFqZHNqYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJhcyIsCiAgICAgICJuYW1lIjogImFzc2FtZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYXYiLAogICAgICAibmFtZSI6ICJhdmFyaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImF3YSIsCiAgICAgICJuYW1lIjogImF3YWRoaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJheSIsCiAgICAgICJuYW1lIjogImF5bWFyYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiYW4iLAogICAgICAibmFtZSI6ICJiYWxpbmVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJhbCIsCiAgICAgICJuYW1lIjogImJhbHV0c2ppIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJtIiwKICAgICAgIm5hbWUiOiAiYmFtYmFyYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiY2kiLAogICAgICAibmFtZSI6ICJiYW91bMOpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJhIiwKICAgICAgIm5hbWUiOiAiYmFzamtpcnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImV1IiwKICAgICAgIm5hbWUiOiAiYmFza2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJidHgiLAogICAgICAibmFtZSI6ICJiYXRhayBrYXJvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJ0cyIsCiAgICAgICJuYW1lIjogImJhdGFrIHNpbWFsdW5ndW4iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmJjIiwKICAgICAgIm5hbWUiOiAiYmF0YWsgdG9iYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiZW0iLAogICAgICAibmFtZSI6ICJiZW1iYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJibiIsCiAgICAgICJuYW1lIjogImJlbmdhbGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmV3IiwKICAgICAgIm5hbWUiOiAiYmV0YXdpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJobyIsCiAgICAgICJuYW1lIjogImJob2pwdXJpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJpayIsCiAgICAgICJuYW1lIjogImJpa29sIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJzIiwKICAgICAgIm5hbWUiOiAiYm9zbmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiciIsCiAgICAgICJuYW1lIjogImJyZXRvbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImJnIiwKICAgICAgIm5hbWUiOiAiYnVsZ2Fyc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYnVhIiwKICAgICAgIm5hbWUiOiAiYnVyamF0aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm15IiwKICAgICAgIm5hbWUiOiAiYnVybWVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNlYiIsCiAgICAgICJuYW1lIjogImNlYnVhbm8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2giLAogICAgICAibmFtZSI6ICJjaGFtb3JybyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJueSIsCiAgICAgICJuYW1lIjogImNoaWNoZXdhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImRhIiwKICAgICAgIm5hbWUiOiAiZGFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZmEtQUYiLAogICAgICAibmFtZSI6ICJkYXJpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImR2IiwKICAgICAgIm5hbWUiOiAiZGhpdmVoaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkaW4iLAogICAgICAibmFtZSI6ICJkaW5rYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkb2kiLAogICAgICAibmFtZSI6ICJkb2dyaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkb3YiLAogICAgICAibmFtZSI6ICJkb21iZSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkeXUiLAogICAgICAibmFtZSI6ICJEeXVsYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJkeiIsCiAgICAgICJuYW1lIjogImR6b25na2hhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImVuIiwKICAgICAgIm5hbWUiOiAiZW5nZWxzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJlbyIsCiAgICAgICJuYW1lIjogImVzcGVyYW50byIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJldCIsCiAgICAgICJuYW1lIjogImVzdGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJlZSIsCiAgICAgICJuYW1lIjogImV3ZSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJmYSIsCiAgICAgICJuYW1lIjogImZhcnNpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZqIiwKICAgICAgIm5hbWUiOiAiZmlqaWFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZmkiLAogICAgICAibmFtZSI6ICJmaW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJmb24iLAogICAgICAibmFtZSI6ICJmb24iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZnIiLAogICAgICAibmFtZSI6ICJmcmFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZnItQ0EiLAogICAgICAibmFtZSI6ICJGcmFuc2sgKENhbmFkYSkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZnkiLAogICAgICAibmFtZSI6ICJmcmlzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZ1ciIsCiAgICAgICJuYW1lIjogImZyaXVsaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImZmIiwKICAgICAgIm5hbWUiOiAiZnVsZnVsZGUiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZm8iLAogICAgICAibmFtZSI6ICJmw6Zyw7h5c2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZ2wiLAogICAgICAibmFtZSI6ICJnYWxpc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrYSIsCiAgICAgICJuYW1lIjogImdlb3JnaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImVsIiwKICAgICAgIm5hbWUiOiAiZ3Jlc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZ24iLAogICAgICAibmFtZSI6ICJndWFyYW7DrSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJndSIsCiAgICAgICJuYW1lIjogImd1amFyYXRpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImdhYSIsCiAgICAgICJuYW1lIjogImdhYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjbmgiLAogICAgICAibmFtZSI6ICJoYWtoYSBjaGluIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhhIiwKICAgICAgIm5hbWUiOiAiaGF1c2EiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaGF3IiwKICAgICAgIm5hbWUiOiAiaGF3YWlpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaXciLAogICAgICAibmFtZSI6ICJoZWJyYWlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJoaWwiLAogICAgICAibmFtZSI6ICJoaWxpZ2F5bm9uIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImhpIiwKICAgICAgIm5hbWUiOiAiaGluZGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaG1uIiwKICAgICAgIm5hbWUiOiAiaG1vbmciCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiaHJ4IiwKICAgICAgIm5hbWUiOiAiaHVuc3JpayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJiZSIsCiAgICAgICJuYW1lIjogImh2aXRlcnVzc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpYmEiLAogICAgICAibmFtZSI6ICJpYmFuIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImlnIiwKICAgICAgIm5hbWUiOiAiaWdibyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpbG8iLAogICAgICAibmFtZSI6ICJpbG9rYW5vIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImlkIiwKICAgICAgIm5hbWUiOiAiaW5kb25lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpdS1MYXRuIiwKICAgICAgIm5hbWUiOiAiSW51a3RpdHV0IChsYXRpbnNrKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpdSIsCiAgICAgICJuYW1lIjogIkludWt0aXR1dCAoc3RhdmVsc2UpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImdhIiwKICAgICAgIm5hbWUiOiAiaXJzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJpcyIsCiAgICAgICJuYW1lIjogImlzbGFuZHNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIml0IiwKICAgICAgIm5hbWUiOiAiaXRhbGllbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNhaCIsCiAgICAgICJuYW1lIjogImpha3V0aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImphbSIsCiAgICAgICJuYW1lIjogImphbWFpY2Fuc2sgcGF0b2lzIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImphIiwKICAgICAgIm5hbWUiOiAiamFwYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJqdyIsCiAgICAgICJuYW1lIjogImphdmFuZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAieWkiLAogICAgICAibmFtZSI6ICJqaWRkaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImthYyIsCiAgICAgICJuYW1lIjogImppbmdwbyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ5byIsCiAgICAgICJuYW1lIjogImpvcnViYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrbCIsCiAgICAgICJuYW1lIjogImthbGFhbGxpc3V0IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImtuIiwKICAgICAgIm5hbWUiOiAia2FubmFkYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ5dWUiLAogICAgICAibmFtZSI6ICJrYW50b25lc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrciIsCiAgICAgICJuYW1lIjogImthbnVyaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwYW0iLAogICAgICAibmFtZSI6ICJrYXBhbXBhbmdhbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrayIsCiAgICAgICJuYW1lIjogImthc2FraGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjYSIsCiAgICAgICJuYW1lIjogImthdGFsYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJrZWsiLAogICAgICAibmFtZSI6ICJrZWtjaGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia2hhIiwKICAgICAgIm5hbWUiOiAia2hhc2kiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia20iLAogICAgICAibmFtZSI6ICJraG1lciIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjZ2ciLAogICAgICAibmFtZSI6ICJraWdhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImtnIiwKICAgICAgIm5hbWUiOiAia2lrb25nbyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ6aC1DTiIsCiAgICAgICJuYW1lIjogImtpbmVzaXNrIChmb3JlbmtsZXQpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInpoLVRXIiwKICAgICAgIm5hbWUiOiAia2luZXNpc2sgKHRyYWRpc2pvbmVsbCkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicnciLAogICAgICAibmFtZSI6ICJraW55YXJ3YW5kYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJreSIsCiAgICAgICJuYW1lIjogImtpcmdpc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJybiIsCiAgICAgICJuYW1lIjogImtpcnVuZGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia3R1IiwKICAgICAgIm5hbWUiOiAia2l0dWJhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRycCIsCiAgICAgICJuYW1lIjogImtva2Jvcm9rIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImt2IiwKICAgICAgIm5hbWUiOiAia29taSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJnb20iLAogICAgICAibmFtZSI6ICJrb25rYW5pIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImtvIiwKICAgICAgIm5hbWUiOiAia29yZWFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY28iLAogICAgICAibmFtZSI6ICJrb3JzaWthbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImh0IiwKICAgICAgIm5hbWUiOiAia3Jlb2wgKEhhaXRpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjcnMiLAogICAgICAibmFtZSI6ICJrcmVvbCAoU2V5Y2hlbGxlbmUpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNyaCIsCiAgICAgICJuYW1lIjogIktyaW10YXRhcmlzayAoa3lyaWxsaXNrKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjcmgtTGF0biIsCiAgICAgICJuYW1lIjogIktyaW10YXRhcmlzayAobGF0aW5zaykiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAia3JpIiwKICAgICAgIm5hbWUiOiAia3JpbyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJociIsCiAgICAgICJuYW1lIjogImtyb2F0aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImt1IiwKICAgICAgIm5hbWUiOiAia3VyZGlzayAoa3VybWFuamkpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNrYiIsCiAgICAgICJuYW1lIjogImt1cmRpc2sgKHNvcmFuaSkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibG8iLAogICAgICAibmFtZSI6ICJsYW90aXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImx0ZyIsCiAgICAgICJuYW1lIjogImxhdGdhbGlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsYSIsCiAgICAgICJuYW1lIjogImxhdGluIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImx2IiwKICAgICAgIm5hbWUiOiAibGF0dmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsaWoiLAogICAgICAibmFtZSI6ICJsaWd1cmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsaSIsCiAgICAgICJuYW1lIjogImxpbWJ1cmdzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsbiIsCiAgICAgICJuYW1lIjogImxpbmdhbGEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibHQiLAogICAgICAibmFtZSI6ICJsaXRhdWlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsbW8iLAogICAgICAibmFtZSI6ICJsb21iYXJkaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImxnIiwKICAgICAgIm5hbWUiOiAibHVnYW5kYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsdW8iLAogICAgICAibmFtZSI6ICJsdW8iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibGIiLAogICAgICAibmFtZSI6ICJsdXhlbWJvdXJnc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibWciLAogICAgICAibmFtZSI6ICJtYWRhZ2Fzc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtYWQiLAogICAgICAibmFtZSI6ICJtYWR1cmVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1haSIsCiAgICAgICJuYW1lIjogIm1haXRoaWxpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1hayIsCiAgICAgICJuYW1lIjogIk1ha2Fzc2FyIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1rIiwKICAgICAgIm5hbWUiOiAibWFrZWRvbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1sIiwKICAgICAgIm5hbWUiOiAibWFsYXlhbGFtIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1zIiwKICAgICAgIm5hbWUiOiAibWFsYXlpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibXMtQXJhYiIsCiAgICAgICJuYW1lIjogIm1hbGF5aXNrIChqYXdpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtdCIsCiAgICAgICJuYW1lIjogIm1hbHRlc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtYW0iLAogICAgICAibmFtZSI6ICJtYW0iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiZ3YiLAogICAgICAibmFtZSI6ICJtYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtaSIsCiAgICAgICJuYW1lIjogIm1hb3JpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm1yIiwKICAgICAgIm5hbWUiOiAibWFyYXRoaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtaCIsCiAgICAgICJuYW1lIjogIm1hcnNoYWxsZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibXdyIiwKICAgICAgIm5hbWUiOiAibWFyd2FkaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtZmUiLAogICAgICAibmFtZSI6ICJtYXVyaXRpc2sga3Jlb2wiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibW5pLU10ZWkiLAogICAgICAibmFtZSI6ICJtZWl0ZWlsb24gKG1hbmlwdXJpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtaW4iLAogICAgICAibmFtZSI6ICJtaW5hbmciCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibHVzIiwKICAgICAgIm5hbWUiOiAibWl6byIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJtbiIsCiAgICAgICJuYW1lIjogIm1vbmdvbHNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5oZSIsCiAgICAgICJuYW1lIjogIm5haHVhdGwgKMO4c3RsaWdlIEh1YXN0ZWNhKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJuZGMtWlciLAogICAgICAibmFtZSI6ICJuZGF1IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm5yIiwKICAgICAgIm5hbWUiOiAibmRlYmVsZSAoc8O4cikiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibmwiLAogICAgICAibmFtZSI6ICJuZWRlcmxhbmRzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJuZXciLAogICAgICAibmFtZSI6ICJOZXBhbCBiaGFzYSAobmV3YXJpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJuZSIsCiAgICAgICJuYW1lIjogIm5lcGFsc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYm0tTmtvbyIsCiAgICAgICJuYW1lIjogIk5LbyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJubyIsCiAgICAgICJuYW1lIjogIm5vcnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm51cyIsCiAgICAgICJuYW1lIjogIm51ZXIiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAib2MiLAogICAgICAibmFtZSI6ICJva3NpdGFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAib3IiLAogICAgICAibmFtZSI6ICJvcml5YSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJvbSIsCiAgICAgICJuYW1lIjogIm9yb21vIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogIm9zIiwKICAgICAgIm5hbWUiOiAib3NzZXRpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicGFnIiwKICAgICAgIm5hbWUiOiAicGFuZ2FzaW5hbiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwYSIsCiAgICAgICJuYW1lIjogIlBhbmphYmkgKGd1cm11a2hpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwYS1BcmFiIiwKICAgICAgIm5hbWUiOiAicGFuamFiaSAoc2hhaG11a2hpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwYXAiLAogICAgICAibmFtZSI6ICJwYXBpYW1lbnRvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInBzIiwKICAgICAgIm5hbWUiOiAicGFzaHRvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInBsIiwKICAgICAgIm5hbWUiOiAicG9sc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicHQiLAogICAgICAibmFtZSI6ICJwb3J0dWdpc2lzayAoQnJhc2lsKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJwdC1QVCIsCiAgICAgICJuYW1lIjogInBvcnR1Z2lzaXNrIChQb3J0dWdhbCkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicXUiLAogICAgICAibmFtZSI6ICJxdWVjaHVhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInJvbSIsCiAgICAgICJuYW1lIjogInJvbWFuaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJybyIsCiAgICAgICJuYW1lIjogInJ1bWVuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAicnUiLAogICAgICAibmFtZSI6ICJydXNzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNlIiwKICAgICAgIm5hbWUiOiAic2FtaXNrIChub3JkKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzbSIsCiAgICAgICJuYW1lIjogInNhbW9hbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNnIiwKICAgICAgIm5hbWUiOiAic2FuZ28iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2EiLAogICAgICAibmFtZSI6ICJzYW5za3JpdCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzYXQtTGF0biIsCiAgICAgICJuYW1lIjogIlNhbnRhbGkgKGxhdGluc2spIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNhdCIsCiAgICAgICJuYW1lIjogIlNhbnRhbGkgKG9sIGNoaWtpKSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzemwiLAogICAgICAibmFtZSI6ICJzY2hsZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAibnNvIiwKICAgICAgIm5hbWUiOiAic2VwZWRpIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNyIiwKICAgICAgIm5hbWUiOiAic2VyYmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzaG4iLAogICAgICAibmFtZSI6ICJzaGFuIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInNuIiwKICAgICAgIm5hbWUiOiAic2hvbmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2NuIiwKICAgICAgIm5hbWUiOiAic2ljaWxpYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzZCIsCiAgICAgICJuYW1lIjogInNpbmRoaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzaSIsCiAgICAgICJuYW1lIjogInNpbmdhbGVzaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImdkIiwKICAgICAgIm5hbWUiOiAic2tvdHNrIGfDpmxpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2siLAogICAgICAibmFtZSI6ICJzbG92YWtpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic2wiLAogICAgICAibmFtZSI6ICJzbG92ZW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzbyIsCiAgICAgICJuYW1lIjogInNvbWFsaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzdCIsCiAgICAgICJuYW1lIjogInNvdGhvIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImVzIiwKICAgICAgIm5hbWUiOiAic3BhbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInN1IiwKICAgICAgIm5hbWUiOiAic3VuZGFuZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic3VzIiwKICAgICAgIm5hbWUiOiAic3VzdSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzdiIsCiAgICAgICJuYW1lIjogInN2ZW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJzdyIsCiAgICAgICJuYW1lIjogInN3YWhpbGkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAic3MiLAogICAgICAibmFtZSI6ICJzd2F0aSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0ZyIsCiAgICAgICJuYW1lIjogInRhZHNqaWtpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGwiLAogICAgICAibmFtZSI6ICJ0YWdhbG9nIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInR5IiwKICAgICAgIm5hbWUiOiAidGFoaXRpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmVyLUxhdG4iLAogICAgICAibmFtZSI6ICJ0YW1hemlnaHQiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYmVyIiwKICAgICAgIm5hbWUiOiAidGFtYXppZ2h0ICh0aWZpbmFnaCkiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGEiLAogICAgICAibmFtZSI6ICJ0YW1pbCIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0dCIsCiAgICAgICJuYW1lIjogInRhdGFyaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRlIiwKICAgICAgIm5hbWUiOiAidGVsdWd1IgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRldCIsCiAgICAgICJuYW1lIjogInRldHVtIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRoIiwKICAgICAgIm5hbWUiOiAidGhhaSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJibyIsCiAgICAgICJuYW1lIjogInRpYmV0YW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0aSIsCiAgICAgICJuYW1lIjogInRpZ3JpbmphIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRpdiIsCiAgICAgICJuYW1lIjogInRpdiIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0cGkiLAogICAgICAibmFtZSI6ICJ0b2sgcGlzaW4iCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidG8iLAogICAgICAibmFtZSI6ICJ0b25nYW5zayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJsdWEiLAogICAgICAibmFtZSI6ICJ0c2hpbHViYSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjcyIsCiAgICAgICJuYW1lIjogInRzamVra2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJjZSIsCiAgICAgICJuYW1lIjogInRzamV0c2plbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImNoayIsCiAgICAgICJuYW1lIjogInRzanVrdHNqaXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImN2IiwKICAgICAgIm5hbWUiOiAidHNqdXZhc2ppc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidHMiLAogICAgICAibmFtZSI6ICJ0c29uZ2EiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidG4iLAogICAgICAibmFtZSI6ICJ0c3dhbmEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidGN5IiwKICAgICAgIm5hbWUiOiAidHVsdSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ0dW0iLAogICAgICAibmFtZSI6ICJ0dW1idWthIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInRrIiwKICAgICAgIm5hbWUiOiAidHVya21lbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInR5diIsCiAgICAgICJuYW1lIjogInR1dmluc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiYWsiLAogICAgICAibmFtZSI6ICJ0d2kiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidHIiLAogICAgICAibmFtZSI6ICJ0eXJraXNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImRlIiwKICAgICAgIm5hbWUiOiAidHlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ1ZG0iLAogICAgICAibmFtZSI6ICJ1ZG11cnRpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidWciLAogICAgICAibmFtZSI6ICJ1aWd1cmlzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ1ayIsCiAgICAgICJuYW1lIjogInVrcmFpbnNrIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogImh1IiwKICAgICAgIm5hbWUiOiAidW5nYXJzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ1ciIsCiAgICAgICJuYW1lIjogInVyZHUiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidXoiLAogICAgICAibmFtZSI6ICJ1c2Jla2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ2ZSIsCiAgICAgICJuYW1lIjogInZlbmRhIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInZlYyIsCiAgICAgICJuYW1lIjogInZlbmV0aWFuc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAidmkiLAogICAgICAibmFtZSI6ICJ2aWV0bmFtZXNpc2siCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY3kiLAogICAgICAibmFtZSI6ICJ3YWxpc2lzayIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ3YXIiLAogICAgICAibmFtZSI6ICJ3YXJheS13YXJheSIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ3byIsCiAgICAgICJuYW1lIjogIndvbG9mIgogICAgfSwKICAgIHsKICAgICAgImxhbmd1YWdlIjogInhoIiwKICAgICAgIm5hbWUiOiAieGhvc2EiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAieXVhIiwKICAgICAgIm5hbWUiOiAieXVrYXRhbnNrIG1heWEiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiemFwIiwKICAgICAgIm5hbWUiOiAiemFwb3RlYyIKICAgIH0sCiAgICB7CiAgICAgICJsYW5ndWFnZSI6ICJ6dSIsCiAgICAgICJuYW1lIjogInp1bHUiCiAgICB9LAogICAgewogICAgICAibGFuZ3VhZ2UiOiAiY2htIiwKICAgICAgIm5hbWUiOiAiw7hzdG1hcmlzayIKICAgIH0KICBdCn0KKTs="}},"time_used":59,"timings":{"blocked":0,"dns":2,"connect":8,"send":0,"wait":25,"receive":0,"ssl":23},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/css2/custom.css","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.784Z","timestamp":1785128398784,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/css2/custom.css HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 1015\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 20:42:49 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"f94-67c3620e-8c8ff3ba047f3bec;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 461829\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: fd50e93544a1955de35d9f1b8429ab77-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":3988,"size_decoded":1586,"mime_type":"text/css","magic":"ASCII text, with CRLF line terminators","md5":"50015bdd7c46f5c7a91c5907a76cb632","sha1":"d3960b332219fb2d31de9e904b0caa2c1199d47a","sha256":"01f24b9df0222df4d3119d672f4eed87ed2f24923ddd56a89a9a27b945175c13","sha512":"17842fe4fe999f5fb04e2d85d3c0d7a7029a7724417cd6255e7e0c5a089138434eae689a3681d7c407d735209c7f85448afb3daa9aeb8d8bad9b7d9e5beac0eb","ssdeep":"","tlshash":"2381ed5ad6050087b133aab4ab7207aaf5b95427d70242797bdcb3948ff91bd8520fcc","first_seen":"2026-07-27T03:56:42.499268Z","last_seen":"2026-07-27T05:01:06.122561Z","times_seen":3,"resource_available":false,"data":"LmNvbC00IHsNCiAgICB3aWR0aDogNDklOw0KICAgIGJhY2tncm91bmQ6ICMyYTJkMzY7DQogICAgYm9yZGVyLXJhZGl1czogMTBweDsNCiAgICBwYWRkaW5nOiAzMHB4IDE1cHggMTVweCAxNXB4Ow0KfQ0KDQouY29sLTggew0KICAgIHdpZHRoOiA0OSU7DQogICAgYmFja2dyb3VuZDogIzJhMmQzNjsNCiAgICBib3JkZXItcmFkaXVzOiAxMHB4Ow0KICAgIHBhZGRpbmc6IDUwcHggMTVweCAxNXB4IDE1cHg7DQogICAgZGlzcGxheTogZmxleDsNCiAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KfQ0KDQoucm93IHsNCiAgICBkaXNwbGF5OiBmbGV4Ow0KICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgICBmbGV4LXdyYXA6IHdyYXA7DQp9DQoNCi5wbGFuLWJveCB7DQogICAgYmFja2dyb3VuZDogIzFhMWMyNDsNCiAgICBib3JkZXItcmFkaXVzOiAxMHB4Ow0KICAgIHBhZGRpbmc6IDIwcHg7DQp9DQoNCi5wbGFuLWltZyB7DQogICAgbWF4LXdpZHRoOiA2NXB4ICFpbXBvcnRhbnQ7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIHRvcDogNTAlOw0KICAgIGxlZnQ6IDUwJTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsNCn0NCg0KLmltZy1ib3ggew0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICB3aWR0aDogMTAwJTsNCn0NCg0KLmJveC10aXRsZSB7DQogICAgY29sb3I6IHdoaXRlOw0KICAgIGZvbnQtc2l6ZTogMjJweCAhaW1wb3J0YW50Ow0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICBwYWRkaW5nLXRvcDogMzBweDsNCn0NCg0KLnBsYW4tYm94MiB7DQogICAgY29sb3I6ICNmZmY7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzJhMmQzNjsNCiAgICBmb250LXdlaWdodDogNTAwOw0KICAgIHBhZGRpbmc6IDhweCAxNXB4Ow0KICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICBmb250LXNpemU6IDE1cHg7DQogICAgZGlzcGxheTogZmxleDsNCiAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgIG1hcmdpbi10b3A6IDEwcHg7DQp9DQoNCi5wbGFuLWJveDItdGl0bGUgew0KICAgIG1hcmdpbi1sZWZ0OiAxMHB4Ow0KfQ0KDQouZGVzYy1ib3gtcm93IHsNCiAgICBkaXNwbGF5OiBmbGV4Ow0KICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsNCiAgICBmbGV4LXdyYXA6IHdyYXA7DQogICAgd2lkdGg6IDgwJTsNCn0NCg0KLmRlc2MtY29sLTQgew0KICAgIHdpZHRoOiAxMDAlOw0KfQ0KDQouZGVzYy1jb2wtOCB7DQogICAgd2lkdGg6IDY2JTsNCn0NCg0KLmRlc2MtYm94LXRpdGxlIHsNCiAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDsNCiAgICBmb250LXdlaWdodDogNTAwOw0KICAgIGNvbG9yOiAjZmZmZmZmOw0KICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSg5LCA1MywgMTAxLCAwKSAzJSwgcmdiKDM4IDU2IDk0KSAzJSwgcmdiYSg2LCAzNiwgNzUsIDEpIDQ4JSwgcmdiKDM4IDU2IDk0KSA5NyUsIHJnYmEoOSwgNjAsIDEyMCwgMCkgOTclKTsNCiAgICBwYWRkaW5nOiAwcHg7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgIGxpbmUtaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5wZXJjZW50LXRpdGxlIHsNCiAgICBtYXJnaW46IDMwcHggMHB4Ow0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgY29sb3I6IHdoaXRlOw0KICAgIHotaW5kZXg6IDEwOw0KICAgIGZvbnQtc2l6ZTogMjBweCAhaW1wb3J0YW50Ow0KfQ0KDQoucGVyY2VudC10aXRsZTo6YmVmb3JlIHsNCiAgICBjb250ZW50OiAiIjsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vLi4vLi4vdGhlbWUvcHJvdG9uL2Fzc2V0cy9pbWFnZXMvcGxhbmltZy1iZy5odG1sKTsNCiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsNCiAgICB3aWR0aDogMTAwJTsNCiAgICBoZWlnaHQ6IDEwMHB4Ow0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICBtYXgtd2lkdGg6IDEwMHB4Ow0KICAgIGluc2V0OiAwOw0KICAgIHRvcDogNXB4Ow0KICAgIG1hcmdpbjogYXV0bzsNCiAgICB6LWluZGV4OiAtMTsNCn0NCg0KLmRlc2MtcGxhbi1kZXNjIHsNCiAgICBtYXJnaW46IDE1cHggMHB4IDBweDsNCiAgICBiYWNrZ3JvdW5kOiAjMWYyMTJiOw0KICAgIHBhZGRpbmc6IDEwcHg7DQogICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KfQ0KDQouZGVzYy1zcGFuIHsNCiAgICBmbG9hdDogcmlnaHQ7DQogICAgY29sb3I6ICM1MGFjZmY7DQp9DQoNCi5kZXNjLXAgew0KICAgIGNvbG9yOiAjZmZmZmZmOGE7DQogICAgZm9udC1zaXplOiAxNHB4Ow0KfQ0KDQouZGVzYzItcCB7DQogICAgdGV4dC1hbGlnbjoganVzdGlmeTsNCiAgICBmb250LXNpemU6IDEzcHg7DQogICAgZm9udC13ZWlnaHQ6IDMwMDsNCiAgICBwYWRkaW5nOiA4cHggMHB4Ow0KICAgIGxpbmUtaGVpZ2h0OiAyM3B4Ow0KICAgIGNvbG9yOiAjZmZmZmZmOGE7DQogICAgZGlzcGxheTogaW5saW5lLWZsZXg7DQp9DQoNCi5kZXNjMi1wb2ludCB7DQogICAgd2lkdGg6IDE2cHggIWltcG9ydGFudDsNCiAgICBoZWlnaHQ6IDE2cHggIWltcG9ydGFudDsNCiAgICBtYXJnaW4tdG9wOiA2cHg7DQogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Ow0KfQ0KDQpAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsNCiAgICAuY29sLTQgew0KICAgICAgICB3aWR0aDogMTAwJTsNCiAgICB9DQogICAgLmNvbC04IHsNCiAgICAgICAgd2lkdGg6IDEwMCU7DQogICAgICAgIG1hcmdpbi10b3A6IDIwcHg7DQogICAgfQ0KICAgIC5wbGFuLWJveDIgew0KICAgICAgICB3aWR0aDogMzAlOw0KICAgICAgICBtYXJnaW46IDVweDsNCiAgICB9DQogICAgLnBsYW4tYm94LXJvdyB7DQogICAgICAgIGRpc3BsYXk6IGZsZXg7DQogICAgICAgIGZsZXgtd3JhcDogd3JhcDsNCiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQogICAgfQ0KfQ0KDQpAbWVkaWEgKG1heC13aWR0aDogNTc1cHgpIHsNCiAgICAucGxhbi1ib3gyIHsNCiAgICAgICAgd2lkdGg6IDQ1JTsNCiAgICAgICAgbWFyZ2luOiA0cHg7DQogICAgfQ0KICAgIC5wbGFuLWJveDItdGl0bGUgew0KICAgICAgICBmb250LXNpemU6IDE0cHg7DQogICAgfQ0KICAgIC5kZXNjLWNvbC00IHsNCiAgICAgICAgd2lkdGg6IDEwMCU7DQogICAgfQ0KICAgIC5kZXNjLWNvbC04IHsNCiAgICAgICAgd2lkdGg6IDEwMCU7DQogICAgfQ0KICAgIC5oZWFkLWJ1dCB7DQogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4IDhweCAxMnB4ICFpbXBvcnRhbnQ7DQogICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50Ow0KICAgIH0NCn0NCg0KLmhlYWQtYnV0IHsNCiAgICBmb250LWZhbWlseTogdmFyKC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOw0KICAgIGZvbnQtc2l6ZTogdmFyKC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsNCiAgICBmb250LXdlaWdodDogdmFyKC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC13ZWlnaHQpOw0KICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1saW5lLWhlaWdodCk7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7DQogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEyMGRlZywgIzgyRThGRiAtNC4zOCUsICMxMjYyRkYgNjUuNzklKTsNCiAgICBib3gtc2hhZG93OiAwcHggMHB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7DQogICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCA2cHggNnB4Ow0KICAgIHBhZGRpbmc6IDhweCAyNHB4IDhweCAyNHB4Ow0KICAgIGNvbG9yOiB3aGl0ZTsNCn0NCg0KLmJveC1zdGF0IHsNCiAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZmZmZmM2Q7DQogICAgcGFkZGluZzogMjBweDsNCiAgICBib3JkZXItcmFkaXVzOiAxMnB4Ow0KfQ=="}},"time_used":93,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":93,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/2023/12/bg-testimonial.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.167Z","timestamp":1785128399167,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/2023/12/bg-testimonial.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/post-95fea.css?ver=1706574923\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\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\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: image/webp\r\ncontent-length: 3138\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 669afa3ae42f277ce0170e1878f3f9bb-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.032\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":3138,"size_decoded":3460,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"ad2e41ac55634f9830d83cdc5595bf87","sha1":"5deda0fcf8fee303b2b4df82c7f8fa56522225a8","sha256":"75bf31e7c44e1b656035ce8bac1c599af2c0cbee1e70ba7be7596b3fe96211fe","sha512":"cbeb0a16e2f14367e67cc0e0f45b33c10d649305783549163bd7119d0e58a7941413bacd01eaddbe0e6ed10b531de5deafd19abd0d71e5fd1011d5309aee99ea","ssdeep":"","tlshash":"9a51cf44853344fdc271297864f26a9df9d834c6ae98807d23e982be4ec3323857acf5","first_seen":"2026-07-27T03:56:42.486364Z","last_seen":"2026-07-27T05:01:06.134083Z","times_seen":3,"resource_available":false,"data":"UklGRjoMAABXRUJQVlA4WAoAAAAIAAAAPwYAuQIAVlA4IFoLAAAQJAGdASpABroCPlEmkEcjoaGhIDCoMHAKCWlu9ScPDeAYod/8E/84eXTR9OZKvzxZa/Zv9/5/+3r//kZKpH/6AA2n1P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G1DnGUA91P9G0tR9bGrKXEFsBH+jahzjKAe6n+jahtkmLqf6NqHOMh0Y7qV5YB7qf6NqHOMoB7qf6NqHOLjmjDn7QsezoGgIy5peUbUOcZQD3U/0bUOcXjGMQmynBGSGVnUavP9G1DnGTu4PG4gtQKohWtF4skbhtQ5xlAPdT/RtQ5xlAPdT/RiUtoCkQHEOwUnDsnEI91P9G1DnGUA91P9G0sv7NbZTK8cUMofcE2vLAPdT+9QPFg4bvL8uyICsMsjcz1P9G1DnGUA91P9G1DnGUA0QKiLHYZX7lI62UsPSYEI91P9G1DnGUA91P9G1BiDUou3YUKNFfcByb42oc4ygGh2hRGiaEEI89FVy7PX5kYup/o2oc4ygHup/o2oc4yd07o5xlAPdT/RtQ5xlAPdT7kN4HqrF5YB7qf5+Z2t241VgsveTv+5rljCPdT/RtQ5xlAPdT/RtQ5xlAPdT/RtQ5xlAPdT/RtQ5xlAPdT/RtQ5xkNkUrrZ5TaXMHolEpTDHOMoB7qf6NqHOMoB7qf6NqHOMoB7qf6NqHOMoB7qf6NqHOMoB7qf6NiMnfq11ZZ9VmQejOH7ngfbF6XT6NqHOMoB7qf6NqHOMoB7qf6NqHOMoB7qf6NqHOMoB7qf6NqHOMoB7qanHiAM2FwD3BTVpa3zWNqHOMoB7qf6NqHOMoB7qf6NqHOMoB7qf6NqHOMoB7qf6NqHOMoB7pli0QDaejtoQj3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQDRGt8bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bUOcZQD3U/0bSxxqysRM0Hy1jahzjKAe6n+jahzjKAe4CXPwvLAPdT/RtQ5xlAPdT/RtQ5xlAPdT/RsQ/dwYiSKtCtJ++YFzkiqMoB7qf6NqHOMoB7qf5+IAeLBVjtAXitsemU2gI/0bUOcZQD3U/0bUOcZQD3U/0bUOcZO5E4chkkz278yd+R6FipPU/0bUOcZQD3U/0bUOcAQAeLBVjtAG1vCVWnSewxlJi6JVGUA91P9G1DnGUA91P9G1DnGUA91P7xtSDhJG8vxf0rSfeyFl+WAe6n+jahzjKAe6n94gA8WCrHaCx6gceTyAe2mZg1OuaWqC49P2ep/o2oc4ygHup/o2oc4ygHup/o2ocwOaoLuZCNCJZaeJJkh2v8LywD3U/0bUOcZQD3TKXdgJVFUxCnFseJSorUG0A4j+WsdJP9G1DnGUA91P9G1DnGUA91P7xgqWSgdSqywD3VlLB43eEV+OtnGq9aSTJDtf4XlgHup/o2oc4ygHup9yBpRWBhXO8yaRP+vWArQ8WDhu8vrMUA91P9G1DnGUA91P9G1DnGT/RgWNClHL3luesJG1DmBzVBgMAkmAQ9/heWAe6n+jahzjKAe6n+fj5VqGWDY2yggeLBw3dpN8bUOcZQD3U/0bUOcZQD3U/0bSyb6JF6uwWNQQ5bAR/o2oc4ygHup/o2oc4ygHup/o2IlOx/wj3U/0bUOcZQD3U/0bUOcZQD3U+5MXKKCLkqRRlAPdT/RtQ5xlAPdT/RtQ5xlAPdT/RtQ5xlAPdT/RtQ5xlAPdT/RtQ5xlAPdMgAD+/0b7/1bb2bovcKrNsAA15YEAAAAAAAAAANXFi+TUqcOQv+OXrGhFvislN5lQIfgFJwpKWBzfX5kY9aAx2mQuJaTg5fyP1JwI2PaBFpBtphHMihKycpFuIg6JhBp33ZjZAHK+8er0eM4psbKaAB/AuLlIEA014dqjJUWRCcxLPUxduzGyABDJ0uUPyV5Fcro33RI1n63KooVbI+EGCFewdKgNfHdVQE4AAY+BK0dy6pX7Y8fiIaAAEXUF0m85woSjj8PtQAAHOfBdpJ1NdAoZnnPTQN2c+jvex3/sAAQkDddfFLISU4EABvmFJgwLBmYPfBiLRKRaCUtBeSQItCJFmQAAqILcx1cvkhLabmF5P5bFSLPo4UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdf4yAtwAGba3ASjH8qmowIUbeRCCZCU1uQILtc97Wi/YE+ygf0nfhwZdSTOf0CELHq9Gn38LZKIYUV8PkoIWqgw6la5MdSBYwbfgQO/YwEJ4QxOzFltP4F1LqBIWuFvsqolkUdXYrmtyqfPaJcbaVl58cSBTcHk2WUboNgRaec8H0/issn3r+rMTIOFEMqL1CxXc2Mw8baVl58cSAQNfvoAZdZgxJWZxgBPIaOBFn/EWb92uZ9f3YTgQyol8tJ2YlPECOabAzgj2bxBN5wFuumKJ6Sf8Ag65YAPwdgSrV560AAAAAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAEAGAAADoAQAAQAAALoCAAAAAAAA"}},"time_used":62,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":62,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_42x16dp.png","fqdn":"www.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":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.677Z","timestamp":1785128399677,"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 /images/branding/googlelogo/1x/googlelogo_color_42x16dp.png HTTP/1.1\r\nHost: www.gstatic.com\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, i\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\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 910\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:14 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:14 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 02 Nov 2023 22:48:00 GMT\r\ncontent-type: image/png\r\nvary: Origin\r\nage: 402586\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":910,"size_decoded":1583,"mime_type":"image/png","magic":"PNG image data, 42 x 16, 8-bit/color RGBA, non-interlaced","md5":"efa6bb2bfe459bc6f4bdafa3db0383f6","sha1":"52d15ce52fe50643e542c17812de43f4ed1b6ee0","sha256":"6318394f737c66f0e2ccfcd88e3935c6667633a1b95fa29fba2b75431d55eef2","sha512":"e23c04d8997f5c2f92070e09261b7ee50d9df8753f45cf66f604f0874ffa8d99e947c97c528ec02a2c3fbe8e43d840b343a7d0225532980d5da95031216415b7","ssdeep":"","tlshash":"491184a73cd1dc6854a47a87aa91b864ec250f1b91a220981237b42277313444fdc8f7","first_seen":"2023-04-05T07:39:29Z","last_seen":"2026-07-27T17:47:56.708653Z","times_seen":54918,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAACoAAAAQCAYAAABgIu2QAAADVUlEQVR4AcxUA9AdPRRNbdu2+7K//+4mW9vWqNbYU2z21bZt27Zt+6nK5lUftrkPO7V1Zu7iZnJycoUc2HYC4hZVKROjqCnmEdMaoDJRHv1g4HmNKuCFjVX0OajeO5CWML5eCrSlnaGMr5VCr4X+mdXrhwpd0GgKXtDgAPoUIJIgTDPFE42JalF37952QspE+6rG0zy/hVDdsDSInHy3Qp8Jr6pk99A/s7333ttRdrD3ramDRHbd/STTp4QG6F+5fNUq5kCvg5qWmxr8qWuincTxsWAu1bRKR42avCT4H1TFeXxU2ePTFRvMo7t2AmlI4ObkeWM2J9kTsyWJDSa/d8ZvSRFaU3vzzJohNkFA5Fnx8sz9mmGJt4XeVV2ZvTreFuWXZy29rqrJEYAwMUYKuYccgM+aAKRR0wweayOUwEdc++Tm034dK/e1in96CT7nocoO20YJpLh9MVsSnX65ObHyclviP+X3ORAbvri1kjJ+mxi8EmWiIjHFKeB9W6hXV+Z7iXITuMF8RBHyPDeKkHSDTeqAYO7XU6SavDgYYWKEjEYgoP6RG27pp7iOUwI6bgQ+MShn+XAkkzprMZuTNgLfxlmNC0AUNca7OIEwecP3CZXCglLsCMk7xEtcDyAwcAYC/GfyLHKTRQ2xEBoIvYbave2U0n8exhWkPZKS2o7Qyrgh+F70z1khnO5EzlrMpqQNwbdhVuvC4cwEO0bXNBas9yGhYF6qTPRWUd4ZjRDVJprJ42TktgEJzE/ZXM3k/0kp9CExHheC1Huo67CPuo7fr4JLy2YqC2Ughe6NpP6wTPfxFxuTlH6xJUlZKAOoWeCH0QfjTmVBHM4SP/Zeoboy20OUu16C//GSioW8FM/1UNwavQ4pVKUmP/x6bRJTbAdiFAFslkTHosXuJcqhe6RCPlh7tjlZwZhNiY46zbQpycH4rcnzRUuJGmKPw834ifcJffzffxl8FG8A7ohd9tGKFdEHR0g/q4wzRt5CKLI6LggG36+vQWRB8LONyQrAt8PZ25ta7/+sIBhMFBnd7pAp9AFAP/gJLmb3RgnRz4QUNhm6HsqKuIN1iclvUWZNQ78b/hnoT0MMMVsz+Qtq8JfQuGrvR+nR74omi+xEYOjVBgEYBQDoQD6ep9ySZwAAAABJRU5ErkJggg=="}},"time_used":16,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/invest.svg","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.862Z","timestamp":1785128398862,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/invest.svg HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/svg+xml\r\ncontent-length: 392\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"34b-67c3620e-5e3eef45a722d9bb;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 810112d4b2841d70fc646827f17f0c13-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.020\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":843,"size_decoded":967,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"f092d4d1d188a953a6e14911d84a1c1e","sha1":"5f3cbd753e098899725f302c03d55873b7e4b434","sha256":"66678e5213d6c59a8baf0f11659510d2b4ed2290b56f1bebd225942e0112bac0","sha512":"4d035e221338e188c7aa30b58d71d50792d1470ce8cec6b65001e335287944990a88ea3c04c32551670e80ac4fb3871b8c2f0a6700ff4497dea733be4938f494","ssdeep":"","tlshash":"71016bb5d6b7c8b6422a8343df39490156a5f063d22a6504789f3110af4389dde6a3de","first_seen":"2026-07-27T03:56:42.511401Z","last_seen":"2026-07-27T05:01:06.156918Z","times_seen":3,"resource_available":false,"data":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iX9Ch0LvQvtC5XzIiIGRhdGEtbmFtZT0i0KHQu9C+0LkgMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0xLCAuY2xzLTIgewogICAgICAgIHN0cm9rZS13aWR0aDogMHB4OwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6ICMzODkwZmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIj4KICAgIDxnPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTIiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIi8+CiAgICAgIDxnIGlkPSJEOTVfRmluYW5jZV9ncmFwaGljX21vZGVyYXRlIiBkYXRhLW5hbWU9IkQ5NSwgRmluYW5jZSwgZ3JhcGhpYywgbW9kZXJhdGUiPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTc4LjMsNzcuNmgtNS42di0yMC42YzAtLjMtLjMtLjYtLjYtLjZoLTcuNWMtLjMsMC0uNi4zLS42LjZ2MjAuNmgtOC44di0zNS42YzAtLjMtLjMtLjYtLjYtLjZoLTcuNmMtLjMsMC0uNi4zLS42LjZ2MzUuNmgtOC44di0yNi44YzAtLjMtLjMtLjYtLjYtLjZoLTcuNWMtLjMsMC0uNi4zLS42LjZ2MjYuOWgtNy41VjIwLjhjMC0uMy0uMy0uNi0uNi0uNnMtLjYuMy0uNi42djU3LjVjMCwuMy4zLjYuNi42aDU3LjVjLjMsMCwuNi0uMy42LS42cy0uMy0uNy0uNi0uN1oiLz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+"}},"time_used":100,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":100,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/i/productlogos/translate/v14/24px.svg","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.676Z","timestamp":1785128399676,"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/i/productlogos/translate/v14/24px.svg 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: 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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, i\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\ncontent-encoding: gzip\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\ncontent-length: 3340\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 10:10:10 GMT\r\nexpires: Fri, 23 Jul 2027 10:10:10 GMT\r\ncache-control: public, max-age=31536000\r\nage: 326990\r\nlast-modified: Wed, 20 Apr 2022 14:24:23 GMT\r\ncontent-type: image/svg+xml\r\nvary: Accept-Encoding\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":6225,"size_decoded":4178,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"2bd5c073a88b83ed74db88282a56ddfb","sha1":"d0ebfc376f8c6a44a8d4cd216817dcd7d0c33650","sha256":"ab5c23a05e39deed14d9d8262b0dce9f024f86105a27196cad37d14a3f516e09","sha512":"5c6c4a92e93fc0f6a675658cc84f6187fdebd3eee94efd07e24658736cba598f3bc7156b19834b13fb44c1d43fcb7df9fcca7f0a453037e30da76ba8f4b23b89","ssdeep":"96:+R2K3Z4n7tyVwip82hezk6227gLFoXhu1XuE20ot+pVY3YptWDzOzgXK3Zx:ql3KnxyGGMzb7noR20NTww33","tlshash":"c1d1e6f19309d815cd6a83d8cd9b8002aa1f25ddd50ac6cc7639fb3bd1a50eb1d2d7a4","first_seen":"2023-04-06T21:34:37Z","last_seen":"2026-07-27T17:47:56.579076Z","times_seen":77204,"resource_available":false,"data":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxkZWZzPjxwYXRoIGQ9Ik0yMS41IDVoLTkuMTdMMTEgMUgyLjVDMS42OCAxIDEgMS42OCAxIDIuNXYxNWMwIC44My42OCAxLjUgMS41IDEuNWg5LjE3TDEzIDIzaDguNWMuODIgMCAxLjUtLjY4IDEuNS0xLjV2LTE1YzAtLjgzLS42OC0xLjUtMS41LTEuNXoiIGlkPSJhIi8+PC9kZWZzPjxjbGlwUGF0aCBpZD0iYiI+PHVzZSBvdmVyZmxvdz0idmlzaWJsZSIgeGxpbms6aHJlZj0iI2EiLz48L2NsaXBQYXRoPjxnIGNsaXAtcGF0aD0idXJsKCNiKSI+PGltYWdlIGhlaWdodD0iMzEiIG9wYWNpdHk9Ii4yIiBvdmVyZmxvdz0idmlzaWJsZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMyAxKSIgd2lkdGg9IjI5IiB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUIwQUFBQWZDQVlBQUFBYlc4WUVBQUFBQ1hCSVdYTUFBQXNTQUFBTEVnSFMzWDc4QUFBQSBHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCUUJKUkVGVWVOcThWOHR1MjBZVXZYZG0rTENrIFJLaU13STFURkVYaFZaSmQxZ1c2Nnhla3Y5RFBxUHN2WGRVL1VhRHJvSnNrS3krQ0luQ2NHcEt0RnkyU00vZjJERVhaaWEwb2R0S1cgQWtGSjh6aHp6bjNTMFljdnBzKzc5RU1EYmozWWZndjRFTStYVE4vZkVPYjNaZzNBWG1xN2o2NEQ1L2UveC9FZnpaTW5YNWp4K0xGWiBMTHlwNnlORE96c2tZYjZSdWJGZHBiZHZLVWwySmMrZDlQdlA1ZG16VXlINlRWb1lYUU9xK0g1Zzl2YitjT05zTzltYUxwSXl5WlBVIGtaTkFwcG1oOVZwZzVrU1h3Q1NWSjUvVmkvcjhUbDczeTJGOWVQaWRKM29hZ2ErQjR2a1VnRis2RVcxbmR6MTFndk5kRGRMMWJETnIgeUtrQ1dPMTZ0aHlVR1dJSWVhZTJaR3ZuMW9mNXhGRXhvR0Y1ZUhnTTRBTlpzVzAzMlRmMDVNamVXK3htTktlZWRlV0FnOXRteXdQTSA2ckdZek9BUEJTZlE1U3MwTmY0cEFtUnJTbUJQMWVoSXhRNkRweEYxYVhhU0g1WDBiRGNBUjFhT3hMUlB0UGRyWnJ3bmQ1NVN4M2d6IElNTzcyT3dCcTlrbW94MFJTa0hIUk54clJKV0ZEYlFYS3BSMXhONGVPZngwTnFuTWRGSHVsWS9ydy8xUkFFNWNyRXZ2ZmZHQ3ZYL0UgVlVvT0MzTW0yNGVhTzZUeU5aamVCNUUrc0RMTXQydENxWkVXOGxjZ1BTVTJ4MEloS2xBWW9UUDR4VVR1ZVVNdkh2Skszb3VROGZmSCBIUDYySnBHZWcvVlNZY2lxTkFEYkhReHZZNWV0ZHI2NXloTlhsRzJCNXhqemdXZkhKb1NlWjVPbGJ1YXErY3pReVlTdnhhbDcwMWRKIFNXb2lnUk5xWEl0ak9SaHNDK3g3NE5mRHRQUTZhR1BrZ0FVbEdST3BUS0JRUjRnYkIxeDZmanozL0RLOEdzb0hqL1NWRzZwSkFDaSsgTmhRZEFwc1FKRlBDZWxpWUtJbWdlRUpteWxjM1h6dzV5cDl4bklNWU1rWnQ5SGpWaEsvR2VIdHFaSTUrS1VWSlh0U1ZRY3djWURQbyBGSTkzamhXK0RXU2p6WnJHdHMwTlFTd09aVEZvTWFNQmFseTZDVEZaRzJLWFV0M1oxYVF6QzM2cktyRkowY2dVYjZhWlJudVJ3anRJIGxvN0VxM0NMV1N5YTRlSjdhK1ROMmV1ZHZDbGJrMTdJdEZlcG9RTHJweVF5eGtaVGpCWUlpd3FuWHdGLzFtWGVyUWl2dHUrSG9ocDcgdGY3Y1dKbkNUZ0JsZUNRM2JCRWFQaWFDVFJYa05xQkx1OTU1bzJrditOeklJb2dEa0dsQUVmdXdMNTFEWWg5ejNzZEsxeTFBTHlYMiBGeEpMSzNGajMzOU5Zbk8xNlA0ZkVsOEo5SFVTYXl0eFRIRlJZcXJobko2MEFaVTJsTnBETk9VTGFaSDFGcUJYSlM0TGhOOEVDZW9zIE1nYkxXVXgzQUsreHY0K1pLTjZBQ3h4bFp3MHhEemRaS2o3WjZFMUFMeVErOTFXTmNsd2dJVTZ3d1JsaTd4VGt6akE4QlFDU0J4ZkwgK01VaGxuR01ETVlsZnNQdVdzZFNGNEdaYTIyNmlvMU1XNG56UHZrUWJXZ0RuSWxHWUhTQ1RVK1FiT0k5Qk50VFRCN2h4bUVJaCtGVCBLREpHWm9pVnBrQTZLbU5SajkwRTBkdVBObWFOeEoyOVFWaDBSeFdzT01OUmgwSnlESWs3TEJLMWl3NjJCVjFjTEthWHBZMm4rSFdzIEdrWmlkT1pFeXNwM2ZESzRLM1R2SzkwRWlzR2Y2YkQvazZDVHFEcEJadDZFb1RXY1NYUVU1bWhYMUZ2Tm0vWFJpeVFpYXcwWEttRGkgRVhMOWtkVjZGTU11OWt2cHlVRG9CM1NJQjV1WXhwMitmU3I5UDdOYTdJT2lwc1VweFo1QnFJU05UdzFyRnk2YkdyS29JakFiUzl1dSBFS29UMk5vd3FpV0o3Y3FNMEtEOWxUOFgydCtsS3ozUzJsNFovZTR2OXB0WHpjRnluOVpkOG5sSEhjalhhTlpzYUN2S3FsVzZkV1AyIElicjdzZEUyZTY4SDlzeStUdk41SjZud3lkTFV2dHVXZm1vTHVnSDRaZzM0SnpiYkh3Ty93YXZHKzY4VmRKUFhpaHVDL3pjdlVKKzAgMFcydWZ3UVlBR0hLSzJDRk1JcnpBQUFBQUVsRlRrU3VRbUNDIi8+PHJhZGlhbEdyYWRpZW50IGN4PSI3LjM5NCIgY3k9IjUuNDM3IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9ImMiIHI9IjIzLjQxNiI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjRUVFIi8+PHN0b3Agb2Zmc2V0PSIuNDMyIiBzdG9wLWNvbG9yPSIjRTZFNkU2Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRTFFMUUxIi8+PC9yYWRpYWxHcmFkaWVudD48cGF0aCBkPSJNMTMgMjNoOC41Yy44MiAwIDEuNS0uNjggMS41LTEuNXYtMTVjMC0uODMtLjY4LTEuNS0xLjUtMS41SDdsNiAxOHoiIGZpbGw9InVybCgjYykiLz48L2c+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBkPSJNMTggMTF2LTFoLTF2MWgtMy43NXYxaDUuMzJjLS4yLjQ5LS42IDEuMy0xLjMyIDIuMTQtLjUxLS42LS44Ni0xLjE4LTEuMS0xLjY0aC0xLjExYy4zNi44NC45IDEuNjYgMS41MiAyLjM4bC0yLjYgMi41OC43MS43MSAyLjU4LTIuNTggMi41OCAyLjU4LjcxLS43MS0yLjYtMi41OGMuNzQtLjg2IDEuMzMtMS44NSAxLjY4LTIuODhIMjF2LTFoLTN6IiBmaWxsPSIjNjA3RDhCIi8+PGxpbmVhckdyYWRpZW50IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBpZD0iZCIgeDE9IjEyLjMzMyIgeDI9IjIzIiB5MT0iMTQiIHkyPSIxNCI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMjEyMTIxIiBzdG9wLW9wYWNpdHk9Ii4xIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMjEyMTIxIiBzdG9wLW9wYWNpdHk9Ii4wMiIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBkPSJNMTIuMzMgNUwyMyAxNS42N1YyM0gxMyIgZmlsbD0idXJsKCNkKSIvPjxnIGNsaXAtcGF0aD0idXJsKCNiKSI+PGltYWdlIGhlaWdodD0iOCIgb3BhY2l0eT0iLjEiIG92ZXJmbG93PSJ2aXNpYmxlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMC41IDE3LjUpIiB3aWR0aD0iOSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBb0FBQUFKQ0FZQUFBQUxwcjBUQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUEgR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU9GSlJFRlVlTnAwVUQxTEEwRVVuTGU3SnNKaCBDaUZwTFZOWWFTMzQxMUw3Wi9JblVwZ21xUklSTEd4RU9FVlFzb1JjYm5lY3U2QUdUQjRNNzJ2ZXZqZHIrRFBEZitOdnMzODU4cTdhIEZwNG9ET1pCSjVkSk1DVkR6SjJUK0xZWXBlQXlUajM5VU1OWGhBMDBIQUJYS3k4OWJZNlVscXJGb01IbTVRSzBhL21iWFl4U3l5Wm0gZUNCVGU1S3I2OCtOR3ErS3Y0UXpvU004cTNaUDhpbWpYamRFdi82WXNuZCtxNmE3VU40WEZzS1lsaWZiVUpYdmozZnR5dEFxTTF2SiB6NlVnR3ZnaUliTjkwZzhSVmRkRktaL3B6cVgrWTVORHRkb25IVEk3MXZnV1lBRHpXbWR4LzRmcG1RQUFBQUJKUlU1RXJrSmdnZz09Ii8+PHBhdGggZD0iTTE3IDE5bC00IDQtMS4zMy00IiBmaWxsPSIjM0Y1MUI1Ii8+PC9nPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTIxLjUgNUg3bC4wNC4xMkgyMS41Yy44MiAwIDEuNS42NyAxLjUgMS41VjYuNWMwLS44My0uNjgtMS41LTEuNS0xLjV6IiBmaWxsPSIjMjEyMTIxIiBmaWxsLW9wYWNpdHk9Ii4wMiIvPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTIxLjUgMjIuODhIMTNMMTEuNzEgMTloLS4wNEwxMyAyM2g4LjVjLjgyIDAgMS41LS42OCAxLjUtMS41di0uMTJjMCAuODItLjY4IDEuNS0xLjUgMS41eiIgZmlsbD0iIzIxMjEyMSIgZmlsbC1vcGFjaXR5PSIuMSIvPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTEyLjk3IDIyLjkxTDEzIDIzbDQtNGgtLjEyIiBmaWxsPSIjMUEyMzdFIiBmaWxsLW9wYWNpdHk9Ii4yIi8+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBkPSJNMTEuNjcgMTkuMTJoNS4yMUwxNyAxOWgtNS4zMyIgZmlsbD0iIzFBMjM3RSIgZmlsbC1vcGFjaXR5PSIuMSIvPjxnIGNsaXAtcGF0aD0idXJsKCNiKSI+PGltYWdlIGhlaWdodD0iMjIiIG9wYWNpdHk9Ii4yIiBvdmVyZmxvdz0idmlzaWJsZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLS41IC0uNSkiIHdpZHRoPSIyMCIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCVUFBQUFYQ0FZQUFBRGszd1NkQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUEgR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVVwSlJFRlVlTnFzbGJGT3d6QVFRTy9zUUNSYyBzcUFPbFJnck1qQ1ZyK0VyK0laK0F4L1dUQ3dWZXlWUWw5SU9RWTJQYzJxaE5Gd2NHc2RTckhOc1A1MmZwVFBDZVVQNFg2UFFaQTJaIFBpNDFscVhScENZS3RBNXRzRkJWRmRvOXBlbmg4MjFaU1dzUzExMlgxaEJkUFhHNDRCU3lRTWFFb0hjSjZRSkx1K0x4cmd1S1FEUUIgVUF1T24zbmZMQVRscWMwcHNtdnV2eVFWaWJmQVJ5YVhvUVBlaDZIazlNdzR1TDJidjN4czMxK1A3VVdxNVJkN0xzdk44YWtnNXpCUCBLVFBTSWdXWE4zT0NRbzZBUmtwaUNOUWQzNm1hZWdWNkRHZ2pXMWxCSkZSV01CUWFWREFVR2xRd0F2U3ZnaGhvcDRJWWFLZUNrYURuIENtS2hvb0pZcUtoQXRhbzU5VlYxb2Qzdzk5QlU0RXNmY1FWWHJ1QnVQQk12Z0pJdjFzZG1QU1ZBM0hPaEx2eS9iQ0MwcURrOHJqUDkgVHRXQjM2Z1Z2MUhydmplcTc5MlNqb2tSRi9aN0Z6OENEQUM4RW1XREtWR0RMZ0FBQUFCSlJVNUVya0pnZ2c9PSIvPjxwYXRoIGQ9Ik0xMSAxSDIuNUMxLjY4IDEgMSAxLjY4IDEgMi41djE1YzAgLjgzLjY4IDEuNSAxLjUgMS41SDE3TDExIDF6IiBmaWxsPSIjNDI4NUY0Ii8+PC9nPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTIuNSAxQzEuNjggMSAxIDEuNjggMSAyLjV2LjEyYzAtLjgyLjY4LTEuNSAxLjUtMS41SDExVjFIMi41eiIgZmlsbD0iI0ZGRiIgZmlsbC1vcGFjaXR5PSIuMDIiLz48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGQ9Ik0xMSAxdi4xMmw1LjkyIDE3Ljc1SDIuNWMtLjgyIDAtMS41LS42Ny0xLjUtMS41di4xMmMwIC44NC42OCAxLjUxIDEuNSAxLjUxSDE3TDExIDF6IiBmaWxsPSIjMjEyMTIxIiBmaWxsLW9wYWNpdHk9Ii4xIi8+PGcgY2xpcC1wYXRoPSJ1cmwoI2IpIj48cGF0aCBkPSJNNy41IDEwdjEuMmgxLjk4Yy0uMDguNTItLjYgMS41MS0xLjk4IDEuNTEtMS4yIDAtMi4xNy0uOTktMi4xNy0yLjIxUzYuMyA4LjI5IDcuNSA4LjI5Yy42OCAwIDEuMTMuMjkgMS4zOS41NGwuOTUtLjkyQzkuMjQgNy4zNSA4LjQ0IDcgNy41IDcgNS41NyA3IDQgOC41NyA0IDEwLjVTNS41NyAxNCA3LjUgMTRjMi4wMiAwIDMuMzYtMS40MiAzLjM2LTMuNDIgMC0uMjMtLjAyLS40MS0uMDYtLjU4SDcuNXoiIGZpbGw9IiNFRUUiLz48cGF0aCBkPSJNNCA3aDd2N0g0eiIgZmlsbD0ibm9uZSIvPjwvZz48cmFkaWFsR3JhZGllbnQgY3g9IjEuNDU3IiBjeT0iMS40MiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGlkPSJlIiByPSIyOS43OTIiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI0ZGRiIgc3RvcC1vcGFjaXR5PSIuMSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGRiIgc3RvcC1vcGFjaXR5PSIwIi8+PC9yYWRpYWxHcmFkaWVudD48cGF0aCBkPSJNMjEuNSA1aC05LjE3TDExIDFIMi41QzEuNjggMSAxIDEuNjggMSAyLjV2MTVjMCAuODMuNjggMS41IDEuNSAxLjVoOS4xN0wxMyAyM2g4LjVjLjgyIDAgMS41LS42OCAxLjUtMS41di0xNWMwLS44My0uNjgtMS41LTEuNS0xLjV6IiBmaWxsPSJ1cmwoI2UpIi8+PC9zdmc+"}},"time_used":17,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":17,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.834Z","timestamp":1785128398834,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 3172\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:46 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"3eb0-67c3620e-b64eef5fdc461866;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457452\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 3c893324c890ebfb4d22aaec33d1cc99-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":16048,"size_decoded":3760,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (1161)","md5":"6bf2d21e9bdb4d04e40b5f9decc60314","sha1":"1f16da2e4fd4d2c9db5fce1e101c3a44be54dd89","sha256":"02f83fb268599737a5a5c8e1db12d562bdaa9ae73cb906c4f63c7b871eeecdb4","sha512":"c23497a91d4221d642363cdf3f47b1a867ab0dca284df0029fd1277848585f119df5268816158889bb15991d477b1e94214ae0eca3d1e26adf7e99ecf53b8fad","ssdeep":"384:ZDCVFGE8Psl1GbOdoEMTGT6Gt7w50xioyTQTflUw4OSIU/3P:5/0JTHlh45IU/3P","tlshash":"de72df096ebb20126f9f7069fd0b55857237402b54899c2778dcd7d80fe24386eb6fa8","first_seen":"2023-03-12T11:49:12Z","last_seen":"2026-07-27T10:21:19.575257Z","times_seen":64,"resource_available":true,"data":"ISBmdW5jdGlvbigpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBXYXlwb2ludChvcHRpb25zKSB7CiAgICAgICAgaWYgKCFvcHRpb25zKSB0aHJvdyBuZXcgRXJyb3IoIk5vIG9wdGlvbnMgcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yIik7CiAgICAgICAgaWYgKCFvcHRpb25zLmVsZW1lbnQpIHRocm93IG5ldyBFcnJvcigiTm8gZWxlbWVudCBvcHRpb24gcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yIik7CiAgICAgICAgaWYgKCFvcHRpb25zLmhhbmRsZXIpIHRocm93IG5ldyBFcnJvcigiTm8gaGFuZGxlciBvcHRpb24gcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yIik7CiAgICAgICAgdGhpcy5rZXkgPSAid2F5cG9pbnQtIiArIGtleUNvdW50ZXIsIHRoaXMub3B0aW9ucyA9IFdheXBvaW50LkFkYXB0ZXIuZXh0ZW5kKHt9LCBXYXlwb2ludC5kZWZhdWx0cywgb3B0aW9ucyksIHRoaXMuZWxlbWVudCA9IHRoaXMub3B0aW9ucy5lbGVtZW50LCB0aGlzLmFkYXB0ZXIgPSBuZXcgV2F5cG9pbnQuQWRhcHRlcih0aGlzLmVsZW1lbnQpLCB0aGlzLmNhbGxiYWNrID0gb3B0aW9ucy5oYW5kbGVyLCB0aGlzLmF4aXMgPSB0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbCA/ICJob3Jpem9udGFsIiA6ICJ2ZXJ0aWNhbCIsIHRoaXMuZW5hYmxlZCA9IHRoaXMub3B0aW9ucy5lbmFibGVkLCB0aGlzLnRyaWdnZXJQb2ludCA9IG51bGwsIHRoaXMuZ3JvdXAgPSBXYXlwb2ludC5Hcm91cC5maW5kT3JDcmVhdGUoewogICAgICAgICAgICBuYW1lOiB0aGlzLm9wdGlvbnMuZ3JvdXAsCiAgICAgICAgICAgIGF4aXM6IHRoaXMuYXhpcwogICAgICAgIH0pLCB0aGlzLmNvbnRleHQgPSBXYXlwb2ludC5Db250ZXh0LmZpbmRPckNyZWF0ZUJ5RWxlbWVudCh0aGlzLm9wdGlvbnMuY29udGV4dCksIFdheXBvaW50Lm9mZnNldEFsaWFzZXNbdGhpcy5vcHRpb25zLm9mZnNldF0gJiYgKHRoaXMub3B0aW9ucy5vZmZzZXQgPSBXYXlwb2ludC5vZmZzZXRBbGlhc2VzW3RoaXMub3B0aW9ucy5vZmZzZXRdKSwgdGhpcy5ncm91cC5hZGQodGhpcyksIHRoaXMuY29udGV4dC5hZGQodGhpcyksIGFsbFdheXBvaW50c1t0aGlzLmtleV0gPSB0aGlzLCBrZXlDb3VudGVyICs9IDEKICAgIH0KICAgIHZhciBrZXlDb3VudGVyID0gMCwKICAgICAgICBhbGxXYXlwb2ludHMgPSB7fTsKICAgIFdheXBvaW50LnByb3RvdHlwZS5xdWV1ZVRyaWdnZXIgPSBmdW5jdGlvbihkaXJlY3Rpb24pIHsKICAgICAgICB0aGlzLmdyb3VwLnF1ZXVlVHJpZ2dlcih0aGlzLCBkaXJlY3Rpb24pCiAgICB9LCBXYXlwb2ludC5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uKGFyZ3MpIHsKICAgICAgICB0aGlzLmVuYWJsZWQgJiYgdGhpcy5jYWxsYmFjayAmJiB0aGlzLmNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3MpCiAgICB9LCBXYXlwb2ludC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuY29udGV4dC5yZW1vdmUodGhpcyksIHRoaXMuZ3JvdXAucmVtb3ZlKHRoaXMpLCBkZWxldGUgYWxsV2F5cG9pbnRzW3RoaXMua2V5XQogICAgfSwgV2F5cG9pbnQucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5lbmFibGVkID0gITEsIHRoaXMKICAgIH0sIFdheXBvaW50LnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LnJlZnJlc2goKSwgdGhpcy5lbmFibGVkID0gITAsIHRoaXMKICAgIH0sIFdheXBvaW50LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAubmV4dCh0aGlzKQogICAgfSwgV2F5cG9pbnQucHJvdG90eXBlLnByZXZpb3VzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAucHJldmlvdXModGhpcykKICAgIH0sIFdheXBvaW50Lmludm9rZUFsbCA9IGZ1bmN0aW9uKG1ldGhvZCkgewogICAgICAgIHZhciBhbGxXYXlwb2ludHNBcnJheSA9IFtdOwogICAgICAgIGZvciAodmFyIHdheXBvaW50S2V5IGluIGFsbFdheXBvaW50cykgYWxsV2F5cG9pbnRzQXJyYXkucHVzaChhbGxXYXlwb2ludHNbd2F5cG9pbnRLZXldKTsKICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gYWxsV2F5cG9pbnRzQXJyYXkubGVuZ3RoOyBpIDwgZW5kOyBpKyspIGFsbFdheXBvaW50c0FycmF5W2ldW21ldGhvZF0oKQogICAgfSwgV2F5cG9pbnQuZGVzdHJveUFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIFdheXBvaW50Lmludm9rZUFsbCgiZGVzdHJveSIpCiAgICB9LCBXYXlwb2ludC5kaXNhYmxlQWxsID0gZnVuY3Rpb24oKSB7CiAgICAgICAgV2F5cG9pbnQuaW52b2tlQWxsKCJkaXNhYmxlIikKICAgIH0sIFdheXBvaW50LmVuYWJsZUFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIFdheXBvaW50LkNvbnRleHQucmVmcmVzaEFsbCgpOwogICAgICAgIGZvciAodmFyIHdheXBvaW50S2V5IGluIGFsbFdheXBvaW50cykgYWxsV2F5cG9pbnRzW3dheXBvaW50S2V5XS5lbmFibGVkID0gITA7CiAgICAgICAgcmV0dXJuIHRoaXMKICAgIH0sIFdheXBvaW50LnJlZnJlc2hBbGwgPSBmdW5jdGlvbigpIHsKICAgICAgICBXYXlwb2ludC5Db250ZXh0LnJlZnJlc2hBbGwoKQogICAgfSwgV2F5cG9pbnQudmlld3BvcnRIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQKICAgIH0sIFdheXBvaW50LnZpZXdwb3J0V2lkdGggPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoCiAgICB9LCBXYXlwb2ludC5hZGFwdGVycyA9IFtdLCBXYXlwb2ludC5kZWZhdWx0cyA9IHsKICAgICAgICBjb250ZXh0OiB3aW5kb3csCiAgICAgICAgY29udGludW91czogITAsCiAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgZ3JvdXA6ICJkZWZhdWx0IiwKICAgICAgICBob3Jpem9udGFsOiAhMSwKICAgICAgICBvZmZzZXQ6IDAKICAgIH0sIFdheXBvaW50Lm9mZnNldEFsaWFzZXMgPSB7CiAgICAgICAgImJvdHRvbS1pbi12aWV3IjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRleHQuaW5uZXJIZWlnaHQoKSAtIHRoaXMuYWRhcHRlci5vdXRlckhlaWdodCgpCiAgICAgICAgfSwKICAgICAgICAicmlnaHQtaW4tdmlldyI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LmlubmVyV2lkdGgoKSAtIHRoaXMuYWRhcHRlci5vdXRlcldpZHRoKCkKICAgICAgICB9CiAgICB9LCB3aW5kb3cuV2F5cG9pbnQgPSBXYXlwb2ludAp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZVNoaW0oY2FsbGJhY2spIHsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgMWUzIC8gNjApCiAgICB9CgogICAgZnVuY3Rpb24gQ29udGV4dChlbGVtZW50KSB7CiAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudCwgdGhpcy5BZGFwdGVyID0gV2F5cG9pbnQuQWRhcHRlciwgdGhpcy5hZGFwdGVyID0gbmV3IHRoaXMuQWRhcHRlcihlbGVtZW50KSwgdGhpcy5rZXkgPSAid2F5cG9pbnQtY29udGV4dC0iICsga2V5Q291bnRlciwgdGhpcy5kaWRTY3JvbGwgPSAhMSwgdGhpcy5kaWRSZXNpemUgPSAhMSwgdGhpcy5vbGRTY3JvbGwgPSB7CiAgICAgICAgICAgIHg6IHRoaXMuYWRhcHRlci5zY3JvbGxMZWZ0KCksCiAgICAgICAgICAgIHk6IHRoaXMuYWRhcHRlci5zY3JvbGxUb3AoKQogICAgICAgIH0sIHRoaXMud2F5cG9pbnRzID0gewogICAgICAgICAgICB2ZXJ0aWNhbDoge30sCiAgICAgICAgICAgIGhvcml6b250YWw6IHt9CiAgICAgICAgfSwgZWxlbWVudC53YXlwb2ludENvbnRleHRLZXkgPSB0aGlzLmtleSwgY29udGV4dHNbZWxlbWVudC53YXlwb2ludENvbnRleHRLZXldID0gdGhpcywga2V5Q291bnRlciArPSAxLCBXYXlwb2ludC53aW5kb3dDb250ZXh0IHx8IChXYXlwb2ludC53aW5kb3dDb250ZXh0ID0gITAsIFdheXBvaW50LndpbmRvd0NvbnRleHQgPSBuZXcgQ29udGV4dCh3aW5kb3cpKSwgdGhpcy5jcmVhdGVUaHJvdHRsZWRTY3JvbGxIYW5kbGVyKCksIHRoaXMuY3JlYXRlVGhyb3R0bGVkUmVzaXplSGFuZGxlcigpCiAgICB9CiAgICB2YXIga2V5Q291bnRlciA9IDAsCiAgICAgICAgY29udGV4dHMgPSB7fSwKICAgICAgICBXYXlwb2ludCA9IHdpbmRvdy5XYXlwb2ludCwKICAgICAgICBvbGRXaW5kb3dMb2FkID0gd2luZG93Lm9ubG9hZDsKICAgIENvbnRleHQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKHdheXBvaW50KSB7CiAgICAgICAgdmFyIGF4aXMgPSB3YXlwb2ludC5vcHRpb25zLmhvcml6b250YWwgPyAiaG9yaXpvbnRhbCIgOiAidmVydGljYWwiOwogICAgICAgIHRoaXMud2F5cG9pbnRzW2F4aXNdW3dheXBvaW50LmtleV0gPSB3YXlwb2ludCwgdGhpcy5yZWZyZXNoKCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmNoZWNrRW1wdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaG9yaXpvbnRhbEVtcHR5ID0gdGhpcy5BZGFwdGVyLmlzRW1wdHlPYmplY3QodGhpcy53YXlwb2ludHMuaG9yaXpvbnRhbCksCiAgICAgICAgICAgIHZlcnRpY2FsRW1wdHkgPSB0aGlzLkFkYXB0ZXIuaXNFbXB0eU9iamVjdCh0aGlzLndheXBvaW50cy52ZXJ0aWNhbCksCiAgICAgICAgICAgIGlzV2luZG93ID0gdGhpcy5lbGVtZW50ID09IHRoaXMuZWxlbWVudC53aW5kb3c7CiAgICAgICAgaG9yaXpvbnRhbEVtcHR5ICYmIHZlcnRpY2FsRW1wdHkgJiYgIWlzV2luZG93ICYmICh0aGlzLmFkYXB0ZXIub2ZmKCIud2F5cG9pbnRzIiksIGRlbGV0ZSBjb250ZXh0c1t0aGlzLmtleV0pCiAgICB9LCBDb250ZXh0LnByb3RvdHlwZS5jcmVhdGVUaHJvdHRsZWRSZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gcmVzaXplSGFuZGxlcigpIHsKICAgICAgICAgICAgc2VsZi5oYW5kbGVSZXNpemUoKSwgc2VsZi5kaWRSZXNpemUgPSAhMQogICAgICAgIH0KICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgdGhpcy5hZGFwdGVyLm9uKCJyZXNpemUud2F5cG9pbnRzIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHNlbGYuZGlkUmVzaXplIHx8IChzZWxmLmRpZFJlc2l6ZSA9ICEwLCBXYXlwb2ludC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVzaXplSGFuZGxlcikpCiAgICAgICAgfSkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmNyZWF0ZVRocm90dGxlZFNjcm9sbEhhbmRsZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICBmdW5jdGlvbiBzY3JvbGxIYW5kbGVyKCkgewogICAgICAgICAgICBzZWxmLmhhbmRsZVNjcm9sbCgpLCBzZWxmLmRpZFNjcm9sbCA9ICExCiAgICAgICAgfQogICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICB0aGlzLmFkYXB0ZXIub24oInNjcm9sbC53YXlwb2ludHMiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgc2VsZi5kaWRTY3JvbGwgJiYgIVdheXBvaW50LmlzVG91Y2ggfHwgKHNlbGYuZGlkU2Nyb2xsID0gITAsIFdheXBvaW50LnJlcXVlc3RBbmltYXRpb25GcmFtZShzY3JvbGxIYW5kbGVyKSkKICAgICAgICB9KQogICAgfSwgQ29udGV4dC5wcm90b3R5cGUuaGFuZGxlUmVzaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgV2F5cG9pbnQuQ29udGV4dC5yZWZyZXNoQWxsKCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciB0cmlnZ2VyZWRHcm91cHMgPSB7fSwKICAgICAgICAgICAgYXhlcyA9IHsKICAgICAgICAgICAgICAgIGhvcml6b250YWw6IHsKICAgICAgICAgICAgICAgICAgICBuZXdTY3JvbGw6IHRoaXMuYWRhcHRlci5zY3JvbGxMZWZ0KCksCiAgICAgICAgICAgICAgICAgICAgb2xkU2Nyb2xsOiB0aGlzLm9sZFNjcm9sbC54LAogICAgICAgICAgICAgICAgICAgIGZvcndhcmQ6ICJyaWdodCIsCiAgICAgICAgICAgICAgICAgICAgYmFja3dhcmQ6ICJsZWZ0IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHZlcnRpY2FsOiB7CiAgICAgICAgICAgICAgICAgICAgbmV3U2Nyb2xsOiB0aGlzLmFkYXB0ZXIuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICAgICAgb2xkU2Nyb2xsOiB0aGlzLm9sZFNjcm9sbC55LAogICAgICAgICAgICAgICAgICAgIGZvcndhcmQ6ICJkb3duIiwKICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZDogInVwIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIGZvciAodmFyIGF4aXNLZXkgaW4gYXhlcykgewogICAgICAgICAgICB2YXIgYXhpcyA9IGF4ZXNbYXhpc0tleV0sCiAgICAgICAgICAgICAgICBpc0ZvcndhcmQgPSBheGlzLm5ld1Njcm9sbCA+IGF4aXMub2xkU2Nyb2xsLAogICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gaXNGb3J3YXJkID8gYXhpcy5mb3J3YXJkIDogYXhpcy5iYWNrd2FyZDsKICAgICAgICAgICAgZm9yICh2YXIgd2F5cG9pbnRLZXkgaW4gdGhpcy53YXlwb2ludHNbYXhpc0tleV0pIHsKICAgICAgICAgICAgICAgIHZhciB3YXlwb2ludCA9IHRoaXMud2F5cG9pbnRzW2F4aXNLZXldW3dheXBvaW50S2V5XTsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB3YXlwb2ludC50cmlnZ2VyUG9pbnQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgd2FzQmVmb3JlVHJpZ2dlclBvaW50ID0gYXhpcy5vbGRTY3JvbGwgPCB3YXlwb2ludC50cmlnZ2VyUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIG5vd0FmdGVyVHJpZ2dlclBvaW50ID0gYXhpcy5uZXdTY3JvbGwgPj0gd2F5cG9pbnQudHJpZ2dlclBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICBjcm9zc2VkRm9yd2FyZCA9IHdhc0JlZm9yZVRyaWdnZXJQb2ludCAmJiBub3dBZnRlclRyaWdnZXJQb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NlZEJhY2t3YXJkID0gIXdhc0JlZm9yZVRyaWdnZXJQb2ludCAmJiAhbm93QWZ0ZXJUcmlnZ2VyUG9pbnQ7CiAgICAgICAgICAgICAgICAgICAgKGNyb3NzZWRGb3J3YXJkIHx8IGNyb3NzZWRCYWNrd2FyZCkgJiYgKHdheXBvaW50LnF1ZXVlVHJpZ2dlcihkaXJlY3Rpb24pLCB0cmlnZ2VyZWRHcm91cHNbd2F5cG9pbnQuZ3JvdXAuaWRdID0gd2F5cG9pbnQuZ3JvdXApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yICh2YXIgZ3JvdXBLZXkgaW4gdHJpZ2dlcmVkR3JvdXBzKSB0cmlnZ2VyZWRHcm91cHNbZ3JvdXBLZXldLmZsdXNoVHJpZ2dlcnMoKTsKICAgICAgICB0aGlzLm9sZFNjcm9sbCA9IHsKICAgICAgICAgICAgeDogYXhlcy5ob3Jpem9udGFsLm5ld1Njcm9sbCwKICAgICAgICAgICAgeTogYXhlcy52ZXJ0aWNhbC5uZXdTY3JvbGwKICAgICAgICB9CiAgICB9LCBDb250ZXh0LnByb3RvdHlwZS5pbm5lckhlaWdodCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQgPT0gdGhpcy5lbGVtZW50LndpbmRvdyA/IFdheXBvaW50LnZpZXdwb3J0SGVpZ2h0KCkgOiB0aGlzLmFkYXB0ZXIuaW5uZXJIZWlnaHQoKQogICAgfSwgQ29udGV4dC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24od2F5cG9pbnQpIHsKICAgICAgICBkZWxldGUgdGhpcy53YXlwb2ludHNbd2F5cG9pbnQuYXhpc11bd2F5cG9pbnQua2V5XSwgdGhpcy5jaGVja0VtcHR5KCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLmlubmVyV2lkdGggPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50ID09IHRoaXMuZWxlbWVudC53aW5kb3cgPyBXYXlwb2ludC52aWV3cG9ydFdpZHRoKCkgOiB0aGlzLmFkYXB0ZXIuaW5uZXJXaWR0aCgpCiAgICB9LCBDb250ZXh0LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGFsbFdheXBvaW50cyA9IFtdOwogICAgICAgIGZvciAodmFyIGF4aXMgaW4gdGhpcy53YXlwb2ludHMpCiAgICAgICAgICAgIGZvciAodmFyIHdheXBvaW50S2V5IGluIHRoaXMud2F5cG9pbnRzW2F4aXNdKSBhbGxXYXlwb2ludHMucHVzaCh0aGlzLndheXBvaW50c1theGlzXVt3YXlwb2ludEtleV0pOwogICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSBhbGxXYXlwb2ludHMubGVuZ3RoOyBpIDwgZW5kOyBpKyspIGFsbFdheXBvaW50c1tpXS5kZXN0cm95KCkKICAgIH0sIENvbnRleHQucHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYXhlcywgaXNXaW5kb3cgPSB0aGlzLmVsZW1lbnQgPT0gdGhpcy5lbGVtZW50LndpbmRvdywKICAgICAgICAgICAgY29udGV4dE9mZnNldCA9IGlzV2luZG93ID8gdm9pZCAwIDogdGhpcy5hZGFwdGVyLm9mZnNldCgpLAogICAgICAgICAgICB0cmlnZ2VyZWRHcm91cHMgPSB7fTsKICAgICAgICB0aGlzLmhhbmRsZVNjcm9sbCgpLCBheGVzID0gewogICAgICAgICAgICBob3Jpem9udGFsOiB7CiAgICAgICAgICAgICAgICBjb250ZXh0T2Zmc2V0OiBpc1dpbmRvdyA/IDAgOiBjb250ZXh0T2Zmc2V0LmxlZnQsCiAgICAgICAgICAgICAgICBjb250ZXh0U2Nyb2xsOiBpc1dpbmRvdyA/IDAgOiB0aGlzLm9sZFNjcm9sbC54LAogICAgICAgICAgICAgICAgY29udGV4dERpbWVuc2lvbjogdGhpcy5pbm5lcldpZHRoKCksCiAgICAgICAgICAgICAgICBvbGRTY3JvbGw6IHRoaXMub2xkU2Nyb2xsLngsCiAgICAgICAgICAgICAgICBmb3J3YXJkOiAicmlnaHQiLAogICAgICAgICAgICAgICAgYmFja3dhcmQ6ICJsZWZ0IiwKICAgICAgICAgICAgICAgIG9mZnNldFByb3A6ICJsZWZ0IgogICAgICAgICAgICB9LAogICAgICAgICAgICB2ZXJ0aWNhbDogewogICAgICAgICAgICAgICAgY29udGV4dE9mZnNldDogaXNXaW5kb3cgPyAwIDogY29udGV4dE9mZnNldC50b3AsCiAgICAgICAgICAgICAgICBjb250ZXh0U2Nyb2xsOiBpc1dpbmRvdyA/IDAgOiB0aGlzLm9sZFNjcm9sbC55LAogICAgICAgICAgICAgICAgY29udGV4dERpbWVuc2lvbjogdGhpcy5pbm5lckhlaWdodCgpLAogICAgICAgICAgICAgICAgb2xkU2Nyb2xsOiB0aGlzLm9sZFNjcm9sbC55LAogICAgICAgICAgICAgICAgZm9yd2FyZDogImRvd24iLAogICAgICAgICAgICAgICAgYmFja3dhcmQ6ICJ1cCIsCiAgICAgICAgICAgICAgICBvZmZzZXRQcm9wOiAidG9wIgogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBmb3IgKHZhciBheGlzS2V5IGluIGF4ZXMpIHsKICAgICAgICAgICAgdmFyIGF4aXMgPSBheGVzW2F4aXNLZXldOwogICAgICAgICAgICBmb3IgKHZhciB3YXlwb2ludEtleSBpbiB0aGlzLndheXBvaW50c1theGlzS2V5XSkgewogICAgICAgICAgICAgICAgdmFyIGNvbnRleHRNb2RpZmllciwgd2FzQmVmb3JlU2Nyb2xsLCBub3dBZnRlclNjcm9sbCwgdHJpZ2dlcmVkQmFja3dhcmQsIHRyaWdnZXJlZEZvcndhcmQsIHdheXBvaW50ID0gdGhpcy53YXlwb2ludHNbYXhpc0tleV1bd2F5cG9pbnRLZXldLAogICAgICAgICAgICAgICAgICAgIGFkanVzdG1lbnQgPSB3YXlwb2ludC5vcHRpb25zLm9mZnNldCwKICAgICAgICAgICAgICAgICAgICBvbGRUcmlnZ2VyUG9pbnQgPSB3YXlwb2ludC50cmlnZ2VyUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgZWxlbWVudE9mZnNldCA9IDAsCiAgICAgICAgICAgICAgICAgICAgZnJlc2hXYXlwb2ludCA9IG51bGwgPT0gb2xkVHJpZ2dlclBvaW50OwogICAgICAgICAgICAgICAgd2F5cG9pbnQuZWxlbWVudCAhPT0gd2F5cG9pbnQuZWxlbWVudC53aW5kb3cgJiYgKGVsZW1lbnRPZmZzZXQgPSB3YXlwb2ludC5hZGFwdGVyLm9mZnNldCgpW2F4aXMub2Zmc2V0UHJvcF0pLCAiZnVuY3Rpb24iID09IHR5cGVvZiBhZGp1c3RtZW50ID8gYWRqdXN0bWVudCA9IGFkanVzdG1lbnQuYXBwbHkod2F5cG9pbnQpIDogInN0cmluZyIgPT0gdHlwZW9mIGFkanVzdG1lbnQgJiYgKGFkanVzdG1lbnQgPSBwYXJzZUZsb2F0KGFkanVzdG1lbnQpLCB3YXlwb2ludC5vcHRpb25zLm9mZnNldC5pbmRleE9mKCIlIikgPiAtMSAmJiAoYWRqdXN0bWVudCA9IE1hdGguY2VpbChheGlzLmNvbnRleHREaW1lbnNpb24gKiBhZGp1c3RtZW50IC8gMTAwKSkpLCBjb250ZXh0TW9kaWZpZXIgPSBheGlzLmNvbnRleHRTY3JvbGwgLSBheGlzLmNvbnRleHRPZmZzZXQsIHdheXBvaW50LnRyaWdnZXJQb2ludCA9IE1hdGguZmxvb3IoZWxlbWVudE9mZnNldCArIGNvbnRleHRNb2RpZmllciAtIGFkanVzdG1lbnQpLCB3YXNCZWZvcmVTY3JvbGwgPSBvbGRUcmlnZ2VyUG9pbnQgPCBheGlzLm9sZFNjcm9sbCwgbm93QWZ0ZXJTY3JvbGwgPSB3YXlwb2ludC50cmlnZ2VyUG9pbnQgPj0gYXhpcy5vbGRTY3JvbGwsIHRyaWdnZXJlZEJhY2t3YXJkID0gd2FzQmVmb3JlU2Nyb2xsICYmIG5vd0FmdGVyU2Nyb2xsLCB0cmlnZ2VyZWRGb3J3YXJkID0gIXdhc0JlZm9yZVNjcm9sbCAmJiAhbm93QWZ0ZXJTY3JvbGwsICFmcmVzaFdheXBvaW50ICYmIHRyaWdnZXJlZEJhY2t3YXJkID8gKHdheXBvaW50LnF1ZXVlVHJpZ2dlcihheGlzLmJhY2t3YXJkKSwgdHJpZ2dlcmVkR3JvdXBzW3dheXBvaW50Lmdyb3VwLmlkXSA9IHdheXBvaW50Lmdyb3VwKSA6ICFmcmVzaFdheXBvaW50ICYmIHRyaWdnZXJlZEZvcndhcmQgPyAod2F5cG9pbnQucXVldWVUcmlnZ2VyKGF4aXMuZm9yd2FyZCksIHRyaWdnZXJlZEdyb3Vwc1t3YXlwb2ludC5ncm91cC5pZF0gPSB3YXlwb2ludC5ncm91cCkgOiBmcmVzaFdheXBvaW50ICYmIGF4aXMub2xkU2Nyb2xsID49IHdheXBvaW50LnRyaWdnZXJQb2ludCAmJiAod2F5cG9pbnQucXVldWVUcmlnZ2VyKGF4aXMuZm9yd2FyZCksIHRyaWdnZXJlZEdyb3Vwc1t3YXlwb2ludC5ncm91cC5pZF0gPSB3YXlwb2ludC5ncm91cCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gV2F5cG9pbnQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmb3IgKHZhciBncm91cEtleSBpbiB0cmlnZ2VyZWRHcm91cHMpIHRyaWdnZXJlZEdyb3Vwc1tncm91cEtleV0uZmx1c2hUcmlnZ2VycygpCiAgICAgICAgfSksIHRoaXMKICAgIH0sIENvbnRleHQuZmluZE9yQ3JlYXRlQnlFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgIHJldHVybiBDb250ZXh0LmZpbmRCeUVsZW1lbnQoZWxlbWVudCkgfHwgbmV3IENvbnRleHQoZWxlbWVudCkKICAgIH0sIENvbnRleHQucmVmcmVzaEFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIGZvciAodmFyIGNvbnRleHRJZCBpbiBjb250ZXh0cykgY29udGV4dHNbY29udGV4dElkXS5yZWZyZXNoKCkKICAgIH0sIENvbnRleHQuZmluZEJ5RWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICByZXR1cm4gY29udGV4dHNbZWxlbWVudC53YXlwb2ludENvbnRleHRLZXldCiAgICB9LCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgb2xkV2luZG93TG9hZCAmJiBvbGRXaW5kb3dMb2FkKCksIENvbnRleHQucmVmcmVzaEFsbCgpCiAgICB9LCBXYXlwb2ludC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICAgIHZhciByZXF1ZXN0Rm4gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVTaGltOwogICAgICAgIHJlcXVlc3RGbi5jYWxsKHdpbmRvdywgY2FsbGJhY2spCiAgICB9LCBXYXlwb2ludC5Db250ZXh0ID0gQ29udGV4dAp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIGJ5VHJpZ2dlclBvaW50KGEsIGIpIHsKICAgICAgICByZXR1cm4gYS50cmlnZ2VyUG9pbnQgLSBiLnRyaWdnZXJQb2ludAogICAgfQoKICAgIGZ1bmN0aW9uIGJ5UmV2ZXJzZVRyaWdnZXJQb2ludChhLCBiKSB7CiAgICAgICAgcmV0dXJuIGIudHJpZ2dlclBvaW50IC0gYS50cmlnZ2VyUG9pbnQKICAgIH0KCiAgICBmdW5jdGlvbiBHcm91cChvcHRpb25zKSB7CiAgICAgICAgdGhpcy5uYW1lID0gb3B0aW9ucy5uYW1lLCB0aGlzLmF4aXMgPSBvcHRpb25zLmF4aXMsIHRoaXMuaWQgPSB0aGlzLm5hbWUgKyAiLSIgKyB0aGlzLmF4aXMsIHRoaXMud2F5cG9pbnRzID0gW10sIHRoaXMuY2xlYXJUcmlnZ2VyUXVldWVzKCksIGdyb3Vwc1t0aGlzLmF4aXNdW3RoaXMubmFtZV0gPSB0aGlzCiAgICB9CiAgICB2YXIgZ3JvdXBzID0gewogICAgICAgICAgICB2ZXJ0aWNhbDoge30sCiAgICAgICAgICAgIGhvcml6b250YWw6IHt9CiAgICAgICAgfSwKICAgICAgICBXYXlwb2ludCA9IHdpbmRvdy5XYXlwb2ludDsKICAgIEdyb3VwLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbih3YXlwb2ludCkgewogICAgICAgIHRoaXMud2F5cG9pbnRzLnB1c2god2F5cG9pbnQpCiAgICB9LCBHcm91cC5wcm90b3R5cGUuY2xlYXJUcmlnZ2VyUXVldWVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy50cmlnZ2VyUXVldWVzID0gewogICAgICAgICAgICB1cDogW10sCiAgICAgICAgICAgIGRvd246IFtdLAogICAgICAgICAgICBsZWZ0OiBbXSwKICAgICAgICAgICAgcmlnaHQ6IFtdCiAgICAgICAgfQogICAgfSwgR3JvdXAucHJvdG90eXBlLmZsdXNoVHJpZ2dlcnMgPSBmdW5jdGlvbigpIHsKICAgICAgICBmb3IgKHZhciBkaXJlY3Rpb24gaW4gdGhpcy50cmlnZ2VyUXVldWVzKSB7CiAgICAgICAgICAgIHZhciB3YXlwb2ludHMgPSB0aGlzLnRyaWdnZXJRdWV1ZXNbZGlyZWN0aW9uXSwKICAgICAgICAgICAgICAgIHJldmVyc2UgPSAidXAiID09PSBkaXJlY3Rpb24gfHwgImxlZnQiID09PSBkaXJlY3Rpb247CiAgICAgICAgICAgIHdheXBvaW50cy5zb3J0KHJldmVyc2UgPyBieVJldmVyc2VUcmlnZ2VyUG9pbnQgOiBieVRyaWdnZXJQb2ludCk7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSB3YXlwb2ludHMubGVuZ3RoOyBpIDwgZW5kOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgIHZhciB3YXlwb2ludCA9IHdheXBvaW50c1tpXTsKICAgICAgICAgICAgICAgICh3YXlwb2ludC5vcHRpb25zLmNvbnRpbnVvdXMgfHwgaSA9PT0gd2F5cG9pbnRzLmxlbmd0aCAtIDEpICYmIHdheXBvaW50LnRyaWdnZXIoW2RpcmVjdGlvbl0pCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdGhpcy5jbGVhclRyaWdnZXJRdWV1ZXMoKQogICAgfSwgR3JvdXAucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbih3YXlwb2ludCkgewogICAgICAgIHRoaXMud2F5cG9pbnRzLnNvcnQoYnlUcmlnZ2VyUG9pbnQpOwogICAgICAgIHZhciBpbmRleCA9IFdheXBvaW50LkFkYXB0ZXIuaW5BcnJheSh3YXlwb2ludCwgdGhpcy53YXlwb2ludHMpLAogICAgICAgICAgICBpc0xhc3QgPSBpbmRleCA9PT0gdGhpcy53YXlwb2ludHMubGVuZ3RoIC0gMTsKICAgICAgICByZXR1cm4gaXNMYXN0ID8gbnVsbCA6IHRoaXMud2F5cG9pbnRzW2luZGV4ICsgMV0KICAgIH0sIEdyb3VwLnByb3RvdHlwZS5wcmV2aW91cyA9IGZ1bmN0aW9uKHdheXBvaW50KSB7CiAgICAgICAgdGhpcy53YXlwb2ludHMuc29ydChieVRyaWdnZXJQb2ludCk7CiAgICAgICAgdmFyIGluZGV4ID0gV2F5cG9pbnQuQWRhcHRlci5pbkFycmF5KHdheXBvaW50LCB0aGlzLndheXBvaW50cyk7CiAgICAgICAgcmV0dXJuIGluZGV4ID8gdGhpcy53YXlwb2ludHNbaW5kZXggLSAxXSA6IG51bGwKICAgIH0sIEdyb3VwLnByb3RvdHlwZS5xdWV1ZVRyaWdnZXIgPSBmdW5jdGlvbih3YXlwb2ludCwgZGlyZWN0aW9uKSB7CiAgICAgICAgdGhpcy50cmlnZ2VyUXVldWVzW2RpcmVjdGlvbl0ucHVzaCh3YXlwb2ludCkKICAgIH0sIEdyb3VwLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbih3YXlwb2ludCkgewogICAgICAgIHZhciBpbmRleCA9IFdheXBvaW50LkFkYXB0ZXIuaW5BcnJheSh3YXlwb2ludCwgdGhpcy53YXlwb2ludHMpOwogICAgICAgIGluZGV4ID4gLTEgJiYgdGhpcy53YXlwb2ludHMuc3BsaWNlKGluZGV4LCAxKQogICAgfSwgR3JvdXAucHJvdG90eXBlLmZpcnN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMud2F5cG9pbnRzWzBdCiAgICB9LCBHcm91cC5wcm90b3R5cGUubGFzdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLndheXBvaW50c1t0aGlzLndheXBvaW50cy5sZW5ndGggLSAxXQogICAgfSwgR3JvdXAuZmluZE9yQ3JlYXRlID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIHJldHVybiBncm91cHNbb3B0aW9ucy5heGlzXVtvcHRpb25zLm5hbWVdIHx8IG5ldyBHcm91cChvcHRpb25zKQogICAgfSwgV2F5cG9pbnQuR3JvdXAgPSBHcm91cAp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIEpRdWVyeUFkYXB0ZXIoZWxlbWVudCkgewogICAgICAgIHRoaXMuJGVsZW1lbnQgPSAkKGVsZW1lbnQpCiAgICB9CiAgICB2YXIgJCA9IHdpbmRvdy5qUXVlcnksCiAgICAgICAgV2F5cG9pbnQgPSB3aW5kb3cuV2F5cG9pbnQ7CiAgICAkLmVhY2goWyJpbm5lckhlaWdodCIsICJpbm5lcldpZHRoIiwgIm9mZiIsICJvZmZzZXQiLCAib24iLCAib3V0ZXJIZWlnaHQiLCAib3V0ZXJXaWR0aCIsICJzY3JvbGxMZWZ0IiwgInNjcm9sbFRvcCJdLCBmdW5jdGlvbihpLCBtZXRob2QpIHsKICAgICAgICBKUXVlcnlBZGFwdGVyLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnRbbWV0aG9kXS5hcHBseSh0aGlzLiRlbGVtZW50LCBhcmdzKQogICAgICAgIH0KICAgIH0pLCAkLmVhY2goWyJleHRlbmQiLCAiaW5BcnJheSIsICJpc0VtcHR5T2JqZWN0Il0sIGZ1bmN0aW9uKGksIG1ldGhvZCkgewogICAgICAgIEpRdWVyeUFkYXB0ZXJbbWV0aG9kXSA9ICRbbWV0aG9kXQogICAgfSksIFdheXBvaW50LmFkYXB0ZXJzLnB1c2goewogICAgICAgIG5hbWU6ICJqcXVlcnkiLAogICAgICAgIEFkYXB0ZXI6IEpRdWVyeUFkYXB0ZXIKICAgIH0pLCBXYXlwb2ludC5BZGFwdGVyID0gSlF1ZXJ5QWRhcHRlcgp9KCksCmZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIGNyZWF0ZUV4dGVuc2lvbihmcmFtZXdvcmspIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB3YXlwb2ludHMgPSBbXSwKICAgICAgICAgICAgICAgIG92ZXJyaWRlcyA9IGFyZ3VtZW50c1swXTsKICAgICAgICAgICAgcmV0dXJuIGZyYW1ld29yay5pc0Z1bmN0aW9uKGFyZ3VtZW50c1swXSkgJiYgKG92ZXJyaWRlcyA9IGZyYW1ld29yay5leHRlbmQoe30sIGFyZ3VtZW50c1sxXSksIG92ZXJyaWRlcy5oYW5kbGVyID0gYXJndW1lbnRzWzBdKSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBmcmFtZXdvcmsuZXh0ZW5kKHt9LCBvdmVycmlkZXMsIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBvcHRpb25zLmNvbnRleHQgJiYgKG9wdGlvbnMuY29udGV4dCA9IGZyYW1ld29yayh0aGlzKS5jbG9zZXN0KG9wdGlvbnMuY29udGV4dClbMF0pLCB3YXlwb2ludHMucHVzaChuZXcgV2F5cG9pbnQob3B0aW9ucykpCiAgICAgICAgICAgIH0pLCB3YXlwb2ludHMKICAgICAgICB9CiAgICB9CiAgICB2YXIgV2F5cG9pbnQgPSB3aW5kb3cuV2F5cG9pbnQ7CiAgICB3aW5kb3cualF1ZXJ5ICYmICh3aW5kb3cualF1ZXJ5LmZuLmVsZW1lbnRvcldheXBvaW50ID0gY3JlYXRlRXh0ZW5zaW9uKHdpbmRvdy5qUXVlcnkpKSwgd2luZG93LlplcHRvICYmICh3aW5kb3cuWmVwdG8uZm4uZWxlbWVudG9yV2F5cG9pbnQgPSBjcmVhdGVFeHRlbnNpb24od2luZG93LlplcHRvKSkKfSgpOw=="}},"time_used":101,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":101,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/css/spop.min.css","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.763Z","timestamp":1785128398763,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/css/spop.min.css HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 1127\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 20:43:00 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"13c4-67c3620e-fedf6d19f3359bc1;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 461818\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: d380be9e66ea1bac09f8b2ce91242014-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":5060,"size_decoded":1699,"mime_type":"text/css","magic":"Unicode text, UTF-8 text, with very long lines (4926)","md5":"fbdd8ac58b39539c151b1761f5f33a25","sha1":"c5dab44939f8574c19b49609a17bf042cd7749b4","sha256":"e7f057878dab30d574667321d5db5bde89b96e3112c6d0a77063d11b1e1150ec","sha512":"4f76b2e99f9b8aa1f2b0a4673face7f49a1fcc9137e3829258d98eeb7752d91791cc8ef6de58eeffb2f14d9d8d923775962d3b1d5716699c7fb0c2c2a189be4d","ssdeep":"96:ASvw/fV9LKpEH+Lpuh57JsYiqmA8LjUcsyuv6XrWr6rqrmTVgbfoiL:A1oEJlHgrWr6rqrmTVmfoiL","tlshash":"86a1debb4e43288c72729b56d7cd5ea8a2acd34371538ddf33092b4a8706e9925c5247","first_seen":"2025-01-15T15:10:46.582473Z","last_seen":"2026-07-27T13:12:32.34849Z","times_seen":68,"resource_available":false,"data":"QGNoYXJzZXQgIlVURi04IjsvKiEKICogc21hbGxQb3AgMC4xLjIgfCBodHRwczovL2dpdGh1Yi5jb20vc2lsdmlvLXIvc3BvcAogKiBDb3B5cmlnaHQgKGMpIDIwMTUgU8OtbHZpbyBSb3NhIEBzaWx2aW9yXwogKiBNSVQgbGljZW5zZQogKi8uc3BvcC1jb250YWluZXJ7ei1pbmRleDoyMDAwO3Bvc2l0aW9uOmZpeGVkfS5zcG9wLWNvbnRhaW5lciwuc3BvcC1jb250YWluZXIgKiwuc3BvcC1jb250YWluZXIgOmFmdGVyLC5zcG9wLWNvbnRhaW5lciA6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveH0uc3BvcC0tdG9wLWxlZnR7dG9wOjEwMHB4O2xlZnQ6MH0uc3BvcC0tdG9wLWxlZnQgLnNwb3B7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDstbXMtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDB9LnNwb3AtLXRvcC1jZW50ZXJ7dG9wOjEwMHB4O2xlZnQ6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpfS5zcG9wLS10b3AtY2VudGVyIC5zcG9wey13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjo1MCUgMDstbXMtdHJhbnNmb3JtLW9yaWdpbjo1MCUgMDt0cmFuc2Zvcm0tb3JpZ2luOjUwJSAwfS5zcG9wLS10b3AtcmlnaHR7dG9wOjEwMHB4O3JpZ2h0OjB9LnNwb3AtLXRvcC1yaWdodCAuc3BvcHstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MTAwJSAwOy1tcy10cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMDt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMH0uc3BvcC0tY2VudGVye3RvcDo1MCU7bGVmdDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTUwJSwtNTAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtNTAlLC01MCUsMCl9LnNwb3AtLWNlbnRlciAuc3BvcHstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46NTAlIDA7LW1zLXRyYW5zZm9ybS1vcmlnaW46NTAlIDA7dHJhbnNmb3JtLW9yaWdpbjo1MCUgMH0uc3BvcC0tYm90dG9tLWxlZnR7Ym90dG9tOjA7bGVmdDowfS5zcG9wLS1ib3R0b20tbGVmdCAuc3BvcHstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAxMDAlOy1tcy10cmFuc2Zvcm0tb3JpZ2luOjAgMTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjAgMTAwJX0uc3BvcC0tYm90dG9tLWNlbnRlcntib3R0b206MDtsZWZ0OjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKX0uc3BvcC0tYm90dG9tLWNlbnRlciAuc3BvcHstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46NTAlIDEwMCU7LW1zLXRyYW5zZm9ybS1vcmlnaW46NTAlIDEwMCU7dHJhbnNmb3JtLW9yaWdpbjo1MCUgMTAwJX0uc3BvcC0tYm90dG9tLXJpZ2h0e2JvdHRvbTowO3JpZ2h0OjB9LnNwb3AtLWJvdHRvbS1yaWdodCAuc3BvcHstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlOy1tcy10cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjMwZW0pey5zcG9wLS1ib3R0b20tY2VudGVyLC5zcG9wLS1ib3R0b20tbGVmdCwuc3BvcC0tYm90dG9tLXJpZ2h0LC5zcG9wLS10b3AtY2VudGVyLC5zcG9wLS10b3AtbGVmdCwuc3BvcC0tdG9wLXJpZ2h0e2JvdHRvbTphdXRvO3RvcDoxMDBweDtsZWZ0OjA7cmlnaHQ6MDttYXJnaW4tbGVmdDowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfS5zcG9wLS1ib3R0b20tY2VudGVyIC5zcG9wLC5zcG9wLS1ib3R0b20tbGVmdCAuc3BvcCwuc3BvcC0tYm90dG9tLXJpZ2h0IC5zcG9wLC5zcG9wLS10b3AtY2VudGVyIC5zcG9wLC5zcG9wLS10b3AtbGVmdCAuc3BvcCwuc3BvcC0tdG9wLXJpZ2h0IC5zcG9wey13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjo1MCUgMTAwJTstbXMtdHJhbnNmb3JtLW9yaWdpbjo1MCUgMTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjUwJSAxMDAlfS5zcG9we2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjE1KX19LnNwb3B7cG9zaXRpb246cmVsYXRpdmU7bWluLWhlaWdodDo1NnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1zaXplOjE0cHg7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjMwZW0pey5zcG9we2JvcmRlci1yYWRpdXM6MnB4O3dpZHRoOjMyMHB4O21hcmdpbjouN2VtfX0uc3BvcC0tZXJyb3IsLnNwb3AtLWluZm8sLnNwb3AtLXN1Y2Nlc3MsLnNwb3AtLXdhcm5pbmd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNTQsIDU5LCA1NywgMC43NSl9QC13ZWJraXQta2V5ZnJhbWVzIHNwb3BJbnswJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguMiwuMik7dHJhbnNmb3JtOnNjYWxlKC4yLC4yKX05NSV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4xLDEuMSk7dHJhbnNmb3JtOnNjYWxlKDEuMSwxLjEpfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSwxKTt0cmFuc2Zvcm06c2NhbGUoMSwxKX19QGtleWZyYW1lcyBzcG9wSW57MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjIsLjIpO3RyYW5zZm9ybTpzY2FsZSguMiwuMil9OTUley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMSwxLjEpO3RyYW5zZm9ybTpzY2FsZSgxLjEsMS4xKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEsMSk7dHJhbnNmb3JtOnNjYWxlKDEsMSl9fUAtd2Via2l0LWtleWZyYW1lcyBzcG9wT3V0ezAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLDEpO3RyYW5zZm9ybTpzY2FsZSgxLDEpfTIwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjEsMS4xKTt0cmFuc2Zvcm06c2NhbGUoMS4xLDEuMSl9MTAwJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMCwwKTt0cmFuc2Zvcm06c2NhbGUoMCwwKX19QGtleWZyYW1lcyBzcG9wT3V0ezAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLDEpO3RyYW5zZm9ybTpzY2FsZSgxLDEpfTIwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjEsMS4xKTt0cmFuc2Zvcm06c2NhbGUoMS4xLDEuMSl9MTAwJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMCwwKTt0cmFuc2Zvcm06c2NhbGUoMCwwKX19LnNwb3AtLW91dHstd2Via2l0LWFuaW1hdGlvbjpzcG9wT3V0IC40cyBlYXNlLWluLW91dDthbmltYXRpb246c3BvcE91dCAuNHMgZWFzZS1pbi1vdXR9LnNwb3AtLWluey13ZWJraXQtYW5pbWF0aW9uOnNwb3BJbiAuNHMgZWFzZS1pbi1vdXQ7YW5pbWF0aW9uOnNwb3BJbiAuNHMgZWFzZS1pbi1vdXR9LnNwb3AtYm9keXtwYWRkaW5nOjEuNGVtfS5zcG9wLWJvZHkgcHttYXJnaW46MH0uc3BvcC1ib2R5IGF7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5zcG9wLWJvZHkgYTpob3Zlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC44KTt0ZXh0LWRlY29yYXRpb246bm9uZX0uc3BvcC10aXRsZXttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTouMjVlbTtjb2xvcjojZmZmfS5zcG9wLWNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7aGVpZ2h0OjMycHg7d2lkdGg6MzJweDtwYWRkaW5nLXRvcDo3cHg7cGFkZGluZy1yaWdodDo3cHg7Zm9udC1zaXplOjIycHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246cmlnaHQ7bGluZS1oZWlnaHQ6LjY7Y29sb3I6I2ZmZjtvcGFjaXR5Oi41fS5zcG9wLWNsb3NlOmhvdmVye29wYWNpdHk6Ljc7Y3Vyc29yOnBvaW50ZXJ9LnNwb3AtaWNvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTNweDtsZWZ0OjE2cHg7d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtib3JkZXItcmFkaXVzOjUwJTstd2Via2l0LWFuaW1hdGlvbjpzcG9wSW4gLjRzIC40cyBlYXNlLWluLW91dDthbmltYXRpb246c3BvcEluIC40cyAuNHMgZWFzZS1pbi1vdXR9LnNwb3AtaWNvbjphZnRlciwuc3BvcC1pY29uOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2t9LnNwb3AtaWNvbisuc3BvcC1ib2R5e3BhZGRpbmctbGVmdDo0LjJlbX0uc3BvcC1pY29uLS1lcnJvciwuc3BvcC1pY29uLS1pbmZve2JvcmRlcjoycHggc29saWQgIzNhOTVlZH0uc3BvcC1pY29uLS1lcnJvcjpiZWZvcmUsLnNwb3AtaWNvbi0taW5mbzpiZWZvcmV7dG9wOjVweDtsZWZ0OjExcHg7d2lkdGg6NHB4O2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojM2E5NWVkfS5zcG9wLWljb24tLWVycm9yOmFmdGVyLC5zcG9wLWljb24tLWluZm86YWZ0ZXJ7dG9wOjEycHg7bGVmdDoxMXB4O3dpZHRoOjRweDtoZWlnaHQ6OXB4O2JhY2tncm91bmQtY29sb3I6IzNhOTVlZH0uc3BvcC1pY29uLS1lcnJvcntib3JkZXItY29sb3I6I2ZmNTY1Nn0uc3BvcC1pY29uLS1lcnJvcjpiZWZvcmV7dG9wOjE2cHg7YmFja2dyb3VuZC1jb2xvcjojZmY1NjU2fS5zcG9wLWljb24tLWVycm9yOmFmdGVye3RvcDo1cHg7YmFja2dyb3VuZC1jb2xvcjojZmY1NjU2fS5zcG9wLWljb24tLXN1Y2Nlc3N7Ym9yZGVyOjJweCBzb2xpZCAjMmVjYzU0fS5zcG9wLWljb24tLXN1Y2Nlc3M6YmVmb3Jle3RvcDo3cHg7bGVmdDo3cHg7d2lkdGg6MTNweDtoZWlnaHQ6OHB4O2JvcmRlci1ib3R0b206M3B4IHNvbGlkICMyZWNjNTQ7Ym9yZGVyLWxlZnQ6M3B4IHNvbGlkICMyZWNjNTQ7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7LW1zLXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9LnNwb3AtaWNvbi0td2FybmluZ3tib3JkZXI6MnB4IHNvbGlkICNmY2QwMDB9LnNwb3AtaWNvbi0td2FybmluZzpiZWZvcmV7dG9wOjdweDtsZWZ0OjdweDt3aWR0aDowO2hlaWdodDowO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZjZDAwMDtib3JkZXItd2lkdGg6MCA2cHggMTBweH0="}},"time_used":49,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":49,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/vendor/wp-polyfill.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.824Z","timestamp":1785128398824,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-includes/js/dist/vendor/wp-polyfill.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 41673\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"3be98-67c3620e-2efaf6563dde5fb8;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: a4a1f83b1c609692cc8ba127ed444e3b-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":245400,"size_decoded":42263,"mime_type":"application/x-javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (1496)","md5":"78d592f45c3156d06f02eb64fbba7c24","sha1":"087336e7b9852a1511c21b72b08861307003f566","sha256":"9cf50f241c6056086005b2db74e52c01ac219dc4f3b681396b1ecfaf505b4bb4","sha512":"ce81cbaa09d25a02f5c439622677d68ef7ebf37cef5eb53dd5822a2f079213aeeefe56befeeb04952f6245c67d2f375ed5b2b585fe11a32e16d54f4f5ada5512","ssdeep":"6144:lTcDZtxCb7TJN3piehF2VSwmomo2WAEvYH3HWnUs2AGlEDQCV2MX3sqo0P:l0kdyef3wmLo2WAEvYH3HWnUs2AGlEDX","tlshash":"3c34ad4aaaf13171a243f039866f8909736a548b5d8efd067d0ca2905f5983cc7b9fdc","first_seen":"2026-07-27T03:56:42.485278Z","last_seen":"2026-07-27T05:30:59.796071Z","times_seen":6,"resource_available":true,"data":"ISBmdW5jdGlvbih0KSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgciwgZSwgbjsKICAgIGUgPSB7fSwgKG4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgaWYgKGVbdF0pIHJldHVybiBlW3RdLmV4cG9ydHM7CiAgICAgICAgdmFyIG8gPSBlW3RdID0gewogICAgICAgICAgICBpOiB0LAogICAgICAgICAgICBsOiAhMSwKICAgICAgICAgICAgZXhwb3J0czoge30KICAgICAgICB9OwogICAgICAgIHJldHVybiByW3RdLmNhbGwoby5leHBvcnRzLCBvLCBvLmV4cG9ydHMsIG4pLCBvLmwgPSAhMCwgby5leHBvcnRzCiAgICB9KS5tID0gciA9IFtmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgxKSwgZSg3MSksIGUoNzgpLCBlKDgxKSwgZSg4MiksIGUoODQpLCBlKDg3KSwgZSg5MSksIGUoOTIpLCBlKDEwMCksIGUoMTAxKSwgZSgxMDQpLCBlKDEwOSksIGUoMTI1KSwgZSgxMjkpLCBlKDEzMCksIGUoMTMyKSwgZSgxMzQpLCBlKDEzNyksIGUoMTM4KSwgZSgxMzkpLCBlKDE0MCksIGUoMTQxKSwgZSgxNDUpLCBlKDE0OCksIGUoMTU1KSwgZSgxNTYpLCBlKDE1OSksIGUoMTYwKSwgZSgxNjYpLCBlKDE2NyksIGUoMTcwKSwgZSgxNzEpLCBlKDE3MiksIGUoMTczKSwgZSgxNzUpLCBlKDE3NiksIGUoMTc4KSwgZSgxNzkpLCBlKDE4MCksIGUoMTgxKSwgZSgxODIpLCBlKDE4MyksIGUoMTg0KSwgZSgxODkpLCBlKDIxMiksIGUoMjEzKSwgZSgyMTQpLCBlKDIxNiksIGUoMjE3KSwgZSgyMTgpLCBlKDIxOSksIGUoMjIwKSwgZSgyMjEpLCBlKDIyNiksIGUoMjI3KSwgZSgyMjgpLCBlKDIyOSksIGUoMjMwKSwgZSgyMzEpLCBlKDIzMyksIGUoMjM0KSwgZSgyMzUpLCBlKDIzNiksIGUoMjM3KSwgZSgyMzgpLCBlKDIzOSksIGUoMjQwKSwgZSgyNDEpLCBlKDI0MiksIGUoMjQzKSwgZSgyNDYpLCBlKDI0OCksIGUoMjUwKSwgZSgyNTIpLCBlKDI1MyksIGUoMjU0KSwgZSgyNTUpLCBlKDI1NiksIGUoMjU3KSwgZSgyNjApLCBlKDI2MSksIGUoMjYzKSwgZSgyNjQpLCBlKDI2NSksIGUoMjY2KSwgZSgyNjcpLCBlKDI2OCksIGUoMjcxKSwgZSgyNzIpLCBlKDI3MyksIGUoMjc0KSwgZSgyNzYpLCBlKDI3NyksIGUoMjc4KSwgZSgyNzkpLCBlKDI4MCksIGUoMjg0KSwgZSgyODUpLCBlKDI4NiksIGUoMjg3KSwgZSgyODgpLCBlKDI4OSksIGUoMjkwKSwgZSgyOTIpLCBlKDI5MyksIGUoMjk0KSwgZSgyOTgpLCBlKDI5OSksIGUoMzAxKSwgZSgzMDIpLCBlKDMwMyksIGUoMzA0KSwgZSgzMTApLCBlKDMxMiksIGUoMzEzKSwgZSgzMTUpLCBlKDMxNiksIGUoMzE3KSwgZSgzMTgpLCBlKDMxOSksIGUoMzIwKSwgZSgzMjEpLCBlKDMyMiksIGUoMzIzKSwgZSgzMjYpLCBlKDMyNyksIGUoMzM0KSwgZSgzMzcpLCBlKDMzOCksIGUoMzM5KSwgZSgzNDApLCBlKDM0MSksIGUoMzQzKSwgZSgzNDQpLCBlKDM0NiksIGUoMzQ3KSwgZSgzNDkpLCBlKDM1MCksIGUoMzUyKSwgZSgzNTMpLCBlKDM1NCksIGUoMzU1KSwgZSgzNTYpLCBlKDM1NyksIGUoMzU4KSwgZSgzNjApLCBlKDM2MSksIGUoMzYzKSwgZSgzNjQpLCBlKDM2NiksIGUoMzY4KSwgZSgzNjkpLCBlKDM3MSksIGUoMzc1KSwgZSgzNzYpLCBlKDM3OCksIGUoMzc5KSwgZSgzODEpLCBlKDM4MiksIGUoMzgzKSwgZSgzODQpLCBlKDM4NSksIGUoMzg2KSwgZSgzODcpLCBlKDM4OCksIGUoMzg5KSwgZSgzOTMpLCBlKDM5NCksIGUoMzk1KSwgZSgzOTYpLCBlKDM5NyksIGUoNDAwKSwgZSg0MDEpLCBlKDQwMiksIGUoNDAzKSwgZSg0MDQpLCBlKDQwNyksIGUoNDA4KSwgZSg0MDkpLCBlKDQxMCksIGUoNDEyKSwgZSg0MTUpLCBlKDQxNyksIGUoNDE4KSwgdC5leHBvcnRzID0gZSg0MTkpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzOSksCiAgICAgICAgICAgIGkgPSBlKDYzKSwKICAgICAgICAgICAgYSA9IGUoNjgpLAogICAgICAgICAgICB1ID0gZSg3MCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBhcml0eTogMSwKICAgICAgICAgICAgZm9yY2VkOiBlKDYpKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiA0Mjk0OTY3Mjk3ICE9PSBbXS5wdXNoLmNhbGwoewogICAgICAgICAgICAgICAgICAgIGxlbmd0aDogNDI5NDk2NzI5NgogICAgICAgICAgICAgICAgfSwgMSkKICAgICAgICAgICAgfSkpIHx8ICEgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwgImxlbmd0aCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICExCiAgICAgICAgICAgICAgICAgICAgfSkucHVzaCgpCiAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBUeXBlRXJyb3IKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSgpCiAgICAgICAgfSwgewogICAgICAgICAgICBwdXNoOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG8odGhpcyksCiAgICAgICAgICAgICAgICAgICAgZSA9IGkociksCiAgICAgICAgICAgICAgICAgICAgbiA9IGFyZ3VtZW50cy5sZW5ndGg7CiAgICAgICAgICAgICAgICB1KGUgKyBuKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgbjsgYysrKSByW2VdID0gYXJndW1lbnRzW2NdLCBlKys7CiAgICAgICAgICAgICAgICByZXR1cm4gYShyLCBlKSwgZQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMyksCiAgICAgICAgICAgIGkgPSBuKDQpLmYsCiAgICAgICAgICAgIGEgPSBuKDQzKSwKICAgICAgICAgICAgdSA9IG4oNDcpLAogICAgICAgICAgICBjID0gbigzNyksCiAgICAgICAgICAgIGYgPSBuKDU1KSwKICAgICAgICAgICAgcyA9IG4oNjcpOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgdmFyIG4sIHAsIGwsIGggPSByLnRhcmdldCwKICAgICAgICAgICAgICAgIHYgPSByLmdsb2JhbCwKICAgICAgICAgICAgICAgIHkgPSByLnN0YXQsCiAgICAgICAgICAgICAgICBkID0gdiA/IG8gOiB5ID8gb1toXSB8fCBjKGgsIHt9KSA6IChvW2hdIHx8IHt9KS5wcm90b3R5cGU7CiAgICAgICAgICAgIGlmIChkKQogICAgICAgICAgICAgICAgZm9yIChuIGluIGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAocCA9IGVbbl0sIGwgPSByLmRvbnRDYWxsR2V0U2V0ID8gKGwgPSBpKGQsIG4pKSAmJiBsLnZhbHVlIDogZFtuXSwgIXModiA/IG4gOiBoICsgKHkgPyAiLiIgOiAiIyIpICsgbiwgci5mb3JjZWQpICYmIGwgIT09IHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwID09IHR5cGVvZiBsKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgZihwLCBsKQogICAgICAgICAgICAgICAgICAgIH0oci5zaGFtIHx8IGwgJiYgbC5zaGFtKSAmJiBhKHAsICJzaGFtIiwgITApLCB1KGQsIG4sIHAsIHIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIGZ1bmN0aW9uIGUodCkgewogICAgICAgICAgICByZXR1cm4gdCAmJiB0Lk1hdGggPT0gTWF0aCAmJiB0CiAgICAgICAgfQogICAgICAgIHQuZXhwb3J0cyA9IGUoIm9iamVjdCIgPT0gdHlwZW9mIGdsb2JhbFRoaXMgJiYgZ2xvYmFsVGhpcykgfHwgZSgib2JqZWN0IiA9PSB0eXBlb2Ygd2luZG93ICYmIHdpbmRvdykgfHwgZSgib2JqZWN0IiA9PSB0eXBlb2Ygc2VsZiAmJiBzZWxmKSB8fCBlKCJvYmplY3QiID09IHR5cGVvZiBnbG9iYWwgJiYgZ2xvYmFsKSB8fCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9KCkgfHwgdGhpcyB8fCBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDUpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoOSksCiAgICAgICAgICAgIGEgPSBlKDEwKSwKICAgICAgICAgICAgdSA9IGUoMTEpLAogICAgICAgICAgICBjID0gZSgxNyksCiAgICAgICAgICAgIGYgPSBlKDM4KSwKICAgICAgICAgICAgcyA9IGUoNDEpLAogICAgICAgICAgICBwID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsKICAgICAgICByLmYgPSBuID8gcCA6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgaWYgKHQgPSB1KHQpLCByID0gYyhyKSwgcykgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBwKHQsIHIpCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgICAgIGlmIChmKHQsIHIpKSByZXR1cm4gYSghbyhpLmYsIHQsIHIpLCB0W3JdKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSg2KSwgdC5leHBvcnRzID0gIWUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gNyAhPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSlbMV0KICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISF0KCkKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoOCk7CiAgICAgICAgdmFyIG4gPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDsKICAgICAgICB0LmV4cG9ydHMgPSBlID8gbi5iaW5kKG4pIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBuLmFwcGx5KG4sIGFyZ3VtZW50cykKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoNiksIHQuZXhwb3J0cyA9ICFlKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbigpIHt9LmJpbmQoKTsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgfHwgdC5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLAogICAgICAgICAgICBvID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwKICAgICAgICAgICAgaSA9IG8gJiYgIW4uY2FsbCh7CiAgICAgICAgICAgICAgICAxOiAyCiAgICAgICAgICAgIH0sIDEpOwogICAgICAgIHIuZiA9IGkgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAhISh0ID0gbyh0aGlzLCB0KSkgJiYgdC5lbnVtZXJhYmxlCiAgICAgICAgfSA6IG4KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhKDEgJiB0KSwKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogISgyICYgdCksCiAgICAgICAgICAgICAgICB3cml0YWJsZTogISg0ICYgdCksCiAgICAgICAgICAgICAgICB2YWx1ZTogcgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMiksCiAgICAgICAgICAgIG8gPSBlKDE1KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBuKG8odCkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMyksCiAgICAgICAgICAgIG8gPSBlKDYpLAogICAgICAgICAgICBpID0gZSgxNCksCiAgICAgICAgICAgIGEgPSBPYmplY3QsCiAgICAgICAgICAgIHUgPSBuKCIiLnNwbGl0KTsKICAgICAgICB0LmV4cG9ydHMgPSBvKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICFhKCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCkKICAgICAgICB9KSkgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAiU3RyaW5nIiA9PSBpKHQpID8gdSh0LCAiIikgOiBhKHQpCiAgICAgICAgfSA6IGEKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoOCksCiAgICAgICAgICAgIG8gPSAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSkuY2FsbDsKICAgICAgICBlID0gbiAmJiBlLmJpbmQuYmluZChvLCBvKTsKICAgICAgICB0LmV4cG9ydHMgPSBuID8gZSA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8uYXBwbHkodCwgYXJndW1lbnRzKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gKGUgPSBlKDEzKSkoe30udG9TdHJpbmcpLAogICAgICAgICAgICBvID0gZSgiIi5zbGljZSk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gbyhuKHQpLCA4LCAtMSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDE2KSwKICAgICAgICAgICAgbyA9IFR5cGVFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChuKHQpKSB0aHJvdyBvKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiICsgdCk7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSkgewogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IHIgfHwgciA9PT0gdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTgpLAogICAgICAgICAgICBvID0gZSgyMik7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdCA9IG4odCwgInN0cmluZyIpLCBvKHQpID8gdCA6IHQgKyAiIgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDE5KSwKICAgICAgICAgICAgYSA9IG4oMjIpLAogICAgICAgICAgICB1ID0gbigyOSksCiAgICAgICAgICAgIGMgPSBuKDMyKSwKICAgICAgICAgICAgZiA9IChuID0gbigzMyksIFR5cGVFcnJvciksCiAgICAgICAgICAgIHMgPSBuKCJ0b1ByaW1pdGl2ZSIpOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgaWYgKCFpKHIpIHx8IGEocikpIHJldHVybiByOwogICAgICAgICAgICB2YXIgbiA9IHUociwgcyk7CiAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICBpZiAobiA9IG8obiwgciwgZSA9IGUgPT09IHQgPyAiZGVmYXVsdCIgOiBlKSwgIWkobikgfHwgYShuKSkgcmV0dXJuIG47CiAgICAgICAgICAgICAgICB0aHJvdyBmKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBjKHIsIGUgPSBlID09PSB0ID8gIm51bWJlciIgOiBlKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjApLAogICAgICAgICAgICBvID0gKGUgPSBlKDIxKSkuYWxsOwogICAgICAgIHQuZXhwb3J0cyA9IGUuSVNfSFRNTEREQSA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiB0ID8gbnVsbCAhPT0gdCA6IG4odCkgfHwgdCA9PT0gbwogICAgICAgIH0gOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgdCA/IG51bGwgIT09IHQgOiBuKHQpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gKGUgPSBlKDIxKSkuYWxsOwogICAgICAgIHQuZXhwb3J0cyA9IGUuSVNfSFRNTEREQSA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQgfHwgdCA9PT0gbgogICAgICAgIH0gOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSkgewogICAgICAgIHZhciBuID0gIm9iamVjdCIgPT0gdHlwZW9mIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbDsKICAgICAgICByLmV4cG9ydHMgPSB7CiAgICAgICAgICAgIGFsbDogbiwKICAgICAgICAgICAgSVNfSFRNTEREQTogdm9pZCAwID09PSBuICYmIG4gIT09IHQKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIzKSwKICAgICAgICAgICAgbyA9IGUoMjApLAogICAgICAgICAgICBpID0gZSgyNCksCiAgICAgICAgICAgIGEgPSAoZSA9IGUoMjUpLCBPYmplY3QpOwogICAgICAgIHQuZXhwb3J0cyA9IGUgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAic3ltYm9sIiA9PSB0eXBlb2YgdAogICAgICAgIH0gOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciByID0gbigiU3ltYm9sIik7CiAgICAgICAgICAgIHJldHVybiBvKHIpICYmIGkoci5wcm90b3R5cGUsIGEodCkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigzKSwKICAgICAgICAgICAgaSA9IG4oMjApOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gKG4gPSBvW3JdLCBpKG4pID8gbiA6IHQpIDogb1tyXSAmJiBvW3JdW2VdOwogICAgICAgICAgICB2YXIgbgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSgxMyksIHQuZXhwb3J0cyA9IGUoe30uaXNQcm90b3R5cGVPZikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSgyNiksIHQuZXhwb3J0cyA9IGUgJiYgIVN5bWJvbC5zaGFtICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjcpLAogICAgICAgICAgICBvID0gZSg2KSwKICAgICAgICAgICAgaSA9IGUoMykuU3RyaW5nOwogICAgICAgIHQuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhbygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gU3ltYm9sKCk7CiAgICAgICAgICAgIHJldHVybiAhaSh0KSB8fCAhKE9iamVjdCh0KSBpbnN0YW5jZW9mIFN5bWJvbCkgfHwgIVN5bWJvbC5zaGFtICYmIG4gJiYgbiA8IDQxCiAgICAgICAgfSkpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4sIG8sIGkgPSBlKDMpLAogICAgICAgICAgICBhID0gZSgyOCk7CiAgICAgICAgZSA9IGkucHJvY2VzcywgaSA9IGkuRGVubzsKICAgICAgICAhKG8gPSAoaSA9IChpID0gZSAmJiBlLnZlcnNpb25zIHx8IGkgJiYgaS52ZXJzaW9uKSAmJiBpLnY4KSA/IDAgPCAobiA9IGkuc3BsaXQoIi4iKSlbMF0gJiYgblswXSA8IDQgPyAxIDogKyhuWzBdICsgblsxXSkgOiBvKSAmJiBhICYmICghKG4gPSBhLm1hdGNoKC9FZGdlXC8oXGQrKS8pKSB8fCA3NCA8PSBuWzFdKSAmJiAobiA9IGEubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkgJiYgKG8gPSArblsxXSksIHQuZXhwb3J0cyA9IG8KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbmF2aWdhdG9yICYmIFN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KSB8fCAiIgogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigzMCksCiAgICAgICAgICAgIGkgPSBuKDE2KTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgIHJldHVybiBlID0gcltlXSwgaShlKSA/IHQgOiBvKGUpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyMCksCiAgICAgICAgICAgIG8gPSBlKDMxKSwKICAgICAgICAgICAgaSA9IFR5cGVFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChuKHQpKSByZXR1cm4gdDsKICAgICAgICAgICAgdGhyb3cgaShvKHQpICsgIiBpcyBub3QgYSBmdW5jdGlvbiIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHZhciBlID0gU3RyaW5nOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBlKHQpCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiT2JqZWN0IgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg3KSwKICAgICAgICAgICAgbyA9IGUoMjApLAogICAgICAgICAgICBpID0gZSgxOSksCiAgICAgICAgICAgIGEgPSBUeXBlRXJyb3I7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICB2YXIgZSwgdTsKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09PSByICYmIG8oZSA9IHQudG9TdHJpbmcpICYmICFpKHUgPSBuKGUsIHQpKSkgcmV0dXJuIHU7CiAgICAgICAgICAgIGlmIChvKGUgPSB0LnZhbHVlT2YpICYmICFpKHUgPSBuKGUsIHQpKSkgcmV0dXJuIHU7CiAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPT0gciAmJiBvKGUgPSB0LnRvU3RyaW5nKSAmJiAhaSh1ID0gbihlLCB0KSkpIHJldHVybiB1OwogICAgICAgICAgICB0aHJvdyBhKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBlKDM0KSwKICAgICAgICAgICAgaSA9IGUoMzgpLAogICAgICAgICAgICBhID0gZSg0MCksCiAgICAgICAgICAgIHUgPSBlKDI2KSwKICAgICAgICAgICAgYyA9IChlID0gZSgyNSksIG4uU3ltYm9sKSwKICAgICAgICAgICAgZiA9IG8oIndrcyIpLAogICAgICAgICAgICBzID0gZSA/IGMuZm9yIHx8IGMgOiBjICYmIGMud2l0aG91dFNldHRlciB8fCBhOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGkoZiwgdCkgfHwgKGZbdF0gPSB1ICYmIGkoYywgdCkgPyBjW3RdIDogcygiU3ltYm9sLiIgKyB0KSksIGZbdF0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDM1KSwKICAgICAgICAgICAgaSA9IG4oMzYpOwogICAgICAgIChyLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgIHJldHVybiBpW3JdIHx8IChpW3JdID0gZSAhPT0gdCA/IGUgOiB7fSkKICAgICAgICB9KSgidmVyc2lvbnMiLCBbXSkucHVzaCh7CiAgICAgICAgICAgIHZlcnNpb246ICIzLjMxLjAiLAogICAgICAgICAgICBtb2RlOiBvID8gInB1cmUiIDogImdsb2JhbCIsCiAgICAgICAgICAgIGNvcHlyaWdodDogIsKpIDIwMTQtMjAyMyBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsCiAgICAgICAgICAgIGxpY2Vuc2U6ICJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjMxLjAvTElDRU5TRSIsCiAgICAgICAgICAgIHNvdXJjZTogImh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzIgogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgdC5leHBvcnRzID0gITEKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBlKDM3KTsKICAgICAgICBlID0gbltlID0gIl9fY29yZS1qc19zaGFyZWRfXyJdIHx8IG8oZSwge30pOwogICAgICAgIHQuZXhwb3J0cyA9IGUKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgbyhuLCB0LCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHIsCiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIG5bdF0gPSByCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzKSwKICAgICAgICAgICAgbyA9IGUoMzkpLAogICAgICAgICAgICBpID0gbih7fS5oYXNPd25Qcm9wZXJ0eSk7CiAgICAgICAgdC5leHBvcnRzID0gT2JqZWN0Lmhhc093biB8fCBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiBpKG8odCksIHIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxNSksCiAgICAgICAgICAgIG8gPSBPYmplY3Q7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gbyhuKHQpKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBuID0gbigxMyk7CiAgICAgICAgdmFyIG8gPSAwLAogICAgICAgICAgICBpID0gTWF0aC5yYW5kb20oKSwKICAgICAgICAgICAgYSA9IG4oMS4udG9TdHJpbmcpOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgcmV0dXJuICJTeW1ib2woIiArIChyID09PSB0ID8gIiIgOiByKSArICIpXyIgKyBhKCsrbyArIGksIDM2KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNSksCiAgICAgICAgICAgIG8gPSBlKDYpLAogICAgICAgICAgICBpID0gZSg0Mik7CiAgICAgICAgdC5leHBvcnRzID0gIW4gJiYgIW8oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gNyAhPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoaSgiZGl2IiksICJhIiwgewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gNwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KS5hCiAgICAgICAgfSkpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMpLAogICAgICAgICAgICBvID0gKGUgPSBlKDE5KSwgbi5kb2N1bWVudCksCiAgICAgICAgICAgIGkgPSBlKG8pICYmIGUoby5jcmVhdGVFbGVtZW50KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBpID8gby5jcmVhdGVFbGVtZW50KHQpIDoge30KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDUpLAogICAgICAgICAgICBvID0gZSg0NCksCiAgICAgICAgICAgIGkgPSBlKDEwKTsKICAgICAgICB0LmV4cG9ydHMgPSBuID8gZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgICAgICByZXR1cm4gby5mKHQsIHIsIGkoMSwgZSkpCiAgICAgICAgfSA6IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRbcl0gPSBlLCB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg1KSwKICAgICAgICAgICAgbyA9IGUoNDEpLAogICAgICAgICAgICBpID0gZSg0NSksCiAgICAgICAgICAgIGEgPSBlKDQ2KSwKICAgICAgICAgICAgdSA9IGUoMTcpLAogICAgICAgICAgICBjID0gVHlwZUVycm9yLAogICAgICAgICAgICBmID0gT2JqZWN0LmRlZmluZVByb3BlcnR5LAogICAgICAgICAgICBzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwKICAgICAgICAgICAgcCA9ICJlbnVtZXJhYmxlIiwKICAgICAgICAgICAgbCA9ICJjb25maWd1cmFibGUiLAogICAgICAgICAgICBoID0gIndyaXRhYmxlIjsKICAgICAgICByLmYgPSBuID8gaSA/IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgIHJldHVybiBhKHQpLCByID0gdShyKSwgYShlKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdCAmJiAicHJvdG90eXBlIiA9PT0gciAmJiAidmFsdWUiIGluIGUgJiYgaCBpbiBlICYmICFlW2hdICYmIChuID0gcyh0LCByKSkgJiYgbltoXSAmJiAodFtyXSA9IGUudmFsdWUsIGUgPSB7CiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IChsIGluIGUgPyBlIDogbilbbF0sCiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAocCBpbiBlID8gZSA6IG4pW3BdLAogICAgICAgICAgICAgICAgd3JpdGFibGU6ICExCiAgICAgICAgICAgIH0pLCBmKHQsIHIsIGUpCiAgICAgICAgfSA6IGYgOiBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIGlmIChhKHQpLCByID0gdShyKSwgYShlKSwgbykgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBmKHQsIHIsIGUpCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgICAgIGlmICgiZ2V0IiBpbiBlIHx8ICJzZXQiIGluIGUpIHRocm93IGMoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7CiAgICAgICAgICAgIHJldHVybiAidmFsdWUiIGluIGUgJiYgKHRbcl0gPSBlLnZhbHVlKSwgdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNSk7CiAgICAgICAgZSA9IGUoNik7CiAgICAgICAgdC5leHBvcnRzID0gbiAmJiBlKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIDQyICE9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgoZnVuY3Rpb24oKSB7fSksICJwcm90b3R5cGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogNDIsCiAgICAgICAgICAgICAgICB3cml0YWJsZTogITEKICAgICAgICAgICAgfSkucHJvdG90eXBlCiAgICAgICAgfSkpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDE5KSwKICAgICAgICAgICAgbyA9IFN0cmluZywKICAgICAgICAgICAgaSA9IFR5cGVFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChuKHQpKSByZXR1cm4gdDsKICAgICAgICAgICAgdGhyb3cgaShvKHQpICsgIiBpcyBub3QgYW4gb2JqZWN0IikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIwKSwKICAgICAgICAgICAgaSA9IG4oNDQpLAogICAgICAgICAgICBhID0gbig0OCksCiAgICAgICAgICAgIHUgPSBuKDM3KTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlLCBuLCBjKSB7CiAgICAgICAgICAgIHZhciBmID0gKGMgPSBjIHx8IHt9KS5lbnVtZXJhYmxlLAogICAgICAgICAgICAgICAgcyA9IGMubmFtZSAhPT0gdCA/IGMubmFtZSA6IGU7CiAgICAgICAgICAgIGlmIChvKG4pICYmIGEobiwgcywgYyksIGMuZ2xvYmFsKSBmID8gcltlXSA9IG4gOiB1KGUsIG4pOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgYy51bnNhZmUgPyByW2VdICYmIChmID0gITApIDogZGVsZXRlIHJbZV0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHt9CiAgICAgICAgICAgICAgICBmID8gcltlXSA9IG4gOiBpLmYociwgZSwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogIWMubm9uQ29uZmlndXJhYmxlLAogICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhYy5ub25Xcml0YWJsZQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMTMpLAogICAgICAgICAgICBpID0gbig2KSwKICAgICAgICAgICAgYSA9IG4oMjApLAogICAgICAgICAgICB1ID0gbigzOCksCiAgICAgICAgICAgIGMgPSBuKDUpLAogICAgICAgICAgICBmID0gbig0OSkuQ09ORklHVVJBQkxFLAogICAgICAgICAgICBzID0gbig1MCksCiAgICAgICAgICAgIHAgPSAobiA9IG4oNTEpKS5lbmZvcmNlLAogICAgICAgICAgICBsID0gbi5nZXQsCiAgICAgICAgICAgIGggPSBTdHJpbmcsCiAgICAgICAgICAgIHYgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksCiAgICAgICAgICAgIHkgPSBvKCIiLnNsaWNlKSwKICAgICAgICAgICAgZCA9IG8oIiIucmVwbGFjZSksCiAgICAgICAgICAgIGcgPSBvKFtdLmpvaW4pLAogICAgICAgICAgICBiID0gYyAmJiAhaSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gOCAhPT0gdigoZnVuY3Rpb24oKSB7fSksICJsZW5ndGgiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDgKICAgICAgICAgICAgICAgIH0pLmxlbmd0aAogICAgICAgICAgICB9KSksCiAgICAgICAgICAgIG0gPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIik7CiAgICAgICAgciA9IHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICAgICAgIlN5bWJvbCgiID09PSB5KGgoZSksIDAsIDcpICYmIChlID0gIlsiICsgZChoKGUpLCAvXlN5bWJvbFwoKFteKV0qKVwpLywgIiQxIikgKyAiXSIpLCBuICYmIG4uZ2V0dGVyICYmIChlID0gImdldCAiICsgZSksIG4gJiYgbi5zZXR0ZXIgJiYgKGUgPSAic2V0ICIgKyBlKSwgKCF1KHIsICJuYW1lIikgfHwgZiAmJiByLm5hbWUgIT09IGUpICYmIChjID8gdihyLCAibmFtZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICB9KSA6IHIubmFtZSA9IGUpLCBiICYmIG4gJiYgdShuLCAiYXJpdHkiKSAmJiByLmxlbmd0aCAhPT0gbi5hcml0eSAmJiB2KHIsICJsZW5ndGgiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogbi5hcml0eQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIG4gJiYgdShuLCAiY29uc3RydWN0b3IiKSAmJiBuLmNvbnN0cnVjdG9yID8gYyAmJiB2KHIsICJwcm90b3R5cGUiLCB7CiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICExCiAgICAgICAgICAgICAgICB9KSA6IHIucHJvdG90eXBlICYmIChyLnByb3RvdHlwZSA9IHQpCiAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHt9CiAgICAgICAgICAgIHJldHVybiBuID0gcChyKSwgdShuLCAic291cmNlIikgfHwgKG4uc291cmNlID0gZyhtLCAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IGUgOiAiIikpLCByCiAgICAgICAgfTsKICAgICAgICBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSByKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGEodGhpcykgJiYgbCh0aGlzKS5zb3VyY2UgfHwgcyh0aGlzKQogICAgICAgIH0pLCAidG9TdHJpbmciKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg1KSwKICAgICAgICAgICAgbyA9IGUoMzgpLAogICAgICAgICAgICBpID0gRnVuY3Rpb24ucHJvdG90eXBlLAogICAgICAgICAgICBhID0gbiAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOwogICAgICAgIG8gPSAoZSA9IG8oaSwgIm5hbWUiKSkgJiYgInNvbWV0aGluZyIgPT09IGZ1bmN0aW9uKCkge30ubmFtZSwgaSA9IGUgJiYgKCFuIHx8IG4gJiYgYShpLCAibmFtZSIpLmNvbmZpZ3VyYWJsZSk7CiAgICAgICAgdC5leHBvcnRzID0gewogICAgICAgICAgICBFWElTVFM6IGUsCiAgICAgICAgICAgIFBST1BFUjogbywKICAgICAgICAgICAgQ09ORklHVVJBQkxFOiBpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMyksCiAgICAgICAgICAgIG8gPSBlKDIwKSwKICAgICAgICAgICAgaSA9IChlID0gZSgzNiksIG4oRnVuY3Rpb24udG9TdHJpbmcpKTsKICAgICAgICBvKGUuaW5zcGVjdFNvdXJjZSkgfHwgKGUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGkodCkKICAgICAgICB9KSwgdC5leHBvcnRzID0gZS5pbnNwZWN0U291cmNlCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4sIG8sIGksIGEsIHUgPSBlKDUyKSwKICAgICAgICAgICAgYyA9IGUoMyksCiAgICAgICAgICAgIGYgPSBlKDE5KSwKICAgICAgICAgICAgcyA9IGUoNDMpLAogICAgICAgICAgICBwID0gZSgzOCksCiAgICAgICAgICAgIGwgPSBlKDM2KSwKICAgICAgICAgICAgaCA9IGUoNTMpLAogICAgICAgICAgICB2ID0gKGUgPSBlKDU0KSwgIk9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIiksCiAgICAgICAgICAgIHkgPSBjLlR5cGVFcnJvciwKICAgICAgICAgICAgZCA9IChjID0gYy5XZWFrTWFwLCB1IHx8IGwuc3RhdGUgPyAoKGkgPSBsLnN0YXRlIHx8IChsLnN0YXRlID0gbmV3IGMpKS5nZXQgPSBpLmdldCwgaS5oYXMgPSBpLmhhcywgaS5zZXQgPSBpLnNldCwgbiA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIGlmIChpLmhhcyh0KSkgdGhyb3cgeSh2KTsKICAgICAgICAgICAgICAgIHJldHVybiByLmZhY2FkZSA9IHQsIGkuc2V0KHQsIHIpLCByCiAgICAgICAgICAgIH0sIG8gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaS5nZXQodCkgfHwge30KICAgICAgICAgICAgfSwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkuaGFzKHQpCiAgICAgICAgICAgIH0pIDogKGVbYSA9IGgoInN0YXRlIildID0gITAsIG4gPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICBpZiAocCh0LCBhKSkgdGhyb3cgeSh2KTsKICAgICAgICAgICAgICAgIHJldHVybiByLmZhY2FkZSA9IHQsIHModCwgYSwgciksIHIKICAgICAgICAgICAgfSwgbyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwKHQsIGEpID8gdFthXSA6IHt9CiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwKHQsIGEpCiAgICAgICAgICAgIH0pKTsKICAgICAgICB0LmV4cG9ydHMgPSB7CiAgICAgICAgICAgIHNldDogbiwKICAgICAgICAgICAgZ2V0OiBvLAogICAgICAgICAgICBoYXM6IGQsCiAgICAgICAgICAgIGVuZm9yY2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBkKHQpID8gbyh0KSA6IG4odCwge30pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldHRlckZvcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWYocikgfHwgKGUgPSBvKHIpKS50eXBlICE9PSB0KSB0aHJvdyB5KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIgKyB0ICsgIiByZXF1aXJlZCIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMpOwogICAgICAgIGUgPSBlKDIwKSwgbiA9IG4uV2Vha01hcDsKICAgICAgICB0LmV4cG9ydHMgPSBlKG4pICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcobikpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDM0KSwKICAgICAgICAgICAgbyA9IGUoNDApLAogICAgICAgICAgICBpID0gbigia2V5cyIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGlbdF0gfHwgKGlbdF0gPSBvKHQpKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSB7fQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzOCksCiAgICAgICAgICAgIG8gPSBlKDU2KSwKICAgICAgICAgICAgaSA9IGUoNCksCiAgICAgICAgICAgIGEgPSBlKDQ0KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHUgPSBvKHIpLCBjID0gYS5mLCBmID0gaS5mLCBzID0gMDsgcyA8IHUubGVuZ3RoOyBzKyspIHsKICAgICAgICAgICAgICAgIHZhciBwID0gdVtzXTsKICAgICAgICAgICAgICAgIG4odCwgcCkgfHwgZSAmJiBuKGUsIHApIHx8IGModCwgcCwgZihyLCBwKSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjMpLAogICAgICAgICAgICBvID0gZSgxMyksCiAgICAgICAgICAgIGkgPSBlKDU3KSwKICAgICAgICAgICAgYSA9IGUoNjYpLAogICAgICAgICAgICB1ID0gZSg0NiksCiAgICAgICAgICAgIGMgPSBvKFtdLmNvbmNhdCk7CiAgICAgICAgdC5leHBvcnRzID0gbigiUmVmbGVjdCIsICJvd25LZXlzIikgfHwgZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgciA9IGkuZih1KHQpKSwKICAgICAgICAgICAgICAgIGUgPSBhLmY7CiAgICAgICAgICAgIHJldHVybiBlID8gYyhyLCBlKHQpKSA6IHIKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDU4KSwKICAgICAgICAgICAgbyA9IGUoNjUpLmNvbmNhdCgibGVuZ3RoIiwgInByb3RvdHlwZSIpOwogICAgICAgIHIuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG4odCwgbykKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzKSwKICAgICAgICAgICAgbyA9IGUoMzgpLAogICAgICAgICAgICBpID0gZSgxMSksCiAgICAgICAgICAgIGEgPSBlKDU5KS5pbmRleE9mLAogICAgICAgICAgICB1ID0gZSg1NCksCiAgICAgICAgICAgIGMgPSBuKFtdLnB1c2gpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgdmFyIGUsIG4gPSBpKHQpLAogICAgICAgICAgICAgICAgZiA9IDAsCiAgICAgICAgICAgICAgICBzID0gW107CiAgICAgICAgICAgIGZvciAoZSBpbiBuKSAhbyh1LCBlKSAmJiBvKG4sIGUpICYmIGMocywgZSk7CiAgICAgICAgICAgIGZvciAoOyByLmxlbmd0aCA+IGY7KSBvKG4sIGUgPSByW2YrK10pICYmICh+YShzLCBlKSB8fCBjKHMsIGUpKTsKICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDExKSwKICAgICAgICAgICAgbyA9IGUoNjApLAogICAgICAgICAgICBpID0gZSg2Myk7CiAgICAgICAgZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHIsIGUsIGEpIHsKICAgICAgICAgICAgICAgIHZhciB1LCBjID0gbihyKSwKICAgICAgICAgICAgICAgICAgICBmID0gaShjKSwKICAgICAgICAgICAgICAgICAgICBzID0gbyhhLCBmKTsKICAgICAgICAgICAgICAgIGlmICh0ICYmIGUgIT0gZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAoOyBzIDwgZjspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodSA9IGNbcysrXSkgIT0gdSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgcyA8IGY7IHMrKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0IHx8IHMgaW4gYykgJiYgY1tzXSA9PT0gZSkgcmV0dXJuIHQgfHwgcyB8fCAwOwogICAgICAgICAgICAgICAgcmV0dXJuICF0ICYmIC0xCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHQuZXhwb3J0cyA9IHsKICAgICAgICAgICAgaW5jbHVkZXM6IGUoITApLAogICAgICAgICAgICBpbmRleE9mOiBlKCExKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjEpLAogICAgICAgICAgICBvID0gTWF0aC5tYXgsCiAgICAgICAgICAgIGkgPSBNYXRoLm1pbjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiAodCA9IG4odCkpIDwgMCA/IG8odCArIHIsIDApIDogaSh0LCByKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICh0ID0gK3QpICE9IHQgfHwgMCA9PSB0ID8gMCA6IG4odCkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgdmFyIGUgPSBNYXRoLmNlaWwsCiAgICAgICAgICAgIG4gPSBNYXRoLmZsb29yOwogICAgICAgIHQuZXhwb3J0cyA9IE1hdGgudHJ1bmMgfHwgZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gKDAgPCAodCA9ICt0KSA/IG4gOiBlKSh0KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjQpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG4odC5sZW5ndGgpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg2MSksCiAgICAgICAgICAgIG8gPSBNYXRoLm1pbjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAwIDwgdCA/IG8obih0KSwgOTAwNzE5OTI1NDc0MDk5MSkgOiAwCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHQuZXhwb3J0cyA9IFsiY29uc3RydWN0b3IiLCAiaGFzT3duUHJvcGVydHkiLCAiaXNQcm90b3R5cGVPZiIsICJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsICJ0b0xvY2FsZVN0cmluZyIsICJ0b1N0cmluZyIsICJ2YWx1ZU9mIl0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICByLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDYpLAogICAgICAgICAgICBvID0gZSgyMCksCiAgICAgICAgICAgIGkgPSAvI3xcLnByb3RvdHlwZVwuLywKICAgICAgICAgICAgYSA9IChlID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuICh0ID0gdVthKHQpXSkgPT0gZiB8fCB0ICE9IGMgJiYgKG8ocikgPyBuKHIpIDogISFyKQogICAgICAgICAgICB9LCBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcodCkucmVwbGFjZShpLCAiLiIpLnRvTG93ZXJDYXNlKCkKICAgICAgICAgICAgfSksCiAgICAgICAgICAgIHUgPSBlLmRhdGEgPSB7fSwKICAgICAgICAgICAgYyA9IGUuTkFUSVZFID0gIk4iLAogICAgICAgICAgICBmID0gZS5QT0xZRklMTCA9ICJQIjsKICAgICAgICB0LmV4cG9ydHMgPSBlCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDUpLAogICAgICAgICAgICBpID0gbig2OSksCiAgICAgICAgICAgIGEgPSBUeXBlRXJyb3IsCiAgICAgICAgICAgIHUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOwogICAgICAgIG8gPSBvICYmICEgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICh0aGlzICE9PSB0KSByZXR1cm4gMTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwgImxlbmd0aCIsIHsKICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITEKICAgICAgICAgICAgICAgIH0pLmxlbmd0aCA9IDEKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBUeXBlRXJyb3IKICAgICAgICAgICAgfQogICAgICAgIH0oKTsKICAgICAgICByLmV4cG9ydHMgPSBvID8gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICBpZiAoaSh0KSAmJiAhdSh0LCAibGVuZ3RoIikud3JpdGFibGUpIHRocm93IGEoIkNhbm5vdCBzZXQgcmVhZCBvbmx5IC5sZW5ndGgiKTsKICAgICAgICAgICAgcmV0dXJuIHQubGVuZ3RoID0gcgogICAgICAgIH0gOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiB0Lmxlbmd0aCA9IHIKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDE0KTsKICAgICAgICB0LmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJBcnJheSIgPT0gbih0KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB2YXIgZSA9IFR5cGVFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICg5MDA3MTk5MjU0NzQwOTkxIDwgdCkgdGhyb3cgZSgiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNzIpLAogICAgICAgICAgICBpID0gZSgxMSksCiAgICAgICAgICAgIGEgPSAoZSA9IGUoNzMpLCBBcnJheSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB0b1JldmVyc2VkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKGkodGhpcyksIGEpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgZSgidG9SZXZlcnNlZCIpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDYzKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIGZvciAodmFyIGUgPSBuKHQpLCBvID0gbmV3IHIoZSksIGkgPSAwOyBpIDwgZTsgaSsrKSBvW2ldID0gdFtlIC0gaSAtIDFdOwogICAgICAgICAgICByZXR1cm4gbwogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMzMpLAogICAgICAgICAgICBpID0gbig3NCksCiAgICAgICAgICAgIGEgPSAobiA9IG4oNDQpLmYsIG8oInVuc2NvcGFibGVzIikpLAogICAgICAgICAgICB1ID0gQXJyYXkucHJvdG90eXBlOwogICAgICAgIHVbYV0gPT0gdCAmJiBuKHUsIGEsIHsKICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgdmFsdWU6IGkobnVsbCkKICAgICAgICB9KSwgci5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB1W2FdW3RdID0gITAKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgZnVuY3Rpb24gbygpIHt9CgogICAgICAgIGZ1bmN0aW9uIGkodCkgewogICAgICAgICAgICByZXR1cm4gIjxzY3JpcHQ+IiArIHQgKyAiPC8iICsgdiArICI+IgogICAgICAgIH0KICAgICAgICB2YXIgYSwgdSA9IG4oNDYpLAogICAgICAgICAgICBjID0gbig3NSksCiAgICAgICAgICAgIGYgPSBuKDY1KSwKICAgICAgICAgICAgcyA9IG4oNTQpLAogICAgICAgICAgICBwID0gbig3NyksCiAgICAgICAgICAgIGwgPSBuKDQyKSwKICAgICAgICAgICAgaCA9IChuID0gbig1MyksICJwcm90b3R5cGUiKSwKICAgICAgICAgICAgdiA9ICJzY3JpcHQiLAogICAgICAgICAgICB5ID0gbigiSUVfUFJPVE8iKSwKICAgICAgICAgICAgZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBhID0gbmV3IEFjdGl2ZVhPYmplY3QoImh0bWxmaWxlIikKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgIGQgPSAidW5kZWZpbmVkIiA9PSB0eXBlb2YgZG9jdW1lbnQgfHwgZG9jdW1lbnQuZG9tYWluICYmIGEgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdC53cml0ZShpKCIiKSksIHQuY2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQucGFyZW50V2luZG93Lk9iamVjdDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IG51bGwsIHIKICAgICAgICAgICAgICAgIH0oYSkgOiAoKHQgPSBsKCJpZnJhbWUiKSkuc3R5bGUuZGlzcGxheSA9ICJub25lIiwgcC5hcHBlbmRDaGlsZCh0KSwgdC5zcmMgPSBTdHJpbmcoImphdmFzY3JpcHQ6IiksICh0ID0gdC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksIHQud3JpdGUoaSgiZG9jdW1lbnQuRj1PYmplY3QiKSksIHQuY2xvc2UoKSwgdC5GKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBmLmxlbmd0aDsgci0tOykgZGVsZXRlIGRbaF1bZltyXV07CiAgICAgICAgICAgICAgICByZXR1cm4gZCgpCiAgICAgICAgICAgIH07CiAgICAgICAgc1t5XSA9ICEwLCByLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgIHJldHVybiBudWxsICE9PSByID8gKG9baF0gPSB1KHIpLCBuID0gbmV3IG8sIG9baF0gPSBudWxsLCBuW3ldID0gcikgOiBuID0gZCgpLCBlID09PSB0ID8gbiA6IGMuZihuLCBlKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNSksCiAgICAgICAgICAgIG8gPSBlKDQ1KSwKICAgICAgICAgICAgaSA9IGUoNDQpLAogICAgICAgICAgICBhID0gZSg0NiksCiAgICAgICAgICAgIHUgPSBlKDExKSwKICAgICAgICAgICAgYyA9IGUoNzYpOwogICAgICAgIHIuZiA9IG4gJiYgIW8gPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgYSh0KTsKICAgICAgICAgICAgZm9yICh2YXIgZSwgbiA9IHUociksIG8gPSBjKHIpLCBmID0gby5sZW5ndGgsIHMgPSAwOyBzIDwgZjspIGkuZih0LCBlID0gb1tzKytdLCBuW2VdKTsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDU4KSwKICAgICAgICAgICAgbyA9IGUoNjUpOwogICAgICAgIHQuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG4odCwgbykKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoMjMpLCB0LmV4cG9ydHMgPSBlKCJkb2N1bWVudCIsICJkb2N1bWVudEVsZW1lbnQiKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTMpLAogICAgICAgICAgICBhID0gbigzMCksCiAgICAgICAgICAgIHUgPSBuKDExKSwKICAgICAgICAgICAgYyA9IG4oNzkpLAogICAgICAgICAgICBmID0gbig4MCksCiAgICAgICAgICAgIHMgPSAobiA9IG4oNzMpLCBBcnJheSksCiAgICAgICAgICAgIHAgPSBpKGYoIkFycmF5Iikuc29ydCk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB0b1NvcnRlZDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgciAhPT0gdCAmJiBhKHIpOwogICAgICAgICAgICAgICAgdmFyIGUgPSB1KHRoaXMpOwogICAgICAgICAgICAgICAgZSA9IGMocywgZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gcChlLCByKQogICAgICAgICAgICB9CiAgICAgICAgfSksIG4oInRvU29ydGVkIikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjMpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IDAsIG8gPSBuKHIpLCBpID0gbmV3IHQobyk7IGUgPCBvOykgaVtlXSA9IHJbZSsrXTsKICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG5bdF0ucHJvdG90eXBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNzMpLAogICAgICAgICAgICBpID0gZSg3MCksCiAgICAgICAgICAgIGEgPSBlKDYzKSwKICAgICAgICAgICAgdSA9IGUoNjApLAogICAgICAgICAgICBjID0gZSgxMSksCiAgICAgICAgICAgIGYgPSBlKDYxKSwKICAgICAgICAgICAgcyA9IEFycmF5LAogICAgICAgICAgICBwID0gTWF0aC5tYXgsCiAgICAgICAgICAgIGwgPSBNYXRoLm1pbjsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXJyYXkiLAogICAgICAgICAgICBwcm90bzogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHRvU3BsaWNlZDogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgdmFyIGUsIG4sIG8sIGgsIHYgPSBjKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIHkgPSBhKHYpLAogICAgICAgICAgICAgICAgICAgIGQgPSB1KHQsIHkpLAogICAgICAgICAgICAgICAgICAgIGcgPSAwOwogICAgICAgICAgICAgICAgZm9yICgwID09PSAodCA9IGFyZ3VtZW50cy5sZW5ndGgpID8gZSA9IG4gPSAwIDogbiA9IDEgPT09IHQgPyAoZSA9IDAsIHkgLSBkKSA6IChlID0gdCAtIDIsIGwocChmKHIpLCAwKSwgeSAtIGQpKSwgbyA9IGkoeSArIGUgLSBuKSwgaCA9IHMobyk7IGcgPCBkOyBnKyspIGhbZ10gPSB2W2ddOwogICAgICAgICAgICAgICAgZm9yICg7IGcgPCBkICsgZTsgZysrKSBoW2ddID0gYXJndW1lbnRzW2cgLSBkICsgMl07CiAgICAgICAgICAgICAgICBmb3IgKDsgZyA8IG87IGcrKykgaFtnXSA9IHZbZyArIG4gLSBlXTsKICAgICAgICAgICAgICAgIHJldHVybiBoCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgbygidG9TcGxpY2VkIikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDgzKSwKICAgICAgICAgICAgaSA9IGUoMTEpLAogICAgICAgICAgICBhID0gQXJyYXk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB3aXRoOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyhpKHRoaXMpLCBhLCB0LCByKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjMpLAogICAgICAgICAgICBvID0gZSg2MSksCiAgICAgICAgICAgIGkgPSBSYW5nZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUsIGEpIHsKICAgICAgICAgICAgdmFyIHUgPSBuKHQpLAogICAgICAgICAgICAgICAgYyA9IChlID0gbyhlKSkgPCAwID8gdSArIGUgOiBlOwogICAgICAgICAgICBpZiAodSA8PSBjIHx8IGMgPCAwKSB0aHJvdyBpKCJJbmNvcnJlY3QgaW5kZXgiKTsKICAgICAgICAgICAgZm9yICh2YXIgZiA9IG5ldyByKHUpLCBzID0gMDsgcyA8IHU7IHMrKykgZltzXSA9IHMgPT09IGMgPyBhIDogdFtzXTsKICAgICAgICAgICAgcmV0dXJuIGYKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMpLAogICAgICAgICAgICBvID0gZSg1KSwKICAgICAgICAgICAgaSA9IGUoODUpLAogICAgICAgICAgICBhID0gZSg4NiksCiAgICAgICAgICAgIHUgPSAoZSA9IGUoNiksIG4uUmVnRXhwKSwKICAgICAgICAgICAgYyA9IHUucHJvdG90eXBlOwogICAgICAgIG8gJiYgZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gITA7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB1KCIuIiwgImQiKQogICAgICAgICAgICB9IGNhdGNoIChyKSB7CiAgICAgICAgICAgICAgICB0ID0gITEKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgciwgZSA9IHt9LAogICAgICAgICAgICAgICAgbiA9ICIiLAogICAgICAgICAgICAgICAgbyA9IHQgPyAiZGdpbXN5IiA6ICJnaW1zeSIsCiAgICAgICAgICAgICAgICBpID0gewogICAgICAgICAgICAgICAgICAgIGRvdEFsbDogInMiLAogICAgICAgICAgICAgICAgICAgIGdsb2JhbDogImciLAogICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2U6ICJpIiwKICAgICAgICAgICAgICAgICAgICBtdWx0aWxpbmU6ICJtIiwKICAgICAgICAgICAgICAgICAgICBzdGlja3k6ICJ5IgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgZm9yIChyIGluIHQgJiYgKGkuaGFzSW5kaWNlcyA9ICJkIiksIGkpICEgZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiArPSByLCAhMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0ociwgaVtyXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGMsICJmbGFncyIpLmdldC5jYWxsKGUpICE9PSBvIHx8IG4gIT09IG8KICAgICAgICB9KSkgJiYgaShjLCAiZmxhZ3MiLCB7CiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIGdldDogYQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDQ4KSwKICAgICAgICAgICAgbyA9IGUoNDQpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUuZ2V0ICYmIG4oZS5nZXQsIHIsIHsKICAgICAgICAgICAgICAgIGdldHRlcjogITAKICAgICAgICAgICAgfSksIGUuc2V0ICYmIG4oZS5zZXQsIHIsIHsKICAgICAgICAgICAgICAgIHNldHRlcjogITAKICAgICAgICAgICAgfSksIG8uZih0LCByLCBlKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNDYpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IG4odGhpcyksCiAgICAgICAgICAgICAgICByID0gIiI7CiAgICAgICAgICAgIHJldHVybiB0Lmhhc0luZGljZXMgJiYgKHIgKz0gImQiKSwgdC5nbG9iYWwgJiYgKHIgKz0gImciKSwgdC5pZ25vcmVDYXNlICYmIChyICs9ICJpIiksIHQubXVsdGlsaW5lICYmIChyICs9ICJtIiksIHQuZG90QWxsICYmIChyICs9ICJzIiksIHQudW5pY29kZSAmJiAociArPSAidSIpLCB0LnVuaWNvZGVTZXRzICYmIChyICs9ICJ2IiksIHQuc3RpY2t5ICYmIChyICs9ICJ5IiksIHIKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgxMyksCiAgICAgICAgICAgIGkgPSBlKDE1KSwKICAgICAgICAgICAgYSA9IGUoODgpLAogICAgICAgICAgICB1ID0gbygiIi5jaGFyQ29kZUF0KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU3RyaW5nIiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpc1dlbGxGb3JtZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IGEoaSh0aGlzKSksIHIgPSB0Lmxlbmd0aCwgZSA9IDA7IGUgPCByOyBlKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHUodCwgZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKDU1Mjk2ID09ICg2MzQ4OCAmIG4pICYmICg1NjMyMCA8PSBuIHx8ICsrZSA+PSByIHx8IDU2MzIwICE9ICg2NDUxMiAmIHUodCwgZSkpKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDg5KSwKICAgICAgICAgICAgbyA9IFN0cmluZzsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgiU3ltYm9sIiA9PT0gbih0KSkgdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpOwogICAgICAgICAgICByZXR1cm4gbyh0KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oOTApLAogICAgICAgICAgICBpID0gbigyMCksCiAgICAgICAgICAgIGEgPSBuKDE0KSwKICAgICAgICAgICAgdSA9IG4oMzMpKCJ0b1N0cmluZ1RhZyIpLAogICAgICAgICAgICBjID0gT2JqZWN0LAogICAgICAgICAgICBmID0gIkFyZ3VtZW50cyIgPT0gYShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMKICAgICAgICAgICAgfSgpKTsKICAgICAgICByLmV4cG9ydHMgPSBvID8gYSA6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgIHJldHVybiByID09PSB0ID8gIlVuZGVmaW5lZCIgOiBudWxsID09PSByID8gIk51bGwiIDogInN0cmluZyIgPT0gdHlwZW9mKHIgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0W3JdCiAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICB9KGUgPSBjKHIpLCB1KSkgPyByIDogZiA/IGEoZSkgOiAiT2JqZWN0IiA9PSAociA9IGEoZSkpICYmIGkoZS5jYWxsZWUpID8gIkFyZ3VtZW50cyIgOiByCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0ge307CiAgICAgICAgbltlKDMzKSgidG9TdHJpbmdUYWciKV0gPSAieiIsIHQuZXhwb3J0cyA9ICJbb2JqZWN0IHpdIiA9PT0gU3RyaW5nKG4pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMTMpLAogICAgICAgICAgICBhID0gZSgxNSksCiAgICAgICAgICAgIHUgPSBlKDg4KSwKICAgICAgICAgICAgYyA9IChlID0gZSg2KSwgQXJyYXkpLAogICAgICAgICAgICBmID0gaSgiIi5jaGFyQXQpLAogICAgICAgICAgICBzID0gaSgiIi5jaGFyQ29kZUF0KSwKICAgICAgICAgICAgcCA9IGkoW10uam9pbiksCiAgICAgICAgICAgIGwgPSAiIi50b1dlbGxGb3JtZWQsCiAgICAgICAgICAgIGggPSBsICYmIGUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICIxIiAhPT0gbyhsLCAxKQogICAgICAgICAgICB9KSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlN0cmluZyIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiBoCiAgICAgICAgfSwgewogICAgICAgICAgICB0b1dlbGxGb3JtZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB1KGEodGhpcykpOwogICAgICAgICAgICAgICAgaWYgKGgpIHJldHVybiBvKGwsIHQpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IHQubGVuZ3RoLCBlID0gYyhyKSwgbiA9IDA7IG4gPCByOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHModCwgbik7CiAgICAgICAgICAgICAgICAgICAgNTUyOTYgIT0gKDYzNDg4ICYgaSkgPyBlW25dID0gZih0LCBuKSA6IDU2MzIwIDw9IGkgfHwgciA8PSBuICsgMSB8fCA1NjMyMCAhPSAoNjQ1MTIgJiBzKHQsIG4gKyAxKSkgPyBlW25dID0gIu+/vSIgOiAoZVtuXSA9IGYodCwgbiksIGVbKytuXSA9IGYodCwgbikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gcChlLCAiIikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcyKSwKICAgICAgICAgICAgbyA9IGUoOTMpLAogICAgICAgICAgICBpID0gby5hVHlwZWRBcnJheSwKICAgICAgICAgICAgYSA9IChlID0gby5leHBvcnRUeXBlZEFycmF5TWV0aG9kLCBvLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgICAgZSgidG9SZXZlcnNlZCIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG4oaSh0aGlzKSwgYSh0aGlzKSkKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgcmV0dXJuICEhbCh0KSAmJiAodCA9IHYodCksIGgoQywgdCkgfHwgaChfLCB0KSkKICAgICAgICB9CiAgICAgICAgdmFyIGksIGEsIHUsIGMgPSBuKDk0KSwKICAgICAgICAgICAgZiA9IG4oNSksCiAgICAgICAgICAgIHMgPSBuKDMpLAogICAgICAgICAgICBwID0gbigyMCksCiAgICAgICAgICAgIGwgPSBuKDE5KSwKICAgICAgICAgICAgaCA9IG4oMzgpLAogICAgICAgICAgICB2ID0gbig4OSksCiAgICAgICAgICAgIHkgPSBuKDMxKSwKICAgICAgICAgICAgZCA9IG4oNDMpLAogICAgICAgICAgICBnID0gbig0NyksCiAgICAgICAgICAgIGIgPSBuKDg1KSwKICAgICAgICAgICAgbSA9IG4oMjQpLAogICAgICAgICAgICB4ID0gbig5NSksCiAgICAgICAgICAgIHcgPSBuKDk3KSwKICAgICAgICAgICAgUyA9IG4oMzMpLAogICAgICAgICAgICBBID0gbig0MCksCiAgICAgICAgICAgIEUgPSAoSSA9IG4oNTEpKS5lbmZvcmNlLAogICAgICAgICAgICBPID0gSS5nZXQsCiAgICAgICAgICAgIFIgPSAobiA9IHMuSW50OEFycmF5KSAmJiBuLnByb3RvdHlwZSwKICAgICAgICAgICAgSSA9IChJID0gcy5VaW50OENsYW1wZWRBcnJheSkgJiYgSS5wcm90b3R5cGUsCiAgICAgICAgICAgIGsgPSBuICYmIHgobiksCiAgICAgICAgICAgIFQgPSBSICYmIHgoUiksCiAgICAgICAgICAgIE0gPSAobiA9IE9iamVjdC5wcm90b3R5cGUsIHMuVHlwZUVycm9yKSwKICAgICAgICAgICAgaiA9IChTID0gUygidG9TdHJpbmdUYWciKSwgQSgiVFlQRURfQVJSQVlfVEFHIikpLAogICAgICAgICAgICBQID0gIlR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsCiAgICAgICAgICAgIEQgPSBjICYmICEhdyAmJiAiT3BlcmEiICE9PSB2KHMub3BlcmEpLAogICAgICAgICAgICBDID0gKGMgPSAhMSwgewogICAgICAgICAgICAgICAgSW50OEFycmF5OiAxLAogICAgICAgICAgICAgICAgVWludDhBcnJheTogMSwKICAgICAgICAgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5OiAxLAogICAgICAgICAgICAgICAgSW50MTZBcnJheTogMiwKICAgICAgICAgICAgICAgIFVpbnQxNkFycmF5OiAyLAogICAgICAgICAgICAgICAgSW50MzJBcnJheTogNCwKICAgICAgICAgICAgICAgIFVpbnQzMkFycmF5OiA0LAogICAgICAgICAgICAgICAgRmxvYXQzMkFycmF5OiA0LAogICAgICAgICAgICAgICAgRmxvYXQ2NEFycmF5OiA4CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBfID0gewogICAgICAgICAgICAgICAgQmlnSW50NjRBcnJheTogOCwKICAgICAgICAgICAgICAgIEJpZ1VpbnQ2NEFycmF5OiA4CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IHgodCk7CiAgICAgICAgICAgICAgICBpZiAobChyKSkgcmV0dXJuICh0ID0gTyhyKSkgJiYgaCh0LCBQKSA/IHRbUF0gOiBOKHIpCiAgICAgICAgICAgIH07CiAgICAgICAgZm9yIChpIGluIEMpKHUgPSAoYSA9IHNbaV0pICYmIGEucHJvdG90eXBlKSA/IEUodSlbUF0gPSBhIDogRCA9ICExOwogICAgICAgIGZvciAoaSBpbiBfKSh1ID0gKGEgPSBzW2ldKSAmJiBhLnByb3RvdHlwZSkgJiYgKEUodSlbUF0gPSBhKTsKICAgICAgICBpZiAoKCFEIHx8ICFwKGspIHx8IGsgPT09IEZ1bmN0aW9uLnByb3RvdHlwZSkgJiYgKGsgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRocm93IE0oIkluY29ycmVjdCBpbnZvY2F0aW9uIikKICAgICAgICAgICAgfSwgRCkpCiAgICAgICAgICAgIGZvciAoaSBpbiBDKSBzW2ldICYmIHcoc1tpXSwgayk7CiAgICAgICAgaWYgKCghRCB8fCAhVCB8fCBUID09PSBuKSAmJiAoVCA9IGsucHJvdG90eXBlLCBEKSkKICAgICAgICAgICAgZm9yIChpIGluIEMpIHNbaV0gJiYgdyhzW2ldLnByb3RvdHlwZSwgVCk7CiAgICAgICAgaWYgKEQgJiYgeChJKSAhPT0gVCAmJiB3KEksIFQpLCBmICYmICFoKFQsIFMpKQogICAgICAgICAgICBmb3IgKGkgaW4gYihULCBTLCB7CiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBjID0gITAsCiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwodGhpcykgPyB0aGlzW2pdIDogdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCBDKSBzW2ldICYmIGQoc1tpXSwgaiwgaSk7CiAgICAgICAgci5leHBvcnRzID0gewogICAgICAgICAgICBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTOiBELAogICAgICAgICAgICBUWVBFRF9BUlJBWV9UQUc6IGMgJiYgaiwKICAgICAgICAgICAgYVR5cGVkQXJyYXk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmIChvKHQpKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgIHRocm93IE0oIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFUeXBlZEFycmF5Q29uc3RydWN0b3I6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmIChwKHQpICYmICghdyB8fCBtKGssIHQpKSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICB0aHJvdyBNKHkodCkgKyAiIGlzIG5vdCBhIHR5cGVkIGFycmF5IGNvbnN0cnVjdG9yIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZXhwb3J0VHlwZWRBcnJheU1ldGhvZDogZnVuY3Rpb24odCwgciwgZSwgbikgewogICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyBpbiBDKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvID0gc1tvXSkgJiYgaChvLnByb3RvdHlwZSwgdCkpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG8ucHJvdG90eXBlW3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5wcm90b3R5cGVbdF0gPSByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBUW3RdICYmICFlIHx8IGcoVCwgdCwgIWUgJiYgRCAmJiBSW3RdIHx8IHIsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuLCBvOwogICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiBpbiBDKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobyA9IHNbbl0pICYmIGgobywgdCkpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvW3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkge30KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtbdF0gJiYgIWUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnKGssIHQsICFlICYmIEQgJiYga1t0XSB8fCByKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKG4gaW4gQykgIShvID0gc1tuXSkgfHwgb1t0XSAmJiAhZSB8fCBnKG8sIHQsIHIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjogTiwKICAgICAgICAgICAgaXNWaWV3OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISFsKHQpICYmICgiRGF0YVZpZXciID09PSAodCA9IHYodCkpIHx8IGgoQywgdCkgfHwgaChfLCB0KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaXNUeXBlZEFycmF5OiBvLAogICAgICAgICAgICBUeXBlZEFycmF5OiBrLAogICAgICAgICAgICBUeXBlZEFycmF5UHJvdG90eXBlOiBUCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHQuZXhwb3J0cyA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBBcnJheUJ1ZmZlciAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgRGF0YVZpZXcKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMzgpLAogICAgICAgICAgICBvID0gZSgyMCksCiAgICAgICAgICAgIGkgPSBlKDM5KSwKICAgICAgICAgICAgYSA9IGUoNTMpLAogICAgICAgICAgICB1ID0gKGUgPSBlKDk2KSwgYSgiSUVfUFJPVE8iKSksCiAgICAgICAgICAgIGMgPSBPYmplY3QsCiAgICAgICAgICAgIGYgPSBjLnByb3RvdHlwZTsKICAgICAgICB0LmV4cG9ydHMgPSBlID8gYy5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBpKHQpOwogICAgICAgICAgICByZXR1cm4gbihyLCB1KSA/IHJbdV0gOiAodCA9IHIuY29uc3RydWN0b3IsIG8odCkgJiYgciBpbnN0YW5jZW9mIHQgPyB0LnByb3RvdHlwZSA6IHIgaW5zdGFuY2VvZiBjID8gZiA6IG51bGwpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUgPSBlKDYpLCB0LmV4cG9ydHMgPSAhZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7fQogICAgICAgICAgICByZXR1cm4gdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IHQpICE9PSB0LnByb3RvdHlwZQogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig5OCksCiAgICAgICAgICAgIGkgPSBuKDQ2KSwKICAgICAgICAgICAgYSA9IG4oOTkpOwogICAgICAgIHIuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoIl9fcHJvdG9fXyIgaW4ge30gPyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQsIHIgPSAhMSwKICAgICAgICAgICAgICAgIGUgPSB7fTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICh0ID0gbyhPYmplY3QucHJvdG90eXBlLCAiX19wcm90b19fIiwgInNldCIpKShlLCBbXSksIHIgPSBlIGluc3RhbmNlb2YgQXJyYXkKICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBpKGUpLCBhKG4pLCByID8gdChlLCBuKSA6IGUuX19wcm90b19fID0gbiwgZQogICAgICAgICAgICB9CiAgICAgICAgfSgpIDogdCkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpLAogICAgICAgICAgICBvID0gZSgzMCk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG4obyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpW2VdKSkKICAgICAgICAgICAgfSBjYXRjaCAodCkge30KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIwKSwKICAgICAgICAgICAgbyA9IFN0cmluZywKICAgICAgICAgICAgaSA9IFR5cGVFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdCB8fCBuKHQpKSByZXR1cm4gdDsKICAgICAgICAgICAgdGhyb3cgaSgiQ2FuJ3Qgc2V0ICIgKyBvKHQpICsgIiBhcyBhIHByb3RvdHlwZSIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig5MyksCiAgICAgICAgICAgIGkgPSBuKDEzKSwKICAgICAgICAgICAgYSA9IG4oMzApLAogICAgICAgICAgICB1ID0gbig3OSksCiAgICAgICAgICAgIGMgPSBvLmFUeXBlZEFycmF5LAogICAgICAgICAgICBmID0gby5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsCiAgICAgICAgICAgIHMgPSAobiA9IG8uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCwgaShvLlR5cGVkQXJyYXlQcm90b3R5cGUuc29ydCkpOwogICAgICAgIG4oInRvU29ydGVkIiwgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgciAhPT0gdCAmJiBhKHIpOwogICAgICAgICAgICB2YXIgZSA9IGModGhpcyk7CiAgICAgICAgICAgIGUgPSB1KGYoZSksIGUpOwogICAgICAgICAgICByZXR1cm4gcyhlLCByKQogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg4MyksCiAgICAgICAgICAgIG8gPSBlKDkzKSwKICAgICAgICAgICAgaSA9IGUoMTAyKSwKICAgICAgICAgICAgYSA9IGUoNjEpLAogICAgICAgICAgICB1ID0gZSgxMDMpLAogICAgICAgICAgICBjID0gby5hVHlwZWRBcnJheSwKICAgICAgICAgICAgZiA9IG8uZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yOwogICAgICAgICgwLCBvLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJ3aXRoIiwgKGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgdmFyIGUgPSBjKHRoaXMpOwogICAgICAgICAgICB0ID0gYSh0KSwgciA9IGkoZSkgPyB1KHIpIDogK3I7CiAgICAgICAgICAgIHJldHVybiBuKGUsIGYoZSksIHQsIHIpCiAgICAgICAgfSksICEgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBuZXcgSW50OEFycmF5KDEpLndpdGgoMiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyA4CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIDggPT09IHQKICAgICAgICAgICAgfQogICAgICAgIH0oKSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoODkpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuICJCaWdJbnQ2NEFycmF5IiA9PSAodCA9IG4odCkpIHx8ICJCaWdVaW50NjRBcnJheSIgPT0gdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTgpLAogICAgICAgICAgICBvID0gVHlwZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKCJudW1iZXIiID09IHR5cGVvZih0ID0gbih0LCAibnVtYmVyIikpKSB0aHJvdyBvKCJDYW4ndCBjb252ZXJ0IG51bWJlciB0byBiaWdpbnQiKTsKICAgICAgICAgICAgcmV0dXJuIEJpZ0ludCh0KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDI0KSwKICAgICAgICAgICAgYSA9IG4oOTUpLAogICAgICAgICAgICB1ID0gbig5NyksCiAgICAgICAgICAgIGMgPSBuKDU1KSwKICAgICAgICAgICAgZiA9IG4oNzQpLAogICAgICAgICAgICBzID0gbig0MyksCiAgICAgICAgICAgIHAgPSBuKDEwKSwKICAgICAgICAgICAgbCA9IG4oMTA1KSwKICAgICAgICAgICAgaCA9IG4oMTA4KSwKICAgICAgICAgICAgdiA9IG4oMzMpKCJ0b1N0cmluZ1RhZyIpLAogICAgICAgICAgICB5ID0gRXJyb3IsCiAgICAgICAgICAgIGQgPSBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgbywgYyA9IGkoZywgdGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gdSA/IG8gPSB1KHkoKSwgYyA/IGEodGhpcykgOiBnKSA6IChvID0gYyA/IHRoaXMgOiBmKGcpLCBzKG8sIHYsICJFcnJvciIpKSwgbiAhPT0gdCAmJiBzKG8sICJtZXNzYWdlIiwgaChuKSksIGwobywgZCwgby5zdGFjaywgMSksIHMobywgImVycm9yIiwgciksIHMobywgInN1cHByZXNzZWQiLCBlKSwgbwogICAgICAgICAgICB9OwogICAgICAgIHUgPyB1KGQsIHkpIDogYyhkLCB5LCB7CiAgICAgICAgICAgIG5hbWU6ICEwCiAgICAgICAgfSk7CiAgICAgICAgdmFyIGcgPSBkLnByb3RvdHlwZSA9IGYoeS5wcm90b3R5cGUsIHsKICAgICAgICAgICAgY29uc3RydWN0b3I6IHAoMSwgZCksCiAgICAgICAgICAgIG1lc3NhZ2U6IHAoMSwgIiIpLAogICAgICAgICAgICBuYW1lOiBwKDEsICJTdXBwcmVzc2VkRXJyb3IiKQogICAgICAgIH0pOwogICAgICAgIG8oewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAsCiAgICAgICAgICAgIGFyaXR5OiAzCiAgICAgICAgfSwgewogICAgICAgICAgICBTdXBwcmVzc2VkRXJyb3I6IGQKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg0MyksCiAgICAgICAgICAgIG8gPSBlKDEwNiksCiAgICAgICAgICAgIGkgPSBlKDEwNyksCiAgICAgICAgICAgIGEgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlLCB1KSB7CiAgICAgICAgICAgIGkgJiYgKGEgPyBhKHQsIHIpIDogbih0LCAic3RhY2siLCBvKGUsIHUpKSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoMTMpOwogICAgICAgIHZhciBuID0gRXJyb3IsCiAgICAgICAgICAgIG8gPSBlKCIiLnJlcGxhY2UpLAogICAgICAgICAgICBpID0gKGUgPSBTdHJpbmcobigienhjYXNkIikuc3RhY2spLCAvXG5ccyphdCBbXjpdKjpbXlxuXSovKSwKICAgICAgICAgICAgYSA9IGkudGVzdChlKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIGlmIChhICYmICJzdHJpbmciID09IHR5cGVvZiB0ICYmICFuLnByZXBhcmVTdGFja1RyYWNlKQogICAgICAgICAgICAgICAgZm9yICg7IHItLTspIHQgPSBvKHQsIGksICIiKTsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDYpLAogICAgICAgICAgICBvID0gZSgxMCk7CiAgICAgICAgdC5leHBvcnRzID0gIW4oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IEVycm9yKCJhIik7CiAgICAgICAgICAgIHJldHVybiAhKCJzdGFjayIgaW4gdCkgfHwgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAic3RhY2siLCBvKDEsIDcpKSwgNyAhPT0gdC5zdGFjaykKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oODgpOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIHIgPT09IHQgPyBhcmd1bWVudHMubGVuZ3RoIDwgMiA/ICIiIDogZSA6IG8ocikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgc3RhdDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZyb21Bc3luYzogZSgxMTApCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKCkgewogICAgICAgICAgICByZXR1cm4gbmV3IFModGhpcykKICAgICAgICB9CiAgICAgICAgdmFyIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDEzKSwKICAgICAgICAgICAgdSA9IG4oMzkpLAogICAgICAgICAgICBjID0gbigxMTMpLAogICAgICAgICAgICBmID0gbigxMTQpLAogICAgICAgICAgICBzID0gbigxMTkpLAogICAgICAgICAgICBwID0gbigxMjIpLAogICAgICAgICAgICBsID0gbigxMjApLAogICAgICAgICAgICBoID0gbigyOSksCiAgICAgICAgICAgIHYgPSBuKDgwKSwKICAgICAgICAgICAgeSA9IG4oMjMpLAogICAgICAgICAgICBkID0gbigzMyksCiAgICAgICAgICAgIGcgPSBuKDExNSksCiAgICAgICAgICAgIGIgPSBuKDEyMykudG9BcnJheSwKICAgICAgICAgICAgbSA9IGQoImFzeW5jSXRlcmF0b3IiKSwKICAgICAgICAgICAgeCA9IGEodigiQXJyYXkiKS52YWx1ZXMpLAogICAgICAgICAgICB3ID0gYSh4KFtdKS5uZXh0KSwKICAgICAgICAgICAgUyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXRlcmF0b3IgPSB4KHQpCiAgICAgICAgICAgIH07CiAgICAgICAgUy5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdyh0aGlzLml0ZXJhdG9yKQogICAgICAgIH0sIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgbiA9IGFyZ3VtZW50cy5sZW5ndGgsCiAgICAgICAgICAgICAgICBhID0gMSA8IG4gPyBhcmd1bWVudHNbMV0gOiB0LAogICAgICAgICAgICAgICAgdiA9IDIgPCBuID8gYXJndW1lbnRzWzJdIDogdDsKICAgICAgICAgICAgcmV0dXJuIG5ldyh5KCJQcm9taXNlIikpKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICB2YXIgeSA9IHUocik7CiAgICAgICAgICAgICAgICBhICE9PSB0ICYmIChhID0gaShhLCB2KSk7CiAgICAgICAgICAgICAgICB2YXIgZCA9IGgoeSwgbSksCiAgICAgICAgICAgICAgICAgICAgeCA9IGQgPyB0IDogbCh5KSB8fCBvLAogICAgICAgICAgICAgICAgICAgIHcgPSBjKGUpID8gbmV3IGUgOiBbXTsKICAgICAgICAgICAgICAgIHggPSBkID8gZih5LCBkKSA6IG5ldyBnKHAocyh5LCB4KSkpOwogICAgICAgICAgICAgICAgbihiKHgsIGEsIHcpKQogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDExMiksCiAgICAgICAgICAgIGkgPSBuKDMwKSwKICAgICAgICAgICAgYSA9IG4oOCksCiAgICAgICAgICAgIHUgPSBvKG8uYmluZCk7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICByZXR1cm4gaShyKSwgZSA9PT0gdCA/IHIgOiBhID8gdShyLCBlKSA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHIuYXBwbHkoZSwgYXJndW1lbnRzKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxNCksCiAgICAgICAgICAgIG8gPSBlKDEzKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgiRnVuY3Rpb24iID09PSBuKHQpKSByZXR1cm4gbyh0KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBmdW5jdGlvbiBuKCkge30KCiAgICAgICAgZnVuY3Rpb24gbyh0KSB7CiAgICAgICAgICAgIGlmICghdSh0KSkgcmV0dXJuICExOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIGwobiwgcCwgdCksICEwCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBpID0gZSgxMyksCiAgICAgICAgICAgIGEgPSBlKDYpLAogICAgICAgICAgICB1ID0gZSgyMCksCiAgICAgICAgICAgIGMgPSBlKDg5KSwKICAgICAgICAgICAgZiA9IGUoMjMpLAogICAgICAgICAgICBzID0gZSg1MCksCiAgICAgICAgICAgIHAgPSBbXSwKICAgICAgICAgICAgbCA9IGYoIlJlZmxlY3QiLCAiY29uc3RydWN0IiksCiAgICAgICAgICAgIGggPSAvXlxzKig/OmNsYXNzfGZ1bmN0aW9uKVxiLywKICAgICAgICAgICAgdiA9IGkoaC5leGVjKSwKICAgICAgICAgICAgeSA9ICFoLmV4ZWMobik7CiAgICAgICAgaSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKCF1KHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgIHN3aXRjaCAoYyh0KSkgewogICAgICAgICAgICAgICAgY2FzZSAiQXN5bmNGdW5jdGlvbiI6CiAgICAgICAgICAgICAgICBjYXNlICJHZW5lcmF0b3JGdW5jdGlvbiI6CiAgICAgICAgICAgICAgICBjYXNlICJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIHkgfHwgISF2KGgsIHModCkpCiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBpLnNoYW0gPSAhMCwgdC5leHBvcnRzID0gIWwgfHwgYSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICByZXR1cm4gbyhvLmNhbGwpIHx8ICFvKE9iamVjdCkgfHwgIW8oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdCA9ICEwCiAgICAgICAgICAgIH0pKSB8fCB0CiAgICAgICAgfSkpID8gaSA6IG8KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNyksCiAgICAgICAgICAgIG8gPSBlKDExNSksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IGUoMTE5KSwKICAgICAgICAgICAgdSA9IGUoMTIyKSwKICAgICAgICAgICAgYyA9IGUoMjkpLAogICAgICAgICAgICBmID0gZSgzMykoImFzeW5jSXRlcmF0b3IiKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiAociA9IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYyh0LCBmKSA6IHIpID8gaShuKHIsIHQpKSA6IG5ldyBvKHUoYSh0KSkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIGZ1bmN0aW9uIG8odCwgciwgZSkgewogICAgICAgICAgICB2YXIgbiA9IHQuZG9uZTsKICAgICAgICAgICAgdi5yZXNvbHZlKHQudmFsdWUpLnRoZW4oKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHIoaCh0LCBuKSkKICAgICAgICAgICAgfSksIGUpCiAgICAgICAgfQogICAgICAgIHZhciBpID0gbig3KSwKICAgICAgICAgICAgYSA9IG4oNDYpLAogICAgICAgICAgICB1ID0gbig3NCksCiAgICAgICAgICAgIGMgPSBuKDI5KSwKICAgICAgICAgICAgZiA9IG4oMTE2KSwKICAgICAgICAgICAgcyA9IG4oNTEpLAogICAgICAgICAgICBwID0gbigyMyksCiAgICAgICAgICAgIGwgPSBuKDExNyksCiAgICAgICAgICAgIGggPSBuKDExOCksCiAgICAgICAgICAgIHYgPSBwKCJQcm9taXNlIiksCiAgICAgICAgICAgIHkgPSAiQXN5bmNGcm9tU3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgZCA9IHMuc2V0LAogICAgICAgICAgICBnID0gcy5nZXR0ZXJGb3IoeSk7CiAgICAgICAgcyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdC50eXBlID0geSwgZCh0aGlzLCB0KQogICAgICAgIH07CiAgICAgICAgcy5wcm90b3R5cGUgPSBmKHUobCksIHsKICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGcodGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHYoKGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgICAgICBvKGEoaSh0Lm5leHQsIHQuaXRlcmF0b3IpKSwgciwgZSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZXR1cm46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBnKHRoaXMpLml0ZXJhdG9yOwogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB2KChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBjKHIsICJyZXR1cm4iKTsKICAgICAgICAgICAgICAgICAgICBpZiAodSA9PT0gdCkgcmV0dXJuIGUoaCh0LCAhMCkpOwogICAgICAgICAgICAgICAgICAgIG8odSA9IGEoaSh1LCByKSksIGUsIG4pCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQogICAgICAgIH0pLCByLmV4cG9ydHMgPSBzCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDQ3KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIGZvciAodmFyIG8gaW4gcikgbih0LCBvLCByW29dLCBlKTsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4sIG8sIGkgPSBlKDMpLAogICAgICAgICAgICBhID0gZSgzNiksCiAgICAgICAgICAgIHUgPSBlKDIwKSwKICAgICAgICAgICAgYyA9IGUoNzQpLAogICAgICAgICAgICBmID0gZSg5NSksCiAgICAgICAgICAgIHMgPSBlKDQ3KSwKICAgICAgICAgICAgcCA9IGUoMzMpLAogICAgICAgICAgICBsID0gZSgzNSksCiAgICAgICAgICAgIGggPSAiVVNFX0ZVTkNUSU9OX0NPTlNUUlVDVE9SIiwKICAgICAgICAgICAgdiA9IHAoImFzeW5jSXRlcmF0b3IiKTsKICAgICAgICBlID0gaS5Bc3luY0l0ZXJhdG9yOwogICAgICAgIGlmIChwID0gYS5Bc3luY0l0ZXJhdG9yUHJvdG90eXBlKSBuID0gcDsKICAgICAgICBlbHNlIGlmICh1KGUpKSBuID0gZS5wcm90b3R5cGU7CiAgICAgICAgZWxzZSBpZiAoYVtoXSB8fCBpW2hdKSB0cnkgewogICAgICAgICAgICBvID0gZihmKGYoRnVuY3Rpb24oInJldHVybiBhc3luYyBmdW5jdGlvbiooKXt9KCkiKSgpKSkpLCBmKG8pID09PSBPYmplY3QucHJvdG90eXBlICYmIChuID0gbykKICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgIG4gPyBsICYmIChuID0gYyhuKSkgOiBuID0ge30sIHUoblt2XSkgfHwgcyhuLCB2LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSkpLCB0LmV4cG9ydHMgPSBuCiAgICB9LCBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdmFsdWU6IHQsCiAgICAgICAgICAgICAgICBkb25lOiByCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcpLAogICAgICAgICAgICBvID0gZSgzMCksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IGUoMzEpLAogICAgICAgICAgICB1ID0gZSgxMjApLAogICAgICAgICAgICBjID0gVHlwZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgaWYgKHIgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHUodCkgOiByLCBvKHIpKSByZXR1cm4gaShuKHIsIHQpKTsKICAgICAgICAgICAgdGhyb3cgYyhhKHQpICsgIiBpcyBub3QgaXRlcmFibGUiKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoODkpLAogICAgICAgICAgICBvID0gZSgyOSksCiAgICAgICAgICAgIGkgPSBlKDE2KSwKICAgICAgICAgICAgYSA9IGUoMTIxKSwKICAgICAgICAgICAgdSA9IGUoMzMpKCJpdGVyYXRvciIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKCFpKHQpKSByZXR1cm4gbyh0LCB1KSB8fCBvKHQsICJAQGl0ZXJhdG9yIikgfHwgYVtuKHQpXQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSB7fQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGl0ZXJhdG9yOiB0LAogICAgICAgICAgICAgICAgbmV4dDogdC5uZXh0LAogICAgICAgICAgICAgICAgZG9uZTogITEKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDMwKSwKICAgICAgICAgICAgYSA9IG4oNDYpLAogICAgICAgICAgICB1ID0gbigxOSksCiAgICAgICAgICAgIGMgPSBuKDcwKSwKICAgICAgICAgICAgZiA9IG4oMjMpLAogICAgICAgICAgICBzID0gbigxMjIpLAogICAgICAgICAgICBwID0gbigxMjQpOwogICAgICAgIG4gPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHZhciBlID0gMCA9PSByLAogICAgICAgICAgICAgICAgbiA9IDEgPT0gciwKICAgICAgICAgICAgICAgIGwgPSAyID09IHIsCiAgICAgICAgICAgICAgICBoID0gMyA9PSByOwogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24ociwgdiwgeSkgewogICAgICAgICAgICAgICAgYShyKTsKICAgICAgICAgICAgICAgIHZhciBkID0gdiAhPT0gdDsKICAgICAgICAgICAgICAgICFkICYmIGUgfHwgaSh2KTsKICAgICAgICAgICAgICAgIHIgPSBzKHIpOwogICAgICAgICAgICAgICAgdmFyIGcgPSBmKCJQcm9taXNlIiksCiAgICAgICAgICAgICAgICAgICAgYiA9IHIuaXRlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgbSA9IHIubmV4dCwKICAgICAgICAgICAgICAgICAgICB4ID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgZygoZnVuY3Rpb24ociwgaSkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYodCkgewogICAgICAgICAgICAgICAgICAgICAgICBwKGIsIGksIHQsIGkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCkgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZih0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5yZXNvbHZlKGEobyhtLCBiKSkpLnRoZW4oKGZ1bmN0aW9uKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYShvKS5kb25lKSBlID8gKHkubGVuZ3RoID0geCwgcih5KSkgOiByKCFoICYmIChsIHx8IHQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYywgbSwgdyA9IG8udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPyAoYyA9IHYodywgeCksIG0gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKSBzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGwpIHQgPyBzKCkgOiBwKGIsIHIsICExLCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZSkgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlbeCsrXSA9IHQsIHMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0ID8gcChiLCByLCBoIHx8IHcsIGkpIDogcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdShjKSA/IGcucmVzb2x2ZShjKS50aGVuKG0sIGYpIDogbShjKSkgOiAoeVt4KytdID0gdywgcygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYobykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHMoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHIuZXhwb3J0cyA9IHsKICAgICAgICAgICAgdG9BcnJheTogbigwKSwKICAgICAgICAgICAgZm9yRWFjaDogbigxKSwKICAgICAgICAgICAgZXZlcnk6IG4oMiksCiAgICAgICAgICAgIHNvbWU6IG4oMyksCiAgICAgICAgICAgIGZpbmQ6IG4oNCkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcpLAogICAgICAgICAgICBvID0gZSgyMyksCiAgICAgICAgICAgIGkgPSBlKDI5KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlLCBhKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB2YXIgdSA9IGkodCwgInJldHVybiIpOwogICAgICAgICAgICAgICAgaWYgKHUpIHJldHVybiBvKCJQcm9taXNlIikucmVzb2x2ZShuKHUsIHQpKS50aGVuKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByKGUpCiAgICAgICAgICAgICAgICB9KSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBhKHQpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGEodCkKICAgICAgICAgICAgfQogICAgICAgICAgICByKGUpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTI2KS5maWx0ZXJSZWplY3Q7CiAgICAgICAgbiA9IG4oNzMpOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJBcnJheSIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmlsdGVyT3V0OiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCByLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgbigiZmlsdGVyT3V0IikKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMTExKSwKICAgICAgICAgICAgaSA9IG4oMTMpLAogICAgICAgICAgICBhID0gbigxMiksCiAgICAgICAgICAgIHUgPSBuKDM5KSwKICAgICAgICAgICAgYyA9IG4oNjMpLAogICAgICAgICAgICBmID0gbigxMjcpLAogICAgICAgICAgICBzID0gaShbXS5wdXNoKTsKICAgICAgICBpID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICB2YXIgZSA9IDEgPT0gciwKICAgICAgICAgICAgICAgIG4gPSAyID09IHIsCiAgICAgICAgICAgICAgICBpID0gMyA9PSByLAogICAgICAgICAgICAgICAgcCA9IDQgPT0gciwKICAgICAgICAgICAgICAgIGwgPSA2ID09IHIsCiAgICAgICAgICAgICAgICBoID0gNyA9PSByLAogICAgICAgICAgICAgICAgdiA9IDUgPT0gciB8fCBsOwogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeSwgZCwgZywgYikgewogICAgICAgICAgICAgICAgZm9yICh2YXIgbSwgeCwgdyA9IHUoeSksIFMgPSBhKHcpLCBBID0gbyhkLCBnKSwgRSA9IGMoUyksIE8gPSAwLCBSID0gKGIgPSBiIHx8IGYsIGUgPyBiKHksIEUpIDogbiB8fCBoID8gYih5LCAwKSA6IHQpOyBPIDwgRTsgTysrKQogICAgICAgICAgICAgICAgICAgIGlmICgodiB8fCBPIGluIFMpICYmICh4ID0gQShtID0gU1tPXSwgTywgdyksIHIpKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgUltPXSA9IHg7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHgpIHN3aXRjaCAocikgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG07CiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTzsKICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIHMoUiwgbSkKICAgICAgICAgICAgICAgIH0gZWxzZSBzd2l0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICAgICAgICAgIHMoUiwgbSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBsID8gLTEgOiBpIHx8IHAgPyBwIDogUgogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICByLmV4cG9ydHMgPSB7CiAgICAgICAgICAgIGZvckVhY2g6IGkoMCksCiAgICAgICAgICAgIG1hcDogaSgxKSwKICAgICAgICAgICAgZmlsdGVyOiBpKDIpLAogICAgICAgICAgICBzb21lOiBpKDMpLAogICAgICAgICAgICBldmVyeTogaSg0KSwKICAgICAgICAgICAgZmluZDogaSg1KSwKICAgICAgICAgICAgZmluZEluZGV4OiBpKDYpLAogICAgICAgICAgICBmaWx0ZXJSZWplY3Q6IGkoNykKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEyOCk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICByZXR1cm4gbmV3KG4odCkpKDAgPT09IHIgPyAwIDogcikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDY5KSwKICAgICAgICAgICAgaSA9IG4oMTEzKSwKICAgICAgICAgICAgYSA9IG4oMTkpLAogICAgICAgICAgICB1ID0gbigzMykoInNwZWNpZXMiKSwKICAgICAgICAgICAgYyA9IEFycmF5OwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgIHJldHVybiBvKHIpICYmIChlID0gci5jb25zdHJ1Y3RvciwgKGkoZSkgJiYgKGUgPT09IGMgfHwgbyhlLnByb3RvdHlwZSkpIHx8IGEoZSkgJiYgbnVsbCA9PT0gKGUgPSBlW3VdKSkgJiYgKGUgPSB0KSksIGUgPT09IHQgPyBjIDogZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDEyNikuZmlsdGVyUmVqZWN0OwogICAgICAgIG4gPSBuKDczKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXJyYXkiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZpbHRlclJlamVjdDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgcmV0dXJuIGkodGhpcywgciwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KQogICAgICAgICAgICB9CiAgICAgICAgfSksIG4oImZpbHRlclJlamVjdCIpCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxMzEpOwogICAgICAgIG4gPSBuKDczKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXJyYXkiLAogICAgICAgICAgICBwcm90bzogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGdyb3VwOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCByLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgbigiZ3JvdXAiKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMTEpLAogICAgICAgICAgICBvID0gZSgxMyksCiAgICAgICAgICAgIGkgPSBlKDEyKSwKICAgICAgICAgICAgYSA9IGUoMzkpLAogICAgICAgICAgICB1ID0gZSgxNyksCiAgICAgICAgICAgIGMgPSBlKDYzKSwKICAgICAgICAgICAgZiA9IGUoNzQpLAogICAgICAgICAgICBzID0gZSg3OSksCiAgICAgICAgICAgIHAgPSBBcnJheSwKICAgICAgICAgICAgbCA9IG8oW10ucHVzaCk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgciwgZSwgbykgewogICAgICAgICAgICBmb3IgKHZhciBoLCB2LCB5LCBkID0gYSh0KSwgZyA9IGkoZCksIGIgPSBuKHIsIGUpLCBtID0gZihudWxsKSwgeCA9IGMoZyksIHcgPSAwOyB3IDwgeDsgdysrKSB5ID0gZ1t3XSwgKHYgPSB1KGIoeSwgdywgZCkpKSBpbiBtID8gbChtW3ZdLCB5KSA6IG1bdl0gPSBbeV07CiAgICAgICAgICAgIGlmIChvICYmIChoID0gbyhkKSkgIT09IHApCiAgICAgICAgICAgICAgICBmb3IgKHYgaW4gbSkgbVt2XSA9IHMoaCwgbVt2XSk7CiAgICAgICAgICAgIHJldHVybiBtCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTMxKSwKICAgICAgICAgICAgYSA9IG4oMTMzKTsKICAgICAgICBuID0gbig3Myk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICFhKCJncm91cEJ5IikKICAgICAgICB9LCB7CiAgICAgICAgICAgIGdyb3VwQnk6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBpKHRoaXMsIHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCkKICAgICAgICAgICAgfQogICAgICAgIH0pLCBuKCJncm91cEJ5IikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNik7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICB2YXIgZSA9IFtdW3RdOwogICAgICAgICAgICByZXR1cm4gISFlICYmIG4oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZS5jYWxsKG51bGwsIHIgfHwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgICAgICAgIH0sIDEpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDEzMyksCiAgICAgICAgICAgIGkgPSBlKDczKSwKICAgICAgICAgICAgYSA9IGUoMTM1KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXJyYXkiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIG5hbWU6ICJncm91cFRvTWFwIiwKICAgICAgICAgICAgZm9yY2VkOiBlKDM1KSB8fCAhbygiZ3JvdXBCeVRvTWFwIikKICAgICAgICB9LCB7CiAgICAgICAgICAgIGdyb3VwQnlUb01hcDogYQogICAgICAgIH0pLCBpKCJncm91cEJ5VG9NYXAiKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigxMTEpLAogICAgICAgICAgICBpID0gbigxMyksCiAgICAgICAgICAgIGEgPSBuKDEyKSwKICAgICAgICAgICAgdSA9IG4oMzkpLAogICAgICAgICAgICBjID0gbig2MyksCiAgICAgICAgICAgIGYgPSAobiA9IG4oMTM2KSkuTWFwLAogICAgICAgICAgICBzID0gbi5nZXQsCiAgICAgICAgICAgIHAgPSBuLmhhcywKICAgICAgICAgICAgbCA9IG4uc2V0LAogICAgICAgICAgICBoID0gaShbXS5wdXNoKTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIGZvciAodmFyIGUsIG4sIGkgPSB1KHRoaXMpLCB2ID0gYShpKSwgeSA9IG8ociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KSwgZCA9IG5ldyBmLCBnID0gYyh2KSwgYiA9IDA7IGIgPCBnOyBiKyspIGUgPSB5KG4gPSB2W2JdLCBiLCBpKSwgcChkLCBlKSA/IGgocyhkLCBlKSwgbikgOiBsKGQsIGUsIFtuXSk7CiAgICAgICAgICAgIHJldHVybiBkCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMyk7CiAgICAgICAgZSA9IE1hcC5wcm90b3R5cGU7CiAgICAgICAgdC5leHBvcnRzID0gewogICAgICAgICAgICBNYXA6IE1hcCwKICAgICAgICAgICAgc2V0OiBuKGUuc2V0KSwKICAgICAgICAgICAgZ2V0OiBuKGUuZ2V0KSwKICAgICAgICAgICAgaGFzOiBuKGUuaGFzKSwKICAgICAgICAgICAgcmVtb3ZlOiBuKGUuZGVsZXRlKSwKICAgICAgICAgICAgcHJvdG86IGUKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3MyksCiAgICAgICAgICAgIGkgPSBlKDEzNSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6IGUoMzUpCiAgICAgICAgfSwgewogICAgICAgICAgICBncm91cFRvTWFwOiBpCiAgICAgICAgfSksIG8oImdyb3VwVG9NYXAiKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIGZ1bmN0aW9uIG8ociwgZSkgewogICAgICAgICAgICBpZiAoIXUgfHwgIWEocikgfHwgIXUocikpIHJldHVybiAhMTsKICAgICAgICAgICAgZm9yICh2YXIgbiwgbyA9IDAsIGkgPSByLmxlbmd0aDsgbyA8IGk7KQogICAgICAgICAgICAgICAgaWYgKCEoInN0cmluZyIgPT0gdHlwZW9mKG4gPSByW28rK10pIHx8IGUgJiYgbiA9PT0gdCkpIHJldHVybiAhMTsKICAgICAgICAgICAgcmV0dXJuIDAgIT09IGkKICAgICAgICB9CiAgICAgICAgdmFyIGkgPSBuKDIpLAogICAgICAgICAgICBhID0gbig2OSksCiAgICAgICAgICAgIHUgPSBPYmplY3QuaXNGcm96ZW47CiAgICAgICAgaSh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIHNoYW06ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpc1RlbXBsYXRlT2JqZWN0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoIW8odCwgITApKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICB2YXIgciA9IHQucmF3OwogICAgICAgICAgICAgICAgcmV0dXJuIHIubGVuZ3RoID09PSB0Lmxlbmd0aCAmJiBvKHIsICExKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNSksCiAgICAgICAgICAgIG8gPSBlKDczKSwKICAgICAgICAgICAgaSA9IGUoMzkpLAogICAgICAgICAgICBhID0gZSg2Myk7CiAgICAgICAgZSA9IGUoODUpOwogICAgICAgIG4gJiYgKGUoQXJyYXkucHJvdG90eXBlLCAibGFzdEluZGV4IiwgewogICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBpKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIDAgPT0gKHQgPSBhKHQpKSA/IDAgOiB0IC0gMQogICAgICAgICAgICB9CiAgICAgICAgfSksIG8oImxhc3RJbmRleCIpKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig1KSwKICAgICAgICAgICAgaSA9IG4oNzMpLAogICAgICAgICAgICBhID0gbigzOSksCiAgICAgICAgICAgIHUgPSBuKDYzKTsKICAgICAgICBuID0gbig4NSk7CiAgICAgICAgbyAmJiAobihBcnJheS5wcm90b3R5cGUsICJsYXN0SXRlbSIsIHsKICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciByID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBlID0gdShyKTsKICAgICAgICAgICAgICAgIHJldHVybiAwID09IGUgPyB0IDogcltlIC0gMV0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgZSA9IHUocik7CiAgICAgICAgICAgICAgICByZXR1cm4gclswID09IGUgPyAwIDogZSAtIDFdID0gdAogICAgICAgICAgICB9CiAgICAgICAgfSksIGkoImxhc3RJdGVtIikpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3Myk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB1bmlxdWVCeTogZSgxNDIpCiAgICAgICAgfSksIG8oInVuaXF1ZUJ5IikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpLAogICAgICAgICAgICBvID0gZSgzMCksCiAgICAgICAgICAgIGkgPSBlKDE2KSwKICAgICAgICAgICAgYSA9IGUoNjMpLAogICAgICAgICAgICB1ID0gZSgzOSksCiAgICAgICAgICAgIGMgPSBlKDEzNiksCiAgICAgICAgICAgIGYgPSBlKDE0MyksCiAgICAgICAgICAgIHMgPSBjLk1hcCwKICAgICAgICAgICAgcCA9IGMuaGFzLAogICAgICAgICAgICBsID0gYy5zZXQsCiAgICAgICAgICAgIGggPSBuKFtdLnB1c2gpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgZm9yICh2YXIgciwgZSwgbiA9IHUodGhpcyksIGMgPSBhKG4pLCB2ID0gW10sIHkgPSBuZXcgcywgZCA9IGkodCkgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgIH0gOiBvKHQpLCBnID0gMDsgZyA8IGM7IGcrKykgZSA9IGQociA9IG5bZ10pLCBwKHksIGUpIHx8IGwoeSwgZSwgcik7CiAgICAgICAgICAgIHJldHVybiBmKHksIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBoKHYsIHQpCiAgICAgICAgICAgIH0pKSwgdgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiwgbyA9IGUoMTMpLAogICAgICAgICAgICBpID0gZSgxNDQpLAogICAgICAgICAgICBhID0gKGUgPSAobiA9IGUoMTM2KSkuTWFwLCBvKChuID0gbi5wcm90bykuZm9yRWFjaCkpLAogICAgICAgICAgICB1ID0gbyhuLmVudHJpZXMpLAogICAgICAgICAgICBjID0gdShuZXcgZSkubmV4dDsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIHJldHVybiBlID8gaSh1KHQpLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHIodFsxXSwgdFswXSkKICAgICAgICAgICAgfSksIGMpIDogYSh0LCByKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyk7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgICAgICBmb3IgKHZhciBpLCBhID0gbiB8fCByLm5leHQ7ICEoaSA9IG8oYSwgcikpLmRvbmU7KQogICAgICAgICAgICAgICAgaWYgKChpID0gZShpLnZhbHVlKSkgIT09IHQpIHJldHVybiBpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg1KSwKICAgICAgICAgICAgbyA9IGUoODUpLAogICAgICAgICAgICBpID0gZSgxNDYpOwogICAgICAgIGUgPSBBcnJheUJ1ZmZlci5wcm90b3R5cGU7CiAgICAgICAgIW4gfHwgImRldGFjaGVkIiBpbiBlIHx8IG8oZSwgImRldGFjaGVkIiwgewogICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkodGhpcykKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzKSwKICAgICAgICAgICAgbyA9IGUoMTQ3KSwKICAgICAgICAgICAgaSA9IG4oQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgwICE9PSBvKHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0LCAwLCAwKSwgITEKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDk4KSwKICAgICAgICAgICAgbyA9IGUoMTQpLAogICAgICAgICAgICBpID0gVHlwZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IG4oQXJyYXlCdWZmZXIucHJvdG90eXBlLCAiYnl0ZUxlbmd0aCIsICJnZXQiKSB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgiQXJyYXlCdWZmZXIiICE9IG8odCkpIHRocm93IGkoIkFycmF5QnVmZmVyIGV4cGVjdGVkIik7CiAgICAgICAgICAgIHJldHVybiB0LmJ5dGVMZW5ndGgKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxNDkpOwogICAgICAgIGkgJiYgbyh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5QnVmZmVyIiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB0cmFuc2ZlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzBdIDogdCwgITApCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigzKSwKICAgICAgICAgICAgaSA9IG4oMTMpLAogICAgICAgICAgICBhID0gbig5OCksCiAgICAgICAgICAgIHUgPSBuKDE1MCksCiAgICAgICAgICAgIGMgPSBuKDE0NiksCiAgICAgICAgICAgIGYgPSBuKDE0NyksCiAgICAgICAgICAgIHMgPSBuKDE1MSksCiAgICAgICAgICAgIHAgPSBvLlR5cGVFcnJvciwKICAgICAgICAgICAgbCA9IG8uc3RydWN0dXJlZENsb25lLAogICAgICAgICAgICBoID0gby5BcnJheUJ1ZmZlciwKICAgICAgICAgICAgdiA9IG8uRGF0YVZpZXcsCiAgICAgICAgICAgIHkgPSBNYXRoLm1pbiwKICAgICAgICAgICAgZCA9IChuID0gaC5wcm90b3R5cGUsIG8gPSB2LnByb3RvdHlwZSwgaShuLnNsaWNlKSksCiAgICAgICAgICAgIGcgPSBhKG4sICJyZXNpemFibGUiLCAiZ2V0IiksCiAgICAgICAgICAgIGIgPSBhKG4sICJtYXhCeXRlTGVuZ3RoIiwgImdldCIpLAogICAgICAgICAgICBtID0gaShvLmdldEludDgpLAogICAgICAgICAgICB4ID0gaShvLnNldEludDgpOwogICAgICAgIHIuZXhwb3J0cyA9IHMgJiYgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgICAgICB2YXIgbyA9IGYociksCiAgICAgICAgICAgICAgICBpID0gZSA9PT0gdCA/IG8gOiB1KGUpOwogICAgICAgICAgICBlID0gIWcgfHwgIWcocik7CiAgICAgICAgICAgIGlmIChjKHIpKSB0aHJvdyBwKCJBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZCIpOwogICAgICAgICAgICBpZiAociA9IGwociwgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyOiBbcl0KICAgICAgICAgICAgICAgIH0pLCBvID09IGkgJiYgKG4gfHwgZSkpIHJldHVybiByOwogICAgICAgICAgICBpZiAoaSA8PSBvICYmICghbiB8fCBlKSkgcmV0dXJuIGQociwgMCwgaSk7CiAgICAgICAgICAgIGUgPSBuICYmICFlICYmIGIgPyB7CiAgICAgICAgICAgICAgICBtYXhCeXRlTGVuZ3RoOiBiKHIpCiAgICAgICAgICAgIH0gOiB0LCBlID0gbmV3IGgoaSwgZSk7CiAgICAgICAgICAgIGZvciAodmFyIGEgPSBuZXcgdihyKSwgcyA9IG5ldyB2KGUpLCB3ID0geShpLCBvKSwgUyA9IDA7IFMgPCB3OyBTKyspIHgocywgUywgbShhLCBTKSk7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig2MSksCiAgICAgICAgICAgIGkgPSBuKDY0KSwKICAgICAgICAgICAgYSA9IFJhbmdlRXJyb3I7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICBpZiAociA9PT0gdCkgcmV0dXJuIDA7CiAgICAgICAgICAgIHZhciBlID0gbyhyKTsKICAgICAgICAgICAgaWYgKGUgIT09IChyID0gaShlKSkpIHRocm93IGEoIldyb25nIGxlbmd0aCBvciBpbmRleCIpOwogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBlKDYpLAogICAgICAgICAgICBpID0gZSgyNyksCiAgICAgICAgICAgIGEgPSBlKDE1MiksCiAgICAgICAgICAgIHUgPSBlKDE1MyksCiAgICAgICAgICAgIGMgPSBlKDE1NCksCiAgICAgICAgICAgIGYgPSBuLnN0cnVjdHVyZWRDbG9uZTsKICAgICAgICB0LmV4cG9ydHMgPSAhIWYgJiYgIW8oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAodSAmJiA5MiA8IGkgfHwgYyAmJiA5NCA8IGkgfHwgYSAmJiA5NyA8IGkpIHJldHVybiAhMTsKICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXlCdWZmZXIoOCksCiAgICAgICAgICAgICAgICByID0gZih0LCB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXI6IFt0XQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiAwICE9IHQuYnl0ZUxlbmd0aCB8fCA4ICE9IHIuYnl0ZUxlbmd0aAogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxNTMpOwogICAgICAgIGUgPSBlKDE1NCk7CiAgICAgICAgdC5leHBvcnRzID0gIW4gJiYgIWUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIHdpbmRvdyAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZG9jdW1lbnQKICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSAib2JqZWN0IiA9PSB0eXBlb2YgRGVubyAmJiBEZW5vICYmICJvYmplY3QiID09IHR5cGVvZiBEZW5vLnZlcnNpb24KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSgxNCksIHQuZXhwb3J0cyA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBwcm9jZXNzICYmICJwcm9jZXNzIiA9PSBlKHByb2Nlc3MpCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxNDkpOwogICAgICAgIGkgJiYgbyh7CiAgICAgICAgICAgIHRhcmdldDogIkFycmF5QnVmZmVyIiwKICAgICAgICAgICAgcHJvdG86ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB0cmFuc2ZlclRvRml4ZWRMZW5ndGg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkodGhpcywgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1swXSA6IHQsICExKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgaWYgKCh0ID0gUyh0KSkuc3RhdGUgPT0gRSkgdGhyb3cgbSh4ICsgIiBhbHJlYWR5IGRpc3Bvc2VkIik7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBpKCkgewogICAgICAgICAgICB3KHModGhpcywgTyksIHsKICAgICAgICAgICAgICAgIHR5cGU6IHgsCiAgICAgICAgICAgICAgICBzdGF0ZTogInBlbmRpbmciLAogICAgICAgICAgICAgICAgc3RhY2s6IFtdCiAgICAgICAgICAgIH0pLCB1IHx8ICh0aGlzLmRpc3Bvc2VkID0gITEpCiAgICAgICAgfQogICAgICAgIHZhciBhID0gbigyKSwKICAgICAgICAgICAgdSA9IG4oNSksCiAgICAgICAgICAgIGMgPSBuKDIzKSwKICAgICAgICAgICAgZiA9IG4oMzApLAogICAgICAgICAgICBzID0gbigxNTcpLAogICAgICAgICAgICBwID0gbig0NyksCiAgICAgICAgICAgIGwgPSBuKDExNiksCiAgICAgICAgICAgIGggPSBuKDg1KSwKICAgICAgICAgICAgdiA9IG4oMzMpLAogICAgICAgICAgICB5ID0gbig1MSksCiAgICAgICAgICAgIGQgPSBuKDE1OCksCiAgICAgICAgICAgIGcgPSBjKCJQcm9taXNlIiksCiAgICAgICAgICAgIGIgPSBjKCJTdXBwcmVzc2VkRXJyb3IiKSwKICAgICAgICAgICAgbSA9IFJlZmVyZW5jZUVycm9yLAogICAgICAgICAgICB4ID0gKGMgPSB2KCJhc3luY0Rpc3Bvc2UiKSwgdiA9IHYoInRvU3RyaW5nVGFnIiksICJBc3luY0Rpc3Bvc2FibGVTdGFjayIpLAogICAgICAgICAgICB3ID0geS5zZXQsCiAgICAgICAgICAgIFMgPSB5LmdldHRlckZvcih4KSwKICAgICAgICAgICAgQSA9ICJhc3luYy1kaXNwb3NlIiwKICAgICAgICAgICAgRSA9ICJkaXNwb3NlZCIsCiAgICAgICAgICAgIE8gPSBpLnByb3RvdHlwZTsKICAgICAgICBsKE8sIHsKICAgICAgICAgICAgZGlzcG9zZUFzeW5jOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdGhpczsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgZygoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gUyhyKTsKICAgICAgICAgICAgICAgICAgICBpZiAoby5zdGF0ZSA9PSBFKSByZXR1cm4gZSh0KTsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaSh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBzID8gbmV3IGIodCwgYSkgOiAocyA9ICEwLCB0KSwgcCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG8uc3RhdGUgPSBFLCB1IHx8IChyLmRpc3Bvc2VkID0gITApOwogICAgICAgICAgICAgICAgICAgIHZhciBhLCBjID0gby5zdGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGMubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBjWy0tZl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tmXSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5yZXNvbHZlKHIoKSkudGhlbihwLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBvLnN0YWNrID0gbnVsbCwgcyA/IG4oYSkgOiBlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcCgpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZChvKHRoaXMpLCB0LCBBKSwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBhZG9wdDogZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBvKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGYoZSksIGQobiwgdCwgQSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlKHIpCiAgICAgICAgICAgICAgICB9KSksIHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVmZXI6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gbyh0aGlzKTsKICAgICAgICAgICAgICAgIGYociksIGQoZSwgdCwgQSwgcikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbW92ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IG8odGhpcyksCiAgICAgICAgICAgICAgICAgICAgciA9IG5ldyBpOwogICAgICAgICAgICAgICAgcmV0dXJuIFMocikuc3RhY2sgPSB0LnN0YWNrLCB0LnN0YWNrID0gW10sIHQuc3RhdGUgPSBFLCB1IHx8ICh0aGlzLmRpc3Bvc2VkID0gITApLCByCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgdSAmJiBoKE8sICJkaXNwb3NlZCIsIHsKICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBTKHRoaXMpLnN0YXRlID09IEUKICAgICAgICAgICAgfQogICAgICAgIH0pLCBwKE8sIGMsIE8uZGlzcG9zZUFzeW5jLCB7CiAgICAgICAgICAgIG5hbWU6ICJkaXNwb3NlQXN5bmMiCiAgICAgICAgfSksIHAoTywgdiwgeCwgewogICAgICAgICAgICBub25Xcml0YWJsZTogITAKICAgICAgICB9KSwgYSh7CiAgICAgICAgICAgIGdsb2JhbDogITAsCiAgICAgICAgICAgIGNvbnN0cnVjdG9yOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgQXN5bmNEaXNwb3NhYmxlU3RhY2s6IGkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyNCksCiAgICAgICAgICAgIG8gPSBUeXBlRXJyb3I7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICBpZiAobihyLCB0KSkgcmV0dXJuIHQ7CiAgICAgICAgICAgIHRocm93IG8oIkluY29ycmVjdCBpbnZvY2F0aW9uIikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgZnVuY3Rpb24gbyh0LCByLCBlKSB7CiAgICAgICAgICAgIHJldHVybiBhKGUgfHwgKGUgPSB0LCAiYXN5bmMtZGlzcG9zZSIgPT0gciAmJiBmKGUsIHMpIHx8IGYoZSwgcCkpLCB0KQogICAgICAgIH0KICAgICAgICB2YXIgaSA9IG4oMTMpLAogICAgICAgICAgICBhID0gbigxMTEpLAogICAgICAgICAgICB1ID0gbig0NiksCiAgICAgICAgICAgIGMgPSBuKDE2KSwKICAgICAgICAgICAgZiA9IG4oMjkpLAogICAgICAgICAgICBzID0gKG4gPSBuKDMzKSkoImFzeW5jRGlzcG9zZSIpLAogICAgICAgICAgICBwID0gbigiZGlzcG9zZSIpLAogICAgICAgICAgICBsID0gaShbXS5wdXNoKTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlLCBuLCBpKSB7CiAgICAgICAgICAgIHZhciBhOwogICAgICAgICAgICBpZiAoaSkgYSA9IG8odCwgbiwgaSk7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGMoZSkpIHJldHVybjsKICAgICAgICAgICAgICAgIGEgPSBvKHUoZSksIG4pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbChyLnN0YWNrLCBhKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDE1NyksCiAgICAgICAgICAgIGkgPSBlKDQzKSwKICAgICAgICAgICAgYSA9IGUoMzgpLAogICAgICAgICAgICB1ID0gZSgzMyksCiAgICAgICAgICAgIGMgPSBlKDExNyksCiAgICAgICAgICAgIGYgPSBlKDM1KTsKICAgICAgICBlID0gdSgidG9TdHJpbmdUYWciKTsKICAgICAgICBhKCh1ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG8odGhpcywgYykKICAgICAgICB9KS5wcm90b3R5cGUgPSBjLCBlKSB8fCBpKGMsIGUsICJBc3luY0l0ZXJhdG9yIiksICFmICYmIGEoYywgImNvbnN0cnVjdG9yIikgJiYgYy5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0IHx8IGkoYywgImNvbnN0cnVjdG9yIiwgdSksIG4oewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAsCiAgICAgICAgICAgIGZvcmNlZDogZgogICAgICAgIH0sIHsKICAgICAgICAgICAgQXN5bmNJdGVyYXRvcjogdQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkFzeW5jSXRlcmF0b3IiLAogICAgICAgICAgICBuYW1lOiAiaW5kZXhlZCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGFzSW5kZXhlZFBhaXJzOiBlKDE2MSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4odCwgcikgewogICAgICAgICAgICByZXR1cm4gW3IsIHRdCiAgICAgICAgfQogICAgICAgIHZhciBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMTYyKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG8oaSwgdGhpcywgbikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDcpLAogICAgICAgICAgICBpID0gbigzMCksCiAgICAgICAgICAgIGEgPSBuKDQ2KSwKICAgICAgICAgICAgdSA9IG4oMTkpLAogICAgICAgICAgICBjID0gbigxMjIpLAogICAgICAgICAgICBmID0gbigxNjMpLAogICAgICAgICAgICBzID0gbigxMTgpLAogICAgICAgICAgICBwID0gbigxMjQpLAogICAgICAgICAgICBsID0gZigoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIG4gPSBlLml0ZXJhdG9yLAogICAgICAgICAgICAgICAgICAgIGkgPSBlLm1hcHBlcjsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgcigoZnVuY3Rpb24oYywgZikgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwodCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmRvbmUgPSAhMCwgZih0KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaCh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHAobiwgbCwgdCwgbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgci5yZXNvbHZlKGEobyhlLm5leHQsIG4pKSkudGhlbigoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEobikuZG9uZSkgZS5kb25lID0gITAsIGMocyh0LCAhMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gaShvLCBlLmNvdW50ZXIrKyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMocyh0LCAhMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KGYpID8gci5yZXNvbHZlKGYpLnRoZW4ocCwgaCkgOiBwKGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgbCkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSk7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gYSh0aGlzKSwgaSh0KSwgbmV3IGwoYyh0aGlzKSwgewogICAgICAgICAgICAgICAgbWFwcGVyOiB0CiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig3KSwKICAgICAgICAgICAgaSA9IG4oMTY0KSwKICAgICAgICAgICAgYSA9IG4oNDYpLAogICAgICAgICAgICB1ID0gbig3NCksCiAgICAgICAgICAgIGMgPSBuKDQzKSwKICAgICAgICAgICAgZiA9IG4oMTE2KSwKICAgICAgICAgICAgcyA9IG4oMzMpLAogICAgICAgICAgICBwID0gbig1MSksCiAgICAgICAgICAgIGwgPSBuKDIzKSwKICAgICAgICAgICAgaCA9IG4oMjkpLAogICAgICAgICAgICB2ID0gbigxMTcpLAogICAgICAgICAgICB5ID0gbigxMTgpLAogICAgICAgICAgICBkID0gbigxNjUpLAogICAgICAgICAgICBnID0gbCgiUHJvbWlzZSIpLAogICAgICAgICAgICBiID0gKGwgPSBzKCJ0b1N0cmluZ1RhZyIpLCAiQXN5bmNJdGVyYXRvckhlbHBlciIpLAogICAgICAgICAgICBtID0gIldyYXBGb3JWYWxpZEFzeW5jSXRlcmF0b3IiLAogICAgICAgICAgICB4ID0gcC5zZXQsCiAgICAgICAgICAgIHcgPSAocyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUocikgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gKG8gPSBpKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjKHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkuZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBvLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlIHx8IG4gJiYgby5kb25lID8gewogICAgICAgICAgICAgICAgICAgICAgICBleGl0OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUgPyBnLnJlamVjdChvKSA6IGcucmVzb2x2ZSh5KHQsICEwKSkKICAgICAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgICAgICBleGl0OiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG8KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbiA9ICFyLAogICAgICAgICAgICAgICAgICAgIGMgPSBwLmdldHRlckZvcihyID8gbSA6IGIpOwogICAgICAgICAgICAgICAgcmV0dXJuIGYodSh2KSwgewogICAgICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IChyID0gZSh0aGlzKSkudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmV4aXQpIHJldHVybiB0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IChuID0gaSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEodC5uZXh0SGFuZGxlcihnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkuZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgJiYgKHQuZG9uZSA9ICEwKSwgciA/IGcucmVqZWN0KG4pIDogZy5yZXNvbHZlKG4pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZXR1cm46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbi52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uZXhpdCkgcmV0dXJuIHU7CiAgICAgICAgICAgICAgICAgICAgICAgIHUuZG9uZSA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHUuaXRlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUuaW5uZXIpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQodS5pbm5lci5pdGVyYXRvciwgIm5vcm1hbCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZChjLCAidGhyb3ciLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaChjLCAicmV0dXJuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuID0gZi52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYuZXJyb3IgPyBnLnJlamVjdChuKSA6IHMgPT09IHQgPyBnLnJlc29sdmUoeSh0LCAhMCkpIDogKG4gPSAoZiA9IGkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8ocywgYykKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKS52YWx1ZSwgZi5lcnJvciA/IGcucmVqZWN0KG4pIDogciA/IGcucmVzb2x2ZShuKSA6IGcucmVzb2x2ZShuKS50aGVuKChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYShyKSwgeSh0LCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sIHMoITApKSwKICAgICAgICAgICAgUyA9IHMoITEpOwogICAgICAgIGMoUywgbCwgIkFzeW5jIEl0ZXJhdG9yIEhlbHBlciIpLCByLmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgbikgewogICAgICAgICAgICAgICAgbiA/IChuLml0ZXJhdG9yID0gZS5pdGVyYXRvciwgbi5uZXh0ID0gZS5uZXh0KSA6IG4gPSBlLCBuLnR5cGUgPSByID8gbSA6IGIsIG4ubmV4dEhhbmRsZXIgPSB0LCBuLmNvdW50ZXIgPSAwLCBuLmRvbmUgPSAhMSwgeCh0aGlzLCBuKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlLnByb3RvdHlwZSA9IHIgPyB3IDogUywgZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGVycm9yOiAhMSwKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICEwLAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcpLAogICAgICAgICAgICBvID0gZSg0NiksCiAgICAgICAgICAgIGkgPSBlKDI5KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIHZhciBhLCB1OwogICAgICAgICAgICBvKHQpOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKCEoYSA9IGkodCwgInJldHVybiIpKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgidGhyb3ciID09PSByKSB0aHJvdyBlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhID0gbihhLCB0KQogICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICB1ID0gITAsIGEgPSB0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCJ0aHJvdyIgPT09IHIpIHRocm93IGU7CiAgICAgICAgICAgIGlmICh1KSB0aHJvdyBhOwogICAgICAgICAgICByZXR1cm4gbyhhKSwgZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDQ3KSwKICAgICAgICAgICAgYSA9IG4oMjMpLAogICAgICAgICAgICB1ID0gbigyOSksCiAgICAgICAgICAgIGMgPSBuKDM4KSwKICAgICAgICAgICAgZiA9IG4oMzMpLAogICAgICAgICAgICBzID0gKG4gPSBuKDExNyksIGYgPSBmKCJhc3luY0Rpc3Bvc2UiKSwgYSgiUHJvbWlzZSIpKTsKICAgICAgICBjKG4sIGYpIHx8IGkobiwgZiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgciA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiBuZXcgcygoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgdmFyIGkgPSB1KHIsICJyZXR1cm4iKTsKICAgICAgICAgICAgICAgIGkgPyBzLnJlc29sdmUobyhpLCByKSkudGhlbigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZSh0KQogICAgICAgICAgICAgICAgfSksIG4pIDogZSh0KQogICAgICAgICAgICB9KSkKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDcpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBuKDEyMiksCiAgICAgICAgICAgIGMgPSBuKDE2OCksCiAgICAgICAgICAgIGYgPSBuKDE2OSksCiAgICAgICAgICAgIHMgPSBuKDE2MyksCiAgICAgICAgICAgIHAgPSBuKDExOCksCiAgICAgICAgICAgIGwgPSBzKChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHIoKGZ1bmN0aW9uKG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5kb25lID0gITAsIG8odCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucmVzb2x2ZShhKGkoZS5uZXh0LCBlLml0ZXJhdG9yKSkpLnRoZW4oKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhKHIpLmRvbmUgPyAoZS5kb25lID0gITAsIG4ocCh0LCAhMCkpKSA6IGUucmVtYWluaW5nID8gKGUucmVtYWluaW5nLS0sIGMoKSkgOiBuKHAoci52YWx1ZSwgITEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdShyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB1KQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGMoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRyb3A6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhKHRoaXMpLCB0ID0gZihjKCt0KSksIG5ldyBsKHUodGhpcyksIHsKICAgICAgICAgICAgICAgICAgICByZW1haW5pbmc6IHQKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHZhciBlID0gUmFuZ2VFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICh0ID09IHQpIHJldHVybiB0OwogICAgICAgICAgICB0aHJvdyBlKCJOYU4gaXMgbm90IGFsbG93ZWQiKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNjEpLAogICAgICAgICAgICBvID0gUmFuZ2VFcnJvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICgodCA9IG4odCkpIDwgMCkgdGhyb3cgbygiVGhlIGFyZ3VtZW50IGNhbid0IGJlIGxlc3MgdGhhbiAwIik7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTIzKS5ldmVyeTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGV2ZXJ5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyh0aGlzLCB0KQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDcpLAogICAgICAgICAgICBhID0gbigzMCksCiAgICAgICAgICAgIHUgPSBuKDQ2KSwKICAgICAgICAgICAgYyA9IG4oMTkpLAogICAgICAgICAgICBmID0gbigxMjIpLAogICAgICAgICAgICBzID0gbigxNjMpLAogICAgICAgICAgICBwID0gbigxMTgpLAogICAgICAgICAgICBsID0gbigxMjQpLAogICAgICAgICAgICBoID0gcygoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIG4gPSBlLml0ZXJhdG9yLAogICAgICAgICAgICAgICAgICAgIG8gPSBlLnByZWRpY2F0ZTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgcigoZnVuY3Rpb24oYSwgZikgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHModCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmRvbmUgPSAhMCwgZih0KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaCh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwobiwgcywgdCwgcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucmVzb2x2ZSh1KGkoZS5uZXh0LCBuKSkpLnRoZW4oKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodShuKS5kb25lKSBlLmRvbmUgPSAhMCwgYShwKHQsICEwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IG8oaSwgZS5jb3VudGVyKyspLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA/IGEocChpLCAhMSkpIDogdigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyhmKSA/IHIucmVzb2x2ZShmKS50aGVuKGwsIGgpIDogbChmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyhuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBzKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHYoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHUodGhpcyksIGEodCksIG5ldyBoKGYodGhpcyksIHsKICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGU6IHQKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTIzKS5maW5kOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJBc3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmluZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8odGhpcywgdCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbig3KSwKICAgICAgICAgICAgYSA9IG4oMzApLAogICAgICAgICAgICB1ID0gbig0NiksCiAgICAgICAgICAgIGMgPSBuKDE5KSwKICAgICAgICAgICAgZiA9IG4oMTIyKSwKICAgICAgICAgICAgcyA9IG4oMTYzKSwKICAgICAgICAgICAgcCA9IG4oMTE4KSwKICAgICAgICAgICAgbCA9IG4oMTc0KSwKICAgICAgICAgICAgaCA9IG4oMTI0KSwKICAgICAgICAgICAgdiA9IHMoKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBuID0gZS5pdGVyYXRvciwKICAgICAgICAgICAgICAgICAgICBvID0gZS5tYXBwZXI7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHIoKGZ1bmN0aW9uKGEsIGYpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5kb25lID0gITAsIGYodCkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHYodCkgewogICAgICAgICAgICAgICAgICAgICAgICBoKG4sIHMsIHQsIHMpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB5KCkgewogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgci5yZXNvbHZlKHUoaShlLm5leHQsIG4pKSkudGhlbigoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1KG4pLmRvbmUpIGUuZG9uZSA9ICEwLCBhKHAodCwgITApKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gbyhpLCBlLmNvdW50ZXIrKyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaW5uZXIgPSBsKHQpLCBkKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2KHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyhmKSA/IHIucmVzb2x2ZShmKS50aGVuKGgsIHYpIDogaChmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyhuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBzKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmlubmVyOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucmVzb2x2ZSh1KGkodC5uZXh0LCB0Lml0ZXJhdG9yKSkpLnRoZW4oKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KHQpLmRvbmUgPyAoZS5pbm5lciA9IG51bGwsIHkoKSkgOiBhKHAodC52YWx1ZSwgITEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdih0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB2KQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2KHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB5KCkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGQoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZsYXRNYXA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB1KHRoaXMpLCBhKHQpLCBuZXcgdihmKHRoaXMpLCB7CiAgICAgICAgICAgICAgICAgICAgbWFwcGVyOiB0LAogICAgICAgICAgICAgICAgICAgIGlubmVyOiBudWxsCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDIwKSwKICAgICAgICAgICAgYSA9IG4oNDYpLAogICAgICAgICAgICB1ID0gbigxMjIpLAogICAgICAgICAgICBjID0gbigxMjApLAogICAgICAgICAgICBmID0gbigyOSksCiAgICAgICAgICAgIHMgPSBuKDMzKSwKICAgICAgICAgICAgcCA9IG4oMTE1KSwKICAgICAgICAgICAgbCA9IHMoImFzeW5jSXRlcmF0b3IiKTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHZhciBlLCBuID0gYShyKSwKICAgICAgICAgICAgICAgIHMgPSAhMDsKICAgICAgICAgICAgciA9IGYobiwgbCk7CiAgICAgICAgICAgIHJldHVybiBpKHIpIHx8IChyID0gYyhuKSwgcyA9ICExKSwgciAhPT0gdCA/IGUgPSBvKHIsIG4pIDogKGUgPSBuLCBzID0gITApLCBhKGUpLCB1KHMgPyBlIDogbmV3IHAodShlKSkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTIzKS5mb3JFYWNoOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJBc3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZm9yRWFjaDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8odGhpcywgdCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzOSksCiAgICAgICAgICAgIGkgPSBlKDI0KSwKICAgICAgICAgICAgYSA9IGUoMTc0KSwKICAgICAgICAgICAgdSA9IGUoMTE3KSwKICAgICAgICAgICAgYyA9IGUoMTc3KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHN0YXQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmcm9tOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCA9IGEoInN0cmluZyIgPT0gdHlwZW9mIHQgPyBvKHQpIDogdCksIGkodSwgdC5pdGVyYXRvcikgPyB0Lml0ZXJhdG9yIDogbmV3IGModCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcpOwogICAgICAgIGUgPSBlKDE2Myk7CiAgICAgICAgdC5leHBvcnRzID0gZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBuKHRoaXMubmV4dCwgdGhpcy5pdGVyYXRvcikKICAgICAgICB9KSwgITApCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkFzeW5jSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpbmRleGVkOiBlKDE2MSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJBc3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgbWFwOiBlKDE2MikKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oNyksCiAgICAgICAgICAgIGEgPSBuKDMwKSwKICAgICAgICAgICAgdSA9IG4oNDYpLAogICAgICAgICAgICBjID0gbigxOSksCiAgICAgICAgICAgIGYgPSBuKDIzKSwKICAgICAgICAgICAgcyA9IG4oMTIyKSwKICAgICAgICAgICAgcCA9IG4oMTI0KSwKICAgICAgICAgICAgbCA9IGYoIlByb21pc2UiKSwKICAgICAgICAgICAgaCA9IFR5cGVFcnJvcjsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHJlZHVjZTogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdSh0aGlzKSwgYShyKTsKICAgICAgICAgICAgICAgIHZhciBlID0gcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gZS5pdGVyYXRvciwKICAgICAgICAgICAgICAgICAgICBvID0gZS5uZXh0LAogICAgICAgICAgICAgICAgICAgIGYgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiwKICAgICAgICAgICAgICAgICAgICB2ID0gZiA/IHQgOiBhcmd1bWVudHNbMV0sCiAgICAgICAgICAgICAgICAgICAgeSA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGwoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcChuLCBlLCB0LCBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5yZXNvbHZlKHUoaShvLCBuKSkpLnRoZW4oKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodShuKS5kb25lKSBmID8gZShoKCJSZWR1Y2Ugb2YgZW1wdHkgaXRlcmF0b3Igd2l0aCBubyBpbml0aWFsIHZhbHVlIikpIDogdCh2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZikgZiA9ICExLCB2ID0gbywgcygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gcih2LCBvLCB5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0LCBzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKGkpID8gbC5yZXNvbHZlKGkpLnRoZW4ocCwgYSkgOiBwKGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYShuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkrKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZShuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHMoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTIzKS5zb21lOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJBc3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgc29tZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8odGhpcywgdCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbig3KSwKICAgICAgICAgICAgYSA9IG4oNDYpLAogICAgICAgICAgICB1ID0gbigxMjIpLAogICAgICAgICAgICBjID0gbigxNjgpLAogICAgICAgICAgICBmID0gbigxNjkpLAogICAgICAgICAgICBzID0gbigxNjMpLAogICAgICAgICAgICBwID0gbigxMTgpLAogICAgICAgICAgICBsID0gcygoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUsIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIG8gPSBuLml0ZXJhdG9yOwogICAgICAgICAgICAgICAgaWYgKG4ucmVtYWluaW5nLS0pIHJldHVybiByLnJlc29sdmUoaShuLm5leHQsIG8pKS50aGVuKChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEocikuZG9uZSA/IChuLmRvbmUgPSAhMCwgcCh0LCAhMCkpIDogcChyLnZhbHVlLCAhMSkKICAgICAgICAgICAgICAgIH0pKS50aGVuKG51bGwsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbi5kb25lID0gITAsIHQKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIHZhciB1ID0gcCh0LCAhMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gbi5kb25lID0gITAsIChlID0gby5yZXR1cm4pICE9PSB0ID8gci5yZXNvbHZlKGkoZSwgbywgdCkpLnRoZW4oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB1CiAgICAgICAgICAgICAgICB9KSkgOiB1CiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQXN5bmNJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHRha2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhKHRoaXMpLCB0ID0gZihjKCt0KSksIG5ldyBsKHUodGhpcyksIHsKICAgICAgICAgICAgICAgICAgICByZW1haW5pbmc6IHQKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTIzKS50b0FycmF5OwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJBc3luY0l0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgdG9BcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCB0LCBbXSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgxODUpOwogICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIEJpZ0ludCAmJiBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiQmlnSW50IiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHJhbmdlOiBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IG8odCwgciwgZSwgImJpZ2ludCIsIEJpZ0ludCgwKSwgQmlnSW50KDEpKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNTEpLAogICAgICAgICAgICBpID0gbigxODYpLAogICAgICAgICAgICBhID0gbigxMTgpLAogICAgICAgICAgICB1ID0gbigxNiksCiAgICAgICAgICAgIGMgPSBuKDE5KSwKICAgICAgICAgICAgZiA9IG4oODUpLAogICAgICAgICAgICBzID0gbig1KSwKICAgICAgICAgICAgcCA9ICJJbmNvcnJlY3QgSXRlcmF0b3IucmFuZ2UgYXJndW1lbnRzIiwKICAgICAgICAgICAgbCA9ICJOdW1lcmljUmFuZ2VJdGVyYXRvciIsCiAgICAgICAgICAgIGggPSBvLnNldCwKICAgICAgICAgICAgdiA9IG8uZ2V0dGVyRm9yKGwpLAogICAgICAgICAgICB5ID0gUmFuZ2VFcnJvciwKICAgICAgICAgICAgZCA9IFR5cGVFcnJvciwKICAgICAgICAgICAgZyA9IGkoKGZ1bmN0aW9uKHIsIGUsIG4sIG8sIGksIGEpIHsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPSBvIHx8IGUgIT09IDEgLyAwICYmIGUgIT09IC0xIC8gMCAmJiB0eXBlb2YgZSAhPSBvKSB0aHJvdyBkKHApOwogICAgICAgICAgICAgICAgaWYgKHIgPT09IDEgLyAwIHx8IHIgPT09IC0xIC8gMCkgdGhyb3cgeShwKTsKICAgICAgICAgICAgICAgIHZhciBmLCB2ID0gciA8IGUsCiAgICAgICAgICAgICAgICAgICAgZyA9ICExOwogICAgICAgICAgICAgICAgaWYgKG4gPT09IHQpIGYgPSB0OwogICAgICAgICAgICAgICAgZWxzZSBpZiAoYyhuKSkgZiA9IG4uc3RlcCwgZyA9ICEhbi5pbmNsdXNpdmU7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG4gIT0gbykgdGhyb3cgZChwKTsKICAgICAgICAgICAgICAgICAgICBmID0gbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHR5cGVvZihmID0gdShmKSA/IHYgPyBhIDogLWEgOiBmKSAhPSBvKSB0aHJvdyBkKHApOwogICAgICAgICAgICAgICAgaWYgKGYgPT09IDEgLyAwIHx8IGYgPT09IC0xIC8gMCB8fCBmID09PSBpICYmIHIgIT09IGUpIHRocm93IHkocCk7CiAgICAgICAgICAgICAgICBoKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiBsLAogICAgICAgICAgICAgICAgICAgIHN0YXJ0OiByLAogICAgICAgICAgICAgICAgICAgIGVuZDogZSwKICAgICAgICAgICAgICAgICAgICBzdGVwOiBmLAogICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogZywKICAgICAgICAgICAgICAgICAgICBoaXRzRW5kOiByICE9IHIgfHwgZSAhPSBlIHx8IGYgIT0gZiB8fCByIDwgZSAhPSBpIDwgZiwKICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q291bnQ6IGksCiAgICAgICAgICAgICAgICAgICAgemVybzogaQogICAgICAgICAgICAgICAgfSksIHMgfHwgKHRoaXMuc3RhcnQgPSByLCB0aGlzLmVuZCA9IGUsIHRoaXMuc3RlcCA9IGYsIHRoaXMuaW5jbHVzaXZlID0gZykKICAgICAgICAgICAgfSksIGwsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdih0aGlzKTsKICAgICAgICAgICAgICAgIGlmIChyLmhpdHNFbmQpIHJldHVybiBhKHQsICEwKTsKICAgICAgICAgICAgICAgIHZhciBlID0gci5zdGFydCwKICAgICAgICAgICAgICAgICAgICBuID0gci5lbmQsCiAgICAgICAgICAgICAgICAgICAgbyA9IGUgKyByLnN0ZXAgKiByLmN1cnJlbnRDb3VudCsrOwogICAgICAgICAgICAgICAgbyA9PT0gbiAmJiAoci5oaXRzRW5kID0gITApOwogICAgICAgICAgICAgICAgdmFyIGkgPSByLmluY2x1c2l2ZTsKICAgICAgICAgICAgICAgIHJldHVybiAobiA9IGUgPCBuID8gaSA/IG4gPCBvIDogbiA8PSBvIDogaSA/IG8gPCBuIDogbyA8PSBuKSA/IChyLmhpdHNFbmQgPSAhMCwgYSh0LCAhMCkpIDogYShvLCAhMSkKICAgICAgICAgICAgfSkpOwogICAgICAgIGkgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGYoZy5wcm90b3R5cGUsIHQsIHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYodGhpcylbdF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEKICAgICAgICAgICAgfSkKICAgICAgICB9OwogICAgICAgIHMgJiYgKGkoInN0YXJ0IiksIGkoImVuZCIpLCBpKCJpbmNsdXNpdmUiKSwgaSgic3RlcCIpKSwgci5leHBvcnRzID0gZwogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfQogICAgICAgIHZhciBvID0gZSgxODcpLkl0ZXJhdG9yUHJvdG90eXBlLAogICAgICAgICAgICBpID0gZSg3NCksCiAgICAgICAgICAgIGEgPSBlKDEwKSwKICAgICAgICAgICAgdSA9IGUoMTg4KSwKICAgICAgICAgICAgYyA9IGUoMTIxKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlLCBmKSB7CiAgICAgICAgICAgIHJldHVybiByICs9ICIgSXRlcmF0b3IiLCB0LnByb3RvdHlwZSA9IGkobywgewogICAgICAgICAgICAgICAgbmV4dDogYSgrIWYsIGUpCiAgICAgICAgICAgIH0pLCB1KHQsIHIsICExLCAhMCksIGNbcl0gPSBuLCB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuLCBvID0gZSg2KSwKICAgICAgICAgICAgaSA9IGUoMjApLAogICAgICAgICAgICBhID0gZSgxOSksCiAgICAgICAgICAgIHUgPSBlKDc0KSwKICAgICAgICAgICAgYyA9IGUoOTUpLAogICAgICAgICAgICBmID0gZSg0NyksCiAgICAgICAgICAgIHMgPSBlKDMzKSwKICAgICAgICAgICAgcCA9IGUoMzUpLAogICAgICAgICAgICBsID0gcygiaXRlcmF0b3IiKTsKICAgICAgICBlID0gITE7CiAgICAgICAgW10ua2V5cyAmJiAoIm5leHQiIGluIChzID0gW10ua2V5cygpKSA/IChzID0gYyhjKHMpKSkgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgKG4gPSBzKSA6IGUgPSAhMCksICFhKG4pIHx8IG8oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHt9OwogICAgICAgICAgICByZXR1cm4gbltsXS5jYWxsKHQpICE9PSB0CiAgICAgICAgfSkpID8gbiA9IHt9IDogcCAmJiAobiA9IHUobikpLCBpKG5bbF0pIHx8IGYobiwgbCwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0pKSwgdC5leHBvcnRzID0gewogICAgICAgICAgICBJdGVyYXRvclByb3RvdHlwZTogbiwKICAgICAgICAgICAgQlVHR1lfU0FGQVJJX0lURVJBVE9SUzogZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNDQpLmYsCiAgICAgICAgICAgIG8gPSBlKDM4KSwKICAgICAgICAgICAgaSA9IGUoMzMpKCJ0b1N0cmluZ1RhZyIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgKHQgPSB0ICYmICFlID8gdC5wcm90b3R5cGUgOiB0KSAmJiAhbyh0LCBpKSAmJiBuKHQsIGksIHsKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICB2YWx1ZTogcgogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICB2YXIgdCA9IHUoIk9iamVjdCIsICJmcmVlemUiKTsKICAgICAgICAgICAgcmV0dXJuIHQgPyB0KGMobnVsbCkpIDogYyhudWxsKQogICAgICAgIH0KICAgICAgICB2YXIgbyA9IGUoMiksCiAgICAgICAgICAgIGkgPSBlKDE5MCksCiAgICAgICAgICAgIGEgPSBlKDE5MSksCiAgICAgICAgICAgIHUgPSBlKDIzKSwKICAgICAgICAgICAgYyA9IGUoNzQpLAogICAgICAgICAgICBmID0gT2JqZWN0OwogICAgICAgIG8oewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBjb21wb3NpdGVLZXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkoYSwgZiwgYXJndW1lbnRzKS5nZXQoIm9iamVjdCIsIG4pCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg4KSwKICAgICAgICAgICAgbyA9IChlID0gRnVuY3Rpb24ucHJvdG90eXBlKS5hcHBseSwKICAgICAgICAgICAgaSA9IGUuY2FsbDsKICAgICAgICB0LmV4cG9ydHMgPSAib2JqZWN0IiA9PSB0eXBlb2YgUmVmbGVjdCAmJiBSZWZsZWN0LmFwcGx5IHx8IChuID8gaS5iaW5kKG8pIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBpLmFwcGx5KG8sIGFyZ3VtZW50cykKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgIHRoaXMub2JqZWN0ID0gbnVsbCwgdGhpcy5zeW1ib2wgPSBudWxsLCB0aGlzLnByaW1pdGl2ZXMgPSBudWxsLCB0aGlzLm9iamVjdHNCeUluZGV4ID0gaShudWxsKQogICAgICAgIH0KICAgICAgICBlKDE5MiksIGUoMjA5KTsKICAgICAgICB2YXIgbyA9IGUoMjMpLAogICAgICAgICAgICBpID0gZSg3NCksCiAgICAgICAgICAgIGEgPSBlKDE5KSwKICAgICAgICAgICAgdSA9IE9iamVjdCwKICAgICAgICAgICAgYyA9IFR5cGVFcnJvciwKICAgICAgICAgICAgZiA9IG8oIk1hcCIpLAogICAgICAgICAgICBzID0gbygiV2Vha01hcCIpOwogICAgICAgIG4ucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXNbdF0gfHwgKHRoaXNbdF0gPSByKCkpCiAgICAgICAgfSwgbi5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuICh0ID0gKGUgPSBlID8gdGhpcy5vYmplY3RzQnlJbmRleFt0XSB8fCAodGhpcy5vYmplY3RzQnlJbmRleFt0XSA9IG5ldyBzKSA6IHRoaXMucHJpbWl0aXZlcyB8fCAodGhpcy5wcmltaXRpdmVzID0gbmV3IGYpKS5nZXQocikpIHx8IGUuc2V0KHIsIHQgPSBuZXcgbiksIHQKICAgICAgICB9OwogICAgICAgIHZhciBwID0gbmV3IG47CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQsIHIgPSBwLCBlID0gYXJndW1lbnRzLmxlbmd0aCwgbiA9IDA7IG4gPCBlOyBuKyspIGEodCA9IGFyZ3VtZW50c1tuXSkgJiYgKHIgPSByLm5leHQobiwgdCwgITApKTsKICAgICAgICAgICAgaWYgKHRoaXMgPT09IHUgJiYgciA9PT0gcCkgdGhyb3cgYygiQ29tcG9zaXRlIGtleXMgbXVzdCBjb250YWluIGEgbm9uLXByaW1pdGl2ZSBjb21wb25lbnQiKTsKICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGU7IG4rKykgYSh0ID0gYXJndW1lbnRzW25dKSB8fCAociA9IHIubmV4dChuLCB0LCAhMSkpOwogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDE5MykKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBuKDE5NCkoIk1hcCIsIChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiByKHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMF0gOiB0KQogICAgICAgICAgICB9CiAgICAgICAgfSksIG4oMjA2KSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDMpLAogICAgICAgICAgICBhID0gbigxMyksCiAgICAgICAgICAgIHUgPSBuKDY3KSwKICAgICAgICAgICAgYyA9IG4oNDcpLAogICAgICAgICAgICBmID0gbigxOTUpLAogICAgICAgICAgICBzID0gbigyMDIpLAogICAgICAgICAgICBwID0gbigxNTcpLAogICAgICAgICAgICBsID0gbigyMCksCiAgICAgICAgICAgIGggPSBuKDE2KSwKICAgICAgICAgICAgdiA9IG4oMTkpLAogICAgICAgICAgICB5ID0gbig2KSwKICAgICAgICAgICAgZCA9IG4oMjA0KSwKICAgICAgICAgICAgZyA9IG4oMTg4KSwKICAgICAgICAgICAgYiA9IG4oMjA1KTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIG0ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhKFRbcl0pOwogICAgICAgICAgICAgICAgYyhULCByLCAiYWRkIiA9PSByID8gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlKHRoaXMsIDAgPT09IHQgPyAwIDogdCksIHRoaXMKICAgICAgICAgICAgICAgIH0gOiAiZGVsZXRlIiA9PSByID8gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFIgJiYgIXYodCkpICYmIGUodGhpcywgMCA9PT0gdCA/IDAgOiB0KQogICAgICAgICAgICAgICAgfSA6ICJnZXQiID09IHIgPyBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFIgJiYgIXYocikgPyB0IDogZSh0aGlzLCAwID09PSByID8gMCA6IHIpCiAgICAgICAgICAgICAgICB9IDogImhhcyIgPT0gciA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShSICYmICF2KHQpKSAmJiBlKHRoaXMsIDAgPT09IHQgPyAwIDogdCkKICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUodGhpcywgMCA9PT0gdCA/IDAgOiB0LCByKSwgdGhpcwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgeCwgdywgUywgQSwgRSwgTyA9IC0xICE9PSByLmluZGV4T2YoIk1hcCIpLAogICAgICAgICAgICAgICAgUiA9IC0xICE9PSByLmluZGV4T2YoIldlYWsiKSwKICAgICAgICAgICAgICAgIEkgPSBPID8gInNldCIgOiAiYWRkIiwKICAgICAgICAgICAgICAgIGsgPSBpW3JdLAogICAgICAgICAgICAgICAgVCA9IGsgJiYgay5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICBNID0gaywKICAgICAgICAgICAgICAgIGogPSB7fTsKICAgICAgICAgICAgcmV0dXJuIHUociwgIWwoaykgfHwgIShSIHx8IFQuZm9yRWFjaCAmJiAheSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAobmV3IGspLmVudHJpZXMoKS5uZXh0KCkKICAgICAgICAgICAgfSkpKSkgPyAoTSA9IG4uZ2V0Q29uc3RydWN0b3IoZSwgciwgTywgSSksIGYuZW5hYmxlKCkpIDogdShyLCAhMCkgJiYgKHcgPSAoeCA9IG5ldyBNKVtJXShSID8ge30gOiAtMCwgMSkgIT0geCwgUyA9IHkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgeC5oYXMoMSkKICAgICAgICAgICAgfSkpLCBBID0gZCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgbmV3IGsodCkKICAgICAgICAgICAgfSkpLCBFID0gIVIgJiYgeSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gbmV3IGssIHIgPSA1OyByLS07KSB0W0ldKHIsIHIpOwogICAgICAgICAgICAgICAgcmV0dXJuICF0LmhhcygtMCkKICAgICAgICAgICAgfSkpLCBBIHx8ICgoKE0gPSBlKChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcCh0LCBUKSwgdCA9IGIobmV3IGssIHQsIE0pLCBoKHIpIHx8IHMociwgdFtJXSwgewogICAgICAgICAgICAgICAgICAgIHRoYXQ6IHQsCiAgICAgICAgICAgICAgICAgICAgQVNfRU5UUklFUzogTwogICAgICAgICAgICAgICAgfSksIHQKICAgICAgICAgICAgfSkpKS5wcm90b3R5cGUgPSBUKS5jb25zdHJ1Y3RvciA9IE0pLCAoUyB8fCBFKSAmJiAobSgiZGVsZXRlIiksIG0oImhhcyIpLCBPICYmIG0oImdldCIpKSwgKEUgfHwgdykgJiYgbShJKSwgUiAmJiBULmNsZWFyICYmIGRlbGV0ZSBULmNsZWFyKSwgaltyXSA9IE0sIG8oewogICAgICAgICAgICAgICAgZ2xvYmFsOiAhMCwKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiAhMCwKICAgICAgICAgICAgICAgIGZvcmNlZDogTSAhPSBrCiAgICAgICAgICAgIH0sIGopLCBnKE0sIHIpLCBSIHx8IG4uc2V0U3Ryb25nKE0sIHIsIE8pLCBNCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4odCkgewogICAgICAgICAgICBmKHQsIGQsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiB7CiAgICAgICAgICAgICAgICAgICAgb2JqZWN0SUQ6ICJPIiArIGcrKywKICAgICAgICAgICAgICAgICAgICB3ZWFrRGF0YToge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgdmFyIG8gPSBlKDIpLAogICAgICAgICAgICBpID0gZSgxMyksCiAgICAgICAgICAgIGEgPSBlKDU0KSwKICAgICAgICAgICAgdSA9IGUoMTkpLAogICAgICAgICAgICBjID0gZSgzOCksCiAgICAgICAgICAgIGYgPSBlKDQ0KS5mLAogICAgICAgICAgICBzID0gZSg1NyksCiAgICAgICAgICAgIHAgPSBlKDE5NiksCiAgICAgICAgICAgIGwgPSBlKDE5OSksCiAgICAgICAgICAgIGggPSBlKDQwKSwKICAgICAgICAgICAgdiA9IGUoMjAxKSwKICAgICAgICAgICAgeSA9ICExLAogICAgICAgICAgICBkID0gaCgibWV0YSIpLAogICAgICAgICAgICBnID0gMCwKICAgICAgICAgICAgYiA9IHQuZXhwb3J0cyA9IHsKICAgICAgICAgICAgICAgIGVuYWJsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgYi5lbmFibGUgPSBmdW5jdGlvbigpIHt9LCB5ID0gITA7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBzLmYsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpKFtdLnNwbGljZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB7fTsKICAgICAgICAgICAgICAgICAgICBlW2RdID0gMSwgdChlKS5sZW5ndGggJiYgKHMuZiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IHQoZSksIG8gPSAwLCBpID0gbi5sZW5ndGg7IG8gPCBpOyBvKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobltvXSA9PT0gZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIobiwgbywgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICB9LCBvKHsKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiAiT2JqZWN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGdldE93blByb3BlcnR5TmFtZXM6IHAuZgogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZhc3RLZXk6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXUodCkpIHJldHVybiAic3ltYm9sIiA9PSB0eXBlb2YgdCA/IHQgOiAoInN0cmluZyIgPT0gdHlwZW9mIHQgPyAiUyIgOiAiUCIpICsgdDsKICAgICAgICAgICAgICAgICAgICBpZiAoIWModCwgZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKHQpKSByZXR1cm4gIkYiOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIpIHJldHVybiAiRSI7CiAgICAgICAgICAgICAgICAgICAgICAgIG4odCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbZF0ub2JqZWN0SUQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRXZWFrRGF0YTogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIGlmICghYyh0LCBkKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWwodCkpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIG4odCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbZF0ud2Vha0RhdGEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbkZyZWV6ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2ICYmIHkgJiYgbCh0KSAmJiAhYyh0LCBkKSAmJiBuKHQpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgYVtkXSA9ICEwCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDE0KSwKICAgICAgICAgICAgbyA9IGUoMTEpLAogICAgICAgICAgICBpID0gZSg1NykuZiwKICAgICAgICAgICAgYSA9IGUoMTk3KSwKICAgICAgICAgICAgdSA9ICJvYmplY3QiID09IHR5cGVvZiB3aW5kb3cgJiYgd2luZG93ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdOwogICAgICAgIHQuZXhwb3J0cy5mID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdSAmJiAiV2luZG93IiA9PSBuKHQpID8gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSh0KQogICAgICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhKHUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0odCkgOiBpKG8odCkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig2MCksCiAgICAgICAgICAgIGkgPSBuKDYzKSwKICAgICAgICAgICAgYSA9IG4oMTk4KSwKICAgICAgICAgICAgdSA9IEFycmF5LAogICAgICAgICAgICBjID0gTWF0aC5tYXg7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgICAgICBmb3IgKHZhciBmID0gaShyKSwgcyA9IG8oZSwgZiksIHAgPSBvKG4gPT09IHQgPyBmIDogbiwgZiksIGwgPSB1KGMocCAtIHMsIDApKSwgaCA9IDA7IHMgPCBwOyBzKyssIGgrKykgYShsLCBoLCByW3NdKTsKICAgICAgICAgICAgcmV0dXJuIGwubGVuZ3RoID0gaCwgbAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTcpLAogICAgICAgICAgICBvID0gZSg0NCksCiAgICAgICAgICAgIGkgPSBlKDEwKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIChyID0gbihyKSkgaW4gdCA/IG8uZih0LCByLCBpKDAsIGUpKSA6IHRbcl0gPSBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg2KSwKICAgICAgICAgICAgbyA9IGUoMTkpLAogICAgICAgICAgICBpID0gZSgxNCksCiAgICAgICAgICAgIGEgPSBlKDIwMCksCiAgICAgICAgICAgIHUgPSBPYmplY3QuaXNFeHRlbnNpYmxlOwogICAgICAgIG4gPSBuKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdSgxKQogICAgICAgIH0pKTsKICAgICAgICB0LmV4cG9ydHMgPSBuIHx8IGEgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAhIW8odCkgJiYgKCFhIHx8ICJBcnJheUJ1ZmZlciIgIT0gaSh0KSkgJiYgKCF1IHx8IHUodCkpCiAgICAgICAgfSA6IHUKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSg2KSwgdC5leHBvcnRzID0gZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBBcnJheUJ1ZmZlciAmJiAodCA9IG5ldyBBcnJheUJ1ZmZlcig4KSwgT2JqZWN0LmlzRXh0ZW5zaWJsZSh0KSAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgImEiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogOAogICAgICAgICAgICB9KSkKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSg2KSwgdC5leHBvcnRzID0gIWUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gT2JqZWN0LmlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKQogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4odCwgcikgewogICAgICAgICAgICB0aGlzLnN0b3BwZWQgPSB0LCB0aGlzLnJlc3VsdCA9IHIKICAgICAgICB9CiAgICAgICAgdmFyIG8gPSBlKDExMSksCiAgICAgICAgICAgIGkgPSBlKDcpLAogICAgICAgICAgICBhID0gZSg0NiksCiAgICAgICAgICAgIHUgPSBlKDMxKSwKICAgICAgICAgICAgYyA9IGUoMjAzKSwKICAgICAgICAgICAgZiA9IGUoNjMpLAogICAgICAgICAgICBzID0gZSgyNCksCiAgICAgICAgICAgIHAgPSBlKDExOSksCiAgICAgICAgICAgIGwgPSBlKDEyMCksCiAgICAgICAgICAgIGggPSBlKDE2NSksCiAgICAgICAgICAgIHYgPSBUeXBlRXJyb3IsCiAgICAgICAgICAgIHkgPSBuLnByb3RvdHlwZTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIGQodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGIgJiYgaChiLCAibm9ybWFsIiwgdCksIG5ldyBuKCEwLCB0KQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBnKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBPID8gKGEodCksIGsgPyBUKHRbMF0sIHRbMV0sIGQpIDogVCh0WzBdLCB0WzFdKSkgOiBrID8gVCh0LCBkKSA6IFQodCkKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgYiwgbSwgeCwgdywgUywgQSwgRSA9IGUgJiYgZS50aGF0LAogICAgICAgICAgICAgICAgTyA9ICEoIWUgfHwgIWUuQVNfRU5UUklFUyksCiAgICAgICAgICAgICAgICBSID0gISghZSB8fCAhZS5JU19SRUNPUkQpLAogICAgICAgICAgICAgICAgSSA9ICEoIWUgfHwgIWUuSVNfSVRFUkFUT1IpLAogICAgICAgICAgICAgICAgayA9ICEoIWUgfHwgIWUuSU5URVJSVVBURUQpLAogICAgICAgICAgICAgICAgVCA9IG8ociwgRSk7CiAgICAgICAgICAgIGlmIChSKSBiID0gdC5pdGVyYXRvcjsKICAgICAgICAgICAgZWxzZSBpZiAoSSkgYiA9IHQ7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCEoSSA9IGwodCkpKSB0aHJvdyB2KHUodCkgKyAiIGlzIG5vdCBpdGVyYWJsZSIpOwogICAgICAgICAgICAgICAgaWYgKGMoSSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKG0gPSAwLCB4ID0gZih0KTsgbSA8IHg7IG0rKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh3ID0gZyh0W21dKSkgJiYgcyh5LCB3KSkgcmV0dXJuIHc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBuKCExKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYiA9IHAodCwgSSkKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKFMgPSAoUiA/IHQgOiBiKS5uZXh0OyAhKEEgPSBpKFMsIGIpKS5kb25lOykgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICB3ID0gZyhBLnZhbHVlKQogICAgICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgICAgIGgoYiwgInRocm93IiwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdyAmJiB3ICYmIHMoeSwgdykpIHJldHVybiB3CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG5ldyBuKCExKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMzMpLAogICAgICAgICAgICBpID0gbigxMjEpLAogICAgICAgICAgICBhID0gbygiaXRlcmF0b3IiKSwKICAgICAgICAgICAgdSA9IEFycmF5LnByb3RvdHlwZTsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHJldHVybiByICE9PSB0ICYmIChpLkFycmF5ID09PSByIHx8IHVbYV0gPT09IHIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzMykoIml0ZXJhdG9yIiksCiAgICAgICAgICAgIG8gPSAhMTsKICAgICAgICB0cnkgewogICAgICAgICAgICB2YXIgaSA9IDAsCiAgICAgICAgICAgICAgICBhID0gewogICAgICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZTogISFpKysKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgYVtuXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgfSwgQXJyYXkuZnJvbShhLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAyCiAgICAgICAgICAgIH0pKQogICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICBpZiAoIXIgJiYgIW8pIHJldHVybiAhMTsKICAgICAgICAgICAgdmFyIGUgPSAhMTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciBpID0ge307CiAgICAgICAgICAgICAgICBpW25dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmU6IGUgPSAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgdChpKQogICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjApLAogICAgICAgICAgICBvID0gZSgxOSksCiAgICAgICAgICAgIGkgPSBlKDk3KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgIHZhciBhLCB1OwogICAgICAgICAgICByZXR1cm4gaSAmJiBuKGEgPSByLmNvbnN0cnVjdG9yKSAmJiBhICE9PSBlICYmIG8odSA9IGEucHJvdG90eXBlKSAmJiB1ICE9PSBlLnByb3RvdHlwZSAmJiBpKHQsIHUpLCB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig3NCksCiAgICAgICAgICAgIGkgPSBuKDg1KSwKICAgICAgICAgICAgYSA9IG4oMTE2KSwKICAgICAgICAgICAgdSA9IG4oMTExKSwKICAgICAgICAgICAgYyA9IG4oMTU3KSwKICAgICAgICAgICAgZiA9IG4oMTYpLAogICAgICAgICAgICBzID0gbigyMDIpLAogICAgICAgICAgICBwID0gbigyMDcpLAogICAgICAgICAgICBsID0gbigxMTgpLAogICAgICAgICAgICBoID0gbigyMDgpLAogICAgICAgICAgICB2ID0gbig1KSwKICAgICAgICAgICAgeSA9IG4oMTk1KS5mYXN0S2V5LAogICAgICAgICAgICBkID0gKG4gPSBuKDUxKSkuc2V0LAogICAgICAgICAgICBnID0gbi5nZXR0ZXJGb3I7CiAgICAgICAgci5leHBvcnRzID0gewogICAgICAgICAgICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24ociwgZSwgbiwgcCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gbChyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGkgPSBiKHIpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbShyLCBlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA/IGEudmFsdWUgPSBuIDogKGkubGFzdCA9IGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBvID0geShlLCAhMCksCiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzOiBuID0gaS5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiB0LAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkOiAhMQogICAgICAgICAgICAgICAgICAgIH0sIGkuZmlyc3QgfHwgKGkuZmlyc3QgPSBhKSwgbiAmJiAobi5uZXh0ID0gYSksIHYgPyBpLnNpemUrKyA6IHIuc2l6ZSsrLCAiRiIgIT09IG8gJiYgKGkuaW5kZXhbb10gPSBhKSksIHIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHIgPSByKChmdW5jdGlvbihyLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgYyhyLCBoKSwgZChyLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBvKG51bGwpLAogICAgICAgICAgICAgICAgICAgICAgICBmaXJzdDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogMAogICAgICAgICAgICAgICAgICAgIH0pLCB2IHx8IChyLnNpemUgPSAwKSwgZihpKSB8fCBzKGksIHJbcF0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdDogciwKICAgICAgICAgICAgICAgICAgICAgICAgQVNfRU5UUklFUzogbgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICB2YXIgaCA9IHIucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgIGIgPSBnKGUpLAogICAgICAgICAgICAgICAgICAgIG0gPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlLCBuID0gYih0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJGIiAhPT0gKHQgPSB5KHIpKSkgcmV0dXJuIG4uaW5kZXhbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IG4uZmlyc3Q7IGU7IGUgPSBlLm5leHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT0gcikgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIGEoaCwgewogICAgICAgICAgICAgICAgICAgIGNsZWFyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IGIodGhpcyksIGUgPSByLmluZGV4LCBuID0gci5maXJzdDsgbjspIG4ucmVtb3ZlZCA9ICEwLCBuLnByZXZpb3VzICYmIChuLnByZXZpb3VzID0gbi5wcmV2aW91cy5uZXh0ID0gdCksIGRlbGV0ZSBlW24uaW5kZXhdLCBuID0gbi5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICByLmZpcnN0ID0gci5sYXN0ID0gdCwgdiA/IHIuc2l6ZSA9IDAgOiB0aGlzLnNpemUgPSAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkZWxldGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIGUgPSBiKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG0odGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIChyID0gbi5uZXh0LCB0ID0gbi5wcmV2aW91cywgZGVsZXRlIGUuaW5kZXhbbi5pbmRleF0sIG4ucmVtb3ZlZCA9ICEwLCB0ICYmICh0Lm5leHQgPSByKSwgciAmJiAoci5wcmV2aW91cyA9IHQpLCBlLmZpcnN0ID09IG4gJiYgKGUuZmlyc3QgPSByKSwgZS5sYXN0ID09IG4gJiYgKGUubGFzdCA9IHQpLCB2ID8gZS5zaXplLS0gOiB0aGlzLnNpemUtLSksICEhbgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZm9yRWFjaDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlLCBuID0gYih0aGlzKSwgbyA9IHUociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KTsgZSA9IGUgPyBlLm5leHQgOiBuLmZpcnN0OykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyhlLnZhbHVlLCBlLmtleSwgdGhpcyk7IGUgJiYgZS5yZW1vdmVkOykgZSA9IGUucHJldmlvdXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFtKHRoaXMsIHQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIGEoaCwgbiA/IHsKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0ID0gbSh0aGlzLCB0KSkgJiYgdC52YWx1ZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsKHRoaXMsIDAgPT09IHQgPyAwIDogdCwgcikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCh0aGlzLCB0ID0gMCA9PT0gdCA/IDAgOiB0LCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCB2ICYmIGkoaCwgInNpemUiLCB7CiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYih0aGlzKS5zaXplCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0U3Ryb25nOiBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9IGUgKyAiIEl0ZXJhdG9yIiwKICAgICAgICAgICAgICAgICAgICBpID0gZyhlKSwKICAgICAgICAgICAgICAgICAgICBhID0gZyhvKTsKICAgICAgICAgICAgICAgIHAociwgZSwgKGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgICAgICBkKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogbywKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiByLAogICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogaShyKSwKICAgICAgICAgICAgICAgICAgICAgICAga2luZDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDogdAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBhKHRoaXMpLCBlID0gci5raW5kLCBuID0gci5sYXN0OyBuICYmIG4ucmVtb3ZlZDspIG4gPSBuLnByZXZpb3VzOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByLnRhcmdldCAmJiAoci5sYXN0ID0gbiA9IG4gPyBuLm5leHQgOiByLnN0YXRlLmZpcnN0KSA/IGwoImtleXMiID09IGUgPyBuLmtleSA6ICJ2YWx1ZXMiID09IGUgPyBuLnZhbHVlIDogW24ua2V5LCBuLnZhbHVlXSwgITEpIDogKHIudGFyZ2V0ID0gdCwgbCh0LCAhMCkpCiAgICAgICAgICAgICAgICB9KSwgbiA/ICJlbnRyaWVzIiA6ICJ2YWx1ZXMiLCAhbiwgITApLCBoKGUpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZnVuY3Rpb24gbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9CiAgICAgICAgdmFyIG8gPSBlKDIpLAogICAgICAgICAgICBpID0gZSg3KSwKICAgICAgICAgICAgYSA9IGUoMzUpLAogICAgICAgICAgICB1ID0gZSg0OSksCiAgICAgICAgICAgIGMgPSBlKDIwKSwKICAgICAgICAgICAgZiA9IGUoMTg2KSwKICAgICAgICAgICAgcyA9IGUoOTUpLAogICAgICAgICAgICBwID0gZSg5NyksCiAgICAgICAgICAgIGwgPSBlKDE4OCksCiAgICAgICAgICAgIGggPSBlKDQzKSwKICAgICAgICAgICAgdiA9IGUoNDcpLAogICAgICAgICAgICB5ID0gZSgzMyksCiAgICAgICAgICAgIGQgPSBlKDEyMSksCiAgICAgICAgICAgIGcgPSAoZSA9IGUoMTg3KSwgdS5QUk9QRVIpLAogICAgICAgICAgICBiID0gdS5DT05GSUdVUkFCTEUsCiAgICAgICAgICAgIG0gPSBlLkl0ZXJhdG9yUHJvdG90eXBlLAogICAgICAgICAgICB4ID0gZS5CVUdHWV9TQUZBUklfSVRFUkFUT1JTLAogICAgICAgICAgICB3ID0geSgiaXRlcmF0b3IiKSwKICAgICAgICAgICAgUyA9ICJ2YWx1ZXMiLAogICAgICAgICAgICBBID0gImVudHJpZXMiOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUsIHUsIHksIEUsIE8pIHsKICAgICAgICAgICAgZnVuY3Rpb24gUih0KSB7CiAgICAgICAgICAgICAgICBpZiAodCA9PT0geSAmJiBDKSByZXR1cm4gQzsKICAgICAgICAgICAgICAgIGlmICgheCAmJiB0IGluIFApIHJldHVybiBQW3RdOwogICAgICAgICAgICAgICAgc3dpdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5cyI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSBTOgogICAgICAgICAgICAgICAgICAgIGNhc2UgQToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBlKHRoaXMsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGUodGhpcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmKGUsIHIsIHUpOwogICAgICAgICAgICB2YXIgSSwgaywgVCwgTSA9IHIgKyAiIEl0ZXJhdG9yIiwKICAgICAgICAgICAgICAgIGogPSAhMSwKICAgICAgICAgICAgICAgIFAgPSB0LnByb3RvdHlwZSwKICAgICAgICAgICAgICAgIEQgPSBQW3ddIHx8IFBbIkBAaXRlcmF0b3IiXSB8fCB5ICYmIFBbeV0sCiAgICAgICAgICAgICAgICBDID0gIXggJiYgRCB8fCBSKHkpOwogICAgICAgICAgICBpZiAoKHUgPSAiQXJyYXkiID09IHIgJiYgUC5lbnRyaWVzIHx8IEQpICYmIChJID0gcyh1LmNhbGwobmV3IHQpKSkgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSS5uZXh0ICYmIChhIHx8IHMoSSkgPT09IG0gfHwgKHAgPyBwKEksIG0pIDogYyhJW3ddKSB8fCB2KEksIHcsIG4pKSwgbChJLCBNLCAhMCwgITApLCBhICYmIChkW01dID0gbikpLCBnICYmIHkgPT0gUyAmJiBEICYmIEQubmFtZSAhPT0gUyAmJiAoIWEgJiYgYiA/IGgoUCwgIm5hbWUiLCBTKSA6IChqID0gITAsIEMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaShELCB0aGlzKQogICAgICAgICAgICAgICAgfSkpLCB5KQogICAgICAgICAgICAgICAgaWYgKGsgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogUihTKSwKICAgICAgICAgICAgICAgICAgICAgICAga2V5czogRSA/IEMgOiBSKCJrZXlzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXM6IFIoQSkKICAgICAgICAgICAgICAgICAgICB9LCBPKQogICAgICAgICAgICAgICAgICAgIGZvciAoVCBpbiBrKSAheCAmJiAhaiAmJiBUIGluIFAgfHwgdihQLCBULCBrW1RdKTsKICAgICAgICAgICAgICAgIGVsc2Ugbyh7CiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiByLAogICAgICAgICAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgICAgICAgICBmb3JjZWQ6IHggfHwgagogICAgICAgICAgICAgICAgfSwgayk7CiAgICAgICAgICAgIHJldHVybiBhICYmICFPIHx8IFBbd10gPT09IEMgfHwgdihQLCB3LCBDLCB7CiAgICAgICAgICAgICAgICBuYW1lOiB5CiAgICAgICAgICAgIH0pLCBkW3JdID0gQywgawogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjMpLAogICAgICAgICAgICBvID0gZSg4NSksCiAgICAgICAgICAgIGkgPSBlKDMzKSwKICAgICAgICAgICAgYSA9IGUoNSksCiAgICAgICAgICAgIHUgPSBpKCJzcGVjaWVzIik7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB0ID0gbih0KSwgYSAmJiB0ICYmICF0W3VdICYmIG8odCwgdSwgewogICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyMTApCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8sIGksIGEsIHUsIGMgPSBuKDIwMSksCiAgICAgICAgICAgIGYgPSBuKDMpLAogICAgICAgICAgICBzID0gbigxMyksCiAgICAgICAgICAgIHAgPSBuKDExNiksCiAgICAgICAgICAgIGwgPSBuKDE5NSksCiAgICAgICAgICAgIGggPSBuKDE5NCksCiAgICAgICAgICAgIHYgPSBuKDIxMSksCiAgICAgICAgICAgIHkgPSBuKDE5KSwKICAgICAgICAgICAgZCA9IG4oNTEpLmVuZm9yY2UsCiAgICAgICAgICAgIGcgPSBuKDYpLAogICAgICAgICAgICBiID0gbig1MiksCiAgICAgICAgICAgIG0gPSAobiA9IE9iamVjdCwgQXJyYXkuaXNBcnJheSksCiAgICAgICAgICAgIHggPSBuLmlzRXh0ZW5zaWJsZSwKICAgICAgICAgICAgdyA9IG4uaXNGcm96ZW4sCiAgICAgICAgICAgIFMgPSBuLmlzU2VhbGVkLAogICAgICAgICAgICBBID0gbi5mcmVlemUsCiAgICAgICAgICAgIEUgPSBuLnNlYWwsCiAgICAgICAgICAgIE8gPSB7fSwKICAgICAgICAgICAgUiA9IHt9LAogICAgICAgICAgICBJID0gKG4gPSAhZi5BY3RpdmVYT2JqZWN0ICYmICJBY3RpdmVYT2JqZWN0IiBpbiBmLCBmID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiByKHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMF0gOiB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBoKCJXZWFrTWFwIiwgZiwgdikpLAogICAgICAgICAgICBrID0gcygoaCA9IEkucHJvdG90eXBlKS5zZXQpOwogICAgICAgIGIgJiYgKG4gPyAobyA9IHYuZ2V0Q29uc3RydWN0b3IoZiwgIldlYWtNYXAiLCAhMCksIGwuZW5hYmxlKCksIGkgPSBzKGguZGVsZXRlKSwgYSA9IHMoaC5oYXMpLCB1ID0gcyhoLmdldCksIHAoaCwgewogICAgICAgICAgICBkZWxldGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmICgheSh0KSB8fCB4KHQpKSByZXR1cm4gaSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgIHZhciByID0gZCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByLmZyb3plbiB8fCAoci5mcm96ZW4gPSBuZXcgbyksIGkodGhpcywgdCkgfHwgci5mcm96ZW4uZGVsZXRlKHQpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhhczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKCF5KHQpIHx8IHgodCkpIHJldHVybiBhKHRoaXMsIHQpOwogICAgICAgICAgICAgICAgdmFyIHIgPSBkKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIHIuZnJvemVuIHx8IChyLmZyb3plbiA9IG5ldyBvKSwgYSh0aGlzLCB0KSB8fCByLmZyb3plbi5oYXModCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoIXkodCkgfHwgeCh0KSkgcmV0dXJuIHUodGhpcywgdCk7CiAgICAgICAgICAgICAgICB2YXIgciA9IGQodGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gci5mcm96ZW4gfHwgKHIuZnJvemVuID0gbmV3IG8pLCBhKHRoaXMsIHQpID8gdSh0aGlzLCB0KSA6IHIuZnJvemVuLmdldCh0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgcmV0dXJuIHkodCkgJiYgIXgodCkgPyAoKGUgPSBkKHRoaXMpKS5mcm96ZW4gfHwgKGUuZnJvemVuID0gbmV3IG8pLCBhKHRoaXMsIHQpID8gayh0aGlzLCB0LCByKSA6IGUuZnJvemVuLnNldCh0LCByKSkgOiBrKHRoaXMsIHQsIHIpLCB0aGlzCiAgICAgICAgICAgIH0KICAgICAgICB9KSkgOiBjICYmIGcoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IEEoW10pOwogICAgICAgICAgICByZXR1cm4gayhuZXcgSSwgdCwgMSksICF3KHQpCiAgICAgICAgfSkpICYmIHAoaCwgewogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgcmV0dXJuIG0odCkgJiYgKHcodCkgPyBlID0gTyA6IFModCkgJiYgKGUgPSBSKSksIGsodGhpcywgdCwgciksIGUgPT0gTyAmJiBBKHQpLCBlID09IFIgJiYgRSh0KSwgdGhpcwogICAgICAgICAgICB9CiAgICAgICAgfSkpCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgZnVuY3Rpb24gbyh0KSB7CiAgICAgICAgICAgIHJldHVybiB0LmZyb3plbiB8fCAodC5mcm96ZW4gPSBuZXcgUykKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGkodCwgcikgewogICAgICAgICAgICByZXR1cm4gYih0LmVudHJpZXMsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdFswXSA9PT0gcgogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICAgICAgdmFyIGEgPSBuKDEzKSwKICAgICAgICAgICAgdSA9IG4oMTE2KSwKICAgICAgICAgICAgYyA9IG4oMTk1KS5nZXRXZWFrRGF0YSwKICAgICAgICAgICAgZiA9IG4oMTU3KSwKICAgICAgICAgICAgcyA9IG4oNDYpLAogICAgICAgICAgICBwID0gbigxNiksCiAgICAgICAgICAgIGwgPSBuKDE5KSwKICAgICAgICAgICAgaCA9IG4oMjAyKSwKICAgICAgICAgICAgdiA9IG4oMTI2KSwKICAgICAgICAgICAgeSA9IG4oMzgpLAogICAgICAgICAgICBkID0gKG4gPSBuKDUxKSkuc2V0LAogICAgICAgICAgICBnID0gbi5nZXR0ZXJGb3IsCiAgICAgICAgICAgIGIgPSB2LmZpbmQsCiAgICAgICAgICAgIG0gPSB2LmZpbmRJbmRleCwKICAgICAgICAgICAgeCA9IGEoW10uc3BsaWNlKSwKICAgICAgICAgICAgdyA9IDAsCiAgICAgICAgICAgIFMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcyA9IFtdCiAgICAgICAgICAgIH07CiAgICAgICAgUy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKHQgPSBpKHRoaXMsIHQpKSByZXR1cm4gdFsxXQogICAgICAgICAgICB9LAogICAgICAgICAgICBoYXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhIWkodGhpcywgdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGkodGhpcywgdCk7CiAgICAgICAgICAgICAgICBlID8gZVsxXSA9IHIgOiB0aGlzLmVudHJpZXMucHVzaChbdCwgcl0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRlbGV0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBtKHRoaXMuZW50cmllcywgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gclswXSA9PT0gdAogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIH5yICYmIHgodGhpcy5lbnRyaWVzLCByLCAxKSwgISF+cgogICAgICAgICAgICB9CiAgICAgICAgfSwgci5leHBvcnRzID0gewogICAgICAgICAgICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24ociwgZSwgbiwgaSkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gYSh0LCByLCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBiKHQpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gYyhzKHIpLCAhMCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwID09PSBpID8gbyhuKS5zZXQociwgZSkgOiBpW24uaWRdID0gZSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgciA9IHIoKGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICBmKHIsIHYpLCBkKHIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHcrKywKICAgICAgICAgICAgICAgICAgICAgICAgZnJvemVuOiB0CiAgICAgICAgICAgICAgICAgICAgfSksIHAobykgfHwgaChvLCByW2ldLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIEFTX0VOVFJJRVM6IG4KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgdmFyIHYgPSByLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICBiID0gZyhlKTsKICAgICAgICAgICAgICAgIHJldHVybiB1KHYsIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBiKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWwodCkpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBjKHQpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IGUgPyBvKHIpLmRlbGV0ZSh0KSA6IGUgJiYgeShlLCByLmlkKSAmJiBkZWxldGUgZVtyLmlkXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaGFzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYih0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYyh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwID09PSBlID8gbyhyKS5oYXModCkgOiBlICYmIHkoZSwgci5pZCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgdSh2LCBuID8gewogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGIodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGMocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IG4gPyBvKGUpLmdldChyKSA6IG4gPyBuW2UuaWRdIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEodGhpcywgdCwgcikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSh0aGlzLCB0LCAhMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgcgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTkxKSwKICAgICAgICAgICAgaSA9IGUoMjMpLAogICAgICAgICAgICBhID0gZSgxOTApOwogICAgICAgIG4oewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBjb21wb3NpdGVTeW1ib2w6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIDEgPT0gYXJndW1lbnRzLmxlbmd0aCAmJiAic3RyaW5nIiA9PSB0eXBlb2YgYXJndW1lbnRzWzBdID8gaSgiU3ltYm9sIikuZm9yKGFyZ3VtZW50c1swXSkgOiBhKG8sIG51bGwsIGFyZ3VtZW50cykuZ2V0KCJzeW1ib2wiLCBpKCJTeW1ib2wiKSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgZnVuY3Rpb24gbyh0KSB7CiAgICAgICAgICAgIGlmICgodCA9IHcodCkpLnN0YXRlID09IEEpIHRocm93IGIobSArICIgYWxyZWFkeSBkaXNwb3NlZCIpOwogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaSgpIHsKICAgICAgICAgICAgeChzKHRoaXMsIEUpLCB7CiAgICAgICAgICAgICAgICB0eXBlOiBtLAogICAgICAgICAgICAgICAgc3RhdGU6ICJwZW5kaW5nIiwKICAgICAgICAgICAgICAgIHN0YWNrOiBbXQogICAgICAgICAgICB9KSwgdSB8fCAodGhpcy5kaXNwb3NlZCA9ICExKQogICAgICAgIH0KICAgICAgICB2YXIgYSA9IG4oMiksCiAgICAgICAgICAgIHUgPSBuKDUpLAogICAgICAgICAgICBjID0gbigyMyksCiAgICAgICAgICAgIGYgPSBuKDMwKSwKICAgICAgICAgICAgcyA9IG4oMTU3KSwKICAgICAgICAgICAgcCA9IG4oNDcpLAogICAgICAgICAgICBsID0gbigxMTYpLAogICAgICAgICAgICBoID0gbig4NSksCiAgICAgICAgICAgIHYgPSBuKDMzKSwKICAgICAgICAgICAgeSA9IG4oNTEpLAogICAgICAgICAgICBkID0gbigxNTgpLAogICAgICAgICAgICBnID0gYygiU3VwcHJlc3NlZEVycm9yIiksCiAgICAgICAgICAgIGIgPSBSZWZlcmVuY2VFcnJvciwKICAgICAgICAgICAgbSA9IChjID0gdigiZGlzcG9zZSIpLCB2ID0gdigidG9TdHJpbmdUYWciKSwgIkRpc3Bvc2FibGVTdGFjayIpLAogICAgICAgICAgICB4ID0geS5zZXQsCiAgICAgICAgICAgIHcgPSB5LmdldHRlckZvcihtKSwKICAgICAgICAgICAgUyA9ICJzeW5jLWRpc3Bvc2UiLAogICAgICAgICAgICBBID0gImRpc3Bvc2VkIiwKICAgICAgICAgICAgRSA9IGkucHJvdG90eXBlOwogICAgICAgIGwoRSwgewogICAgICAgICAgICBkaXNwb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdyh0aGlzKTsKICAgICAgICAgICAgICAgIGlmICh0LnN0YXRlICE9IEEpIHsKICAgICAgICAgICAgICAgICAgICB0LnN0YXRlID0gQSwgdSB8fCAodGhpcy5kaXNwb3NlZCA9ICEwKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByLCBlID0gdC5zdGFjaywgbiA9IGUubGVuZ3RoLCBvID0gITE7IG47KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZVstLW5dOwogICAgICAgICAgICAgICAgICAgICAgICBlW25dID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkoKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbyA/IG5ldyBnKHQsIHIpIDogKG8gPSAhMCwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodC5zdGFjayA9IG51bGwsIG8pIHRocm93IHIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZChvKHRoaXMpLCB0LCBTKSwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBhZG9wdDogZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBvKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGYoZSksIGQobiwgdCwgUywgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGUocikKICAgICAgICAgICAgICAgIH0pKSwgcgogICAgICAgICAgICB9LAogICAgICAgICAgICBkZWZlcjogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBvKHRoaXMpOwogICAgICAgICAgICAgICAgZihyKSwgZChlLCB0LCBTLCByKQogICAgICAgICAgICB9LAogICAgICAgICAgICBtb3ZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gbyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICByID0gbmV3IGk7CiAgICAgICAgICAgICAgICByZXR1cm4gdyhyKS5zdGFjayA9IHQuc3RhY2ssIHQuc3RhY2sgPSBbXSwgdC5zdGF0ZSA9IEEsIHUgfHwgKHRoaXMuZGlzcG9zZWQgPSAhMCksIHIKICAgICAgICAgICAgfQogICAgICAgIH0pLCB1ICYmIGgoRSwgImRpc3Bvc2VkIiwgewogICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHcodGhpcykuc3RhdGUgPT0gQQogICAgICAgICAgICB9CiAgICAgICAgfSksIHAoRSwgYywgRS5kaXNwb3NlLCB7CiAgICAgICAgICAgIG5hbWU6ICJkaXNwb3NlIgogICAgICAgIH0pLCBwKEUsIHYsIG0sIHsKICAgICAgICAgICAgbm9uV3JpdGFibGU6ICEwCiAgICAgICAgfSksIGEoewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIERpc3Bvc2FibGVTdGFjazogaQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkZ1bmN0aW9uIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBkZW1ldGhvZGl6ZTogZSgyMTUpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpLAogICAgICAgICAgICBvID0gZSgzMCk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBuKG8odGhpcykpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTMpLAogICAgICAgICAgICBpID0gZSgyMCksCiAgICAgICAgICAgIGEgPSBlKDUwKSwKICAgICAgICAgICAgdSA9IGUoMzgpLAogICAgICAgICAgICBjID0gZSg1KSwKICAgICAgICAgICAgZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsCiAgICAgICAgICAgIHMgPSAvXlxzKmNsYXNzXGIvLAogICAgICAgICAgICBwID0gbyhzLmV4ZWMpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJGdW5jdGlvbiIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBzaGFtOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNDYWxsYWJsZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkodCkgJiYgISBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjIHx8ICFwKHMsIGEodCkpKSByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICAgICAgICAgIHJldHVybiAhISh0ID0gZih0LCAicHJvdG90eXBlIikpICYmIHUodCwgIndyaXRhYmxlIikgJiYgIXQud3JpdGFibGUKICAgICAgICAgICAgICAgIH0odCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkZ1bmN0aW9uIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGlzQ29uc3RydWN0b3I6IGUoMTEzKQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDMzKSwKICAgICAgICAgICAgaSA9IG4oNDQpLmY7CiAgICAgICAgbiA9IG8oIm1ldGFkYXRhIik7CiAgICAgICAgKG8gPSBGdW5jdGlvbi5wcm90b3R5cGUpW25dID09PSB0ICYmIGkobywgbiwgewogICAgICAgICAgICB2YWx1ZTogbnVsbAogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkZ1bmN0aW9uIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwLAogICAgICAgICAgICBuYW1lOiAiZGVtZXRob2RpemUiCiAgICAgICAgfSwgewogICAgICAgICAgICB1blRoaXM6IGUoMjE1KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzKSwKICAgICAgICAgICAgaSA9IGUoMTU3KSwKICAgICAgICAgICAgYSA9IGUoMjApLAogICAgICAgICAgICB1ID0gZSg0MyksCiAgICAgICAgICAgIGMgPSBlKDYpLAogICAgICAgICAgICBmID0gZSgzOCksCiAgICAgICAgICAgIHMgPSBlKDMzKSwKICAgICAgICAgICAgcCA9IGUoMTg3KS5JdGVyYXRvclByb3RvdHlwZSwKICAgICAgICAgICAgbCA9IChlID0gZSgzNSksIHMgPSBzKCJ0b1N0cmluZ1RhZyIpLCBvLkl0ZXJhdG9yKTsKICAgICAgICBhID0gZSB8fCAhYShsKSB8fCBsLnByb3RvdHlwZSAhPT0gcCB8fCAhYygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGwoe30pCiAgICAgICAgfSkpLCBjID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGkodGhpcywgcCkKICAgICAgICB9OwogICAgICAgIGYocCwgcykgfHwgdShwLCBzLCAiSXRlcmF0b3IiKSwgIWEgJiYgZihwLCAiY29uc3RydWN0b3IiKSAmJiBwLmNvbnN0cnVjdG9yICE9PSBPYmplY3QgfHwgdShwLCAiY29uc3RydWN0b3IiLCBjKSwgYy5wcm90b3R5cGUgPSBwLCBuKHsKICAgICAgICAgICAgZ2xvYmFsOiAhMCwKICAgICAgICAgICAgY29uc3RydWN0b3I6ICEwLAogICAgICAgICAgICBmb3JjZWQ6IGEKICAgICAgICB9LCB7CiAgICAgICAgICAgIEl0ZXJhdG9yOiBjCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDIpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBuYW1lOiAiaW5kZXhlZCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGFzSW5kZXhlZFBhaXJzOiBlKDIyMikKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4odCwgcikgewogICAgICAgICAgICByZXR1cm4gW3IsIHRdCiAgICAgICAgfQogICAgICAgIHZhciBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMjIzKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG8oaSwgdGhpcywgbikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDcpLAogICAgICAgICAgICBvID0gZSgzMCksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IGUoMTIyKSwKICAgICAgICAgICAgdSA9IGUoMjI0KSwKICAgICAgICAgICAgYyA9IGUoMjI1KSwKICAgICAgICAgICAgZiA9IHUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLml0ZXJhdG9yLAogICAgICAgICAgICAgICAgICAgIHIgPSBpKG4odGhpcy5uZXh0LCB0KSk7CiAgICAgICAgICAgICAgICBpZiAoISh0aGlzLmRvbmUgPSAhIXIuZG9uZSkpIHJldHVybiBjKHQsIHRoaXMubWFwcGVyLCBbci52YWx1ZSwgdGhpcy5jb3VudGVyKytdLCAhMCkKICAgICAgICAgICAgfSkpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGkodGhpcyksIG8odCksIG5ldyBmKGEodGhpcyksIHsKICAgICAgICAgICAgICAgIG1hcHBlcjogdAogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDc0KSwKICAgICAgICAgICAgYSA9IG4oNDMpLAogICAgICAgICAgICB1ID0gbigxMTYpLAogICAgICAgICAgICBjID0gbigzMyksCiAgICAgICAgICAgIGYgPSBuKDUxKSwKICAgICAgICAgICAgcyA9IG4oMjkpLAogICAgICAgICAgICBwID0gbigxODcpLkl0ZXJhdG9yUHJvdG90eXBlLAogICAgICAgICAgICBsID0gbigxMTgpLAogICAgICAgICAgICBoID0gbigxNjUpLAogICAgICAgICAgICB2ID0gKG4gPSBjKCJ0b1N0cmluZ1RhZyIpLCAiSXRlcmF0b3JIZWxwZXIiKSwKICAgICAgICAgICAgeSA9ICJXcmFwRm9yVmFsaWRJdGVyYXRvciIsCiAgICAgICAgICAgIGQgPSBmLnNldCwKICAgICAgICAgICAgZyA9IChjID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBmLmdldHRlckZvcihyID8geSA6IHYpOwogICAgICAgICAgICAgICAgcmV0dXJuIHUoaShwKSwgewogICAgICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKSByZXR1cm4gbi5uZXh0SGFuZGxlcigpOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuLmRvbmUgPyB0IDogbi5uZXh0SGFuZGxlcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwobywgbi5kb25lKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuLmRvbmUgPSAhMCwgbwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZXR1cm46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5pdGVyYXRvcjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uZG9uZSA9ICEwLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHMoaSwgInJldHVybiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPyBvKGEsIGkpIDogbCh0LCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5pbm5lcikgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgobi5pbm5lci5pdGVyYXRvciwgIm5vcm1hbCIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoKGksICJ0aHJvdyIsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgoaSwgIm5vcm1hbCIpLCBsKHQsICEwKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sIGMoITApKSwKICAgICAgICAgICAgYiA9IGMoITEpOwogICAgICAgIGEoYiwgbiwgIkl0ZXJhdG9yIEhlbHBlciIpLCByLmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgbikgewogICAgICAgICAgICAgICAgbiA/IChuLml0ZXJhdG9yID0gZS5pdGVyYXRvciwgbi5uZXh0ID0gZS5uZXh0KSA6IG4gPSBlLCBuLnR5cGUgPSByID8geSA6IHYsIG4ubmV4dEhhbmRsZXIgPSB0LCBuLmNvdW50ZXIgPSAwLCBuLmRvbmUgPSAhMSwgZCh0aGlzLCBuKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlLnByb3RvdHlwZSA9IHIgPyBnIDogYiwgZQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNDYpLAogICAgICAgICAgICBvID0gZSgxNjUpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUsIGkpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBpID8gcihuKGUpWzBdLCBlWzFdKSA6IHIoZSkKICAgICAgICAgICAgfSBjYXRjaCAocikgewogICAgICAgICAgICAgICAgbyh0LCAidGhyb3ciLCByKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg3KSwKICAgICAgICAgICAgbyA9IGUoNDcpLAogICAgICAgICAgICBpID0gZSgyOSksCiAgICAgICAgICAgIGEgPSBlKDM4KSwKICAgICAgICAgICAgdSA9IGUoMzMpOwogICAgICAgIGEoZSA9IGUoMTg3KS5JdGVyYXRvclByb3RvdHlwZSwgdSA9IHUoImRpc3Bvc2UiKSkgfHwgbyhlLCB1LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gaSh0aGlzLCAicmV0dXJuIik7CiAgICAgICAgICAgIHQgJiYgbih0LCB0aGlzKQogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IGUoMTIyKSwKICAgICAgICAgICAgdSA9IGUoMTY4KSwKICAgICAgICAgICAgYyA9IGUoMTY5KSwKICAgICAgICAgICAgZiA9IGUoMjI0KSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByID0gdGhpcy5pdGVyYXRvciwgZSA9IHRoaXMubmV4dDsgdGhpcy5yZW1haW5pbmc7KQogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbWFpbmluZy0tLCB0ID0gaShvKGUsIHIpKSwgdGhpcy5kb25lID0gISF0LmRvbmUpIHJldHVybjsKICAgICAgICAgICAgICAgIGlmICh0ID0gaShvKGUsIHIpKSwgISh0aGlzLmRvbmUgPSAhIXQuZG9uZSkpIHJldHVybiB0LnZhbHVlCiAgICAgICAgICAgIH0pKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBkcm9wOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzKSwgdCA9IGModSgrdCkpLCBuZXcgZihhKHRoaXMpLCB7CiAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nOiB0CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDIwMiksCiAgICAgICAgICAgIGkgPSBlKDMwKSwKICAgICAgICAgICAgYSA9IGUoNDYpLAogICAgICAgICAgICB1ID0gZSgxMjIpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGV2ZXJ5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBhKHRoaXMpLCBpKHQpOwogICAgICAgICAgICAgICAgdmFyIHIgPSB1KHRoaXMpLAogICAgICAgICAgICAgICAgICAgIGUgPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICFvKHIsIChmdW5jdGlvbihyLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0KHIsIGUrKykpIHJldHVybiBuKCkKICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgSVNfUkVDT1JEOiAhMCwKICAgICAgICAgICAgICAgICAgICBJTlRFUlJVUFRFRDogITAKICAgICAgICAgICAgICAgIH0pLnN0b3BwZWQKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMzApLAogICAgICAgICAgICBhID0gZSg0NiksCiAgICAgICAgICAgIHUgPSBlKDEyMiksCiAgICAgICAgICAgIGMgPSBlKDIyNCksCiAgICAgICAgICAgIGYgPSBlKDIyNSksCiAgICAgICAgICAgIHMgPSBjKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIHIgPSB0aGlzLml0ZXJhdG9yLCBlID0gdGhpcy5wcmVkaWNhdGUsIG4gPSB0aGlzLm5leHQ7OykgewogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gYShvKG4sIHIpKSwgdGhpcy5kb25lID0gISF0LmRvbmUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAodCA9IHQudmFsdWUsIGYociwgZSwgW3QsIHRoaXMuY291bnRlcisrXSwgITApKSByZXR1cm4gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYSh0aGlzKSwgaSh0KSwgbmV3IHModSh0aGlzKSwgewogICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZTogdAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyMDIpLAogICAgICAgICAgICBpID0gZSgzMCksCiAgICAgICAgICAgIGEgPSBlKDQ2KSwKICAgICAgICAgICAgdSA9IGUoMTIyKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmaW5kOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBhKHRoaXMpLCBpKHQpOwogICAgICAgICAgICAgICAgdmFyIHIgPSB1KHRoaXMpLAogICAgICAgICAgICAgICAgICAgIGUgPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuIG8ociwgKGZ1bmN0aW9uKHIsIG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAodChyLCBlKyspKSByZXR1cm4gbihyKQogICAgICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgICAgICBJU19SRUNPUkQ6ICEwLAogICAgICAgICAgICAgICAgICAgIElOVEVSUlVQVEVEOiAhMAogICAgICAgICAgICAgICAgfSkucmVzdWx0CiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDMwKSwKICAgICAgICAgICAgYSA9IGUoNDYpLAogICAgICAgICAgICB1ID0gZSgxMjIpLAogICAgICAgICAgICBjID0gZSgyMzIpLAogICAgICAgICAgICBmID0gZSgyMjQpLAogICAgICAgICAgICBzID0gZSgxNjUpLAogICAgICAgICAgICBwID0gZigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByLCBlID0gdGhpcy5pdGVyYXRvciwgbiA9IHRoaXMubWFwcGVyOzspIHsKICAgICAgICAgICAgICAgICAgICBpZiAociA9IHRoaXMuaW5uZXIpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBhKG8oci5uZXh0LCByLml0ZXJhdG9yKSkpLmRvbmUpIHJldHVybiB0LnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlubmVyID0gbnVsbAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcyhlLCAidGhyb3ciLCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGEobyh0aGlzLm5leHQsIGUpKSwgdGhpcy5kb25lID0gISF0LmRvbmUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlubmVyID0gYyhuKHQudmFsdWUsIHRoaXMuY291bnRlcisrKSkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMoZSwgInRocm93IiwgdCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmbGF0TWFwOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYSh0aGlzKSwgaSh0KSwgbmV3IHAodSh0aGlzKSwgewogICAgICAgICAgICAgICAgICAgIG1hcHBlcjogdCwKICAgICAgICAgICAgICAgICAgICBpbm5lcjogbnVsbAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDcpLAogICAgICAgICAgICBpID0gbig0NiksCiAgICAgICAgICAgIGEgPSBuKDEyMiksCiAgICAgICAgICAgIHUgPSBuKDEyMCk7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICB2YXIgZSA9IGkocik7CiAgICAgICAgICAgIHIgPSB1KGUpOwogICAgICAgICAgICByZXR1cm4gYShpKHIgIT09IHQgPyBvKHIsIGUpIDogZSkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMjAyKSwKICAgICAgICAgICAgaSA9IGUoMzApLAogICAgICAgICAgICBhID0gZSg0NiksCiAgICAgICAgICAgIHUgPSBlKDEyMik7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZm9yRWFjaDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgYSh0aGlzKSwgaSh0KTsKICAgICAgICAgICAgICAgIHZhciByID0gdSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBlID0gMDsKICAgICAgICAgICAgICAgIG8ociwgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICB0KHIsIGUrKykKICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgSVNfUkVDT1JEOiAhMAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMzkpLAogICAgICAgICAgICBhID0gZSgyNCksCiAgICAgICAgICAgIHUgPSBlKDE4NykuSXRlcmF0b3JQcm90b3R5cGUsCiAgICAgICAgICAgIGMgPSBlKDIyNCksCiAgICAgICAgICAgIGYgPSBlKDIzMiksCiAgICAgICAgICAgIHMgPSBjKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKHRoaXMubmV4dCwgdGhpcy5pdGVyYXRvcikKICAgICAgICAgICAgfSksICEwKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBzdGF0OiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZnJvbTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgPSBmKCJzdHJpbmciID09IHR5cGVvZiB0ID8gaSh0KSA6IHQpLCBhKHUsIHQuaXRlcmF0b3IpID8gdC5pdGVyYXRvciA6IG5ldyBzKHQpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJJdGVyYXRvciIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGluZGV4ZWQ6IGUoMjIyKQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgbWFwOiBlKDIyMykKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMTg1KSwKICAgICAgICAgICAgaSA9IFR5cGVFcnJvcjsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgcmFuZ2U6IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgICAgIGlmICgibnVtYmVyIiA9PSB0eXBlb2YgdCkgcmV0dXJuIG5ldyBvKHQsIHIsIGUsICJudW1iZXIiLCAwLCAxKTsKICAgICAgICAgICAgICAgIGlmICgiYmlnaW50IiA9PSB0eXBlb2YgdCkgcmV0dXJuIG5ldyBvKHQsIHIsIGUsICJiaWdpbnQiLCBCaWdJbnQoMCksIEJpZ0ludCgxKSk7CiAgICAgICAgICAgICAgICB0aHJvdyBpKCJJbmNvcnJlY3QgSXRlcmF0b3IucmFuZ2UgYXJndW1lbnRzIikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigyMDIpLAogICAgICAgICAgICBhID0gbigzMCksCiAgICAgICAgICAgIHUgPSBuKDQ2KSwKICAgICAgICAgICAgYyA9IG4oMTIyKSwKICAgICAgICAgICAgZiA9IFR5cGVFcnJvcjsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICByZWR1Y2U6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHUodGhpcyksIGEocik7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGModGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGFyZ3VtZW50cy5sZW5ndGggPCAyLAogICAgICAgICAgICAgICAgICAgIG8gPSBuID8gdCA6IGFyZ3VtZW50c1sxXSwKICAgICAgICAgICAgICAgICAgICBzID0gMDsKICAgICAgICAgICAgICAgIGlmIChpKGUsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuID8gKG4gPSAhMSwgdCkgOiByKG8sIHQsIHMpLCBzKysKICAgICAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgICAgICBJU19SRUNPUkQ6ICEwCiAgICAgICAgICAgICAgICAgICAgfSksIG4pIHRocm93IGYoIlJlZHVjZSBvZiBlbXB0eSBpdGVyYXRvciB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTsKICAgICAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMjAyKSwKICAgICAgICAgICAgaSA9IGUoMzApLAogICAgICAgICAgICBhID0gZSg0NiksCiAgICAgICAgICAgIHUgPSBlKDEyMik7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgc29tZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgYSh0aGlzKSwgaSh0KTsKICAgICAgICAgICAgICAgIHZhciByID0gdSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBlID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiBvKHIsIChmdW5jdGlvbihyLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQociwgZSsrKSkgcmV0dXJuIG4oKQogICAgICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgICAgICBJU19SRUNPUkQ6ICEwLAogICAgICAgICAgICAgICAgICAgIElOVEVSUlVQVEVEOiAhMAogICAgICAgICAgICAgICAgfSkuc3RvcHBlZAogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDcpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBuKDEyMiksCiAgICAgICAgICAgIGMgPSBuKDE2OCksCiAgICAgICAgICAgIGYgPSBuKDE2OSksCiAgICAgICAgICAgIHMgPSBuKDIyNCksCiAgICAgICAgICAgIHAgPSBuKDE2NSksCiAgICAgICAgICAgIGwgPSBzKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5pdGVyYXRvcjsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbWFpbmluZy0tID8gKHIgPSBhKGkodGhpcy5uZXh0LCByKSksICh0aGlzLmRvbmUgPSAhIXIuZG9uZSkgPyB2b2lkIDAgOiByLnZhbHVlKSA6ICh0aGlzLmRvbmUgPSAhMCwgcChyLCAibm9ybWFsIiwgdCkpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSXRlcmF0b3IiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB0YWtlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYSh0aGlzKSwgdCA9IGYoYygrdCkpLCBuZXcgbCh1KHRoaXMpLCB7CiAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nOiB0CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDQ2KSwKICAgICAgICAgICAgaSA9IGUoMjAyKSwKICAgICAgICAgICAgYSA9IGUoMTIyKSwKICAgICAgICAgICAgdSA9IFtdLnB1c2g7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgdG9BcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IFtdOwogICAgICAgICAgICAgICAgcmV0dXJuIGkoYShvKHRoaXMpKSwgdSwgewogICAgICAgICAgICAgICAgICAgIHRoYXQ6IHQsCiAgICAgICAgICAgICAgICAgICAgSVNfUkVDT1JEOiAhMAogICAgICAgICAgICAgICAgfSksIHQKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg0NiksCiAgICAgICAgICAgIGkgPSBlKDExNSksCiAgICAgICAgICAgIGEgPSBlKDE3NyksCiAgICAgICAgICAgIHUgPSBlKDEyMik7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIkl0ZXJhdG9yIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgdG9Bc3luYzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGEodShuZXcgaSh1KG8odGhpcykpKSkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJKU09OIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogIWUoMjQ0KQogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNSYXdKU09OOiBlKDI0NSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUgPSBlKDYpLCB0LmV4cG9ydHMgPSAhZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gIjkwMDcxOTkyNTQ3NDA5OTMiLAogICAgICAgICAgICAgICAgciA9IEpTT04ucmF3SlNPTih0KTsKICAgICAgICAgICAgcmV0dXJuICFKU09OLmlzUmF3SlNPTihyKSB8fCBKU09OLnN0cmluZ2lmeShyKSAhPT0gdAogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxOSksCiAgICAgICAgICAgIG8gPSBlKDUxKS5nZXQ7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gISFuKHQpICYmICghISh0ID0gbyh0KSkgJiYgIlJhd0pTT04iID09PSB0LnR5cGUpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIGZ1bmN0aW9uIG8odCwgciwgZSwgbikgewogICAgICAgICAgICB0aGlzLnZhbHVlID0gdCwgdGhpcy5lbmQgPSByLCB0aGlzLnNvdXJjZSA9IGUsIHRoaXMubm9kZXMgPSBuCiAgICAgICAgfQogICAgICAgIHZhciBpID0gbigyKSwKICAgICAgICAgICAgYSA9IG4oNSksCiAgICAgICAgICAgIHUgPSBuKDMpLAogICAgICAgICAgICBjID0gbigyMyksCiAgICAgICAgICAgIGYgPSBuKDEzKSwKICAgICAgICAgICAgcyA9IG4oNyksCiAgICAgICAgICAgIHAgPSBuKDIwKSwKICAgICAgICAgICAgbCA9IG4oMTkpLAogICAgICAgICAgICBoID0gbig2OSksCiAgICAgICAgICAgIHYgPSBuKDM4KSwKICAgICAgICAgICAgeSA9IG4oODgpLAogICAgICAgICAgICBkID0gbig2MyksCiAgICAgICAgICAgIGcgPSBuKDE5OCksCiAgICAgICAgICAgIGIgPSBuKDYpLAogICAgICAgICAgICBtID0gbigyNDcpLAogICAgICAgICAgICB4ID0gbigyNiksCiAgICAgICAgICAgIHcgPSAobiA9IHUuSlNPTiwgdS5OdW1iZXIpLAogICAgICAgICAgICBTID0gdS5TeW50YXhFcnJvciwKICAgICAgICAgICAgQSA9IG4gJiYgbi5wYXJzZSwKICAgICAgICAgICAgRSA9IGMoIk9iamVjdCIsICJrZXlzIiksCiAgICAgICAgICAgIE8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLAogICAgICAgICAgICBSID0gZigiIi5jaGFyQXQpLAogICAgICAgICAgICBJID0gZigiIi5zbGljZSksCiAgICAgICAgICAgIGsgPSBmKC8uLy5leGVjKSwKICAgICAgICAgICAgVCA9IGYoW10ucHVzaCksCiAgICAgICAgICAgIE0gPSAvXlxkJC8sCiAgICAgICAgICAgIGogPSAvXlsxLTldJC8sCiAgICAgICAgICAgIFAgPSAvXigtfFxkKSQvLAogICAgICAgICAgICBEID0gL15bXHRcblxyIF0kLywKICAgICAgICAgICAgQyA9IGZ1bmN0aW9uKHIsIGUsIG4sIG8pIHsKICAgICAgICAgICAgICAgIHZhciBpLCBhLCB1LCBjLCBmLCBwID0gcltlXSwKICAgICAgICAgICAgICAgICAgICB5ID0gbyAmJiBwID09PSBvLnZhbHVlLAogICAgICAgICAgICAgICAgICAgIGcgPSB5ICYmICJzdHJpbmciID09IHR5cGVvZiBvLnNvdXJjZSA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBvLnNvdXJjZQogICAgICAgICAgICAgICAgICAgIH0gOiB7fTsKICAgICAgICAgICAgICAgIGlmIChsKHApKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBoKHApLAogICAgICAgICAgICAgICAgICAgICAgICBtID0geSA/IG8ubm9kZXMgOiBiID8gW10gOiB7fTsKICAgICAgICAgICAgICAgICAgICBpZiAoYikKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gbS5sZW5ndGgsIHUgPSBkKHApLCBjID0gMDsgYyA8IHU7IGMrKykgXyhwLCBjLCBDKHAsICIiICsgYywgbiwgYyA8IGkgPyBtW2NdIDogdCkpOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gRShwKSwgdSA9IGQoYSksIGMgPSAwOyBjIDwgdTsgYysrKSBmID0gYVtjXSwgXyhwLCBmLCBDKHAsIGYsIG4sIHYobSwgZikgPyBtW2ZdIDogdCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gcyhuLCByLCBlLCBwLCBnKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfID0gZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE8ociwgZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG8gJiYgIW8uY29uZmlndXJhYmxlKSByZXR1cm4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG4gPT09IHQgPyBkZWxldGUgcltlXSA6IGcociwgZSwgbikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTiA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHRoaXMuc291cmNlID0gdCwgdGhpcy5pbmRleCA9IHIKICAgICAgICAgICAgfTsKICAgICAgICBOLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgZm9yazogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOKHRoaXMuc291cmNlLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBwYXJzZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuc291cmNlLAogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnNraXAoRCwgdGhpcy5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuZm9yayhyKTsKICAgICAgICAgICAgICAgIHQgPSBSKHQsIHIpOwogICAgICAgICAgICAgICAgaWYgKGsoUCwgdCkpIHJldHVybiBlLm51bWJlcigpOwogICAgICAgICAgICAgICAgc3dpdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAieyI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm9iamVjdCgpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIlsiOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hcnJheSgpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJyInOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ0IjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUua2V5d29yZCghMCk7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiZiI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmtleXdvcmQoITEpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIm4iOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5rZXl3b3JkKG51bGwpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aHJvdyBTKCdVbmV4cGVjdGVkIGNoYXJhY3RlcjogIicgKyB0ICsgJyIgYXQ6ICcgKyByKQogICAgICAgICAgICB9LAogICAgICAgICAgICBub2RlOiBmdW5jdGlvbih0LCByLCBlLCBuLCBpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IG8ociwgbiwgdCA/IG51bGwgOiBJKHRoaXMuc291cmNlLCBlLCBuKSwgaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb2JqZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSB0aGlzLnNvdXJjZSwgciA9IHRoaXMuaW5kZXggKyAxLCBlID0gITEsIG4gPSB7fSwgbyA9IHt9OyByIDwgdC5sZW5ndGg7KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSB0aGlzLnVudGlsKFsnIicsICJ9Il0sIHIpLCAifSIgPT0gUih0LCByKSAmJiAhZSkgewogICAgICAgICAgICAgICAgICAgICAgICByKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5mb3JrKHIpLnN0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gaS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICByID0gaS5lbmQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSB0aGlzLnVudGlsKFsiOiJdLCByKSArIDEsIHIgPSB0aGlzLnNraXAoRCwgciksIGkgPSB0aGlzLmZvcmsocikucGFyc2UoKSwgZyhvLCBhLCBpKSwgZyhuLCBhLCBpLnZhbHVlKSwgciA9IHRoaXMudW50aWwoWyIsIiwgIn0iXSwgaS5lbmQpLCAiLCIgPT0gKGkgPSBSKHQsIHIpKSkgZSA9ICEwLCByKys7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIn0iID09IGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcisrOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUoMSwgbiwgdGhpcy5pbmRleCwgciwgbykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IHRoaXMuc291cmNlLCByID0gdGhpcy5pbmRleCArIDEsIGUgPSAhMSwgbiA9IFtdLCBvID0gW107IHIgPCB0Lmxlbmd0aDspIHsKICAgICAgICAgICAgICAgICAgICBpZiAociA9IHRoaXMuc2tpcChELCByKSwgIl0iID09IFIodCwgcikgJiYgIWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcisrOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuZm9yayhyKS5wYXJzZSgpOwogICAgICAgICAgICAgICAgICAgIGlmIChUKG8sIGkpLCBUKG4sIGkudmFsdWUpLCByID0gdGhpcy51bnRpbChbIiwiLCAiXSJdLCBpLmVuZCksICIsIiA9PSBSKHQsIHIpKSBlID0gITAsIHIrKzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgiXSIgPT0gUih0LCByKSkgewogICAgICAgICAgICAgICAgICAgICAgICByKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZSgxLCBuLCB0aGlzLmluZGV4LCByLCBvKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmluZGV4LAogICAgICAgICAgICAgICAgICAgIHIgPSBtKHRoaXMuc291cmNlLCB0aGlzLmluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKDAsIHIudmFsdWUsIHQsIHIuZW5kKQogICAgICAgICAgICB9LAogICAgICAgICAgICBudW1iZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5pbmRleCwKICAgICAgICAgICAgICAgICAgICBlID0gcjsKICAgICAgICAgICAgICAgIGlmICgiLSIgPT0gUih0LCBlKSAmJiBlKyssICIwIiA9PSBSKHQsIGUpKSBlKys7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWsoaiwgUih0LCBlKSkpIHRocm93IFMoIkZhaWxlZCB0byBwYXJzZSBudW1iZXIgYXQ6ICIgKyBlKTsKICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5za2lwKE0sICsrZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghKCIuIiA9PSBSKHQsIGUpICYmIChlID0gdGhpcy5za2lwKE0sICsrZSkpLCAiZSIgIT0gUih0LCBlKSAmJiAiRSIgIT0gUih0LCBlKSB8fCAoIisiICE9IFIodCwgKytlKSAmJiAiLSIgIT0gUih0LCBlKSB8fCBlKyssIGUgIT0gKGUgPSB0aGlzLnNraXAoTSwgZSkpKSkpIHRocm93IFMoIkZhaWxlZCB0byBwYXJzZSBudW1iZXIncyBleHBvbmVudCB2YWx1ZSBhdDogIiArIGUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZSgwLCB3KEkodCwgciwgZSkpLCByLCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBrZXl3b3JkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9ICIiICsgdCwKICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5pbmRleCwKICAgICAgICAgICAgICAgICAgICBuID0gZSArIHIubGVuZ3RoOwogICAgICAgICAgICAgICAgaWYgKEkodGhpcy5zb3VyY2UsIGUsIG4pICE9IHIpIHRocm93IFMoIkZhaWxlZCB0byBwYXJzZSB2YWx1ZSBhdDogIiArIGUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZSgwLCB0LCBlLCBuKQogICAgICAgICAgICB9LAogICAgICAgICAgICBza2lwOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcy5zb3VyY2U7IHIgPCBlLmxlbmd0aCAmJiBrKHQsIFIoZSwgcikpOyByKyspOwogICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdW50aWw6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHIgPSB0aGlzLnNraXAoRCwgcik7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gUih0aGlzLnNvdXJjZSwgciksIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykKICAgICAgICAgICAgICAgICAgICBpZiAodFtuXSA9PSBlKSByZXR1cm4gcjsKICAgICAgICAgICAgICAgIHRocm93IFMoJ1VuZXhwZWN0ZWQgY2hhcmFjdGVyOiAiJyArIGUgKyAnIiBhdDogJyArIHIpCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGYgPSBiKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQsIHIgPSAiOTAwNzE5OTI1NDc0MDk5MyI7CiAgICAgICAgICAgIHJldHVybiBBKHIsIChmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICB0ID0gbi5zb3VyY2UKICAgICAgICAgICAgfSkpLCB0ICE9PSByCiAgICAgICAgfSkpOwogICAgICAgIHZhciBGID0geCAmJiAhYigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAxIC8gQSgiLTAgXHQiKSAhPSAtMSAvIDAKICAgICAgICB9KSk7CiAgICAgICAgaSh7CiAgICAgICAgICAgIHRhcmdldDogIkpTT04iLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiBmCiAgICAgICAgfSwgewogICAgICAgICAgICBwYXJzZTogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIEYgJiYgIXAocikgPyBBKHQpIDogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIHQgPSB5KHQpOwogICAgICAgICAgICAgICAgICAgIHZhciBlLCBuID0gKGUgPSBuZXcgTih0LCAwLCAiIikpLnBhcnNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGlmICgoZSA9IGUuc2tpcChELCBuLmVuZCkpIDwgdC5sZW5ndGgpIHRocm93IFMoJ1VuZXhwZWN0ZWQgZXh0cmEgY2hhcmFjdGVyOiAiJyArIFIodCwgZSkgKyAnIiBhZnRlciB0aGUgcGFyc2VkIGRhdGEgYXQ6ICcgKyBlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcChyKSA/IEMoewogICAgICAgICAgICAgICAgICAgICAgICAiIjogbwogICAgICAgICAgICAgICAgICAgIH0sICIiLCByLCBuKSA6IG8KICAgICAgICAgICAgICAgIH0odCwgcikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzKSwKICAgICAgICAgICAgbyA9IGUoMzgpLAogICAgICAgICAgICBpID0gU3ludGF4RXJyb3IsCiAgICAgICAgICAgIGEgPSBwYXJzZUludCwKICAgICAgICAgICAgdSA9IFN0cmluZy5mcm9tQ2hhckNvZGUsCiAgICAgICAgICAgIGMgPSBuKCIiLmNoYXJBdCksCiAgICAgICAgICAgIGYgPSBuKCIiLnNsaWNlKSwKICAgICAgICAgICAgcyA9IG4oLy4vLmV4ZWMpLAogICAgICAgICAgICBwID0gewogICAgICAgICAgICAgICAgJ1xcIic6ICciJywKICAgICAgICAgICAgICAgICJcXFxcIjogIlxcIiwKICAgICAgICAgICAgICAgICJcXC8iOiAiLyIsCiAgICAgICAgICAgICAgICAiXFxiIjogIlxiIiwKICAgICAgICAgICAgICAgICJcXGYiOiAiXGYiLAogICAgICAgICAgICAgICAgIlxcbiI6ICJcbiIsCiAgICAgICAgICAgICAgICAiXFxyIjogIlxyIiwKICAgICAgICAgICAgICAgICJcXHQiOiAiXHQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGwgPSAvXltcZGEtZl17NH0kL2ksCiAgICAgICAgICAgIGggPSAvXltcdTAwMDAtXHUwMDFGXSQvOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9ICEwLCBuID0gIiI7IHIgPCB0Lmxlbmd0aDspIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gYyh0LCByKTsKICAgICAgICAgICAgICAgIGlmICgiXFwiID09IHYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGYodCwgciwgciArIDIpOwogICAgICAgICAgICAgICAgICAgIGlmIChvKHAsIHkpKSBuICs9IHBbeV0sIHIgKz0gMjsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJcXHUiICE9IHkpIHRocm93IGkoJ1Vua25vd24gZXNjYXBlIHNlcXVlbmNlOiAiJyArIHkgKyAnIicpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeSA9IGYodCwgciArPSAyLCByICsgNCksICFzKGwsIHkpKSB0aHJvdyBpKCJCYWQgVW5pY29kZSBlc2NhcGUgYXQ6ICIgKyByKTsKICAgICAgICAgICAgICAgICAgICAgICAgbiArPSB1KGEoeSwgMTYpKSwgciArPSA0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJyInID09IHYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZSA9ICExLCByKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChzKGgsIHYpKSB0aHJvdyBpKCJCYWQgY29udHJvbCBjaGFyYWN0ZXIgaW4gc3RyaW5nIGxpdGVyYWwgYXQ6ICIgKyByKTsKICAgICAgICAgICAgICAgICAgICBuICs9IHYsIHIrKwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChlKSB0aHJvdyBpKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGF0OiAiICsgcik7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgIGVuZDogcgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMjAxKSwKICAgICAgICAgICAgaSA9IGUoMjQ0KSwKICAgICAgICAgICAgYSA9IGUoMjMpLAogICAgICAgICAgICB1ID0gZSg3KSwKICAgICAgICAgICAgYyA9IGUoMTMpLAogICAgICAgICAgICBmID0gZSgyMCksCiAgICAgICAgICAgIHMgPSBlKDI0NSksCiAgICAgICAgICAgIHAgPSBlKDg4KSwKICAgICAgICAgICAgbCA9IGUoMTk4KSwKICAgICAgICAgICAgaCA9IGUoMjQ3KSwKICAgICAgICAgICAgdiA9IGUoMjQ5KSwKICAgICAgICAgICAgeSA9IGUoNDApLAogICAgICAgICAgICBkID0gZSg1MSkuc2V0LAogICAgICAgICAgICBnID0gU3RyaW5nLAogICAgICAgICAgICBiID0gU3ludGF4RXJyb3IsCiAgICAgICAgICAgIG0gPSBhKCJKU09OIiwgInBhcnNlIiksCiAgICAgICAgICAgIHggPSBhKCJKU09OIiwgInN0cmluZ2lmeSIpLAogICAgICAgICAgICB3ID0gYSgiT2JqZWN0IiwgImNyZWF0ZSIpLAogICAgICAgICAgICBTID0gYSgiT2JqZWN0IiwgImZyZWV6ZSIpLAogICAgICAgICAgICBBID0gYygiIi5jaGFyQXQpLAogICAgICAgICAgICBFID0gYygiIi5zbGljZSksCiAgICAgICAgICAgIE8gPSBjKC8uLy5leGVjKSwKICAgICAgICAgICAgUiA9IGMoW10ucHVzaCksCiAgICAgICAgICAgIEkgPSB5KCksCiAgICAgICAgICAgIGsgPSBJLmxlbmd0aCwKICAgICAgICAgICAgVCA9ICJVbmFjY2VwdGFibGUgYXMgcmF3IEpTT04iLAogICAgICAgICAgICBNID0gL15bXHRcblxyIF0kLzsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSlNPTiIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICFpCiAgICAgICAgfSwgewogICAgICAgICAgICByYXdKU09OOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IHAodCk7CiAgICAgICAgICAgICAgICBpZiAoIiIgPT0gciB8fCBPKE0sIEEociwgMCkpIHx8IE8oTSwgQShyLCByLmxlbmd0aCAtIDEpKSkgdGhyb3cgYihUKTsKICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YodCA9IG0ocikpICYmIG51bGwgIT09IHQpIHRocm93IGIoVCk7CiAgICAgICAgICAgICAgICByZXR1cm4gdCA9IHcobnVsbCksIGQodCwgewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICJSYXdKU09OIgogICAgICAgICAgICAgICAgfSksIGwodCwgInJhd0pTT04iLCByKSwgbyA/IFModCkgOiB0CiAgICAgICAgICAgIH0KICAgICAgICB9KSwgeCAmJiBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiSlNPTiIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBhcml0eTogMywKICAgICAgICAgICAgZm9yY2VkOiAhaQogICAgICAgIH0sIHsKICAgICAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHYociksCiAgICAgICAgICAgICAgICAgICAgbyA9IFtdLAogICAgICAgICAgICAgICAgICAgIGkgPSB4KHQsIChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByID0gZihuKSA/IHUobiwgdGhpcywgZyh0KSwgcikgOiByLCBzKHIpID8gSSArIChSKG8sIHIucmF3SlNPTikgLSAxKSA6IHIKICAgICAgICAgICAgICAgICAgICB9KSwgZSk7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIGkpIHJldHVybiBpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9ICIiLCBjID0gaS5sZW5ndGgsIHAgPSAwOyBwIDwgYzsgcCsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwsIHksIGQgPSBBKGksIHApOwogICAgICAgICAgICAgICAgICAgICciJyA9PSBkID8gKGwgPSBoKGksICsrcCkuZW5kIC0gMSwgeSA9IEUoaSwgcCwgbCksIGEgKz0gRSh5LCAwLCBrKSA9PSBJID8gb1tFKHksIGspXSA6ICciJyArIHkgKyAnIicsIHAgPSBsKSA6IGEgKz0gZAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzKSwKICAgICAgICAgICAgbyA9IGUoNjkpLAogICAgICAgICAgICBpID0gZSgyMCksCiAgICAgICAgICAgIGEgPSBlKDE0KSwKICAgICAgICAgICAgdSA9IGUoODgpLAogICAgICAgICAgICBjID0gbihbXS5wdXNoKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChpKHQpKSByZXR1cm4gdDsKICAgICAgICAgICAgaWYgKG8odCkpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSB0Lmxlbmd0aCwgZSA9IFtdLCBuID0gMDsgbiA8IHI7IG4rKykgewogICAgICAgICAgICAgICAgICAgIHZhciBmID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgZiA/IGMoZSwgZikgOiAibnVtYmVyIiAhPSB0eXBlb2YgZiAmJiAiTnVtYmVyIiAhPSBhKGYpICYmICJTdHJpbmciICE9IGEoZikgfHwgYyhlLCB1KGYpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHMgPSBlLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICBwID0gITA7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIGlmIChwKSByZXR1cm4gcCA9ICExLCByOwogICAgICAgICAgICAgICAgICAgIGlmIChvKHRoaXMpKSByZXR1cm4gcjsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHM7IG4rKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbbl0gPT09IHQpIHJldHVybiByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyNTEpLAogICAgICAgICAgICBpID0gZSgxMzYpLnJlbW92ZTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZGVsZXRlQWxsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIHIgPSBvKHRoaXMpLCBlID0gITAsIG4gPSAwLCBhID0gYXJndW1lbnRzLmxlbmd0aDsgbiA8IGE7IG4rKykgdCA9IGkociwgYXJndW1lbnRzW25dKSwgZSA9IGUgJiYgdDsKICAgICAgICAgICAgICAgIHJldHVybiAhIWUKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDEzNikuaGFzOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG4odCksIHQKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyNTEpLAogICAgICAgICAgICBpID0gKGUgPSBlKDEzNikpLmdldCwKICAgICAgICAgICAgYSA9IGUuaGFzLAogICAgICAgICAgICB1ID0gZS5zZXQ7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGVtcGxhY2U6IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHZhciBlLCBuID0gbyh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiBhKG4sIHQpID8gKGUgPSBpKG4sIHQpLCAidXBkYXRlIiBpbiByICYmIChlID0gci51cGRhdGUoZSwgdCwgbiksIHUobiwgdCwgZSkpLCBlKSA6IChyID0gci5pbnNlcnQodCwgbiksIHUobiwgdCwgciksIHIpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTExKSwKICAgICAgICAgICAgYSA9IG4oMjUxKSwKICAgICAgICAgICAgdSA9IG4oMTQzKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZXZlcnk6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gaShyLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpOwogICAgICAgICAgICAgICAgcmV0dXJuICExICE9PSB1KGUsIChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFuKHQsIHIsIGUpKSByZXR1cm4gITEKICAgICAgICAgICAgICAgIH0pLCAhMCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxMTEpLAogICAgICAgICAgICBhID0gbigyNTEpLAogICAgICAgICAgICB1ID0gbigxMzYpLAogICAgICAgICAgICBjID0gbigxNDMpLAogICAgICAgICAgICBmID0gdS5NYXAsCiAgICAgICAgICAgIHMgPSB1LnNldDsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGkociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KSwKICAgICAgICAgICAgICAgICAgICBvID0gbmV3IGY7CiAgICAgICAgICAgICAgICByZXR1cm4gYyhlLCAoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIG4odCwgciwgZSkgJiYgcyhvLCByLCB0KQogICAgICAgICAgICAgICAgfSkpLCBvCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTExKSwKICAgICAgICAgICAgYSA9IG4oMjUxKSwKICAgICAgICAgICAgdSA9IG4oMTQzKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmluZDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIG4gPSBpKHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCk7CiAgICAgICAgICAgICAgICByID0gdShlLCAoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIGlmIChuKHQsIHIsIGUpKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCAhMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gciAmJiByLnZhbHVlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTExKSwKICAgICAgICAgICAgYSA9IG4oMjUxKSwKICAgICAgICAgICAgdSA9IG4oMTQzKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZmluZEtleTogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIG4gPSBpKHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCk7CiAgICAgICAgICAgICAgICByID0gdShlLCAoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIGlmIChuKHQsIHIsIGUpKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgITApOwogICAgICAgICAgICAgICAgcmV0dXJuIHIgJiYgci5rZXkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmcm9tOiBlKDI1OCkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigxMTEpLAogICAgICAgICAgICBpID0gbig3KSwKICAgICAgICAgICAgYSA9IG4oMzApLAogICAgICAgICAgICB1ID0gbigyNTkpLAogICAgICAgICAgICBjID0gbigxNiksCiAgICAgICAgICAgIGYgPSBuKDIwMiksCiAgICAgICAgICAgIHMgPSBbXS5wdXNoOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGUsIG4sIHAsIGwsIGggPSBhcmd1bWVudHMubGVuZ3RoLAogICAgICAgICAgICAgICAgdiA9IDEgPCBoID8gYXJndW1lbnRzWzFdIDogdDsKICAgICAgICAgICAgcmV0dXJuIHUodGhpcyksIChlID0gdiAhPT0gdCkgJiYgYSh2KSwgYyhyKSA/IG5ldyB0aGlzIDogKG4gPSBbXSwgZSA/IChwID0gMCwgbCA9IG8odiwgMiA8IGggPyBhcmd1bWVudHNbMl0gOiB0KSwgZihyLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaShzLCBuLCBsKHQsIHArKykpCiAgICAgICAgICAgIH0pKSkgOiBmKHIsIHMsIHsKICAgICAgICAgICAgICAgIHRoYXQ6IG4KICAgICAgICAgICAgfSksIG5ldyB0aGlzKG4pKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTEzKSwKICAgICAgICAgICAgbyA9IGUoMzEpLAogICAgICAgICAgICBpID0gVHlwZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKG4odCkpIHJldHVybiB0OwogICAgICAgICAgICB0aHJvdyBpKG8odCkgKyAiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIikKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgxMyksCiAgICAgICAgICAgIGkgPSBlKDMwKSwKICAgICAgICAgICAgYSA9IGUoMTUpLAogICAgICAgICAgICB1ID0gZSgyMDIpLAogICAgICAgICAgICBjID0gKGUgPSBlKDEzNikpLk1hcCwKICAgICAgICAgICAgZiA9IGUuaGFzLAogICAgICAgICAgICBzID0gZS5nZXQsCiAgICAgICAgICAgIHAgPSBlLnNldCwKICAgICAgICAgICAgbCA9IG8oW10ucHVzaCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBncm91cEJ5OiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICBhKHQpLCBpKHIpOwogICAgICAgICAgICAgICAgdmFyIGUgPSBuZXcgYywKICAgICAgICAgICAgICAgICAgICBuID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiB1KHQsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSByKHQsIG4rKyk7CiAgICAgICAgICAgICAgICAgICAgZihlLCBvKSA/IGwocyhlLCBvKSwgdCkgOiBwKGUsIG8sIFt0XSkKICAgICAgICAgICAgICAgIH0pKSwgZQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDI2MiksCiAgICAgICAgICAgIGkgPSBlKDI1MSksCiAgICAgICAgICAgIGEgPSBlKDE0Myk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGluY2x1ZGVzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IGEoaSh0aGlzKSwgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobyhyLCB0KSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9KSwgITApCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgcmV0dXJuIHQgPT09IHIgfHwgdCAhPSB0ICYmIHIgIT0gcgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDcpLAogICAgICAgICAgICBpID0gZSgyMDIpLAogICAgICAgICAgICBhID0gZSgyMCksCiAgICAgICAgICAgIHUgPSBlKDMwKSwKICAgICAgICAgICAgYyA9IGUoMTM2KS5NYXA7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBrZXlCeTogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBuZXcoYSh0aGlzKSA/IHRoaXMgOiBjKTsKICAgICAgICAgICAgICAgIHUocik7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHUoZS5zZXQpOwogICAgICAgICAgICAgICAgcmV0dXJuIGkodCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBvKG4sIGUsIHIodCksIHQpCiAgICAgICAgICAgICAgICB9KSksIGUKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyNTEpLAogICAgICAgICAgICBpID0gZSgxNDMpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBrZXlPZjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBpKG8odGhpcyksIChmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHQpIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCAhMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gciAmJiByLmtleQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDI1MSksCiAgICAgICAgICAgIHUgPSBuKDEzNiksCiAgICAgICAgICAgIGMgPSBuKDE0MyksCiAgICAgICAgICAgIGYgPSB1Lk1hcCwKICAgICAgICAgICAgcyA9IHUuc2V0OwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBtYXBLZXlzOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGkociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KSwKICAgICAgICAgICAgICAgICAgICBvID0gbmV3IGY7CiAgICAgICAgICAgICAgICByZXR1cm4gYyhlLCAoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIHMobywgbih0LCByLCBlKSwgdCkKICAgICAgICAgICAgICAgIH0pKSwgbwogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDI1MSksCiAgICAgICAgICAgIHUgPSBuKDEzNiksCiAgICAgICAgICAgIGMgPSBuKDE0MyksCiAgICAgICAgICAgIGYgPSB1Lk1hcCwKICAgICAgICAgICAgcyA9IHUuc2V0OwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBtYXBWYWx1ZXM6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gaShyLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuZXcgZjsKICAgICAgICAgICAgICAgIHJldHVybiBjKGUsIChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgcyhvLCByLCBuKHQsIHIsIGUpKQogICAgICAgICAgICAgICAgfSkpLCBvCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMjUxKSwKICAgICAgICAgICAgaSA9IGUoMjAyKSwKICAgICAgICAgICAgYSA9IGUoMTM2KS5zZXQ7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGFyaXR5OiAxLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBtZXJnZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IG8odGhpcyksIGUgPSBhcmd1bWVudHMubGVuZ3RoLCBuID0gMDsgbiA8IGU7KSBpKGFyZ3VtZW50c1tuKytdLCAoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIGEociwgdCwgZSkKICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgQVNfRU5UUklFUzogITAKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgeyBvZjogZSgyNjkpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjcwKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzKG4oYXJndW1lbnRzKSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoMTMpLCB0LmV4cG9ydHMgPSBlKFtdLnNsaWNlKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMzApLAogICAgICAgICAgICBhID0gbigyNTEpLAogICAgICAgICAgICB1ID0gbigxNDMpLAogICAgICAgICAgICBjID0gVHlwZUVycm9yOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICByZWR1Y2U6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA8IDIsCiAgICAgICAgICAgICAgICAgICAgbyA9IG4gPyB0IDogYXJndW1lbnRzWzFdOwogICAgICAgICAgICAgICAgaWYgKGkociksIHUoZSwgKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4gPyAobiA9ICExLCB0KSA6IHIobywgdCwgaSwgZSkKICAgICAgICAgICAgICAgICAgICB9KSksIG4pIHRocm93IGMoIlJlZHVjZSBvZiBlbXB0eSBtYXAgd2l0aCBubyBpbml0aWFsIHZhbHVlIik7CiAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDI1MSksCiAgICAgICAgICAgIHUgPSBuKDE0Myk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHNvbWU6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gaShyLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpOwogICAgICAgICAgICAgICAgcmV0dXJuICEwID09PSB1KGUsIChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4odCwgciwgZSkpIHJldHVybiAhMAogICAgICAgICAgICAgICAgfSksICEwKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDMwKSwKICAgICAgICAgICAgYSA9IG4oMjUxKSwKICAgICAgICAgICAgdSA9IChuID0gbigxMzYpLCBUeXBlRXJyb3IpLAogICAgICAgICAgICBjID0gbi5nZXQsCiAgICAgICAgICAgIGYgPSBuLmhhcywKICAgICAgICAgICAgcyA9IG4uc2V0OwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBvID0gYXJndW1lbnRzLmxlbmd0aDsKICAgICAgICAgICAgICAgIGkoZSk7CiAgICAgICAgICAgICAgICB2YXIgcCA9IGYobiwgcik7CiAgICAgICAgICAgICAgICBpZiAoIXAgJiYgbyA8IDMpIHRocm93IHUoIlVwZGF0aW5nIGFic2VudCB2YWx1ZSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIG8gPSBwID8gYyhuLCByKSA6IGkoMiA8IG8gPyBhcmd1bWVudHNbMl0gOiB0KShyLCBuKSwgcyhuLCByLCBlKG8sIHIsIG4pKSwgbgogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDIpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgbmFtZTogInVwc2VydCIsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHVwZGF0ZU9ySW5zZXJ0OiBlKDI3NSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig3KSwKICAgICAgICAgICAgaSA9IG4oMzApLAogICAgICAgICAgICBhID0gbigyMCksCiAgICAgICAgICAgIHUgPSBuKDQ2KSwKICAgICAgICAgICAgYyA9IFR5cGVFcnJvcjsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgIHZhciBuLCBmID0gdSh0aGlzKSwKICAgICAgICAgICAgICAgIHMgPSBpKGYuZ2V0KSwKICAgICAgICAgICAgICAgIHAgPSBpKGYuaGFzKSwKICAgICAgICAgICAgICAgIGwgPSBpKGYuc2V0KSwKICAgICAgICAgICAgICAgIGggPSAyIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1syXSA6IHQ7CiAgICAgICAgICAgIGlmICghYShlKSAmJiAhYShoKSkgdGhyb3cgYygiQXQgbGVhc3Qgb25lIGNhbGxiYWNrIHJlcXVpcmVkIik7CiAgICAgICAgICAgIHJldHVybiBvKHAsIGYsIHIpID8gKG4gPSBvKHMsIGYsIHIpLCBhKGUpICYmIChuID0gZShuKSwgbyhsLCBmLCByLCBuKSkpIDogYShoKSAmJiAobiA9IGgoKSwgbyhsLCBmLCByLCBuKSksIG4KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHVwc2VydDogZSgyNzUpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlID0gZSgyKTsKICAgICAgICB2YXIgbiA9IE1hdGgubWluLAogICAgICAgICAgICBvID0gTWF0aC5tYXg7CiAgICAgICAgZSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hdGgiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgY2xhbXA6IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuKGUsIG8ociwgdCkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIG5vbkNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIG5vbldyaXRhYmxlOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgREVHX1BFUl9SQUQ6IE1hdGguUEkgLyAxODAKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUgPSBlKDIpOwogICAgICAgIHZhciBuID0gMTgwIC8gTWF0aC5QSTsKICAgICAgICBlKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWF0aCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBkZWdyZWVzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCAqIG4KICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyODEpLAogICAgICAgICAgICBpID0gZSgyODIpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZzY2FsZTogZnVuY3Rpb24odCwgciwgZSwgbiwgYSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkobyh0LCByLCBlLCBuLCBhKSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgdC5leHBvcnRzID0gTWF0aC5zY2FsZSB8fCBmdW5jdGlvbih0LCByLCBlLCBuLCBvKSB7CiAgICAgICAgICAgIHJldHVybiByID0gK3IsIGUgPSArZSwgbiA9ICtuLCBvID0gK28sICh0ID0gK3QpICE9IHQgfHwgciAhPSByIHx8IGUgIT0gZSB8fCBuICE9IG4gfHwgbyAhPSBvID8gTmFOIDogdCA9PSAxIC8gMCB8fCB0ID09IC0xIC8gMCA/IHQgOiAodCAtIHIpICogKG8gLSBuKSAvIChlIC0gcikgKyBuCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyODMpLAogICAgICAgICAgICBvID0gTWF0aC5hYnMsCiAgICAgICAgICAgIGkgPSAoZSA9IE1hdGgucG93KSgyLCAtNTIpLAogICAgICAgICAgICBhID0gZSgyLCAtMjMpLAogICAgICAgICAgICB1ID0gZSgyLCAxMjcpICogKDIgLSBhKSwKICAgICAgICAgICAgYyA9IGUoMiwgLTEyNik7CiAgICAgICAgdC5leHBvcnRzID0gTWF0aC5mcm91bmQgfHwgZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgciA9ICt0LAogICAgICAgICAgICAgICAgZSA9IG8ocik7CiAgICAgICAgICAgIHQgPSBuKHIpOwogICAgICAgICAgICByZXR1cm4gZSA8IGMgPyB0ICogKGUgLyBjIC8gYSArIDEgLyBpIC0gMSAvIGkpICogYyAqIGEgOiB1IDwgKGUgPSAociA9ICgxICsgYSAvIGkpICogZSkgLSAociAtIGUpKSB8fCBlICE9IGUgPyB0ICogKDEgLyAwKSA6IHQgKiBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHQuZXhwb3J0cyA9IE1hdGguc2lnbiB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAwID09ICh0ID0gK3QpIHx8IHQgIT0gdCA/IHQgOiB0IDwgMCA/IC0xIDogMQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDIpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWF0aCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpYWRkaDogZnVuY3Rpb24odCwgciwgZSwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIChyID4+PiAwKSArIChuID4+PiAwKSArICgoKHQgPj4+PSAwKSAmIChlID4+Pj0gMCkgfCAodCB8IGUpICYgfih0ICsgZSA+Pj4gMCkpID4+PiAzMSkgfCAwCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGltdWxoOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbjsKICAgICAgICAgICAgICAgIHQgPSA2NTUzNSAmIChlID0gK3QpLCByID0gNjU1MzUgJiAobiA9ICtyKTsKICAgICAgICAgICAgICAgIHJldHVybiAoZSA9IGUgPj4gMTYpICogKG4gPSBuID4+IDE2KSArICgociA9IChlICogciA+Pj4gMCkgKyAodCAqIHIgPj4+IDE2KSkgPj4gMTYpICsgKCh0ICogbiA+Pj4gMCkgKyAoNjU1MzUgJiByKSA+PiAxNikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hdGgiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaXN1Ymg6IGZ1bmN0aW9uKHQsIHIsIGUsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiAociA+Pj4gMCkgLSAobiA+Pj4gMCkgLSAoKH4odCA+Pj49IDApICYgKGUgPj4+PSAwKSB8IH4odCBeIGUpICYgdCAtIGUgPj4+IDApID4+PiAzMSkgfCAwCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIG5vbkNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIG5vbldyaXRhYmxlOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgUkFEX1BFUl9ERUc6IDE4MCAvIE1hdGguUEkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUgPSBlKDIpOwogICAgICAgIHZhciBuID0gTWF0aC5QSSAvIDE4MDsKICAgICAgICBlKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWF0aCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICByYWRpYW5zOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCAqIG4KICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIk1hdGgiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgc2NhbGU6IGUoMjgxKQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg0NiksCiAgICAgICAgICAgIGkgPSBlKDI5MSksCiAgICAgICAgICAgIGEgPSBlKDE4NiksCiAgICAgICAgICAgIHUgPSBlKDExOCksCiAgICAgICAgICAgIGMgPSBlKDUxKSwKICAgICAgICAgICAgZiA9IChlID0gIlNlZWRlZCBSYW5kb20iKSArICIgR2VuZXJhdG9yIiwKICAgICAgICAgICAgcyA9IGMuc2V0LAogICAgICAgICAgICBwID0gYy5nZXR0ZXJGb3IoZiksCiAgICAgICAgICAgIGwgPSBUeXBlRXJyb3IsCiAgICAgICAgICAgIGggPSBhKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBzKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiBmLAogICAgICAgICAgICAgICAgICAgIHNlZWQ6IHQgJSAyMTQ3NDgzNjQ3CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSwgZSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAodCA9IHAodGhpcykpLnNlZWQgPSAoMTEwMzUxNTI0NSAqIHQuc2VlZCArIDEyMzQ1KSAlIDIxNDc0ODM2NDc7CiAgICAgICAgICAgICAgICByZXR1cm4gdSgoMTA3Mzc0MTgyMyAmIHQpIC8gMTA3Mzc0MTgyMywgITEpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTWF0aCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBzZWVkZWRQUk5HOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAodCA9IG8odCkuc2VlZCwgIWkodCkpIHRocm93IGwoJ01hdGguc2VlZGVkUFJORygpIGFyZ3VtZW50IHNob3VsZCBoYXZlIGEgInNlZWQiIGZpZWxkIHdpdGggYSBmaW5pdGUgdmFsdWUuJyk7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGgodCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMpLmlzRmluaXRlOwogICAgICAgIHQuZXhwb3J0cyA9IE51bWJlci5pc0Zpbml0ZSB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiAibnVtYmVyIiA9PSB0eXBlb2YgdCAmJiBuKHQpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHNpZ25iaXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAodCA9ICt0KSA9PSB0ICYmIDAgPT0gdCA/IDEgLyB0ID09IC0xIC8gMCA6IHQgPCAwCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJNYXRoIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHVtdWxoOiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbjsKICAgICAgICAgICAgICAgIHQgPSA2NTUzNSAmIChlID0gK3QpLCByID0gNjU1MzUgJiAobiA9ICtyKTsKICAgICAgICAgICAgICAgIHJldHVybiAoZSA9IGUgPj4+IDE2KSAqIChuID0gbiA+Pj4gMTYpICsgKChyID0gKGUgKiByID4+PiAwKSArICh0ICogciA+Pj4gMTYpKSA+Pj4gMTYpICsgKCh0ICogbiA+Pj4gMCkgKyAoNjU1MzUgJiByKSA+Pj4gMTYpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTMpLAogICAgICAgICAgICBhID0gbig2MSksCiAgICAgICAgICAgIHUgPSBuKDI5NSksCiAgICAgICAgICAgIGMgPSAiSW52YWxpZCBudW1iZXIgcmVwcmVzZW50YXRpb24iLAogICAgICAgICAgICBmID0gUmFuZ2VFcnJvciwKICAgICAgICAgICAgcyA9IFN5bnRheEVycm9yLAogICAgICAgICAgICBwID0gVHlwZUVycm9yLAogICAgICAgICAgICBsID0gL15bXGRhLXpdKyQvLAogICAgICAgICAgICBoID0gaSgiIi5jaGFyQXQpLAogICAgICAgICAgICB2ID0gaShsLmV4ZWMpLAogICAgICAgICAgICB5ID0gaSgxLi50b1N0cmluZyksCiAgICAgICAgICAgIGQgPSBpKCIiLnNsaWNlKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiTnVtYmVyIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZyb21TdHJpbmc6IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuLCBvID0gMTsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgcikgdGhyb3cgcChjKTsKICAgICAgICAgICAgICAgIGlmICghci5sZW5ndGgpIHRocm93IHMoYyk7CiAgICAgICAgICAgICAgICBpZiAoIi0iID09IGgociwgMCkgJiYgKG8gPSAtMSwgIShyID0gZChyLCAxKSkubGVuZ3RoKSkgdGhyb3cgcyhjKTsKICAgICAgICAgICAgICAgIGlmICgoZSA9IGUgPT09IHQgPyAxMCA6IGEoZSkpIDwgMiB8fCAzNiA8IGUpIHRocm93IGYoIkludmFsaWQgcmFkaXgiKTsKICAgICAgICAgICAgICAgIGlmICghdihsLCByKSB8fCB5KG4gPSB1KHIsIGUpLCBlKSAhPT0gcikgdGhyb3cgcyhjKTsKICAgICAgICAgICAgICAgIHJldHVybiBvICogbgogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBlKDYpLAogICAgICAgICAgICBpID0gZSgxMyksCiAgICAgICAgICAgIGEgPSBlKDg4KSwKICAgICAgICAgICAgdSA9IGUoMjk2KS50cmltLAogICAgICAgICAgICBjID0gKGUgPSBlKDI5NyksIG4ucGFyc2VJbnQpLAogICAgICAgICAgICBmID0gKG4gPSBuLlN5bWJvbCkgJiYgbi5pdGVyYXRvciwKICAgICAgICAgICAgcyA9IC9eWystXT8weC9pLAogICAgICAgICAgICBwID0gaShzLmV4ZWMpOwogICAgICAgIG8gPSA4ICE9PSBjKGUgKyAiMDgiKSB8fCAyMiAhPT0gYyhlICsgIjB4MTYiKSB8fCBmICYmICFvKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgYyhPYmplY3QoZikpCiAgICAgICAgfSkpOwogICAgICAgIHQuZXhwb3J0cyA9IG8gPyBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiB0ID0gdShhKHQpKSwgYyh0LCByID4+PiAwIHx8IChwKHMsIHQpID8gMTYgOiAxMCkpCiAgICAgICAgfSA6IGMKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpLAogICAgICAgICAgICBvID0gZSgxNSksCiAgICAgICAgICAgIGkgPSBlKDg4KSwKICAgICAgICAgICAgYSA9IChlID0gZSgyOTcpLCBuKCIiLnJlcGxhY2UpKSwKICAgICAgICAgICAgdSA9IFJlZ0V4cCgiXlsiICsgZSArICJdKyIpLAogICAgICAgICAgICBjID0gUmVnRXhwKCIoXnxbXiIgKyBlICsgIl0pWyIgKyBlICsgIl0rJCIpOwogICAgICAgIGUgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gciA9IGkobyhyKSksIDEgJiB0ICYmIChyID0gYShyLCB1LCAiIikpLCAyICYgdCA/IGEociwgYywgIiQxIikgOiByCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHQuZXhwb3J0cyA9IHsKICAgICAgICAgICAgc3RhcnQ6IGUoMSksCiAgICAgICAgICAgIGVuZDogZSgyKSwKICAgICAgICAgICAgdHJpbTogZSgzKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSAiXHRcblx2XGZcciDCoOGagOKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOVx1ZmVmZiIKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDE4NSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk51bWJlciIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICByYW5nZTogZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBvKHQsIHIsIGUsICJudW1iZXIiLCAwLCAxKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDMwMCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk9iamVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpdGVyYXRlRW50cmllczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBvKHQsICJlbnRyaWVzIikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDUxKSwKICAgICAgICAgICAgaSA9IG4oMTg2KSwKICAgICAgICAgICAgYSA9IG4oMTE4KSwKICAgICAgICAgICAgdSA9IG4oMzgpLAogICAgICAgICAgICBjID0gbig3NiksCiAgICAgICAgICAgIGYgPSBuKDM5KSwKICAgICAgICAgICAgcyA9ICJPYmplY3QgSXRlcmF0b3IiLAogICAgICAgICAgICBwID0gby5zZXQsCiAgICAgICAgICAgIGwgPSBvLmdldHRlckZvcihzKTsKICAgICAgICByLmV4cG9ydHMgPSBpKChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHQgPSBmKHQpLCBwKHRoaXMsIHsKICAgICAgICAgICAgICAgIHR5cGU6IHMsCiAgICAgICAgICAgICAgICBtb2RlOiByLAogICAgICAgICAgICAgICAgb2JqZWN0OiB0LAogICAgICAgICAgICAgICAga2V5czogYyh0KSwKICAgICAgICAgICAgICAgIGluZGV4OiAwCiAgICAgICAgICAgIH0pCiAgICAgICAgfSksICJPYmplY3QiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZvciAodmFyIHIgPSBsKHRoaXMpLCBlID0gci5rZXlzOzspIHsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBlIHx8IHIuaW5kZXggPj0gZS5sZW5ndGgpIHJldHVybiByLm9iamVjdCA9IHIua2V5cyA9IG51bGwsIGEodCwgITApOwogICAgICAgICAgICAgICAgdmFyIG4gPSBlW3IuaW5kZXgrK10sCiAgICAgICAgICAgICAgICAgICAgbyA9IHIub2JqZWN0OwogICAgICAgICAgICAgICAgaWYgKHUobywgbikpIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHIubW9kZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJrZXlzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKG4sICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidmFsdWVzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKG9bbl0sICExKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYShbbiwgb1tuXV0sICExKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSkpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzMDApOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJPYmplY3QiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaXRlcmF0ZUtleXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgbyh0LCAia2V5cyIpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzAwKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiT2JqZWN0IiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGl0ZXJhdGVWYWx1ZXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgbyh0LCAidmFsdWVzIikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgyMyksCiAgICAgICAgICAgIGkgPSBlKDEzKSwKICAgICAgICAgICAgYSA9IGUoMzApLAogICAgICAgICAgICB1ID0gZSgxNSksCiAgICAgICAgICAgIGMgPSBlKDE3KSwKICAgICAgICAgICAgZiA9IGUoMjAyKSwKICAgICAgICAgICAgcyA9IG8oIk9iamVjdCIsICJjcmVhdGUiKSwKICAgICAgICAgICAgcCA9IGkoW10ucHVzaCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIk9iamVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBncm91cEJ5OiBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICB1KHQpLCBhKHIpOwogICAgICAgICAgICAgICAgdmFyIGUgPSBzKG51bGwpLAogICAgICAgICAgICAgICAgICAgIG4gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuIGYodCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGMocih0LCBuKyspKTsKICAgICAgICAgICAgICAgICAgICBvIGluIGUgPyBwKGVbb10sIHQpIDogZVtvXSA9IFt0XQogICAgICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMzA1KSwgZSgzMDgpLCBlKDMwOSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKHIpIHsKICAgICAgICAgICAgdGhpcy5vYnNlcnZlciA9IHMociksIHRoaXMuY2xlYW51cCA9IHQsIHRoaXMuc3Vic2NyaXB0aW9uT2JzZXJ2ZXIgPSB0CiAgICAgICAgfQogICAgICAgIHZhciBpID0gbigyKSwKICAgICAgICAgICAgYSA9IG4oNyksCiAgICAgICAgICAgIHUgPSBuKDUpLAogICAgICAgICAgICBjID0gbigyMDgpLAogICAgICAgICAgICBmID0gbigzMCksCiAgICAgICAgICAgIHMgPSBuKDQ2KSwKICAgICAgICAgICAgcCA9IG4oMTU3KSwKICAgICAgICAgICAgbCA9IG4oMjApLAogICAgICAgICAgICBoID0gbigxNiksCiAgICAgICAgICAgIHYgPSBuKDE5KSwKICAgICAgICAgICAgeSA9IG4oMjkpLAogICAgICAgICAgICBkID0gbig0NyksCiAgICAgICAgICAgIGcgPSBuKDExNiksCiAgICAgICAgICAgIGIgPSBuKDg1KSwKICAgICAgICAgICAgbSA9IG4oMzA2KSwKICAgICAgICAgICAgeCA9IG4oMzMpLAogICAgICAgICAgICB3ID0gbig1MSksCiAgICAgICAgICAgIFMgPSBuKDMwNyksCiAgICAgICAgICAgIEEgPSB4KCJvYnNlcnZhYmxlIiksCiAgICAgICAgICAgIEUgPSAiT2JzZXJ2YWJsZSIsCiAgICAgICAgICAgIE8gPSAobiA9ICJTdWJzY3JpcHRpb24iLCAiU3Vic2NyaXB0aW9uT2JzZXJ2ZXIiKSwKICAgICAgICAgICAgUiA9ICh4ID0gdy5nZXR0ZXJGb3IsIHcuc2V0KSwKICAgICAgICAgICAgSSA9IHgoRSksCiAgICAgICAgICAgIGsgPSB4KG4pLAogICAgICAgICAgICBUID0geChPKTsKCiAgICAgICAgZnVuY3Rpb24gTSh0LCByKSB7CiAgICAgICAgICAgIHZhciBlLCBuID0gUih0aGlzLCBuZXcgbyh0KSk7CiAgICAgICAgICAgIHUgfHwgKHRoaXMuY2xvc2VkID0gITEpOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgKGUgPSB5KHQsICJzdGFydCIpKSAmJiBhKGUsIHQsIHRoaXMpCiAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHsKICAgICAgICAgICAgICAgIG0ocikKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIW4uaXNDbG9zZWQoKSkgewogICAgICAgICAgICAgICAgdCA9IG4uc3Vic2NyaXB0aW9uT2JzZXJ2ZXIgPSBuZXcgaihuKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByKHQpLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gaTsKICAgICAgICAgICAgICAgICAgICBoKGkpIHx8IChuLmNsZWFudXAgPSBsKGkudW5zdWJzY3JpYmUpID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGMudW5zdWJzY3JpYmUoKQogICAgICAgICAgICAgICAgICAgIH0gOiBmKGkpKQogICAgICAgICAgICAgICAgfSBjYXRjaCAocikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIHQuZXJyb3IocikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG4uaXNDbG9zZWQoKSAmJiBuLmNsZWFuKCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBvLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgdHlwZTogbiwKICAgICAgICAgICAgY2xlYW46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLmNsZWFudXA7CiAgICAgICAgICAgICAgICBpZiAocikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYW51cCA9IHQ7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcigpCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAocikgewogICAgICAgICAgICAgICAgICAgICAgICBtKHIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgZTsKICAgICAgICAgICAgICAgIHUgfHwgKHIgPSB0aGlzLmZhY2FkZSwgZSA9IHRoaXMuc3Vic2NyaXB0aW9uT2JzZXJ2ZXIsIHIuY2xvc2VkID0gITAsIGUgJiYgKGUuY2xvc2VkID0gITApKSwgdGhpcy5vYnNlcnZlciA9IHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaXNDbG9zZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JzZXJ2ZXIgPT09IHQKICAgICAgICAgICAgfQogICAgICAgIH0sIE0ucHJvdG90eXBlID0gZyh7fSwgewogICAgICAgICAgICB1bnN1YnNjcmliZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGsodGhpcyk7CiAgICAgICAgICAgICAgICB0LmlzQ2xvc2VkKCkgfHwgKHQuY2xvc2UoKSwgdC5jbGVhbigpKQogICAgICAgICAgICB9CiAgICAgICAgfSksIHUgJiYgYihNLnByb3RvdHlwZSwgImNsb3NlZCIsIHsKICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBrKHRoaXMpLmlzQ2xvc2VkKCkKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHZhciBqID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBSKHRoaXMsIHsKICAgICAgICAgICAgICAgIHR5cGU6IE8sCiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25TdGF0ZTogdAogICAgICAgICAgICB9KSwgdSB8fCAodGhpcy5jbG9zZWQgPSAhMSkKICAgICAgICB9OwogICAgICAgIGoucHJvdG90eXBlID0gZyh7fSwgewogICAgICAgICAgICBuZXh0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IFQodGhpcykuc3Vic2NyaXB0aW9uU3RhdGU7CiAgICAgICAgICAgICAgICBpZiAoIXIuaXNDbG9zZWQoKSkgewogICAgICAgICAgICAgICAgICAgIHIgPSByLm9ic2VydmVyOwogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0geShyLCAibmV4dCIpOwogICAgICAgICAgICAgICAgICAgICAgICBlICYmIGEoZSwgciwgdCkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG0odCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IFQodGhpcykuc3Vic2NyaXB0aW9uU3RhdGU7CiAgICAgICAgICAgICAgICBpZiAoIXIuaXNDbG9zZWQoKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gci5vYnNlcnZlcjsKICAgICAgICAgICAgICAgICAgICByLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB5KGUsICJlcnJvciIpOwogICAgICAgICAgICAgICAgICAgICAgICBuID8gYShuLCBlLCB0KSA6IG0odCkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG0odCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgci5jbGVhbigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gVCh0aGlzKS5zdWJzY3JpcHRpb25TdGF0ZTsKICAgICAgICAgICAgICAgIGlmICghdC5pc0Nsb3NlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0Lm9ic2VydmVyOwogICAgICAgICAgICAgICAgICAgIHQuY2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHkociwgImNvbXBsZXRlIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgYShlLCByKQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbSh0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LmNsZWFuKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pLCB1ICYmIGIoai5wcm90b3R5cGUsICJjbG9zZWQiLCB7CiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gVCh0aGlzKS5zdWJzY3JpcHRpb25TdGF0ZS5pc0Nsb3NlZCgpCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBiID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBwKHRoaXMsIFApLCBSKHRoaXMsIHsKICAgICAgICAgICAgICAgIHR5cGU6IEUsCiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyOiBmKHQpCiAgICAgICAgICAgIH0pCiAgICAgICAgfTsKICAgICAgICB2YXIgUCA9IGIucHJvdG90eXBlOwogICAgICAgIGcoUCwgewogICAgICAgICAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aDsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTShsKHIpID8gewogICAgICAgICAgICAgICAgICAgIG5leHQ6IHIsCiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IDEgPCBlID8gYXJndW1lbnRzWzFdIDogdCwKICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogMiA8IGUgPyBhcmd1bWVudHNbMl0gOiB0CiAgICAgICAgICAgICAgICB9IDogdihyKSA/IHIgOiB7fSwgSSh0aGlzKS5zdWJzY3JpYmVyKQogICAgICAgICAgICB9CiAgICAgICAgfSksIGQoUCwgQSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0pKSwgaSh7CiAgICAgICAgICAgIGdsb2JhbDogITAsCiAgICAgICAgICAgIGNvbnN0cnVjdG9yOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiBTCiAgICAgICAgfSwgewogICAgICAgICAgICBPYnNlcnZhYmxlOiBiCiAgICAgICAgfSksIGMoRSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAxID09IGFyZ3VtZW50cy5sZW5ndGggPyBjb25zb2xlLmVycm9yKHQpIDogY29uc29sZS5lcnJvcih0LCByKQogICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMyksCiAgICAgICAgICAgIG8gPSBlKDIwKSwKICAgICAgICAgICAgaSA9IGUoMzMpKCJvYnNlcnZhYmxlIik7CiAgICAgICAgbiA9IChlID0gbi5PYnNlcnZhYmxlKSAmJiBlLnByb3RvdHlwZTsKICAgICAgICB0LmV4cG9ydHMgPSAhKG8oZSkgJiYgbyhlLmZyb20pICYmIG8oZS5vZikgJiYgbyhuLnN1YnNjcmliZSkgJiYgbyhuW2ldKSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDIzKSwKICAgICAgICAgICAgaSA9IGUoNyksCiAgICAgICAgICAgIGEgPSBlKDQ2KSwKICAgICAgICAgICAgdSA9IGUoMTEzKSwKICAgICAgICAgICAgYyA9IGUoMTE5KSwKICAgICAgICAgICAgZiA9IGUoMjkpLAogICAgICAgICAgICBzID0gZSgyMDIpLAogICAgICAgICAgICBwID0gZSgzMyksCiAgICAgICAgICAgIGwgPSAoZSA9IGUoMzA3KSwgcCgib2JzZXJ2YWJsZSIpKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiT2JzZXJ2YWJsZSIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6IGUKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZyb206IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdSh0aGlzKSA/IHRoaXMgOiBvKCJPYnNlcnZhYmxlIiksCiAgICAgICAgICAgICAgICAgICAgZSA9IGYoYSh0KSwgbCk7CiAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gYShpKGUsIHQpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5jb25zdHJ1Y3RvciA9PT0gciA/IG4gOiBuZXcgcigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zdWJzY3JpYmUodCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBwID0gYyh0KTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgcigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHMocCwgKGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQubmV4dChyKSwgdC5jbG9zZWQpIHJldHVybiBlKCkKICAgICAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgICAgICBJU19JVEVSQVRPUjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIElOVEVSUlVQVEVEOiAhMAogICAgICAgICAgICAgICAgICAgIH0pLCB0LmNvbXBsZXRlKCkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDIzKSwKICAgICAgICAgICAgaSA9IGUoMTEzKSwKICAgICAgICAgICAgYSA9IChlID0gZSgzMDcpLCBvKCJBcnJheSIpKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiT2JzZXJ2YWJsZSIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6IGUKICAgICAgICB9LCB7IG9mOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBpKHRoaXMpID8gdGhpcyA6IG8oIk9ic2VydmFibGUiKSwgciA9IGFyZ3VtZW50cy5sZW5ndGgsIGUgPSBhKHIpLCBuID0gMDsgbiA8IHI7KSBlW25dID0gYXJndW1lbnRzW24rK107CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHI7IG4rKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQubmV4dChlW25dKSwgdC5jbG9zZWQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0LmNvbXBsZXRlKCkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDMxMSksCiAgICAgICAgICAgIGkgPSBlKDE2NCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlByb21pc2UiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgdHJ5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG8uZih0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiAoKHQgPSBpKHQpKS5lcnJvciA/IHIucmVqZWN0IDogci5yZXNvbHZlKSh0LnZhbHVlKSwgci5wcm9taXNlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIGZ1bmN0aW9uIG8ocikgewogICAgICAgICAgICB2YXIgZSwgbjsKICAgICAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IHIoKGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgICAgIGlmIChlICE9PSB0IHx8IG4gIT09IHQpIHRocm93IGEoIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yIik7CiAgICAgICAgICAgICAgICBlID0gciwgbiA9IG8KICAgICAgICAgICAgfSkpLCB0aGlzLnJlc29sdmUgPSBpKGUpLCB0aGlzLnJlamVjdCA9IGkobikKICAgICAgICB9CiAgICAgICAgdmFyIGkgPSBuKDMwKSwKICAgICAgICAgICAgYSA9IFR5cGVFcnJvcjsKICAgICAgICByLmV4cG9ydHMuZiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBvKHQpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzExKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiUHJvbWlzZSIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB3aXRoUmVzb2x2ZXJzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gby5mKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBwcm9taXNlOiB0LnByb21pc2UsCiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZTogdC5yZXNvbHZlLAogICAgICAgICAgICAgICAgICAgIHJlamVjdDogdC5yZWplY3QKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzMTQpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBpLnRvS2V5LAogICAgICAgICAgICBjID0gaS5zZXQ7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlJlZmxlY3QiLAogICAgICAgICAgICBzdGF0OiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZGVmaW5lTWV0YWRhdGE6IGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICAgICAgICAgIHZhciBvID0gYXJndW1lbnRzLmxlbmd0aCA8IDQgPyB0IDogdShhcmd1bWVudHNbM10pOwogICAgICAgICAgICAgICAgYyhyLCBlLCBhKG4pLCBvKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKHQsIHIsIGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBmLmdldCh0KTsKICAgICAgICAgICAgaWYgKCFuKSB7CiAgICAgICAgICAgICAgICBpZiAoIWUpIHJldHVybjsKICAgICAgICAgICAgICAgIGYuc2V0KHQsIG4gPSBuZXcgdSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoISh0ID0gbi5nZXQocikpKSB7CiAgICAgICAgICAgICAgICBpZiAoIWUpIHJldHVybjsKICAgICAgICAgICAgICAgIG4uc2V0KHIsIHQgPSBuZXcgdSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0KICAgICAgICBuKDE5MiksIG4oMjA5KTsKICAgICAgICB2YXIgaSA9IG4oMjMpLAogICAgICAgICAgICBhID0gbigxMyksCiAgICAgICAgICAgIHUgPSAobiA9IG4oMzQpLCBpKCJNYXAiKSksCiAgICAgICAgICAgIGMgPSAoaSA9IGkoIldlYWtNYXAiKSwgYShbXS5wdXNoKSksCiAgICAgICAgICAgIGYgPSAobiA9IG4oIm1ldGFkYXRhIikpLnN0b3JlIHx8IChuLnN0b3JlID0gbmV3IGkpOwogICAgICAgIHIuZXhwb3J0cyA9IHsKICAgICAgICAgICAgc3RvcmU6IGYsCiAgICAgICAgICAgIGdldE1hcDogbywKICAgICAgICAgICAgaGFzOiBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKG4gPSBvKGUsIG4sICExKSkgIT09IHQgJiYgbi5oYXMocikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKG4gPSBvKGUsIG4sICExKSkgPT09IHQgPyB0IDogbi5nZXQocikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih0LCByLCBlLCBuKSB7CiAgICAgICAgICAgICAgICBvKGUsIG4sICEwKS5zZXQodCwgcikKICAgICAgICAgICAgfSwKICAgICAgICAgICAga2V5czogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgciA9IG8odCwgciwgITEpOwogICAgICAgICAgICAgICAgdmFyIGUgPSBbXTsKICAgICAgICAgICAgICAgIHJldHVybiByICYmIHIuZm9yRWFjaCgoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgIGMoZSwgcikKICAgICAgICAgICAgICAgIH0pKSwgZQogICAgICAgICAgICB9LAogICAgICAgICAgICB0b0tleTogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgcmV0dXJuIHIgPT09IHQgfHwgInN5bWJvbCIgPT0gdHlwZW9mIHIgPyByIDogU3RyaW5nKHIpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzMTQpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBpLnRvS2V5LAogICAgICAgICAgICBjID0gaS5nZXRNYXAsCiAgICAgICAgICAgIGYgPSBpLnN0b3JlOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJSZWZsZWN0IiwKICAgICAgICAgICAgc3RhdDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRlbGV0ZU1ldGFkYXRhOiBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdCA6IHUoYXJndW1lbnRzWzJdKSwKICAgICAgICAgICAgICAgICAgICBvID0gYyhhKGUpLCBuLCAhMSk7CiAgICAgICAgICAgICAgICByZXR1cm4gIShvID09PSB0IHx8ICFvLmRlbGV0ZShyKSkgJiYgKCEhby5zaXplIHx8ICgobyA9IGYuZ2V0KGUpKS5kZWxldGUobiksICEhby5zaXplIHx8IGYuZGVsZXRlKGUpKSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzMTQpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBuKDk1KSwKICAgICAgICAgICAgYyA9IGkuaGFzLAogICAgICAgICAgICBmID0gaS5nZXQsCiAgICAgICAgICAgIHMgPSBpLnRvS2V5LAogICAgICAgICAgICBwID0gZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIGMociwgZSwgbikgPyBmKHIsIGUsIG4pIDogbnVsbCAhPT0gKGUgPSB1KGUpKSA/IHAociwgZSwgbikgOiB0CiAgICAgICAgICAgIH07CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlJlZmxlY3QiLAogICAgICAgICAgICBzdGF0OiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZ2V0TWV0YWRhdGE6IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB0IDogcyhhcmd1bWVudHNbMl0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHAociwgYShlKSwgbikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxMyksCiAgICAgICAgICAgIGEgPSBuKDMxNCksCiAgICAgICAgICAgIHUgPSBuKDQ2KSwKICAgICAgICAgICAgYyA9IG4oOTUpLAogICAgICAgICAgICBmID0gaShuKDE0MikpLAogICAgICAgICAgICBzID0gaShbXS5jb25jYXQpLAogICAgICAgICAgICBwID0gYS5rZXlzLAogICAgICAgICAgICBsID0gYS50b0tleSwKICAgICAgICAgICAgaCA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gcCh0LCByKTsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSAodCA9IGModCkpID8gZSA6IChyID0gaCh0LCByKSkubGVuZ3RoID8gZS5sZW5ndGggPyBmKHMoZSwgcikpIDogciA6IGUKICAgICAgICAgICAgfTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiUmVmbGVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBnZXRNZXRhZGF0YUtleXM6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyB0IDogbChhcmd1bWVudHNbMV0pOwogICAgICAgICAgICAgICAgcmV0dXJuIGgodShyKSwgZSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzMTQpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBpLmdldCwKICAgICAgICAgICAgYyA9IGkudG9LZXk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlJlZmxlY3QiLAogICAgICAgICAgICBzdGF0OiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZ2V0T3duTWV0YWRhdGE6IGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB0IDogYyhhcmd1bWVudHNbMl0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHUociwgYShlKSwgbikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzMTQpLAogICAgICAgICAgICBhID0gbig0NiksCiAgICAgICAgICAgIHUgPSBpLmtleXMsCiAgICAgICAgICAgIGMgPSBpLnRvS2V5OwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJSZWZsZWN0IiwKICAgICAgICAgICAgc3RhdDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGdldE93bk1ldGFkYXRhS2V5czogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHQgOiBjKGFyZ3VtZW50c1sxXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdShhKHIpLCBlKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDMxNCksCiAgICAgICAgICAgIGEgPSBuKDQ2KSwKICAgICAgICAgICAgdSA9IG4oOTUpLAogICAgICAgICAgICBjID0gaS5oYXMsCiAgICAgICAgICAgIGYgPSBpLnRvS2V5LAogICAgICAgICAgICBzID0gZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICEhYyh0LCByLCBlKSB8fCBudWxsICE9PSAociA9IHUocikpICYmIHModCwgciwgZSkKICAgICAgICAgICAgfTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiUmVmbGVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBoYXNNZXRhZGF0YTogZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHQgOiBmKGFyZ3VtZW50c1syXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gcyhyLCBhKGUpLCBuKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDMxNCksCiAgICAgICAgICAgIGEgPSBuKDQ2KSwKICAgICAgICAgICAgdSA9IGkuaGFzLAogICAgICAgICAgICBjID0gaS50b0tleTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiUmVmbGVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBoYXNPd25NZXRhZGF0YTogZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHQgOiBjKGFyZ3VtZW50c1syXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdShyLCBhKGUpLCBuKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDMxNCksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IG8udG9LZXksCiAgICAgICAgICAgIHUgPSBvLnNldDsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiUmVmbGVjdCIsCiAgICAgICAgICAgIHN0YXQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBtZXRhZGF0YTogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB1KHQsIHIsIGkoZSksIGEobikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzI0KSwKICAgICAgICAgICAgaSA9IGUoMzI1KS5hZGQ7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGFkZEFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gbyh0aGlzKSwgciA9IDAsIGUgPSBhcmd1bWVudHMubGVuZ3RoOyByIDwgZTsgcisrKSBpKHQsIGFyZ3VtZW50c1tyXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMzI1KS5oYXM7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gbih0KSwgdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpOwogICAgICAgIGUgPSBTZXQucHJvdG90eXBlOwogICAgICAgIHQuZXhwb3J0cyA9IHsKICAgICAgICAgICAgU2V0OiBTZXQsCiAgICAgICAgICAgIGFkZDogbihlLmFkZCksCiAgICAgICAgICAgIGhhczogbihlLmhhcyksCiAgICAgICAgICAgIHJlbW92ZTogbihlLmRlbGV0ZSksCiAgICAgICAgICAgIHByb3RvOiBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzI0KSwKICAgICAgICAgICAgaSA9IGUoMzI1KS5yZW1vdmU7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRlbGV0ZUFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByID0gbyh0aGlzKSwgZSA9ICEwLCBuID0gMCwgYSA9IGFyZ3VtZW50cy5sZW5ndGg7IG4gPCBhOyBuKyspIHQgPSBpKHIsIGFyZ3VtZW50c1tuXSksIGUgPSBlICYmIHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gISFlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzI4KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhZSgzMzMpKCJkaWZmZXJlbmNlIikKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRpZmZlcmVuY2U6IG8KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzMjQpLAogICAgICAgICAgICBvID0gZSgzMjUpLAogICAgICAgICAgICBpID0gZSgzMjkpLAogICAgICAgICAgICBhID0gZSgzMzEpLAogICAgICAgICAgICB1ID0gZSgzMzIpLAogICAgICAgICAgICBjID0gZSgzMzApLAogICAgICAgICAgICBmID0gZSgxNDQpLAogICAgICAgICAgICBzID0gby5oYXMsCiAgICAgICAgICAgIHAgPSBvLnJlbW92ZTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciByID0gbih0aGlzKSwKICAgICAgICAgICAgICAgIGUgPSB1KHQpLAogICAgICAgICAgICAgICAgbyA9IGkocik7CiAgICAgICAgICAgIHJldHVybiBhKHIpIDw9IGUuc2l6ZSA/IGMociwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGUuaW5jbHVkZXModCkgJiYgcChvLCB0KQogICAgICAgICAgICB9KSkgOiBmKGUuZ2V0SXRlcmF0b3IoKSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHMociwgdCkgJiYgcChvLCB0KQogICAgICAgICAgICB9KSksIG8KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMyNSksCiAgICAgICAgICAgIG8gPSBlKDMzMCksCiAgICAgICAgICAgIGkgPSBuLlNldCwKICAgICAgICAgICAgYSA9IG4uYWRkOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuZXcgaTsKICAgICAgICAgICAgcmV0dXJuIG8odCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGEociwgdCkKICAgICAgICAgICAgfSkpLCByCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuLCBvID0gZSgxMyksCiAgICAgICAgICAgIGkgPSBlKDE0NCksCiAgICAgICAgICAgIGEgPSAoZSA9IChuID0gZSgzMjUpKS5TZXQsIG8oKG4gPSBuLnByb3RvKS5mb3JFYWNoKSksCiAgICAgICAgICAgIHUgPSBvKG4ua2V5cyksCiAgICAgICAgICAgIGMgPSB1KG5ldyBlKS5uZXh0OwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgPyBpKHUodCksIHIsIGMpIDogYSh0LCByKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoOTgpOwogICAgICAgIGUgPSBlKDMyNSk7CiAgICAgICAgdC5leHBvcnRzID0gbihlLnByb3RvLCAic2l6ZSIsICJnZXQiKSB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0LnNpemUKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZnVuY3Rpb24gbih0LCByLCBlLCBuKSB7CiAgICAgICAgICAgIHRoaXMuc2V0ID0gdCwgdGhpcy5zaXplID0gciwgdGhpcy5oYXMgPSBlLCB0aGlzLmtleXMgPSBuCiAgICAgICAgfQogICAgICAgIHZhciBvID0gZSgzMCksCiAgICAgICAgICAgIGkgPSBlKDQ2KSwKICAgICAgICAgICAgYSA9IGUoNyksCiAgICAgICAgICAgIHUgPSBlKDYxKSwKICAgICAgICAgICAgYyA9IFR5cGVFcnJvciwKICAgICAgICAgICAgZiA9IE1hdGgubWF4OwogICAgICAgIG4ucHJvdG90eXBlID0gewogICAgICAgICAgICBnZXRJdGVyYXRvcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaShhKHRoaXMua2V5cywgdGhpcy5zZXQpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbmNsdWRlczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGEodGhpcy5oYXMsIHRoaXMuc2V0LCB0KQogICAgICAgICAgICB9CiAgICAgICAgfSwgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBpKHQpOwogICAgICAgICAgICB2YXIgciA9ICt0LnNpemU7CiAgICAgICAgICAgIGlmIChyICE9IHIpIHRocm93IGMoIkludmFsaWQgc2l6ZSIpOwogICAgICAgICAgICByZXR1cm4gbmV3IG4odCwgZih1KHIpLCAwKSwgbyh0LmhhcyksIG8odC5rZXlzKSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIzKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKG5ldyhuKCJTZXQiKSkpW3RdKHsKICAgICAgICAgICAgICAgICAgICBzaXplOiAwLAogICAgICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAga2V5czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCAhMAogICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDcpLAogICAgICAgICAgICBpID0gZSgzMzUpLAogICAgICAgICAgICBhID0gZSgzMjgpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJTZXQiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBkaWZmZXJlbmNlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyhhLCB0aGlzLCBpKHQpKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMjMpLAogICAgICAgICAgICBvID0gZSgyMCksCiAgICAgICAgICAgIGkgPSBlKDMzNiksCiAgICAgICAgICAgIGEgPSBlKDE5KSwKICAgICAgICAgICAgdSA9IG4oIlNldCIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGEociA9IHQpICYmICJudW1iZXIiID09IHR5cGVvZiByLnNpemUgJiYgbyhyLmhhcykgJiYgbyhyLmtleXMpIHx8ICFpKHQpID8gdCA6IG5ldyB1KHQpOwogICAgICAgICAgICB2YXIgcgogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oODkpLAogICAgICAgICAgICBpID0gbigzOCksCiAgICAgICAgICAgIGEgPSBuKDE2KSwKICAgICAgICAgICAgdSA9IG4oMzMpLAogICAgICAgICAgICBjID0gbigxMjEpLAogICAgICAgICAgICBmID0gdSgiaXRlcmF0b3IiKSwKICAgICAgICAgICAgcyA9IE9iamVjdDsKICAgICAgICByLmV4cG9ydHMgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHJldHVybiAhYShyKSAmJiAoKHIgPSBzKHIpKVtmXSAhPT0gdCB8fCAiQEBpdGVyYXRvciIgaW4gciB8fCBpKGMsIG8ocikpKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDMyNCksCiAgICAgICAgICAgIHUgPSBuKDMzMCk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGV2ZXJ5OiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGkociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KTsKICAgICAgICAgICAgICAgIHJldHVybiAhMSAhPT0gdShlLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGlmICghbih0LCB0LCBlKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9KSwgITApCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTExKSwKICAgICAgICAgICAgYSA9IG4oMzI0KSwKICAgICAgICAgICAgdSA9IG4oMzI1KSwKICAgICAgICAgICAgYyA9IG4oMzMwKSwKICAgICAgICAgICAgZiA9IHUuU2V0LAogICAgICAgICAgICBzID0gdS5hZGQ7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIG4gPSBpKHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCksCiAgICAgICAgICAgICAgICAgICAgbyA9IG5ldyBmOwogICAgICAgICAgICAgICAgcmV0dXJuIGMoZSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBuKHQsIHQsIGUpICYmIHMobywgdCkKICAgICAgICAgICAgICAgIH0pKSwgbwogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDExMSksCiAgICAgICAgICAgIGEgPSBuKDMyNCksCiAgICAgICAgICAgIHUgPSBuKDMzMCk7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZpbmQ6IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gaShyLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpOwogICAgICAgICAgICAgICAgcmV0dXJuIChyID0gdShlLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGlmIChuKHQsIHQsIGUpKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCAhMCkpICYmIHIudmFsdWUKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmcm9tOiBlKDI1OCkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNiksCiAgICAgICAgICAgIGkgPSBlKDM0Mik7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogIWUoMzMzKSgiaW50ZXJzZWN0aW9uIikgfHwgbygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIjMsMiIgIT0gQXJyYXkuZnJvbShuZXcgU2V0KFsxLCAyLCAzXSkuaW50ZXJzZWN0aW9uKG5ldyBTZXQoWzMsIDJdKSkpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sIHsKICAgICAgICAgICAgaW50ZXJzZWN0aW9uOiBpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMzI0KSwKICAgICAgICAgICAgbyA9IGUoMzI1KSwKICAgICAgICAgICAgaSA9IGUoMzMxKSwKICAgICAgICAgICAgYSA9IGUoMzMyKSwKICAgICAgICAgICAgdSA9IGUoMzMwKSwKICAgICAgICAgICAgYyA9IGUoMTQ0KSwKICAgICAgICAgICAgZiA9IG8uU2V0LAogICAgICAgICAgICBzID0gby5hZGQsCiAgICAgICAgICAgIHAgPSBvLmhhczsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciByID0gbih0aGlzKSwKICAgICAgICAgICAgICAgIGUgPSBhKHQpLAogICAgICAgICAgICAgICAgbyA9IG5ldyBmOwogICAgICAgICAgICByZXR1cm4gaShyKSA+IGUuc2l6ZSA/IGMoZS5nZXRJdGVyYXRvcigpLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcChyLCB0KSAmJiBzKG8sIHQpCiAgICAgICAgICAgIH0pKSA6IHUociwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGUuaW5jbHVkZXModCkgJiYgcyhvLCB0KQogICAgICAgICAgICB9KSksIG8KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMzM1KSwKICAgICAgICAgICAgYSA9IGUoMzQyKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaW50ZXJzZWN0aW9uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyhhLCB0aGlzLCBpKHQpKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMiksCiAgICAgICAgICAgIG8gPSBlKDM0NSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogIWUoMzMzKSgiaXNEaXNqb2ludEZyb20iKQogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNEaXNqb2ludEZyb206IG8KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzMjQpLAogICAgICAgICAgICBvID0gZSgzMjUpLmhhcywKICAgICAgICAgICAgaSA9IGUoMzMxKSwKICAgICAgICAgICAgYSA9IGUoMzMyKSwKICAgICAgICAgICAgdSA9IGUoMzMwKSwKICAgICAgICAgICAgYyA9IGUoMTQ0KSwKICAgICAgICAgICAgZiA9IGUoMTY1KTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciByID0gbih0aGlzKSwKICAgICAgICAgICAgICAgIGUgPSBhKHQpOwogICAgICAgICAgICBpZiAoaShyKSA8PSBlLnNpemUpIHJldHVybiAhMSAhPT0gdShyLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKGUuaW5jbHVkZXModCkpIHJldHVybiAhMQogICAgICAgICAgICB9KSwgITApOwogICAgICAgICAgICB2YXIgcyA9IGUuZ2V0SXRlcmF0b3IoKTsKICAgICAgICAgICAgcmV0dXJuICExICE9PSBjKHMsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAobyhyLCB0KSkgcmV0dXJuIGYocywgIm5vcm1hbCIsICExKQogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg3KSwKICAgICAgICAgICAgaSA9IGUoMzM1KSwKICAgICAgICAgICAgYSA9IGUoMzQ1KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNEaXNqb2ludEZyb206IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKGEsIHRoaXMsIGkodCkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzQ4KTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhZSgzMzMpKCJpc1N1YnNldE9mIikKICAgICAgICB9LCB7CiAgICAgICAgICAgIGlzU3Vic2V0T2Y6IG8KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzMjQpLAogICAgICAgICAgICBvID0gZSgzMzEpLAogICAgICAgICAgICBpID0gZSgzMzApLAogICAgICAgICAgICBhID0gZSgzMzIpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuKHRoaXMpLAogICAgICAgICAgICAgICAgZSA9IGEodCk7CiAgICAgICAgICAgIHJldHVybiAhKG8ocikgPiBlLnNpemUpICYmICExICE9PSBpKHIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoIWUuaW5jbHVkZXModCkpIHJldHVybiAhMQogICAgICAgICAgICB9KSwgITApCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDMzNSksCiAgICAgICAgICAgIGEgPSBlKDM0OCk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGlzU3Vic2V0T2Y6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKGEsIHRoaXMsIGkodCkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzUxKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhZSgzMzMpKCJpc1N1cGVyc2V0T2YiKQogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNTdXBlcnNldE9mOiBvCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMzI0KSwKICAgICAgICAgICAgbyA9IGUoMzI1KS5oYXMsCiAgICAgICAgICAgIGkgPSBlKDMzMSksCiAgICAgICAgICAgIGEgPSBlKDMzMiksCiAgICAgICAgICAgIHUgPSBlKDE0NCksCiAgICAgICAgICAgIGMgPSBlKDE2NSk7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgciA9IG4odGhpcyk7CiAgICAgICAgICAgIHQgPSBhKHQpOwogICAgICAgICAgICBpZiAoaShyKSA8IHQuc2l6ZSkgcmV0dXJuICExOwogICAgICAgICAgICB2YXIgZSA9IHQuZ2V0SXRlcmF0b3IoKTsKICAgICAgICAgICAgcmV0dXJuICExICE9PSB1KGUsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoIW8ociwgdCkpIHJldHVybiBjKGUsICJub3JtYWwiLCAhMSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDMzNSksCiAgICAgICAgICAgIGEgPSBlKDM1MSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGlzU3VwZXJzZXRPZjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8oYSwgdGhpcywgaSh0KSkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxMyksCiAgICAgICAgICAgIGEgPSBuKDMyNCksCiAgICAgICAgICAgIHUgPSBuKDMzMCksCiAgICAgICAgICAgIGMgPSBuKDg4KSwKICAgICAgICAgICAgZiA9IGkoW10uam9pbiksCiAgICAgICAgICAgIHMgPSBpKFtdLnB1c2gpOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJTZXQiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBqb2luOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IChyID0gciA9PT0gdCA/ICIsIiA6IGMociksIFtdKTsKICAgICAgICAgICAgICAgIHJldHVybiB1KGUsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcyhuLCB0KQogICAgICAgICAgICAgICAgfSkpLCBmKG4sIHIpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMTExKSwKICAgICAgICAgICAgYSA9IG4oMzI0KSwKICAgICAgICAgICAgdSA9IG4oMzI1KSwKICAgICAgICAgICAgYyA9IG4oMzMwKSwKICAgICAgICAgICAgZiA9IHUuU2V0LAogICAgICAgICAgICBzID0gdS5hZGQ7CiAgICAgICAgbyh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIG1hcDogZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIG4gPSBpKHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCksCiAgICAgICAgICAgICAgICAgICAgbyA9IG5ldyBmOwogICAgICAgICAgICAgICAgcmV0dXJuIGMoZSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBzKG8sIG4odCwgdCwgZSkpCiAgICAgICAgICAgICAgICB9KSksIG8KICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgeyBvZjogZSgyNjkpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDMwKSwKICAgICAgICAgICAgYSA9IG4oMzI0KSwKICAgICAgICAgICAgdSA9IG4oMzMwKSwKICAgICAgICAgICAgYyA9IFR5cGVFcnJvcjsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgcmVkdWNlOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGFyZ3VtZW50cy5sZW5ndGggPCAyLAogICAgICAgICAgICAgICAgICAgIG8gPSBuID8gdCA6IGFyZ3VtZW50c1sxXTsKICAgICAgICAgICAgICAgIGlmIChpKHIpLCB1KGUsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuID8gKG4gPSAhMSwgdCkgOiByKG8sIHQsIHQsIGUpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuKSB0aHJvdyBjKCJSZWR1Y2Ugb2YgZW1wdHkgc2V0IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigxMTEpLAogICAgICAgICAgICBhID0gbigzMjQpLAogICAgICAgICAgICB1ID0gbigzMzApOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJTZXQiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBzb21lOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IGkociwgMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB0KTsKICAgICAgICAgICAgICAgIHJldHVybiAhMCA9PT0gdShlLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGlmIChuKHQsIHQsIGUpKSByZXR1cm4gITAKICAgICAgICAgICAgICAgIH0pLCAhMCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzNTkpOwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJTZXQiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICFlKDMzMykoInN5bW1ldHJpY0RpZmZlcmVuY2UiKQogICAgICAgIH0sIHsKICAgICAgICAgICAgc3ltbWV0cmljRGlmZmVyZW5jZTogbwogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMyNCksCiAgICAgICAgICAgIG8gPSBlKDMyNSksCiAgICAgICAgICAgIGkgPSBlKDMyOSksCiAgICAgICAgICAgIGEgPSBlKDMzMiksCiAgICAgICAgICAgIHUgPSBlKDE0NCksCiAgICAgICAgICAgIGMgPSBvLmFkZCwKICAgICAgICAgICAgZiA9IG8uaGFzLAogICAgICAgICAgICBzID0gby5yZW1vdmU7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgciA9IG4odGhpcyksCiAgICAgICAgICAgICAgICBlID0gKHQgPSBhKHQpLmdldEl0ZXJhdG9yKCksIGkocikpOwogICAgICAgICAgICByZXR1cm4gdSh0LCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgKGYociwgdCkgPyBzIDogYykoZSwgdCkKICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDMzNSksCiAgICAgICAgICAgIGEgPSBlKDM1OSk7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHN5bW1ldHJpY0RpZmZlcmVuY2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvKGEsIHRoaXMsIGkodCkpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzYyKTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU2V0IiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhZSgzMzMpKCJ1bmlvbiIpCiAgICAgICAgfSwgewogICAgICAgICAgICB1bmlvbjogbwogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDMyNCksCiAgICAgICAgICAgIG8gPSBlKDMyNSkuYWRkLAogICAgICAgICAgICBpID0gZSgzMjkpLAogICAgICAgICAgICBhID0gZSgzMzIpLAogICAgICAgICAgICB1ID0gZSgxNDQpOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuKHRoaXMpLAogICAgICAgICAgICAgICAgZSA9ICh0ID0gYSh0KS5nZXRJdGVyYXRvcigpLCBpKHIpKTsKICAgICAgICAgICAgcmV0dXJuIHUodCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIG8oZSwgdCkKICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoNyksCiAgICAgICAgICAgIGkgPSBlKDMzNSksCiAgICAgICAgICAgIGEgPSBlKDM2Mik7CiAgICAgICAgbih7CiAgICAgICAgICAgIHRhcmdldDogIlNldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIHVuaW9uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbyhhLCB0aGlzLCBpKHQpKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDM2NSkuY2hhckF0LAogICAgICAgICAgICBhID0gbigxNSksCiAgICAgICAgICAgIHUgPSBuKDYxKSwKICAgICAgICAgICAgYyA9IG4oODgpOwogICAgICAgIG8oewogICAgICAgICAgICB0YXJnZXQ6ICJTdHJpbmciLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGF0OiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGMoYSh0aGlzKSksCiAgICAgICAgICAgICAgICAgICAgbiA9IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgcmV0dXJuIChyID0gMCA8PSAociA9IHUocikpID8gciA6IG4gKyByKSA8IDAgfHwgbiA8PSByID8gdCA6IGkoZSwgcikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDEzKSwKICAgICAgICAgICAgaSA9IG4oNjEpLAogICAgICAgICAgICBhID0gbig4OCksCiAgICAgICAgICAgIHUgPSBuKDE1KSwKICAgICAgICAgICAgYyA9IG8oIiIuY2hhckF0KSwKICAgICAgICAgICAgZiA9IG8oIiIuY2hhckNvZGVBdCksCiAgICAgICAgICAgIHMgPSBvKCIiLnNsaWNlKTsKICAgICAgICBvID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgdmFyIG8sIHAgPSBhKHUoZSkpLAogICAgICAgICAgICAgICAgICAgIGwgPSBpKG4pOwogICAgICAgICAgICAgICAgZSA9IHAubGVuZ3RoOwogICAgICAgICAgICAgICAgcmV0dXJuIGwgPCAwIHx8IGUgPD0gbCA/IHIgPyAiIiA6IHQgOiAobiA9IGYocCwgbCkpIDwgNTUyOTYgfHwgNTYzMTkgPCBuIHx8IGwgKyAxID09PSBlIHx8IChvID0gZihwLCBsICsgMSkpIDwgNTYzMjAgfHwgNTczNDMgPCBvID8gciA/IGMocCwgbCkgOiBuIDogciA/IHMocCwgbCwgbCArIDIpIDogbyAtIDU2MzIwICsgKG4gLSA1NTI5NiA8PCAxMCkgKyA2NTUzNgogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICByLmV4cG9ydHMgPSB7CiAgICAgICAgICAgIGNvZGVBdDogbyghMSksCiAgICAgICAgICAgIGNoYXJBdDogbyghMCkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIlN0cmluZyIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBjb29rZWQ6IGUoMzY3KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDEzKSwKICAgICAgICAgICAgaSA9IG4oMTEpLAogICAgICAgICAgICBhID0gbig4OCksCiAgICAgICAgICAgIHUgPSBuKDYzKSwKICAgICAgICAgICAgYyA9IFR5cGVFcnJvciwKICAgICAgICAgICAgZiA9IG8oW10ucHVzaCksCiAgICAgICAgICAgIHMgPSBvKFtdLmpvaW4pOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGUgPSBpKHIpLAogICAgICAgICAgICAgICAgbiA9IHUoZSk7CiAgICAgICAgICAgIGlmICghbikgcmV0dXJuICIiOwogICAgICAgICAgICBmb3IgKHZhciBvID0gYXJndW1lbnRzLmxlbmd0aCwgcCA9IFtdLCBsID0gMDs7KSB7CiAgICAgICAgICAgICAgICB2YXIgaCA9IGVbbCsrXTsKICAgICAgICAgICAgICAgIGlmIChoID09PSB0KSB0aHJvdyBjKCJJbmNvcnJlY3QgdGVtcGxhdGUiKTsKICAgICAgICAgICAgICAgIGlmIChmKHAsIGEoaCkpLCBsID09PSBuKSByZXR1cm4gcyhwLCAiIik7CiAgICAgICAgICAgICAgICBsIDwgbyAmJiBmKHAsIGEoYXJndW1lbnRzW2xdKSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMiksCiAgICAgICAgICAgIGkgPSBuKDE4NiksCiAgICAgICAgICAgIGEgPSBuKDExOCksCiAgICAgICAgICAgIHUgPSBuKDE1KSwKICAgICAgICAgICAgYyA9IG4oODgpLAogICAgICAgICAgICBmID0gbig1MSksCiAgICAgICAgICAgIHMgPSAobiA9IG4oMzY1KSkuY29kZUF0LAogICAgICAgICAgICBwID0gbi5jaGFyQXQsCiAgICAgICAgICAgIGwgPSAiU3RyaW5nIEl0ZXJhdG9yIiwKICAgICAgICAgICAgaCA9IGYuc2V0LAogICAgICAgICAgICB2ID0gZi5nZXR0ZXJGb3IobCksCiAgICAgICAgICAgIHkgPSBpKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBoKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiBsLAogICAgICAgICAgICAgICAgICAgIHN0cmluZzogdCwKICAgICAgICAgICAgICAgICAgICBpbmRleDogMAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSksICJTdHJpbmciLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IHYodGhpcyksCiAgICAgICAgICAgICAgICAgICAgZSA9IHIuc3RyaW5nLAogICAgICAgICAgICAgICAgICAgIG4gPSByLmluZGV4OwogICAgICAgICAgICAgICAgcmV0dXJuIG4gPj0gZS5sZW5ndGggPyBhKHQsICEwKSA6IChlID0gcChlLCBuKSwgci5pbmRleCArPSBlLmxlbmd0aCwgYSh7CiAgICAgICAgICAgICAgICAgICAgY29kZVBvaW50OiBzKGUsIDApLAogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuCiAgICAgICAgICAgICAgICB9LCAhMSkpCiAgICAgICAgICAgIH0pKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU3RyaW5nIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBjb2RlUG9pbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgeShjKHUodGhpcykpKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMjAxKSwKICAgICAgICAgICAgaSA9IG4oMiksCiAgICAgICAgICAgIGEgPSBuKDM0KSwKICAgICAgICAgICAgdSA9IG4oMjMpLAogICAgICAgICAgICBjID0gbig0OCksCiAgICAgICAgICAgIGYgPSBuKDEzKSwKICAgICAgICAgICAgcyA9IG4oMTkwKSwKICAgICAgICAgICAgcCA9IG4oNDYpLAogICAgICAgICAgICBsID0gbigzOSksCiAgICAgICAgICAgIGggPSBuKDIwKSwKICAgICAgICAgICAgdiA9IG4oNjMpLAogICAgICAgICAgICB5ID0gbig0NCkuZiwKICAgICAgICAgICAgZCA9IG4oMTk3KSwKICAgICAgICAgICAgZyA9IG4oMzY3KSwKICAgICAgICAgICAgYiA9IG4oMzcwKSwKICAgICAgICAgICAgbSA9IChuID0gbigyOTcpLCBhKCJHbG9iYWxEZWRlbnRSZWdpc3RyeSIsIG5ldyh1KCJXZWFrTWFwIikpKSk7CgogICAgICAgIGZ1bmN0aW9uIHgodCkgewogICAgICAgICAgICByZXR1cm4gYygoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBkKGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZVswXSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQucmF3OwogICAgICAgICAgICAgICAgICAgIGlmIChvICYmICFFKHIpKSB0aHJvdyBTKCJSYXcgdGVtcGxhdGUgc2hvdWxkIGJlIGZyb3plbiIpOwogICAgICAgICAgICAgICAgICAgIGlmIChtLmhhcyhyKSkgcmV0dXJuIG0uZ2V0KHIpOwogICAgICAgICAgICAgICAgICAgIHZhciBlID0gQyhyKTsKICAgICAgICAgICAgICAgICAgICB0ID0gTihlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geSh0LCAicmF3IiwgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQShlKQogICAgICAgICAgICAgICAgICAgIH0pLCBBKHQpLCBtLnNldChyLCB0KSwgdAogICAgICAgICAgICAgICAgfShwKHIpKSwgcyh0LCB0aGlzLCBlKQogICAgICAgICAgICB9KSwgIiIpCiAgICAgICAgfQogICAgICAgIG0uaGFzID0gbS5oYXMsIG0uZ2V0ID0gbS5nZXQsIG0uc2V0ID0gbS5zZXQ7CiAgICAgICAgdmFyIHcgPSBBcnJheSwKICAgICAgICAgICAgUyA9IFR5cGVFcnJvciwKICAgICAgICAgICAgQSA9IE9iamVjdC5mcmVlemUgfHwgT2JqZWN0LAogICAgICAgICAgICBFID0gT2JqZWN0LmlzRnJvemVuLAogICAgICAgICAgICBPID0gTWF0aC5taW4sCiAgICAgICAgICAgIFIgPSBmKCIiLmNoYXJBdCksCiAgICAgICAgICAgIEkgPSBmKCIiLnNsaWNlKSwKICAgICAgICAgICAgayA9IGYoIiIuc3BsaXQpLAogICAgICAgICAgICBUID0gZigvLi8uZXhlYyksCiAgICAgICAgICAgIE0gPSAvKFtcblx1MjAyOFx1MjAyOV18XHJcbj8pL2csCiAgICAgICAgICAgIGogPSBSZWdFeHAoIl5bIiArIG4gKyAiXSoiKSwKICAgICAgICAgICAgUCA9IFJlZ0V4cCgiW14iICsgbiArICJdIiksCiAgICAgICAgICAgIEQgPSAiSW52YWxpZCB0YWciLAogICAgICAgICAgICBDID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIHIsIGUgPSBsKHQpLAogICAgICAgICAgICAgICAgICAgIG4gPSB2KGUpLAogICAgICAgICAgICAgICAgICAgIG8gPSB3KG4pLAogICAgICAgICAgICAgICAgICAgIGkgPSB3KG4pLAogICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgaWYgKCFuKSB0aHJvdyBTKEQpOwogICAgICAgICAgICAgICAgZm9yICg7IGEgPCBuOyBhKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGVbYV07CiAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiB1KSB0aHJvdyBTKEQpOwogICAgICAgICAgICAgICAgICAgIG9bYV0gPSBrKHUsIE0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKGEgPSAwOyBhIDwgbjsgYSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBhICsgMSA9PT0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG9bYV07CiAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGYubGVuZ3RoIHx8IDAgPCBmWzBdLmxlbmd0aCkgdGhyb3cgUygiSW52YWxpZCBvcGVuaW5nIGxpbmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZlsxXSA9ICIiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSBmLmxlbmd0aCB8fCBUKFAsIGZbZi5sZW5ndGggLSAxXSkpIHRocm93IFMoIkludmFsaWQgY2xvc2luZyBsaW5lIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGZbZi5sZW5ndGggLSAyXSA9ICIiLCBmW2YubGVuZ3RoIC0gMV0gPSAiIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMjsgcyA8IGYubGVuZ3RoOyBzICs9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBmW3NdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHMgKyAxID09PSBmLmxlbmd0aCAmJiAhYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBUKGosIHApWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBoIHx8IHkubGVuZ3RoICE9PSBwLmxlbmd0aCA/IHIgPSBfKHksIHIpIDogZltzXSA9ICIiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGQgPSByID8gci5sZW5ndGggOiAwOwogICAgICAgICAgICAgICAgZm9yIChhID0gMDsgYSA8IG47IGErKykgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGcgPSAoZiA9IG9bYV0pWzBdLCBiID0gMTsgYiA8IGYubGVuZ3RoOyBiICs9IDIpIGcgKz0gZltiXSArIEkoZltiICsgMV0sIGQpOwogICAgICAgICAgICAgICAgICAgIGlbYV0gPSBnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICB9LAogICAgICAgICAgICBfID0gZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICAgICAgaWYgKGUgPT09IHQgfHwgciA9PT0gZSkgcmV0dXJuIHI7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMCwgbyA9IE8oci5sZW5ndGgsIGUubGVuZ3RoKTsgbiA8IG8gJiYgUihyLCBuKSA9PT0gUihlLCBuKTsgbisrKTsKICAgICAgICAgICAgICAgIHJldHVybiBJKHIsIDAsIG4pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gMCwgZSA9IHQubGVuZ3RoLCBuID0gdyhlKTsgciA8IGU7IHIrKykgbltyXSA9IGIodFtyXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICB9LAogICAgICAgICAgICBGID0geChnKTsKICAgICAgICBpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU3RyaW5nIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRlZGVudDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHAodCksIGgodCkgPyB4KHQpIDogcyhGLCB0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGZ1bmN0aW9uIG4odCwgcikgewogICAgICAgICAgICByZXR1cm4gNDggPD0gKHIgPSBmKHQsIHIpKSAmJiByIDw9IDU3CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvKHQsIHIsIGUpIHsKICAgICAgICAgICAgaWYgKGUgPj0gdC5sZW5ndGgpIHJldHVybiAtMTsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IHIgPCBlOyByKyspIHsKICAgICAgICAgICAgICAgIHZhciBvID0gbChmKHQsIHIpKTsKICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gbykgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgbiA9IDE2ICogbiArIG8KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbgogICAgICAgIH0KICAgICAgICB2YXIgaSA9IGUoMjMpLAogICAgICAgICAgICBhID0gKGUgPSBlKDEzKSwgU3RyaW5nLmZyb21DaGFyQ29kZSksCiAgICAgICAgICAgIHUgPSBpKCJTdHJpbmciLCAiZnJvbUNvZGVQb2ludCIpLAogICAgICAgICAgICBjID0gZSgiIi5jaGFyQXQpLAogICAgICAgICAgICBmID0gZSgiIi5jaGFyQ29kZUF0KSwKICAgICAgICAgICAgcyA9IGUoIiIuaW5kZXhPZiksCiAgICAgICAgICAgIHAgPSBlKCIiLnNsaWNlKSwKICAgICAgICAgICAgbCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiA0OCA8PSB0ICYmIHQgPD0gNTcgPyB0IC0gNDggOiA5NyA8PSB0ICYmIHQgPD0gMTAyID8gdCAtIDk3ICsgMTAgOiA2NSA8PSB0ICYmIHQgPD0gNzAgPyB0IC0gNjUgKyAxMCA6IC0xCiAgICAgICAgICAgIH07CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBmb3IgKHZhciByLCBlID0gIiIsIGkgPSAwLCBmID0gMDsgLSAxIDwgKGYgPSBzKHQsICJcXCIsIGYpKTspIHsKICAgICAgICAgICAgICAgIGlmIChlICs9IHAodCwgaSwgZiksICsrZiA9PT0gdC5sZW5ndGgpIHJldHVybjsKICAgICAgICAgICAgICAgIHZhciBsID0gYyh0LCBmKyspOwogICAgICAgICAgICAgICAgc3dpdGNoIChsKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiYiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlxiIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAidCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlx0IjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAibiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAidiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlx2IjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiZiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlxmIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiciI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlxyIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiXHIiOgogICAgICAgICAgICAgICAgICAgICAgICBmIDwgdC5sZW5ndGggJiYgIlxuIiA9PT0gYyh0LCBmKSAmJiArK2Y7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiXG4iOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIlx1MjAyOCI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiXHUyMDI5IjoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiMCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKHQsIGYpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gIlwwIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gKHIgPSBvKHQsIGYsIGYgKyAyKSkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgZiArPSAyLCBlICs9IGEocik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA8IHQubGVuZ3RoICYmICJ7IiA9PT0gYyh0LCBmKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBzKHQsICJ9IiwgKytmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gaCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG8odCwgZiwgaCksIGYgPSBoICsgMQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgciA9IG8odCwgZiwgZiArIDQpLCBmICs9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gciB8fCAxMTE0MTExIDwgcikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBlICs9IHUocik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKGwsIDApKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaSA9IGYKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZSArIHAodCwgaSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgzNzIpKCJhc3luY0Rpc3Bvc2UiKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzNzMpLAogICAgICAgICAgICBvID0gZSgzOCksCiAgICAgICAgICAgIGkgPSBlKDM3NCksCiAgICAgICAgICAgIGEgPSBlKDQ0KS5mOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuLlN5bWJvbCB8fCAobi5TeW1ib2wgPSB7fSk7CiAgICAgICAgICAgIG8ociwgdCkgfHwgYShyLCB0LCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogaS5mKHQpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUgPSBlKDMpLCB0LmV4cG9ydHMgPSBlCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSA9IGUoMzMpLCByLmYgPSBlCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgzNzIpKCJkaXNwb3NlIikKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDIpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiU3ltYm9sIiwKICAgICAgICAgICAgc3RhdDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGlzUmVnaXN0ZXJlZFN5bWJvbDogZSgzNzcpCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oMjMpLAogICAgICAgICAgICBpID0gKG4gPSBuKDEzKSwgKG8gPSBvKCJTeW1ib2wiKSkua2V5Rm9yKSwKICAgICAgICAgICAgYSA9IG4oby5wcm90b3R5cGUudmFsdWVPZik7CiAgICAgICAgci5leHBvcnRzID0gby5pc1JlZ2lzdGVyZWRTeW1ib2wgfHwgZnVuY3Rpb24ocikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkoYShyKSkgIT09IHQKICAgICAgICAgICAgfSBjYXRjaCAocikgewogICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIlN5bWJvbCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBuYW1lOiAiaXNSZWdpc3RlcmVkU3ltYm9sIgogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNSZWdpc3RlcmVkOiBlKDM3NykKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJTeW1ib2wiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgaXNXZWxsS25vd25TeW1ib2w6IGUoMzgwKQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZm9yICh2YXIgbiA9IGUoMzQpLCBvID0gZSgyMyksIGkgPSBlKDEzKSwgYSA9IGUoMjIpLCB1ID0gZSgzMyksIGMgPSBvKCJTeW1ib2wiKSwgZiA9IGMuaXNXZWxsS25vd25TeW1ib2wsIHMgPSBvKCJPYmplY3QiLCAiZ2V0T3duUHJvcGVydHlOYW1lcyIpLCBwID0gaShjLnByb3RvdHlwZS52YWx1ZU9mKSwgbCA9IG4oIndrcyIpLCBoID0gMCwgdiA9IHMoYyksIHkgPSB2Lmxlbmd0aDsgaCA8IHk7IGgrKykgdHJ5IHsKICAgICAgICAgICAgdmFyIGQgPSB2W2hdOwogICAgICAgICAgICBhKGNbZF0pICYmIHUoZCkKICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKGYgJiYgZih0KSkgcmV0dXJuICEwOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IHAodCksIGUgPSAwLCBuID0gcyhsKSwgbyA9IG4ubGVuZ3RoOyBlIDwgbzsgZSsrKQogICAgICAgICAgICAgICAgICAgIGlmIChsW25bZV1dID09IHIpIHJldHVybiAhMAogICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICByZXR1cm4gITEKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIlN5bWJvbCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBuYW1lOiAiaXNXZWxsS25vd25TeW1ib2wiLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBpc1dlbGxLbm93bjogZSgzODApCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDM3MikoIm1hdGNoZXIiKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMzcyKSgibWV0YWRhdGEiKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMzcyKSgibWV0YWRhdGFLZXkiKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMzcyKSgib2JzZXJ2YWJsZSIpCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgzNzIpKCJwYXR0ZXJuTWF0Y2giKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMzcyKSgicmVwbGFjZUFsbCIpCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIzKSwKICAgICAgICAgICAgaSA9IG4oMjU5KSwKICAgICAgICAgICAgYSA9IG4oMTEwKSwKICAgICAgICAgICAgdSA9IG4oOTMpLAogICAgICAgICAgICBjID0gbig3OSksCiAgICAgICAgICAgIGYgPSB1LmFUeXBlZEFycmF5Q29uc3RydWN0b3I7CiAgICAgICAgKDAsIHUuZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZCkoImZyb21Bc3luYyIsIChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoLAogICAgICAgICAgICAgICAgdSA9IDEgPCBuID8gYXJndW1lbnRzWzFdIDogdCwKICAgICAgICAgICAgICAgIHMgPSAyIDwgbiA/IGFyZ3VtZW50c1syXSA6IHQ7CiAgICAgICAgICAgIHJldHVybiBuZXcobygiUHJvbWlzZSIpKSgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaShlKSwgdChhKHIsIHUsIHMpKQogICAgICAgICAgICB9KSkudGhlbigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGMoZihlKSwgdCkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSksICEwKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig5MyksCiAgICAgICAgICAgIGkgPSBuKDEyNikuZmlsdGVyUmVqZWN0LAogICAgICAgICAgICBhID0gbigzOTApLAogICAgICAgICAgICB1ID0gby5hVHlwZWRBcnJheTsKICAgICAgICAoMCwgby5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZmlsdGVyT3V0IiwgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgcmV0dXJuIHIgPSBpKHUodGhpcyksIHIsIDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzFdIDogdCksIGEodGhpcywgcikKICAgICAgICB9KSwgITApCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDc5KSwKICAgICAgICAgICAgbyA9IGUoMzkxKTsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIHJldHVybiBuKG8odCksIHIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg5MyksCiAgICAgICAgICAgIG8gPSBlKDM5MiksCiAgICAgICAgICAgIGkgPSBuLmFUeXBlZEFycmF5Q29uc3RydWN0b3IsCiAgICAgICAgICAgIGEgPSBuLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBpKG8odCwgYSh0KSkpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig0NiksCiAgICAgICAgICAgIGkgPSBuKDI1OSksCiAgICAgICAgICAgIGEgPSBuKDE2KSwKICAgICAgICAgICAgdSA9IG4oMzMpKCJzcGVjaWVzIik7CiAgICAgICAgci5leHBvcnRzID0gZnVuY3Rpb24ociwgZSkgewogICAgICAgICAgICB2YXIgbjsKICAgICAgICAgICAgcmV0dXJuIChyID0gbyhyKS5jb25zdHJ1Y3RvcikgPT09IHQgfHwgYShuID0gbyhyKVt1XSkgPyBlIDogaShuKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oOTMpLAogICAgICAgICAgICBpID0gbigxMjYpLmZpbHRlclJlamVjdCwKICAgICAgICAgICAgYSA9IG4oMzkwKSwKICAgICAgICAgICAgdSA9IG8uYVR5cGVkQXJyYXk7CiAgICAgICAgKDAsIG8uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbHRlclJlamVjdCIsIChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHJldHVybiByID0gaSh1KHRoaXMpLCByLCAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQpLCBhKHRoaXMsIHIpCiAgICAgICAgfSksICEwKQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig5MyksCiAgICAgICAgICAgIGkgPSBuKDEzMSksCiAgICAgICAgICAgIGEgPSBuKDM5MSksCiAgICAgICAgICAgIHUgPSBvLmFUeXBlZEFycmF5OwogICAgICAgICgwLCBvLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJncm91cEJ5IiwgKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGUgPSAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1sxXSA6IHQ7CiAgICAgICAgICAgIHJldHVybiBpKHUodGhpcyksIHIsIGUsIGEpCiAgICAgICAgfSksICEwKQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSg5MyksCiAgICAgICAgICAgIG8gPSBlKDYzKSwKICAgICAgICAgICAgaSA9IGUoMTAyKSwKICAgICAgICAgICAgYSA9IGUoNjApLAogICAgICAgICAgICB1ID0gZSgxMDMpLAogICAgICAgICAgICBjID0gZSg2MSksCiAgICAgICAgICAgIGYgPSAoZSA9IGUoNiksIG4uYVR5cGVkQXJyYXkpLAogICAgICAgICAgICBzID0gbi5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsCiAgICAgICAgICAgIHAgPSAobiA9IG4uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCwgTWF0aC5tYXgpLAogICAgICAgICAgICBsID0gTWF0aC5taW47CiAgICAgICAgbigidG9TcGxpY2VkIiwgKGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgdmFyIGUsIG4sIGgsIHYsIHksIGQgPSBmKHRoaXMpLAogICAgICAgICAgICAgICAgZyA9IHMoZCksCiAgICAgICAgICAgICAgICBiID0gbyhkKSwKICAgICAgICAgICAgICAgIG0gPSBhKHQsIGIpLAogICAgICAgICAgICAgICAgeCA9IGFyZ3VtZW50cy5sZW5ndGgsCiAgICAgICAgICAgICAgICB3ID0gMDsKICAgICAgICAgICAgaWYgKDAgPT09IHgpIGUgPSBuID0gMDsKICAgICAgICAgICAgZWxzZSBpZiAoMSA9PT0geCkgZSA9IDAsIG4gPSBiIC0gbTsKICAgICAgICAgICAgZWxzZSBpZiAobiA9IGwocChjKHIpLCAwKSwgYiAtIG0pLCBlID0geCAtIDIpCiAgICAgICAgICAgICAgICBmb3IgKHZhciBTID0gbmV3IGcoZSksIEEgPSBpKFMpLCBFID0gMjsgRSA8IHg7IEUrKykgaCA9IGFyZ3VtZW50c1tFXSwgU1tFIC0gMl0gPSBBID8gdShoKSA6ICtoOwogICAgICAgICAgICBmb3IgKHkgPSBuZXcgZyh2ID0gYiArIGUgLSBuKTsgdyA8IG07IHcrKykgeVt3XSA9IGRbd107CiAgICAgICAgICAgIGZvciAoOyB3IDwgbSArIGU7IHcrKykgeVt3XSA9IFNbdyAtIG1dOwogICAgICAgICAgICBmb3IgKDsgdyA8IHY7IHcrKykgeVt3XSA9IGRbdyArIG4gLSBlXTsKICAgICAgICAgICAgcmV0dXJuIHkKICAgICAgICB9KSwgISFlKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSBuZXcgSW50OEFycmF5KFsxXSksCiAgICAgICAgICAgICAgICByID0gdC50b1NwbGljZWQoMSwgMCwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFswXSA9IDIsIDMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIDIgIT09IHJbMF0gfHwgMyAhPT0gclsxXQogICAgICAgIH0pKSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpLAogICAgICAgICAgICBvID0gZSg5MyksCiAgICAgICAgICAgIGkgPSBlKDc5KSwKICAgICAgICAgICAgYSA9IChlID0gZSgxNDIpLCBvLmFUeXBlZEFycmF5KSwKICAgICAgICAgICAgdSA9IG8uZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLAogICAgICAgICAgICBjID0gKG8gPSBvLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsIG4oZSkpOwogICAgICAgIG8oInVuaXF1ZUJ5IiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGEodGhpcyksIGkodSh0aGlzKSwgYyh0aGlzLCB0KSkKICAgICAgICB9KSwgITApCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSgzOTgpLAogICAgICAgICAgICBpID0gZSgzOTkpLnJlbW92ZTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiV2Vha01hcCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRlbGV0ZUFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByID0gbyh0aGlzKSwgZSA9ICEwLCBuID0gMCwgYSA9IGFyZ3VtZW50cy5sZW5ndGg7IG4gPCBhOyBuKyspIHQgPSBpKHIsIGFyZ3VtZW50c1tuXSksIGUgPSBlICYmIHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gISFlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgzOTkpLmhhczsKICAgICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBuKHQpLCB0CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgxMyk7CiAgICAgICAgZSA9IFdlYWtNYXAucHJvdG90eXBlOwogICAgICAgIHQuZXhwb3J0cyA9IHsKICAgICAgICAgICAgV2Vha01hcDogV2Vha01hcCwKICAgICAgICAgICAgc2V0OiBuKGUuc2V0KSwKICAgICAgICAgICAgZ2V0OiBuKGUuZ2V0KSwKICAgICAgICAgICAgaGFzOiBuKGUuaGFzKSwKICAgICAgICAgICAgcmVtb3ZlOiBuKGUuZGVsZXRlKQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBlKDIpKHsKICAgICAgICAgICAgdGFyZ2V0OiAiV2Vha01hcCIsCiAgICAgICAgICAgIHN0YXQ6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICBmcm9tOiBlKDI1OCkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJXZWFrTWFwIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7IG9mOiBlKDI2OSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIHZhciBuID0gZSgyKSwKICAgICAgICAgICAgbyA9IGUoMzk4KSwKICAgICAgICAgICAgaSA9IChlID0gZSgzOTkpKS5nZXQsCiAgICAgICAgICAgIGEgPSBlLmhhcywKICAgICAgICAgICAgdSA9IGUuc2V0OwogICAgICAgIG4oewogICAgICAgICAgICB0YXJnZXQ6ICJXZWFrTWFwIiwKICAgICAgICAgICAgcHJvdG86ICEwLAogICAgICAgICAgICByZWFsOiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsKICAgICAgICAgICAgZW1wbGFjZTogZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgdmFyIGUsIG4gPSBvKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGEobiwgdCkgPyAoZSA9IGkobiwgdCksICJ1cGRhdGUiIGluIHIgJiYgKGUgPSByLnVwZGF0ZShlLCB0LCBuKSwgdShuLCB0LCBlKSksIGUpIDogKHIgPSByLmluc2VydCh0LCBuKSwgdShuLCB0LCByKSwgcikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIldlYWtNYXAiLAogICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgIHJlYWw6ICEwLAogICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgfSwgewogICAgICAgICAgICB1cHNlcnQ6IGUoMjc1KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg0MDUpLAogICAgICAgICAgICBpID0gZSg0MDYpLmFkZDsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiV2Vha1NldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGFkZEFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gbyh0aGlzKSwgciA9IDAsIGUgPSBhcmd1bWVudHMubGVuZ3RoOyByIDwgZTsgcisrKSBpKHQsIGFyZ3VtZW50c1tyXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNDA2KS5oYXM7CiAgICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gbih0KSwgdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoMTMpOwogICAgICAgIGUgPSBXZWFrU2V0LnByb3RvdHlwZTsKICAgICAgICB0LmV4cG9ydHMgPSB7CiAgICAgICAgICAgIFdlYWtTZXQ6IFdlYWtTZXQsCiAgICAgICAgICAgIGFkZDogbihlLmFkZCksCiAgICAgICAgICAgIGhhczogbihlLmhhcyksCiAgICAgICAgICAgIHJlbW92ZTogbihlLmRlbGV0ZSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgdmFyIG4gPSBlKDIpLAogICAgICAgICAgICBvID0gZSg0MDUpLAogICAgICAgICAgICBpID0gZSg0MDYpLnJlbW92ZTsKICAgICAgICBuKHsKICAgICAgICAgICAgdGFyZ2V0OiAiV2Vha1NldCIsCiAgICAgICAgICAgIHByb3RvOiAhMCwKICAgICAgICAgICAgcmVhbDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGRlbGV0ZUFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByID0gbyh0aGlzKSwgZSA9ICEwLCBuID0gMCwgYSA9IGFyZ3VtZW50cy5sZW5ndGg7IG4gPCBhOyBuKyspIHQgPSBpKHIsIGFyZ3VtZW50c1tuXSksIGUgPSBlICYmIHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gISFlCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgciwgZSkgewogICAgICAgIGUoMikoewogICAgICAgICAgICB0YXJnZXQ6ICJXZWFrU2V0IiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogITAKICAgICAgICB9LCB7CiAgICAgICAgICAgIGZyb206IGUoMjU4KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbih0LCByLCBlKSB7CiAgICAgICAgZSgyKSh7CiAgICAgICAgICAgIHRhcmdldDogIldlYWtTZXQiLAogICAgICAgICAgICBzdGF0OiAhMCwKICAgICAgICAgICAgZm9yY2VkOiAhMAogICAgICAgIH0sIHsgb2Y6IGUoMjY5KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihyLCBlLCBuKSB7CiAgICAgICAgdmFyIG8gPSBuKDIpLAogICAgICAgICAgICBpID0gbigzKSwKICAgICAgICAgICAgYSA9IG4oMjMpLAogICAgICAgICAgICB1ID0gbigxMCksCiAgICAgICAgICAgIGMgPSBuKDQ0KS5mLAogICAgICAgICAgICBmID0gbigzOCksCiAgICAgICAgICAgIHMgPSBuKDE1NyksCiAgICAgICAgICAgIHAgPSBuKDIwNSksCiAgICAgICAgICAgIGwgPSBuKDEwOCksCiAgICAgICAgICAgIGggPSBuKDQxMSksCiAgICAgICAgICAgIHYgPSBuKDEwNiksCiAgICAgICAgICAgIHkgPSBuKDUpLAogICAgICAgICAgICBkID0gbigzNSksCiAgICAgICAgICAgIGcgPSAiRE9NRXhjZXB0aW9uIiwKICAgICAgICAgICAgYiA9IGEoIkVycm9yIiksCiAgICAgICAgICAgIG0gPSBhKGcpLAogICAgICAgICAgICB4ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBzKHRoaXMsIHcpOwogICAgICAgICAgICAgICAgdmFyIHIgPSBsKChlID0gYXJndW1lbnRzLmxlbmd0aCkgPCAxID8gdCA6IGFyZ3VtZW50c1swXSksCiAgICAgICAgICAgICAgICAgICAgZSA9IGwoZSA8IDIgPyB0IDogYXJndW1lbnRzWzFdLCAiRXJyb3IiKTsKICAgICAgICAgICAgICAgIGUgPSBuZXcgbShyLCBlKTsKICAgICAgICAgICAgICAgIHJldHVybiAociA9IGIocikpLm5hbWUgPSBnLCBjKGUsICJzdGFjayIsIHUoMSwgdihyLnN0YWNrLCAxKSkpLCBwKGUsIHRoaXMsIHgpLCBlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHcgPSB4LnByb3RvdHlwZSA9IG0ucHJvdG90eXBlLAogICAgICAgICAgICBTID0gInN0YWNrIiBpbiBiKGcpOwogICAgICAgIG4gPSAic3RhY2siIGluIG5ldyBtKDEsIDIpLCBpID0gISghKGkgPSBtICYmIHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLCBnKSkgfHwgaS53cml0YWJsZSAmJiBpLmNvbmZpZ3VyYWJsZSksIG4gPSBTICYmICFpICYmICFuOwogICAgICAgIG8oewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAsCiAgICAgICAgICAgIGZvcmNlZDogZCB8fCBuCiAgICAgICAgfSwgewogICAgICAgICAgICBET01FeGNlcHRpb246IG4gPyB4IDogbQogICAgICAgIH0pOwogICAgICAgIHZhciBBLCBFID0gYShnKTsKICAgICAgICBpZiAoKGEgPSBFLnByb3RvdHlwZSkuY29uc3RydWN0b3IgIT09IEUpCiAgICAgICAgICAgIGZvciAodmFyIE8gaW4gZCB8fCBjKGEsICJjb25zdHJ1Y3RvciIsIHUoMSwgRSkpLCBoKSBmKGgsIE8pICYmIChmKEUsIE8gPSAoQSA9IGhbT10pLnMpIHx8IGMoRSwgTywgdSg2LCBBLmMpKSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICB0LmV4cG9ydHMgPSB7CiAgICAgICAgICAgIEluZGV4U2l6ZUVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiSU5ERVhfU0laRV9FUlIiLAogICAgICAgICAgICAgICAgYzogMSwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRE9NU3RyaW5nU2l6ZUVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiRE9NU1RSSU5HX1NJWkVfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDIsCiAgICAgICAgICAgICAgICBtOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogewogICAgICAgICAgICAgICAgczogIkhJRVJBUkNIWV9SRVFVRVNUX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAzLAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBXcm9uZ0RvY3VtZW50RXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJXUk9OR19ET0NVTUVOVF9FUlIiLAogICAgICAgICAgICAgICAgYzogNCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW52YWxpZENoYXJhY3RlckVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiSU5WQUxJRF9DSEFSQUNURVJfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDUsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5vRGF0YUFsbG93ZWRFcnJvcjogewogICAgICAgICAgICAgICAgczogIk5PX0RBVEFfQUxMT1dFRF9FUlIiLAogICAgICAgICAgICAgICAgYzogNiwKICAgICAgICAgICAgICAgIG06IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIiLAogICAgICAgICAgICAgICAgYzogNywKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTm90Rm91bmRFcnJvcjogewogICAgICAgICAgICAgICAgczogIk5PVF9GT1VORF9FUlIiLAogICAgICAgICAgICAgICAgYzogOCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTm90U3VwcG9ydGVkRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJOT1RfU1VQUE9SVEVEX0VSUiIsCiAgICAgICAgICAgICAgICBjOiA5LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBJblVzZUF0dHJpYnV0ZUVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiSU5VU0VfQVRUUklCVVRFX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxMCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW52YWxpZFN0YXRlRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJJTlZBTElEX1NUQVRFX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxMSwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3ludGF4RXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJTWU5UQVhfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDEyLAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJJTlZBTElEX01PRElGSUNBVElPTl9FUlIiLAogICAgICAgICAgICAgICAgYzogMTMsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5hbWVzcGFjZUVycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiTkFNRVNQQUNFX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxNCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW52YWxpZEFjY2Vzc0Vycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiSU5WQUxJRF9BQ0NFU1NfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDE1LAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBWYWxpZGF0aW9uRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJWQUxJREFUSU9OX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxNiwKICAgICAgICAgICAgICAgIG06IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVHlwZU1pc21hdGNoRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJUWVBFX01JU01BVENIX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxNywKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VjdXJpdHlFcnJvcjogewogICAgICAgICAgICAgICAgczogIlNFQ1VSSVRZX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAxOCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmV0d29ya0Vycm9yOiB7CiAgICAgICAgICAgICAgICBzOiAiTkVUV09SS19FUlIiLAogICAgICAgICAgICAgICAgYzogMTksCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEFib3J0RXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJBQk9SVF9FUlIiLAogICAgICAgICAgICAgICAgYzogMjAsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFVSTE1pc21hdGNoRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJVUkxfTUlTTUFUQ0hfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDIxLAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBRdW90YUV4Y2VlZGVkRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJRVU9UQV9FWENFRURFRF9FUlIiLAogICAgICAgICAgICAgICAgYzogMjIsCiAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpbWVvdXRFcnJvcjogewogICAgICAgICAgICAgICAgczogIlRJTUVPVVRfRVJSIiwKICAgICAgICAgICAgICAgIGM6IDIzLAogICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICB9LAogICAgICAgICAgICBJbnZhbGlkTm9kZVR5cGVFcnJvcjogewogICAgICAgICAgICAgICAgczogIklOVkFMSURfTk9ERV9UWVBFX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAyNCwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRGF0YUNsb25lRXJyb3I6IHsKICAgICAgICAgICAgICAgIHM6ICJEQVRBX0NMT05FX0VSUiIsCiAgICAgICAgICAgICAgICBjOiAyNSwKICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEooIlVuY2xvbmVhYmxlIHR5cGU6ICIgKyB0LCB1dCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGkodCwgcikgewogICAgICAgICAgICB0aHJvdyBuZXcgSigociB8fCAiQ2xvbmluZyIpICsgIiBvZiAiICsgdCArICIgY2Fubm90IGJlIHByb3Blcmx5IHBvbHlmaWxsZWQgaW4gdGhpcyBlbmdpbmUiLCB1dCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGEodCwgcikgewogICAgICAgICAgICByZXR1cm4gc3QgfHwgaShyKSwgc3QodCkKICAgICAgICB9CiAgICAgICAgdmFyIHUsIGMgPSBuKDM1KSwKICAgICAgICAgICAgZiA9IG4oMiksCiAgICAgICAgICAgIHMgPSBuKDMpLAogICAgICAgICAgICBwID0gbigyMyksCiAgICAgICAgICAgIGwgPSBuKDEzKSwKICAgICAgICAgICAgaCA9IG4oNiksCiAgICAgICAgICAgIHYgPSBuKDQwKSwKICAgICAgICAgICAgeSA9IG4oMjApLAogICAgICAgICAgICBkID0gbigxMTMpLAogICAgICAgICAgICBnID0gbigxNiksCiAgICAgICAgICAgIGIgPSBuKDE5KSwKICAgICAgICAgICAgbSA9IG4oMjIpLAogICAgICAgICAgICB4ID0gbigyMDIpLAogICAgICAgICAgICB3ID0gbig0NiksCiAgICAgICAgICAgIFMgPSBuKDg5KSwKICAgICAgICAgICAgQSA9IG4oMzgpLAogICAgICAgICAgICBFID0gbigxOTgpLAogICAgICAgICAgICBPID0gbig0MyksCiAgICAgICAgICAgIFIgPSBuKDYzKSwKICAgICAgICAgICAgSSA9IG4oNDEzKSwKICAgICAgICAgICAgayA9IG4oNDE0KSwKICAgICAgICAgICAgVCA9IG4oMTM2KSwKICAgICAgICAgICAgTSA9IG4oMzI1KSwKICAgICAgICAgICAgaiA9IG4oMTA3KSwKICAgICAgICAgICAgUCA9IG4oMTUxKSwKICAgICAgICAgICAgRCA9IHMuT2JqZWN0LAogICAgICAgICAgICBDID0gcy5BcnJheSwKICAgICAgICAgICAgXyA9IHMuRGF0ZSwKICAgICAgICAgICAgTiA9IHMuRXJyb3IsCiAgICAgICAgICAgIEYgPSBzLkV2YWxFcnJvciwKICAgICAgICAgICAgQiA9IHMuUmFuZ2VFcnJvciwKICAgICAgICAgICAgeiA9IHMuUmVmZXJlbmNlRXJyb3IsCiAgICAgICAgICAgIFUgPSBzLlN5bnRheEVycm9yLAogICAgICAgICAgICBMID0gcy5UeXBlRXJyb3IsCiAgICAgICAgICAgIFcgPSBzLlVSSUVycm9yLAogICAgICAgICAgICBLID0gcy5QZXJmb3JtYW5jZU1hcmssCiAgICAgICAgICAgIFYgPSAobiA9IHMuV2ViQXNzZW1ibHkpICYmIG4uQ29tcGlsZUVycm9yIHx8IE4sCiAgICAgICAgICAgIEcgPSBuICYmIG4uTGlua0Vycm9yIHx8IE4sCiAgICAgICAgICAgIEggPSBuICYmIG4uUnVudGltZUVycm9yIHx8IE4sCiAgICAgICAgICAgIEogPSBwKCJET01FeGNlcHRpb24iKSwKICAgICAgICAgICAgWSA9IFQuTWFwLAogICAgICAgICAgICAkID0gVC5oYXMsCiAgICAgICAgICAgIHEgPSBULmdldCwKICAgICAgICAgICAgWCA9IFQuc2V0LAogICAgICAgICAgICBRID0gTS5TZXQsCiAgICAgICAgICAgIFogPSBNLmFkZCwKICAgICAgICAgICAgdHQgPSBwKCJPYmplY3QiLCAia2V5cyIpLAogICAgICAgICAgICBydCA9IGwoW10ucHVzaCksCiAgICAgICAgICAgIGV0ID0gbCgoITApLnZhbHVlT2YpLAogICAgICAgICAgICBudCA9IGwoMS4udmFsdWVPZiksCiAgICAgICAgICAgIG90ID0gbCgiIi52YWx1ZU9mKSwKICAgICAgICAgICAgaXQgPSBsKF8ucHJvdG90eXBlLmdldFRpbWUpLAogICAgICAgICAgICBhdCA9IHYoInN0cnVjdHVyZWRDbG9uZSIpLAogICAgICAgICAgICB1dCA9ICJEYXRhQ2xvbmVFcnJvciIsCiAgICAgICAgICAgIGN0ID0gIlRyYW5zZmVycmluZyIsCiAgICAgICAgICAgIGZ0ID0gKGwgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIWgoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gbmV3IHMuU2V0KFs3XSksCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0KHIpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdChEKDcpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PSByIHx8ICFlLmhhcyg3KSB8fCAib2JqZWN0IiAhPSB0eXBlb2YgbiB8fCA3ICE9IG4KICAgICAgICAgICAgICAgIH0pKSAmJiB0CiAgICAgICAgICAgIH0sIHYgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIWgoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gbmV3IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKG4gJiYgbi5hID09PSBuLmIgJiYgbi5hIGluc3RhbmNlb2YgciAmJiBuLmEuc3RhY2sgPT09IGUuc3RhY2spCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwgcy5zdHJ1Y3R1cmVkQ2xvbmUpLAogICAgICAgICAgICBzdCA9IChjID0gYyB8fCAhdihmdCwgTikgfHwgIXYoZnQsIEopIHx8ICh1ID0gZnQsICEhaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHUobmV3IHMuQWdncmVnYXRlRXJyb3IoWzFdLCBhdCwgewogICAgICAgICAgICAgICAgICAgIGNhdXNlOiAzCiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICByZXR1cm4gIkFnZ3JlZ2F0ZUVycm9yIiAhPSB0Lm5hbWUgfHwgMSAhPSB0LmVycm9yc1swXSB8fCB0Lm1lc3NhZ2UgIT0gYXQgfHwgMyAhPSB0LmNhdXNlCiAgICAgICAgICAgIH0pKSksIHYgPSAhZnQgJiYgbCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBLKGF0LCB7CiAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB0CiAgICAgICAgICAgICAgICB9KS5kZXRhaWwKICAgICAgICAgICAgfSkpLCBsKGZ0KSB8fCB2KSwKICAgICAgICAgICAgcHQgPSBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgICAgICAgICBpZiAobShyKSAmJiBvKCJTeW1ib2wiKSwgIWIocikpIHJldHVybiByOwogICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJChlLCByKSkgcmV0dXJuIHEoZSwgcikKICAgICAgICAgICAgICAgIH0gZWxzZSBlID0gbmV3IFk7CiAgICAgICAgICAgICAgICB2YXIgbiwgdSwgYywgZiwgbCwgaCwgdiwgZCwgZywgeCwgdywgSSA9IFMociksCiAgICAgICAgICAgICAgICAgICAgVCA9ICExOwogICAgICAgICAgICAgICAgc3dpdGNoIChJKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQXJyYXkiOgogICAgICAgICAgICAgICAgICAgICAgICBjID0gQyhSKHIpKSwgVCA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJPYmplY3QiOgogICAgICAgICAgICAgICAgICAgICAgICBjID0ge30sIFQgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiTWFwIjoKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyBZLCBUID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIlNldCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuZXcgUSwgVCA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJSZWdFeHAiOgogICAgICAgICAgICAgICAgICAgICAgICBjID0gbmV3IFJlZ0V4cChyLnNvdXJjZSwgayhyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIkVycm9yIjoKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh1ID0gci5uYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJBZ2dyZWdhdGVFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHAoIkFnZ3JlZ2F0ZUVycm9yIikoW10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiRXZhbEVycm9yIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gRigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiUmFuZ2VFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IEIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJlZmVyZW5jZUVycm9yIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0geigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiU3ludGF4RXJyb3IiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBVKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJUeXBlRXJyb3IiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBMKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJVUklFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkNvbXBpbGVFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkxpbmtFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IEcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJ1bnRpbWVFcnJvciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IEgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IE4oKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIFQgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiRE9NRXhjZXB0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyBKKHIubWVzc2FnZSwgci5uYW1lKSwgVCA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJEYXRhVmlldyI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiSW50OEFycmF5IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJVaW50OEFycmF5IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJVaW50OENsYW1wZWRBcnJheSI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiSW50MTZBcnJheSI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiVWludDE2QXJyYXkiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIkludDMyQXJyYXkiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIlVpbnQzMkFycmF5IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJGbG9hdDMyQXJyYXkiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIkZsb2F0NjRBcnJheSI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQmlnSW50NjRBcnJheSI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQmlnVWludDY0QXJyYXkiOgogICAgICAgICAgICAgICAgICAgICAgICBuID0gc1tJXSwgYihuKSB8fCBpKEkpLCBjID0gbmV3IG4ocHQoci5idWZmZXIsIGUpLCByLmJ5dGVPZmZzZXQsICJEYXRhVmlldyIgPT09IEkgPyByLmJ5dGVMZW5ndGggOiByLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIkRPTVF1YWQiOgogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyBET01RdWFkKHB0KHIucDEsIGUpLCBwdChyLnAyLCBlKSwgcHQoci5wMywgZSksIHB0KHIucDQsIGUpKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gYShyLCBJKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIkZpbGUiOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3QpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gc3QociksIFMoYykgIT09IEkgJiYgKGMgPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7fQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbmV3IEZpbGUoW3JdLCByLm5hbWUsIHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHt9CiAgICAgICAgICAgICAgICAgICAgICAgIGMgfHwgaShJKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiRmlsZUxpc3QiOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBuZXcgcy5EYXRhVHJhbnNmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbmV3IHMuQ2xpcGJvYXJkRXZlbnQoIiIpLmNsaXBib2FyZERhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgdC5pdGVtcyAmJiB0LmZpbGVzID8gdCA6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gMCwgaCA9IFIocik7IGwgPCBoOyBsKyspIGYuaXRlbXMuYWRkKHB0KHJbbF0sIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBmLmZpbGVzCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBjID0gYShyLCBJKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiSW1hZ2VEYXRhIjoKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuZXcgSW1hZ2VEYXRhKHB0KHIuZGF0YSwgZSksIHIud2lkdGgsIHIuaGVpZ2h0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTcGFjZTogci5jb2xvclNwYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gYShyLCBJKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdCkgYyA9IHN0KHIpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHN3aXRjaCAoSSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiQmlnSW50IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gRChyLnZhbHVlT2YoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJCb29sZWFuIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gRChldChyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJOdW1iZXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBEKG50KHIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlN0cmluZyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IEQob3QocikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiRGF0ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyBfKGl0KHIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkFycmF5QnVmZmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobiA9IHMuRGF0YVZpZXcpIHx8ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHIuc2xpY2UgfHwgaShJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2Ygci5zbGljZSB8fCByLnJlc2l6YWJsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHIuYnl0ZUxlbmd0aCwgdyA9ICJtYXhCeXRlTGVuZ3RoIiBpbiByID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJ5dGVMZW5ndGg6IHIubWF4Qnl0ZUxlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IHQsIGMgPSBuZXcgQXJyYXlCdWZmZXIoaCwgdyksIGcgPSBuZXcgbihyKSwgeCA9IG5ldyBuKGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gMDsgbCA8IGg7IGwrKykgeC5zZXRVaW50OChsLCBnLmdldFVpbnQ4KGwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYyA9IHIuc2xpY2UoMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBKKCJBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZCIsIHV0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlNoYXJlZEFycmF5QnVmZmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkJsb2IiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSByLnNsaWNlKDAsIHIuc2l6ZSwgci50eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShJKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkRPTVBvaW50IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkRPTVBvaW50UmVhZE9ubHkiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBzW0ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuLmZyb21Qb2ludCA/IG4uZnJvbVBvaW50KHIpIDogbmV3IG4oci54LCByLnksIHIueiwgci53KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShJKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkRPTVJlY3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiRE9NUmVjdFJlYWRPbmx5IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gc1tJXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbi5mcm9tUmVjdCA/IG4uZnJvbVJlY3QocikgOiBuZXcgbihyLngsIHIueSwgci53aWR0aCwgci5oZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKEkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiRE9NTWF0cml4IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkRPTU1hdHJpeFJlYWRPbmx5IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gc1tJXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbi5mcm9tTWF0cml4ID8gbi5mcm9tTWF0cml4KHIpIDogbmV3IG4ocikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkoSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJBdWRpb0RhdGEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiVmlkZW9GcmFtZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeShyLmNsb25lKSB8fCBpKEkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSByLmNsb25lKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8oSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJDcm9wVGFyZ2V0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkNyeXB0b0tleSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkZpbGVTeXN0ZW1GaWxlSGFuZGxlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkZpbGVTeXN0ZW1IYW5kbGUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiR1BVQ29tcGlsYXRpb25JbmZvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkdQVUNvbXBpbGF0aW9uTWVzc2FnZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJJbWFnZUJpdG1hcCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJSVENDZXJ0aWZpY2F0ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJXZWJBc3NlbWJseS5Nb2R1bGUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkoSSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8oSSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKFgoZSwgciwgYyksIFQpIHN3aXRjaCAoSSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgIkFycmF5IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJPYmplY3QiOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHYgPSB0dChyKSwgbCA9IDAsIGggPSBSKHYpOyBsIDwgaDsgbCsrKSBkID0gdltsXSwgRShjLCBkLCBwdChyW2RdLCBlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIk1hcCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHIuZm9yRWFjaCgoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgWChjLCBwdChyLCBlKSwgcHQodCwgZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiU2V0IjoKICAgICAgICAgICAgICAgICAgICAgICAgci5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaKGMsIHB0KHQsIGUpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIkVycm9yIjoKICAgICAgICAgICAgICAgICAgICAgICAgTyhjLCAibWVzc2FnZSIsIHB0KHIubWVzc2FnZSwgZSkpLCBBKHIsICJjYXVzZSIpICYmIE8oYywgImNhdXNlIiwgcHQoci5jYXVzZSwgZSkpLCAiQWdncmVnYXRlRXJyb3IiID09IHUgJiYgKGMuZXJyb3JzID0gcHQoci5lcnJvcnMsIGUpKTsKICAgICAgICAgICAgICAgICAgICBjYXNlICJET01FeGNlcHRpb24iOgogICAgICAgICAgICAgICAgICAgICAgICBqICYmIE8oYywgInN0YWNrIiwgcHQoci5zdGFjaywgZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gYwogICAgICAgICAgICB9OwogICAgICAgIGYoewogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgc2hhbTogIVAsCiAgICAgICAgICAgIGZvcmNlZDogYwogICAgICAgIH0sIHsKICAgICAgICAgICAgc3RydWN0dXJlZENsb25lOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgbjsKICAgICAgICAgICAgICAgIHJldHVybiAobiA9IChuID0gMSA8IEkoYXJndW1lbnRzLmxlbmd0aCwgMSkgJiYgIWcoYXJndW1lbnRzWzFdKSA/IHcoYXJndW1lbnRzWzFdKSA6IHQpID8gbi50cmFuc2ZlciA6IHQpICE9PSB0ICYmIGZ1bmN0aW9uKHIsIGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWIocikpIHRocm93IEwoIlRyYW5zZmVyIG9wdGlvbiBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgc2VxdWVuY2UiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdOwogICAgICAgICAgICAgICAgICAgIHgociwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcnQobiwgdyh0KSkKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGEsIHUsIGMsIGYsIHAsIGwgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gUihuKTsKICAgICAgICAgICAgICAgICAgICBpZiAoUCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gZnQobiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgbCA8IGg7KSBYKGUsIG5bbF0sIGNbbCsrXSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbCA8IGg7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IG5bbCsrXSwgJChlLCBvKSkgdGhyb3cgbmV3IEooIkR1cGxpY2F0ZSB0cmFuc2ZlcmFibGUiLCB1dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGEgPSBTKG8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiSW1hZ2VCaXRtYXAiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gcy5PZmZzY3JlZW5DYW52YXMsIGQodSkgfHwgaShhLCBjdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocCA9IG5ldyB1KG8ud2lkdGgsIG8uaGVpZ2h0KSkuZ2V0Q29udGV4dCgiYml0bWFwcmVuZGVyZXIiKS50cmFuc2ZlckZyb21JbWFnZUJpdG1hcChvKSwgZiA9IHAudHJhbnNmZXJUb0ltYWdlQml0bWFwKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAocikge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiQXVkaW9EYXRhIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJWaWRlb0ZyYW1lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeShvLmNsb25lKSAmJiB5KG8uY2xvc2UpIHx8IGkoYSwgY3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG8uY2xvbmUoKSwgby5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkFycmF5QnVmZmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeShvLnRyYW5zZmVyKSB8fCBpKGEsIGN0KSwgZiA9IG8udHJhbnNmZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiTWVkaWFTb3VyY2VIYW5kbGUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIk1lc3NhZ2VQb3J0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJPZmZzY3JlZW5DYW52YXMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlJlYWRhYmxlU3RyZWFtIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJUcmFuc2Zvcm1TdHJlYW0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIldyaXRhYmxlU3RyZWFtIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShhLCBjdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID09PSB0KSB0aHJvdyBuZXcgSigiVGhpcyBvYmplY3QgY2Fubm90IGJlIHRyYW5zZmVycmVkOiAiICsgYSwgdXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWChlLCBvLCBmKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KG4sIGUgPSBuZXcgWSksIHB0KHIsIGUpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24odCwgcikgewogICAgICAgIHZhciBlID0gVHlwZUVycm9yOwogICAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgaWYgKHQgPCByKSB0aHJvdyBlKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOwogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0KICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNyksCiAgICAgICAgICAgIGkgPSBuKDM4KSwKICAgICAgICAgICAgYSA9IG4oMjQpLAogICAgICAgICAgICB1ID0gbig4NiksCiAgICAgICAgICAgIGMgPSBSZWdFeHAucHJvdG90eXBlOwogICAgICAgIHIuZXhwb3J0cyA9IGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgdmFyIGUgPSByLmZsYWdzOwogICAgICAgICAgICByZXR1cm4gZSAhPT0gdCB8fCAiZmxhZ3MiIGluIGMgfHwgaShyLCAiZmxhZ3MiKSB8fCAhYShjLCByKSA/IGUgOiBvKHUsIHIpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbigyKSwKICAgICAgICAgICAgaSA9IG4oMjMpLAogICAgICAgICAgICBhID0gbig2KSwKICAgICAgICAgICAgdSA9IG4oNDEzKSwKICAgICAgICAgICAgYyA9IG4oODgpLAogICAgICAgICAgICBmID0gKG4gPSBuKDQxNiksIGkoIlVSTCIpKTsKICAgICAgICBvKHsKICAgICAgICAgICAgdGFyZ2V0OiAiVVJMIiwKICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgIGZvcmNlZDogIShuICYmIGEoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZi5jYW5QYXJzZSgpCiAgICAgICAgICAgIH0pKSkKICAgICAgICB9LCB7CiAgICAgICAgICAgIGNhblBhcnNlOiBmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHUoYXJndW1lbnRzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICByID0gYyhyKSwgZSA9IGUgPCAyIHx8IGFyZ3VtZW50c1sxXSA9PT0gdCA/IHQgOiBjKGFyZ3VtZW50c1sxXSk7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIW5ldyBmKHIsIGUpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24ociwgZSwgbikgewogICAgICAgIHZhciBvID0gbig2KSwKICAgICAgICAgICAgaSA9IG4oMzMpLAogICAgICAgICAgICBhID0gbig1KSwKICAgICAgICAgICAgdSA9IG4oMzUpLAogICAgICAgICAgICBjID0gaSgiaXRlcmF0b3IiKTsKICAgICAgICByLmV4cG9ydHMgPSAhbygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciByID0gbmV3IFVSTCgiYj9hPTEmYj0yJmM9MyIsICJodHRwOi8vYSIpLAogICAgICAgICAgICAgICAgZSA9IHIuc2VhcmNoUGFyYW1zLAogICAgICAgICAgICAgICAgbiA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoImE9MSZhPTIiKSwKICAgICAgICAgICAgICAgIG8gPSAiIjsKICAgICAgICAgICAgcmV0dXJuIHIucGF0aG5hbWUgPSAiYyUyMGQiLCBlLmZvckVhY2goKGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIGUuZGVsZXRlKCJiIiksIG8gKz0gciArIHQKICAgICAgICAgICAgfSkpLCBuLmRlbGV0ZSgiYSIsIDIpLCB1ICYmICghci50b0pTT04gfHwgIW4uaGFzKCJhIiwgMSkgfHwgbi5oYXMoImEiLCAyKSkgfHwgIWUuc2l6ZSAmJiAodSB8fCAhYSkgfHwgIWUuc29ydCB8fCAiaHR0cDovL2EvYyUyMGQ/YT0xJmM9MyIgIT09IHIuaHJlZiB8fCAiMyIgIT09IGUuZ2V0KCJjIikgfHwgImE9MSIgIT09IFN0cmluZyhuZXcgVVJMU2VhcmNoUGFyYW1zKCI/YT0xIikpIHx8ICFlW2NdIHx8ICJhIiAhPT0gbmV3IFVSTCgiaHR0cHM6Ly9hQGIiKS51c2VybmFtZSB8fCAiYiIgIT09IG5ldyBVUkxTZWFyY2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcygiYT1iIikpLmdldCgiYSIpIHx8ICJ4bi0tZTFheWJjIiAhPT0gbmV3IFVSTCgiaHR0cDovL9GC0LXRgdGCIikuaG9zdCB8fCAiIyVEMCVCMSIgIT09IG5ldyBVUkwoImh0dHA6Ly9hI9CxIikuaGFzaCB8fCAiYTFjMyIgIT09IG8gfHwgIngiICE9PSBuZXcgVVJMKCJodHRwOi8veCIsIHQpLmhvc3QKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbywgaSA9IG4oNDcpLAogICAgICAgICAgICBhID0gbigxMyksCiAgICAgICAgICAgIHUgPSBuKDg4KSwKICAgICAgICAgICAgYyA9IG4oNDEzKSwKICAgICAgICAgICAgZiA9IGEoKG4gPSAobyA9IFVSTFNlYXJjaFBhcmFtcykucHJvdG90eXBlKS5hcHBlbmQpLAogICAgICAgICAgICBzID0gYShuLmRlbGV0ZSksCiAgICAgICAgICAgIHAgPSBhKG4uZm9yRWFjaCksCiAgICAgICAgICAgIGwgPSBhKFtdLnB1c2gpOwogICAgICAgIChvID0gbmV3IG8oImE9MSZhPTIiKSkuZGVsZXRlKCJhIiwgMSksIG8gKyAiIiAhPSAiYT0yIiAmJiBpKG4sICJkZWxldGUiLCAoZnVuY3Rpb24ocikgewogICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGgsCiAgICAgICAgICAgICAgICBuID0gZSA8IDIgPyB0IDogYXJndW1lbnRzWzFdOwogICAgICAgICAgICBpZiAoZSAmJiBuID09PSB0KSByZXR1cm4gcyh0aGlzLCByKTsKICAgICAgICAgICAgdmFyIG8gPSBbXTsKICAgICAgICAgICAgcCh0aGlzLCAoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgbChvLCB7CiAgICAgICAgICAgICAgICAgICAga2V5OiByLAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSksIGMoZSwgMSk7CiAgICAgICAgICAgIGZvciAodmFyIGksIGEgPSB1KHIpLCBoID0gdShuKSwgdiA9IDAsIHkgPSAwLCBkID0gITEsIGcgPSBvLmxlbmd0aDsgdiA8IGc7KSBpID0gb1t2KytdLCBkIHx8IGkua2V5ID09PSBhID8gKGQgPSAhMCwgcyh0aGlzLCBpLmtleSkpIDogeSsrOwogICAgICAgICAgICBmb3IgKDsgeSA8IGc7KShpID0gb1t5KytdKS5rZXkgPT09IGEgJiYgaS52YWx1ZSA9PT0gaCB8fCBmKHRoaXMsIGkua2V5LCBpLnZhbHVlKQogICAgICAgIH0pLCB7CiAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICB1bnNhZmU6ICEwCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHIsIGUsIG4pIHsKICAgICAgICB2YXIgbyA9IG4oNDcpLAogICAgICAgICAgICBpID0gbigxMyksCiAgICAgICAgICAgIGEgPSBuKDg4KSwKICAgICAgICAgICAgdSA9IG4oNDEzKSwKICAgICAgICAgICAgYyA9IFVSTFNlYXJjaFBhcmFtcywKICAgICAgICAgICAgZiA9IGkoKG4gPSBjLnByb3RvdHlwZSkuZ2V0QWxsKSwKICAgICAgICAgICAgcyA9IGkobi5oYXMpOwogICAgICAgIG5ldyBjKCJhPTEiKS5oYXMoImEiLCAyKSAmJiBvKG4sICJoYXMiLCAoZnVuY3Rpb24ocikgewogICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGgsCiAgICAgICAgICAgICAgICBuID0gZSA8IDIgPyB0IDogYXJndW1lbnRzWzFdOwogICAgICAgICAgICBpZiAoZSAmJiBuID09PSB0KSByZXR1cm4gcyh0aGlzLCByKTsKICAgICAgICAgICAgdmFyIG8gPSBmKHRoaXMsIHIpOwogICAgICAgICAgICB1KGUsIDEpOwogICAgICAgICAgICBmb3IgKHZhciBpID0gYShuKSwgYyA9IDA7IGMgPCBvLmxlbmd0aDspCiAgICAgICAgICAgICAgICBpZiAob1tjKytdID09PSBpKSByZXR1cm4gITA7CiAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgIH0pLCB7CiAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICB1bnNhZmU6ICEwCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICB2YXIgbiA9IGUoNSksCiAgICAgICAgICAgIG8gPSBlKDEzKSwKICAgICAgICAgICAgaSA9IGUoODUpLAogICAgICAgICAgICBhID0gbygoZSA9IFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUpLmZvckVhY2gpOwogICAgICAgICFuIHx8ICJzaXplIiBpbiBlIHx8IGkoZSwgInNpemUiLCB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gYSh0aGlzLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdCsrCiAgICAgICAgICAgICAgICB9KSksIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgZW51bWVyYWJsZTogITAKICAgICAgICB9KQogICAgfV0sIG4uYyA9IGUsIG4uZCA9IGZ1bmN0aW9uKHQsIHIsIGUpIHsKICAgICAgICBuLm8odCwgcikgfHwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIHIsIHsKICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgIGdldDogZQogICAgICAgIH0pCiAgICB9LCBuLnIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBTeW1ib2wudG9TdHJpbmdUYWcgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFN5bWJvbC50b1N0cmluZ1RhZywgewogICAgICAgICAgICB2YWx1ZTogIk1vZHVsZSIKICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICB9KQogICAgfSwgbi50ID0gZnVuY3Rpb24odCwgcikgewogICAgICAgIGlmICgxICYgciAmJiAodCA9IG4odCkpLCA4ICYgcikgcmV0dXJuIHQ7CiAgICAgICAgaWYgKDQgJiByICYmICJvYmplY3QiID09IHR5cGVvZiB0ICYmIHQgJiYgdC5fX2VzTW9kdWxlKSByZXR1cm4gdDsKICAgICAgICB2YXIgZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAgICAgICAgaWYgKG4ucihlKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJkZWZhdWx0IiwgewogICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgICAgICB2YWx1ZTogdAogICAgICAgICAgICB9KSwgMiAmIHIgJiYgInN0cmluZyIgIT0gdHlwZW9mIHQpCiAgICAgICAgICAgIGZvciAodmFyIG8gaW4gdCkgbi5kKGUsIG8sIGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0W3JdCiAgICAgICAgICAgIH0uYmluZChudWxsLCBvKSk7CiAgICAgICAgcmV0dXJuIGUKICAgIH0sIG4ubiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICB2YXIgciA9IHQgJiYgdC5fX2VzTW9kdWxlID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0LmRlZmF1bHQKICAgICAgICB9IDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gbi5kKHIsICJhIiwgciksIHIKICAgIH0sIG4ubyA9IGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpCiAgICB9LCBuLnAgPSAiIiwgbihuLnMgPSAwKQp9KCk7"}},"time_used":106,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":83,"receive":23,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css?family=Work+Sans%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic\u0026display=auto\u0026ver=6.4.3","fqdn":"fonts.googleapis.com","domain":"fonts.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.787Z","timestamp":1785128398787,"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 /css?family=Work+Sans%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic\u0026display=auto\u0026ver=6.4.3 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://circuittradetech.com/\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: Mon, 27 Jul 2026 04:59:58 GMT\r\ndate: Mon, 27 Jul 2026 04:59:58 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":21357,"size_decoded":1457,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"36e08acf9200466f4b7773c2ca332e5e","sha1":"38c4271ed5e97029d248d8a8535f4b05c4cc7326","sha256":"4e42ea0caa5739b2adb380749531f497b0df9fb97efc4f8fb489a4fd9cd68c9f","sha512":"757f5e0899b5f9bec02e6f6cf4e6cd68d59566eb72daeedd1331985077e20c9d7898ebf05ae8a218f5957e6a1a32be28d81ab3aa33208ef7e4eda1027b7b5a19","ssdeep":"384:cm3h3A3+m05bmnyYmyrlmVMCmoFvmLOsmW3Jmp4W3nEF50TeFwfx:Z90inEK","tlshash":"d6a2fe51443aa154a7432ed673de3d329e9eb190b085c434bffe2c89fc6ac2a627570c","first_seen":"2025-09-21T16:47:34.875014Z","last_seen":"2026-07-27T05:30:59.826147Z","times_seen":401,"resource_available":false,"data":"LyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lxel93TmFoR0FkcVE0M1JoX2VaRGt2XzF3NEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRsdl8xdzRBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZcXpfd05haEdBZHFRNDNSaF9lWkRydl8wLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1dvcmsgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3dvcmtzYW5zL3YyNC9RR1lzel93TmFoR0FkcVE0M1JoX2M2RHBwX2sud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9jcURwcF9rLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogOTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy93b3Jrc2Fucy92MjQvUUdZc3pfd05haEdBZHFRNDNSaF9mS0RwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0K"}},"time_used":87,"timings":{"blocked":-1,"dns":2,"connect":16,"send":0,"wait":35,"receive":0,"ssl":33},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/element.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.830Z","timestamp":1785128398830,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-includes/js/dist/element.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 5472\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 20:43:01 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"52da-67c3620e-5347d925901fb00d;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 461817\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: af7cd6ce40a8da38442c7b189fa93901-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":21210,"size_decoded":6060,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (1460)","md5":"fe78e1c44bcc0b5c36ed62a0ae34212b","sha1":"2c321c67154e270dea100f13165124a1edfee7ec","sha256":"e7c4e9c7923ab174fa7fcd64fcc92e50de92af47601da80a704a95058d886bac","sha512":"660a89d184a60dec81d84fbb00cf0c5357fa76ed5494c31bbd9217d0e6d86f25beb99f9b2be71e378b3b2777626f51826828338d27b54fbf91ade4b5e58814b9","ssdeep":"192:rn1BqilsPomVavyp2lXcJb+W+YEbnnE4aKxpNaws1dba10I1lmkGn4isjZqHyF4/:7W750VlXsd6fYck/GIySVDiawrGrQm","tlshash":"b3924f9cb9f265274243f0bd95afc408b239540b255dad587a0c81746fae83c86f7bec","first_seen":"2026-07-27T03:56:42.567678Z","last_seen":"2026-07-27T05:01:06.102166Z","times_seen":3,"resource_available":false,"data":"LyohIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCAqLyAhIGZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwogICAgdmFyIGUgPSB7CiAgICAgICAgICAgIDQ0NzA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbigxODUwKTsKICAgICAgICAgICAgICAgIHQucyA9IHIuY3JlYXRlUm9vdCwgdC5hID0gci5oeWRyYXRlUm9vdAogICAgICAgICAgICB9LAogICAgICAgICAgICAxODUwOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSB3aW5kb3cuUmVhY3RET00KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdCA9IHt9OwoKICAgIGZ1bmN0aW9uIG4ocikgewogICAgICAgIHZhciBvID0gdFtyXTsKICAgICAgICBpZiAodm9pZCAwICE9PSBvKSByZXR1cm4gby5leHBvcnRzOwogICAgICAgIHZhciBpID0gdFtyXSA9IHsKICAgICAgICAgICAgZXhwb3J0czoge30KICAgICAgICB9OwogICAgICAgIHJldHVybiBlW3JdKGksIGkuZXhwb3J0cywgbiksIGkuZXhwb3J0cwogICAgfQogICAgbi5kID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIGZvciAodmFyIHIgaW4gdCkgbi5vKHQsIHIpICYmICFuLm8oZSwgcikgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHsKICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgIGdldDogdFtyXQogICAgICAgIH0pCiAgICB9LCBuLm8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCB0KQogICAgfSwgbi5yID0gZnVuY3Rpb24oZSkgewogICAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiBTeW1ib2wgJiYgU3ltYm9sLnRvU3RyaW5nVGFnICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsKICAgICAgICAgICAgdmFsdWU6ICJNb2R1bGUiCiAgICAgICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgfSkKICAgIH07CiAgICB2YXIgciA9IHt9OwogICAgISBmdW5jdGlvbigpIHsKICAgICAgICBuLnIociksIG4uZChyLCB7CiAgICAgICAgICAgIENoaWxkcmVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLkNoaWxkcmVuCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbXBvbmVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5Db21wb25lbnQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRnJhZ21lbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuRnJhZ21lbnQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUGxhdGZvcm06IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUmF3SFRNTDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gQQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdHJpY3RNb2RlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLlN0cmljdE1vZGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VzcGVuc2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuU3VzcGVuc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY2xvbmVFbGVtZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmNsb25lRWxlbWVudAogICAgICAgICAgICB9LAogICAgICAgICAgICBjb25jYXRDaGlsZHJlbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaAogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGVDb250ZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmNyZWF0ZUNvbnRleHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlRWxlbWVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5jcmVhdGVFbGVtZW50CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZUludGVycG9sYXRlRWxlbWVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcAogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGVQb3J0YWw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGcuY3JlYXRlUG9ydGFsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZVJlZjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5jcmVhdGVSZWYKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3JlYXRlUm9vdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geS5zCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZpbmRET01Ob2RlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBnLmZpbmRET01Ob2RlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZsdXNoU3luYzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZy5mbHVzaFN5bmMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZm9yd2FyZFJlZjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5mb3J3YXJkUmVmCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGh5ZHJhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGcuaHlkcmF0ZQogICAgICAgICAgICB9LAogICAgICAgICAgICBoeWRyYXRlUm9vdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geS5hCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGlzRW1wdHlFbGVtZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB2CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGlzVmFsaWRFbGVtZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmlzVmFsaWRFbGVtZW50CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxhenk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUubGF6eQogICAgICAgICAgICB9LAogICAgICAgICAgICBtZW1vOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLm1lbW8KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBnLnJlbmRlcgogICAgICAgICAgICB9LAogICAgICAgICAgICByZW5kZXJUb1N0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gRwogICAgICAgICAgICB9LAogICAgICAgICAgICBzdGFydFRyYW5zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuc3RhcnRUcmFuc2l0aW9uCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN3aXRjaENoaWxkcmVuTm9kZU5hbWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdW5tb3VudENvbXBvbmVudEF0Tm9kZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZy51bm1vdW50Q29tcG9uZW50QXROb2RlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVzZUNhbGxiYWNrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnVzZUNhbGxiYWNrCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVzZUNvbnRleHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUudXNlQ29udGV4dAogICAgICAgICAgICB9LAogICAgICAgICAgICB1c2VEZWJ1Z1ZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnVzZURlYnVnVmFsdWUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlRGVmZXJyZWRWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS51c2VEZWZlcnJlZFZhbHVlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVzZUVmZmVjdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS51c2VFZmZlY3QKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlSWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUudXNlSWQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlSW1wZXJhdGl2ZUhhbmRsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS51c2VJbXBlcmF0aXZlSGFuZGxlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVzZUluc2VydGlvbkVmZmVjdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS51c2VJbnNlcnRpb25FZmZlY3QKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlTGF5b3V0RWZmZWN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnVzZUxheW91dEVmZmVjdAogICAgICAgICAgICB9LAogICAgICAgICAgICB1c2VNZW1vOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnVzZU1lbW8KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlUmVkdWNlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS51c2VSZWR1Y2VyCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVzZVJlZjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS51c2VSZWYKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlU3RhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUudXNlU3RhdGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlU3luY0V4dGVybmFsU3RvcmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUudXNlU3luY0V4dGVybmFsU3RvcmUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXNlVHJhbnNpdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS51c2VUcmFuc2l0aW9uCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB2YXIgZSA9IHdpbmRvdy5SZWFjdDsKICAgICAgICBsZXQgdCwgbywgaSwgYTsKICAgICAgICBjb25zdCB1ID0gLzwoXC8pPyhcdyspXHMqKFwvKT8+L2c7CgogICAgICAgIGZ1bmN0aW9uIHMoZSwgdCwgbiwgciwgbykgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgZWxlbWVudDogZSwKICAgICAgICAgICAgICAgIHRva2VuU3RhcnQ6IHQsCiAgICAgICAgICAgICAgICB0b2tlbkxlbmd0aDogbiwKICAgICAgICAgICAgICAgIHByZXZPZmZzZXQ6IHIsCiAgICAgICAgICAgICAgICBsZWFkaW5nVGV4dFN0YXJ0OiBvLAogICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY29uc3QgYyA9IHQgPT4gewogICAgICAgICAgICBjb25zdCBuID0gIm9iamVjdCIgPT0gdHlwZW9mIHQsCiAgICAgICAgICAgICAgICByID0gbiAmJiBPYmplY3QudmFsdWVzKHQpOwogICAgICAgICAgICByZXR1cm4gbiAmJiByLmxlbmd0aCAmJiByLmV2ZXJ5KCh0ID0+ICgwLCBlLmlzVmFsaWRFbGVtZW50KSh0KSkpCiAgICAgICAgfTsKCiAgICAgICAgZnVuY3Rpb24gbChuKSB7CiAgICAgICAgICAgIGNvbnN0IHIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdS5leGVjKHQpOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBlKSByZXR1cm4gWyJuby1tb3JlLXRva2VucyJdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBlLmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBbciwgbywgaSwgYV0gPSBlLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gci5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHJldHVybiBbInNlbGYtY2xvc2VkIiwgaSwgbiwgc107CiAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHJldHVybiBbImNsb3NlciIsIGksIG4sIHNdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBbIm9wZW5lciIsIGksIG4sIHNdCiAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICBbYywgbCwgcCwgaF0gPSByLAogICAgICAgICAgICAgICAgbSA9IGEubGVuZ3RoLAogICAgICAgICAgICAgICAgZyA9IHAgPiBvID8gbyA6IG51bGw7CiAgICAgICAgICAgIGlmICghbltsXSkgcmV0dXJuIGYoKSwgITE7CiAgICAgICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICAgICAgICAgY2FzZSAibm8tbW9yZS10b2tlbnMiOgogICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYWRpbmdUZXh0U3RhcnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlblN0YXJ0OiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBhLnBvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpLnB1c2godC5zdWJzdHIoZSwgbikpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmKCksICExOwogICAgICAgICAgICAgICAgY2FzZSAic2VsZi1jbG9zZWQiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSBtID8gKG51bGwgIT09IGcgJiYgaS5wdXNoKHQuc3Vic3RyKGcsIHAgLSBnKSksIGkucHVzaChuW2xdKSwgbyA9IHAgKyBoLCAhMCkgOiAoZChzKG5bbF0sIHAsIGgpKSwgbyA9IHAgKyBoLCAhMCk7CiAgICAgICAgICAgICAgICBjYXNlICJvcGVuZXIiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnB1c2gocyhuW2xdLCBwLCBoLCBwICsgaCwgZykpLCBvID0gcCArIGgsICEwOwogICAgICAgICAgICAgICAgY2FzZSAiY2xvc2VyIjoKICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gbSkgcmV0dXJuIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYWRpbmdUZXh0U3RhcnQ6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2T2Zmc2V0OiB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5TdGFydDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBjCiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBhLnBvcCgpLCBsID0gbiA/IHQuc3Vic3RyKHUsIG4gLSB1KSA6IHQuc3Vic3RyKHUpOwogICAgICAgICAgICAgICAgICAgICAgICBsICYmIGMucHVzaChsKTsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gbyAmJiBpLnB1c2godC5zdWJzdHIobywgcyAtIG8pKTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5wdXNoKCgwLCBlLmNsb25lRWxlbWVudCkociwgbnVsbCwgLi4uYykpCiAgICAgICAgICAgICAgICAgICAgfShwKSwgbyA9IHAgKyBoLCAhMDsKICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gYS5wb3AoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQuc3Vic3RyKHIucHJldk9mZnNldCwgcCAtIHIucHJldk9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgci5jaGlsZHJlbi5wdXNoKHUpLCByLnByZXZPZmZzZXQgPSBwICsgaDsKICAgICAgICAgICAgICAgICAgICBjb25zdCBjID0gcyhyLmVsZW1lbnQsIHIudG9rZW5TdGFydCwgci50b2tlbkxlbmd0aCwgcCArIGgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBjLmNoaWxkcmVuID0gci5jaGlsZHJlbiwgZChjKSwgbyA9IHAgKyBoLCAhMDsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYoKSwgITEKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZigpIHsKICAgICAgICAgICAgY29uc3QgZSA9IHQubGVuZ3RoIC0gbzsKICAgICAgICAgICAgMCAhPT0gZSAmJiBpLnB1c2godC5zdWJzdHIobywgZSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBkKG4pIHsKICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgZWxlbWVudDogciwKICAgICAgICAgICAgICAgIHRva2VuU3RhcnQ6IG8sCiAgICAgICAgICAgICAgICB0b2tlbkxlbmd0aDogaSwKICAgICAgICAgICAgICAgIHByZXZPZmZzZXQ6IHUsCiAgICAgICAgICAgICAgICBjaGlsZHJlbjogcwogICAgICAgICAgICB9ID0gbiwgYyA9IGFbYS5sZW5ndGggLSAxXSwgbCA9IHQuc3Vic3RyKGMucHJldk9mZnNldCwgbyAtIGMucHJldk9mZnNldCk7CiAgICAgICAgICAgIGwgJiYgYy5jaGlsZHJlbi5wdXNoKGwpLCBjLmNoaWxkcmVuLnB1c2goKDAsIGUuY2xvbmVFbGVtZW50KShyLCBudWxsLCAuLi5zKSksIGMucHJldk9mZnNldCA9IHUgfHwgbyArIGkKICAgICAgICB9CiAgICAgICAgdmFyIHAgPSAobiwgcikgPT4gewogICAgICAgICAgICBpZiAodCA9IG4sIG8gPSAwLCBpID0gW10sIGEgPSBbXSwgdS5sYXN0SW5kZXggPSAwLCAhYyhyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGNvbnZlcnNpb25NYXAgcHJvdmlkZWQgaXMgbm90IHZhbGlkLiBJdCBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIHZhbHVlcyB0aGF0IGFyZSBXUEVsZW1lbnRzIik7CiAgICAgICAgICAgIGRvIHt9IHdoaWxlIChsKHIpKTsKICAgICAgICAgICAgcmV0dXJuICgwLCBlLmNyZWF0ZUVsZW1lbnQpKGUuRnJhZ21lbnQsIG51bGwsIC4uLmkpCiAgICAgICAgfTsKCiAgICAgICAgZnVuY3Rpb24gaCguLi50KSB7CiAgICAgICAgICAgIHJldHVybiB0LnJlZHVjZSgoKHQsIG4sIHIpID0+IChlLkNoaWxkcmVuLmZvckVhY2gobiwgKChuLCBvKSA9PiB7CiAgICAgICAgICAgICAgICBuICYmICJzdHJpbmciICE9IHR5cGVvZiBuICYmIChuID0gKDAsIGUuY2xvbmVFbGVtZW50KShuLCB7CiAgICAgICAgICAgICAgICAgICAga2V5OiBbciwgb10uam9pbigpCiAgICAgICAgICAgICAgICB9KSksIHQucHVzaChuKQogICAgICAgICAgICB9KSksIHQpKSwgW10pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtKHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIHQgJiYgZS5DaGlsZHJlbi5tYXAodCwgKCh0LCByKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQgPyAudmFsdWVPZigpKSByZXR1cm4gKDAsIGUuY3JlYXRlRWxlbWVudCkobiwgewogICAgICAgICAgICAgICAgICAgIGtleTogcgogICAgICAgICAgICAgICAgfSwgdCk7CiAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IG8sCiAgICAgICAgICAgICAgICAgICAgLi4uaQogICAgICAgICAgICAgICAgfSA9IHQucHJvcHM7CiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIGUuY3JlYXRlRWxlbWVudCkobiwgewogICAgICAgICAgICAgICAgICAgIGtleTogciwKICAgICAgICAgICAgICAgICAgICAuLi5pCiAgICAgICAgICAgICAgICB9LCBvKQogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICAgICAgdmFyIGcgPSBuKDE4NTApLAogICAgICAgICAgICB5ID0gbig0NDcwKTsKICAgICAgICBjb25zdCB2ID0gZSA9PiAibnVtYmVyIiAhPSB0eXBlb2YgZSAmJiAoInN0cmluZyIgPT0gdHlwZW9mIGUgPyAudmFsdWVPZigpIHx8IEFycmF5LmlzQXJyYXkoZSkgPyAhZS5sZW5ndGggOiAhZSk7CiAgICAgICAgdmFyIGIgPSB7CiAgICAgICAgICAgIE9TOiAid2ViIiwKICAgICAgICAgICAgc2VsZWN0OiBlID0+ICJ3ZWIiIGluIGUgPyBlLndlYiA6IGUuZGVmYXVsdCwKICAgICAgICAgICAgaXNXZWI6ICEwCiAgICAgICAgfTsKICAgICAgICAvKiEKICAgICAgICAgKiBpcy1wbGFpbi1vYmplY3QgPGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hsaW5rZXJ0L2lzLXBsYWluLW9iamVjdD4KICAgICAgICAgKgogICAgICAgICAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBKb24gU2NobGlua2VydC4KICAgICAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gayhlKSB7CiAgICAgICAgICAgIHJldHVybiAiW29iamVjdCBPYmplY3RdIiA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpCiAgICAgICAgfQogICAgICAgIHZhciB3ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB3ID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCBuID0gMSwgciA9IGFyZ3VtZW50cy5sZW5ndGg7IG4gPCByOyBuKyspCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyBpbiB0ID0gYXJndW1lbnRzW25dKSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwgbykgJiYgKGVbb10gPSB0W29dKTsKICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0sIHcuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgIH07CiAgICAgICAgT2JqZWN0LmNyZWF0ZTsKICAgICAgICBPYmplY3QuY3JlYXRlOwogICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciAmJiBTdXBwcmVzc2VkRXJyb3I7CgogICAgICAgIGZ1bmN0aW9uIFMoZSkgewogICAgICAgICAgICByZXR1cm4gZS50b0xvd2VyQ2FzZSgpCiAgICAgICAgfQogICAgICAgIHZhciB4ID0gWy8oW2EtejAtOV0pKFtBLVpdKS9nLCAvKFtBLVpdKShbQS1aXVthLXpdKS9nXSwKICAgICAgICAgICAgTyA9IC9bXkEtWjAtOV0rL2dpOwoKICAgICAgICBmdW5jdGlvbiBDKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBSZWdFeHAgPyBlLnJlcGxhY2UodCwgbikgOiB0LnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUucmVwbGFjZSh0LCBuKQogICAgICAgICAgICB9KSwgZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEUoZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0ICYmICh0ID0ge30pLAogICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gdCAmJiAodCA9IHt9KTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gdC5zcGxpdFJlZ2V4cCwgciA9IHZvaWQgMCA9PT0gbiA/IHggOiBuLCBvID0gdC5zdHJpcFJlZ2V4cCwgaSA9IHZvaWQgMCA9PT0gbyA/IE8gOiBvLCBhID0gdC50cmFuc2Zvcm0sIHUgPSB2b2lkIDAgPT09IGEgPyBTIDogYSwgcyA9IHQuZGVsaW1pdGVyLCBjID0gdm9pZCAwID09PSBzID8gIiAiIDogcywgbCA9IEMoQyhlLCByLCAiJDFcMCQyIiksIGksICJcMCIpLCBmID0gMCwgZCA9IGwubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAiXDAiID09PSBsLmNoYXJBdChmKTspIGYrKzsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsKICAgICAgICAgICAgICAgICAgICAgICAgIlwwIiA9PT0gbC5jaGFyQXQoZCAtIDEpOykgZC0tOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBsLnNsaWNlKGYsIGQpLnNwbGl0KCJcMCIpLm1hcCh1KS5qb2luKGMpCiAgICAgICAgICAgICAgICB9KGUsIHcoewogICAgICAgICAgICAgICAgICAgIGRlbGltaXRlcjogIi4iCiAgICAgICAgICAgICAgICB9LCB0KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFIoZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0ICYmICh0ID0ge30pLCBFKGUsIHcoewogICAgICAgICAgICAgICAgZGVsaW1pdGVyOiAiLSIKICAgICAgICAgICAgfSwgdCkpCiAgICAgICAgfQogICAgICAgIHZhciBUID0gd2luZG93LndwLmVzY2FwZUh0bWw7CgogICAgICAgIGZ1bmN0aW9uIEEoewogICAgICAgICAgICBjaGlsZHJlbjogdCwKICAgICAgICAgICAgLi4ubgogICAgICAgIH0pIHsKICAgICAgICAgICAgbGV0IHIgPSAiIjsKICAgICAgICAgICAgcmV0dXJuIGUuQ2hpbGRyZW4udG9BcnJheSh0KS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBlICYmICIiICE9PSBlLnRyaW0oKSAmJiAociArPSBlKQogICAgICAgICAgICB9KSksICgwLCBlLmNyZWF0ZUVsZW1lbnQpKCJkaXYiLCB7CiAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogewogICAgICAgICAgICAgICAgICAgIF9faHRtbDogcgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIC4uLm4KICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgY29uc3QgewogICAgICAgICAgICBQcm92aWRlcjogTSwKICAgICAgICAgICAgQ29uc3VtZXI6IEkKICAgICAgICB9ID0gKDAsIGUuY3JlYXRlQ29udGV4dCkodm9pZCAwKSwgTCA9ICgwLCBlLmZvcndhcmRSZWYpKCgoKSA9PiBudWxsKSksIFAgPSBuZXcgU2V0KFsic3RyaW5nIiwgImJvb2xlYW4iLCAibnVtYmVyIl0pLCBqID0gbmV3IFNldChbImFyZWEiLCAiYmFzZSIsICJiciIsICJjb2wiLCAiY29tbWFuZCIsICJlbWJlZCIsICJociIsICJpbWciLCAiaW5wdXQiLCAia2V5Z2VuIiwgImxpbmsiLCAibWV0YSIsICJwYXJhbSIsICJzb3VyY2UiLCAidHJhY2siLCAid2JyIl0pLCBIID0gbmV3IFNldChbImFsbG93ZnVsbHNjcmVlbiIsICJhbGxvd3BheW1lbnRyZXF1ZXN0IiwgImFsbG93dXNlcm1lZGlhIiwgImFzeW5jIiwgImF1dG9mb2N1cyIsICJhdXRvcGxheSIsICJjaGVja2VkIiwgImNvbnRyb2xzIiwgImRlZmF1bHQiLCAiZGVmZXIiLCAiZGlzYWJsZWQiLCAiZG93bmxvYWQiLCAiZm9ybW5vdmFsaWRhdGUiLCAiaGlkZGVuIiwgImlzbWFwIiwgIml0ZW1zY29wZSIsICJsb29wIiwgIm11bHRpcGxlIiwgIm11dGVkIiwgIm5vbW9kdWxlIiwgIm5vdmFsaWRhdGUiLCAib3BlbiIsICJwbGF5c2lubGluZSIsICJyZWFkb25seSIsICJyZXF1aXJlZCIsICJyZXZlcnNlZCIsICJzZWxlY3RlZCIsICJ0eXBlbXVzdG1hdGNoIl0pLCB6ID0gbmV3IFNldChbImF1dG9jYXBpdGFsaXplIiwgImF1dG9jb21wbGV0ZSIsICJjaGFyc2V0IiwgImNvbnRlbnRlZGl0YWJsZSIsICJjcm9zc29yaWdpbiIsICJkZWNvZGluZyIsICJkaXIiLCAiZHJhZ2dhYmxlIiwgImVuY3R5cGUiLCAiZm9ybWVuY3R5cGUiLCAiZm9ybW1ldGhvZCIsICJodHRwLWVxdWl2IiwgImlucHV0bW9kZSIsICJraW5kIiwgIm1ldGhvZCIsICJwcmVsb2FkIiwgInNjb3BlIiwgInNoYXBlIiwgInNwZWxsY2hlY2siLCAidHJhbnNsYXRlIiwgInR5cGUiLCAid3JhcCJdKSwgRCA9IG5ldyBTZXQoWyJhbmltYXRpb24iLCAiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCAiYmFzZWxpbmVTaGlmdCIsICJib3JkZXJJbWFnZU91dHNldCIsICJib3JkZXJJbWFnZVNsaWNlIiwgImJvcmRlckltYWdlV2lkdGgiLCAiY29sdW1uQ291bnQiLCAiY3giLCAiY3kiLCAiZmlsbE9wYWNpdHkiLCAiZmxleEdyb3ciLCAiZmxleFNocmluayIsICJmbG9vZE9wYWNpdHkiLCAiZm9udFdlaWdodCIsICJncmlkQ29sdW1uRW5kIiwgImdyaWRDb2x1bW5TdGFydCIsICJncmlkUm93RW5kIiwgImdyaWRSb3dTdGFydCIsICJsaW5lSGVpZ2h0IiwgIm9wYWNpdHkiLCAib3JkZXIiLCAib3JwaGFucyIsICJyIiwgInJ4IiwgInJ5IiwgInNoYXBlSW1hZ2VUaHJlc2hvbGQiLCAic3RvcE9wYWNpdHkiLCAic3Ryb2tlRGFzaGFycmF5IiwgInN0cm9rZURhc2hvZmZzZXQiLCAic3Ryb2tlTWl0ZXJsaW1pdCIsICJzdHJva2VPcGFjaXR5IiwgInN0cm9rZVdpZHRoIiwgInRhYlNpemUiLCAid2lkb3dzIiwgIngiLCAieSIsICJ6SW5kZXgiLCAiem9vbSJdKTsKCiAgICAgICAgZnVuY3Rpb24gVihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB0LnNvbWUoKHQgPT4gMCA9PT0gZS5pbmRleE9mKHQpKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFcoZSkgewogICAgICAgICAgICByZXR1cm4gImtleSIgPT09IGUgfHwgImNoaWxkcmVuIiA9PT0gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gXyhlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiAic3R5bGUiID09PSBlID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKHQgPSBlLCAhMSA9PT0gayh0KSB8fCB2b2lkIDAgIT09IChuID0gdC5jb25zdHJ1Y3RvcikgJiYgKCExID09PSBrKHIgPSBuLnByb3RvdHlwZSkgfHwgITEgPT09IHIuaGFzT3duUHJvcGVydHkoImlzUHJvdG90eXBlT2YiKSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgdmFyIHQsIG4sIHI7CiAgICAgICAgICAgICAgICBsZXQgbzsKICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdCBpbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbikgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgbyA/IG8gKz0gIjsiIDogbyA9ICIiOwogICAgICAgICAgICAgICAgICAgIG8gKz0gcSh0KSArICI6IiArIFgodCwgbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgICAgIH0odCkgOiB0CiAgICAgICAgfQogICAgICAgIGNvbnN0IEYgPSBbImFjY2VudEhlaWdodCIsICJhbGlnbm1lbnRCYXNlbGluZSIsICJhcmFiaWNGb3JtIiwgImJhc2VsaW5lU2hpZnQiLCAiY2FwSGVpZ2h0IiwgImNsaXBQYXRoIiwgImNsaXBSdWxlIiwgImNvbG9ySW50ZXJwb2xhdGlvbiIsICJjb2xvckludGVycG9sYXRpb25GaWx0ZXJzIiwgImNvbG9yUHJvZmlsZSIsICJjb2xvclJlbmRlcmluZyIsICJkb21pbmFudEJhc2VsaW5lIiwgImVuYWJsZUJhY2tncm91bmQiLCAiZmlsbE9wYWNpdHkiLCAiZmlsbFJ1bGUiLCAiZmxvb2RDb2xvciIsICJmbG9vZE9wYWNpdHkiLCAiZm9udEZhbWlseSIsICJmb250U2l6ZSIsICJmb250U2l6ZUFkanVzdCIsICJmb250U3RyZXRjaCIsICJmb250U3R5bGUiLCAiZm9udFZhcmlhbnQiLCAiZm9udFdlaWdodCIsICJnbHlwaE5hbWUiLCAiZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwiLCAiZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsIiwgImhvcml6QWR2WCIsICJob3Jpek9yaWdpblgiLCAiaW1hZ2VSZW5kZXJpbmciLCAibGV0dGVyU3BhY2luZyIsICJsaWdodGluZ0NvbG9yIiwgIm1hcmtlckVuZCIsICJtYXJrZXJNaWQiLCAibWFya2VyU3RhcnQiLCAib3ZlcmxpbmVQb3NpdGlvbiIsICJvdmVybGluZVRoaWNrbmVzcyIsICJwYWludE9yZGVyIiwgInBhbm9zZTEiLCAicG9pbnRlckV2ZW50cyIsICJyZW5kZXJpbmdJbnRlbnQiLCAic2hhcGVSZW5kZXJpbmciLCAic3RvcENvbG9yIiwgInN0b3BPcGFjaXR5IiwgInN0cmlrZXRocm91Z2hQb3NpdGlvbiIsICJzdHJpa2V0aHJvdWdoVGhpY2tuZXNzIiwgInN0cm9rZURhc2hhcnJheSIsICJzdHJva2VEYXNob2Zmc2V0IiwgInN0cm9rZUxpbmVjYXAiLCAic3Ryb2tlTGluZWpvaW4iLCAic3Ryb2tlTWl0ZXJsaW1pdCIsICJzdHJva2VPcGFjaXR5IiwgInN0cm9rZVdpZHRoIiwgInRleHRBbmNob3IiLCAidGV4dERlY29yYXRpb24iLCAidGV4dFJlbmRlcmluZyIsICJ1bmRlcmxpbmVQb3NpdGlvbiIsICJ1bmRlcmxpbmVUaGlja25lc3MiLCAidW5pY29kZUJpZGkiLCAidW5pY29kZVJhbmdlIiwgInVuaXRzUGVyRW0iLCAidkFscGhhYmV0aWMiLCAidkhhbmdpbmciLCAidklkZW9ncmFwaGljIiwgInZNYXRoZW1hdGljYWwiLCAidmVjdG9yRWZmZWN0IiwgInZlcnRBZHZZIiwgInZlcnRPcmlnaW5YIiwgInZlcnRPcmlnaW5ZIiwgIndvcmRTcGFjaW5nIiwgIndyaXRpbmdNb2RlIiwgInhtbG5zWGxpbmsiLCAieEhlaWdodCJdLnJlZHVjZSgoKGUsIHQpID0+IChlW3QudG9Mb3dlckNhc2UoKV0gPSB0LCBlKSksIHt9KSwKICAgICAgICAgICAgTiA9IFsiYWxsb3dSZW9yZGVyIiwgImF0dHJpYnV0ZU5hbWUiLCAiYXR0cmlidXRlVHlwZSIsICJhdXRvUmV2ZXJzZSIsICJiYXNlRnJlcXVlbmN5IiwgImJhc2VQcm9maWxlIiwgImNhbGNNb2RlIiwgImNsaXBQYXRoVW5pdHMiLCAiY29udGVudFNjcmlwdFR5cGUiLCAiY29udGVudFN0eWxlVHlwZSIsICJkaWZmdXNlQ29uc3RhbnQiLCAiZWRnZU1vZGUiLCAiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsICJmaWx0ZXJSZXMiLCAiZmlsdGVyVW5pdHMiLCAiZ2x5cGhSZWYiLCAiZ3JhZGllbnRUcmFuc2Zvcm0iLCAiZ3JhZGllbnRVbml0cyIsICJrZXJuZWxNYXRyaXgiLCAia2VybmVsVW5pdExlbmd0aCIsICJrZXlQb2ludHMiLCAia2V5U3BsaW5lcyIsICJrZXlUaW1lcyIsICJsZW5ndGhBZGp1c3QiLCAibGltaXRpbmdDb25lQW5nbGUiLCAibWFya2VySGVpZ2h0IiwgIm1hcmtlclVuaXRzIiwgIm1hcmtlcldpZHRoIiwgIm1hc2tDb250ZW50VW5pdHMiLCAibWFza1VuaXRzIiwgIm51bU9jdGF2ZXMiLCAicGF0aExlbmd0aCIsICJwYXR0ZXJuQ29udGVudFVuaXRzIiwgInBhdHRlcm5UcmFuc2Zvcm0iLCAicGF0dGVyblVuaXRzIiwgInBvaW50c0F0WCIsICJwb2ludHNBdFkiLCAicG9pbnRzQXRaIiwgInByZXNlcnZlQWxwaGEiLCAicHJlc2VydmVBc3BlY3RSYXRpbyIsICJwcmltaXRpdmVVbml0cyIsICJyZWZYIiwgInJlZlkiLCAicmVwZWF0Q291bnQiLCAicmVwZWF0RHVyIiwgInJlcXVpcmVkRXh0ZW5zaW9ucyIsICJyZXF1aXJlZEZlYXR1cmVzIiwgInNwZWN1bGFyQ29uc3RhbnQiLCAic3BlY3VsYXJFeHBvbmVudCIsICJzcHJlYWRNZXRob2QiLCAic3RhcnRPZmZzZXQiLCAic3RkRGV2aWF0aW9uIiwgInN0aXRjaFRpbGVzIiwgInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIsICJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciLCAic3VyZmFjZVNjYWxlIiwgInN5c3RlbUxhbmd1YWdlIiwgInRhYmxlVmFsdWVzIiwgInRhcmdldFgiLCAidGFyZ2V0WSIsICJ0ZXh0TGVuZ3RoIiwgInZpZXdCb3giLCAidmlld1RhcmdldCIsICJ4Q2hhbm5lbFNlbGVjdG9yIiwgInlDaGFubmVsU2VsZWN0b3IiXS5yZWR1Y2UoKChlLCB0KSA9PiAoZVt0LnRvTG93ZXJDYXNlKCldID0gdCwgZSkpLCB7fSksCiAgICAgICAgICAgIFUgPSBbInhsaW5rOmFjdHVhdGUiLCAieGxpbms6YXJjcm9sZSIsICJ4bGluazpocmVmIiwgInhsaW5rOnJvbGUiLCAieGxpbms6c2hvdyIsICJ4bGluazp0aXRsZSIsICJ4bGluazp0eXBlIiwgInhtbDpiYXNlIiwgInhtbDpsYW5nIiwgInhtbDpzcGFjZSIsICJ4bWxuczp4bGluayJdLnJlZHVjZSgoKGUsIHQpID0+IChlW3QucmVwbGFjZSgiOiIsICIiKS50b0xvd2VyQ2FzZSgpXSA9IHQsIGUpKSwge30pOwoKICAgICAgICBmdW5jdGlvbiAkKGUpIHsKICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJodG1sRm9yIjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZvciI7CiAgICAgICAgICAgICAgICBjYXNlICJjbGFzc05hbWUiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiY2xhc3MiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgdCA9IGUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgcmV0dXJuIE5bdF0gPyBOW3RdIDogRlt0XSA/IFIoRlt0XSkgOiBVW3RdID8gVVt0XSA6IHQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHEoZSkgewogICAgICAgICAgICByZXR1cm4gZS5zdGFydHNXaXRoKCItLSIpID8gZSA6IFYoZSwgWyJtcyIsICJPIiwgIk1veiIsICJXZWJraXQiXSkgPyAiLSIgKyBSKGUpIDogUihlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWChlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiAibnVtYmVyIiAhPSB0eXBlb2YgdCB8fCAwID09PSB0IHx8IEQuaGFzKGUpID8gdCA6IHQgKyAicHgiCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBCKHQsIG4sIHIgPSB7fSkgewogICAgICAgICAgICBpZiAobnVsbCA9PSB0IHx8ICExID09PSB0KSByZXR1cm4gIiI7CiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHQpKSByZXR1cm4gWih0LCBuLCByKTsKICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgdCkgewogICAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIFQuZXNjYXBlSFRNTCkodCk7CiAgICAgICAgICAgICAgICBjYXNlICJudW1iZXIiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnRvU3RyaW5nKCkKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICB0eXBlOiBvLAogICAgICAgICAgICAgICAgcHJvcHM6IGkKICAgICAgICAgICAgfSA9IHQ7CiAgICAgICAgICAgIHN3aXRjaCAobykgewogICAgICAgICAgICAgICAgY2FzZSBlLlN0cmljdE1vZGU6CiAgICAgICAgICAgICAgICBjYXNlIGUuRnJhZ21lbnQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFooaS5jaGlsZHJlbiwgbiwgcik7CiAgICAgICAgICAgICAgICBjYXNlIEE6CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogdCwKICAgICAgICAgICAgICAgICAgICAgICAgLi4ubwogICAgICAgICAgICAgICAgICAgIH0gPSBpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBZKE9iamVjdC5rZXlzKG8pLmxlbmd0aCA/ICJkaXYiIDogbnVsbCwgeyAuLi5vLAogICAgICAgICAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19odG1sOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCBuLCByKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIG8pIHsKICAgICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFkobywgaSwgbiwgcik7CiAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8ucHJvdG90eXBlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIG8ucHJvdG90eXBlLnJlbmRlciA/IGZ1bmN0aW9uKGUsIHQsIG4sIHIgPSB7fSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gbmV3IGUodCwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIG8uZ2V0Q2hpbGRDb250ZXh0ICYmIE9iamVjdC5hc3NpZ24ociwgby5nZXRDaGlsZENvbnRleHQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBCKG8ucmVuZGVyKCksIG4sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgICAgIH0obywgaSwgbiwgcikgOiBCKG8oaSwgciksIG4sIHIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3dpdGNoIChvICYmIG8uJCR0eXBlb2YpIHsKICAgICAgICAgICAgICAgIGNhc2UgTS4kJHR5cGVvZjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWihpLmNoaWxkcmVuLCBpLnZhbHVlLCByKTsKICAgICAgICAgICAgICAgIGNhc2UgSS4kJHR5cGVvZjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gQihpLmNoaWxkcmVuKG4gfHwgby5fY3VycmVudFZhbHVlKSwgbiwgcik7CiAgICAgICAgICAgICAgICBjYXNlIEwuJCR0eXBlb2Y6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEIoby5yZW5kZXIoaSksIG4sIHIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBZKGUsIHQsIG4sIHIgPSB7fSkgewogICAgICAgICAgICBsZXQgbyA9ICIiOwogICAgICAgICAgICBpZiAoInRleHRhcmVhIiA9PT0gZSAmJiB0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpKSB7CiAgICAgICAgICAgICAgICBvID0gWih0LnZhbHVlLCBuLCByKTsKICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAuLi5pCiAgICAgICAgICAgICAgICB9ID0gdDsKICAgICAgICAgICAgICAgIHQgPSBpCiAgICAgICAgICAgIH0gZWxzZSB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmICJzdHJpbmciID09IHR5cGVvZiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCA/IG8gPSB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCA6IHZvaWQgMCAhPT0gdC5jaGlsZHJlbiAmJiAobyA9IFoodC5jaGlsZHJlbiwgbiwgcikpOwogICAgICAgICAgICBpZiAoIWUpIHJldHVybiBvOwogICAgICAgICAgICBjb25zdCBpID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgbGV0IHQgPSAiIjsKICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbiBpbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9ICQobik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoMCwgVC5pc1ZhbGlkQXR0cmlidXRlTmFtZSkocikpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIGxldCBvID0gXyhuLCBlW25dKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIVAuaGFzKHR5cGVvZiBvKSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKFcobikpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBILmhhcyhyKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaSAmJiAhMSA9PT0gbykgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IGkgfHwgVihuLCBbImRhdGEtIiwgImFyaWEtIl0pIHx8IHouaGFzKHIpOwogICAgICAgICAgICAgICAgICAgICgiYm9vbGVhbiIgIT0gdHlwZW9mIG8gfHwgYSkgJiYgKHQgKz0gIiAiICsgciwgaSB8fCAoInN0cmluZyIgPT0gdHlwZW9mIG8gJiYgKG8gPSAoMCwgVC5lc2NhcGVBdHRyaWJ1dGUpKG8pKSwgdCArPSAnPSInICsgbyArICciJykpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICB9KHQpOwogICAgICAgICAgICByZXR1cm4gai5oYXMoZSkgPyAiPCIgKyBlICsgaSArICIvPiIgOiAiPCIgKyBlICsgaSArICI+IiArIG8gKyAiPC8iICsgZSArICI+IgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWihlLCB0LCBuID0ge30pIHsKICAgICAgICAgICAgbGV0IHIgPSAiIjsKICAgICAgICAgICAgZSA9IEFycmF5LmlzQXJyYXkoZSkgPyBlIDogW2VdOwogICAgICAgICAgICBmb3IgKGxldCBvID0gMDsgbyA8IGUubGVuZ3RoOyBvKyspIHsKICAgICAgICAgICAgICAgIHIgKz0gQihlW29dLCB0LCBuKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgfQogICAgICAgIHZhciBHID0gQgogICAgfSgpLCAod2luZG93LndwID0gd2luZG93LndwIHx8IHt9KS5lbGVtZW50ID0gcgp9KCk7"}},"time_used":104,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":101,"receive":3,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/2023/12/bg-buy-cryptocurrency.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.166Z","timestamp":1785128399166,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/2023/12/bg-buy-cryptocurrency.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/post-95fea.css?ver=1706574923\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\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\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: image/webp\r\ncontent-length: 3288\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 71d03d22d30fdc6af2a83ca9a6f1eb6f-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.019\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":3288,"size_decoded":3610,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"f4ddb062f17bcdb382491f4b04ca0ead","sha1":"a4653f3271436c91c7df8679890271034d5b9c0a","sha256":"d385d43c5a9bd810f7b1996f50bb7cf829cde820fc17381329fc746419b4b027","sha512":"e58b4d61db8b20dec8b5fcbc65fa1b17890c6f9f44c273f965523f3b926946ca7dee94e00fe22c603549a6033390f6af2b5e24ae7012c7ba1d2dc64e6733c0f1","ssdeep":"","tlshash":"1f61a621b2ed6f1398f922bbef68b71d10416271617f1428b0938e466c716f1d862ef1","first_seen":"2026-07-27T03:56:42.55699Z","last_seen":"2026-07-27T05:01:06.142095Z","times_seen":3,"resource_available":false,"data":"UklGRtAMAABXRUJQVlA4WAoAAAAIAAAAPwYA8AIAVlA4IPALAADQPAGdASpABvECPlEmkEcjoaGhIDCYKHAKCWlu7mB0/8Reh+k5TdBP0je6usTxV7H/wb//5uZ3/J/5mAADafU3uIvLANdTe4i8sA11N7iLywDXU3uIvLANdTe4i8sA11N7iLywDXU3uIvLANdTe4i8sA11N7iLywDXU3uIvK7jvNykMlCLywDXU3uIvLANdTe4i8sA11N7iLyv8mOp6m9xF5YBrqb3EXlgGupvcReV9RVSG9Whz7ruET5n/LGxF5YBrqb3EXlf5pKBMdoQk8G3st1N7iLywCwwrfa8KYPUBZAjeHNGKj1N7iLywDXU3uIvLANdTe4il3hUbcO/XgaWoICB2yYcxF/8sbEXlgGupvcQ80Yc/sYKc60Z2fJUOnGxF5YBrgRsyCLEzGkFFZg04EE9Z+LxF/8sbEXlgGupvcReWAa4D9OZoI2fJq1gKEI8bTZ/yxsReWAa6m9xF5YBYeyMSGDs5uAx4LywDXU3oo2ZBFiZjSEUxWk+3xKbTuIvLANdTe4i8sA11N7iLyv8t8bEXlgGupvcReWAa6m9w9SbiCRbReWAa6m9E1FSK5PT5nioH6sL3ExBHzuywDXU3uIvLANdTe4i8sA11N7iLywDXU3uIvLANdTe4i8sA11N7iLzdBbHVBMLAYKell1rlw45FovLANdTe4i8sA11N7iLywDXU3uIvLANdTe4i8sA11N7iLywDXU3uIvKMP8+wLTYax+JKzKG1Y6KFX7eNHVeWNiLywDXU3uIvLANdTe4i8sA11N7iLywDXU3uIvLANdTe4i8sA11OAc1fESDxQq/eamJgtA+MAHCX/yxsReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGuW2uAStOWLtxetIBgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGuBPSy4iv3bXsG9ReIv/ljYi8sA11N7iLywDXU3uIvLANdTe4i8sA11N7iLywDXU3uIvLAXOpvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5XcbPwGAa6m9xF5YBrqb3EXlgGupvcReWAa6m9xF5YBrqb3EXlgGupvcReWAa4EbMgixMx7lPSpWnOSI4vEX/yxsReWAa6m9xF5YBYQr7qJ8afTlf5Y2IvLANdTe4i8sA11N7iLyu4/dwYt5dVKYT2uxF4RhW+14UwaQUVpQ5M6LM3riLywDXU3uIvLANdTe4i8o1PT3+I8uGwcD3qy5geYi/+WNiLywDXU3uIvLANdTe2hx4+ZvJ2kwsNvUeH8rudDzqxXW+xpCKYrMFSFtYTO63U3uIvLANdTe4i8sA10wp6e/xHlw2DgsoIztPMsLsAuxzUm7+4XT26lgGupvcReWAa6m9xF5YBrqb0TAZDZIOLql/F391ZnvcLnf+YDT3iWKq5dD0BCnlSBBHzuywDXU3uIvLANdTe4i8ruYV03UyjYbVVLQnq8wsiOkJq+HzDZmwYvM5LxF/8sbEXlgGupvcReWAa6m2RQX16WdBGywvHNtwSXqZ30DMK325cpg2rIwDXU3uIvLANdTe4i8sA1wKdQrnWxn+oLQFz6yzFUdILJE25xJJQuXbRxeIv/ljYi8sA11N7iLywDXU3uIvN0FuAfX7R/aaLIwKQ2EAvLANdTe4i8sA11N7iLywDT1aT7fECPRTEVSoJJkeFji8Rf/LGxF5YBrqb3EXlgGupvcReWAaeyzqQovEX/yxsReWAa6m9xF5YBrphWk/EgCSNoc/hrqb3EXlgGupvcReWAa6m9xF5YBrqb3KPywDXU3uIvLANdTe4i8sA11N7iLywDXU3uIvLANdTe4i8sA11N7iLywDXU3uIvLANdTe4i8sA11N7iLywDXU3uIvLANdTe4i8sA11N7iLywDXU3uIeAAD+/t0t/VpNIvPpgysAAGGWBBjOBdN5akAqV4AdM2GNZsWS2ssdeipJgoBBENPHbzp0OVydUvspdgEbPLTyRM+DdnIJ90HK8/Jq6L8KqOkpF1NBsbtOoZim8ZWekMQInFjwWJEEJqQ2U+tAr++b2PVcA2UGk4Tq0q0ANp1yuTgdwMxZPejgZiwUZXnBdGBHCXtZ2gC/ABfgzPnZFm+SLMgG2s57eow7ItrkawjLowHebgAAZ4/0raScpiQFQAAB4CLD43cKrlNTuzKL64WCAAAak7syi+egjzxkm9aIg8pAAEo1+LQFICC+d7ly9vuo74fQ4q6YVX9HdgAAVFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYa7QACZkwjLTyQIIo4KQzIQzWJdmjAFirgfChFCUNfhmruD00rlf+orwv037ZISYExvP62CDbps36KAgEF0dIjWNHHOSEIYhq2RiUsErCorxFYAKVb5COikTbC5UCKBDF0kXPY4mlq8TNOu+YisiUxx938E+4zf8tChEiR1ulqxWYq8CO3nKavUSk0pOUqwBK2ujpEIrYfiMNRAwoBEYBcBQ+5AIAKmfLL1wtyIK8YACWlMAEPAw/96BAAAAAAAAAAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAEAGAAADoAQAAQAAAPECAAAAAAAA"}},"time_used":50,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":50,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/post-95fea.css?ver=1706574923","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.770Z","timestamp":1785128398770,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/elementor/css/post-95fea.css?ver=1706574923 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 4207\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 20:43:16 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"15d7c-67c3620e-e997bc4fac63dbbe;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 461802\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: da53ede4bea34dc8c58432b58134823c-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":89468,"size_decoded":4780,"mime_type":"text/css","magic":"ASCII text","md5":"d71146c3fb098b04a75434c91ba184f5","sha1":"ad76e0a1abb1a8cf1a598b253ea81b5451b12640","sha256":"d42989d126d10e634a52395cb2e9a31679cbfeca5fee88ae6b130189f6465f32","sha512":"a1db8e65a39b3c8a63fd4887a893b9eb13519b8dbaedb131f94651ef25c2bba83686c008f896953cc635c3e4c1ba18847cace15b8fef86731a57867320e160f6","ssdeep":"1536:6lmxZROURM8zKtROKbD6KxuVMmtfx2ngCKWCZ35SuY0mu6e41l4A:60DIWKt8Kb+KxaM6JEv2Y0l6e4V","tlshash":"339359813e231259782fa01fa6eb928e213848cb9a6cfdd5f4dc5217ef79c94b3d1944","first_seen":"2026-07-27T03:56:42.525141Z","last_seen":"2026-07-27T05:01:06.14915Z","times_seen":3,"resource_available":false,"data":"LmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hNTBiYTM1IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWdhcDogMjBweCAyMHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDIyMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMjIwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTUwYmEzNTpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTUwYmEzNT4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lcj4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVyIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vLi4vMjAyMy8xMi9iZy1oZXJvLXNlY3Rpb24ucG5nIik7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTUwYmEzNSwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hNTBiYTM1OjpiZWZvcmUgewogICAgLS1ib3JkZXItdHJhbnNpdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02NzkyMzAyIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLS1nYXA6IDI0cHggMjRweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTUxMjNmZGYgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZjJkNjkyYSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWY4NTg2MjkgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMWRjZDAyIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTM4NmVjZCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDEycHggMTJweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTUzODZlY2Q6bm90KC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtZWxlbWVudC10eXBlLWJhY2tncm91bmQpLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTUzODZlY2Q+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXI+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllciB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4uLy4uLzIwMjMvMTIvYmctdW5sb2NrLXRoZS13b3JsZC5wbmciKTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01Mzg2ZWNkLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTUzODZlY2Q6OmJlZm9yZSB7CiAgICAtLWJvcmRlci10cmFuc2l0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTE3MDRkMDQgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTE3MDRkMDQgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZjAyMzlkZiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWYwMjM5ZGY+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgIHBhZGRpbmc6IDBweCAyNTBweCAwcHggMjUwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTZmNDhhMyB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1nYXA6IDI4cHggMjhweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAzOHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xZDdjZjI4IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lOGRjZTc4LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWxlZnQ6IDEycHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OC5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLXJpZ2h0OiAxMnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzguZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lOGRjZTc4IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIHdpZHRoOiA0MyU7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgaW1nIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OCAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OCAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU4NjEwNDcgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxMWIxZmMuZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tbGVmdDogMTJweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMTFiMWZjLmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tcmlnaHQ6IDEycHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYy5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxMWIxZmMgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgd2lkdGg6IDQzJTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMTFiMWZjIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyBpbWcgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMTFiMWZjIC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMTFiMWZjIC5lbGVtZW50b3ItaW1hZ2UtYm94LWRlc2NyaXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGUzOTI2MyB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmU0NjIwZS5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1sZWZ0OiAxMnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUuZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1yaWdodDogMTJweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iZTQ2MjBlLmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmU0NjIwZSAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICB3aWR0aDogNDMlOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIGltZyB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUgLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUgLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zMzU4MTE4IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jYTNiYTc2LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWxlZnQ6IDEycHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3Ni5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLXJpZ2h0OiAxMnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYuZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jYTNiYTc2IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIHdpZHRoOiA0MyU7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3NiAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgaW1nIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3NiAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3NiAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc4NGJkNzIgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tZ2FwOiAxMnB4IDEycHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMTAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAxMDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ODRiZDcyOm5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ODRiZDcyPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXIgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi8uLi8yMDIzLzEyL2JnLXN0YXJ0ZWQtaW4tc3RlcHMucG5nIik7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzg0YmQ3MiwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ODRiZDcyOjpiZWZvcmUgewogICAgLS1ib3JkZXItdHJhbnNpdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zMTIyOTczIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zMTIyOTczIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTkxYjY2ZmIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MWI2NmZiPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBwYWRkaW5nOiAwcHggMjAwcHggMHB4IDIwMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThkNDQ1NDUgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDE7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIC0tZ2FwOiAyNXB4IDI1cHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMzhweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDFhMGVjZSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTVmYzhjYzAgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tZ2FwOiA0MHB4IDQwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zZTk2ZmM4IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWdhcDogMjBweCAyMHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMWMyZTU5MCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjA0MzRhZSBpbWcgewogICAgd2lkdGg6IDMyJTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04ODkwNTU1IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogMTBweCAxMHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTliMWI3NCAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTA3ZGYwZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTM5MzE4MDkgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDE7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zZDE4MjIzIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iZWMxMmFiIGltZyB7CiAgICB3aWR0aDogMzIlOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWRiMWU4MTcgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMjZmMmVjIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01N2Q1OTcxIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODkzZDRmOCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1nYXA6IDIwcHggMjBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWUyZmQ0ZWUgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTI2MWI0ZTIgaW1nIHsKICAgIHdpZHRoOiAzMiU7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYzFmMWE2NiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDEwcHggMTBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTQxYzU4NTQgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTA1MjU2MzEgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hOTI3MWNhIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogMTJweCAxMnB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMTAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTkyNzFjYTpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTkyNzFjYT4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lcj4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVyIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vLi4vMjAyMy8xMi9iZy1jcmVhdGUteW91ci1wcm90b24td2FsbGV0LnBuZyIpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE5MjcxY2EsCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTkyNzFjYTo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDkyM2E1YiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDkyM2E1YiAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MGUwODdjIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTBlMDg3Yz4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgcGFkZGluZzogMHB4IDIwMHB4IDBweCAyMDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xMzM0OGZmIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIC0tZ2FwOiAyMnB4IDIycHg7CiAgICAtLWZsZXgtd3JhcDogd3JhcDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAzOHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MjA5NjMzIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICAtLWJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItd2lkdGg6IDVweCAwcHggNXB4IDBweDsKICAgIC0tYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoOiA1cHg7CiAgICAtLWJvcmRlci1pbmxpbmUtZW5kLXdpZHRoOiAwcHg7CiAgICAtLWJvcmRlci1ibG9jay1lbmQtd2lkdGg6IDVweDsKICAgIC0tYm9yZGVyLWlubGluZS1zdGFydC13aWR0aDogMHB4OwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICAtLWJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgLS1ib3JkZXItcmFkaXVzOiAyMHB4IDIwcHggMjBweCAyMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAyNHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMjRweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDI0cHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMjRweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MjA5NjMzLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTkyMDk2MzM6OmJlZm9yZSB7CiAgICAtLWJvcmRlci10cmFuc2l0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQzYjY3OGYuZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tbGVmdDogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kM2I2NzhmLmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDNiNjc4Zi5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tYm90dG9tOiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQzYjY3OGYgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgd2lkdGg6IDM1JTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kM2I2NzhmIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyBpbWcgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kM2I2NzhmIC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kM2I2NzhmIC5lbGVtZW50b3ItaW1hZ2UtYm94LWRlc2NyaXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjJiZDFhZSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgLS1ib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLXdpZHRoOiA1cHggMHB4IDVweCAwcHg7CiAgICAtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogNXB4OwogICAgLS1ib3JkZXItaW5saW5lLWVuZC13aWR0aDogMHB4OwogICAgLS1ib3JkZXItYmxvY2stZW5kLXdpZHRoOiA1cHg7CiAgICAtLWJvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6IDBweDsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgLS1ib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIC0tYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDIwcHggMjBweDsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMjRweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDI0cHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAyNHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDI0cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjJiZDFhZSwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02MmJkMWFlOjpiZWZvcmUgewogICAgLS1ib3JkZXItdHJhbnNpdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NzQ4YTFmLmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWxlZnQ6IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc0OGExZi5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc3NDhhMWYuZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWJvdHRvbTogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NzQ4YTFmIC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIHdpZHRoOiAzNSU7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc0OGExZiAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgaW1nIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc0OGExZiAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc0OGExZiAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTk4MWQxYzkgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIC0tYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci13aWR0aDogNXB4IDBweCA1cHggMHB4OwogICAgLS1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IDVweDsKICAgIC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGg6IDBweDsKICAgIC0tYm9yZGVyLWJsb2NrLWVuZC13aWR0aDogNXB4OwogICAgLS1ib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiAwcHg7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIC0tYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICAtLWJvcmRlci1yYWRpdXM6IDIwcHggMjBweCAyMHB4IDIwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDI0cHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAyNHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMjRweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAyNHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTk4MWQxYzksCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTgxZDFjOTo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjc4MTlhMy5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTI3ODE5YTMuZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1yaWdodDogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNzgxOWEzLmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjc4MTlhMyAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICB3aWR0aDogMzUlOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTI3ODE5YTMgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIGltZyB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTI3ODE5YTMgLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTI3ODE5YTMgLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NWZlMGNlIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogMTJweCAxMnB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMTAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTVmZTBjZTpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTVmZTBjZT4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lcj4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVyIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vLi4vMjAyMy8xMi9iZy1idXktY3J5cHRvY3VycmVuY3kucG5nIik7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTVmZTBjZSwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NWZlMGNlOjpiZWZvcmUgewogICAgLS1ib3JkZXItdHJhbnNpdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xNjMyMmEyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xNjMyMmEyIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTcxZWI0MjYgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03MWViNDI2Pi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBwYWRkaW5nOiAwcHggMjAwcHggMHB4IDIwMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTJlMjgzMmEgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDE7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIC0tZ2FwOiA1MHB4IDUwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMzhweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTZjNTU3NSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tZ2FwOiAzMHB4IDMwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zOm5vdCguZWxlbWVudG9yLWlubGluZS1pdGVtcykgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIHBhZGRpbmctYm90dG9tOiBjYWxjKDMwcHgvMik7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtczpub3QoLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06bm90KDpmaXJzdC1jaGlsZCkgewogICAgbWFyZ2luLXRvcDogY2FsYygzMHB4LzIpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMuZWxlbWVudG9yLWlubGluZS1pdGVtcyAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIHsKICAgIG1hcmdpbi1yaWdodDogY2FsYygzMHB4LzIpOwogICAgbWFyZ2luLWxlZnQ6IGNhbGMoMzBweC8yKTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgewogICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0zMHB4LzIpOwogICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTMwcHgvMik7Cn0KCmJvZHkucnRsIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgbGVmdDogY2FsYygtMzBweC8yKTsKfQoKYm9keTpub3QoLnJ0bCkgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICByaWdodDogY2FsYygtMzBweC8yKTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWljb24gaSB7CiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaWNvbiBzdmcgewogICAgdHJhbnNpdGlvbjogZmlsbCAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgewogICAgLS1lLWljb24tbGlzdC1pY29uLXNpemU6IDMwcHg7CiAgICAtLWljb24tdmVydGljYWwtYWxpZ246IGZsZXgtc3RhcnQ7CiAgICAtLWljb24tdmVydGljYWwtb2Zmc2V0OiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pY29uIHsKICAgIHBhZGRpbmctcmlnaHQ6IDRweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0+LmVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0+YSB7CiAgICBmb250LXNpemU6IDI2cHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgbGluZS1oZWlnaHQ6IDM2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC10ZXh0IHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTcwYjZmYTYgLmVsZW1lbnRvci1idXR0b24gLmVsZW1lbnRvci1hbGlnbi1pY29uLXJpZ2h0IHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTcwYjZmYTYgLmVsZW1lbnRvci1idXR0b24gLmVsZW1lbnRvci1hbGlnbi1pY29uLWxlZnQgewogICAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWRjMjgzYzIgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iNmMwM2JmIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogMTJweCAxMnB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMTAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjZjMDNiZjpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjZjMDNiZj4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lcj4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVyIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vLi4vMjAyMy8xMi9iZy10ZWFtLWJvYXJkLnBuZyIpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWI2YzAzYmYsCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjZjMDNiZjo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2I4MGRiNCB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2I4MGRiNCAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xYmZkZjcyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMWJmZGY3Mj4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgcGFkZGluZzogMHB4IDEwMHB4IDBweCAxMDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hZTA2Y2JiIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLS1nYXA6IDUwcHggNTBweDsKICAgIC0tZmxleC13cmFwOiB3cmFwOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDM4cHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTYyOWI1MDcgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIxMmMyMDkuZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tbGVmdDogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMTJjMjA5LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjEyYzIwOS5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tYm90dG9tOiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIxMmMyMDkgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgd2lkdGg6IDY1JTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMTJjMjA5IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyBpbWcgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMTJjMjA5IC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIxMmMyMDkgLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00NWFmN2I5IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wYWJjMjhkLmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWxlZnQ6IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGFiYzI4ZC5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBhYmMyOGQuZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWJvdHRvbTogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wYWJjMjhkIC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIHdpZHRoOiA2NSU7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGFiYzI4ZCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgaW1nIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGFiYzI4ZCAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wYWJjMjhkIC5lbGVtZW50b3ItaW1hZ2UtYm94LWRlc2NyaXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTI0NmRmMSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjA4ZDdkNC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIwOGQ3ZDQuZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1yaWdodDogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMDhkN2Q0LmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjA4ZDdkNCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICB3aWR0aDogNjUlOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIwOGQ3ZDQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIGltZyB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIwOGQ3ZDQgLmVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUgewogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjA4ZDdkNCAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Yzk1M2IgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ5YjhlYTQuZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tbGVmdDogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOWI4ZWE0LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDliOGVhNC5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICBtYXJnaW4tYm90dG9tOiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ5YjhlYTQgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgd2lkdGg6IDY1JTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOWI4ZWE0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyBpbWcgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOWI4ZWE0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ5YjhlYTQgLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Yzg3YmI4IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMmQxMGUzLmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWxlZnQ6IDE2cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMy5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTAyZDEwZTMuZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgbWFyZ2luLWJvdHRvbTogMTZweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMmQxMGUzIC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgIHdpZHRoOiA2NSU7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMyAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgaW1nIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMyAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMmQxMGUzIC5lbGVtZW50b3ItaW1hZ2UtYm94LWRlc2NyaXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNmE3ODYwMCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1nYXA6IDUwcHggNTBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTZhNzg2MDA6bm90KC5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtZWxlbWVudC10eXBlLWJhY2tncm91bmQpLAouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTZhNzg2MDA+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXI+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllciB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4uLy4uLzIwMjMvMTIvYmctdGVzdGltb25pYWwucG5nIik7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNmE3ODYwMCwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02YTc4NjAwOjpiZWZvcmUgewogICAgLS1ib3JkZXItdHJhbnNpdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05ZDA5NTgyIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNWJiM2UxNSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tZ2FwOiAxMnB4IDEycHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02M2YxOWYyIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjNmMTlmMiAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hNWE0NTRmIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTMxMmVjZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEzMTJlY2U+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgIHBhZGRpbmc6IDM2cHggMHB4IDM2cHggMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTJmNzU4ZDMgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWZhNmRmNzYgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tZ2FwOiAxMnB4IDEycHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMTAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAxMDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mYTZkZjc2Om5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mYTZkZjc2Pi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXIgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi8uLi8yMDIzLzEyL2JnLXRlYW0tYm9hcmQucG5nIik7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZmE2ZGY3NiwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mYTZkZjc2OjpiZWZvcmUgewogICAgLS1ib3JkZXItdHJhbnNpdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wODk1ODg1IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wODk1ODg1IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdmOTJhZDEgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZjkyYWQxPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBwYWRkaW5nOiAwcHggMTAwcHggMHB4IDEwMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlNWVmN2UgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDE7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIC0tZ2FwOiAyNXB4IDI1cHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMzhweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWU3MDFkZCB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDIwMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogNTBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDUwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogNTBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lZTcwMWRkOm5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lZTcwMWRkPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXIgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi8uLi8yMDIzLzEyL2Jsb2cxLnBuZyIpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWVlNzAxZGQsCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWU3MDFkZDo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjI1Nzc1OSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWM1MGQ3NzkgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTQ1Nzk5M2EgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tZ2FwOiAyNnB4IDI2cHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xMzZjMmQxIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIC0tZ2FwOiAxNXB4IDE1cHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hMmRmODExIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTAzOTVjMiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDEwcHggMTBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThiOWNkNzAgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04NjQwNDZhIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zODkwNTE4IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIC0tZ2FwOiAxNXB4IDE1cHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hYjhlNDFkIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDZlN2I0YSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDEwcHggMTBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTkzM2Y4OGQgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mM2M3YjY0IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jY2UzZjhjIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIC0tZ2FwOiAxNXB4IDE1cHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zMDZlYTM0IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNGEyNWJmNiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDEwcHggMTBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFiMTBjYjMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02ZTMzNjI3IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lZmNhODY5IHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAtLWdhcDogMzBweCAzMHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMTAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWZjYTg2OTpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWZjYTg2OT4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWNvbnRhaW5lcj4uZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWxheWVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMxQTIxMkY7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWZjYTg2OSwKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lZmNhODY5OjpiZWZvcmUgewogICAgLS1ib3JkZXItdHJhbnNpdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mZWYzMjlhIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogMTJweCAxMnB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLW1hcmdpbi1ibG9jay1zdGFydDogMHB4OwogICAgLS1tYXJnaW4tYmxvY2stZW5kOiAwcHg7CiAgICAtLW1hcmdpbi1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tbWFyZ2luLWlubGluZS1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iOWJjNzNmIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYjliYzczZiAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jYzU0YWU5IHsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTI5ZTNkNiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGNhbGMoICggMSAtIHZhciggLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdykpICogMTAwJSk7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAtLWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtLWdhcDogMHB4IDBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1tYXJnaW4tYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tbWFyZ2luLWJsb2NrLWVuZDogMHB4OwogICAgLS1tYXJnaW4taW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLW1hcmdpbi1pbmxpbmUtZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTI5ZTNkNi5lLWNvbiB7CiAgICAtLWFsaWduLXNlbGY6IGNlbnRlcjsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lMWEwMzFhPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBtYXJnaW46IDBweCAwcHggMHB4IDBweDsKICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDBweDsKfQoKLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wY2Y4NjM5Pi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICBtYXJnaW46IDBweCAwcHggMHB4IDBweDsKICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDBweDsKfQoKQG1lZGlhKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTUwYmEzNSB7CiAgICAgICAgLS1taW4taGVpZ2h0OiA2MDBweDsKICAgICAgICAtLW1hcmdpbi1ibG9jay1zdGFydDogMHB4OwogICAgICAgIC0tbWFyZ2luLWJsb2NrLWVuZDogMHB4OwogICAgICAgIC0tbWFyZ2luLWlubGluZS1zdGFydDogMHB4OwogICAgICAgIC0tbWFyZ2luLWlubGluZS1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTUzODZlY2QgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogODBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWYwMjM5ZGY+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggODBweCAwcHggODBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTZmNDhhMyB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDI4cHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ODRiZDcyIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogODBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MWI2NmZiPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMHB4IDgwcHggMHB4IDgwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThkNDQ1NDUgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAyOHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2U5NmZjOCB7CiAgICAgICAgLS1nYXA6IDEwcHggMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzkzMTgwOSB7CiAgICAgICAgLS1nYXA6IDEwcHggMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODkzZDRmOCB7CiAgICAgICAgLS1nYXA6IDEwcHggMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTkyNzFjYSB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTBlMDg3Yz4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDBweCA4MHB4IDBweCA4MHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xMzM0OGZmIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDI4cHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MjA5NjMzIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kM2I2NzhmLmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kM2I2NzhmLmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kM2I2NzhmLmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kM2I2NzhmIC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02MmJkMWFlIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NzQ4YTFmLmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NzQ4YTFmLmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NzQ4YTFmLmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NzQ4YTFmIC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05ODFkMWM5IHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNzgxOWEzLmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNzgxOWEzLmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNzgxOWEzLmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNzgxOWEzIC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NWZlMGNlIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogODBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03MWViNDI2Pi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMHB4IDgwcHggMHB4IDgwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTJlMjgzMmEgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAyOHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTZjNTU3NSB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtczpub3QoLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICAgICAgcGFkZGluZy1ib3R0b206IGNhbGMoMTVweC8yKTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtczpub3QoLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMpIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06bm90KDpmaXJzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi10b3A6IGNhbGMoMTVweC8yKTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0gewogICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygxNXB4LzIpOwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKDE1cHgvMik7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMuZWxlbWVudG9yLWlubGluZS1pdGVtcyB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0xNXB4LzIpOwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC0xNXB4LzIpOwogICAgfQogICAgYm9keS5ydGwgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zLmVsZW1lbnRvci1pbmxpbmUtaXRlbXMgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbTphZnRlciB7CiAgICAgICAgbGVmdDogY2FsYygtMTVweC8yKTsKICAgIH0KICAgIGJvZHk6bm90KC5ydGwpIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06YWZ0ZXIgewogICAgICAgIHJpZ2h0OiBjYWxjKC0xNXB4LzIpOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IHsKICAgICAgICAtLWUtaWNvbi1saXN0LWljb24tc2l6ZTogMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTUzOTc0NCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtPi5lbGVtZW50b3ItaWNvbi1saXN0LXRleHQsCiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbT5hIHsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWI2YzAzYmYgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogODBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFiZmRmNzI+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggODBweCAwcHggODBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYWUwNmNiYiB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDI4cHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMTJjMjA5LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMTJjMjA5LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMTJjMjA5LmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wYWJjMjhkLmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wYWJjMjhkLmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wYWJjMjhkLmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMDhkN2Q0LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMDhkN2Q0LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yMDhkN2Q0LmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOWI4ZWE0LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOWI4ZWE0LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOWI4ZWE0LmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMmQxMGUzLmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMmQxMGUzLmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMmQxMGUzLmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02YTc4NjAwIHsKICAgICAgICAtLWdhcDogMzBweCAzMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogODBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEzMTJlY2U+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAyMHB4IDBweCAyMHB4IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZmE2ZGY3NiB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2Y5MmFkMT4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDBweCA4MHB4IDBweCA4MHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTVlZjdlIHsKICAgICAgICAtLWdhcDogMHB4IDIwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAyOHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWU3MDFkZCB7CiAgICAgICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAtLWdhcDogMHB4IDBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00NTc5OTNhIHsKICAgICAgICAtLWdhcDogMjBweCAyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lZmNhODY5IHsKICAgICAgICAtLWdhcDogMTBweCAxMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogODBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWEyOWUzZDYgewogICAgICAgIC0tZ2FwOiAwcHggMHB4OwogICAgfQp9CgpAbWVkaWEobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE1MGJhMzUgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogNTBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA1MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTY3OTIzMDIgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxZGNkMDIuZS1jb24gewogICAgICAgIC0tb3JkZXI6IC05OTk5OS8qIG9yZGVyIHN0YXJ0IGhhY2sgKi8KICAgICAgICA7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTUzODZlY2QgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogNTBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA1MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWYwMjM5ZGY+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMHB4IDBweCAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1NmQ5MGQgaW1nIHsKICAgICAgICB3aWR0aDogMjUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xNmY0OGEzIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDE4cHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lOGRjZTc4IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OC5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OC5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgd2lkdGg6IDMwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OCAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMTFiMWZjIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYy5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYy5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYy5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYyAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgd2lkdGg6IDMwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYyAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iZTQ2MjBlIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmU0NjIwZS5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmU0NjIwZS5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmU0NjIwZS5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmU0NjIwZSAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgd2lkdGg6IDMwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmU0NjIwZSAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmU0NjIwZSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jYTNiYTc2IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3Ni5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3Ni5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3Ni5lbGVtZW50b3ItcG9zaXRpb24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3NiAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgd2lkdGg6IDMwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3NiAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2EzYmE3NiB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ODRiZDcyIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogNTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05MWI2NmZiPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMHB4IDBweCAwcHggMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iN2QyYTgyIGltZyB7CiAgICAgICAgd2lkdGg6IDI1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOGQ0NDU0NSB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxOHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNWZjOGNjMCB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2U5NmZjOCB7CiAgICAgICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTFjMmU1OTAgewogICAgICAgIC0td2lkdGg6IDE2JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODZkZjg0NyBpbWcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04NmRmODQ3IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWIwNDM0YWUgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODg5MDU1NSB7CiAgICAgICAgLS13aWR0aDogODAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zOTMxODA5IHsKICAgICAgICAtLWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2QxODIyMyB7CiAgICAgICAgLS13aWR0aDogMTYlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kZjU2ZGRiIGltZyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWRmNTZkZGIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmVjMTJhYiB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kYjFlODE3IHsKICAgICAgICAtLXdpZHRoOiA4MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5M2Q0ZjggewogICAgICAgIC0tanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lMmZkNGVlIHsKICAgICAgICAtLXdpZHRoOiAxNiU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ2MzI4NzcgaW1nIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDYzMjg3NyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNjFiNGUyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWMxZjFhNjYgewogICAgICAgIC0td2lkdGg6IDgwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTkyNzFjYSB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA1MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTBlMDg3Yz4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtODhkOGI0MiBpbWcgewogICAgICAgIHdpZHRoOiAyNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTEzMzQ4ZmYgewogICAgICAgIC0tZ2FwOiAzMHB4IDMwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxOHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDNiNjc4ZiAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc3NDhhMWYgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yNzgxOWEzIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTVmZTBjZSB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA1MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzFlYjQyNj4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZmZmZjNiMyBpbWcgewogICAgICAgIHdpZHRoOiAyNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTJlMjgzMmEgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMThweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Mzk3NDQgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbT4uZWxlbWVudG9yLWljb24tbGlzdC10ZXh0LAogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0+YSB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kYzI4M2MyLmUtY29uIHsKICAgICAgICAtLW9yZGVyOiAtOTk5OTkvKiBvcmRlciBzdGFydCBoYWNrICovCiAgICAgICAgOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iNmMwM2JmIHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogNTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xYmZkZjcyPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMHB4IDBweCAwcHggMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01YjFlMmFmIGltZyB7CiAgICAgICAgd2lkdGg6IDI1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYWUwNmNiYiB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxOHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjEyYzIwOSAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIxMmMyMDkgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIHdpZHRoOiA1MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIxMmMyMDkgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGFiYzI4ZCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBhYmMyOGQgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIHdpZHRoOiA1MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBhYmMyOGQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMjA4ZDdkNCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIwOGQ3ZDQgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciAuZWxlbWVudG9yLWltYWdlLWJveC1pbWcgewogICAgICAgIHdpZHRoOiA1MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTIwOGQ3ZDQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTVjOTUzYiB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kOWI4ZWE0IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDliOGVhNCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgd2lkdGg6IDUwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDliOGVhNCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wMmQxMGUzIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMyAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZyB7CiAgICAgICAgd2lkdGg6IDUwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMDJkMTBlMyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02YTc4NjAwIHsKICAgICAgICAtLWdhcDogMjBweCAyMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogNTBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA1MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDE1cHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDE1cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWE1YTQ1NGYgaW1nIHsKICAgICAgICB3aWR0aDogMjUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mYTZkZjc2IHsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogNTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZjkyYWQxPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMHB4IDBweCAwcHggMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iYmNjZjU5IGltZyB7CiAgICAgICAgd2lkdGg6IDI1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2U1ZWY3ZSB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDE4cHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lZTcwMWRkIHsKICAgICAgICAtLWdhcDogMjBweCAwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA3MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDcwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMjVweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMjVweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDU3OTkzYSB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTM2YzJkMSB7CiAgICAgICAgLS1nYXA6IDEwcHggMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTJkZjgxMSB7CiAgICAgICAgLS13aWR0aDogMzklOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hMDM5NWMyIHsKICAgICAgICAtLXdpZHRoOiA1NiU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTM4OTA1MTggewogICAgICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWFiOGU0MWQgewogICAgICAgIC0td2lkdGg6IDM5JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDZlN2I0YSB7CiAgICAgICAgLS13aWR0aDogNTYlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jY2UzZjhjIHsKICAgICAgICAtLWdhcDogMTBweCAxMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zMDZlYTM0IHsKICAgICAgICAtLXdpZHRoOiAzOSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTRhMjViZjYgewogICAgICAgIC0td2lkdGg6IDU2JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWZjYTg2OSB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDUwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogNTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNXB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jYzU0YWU5IGltZyB7CiAgICAgICAgd2lkdGg6IDI1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTI5ZTNkNiB7CiAgICAgICAgLS1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogaW5pdGlhbDsKICAgICAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDE7CiAgICAgICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAgICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgLS1mbGV4LXdyYXA6IG5vd3JhcDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTFhMDMxYSBpbWcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMGNmODYzOSBpbWcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgIH0KfQoKQG1lZGlhKG1pbi13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hNTBiYTM1IHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjc5MjMwMiB7CiAgICAgICAgLS13aWR0aDogNTUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kMWRjZDAyIHsKICAgICAgICAtLXdpZHRoOiA0NSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTUzODZlY2QgewogICAgICAgIC0tY29udGVudC13aWR0aDogMTMyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xNmY0OGEzIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMWQ3Y2YyOCB7CiAgICAgICAgLS13aWR0aDogMjUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC01ODYxMDQ3IHsKICAgICAgICAtLXdpZHRoOiAyNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTBlMzkyNjMgewogICAgICAgIC0td2lkdGg6IDI1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzM1ODExOCB7CiAgICAgICAgLS13aWR0aDogMjUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ODRiZDcyIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOGQ0NDU0NSB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQxYTBlY2UgewogICAgICAgIC0td2lkdGg6IDUwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNWZjOGNjMCB7CiAgICAgICAgLS13aWR0aDogNTAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xYzJlNTkwIHsKICAgICAgICAtLXdpZHRoOiAxNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg4OTA1NTUgewogICAgICAgIC0td2lkdGg6IDg1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2QxODIyMyB7CiAgICAgICAgLS13aWR0aDogMTUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kYjFlODE3IHsKICAgICAgICAtLXdpZHRoOiA4NSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWUyZmQ0ZWUgewogICAgICAgIC0td2lkdGg6IDE1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYzFmMWE2NiB7CiAgICAgICAgLS13aWR0aDogODUlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hOTI3MWNhIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMTMzNDhmZiB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTkyMDk2MzMgewogICAgICAgIC0td2lkdGg6IDMxJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjJiZDFhZSB7CiAgICAgICAgLS13aWR0aDogMzElOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05ODFkMWM5IHsKICAgICAgICAtLXdpZHRoOiAzMSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1ZmUwY2UgewogICAgICAgIC0tY29udGVudC13aWR0aDogMTMyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yZTI4MzJhIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTZjNTU3NSB7CiAgICAgICAgLS13aWR0aDogNTYlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kYzI4M2MyIHsKICAgICAgICAtLXdpZHRoOiA0MiU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWI2YzAzYmYgewogICAgICAgIC0tY29udGVudC13aWR0aDogMTMyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hZTA2Y2JiIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjI5YjUwNyB7CiAgICAgICAgLS13aWR0aDogMzAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00NWFmN2I5IHsKICAgICAgICAtLXdpZHRoOiAzMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTEyNDZkZjEgewogICAgICAgIC0td2lkdGg6IDMwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNTVjOTUzYiB7CiAgICAgICAgLS13aWR0aDogMzAlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Yzg3YmI4IHsKICAgICAgICAtLXdpZHRoOiAzMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTZhNzg2MDAgewogICAgICAgIC0tY29udGVudC13aWR0aDogMTMyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05ZDA5NTgyIHsKICAgICAgICAtLXdpZHRoOiA0MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTViYjNlMTUgewogICAgICAgIC0td2lkdGg6IDU2JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZmE2ZGY3NiB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlNWVmN2UgewogICAgICAgIC0tY29udGVudC13aWR0aDogMTMyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1lZTcwMWRkIHsKICAgICAgICAtLXdpZHRoOiA0NyU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTQ1Nzk5M2EgewogICAgICAgIC0td2lkdGg6IDUyJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTJkZjgxMSB7CiAgICAgICAgLS13aWR0aDogMzMlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hMDM5NWMyIHsKICAgICAgICAtLXdpZHRoOiA2NCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWFiOGU0MWQgewogICAgICAgIC0td2lkdGg6IDMzJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDZlN2I0YSB7CiAgICAgICAgLS13aWR0aDogNjQlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zMDZlYTM0IHsKICAgICAgICAtLXdpZHRoOiAzMyU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTRhMjViZjYgewogICAgICAgIC0td2lkdGg6IDY0JTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZWZjYTg2OSB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWZlZjMyOWEgewogICAgICAgIC0td2lkdGg6IDcwJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYTI5ZTNkNiB7CiAgICAgICAgLS13aWR0aDogMzAlOwogICAgfQp9CgpAbWVkaWEobWF4LXdpZHRoOjEwMjRweCkgYW5kIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTZjNTU3NSB7CiAgICAgICAgLS13aWR0aDogNTMlOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kYzI4M2MyIHsKICAgICAgICAtLXdpZHRoOiA0NCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTYyOWI1MDcgewogICAgICAgIC0td2lkdGg6IDMxJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDVhZjdiOSB7CiAgICAgICAgLS13aWR0aDogMzElOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0xMjQ2ZGYxIHsKICAgICAgICAtLXdpZHRoOiAzMSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTU1Yzk1M2IgewogICAgICAgIC0td2lkdGg6IDMxJTsKICAgIH0KICAgIC5lbGVtZW50b3ItOSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWM4N2JiOCB7CiAgICAgICAgLS13aWR0aDogMzElOwogICAgfQogICAgLmVsZW1lbnRvci05IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hMjllM2Q2IHsKICAgICAgICAtLXdpZHRoOiA0MCU7CiAgICB9Cn0="}},"time_used":74,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":74,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/circuittradetech.mp4","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"media","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.155Z","timestamp":1785128399155,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /circuittradetech.mp4 HTTP/1.1\r\nHost: circuittradetech.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nRange: bytes=0-\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: video\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nAccept-Encoding: identity\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/3 206 \r\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: video/mp4\r\ncontent-length: 79425846\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"4bbf136-67c3620e-869656e99233b625;;;\"\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 4888\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 1eb5ec4d3678847038a6a63b466ae012-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\ncontent-range: bytes 0-79425845/79425846\r\n\r\n","headers":null,"cookies":null,"status_code":"206","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":130721,"size_decoded":131218,"mime_type":"video/mp4","magic":"ISO Media, MP4 Base Media v1 [ISO 14496-12:2003]","md5":"5f48b680af0434db5a095c7377170e67","sha1":"ac1eb45b801e081316ff334d8a7e0418a0399fd9","sha256":"3a846b612cf4563b719498ad4eed645c0ac526728350b37bbd791b2e5504a2c6","sha512":"ea611c84d2f6a235cf565ed6220eb396bf3d21f215112465dcb9b54c84f9ef34d892736edae7e9d87b07c93a1b90189967deb0810bdeb06c1bb6b70c4e993c3b","ssdeep":"3072:tRHRKzc/UIHo0nabsFaxjBn+dQbNEw4flhcYwp:tNRyuDna5xjh3N44","tlshash":"9ed312d5adb387f6e3e950221dba7c1a2e849fd4917252f0a300db5b543193c0f87a6e","first_seen":"2026-07-27T05:00:36.631746Z","last_seen":"2026-07-27T05:00:36.631746Z","times_seen":1,"resource_available":false,"data":"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"}},"time_used":88,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":49,"receive":39,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/tab_img1.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.856Z","timestamp":1785128398856,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/tab_img1.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 626\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: cc246a28282d348ec039e551503001ca-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":626,"size_decoded":947,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"fb098d83f4e1133f362386c4e9d917a0","sha1":"3665ba58349bfc3b1e08a9cfadd20287c4bc7a29","sha256":"8437f74673e2b26f91a123382a3e944bef92eaf48461fe3720e7aa120e2620ae","sha512":"6295e6dcdfad48ee8cbc58f02d609d342ac788442c0fe5b52cc1151934e35e785c0cb3449f0d5ac483e22a13a2867e27fa6a04b96f612ede14cf5c20c17e34d2","ssdeep":"","tlshash":"d3f0472d41651d39f051253cd4bf7318402ef804d20ae65be42124186dc9502ce749dd","first_seen":"2026-07-27T03:56:42.581274Z","last_seen":"2026-07-27T05:01:06.094049Z","times_seen":3,"resource_available":false,"data":"UklGRmoCAABXRUJQVlA4WAoAAAAYAAAAEwAAFAAAQUxQSFwBAAABgGzbtilnx7bLdlVs27Zt27Zt2zabGekmv5TCL0TEBEC2acjGeogZ5CXS/Vc2RJzlJV86SZpawdrg7ayShoby+NPwUq4U+rarleNq//hE3647QTQuhTUpDopJy8vJyU2PDqU2yXCMSUmSmhLLkTHhllNWIrUsT9gohTIttnNzc3P18HR1EFNa/2n4jNlVdHV0ZwOmNkT9DsCYUPn14c7mCwR0gPD5S22A5fzRTsDPdY8yAGi2TO8RmsDddSHqkyNPNQHQdtt0LHU6UTljWToTIz7IAkLPYkFgm7fjm8Lett8zDH9RqdmgQXNvM6ccxf20+pU0p/n0oR7j1ARqb3BtGVh7YiOqvs+RsY8S72YuuD6kshymM2db7u9nVbzmOI/qhPha3+pyQN+g+POWhty/vYCNgdDpjqpiAFDzmTACOctbJztROyxD0vUPKN8dH+4fGOnrH+3vW6qVpjBWUDggJgAAANACAJ0BKhQAFQA+USSPRaOiIRQEADgFBLSAAB7R0AAA/vyoAAAARVhJRroAAABFeGlmAABJSSoACAAAAAYAEgEDAAEAAAABAAAAGgEFAAEAAABWAAAAGwEFAAEAAABeAAAAKAEDAAEAAAACAAAAEwIDAAEAAAABAAAAaYcEAAEAAABmAAAAAAAAAEgAAAABAAAASAAAAAEAAAAGAACQBwAEAAAAMDIxMAGRBwAEAAAAAQIDAACgBwAEAAAAMDEwMAGgAwABAAAA//8AAAKgBAABAAAAFAAAAAOgBAABAAAAFQAAAAAAAAA="}},"time_used":105,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":105,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment_tetherpol.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.878Z","timestamp":1785128398878,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment_tetherpol.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 2936\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: a4a305969bfb39d126ad6429664a676a-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":2936,"size_decoded":3258,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"579e3fe81f16663b947a099f438cd109","sha1":"c17259ab57eb9dc076869df9b157468cea5d87f8","sha256":"ab43b2d304e5c1b0e644c5f6c117d2b56411fa03289eff5f650d7f2f11cfc0ec","sha512":"ad38074f3b97f591586cfcd4dfeda9421b7978b300ac920128a14eee189344fc74ccf1bf2658316ab168524c65adaf913467cd56faa8f43f2803fb206961bade","ssdeep":"","tlshash":"0851f9c2be8a3cb1dd77613d1d9b2f5e8b1ac4a26018e053611ae5085be502deb71469","first_seen":"2026-07-27T03:56:42.556001Z","last_seen":"2026-07-27T05:01:06.174563Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":84,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":84,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/translate_static/img/te_bk.gif","fqdn":"translate.googleapis.com","domain":"translate.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":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T05:00:00.118Z","timestamp":1785128400118,"http_version":"HTTP/3","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 /translate_static/img/te_bk.gif HTTP/1.1\r\nHost: translate.googleapis.com\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, i\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\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 848\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 10:11:17 GMT\r\nexpires: Fri, 23 Jul 2027 10:11:17 GMT\r\ncache-control: public, max-age=31536000\r\nage: 326923\r\nlast-modified: Sun, 25 Jun 2023 02:58:00 GMT\r\ncontent-type: image/gif\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":848,"size_decoded":1507,"mime_type":"image/gif","magic":"GIF image data, version 89a, 1 x 59","md5":"daf9b48977041ac85a62dc9b7c16b38d","sha1":"049dcb061470572d06fd83b287ebd1d96e6bb870","sha256":"cb1fd0e051209c32622e91cdeda967e50d80a184b185ac6a656a807986e8eb75","sha512":"99f5f27990b6b5559c751a92c04037f5d42e848a966893484af66d3f66828c29a2dddc8788d7dd4cd835e8ab6d834e74fb3eaa4e2cd72d55b2813d7aab990af2","ssdeep":"","tlshash":"1c018c0cc8700a19e3422fb0ca5b6e0429675b465d88b20fb6aa22c27d04ba48049b1c","first_seen":"2023-04-05T23:29:53Z","last_seen":"2026-07-27T17:47:56.71631Z","times_seen":10073,"resource_available":false,"data":"R0lGODlhAQA7APcAANfX19/f3+Hh4eLi4uTk5Obm5ujo6Orq6uvr6+3t7e7u7uTv++bw++fw/Ojx/Ory/O30/O71/fHx8fP4/fT5/fb6/vj7/vr8/vz9//7+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAQA7AAAINQAzCBxIUCCGCwgtVFhIYcKECA8jQHgw8UEDBg4aLGCwIIOEjyAlKEiA4ICBAgQGCAgQAEBAADs="}},"time_used":16,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/post-595fea.css?ver=1706574923","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.778Z","timestamp":1785128398778,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/elementor/css/post-595fea.css?ver=1706574923 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 1524\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:45 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"41ee-67c3620e-5d50ac10d396678c;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457453\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 806853be59c5fb14031ac6ebfe898e33-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":16878,"size_decoded":2096,"mime_type":"text/css","magic":"ASCII text","md5":"09c78742f96f3e39407d0f7dd93ab101","sha1":"dba4b8ddf10fc82d7eb5434d47fd645ca520eea4","sha256":"20adf5a7b1bc703bb5b9ab1d0be4d302c0753340a3af8f17c05bf2eedeb3a815","sha512":"008f34132997121e0005d0a614e69f91e8d6a47a590ddea3bf33cccf23c02a3f94b18968a9748f7a7d24a051cc299b52da1340ef2d4b6eb527d04fa246bf9790","ssdeep":"192:pOmFU4WapUJV7CsV1Vh0sXMAJlZUVXYN/4Ay+fKnK7n7B0s12F0F0IVj0k8u46I6:pr+r+okYHKGEF0FuI","tlshash":"8f7212d13e531264b59f205fa2cb929d263448cbcd3db9e9f5e8114aef78e8033d2948","first_seen":"2026-07-27T03:56:42.602527Z","last_seen":"2026-07-27T05:30:59.809803Z","times_seen":6,"resource_available":false,"data":"LmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjU5M2E5NSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1nYXA6IDQ1cHggNDVweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjU5M2E5NTpub3QoLmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1lbGVtZW50LXR5cGUtYmFja2dyb3VuZCksCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTY1OTNhOTU+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1jb250YWluZXI+LmVsZW1lbnRvci1tb3Rpb24tZWZmZWN0cy1sYXllciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMEUxNTI0Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02NTkzYTk1LAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02NTkzYTk1OjpiZWZvcmUgewogICAgLS1ib3JkZXItdHJhbnNpdGlvbjogMC4zczsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZGZmNWJiYyB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThkNjIxODYgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLWdhcDogMzVweCAzNXB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTg5NjRhMGEgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDE7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIC0tZ2FwOiA1MHB4IDUwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzlmZDlkMyB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDMwcHggMzBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wZWEyMGVmIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLWxlZnQ6IDBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAubWVudS1pdGVtIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgcGFkZGluZy1sZWZ0OiBjYWxjKCAwcHggKyAyMHB4KTsKICAgIHBhZGRpbmctcmlnaHQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLm1lbnUtaXRlbSB1bCB1bCBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIHBhZGRpbmctbGVmdDogY2FsYyggMHB4ICsgNDBweCk7CiAgICBwYWRkaW5nLXJpZ2h0OiAwcHg7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIC5tZW51LWl0ZW0gdWwgdWwgdWwgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoIDBweCArIDYwcHgpOwogICAgcGFkZGluZy1yaWdodDogMHB4Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAubWVudS1pdGVtIHVsIHVsIHVsIHVsIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgcGFkZGluZy1sZWZ0OiBjYWxjKCAwcHggKyA4MHB4KTsKICAgIHBhZGRpbmctcmlnaHQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAubWVudS1pdGVtIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgcGFkZGluZy10b3A6IDBweDsKICAgIHBhZGRpbmctYm90dG9tOiAwcHg7Cn0KCmJvZHk6bm90KC5ydGwpIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICBtYXJnaW4tcmlnaHQ6IDIycHg7Cn0KCmJvZHkucnRsIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICBtYXJnaW4tbGVmdDogMjJweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXY6bm90KC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsKSAuaGZlLW5hdi1tZW51PmxpLm1lbnUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIG1hcmdpbi1ib3R0b206IDIycHg7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgZm9udC1zaXplOiAyNnB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGxpbmUtaGVpZ2h0OiAzNnB4Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5zdWItbWVudSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLm1lbnUtaXRlbS5jdXJyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQsCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5tZW51LWl0ZW0uY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5tZW51LWl0ZW0uY3VycmVudC1tZW51LWFuY2VzdG9yIGEuaGZlLW1lbnUtaXRlbSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLmVsZW1lbnRvci1tZW51LXRvZ2dsZSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93bi1leHBhbmRpYmxlIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5zdWItbWVudSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duIC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IG5hdi5oZmUtZHJvcGRvd24gLm1lbnUtaXRlbSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMxQTIxMkY7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLmVsZW1lbnRvci1tZW51LXRvZ2dsZTpob3ZlciwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93bi1leHBhbmRpYmxlIGxpIGEuaGZlLW1lbnUtaXRlbTpob3ZlciwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbTpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93biBsaSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93biBsaSBhLmhmZS1zdWItbWVudS1pdGVtLAouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93bi1leHBhbmRpYmxlIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgcGFkZGluZy10b3A6IDE1cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTVweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSAuc3ViLW1lbnUgbGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCksCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1kcm9wZG93biBsaS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZTsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBkaXYuaGZlLW5hdi1tZW51LWljb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBkaXYuaGZlLW5hdi1tZW51LWljb24gc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDFiZTU5ZSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1nYXA6IDMwcHggMzBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hZTg1OGI0IHsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWFlODU4YjQgaW1nIHsKICAgIHdpZHRoOiA2NSU7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTI1MzcxNzYgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2E1NmIwNSB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1nYXA6IDEwcHggMTBweDsKICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIC0tYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci13aWR0aDogMXB4IDBweCAwcHggMHB4OwogICAgLS1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IDFweDsKICAgIC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGg6IDBweDsKICAgIC0tYm9yZGVyLWJsb2NrLWVuZC13aWR0aDogMHB4OwogICAgLS1ib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiAwcHg7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKICAgIC0tYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDEwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAxMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2E1NmIwNSwKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtM2E1NmIwNTo6YmVmb3JlIHsKICAgIC0tYm9yZGVyLXRyYW5zaXRpb246IDAuM3M7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWM3ZjgzNDggewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYmNjYzk3NCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iY2NjOTc0IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTJkZDU1ZmEgewogICAgLS1kaXNwbGF5OiBmbGV4OwogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1jb250YWluZXItd2lkZ2V0LXdpZHRoOiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1mbGV4LWdyb3c6IDA7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtYWxpZ24tc2VsZjogaW5pdGlhbDsKICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDYyNmZjYSB7CiAgICAtLWdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDAsIGF1dG8pOwogICAgLS1pY29uLXNpemU6IDM2cHg7CiAgICAtLWdyaWQtY29sdW1uLWdhcDogMjRweDsKICAgIC0tZ3JpZC1yb3ctZ2FwOiAwcHg7Cn0KCi5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWQ2MjZmY2EgLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgouZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kNjI2ZmNhIC5lbGVtZW50b3Itc29jaWFsLWljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAyMDEwMTAwOwogICAgLS1pY29uLXBhZGRpbmc6IDBlbTsKfQoKQG1lZGlhKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTY1OTNhOTUgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiA4MHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDgwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMjBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LThkNjIxODYgewogICAgICAgIC0tZ2FwOiAyMHB4IDIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04OTY0YTBhIHsKICAgICAgICAtLWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAtLWdhcDogMjBweCAyMHB4OwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzlmZDlkMyB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0sCiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IC5tZW51LWl0ZW0gYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgfQogICAgYm9keTpub3QoLnJ0bCkgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOS5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1yaWdodDogMHB4OwogICAgfQogICAgYm9keSAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IG5hdi5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAuaGZlLW5hdi1tZW51PmxpLm1lbnUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IGEuaGZlLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNDFiZTU5ZSB7CiAgICAgICAgLS1nYXA6IDIwcHggMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTNhNTZiMDUgewogICAgICAgIC0tZ2FwOiAxMHB4IDEwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iY2NjOTc0IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDYyNmZjYSB7CiAgICAgICAgLS1pY29uLXNpemU6IDI2cHg7CiAgICAgICAgLS1ncmlkLWNvbHVtbi1nYXA6IDEycHg7CiAgICB9Cn0KCkBtZWRpYShtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTY1OTNhOTUgewogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogNjBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA0MHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDEwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDEwcHg7CiAgICB9CiAgICBib2R5Om5vdCgucnRsKSAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5LmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7CiAgICB9CiAgICBib2R5IC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgbmF2LmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNTkgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTdlMDI0ZDkgYS5oZmUtbWVudS1pdGVtLAogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtN2UwMjRkOSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hZTg1OGI0IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iY2NjOTc0IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1iY2NjOTc0IC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZDYyNmZjYSAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KfQoKQG1lZGlhKG1pbi13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjU5M2E5NSB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1kZmY1YmJjIHsKICAgICAgICAtLXdpZHRoOiA0MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC04ZDYyMTg2IHsKICAgICAgICAtLXdpZHRoOiA1NiU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zOWZkOWQzIHsKICAgICAgICAtLXdpZHRoOiAzNSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC00MWJlNTllIHsKICAgICAgICAtLXdpZHRoOiA1OCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jN2Y4MzQ4IHsKICAgICAgICAtLXdpZHRoOiA2MCU7CiAgICB9CiAgICAuZWxlbWVudG9yLTU5IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0yZGQ1NWZhIHsKICAgICAgICAtLXdpZHRoOiA0MCU7CiAgICB9Cn0KCkBtZWRpYShtYXgtd2lkdGg6MTAyNHB4KSBhbmQgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOGQ2MjE4NiB7CiAgICAgICAgLS13aWR0aDogNTglOwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYzdmODM0OCB7CiAgICAgICAgLS13aWR0aDogNzAlOwogICAgfQogICAgLmVsZW1lbnRvci01OSAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMmRkNTVmYSB7CiAgICAgICAgLS13aWR0aDogMzAlOwogICAgfQp9"}},"time_used":97,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":97,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/metform/public/assets/js/app.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.831Z","timestamp":1785128398831,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/metform/public/assets/js/app.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:46 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"14bf89-67c3620e-dfe8405db28eb5b8;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457452\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: cc32526d58cfcb20bc773f4b20b0e52a-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.021\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":1359753,"size_decoded":294551,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (909)","md5":"5532e9540f5c068ec71e2e68183e522b","sha1":"1c1c05967eabb14e920e606b929713f383796b00","sha256":"90842b2f2e2198834b4546ca1296ad1f0ec69445760172e3719a769fa69400a6","sha512":"1b192c038cea93f3ec81558188f053741a51e48dfe4c29d61124fe451cc017ab9fc1ee544002f13f2a9f3a0746c9652442e4cec8308cbc0c98cb3cd9deea4f25","ssdeep":"24576:lK+fXlNuudu3D9dM1biVOBN/8jpPxJRUU+iPy4kSYOqu23F5rMmZZ1veUvjNk9kQ:lK+fXlNuudu3D9dM1biVOBN/8jpPxJR/","tlshash":"7925814dbaf264718253f0394a2fc804b236941f598ced007e4c95a55f6983da7fafe8","first_seen":"2026-07-27T03:56:42.580242Z","last_seen":"2026-07-27T05:30:59.817403Z","times_seen":6,"resource_available":false,"data":"ISBmdW5jdGlvbigpIHsKICAgIHZhciBlID0gewogICAgICAgICAgICA2NTIxOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiBSZWZsZWN0ICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFJlZmxlY3Qub3duS2V5cyA/IHQgPSBSZWZsZWN0Lm93bktleXMoZS5wcm90b3R5cGUpIDogKHQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlLnByb3RvdHlwZSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgKHQgPSB0LmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUucHJvdG90eXBlKSkpKSwgdC5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiY29uc3RydWN0b3IiICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5wcm90b3R5cGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygbi52YWx1ZSAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIHQsIHIoZSwgdCwgbikpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksIGUKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiByKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHIpIHRocm93IG5ldyBFcnJvcigiQGF1dG9iaW5kIGRlY29yYXRvciBjYW4gb25seSBiZSBhcHBsaWVkIHRvIG1ldGhvZHMgbm90OiAiICsgdHlwZW9mIHIpOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gITE7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvIHx8IHRoaXMgPT09IGUucHJvdG90eXBlIHx8IHRoaXMuaGFzT3duUHJvcGVydHkodCkpIHJldHVybiByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSByLmJpbmQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyA9ICEwLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbyA9ICExLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGgsIHQgPSBBcnJheShlKSwgbyA9IDA7IG8gPCBlOyBvKyspIHRbb10gPSBhcmd1bWVudHNbb107CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgPT09IHQubGVuZ3RoID8gbi5hcHBseSh1bmRlZmluZWQsIHQpIDogci5hcHBseSh1bmRlZmluZWQsIHQpCiAgICAgICAgICAgICAgICB9LCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgODUyNzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgbi5yKHQpLCBuLmQodCwgewogICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgciA9IFsib25DaGFuZ2UiLCAib25DbG9zZSIsICJvbkRheUNyZWF0ZSIsICJvbkRlc3Ryb3kiLCAib25LZXlEb3duIiwgIm9uTW9udGhDaGFuZ2UiLCAib25PcGVuIiwgIm9uUGFyc2VDb25maWciLCAib25SZWFkeSIsICJvblZhbHVlVXBkYXRlIiwgIm9uWWVhckNoYW5nZSIsICJvblByZUNhbGVuZGFyUG9zaXRpb24iXSwKICAgICAgICAgICAgICAgICAgICBvID0gewogICAgICAgICAgICAgICAgICAgICAgICBfZGlzYWJsZTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93SW5wdXQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0ludmFsaWRQcmVsb2FkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgYWx0Rm9ybWF0OiAiRiBqLCBZIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWx0SW5wdXQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBhbHRJbnB1dENsYXNzOiAiZm9ybS1jb250cm9sIGlucHV0IiwKICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZTogIm9iamVjdCIgPT0gdHlwZW9mIHdpbmRvdyAmJiAtMSA9PT0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSIpLAogICAgICAgICAgICAgICAgICAgICAgICBhcmlhRGF0ZUZvcm1hdDogIkYgaiwgWSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9GaWxsRGVmYXVsdFRpbWU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBjbGlja09wZW5zOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VPblNlbGVjdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmp1bmN0aW9uOiAiLCAiLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0OiAiWS1tLWQiLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SG91cjogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNaW51dGU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTZWNvbmRzOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZU1vYmlsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVNlY29uZHM6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUaW1lOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVuZGVmaW5lZCIgIT0gdHlwZW9mIGNvbnNvbGUgJiYgY29uc29sZS53YXJuKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGdldFdlZWs6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IERhdGUoZS5nZXRUaW1lKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zZXRIb3VycygwLCAwLCAwLCAwKSwgdC5zZXREYXRlKHQuZ2V0RGF0ZSgpICsgMyAtICh0LmdldERheSgpICsgNikgJSA3KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbmV3IERhdGUodC5nZXRGdWxsWWVhcigpLCAwLCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxICsgTWF0aC5yb3VuZCgoKHQuZ2V0VGltZSgpIC0gbi5nZXRUaW1lKCkpIC8gODY0ZTUgLSAzICsgKG4uZ2V0RGF5KCkgKyA2KSAlIDcpIC8gNykKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgaG91ckluY3JlbWVudDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZEZvY3VzRWxlbWVudHM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6ICJkZWZhdWx0IiwKICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlSW5jcmVtZW50OiA1LAogICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiAic2luZ2xlIiwKICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhTZWxlY3RvclR5cGU6ICJkcm9wZG93biIsCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRBcnJvdzogIjxzdmcgdmVyc2lvbj0nMS4xJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyB2aWV3Qm94PScwIDAgMTcgMTcnPjxnPjwvZz48cGF0aCBkPSdNMTMuMjA3IDguNDcybC03Ljg1NCA3Ljg1NC0wLjcwNy0wLjcwNyA3LjE0Ni03LjE0Ni03LjE0Ni03LjE0OCAwLjcwNy0wLjcwNyA3Ljg1NCA3Ljg1NHonIC8+PC9zdmc+IiwKICAgICAgICAgICAgICAgICAgICAgICAgbm9DYWxlbmRhcjogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIG5vdzogbmV3IERhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uRGF5Q3JlYXRlOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgb25EZXN0cm95OiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgb25Nb250aENoYW5nZTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uT3BlbjogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uUGFyc2VDb25maWc6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBvblJlYWR5OiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgb25WYWx1ZVVwZGF0ZTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uWWVhckNoYW5nZTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uUHJlQ2FsZW5kYXJQb3NpdGlvbjogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbkVsZW1lbnQ6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgcHJldkFycm93OiAiPHN2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHZpZXdCb3g9JzAgMCAxNyAxNyc+PGc+PC9nPjxwYXRoIGQ9J001LjIwNyA4LjQ3MWw3LjE0NiA3LjE0Ny0wLjcwNyAwLjcwNy03Ljg1My03Ljg1NCA3Ljg1NC03Ljg1MyAwLjcwNyAwLjcwNy03LjE0NyA3LjE0NnonIC8+PC9zdmc+IiwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kQ3VycmVudE1vbnRoOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd01vbnRoczogMSwKICAgICAgICAgICAgICAgICAgICAgICAgInN0YXRpYyI6ICExLAogICAgICAgICAgICAgICAgICAgICAgICB0aW1lXzI0aHI6ICExLAogICAgICAgICAgICAgICAgICAgICAgICB3ZWVrTnVtYmVyczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHdyYXA6ICExCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpID0gewogICAgICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kOiBbIlN1biIsICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ2hhbmQ6IFsiU3VuZGF5IiwgIk1vbmRheSIsICJUdWVzZGF5IiwgIldlZG5lc2RheSIsICJUaHVyc2RheSIsICJGcmlkYXkiLCAiU2F0dXJkYXkiXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBtb250aHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZDogWyJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ2hhbmQ6IFsiSmFudWFyeSIsICJGZWJydWFyeSIsICJNYXJjaCIsICJBcHJpbCIsICJNYXkiLCAiSnVuZSIsICJKdWx5IiwgIkF1Z3VzdCIsICJTZXB0ZW1iZXIiLCAiT2N0b2JlciIsICJOb3ZlbWJlciIsICJEZWNlbWJlciJdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGRheXNJbk1vbnRoOiBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0RGF5T2ZXZWVrOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgJSAxMDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+IDMgJiYgdCA8IDIxKSByZXR1cm4gInRoIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodCAlIDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibmQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJyZCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ0aCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VTZXBhcmF0b3I6ICIgdG8gIiwKICAgICAgICAgICAgICAgICAgICAgICAgd2Vla0FiYnJldmlhdGlvbjogIldrIiwKICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVGl0bGU6ICJTY3JvbGwgdG8gaW5jcmVtZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlVGl0bGU6ICJDbGljayB0byB0b2dnbGUiLAogICAgICAgICAgICAgICAgICAgICAgICBhbVBNOiBbIkFNIiwgIlBNIl0sCiAgICAgICAgICAgICAgICAgICAgICAgIHllYXJBcmlhTGFiZWw6ICJZZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhBcmlhTGFiZWw6ICJNb250aCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJBcmlhTGFiZWw6ICJIb3VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlQXJpYUxhYmVsOiAiTWludXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgdGltZV8yNGhyOiAhMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYSA9IGksCiAgICAgICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdCAmJiAodCA9IDIpLCAoIjAwMCIgKyBlKS5zbGljZSgtMSAqIHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB1ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IGUgPyAxIDogMAogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYXJndW1lbnRzOwogICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobiksIG4gPSBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmFwcGx5KHIsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBjID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlIGluc3RhbmNlb2YgQXJyYXkgPyBlIDogW2VdCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIGlmICghMCA9PT0gbikgcmV0dXJuIGUuY2xhc3NMaXN0LmFkZCh0KTsKICAgICAgICAgICAgICAgICAgICBlLmNsYXNzTGlzdC5yZW1vdmUodCkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gdCB8fCAiIiwgbiA9IG4gfHwgIiIsIHIuY2xhc3NOYW1lID0gdCwgbiAhPT0gdW5kZWZpbmVkICYmIChyLnRleHRDb250ZW50ID0gbiksIHIKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBwKGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZS5maXJzdENoaWxkOykgZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQoZSkgPyBlIDogZS5wYXJlbnROb2RlID8gaChlLnBhcmVudE5vZGUsIHQpIDogdW5kZWZpbmVkCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBkKCJkaXYiLCAibnVtSW5wdXRXcmFwcGVyIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBkKCJpbnB1dCIsICJudW1JbnB1dCAiICsgZSksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBkKCJzcGFuIiwgImFycm93VXAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGQoInNwYW4iLCAiYXJyb3dEb3duIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKC0xID09PSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUgOS4wIikgPyByLnR5cGUgPSAibnVtYmVyIiA6IChyLnR5cGUgPSAidGV4dCIsIHIucGF0dGVybiA9ICJcXGQqIiksIHQgIT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSBpbiB0KSByLnNldEF0dHJpYnV0ZShhLCB0W2FdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5hcHBlbmRDaGlsZChyKSwgbi5hcHBlbmRDaGlsZChvKSwgbi5hcHBlbmRDaGlsZChpKSwgbgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHkoZSkgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLmNvbXBvc2VkUGF0aCA/IGUuY29tcG9zZWRQYXRoKClbMF0gOiBlLnRhcmdldAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdiA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ubW9udGhzW3QgPyAic2hvcnRoYW5kIiA6ICJsb25naGFuZCJdW2VdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBiID0gewogICAgICAgICAgICAgICAgICAgICAgICBEOiBnLAogICAgICAgICAgICAgICAgICAgICAgICBGOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldE1vbnRoKG4ubW9udGhzLmxvbmdoYW5kLmluZGV4T2YodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEc6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0SG91cnMoKGUuZ2V0SG91cnMoKSA+PSAxMiA/IDEyIDogMCkgKyBwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBIOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldEhvdXJzKHBhcnNlRmxvYXQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEo6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0RGF0ZShwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBLOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldEhvdXJzKGUuZ2V0SG91cnMoKSAlIDEyICsgMTIgKiB1KG5ldyBSZWdFeHAobi5hbVBNWzFdLCAiaSIpLnRlc3QodCkpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBNOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldE1vbnRoKG4ubW9udGhzLnNob3J0aGFuZC5pbmRleE9mKHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBTOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldFNlY29uZHMocGFyc2VGbG9hdCh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgVTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKDFlMyAqIHBhcnNlRmxvYXQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFc6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gcGFyc2VJbnQodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSwgMCwgMiArIDcgKiAociAtIDEpLCAwLCAwLCAwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLnNldERhdGUoby5nZXREYXRlKCkgLSBvLmdldERheSgpICsgbi5maXJzdERheU9mV2VlayksIG8KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgWTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zZXRGdWxsWWVhcihwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBaOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zZXREYXRlKHBhcnNlRmxvYXQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGg6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0SG91cnMoKGUuZ2V0SG91cnMoKSA+PSAxMiA/IDEyIDogMCkgKyBwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBpOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldE1pbnV0ZXMocGFyc2VGbG9hdCh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgajogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zZXREYXRlKHBhcnNlRmxvYXQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGw6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgIG06IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0TW9udGgocGFyc2VGbG9hdCh0KSAtIDEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG46IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0TW9udGgocGFyc2VGbG9hdCh0KSAtIDEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHM6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0U2Vjb25kcyhwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB1OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUocGFyc2VGbG9hdCh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdzogZywKICAgICAgICAgICAgICAgICAgICAgICAgeTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zZXRGdWxsWWVhcigyZTMgKyBwYXJzZUZsb2F0KHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB3ID0gewogICAgICAgICAgICAgICAgICAgICAgICBEOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgRjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIEc6ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBIOiAiKFxcZFxcZHxcXGQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgSjogIihcXGRcXGR8XFxkKVxcdysiLAogICAgICAgICAgICAgICAgICAgICAgICBLOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgTTogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIFM6ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBVOiAiKC4rKSIsCiAgICAgICAgICAgICAgICAgICAgICAgIFc6ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBZOiAiKFxcZHs0fSkiLAogICAgICAgICAgICAgICAgICAgICAgICBaOiAiKC4rKSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGQ6ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBoOiAiKFxcZFxcZHxcXGQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgaTogIihcXGRcXGR8XFxkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGo6ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBsOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgbTogIihcXGRcXGR8XFxkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgIG46ICIoXFxkXFxkfFxcZCkiLAogICAgICAgICAgICAgICAgICAgICAgICBzOiAiKFxcZFxcZHxcXGQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgdTogIiguKykiLAogICAgICAgICAgICAgICAgICAgICAgICB3OiAiKFxcZFxcZHxcXGQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgeTogIihcXGR7Mn0pIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgTyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgWjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudG9JU09TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBEOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC53ZWVrZGF5cy5zaG9ydGhhbmRbTy53KGUsIHQsIG4pXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBGOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdihPLm4oZSwgdCwgbikgLSAxLCAhMSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgRzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMoTy5oKGUsIHQsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBIOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyhlLmdldEhvdXJzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEo6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lm9yZGluYWwgIT09IHVuZGVmaW5lZCA/IGUuZ2V0RGF0ZSgpICsgdC5vcmRpbmFsKGUuZ2V0RGF0ZSgpKSA6IGUuZ2V0RGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEs6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmFtUE1bdShlLmdldEhvdXJzKCkgPiAxMSldCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIE06IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2KGUuZ2V0TW9udGgoKSwgITAsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKGUuZ2V0U2Vjb25kcygpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBVOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRUaW1lKCkgLyAxZTMKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgVzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uZ2V0V2VlayhlKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBZOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyhlLmdldEZ1bGxZZWFyKCksIDQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKGUuZ2V0RGF0ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBoOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRIb3VycygpICUgMTIgPyBlLmdldEhvdXJzKCkgJSAxMiA6IDEyCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKGUuZ2V0TWludXRlcygpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBqOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXREYXRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQud2Vla2RheXMubG9uZ2hhbmRbZS5nZXREYXkoKV0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMoZS5nZXRNb250aCgpICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0TW9udGgoKSArIDEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0U2Vjb25kcygpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldFRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB3OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXREYXkoKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUuZ2V0RnVsbFllYXIoKSkuc3Vic3RyaW5nKDIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdm9pZCAwID09PSB0ID8gbyA6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5sMTBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHZvaWQgMCA9PT0gciA/IGkgOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuaXNNb2JpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdm9pZCAwICE9PSBzICYmIHM7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIgfHwgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmZvcm1hdERhdGUgPT09IHVuZGVmaW5lZCB8fCB1ID8gdC5zcGxpdCgiIikubWFwKChmdW5jdGlvbih0LCByLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9bdF0gJiYgIlxcIiAhPT0gaVtyIC0gMV0gPyBPW3RdKGUsIG8sIG4pIDogIlxcIiAhPT0gdCA/IHQgOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmpvaW4oIiIpIDogbi5mb3JtYXREYXRlKGUsIHQsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdm9pZCAwID09PSB0ID8gbyA6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5sMTBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHZvaWQgMCA9PT0gciA/IGkgOiByOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCwgciwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT09IGUgJiYgIWUpIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcywgdSA9IGkgfHwgYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRGF0ZSkgcyA9IG5ldyBEYXRlKGUuZ2V0VGltZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBlICYmIGUudG9GaXhlZCAhPT0gdW5kZWZpbmVkKSBzID0gbmV3IERhdGUoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdCB8fCAobiB8fCBvKS5kYXRlRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gU3RyaW5nKGUpLnRyaW0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInRvZGF5IiA9PT0gZikgcyA9IG5ldyBEYXRlLCByID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobiAmJiBuLnBhcnNlRGF0ZSkgcyA9IG4ucGFyc2VEYXRlKGUsIGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKC9aJC8udGVzdChmKSB8fCAvR01UJC8udGVzdChmKSkgcyA9IG5ldyBEYXRlKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gdm9pZCAwLCBwID0gW10sIGggPSAwLCBtID0gMCwgeSA9ICIiOyBoIDwgYy5sZW5ndGg7IGgrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBjW2hdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSAiXFwiID09PSBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSAiXFwiID09PSBjW2ggLSAxXSB8fCB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdbZ10gJiYgIU8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ICs9IHdbZ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF8gPSBuZXcgUmVnRXhwKHkpLmV4ZWMoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAmJiAoZCA9ICEwKSAmJiBwWyJZIiAhPT0gZyA/ICJwdXNoIiA6ICJ1bnNoaWZ0Il0oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogYltnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsOiBfWysrbV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHYgfHwgKHkgKz0gIi4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuICYmIG4ubm9DYWxlbmRhciA/IG5ldyBEYXRlKChuZXcgRGF0ZSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpIDogbmV3IERhdGUoKG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLCAwLCAxLCAwLCAwLCAwLCAwKSwgcC5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUudmFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgPSB0KHMsIG4sIHUpIHx8IHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBzID0gZCA/IHMgOiB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKHMuZ2V0VGltZSgpKSA/ICghMCA9PT0gciAmJiBzLnNldEhvdXJzKDAsIDAsIDAsIDApLCBzKSA6IChuLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoIkludmFsaWQgZGF0ZSBwcm92aWRlZDogIiArIGwpKSwgdW5kZWZpbmVkKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBrKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBuICYmIChuID0gITApLCAhMSAhPT0gbiA/IG5ldyBEYXRlKGUuZ2V0VGltZSgpKS5zZXRIb3VycygwLCAwLCAwLCAwKSAtIG5ldyBEYXRlKHQuZ2V0VGltZSgpKS5zZXRIb3VycygwLCAwLCAwLCAwKSA6IGUuZ2V0VGltZSgpIC0gdC5nZXRUaW1lKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBFID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzYwMCAqIGUgKyA2MCAqIHQgKyBuCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBDID0gODY0ZTU7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gUyhlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmRlZmF1bHRIb3VyLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5kZWZhdWx0TWludXRlLAogICAgICAgICAgICAgICAgICAgICAgICByID0gZS5kZWZhdWx0U2Vjb25kczsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5taW5EYXRlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLm1pbkRhdGUuZ2V0SG91cnMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLm1pbkRhdGUuZ2V0TWludXRlcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUubWluRGF0ZS5nZXRTZWNvbmRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPCBvICYmICh0ID0gbyksIHQgPT09IG8gJiYgbiA8IGkgJiYgKG4gPSBpKSwgdCA9PT0gbyAmJiBuID09PSBpICYmIHIgPCBhICYmIChyID0gZS5taW5EYXRlLmdldFNlY29uZHMoKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGUubWF4RGF0ZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZS5tYXhEYXRlLmdldEhvdXJzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZS5tYXhEYXRlLmdldE1pbnV0ZXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgKHQgPSBNYXRoLm1pbih0LCBzKSkgPT09IHMgJiYgKG4gPSBNYXRoLm1pbih1LCBuKSksIHQgPT09IHMgJiYgbiA9PT0gdSAmJiAociA9IGUubWF4RGF0ZS5nZXRTZWNvbmRzKCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzOiBuLAogICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzOiByCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbigxODk1KTsKICAgICAgICAgICAgICAgIHZhciBqID0gdW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX2Fzc2lnbiB8fCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChqID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCBuID0gMSwgciA9IGFyZ3VtZW50cy5sZW5ndGg7IG4gPCByOyBuKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyBpbiB0ID0gYXJndW1lbnRzW25dKSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwgbykgJiYgKGVbb10gPSB0W29dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIFAgPSB1bmRlZmluZWQgJiYgdW5kZWZpbmVkLl9fc3ByZWFkQXJyYXlzIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMCwgdCA9IDAsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyB0IDwgbjsgdCsrKSBlICs9IGFyZ3VtZW50c1t0XS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gQXJyYXkoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IG47IHQrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBhcmd1bWVudHNbdF0sIGEgPSAwLCBzID0gaS5sZW5ndGg7IGEgPCBzOyBhKyssIG8rKykgcltvXSA9IGlbYV07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBBKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBqKGooe30sIG8pLCBULmRlZmF1bHRDb25maWcpLAogICAgICAgICAgICAgICAgICAgICAgICBsMTBuOiBhCiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobnVsbCA9PT0gKGUgPSBuLmNhbGVuZGFyQ29udGFpbmVyKSB8fCB2b2lkIDAgPT09IGUgPyB2b2lkIDAgOiBlLmdldFJvb3ROb2RlKCkpLmFjdGl2ZUVsZW1lbnQgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmJpbmQobikKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGIoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5jb25maWc7CiAgICAgICAgICAgICAgICAgICAgICAgICExID09PSBlLndlZWtOdW1iZXJzICYmIDEgPT09IGUuc2hvd01vbnRocyB8fCAhMCAhPT0gZS5ub0NhbGVuZGFyICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uY2FsZW5kYXJDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJiAobi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiIsIG4uY2FsZW5kYXJDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICJibG9jayIpLCBuLmRheXNDb250YWluZXIgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gKG4uZGF5cy5vZmZzZXRXaWR0aCArIDEpICogZS5zaG93TW9udGhzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uZGF5c0NvbnRhaW5lci5zdHlsZS53aWR0aCA9IHQgKyAicHgiLCBuLmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLndpZHRoID0gdCArIChuLndlZWtXcmFwcGVyICE9PSB1bmRlZmluZWQgPyBuLndlZWtXcmFwcGVyLm9mZnNldFdpZHRoIDogMCkgKyAicHgiLCBuLmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ2aXNpYmlsaXR5IiksIG4uY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoImRpc3BsYXkiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE8oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gbi5zZWxlY3RlZERhdGVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuLmNvbmZpZy5taW5EYXRlID09PSB1bmRlZmluZWQgfHwgayhuZXcgRGF0ZSwgbi5jb25maWcubWluRGF0ZSkgPj0gMCA/IG5ldyBEYXRlIDogbmV3IERhdGUobi5jb25maWcubWluRGF0ZS5nZXRUaW1lKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBTKG4uY29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc2V0SG91cnMoci5ob3Vycywgci5taW51dGVzLCByLnNlY29uZHMsIHQuZ2V0TWlsbGlzZWNvbmRzKCkpLCBuLnNlbGVjdGVkRGF0ZXMgPSBbdF0sIG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqID0gdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGUgIT09IHVuZGVmaW5lZCAmJiAiYmx1ciIgIT09IGUudHlwZSAmJiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9ICJrZXlkb3duIiA9PT0gZS50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB5KGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5hbVBNICE9PSB1bmRlZmluZWQgJiYgciA9PT0gbi5hbVBNICYmIChuLmFtUE0udGV4dENvbnRlbnQgPSBuLmwxMG4uYW1QTVt1KG4uYW1QTS50ZXh0Q29udGVudCA9PT0gbi5sMTBuLmFtUE1bMF0pXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHBhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoIm1pbiIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gcGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZSgibWF4IikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBwYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKCJzdGVwIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwYXJzZUludChvLnZhbHVlLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGUuZGVsdGEgfHwgKHQgPyAzOCA9PT0gZS53aGljaCA/IDEgOiAtMSA6IDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjICsgbCAqIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIG8udmFsdWUgJiYgMiA9PT0gby52YWx1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IG8gPT09IG4uaG91ckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBvID09PSBuLm1pbnV0ZUVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA8IGkgPyAoZCA9IGEgKyBkICsgdSghcCkgKyAodShwKSAmJiB1KCFuLmFtUE0pKSwgaCAmJiBGKHVuZGVmaW5lZCwgLTEsIG4uaG91ckVsZW1lbnQpKSA6IGQgPiBhICYmIChkID0gbyA9PT0gbi5ob3VyRWxlbWVudCA/IGQgLSBhIC0gdSghbi5hbVBNKSA6IGksIGggJiYgRih1bmRlZmluZWQsIDEsIG4uaG91ckVsZW1lbnQpKSwgbi5hbVBNICYmIHAgJiYgKDEgPT09IGwgPyBkICsgYyA9PT0gMjMgOiBNYXRoLmFicyhkIC0gYykgPiBsKSAmJiAobi5hbVBNLnRleHRDb250ZW50ID0gbi5sMTBuLmFtUE1bdShuLmFtUE0udGV4dENvbnRlbnQgPT09IG4ubDEwbi5hbVBNWzBdKV0pLCBvLnZhbHVlID0gcyhkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KGUpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4uX2lucHV0LnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBBKCksIHhlKCksIG4uX2lucHV0LnZhbHVlICE9PSBvICYmIG4uX2RlYm91bmNlZENoYW5nZSgpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBBKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5ob3VyRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIG4ubWludXRlRWxlbWVudCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCwgciA9IChwYXJzZUludChuLmhvdXJFbGVtZW50LnZhbHVlLnNsaWNlKC0yKSwgMTApIHx8IDApICUgMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IChwYXJzZUludChuLm1pbnV0ZUVsZW1lbnQudmFsdWUsIDEwKSB8fCAwKSAlIDYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLnNlY29uZEVsZW1lbnQgIT09IHVuZGVmaW5lZCA/IChwYXJzZUludChuLnNlY29uZEVsZW1lbnQudmFsdWUsIDEwKSB8fCAwKSAlIDYwIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uYW1QTSAhPT0gdW5kZWZpbmVkICYmIChlID0gciwgdCA9IG4uYW1QTS50ZXh0Q29udGVudCwgciA9IGUgJSAxMiArIDEyICogdSh0ID09PSBuLmwxMG4uYW1QTVsxXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuLmNvbmZpZy5taW5UaW1lICE9PSB1bmRlZmluZWQgfHwgbi5jb25maWcubWluRGF0ZSAmJiBuLm1pbkRhdGVIYXNUaW1lICYmIG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqICYmIDAgPT09IGsobi5sYXRlc3RTZWxlY3RlZERhdGVPYmosIG4uY29uZmlnLm1pbkRhdGUsICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5jb25maWcubWF4VGltZSAhPT0gdW5kZWZpbmVkIHx8IG4uY29uZmlnLm1heERhdGUgJiYgbi5tYXhEYXRlSGFzVGltZSAmJiBuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiAmJiAwID09PSBrKG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLCBuLmNvbmZpZy5tYXhEYXRlLCAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jb25maWcubWF4VGltZSAhPT0gdW5kZWZpbmVkICYmIG4uY29uZmlnLm1pblRpbWUgIT09IHVuZGVmaW5lZCAmJiBuLmNvbmZpZy5taW5UaW1lID4gbi5jb25maWcubWF4VGltZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gRShuLmNvbmZpZy5taW5UaW1lLmdldEhvdXJzKCksIG4uY29uZmlnLm1pblRpbWUuZ2V0TWludXRlcygpLCBuLmNvbmZpZy5taW5UaW1lLmdldFNlY29uZHMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBFKG4uY29uZmlnLm1heFRpbWUuZ2V0SG91cnMoKSwgbi5jb25maWcubWF4VGltZS5nZXRNaW51dGVzKCksIG4uY29uZmlnLm1heFRpbWUuZ2V0U2Vjb25kcygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IEUociwgbywgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPiBjICYmIGYgPCBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBNYXRoLmZsb29yKGUgLyAzNjAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gKGUgLSAzNjAwICogdCkgLyA2MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbdCwgbiwgZSAtIDM2MDAgKiB0IC0gNjAgKiBuXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZFswXSwgbyA9IGRbMV0sIGkgPSBkWzJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IG4uY29uZmlnLm1heFRpbWUgIT09IHVuZGVmaW5lZCA/IG4uY29uZmlnLm1heFRpbWUgOiBuLmNvbmZpZy5tYXhEYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAociA9IE1hdGgubWluKHIsIHAuZ2V0SG91cnMoKSkpID09PSBwLmdldEhvdXJzKCkgJiYgKG8gPSBNYXRoLm1pbihvLCBwLmdldE1pbnV0ZXMoKSkpLCBvID09PSBwLmdldE1pbnV0ZXMoKSAmJiAoaSA9IE1hdGgubWluKGksIHAuZ2V0U2Vjb25kcygpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBuLmNvbmZpZy5taW5UaW1lICE9PSB1bmRlZmluZWQgPyBuLmNvbmZpZy5taW5UaW1lIDogbi5jb25maWcubWluRGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHIgPSBNYXRoLm1heChyLCBoLmdldEhvdXJzKCkpKSA9PT0gaC5nZXRIb3VycygpICYmIG8gPCBoLmdldE1pbnV0ZXMoKSAmJiAobyA9IGguZ2V0TWludXRlcygpKSwgbyA9PT0gaC5nZXRNaW51dGVzKCkgJiYgKGkgPSBNYXRoLm1heChpLCBoLmdldFNlY29uZHMoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgTihyLCBvLCBpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBEKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlIHx8IG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqOwogICAgICAgICAgICAgICAgICAgICAgICB0ICYmIHQgaW5zdGFuY2VvZiBEYXRlICYmIE4odC5nZXRIb3VycygpLCB0LmdldE1pbnV0ZXMoKSwgdC5nZXRTZWNvbmRzKCkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBOKGUsIHQsIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5sYXRlc3RTZWxlY3RlZERhdGVPYmogIT09IHVuZGVmaW5lZCAmJiBuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iai5zZXRIb3VycyhlICUgMjQsIHQsIHIgfHwgMCwgMCksIG4uaG91ckVsZW1lbnQgJiYgbi5taW51dGVFbGVtZW50ICYmICFuLmlzTW9iaWxlICYmIChuLmhvdXJFbGVtZW50LnZhbHVlID0gcyhuLmNvbmZpZy50aW1lXzI0aHIgPyBlIDogKDEyICsgZSkgJSAxMiArIDEyICogdShlICUgMTIgPT0gMCkpLCBuLm1pbnV0ZUVsZW1lbnQudmFsdWUgPSBzKHQpLCBuLmFtUE0gIT09IHVuZGVmaW5lZCAmJiAobi5hbVBNLnRleHRDb250ZW50ID0gbi5sMTBuLmFtUE1bdShlID49IDEyKV0pLCBuLnNlY29uZEVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJiAobi5zZWNvbmRFbGVtZW50LnZhbHVlID0gcyhyKSkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBNKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB5KGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHBhcnNlSW50KHQudmFsdWUpICsgKGUuZGVsdGEgfHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIChuIC8gMWUzID4gMSB8fCAiRW50ZXIiID09PSBlLmtleSAmJiAhL1teXGRdLy50ZXN0KG4udG9TdHJpbmcoKSkpICYmIGVlKG4pCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBMKGUsIHQsIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBBcnJheSA/IHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEwoZSwgdCwgciwgbykKICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogZSBpbnN0YW5jZW9mIEFycmF5ID8gZS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTChlLCB0LCByLCBvKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiAoZS5hZGRFdmVudExpc3RlbmVyKHQsIHIsIG8pLCB2b2lkIG4uX2hhbmRsZXJzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsIHIsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gSSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmUoIm9uQ2hhbmdlIikKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFIoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUgIT09IHVuZGVmaW5lZCA/IG4ucGFyc2VEYXRlKGUpIDogbi5sYXRlc3RTZWxlY3RlZERhdGVPYmogfHwgKG4uY29uZmlnLm1pbkRhdGUgJiYgbi5jb25maWcubWluRGF0ZSA+IG4ubm93ID8gbi5jb25maWcubWluRGF0ZSA6IG4uY29uZmlnLm1heERhdGUgJiYgbi5jb25maWcubWF4RGF0ZSA8IG4ubm93ID8gbi5jb25maWcubWF4RGF0ZSA6IG4ubm93KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLmN1cnJlbnRZZWFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4uY3VycmVudE1vbnRoOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgciAhPT0gdW5kZWZpbmVkICYmIChuLmN1cnJlbnRZZWFyID0gci5nZXRGdWxsWWVhcigpLCBuLmN1cnJlbnRNb250aCA9IHIuZ2V0TW9udGgoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5tZXNzYWdlID0gIkludmFsaWQgZGF0ZSBzdXBwbGllZDogIiArIHIsIG4uY29uZmlnLmVycm9ySGFuZGxlcihhKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgbi5jdXJyZW50WWVhciAhPT0gbyAmJiAodmUoIm9uWWVhckNoYW5nZSIpLCBLKCkpLCAhdCB8fCBuLmN1cnJlbnRZZWFyID09PSBvICYmIG4uY3VycmVudE1vbnRoID09PSBpIHx8IHZlKCJvbk1vbnRoQ2hhbmdlIiksIG4ucmVkcmF3KCkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHEoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHkoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH50LmNsYXNzTmFtZS5pbmRleE9mKCJhcnJvdyIpICYmIEYoZSwgdC5jbGFzc0xpc3QuY29udGFpbnMoImFycm93VXAiKSA/IDEgOiAtMSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEYoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUgJiYgeShlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuIHx8IHIgJiYgci5wYXJlbnROb2RlICYmIHIucGFyZW50Tm9kZS5maXJzdENoaWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGJlKCJpbmNyZW1lbnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5kZWx0YSA9IHQsIG8gJiYgby5kaXNwYXRjaEV2ZW50KGkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBWKGUsIHQsIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0ZSh0LCAhMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZCgic3BhbiIsIGUsIHQuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRlT2JqID0gdCwgYS4kaSA9IG8sIGEuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbi5mb3JtYXREYXRlKHQsIG4uY29uZmlnLmFyaWFEYXRlRm9ybWF0KSksIC0xID09PSBlLmluZGV4T2YoImhpZGRlbiIpICYmIDAgPT09IGsodCwgbi5ub3cpICYmIChuLnRvZGF5RGF0ZUVsZW0gPSBhLCBhLmNsYXNzTGlzdC5hZGQoInRvZGF5IiksIGEuc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCAiZGF0ZSIpKSwgaSA/IChhLnRhYkluZGV4ID0gLTEsIHdlKHQpICYmIChhLmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIiksIG4uc2VsZWN0ZWREYXRlRWxlbSA9IGEsICJyYW5nZSIgPT09IG4uY29uZmlnLm1vZGUgJiYgKGYoYSwgInN0YXJ0UmFuZ2UiLCBuLnNlbGVjdGVkRGF0ZXNbMF0gJiYgMCA9PT0gayh0LCBuLnNlbGVjdGVkRGF0ZXNbMF0sICEwKSksIGYoYSwgImVuZFJhbmdlIiwgbi5zZWxlY3RlZERhdGVzWzFdICYmIDAgPT09IGsodCwgbi5zZWxlY3RlZERhdGVzWzFdLCAhMCkpLCAibmV4dE1vbnRoRGF5IiA9PT0gZSAmJiBhLmNsYXNzTGlzdC5hZGQoImluUmFuZ2UiKSkpKSA6IGEuY2xhc3NMaXN0LmFkZCgiZmxhdHBpY2tyLWRpc2FibGVkIiksICJyYW5nZSIgPT09IG4uY29uZmlnLm1vZGUgJiYgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoInJhbmdlIiAhPT0gbi5jb25maWcubW9kZSB8fCBuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoIDwgMikgJiYgKGsoZSwgbi5zZWxlY3RlZERhdGVzWzBdKSA+PSAwICYmIGsoZSwgbi5zZWxlY3RlZERhdGVzWzFdKSA8PSAwKQogICAgICAgICAgICAgICAgICAgICAgICB9KHQpICYmICF3ZSh0KSAmJiBhLmNsYXNzTGlzdC5hZGQoImluUmFuZ2UiKSwgbi53ZWVrTnVtYmVycyAmJiAxID09PSBuLmNvbmZpZy5zaG93TW9udGhzICYmICJwcmV2TW9udGhEYXkiICE9PSBlICYmIG8gJSA3ID09IDYgJiYgbi53ZWVrTnVtYmVycy5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWVuZCIsICI8c3BhbiBjbGFzcz0nZmxhdHBpY2tyLWRheSc+IiArIG4uY29uZmlnLmdldFdlZWsodCkgKyAiPC9zcGFuPiIpLCB2ZSgib25EYXlDcmVhdGUiLCBhKSwgYQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZm9jdXMoKSwgInJhbmdlIiA9PT0gbi5jb25maWcubW9kZSAmJiBpZShlKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gVShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBlID4gMCA/IDAgOiBuLmNvbmZpZy5zaG93TW9udGhzIC0gMSwgciA9IGUgPiAwID8gbi5jb25maWcuc2hvd01vbnRocyA6IC0xLCBvID0gdDsgbyAhPSByOyBvICs9IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gbi5kYXlzQ29udGFpbmVyLmNoaWxkcmVuW29dLCBhID0gZSA+IDAgPyAwIDogaS5jaGlsZHJlbi5sZW5ndGggLSAxLCBzID0gZSA+IDAgPyBpLmNoaWxkcmVuLmxlbmd0aCA6IC0xLCB1ID0gYTsgdSAhPSBzOyB1ICs9IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGkuY2hpbGRyZW5bdV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0xID09PSBsLmNsYXNzTmFtZS5pbmRleE9mKCJoaWRkZW4iKSAmJiB0ZShsLmRhdGVPYmopKSByZXR1cm4gbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBIKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBpKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbmUociB8fCBkb2N1bWVudC5ib2R5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlICE9PSB1bmRlZmluZWQgPyBlIDogbyA/IHIgOiBuLnNlbGVjdGVkRGF0ZUVsZW0gIT09IHVuZGVmaW5lZCAmJiBuZShuLnNlbGVjdGVkRGF0ZUVsZW0pID8gbi5zZWxlY3RlZERhdGVFbGVtIDogbi50b2RheURhdGVFbGVtICE9PSB1bmRlZmluZWQgJiYgbmUobi50b2RheURhdGVFbGVtKSA/IG4udG9kYXlEYXRlRWxlbSA6IFUodCA+IDAgPyAxIDogLTEpOwogICAgICAgICAgICAgICAgICAgICAgICBhID09PSB1bmRlZmluZWQgPyBuLl9pbnB1dC5mb2N1cygpIDogbyA/IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAtMSA9PT0gZS5jbGFzc05hbWUuaW5kZXhPZigiTW9udGgiKSA/IGUuZGF0ZU9iai5nZXRNb250aCgpIDogbi5jdXJyZW50TW9udGgsIG8gPSB0ID4gMCA/IG4uY29uZmlnLnNob3dNb250aHMgOiAtMSwgaSA9IHQgPiAwID8gMSA6IC0xLCBhID0gciAtIG4uY3VycmVudE1vbnRoOyBhICE9IG87IGEgKz0gaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gbi5kYXlzQ29udGFpbmVyLmNoaWxkcmVuW2FdLCB1ID0gciAtIG4uY3VycmVudE1vbnRoID09PSBhID8gZS4kaSArIHQgOiB0IDwgMCA/IHMuY2hpbGRyZW4ubGVuZ3RoIC0gMSA6IDAsIGwgPSBzLmNoaWxkcmVuLmxlbmd0aCwgYyA9IHU7IGMgPj0gMCAmJiBjIDwgbCAmJiBjICE9ICh0ID4gMCA/IGwgOiAtMSk7IGMgKz0gaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IHMuY2hpbGRyZW5bY107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gZi5jbGFzc05hbWUuaW5kZXhPZigiaGlkZGVuIikgJiYgdGUoZi5kYXRlT2JqKSAmJiBNYXRoLmFicyhlLiRpIC0gYykgPj0gTWF0aC5hYnModCkpIHJldHVybiBCKGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jaGFuZ2VNb250aChpKSwgSChVKGkpLCAwKSwgdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgIH0oYSwgdCkgOiBCKGEpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB6KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IChuZXcgRGF0ZShlLCB0LCAxKS5nZXREYXkoKSAtIG4ubDEwbi5maXJzdERheU9mV2VlayArIDcpICUgNywgbyA9IG4udXRpbHMuZ2V0RGF5c0luTW9udGgoKHQgLSAxICsgMTIpICUgMTIsIGUpLCBpID0gbi51dGlscy5nZXREYXlzSW5Nb250aCh0LCBlKSwgYSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksIHMgPSBuLmNvbmZpZy5zaG93TW9udGhzID4gMSwgdSA9IHMgPyAicHJldk1vbnRoRGF5IGhpZGRlbiIgOiAicHJldk1vbnRoRGF5IiwgbCA9IHMgPyAibmV4dE1vbnRoRGF5IGhpZGRlbiIgOiAibmV4dE1vbnRoRGF5IiwgYyA9IG8gKyAxIC0gciwgZiA9IDA7IGMgPD0gbzsgYysrLCBmKyspIGEuYXBwZW5kQ2hpbGQoVigiZmxhdHBpY2tyLWRheSAiICsgdSwgbmV3IERhdGUoZSwgdCAtIDEsIGMpLCAwLCBmKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IDE7IGMgPD0gaTsgYysrLCBmKyspIGEuYXBwZW5kQ2hpbGQoVigiZmxhdHBpY2tyLWRheSIsIG5ldyBEYXRlKGUsIHQsIGMpLCAwLCBmKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHAgPSBpICsgMTsgcCA8PSA0MiAtIHIgJiYgKDEgPT09IG4uY29uZmlnLnNob3dNb250aHMgfHwgZiAlIDcgIT0gMCk7IHArKywgZisrKSBhLmFwcGVuZENoaWxkKFYoImZsYXRwaWNrci1kYXkgIiArIGwsIG5ldyBEYXRlKGUsIHQgKyAxLCBwICUgaSksIDAsIGYpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBkKCJkaXYiLCAiZGF5Q29udGFpbmVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoLmFwcGVuZENoaWxkKGEpLCBoCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBXKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5kYXlzQ29udGFpbmVyICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAobi5kYXlzQ29udGFpbmVyKSwgbi53ZWVrTnVtYmVycyAmJiBwKG4ud2Vla051bWJlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgdCA9IDA7IHQgPCBuLmNvbmZpZy5zaG93TW9udGhzOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG5ldyBEYXRlKG4uY3VycmVudFllYXIsIG4uY3VycmVudE1vbnRoLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnNldE1vbnRoKG4uY3VycmVudE1vbnRoICsgdCksIGUuYXBwZW5kQ2hpbGQoeihyLmdldEZ1bGxZZWFyKCksIHIuZ2V0TW9udGgoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmRheXNDb250YWluZXIuYXBwZW5kQ2hpbGQoZSksIG4uZGF5cyA9IG4uZGF5c0NvbnRhaW5lci5maXJzdENoaWxkLCAicmFuZ2UiID09PSBuLmNvbmZpZy5tb2RlICYmIDEgPT09IG4uc2VsZWN0ZWREYXRlcy5sZW5ndGggJiYgaWUoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBLKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShuLmNvbmZpZy5zaG93TW9udGhzID4gMSB8fCAiZHJvcGRvd24iICE9PSBuLmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKG4uY29uZmlnLm1pbkRhdGUgIT09IHVuZGVmaW5lZCAmJiBuLmN1cnJlbnRZZWFyID09PSBuLmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkgJiYgZSA8IG4uY29uZmlnLm1pbkRhdGUuZ2V0TW9udGgoKSkgJiYgIShuLmNvbmZpZy5tYXhEYXRlICE9PSB1bmRlZmluZWQgJiYgbi5jdXJyZW50WWVhciA9PT0gbi5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpICYmIGUgPiBuLmNvbmZpZy5tYXhEYXRlLmdldE1vbnRoKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5tb250aHNEcm9wZG93bkNvbnRhaW5lci50YWJJbmRleCA9IC0xLCBuLm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLmlubmVySFRNTCA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCAxMjsgdCsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZCgib3B0aW9uIiwgImZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIudmFsdWUgPSBuZXcgRGF0ZShuLmN1cnJlbnRZZWFyLCB0KS5nZXRNb250aCgpLnRvU3RyaW5nKCksIHIudGV4dENvbnRlbnQgPSB2KHQsIG4uY29uZmlnLnNob3J0aGFuZEN1cnJlbnRNb250aCwgbi5sMTBuKSwgci50YWJJbmRleCA9IC0xLCBuLmN1cnJlbnRNb250aCA9PT0gdCAmJiAoci5zZWxlY3RlZCA9ICEwKSwgbi5tb250aHNEcm9wZG93bkNvbnRhaW5lci5hcHBlbmRDaGlsZChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gWSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQgPSBkKCJkaXYiLCAiZmxhdHBpY2tyLW1vbnRoIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcuc2hvd01vbnRocyA+IDEgfHwgInN0YXRpYyIgPT09IG4uY29uZmlnLm1vbnRoU2VsZWN0b3JUeXBlID8gZSA9IGQoInNwYW4iLCAiY3VyLW1vbnRoIikgOiAobi5tb250aHNEcm9wZG93bkNvbnRhaW5lciA9IGQoInNlbGVjdCIsICJmbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHMiKSwgbi5tb250aHNEcm9wZG93bkNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBuLmwxMG4ubW9udGhBcmlhTGFiZWwpLCBMKG4ubW9udGhzRHJvcGRvd25Db250YWluZXIsICJjaGFuZ2UiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB5KGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBwYXJzZUludCh0LnZhbHVlLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNoYW5nZU1vbnRoKHIgLSBuLmN1cnJlbnRNb250aCksIHZlKCJvbk1vbnRoQ2hhbmdlIikKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBLKCksIGUgPSBuLm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBtKCJjdXIteWVhciIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleDogIi0xIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gby5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBuLmwxMG4ueWVhckFyaWFMYWJlbCksIG4uY29uZmlnLm1pbkRhdGUgJiYgaS5zZXRBdHRyaWJ1dGUoIm1pbiIsIG4uY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKSwgbi5jb25maWcubWF4RGF0ZSAmJiAoaS5zZXRBdHRyaWJ1dGUoIm1heCIsIG4uY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKSwgaS5kaXNhYmxlZCA9ICEhbi5jb25maWcubWluRGF0ZSAmJiBuLmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkgPT09IG4uY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZCgiZGl2IiwgImZsYXRwaWNrci1jdXJyZW50LW1vbnRoIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmFwcGVuZENoaWxkKGUpLCBhLmFwcGVuZENoaWxkKG8pLCByLmFwcGVuZENoaWxkKGEpLCB0LmFwcGVuZENoaWxkKHIpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyRWxlbWVudDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoRWxlbWVudDogZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBHKCkgewogICAgICAgICAgICAgICAgICAgICAgICBwKG4ubW9udGhOYXYpLCBuLm1vbnRoTmF2LmFwcGVuZENoaWxkKG4ucHJldk1vbnRoTmF2KSwgbi5jb25maWcuc2hvd01vbnRocyAmJiAobi55ZWFyRWxlbWVudHMgPSBbXSwgbi5tb250aEVsZW1lbnRzID0gW10pOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gbi5jb25maWcuc2hvd01vbnRoczsgZS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBZKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnllYXJFbGVtZW50cy5wdXNoKHQueWVhckVsZW1lbnQpLCBuLm1vbnRoRWxlbWVudHMucHVzaCh0Lm1vbnRoRWxlbWVudCksIG4ubW9udGhOYXYuYXBwZW5kQ2hpbGQodC5jb250YWluZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbi5tb250aE5hdi5hcHBlbmRDaGlsZChuLm5leHRNb250aE5hdikKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4ud2Vla2RheUNvbnRhaW5lciA/IHAobi53ZWVrZGF5Q29udGFpbmVyKSA6IG4ud2Vla2RheUNvbnRhaW5lciA9IGQoImRpdiIsICJmbGF0cGlja3Itd2Vla2RheXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IG4uY29uZmlnLnNob3dNb250aHM7IGUtLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZCgiZGl2IiwgImZsYXRwaWNrci13ZWVrZGF5Y29udGFpbmVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLndlZWtkYXlDb250YWluZXIuYXBwZW5kQ2hpbGQodCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUSgpLCBuLndlZWtkYXlDb250YWluZXIKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFEoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLndlZWtkYXlDb250YWluZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5sMTBuLmZpcnN0RGF5T2ZXZWVrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBQKG4ubDEwbi53ZWVrZGF5cy5zaG9ydGhhbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA+IDAgJiYgZSA8IHQubGVuZ3RoICYmICh0ID0gUCh0LnNwbGljZShlLCB0Lmxlbmd0aCksIHQuc3BsaWNlKDAsIGUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gbi5jb25maWcuc2hvd01vbnRoczsgci0tOykgbi53ZWVrZGF5Q29udGFpbmVyLmNoaWxkcmVuW3JdLmlubmVySFRNTCA9ICJcbiAgICAgIDxzcGFuIGNsYXNzPSdmbGF0cGlja3Itd2Vla2RheSc+XG4gICAgICAgICIgKyB0LmpvaW4oIjwvc3Bhbj48c3BhbiBjbGFzcz0nZmxhdHBpY2tyLXdlZWtkYXknPiIpICsgIlxuICAgICAgPC9zcGFuPlxuICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBaKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQgPyBlIDogZSAtIG4uY3VycmVudE1vbnRoOwogICAgICAgICAgICAgICAgICAgICAgICByIDwgMCAmJiAhMCA9PT0gbi5faGlkZVByZXZNb250aEFycm93IHx8IHIgPiAwICYmICEwID09PSBuLl9oaWRlTmV4dE1vbnRoQXJyb3cgfHwgKG4uY3VycmVudE1vbnRoICs9IHIsIChuLmN1cnJlbnRNb250aCA8IDAgfHwgbi5jdXJyZW50TW9udGggPiAxMSkgJiYgKG4uY3VycmVudFllYXIgKz0gbi5jdXJyZW50TW9udGggPiAxMSA/IDEgOiAtMSwgbi5jdXJyZW50TW9udGggPSAobi5jdXJyZW50TW9udGggKyAxMikgJSAxMiwgdmUoIm9uWWVhckNoYW5nZSIpLCBLKCkpLCBXKCksIHZlKCJvbk1vbnRoQ2hhbmdlIiksIE9lKCkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBYKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uY2FsZW5kYXJDb250YWluZXIuY29udGFpbnMoZSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEooZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5pc09wZW4gJiYgIW4uY29uZmlnLmlubGluZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB5KGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBYKHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhKHQgPT09IG4uaW5wdXQgfHwgdCA9PT0gbi5hbHRJbnB1dCB8fCBuLmVsZW1lbnQuY29udGFpbnModCkgfHwgZS5wYXRoICYmIGUucGF0aC5pbmRleE9mICYmICh+ZS5wYXRoLmluZGV4T2Yobi5pbnB1dCkgfHwgfmUucGF0aC5pbmRleE9mKG4uYWx0SW5wdXQpKSkgJiYgIXIgJiYgIVgoZS5yZWxhdGVkVGFyZ2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gIW4uY29uZmlnLmlnbm9yZWRGb2N1c0VsZW1lbnRzLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY29udGFpbnModCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvICYmIGkgJiYgKG4uY29uZmlnLmFsbG93SW5wdXQgJiYgbi5zZXREYXRlKG4uX2lucHV0LnZhbHVlLCAhMSwgbi5jb25maWcuYWx0SW5wdXQgPyBuLmNvbmZpZy5hbHRGb3JtYXQgOiBuLmNvbmZpZy5kYXRlRm9ybWF0KSwgbi50aW1lQ29udGFpbmVyICE9PSB1bmRlZmluZWQgJiYgbi5taW51dGVFbGVtZW50ICE9PSB1bmRlZmluZWQgJiYgbi5ob3VyRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmICIiICE9PSBuLmlucHV0LnZhbHVlICYmIG4uaW5wdXQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBPKCksIG4uY2xvc2UoKSwgbi5jb25maWcgJiYgInJhbmdlIiA9PT0gbi5jb25maWcubW9kZSAmJiAxID09PSBuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoICYmIG4uY2xlYXIoITEpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCFlIHx8IG4uY29uZmlnLm1pbkRhdGUgJiYgZSA8IG4uY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSB8fCBuLmNvbmZpZy5tYXhEYXRlICYmIGUgPiBuLmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4uY3VycmVudFllYXIgIT09IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmN1cnJlbnRZZWFyID0gdCB8fCBuLmN1cnJlbnRZZWFyLCBuLmNvbmZpZy5tYXhEYXRlICYmIG4uY3VycmVudFllYXIgPT09IG4uY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSA/IG4uY3VycmVudE1vbnRoID0gTWF0aC5taW4obi5jb25maWcubWF4RGF0ZS5nZXRNb250aCgpLCBuLmN1cnJlbnRNb250aCkgOiBuLmNvbmZpZy5taW5EYXRlICYmIG4uY3VycmVudFllYXIgPT09IG4uY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSAmJiAobi5jdXJyZW50TW9udGggPSBNYXRoLm1heChuLmNvbmZpZy5taW5EYXRlLmdldE1vbnRoKCksIG4uY3VycmVudE1vbnRoKSksIHIgJiYgKG4ucmVkcmF3KCksIHZlKCJvblllYXJDaGFuZ2UiKSwgSygpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0ZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IHQgJiYgKHQgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbi5wYXJzZURhdGUoZSwgdW5kZWZpbmVkLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uY29uZmlnLm1pbkRhdGUgJiYgbyAmJiBrKG8sIG4uY29uZmlnLm1pbkRhdGUsIHQgIT09IHVuZGVmaW5lZCA/IHQgOiAhbi5taW5EYXRlSGFzVGltZSkgPCAwIHx8IG4uY29uZmlnLm1heERhdGUgJiYgbyAmJiBrKG8sIG4uY29uZmlnLm1heERhdGUsIHQgIT09IHVuZGVmaW5lZCA/IHQgOiAhbi5tYXhEYXRlSGFzVGltZSkgPiAwKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbi5jb25maWcuZW5hYmxlICYmIDAgPT09IG4uY29uZmlnLmRpc2FibGUubGVuZ3RoKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID09PSB1bmRlZmluZWQpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9ICEhbi5jb25maWcuZW5hYmxlLCBhID0gbnVsbCAhPT0gKHIgPSBuLmNvbmZpZy5lbmFibGUpICYmIHZvaWQgMCAhPT0gciA/IHIgOiBuLmNvbmZpZy5kaXNhYmxlLCBzID0gMCwgdSA9IHZvaWQgMDsgcyA8IGEubGVuZ3RoOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZih1ID0gYVtzXSkgJiYgdShvKSkgcmV0dXJuIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSBpbnN0YW5jZW9mIERhdGUgJiYgbyAhPT0gdW5kZWZpbmVkICYmIHUuZ2V0VGltZSgpID09PSBvLmdldFRpbWUoKSkgcmV0dXJuIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG4ucGFyc2VEYXRlKHUsIHVuZGVmaW5lZCwgITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsICYmIGwuZ2V0VGltZSgpID09PSBvLmdldFRpbWUoKSA/IGkgOiAhaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiB1ICYmIG8gIT09IHVuZGVmaW5lZCAmJiB1LmZyb20gJiYgdS50byAmJiBvLmdldFRpbWUoKSA+PSB1LmZyb20uZ2V0VGltZSgpICYmIG8uZ2V0VGltZSgpIDw9IHUudG8uZ2V0VGltZSgpKSByZXR1cm4gaQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhaQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5kYXlzQ29udGFpbmVyICE9PSB1bmRlZmluZWQgJiYgKC0xID09PSBlLmNsYXNzTmFtZS5pbmRleE9mKCJoaWRkZW4iKSAmJiAtMSA9PT0gZS5jbGFzc05hbWUuaW5kZXhPZigiZmxhdHBpY2tyLWRpc2FibGVkIikgJiYgbi5kYXlzQ29udGFpbmVyLmNvbnRhaW5zKGUpKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUudGFyZ2V0ID09PSBuLl9pbnB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLl9pbnB1dC52YWx1ZS50cmltRW5kKCkgIT09IF9lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICF0IHx8ICFyIHx8IGUucmVsYXRlZFRhcmdldCAmJiBYKGUucmVsYXRlZFRhcmdldCkgfHwgbi5zZXREYXRlKG4uX2lucHV0LnZhbHVlLCAhMCwgZS50YXJnZXQgPT09IG4uYWx0SW5wdXQgPyBuLmNvbmZpZy5hbHRGb3JtYXQgOiBuLmNvbmZpZy5kYXRlRm9ybWF0KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb2UodCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHkodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5jb25maWcud3JhcCA/IGUuY29udGFpbnMocikgOiByID09PSBuLl9pbnB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmNvbmZpZy5hbGxvd0lucHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4uaXNPcGVuICYmICghYSB8fCAhbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbi5jb25maWcuaW5saW5lICYmIG8gJiYgIWE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxMyA9PT0gdC5rZXlDb2RlICYmIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhKSByZXR1cm4gbi5zZXREYXRlKG4uX2lucHV0LnZhbHVlLCAhMCwgciA9PT0gbi5hbHRJbnB1dCA/IG4uY29uZmlnLmFsdEZvcm1hdCA6IG4uY29uZmlnLmRhdGVGb3JtYXQpLCBuLmNsb3NlKCksIHIuYmx1cigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5vcGVuKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChYKHIpIHx8IHMgfHwgdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSAhIW4udGltZUNvbnRhaW5lciAmJiBuLnRpbWVDb250YWluZXIuY29udGFpbnMocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQua2V5Q29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPyAodC5wcmV2ZW50RGVmYXVsdCgpLCBPKCksIGRlKCkpIDogcGUodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKSwgZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gJiYgIW4uY29uZmlnLmFsbG93SW5wdXQgJiYgKHQucHJldmVudERlZmF1bHQoKSwgbi5jbGVhcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCB8fCBvKSBuLmhvdXJFbGVtZW50ICYmIG4uaG91ckVsZW1lbnQuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLmRheXNDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJiAoITEgPT09IGEgfHwgYyAmJiBuZShjKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IDM5ID09PSB0LmtleUNvZGUgPyAxIDogLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5jdHJsS2V5ID8gKHQuc3RvcFByb3BhZ2F0aW9uKCksIFooZiksIEgoVSgxKSwgMCkpIDogSCh1bmRlZmluZWQsIGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gNDAgPT09IHQua2V5Q29kZSA/IDEgOiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5kYXlzQ29udGFpbmVyICYmIHIuJGkgIT09IHVuZGVmaW5lZCB8fCByID09PSBuLmlucHV0IHx8IHIgPT09IG4uYWx0SW5wdXQgPyB0LmN0cmxLZXkgPyAodC5zdG9wUHJvcGFnYXRpb24oKSwgZWUobi5jdXJyZW50WWVhciAtIGQpLCBIKFUoMSksIDApKSA6IGwgfHwgSCh1bmRlZmluZWQsIDcgKiBkKSA6IHIgPT09IG4uY3VycmVudFllYXJFbGVtZW50ID8gZWUobi5jdXJyZW50WWVhciAtIGQpIDogbi5jb25maWcuZW5hYmxlVGltZSAmJiAoIWwgJiYgbi5ob3VyRWxlbWVudCAmJiBuLmhvdXJFbGVtZW50LmZvY3VzKCksIE8odCksIG4uX2RlYm91bmNlZENoYW5nZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBbbi5ob3VyRWxlbWVudCwgbi5taW51dGVFbGVtZW50LCBuLnNlY29uZEVsZW1lbnQsIG4uYW1QTV0uY29uY2F0KG4ucGx1Z2luRWxlbWVudHMpLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gcC5pbmRleE9mKHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0xICE9PSBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBwW2ggKyAodC5zaGlmdEtleSA/IC0xIDogMSldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKSwgKG0gfHwgbi5faW5wdXQpLmZvY3VzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICFuLmNvbmZpZy5ub0NhbGVuZGFyICYmIG4uZGF5c0NvbnRhaW5lciAmJiBuLmRheXNDb250YWluZXIuY29udGFpbnMocikgJiYgdC5zaGlmdEtleSAmJiAodC5wcmV2ZW50RGVmYXVsdCgpLCBuLl9pbnB1dC5mb2N1cygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLmFtUE0gIT09IHVuZGVmaW5lZCAmJiByID09PSBuLmFtUE0pIHN3aXRjaCAodC5rZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ugbi5sMTBuLmFtUE1bMF0uY2hhckF0KDApOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBuLmwxMG4uYW1QTVswXS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmFtUE0udGV4dENvbnRlbnQgPSBuLmwxMG4uYW1QTVswXSwgQSgpLCB4ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBuLmwxMG4uYW1QTVsxXS5jaGFyQXQoMCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG4ubDEwbi5hbVBNWzFdLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uYW1QTS50ZXh0Q29udGVudCA9IG4ubDEwbi5hbVBNWzFdLCBBKCksIHhlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfShvIHx8IFgocikpICYmIHZlKCJvbktleURvd24iLCB0KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaWUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSB0ICYmICh0ID0gImZsYXRwaWNrci1kYXkiKSwgMSA9PT0gbi5zZWxlY3RlZERhdGVzLmxlbmd0aCAmJiAoIWUgfHwgZS5jbGFzc0xpc3QuY29udGFpbnModCkgJiYgIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGlzYWJsZWQiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBlID8gZS5kYXRlT2JqLmdldFRpbWUoKSA6IG4uZGF5cy5maXJzdEVsZW1lbnRDaGlsZC5kYXRlT2JqLmdldFRpbWUoKSwgbyA9IG4ucGFyc2VEYXRlKG4uc2VsZWN0ZWREYXRlc1swXSwgdW5kZWZpbmVkLCAhMCkuZ2V0VGltZSgpLCBpID0gTWF0aC5taW4ociwgbi5zZWxlY3RlZERhdGVzWzBdLmdldFRpbWUoKSksIGEgPSBNYXRoLm1heChyLCBuLnNlbGVjdGVkRGF0ZXNbMF0uZ2V0VGltZSgpKSwgcyA9ICExLCB1ID0gMCwgbCA9IDAsIGMgPSBpOyBjIDwgYTsgYyArPSBDKSB0ZShuZXcgRGF0ZShjKSwgITApIHx8IChzID0gcyB8fCBjID4gaSAmJiBjIDwgYSwgYyA8IG8gJiYgKCF1IHx8IGMgPiB1KSA/IHUgPSBjIDogYyA+IG8gJiYgKCFsIHx8IGMgPCBsKSAmJiAobCA9IGMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmZyb20obi5yQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoIio6bnRoLWNoaWxkKC1uKyIgKyBuLmNvbmZpZy5zaG93TW9udGhzICsgIikgPiAuIiArIHQpKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEsIGMsIGYgPSB0LmRhdGVPYmouZ2V0VGltZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdSA+IDAgJiYgZiA8IHUgfHwgbCA+IDAgJiYgZiA+IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQpIHJldHVybiB0LmNsYXNzTGlzdC5hZGQoIm5vdEFsbG93ZWQiKSwgdm9pZFsiaW5SYW5nZSIsICJzdGFydFJhbmdlIiwgImVuZFJhbmdlIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmNsYXNzTGlzdC5yZW1vdmUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyAmJiAhZCB8fCAoWyJzdGFydFJhbmdlIiwgImluUmFuZ2UiLCAiZW5kUmFuZ2UiLCAibm90QWxsb3dlZCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5jbGFzc0xpc3QucmVtb3ZlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBlICE9PSB1bmRlZmluZWQgJiYgKGUuY2xhc3NMaXN0LmFkZChyIDw9IG4uc2VsZWN0ZWREYXRlc1swXS5nZXRUaW1lKCkgPyAic3RhcnRSYW5nZSIgOiAiZW5kUmFuZ2UiKSwgbyA8IHIgJiYgZiA9PT0gbyA/IHQuY2xhc3NMaXN0LmFkZCgic3RhcnRSYW5nZSIpIDogbyA+IHIgJiYgZiA9PT0gbyAmJiB0LmNsYXNzTGlzdC5hZGQoImVuZFJhbmdlIiksIGYgPj0gdSAmJiAoMCA9PT0gbCB8fCBmIDw9IGwpICYmIChhID0gbywgYyA9IHIsIChpID0gZikgPiBNYXRoLm1pbihhLCBjKSAmJiBpIDwgTWF0aC5tYXgoYSwgYykpICYmIHQuY2xhc3NMaXN0LmFkZCgiaW5SYW5nZSIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIW4uaXNPcGVuIHx8IG4uY29uZmlnWyJzdGF0aWMiXSB8fCBuLmNvbmZpZy5pbmxpbmUgfHwgY2UoKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2UoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmNvbmZpZ1siXyIgKyBlICsgIkRhdGUiXSA9IG4ucGFyc2VEYXRlKHQsIG4uY29uZmlnLmRhdGVGb3JtYXQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLmNvbmZpZ1siXyIgKyAoIm1pbiIgPT09IGUgPyAibWF4IiA6ICJtaW4iKSArICJEYXRlIl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByICE9PSB1bmRlZmluZWQgJiYgKG5bIm1pbiIgPT09IGUgPyAibWluRGF0ZUhhc1RpbWUiIDogIm1heERhdGVIYXNUaW1lIl0gPSByLmdldEhvdXJzKCkgPiAwIHx8IHIuZ2V0TWludXRlcygpID4gMCB8fCByLmdldFNlY29uZHMoKSA+IDApLCBuLnNlbGVjdGVkRGF0ZXMgJiYgKG4uc2VsZWN0ZWREYXRlcyA9IG4uc2VsZWN0ZWREYXRlcy5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbi5zZWxlY3RlZERhdGVzLmxlbmd0aCB8fCAibWluIiAhPT0gZSB8fCBEKHIpLCB4ZSgpKSwgbi5kYXlzQ29udGFpbmVyICYmIChmZSgpLCByICE9PSB1bmRlZmluZWQgPyBuLmN1cnJlbnRZZWFyRWxlbWVudFtlXSA9IHIuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpIDogbi5jdXJyZW50WWVhckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGUpLCBuLmN1cnJlbnRZZWFyRWxlbWVudC5kaXNhYmxlZCA9ICEhbyAmJiByICE9PSB1bmRlZmluZWQgJiYgby5nZXRGdWxsWWVhcigpID09PSByLmdldEZ1bGxZZWFyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHVlKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5jb25maWcud3JhcCA/IGUucXVlcnlTZWxlY3RvcigiW2RhdGEtaW5wdXRdIikgOiBlCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBsZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCIgIT0gdHlwZW9mIG4uY29uZmlnLmxvY2FsZSAmJiAidW5kZWZpbmVkIiA9PSB0eXBlb2YgVC5sMTBuc1tuLmNvbmZpZy5sb2NhbGVdICYmIG4uY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoImZsYXRwaWNrcjogaW52YWxpZCBsb2NhbGUgIiArIG4uY29uZmlnLmxvY2FsZSkpLCBuLmwxMG4gPSBqKGooe30sIFQubDEwbnNbImRlZmF1bHQiXSksICJvYmplY3QiID09IHR5cGVvZiBuLmNvbmZpZy5sb2NhbGUgPyBuLmNvbmZpZy5sb2NhbGUgOiAiZGVmYXVsdCIgIT09IG4uY29uZmlnLmxvY2FsZSA/IFQubDEwbnNbbi5jb25maWcubG9jYWxlXSA6IHVuZGVmaW5lZCksIHcuRCA9ICIoIiArIG4ubDEwbi53ZWVrZGF5cy5zaG9ydGhhbmQuam9pbigifCIpICsgIikiLCB3LmwgPSAiKCIgKyBuLmwxMG4ud2Vla2RheXMubG9uZ2hhbmQuam9pbigifCIpICsgIikiLCB3Lk0gPSAiKCIgKyBuLmwxMG4ubW9udGhzLnNob3J0aGFuZC5qb2luKCJ8IikgKyAiKSIsIHcuRiA9ICIoIiArIG4ubDEwbi5tb250aHMubG9uZ2hhbmQuam9pbigifCIpICsgIikiLCB3LksgPSAiKCIgKyBuLmwxMG4uYW1QTVswXSArICJ8IiArIG4ubDEwbi5hbVBNWzFdICsgInwiICsgbi5sMTBuLmFtUE1bMF0udG9Mb3dlckNhc2UoKSArICJ8IiArIG4ubDEwbi5hbVBNWzFdLnRvTG93ZXJDYXNlKCkgKyAiKSIsIGooaih7fSwgdCksIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZS5kYXRhc2V0IHx8IHt9KSkpLnRpbWVfMjRociA9PT0gdW5kZWZpbmVkICYmIFQuZGVmYXVsdENvbmZpZy50aW1lXzI0aHIgPT09IHVuZGVmaW5lZCAmJiAobi5jb25maWcudGltZV8yNGhyID0gbi5sMTBuLnRpbWVfMjRociksIG4uZm9ybWF0RGF0ZSA9IF8obiksIG4ucGFyc2VEYXRlID0geCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IG4uY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbDEwbjogbi5sMTBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiBuLmNvbmZpZy5wb3NpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uY2FsZW5kYXJDb250YWluZXIgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlKCJvblByZUNhbGVuZGFyUG9zaXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgfHwgbi5fcG9zaXRpb25FbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gQXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKG4uY2FsZW5kYXJDb250YWluZXIuY2hpbGRyZW4sIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSArIHQub2Zmc2V0SGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4uY2FsZW5kYXJDb250YWluZXIub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLmNvbmZpZy5wb3NpdGlvbi5zcGxpdCgiICIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkubGVuZ3RoID4gMSA/IGlbMV0gOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHUuYm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gImFib3ZlIiA9PT0gYSB8fCAiYmVsb3ciICE9PSBhICYmIGwgPCByICYmIHUudG9wID4gciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHdpbmRvdy5wYWdlWU9mZnNldCArIHUudG9wICsgKGMgPyAtciAtIDIgOiB0Lm9mZnNldEhlaWdodCArIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmKG4uY2FsZW5kYXJDb250YWluZXIsICJhcnJvd1RvcCIsICFjKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAiYXJyb3dCb3R0b20iLCBjKSwgIW4uY29uZmlnLmlubGluZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IHdpbmRvdy5wYWdlWE9mZnNldCArIHUubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNlbnRlciIgPT09IHMgPyAocCAtPSAobyAtIHUud2lkdGgpIC8gMiwgaCA9ICEwKSA6ICJyaWdodCIgPT09IHMgJiYgKHAgLT0gbyAtIHUud2lkdGgsIG0gPSAhMCksIGYobi5jYWxlbmRhckNvbnRhaW5lciwgImFycm93TGVmdCIsICFoICYmICFtKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAiYXJyb3dDZW50ZXIiLCBoKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAiYXJyb3dSaWdodCIsIG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHdpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIC0gKHdpbmRvdy5wYWdlWE9mZnNldCArIHUucmlnaHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHAgKyBvID4gd2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0geSArIG8gPiB3aW5kb3cuZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYobi5jYWxlbmRhckNvbnRhaW5lciwgInJpZ2h0TW9zdCIsIGcpLCAhbi5jb25maWdbInN0YXRpYyJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uY2FsZW5kYXJDb250YWluZXIuc3R5bGUudG9wID0gZCArICJweCIsIGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBudWxsLCB0ID0gMDsgdCA8IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgdCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBkb2N1bWVudC5zdHlsZVNoZWV0c1t0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jc3NSdWxlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jc3NSdWxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IGUgPyBlIDogKHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLCBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHIpLCByLnNoZWV0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIgPT09IHVuZGVmaW5lZCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IHdpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9IE1hdGgubWF4KDAsIHcgLyAyIC0gbyAvIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9IGIuY3NzUnVsZXMubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9ICJ7bGVmdDoiICsgdS5sZWZ0ICsgInB4O3JpZ2h0OmF1dG87fSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYobi5jYWxlbmRhckNvbnRhaW5lciwgInJpZ2h0TW9zdCIsICExKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAiY2VudGVyTW9zdCIsICEwKSwgYi5pbnNlcnRSdWxlKCIuZmxhdHBpY2tyLWNhbGVuZGFyLmNlbnRlck1vc3Q6YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIuY2VudGVyTW9zdDphZnRlciIgKyB4LCBfKSwgbi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gTyArICJweCIsIG4uY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmlnaHQgPSAiYXV0byIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugbi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gImF1dG8iLCBuLmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJpZ2h0ID0geSArICJweCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugbi5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gcCArICJweCIsIG4uY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmlnaHQgPSAiYXV0byIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuLmNvbmZpZy5wb3NpdGlvbihuLCBlKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZmUoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnLm5vQ2FsZW5kYXIgfHwgbi5pc01vYmlsZSB8fCAoSygpLCBPZSgpLCBXKCkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5faW5wdXQuZm9jdXMoKSwgLTEgIT09IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUiKSB8fCBuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyAhPT0gdW5kZWZpbmVkID8gc2V0VGltZW91dChuLmNsb3NlLCAwKSA6IG4uY2xvc2UoKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcGUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gaCh5KGUpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2xhc3NMaXN0ICYmIGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGF5IikgJiYgIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGlzYWJsZWQiKSAmJiAhZS5jbGFzc0xpc3QuY29udGFpbnMoIm5vdEFsbG93ZWQiKQogICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5sYXRlc3RTZWxlY3RlZERhdGVPYmogPSBuZXcgRGF0ZShyLmRhdGVPYmouZ2V0VGltZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gKG8uZ2V0TW9udGgoKSA8IG4uY3VycmVudE1vbnRoIHx8IG8uZ2V0TW9udGgoKSA+IG4uY3VycmVudE1vbnRoICsgbi5jb25maWcuc2hvd01vbnRocyAtIDEpICYmICJyYW5nZSIgIT09IG4uY29uZmlnLm1vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5zZWxlY3RlZERhdGVFbGVtID0gciwgInNpbmdsZSIgPT09IG4uY29uZmlnLm1vZGUpIG4uc2VsZWN0ZWREYXRlcyA9IFtvXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJtdWx0aXBsZSIgPT09IG4uY29uZmlnLm1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHdlKG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPyBuLnNlbGVjdGVkRGF0ZXMuc3BsaWNlKHBhcnNlSW50KGEpLCAxKSA6IG4uc2VsZWN0ZWREYXRlcy5wdXNoKG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgInJhbmdlIiA9PT0gbi5jb25maWcubW9kZSAmJiAoMiA9PT0gbi5zZWxlY3RlZERhdGVzLmxlbmd0aCAmJiBuLmNsZWFyKCExLCAhMSksIG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqID0gbywgbi5zZWxlY3RlZERhdGVzLnB1c2gobyksIDAgIT09IGsobywgbi5zZWxlY3RlZERhdGVzWzBdLCAhMCkgJiYgbi5zZWxlY3RlZERhdGVzLnNvcnQoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRUaW1lKCkgLSB0LmdldFRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBKCksIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG4uY3VycmVudFllYXIgIT09IG8uZ2V0RnVsbFllYXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmN1cnJlbnRZZWFyID0gby5nZXRGdWxsWWVhcigpLCBuLmN1cnJlbnRNb250aCA9IG8uZ2V0TW9udGgoKSwgcyAmJiAodmUoIm9uWWVhckNoYW5nZSIpLCBLKCkpLCB2ZSgib25Nb250aENoYW5nZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2UoKSwgVygpLCB4ZSgpLCBpIHx8ICJyYW5nZSIgPT09IG4uY29uZmlnLm1vZGUgfHwgMSAhPT0gbi5jb25maWcuc2hvd01vbnRocyA/IG4uc2VsZWN0ZWREYXRlRWxlbSAhPT0gdW5kZWZpbmVkICYmIG4uaG91ckVsZW1lbnQgPT09IHVuZGVmaW5lZCAmJiBuLnNlbGVjdGVkRGF0ZUVsZW0gJiYgbi5zZWxlY3RlZERhdGVFbGVtLmZvY3VzKCkgOiBCKHIpLCBuLmhvdXJFbGVtZW50ICE9PSB1bmRlZmluZWQgJiYgbi5ob3VyRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIG4uaG91ckVsZW1lbnQuZm9jdXMoKSwgbi5jb25maWcuY2xvc2VPblNlbGVjdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gInNpbmdsZSIgPT09IG4uY29uZmlnLm1vZGUgJiYgIW4uY29uZmlnLmVuYWJsZVRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAicmFuZ2UiID09PSBuLmNvbmZpZy5tb2RlICYmIDIgPT09IG4uc2VsZWN0ZWREYXRlcy5sZW5ndGggJiYgIW4uY29uZmlnLmVuYWJsZVRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHUgfHwgbCkgJiYgZGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbi5wYXJzZURhdGUgPSB4KHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBuLmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgbDEwbjogbi5sMTBuCiAgICAgICAgICAgICAgICAgICAgfSksIG4uX2hhbmRsZXJzID0gW10sIG4ucGx1Z2luRWxlbWVudHMgPSBbXSwgbi5sb2FkZWRQbHVnaW5zID0gW10sIG4uX2JpbmQgPSBMLCBuLl9zZXRIb3Vyc0Zyb21EYXRlID0gRCwgbi5fcG9zaXRpb25DYWxlbmRhciA9IGNlLCBuLmNoYW5nZU1vbnRoID0gWiwgbi5jaGFuZ2VZZWFyID0gZWUsIG4uY2xlYXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICBuLmlucHV0LnZhbHVlID0gIiIsIG4uYWx0SW5wdXQgIT09IHVuZGVmaW5lZCAmJiAobi5hbHRJbnB1dC52YWx1ZSA9ICIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5tb2JpbGVJbnB1dCAhPT0gdW5kZWZpbmVkICYmIChuLm1vYmlsZUlucHV0LnZhbHVlID0gIiIpOwogICAgICAgICAgICAgICAgICAgICAgICBuLnNlbGVjdGVkRGF0ZXMgPSBbXSwgbi5sYXRlc3RTZWxlY3RlZERhdGVPYmogPSB1bmRlZmluZWQsICEwID09PSB0ICYmIChuLmN1cnJlbnRZZWFyID0gbi5faW5pdGlhbERhdGUuZ2V0RnVsbFllYXIoKSwgbi5jdXJyZW50TW9udGggPSBuLl9pbml0aWFsRGF0ZS5nZXRNb250aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEwID09PSBuLmNvbmZpZy5lbmFibGVUaW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IFMobi5jb25maWcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLmhvdXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByLm1pbnV0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIuc2Vjb25kczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4obywgaSwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBuLnJlZHJhdygpLCBlICYmIHZlKCJvbkNoYW5nZSIpCiAgICAgICAgICAgICAgICAgICAgfSwgbi5jbG9zZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBuLmlzT3BlbiA9ICExLCBuLmlzTW9iaWxlIHx8IChuLmNhbGVuZGFyQ29udGFpbmVyICE9PSB1bmRlZmluZWQgJiYgbi5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJvcGVuIiksIG4uX2lucHV0ICE9PSB1bmRlZmluZWQgJiYgbi5faW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgiYWN0aXZlIikpOwogICAgICAgICAgICAgICAgICAgICAgICB2ZSgib25DbG9zZSIpCiAgICAgICAgICAgICAgICAgICAgfSwgbi5vbk1vdXNlT3ZlciA9IGllLCBuLl9jcmVhdGVFbGVtZW50ID0gZCwgbi5jcmVhdGVEYXkgPSBWLCBuLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcgIT09IHVuZGVmaW5lZCAmJiB2ZSgib25EZXN0cm95Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBuLl9oYW5kbGVycy5sZW5ndGg7IGUtLTspIG4uX2hhbmRsZXJzW2VdLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5faGFuZGxlcnMgPSBbXSwgbi5tb2JpbGVJbnB1dCkgbi5tb2JpbGVJbnB1dC5wYXJlbnROb2RlICYmIG4ubW9iaWxlSW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuLm1vYmlsZUlucHV0KSwgbi5tb2JpbGVJbnB1dCA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobi5jYWxlbmRhckNvbnRhaW5lciAmJiBuLmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jb25maWdbInN0YXRpYyJdICYmIG4uY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbi5jYWxlbmRhckNvbnRhaW5lci5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lmxhc3RDaGlsZCAmJiB0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKSwgdC5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB0LmZpcnN0Q2hpbGQ7KSB0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQuZmlyc3RDaGlsZCwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuLmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobi5jYWxlbmRhckNvbnRhaW5lcik7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uYWx0SW5wdXQgJiYgKG4uaW5wdXQudHlwZSA9ICJ0ZXh0Iiwgbi5hbHRJbnB1dC5wYXJlbnROb2RlICYmIG4uYWx0SW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuLmFsdElucHV0KSwgZGVsZXRlIG4uYWx0SW5wdXQpOwogICAgICAgICAgICAgICAgICAgICAgICBuLmlucHV0ICYmIChuLmlucHV0LnR5cGUgPSBuLmlucHV0Ll90eXBlLCBuLmlucHV0LmNsYXNzTGlzdC5yZW1vdmUoImZsYXRwaWNrci1pbnB1dCIpLCBuLmlucHV0LnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFsiX3Nob3dUaW1lSW5wdXQiLCAibGF0ZXN0U2VsZWN0ZWREYXRlT2JqIiwgIl9oaWRlTmV4dE1vbnRoQXJyb3ciLCAiX2hpZGVQcmV2TW9udGhBcnJvdyIsICJfX2hpZGVOZXh0TW9udGhBcnJvdyIsICJfX2hpZGVQcmV2TW9udGhBcnJvdyIsICJpc01vYmlsZSIsICJpc09wZW4iLCAic2VsZWN0ZWREYXRlRWxlbSIsICJtaW5EYXRlSGFzVGltZSIsICJtYXhEYXRlSGFzVGltZSIsICJkYXlzIiwgImRheXNDb250YWluZXIiLCAiX2lucHV0IiwgIl9wb3NpdGlvbkVsZW1lbnQiLCAiaW5uZXJDb250YWluZXIiLCAickNvbnRhaW5lciIsICJtb250aE5hdiIsICJ0b2RheURhdGVFbGVtIiwgImNhbGVuZGFyQ29udGFpbmVyIiwgIndlZWtkYXlDb250YWluZXIiLCAicHJldk1vbnRoTmF2IiwgIm5leHRNb250aE5hdiIsICJtb250aHNEcm9wZG93bkNvbnRhaW5lciIsICJjdXJyZW50TW9udGhFbGVtZW50IiwgImN1cnJlbnRZZWFyRWxlbWVudCIsICJuYXZpZ2F0aW9uQ3VycmVudE1vbnRoIiwgInNlbGVjdGVkRGF0ZUVsZW0iLCAiY29uZmlnIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbltlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkge30KICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSwgbi5pc0VuYWJsZWQgPSB0ZSwgbi5qdW1wVG9EYXRlID0gUiwgbi51cGRhdGVWYWx1ZSA9IHhlLCBuLm9wZW4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gdCAmJiAodCA9IG4uX3Bvc2l0aW9uRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMCA9PT0gbi5pc01vYmlsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB5KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgJiYgci5ibHVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLm1vYmlsZUlucHV0ICE9PSB1bmRlZmluZWQgJiYgKG4ubW9iaWxlSW5wdXQuZm9jdXMoKSwgbi5tb2JpbGVJbnB1dC5jbGljaygpKSwgdm9pZCB2ZSgib25PcGVuIikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5faW5wdXQuZGlzYWJsZWQgfHwgbi5jb25maWcuaW5saW5lKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbi5pc09wZW47CiAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNPcGVuID0gITAsIG8gfHwgKG4uY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgib3BlbiIpLCBuLl9pbnB1dC5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKSwgdmUoIm9uT3BlbiIpLCBjZSh0KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICEwID09PSBuLmNvbmZpZy5lbmFibGVUaW1lICYmICEwID09PSBuLmNvbmZpZy5ub0NhbGVuZGFyICYmICghMSAhPT0gbi5jb25maWcuYWxsb3dJbnB1dCB8fCBlICE9PSB1bmRlZmluZWQgJiYgbi50aW1lQ29udGFpbmVyLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCkgfHwgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5ob3VyRWxlbWVudC5zZWxlY3QoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgNTApKQogICAgICAgICAgICAgICAgICAgIH0sIG4ucmVkcmF3ID0gZmUsIG4uc2V0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gaW4gT2JqZWN0LmFzc2lnbihuLmNvbmZpZywgZSksIGUpIGhlW29dICE9PSB1bmRlZmluZWQgJiYgaGVbb10uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBuLmNvbmZpZ1tlXSA9IHQsIGhlW2VdICE9PSB1bmRlZmluZWQgPyBoZVtlXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IHIuaW5kZXhPZihlKSA+IC0xICYmIChuLmNvbmZpZ1tlXSA9IGModCkpOwogICAgICAgICAgICAgICAgICAgICAgICBuLnJlZHJhdygpLCB4ZSghMCkKICAgICAgICAgICAgICAgICAgICB9LCBuLnNldERhdGUgPSBmdW5jdGlvbihlLCB0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gdCAmJiAodCA9ICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSByICYmIChyID0gbi5jb25maWcuZGF0ZUZvcm1hdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBlICYmICFlIHx8IGUgaW5zdGFuY2VvZiBBcnJheSAmJiAwID09PSBlLmxlbmd0aCkgcmV0dXJuIG4uY2xlYXIodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lKGUsIHIpLCBuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA9IG4uc2VsZWN0ZWREYXRlc1tuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoIC0gMV0sIG4ucmVkcmF3KCksIFIodW5kZWZpbmVkLCB0KSwgRCgpLCAwID09PSBuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoICYmIG4uY2xlYXIoITEpOwogICAgICAgICAgICAgICAgICAgICAgICB4ZSh0KSwgdCAmJiB2ZSgib25DaGFuZ2UiKQogICAgICAgICAgICAgICAgICAgIH0sIG4udG9nZ2xlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoITAgPT09IG4uaXNPcGVuKSByZXR1cm4gbi5jbG9zZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBuLm9wZW4oZSkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHZhciBoZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBbbGUsIFFdLAogICAgICAgICAgICAgICAgICAgICAgICBzaG93TW9udGhzOiBbRywgYiwgJF0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkRhdGU6IFtSXSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGF0ZTogW1JdLAogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbkVsZW1lbnQ6IFtnZV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrT3BlbnM6IFtmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICEwID09PSBuLmNvbmZpZy5jbGlja09wZW5zID8gKEwobi5faW5wdXQsICJmb2N1cyIsIG4ub3BlbiksIEwobi5faW5wdXQsICJjbGljayIsIG4ub3BlbikpIDogKG4uX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIiwgbi5vcGVuKSwgbi5faW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBuLm9wZW4pKQogICAgICAgICAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG1lKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBcnJheSkgciA9IGUubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5wYXJzZURhdGUoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlIGluc3RhbmNlb2YgRGF0ZSB8fCAibnVtYmVyIiA9PSB0eXBlb2YgZSkgciA9IFtuLnBhcnNlRGF0ZShlLCB0KV07CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSBzd2l0Y2ggKG4uY29uZmlnLm1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNpbmdsZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0aW1lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gW24ucGFyc2VEYXRlKGUsIHQpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm11bHRpcGxlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5zcGxpdChuLmNvbmZpZy5jb25qdW5jdGlvbikubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnBhcnNlRGF0ZShlLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJhbmdlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5zcGxpdChuLmwxMG4ucmFuZ2VTZXBhcmF0b3IpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5wYXJzZURhdGUoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIG4uY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoIkludmFsaWQgZGF0ZSBzdXBwbGllZDogIiArIEpTT04uc3RyaW5naWZ5KGUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uc2VsZWN0ZWREYXRlcyA9IG4uY29uZmlnLmFsbG93SW52YWxpZFByZWxvYWQgPyByIDogci5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlIGluc3RhbmNlb2YgRGF0ZSAmJiB0ZShlLCAhMSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCAicmFuZ2UiID09PSBuLmNvbmZpZy5tb2RlICYmIG4uc2VsZWN0ZWREYXRlcy5zb3J0KChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRUaW1lKCkgLSB0LmdldFRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHllKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuc2xpY2UoKS5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgZSB8fCAibnVtYmVyIiA9PSB0eXBlb2YgZSB8fCBlIGluc3RhbmNlb2YgRGF0ZSA/IG4ucGFyc2VEYXRlKGUsIHVuZGVmaW5lZCwgITApIDogZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlLmZyb20gJiYgZS50byA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBuLnBhcnNlRGF0ZShlLmZyb20sIHVuZGVmaW5lZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IG4ucGFyc2VEYXRlKGUudG8sIHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2UoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uX3Bvc2l0aW9uRWxlbWVudCA9IG4uY29uZmlnLnBvc2l0aW9uRWxlbWVudCB8fCBuLl9pbnB1dAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdmUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jb25maWcgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmNvbmZpZ1tlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICE9PSB1bmRlZmluZWQgJiYgci5sZW5ndGggPiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSAwOyByW29dICYmIG8gPCByLmxlbmd0aDsgbysrKSByW29dKG4uc2VsZWN0ZWREYXRlcywgbi5pbnB1dC52YWx1ZSwgbiwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25DaGFuZ2UiID09PSBlICYmIChuLmlucHV0LmRpc3BhdGNoRXZlbnQoYmUoImNoYW5nZSIpKSwgbi5pbnB1dC5kaXNwYXRjaEV2ZW50KGJlKCJpbnB1dCIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pbml0RXZlbnQoZSwgITAsICEwKSwgdAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2UoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IG4uc2VsZWN0ZWREYXRlcy5sZW5ndGg7IHQrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLnNlbGVjdGVkRGF0ZXNbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIERhdGUgJiYgMCA9PT0gayhyLCBlKSkgcmV0dXJuICIiICsgdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gT2UoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnLm5vQ2FsZW5kYXIgfHwgbi5pc01vYmlsZSB8fCAhbi5tb250aE5hdiB8fCAobi55ZWFyRWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuZXcgRGF0ZShuLmN1cnJlbnRZZWFyLCBuLmN1cnJlbnRNb250aCwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnNldE1vbnRoKG4uY3VycmVudE1vbnRoICsgdCksIG4uY29uZmlnLnNob3dNb250aHMgPiAxIHx8ICJzdGF0aWMiID09PSBuLmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZSA/IG4ubW9udGhFbGVtZW50c1t0XS50ZXh0Q29udGVudCA9IHYoci5nZXRNb250aCgpLCBuLmNvbmZpZy5zaG9ydGhhbmRDdXJyZW50TW9udGgsIG4ubDEwbikgKyAiICIgOiBuLm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLnZhbHVlID0gci5nZXRNb250aCgpLnRvU3RyaW5nKCksIGUudmFsdWUgPSByLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4uX2hpZGVQcmV2TW9udGhBcnJvdyA9IG4uY29uZmlnLm1pbkRhdGUgIT09IHVuZGVmaW5lZCAmJiAobi5jdXJyZW50WWVhciA9PT0gbi5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpID8gbi5jdXJyZW50TW9udGggPD0gbi5jb25maWcubWluRGF0ZS5nZXRNb250aCgpIDogbi5jdXJyZW50WWVhciA8IG4uY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSksIG4uX2hpZGVOZXh0TW9udGhBcnJvdyA9IG4uY29uZmlnLm1heERhdGUgIT09IHVuZGVmaW5lZCAmJiAobi5jdXJyZW50WWVhciA9PT0gbi5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpID8gbi5jdXJyZW50TW9udGggKyAxID4gbi5jb25maWcubWF4RGF0ZS5nZXRNb250aCgpIDogbi5jdXJyZW50WWVhciA+IG4uY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBfZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZSB8fCAobi5jb25maWcuYWx0SW5wdXQgPyBuLmNvbmZpZy5hbHRGb3JtYXQgOiBuLmNvbmZpZy5kYXRlRm9ybWF0KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc2VsZWN0ZWREYXRlcy5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmZvcm1hdERhdGUoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmZpbHRlcigoZnVuY3Rpb24oZSwgdCwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJyYW5nZSIgIT09IG4uY29uZmlnLm1vZGUgfHwgbi5jb25maWcuZW5hYmxlVGltZSB8fCByLmluZGV4T2YoZSkgPT09IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmpvaW4oInJhbmdlIiAhPT0gbi5jb25maWcubW9kZSA/IG4uY29uZmlnLmNvbmp1bmN0aW9uIDogbi5sMTBuLnJhbmdlU2VwYXJhdG9yKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geGUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSAhMCksIG4ubW9iaWxlSW5wdXQgIT09IHVuZGVmaW5lZCAmJiBuLm1vYmlsZUZvcm1hdFN0ciAmJiAobi5tb2JpbGVJbnB1dC52YWx1ZSA9IG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqICE9PSB1bmRlZmluZWQgPyBuLmZvcm1hdERhdGUobi5sYXRlc3RTZWxlY3RlZERhdGVPYmosIG4ubW9iaWxlRm9ybWF0U3RyKSA6ICIiKSwgbi5pbnB1dC52YWx1ZSA9IF9lKG4uY29uZmlnLmRhdGVGb3JtYXQpLCBuLmFsdElucHV0ICE9PSB1bmRlZmluZWQgJiYgKG4uYWx0SW5wdXQudmFsdWUgPSBfZShuLmNvbmZpZy5hbHRGb3JtYXQpKSwgITEgIT09IGUgJiYgdmUoIm9uVmFsdWVVcGRhdGUiKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24ga2UoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHkoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbi5wcmV2TW9udGhOYXYuY29udGFpbnModCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5uZXh0TW9udGhOYXYuY29udGFpbnModCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgfHwgbyA/IFoociA/IC0xIDogMSkgOiBuLnllYXJFbGVtZW50cy5pbmRleE9mKHQpID49IDAgPyB0LnNlbGVjdCgpIDogdC5jbGFzc0xpc3QuY29udGFpbnMoImFycm93VXAiKSA/IG4uY2hhbmdlWWVhcihuLmN1cnJlbnRZZWFyICsgMSkgOiB0LmNsYXNzTGlzdC5jb250YWlucygiYXJyb3dEb3duIikgJiYgbi5jaGFuZ2VZZWFyKG4uY3VycmVudFllYXIgLSAxKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uZWxlbWVudCA9IG4uaW5wdXQgPSBlLCBuLmlzT3BlbiA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBbIndyYXAiLCAid2Vla051bWJlcnMiLCAiYWxsb3dJbnB1dCIsICJhbGxvd0ludmFsaWRQcmVsb2FkIiwgImNsaWNrT3BlbnMiLCAidGltZV8yNGhyIiwgImVuYWJsZVRpbWUiLCAibm9DYWxlbmRhciIsICJhbHRJbnB1dCIsICJzaG9ydGhhbmRDdXJyZW50TW9udGgiLCAiaW5saW5lIiwgInN0YXRpYyIsICJlbmFibGVTZWNvbmRzIiwgImRpc2FibGVNb2JpbGUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGooaih7fSwgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlLmRhdGFzZXQgfHwge30pKSksIHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcucGFyc2VEYXRlID0gYS5wYXJzZURhdGUsIG4uY29uZmlnLmZvcm1hdERhdGUgPSBhLmZvcm1hdERhdGUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLmNvbmZpZywgImVuYWJsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNvbmZpZy5fZW5hYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcuX2VuYWJsZSA9IHllKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4uY29uZmlnLCAiZGlzYWJsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNvbmZpZy5fZGlzYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnLl9kaXNhYmxlID0geWUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gInRpbWUiID09PSBhLm1vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhLmRhdGVGb3JtYXQgJiYgKGEuZW5hYmxlVGltZSB8fCB1KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IFQuZGVmYXVsdENvbmZpZy5kYXRlRm9ybWF0IHx8IG8uZGF0ZUZvcm1hdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kYXRlRm9ybWF0ID0gYS5ub0NhbGVuZGFyIHx8IHUgPyAiSDppIiArIChhLmVuYWJsZVNlY29uZHMgPyAiOlMiIDogIiIpIDogbCArICIgSDppIiArIChhLmVuYWJsZVNlY29uZHMgPyAiOlMiIDogIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLmFsdElucHV0ICYmIChhLmVuYWJsZVRpbWUgfHwgdSkgJiYgIWEuYWx0Rm9ybWF0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gVC5kZWZhdWx0Q29uZmlnLmFsdEZvcm1hdCB8fCBvLmFsdEZvcm1hdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hbHRGb3JtYXQgPSBhLm5vQ2FsZW5kYXIgfHwgdSA/ICJoOmkiICsgKGEuZW5hYmxlU2Vjb25kcyA/ICI6UyBLIiA6ICIgSyIpIDogZiArICIgaDppIiArIChhLmVuYWJsZVNlY29uZHMgPyAiOlMiIDogIiIpICsgIiBLIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobi5jb25maWcsICJtaW5EYXRlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uY29uZmlnLl9taW5EYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldDogc2UoIm1pbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLmNvbmZpZywgIm1heERhdGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5jb25maWcuX21heERhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBzZSgibWF4IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnWyJtaW4iID09PSBlID8gIl9taW5UaW1lIiA6ICJfbWF4VGltZSJdID0gbi5wYXJzZURhdGUodCwgIkg6aTpTIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4uY29uZmlnLCAibWluVGltZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNvbmZpZy5fbWluVGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IGQoIm1pbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLmNvbmZpZywgIm1heFRpbWUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5jb25maWcuX21heFRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBkKCJtYXgiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAidGltZSIgPT09IGEubW9kZSAmJiAobi5jb25maWcubm9DYWxlbmRhciA9ICEwLCBuLmNvbmZpZy5lbmFibGVUaW1lID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obi5jb25maWcsIHMsIGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgaS5sZW5ndGg7IHArKykgbi5jb25maWdbaVtwXV0gPSAhMCA9PT0gbi5jb25maWdbaVtwXV0gfHwgInRydWUiID09PSBuLmNvbmZpZ1tpW3BdXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5jb25maWdbZV0gIT09IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnW2VdID0gYyhuLmNvbmZpZ1tlXSB8fCBbXSkubWFwKGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuLmlzTW9iaWxlID0gIW4uY29uZmlnLmRpc2FibGVNb2JpbGUgJiYgIW4uY29uZmlnLmlubGluZSAmJiAic2luZ2xlIiA9PT0gbi5jb25maWcubW9kZSAmJiAhbi5jb25maWcuZGlzYWJsZS5sZW5ndGggJiYgIW4uY29uZmlnLmVuYWJsZSAmJiAhbi5jb25maWcud2Vla051bWJlcnMgJiYgL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocCA9IDA7IHAgPCBuLmNvbmZpZy5wbHVnaW5zLmxlbmd0aDsgcCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gbi5jb25maWcucGx1Z2luc1twXShuKSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbSBpbiBoKSByLmluZGV4T2YobSkgPiAtMSA/IG4uY29uZmlnW21dID0gYyhoW21dKS5tYXAoZykuY29uY2F0KG4uY29uZmlnW21dKSA6ICJ1bmRlZmluZWQiID09IHR5cGVvZiBhW21dICYmIChuLmNvbmZpZ1ttXSA9IGhbbV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuYWx0SW5wdXRDbGFzcyB8fCAobi5jb25maWcuYWx0SW5wdXRDbGFzcyA9IHVlKCkuY2xhc3NOYW1lICsgIiAiICsgbi5jb25maWcuYWx0SW5wdXRDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmUoIm9uUGFyc2VDb25maWciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLCBsZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uaW5wdXQgPSB1ZSgpLCAhbi5pbnB1dCkgcmV0dXJuIHZvaWQgbi5jb25maWcuZXJyb3JIYW5kbGVyKG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCBlbGVtZW50IHNwZWNpZmllZCIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmlucHV0Ll90eXBlID0gbi5pbnB1dC50eXBlLCBuLmlucHV0LnR5cGUgPSAidGV4dCIsIG4uaW5wdXQuY2xhc3NMaXN0LmFkZCgiZmxhdHBpY2tyLWlucHV0IiksIG4uX2lucHV0ID0gbi5pbnB1dCwgbi5jb25maWcuYWx0SW5wdXQgJiYgKG4uYWx0SW5wdXQgPSBkKG4uaW5wdXQubm9kZU5hbWUsIG4uY29uZmlnLmFsdElucHV0Q2xhc3MpLCBuLl9pbnB1dCA9IG4uYWx0SW5wdXQsIG4uYWx0SW5wdXQucGxhY2Vob2xkZXIgPSBuLmlucHV0LnBsYWNlaG9sZGVyLCBuLmFsdElucHV0LmRpc2FibGVkID0gbi5pbnB1dC5kaXNhYmxlZCwgbi5hbHRJbnB1dC5yZXF1aXJlZCA9IG4uaW5wdXQucmVxdWlyZWQsIG4uYWx0SW5wdXQudGFiSW5kZXggPSBuLmlucHV0LnRhYkluZGV4LCBuLmFsdElucHV0LnR5cGUgPSAidGV4dCIsIG4uaW5wdXQuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImhpZGRlbiIpLCAhbi5jb25maWdbInN0YXRpYyJdICYmIG4uaW5wdXQucGFyZW50Tm9kZSAmJiBuLmlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4uYWx0SW5wdXQsIG4uaW5wdXQubmV4dFNpYmxpbmcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbmZpZy5hbGxvd0lucHV0IHx8IG4uX2lucHV0LnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCAicmVhZG9ubHkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNlbGVjdGVkRGF0ZXMgPSBbXSwgbi5ub3cgPSBuLnBhcnNlRGF0ZShuLmNvbmZpZy5ub3cpIHx8IG5ldyBEYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5jb25maWcuZGVmYXVsdERhdGUgfHwgKCJJTlBVVCIgIT09IG4uaW5wdXQubm9kZU5hbWUgJiYgIlRFWFRBUkVBIiAhPT0gbi5pbnB1dC5ub2RlTmFtZSB8fCAhbi5pbnB1dC5wbGFjZWhvbGRlciB8fCBuLmlucHV0LnZhbHVlICE9PSBuLmlucHV0LnBsYWNlaG9sZGVyID8gbi5pbnB1dC52YWx1ZSA6IG51bGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgbWUoZSwgbi5jb25maWcuZGF0ZUZvcm1hdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5faW5pdGlhbERhdGUgPSBuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMCA/IG4uc2VsZWN0ZWREYXRlc1swXSA6IG4uY29uZmlnLm1pbkRhdGUgJiYgbi5jb25maWcubWluRGF0ZS5nZXRUaW1lKCkgPiBuLm5vdy5nZXRUaW1lKCkgPyBuLmNvbmZpZy5taW5EYXRlIDogbi5jb25maWcubWF4RGF0ZSAmJiBuLmNvbmZpZy5tYXhEYXRlLmdldFRpbWUoKSA8IG4ubm93LmdldFRpbWUoKSA/IG4uY29uZmlnLm1heERhdGUgOiBuLm5vdywgbi5jdXJyZW50WWVhciA9IG4uX2luaXRpYWxEYXRlLmdldEZ1bGxZZWFyKCksIG4uY3VycmVudE1vbnRoID0gbi5faW5pdGlhbERhdGUuZ2V0TW9udGgoKSwgbi5zZWxlY3RlZERhdGVzLmxlbmd0aCA+IDAgJiYgKG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqID0gbi5zZWxlY3RlZERhdGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbmZpZy5taW5UaW1lICE9PSB1bmRlZmluZWQgJiYgKG4uY29uZmlnLm1pblRpbWUgPSBuLnBhcnNlRGF0ZShuLmNvbmZpZy5taW5UaW1lLCAiSDppIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnLm1heFRpbWUgIT09IHVuZGVmaW5lZCAmJiAobi5jb25maWcubWF4VGltZSA9IG4ucGFyc2VEYXRlKG4uY29uZmlnLm1heFRpbWUsICJIOmkiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5taW5EYXRlSGFzVGltZSA9ICEhbi5jb25maWcubWluRGF0ZSAmJiAobi5jb25maWcubWluRGF0ZS5nZXRIb3VycygpID4gMCB8fCBuLmNvbmZpZy5taW5EYXRlLmdldE1pbnV0ZXMoKSA+IDAgfHwgbi5jb25maWcubWluRGF0ZS5nZXRTZWNvbmRzKCkgPiAwKSwgbi5tYXhEYXRlSGFzVGltZSA9ICEhbi5jb25maWcubWF4RGF0ZSAmJiAobi5jb25maWcubWF4RGF0ZS5nZXRIb3VycygpID4gMCB8fCBuLmNvbmZpZy5tYXhEYXRlLmdldE1pbnV0ZXMoKSA+IDAgfHwgbi5jb25maWcubWF4RGF0ZS5nZXRTZWNvbmRzKCkgPiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLCBuLnV0aWxzID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldERheXNJbk1vbnRoOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSBuLmN1cnJlbnRNb250aCksIHZvaWQgMCA9PT0gdCAmJiAodCA9IG4uY3VycmVudFllYXIpLCAxID09PSBlICYmICh0ICUgNCA9PSAwICYmIHQgJSAxMDAgIT0gMCB8fCB0ICUgNDAwID09IDApID8gMjkgOiBuLmwxMG4uZGF5c0luTW9udGhbZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmlzTW9iaWxlIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jYWxlbmRhckNvbnRhaW5lciA9IGQoImRpdiIsICJmbGF0cGlja3ItY2FsZW5kYXIiKSwgbi5jYWxlbmRhckNvbnRhaW5lci50YWJJbmRleCA9IC0xLCAhbi5jb25maWcubm9DYWxlbmRhcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5hcHBlbmRDaGlsZCgobi5tb250aE5hdiA9IGQoImRpdiIsICJmbGF0cGlja3ItbW9udGhzIiksIG4ueWVhckVsZW1lbnRzID0gW10sIG4ubW9udGhFbGVtZW50cyA9IFtdLCBuLnByZXZNb250aE5hdiA9IGQoInNwYW4iLCAiZmxhdHBpY2tyLXByZXYtbW9udGgiKSwgbi5wcmV2TW9udGhOYXYuaW5uZXJIVE1MID0gbi5jb25maWcucHJldkFycm93LCBuLm5leHRNb250aE5hdiA9IGQoInNwYW4iLCAiZmxhdHBpY2tyLW5leHQtbW9udGgiKSwgbi5uZXh0TW9udGhOYXYuaW5uZXJIVE1MID0gbi5jb25maWcubmV4dEFycm93LCBHKCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCAiX2hpZGVQcmV2TW9udGhBcnJvdyIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5fX2hpZGVQcmV2TW9udGhBcnJvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX19oaWRlUHJldk1vbnRoQXJyb3cgIT09IGUgJiYgKGYobi5wcmV2TW9udGhOYXYsICJmbGF0cGlja3ItZGlzYWJsZWQiLCBlKSwgbi5fX2hpZGVQcmV2TW9udGhBcnJvdyA9IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCAiX2hpZGVOZXh0TW9udGhBcnJvdyIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5fX2hpZGVOZXh0TW9udGhBcnJvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX19oaWRlTmV4dE1vbnRoQXJyb3cgIT09IGUgJiYgKGYobi5uZXh0TW9udGhOYXYsICJmbGF0cGlja3ItZGlzYWJsZWQiLCBlKSwgbi5fX2hpZGVOZXh0TW9udGhBcnJvdyA9IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4uY3VycmVudFllYXJFbGVtZW50ID0gbi55ZWFyRWxlbWVudHNbMF0sIE9lKCksIG4ubW9udGhOYXYpKSwgbi5pbm5lckNvbnRhaW5lciA9IGQoImRpdiIsICJmbGF0cGlja3ItaW5uZXJDb250YWluZXIiKSwgbi5jb25maWcud2Vla051bWJlcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFzV2Vla3MiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBkKCJkaXYiLCAiZmxhdHBpY2tyLXdlZWt3cmFwcGVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuYXBwZW5kQ2hpbGQoZCgic3BhbiIsICJmbGF0cGlja3Itd2Vla2RheSIsIG4ubDEwbi53ZWVrQWJicmV2aWF0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZCgiZGl2IiwgImZsYXRwaWNrci13ZWVrcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hcHBlbmRDaGlsZCh0KSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vla1dyYXBwZXI6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrTnVtYmVyczogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LndlZWtXcmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LndlZWtOdW1iZXJzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5pbm5lckNvbnRhaW5lci5hcHBlbmRDaGlsZChyKSwgbi53ZWVrTnVtYmVycyA9IG8sIG4ud2Vla1dyYXBwZXIgPSByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5yQ29udGFpbmVyID0gZCgiZGl2IiwgImZsYXRwaWNrci1yQ29udGFpbmVyIiksIG4uckNvbnRhaW5lci5hcHBlbmRDaGlsZCgkKCkpLCBuLmRheXNDb250YWluZXIgfHwgKG4uZGF5c0NvbnRhaW5lciA9IGQoImRpdiIsICJmbGF0cGlja3ItZGF5cyIpLCBuLmRheXNDb250YWluZXIudGFiSW5kZXggPSAtMSksIFcoKSwgbi5yQ29udGFpbmVyLmFwcGVuZENoaWxkKG4uZGF5c0NvbnRhaW5lciksIG4uaW5uZXJDb250YWluZXIuYXBwZW5kQ2hpbGQobi5yQ29udGFpbmVyKSwgZS5hcHBlbmRDaGlsZChuLmlubmVyQ29udGFpbmVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbmZpZy5lbmFibGVUaW1lICYmIGUuYXBwZW5kQ2hpbGQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFzVGltZSIpLCBuLmNvbmZpZy5ub0NhbGVuZGFyICYmIG4uY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgibm9DYWxlbmRhciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IFMobi5jb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnRpbWVDb250YWluZXIgPSBkKCJkaXYiLCAiZmxhdHBpY2tyLXRpbWUiKSwgbi50aW1lQ29udGFpbmVyLnRhYkluZGV4ID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZCgic3BhbiIsICJmbGF0cGlja3ItdGltZS1zZXBhcmF0b3IiLCAiOiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG0oImZsYXRwaWNrci1ob3VyIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWxhYmVsIjogbi5sMTBuLmhvdXJBcmlhTGFiZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmhvdXJFbGVtZW50ID0gci5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBtKCJmbGF0cGlja3ItbWludXRlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtbGFiZWwiOiBuLmwxMG4ubWludXRlQXJpYUxhYmVsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLm1pbnV0ZUVsZW1lbnQgPSBvLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLCBuLmhvdXJFbGVtZW50LnRhYkluZGV4ID0gbi5taW51dGVFbGVtZW50LnRhYkluZGV4ID0gLTEsIG4uaG91ckVsZW1lbnQudmFsdWUgPSBzKG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqID8gbi5sYXRlc3RTZWxlY3RlZERhdGVPYmouZ2V0SG91cnMoKSA6IG4uY29uZmlnLnRpbWVfMjRociA/IGUuaG91cnMgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUgJSAyNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJSAxMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUuaG91cnMpKSwgbi5taW51dGVFbGVtZW50LnZhbHVlID0gcyhuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA/IG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldE1pbnV0ZXMoKSA6IGUubWludXRlcyksIG4uaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdGVwIiwgbi5jb25maWcuaG91ckluY3JlbWVudC50b1N0cmluZygpKSwgbi5taW51dGVFbGVtZW50LnNldEF0dHJpYnV0ZSgic3RlcCIsIG4uY29uZmlnLm1pbnV0ZUluY3JlbWVudC50b1N0cmluZygpKSwgbi5ob3VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1pbiIsIG4uY29uZmlnLnRpbWVfMjRociA/ICIwIiA6ICIxIiksIG4uaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLCBuLmNvbmZpZy50aW1lXzI0aHIgPyAiMjMiIDogIjEyIiksIG4uaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXhsZW5ndGgiLCAiMiIpLCBuLm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4iLCAiMCIpLCBuLm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLCAiNTkiKSwgbi5taW51dGVFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4bGVuZ3RoIiwgIjIiKSwgbi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHIpLCBuLnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQodCksIG4udGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChvKSwgbi5jb25maWcudGltZV8yNGhyICYmIG4udGltZUNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJ0aW1lMjRociIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jb25maWcuZW5hYmxlU2Vjb25kcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi50aW1lQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhhc1NlY29uZHMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gbSgiZmxhdHBpY2tyLXNlY29uZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5zZWNvbmRFbGVtZW50ID0gaS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSwgbi5zZWNvbmRFbGVtZW50LnZhbHVlID0gcyhuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA/IG4ubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldFNlY29uZHMoKSA6IGUuc2Vjb25kcyksIG4uc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0ZXAiLCBuLm1pbnV0ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJzdGVwIikpLCBuLnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4iLCAiMCIpLCBuLnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLCAiNTkiKSwgbi5zZWNvbmRFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4bGVuZ3RoIiwgIjIiKSwgbi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKGQoInNwYW4iLCAiZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yIiwgIjoiKSksIG4udGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnLnRpbWVfMjRociB8fCAobi5hbVBNID0gZCgic3BhbiIsICJmbGF0cGlja3ItYW0tcG0iLCBuLmwxMG4uYW1QTVt1KChuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA/IG4uaG91ckVsZW1lbnQudmFsdWUgOiBuLmNvbmZpZy5kZWZhdWx0SG91cikgPiAxMSldKSwgbi5hbVBNLnRpdGxlID0gbi5sMTBuLnRvZ2dsZVRpdGxlLCBuLmFtUE0udGFiSW5kZXggPSAtMSwgbi50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKG4uYW1QTSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi50aW1lQ29udGFpbmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmKG4uY2FsZW5kYXJDb250YWluZXIsICJyYW5nZU1vZGUiLCAicmFuZ2UiID09PSBuLmNvbmZpZy5tb2RlKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAiYW5pbWF0ZSIsICEwID09PSBuLmNvbmZpZy5hbmltYXRlKSwgZihuLmNhbGVuZGFyQ29udGFpbmVyLCAibXVsdGlNb250aCIsIG4uY29uZmlnLnNob3dNb250aHMgPiAxKSwgbi5jYWxlbmRhckNvbnRhaW5lci5hcHBlbmRDaGlsZChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4uY29uZmlnLmFwcGVuZFRvICE9PSB1bmRlZmluZWQgJiYgbi5jb25maWcuYXBwZW5kVG8ubm9kZVR5cGUgIT09IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4uY29uZmlnLmlubGluZSB8fCBuLmNvbmZpZ1sic3RhdGljIl0pICYmIChuLmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQobi5jb25maWcuaW5saW5lID8gImlubGluZSIgOiAic3RhdGljIiksIG4uY29uZmlnLmlubGluZSAmJiAoIWkgJiYgbi5lbGVtZW50LnBhcmVudE5vZGUgPyBuLmVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobi5jYWxlbmRhckNvbnRhaW5lciwgbi5faW5wdXQubmV4dFNpYmxpbmcpIDogbi5jb25maWcuYXBwZW5kVG8gIT09IHVuZGVmaW5lZCAmJiBuLmNvbmZpZy5hcHBlbmRUby5hcHBlbmRDaGlsZChuLmNhbGVuZGFyQ29udGFpbmVyKSksIG4uY29uZmlnWyJzdGF0aWMiXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBkKCJkaXYiLCAiZmxhdHBpY2tyLXdyYXBwZXIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5lbGVtZW50LnBhcmVudE5vZGUgJiYgbi5lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsIG4uZWxlbWVudCksIGEuYXBwZW5kQ2hpbGQobi5lbGVtZW50KSwgbi5hbHRJbnB1dCAmJiBhLmFwcGVuZENoaWxkKG4uYWx0SW5wdXQpLCBhLmFwcGVuZENoaWxkKG4uY2FsZW5kYXJDb250YWluZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29uZmlnWyJzdGF0aWMiXSB8fCBuLmNvbmZpZy5pbmxpbmUgfHwgKG4uY29uZmlnLmFwcGVuZFRvICE9PSB1bmRlZmluZWQgPyBuLmNvbmZpZy5hcHBlbmRUbyA6IHdpbmRvdy5kb2N1bWVudC5ib2R5KS5hcHBlbmRDaGlsZChuLmNhbGVuZGFyQ29udGFpbmVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcud3JhcCAmJiBbIm9wZW4iLCAiY2xvc2UiLCAidG9nZ2xlIiwgImNsZWFyIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG4uZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS0iICsgZSArICJdIiksIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTCh0LCAiY2xpY2siLCBuW2VdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uaXNNb2JpbGUpIHJldHVybiB2b2lkCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG4uY29uZmlnLmVuYWJsZVRpbWUgPyBuLmNvbmZpZy5ub0NhbGVuZGFyID8gInRpbWUiIDogImRhdGV0aW1lLWxvY2FsIiA6ICJkYXRlIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5tb2JpbGVJbnB1dCA9IGQoImlucHV0Iiwgbi5pbnB1dC5jbGFzc05hbWUgKyAiIGZsYXRwaWNrci1tb2JpbGUiKSwgbi5tb2JpbGVJbnB1dC50YWJJbmRleCA9IDEsIG4ubW9iaWxlSW5wdXQudHlwZSA9IGUsIG4ubW9iaWxlSW5wdXQuZGlzYWJsZWQgPSBuLmlucHV0LmRpc2FibGVkLCBuLm1vYmlsZUlucHV0LnJlcXVpcmVkID0gbi5pbnB1dC5yZXF1aXJlZCwgbi5tb2JpbGVJbnB1dC5wbGFjZWhvbGRlciA9IG4uaW5wdXQucGxhY2Vob2xkZXIsIG4ubW9iaWxlRm9ybWF0U3RyID0gImRhdGV0aW1lLWxvY2FsIiA9PT0gZSA/ICJZLW0tZFxcVEg6aTpTIiA6ICJkYXRlIiA9PT0gZSA/ICJZLW0tZCIgOiAiSDppOlMiLCBuLnNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMCAmJiAobi5tb2JpbGVJbnB1dC5kZWZhdWx0VmFsdWUgPSBuLm1vYmlsZUlucHV0LnZhbHVlID0gbi5mb3JtYXREYXRlKG4uc2VsZWN0ZWREYXRlc1swXSwgbi5tb2JpbGVGb3JtYXRTdHIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcubWluRGF0ZSAmJiAobi5tb2JpbGVJbnB1dC5taW4gPSBuLmZvcm1hdERhdGUobi5jb25maWcubWluRGF0ZSwgIlktbS1kIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbmZpZy5tYXhEYXRlICYmIChuLm1vYmlsZUlucHV0Lm1heCA9IG4uZm9ybWF0RGF0ZShuLmNvbmZpZy5tYXhEYXRlLCAiWS1tLWQiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaW5wdXQuZ2V0QXR0cmlidXRlKCJzdGVwIikgJiYgKG4ubW9iaWxlSW5wdXQuc3RlcCA9IFN0cmluZyhuLmlucHV0LmdldEF0dHJpYnV0ZSgic3RlcCIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaW5wdXQudHlwZSA9ICJoaWRkZW4iLCBuLmFsdElucHV0ICE9PSB1bmRlZmluZWQgJiYgKG4uYWx0SW5wdXQudHlwZSA9ICJoaWRkZW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaW5wdXQucGFyZW50Tm9kZSAmJiBuLmlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4ubW9iaWxlSW5wdXQsIG4uaW5wdXQubmV4dFNpYmxpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwobi5tb2JpbGVJbnB1dCwgImNoYW5nZSIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNldERhdGUoeShlKS52YWx1ZSwgITEsIG4ubW9iaWxlRm9ybWF0U3RyKSwgdmUoIm9uQ2hhbmdlIiksIHZlKCJvbkNsb3NlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbChhZSwgNTApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX2RlYm91bmNlZENoYW5nZSA9IGwoSSwgMzAwKSwgbi5kYXlzQ29udGFpbmVyICYmICEvaVBob25lfGlQYWR8aVBvZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgTChuLmRheXNDb250YWluZXIsICJtb3VzZW92ZXIiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmFuZ2UiID09PSBuLmNvbmZpZy5tb2RlICYmIGllKHkoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwobi5faW5wdXQsICJrZXlkb3duIiwgb2UpLCBuLmNhbGVuZGFyQ29udGFpbmVyICE9PSB1bmRlZmluZWQgJiYgTChuLmNhbGVuZGFyQ29udGFpbmVyLCAia2V5ZG93biIsIG9lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbmZpZy5pbmxpbmUgfHwgbi5jb25maWdbInN0YXRpYyJdIHx8IEwod2luZG93LCAicmVzaXplIiwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9udG91Y2hzdGFydCAhPT0gdW5kZWZpbmVkID8gTCh3aW5kb3cuZG9jdW1lbnQsICJ0b3VjaHN0YXJ0IiwgSikgOiBMKHdpbmRvdy5kb2N1bWVudCwgIm1vdXNlZG93biIsIEopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwod2luZG93LmRvY3VtZW50LCAiZm9jdXMiLCBKLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksICEwID09PSBuLmNvbmZpZy5jbGlja09wZW5zICYmIChMKG4uX2lucHV0LCAiZm9jdXMiLCBuLm9wZW4pLCBMKG4uX2lucHV0LCAiY2xpY2siLCBuLm9wZW4pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmRheXNDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJiAoTChuLm1vbnRoTmF2LCAiY2xpY2siLCBrZSksIEwobi5tb250aE5hdiwgWyJrZXl1cCIsICJpbmNyZW1lbnQiXSwgTSksIEwobi5kYXlzQ29udGFpbmVyLCAiY2xpY2siLCBwZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLnRpbWVDb250YWluZXIgIT09IHVuZGVmaW5lZCAmJiBuLm1pbnV0ZUVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJiBuLmhvdXJFbGVtZW50ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geShlKS5zZWxlY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMKG4udGltZUNvbnRhaW5lciwgWyJpbmNyZW1lbnQiXSwgTyksIEwobi50aW1lQ29udGFpbmVyLCAiYmx1ciIsIE8sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBMKG4udGltZUNvbnRhaW5lciwgImNsaWNrIiwgcSksIEwoW24uaG91ckVsZW1lbnQsIG4ubWludXRlRWxlbWVudF0sIFsiZm9jdXMiLCAiY2xpY2siXSwgdCksIG4uc2Vjb25kRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIEwobi5zZWNvbmRFbGVtZW50LCAiZm9jdXMiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zZWNvbmRFbGVtZW50ICYmIG4uc2Vjb25kRWxlbWVudC5zZWxlY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4uYW1QTSAhPT0gdW5kZWZpbmVkICYmIEwobi5hbVBNLCAiY2xpY2siLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyhlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcuYWxsb3dJbnB1dCAmJiBMKG4uX2lucHV0LCAiYmx1ciIsIHJlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLCAobi5zZWxlY3RlZERhdGVzLmxlbmd0aCB8fCBuLmNvbmZpZy5ub0NhbGVuZGFyKSAmJiAobi5jb25maWcuZW5hYmxlVGltZSAmJiBEKG4uY29uZmlnLm5vQ2FsZW5kYXIgPyBuLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA6IHVuZGVmaW5lZCksIHhlKCExKSksIGIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAhbi5pc01vYmlsZSAmJiBpICYmIGNlKCksIHZlKCJvblJlYWR5IikKICAgICAgICAgICAgICAgICAgICB9KCksIG4KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBEKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgciA9IFtdLCBvID0gMDsgbyA8IG4ubGVuZ3RoOyBvKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuW29dOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGkuZ2V0QXR0cmlidXRlKCJkYXRhLWZwLW9taXQiKSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLl9mbGF0cGlja3IgIT09IHVuZGVmaW5lZCAmJiAoaS5fZmxhdHBpY2tyLmRlc3Ryb3koKSwgaS5fZmxhdHBpY2tyID0gdW5kZWZpbmVkKSwgaS5fZmxhdHBpY2tyID0gQShpLCB0IHx8IHt9KSwgci5wdXNoKGkuX2ZsYXRwaWNrcikKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihhKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAxID09PSByLmxlbmd0aCA/IHJbMF0gOiByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAidW5kZWZpbmVkIiAhPSB0eXBlb2YgSFRNTEVsZW1lbnQgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIEhUTUxDb2xsZWN0aW9uICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBOb2RlTGlzdCAmJiAoSFRNTENvbGxlY3Rpb24ucHJvdG90eXBlLmZsYXRwaWNrciA9IE5vZGVMaXN0LnByb3RvdHlwZS5mbGF0cGlja3IgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEQodGhpcywgZSkKICAgICAgICAgICAgICAgIH0sIEhUTUxFbGVtZW50LnByb3RvdHlwZS5mbGF0cGlja3IgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEQoW3RoaXNdLCBlKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgVCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIGUgPyBEKHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGUpLCB0KSA6IGUgaW5zdGFuY2VvZiBOb2RlID8gRChbZV0sIHQpIDogRChlLCB0KQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIFQuZGVmYXVsdENvbmZpZyA9IHt9LCBULmwxMG5zID0gewogICAgICAgICAgICAgICAgICAgIGVuOiBqKHt9LCBhKSwKICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGooe30sIGEpCiAgICAgICAgICAgICAgICB9LCBULmxvY2FsaXplID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIFQubDEwbnNbImRlZmF1bHQiXSA9IGooaih7fSwgVC5sMTBuc1siZGVmYXVsdCJdKSwgZSkKICAgICAgICAgICAgICAgIH0sIFQuc2V0RGVmYXVsdHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgVC5kZWZhdWx0Q29uZmlnID0gaihqKHt9LCBULmRlZmF1bHRDb25maWcpLCBlKQogICAgICAgICAgICAgICAgfSwgVC5wYXJzZURhdGUgPSB4KHt9KSwgVC5mb3JtYXREYXRlID0gXyh7fSksIFQuY29tcGFyZURhdGVzID0gaywgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGpRdWVyeSAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgalF1ZXJ5LmZuICYmIChqUXVlcnkuZm4uZmxhdHBpY2tyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBEKHRoaXMsIGUpCiAgICAgICAgICAgICAgICB9KSwgRGF0ZS5wcm90b3R5cGUuZnBfaW5jciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLCB0aGlzLmdldE1vbnRoKCksIHRoaXMuZ2V0RGF0ZSgpICsgKCJzdHJpbmciID09IHR5cGVvZiBlID8gcGFyc2VJbnQoZSwgMTApIDogZSkpCiAgICAgICAgICAgICAgICB9LCAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ICYmICh3aW5kb3cuZmxhdHBpY2tyID0gVCk7CiAgICAgICAgICAgICAgICB2YXIgTiA9IFQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTg5NTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAiZnVuY3Rpb24iICE9IHR5cGVvZiBPYmplY3QuYXNzaWduICYmIChPYmplY3QuYXNzaWduID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBbXSwgbiA9IDE7IG4gPCBhcmd1bWVudHMubGVuZ3RoOyBuKyspIHRbbiAtIDFdID0gYXJndW1lbnRzW25dOwogICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QiKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCAmJiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbbl0gPSB0W25dCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgbyA9IDAsIGkgPSB0OyBvIDwgaS5sZW5ndGg7IG8rKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGlbb107CiAgICAgICAgICAgICAgICAgICAgICAgIHIoYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg1NTI6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NTIpKG4oNTYzOSksICJEYXRhVmlldyIpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICB9LAogICAgICAgICAgICAxOTg5OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oMTc4OSksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oNDAxKSwKICAgICAgICAgICAgICAgICAgICBpID0gbig3NjY3KSwKICAgICAgICAgICAgICAgICAgICBhID0gbigxMzI3KSwKICAgICAgICAgICAgICAgICAgICBzID0gbigxODY2KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gbnVsbCA9PSBlID8gMCA6IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGZvciAodGhpcy5jbGVhcigpOyArK3QgPCBuOykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHJbMF0sIHJbMV0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdS5wcm90b3R5cGUuY2xlYXIgPSByLCB1LnByb3RvdHlwZVsiZGVsZXRlIl0gPSBvLCB1LnByb3RvdHlwZS5nZXQgPSBpLCB1LnByb3RvdHlwZS5oYXMgPSBhLCB1LnByb3RvdHlwZS5zZXQgPSBzLCBlLmV4cG9ydHMgPSB1CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg0MDc6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig3MDQwKSwKICAgICAgICAgICAgICAgICAgICBvID0gbig0MTI1KSwKICAgICAgICAgICAgICAgICAgICBpID0gbigyMTE3KSwKICAgICAgICAgICAgICAgICAgICBhID0gbig3NTE4KSwKICAgICAgICAgICAgICAgICAgICBzID0gbig0NzA1KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gbnVsbCA9PSBlID8gMCA6IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGZvciAodGhpcy5jbGVhcigpOyArK3QgPCBuOykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHJbMF0sIHJbMV0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdS5wcm90b3R5cGUuY2xlYXIgPSByLCB1LnByb3RvdHlwZVsiZGVsZXRlIl0gPSBvLCB1LnByb3RvdHlwZS5nZXQgPSBpLCB1LnByb3RvdHlwZS5oYXMgPSBhLCB1LnByb3RvdHlwZS5zZXQgPSBzLCBlLmV4cG9ydHMgPSB1CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDcwNzE6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NTIpKG4oNTYzOSksICJNYXAiKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMzM2OTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDQ3ODUpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDEyODUpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDZlMyksCiAgICAgICAgICAgICAgICAgICAgYSA9IG4oOTkxNiksCiAgICAgICAgICAgICAgICAgICAgcyA9IG4oNTI2NSk7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG51bGwgPT0gZSA/IDAgOiBlLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBmb3IgKHRoaXMuY2xlYXIoKTsgKyt0IDwgbjspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlW3RdOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldChyWzBdLCByWzFdKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHUucHJvdG90eXBlLmNsZWFyID0gciwgdS5wcm90b3R5cGVbImRlbGV0ZSJdID0gbywgdS5wcm90b3R5cGUuZ2V0ID0gaSwgdS5wcm90b3R5cGUuaGFzID0gYSwgdS5wcm90b3R5cGUuc2V0ID0gcywgZS5leHBvcnRzID0gdQogICAgICAgICAgICB9LAogICAgICAgICAgICAzODE4OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODUyKShuKDU2MzkpLCAiUHJvbWlzZSIpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICB9LAogICAgICAgICAgICA4NTI1OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODUyKShuKDU2MzkpLCAiU2V0Iik7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSByCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg2Njg6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbigzMzY5KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig2MTkpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDIzODUpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBudWxsID09IGUgPyAwIDogZS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0aGlzLl9fZGF0YV9fID0gbmV3IHI7ICsrdCA8IG47KSB0aGlzLmFkZChlW3RdKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYS5wcm90b3R5cGUuYWRkID0gYS5wcm90b3R5cGUucHVzaCA9IG8sIGEucHJvdG90eXBlLmhhcyA9IGksIGUuZXhwb3J0cyA9IGEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNjM4NDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDg0MDcpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDc0NjUpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDM3NzkpLAogICAgICAgICAgICAgICAgICAgIGEgPSBuKDc1OTkpLAogICAgICAgICAgICAgICAgICAgIHMgPSBuKDQ3NTgpLAogICAgICAgICAgICAgICAgICAgIHUgPSBuKDQzMDkpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fX2RhdGFfXyA9IG5ldyByKGUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2l6ZSA9IHQuc2l6ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbC5wcm90b3R5cGUuY2xlYXIgPSBvLCBsLnByb3RvdHlwZVsiZGVsZXRlIl0gPSBpLCBsLnByb3RvdHlwZS5nZXQgPSBhLCBsLnByb3RvdHlwZS5oYXMgPSBzLCBsLnByb3RvdHlwZS5zZXQgPSB1LCBlLmV4cG9ydHMgPSBsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDI3MDU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig1NjM5KS5TeW1ib2w7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSByCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDExNDk6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig1NjM5KS5VaW50OEFycmF5OwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICB9LAogICAgICAgICAgICA1Nzc6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NTIpKG4oNTYzOSksICJXZWFrTWFwIik7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSByCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDQ5NjM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gLTEsIHIgPSBudWxsID09IGUgPyAwIDogZS5sZW5ndGgsIG8gPSAwLCBpID0gW107ICsrbiA8IHI7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZVtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgdChhLCBuLCBlKSAmJiAoaVtvKytdID0gYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDYzNjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDI1NDUpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDU2OTQpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDE0NjkpLAogICAgICAgICAgICAgICAgICAgIGEgPSBuKDQxNDQpLAogICAgICAgICAgICAgICAgICAgIHMgPSBuKDU3NzYpLAogICAgICAgICAgICAgICAgICAgIHUgPSBuKDY3MTkpLAogICAgICAgICAgICAgICAgICAgIGwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gaShlKSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICFuICYmIG8oZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAhbiAmJiAhYyAmJiBhKGUpLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gIW4gJiYgIWMgJiYgIWYgJiYgdShlKSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG4gfHwgYyB8fCBmIHx8IGQsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBwID8gcihlLmxlbmd0aCwgU3RyaW5nKSA6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBtID0gaC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeSBpbiBlKSAhdCAmJiAhbC5jYWxsKGUsIHkpIHx8IHAgJiYgKCJsZW5ndGgiID09IHkgfHwgZiAmJiAoIm9mZnNldCIgPT0geSB8fCAicGFyZW50IiA9PSB5KSB8fCBkICYmICgiYnVmZmVyIiA9PSB5IHx8ICJieXRlTGVuZ3RoIiA9PSB5IHx8ICJieXRlT2Zmc2V0IiA9PSB5KSB8fCBzKHksIG0pKSB8fCBoLnB1c2goeSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjQ4ODogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAtMSwgciA9IHQubGVuZ3RoLCBvID0gZS5sZW5ndGg7ICsrbiA8IHI7KSBlW28gKyBuXSA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjkwODogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAtMSwgciA9IG51bGwgPT0gZSA/IDAgOiBlLmxlbmd0aDsgKytuIDwgcjspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KGVbbl0sIG4sIGUpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg0NzA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig3ODEzKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gZS5sZW5ndGg7IG4tLTspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKGVbbl1bMF0sIHQpKSByZXR1cm4gbjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgODg2NjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDI0ODgpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDE0NjkpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdChlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyhlKSA/IGkgOiByKGksIG4oZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDQyMzk6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbigyNzA1KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig5NjA3KSwKICAgICAgICAgICAgICAgICAgICBpID0gbigyMzMzKSwKICAgICAgICAgICAgICAgICAgICBhID0gciA/IHIudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IGUgPT09IHVuZGVmaW5lZCA/ICJbb2JqZWN0IFVuZGVmaW5lZF0iIDogIltvYmplY3QgTnVsbF0iIDogYSAmJiBhIGluIE9iamVjdChlKSA/IG8oZSkgOiBpKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDk0NTQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig0MjM5KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig3MDA1KTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyhlKSAmJiAiW29iamVjdCBBcmd1bWVudHNdIiA9PSByKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDkzOTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDI0OTIpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDcwMDUpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24gaShlLCB0LCBuLCBhLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgfHwgKG51bGwgPT0gZSB8fCBudWxsID09IHQgfHwgIW8oZSkgJiYgIW8odCkgPyBlICE9IGUgJiYgdCAhPSB0IDogcihlLCB0LCBuLCBhLCBpLCBzKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjQ5MjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDYzODQpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDcxMTQpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDgzNTEpLAogICAgICAgICAgICAgICAgICAgIGEgPSBuKDYwOTYpLAogICAgICAgICAgICAgICAgICAgIHMgPSBuKDQxNjApLAogICAgICAgICAgICAgICAgICAgIHUgPSBuKDE0NjkpLAogICAgICAgICAgICAgICAgICAgIGwgPSBuKDQxNDQpLAogICAgICAgICAgICAgICAgICAgIGMgPSBuKDY3MTkpLAogICAgICAgICAgICAgICAgICAgIGYgPSAiW29iamVjdCBBcmd1bWVudHNdIiwKICAgICAgICAgICAgICAgICAgICBkID0gIltvYmplY3QgQXJyYXldIiwKICAgICAgICAgICAgICAgICAgICBwID0gIltvYmplY3QgT2JqZWN0XSIsCiAgICAgICAgICAgICAgICAgICAgaCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuLCBtLCB5LCBnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSB1KGUpLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gdSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHYgPyBkIDogcyhlKSwKICAgICAgICAgICAgICAgICAgICAgICAgTyA9IGIgPyBkIDogcyh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgXyA9ICh3ID0gdyA9PSBmID8gcCA6IHcpID09IHAsCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSAoTyA9IE8gPT0gZiA/IHAgOiBPKSA9PSBwLAogICAgICAgICAgICAgICAgICAgICAgICBrID0gdyA9PSBPOwogICAgICAgICAgICAgICAgICAgIGlmIChrICYmIGwoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSAhMCwgXyA9ICExCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChrICYmICFfKSByZXR1cm4gZyB8fCAoZyA9IG5ldyByKSwgdiB8fCBjKGUpID8gbyhlLCB0LCBuLCBtLCB5LCBnKSA6IGkoZSwgdCwgdywgbiwgbSwgeSwgZyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoMSAmIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBFID0gXyAmJiBoLmNhbGwoZSwgIl9fd3JhcHBlZF9fIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0geCAmJiBoLmNhbGwodCwgIl9fd3JhcHBlZF9fIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFIHx8IEMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBTID0gRSA/IGUudmFsdWUoKSA6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IEMgPyB0LnZhbHVlKCkgOiB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcgfHwgKGcgPSBuZXcgciksIHkoUywgaiwgbiwgbSwgZykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFrICYmIChnIHx8IChnID0gbmV3IHIpLCBhKGUsIHQsIG4sIG0sIHksIGcpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA4NDU4OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oMzU2MCksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oNTM0NiksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oMzIxOCksCiAgICAgICAgICAgICAgICAgICAgYSA9IG4oMzQ2KSwKICAgICAgICAgICAgICAgICAgICBzID0gL15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sCiAgICAgICAgICAgICAgICAgICAgdSA9IEZ1bmN0aW9uLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICBsID0gT2JqZWN0LnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICBjID0gdS50b1N0cmluZywKICAgICAgICAgICAgICAgICAgICBmID0gbC5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAgICBkID0gUmVnRXhwKCJeIiArIGMuY2FsbChmKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywgIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCAiJDEuKj8iKSArICIkIik7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoIWkoZSkgfHwgbyhlKSkgJiYgKHIoZSkgPyBkIDogcykudGVzdChhKGUpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA4NzQ5OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDIzOSksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oMTc4MCksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oNzAwNSksCiAgICAgICAgICAgICAgICAgICAgYSA9IHt9OwogICAgICAgICAgICAgICAgYVsiW29iamVjdCBGbG9hdDMyQXJyYXldIl0gPSBhWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXSA9IGFbIltvYmplY3QgSW50OEFycmF5XSJdID0gYVsiW29iamVjdCBJbnQxNkFycmF5XSJdID0gYVsiW29iamVjdCBJbnQzMkFycmF5XSJdID0gYVsiW29iamVjdCBVaW50OEFycmF5XSJdID0gYVsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXSA9IGFbIltvYmplY3QgVWludDE2QXJyYXldIl0gPSBhWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdID0gITAsIGFbIltvYmplY3QgQXJndW1lbnRzXSJdID0gYVsiW29iamVjdCBBcnJheV0iXSA9IGFbIltvYmplY3QgQXJyYXlCdWZmZXJdIl0gPSBhWyJbb2JqZWN0IEJvb2xlYW5dIl0gPSBhWyJbb2JqZWN0IERhdGFWaWV3XSJdID0gYVsiW29iamVjdCBEYXRlXSJdID0gYVsiW29iamVjdCBFcnJvcl0iXSA9IGFbIltvYmplY3QgRnVuY3Rpb25dIl0gPSBhWyJbb2JqZWN0IE1hcF0iXSA9IGFbIltvYmplY3QgTnVtYmVyXSJdID0gYVsiW29iamVjdCBPYmplY3RdIl0gPSBhWyJbb2JqZWN0IFJlZ0V4cF0iXSA9IGFbIltvYmplY3QgU2V0XSJdID0gYVsiW29iamVjdCBTdHJpbmddIl0gPSBhWyJbb2JqZWN0IFdlYWtNYXBdIl0gPSAhMSwgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpKGUpICYmIG8oZS5sZW5ndGgpICYmICEhYVtyKGUpXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAyODA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig1NzI2KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig2OTE2KSwKICAgICAgICAgICAgICAgICAgICBpID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXIoZSkpIHJldHVybiBvKGUpOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBPYmplY3QoZSkpIGkuY2FsbChlLCBuKSAmJiAiY29uc3RydWN0b3IiICE9IG4gJiYgdC5wdXNoKG4pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDI1NDU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gLTEsIHIgPSBBcnJheShlKTsgKytuIDwgZTspIHJbbl0gPSB0KG4pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDE3MTc6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSh0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDc1NzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmhhcyh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA0NDI5OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNTYzOSlbIl9fY29yZS1qc19zaGFyZWRfXyJdOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICB9LAogICAgICAgICAgICA3MTE0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODY2OCksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oMjkwOCksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oNDc1Nyk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuLCBhLCBzLCB1KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSAxICYgbiwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gdC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gZiAmJiAhKGwgJiYgZiA+IGMpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB1LmdldChlKSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHUuZ2V0KHQpOwogICAgICAgICAgICAgICAgICAgIGlmIChkICYmIHApIHJldHVybiBkID09IHQgJiYgcCA9PSBlOwogICAgICAgICAgICAgICAgICAgIHZhciBoID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IDIgJiBuID8gbmV3IHIgOiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgZm9yICh1LnNldChlLCB0KSwgdS5zZXQodCwgZSk7ICsraCA8IGM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZVtoXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0W2hdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSkgdmFyIGIgPSBsID8gYSh2LCBnLCBoLCB0LCBlLCB1KSA6IGEoZywgdiwgaCwgZSwgdCwgdSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbyh0LCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkoeSwgdCkgJiYgKGcgPT09IGUgfHwgcyhnLCBlLCBuLCBhLCB1KSkpIHJldHVybiB5LnB1c2godCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChnICE9PSB2ICYmICFzKGcsIHYsIG4sIGEsIHUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB1WyJkZWxldGUiXShlKSwgdVsiZGVsZXRlIl0odCksIG0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgODM1MTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDI3MDUpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDExNDkpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDc4MTMpLAogICAgICAgICAgICAgICAgICAgIGEgPSBuKDcxMTQpLAogICAgICAgICAgICAgICAgICAgIHMgPSBuKDg3NzYpLAogICAgICAgICAgICAgICAgICAgIHUgPSBuKDE4MTQpLAogICAgICAgICAgICAgICAgICAgIGwgPSByID8gci5wcm90b3R5cGUgOiB1bmRlZmluZWQsCiAgICAgICAgICAgICAgICAgICAgYyA9IGwgPyBsLnZhbHVlT2YgOiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuLCByLCBsLCBmLCBkKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgRGF0YVZpZXddIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmJ5dGVMZW5ndGggIT0gdC5ieXRlTGVuZ3RoIHx8IGUuYnl0ZU9mZnNldCAhPSB0LmJ5dGVPZmZzZXQpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlLmJ1ZmZlciwgdCA9IHQuYnVmZmVyOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IEFycmF5QnVmZmVyXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShlLmJ5dGVMZW5ndGggIT0gdC5ieXRlTGVuZ3RoIHx8ICFmKG5ldyBvKGUpLCBuZXcgbyh0KSkpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IEJvb2xlYW5dIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiW29iamVjdCBEYXRlXSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgTnVtYmVyXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSgrZSwgK3QpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IEVycm9yXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5uYW1lID09IHQubmFtZSAmJiBlLm1lc3NhZ2UgPT0gdC5tZXNzYWdlOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IFJlZ0V4cF0iOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IFN0cmluZ10iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT0gdCArICIiOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IE1hcF0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBzOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IFNldF0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSAxICYgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwIHx8IChwID0gdSksIGUuc2l6ZSAhPSB0LnNpemUgJiYgIWgpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gZC5nZXQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSkgcmV0dXJuIG0gPT0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgfD0gMiwgZC5zZXQoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGEocChlKSwgcCh0KSwgciwgbCwgZiwgZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZFsiZGVsZXRlIl0oZSksIHk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgU3ltYm9sXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYykgcmV0dXJuIGMuY2FsbChlKSA9PSBjLmNhbGwodCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDYwOTY6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4MjM0KSwKICAgICAgICAgICAgICAgICAgICBvID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQsIG4sIGksIGEsIHMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IDEgJiBuLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gcihlKSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGlmIChjICE9IHIodCkubGVuZ3RoICYmICF1KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZiA9IGM7IGYtLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBsW2ZdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh1ID8gZCBpbiB0IDogby5jYWxsKHQsIGQpKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBwID0gcy5nZXQoZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzLmdldCh0KTsKICAgICAgICAgICAgICAgICAgICBpZiAocCAmJiBoKSByZXR1cm4gcCA9PSB0ICYmIGggPT0gZTsKICAgICAgICAgICAgICAgICAgICB2YXIgbSA9ICEwOwogICAgICAgICAgICAgICAgICAgIHMuc2V0KGUsIHQpLCBzLnNldCh0LCBlKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gdTsgKytmIDwgYzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBlW2QgPSBsW2ZdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0W2RdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkgdmFyIGIgPSB1ID8gaSh2LCBnLCBkLCB0LCBlLCBzKSA6IGkoZywgdiwgZCwgZSwgdCwgcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGIgPT09IHVuZGVmaW5lZCA/IGcgPT09IHYgfHwgYShnLCB2LCBuLCBpLCBzKSA6IGIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHkgfHwgKHkgPSAiY29uc3RydWN0b3IiID09IGQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChtICYmICF5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gZS5jb25zdHJ1Y3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSB0LmNvbnN0cnVjdG9yOwogICAgICAgICAgICAgICAgICAgICAgICB3ID09IE8gfHwgISgiY29uc3RydWN0b3IiIGluIGUpIHx8ICEoImNvbnN0cnVjdG9yIiBpbiB0KSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiB3ICYmIHcgaW5zdGFuY2VvZiB3ICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIE8gJiYgTyBpbnN0YW5jZW9mIE8gfHwgKG0gPSAhMSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNbImRlbGV0ZSJdKGUpLCBzWyJkZWxldGUiXSh0KSwgbQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAxOTU3OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9ICJvYmplY3QiID09IHR5cGVvZiBuLmcgJiYgbi5nICYmIG4uZy5PYmplY3QgPT09IE9iamVjdCAmJiBuLmc7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSByCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDgyMzQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4ODY2KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig5NTUxKSwKICAgICAgICAgICAgICAgICAgICBpID0gbigzNjc0KTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCBpLCBvKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA1MDUwOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNzAxOSk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByKHQpID8gblsic3RyaW5nIiA9PSB0eXBlb2YgdCA/ICJzdHJpbmciIDogImhhc2giXSA6IG4ubWFwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg1MjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDg0NTgpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDc4MDEpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gbyhlLCB0KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihuKSA/IG4gOiB1bmRlZmluZWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgOTYwNzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDI3MDUpLAogICAgICAgICAgICAgICAgICAgIG8gPSBPYmplY3QucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgIGkgPSBvLmhhc093blByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgIGEgPSBvLnRvU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIHMgPSByID8gci50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGkuY2FsbChlLCBzKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbc107CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgZVtzXSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAhMAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHUpIHt9CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBhLmNhbGwoZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgJiYgKHQgPyBlW3NdID0gbiA6IGRlbGV0ZSBlW3NdKSwgbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA5NTUxOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDk2MyksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oNDc5KSwKICAgICAgICAgICAgICAgICAgICBpID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSwKICAgICAgICAgICAgICAgICAgICBhID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scywKICAgICAgICAgICAgICAgICAgICBzID0gYSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IFtdIDogKGUgPSBPYmplY3QoZSksIHIoYShlKSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNhbGwoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICAgICAgICAgIH0gOiBvOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcwogICAgICAgICAgICB9LAogICAgICAgICAgICA0MTYwOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODU1MiksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oNzA3MSksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oMzgxOCksCiAgICAgICAgICAgICAgICAgICAgYSA9IG4oODUyNSksCiAgICAgICAgICAgICAgICAgICAgcyA9IG4oNTc3KSwKICAgICAgICAgICAgICAgICAgICB1ID0gbig0MjM5KSwKICAgICAgICAgICAgICAgICAgICBsID0gbigzNDYpLAogICAgICAgICAgICAgICAgICAgIGMgPSAiW29iamVjdCBNYXBdIiwKICAgICAgICAgICAgICAgICAgICBmID0gIltvYmplY3QgUHJvbWlzZV0iLAogICAgICAgICAgICAgICAgICAgIGQgPSAiW29iamVjdCBTZXRdIiwKICAgICAgICAgICAgICAgICAgICBwID0gIltvYmplY3QgV2Vha01hcF0iLAogICAgICAgICAgICAgICAgICAgIGggPSAiW29iamVjdCBEYXRhVmlld10iLAogICAgICAgICAgICAgICAgICAgIG0gPSBsKHIpLAogICAgICAgICAgICAgICAgICAgIHkgPSBsKG8pLAogICAgICAgICAgICAgICAgICAgIGcgPSBsKGkpLAogICAgICAgICAgICAgICAgICAgIHYgPSBsKGEpLAogICAgICAgICAgICAgICAgICAgIGIgPSBsKHMpLAogICAgICAgICAgICAgICAgICAgIHcgPSB1OwogICAgICAgICAgICAgICAgKHIgJiYgdyhuZXcgcihuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBoIHx8IG8gJiYgdyhuZXcgbykgIT0gYyB8fCBpICYmIHcoaS5yZXNvbHZlKCkpICE9IGYgfHwgYSAmJiB3KG5ldyBhKSAhPSBkIHx8IHMgJiYgdyhuZXcgcykgIT0gcCkgJiYgKHcgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB1KGUpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gIltvYmplY3QgT2JqZWN0XSIgPT0gdCA/IGUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuID8gbChuKSA6ICIiOwogICAgICAgICAgICAgICAgICAgIGlmIChyKSBzd2l0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGg7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZjsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgYjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICB9KSwgZS5leHBvcnRzID0gdwogICAgICAgICAgICB9LAogICAgICAgICAgICA3ODAxOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IHVuZGVmaW5lZCA6IGVbdF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTc4OTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDQ1MzYpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fX2RhdGFfXyA9IHIgPyByKG51bGwpIDoge30sIHRoaXMuc2l6ZSA9IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDAxOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmhhcyhlKSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1tlXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaXplIC09IHQgPyAxIDogMCwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3NjY3OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDUzNiksCiAgICAgICAgICAgICAgICAgICAgbyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdFtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiA9PT0gbiA/IHVuZGVmaW5lZCA6IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uY2FsbCh0LCBlKSA/IHRbZV0gOiB1bmRlZmluZWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTMyNzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDQ1MzYpLAogICAgICAgICAgICAgICAgICAgIG8gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fX2RhdGFfXzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA/IHRbZV0gIT09IHVuZGVmaW5lZCA6IG8uY2FsbCh0LCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAxODY2OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDUzNik7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNpemUgKz0gdGhpcy5oYXMoZSkgPyAwIDogMSwgbltlXSA9IHIgJiYgdCA9PT0gdW5kZWZpbmVkID8gIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iIDogdCwgdGhpcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA1Nzc2OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IC9eKD86MHxbMS05XVxkKikkLzsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHR5cGVvZiBlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIShuID0gbnVsbCA9PSBuID8gOTAwNzE5OTI1NDc0MDk5MSA6IG4pICYmICgibnVtYmVyIiA9PSByIHx8ICJzeW1ib2wiICE9IHIgJiYgdC50ZXN0KGUpKSAmJiBlID4gLTEgJiYgZSAlIDEgPT0gMCAmJiBlIDwgbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3MDE5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0eXBlb2YgZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdCB8fCAibnVtYmVyIiA9PSB0IHx8ICJzeW1ib2wiID09IHQgfHwgImJvb2xlYW4iID09IHQgPyAiX19wcm90b19fIiAhPT0gZSA6IG51bGwgPT09IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNTM0NjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBuKDQ0MjkpLAogICAgICAgICAgICAgICAgICAgIGkgPSAociA9IC9bXi5dKyQvLmV4ZWMobyAmJiBvLmtleXMgJiYgby5rZXlzLklFX1BST1RPIHx8ICIiKSkgPyAiU3ltYm9sKHNyYylfMS4iICsgciA6ICIiOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWkgJiYgaSBpbiBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDU3MjY6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gT2JqZWN0LnByb3RvdHlwZTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUgJiYgZS5jb25zdHJ1Y3RvcjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gKCJmdW5jdGlvbiIgPT0gdHlwZW9mIG4gJiYgbi5wcm90b3R5cGUgfHwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNzA0MDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fX2RhdGFfXyA9IFtdLCB0aGlzLnNpemUgPSAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDQxMjU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NDcwKSwKICAgICAgICAgICAgICAgICAgICBvID0gQXJyYXkucHJvdG90eXBlLnNwbGljZTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX18sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByKHQsIGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKG4gPCAwKSAmJiAobiA9PSB0Lmxlbmd0aCAtIDEgPyB0LnBvcCgpIDogby5jYWxsKHQsIG4sIDEpLCAtLXRoaXMuc2l6ZSwgITApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDIxMTc6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NDcwKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX18sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByKHQsIGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuIDwgMCA/IHVuZGVmaW5lZCA6IHRbbl1bMV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNzUxODogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDg0NzApOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiByKHRoaXMuX19kYXRhX18sIGUpID4gLTEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDcwNTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDg0NzApOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fX2RhdGFfXywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIobiwgZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gPCAwID8gKCsrdGhpcy5zaXplLCBuLnB1c2goW2UsIHRdKSkgOiBuW29dWzFdID0gdCwgdGhpcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA0Nzg1OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oMTk4OSksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oODQwNyksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oNzA3MSk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNpemUgPSAwLCB0aGlzLl9fZGF0YV9fID0gewogICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiBuZXcgciwKICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBuZXcoaSB8fCBvKSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nOiBuZXcgcgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTI4NTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDUwNTApOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gcih0aGlzLCBlKVsiZGVsZXRlIl0oZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSAtPSB0ID8gMSA6IDAsIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNmUzOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNTA1MCk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIodGhpcywgZSkuZ2V0KGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDk5MTY6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig1MDUwKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcih0aGlzLCBlKS5oYXMoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNTI2NTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDUwNTApOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gcih0aGlzLCBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4uc2l6ZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zZXQoZSwgdCksIHRoaXMuc2l6ZSArPSBuLnNpemUgPT0gbyA/IDAgOiAxLCB0aGlzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg3NzY6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gQXJyYXkoZS5zaXplKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5bKyt0XSA9IFtyLCBlXQogICAgICAgICAgICAgICAgICAgIH0pKSwgbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA0NTM2OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODUyKShPYmplY3QsICJjcmVhdGUiKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNjkxNjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDU1NjkpKE9iamVjdC5rZXlzLCBPYmplY3QpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICB9LAogICAgICAgICAgICA0ZTM6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGUgPSBuLm5tZChlKTsKICAgICAgICAgICAgICAgIHZhciByID0gbigxOTU3KSwKICAgICAgICAgICAgICAgICAgICBvID0gdCAmJiAhdC5ub2RlVHlwZSAmJiB0LAogICAgICAgICAgICAgICAgICAgIGkgPSBvICYmIGUgJiYgIWUubm9kZVR5cGUgJiYgZSwKICAgICAgICAgICAgICAgICAgICBhID0gaSAmJiBpLmV4cG9ydHMgPT09IG8gJiYgci5wcm9jZXNzLAogICAgICAgICAgICAgICAgICAgIHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gaSAmJiBpLnJlcXVpcmUgJiYgaS5yZXF1aXJlKCJ1dGlsIikudHlwZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSB8fCBhICYmIGEuYmluZGluZyAmJiBhLmJpbmRpbmcoInV0aWwiKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7fQogICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjMzMzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmNhbGwoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNTU2OTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKHQobikpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA1NjM5OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oMTk1NyksCiAgICAgICAgICAgICAgICAgICAgbyA9ICJvYmplY3QiID09IHR5cGVvZiBzZWxmICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmLAogICAgICAgICAgICAgICAgICAgIGkgPSByIHx8IG8gfHwgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNjE5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KGUsICJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiksIHRoaXMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjM4NTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAxODE0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IEFycmF5KGUuc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBuWysrdF0gPSBlCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDc0NjU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig4NDA3KTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgciwgdGhpcy5zaXplID0gMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAzNzc5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdFsiZGVsZXRlIl0oZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA9IHQuc2l6ZSwgbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3NTk5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDQ3NTg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDMwOTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDg0MDcpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDcwNzEpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuKDMzNjkpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fX2RhdGFfXzsKICAgICAgICAgICAgICAgICAgICBpZiAobiBpbnN0YW5jZW9mIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW8gfHwgYS5sZW5ndGggPCAxOTkpIHJldHVybiBhLnB1c2goW2UsIHRdKSwgdGhpcy5zaXplID0gKytuLnNpemUsIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9fZGF0YV9fID0gbmV3IGkoYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc2V0KGUsIHQpLCB0aGlzLnNpemUgPSBuLnNpemUsIHRoaXMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMzQ2OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5jYWxsKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHt9CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSArICIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHt9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3ODEzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgfHwgZSAhPSBlICYmIHQgIT0gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA1Njk0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oOTQ1NCksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oNzAwNSksCiAgICAgICAgICAgICAgICAgICAgaSA9IE9iamVjdC5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICAgICAgYSA9IGkuaGFzT3duUHJvcGVydHksCiAgICAgICAgICAgICAgICAgICAgcyA9IGkucHJvcGVydHlJc0VudW1lcmFibGUsCiAgICAgICAgICAgICAgICAgICAgdSA9IHIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMKICAgICAgICAgICAgICAgICAgICB9KCkpID8gciA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8oZSkgJiYgYS5jYWxsKGUsICJjYWxsZWUiKSAmJiAhcy5jYWxsKGUsICJjYWxsZWUiKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSB1CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDE0Njk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gQXJyYXkuaXNBcnJheTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgODYxMjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDM1NjApLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDE3ODApOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IGUgJiYgbyhlLmxlbmd0aCkgJiYgIXIoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNDE0NDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgZSA9IG4ubm1kKGUpOwogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDU2MzkpLAogICAgICAgICAgICAgICAgICAgIG8gPSBuKDUwNjIpLAogICAgICAgICAgICAgICAgICAgIGkgPSB0ICYmICF0Lm5vZGVUeXBlICYmIHQsCiAgICAgICAgICAgICAgICAgICAgYSA9IGkgJiYgZSAmJiAhZS5ub2RlVHlwZSAmJiBlLAogICAgICAgICAgICAgICAgICAgIHMgPSBhICYmIGEuZXhwb3J0cyA9PT0gaSA/IHIuQnVmZmVyIDogdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgICAgIHUgPSAocyA/IHMuaXNCdWZmZXIgOiB1bmRlZmluZWQpIHx8IG87CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSB1CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDg0NDY6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig5MzkpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiByKGUsIHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDM1NjA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig0MjM5KSwKICAgICAgICAgICAgICAgICAgICBvID0gbigzMjE4KTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIW8oZSkpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHIoZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJbb2JqZWN0IEZ1bmN0aW9uXSIgPT0gdCB8fCAiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iID09IHQgfHwgIltvYmplY3QgQXN5bmNGdW5jdGlvbl0iID09IHQgfHwgIltvYmplY3QgUHJveHldIiA9PSB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDE3ODA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm51bWJlciIgPT0gdHlwZW9mIGUgJiYgZSA+IC0xICYmIGUgJSAxID09IDAgJiYgZSA8PSA5MDA3MTk5MjU0NzQwOTkxCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDc2NTQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbigxNzYzKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlKSAmJiBlICE9ICtlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDE3NjM6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gbig0MjM5KSwKICAgICAgICAgICAgICAgICAgICBvID0gbig3MDA1KTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm51bWJlciIgPT0gdHlwZW9mIGUgfHwgbyhlKSAmJiAiW29iamVjdCBOdW1iZXJdIiA9PSByKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDMyMTg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHR5cGVvZiBlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IGUgJiYgKCJvYmplY3QiID09IHQgfHwgImZ1bmN0aW9uIiA9PSB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3MDA1OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA3MDM3OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDIzOSksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oMTQ2OSksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oNzAwNSk7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiBlIHx8ICFvKGUpICYmIGkoZSkgJiYgIltvYmplY3QgU3RyaW5nXSIgPT0gcihlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA2NzE5OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODc0OSksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oMTcxNyksCiAgICAgICAgICAgICAgICAgICAgaSA9IG4oNGUzKSwKICAgICAgICAgICAgICAgICAgICBhID0gaSAmJiBpLmlzVHlwZWRBcnJheSwKICAgICAgICAgICAgICAgICAgICBzID0gYSA/IG8oYSkgOiByOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcwogICAgICAgICAgICB9LAogICAgICAgICAgICAyMzUzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAzNjc0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oNDYzNiksCiAgICAgICAgICAgICAgICAgICAgbyA9IG4oMjgwKSwKICAgICAgICAgICAgICAgICAgICBpID0gbig4NjEyKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaShlKSA/IHIoZSkgOiBvKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDQ3OTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDUwNjI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA0MjUxOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAvKiEKICAgICAgICAgICAgICAgICAqIE1vdmVUbyAtIEEgbGlnaHR3ZWlnaHQgc2Nyb2xsIGFuaW1hdGlvbiBqYXZhc2NyaXB0IGxpYnJhcnkgd2l0aG91dCBhbnkgZGVwZW5kZW5jeS4KICAgICAgICAgICAgICAgICAqIFZlcnNpb24gMS44LjIgKDI4LTA2LTIwMTkgMTQ6MzApCiAgICAgICAgICAgICAgICAgKiBMaWNlbnNlZCB1bmRlciBNSVQKICAgICAgICAgICAgICAgICAqIENvcHlyaWdodCAyMDE5IEhhc2FuIEF5ZG/En2R1IDxoc25heWRkQGdtYWlsLmNvbT4KICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9sZXJhbmNlOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogODAwLAogICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6ICJlYXNlT3V0UXVhcnQiLAogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCkge30KICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgLz0gciwgLW4gKiAoLS1lICogZSAqIGUgKiBlIC0gMSkgKyB0CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5bdF0gPSBlW3RdCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbltlXSA9IHRbZV0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGUuc2Nyb2xsVG9wIDogZS5wYWdlWU9mZnNldAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG4oZSwgciksIHRoaXMuZWFzZUZ1bmN0aW9ucyA9IG4oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZU91dFF1YXJ0OiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBvLnByb3RvdHlwZS5yZWdpc3RlclRyaWdnZXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZS5nZXRBdHRyaWJ1dGUoImhyZWYiKSB8fCBlLmdldEF0dHJpYnV0ZSgiZGF0YS10YXJnZXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbyAmJiAiIyIgIT09IG8gPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvLnN1YnN0cmluZygxKSkgOiBkb2N1bWVudC5ib2R5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKHRoaXMub3B0aW9ucywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmdldEF0dHJpYnV0ZSgiZGF0YS1tdC0iLmNvbmNhdCh0LnJlcGxhY2UoLyhbQS1aXSkvZywgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIi0iICsgZS50b0xvd2VyQ2FzZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgJiYgKG5bdF0gPSBpc05hTihyKSA/IHIgOiBwYXJzZUludChyLCAxMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdGhpcy5vcHRpb25zKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiB0ICYmIChhLmNhbGxiYWNrID0gdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHIubW92ZShpLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgcywgITEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsIHMsICExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIG8ucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gZSB8fCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbih0aGlzLm9wdGlvbnMsIG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEgPSAibnVtYmVyIiA9PSB0eXBlb2YgZSA/IGUgOiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcihvLmNvbnRhaW5lciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIC09IG8udG9sZXJhbmNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBmdW5jdGlvbiBjKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHIodC5vcHRpb25zLmNvbnRhaW5lcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSB8fCAodSA9IG4gLSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IG4gLSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICYmIChhID4gMCAmJiBpID4gbCB8fCBhIDwgMCAmJiBpIDwgbCkpIHJldHVybiBvLmNhbGxiYWNrKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdC5lYXNlRnVuY3Rpb25zW28uZWFzaW5nXShmLCBzLCBhLCBvLmR1cmF0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmNvbnRhaW5lci5zY3JvbGwoMCwgZCksIGYgPCBvLmR1cmF0aW9uID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShjKSA6IChvLmNvbnRhaW5lci5zY3JvbGwoMCwgYSArIHMpLCBvLmNhbGxiYWNrKGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIG8ucHJvdG90eXBlLmFkZEVhc2VGdW5jdGlvbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lYXNlRnVuY3Rpb25zW2VdID0gdAogICAgICAgICAgICAgICAgICAgIH0sIG8KICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjcwMzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgdmFyIHIgPSBuKDQxNCk7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbygpIHt9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaSgpIHt9CiAgICAgICAgICAgICAgICBpLnJlc2V0V2FybmluZ0NhY2hlID0gbywgZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0LCBuLCBvLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhICE9PSByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG5ldyBFcnJvcigiQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcy5uYW1lID0gIkludmFyaWFudCBWaW9sYXRpb24iLCBzCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUuaXNSZXF1aXJlZCA9IGU7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBiaWdpbnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2w6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmM6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlcjogZSwKICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgYW55OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBhcnJheU9mOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50VHlwZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VPZjogdCwKICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0T2Y6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG9uZU9mOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBvbmVPZlR5cGU6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tQcm9wVHlwZXM6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0V2FybmluZ0NhY2hlOiBvCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5Qcm9wVHlwZXMgPSBuLCBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDU2OTc6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IG4oMjcwMykoKQogICAgICAgICAgICB9LAogICAgICAgICAgICA0MTQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNjA5NTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgLyohCiAgICAgICAgICAgICAgICAgKiBRdWlsbCBFZGl0b3IgdjEuMy43CiAgICAgICAgICAgICAgICAgKiBodHRwczovL3F1aWxsanMuY29tLwogICAgICAgICAgICAgICAgICogQ29weXJpZ2h0IChjKSAyMDE0LCBKYXNvbiBDaGVuCiAgICAgICAgICAgICAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIHNhbGVzZm9yY2UuY29tCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHNlbGYgJiYgc2VsZiwgdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0ge307CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0W3JdKSByZXR1cm4gdFtyXS5leHBvcnRzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0W3JdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czoge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cywgbywgby5leHBvcnRzLCBuKSwgby5sID0gITAsIG8uZXhwb3J0cwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLm0gPSBlLCBuLmMgPSB0LCBuLmQgPSBmdW5jdGlvbihlLCB0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLm8oZSwgdCkgfHwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5uID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlICYmIGUuX19lc01vZHVsZSA/IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmQodCwgImEiLCB0KSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9LCBuLm8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4ucCA9ICIiLCBuKG4ucyA9IDEwOSkKICAgICAgICAgICAgICAgICAgICB9KFtmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4oMTcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4oMTgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4oMTkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oNDUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4oNDYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4oNDcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4oNDgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG4oNDkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG4oMTIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG4oMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG4oMzMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4oMzEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjb3BlOiBtLlNjb3BlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZTogbS5jcmVhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZDogbS5maW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBtLnF1ZXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyOiBtLnJlZ2lzdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lcjogclsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdDogb1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlYWY6IGlbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWJlZDogbFsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjcm9sbDogYVsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrOiB1WyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lOiBzWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dDogY1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlOiBmWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiBkWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0eWxlOiBwWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlOiBoWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSB5CiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCAociA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcm90b19fOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3Byb3RvX18gPSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHQpIHQuaGFzT3duUHJvcGVydHkobikgJiYgKGVbbl0gPSB0W25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPSAiW1BhcmNobWVudF0gIiArIHQsIChuID0gZS5jYWxsKHRoaXMsIHQpIHx8IHRoaXMpLm1lc3NhZ2UgPSB0LCBuLm5hbWUgPSBuLmNvbnN0cnVjdG9yLm5hbWUsIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICAgICB0LlBhcmNobWVudEVycm9yID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEsIHMgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB7fTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSB0ICYmICh0ID0gYS5BTlkpLCAic3RyaW5nIiA9PSB0eXBlb2YgZSkgbiA9IGNbZV0gfHwgc1tlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBUZXh0IHx8IGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSBuID0gYy50ZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIm51bWJlciIgPT0gdHlwZW9mIGUpIGUgJiBhLkxFVkVMICYgYS5CTE9DSyA/IG4gPSBjLmJsb2NrIDogZSAmIGEuTEVWRUwgJiBhLklOTElORSAmJiAobiA9IGMuaW5saW5lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gKGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKS5zcGxpdCgvXHMrLyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyBpbiByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IHVbcltvXV0pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuIHx8IGxbZS50YWdOYW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gbiA/IG51bGwgOiB0ICYgYS5MRVZFTCAmIG4uc2NvcGUgJiYgdCAmIGEuVFlQRSAmIG4uc2NvcGUgPyBuIDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHQuREFUQV9LRVkgPSAiX19ibG90IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2UuVFlQRSA9IDNdID0gIlRZUEUiLCBlW2UuTEVWRUwgPSAxMl0gPSAiTEVWRUwiLCBlW2UuQVRUUklCVVRFID0gMTNdID0gIkFUVFJJQlVURSIsIGVbZS5CTE9UID0gMTRdID0gIkJMT1QiLCBlW2UuSU5MSU5FID0gN10gPSAiSU5MSU5FIiwgZVtlLkJMT0NLID0gMTFdID0gIkJMT0NLIiwgZVtlLkJMT0NLX0JMT1QgPSAxMF0gPSAiQkxPQ0tfQkxPVCIsIGVbZS5JTkxJTkVfQkxPVCA9IDZdID0gIklOTElORV9CTE9UIiwgZVtlLkJMT0NLX0FUVFJJQlVURSA9IDldID0gIkJMT0NLX0FUVFJJQlVURSIsIGVbZS5JTkxJTkVfQVRUUklCVVRFID0gNV0gPSAiSU5MSU5FX0FUVFJJQlVURSIsIGVbZS5BTlkgPSAxNV0gPSAiQU5ZIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShhID0gdC5TY29wZSB8fCAodC5TY29wZSA9IHt9KSksIHQuY3JlYXRlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBuKSB0aHJvdyBuZXcgaSgiVW5hYmxlIHRvIGNyZWF0ZSAiICsgZSArICIgYmxvdCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUgaW5zdGFuY2VvZiBOb2RlIHx8IGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFID8gZSA6IHIuY3JlYXRlKHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgcihvLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5maW5kID0gZnVuY3Rpb24gZChlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gbiAmJiAobiA9ICExKSwgbnVsbCA9PSBlID8gbnVsbCA6IG51bGwgIT0gZVt0LkRBVEFfS0VZXSA/IGVbdC5EQVRBX0tFWV0uYmxvdCA6IG4gPyBkKGUucGFyZW50Tm9kZSwgbikgOiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnF1ZXJ5ID0gZiwgdC5yZWdpc3RlciA9IGZ1bmN0aW9uIHAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IFtdLCB0ID0gMDsgdCA8IGFyZ3VtZW50cy5sZW5ndGg7IHQrKykgZVt0XSA9IGFyZ3VtZW50c1t0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5sZW5ndGggPiAxKSByZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2Ygbi5ibG90TmFtZSAmJiAic3RyaW5nIiAhPSB0eXBlb2Ygbi5hdHRyTmFtZSkgdGhyb3cgbmV3IGkoIkludmFsaWQgZGVmaW5pdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiYWJzdHJhY3QiID09PSBuLmJsb3ROYW1lKSB0aHJvdyBuZXcgaSgiQ2Fubm90IHJlZ2lzdGVyIGFic3RyYWN0IGNsYXNzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNbbi5ibG90TmFtZSB8fCBuLmF0dHJOYW1lXSA9IG4sICJzdHJpbmciID09IHR5cGVvZiBuLmtleU5hbWUpIHNbbi5rZXlOYW1lXSA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobnVsbCAhPSBuLmNsYXNzTmFtZSAmJiAodVtuLmNsYXNzTmFtZV0gPSBuKSwgbnVsbCAhPSBuLnRhZ05hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShuLnRhZ05hbWUpID8gbi50YWdOYW1lID0gbi50YWdOYW1lLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudG9VcHBlckNhc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiBuLnRhZ05hbWUgPSBuLnRhZ05hbWUudG9VcHBlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBBcnJheS5pc0FycmF5KG4udGFnTmFtZSkgPyBuLnRhZ05hbWUgOiBbbi50YWdOYW1lXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGxbZV0gJiYgbnVsbCAhPSBuLmNsYXNzTmFtZSB8fCAobFtlXSA9IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuKDUxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuKDExKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuKDMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMjApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoZSkgPyB0aGlzLm9wcyA9IGUgOiBudWxsICE9IGUgJiYgQXJyYXkuaXNBcnJheShlLm9wcykgPyB0aGlzLm9wcyA9IGUub3BzIDogdGhpcy5vcHMgPSBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgdS5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSBlLmxlbmd0aCA/IHRoaXMgOiAobi5pbnNlcnQgPSBlLCBudWxsICE9IHQgJiYgIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgT2JqZWN0LmtleXModCkubGVuZ3RoID4gMCAmJiAobi5hdHRyaWJ1dGVzID0gdCksIHRoaXMucHVzaChuKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGVbImRlbGV0ZSJdID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPD0gMCA/IHRoaXMgOiB0aGlzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGUiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS5yZXRhaW4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA8PSAwKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQgJiYgIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgT2JqZWN0LmtleXModCkubGVuZ3RoID4gMCAmJiAobi5hdHRyaWJ1dGVzID0gdCksIHRoaXMucHVzaChuKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLm9wcy5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMub3BzW3QgLSAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlID0gaSghMCwge30sIGUpLCAib2JqZWN0IiA9PSB0eXBlb2YgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgibnVtYmVyIiA9PSB0eXBlb2YgZVsiZGVsZXRlIl0gJiYgIm51bWJlciIgPT0gdHlwZW9mIG5bImRlbGV0ZSJdKSByZXR1cm4gdGhpcy5vcHNbdCAtIDFdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlIjogblsiZGVsZXRlIl0gKyBlWyJkZWxldGUiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJudW1iZXIiID09IHR5cGVvZiBuWyJkZWxldGUiXSAmJiBudWxsICE9IGUuaW5zZXJ0ICYmICh0IC09IDEsICJvYmplY3QiICE9IHR5cGVvZihuID0gdGhpcy5vcHNbdCAtIDFdKSkpIHJldHVybiB0aGlzLm9wcy51bnNoaWZ0KGUpLCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKGUuYXR0cmlidXRlcywgbi5hdHRyaWJ1dGVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUuaW5zZXJ0ICYmICJzdHJpbmciID09IHR5cGVvZiBuLmluc2VydCkgcmV0dXJuIHRoaXMub3BzW3QgLSAxXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydDogbi5pbnNlcnQgKyBlLmluc2VydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAib2JqZWN0IiA9PSB0eXBlb2YgZS5hdHRyaWJ1dGVzICYmICh0aGlzLm9wc1t0IC0gMV0uYXR0cmlidXRlcyA9IGUuYXR0cmlidXRlcyksIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgibnVtYmVyIiA9PSB0eXBlb2YgZS5yZXRhaW4gJiYgIm51bWJlciIgPT0gdHlwZW9mIG4ucmV0YWluKSByZXR1cm4gdGhpcy5vcHNbdCAtIDFdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWluOiBuLnJldGFpbiArIGUucmV0YWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICJvYmplY3QiID09IHR5cGVvZiBlLmF0dHJpYnV0ZXMgJiYgKHRoaXMub3BzW3QgLSAxXS5hdHRyaWJ1dGVzID0gZS5hdHRyaWJ1dGVzKSwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID09PSB0aGlzLm9wcy5sZW5ndGggPyB0aGlzLm9wcy5wdXNoKGUpIDogdGhpcy5vcHMuc3BsaWNlKHQsIDAsIGUpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLmNob3AgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcHNbdGhpcy5vcHMubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLnJldGFpbiAmJiAhZS5hdHRyaWJ1dGVzICYmIHRoaXMub3BzLnBvcCgpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLmZpbHRlciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wcy5maWx0ZXIoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BzLmZvckVhY2goZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BzLm1hcChlKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS5wYXJ0aXRpb24gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvckVhY2goKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZShyKSA/IHQgOiBuKS5wdXNoKHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIFt0LCBuXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS5yZWR1Y2UgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHMucmVkdWNlKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLmNoYW5nZUxlbmd0aCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuaW5zZXJ0ID8gZSArIGEubGVuZ3RoKHQpIDogdFsiZGVsZXRlIl0gPyBlIC0gdFsiZGVsZXRlIl0gOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSArIGEubGVuZ3RoKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZSB8fCAwLCAibnVtYmVyIiAhPSB0eXBlb2YgdCAmJiAodCA9IEluZmluaXR5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBbXSwgciA9IGEuaXRlcmF0b3IodGhpcy5vcHMpLCBvID0gMDsgbyA8IHQgJiYgci5oYXNOZXh0KCk7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA8IGUgPyBpID0gci5uZXh0KGUgLSBvKSA6IChpID0gci5uZXh0KHQgLSBvKSwgbi5wdXNoKGkpKSwgbyArPSBhLmxlbmd0aChpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB1KG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLmNvbXBvc2UgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGEuaXRlcmF0b3IodGhpcy5vcHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhLml0ZXJhdG9yKGUub3BzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4ucGVlaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gaSAmJiAibnVtYmVyIiA9PSB0eXBlb2YgaS5yZXRhaW4gJiYgbnVsbCA9PSBpLmF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gaS5yZXRhaW47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnNlcnQiID09PSB0LnBlZWtUeXBlKCkgJiYgdC5wZWVrTGVuZ3RoKCkgPD0gczspIHMgLT0gdC5wZWVrTGVuZ3RoKCksIHIucHVzaCh0Lm5leHQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5yZXRhaW4gLSBzID4gMCAmJiBuLm5leHQoaS5yZXRhaW4gLSBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IG5ldyB1KHIpOyB0Lmhhc05leHQoKSB8fCBuLmhhc05leHQoKTspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJpbnNlcnQiID09PSBuLnBlZWtUeXBlKCkpIGwucHVzaChuLm5leHQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoImRlbGV0ZSIgPT09IHQucGVla1R5cGUoKSkgbC5wdXNoKHQubmV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gTWF0aC5taW4odC5wZWVrTGVuZ3RoKCksIG4ucGVla0xlbmd0aCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHQubmV4dChjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG4ubmV4dChjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm51bWJlciIgPT0gdHlwZW9mIGQucmV0YWluKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJudW1iZXIiID09IHR5cGVvZiBmLnJldGFpbiA/IHAucmV0YWluID0gYyA6IHAuaW5zZXJ0ID0gZi5pbnNlcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gYS5hdHRyaWJ1dGVzLmNvbXBvc2UoZi5hdHRyaWJ1dGVzLCBkLmF0dHJpYnV0ZXMsICJudW1iZXIiID09IHR5cGVvZiBmLnJldGFpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoICYmIChwLmF0dHJpYnV0ZXMgPSBoKSwgbC5wdXNoKHApLCAhbi5oYXNOZXh0KCkgJiYgbyhsLm9wc1tsLm9wcy5sZW5ndGggLSAxXSwgcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gbmV3IHUodC5yZXN0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwuY29uY2F0KG0pLmNob3AoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICJudW1iZXIiID09IHR5cGVvZiBkWyJkZWxldGUiXSAmJiAibnVtYmVyIiA9PSB0eXBlb2YgZi5yZXRhaW4gJiYgbC5wdXNoKGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbC5jaG9wKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdS5wcm90b3R5cGUuY29uY2F0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuZXcgdSh0aGlzLm9wcy5zbGljZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm9wcy5sZW5ndGggPiAwICYmICh0LnB1c2goZS5vcHNbMF0pLCB0Lm9wcyA9IHQub3BzLmNvbmNhdChlLm9wcy5zbGljZSgxKSkpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLmRpZmYgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHMgPT09IGUub3BzKSByZXR1cm4gbmV3IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFt0aGlzLCBlXS5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubWFwKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBuLmluc2VydCkgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiBuLmluc2VydCA/IG4uaW5zZXJ0IDogczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiZGlmZigpIGNhbGxlZCAiICsgKHQgPT09IGUgPyAib24iIDogIndpdGgiKSArICIgbm9uLWRvY3VtZW50IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmpvaW4oIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcihuWzBdLCBuWzFdLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gYS5pdGVyYXRvcih0aGlzLm9wcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGEuaXRlcmF0b3IoZS5vcHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBlWzFdLmxlbmd0aDsgdCA+IDA7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHIuSU5TRVJUOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBNYXRoLm1pbihmLnBlZWtMZW5ndGgoKSwgdCksIGkucHVzaChmLm5leHQobikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSByLkRFTEVURToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5taW4odCwgYy5wZWVrTGVuZ3RoKCkpLCBjLm5leHQobiksIGlbImRlbGV0ZSJdKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSByLkVRVUFMOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBNYXRoLm1pbihjLnBlZWtMZW5ndGgoKSwgZi5wZWVrTGVuZ3RoKCksIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gYy5uZXh0KG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZi5uZXh0KG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ocy5pbnNlcnQsIHUuaW5zZXJ0KSA/IGkucmV0YWluKG4sIGEuYXR0cmlidXRlcy5kaWZmKHMuYXR0cmlidXRlcywgdS5hdHRyaWJ1dGVzKSkgOiBpLnB1c2godSlbImRlbGV0ZSJdKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCAtPSBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBpLmNob3AoKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS5lYWNoTGluZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0IHx8ICJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gYS5pdGVyYXRvcih0aGlzLm9wcyksIHIgPSBuZXcgdSwgbyA9IDA7IG4uaGFzTmV4dCgpOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiaW5zZXJ0IiAhPT0gbi5wZWVrVHlwZSgpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLnBlZWsoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEubGVuZ3RoKGkpIC0gbi5wZWVrTGVuZ3RoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAic3RyaW5nIiA9PSB0eXBlb2YgaS5pbnNlcnQgPyBpLmluc2VydC5pbmRleE9mKHQsIHMpIC0gcyA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsIDwgMCkgci5wdXNoKG4ubmV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsID4gMCkgci5wdXNoKG4ubmV4dChsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMSA9PT0gZShyLCBuLm5leHQoMSkuYXR0cmlidXRlcyB8fCB7fSwgbykpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyArPSAxLCByID0gbmV3IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmxlbmd0aCgpID4gMCAmJiBlKHIsIHt9LCBvKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB1LnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9ICEhdCwgIm51bWJlciIgPT0gdHlwZW9mIGUpIHJldHVybiB0aGlzLnRyYW5zZm9ybVBvc2l0aW9uKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IGEuaXRlcmF0b3IodGhpcy5vcHMpLCByID0gYS5pdGVyYXRvcihlLm9wcyksIG8gPSBuZXcgdTsgbi5oYXNOZXh0KCkgfHwgci5oYXNOZXh0KCk7KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiaW5zZXJ0IiAhPT0gbi5wZWVrVHlwZSgpIHx8ICF0ICYmICJpbnNlcnQiID09PSByLnBlZWtUeXBlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiaW5zZXJ0IiA9PT0gci5wZWVrVHlwZSgpKSBvLnB1c2goci5uZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gTWF0aC5taW4obi5wZWVrTGVuZ3RoKCksIHIucGVla0xlbmd0aCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5uZXh0KGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByLm5leHQoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc1siZGVsZXRlIl0pIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbFsiZGVsZXRlIl0gPyBvLnB1c2gobCkgOiBvLnJldGFpbihpLCBhLmF0dHJpYnV0ZXMudHJhbnNmb3JtKHMuYXR0cmlidXRlcywgbC5hdHRyaWJ1dGVzLCB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBvLnJldGFpbihhLmxlbmd0aChuLm5leHQoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uY2hvcCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUucHJvdG90eXBlLnRyYW5zZm9ybVBvc2l0aW9uID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICEhdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBhLml0ZXJhdG9yKHRoaXMub3BzKSwgciA9IDA7IG4uaGFzTmV4dCgpICYmIHIgPD0gZTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4ucGVla0xlbmd0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5wZWVrVHlwZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ubmV4dCgpLCAiZGVsZXRlIiAhPT0gaSA/ICgiaW5zZXJ0IiA9PT0gaSAmJiAociA8IGUgfHwgIXQpICYmIChlICs9IG8pLCByICs9IG8pIDogZSAtPSBNYXRoLm1pbihvLCBlIC0gcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gT2JqZWN0LmRlZmluZVByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBBcnJheS5pc0FycmF5ID8gQXJyYXkuaXNBcnJheShlKSA6ICJbb2JqZWN0IEFycmF5XSIgPT09IHIuY2FsbChlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICJbb2JqZWN0IE9iamVjdF0iICE9PSByLmNhbGwoZSkpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbyA9IG4uY2FsbChlLCAiY29uc3RydWN0b3IiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuY29uc3RydWN0b3IgJiYgZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgJiYgbi5jYWxsKGUuY29uc3RydWN0b3IucHJvdG90eXBlLCAiaXNQcm90b3R5cGVPZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmNvbnN0cnVjdG9yICYmICFvICYmICFpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgfHwgbi5jYWxsKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvICYmICJfX3Byb3RvX18iID09PSB0Lm5hbWUgPyBvKGUsIHQubmFtZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHQubmV3VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogZVt0Lm5hbWVdID0gdC5uZXdWYWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJfX3Byb3RvX18iID09PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbi5jYWxsKGUsIHQpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpKSByZXR1cm4gaShlLCB0KS52YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVt0XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24gYygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuLCByLCBvLCBpLCBmID0gYXJndW1lbnRzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhcmd1bWVudHMubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoImJvb2xlYW4iID09IHR5cGVvZiBmICYmIChoID0gZiwgZiA9IGFyZ3VtZW50c1sxXSB8fCB7fSwgZCA9IDIpLCAobnVsbCA9PSBmIHx8ICJvYmplY3QiICE9IHR5cGVvZiBmICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIGYpICYmIChmID0ge30pOyBkIDwgcDsgKytkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IChlID0gYXJndW1lbnRzW2RdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIGUpIG4gPSBsKGYsIHQpLCBmICE9PSAociA9IGwoZSwgdCkpICYmIChoICYmIHIgJiYgKHMocikgfHwgKG8gPSBhKHIpKSkgPyAobyA/IChvID0gITEsIGkgPSBuICYmIGEobikgPyBuIDogW10pIDogaSA9IG4gJiYgcyhuKSA/IG4gOiB7fSwgdShmLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWU6IGMoaCwgaSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogdm9pZCAwICE9PSByICYmIHUoZiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0WyJkZWZhdWx0Il0gPSB0LkJsb2NrRW1iZWQgPSB0LmJ1YmJsZUZvcm1hdHMgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uIHYoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHYobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGYobigzKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZihuKDIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBmKG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGYobigxNikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGYobig2KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gZihuKDcpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHAoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZCh0aGlzLCB0KSwgcCh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgodCwgZSksIHIodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJhdHRhY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImF0dGFjaCIsIHRoaXMpLmNhbGwodGhpcyksIHRoaXMuYXR0cmlidXRlcyA9IG5ldyBzWyJkZWZhdWx0Il0uQXR0cmlidXRvci5TdG9yZSh0aGlzLmRvbU5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImRlbHRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobmV3IGFbImRlZmF1bHQiXSkuaW5zZXJ0KHRoaXMudmFsdWUoKSwgKDAsIGlbImRlZmF1bHQiXSkodGhpcy5mb3JtYXRzKCksIHRoaXMuYXR0cmlidXRlcy52YWx1ZXMoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBzWyJkZWZhdWx0Il0ucXVlcnkoZSwgc1siZGVmYXVsdCJdLlNjb3BlLkJMT0NLX0FUVFJJQlVURSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gbiAmJiB0aGlzLmF0dHJpYnV0ZXMuYXR0cmlidXRlKG4sIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdEF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdChuLCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbnNlcnRBdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBuICYmIG4uZW5kc1dpdGgoIlxuIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gc1siZGVmYXVsdCJdLmNyZWF0ZSh5LmJsb3ROYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZShpLCAwID09PSBlID8gdGhpcyA6IHRoaXMubmV4dCksIGkuaW5zZXJ0QXQoMCwgbi5zbGljZSgwLCAtMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5zZXJ0QXQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4sIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oc1siZGVmYXVsdCJdLkVtYmVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgbS5zY29wZSA9IHNbImRlZmF1bHQiXS5TY29wZS5CTE9DS19CTE9UOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQodGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBwKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNhY2hlID0ge30sIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoKHQsIGUpLCByKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGVsdGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdGhpcy5jYWNoZS5kZWx0YSAmJiAodGhpcy5jYWNoZS5kZWx0YSA9IHRoaXMuZGVzY2VuZGFudHMoc1siZGVmYXVsdCJdLkxlYWYpLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IHQubGVuZ3RoKCkgPyBlIDogZS5pbnNlcnQodC52YWx1ZSgpLCBnKHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbmV3IGFbImRlZmF1bHQiXSkuaW5zZXJ0KCJcbiIsIGcodGhpcykpKSwgdGhpcy5jYWNoZS5kZWx0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkZWxldGVBdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImRlbGV0ZUF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKSwgdGhpcy5jYWNoZSA9IHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdEF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbiwgciwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuIDw9IDAgfHwgKHNbImRlZmF1bHQiXS5xdWVyeShyLCBzWyJkZWZhdWx0Il0uU2NvcGUuQkxPQ0spID8gZSArIG4gPT09IHRoaXMubGVuZ3RoKCkgJiYgdGhpcy5mb3JtYXQociwgaSkgOiBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiZm9ybWF0QXQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIE1hdGgubWluKG4sIHRoaXMubGVuZ3RoKCkgLSBlIC0gMSksIHIsIGkpLCB0aGlzLmNhY2hlID0ge30pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImluc2VydEF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSByKSByZXR1cm4gbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImluc2VydEF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT09IG4ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4uc3BsaXQoIlxuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEubGVuZ3RoID4gMCAmJiAoZSA8IHRoaXMubGVuZ3RoKCkgLSAxIHx8IG51bGwgPT0gdGhpcy5jaGlsZHJlbi50YWlsID8gbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImluc2VydEF0IiwgdGhpcykuY2FsbCh0aGlzLCBNYXRoLm1pbihlLCB0aGlzLmxlbmd0aCgpIC0gMSksIGEpIDogdGhpcy5jaGlsZHJlbi50YWlsLmluc2VydEF0KHRoaXMuY2hpbGRyZW4udGFpbC5sZW5ndGgoKSwgYSksIHRoaXMuY2FjaGUgPSB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocyA9IHMuc3BsaXQoZSwgITApKS5pbnNlcnRBdCgwLCB0KSwgdC5sZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlICsgYS5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaW5zZXJ0QmVmb3JlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuY2hpbGRyZW4uaGVhZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImluc2VydEJlZm9yZSIsIHRoaXMpLmNhbGwodGhpcywgZSwgbiksIHIgaW5zdGFuY2VvZiB1WyJkZWZhdWx0Il0gJiYgci5yZW1vdmUoKSwgdGhpcy5jYWNoZSA9IHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxlbmd0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0aGlzLmNhY2hlLmxlbmd0aCAmJiAodGhpcy5jYWNoZS5sZW5ndGggPSBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAibGVuZ3RoIiwgdGhpcykuY2FsbCh0aGlzKSArIDEpLCB0aGlzLmNhY2hlLmxlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJtb3ZlQ2hpbGRyZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJtb3ZlQ2hpbGRyZW4iLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pLCB0aGlzLmNhY2hlID0ge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAib3B0aW1pemUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJvcHRpbWl6ZSIsIHRoaXMpLmNhbGwodGhpcywgZSksIHRoaXMuY2FjaGUgPSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJwYXRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgInBhdGgiLCB0aGlzKS5jYWxsKHRoaXMsIGUsICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW1vdmVDaGlsZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgInJlbW92ZUNoaWxkIiwgdGhpcykuY2FsbCh0aGlzLCBlKSwgdGhpcy5jYWNoZSA9IHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNwbGl0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkICYmIGFyZ3VtZW50c1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gJiYgKDAgPT09IGUgfHwgZSA+PSB0aGlzLmxlbmd0aCgpIC0gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5jbG9uZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IGUgPyAodGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHIsIHRoaXMpLCB0aGlzKSA6ICh0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUociwgdGhpcy5uZXh0KSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJzcGxpdCIsIHRoaXMpLmNhbGwodGhpcywgZSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlID0ge30sIGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShzWyJkZWZhdWx0Il0uQmxvY2spOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gdCA6ICgiZnVuY3Rpb24iID09IHR5cGVvZiBlLmZvcm1hdHMgJiYgKHQgPSAoMCwgaVsiZGVmYXVsdCJdKSh0LCBlLmZvcm1hdHMoKSkpLCBudWxsID09IGUucGFyZW50IHx8ICJzY3JvbGwiID09IGUucGFyZW50LmJsb3ROYW1lIHx8IGUucGFyZW50LnN0YXRpY3Muc2NvcGUgIT09IGUuc3RhdGljcy5zY29wZSA/IHQgOiBnKGUucGFyZW50LCB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB5LmJsb3ROYW1lID0gImJsb2NrIiwgeS50YWdOYW1lID0gIlAiLCB5LmRlZmF1bHRDaGlsZCA9ICJicmVhayIsIHkuYWxsb3dlZENoaWxkcmVuID0gW2xbImRlZmF1bHQiXSwgc1siZGVmYXVsdCJdLkVtYmVkLCBjWyJkZWZhdWx0Il1dLCB0LmJ1YmJsZUZvcm1hdHMgPSBnLCB0LkJsb2NrRW1iZWQgPSBtLCB0WyJkZWZhdWx0Il0gPSB5CiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gdC5vdmVybG9hZCA9IHQuZXhwYW5kQ29uZmlnID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAic3ltYm9sIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgZS5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIGUgIT09IFN5bWJvbC5wcm90b3R5cGUgPyAic3ltYm9sIiA6IHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSwgcyA9IGVbU3ltYm9sLml0ZXJhdG9yXSgpOyAhKHIgPSAoYSA9IHMubmV4dCgpKS5kb25lKSAmJiAobi5wdXNoKGEudmFsdWUpLCAhdCB8fCBuLmxlbmd0aCAhPT0gdCk7IHIgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgaSA9IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXIgJiYgc1sicmV0dXJuIl0gJiYgc1sicmV0dXJuIl0oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobykgdGhyb3cgaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICBuKDUwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB5KG4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHkobigxNCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHkobig4KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0geShuKDkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB5KG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG4oMTUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHkoZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0geShuKDMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB5KG4oMTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB5KG4oMzQpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHkoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBlW3RdID0gbiwgZQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB2KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9ICgwLCBoWyJkZWZhdWx0Il0pKCJxdWlsbCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYodGhpcywgZSksIHRoaXMub3B0aW9ucyA9IE8odCwgciksIHRoaXMuY29udGFpbmVyID0gdGhpcy5vcHRpb25zLmNvbnRhaW5lciwgbnVsbCA9PSB0aGlzLmNvbnRhaW5lcikgcmV0dXJuIGIuZXJyb3IoIkludmFsaWQgUXVpbGwgY29udGFpbmVyIiwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5kZWJ1ZyAmJiBlLmRlYnVnKHRoaXMub3B0aW9ucy5kZWJ1Zyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5jb250YWluZXIuaW5uZXJIVE1MLnRyaW0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgicWwtY29udGFpbmVyIiksIHRoaXMuY29udGFpbmVyLmlubmVySFRNTCA9ICIiLCB0aGlzLmNvbnRhaW5lci5fX3F1aWxsID0gdGhpcywgdGhpcy5yb290ID0gdGhpcy5hZGRDb250YWluZXIoInFsLWVkaXRvciIpLCB0aGlzLnJvb3QuY2xhc3NMaXN0LmFkZCgicWwtYmxhbmsiKSwgdGhpcy5yb290LnNldEF0dHJpYnV0ZSgiZGF0YS1ncmFtbSIsICExKSwgdGhpcy5zY3JvbGxpbmdDb250YWluZXIgPSB0aGlzLm9wdGlvbnMuc2Nyb2xsaW5nQ29udGFpbmVyIHx8IHRoaXMucm9vdCwgdGhpcy5lbWl0dGVyID0gbmV3IHVbImRlZmF1bHQiXSwgdGhpcy5zY3JvbGwgPSBjWyJkZWZhdWx0Il0uY3JlYXRlKHRoaXMucm9vdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlcjogdGhpcy5lbWl0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0OiB0aGlzLm9wdGlvbnMuZm9ybWF0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5lZGl0b3IgPSBuZXcgc1siZGVmYXVsdCJdKHRoaXMuc2Nyb2xsKSwgdGhpcy5zZWxlY3Rpb24gPSBuZXcgZFsiZGVmYXVsdCJdKHRoaXMuc2Nyb2xsLCB0aGlzLmVtaXR0ZXIpLCB0aGlzLnRoZW1lID0gbmV3IHRoaXMub3B0aW9ucy50aGVtZSh0aGlzLCB0aGlzLm9wdGlvbnMpLCB0aGlzLmtleWJvYXJkID0gdGhpcy50aGVtZS5hZGRNb2R1bGUoImtleWJvYXJkIiksIHRoaXMuY2xpcGJvYXJkID0gdGhpcy50aGVtZS5hZGRNb2R1bGUoImNsaXBib2FyZCIpLCB0aGlzLmhpc3RvcnkgPSB0aGlzLnRoZW1lLmFkZE1vZHVsZSgiaGlzdG9yeSIpLCB0aGlzLnRoZW1lLmluaXQoKSwgdGhpcy5lbWl0dGVyLm9uKHVbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPT09IHVbImRlZmF1bHQiXS5ldmVudHMuVEVYVF9DSEFOR0UgJiYgbi5yb290LmNsYXNzTGlzdC50b2dnbGUoInFsLWJsYW5rIiwgbi5lZGl0b3IuaXNCbGFuaygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZW1pdHRlci5vbih1WyJkZWZhdWx0Il0uZXZlbnRzLlNDUk9MTF9VUERBVEUsIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4uc2VsZWN0aW9uLmxhc3RSYW5nZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gciAmJiAwID09PSByLmxlbmd0aCA/IHIuaW5kZXggOiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmNhbGwobiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmVkaXRvci51cGRhdGUobnVsbCwgdCwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5jbGlwYm9hcmQuY29udmVydCgiPGRpdiBjbGFzcz0ncWwtZWRpdG9yJyBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3JtYWw7XCI+IiArIG8gKyAiPHA+PGJyPjwvcD48L2Rpdj4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50cyhpKSwgdGhpcy5oaXN0b3J5LmNsZWFyKCksIHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlciAmJiB0aGlzLnJvb3Quc2V0QXR0cmlidXRlKCJkYXRhLXBsYWNlaG9sZGVyIiwgdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyKSwgdGhpcy5vcHRpb25zLnJlYWRPbmx5ICYmIHRoaXMuZGlzYWJsZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpKGUsIG51bGwsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImRlYnVnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEwID09PSBlICYmIChlID0gImxvZyIpLCBoWyJkZWZhdWx0Il0ubGV2ZWwoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZmluZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5fX3F1aWxsIHx8IGNbImRlZmF1bHQiXS5maW5kKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImltcG9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0aGlzLmltcG9ydHNbZV0gJiYgYi5lcnJvcigiQ2Fubm90IGltcG9ydCAiICsgZSArICIuIEFyZSB5b3Ugc3VyZSBpdCB3YXMgcmVnaXN0ZXJlZD8iKSwgdGhpcy5pbXBvcnRzW2VdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlZ2lzdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLmF0dHJOYW1lIHx8IGUuYmxvdE5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyIgPT0gdHlwZW9mIG8gPyB0aGlzLnJlZ2lzdGVyKCJmb3JtYXRzLyIgKyBvLCBlLCB0KSA6IE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5yZWdpc3RlcihyLCBlW3JdLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIG51bGwgPT0gdGhpcy5pbXBvcnRzW2VdIHx8IHIgfHwgYi53YXJuKCJPdmVyd3JpdGluZyAiICsgZSArICIgd2l0aCIsIHQpLCB0aGlzLmltcG9ydHNbZV0gPSB0LCAoZS5zdGFydHNXaXRoKCJibG90cy8iKSB8fCBlLnN0YXJ0c1dpdGgoImZvcm1hdHMvIikpICYmICJhYnN0cmFjdCIgIT09IHQuYmxvdE5hbWUgPyBjWyJkZWZhdWx0Il0ucmVnaXN0ZXIodCkgOiBlLnN0YXJ0c1dpdGgoIm1vZHVsZXMiKSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB0LnJlZ2lzdGVyICYmIHQucmVnaXN0ZXIoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBpKGUsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZENvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5jbGFzc0xpc3QuYWRkKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKGUsIHQpLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImJsdXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXRSYW5nZShudWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkZWxldGVUZXh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0geChlLCB0LCBuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbyhpLCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gYVswXSwgdCA9IGFbMV0sIG4gPSBhWzNdLCBfLmNhbGwodGhpcywgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLmVkaXRvci5kZWxldGVUZXh0KGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbiwgZSwgLTEgKiB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkaXNhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGUoITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImVuYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gIShhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCkgfHwgYXJndW1lbnRzWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGwuZW5hYmxlKGUpLCB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xlKCJxbC1kaXNhYmxlZCIsICFlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb2N1cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5zY3JvbGxpbmdDb250YWluZXIuc2Nyb2xsVG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZm9jdXMoKSwgdGhpcy5zY3JvbGxpbmdDb250YWluZXIuc2Nyb2xsVG9wID0gZSwgdGhpcy5zY3JvbGxJbnRvVmlldygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogdVsiZGVmYXVsdCJdLnNvdXJjZXMuQVBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF8uY2FsbCh0aGlzLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmdldFNlbGVjdGlvbighMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuZXcgYVsiZGVmYXVsdCJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHIpIHJldHVybiBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjWyJkZWZhdWx0Il0ucXVlcnkoZSwgY1siZGVmYXVsdCJdLlNjb3BlLkJMT0NLKSkgbyA9IG4uZWRpdG9yLmZvcm1hdExpbmUoci5pbmRleCwgci5sZW5ndGgsIGcoe30sIGUsIHQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IHIubGVuZ3RoKSByZXR1cm4gbi5zZWxlY3Rpb24uZm9ybWF0KGUsIHQpLCBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5lZGl0b3IuZm9ybWF0VGV4dChyLmluZGV4LCByLmxlbmd0aCwgZyh7fSwgZSwgdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNldFNlbGVjdGlvbihyLCB1WyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpLCBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0TGluZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0LCBuLCByLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSwgcyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHgoZSwgdCwgbiwgciwgaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8odSwgNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IGxbMF0sIHQgPSBsWzFdLCBhID0gbFsyXSwgaSA9IGxbM10sIF8uY2FsbCh0aGlzLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMuZWRpdG9yLmZvcm1hdExpbmUoZSwgdCwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLCBlLCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRUZXh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4sIHIsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhLCBzID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0geChlLCB0LCBuLCByLCBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbyh1LCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gbFswXSwgdCA9IGxbMV0sIGEgPSBsWzJdLCBpID0gbFszXSwgXy5jYWxsKHRoaXMsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5lZGl0b3IuZm9ybWF0VGV4dChlLCB0LCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGksIGUsIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldEJvdW5kcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICJudW1iZXIiID09IHR5cGVvZiBlID8gdGhpcy5zZWxlY3Rpb24uZ2V0Qm91bmRzKGUsIHQpIDogdGhpcy5zZWxlY3Rpb24uZ2V0Qm91bmRzKGUuaW5kZXgsIGUubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogbi5ib3R0b20gLSByLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG4uaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IG4ubGVmdCAtIHIubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogbi5yaWdodCAtIHIubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IG4udG9wIC0gci50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG4ud2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0Q29udGVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0aGlzLmdldExlbmd0aCgpIC0gZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0geChlLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbyhuLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gclswXSwgdCA9IHJbMV0sIHRoaXMuZWRpdG9yLmdldENvbnRlbnRzKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldEZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB0aGlzLmdldFNlbGVjdGlvbighMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibnVtYmVyIiA9PSB0eXBlb2YgZSA/IHRoaXMuZWRpdG9yLmdldEZvcm1hdChlLCB0KSA6IHRoaXMuZWRpdG9yLmdldEZvcm1hdChlLmluZGV4LCBlLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0SW5kZXgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUub2Zmc2V0KHRoaXMuc2Nyb2xsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJnZXRMZW5ndGgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JvbGwubGVuZ3RoKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0TGVhZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JvbGwubGVhZihlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJnZXRMaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcm9sbC5saW5lKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldExpbmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogTnVtYmVyLk1BWF9WQUxVRTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibnVtYmVyIiAhPSB0eXBlb2YgZSA/IHRoaXMuc2Nyb2xsLmxpbmVzKGUuaW5kZXgsIGUubGVuZ3RoKSA6IHRoaXMuc2Nyb2xsLmxpbmVzKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldE1vZHVsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50aGVtZS5tb2R1bGVzW2VdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldFNlbGVjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgdGhpcy5mb2N1cygpLCB0aGlzLnVwZGF0ZSgpLCB0aGlzLnNlbGVjdGlvbi5nZXRSYW5nZSgpWzBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldFRleHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0aGlzLmdldExlbmd0aCgpIC0gZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0geChlLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbyhuLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gclswXSwgdCA9IHJbMV0sIHRoaXMuZWRpdG9yLmdldFRleHQoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaGFzRm9jdXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24uaGFzRm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbnNlcnRFbWJlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogZS5zb3VyY2VzLkFQSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfLmNhbGwodGhpcywgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLmVkaXRvci5pbnNlcnRFbWJlZCh0LCBuLCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGksIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImluc2VydFRleHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbiwgciwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEsIHMgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB4KGUsIDAsIG4sIHIsIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBvKHUsIDQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSBsWzBdLCBhID0gbFsyXSwgaSA9IGxbM10sIF8uY2FsbCh0aGlzLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMuZWRpdG9yLmluc2VydFRleHQoZSwgdCwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLCBlLCB0Lmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaXNFbmFibGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoInFsLWRpc2FibGVkIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAib2ZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW1pdHRlci5vZmYuYXBwbHkodGhpcy5lbWl0dGVyLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIm9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW1pdHRlci5vbi5hcHBseSh0aGlzLmVtaXR0ZXIsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAib25jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVtaXR0ZXIub25jZS5hcHBseSh0aGlzLmVtaXR0ZXIsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicGFzdGVIVE1MIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkLmRhbmdlcm91c2x5UGFzdGVIVE1MKGUsIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbW92ZUZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHgoZSwgdCwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG8oaSwgNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IGFbMF0sIHQgPSBhWzFdLCBuID0gYVszXSwgXy5jYWxsKHRoaXMsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5lZGl0b3IucmVtb3ZlRm9ybWF0KGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbiwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2Nyb2xsSW50b1ZpZXciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zY3JvbGxJbnRvVmlldyh0aGlzLnNjcm9sbGluZ0NvbnRhaW5lcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2V0Q29udGVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHVbImRlZmF1bHQiXS5zb3VyY2VzLkFQSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfLmNhbGwodGhpcywgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgYVsiZGVmYXVsdCJdKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5nZXRMZW5ndGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuZWRpdG9yLmRlbGV0ZVRleHQoMCwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmVkaXRvci5hcHBseURlbHRhKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gby5vcHNbby5vcHMubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gaSAmJiAic3RyaW5nIiA9PSB0eXBlb2YgaS5pbnNlcnQgJiYgIlxuIiA9PT0gaS5pbnNlcnRbaS5pbnNlcnQubGVuZ3RoIC0gMV0gJiYgKHQuZWRpdG9yLmRlbGV0ZVRleHQodC5nZXRMZW5ndGgoKSAtIDEsIDEpLCBvWyJkZWxldGUiXSgxKSksIHIuY29tcG9zZShvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNldFNlbGVjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB0KSB0aGlzLnNlbGVjdGlvbi5zZXRSYW5nZShudWxsLCBuIHx8IGUuc291cmNlcy5BUEkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB4KHQsIG4sIHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbyhpLCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gYVswXSwgbiA9IGFbMV0sIHIgPSBhWzNdLCB0aGlzLnNlbGVjdGlvbi5zZXRSYW5nZShuZXcgZi5SYW5nZSh0LCBuKSwgciksIHIgIT09IHVbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCAmJiB0aGlzLnNlbGVjdGlvbi5zY3JvbGxJbnRvVmlldyh0aGlzLnNjcm9sbGluZ0NvbnRhaW5lcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2V0VGV4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdVsiZGVmYXVsdCJdLnNvdXJjZXMuQVBJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAobmV3IGFbImRlZmF1bHQiXSkuaW5zZXJ0KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q29udGVudHMobiwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHVbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuc2Nyb2xsLnVwZGF0ZShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbi51cGRhdGUoZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlQ29udGVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHVbImRlZmF1bHQiXS5zb3VyY2VzLkFQSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfLmNhbGwodGhpcywgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gbmV3IGFbImRlZmF1bHQiXShlKSwgdC5lZGl0b3IuYXBwbHlEZWx0YShlLCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4sICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBPKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodCA9ICgwLCBwWyJkZWZhdWx0Il0pKCEwLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWJvYXJkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3Rvcnk6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0KSkudGhlbWUgJiYgdC50aGVtZSAhPT0gdy5ERUZBVUxUUy50aGVtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnRoZW1lID0gd1siaW1wb3J0Il0oInRoZW1lcy8iICsgdC50aGVtZSksIG51bGwgPT0gdC50aGVtZSkgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHRoZW1lICIgKyB0LnRoZW1lICsgIi4gRGlkIHlvdSByZWdpc3RlciBpdD8iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHQudGhlbWUgPSBtWyJkZWZhdWx0Il07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICgwLCBwWyJkZWZhdWx0Il0pKCEwLCB7fSwgdC50aGVtZS5ERUZBVUxUUyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbiwgdF0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW9kdWxlcyA9IGUubW9kdWxlcyB8fCB7fSwgT2JqZWN0LmtleXMoZS5tb2R1bGVzKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEwID09PSBlLm1vZHVsZXNbdF0gJiYgKGUubW9kdWxlc1t0XSA9IHt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3Qua2V5cyhuLm1vZHVsZXMpLmNvbmNhdChPYmplY3Qua2V5cyh0Lm1vZHVsZXMpKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHdbImltcG9ydCJdKCJtb2R1bGVzLyIgKyB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBuID8gYi5lcnJvcigiQ2Fubm90IGxvYWQgIiArIHQgKyAiIG1vZHVsZS4gQXJlIHlvdSBzdXJlIHlvdSByZWdpc3RlcmVkIGl0PyIpIDogZVt0XSA9IG4uREVGQVVMVFMgfHwge30sIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSB0Lm1vZHVsZXMgJiYgdC5tb2R1bGVzLnRvb2xiYXIgJiYgdC5tb2R1bGVzLnRvb2xiYXIuY29uc3RydWN0b3IgIT09IE9iamVjdCAmJiAodC5tb2R1bGVzLnRvb2xiYXIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiB0Lm1vZHVsZXMudG9vbGJhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgPSAoMCwgcFsiZGVmYXVsdCJdKSghMCwge30sIHcuREVGQVVMVFMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLCB0KSwgWyJib3VuZHMiLCAiY29udGFpbmVyIiwgInNjcm9sbGluZ0NvbnRhaW5lciJdLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgdFtlXSAmJiAodFtlXSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodFtlXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHQubW9kdWxlcyA9IE9iamVjdC5rZXlzKHQubW9kdWxlcykucmVkdWNlKChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubW9kdWxlc1tuXSAmJiAoZVtuXSA9IHQubW9kdWxlc1tuXSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gXyhlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnN0cmljdCAmJiAhdGhpcy5pc0VuYWJsZWQoKSAmJiB0ID09PSB1WyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSByZXR1cm4gbmV3IGFbImRlZmF1bHQiXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbnVsbCA9PSBuID8gbnVsbCA6IHRoaXMuZ2V0U2VsZWN0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZWRpdG9yLmRlbHRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBvICYmICghMCA9PT0gbiAmJiAobiA9IG8uaW5kZXgpLCBudWxsID09IHIgPyBvID0gayhvLCBzLCB0KSA6IDAgIT09IHIgJiYgKG8gPSBrKG8sIG4sIHIsIHQpKSwgdGhpcy5zZXRTZWxlY3Rpb24obywgdVsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UKSksIHMubGVuZ3RoKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwsIGMsIGYgPSBbdVsiZGVmYXVsdCJdLmV2ZW50cy5URVhUX0NIQU5HRSwgcywgaSwgdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSB0aGlzLmVtaXR0ZXIpLmVtaXQuYXBwbHkobCwgW3VbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRV0uY29uY2F0KGYpKSwgdCAhPT0gdVsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UICYmIChjID0gdGhpcy5lbWl0dGVyKS5lbWl0LmFwcGx5KGMsIGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB4KGUsIHQsIG4sIG8sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm51bWJlciIgPT0gdHlwZW9mIGUuaW5kZXggJiYgIm51bWJlciIgPT0gdHlwZW9mIGUubGVuZ3RoID8gIm51bWJlciIgIT0gdHlwZW9mIHQgPyAoaSA9IG8sIG8gPSBuLCBuID0gdCwgdCA9IGUubGVuZ3RoLCBlID0gZS5pbmRleCkgOiAodCA9IGUubGVuZ3RoLCBlID0gZS5pbmRleCkgOiAibnVtYmVyIiAhPSB0eXBlb2YgdCAmJiAoaSA9IG8sIG8gPSBuLCBuID0gdCwgdCA9IDApLCAib2JqZWN0IiA9PT0gKHZvaWQgMCA9PT0gbiA/ICJ1bmRlZmluZWQiIDogcihuKSkgPyAoYSA9IG4sIGkgPSBvKSA6ICJzdHJpbmciID09IHR5cGVvZiBuICYmIChudWxsICE9IG8gPyBhW25dID0gbyA6IGkgPSBuKSwgW2UsIHQsIGEsIGkgPSBpIHx8IHVbImRlZmF1bHQiXS5zb3VyY2VzLkFQSV0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gayhlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIGFbImRlZmF1bHQiXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gW2UuaW5kZXgsIGUuaW5kZXggKyBlLmxlbmd0aF0ubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC50cmFuc2Zvcm1Qb3NpdGlvbihlLCByICE9PSB1WyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBvKGwsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjWzBdLCBzID0gY1sxXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtlLmluZGV4LCBlLmluZGV4ICsgZS5sZW5ndGhdLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPCB0IHx8IGUgPT09IHQgJiYgciA9PT0gdVsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiA/IGUgOiBuID49IDAgPyBlICsgbiA6IE1hdGgubWF4KHQsIGUgKyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvKGQsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBwWzBdLCBzID0gcFsxXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBmLlJhbmdlKGksIHMgLSBpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHcuREVGQVVMVFMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHM6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRzOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczoge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkT25seTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb250YWluZXI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU6ICJkZWZhdWx0IgogICAgICAgICAgICAgICAgICAgICAgICB9LCB3LmV2ZW50cyA9IHVbImRlZmF1bHQiXS5ldmVudHMsIHcuc291cmNlcyA9IHVbImRlZmF1bHQiXS5zb3VyY2VzLCB3LnZlcnNpb24gPSAiMS4zLjciLCB3LmltcG9ydHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YTogYVsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyY2htZW50OiBjWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29yZS9tb2R1bGUiOiBsWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29yZS90aGVtZSI6IG1bImRlZmF1bHQiXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LmV4cGFuZENvbmZpZyA9IE8sIHQub3ZlcmxvYWQgPSB4LCB0WyJkZWZhdWx0Il0gPSB3CiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24gZihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogZihvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcyhuKDcpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBzKG4oMCkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1KHRoaXMsIHQpLCBsKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCByKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0QXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuLCByLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbXBhcmUodGhpcy5zdGF0aWNzLmJsb3ROYW1lLCByKSA8IDAgJiYgYVsiZGVmYXVsdCJdLnF1ZXJ5KHIsIGFbImRlZmF1bHQiXS5TY29wZS5CTE9UKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLmlzb2xhdGUoZSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICYmIHMud3JhcChyLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImZvcm1hdEF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuLCByLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJvcHRpbWl6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJvcHRpbWl6ZSIsIHRoaXMpLmNhbGwodGhpcywgZSksIHRoaXMucGFyZW50IGluc3RhbmNlb2YgdCAmJiB0LmNvbXBhcmUodGhpcy5zdGF0aWNzLmJsb3ROYW1lLCB0aGlzLnBhcmVudC5zdGF0aWNzLmJsb3ROYW1lKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5wYXJlbnQuaXNvbGF0ZSh0aGlzLm9mZnNldCgpLCB0aGlzLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUNoaWxkcmVuKG4pLCBuLndyYXAodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBhcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5vcmRlci5pbmRleE9mKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQub3JkZXIuaW5kZXhPZihuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgPj0gMCB8fCBvID49IDAgPyByIC0gbyA6IGUgPT09IG4gPyAwIDogZSA8IG4gPyAtMSA6IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShhWyJkZWZhdWx0Il0uSW5saW5lKTsKICAgICAgICAgICAgICAgICAgICAgICAgYy5hbGxvd2VkQ2hpbGRyZW4gPSBbYywgYVsiZGVmYXVsdCJdLkVtYmVkLCBpWyJkZWZhdWx0Il1dLCBjLm9yZGVyID0gWyJjdXJzb3IiLCAiaW5saW5lIiwgInVuZGVybGluZSIsICJzdHJpa2UiLCAiaXRhbGljIiwgImJvbGQiLCAic2NyaXB0IiwgImxpbmsiLCAiY29kZSJdLCB0WyJkZWZhdWx0Il0gPSBjCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBuKDApOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCB0KSwgYSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KCgociA9IG8pICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IHIKICAgICAgICAgICAgICAgICAgICAgICAgfSlbImRlZmF1bHQiXS5UZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uIGwoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IGwobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGEobig1NCkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gKDAsIGEobigxMCkpWyJkZWZhdWx0Il0pKCJxdWlsbDpldmVudHMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgWyJzZWxlY3Rpb25jaGFuZ2UiLCAibW91c2Vkb3duIiwgIm1vdXNldXAiLCAiY2xpY2siXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGUsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCwgdCA9IEFycmF5KGUpLCBuID0gMDsgbiA8IGU7IG4rKykgdFtuXSA9IGFyZ3VtZW50c1tuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5xbC1jb250YWluZXIiKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3F1aWxsICYmIGUuX19xdWlsbC5lbWl0dGVyICYmIChuID0gZS5fX3F1aWxsLmVtaXR0ZXIpLmhhbmRsZURPTS5hcHBseShuLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5saXN0ZW5lcnMgPSB7fSwgZS5vbigiZXJyb3IiLCBzLmVycm9yKSwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgcih0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImVtaXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5sb2cuYXBwbHkocywgYXJndW1lbnRzKSwgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImVtaXQiLCB0aGlzKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZURPTSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGgsIG4gPSBBcnJheSh0ID4gMSA/IHQgLSAxIDogMCksIHIgPSAxOyByIDwgdDsgcisrKSBuW3IgLSAxXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubGlzdGVuZXJzW2UudHlwZV0gfHwgW10pLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5ub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmhhbmRsZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS50YXJnZXQgPT09IHIgfHwgci5jb250YWlucyhlLnRhcmdldCkpICYmIG8uYXBwbHkodW5kZWZpbmVkLCBbZV0uY29uY2F0KG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAibGlzdGVuRE9NIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyc1tlXSB8fCAodGhpcy5saXN0ZW5lcnNbZV0gPSBbXSksIHRoaXMubGlzdGVuZXJzW2VdLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShpWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICB1LmV2ZW50cyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVESVRPUl9DSEFOR0U6ICJlZGl0b3ItY2hhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDUk9MTF9CRUZPUkVfVVBEQVRFOiAic2Nyb2xsLWJlZm9yZS11cGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NST0xMX09QVElNSVpFOiAic2Nyb2xsLW9wdGltaXplIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDUk9MTF9VUERBVEU6ICJzY3JvbGwtdXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVElPTl9DSEFOR0U6ICJzZWxlY3Rpb24tY2hhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFRfQ0hBTkdFOiAidGV4dC1jaGFuZ2UiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUuc291cmNlcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSTogImFwaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSUxFTlQ6ICJzaWxlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNFUjogInVzZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRbImRlZmF1bHQiXSA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBmdW5jdGlvbiBpKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIodGhpcywgaSksIHRoaXMucXVpbGwgPSBlLCB0aGlzLm9wdGlvbnMgPSB0CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIG8uREVGQVVMVFMgPSB7fSwgdFsiZGVmYXVsdCJdID0gbwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gWyJlcnJvciIsICJ3YXJuIiwgImxvZyIsICJpbmZvIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gIndhcm4iOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5pbmRleE9mKGUpIDw9IHIuaW5kZXhPZihvKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIG4gPSBhcmd1bWVudHMubGVuZ3RoLCBpID0gQXJyYXkobiA+IDEgPyBuIC0gMSA6IDApLCBhID0gMTsgYSA8IG47IGErKykgaVthIC0gMV0gPSBhcmd1bWVudHNbYV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQgPSBjb25zb2xlKVtlXS5hcHBseSh0LCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnJlZHVjZSgoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0W25dID0gaS5iaW5kKGNvbnNvbGUsIG4sIGUpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwge30pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaS5sZXZlbCA9IGEubGV2ZWwgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0WyJkZWZhdWx0Il0gPSBhCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IEFycmF5LnByb3RvdHlwZS5zbGljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuKDUyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuKDUzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gfHwgKG4gPSB7fSksIGUgPT09IHQgfHwgKGUgaW5zdGFuY2VvZiBEYXRlICYmIHQgaW5zdGFuY2VvZiBEYXRlID8gZS5nZXRUaW1lKCkgPT09IHQuZ2V0VGltZSgpIDogIWUgfHwgIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIGUgJiYgIm9iamVjdCIgIT0gdHlwZW9mIHQgPyBuLnN0cmljdCA/IGUgPT09IHQgOiBlID09IHQgOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsLCBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyhlKSB8fCBzKHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnByb3RvdHlwZSAhPT0gdC5wcm90b3R5cGUpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkoZSkpIHJldHVybiAhIWkodCkgJiYgKGUgPSByLmNhbGwoZSksIHQgPSByLmNhbGwodCksIGEoZSwgdCwgbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodShlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1KHQpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5sZW5ndGggIT09IHQubGVuZ3RoKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSAwOyBsIDwgZS5sZW5ndGg7IGwrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtsXSAhPT0gdFtsXSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gbyhlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gbyh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZi5sZW5ndGggIT0gZC5sZW5ndGgpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmLnNvcnQoKSwgZC5zb3J0KCksIGwgPSBmLmxlbmd0aCAtIDE7IGwgPj0gMDsgbC0tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZbbF0gIT0gZFtsXSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSBmLmxlbmd0aCAtIDE7IGwgPj0gMDsgbC0tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPSBmW2xdLCAhYShlW2NdLCB0W2NdLCBuKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIGUgPT0gdHlwZW9mIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGUgfHwgZSA9PT0gdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoIWUgfHwgIm9iamVjdCIgIT0gdHlwZW9mIGUgfHwgIm51bWJlciIgIT0gdHlwZW9mIGUubGVuZ3RoIHx8ICJmdW5jdGlvbiIgIT0gdHlwZW9mIGUuY29weSB8fCAiZnVuY3Rpb24iICE9IHR5cGVvZiBlLnNsaWNlIHx8IGUubGVuZ3RoID4gMCAmJiAibnVtYmVyIiAhPSB0eXBlb2YgZVswXSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbigxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBuICYmIChuID0ge30pLCB0aGlzLmF0dHJOYW1lID0gZSwgdGhpcy5rZXlOYW1lID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSByLlNjb3BlLlRZUEUgJiByLlNjb3BlLkFUVFJJQlVURTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBuLnNjb3BlID8gdGhpcy5zY29wZSA9IG4uc2NvcGUgJiByLlNjb3BlLkxFVkVMIHwgbyA6IHRoaXMuc2NvcGUgPSByLlNjb3BlLkFUVFJJQlVURSwgbnVsbCAhPSBuLndoaXRlbGlzdCAmJiAodGhpcy53aGl0ZWxpc3QgPSBuLndoaXRlbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUua2V5cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdLm1hcC5jYWxsKGUuYXR0cmlidXRlcywgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF0aGlzLmNhbkFkZChlLCB0KSAmJiAoZS5zZXRBdHRyaWJ1dGUodGhpcy5rZXlOYW1lLCB0KSwgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuY2FuQWRkID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSByLnF1ZXJ5KGUsIHIuU2NvcGUuQkxPVCAmICh0aGlzLnNjb3BlIHwgci5TY29wZS5UWVBFKSkgJiYgKG51bGwgPT0gdGhpcy53aGl0ZWxpc3QgfHwgKCJzdHJpbmciID09IHR5cGVvZiB0ID8gdGhpcy53aGl0ZWxpc3QuaW5kZXhPZih0LnJlcGxhY2UoL1siJ10vZywgIiIpKSA+IC0xIDogdGhpcy53aGl0ZWxpc3QuaW5kZXhPZih0KSA+IC0xKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlQXR0cmlidXRlKHRoaXMua2V5TmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS52YWx1ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmdldEF0dHJpYnV0ZSh0aGlzLmtleU5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYW5BZGQoZSwgdCkgJiYgdCA/IHQgOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gbwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IHQuQ29kZSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEsIHMgPSBlW1N5bWJvbC5pdGVyYXRvcl0oKTsgIShyID0gKGEgPSBzLm5leHQoKSkuZG9uZSkgJiYgKG4ucHVzaChhLnZhbHVlKSwgIXQgfHwgbi5sZW5ndGggIT09IHQpOyByID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFyICYmIHNbInJldHVybiJdICYmIHNbInJldHVybiJdKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbiBnKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBlICYmIChlID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG8gPyB1bmRlZmluZWQgOiBnKG8sIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIHIpIHJldHVybiByLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gci5nZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGkuY2FsbChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBmKG4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGYobigwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZihuKDQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmKG4oNikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGYobig3KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGQoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBwKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQodGhpcywgdCksIHAodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoKHQsIGUpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0obFsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgbS5ibG90TmFtZSA9ICJjb2RlIiwgbS50YWdOYW1lID0gIkNPREUiOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQodGhpcywgdCksIHAodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoKHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGVsdGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZG9tTm9kZS50ZXh0Q29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZW5kc1dpdGgoIlxuIikgJiYgKHQgPSB0LnNsaWNlKDAsIC0xKSksIHQuc3BsaXQoIlxuIikucmVkdWNlKChmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pbnNlcnQobikuaW5zZXJ0KCJcbiIsIGUuZm9ybWF0cygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbmV3IGFbImRlZmF1bHQiXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAhPT0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lIHx8ICFuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMuZGVzY2VuZGFudChjWyJkZWZhdWx0Il0sIHRoaXMubGVuZ3RoKCkgLSAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gcihvLCAxKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gYSAmJiBhLmRlbGV0ZUF0KGEubGVuZ3RoKCkgLSAxLCAxKSwgaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImZvcm1hdCIsIHRoaXMpLmNhbGwodGhpcywgZSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRBdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT09IG4gJiYgbnVsbCAhPSBzWyJkZWZhdWx0Il0ucXVlcnkociwgc1siZGVmYXVsdCJdLlNjb3BlLkJMT0NLKSAmJiAociAhPT0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lIHx8IG8gIT09IHRoaXMuc3RhdGljcy5mb3JtYXRzKHRoaXMuZG9tTm9kZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMubmV3bGluZUluZGV4KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSA8IDAgfHwgaSA+PSBlICsgbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMubmV3bGluZUluZGV4KGUsICEwKSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpIC0gYSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLmlzb2xhdGUoYSwgdSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBsLm5leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5mb3JtYXQociwgbyksIGMgaW5zdGFuY2VvZiB0ICYmIGMuZm9ybWF0QXQoMCwgZSAtIGEgKyBuIC0gdSwgciwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbnNlcnRBdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLmRlc2NlbmRhbnQoY1siZGVmYXVsdCJdLCBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcihvLCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuaW5zZXJ0QXQocywgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJsZW5ndGgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmRvbU5vZGUudGV4dENvbnRlbnQubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb21Ob2RlLnRleHRDb250ZW50LmVuZHNXaXRoKCJcbiIpID8gZSA6IGUgKyAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIm5ld2xpbmVJbmRleCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCAmJiBhcmd1bWVudHNbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KSByZXR1cm4gdGhpcy5kb21Ob2RlLnRleHRDb250ZW50LnNsaWNlKDAsIGUpLmxhc3RJbmRleE9mKCJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuZG9tTm9kZS50ZXh0Q29udGVudC5zbGljZShlKS5pbmRleE9mKCJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA+IC0xID8gZSArIG4gOiAtMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJvcHRpbWl6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb21Ob2RlLnRleHRDb250ZW50LmVuZHNXaXRoKCJcbiIpIHx8IHRoaXMuYXBwZW5kQ2hpbGQoc1siZGVmYXVsdCJdLmNyZWF0ZSgidGV4dCIsICJcbiIpKSwgaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgIm9wdGltaXplIiwgdGhpcykuY2FsbCh0aGlzLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLm5leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gbiAmJiBuLnByZXYgPT09IHRoaXMgJiYgbi5zdGF0aWNzLmJsb3ROYW1lID09PSB0aGlzLnN0YXRpY3MuYmxvdE5hbWUgJiYgdGhpcy5zdGF0aWNzLmZvcm1hdHModGhpcy5kb21Ob2RlKSA9PT0gbi5zdGF0aWNzLmZvcm1hdHMobi5kb21Ob2RlKSAmJiAobi5vcHRpbWl6ZShlKSwgbi5tb3ZlQ2hpbGRyZW4odGhpcyksIG4ucmVtb3ZlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlcGxhY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJyZXBsYWNlIiwgdGhpcykuY2FsbCh0aGlzLCBlKSwgW10uc2xpY2UuY2FsbCh0aGlzLmRvbU5vZGUucXVlcnlTZWxlY3RvckFsbCgiKiIpKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHNbImRlZmF1bHQiXS5maW5kKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PSB0ID8gZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpIDogdCBpbnN0YW5jZW9mIHNbImRlZmF1bHQiXS5FbWJlZCA/IHQucmVtb3ZlKCkgOiB0LnVud3JhcCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBpKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSwgImNyZWF0ZSIsIHRoaXMpLmNhbGwodGhpcywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNldEF0dHJpYnV0ZSgic3BlbGxjaGVjayIsICExKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHVbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHkuYmxvdE5hbWUgPSAiY29kZS1ibG9jayIsIHkudGFnTmFtZSA9ICJQUkUiLCB5LlRBQiA9ICIgICIsIHQuQ29kZSA9IG0sIHRbImRlZmF1bHQiXSA9IHkKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAic3ltYm9sIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgZS5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIGUgIT09IFN5bWJvbC5wcm90b3R5cGUgPyAic3ltYm9sIiA6IHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSwgcyA9IGVbU3ltYm9sLml0ZXJhdG9yXSgpOyAhKHIgPSAoYSA9IHMubmV4dCgpKS5kb25lKSAmJiAobi5wdXNoKGEudmFsdWUpLCAhdCB8fCBuLmxlbmd0aCAhPT0gdCk7IHIgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgaSA9IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXIgJiYgc1sicmV0dXJuIl0gJiYgc1sicmV0dXJuIl0oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobykgdGhyb3cgaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGcobigyKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZyhuKDIwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZyhuKDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBnKG4oMTMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBnKG4oMjQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBuKDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGcoZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZyhuKDE2KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZyhuKDIxKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gZyhuKDExKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gZyhuKDMpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGcoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IC9eWyAtfl0qJC8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZSh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsIGUpLCB0aGlzLnNjcm9sbCA9IHQsIHRoaXMuZGVsdGEgPSB0aGlzLmdldERlbHRhKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkoZSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYXBwbHlEZWx0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGwudXBkYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuc2Nyb2xsLmxlbmd0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Nyb2xsLmJhdGNoU3RhcnQoKSwgKGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSB0Lmluc2VydCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAoMCwgaFsiZGVmYXVsdCJdKSh0LmF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZSBuLmltYWdlLCBlLmluc2VydCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHQuYXR0cmlidXRlcy5pbWFnZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB0LmF0dHJpYnV0ZXMgfHwgITAgIT09IHQuYXR0cmlidXRlcy5saXN0ICYmICEwICE9PSB0LmF0dHJpYnV0ZXMuYnVsbGV0IHx8ICgodCA9ICgwLCBoWyJkZWZhdWx0Il0pKHQpKS5hdHRyaWJ1dGVzLmxpc3QgPyB0LmF0dHJpYnV0ZXMubGlzdCA9ICJvcmRlcmVkIiA6ICh0LmF0dHJpYnV0ZXMubGlzdCA9ICJidWxsZXQiLCBkZWxldGUgdC5hdHRyaWJ1dGVzLmJ1bGxldCkpLCAic3RyaW5nIiA9PSB0eXBlb2YgdC5pbnNlcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5pbnNlcnQucmVwbGFjZSgvXHJcbi9nLCAiXG4iKS5yZXBsYWNlKC9cci9nLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmluc2VydChyLCB0LmF0dHJpYnV0ZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucHVzaCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuZXcgYVsiZGVmYXVsdCJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlKSkucmVkdWNlKChmdW5jdGlvbihlLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBhLnJldGFpbiB8fCBhWyJkZWxldGUiXSB8fCBhLmluc2VydC5sZW5ndGggfHwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGEuYXR0cmlidXRlcyB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBhLmluc2VydCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGEuaW5zZXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGEuaW5zZXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5lbmRzV2l0aCgiXG4iKSAmJiBuICYmIChuID0gITEsIHAgPSBwLnNsaWNlKDAsIC0xKSksIGUgPj0gaSAmJiAhcC5lbmRzV2l0aCgiXG4iKSAmJiAobiA9ICEwKSwgdC5zY3JvbGwuaW5zZXJ0QXQoZSwgcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHQuc2Nyb2xsLmxpbmUoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG8oaCwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG1bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IG1bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9ICgwLCB5WyJkZWZhdWx0Il0pKHt9LCAoMCwgZi5idWJibGVGb3JtYXRzKShnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyBpbnN0YW5jZW9mIGRbImRlZmF1bHQiXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gZy5kZXNjZW5kYW50KHVbImRlZmF1bHQiXS5MZWFmLCB2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9IG8odywgMSlbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9ICgwLCB5WyJkZWZhdWx0Il0pKGIsICgwLCBmLmJ1YmJsZUZvcm1hdHMpKE8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHNbImRlZmF1bHQiXS5hdHRyaWJ1dGVzLmRpZmYoYiwgYykgfHwge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgib2JqZWN0IiA9PT0gcihhLmluc2VydCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfID0gT2JqZWN0LmtleXMoYS5pbnNlcnQpWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gXykgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNjcm9sbC5pbnNlcnRBdChlLCBfLCBhLmluc2VydFtfXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICs9IGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGMpLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zY3JvbGwuZm9ybWF0QXQoZSwgbCwgbiwgY1tuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGUgKyBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCksIGUucmVkdWNlKChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJudW1iZXIiID09IHR5cGVvZiBuWyJkZWxldGUiXSA/ICh0LnNjcm9sbC5kZWxldGVBdChlLCBuWyJkZWxldGUiXSksIGUpIDogZSArIChuLnJldGFpbiB8fCBuLmluc2VydC5sZW5ndGggfHwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSwgdGhpcy5zY3JvbGwuYmF0Y2hFbmQoKSwgdGhpcy51cGRhdGUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGVsZXRlVGV4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JvbGwuZGVsZXRlQXQoZSwgdCksIHRoaXMudXBkYXRlKChuZXcgYVsiZGVmYXVsdCJdKS5yZXRhaW4oZSlbImRlbGV0ZSJdKHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRMaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcm9sbC51cGRhdGUoKSwgT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24obykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IG4uc2Nyb2xsLndoaXRlbGlzdCB8fCBuLnNjcm9sbC53aGl0ZWxpc3Rbb10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLnNjcm9sbC5saW5lcyhlLCBNYXRoLm1heCh0LCAxKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIGxbImRlZmF1bHQiXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZSAtIHQub2Zmc2V0KG4uc2Nyb2xsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQubmV3bGluZUluZGV4KHMgKyBhKSAtIHMgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZm9ybWF0QXQocywgdSwgbywgcltvXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0LmZvcm1hdChvLCByW29dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgLT0gaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuc2Nyb2xsLm9wdGltaXplKCksIHRoaXMudXBkYXRlKChuZXcgYVsiZGVmYXVsdCJdKS5yZXRhaW4oZSkucmV0YWluKHQsICgwLCBoWyJkZWZhdWx0Il0pKHIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0VGV4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24obykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uc2Nyb2xsLmZvcm1hdEF0KGUsIHQsIG8sIHJbb10pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMudXBkYXRlKChuZXcgYVsiZGVmYXVsdCJdKS5yZXRhaW4oZSkucmV0YWluKHQsICgwLCBoWyJkZWZhdWx0Il0pKHIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0Q29udGVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVsdGEuc2xpY2UoZSwgZSArIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldERlbHRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Nyb2xsLmxpbmVzKCkucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY29uY2F0KHQuZGVsdGEoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuZXcgYVsiZGVmYXVsdCJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJnZXRGb3JtYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IHQgPyB0aGlzLnNjcm9sbC5wYXRoKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG8oZSwgMSlbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCBpbnN0YW5jZW9mIGRbImRlZmF1bHQiXSA/IG4ucHVzaCh0KSA6IHQgaW5zdGFuY2VvZiB1WyJkZWZhdWx0Il0uTGVhZiAmJiByLnB1c2godCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IChuID0gdGhpcy5zY3JvbGwubGluZXMoZSwgdCksIHIgPSB0aGlzLnNjcm9sbC5kZXNjZW5kYW50cyh1WyJkZWZhdWx0Il0uTGVhZiwgZSwgdCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBbbiwgcl0ubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IGUubGVuZ3RoKSByZXR1cm4ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9ICgwLCBmLmJ1YmJsZUZvcm1hdHMpKGUuc2hpZnQoKSk7IE9iamVjdC5rZXlzKHQpLmxlbmd0aCA+IDA7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBuKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHcoKDAsIGYuYnViYmxlRm9ybWF0cykobiksIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geVsiZGVmYXVsdCJdLmFwcGx5KHlbImRlZmF1bHQiXSwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0VGV4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb250ZW50cyhlLCB0KS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIGUuaW5zZXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5zZXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuam9pbigiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaW5zZXJ0RW1iZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Nyb2xsLmluc2VydEF0KGUsIHQsIG4pLCB0aGlzLnVwZGF0ZSgobmV3IGFbImRlZmF1bHQiXSkucmV0YWluKGUpLmluc2VydChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBlW3RdID0gbiwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh7fSwgdCwgbikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbnNlcnRUZXh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gdC5yZXBsYWNlKC9cclxuL2csICJcbiIpLnJlcGxhY2UoL1xyL2csICJcbiIpLCB0aGlzLnNjcm9sbC5pbnNlcnRBdChlLCB0KSwgT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24obykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uc2Nyb2xsLmZvcm1hdEF0KGUsIHQubGVuZ3RoLCBvLCByW29dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnVwZGF0ZSgobmV3IGFbImRlZmF1bHQiXSkucmV0YWluKGUpLmluc2VydCh0LCAoMCwgaFsiZGVmYXVsdCJdKShyKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImlzQmxhbmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSB0aGlzLnNjcm9sbC5jaGlsZHJlbi5sZW5ndGgpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbC5jaGlsZHJlbi5sZW5ndGggPiAxKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuc2Nyb2xsLmNoaWxkcmVuLmhlYWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zdGF0aWNzLmJsb3ROYW1lID09PSBkWyJkZWZhdWx0Il0uYmxvdE5hbWUgJiYgIShlLmNoaWxkcmVuLmxlbmd0aCA+IDEpICYmIGUuY2hpbGRyZW4uaGVhZCBpbnN0YW5jZW9mIHBbImRlZmF1bHQiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW1vdmVGb3JtYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmdldFRleHQoZSwgdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuc2Nyb2xsLmxpbmUoZSArIHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvKHIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBuZXcgYVsiZGVmYXVsdCJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBzICYmIChjID0gcyBpbnN0YW5jZW9mIGxbImRlZmF1bHQiXSA/IHMubmV3bGluZUluZGV4KHUpIC0gdSArIDEgOiBzLmxlbmd0aCgpIC0gdSwgZiA9IHMuZGVsdGEoKS5zbGljZSh1LCB1ICsgYyAtIDEpLmluc2VydCgiXG4iKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZ2V0Q29udGVudHMoZSwgdCArIGMpLmRpZmYoKG5ldyBhWyJkZWZhdWx0Il0pLmluc2VydChuKS5jb25jYXQoZikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAobmV3IGFbImRlZmF1bHQiXSkucmV0YWluKGUpLmNvbmNhdChkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcGx5RGVsdGEocCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuZGVsdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gdC5sZW5ndGggJiYgImNoYXJhY3RlckRhdGEiID09PSB0WzBdLnR5cGUgJiYgdFswXS50YXJnZXQuZGF0YS5tYXRjaCh2KSAmJiB1WyJkZWZhdWx0Il0uZmluZCh0WzBdLnRhcmdldCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHVbImRlZmF1bHQiXS5maW5kKHRbMF0udGFyZ2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICgwLCBmLmJ1YmJsZUZvcm1hdHMpKG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gby5vZmZzZXQodGhpcy5zY3JvbGwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gdFswXS5vbGRWYWx1ZS5yZXBsYWNlKGNbImRlZmF1bHQiXS5DT05URU5UUywgIiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gKG5ldyBhWyJkZWZhdWx0Il0pLmluc2VydChsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IChuZXcgYVsiZGVmYXVsdCJdKS5pbnNlcnQoby52YWx1ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IChuZXcgYVsiZGVmYXVsdCJdKS5yZXRhaW4ocykuY29uY2F0KGQuZGlmZihwLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGgucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lmluc2VydCA/IGUuaW5zZXJ0KHQuaW5zZXJ0LCBpKSA6IGUucHVzaCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuZXcgYVsiZGVmYXVsdCJdKSwgdGhpcy5kZWx0YSA9IHIuY29tcG9zZShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuZGVsdGEgPSB0aGlzLmdldERlbHRhKCksIGUgJiYgKDAsIG1bImRlZmF1bHQiXSkoci5jb21wb3NlKGUpLCB0aGlzLmRlbHRhKSB8fCAoZSA9IHIuZGlmZih0aGlzLmRlbHRhLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0KS5yZWR1Y2UoKGZ1bmN0aW9uKG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlW3JdIHx8ICh0W3JdID09PSBlW3JdID8gbltyXSA9IHRbcl0gOiBBcnJheS5pc0FycmF5KHRbcl0pID8gdFtyXS5pbmRleE9mKGVbcl0pIDwgMCAmJiAobltyXSA9IHRbcl0uY29uY2F0KFtlW3JdXSkpIDogbltyXSA9IFt0W3JdLCBlW3JdXSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBiCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gdC5SYW5nZSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEsIHMgPSBlW1N5bWJvbC5pdGVyYXRvcl0oKTsgIShyID0gKGEgPSBzLm5leHQoKSkuZG9uZSkgJiYgKG4ucHVzaChhLnZhbHVlKSwgIXQgfHwgbi5sZW5ndGggIT09IHQpOyByID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFyICYmIHNbInJldHVybiJdICYmIHNbInJldHVybiJdKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBsKG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGwobigyMSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGwobigxMSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGwobig4KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMCwgbiA9IEFycmF5KGUubGVuZ3RoKTsgdCA8IGUubGVuZ3RoOyB0KyspIG5bdF0gPSBlW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShlKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9ICgwLCBsKG4oMTApKVsiZGVmYXVsdCJdKSgicXVpbGw6c2VsZWN0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZnVuY3Rpb24geShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLCB5KSwgdGhpcy5pbmRleCA9IGUsIHRoaXMubGVuZ3RoID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmKHRoaXMsIGUpLCB0aGlzLmVtaXR0ZXIgPSBuLCB0aGlzLnNjcm9sbCA9IHQsIHRoaXMuY29tcG9zaW5nID0gITEsIHRoaXMubW91c2VEb3duID0gITEsIHRoaXMucm9vdCA9IHRoaXMuc2Nyb2xsLmRvbU5vZGUsIHRoaXMuY3Vyc29yID0gaVsiZGVmYXVsdCJdLmNyZWF0ZSgiY3Vyc29yIiwgdGhpcyksIHRoaXMubGFzdFJhbmdlID0gdGhpcy5zYXZlZFJhbmdlID0gbmV3IHAoMCwgMCksIHRoaXMuaGFuZGxlQ29tcG9zaXRpb24oKSwgdGhpcy5oYW5kbGVEcmFnZ2luZygpLCB0aGlzLmVtaXR0ZXIubGlzdGVuRE9NKCJzZWxlY3Rpb25jaGFuZ2UiLCBkb2N1bWVudCwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5tb3VzZURvd24gfHwgc2V0VGltZW91dChyLnVwZGF0ZS5iaW5kKHIsIHVbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZW1pdHRlci5vbih1WyJkZWZhdWx0Il0uZXZlbnRzLkVESVRPUl9DSEFOR0UsIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID09PSB1WyJkZWZhdWx0Il0uZXZlbnRzLlRFWFRfQ0hBTkdFICYmIHQubGVuZ3RoKCkgPiAwICYmIHIudXBkYXRlKHVbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmVtaXR0ZXIub24odVsiZGVmYXVsdCJdLmV2ZW50cy5TQ1JPTExfQkVGT1JFX1VQREFURSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuaGFzRm9jdXMoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gci5nZXROYXRpdmVSYW5nZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gZSAmJiBlLnN0YXJ0Lm5vZGUgIT09IHIuY3Vyc29yLnRleHROb2RlICYmIHIuZW1pdHRlci5vbmNlKHVbImRlZmF1bHQiXS5ldmVudHMuU0NST0xMX1VQREFURSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5zZXROYXRpdmVSYW5nZShlLnN0YXJ0Lm5vZGUsIGUuc3RhcnQub2Zmc2V0LCBlLmVuZC5ub2RlLCBlLmVuZC5vZmZzZXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5lbWl0dGVyLm9uKHVbImRlZmF1bHQiXS5ldmVudHMuU0NST0xMX09QVElNSVpFLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQucmFuZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQucmFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLnN0YXJ0Tm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4uc3RhcnRPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmVuZE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuLmVuZE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnNldE5hdGl2ZVJhbmdlKG8sIGksIGEsIHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy51cGRhdGUodVsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyhlLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVDb21wb3NpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm9vdC5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0IiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY29tcG9zaW5nID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5yb290LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uZW5kIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmNvbXBvc2luZyA9ICExLCBlLmN1cnNvci5wYXJlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmN1cnNvci5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0TmF0aXZlUmFuZ2UodC5zdGFydE5vZGUsIHQuc3RhcnRPZmZzZXQsIHQuZW5kTm9kZSwgdC5lbmRPZmZzZXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVEcmFnZ2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdHRlci5saXN0ZW5ET00oIm1vdXNlZG93biIsIGRvY3VtZW50LmJvZHksIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1vdXNlRG93biA9ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZW1pdHRlci5saXN0ZW5ET00oIm1vdXNldXAiLCBkb2N1bWVudC5ib2R5LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tb3VzZURvd24gPSAhMSwgZS51cGRhdGUodVsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb2N1cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRm9jdXMoKSB8fCAodGhpcy5yb290LmZvY3VzKCksIHRoaXMuc2V0UmFuZ2UodGhpcy5zYXZlZFJhbmdlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHRoaXMuc2Nyb2xsLndoaXRlbGlzdCB8fCB0aGlzLnNjcm9sbC53aGl0ZWxpc3RbZV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbC51cGRhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuZ2V0TmF0aXZlUmFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBuICYmIG4ubmF0aXZlLmNvbGxhcHNlZCAmJiAhaVsiZGVmYXVsdCJdLnF1ZXJ5KGUsIGlbImRlZmF1bHQiXS5TY29wZS5CTE9DSykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uc3RhcnQubm9kZSAhPT0gdGhpcy5jdXJzb3IudGV4dE5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gaVsiZGVmYXVsdCJdLmZpbmQobi5zdGFydC5ub2RlLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSByKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIGlbImRlZmF1bHQiXS5MZWFmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSByLnNwbGl0KG4uc3RhcnQub2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy5jdXJzb3IsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugci5pbnNlcnRCZWZvcmUodGhpcy5jdXJzb3IsIG4uc3RhcnQubm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnNvci5hdHRhY2goKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yLmZvcm1hdChlLCB0KSwgdGhpcy5zY3JvbGwub3B0aW1pemUoKSwgdGhpcy5zZXROYXRpdmVSYW5nZSh0aGlzLmN1cnNvci50ZXh0Tm9kZSwgdGhpcy5jdXJzb3IudGV4dE5vZGUuZGF0YS5sZW5ndGgpLCB0aGlzLnVwZGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJnZXRCb3VuZHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuc2Nyb2xsLmxlbmd0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IE1hdGgubWluKGUsIG4gLSAxKSwgdCA9IE1hdGgubWluKGUgKyB0LCBuIC0gMSkgLSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuc2Nyb2xsLmxlYWYoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIoaSwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGFbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBzKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gcy5wb3NpdGlvbih1LCAhMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHIobCwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gY1swXSwgdSA9IGNbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLnNldFN0YXJ0KG8sIHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5zY3JvbGwubGVhZihlICsgdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSByKGQsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gcFswXSwgdSA9IHBbMV0sIG51bGwgPT0gcykgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBzLnBvc2l0aW9uKHUsICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHIoaCwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gPSBtWzBdLCB1ID0gbVsxXSwgZi5zZXRFbmQobywgdSksIGYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gImxlZnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyBpbnN0YW5jZW9mIFRleHQgPyAodSA8IG8uZGF0YS5sZW5ndGggPyAoZi5zZXRTdGFydChvLCB1KSwgZi5zZXRFbmQobywgdSArIDEpKSA6IChmLnNldFN0YXJ0KG8sIHUgLSAxKSwgZi5zZXRFbmQobywgdSksIHkgPSAicmlnaHQiKSwgZyA9IGYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpIDogKGcgPSBzLmRvbU5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHUgPiAwICYmICh5ID0gInJpZ2h0IikpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBnLnRvcCArIGcuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogZy5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogZ1t5XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogZ1t5XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGcudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldE5hdGl2ZVJhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IGUgfHwgZS5yYW5nZUNvdW50IDw9IDApIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmdldFJhbmdlQXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB0KSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5ub3JtYWxpemVOYXRpdmUodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5pbmZvKCJnZXROYXRpdmVSYW5nZSIsIG4pLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldFJhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldE5hdGl2ZVJhbmdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gW251bGwsIG51bGxdIDogW3RoaXMubm9ybWFsaXplZFRvUmFuZ2UoZSksIGVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhc0ZvY3VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMucm9vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJub3JtYWxpemVkVG9SYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Uuc3RhcnQubm9kZSwgZS5zdGFydC5vZmZzZXRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubmF0aXZlLmNvbGxhcHNlZCB8fCBuLnB1c2goW2UuZW5kLm5vZGUsIGUuZW5kLm9mZnNldF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHIoZSwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gblswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGlbImRlZmF1bHQiXS5maW5kKG8sICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBzLm9mZnNldCh0LnNjcm9sbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSBhID8gdSA6IHMgaW5zdGFuY2VvZiBpWyJkZWZhdWx0Il0uQ29udGFpbmVyID8gdSArIHMubGVuZ3RoKCkgOiB1ICsgcy5pbmRleChvLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5taW4oTWF0aC5tYXguYXBwbHkoTWF0aCwgYyhvKSksIHRoaXMuc2Nyb2xsLmxlbmd0aCgpIC0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGgubWluLmFwcGx5KE1hdGgsIFthXS5jb25jYXQoYyhvKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBwKHMsIGEgLSBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJub3JtYWxpemVOYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtKHRoaXMucm9vdCwgZS5zdGFydENvbnRhaW5lcikgfHwgIWUuY29sbGFwc2VkICYmICFtKHRoaXMucm9vdCwgZS5lbmRDb250YWluZXIpKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGU6IGUuc3RhcnRDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogZS5zdGFydE9mZnNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGU6IGUuZW5kQ29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IGUuZW5kT2Zmc2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmU6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3Quc3RhcnQsIHQuZW5kXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IGUubm9kZSwgbiA9IGUub2Zmc2V0OyAhKHQgaW5zdGFuY2VvZiBUZXh0KSAmJiB0LmNoaWxkTm9kZXMubGVuZ3RoID4gMDspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNoaWxkTm9kZXMubGVuZ3RoID4gbikgdCA9IHQuY2hpbGROb2Rlc1tuXSwgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY2hpbGROb2Rlcy5sZW5ndGggIT09IG4pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICh0ID0gdC5sYXN0Q2hpbGQpIGluc3RhbmNlb2YgVGV4dCA/IHQuZGF0YS5sZW5ndGggOiB0LmNoaWxkTm9kZXMubGVuZ3RoICsgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5ub2RlID0gdCwgZS5vZmZzZXQgPSBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmFuZ2VUb05hdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUuY29sbGFwc2VkID8gW2UuaW5kZXhdIDogW2UuaW5kZXgsIGUuaW5kZXggKyBlLmxlbmd0aF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnNjcm9sbC5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gTWF0aC5taW4oaSAtIDEsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhLCBzID0gdC5zY3JvbGwubGVhZihlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHIocywgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1WzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGwucG9zaXRpb24oYywgMCAhPT0gbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSByKGYsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBkWzBdLCBjID0gZFsxXSwgby5wdXNoKGEsIGMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG8ubGVuZ3RoIDwgMiAmJiAobyA9IG8uY29uY2F0KG8pKSwgbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJzY3JvbGxJbnRvVmlldyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMubGFzdFJhbmdlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5nZXRCb3VuZHModC5pbmRleCwgdC5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLnNjcm9sbC5sZW5ndGgoKSAtIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5zY3JvbGwubGluZShNYXRoLm1pbih0LmluZGV4LCBvKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gcihpLCAxKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHRoaXMuc2Nyb2xsLmxpbmUoTWF0aC5taW4odC5pbmRleCArIHQubGVuZ3RoLCBvKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcih1LCAxKVswXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGEgJiYgbnVsbCAhPSBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnRvcCA8IGwudG9wID8gZS5zY3JvbGxUb3AgLT0gbC50b3AgLSBuLnRvcCA6IG4uYm90dG9tID4gbC5ib3R0b20gJiYgKGUuc2Nyb2xsVG9wICs9IG4uYm90dG9tIC0gbC5ib3R0b20pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNldE5hdGl2ZVJhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkICYmIGFyZ3VtZW50c1s0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkLmluZm8oInNldE5hdGl2ZVJhbmdlIiwgZSwgdCwgbiwgciksIG51bGwgPT0gZSB8fCBudWxsICE9IHRoaXMucm9vdC5wYXJlbnROb2RlICYmIG51bGwgIT0gZS5wYXJlbnROb2RlICYmIG51bGwgIT0gbi5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc0ZvY3VzKCkgfHwgdGhpcy5yb290LmZvY3VzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9ICh0aGlzLmdldE5hdGl2ZVJhbmdlKCkgfHwge30pLm5hdGl2ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IGEgfHwgbyB8fCBlICE9PSBhLnN0YXJ0Q29udGFpbmVyIHx8IHQgIT09IGEuc3RhcnRPZmZzZXQgfHwgbiAhPT0gYS5lbmRDb250YWluZXIgfHwgciAhPT0gYS5lbmRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQlIiID09IGUudGFnTmFtZSAmJiAodCA9IFtdLmluZGV4T2YuY2FsbChlLnBhcmVudE5vZGUuY2hpbGROb2RlcywgZSksIGUgPSBlLnBhcmVudE5vZGUpLCAiQlIiID09IG4udGFnTmFtZSAmJiAociA9IFtdLmluZGV4T2YuY2FsbChuLnBhcmVudE5vZGUuY2hpbGROb2RlcywgbiksIG4gPSBuLnBhcmVudE5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnNldFN0YXJ0KGUsIHQpLCBzLnNldEVuZChuLCByKSwgaS5yZW1vdmVBbGxSYW5nZXMoKSwgaS5hZGRSYW5nZShzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaS5yZW1vdmVBbGxSYW5nZXMoKSwgdGhpcy5yb290LmJsdXIoKSwgZG9jdW1lbnQuYm9keS5mb2N1cygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNldFJhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHVbImRlZmF1bHQiXS5zb3VyY2VzLkFQSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAobiA9IHQsIHQgPSAhMSksIGQuaW5mbygic2V0UmFuZ2UiLCBlKSwgbnVsbCAhPSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnJhbmdlVG9OYXRpdmUoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXROYXRpdmVSYW5nZS5hcHBseSh0aGlzLCBjKHIpLmNvbmNhdChbdF0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuc2V0TmF0aXZlUmFuZ2UobnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZShuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ1cGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdVsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5sYXN0UmFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuZ2V0UmFuZ2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gcihuLCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gb1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gb1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhc3RSYW5nZSA9IGksIG51bGwgIT0gdGhpcy5sYXN0UmFuZ2UgJiYgKHRoaXMuc2F2ZWRSYW5nZSA9IHRoaXMubGFzdFJhbmdlKSwgISgwLCBzWyJkZWZhdWx0Il0pKHQsIHRoaXMubGFzdFJhbmdlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmNvbXBvc2luZyAmJiBudWxsICE9IGwgJiYgbC5uYXRpdmUuY29sbGFwc2VkICYmIGwuc3RhcnQubm9kZSAhPT0gdGhpcy5jdXJzb3IudGV4dE5vZGUgJiYgdGhpcy5jdXJzb3IucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmLCBkID0gW3VbImRlZmF1bHQiXS5ldmVudHMuU0VMRUNUSU9OX0NIQU5HRSwgKDAsIGFbImRlZmF1bHQiXSkodGhpcy5sYXN0UmFuZ2UpLCAoMCwgYVsiZGVmYXVsdCJdKSh0KSwgZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGMgPSB0aGlzLmVtaXR0ZXIpLmVtaXQuYXBwbHkoYywgW3VbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRV0uY29uY2F0KGQpKSwgZSAhPT0gdVsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UICYmIChmID0gdGhpcy5lbWl0dGVyKS5lbWl0LmFwcGx5KGYsIGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG0oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnBhcmVudE5vZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IGluc3RhbmNlb2YgVGV4dCAmJiAodCA9IHQucGFyZW50Tm9kZSksIGUuY29udGFpbnModCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0LlJhbmdlID0gcCwgdFsiZGVmYXVsdCJdID0gaAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIGMoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IGMobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMCk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKHRoaXMsIHQpLCB1KHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaW5zZXJ0SW50byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0gZS5jaGlsZHJlbi5sZW5ndGggPyBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5zZXJ0SW50byIsIHRoaXMpLmNhbGwodGhpcywgZSwgbikgOiB0aGlzLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxlbmd0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ2YWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ2YWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKChyID0gYSkgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdLkVtYmVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC5ibG90TmFtZSA9ICJicmVhayIsIGwudGFnTmFtZSA9ICJCUiIsIHRbImRlZmF1bHQiXSA9IGwKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Byb3RvX186IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9fcHJvdG9fXyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdC5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoZVtuXSA9IHRbbl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoZSwgdCksIGUucHJvdG90eXBlID0gbnVsbCA9PT0gdCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4oNDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMzApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuY2FsbCh0aGlzLCB0KSB8fCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5idWlsZCgpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUuYXR0YWNoLmNhbGwodGhpcyksIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5hdHRhY2goKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5idWlsZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBuZXcgaVsiZGVmYXVsdCJdLCBbXS5zbGljZS5jYWxsKHRoaXMuZG9tTm9kZS5jaGlsZE5vZGVzKS5yZXZlcnNlKCkuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGwodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5pbnNlcnRCZWZvcmUobiwgZS5jaGlsZHJlbi5oZWFkIHx8IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIHMuUGFyY2htZW50RXJyb3IpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmRlbGV0ZUF0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gZSAmJiB0ID09PSB0aGlzLmxlbmd0aCgpKSByZXR1cm4gdGhpcy5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoQXQoZSwgdCwgKGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZGVsZXRlQXQodCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZGVzY2VuZGFudCA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLmNoaWxkcmVuLmZpbmQobiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gclswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlLmJsb3ROYW1lICYmIGUobykgfHwgbnVsbCAhPSBlLmJsb3ROYW1lICYmIG8gaW5zdGFuY2VvZiBlID8gW28sIGldIDogbyBpbnN0YW5jZW9mIHQgPyBvLmRlc2NlbmRhbnQoZSwgaSkgOiBbbnVsbCwgLTFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZGVzY2VuZGFudHMgPSBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gbiAmJiAobiA9IDApLCB2b2lkIDAgPT09IHIgJiYgKHIgPSBOdW1iZXIuTUFYX1ZBTFVFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5mb3JFYWNoQXQobiwgciwgKGZ1bmN0aW9uKG4sIHIsIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09IGUuYmxvdE5hbWUgJiYgZShuKSB8fCBudWxsICE9IGUuYmxvdE5hbWUgJiYgbiBpbnN0YW5jZW9mIGUpICYmIG8ucHVzaChuKSwgbiBpbnN0YW5jZW9mIHQgJiYgKG8gPSBvLmNvbmNhdChuLmRlc2NlbmRhbnRzKGUsIHIsIGkpKSksIGkgLT0gYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5kZXRhY2ggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmRldGFjaCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZS5wcm90b3R5cGUuZGV0YWNoLmNhbGwodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5mb3JtYXRBdCA9IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoQXQoZSwgdCwgKGZ1bmN0aW9uKGUsIHQsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZm9ybWF0QXQodCwgbywgbiwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuaW5zZXJ0QXQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5jaGlsZHJlbi5maW5kKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHJbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gclsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIG8uaW5zZXJ0QXQoaSwgdCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBudWxsID09IG4gPyBzLmNyZWF0ZSgidGV4dCIsIHQpIDogcy5jcmVhdGUodCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMuc3RhdGljcy5hbGxvd2VkQ2hpbGRyZW4gJiYgIXRoaXMuc3RhdGljcy5hbGxvd2VkQ2hpbGRyZW4uc29tZSgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlIGluc3RhbmNlb2YgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSB0aHJvdyBuZXcgcy5QYXJjaG1lbnRFcnJvcigiQ2Fubm90IGluc2VydCAiICsgZS5zdGF0aWNzLmJsb3ROYW1lICsgIiBpbnRvICIgKyB0aGlzLnN0YXRpY3MuYmxvdE5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmluc2VydEludG8odGhpcywgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSArIHQubGVuZ3RoKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUubW92ZUNoaWxkcmVuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaW5zZXJ0QmVmb3JlKG4sIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLm9wdGltaXplID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5wcm90b3R5cGUub3B0aW1pemUuY2FsbCh0aGlzLCB0KSwgMCA9PT0gdGhpcy5jaGlsZHJlbi5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLnN0YXRpY3MuZGVmYXVsdENoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBzLmNyZWF0ZSh0aGlzLnN0YXRpY3MuZGVmYXVsdENoaWxkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG4pLCBuLm9wdGltaXplKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5yZW1vdmUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnBhdGggPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gbiAmJiAobiA9ICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLmNoaWxkcmVuLmZpbmQoZSwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gclswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcywgZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvIGluc3RhbmNlb2YgdCA/IGEuY29uY2F0KG8ucGF0aChpLCBuKSkgOiAobnVsbCAhPSBvICYmIGEucHVzaChbbywgaV0pLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuLnJlbW92ZShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnJlcGxhY2UgPSBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gaW5zdGFuY2VvZiB0ICYmIG4ubW92ZUNoaWxkcmVuKHRoaXMpLCBlLnByb3RvdHlwZS5yZXBsYWNlLmNhbGwodGhpcywgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gdCAmJiAodCA9ICExKSwgIXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBlKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlID09PSB0aGlzLmxlbmd0aCgpKSByZXR1cm4gdGhpcy5uZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmNsb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUobiwgdGhpcy5uZXh0KSwgdGhpcy5jaGlsZHJlbi5mb3JFYWNoQXQoZSwgdGhpcy5sZW5ndGgoKSwgKGZ1bmN0aW9uKGUsIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlLnNwbGl0KHIsIHQpLCBuLmFwcGVuZENoaWxkKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVud3JhcCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVDaGlsZHJlbih0aGlzLnBhcmVudCwgdGhpcy5uZXh0KSwgdGhpcy5yZW1vdmUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0ID09PSBuLmRvbU5vZGUgJiYgImNoaWxkTGlzdCIgPT09IGUudHlwZSAmJiAoci5wdXNoLmFwcGx5KHIsIGUuYWRkZWROb2RlcyksIG8ucHVzaC5hcHBseShvLCBlLnJlbW92ZWROb2RlcykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgby5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShudWxsICE9IGUucGFyZW50Tm9kZSAmJiAiSUZSQU1FIiAhPT0gZS50YWdOYW1lICYmIGRvY3VtZW50LmJvZHkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSkgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHMuZmluZChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IHQgJiYgKG51bGwgIT0gdC5kb21Ob2RlLnBhcmVudE5vZGUgJiYgdC5kb21Ob2RlLnBhcmVudE5vZGUgIT09IG4uZG9tTm9kZSB8fCB0LmRldGFjaCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5wYXJlbnROb2RlID09IG4uZG9tTm9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuc29ydCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgPyAwIDogZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HID8gMSA6IC0xCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGUubmV4dFNpYmxpbmcgJiYgKHQgPSBzLmZpbmQoZS5uZXh0U2libGluZykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBsKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5uZXh0ID09IHQgJiYgbnVsbCAhPSByLm5leHQgfHwgKG51bGwgIT0gci5wYXJlbnQgJiYgci5wYXJlbnQucmVtb3ZlQ2hpbGQobiksIG4uaW5zZXJ0QmVmb3JlKHIsIHQgfHwgdW5kZWZpbmVkKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShhWyJkZWZhdWx0Il0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHMuZmluZChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHQpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHMuY3JlYXRlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHMuY3JlYXRlKHMuU2NvcGUuSU5MSU5FKSwgW10uc2xpY2UuY2FsbChlLmNoaWxkTm9kZXMpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5kb21Ob2RlLmFwcGVuZENoaWxkKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBlLnBhcmVudE5vZGUgJiYgZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0LmRvbU5vZGUsIGUpLCB0LmF0dGFjaCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Byb3RvX186IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9fcHJvdG9fXyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdC5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoZVtuXSA9IHRbbl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoZSwgdCksIGUucHJvdG90eXBlID0gbnVsbCA9PT0gdCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4oMTIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMzEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4oMTcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuY2FsbCh0aGlzLCB0KSB8fCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5hdHRyaWJ1dGVzID0gbmV3IGFbImRlZmF1bHQiXShuLmRvbU5vZGUpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LmZvcm1hdHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgdGhpcy50YWdOYW1lIHx8IChBcnJheS5pc0FycmF5KHRoaXMudGFnTmFtZSkgPyBlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA6IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdS5xdWVyeShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiBpbnN0YW5jZW9mIGlbImRlZmF1bHQiXSA/IHRoaXMuYXR0cmlidXRlcy5hdHRyaWJ1dGUobiwgdCkgOiB0ICYmIChudWxsID09IG4gfHwgZSA9PT0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lICYmIHRoaXMuZm9ybWF0cygpW2VdID09PSB0IHx8IHRoaXMucmVwbGFjZVdpdGgoZSwgdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZm9ybWF0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuYXR0cmlidXRlcy52YWx1ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLnN0YXRpY3MuZm9ybWF0cyh0aGlzLmRvbU5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSB0ICYmIChlW3RoaXMuc3RhdGljcy5ibG90TmFtZV0gPSB0KSwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnJlcGxhY2VXaXRoID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUucHJvdG90eXBlLnJlcGxhY2VXaXRoLmNhbGwodGhpcywgdCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXMuY29weShyKSwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZS51cGRhdGUuY2FsbCh0aGlzLCB0LCBuKSwgdC5zb21lKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50YXJnZXQgPT09IHIuZG9tTm9kZSAmJiAiYXR0cmlidXRlcyIgPT09IGUudHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgJiYgdGhpcy5hdHRyaWJ1dGVzLmJ1aWxkKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24obiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGUucHJvdG90eXBlLndyYXAuY2FsbCh0aGlzLCBuLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gaW5zdGFuY2VvZiB0ICYmIG8uc3RhdGljcy5zY29wZSA9PT0gdGhpcy5zdGF0aWNzLnNjb3BlICYmIHRoaXMuYXR0cmlidXRlcy5tb3ZlKG8pLCBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShzWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBsCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCAociA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcm90b19fOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3Byb3RvX18gPSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHQpIHQuaGFzT3duUHJvcGVydHkobikgJiYgKGVbbl0gPSB0W25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuKDMwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gZSAmJiBlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyh0LCBlKSwgdC52YWx1ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuaW5kZXggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbU5vZGUgPT09IGUgfHwgdGhpcy5kb21Ob2RlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkgPyBNYXRoLm1pbih0LCAxKSA6IC0xCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10uaW5kZXhPZi5jYWxsKHRoaXMucGFyZW50LmRvbU5vZGUuY2hpbGROb2RlcywgdGhpcy5kb21Ob2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPiAwICYmIChuICs9IDEpLCBbdGhpcy5wYXJlbnQuZG9tTm9kZSwgbl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS52YWx1ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlID0ge30pW3RoaXMuc3RhdGljcy5ibG90TmFtZV0gPSB0aGlzLnN0YXRpY3MudmFsdWUodGhpcy5kb21Ob2RlKSB8fCAhMCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQuc2NvcGUgPSBhLlNjb3BlLklOTElORV9CTE9ULCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbigxMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbigzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IiAhPSB0eXBlb2YgZSAmJiAoZSA9IHt9KSwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgKHQgPSB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG8oITAsIHt9LCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gbiB8fCAociA9IE9iamVjdC5rZXlzKHIpLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSByW3RdICYmIChlW3RdID0gclt0XSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwge30pKSwgZSkgZVtpXSAhPT0gdW5kZWZpbmVkICYmIHRbaV0gPT09IHVuZGVmaW5lZCAmJiAocltpXSA9IGVbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHIpLmxlbmd0aCA+IDAgPyByIDogdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmY6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QiICE9IHR5cGVvZiBlICYmIChlID0ge30pLCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAodCA9IHt9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gT2JqZWN0LmtleXMoZSkuY29uY2F0KE9iamVjdC5rZXlzKHQpKS5yZWR1Y2UoKGZ1bmN0aW9uKG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlW29dLCB0W29dKSB8fCAobltvXSA9IHRbb10gPT09IHVuZGVmaW5lZCA/IG51bGwgOiB0W29dKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHt9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhuKS5sZW5ndGggPiAwID8gbiA6IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiAhPSB0eXBlb2YgZSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgIT0gdHlwZW9mIHQpIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4pIHJldHVybiB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3Qua2V5cyh0KS5yZWR1Y2UoKGZ1bmN0aW9uKG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVtyXSA9PT0gdW5kZWZpbmVkICYmIChuW3JdID0gdFtyXSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocikubGVuZ3RoID4gMCA/IHIgOiB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBhKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJudW1iZXIiID09IHR5cGVvZiBlWyJkZWxldGUiXSA/IGVbImRlbGV0ZSJdIDogIm51bWJlciIgPT0gdHlwZW9mIGUucmV0YWluID8gZS5yZXRhaW4gOiAic3RyaW5nIiA9PSB0eXBlb2YgZS5pbnNlcnQgPyBlLmluc2VydC5sZW5ndGggOiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHMgPSBlLCB0aGlzLmluZGV4ID0gMCwgdGhpcy5vZmZzZXQgPSAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYS5wcm90b3R5cGUuaGFzTmV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGVla0xlbmd0aCgpIDwgSW5maW5pdHkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgfHwgKGUgPSBJbmZpbml0eSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMub3BzW3RoaXMuaW5kZXhdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMub2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaS5sZW5ndGgodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPj0gciAtIG4gPyAoZSA9IHIgLSBuLCB0aGlzLmluZGV4ICs9IDEsIHRoaXMub2Zmc2V0ID0gMCkgOiB0aGlzLm9mZnNldCArPSBlLCAibnVtYmVyIiA9PSB0eXBlb2YgdFsiZGVsZXRlIl0pIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGUiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmF0dHJpYnV0ZXMgJiYgKG8uYXR0cmlidXRlcyA9IHQuYXR0cmlidXRlcyksICJudW1iZXIiID09IHR5cGVvZiB0LnJldGFpbiA/IG8ucmV0YWluID0gZSA6ICJzdHJpbmciID09IHR5cGVvZiB0Lmluc2VydCA/IG8uaW5zZXJ0ID0gdC5pbnNlcnQuc3Vic3RyKG4sIGUpIDogby5pbnNlcnQgPSB0Lmluc2VydCwgbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW46IEluZmluaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLnBlZWsgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wc1t0aGlzLmluZGV4XQogICAgICAgICAgICAgICAgICAgICAgICB9LCBhLnByb3RvdHlwZS5wZWVrTGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHNbdGhpcy5pbmRleF0gPyBpLmxlbmd0aCh0aGlzLm9wc1t0aGlzLmluZGV4XSkgLSB0aGlzLm9mZnNldCA6IEluZmluaXR5CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLnBlZWtUeXBlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHNbdGhpcy5pbmRleF0gPyAibnVtYmVyIiA9PSB0eXBlb2YgdGhpcy5vcHNbdGhpcy5pbmRleF1bImRlbGV0ZSJdID8gImRlbGV0ZSIgOiAibnVtYmVyIiA9PSB0eXBlb2YgdGhpcy5vcHNbdGhpcy5pbmRleF0ucmV0YWluID8gInJldGFpbiIgOiAiaW5zZXJ0IiA6ICJyZXRhaW4iCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLnJlc3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc05leHQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSB0aGlzLm9mZnNldCkgcmV0dXJuIHRoaXMub3BzLnNsaWNlKHRoaXMuaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5uZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLm9wcy5zbGljZSh0aGlzLmluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vZmZzZXQgPSBlLCB0aGlzLmluZGV4ID0gdCwgW25dLmNvbmNhdChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IGkKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gdCAmJiBlIGluc3RhbmNlb2YgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBNYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZnVuY3Rpb24oKSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gU2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGZ1bmN0aW9uKCkge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFByb21pc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24oKSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oaSwgcywgdSwgbCwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBzICYmICh1ID0gcy5kZXB0aCwgbCA9IHMucHJvdG90eXBlLCBjID0gcy5pbmNsdWRlTm9uRW51bWVyYWJsZSwgcyA9IHMuY2lyY3VsYXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBCdWZmZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gcyAmJiAocyA9ICEwKSwgdm9pZCAwID09PSB1ICYmICh1ID0gSW5maW5pdHkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGksIHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBpKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSB1KSByZXR1cm4gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtLCB5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiICE9IHR5cGVvZiBpKSByZXR1cm4gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKGksIHQpKSBtID0gbmV3IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlKGksIG4pKSBtID0gbmV3IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlKGksIHIpKSBtID0gbmV3IHIoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnRoZW4oKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZShoKHQsIHUgLSAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdChoKGUsIHUgLSAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG8uX19pc0FycmF5KGkpKSBtID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChvLl9faXNSZWdFeHAoaSkpIG0gPSBuZXcgUmVnRXhwKGkuc291cmNlLCBhKGkpKSwgaS5sYXN0SW5kZXggJiYgKG0ubGFzdEluZGV4ID0gaS5sYXN0SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoby5fX2lzRGF0ZShpKSkgbSA9IG5ldyBEYXRlKGkuZ2V0VGltZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwICYmIEJ1ZmZlci5pc0J1ZmZlcihpKSkgcmV0dXJuIG0gPSBCdWZmZXIuYWxsb2NVbnNhZmUgPyBCdWZmZXIuYWxsb2NVbnNhZmUoaS5sZW5ndGgpIDogbmV3IEJ1ZmZlcihpLmxlbmd0aCksIGkuY29weShtKSwgbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKGksIEVycm9yKSA/IG0gPSBPYmplY3QuY3JlYXRlKGkpIDogdm9pZCAwID09PSBsID8gKHkgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaSksIG0gPSBPYmplY3QuY3JlYXRlKHkpKSA6IChtID0gT2JqZWN0LmNyZWF0ZShsKSwgeSA9IGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZi5pbmRleE9mKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSAhPSBnKSByZXR1cm4gZFtnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLnB1c2goaSksIGQucHVzaChtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdiBpbiBlKGksIHQpICYmIGkuZm9yRWFjaCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGgodCwgdSAtIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGgoZSwgdSAtIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLnNldChuLCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZShpLCBuKSAmJiBpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBoKGUsIHUgLSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5hZGQodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ICYmIChiID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LCB2KSksIGIgJiYgbnVsbCA9PSBiLnNldCB8fCAobVt2XSA9IGgoaVt2XSwgdSAtIDEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2ID0gMDsgdiA8IHcubGVuZ3RoOyB2KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE8gPSB3W3ZdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoISh4ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLCBPKSkgfHwgeC5lbnVtZXJhYmxlIHx8IGMpICYmIChtW09dID0gaChpW09dLCB1IC0gMSksIHguZW51bWVyYWJsZSB8fCBPYmplY3QuZGVmaW5lUHJvcGVydHkobSwgTywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgXyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodiA9IDA7IHYgPCBfLmxlbmd0aDsgdisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4LCBrID0gX1t2XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksIGspKSAmJiB4LmVudW1lcmFibGUgfHwgKG1ba10gPSBoKGlba10sIHUgLSAxKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KG0sIGssIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oaSwgdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nbG9iYWwgJiYgKHQgKz0gImciKSwgZS5pZ25vcmVDYXNlICYmICh0ICs9ICJpIiksIGUubXVsdGlsaW5lICYmICh0ICs9ICJtIiksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLmNsb25lUHJvdG90eXBlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBlKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGZ1bmN0aW9uKCkge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQucHJvdG90eXBlID0gZSwgbmV3IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8uX19vYmpUb1N0ciA9IGksIG8uX19pc0RhdGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiBlICYmICJbb2JqZWN0IERhdGVdIiA9PT0gaShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgby5fX2lzQXJyYXkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiBlICYmICJbb2JqZWN0IEFycmF5XSIgPT09IGkoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8uX19pc1JlZ0V4cCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgIltvYmplY3QgUmVnRXhwXSIgPT09IGkoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8uX19nZXRSZWdFeHBGbGFncyA9IGEsIG8KICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlLmV4cG9ydHMgJiYgKGUuZXhwb3J0cyA9IG4pCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEsIHMgPSBlW1N5bWJvbC5pdGVyYXRvcl0oKTsgIShyID0gKGEgPSBzLm5leHQoKSkuZG9uZSkgJiYgKG4ucHVzaChhLnZhbHVlKSwgIXQgfHwgbi5sZW5ndGggIT09IHQpOyByID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFyICYmIHNbInJldHVybiJdICYmIHNbInJldHVybiJdKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbiB5KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBlICYmIChlID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG8gPyB1bmRlZmluZWQgOiB5KG8sIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIHIpIHJldHVybiByLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gci5nZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGkuY2FsbChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwKG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHAobig4KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbig0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBwKHUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHAobigxNikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHAobigxMykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHAobigyNSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlIGluc3RhbmNlb2YgbFsiZGVmYXVsdCJdIHx8IGUgaW5zdGFuY2VvZiB1LkJsb2NrRW1iZWQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5lbWl0dGVyID0gbi5lbWl0dGVyLCBBcnJheS5pc0FycmF5KG4ud2hpdGVsaXN0KSAmJiAoci53aGl0ZWxpc3QgPSBuLndoaXRlbGlzdC5yZWR1Y2UoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbdF0gPSAhMCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSkpLCByLmRvbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgKGZ1bmN0aW9uKCkge30pKSwgci5vcHRpbWl6ZSgpLCByLmVuYWJsZSgpLCByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYmF0Y2hTdGFydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhdGNoID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYmF0Y2hFbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXRjaCA9ICExLCB0aGlzLm9wdGltaXplKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGVsZXRlQXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5saW5lKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIobywgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMubGluZShlICsgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcihkLCAxKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJkZWxldGVBdCIsIHRoaXMpLmNhbGwodGhpcywgZSwgbiksIG51bGwgIT0gcCAmJiBzICE9PSBwICYmIGwgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyBpbnN0YW5jZW9mIHUuQmxvY2tFbWJlZCB8fCBwIGluc3RhbmNlb2YgdS5CbG9ja0VtYmVkKSByZXR1cm4gdm9pZCB0aGlzLm9wdGltaXplKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyBpbnN0YW5jZW9mIGZbImRlZmF1bHQiXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gcy5uZXdsaW5lSW5kZXgocy5sZW5ndGgoKSwgITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID4gLTEgJiYgKHMgPSBzLnNwbGl0KGggKyAxKSkgPT09IHApIHJldHVybiB2b2lkIHRoaXMub3B0aW1pemUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwIGluc3RhbmNlb2YgZlsiZGVmYXVsdCJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBwLm5ld2xpbmVJbmRleCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID4gLTEgJiYgcC5zcGxpdChtICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gcC5jaGlsZHJlbi5oZWFkIGluc3RhbmNlb2YgY1siZGVmYXVsdCJdID8gbnVsbCA6IHAuY2hpbGRyZW4uaGVhZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMubW92ZUNoaWxkcmVuKHAsIHkpLCBzLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpbWl6ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImVuYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9ICEoYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQpIHx8IGFyZ3VtZW50c1swXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb21Ob2RlLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0QXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09IHRoaXMud2hpdGVsaXN0IHx8IHRoaXMud2hpdGVsaXN0W3JdKSAmJiAoaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImZvcm1hdEF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuLCByLCBvKSwgdGhpcy5vcHRpbWl6ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbnNlcnRBdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gciB8fCBudWxsID09IHRoaXMud2hpdGVsaXN0IHx8IHRoaXMud2hpdGVsaXN0W25dKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA+PSB0aGlzLmxlbmd0aCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHIgfHwgbnVsbCA9PSBhWyJkZWZhdWx0Il0ucXVlcnkobiwgYVsiZGVmYXVsdCJdLlNjb3BlLkJMT0NLKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGFbImRlZmF1bHQiXS5jcmVhdGUodGhpcy5zdGF0aWNzLmRlZmF1bHRDaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobyksIG51bGwgPT0gciAmJiBuLmVuZHNXaXRoKCJcbiIpICYmIChuID0gbi5zbGljZSgwLCAtMSkpLCBvLmluc2VydEF0KDAsIG4sIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBhWyJkZWZhdWx0Il0uY3JlYXRlKG4sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5zZXJ0QXQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpbWl6ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaW5zZXJ0QmVmb3JlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5zdGF0aWNzLnNjb3BlID09PSBhWyJkZWZhdWx0Il0uU2NvcGUuSU5MSU5FX0JMT1QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYVsiZGVmYXVsdCJdLmNyZWF0ZSh0aGlzLnN0YXRpY3MuZGVmYXVsdENoaWxkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuYXBwZW5kQ2hpbGQoZSksIGUgPSByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImluc2VydEJlZm9yZSIsIHRoaXMpLmNhbGwodGhpcywgZSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAibGVhZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGF0aChlKS5wb3AoKSB8fCBbbnVsbCwgLTFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxpbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSB0aGlzLmxlbmd0aCgpID8gdGhpcy5saW5lKGUgLSAxKSA6IHRoaXMuZGVzY2VuZGFudChoLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJsaW5lcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IE51bWJlci5NQVhfVkFMVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZnVuY3Rpb24gcihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2hpbGRyZW4uZm9yRWFjaEF0KHQsIG4sIChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgoZSkgPyBvLnB1c2goZSkgOiBlIGluc3RhbmNlb2YgYVsiZGVmYXVsdCJdLkNvbnRhaW5lciAmJiAobyA9IG8uY29uY2F0KHIoZSwgdCwgaSkpKSwgaSAtPSBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbih0aGlzLCBlLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJvcHRpbWl6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITAgIT09IHRoaXMuYmF0Y2ggJiYgKGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJvcHRpbWl6ZSIsIHRoaXMpLmNhbGwodGhpcywgZSwgbiksIGUubGVuZ3RoID4gMCAmJiB0aGlzLmVtaXR0ZXIuZW1pdChzWyJkZWZhdWx0Il0uZXZlbnRzLlNDUk9MTF9PUFRJTUlaRSwgZSwgbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInBhdGgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAicGF0aCIsIHRoaXMpLmNhbGwodGhpcywgZSkuc2xpY2UoMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoITAgIT09IHRoaXMuYmF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBlICYmIChuID0gZSksIEFycmF5LmlzQXJyYXkoZSkgfHwgKGUgPSB0aGlzLm9ic2VydmVyLnRha2VSZWNvcmRzKCkpLCBlLmxlbmd0aCA+IDAgJiYgdGhpcy5lbWl0dGVyLmVtaXQoc1siZGVmYXVsdCJdLmV2ZW50cy5TQ1JPTExfQkVGT1JFX1VQREFURSwgbiwgZSksIGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJ1cGRhdGUiLCB0aGlzKS5jYWxsKHRoaXMsIGUuY29uY2F0KFtdKSksIGUubGVuZ3RoID4gMCAmJiB0aGlzLmVtaXR0ZXIuZW1pdChzWyJkZWZhdWx0Il0uZXZlbnRzLlNDUk9MTF9VUERBVEUsIG4sIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShhWyJkZWZhdWx0Il0uU2Nyb2xsKTsKICAgICAgICAgICAgICAgICAgICAgICAgbS5ibG90TmFtZSA9ICJzY3JvbGwiLCBtLmNsYXNzTmFtZSA9ICJxbC1lZGl0b3IiLCBtLnRhZ05hbWUgPSAiRElWIiwgbS5kZWZhdWx0Q2hpbGQgPSAiYmxvY2siLCBtLmFsbG93ZWRDaGlsZHJlbiA9IFtsWyJkZWZhdWx0Il0sIHUuQmxvY2tFbWJlZCwgZFsiZGVmYXVsdCJdXSwgdFsiZGVmYXVsdCJdID0gbQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuU0hPUlRLRVkgPSB0WyJkZWZhdWx0Il0gPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiBlLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgZSAhPT0gU3ltYm9sLnByb3RvdHlwZSA/ICJzeW1ib2wiIDogdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSkgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhLCBzID0gZVtTeW1ib2wuaXRlcmF0b3JdKCk7ICEociA9IChhID0gcy5uZXh0KCkpLmRvbmUpICYmIChuLnB1c2goYS52YWx1ZSksICF0IHx8IG4ubGVuZ3RoICE9PSB0KTsgciA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICEwLCBpID0gdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhciAmJiBzWyJyZXR1cm4iXSAmJiBzWyJyZXR1cm4iXSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB0aHJvdyBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbShuKDIxKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbShuKDExKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbShuKDMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBtKG4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG0obigyMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG0obigwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gbShuKDUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBtKG4oMTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBtKG4oOSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB5KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGVbdF0gPSBuLCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSAoMCwgcFsiZGVmYXVsdCJdKSgicXVpbGw6a2V5Ym9hcmQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSAvTWFjL2kudGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pID8gIm1ldGFLZXkiIDogImN0cmxLZXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSwgbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5iaW5kaW5ncyA9IHt9LCBPYmplY3Qua2V5cyhyLm9wdGlvbnMuYmluZGluZ3MpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgibGlzdCBhdXRvZmlsbCIgIT09IHQgfHwgbnVsbCA9PSBlLnNjcm9sbC53aGl0ZWxpc3QgfHwgZS5zY3JvbGwud2hpdGVsaXN0Lmxpc3QpICYmIHIub3B0aW9ucy5iaW5kaW5nc1t0XSAmJiByLmFkZEJpbmRpbmcoci5vcHRpb25zLmJpbmRpbmdzW3RdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIuYWRkQmluZGluZyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHQua2V5cy5FTlRFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0S2V5OiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGspLCByLmFkZEJpbmRpbmcoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0LmtleXMuRU5URVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhS2V5OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybEtleTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdEtleTogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAoZnVuY3Rpb24oKSB7fSkpLCAvRmlyZWZveC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgPyAoci5hZGRCaW5kaW5nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdC5rZXlzLkJBQ0tTUEFDRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIE8pLCByLmFkZEJpbmRpbmcoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0LmtleXMuREVMRVRFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgXykpIDogKHIuYWRkQmluZGluZyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHQua2V5cy5CQUNLU1BBQ0UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogL14uPyQvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIE8pLCByLmFkZEJpbmRpbmcoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0LmtleXMuREVMRVRFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXg6IC9eLj8kLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBfKSksIHIuYWRkQmluZGluZyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHQua2V5cy5CQUNLU1BBQ0UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB4KSwgci5hZGRCaW5kaW5nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdC5rZXlzLkRFTEVURQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHgpLCByLmFkZEJpbmRpbmcoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0LmtleXMuQkFDS1NQQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0S2V5OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybEtleTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFLZXk6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdEtleTogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIE8pLCByLmxpc3RlbigpLCByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBpKHQsIG51bGwsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIm1hdGNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gUyh0KSwgIVsiYWx0S2V5IiwgImN0cmxLZXkiLCAibWV0YUtleSIsICJzaGlmdEtleSJdLnNvbWUoKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF0W25dICE9PSBlW25dICYmIG51bGwgIT09IHRbbl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSAmJiB0LmtleSA9PT0gKGUud2hpY2ggfHwgZS5rZXlDb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBpKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZEJpbmRpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBTKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gciB8fCBudWxsID09IHIua2V5KSByZXR1cm4gZy53YXJuKCJBdHRlbXB0ZWQgdG8gYWRkIGludmFsaWQga2V5Ym9hcmQgYmluZGluZyIsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdCAmJiAodCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiAmJiAobiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgciA9ICgwLCB1WyJkZWZhdWx0Il0pKHIsIHQsIG4pLCB0aGlzLmJpbmRpbmdzW3Iua2V5XSA9IHRoaXMuYmluZGluZ3Nbci5rZXldIHx8IFtdLCB0aGlzLmJpbmRpbmdzW3Iua2V5XS5wdXNoKHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxpc3RlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwucm9vdC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4uZGVmYXVsdFByZXZlbnRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4ud2hpY2ggfHwgbi5rZXlDb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IChlLmJpbmRpbmdzW2ldIHx8IFtdKS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5tYXRjaChuLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gYS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gZS5xdWlsbC5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHUgJiYgZS5xdWlsbC5oYXNGb2N1cygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBlLnF1aWxsLmdldExpbmUodS5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBvKGwsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGNbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlLnF1aWxsLmdldExlYWYodS5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBvKGgsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gbVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG1bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSAwID09PSB1Lmxlbmd0aCA/IFt5LCBnXSA6IGUucXVpbGwuZ2V0TGVhZih1LmluZGV4ICsgdS5sZW5ndGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gbyh2LCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGJbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBiWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0geSBpbnN0YW5jZW9mIGZbImRlZmF1bHQiXS5UZXh0ID8geS52YWx1ZSgpLnNsaWNlKDAsIGcpIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSB3IGluc3RhbmNlb2YgZlsiZGVmYXVsdCJdLlRleHQgPyB3LnZhbHVlKCkuc2xpY2UoTykgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogMCA9PT0gdS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eTogMCA9PT0gdS5sZW5ndGggJiYgZC5sZW5ndGgoKSA8PSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBlLnF1aWxsLmdldEZvcm1hdCh1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeDogeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuc29tZSgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0LmNvbGxhcHNlZCAmJiB0LmNvbGxhcHNlZCAhPT0gay5jb2xsYXBzZWQpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gdC5lbXB0eSAmJiB0LmVtcHR5ICE9PSBrLmVtcHR5KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHQub2Zmc2V0ICYmIHQub2Zmc2V0ICE9PSBrLm9mZnNldCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0LmZvcm1hdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmZvcm1hdC5ldmVyeSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBrLmZvcm1hdFtlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIm9iamVjdCIgPT09IHIodC5mb3JtYXQpICYmICFPYmplY3Qua2V5cyh0LmZvcm1hdCkuZXZlcnkoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IHQuZm9ybWF0W2VdID8gbnVsbCAhPSBrLmZvcm1hdFtlXSA6ICExID09PSB0LmZvcm1hdFtlXSA/IG51bGwgPT0gay5mb3JtYXRbZV0gOiAoMCwgc1siZGVmYXVsdCJdKSh0LmZvcm1hdFtlXSwgay5mb3JtYXRbZV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEobnVsbCAhPSB0LnByZWZpeCAmJiAhdC5wcmVmaXgudGVzdChrLnByZWZpeCkgfHwgbnVsbCAhPSB0LnN1ZmZpeCAmJiAhdC5zdWZmaXgudGVzdChrLnN1ZmZpeCkgfHwgITAgPT09IHQuaGFuZGxlci5jYWxsKGUsIHUsIGspKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSAmJiBuLnByZXZlbnREZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGhbImRlZmF1bHQiXSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCByID0gZSA9PT0gYi5rZXlzLkxFRlQgPyAicHJlZml4IiA6ICJzdWZmaXgiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHkobiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRLZXk6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0S2V5OiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByLCAvXiQvKSwgeShuLCAiaGFuZGxlciIsIChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPT09IGIua2V5cy5SSUdIVCAmJiAociArPSBuLmxlbmd0aCArIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5xdWlsbC5nZXRMZWFmKHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKG8oaSwgMSlbMF0gaW5zdGFuY2VvZiBmWyJkZWZhdWx0Il0uRW1iZWQgJiYgKGUgPT09IGIua2V5cy5MRUZUID8gdCA/IHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKG4uaW5kZXggLSAxLCBuLmxlbmd0aCArIDEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpIDogdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24obi5pbmRleCAtIDEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpIDogdCA/IHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKG4uaW5kZXgsIG4ubGVuZ3RoICsgMSwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikgOiB0aGlzLnF1aWxsLnNldFNlbGVjdGlvbihuLmluZGV4ICsgbi5sZW5ndGggKyAxLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gTyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgwID09PSBlLmluZGV4IHx8IHRoaXMucXVpbGwuZ2V0TGVuZ3RoKCkgPD0gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMucXVpbGwuZ2V0TGluZShlLmluZGV4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG8obiwgMSlbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gdC5vZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLnF1aWxsLmdldExpbmUoZS5pbmRleCAtIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG8oYSwgMSlbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHMgJiYgcy5sZW5ndGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gci5mb3JtYXRzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMucXVpbGwuZ2V0Rm9ybWF0KGUuaW5kZXggLSAxLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjWyJkZWZhdWx0Il0uYXR0cmlidXRlcy5kaWZmKHUsIGwpIHx8IHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSAvW1x1RDgwMC1cdURCRkZdW1x1REMwMC1cdURGRkZdJC8udGVzdCh0LnByZWZpeCkgPyAyIDogMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLmRlbGV0ZVRleHQoZS5pbmRleCAtIGYsIGYsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCBPYmplY3Qua2V5cyhpKS5sZW5ndGggPiAwICYmIHRoaXMucXVpbGwuZm9ybWF0TGluZShlLmluZGV4IC0gZiwgZiwgaSwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIHRoaXMucXVpbGwuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBfKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gL15bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0vLnRlc3QodC5zdWZmaXgpID8gMiA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlLmluZGV4ID49IHRoaXMucXVpbGwuZ2V0TGVuZ3RoKCkgLSBuKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5xdWlsbC5nZXRMaW5lKGUuaW5kZXgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbyhhLCAxKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5vZmZzZXQgPj0gcy5sZW5ndGgoKSAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB0aGlzLnF1aWxsLmdldExpbmUoZS5pbmRleCArIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8odSwgMSlbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IHMuZm9ybWF0cygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0aGlzLnF1aWxsLmdldEZvcm1hdChlLmluZGV4LCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBjWyJkZWZhdWx0Il0uYXR0cmlidXRlcy5kaWZmKGYsIHApIHx8IHt9LCBpID0gbC5sZW5ndGgoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuZGVsZXRlVGV4dChlLmluZGV4LCBuLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgT2JqZWN0LmtleXMocikubGVuZ3RoID4gMCAmJiB0aGlzLnF1aWxsLmZvcm1hdExpbmUoZS5pbmRleCArIGkgLSAxLCBuLCByLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB4KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5xdWlsbC5nZXRMaW5lcyhlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0WzBdLmZvcm1hdHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRbdC5sZW5ndGggLSAxXS5mb3JtYXRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGNbImRlZmF1bHQiXS5hdHRyaWJ1dGVzLmRpZmYobywgcikgfHwge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuZGVsZXRlVGV4dChlLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgT2JqZWN0LmtleXMobikubGVuZ3RoID4gMCAmJiB0aGlzLnF1aWxsLmZvcm1hdExpbmUoZS5pbmRleCwgMSwgbiwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKGUuaW5kZXgsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCksIHRoaXMucXVpbGwuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBrKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGVuZ3RoID4gMCAmJiB0aGlzLnF1aWxsLnNjcm9sbC5kZWxldGVBdChlLmluZGV4LCBlLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5rZXlzKHQuZm9ybWF0KS5yZWR1Y2UoKGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZlsiZGVmYXVsdCJdLnF1ZXJ5KG4sIGZbImRlZmF1bHQiXS5TY29wZS5CTE9DSykgJiYgIUFycmF5LmlzQXJyYXkodC5mb3JtYXRbbl0pICYmIChlW25dID0gdC5mb3JtYXRbbl0pLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwge30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC5pbnNlcnRUZXh0KGUuaW5kZXgsICJcbiIsIHIsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCB0aGlzLnF1aWxsLnNldFNlbGVjdGlvbihlLmluZGV4ICsgMSwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UKSwgdGhpcy5xdWlsbC5mb2N1cygpLCBPYmplY3Qua2V5cyh0LmZvcm1hdCkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT0gcltlXSAmJiAoQXJyYXkuaXNBcnJheSh0LmZvcm1hdFtlXSkgfHwgImxpbmsiICE9PSBlICYmIG4ucXVpbGwuZm9ybWF0KGUsIHQuZm9ybWF0W2VdLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBFKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBiLmtleXMuVEFCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0S2V5OiAhZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvZGUtYmxvY2siOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZbImRlZmF1bHQiXS5xdWVyeSgiY29kZS1ibG9jayIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5xdWlsbC5zY3JvbGwuZGVzY2VuZGFudChuLCByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvKGEsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gc1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLnF1aWxsLmdldEluZGV4KHUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB1Lm5ld2xpbmVJbmRleChsLCAhMCkgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB1Lm5ld2xpbmVJbmRleChjICsgbCArIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB1LmRvbU5vZGUudGV4dENvbnRlbnQuc2xpY2UocCwgaCkuc3BsaXQoIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMCwgbS5mb3JFYWNoKChmdW5jdGlvbih0LCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA/ICh1Lmluc2VydEF0KHAgKyBsLCBuLlRBQiksIGwgKz0gbi5UQUIubGVuZ3RoLCAwID09PSBvID8gciArPSBuLlRBQi5sZW5ndGggOiBpICs9IG4uVEFCLmxlbmd0aCkgOiB0LnN0YXJ0c1dpdGgobi5UQUIpICYmICh1LmRlbGV0ZUF0KHAgKyBsLCBuLlRBQi5sZW5ndGgpLCBsIC09IG4uVEFCLmxlbmd0aCwgMCA9PT0gbyA/IHIgLT0gbi5UQUIubGVuZ3RoIDogaSAtPSBuLlRBQi5sZW5ndGgpLCBsICs9IHQubGVuZ3RoICsgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnF1aWxsLnVwZGF0ZShkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24ociwgaSwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBDKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBlWzBdLnRvVXBwZXJDYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRLZXk6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC5mb3JtYXQoZSwgIW4uZm9ybWF0W2VdLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gUyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUgfHwgIm51bWJlciIgPT0gdHlwZW9mIGUpIHJldHVybiBTKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09PSAodm9pZCAwID09PSBlID8gInVuZGVmaW5lZCIgOiByKGUpKSAmJiAoZSA9ICgwLCBhWyJkZWZhdWx0Il0pKGUsICExKSksICJzdHJpbmciID09IHR5cGVvZiBlLmtleSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBiLmtleXNbZS5rZXkudG9VcHBlckNhc2UoKV0pIGUua2V5ID0gYi5rZXlzW2Uua2V5LnRvVXBwZXJDYXNlKCldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSAhPT0gZS5rZXkubGVuZ3RoKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5rZXkgPSBlLmtleS50b1VwcGVyQ2FzZSgpLmNoYXJDb2RlQXQoMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zaG9ydEtleSAmJiAoZVt2XSA9IGUuc2hvcnRLZXksIGRlbGV0ZSBlLnNob3J0S2V5KSwgZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGIua2V5cyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJBQ0tTUEFDRTogOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQjogOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOVEVSOiAxMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTQ0FQRTogMjcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRUZUOiAzNywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVQOiAzOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJJR0hUOiAzOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPV046IDQwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgREVMRVRFOiA0NgogICAgICAgICAgICAgICAgICAgICAgICB9LCBiLkRFRkFVTFRTID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZ3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2xkOiBDKCJib2xkIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRhbGljOiBDKCJpdGFsaWMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmU6IEMoInVuZGVybGluZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGIua2V5cy5UQUIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogWyJibG9ja3F1b3RlIiwgImluZGVudCIsICJsaXN0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbGxhcHNlZCAmJiAwICE9PSB0Lm9mZnNldCkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC5mb3JtYXQoImluZGVudCIsICIrMSIsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGRlbnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBiLmtleXMuVEFCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdEtleTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogWyJibG9ja3F1b3RlIiwgImluZGVudCIsICJsaXN0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbGxhcHNlZCAmJiAwICE9PSB0Lm9mZnNldCkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC5mb3JtYXQoImluZGVudCIsICItMSIsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvdXRkZW50IGJhY2tzcGFjZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBiLmtleXMuQkFDS1NQQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdEtleTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YUtleTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybEtleTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0S2V5OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IFsiaW5kZW50IiwgImxpc3QiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IHQuZm9ybWF0LmluZGVudCA/IHRoaXMucXVpbGwuZm9ybWF0KCJpbmRlbnQiLCAiLTEiLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSA6IG51bGwgIT0gdC5mb3JtYXQubGlzdCAmJiB0aGlzLnF1aWxsLmZvcm1hdCgibGlzdCIsICExLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kZW50IGNvZGUtYmxvY2siOiBFKCEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3V0ZGVudCBjb2RlLWJsb2NrIjogRSghMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlbW92ZSB0YWIiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogYi5rZXlzLlRBQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRLZXk6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6IC9cdCQvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLmRlbGV0ZVRleHQoZS5pbmRleCAtIDEsIDEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGIua2V5cy5UQUIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuaGlzdG9yeS5jdXRvZmYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gKG5ldyBsWyJkZWZhdWx0Il0pLnJldGFpbihlLmluZGV4KVsiZGVsZXRlIl0oZS5sZW5ndGgpLmluc2VydCgiXHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwudXBkYXRlQ29udGVudHModCwgZFsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIHRoaXMucXVpbGwuaGlzdG9yeS5jdXRvZmYoKSwgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24oZS5pbmRleCArIDEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgZW1wdHkgZW50ZXIiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogYi5rZXlzLkVOVEVSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IFsibGlzdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuZm9ybWF0KCJsaXN0IiwgITEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCB0LmZvcm1hdC5pbmRlbnQgJiYgdGhpcy5xdWlsbC5mb3JtYXQoImluZGVudCIsICExLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hlY2tsaXN0IGVudGVyIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGIua2V5cy5FTlRFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0OiAiY2hlY2tlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnF1aWxsLmdldExpbmUoZS5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG8odCwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICgwLCB1WyJkZWZhdWx0Il0pKHt9LCByLmZvcm1hdHMoKSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0OiAiY2hlY2tlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKG5ldyBsWyJkZWZhdWx0Il0pLnJldGFpbihlLmluZGV4KS5pbnNlcnQoIlxuIiwgYSkucmV0YWluKHIubGVuZ3RoKCkgLSBpIC0gMSkucmV0YWluKDEsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogInVuY2hlY2tlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwudXBkYXRlQ29udGVudHMocywgZFsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKGUuaW5kZXggKyAxLCBkWyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpLCB0aGlzLnF1aWxsLnNjcm9sbEludG9WaWV3KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYWRlciBlbnRlciI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBiLmtleXMuRU5URVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogWyJoZWFkZXIiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4OiAvXiQvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMucXVpbGwuZ2V0TGluZShlLmluZGV4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbyhuLCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gclswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gclsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKG5ldyBsWyJkZWZhdWx0Il0pLnJldGFpbihlLmluZGV4KS5pbnNlcnQoIlxuIiwgdC5mb3JtYXQpLnJldGFpbihpLmxlbmd0aCgpIC0gYSAtIDEpLnJldGFpbigxLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC51cGRhdGVDb250ZW50cyhzLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24oZS5pbmRleCArIDEsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCksIHRoaXMucXVpbGwuc2Nyb2xsSW50b1ZpZXcoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBhdXRvZmlsbCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiICIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAvXlxzKj8oXGQrXC58LXxcKnxcWyA/XF18XFt4XF0pJC8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5wcmVmaXgubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnF1aWxsLmdldExpbmUoZS5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG8ociwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGlbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+IG4pIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LnByZWZpeC50cmltKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiWyBdIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9ICJ1bmNoZWNrZWQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbeF0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gImNoZWNrZWQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICItIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIqIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9ICJidWxsZXQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gIm9yZGVyZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLmluc2VydFRleHQoZS5pbmRleCwgIiAiLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdGhpcy5xdWlsbC5oaXN0b3J5LmN1dG9mZigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAobmV3IGxbImRlZmF1bHQiXSkucmV0YWluKGUuaW5kZXggLSBzKVsiZGVsZXRlIl0obiArIDEpLnJldGFpbihhLmxlbmd0aCgpIC0gMiAtIHMpLnJldGFpbigxLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLnVwZGF0ZUNvbnRlbnRzKGMsIGRbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCB0aGlzLnF1aWxsLmhpc3RvcnkuY3V0b2ZmKCksIHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKGUuaW5kZXggLSBuLCBkWyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2RlIGV4aXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogYi5rZXlzLkVOVEVSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IFsiY29kZS1ibG9jayJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6IC9cblxuJC8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeDogL15ccyskLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnF1aWxsLmdldExpbmUoZS5pbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG8odCwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IChuZXcgbFsiZGVmYXVsdCJdKS5yZXRhaW4oZS5pbmRleCArIHIubGVuZ3RoKCkgLSBpIC0gMikucmV0YWluKDEsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvZGUtYmxvY2siOiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlbImRlbGV0ZSJdKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC51cGRhdGVDb250ZW50cyhhLCBkWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1iZWQgbGVmdCI6IHcoYi5rZXlzLkxFRlQsICExKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1iZWQgbGVmdCBzaGlmdCI6IHcoYi5rZXlzLkxFRlQsICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1iZWQgcmlnaHQiOiB3KGIua2V5cy5SSUdIVCwgITEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbWJlZCByaWdodCBzaGlmdCI6IHcoYi5rZXlzLlJJR0hULCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgdFsiZGVmYXVsdCJdID0gYiwgdC5TSE9SVEtFWSA9IHYKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSwgcyA9IGVbU3ltYm9sLml0ZXJhdG9yXSgpOyAhKHIgPSAoYSA9IHMubmV4dCgpKS5kb25lKSAmJiAobi5wdXNoKGEudmFsdWUpLCAhdCB8fCBuLmxlbmd0aCAhPT0gdCk7IHIgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgaSA9IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXIgJiYgc1sicmV0dXJuIl0gJiYgc1sicmV0dXJuIl0oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobykgdGhyb3cgaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24gYyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogYyhvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHUobigwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdShuKDcpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5zZWxlY3Rpb24gPSBuLCByLnRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodC5DT05URU5UUyksIHIuZG9tTm9kZS5hcHBlbmRDaGlsZChyLnRleHROb2RlKSwgci5fbGVuZ3RoID0gMCwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgaSh0LCBudWxsLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIGkodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkZXRhY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSB0aGlzLl9sZW5ndGgpIHJldHVybiBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiZm9ybWF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IHRoaXMsIGkgPSAwOyBudWxsICE9IHIgJiYgci5zdGF0aWNzLnNjb3BlICE9PSBhWyJkZWZhdWx0Il0uU2NvcGUuQkxPQ0tfQkxPVDspIGkgKz0gci5vZmZzZXQoci5wYXJlbnQpLCByID0gci5wYXJlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gciAmJiAodGhpcy5fbGVuZ3RoID0gdC5DT05URU5UUy5sZW5ndGgsIHIub3B0aW1pemUoKSwgci5mb3JtYXRBdChpLCB0LkNPTlRFTlRTLmxlbmd0aCwgZSwgbiksIHRoaXMuX2xlbmd0aCA9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImluZGV4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdGhpcy50ZXh0Tm9kZSA/IDAgOiBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5kZXgiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxlbmd0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInBvc2l0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcy50ZXh0Tm9kZSwgdGhpcy50ZXh0Tm9kZS5kYXRhLmxlbmd0aF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVtb3ZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJyZW1vdmUiLCB0aGlzKS5jYWxsKHRoaXMpLCB0aGlzLnBhcmVudCA9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVzdG9yZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0aW9uLmNvbXBvc2luZyAmJiBudWxsICE9IHRoaXMucGFyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudGV4dE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuc2VsZWN0aW9uLmdldE5hdGl2ZVJhbmdlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBuICYmIG4uc3RhcnQubm9kZSA9PT0gZSAmJiBuLmVuZC5ub2RlID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBbZSwgbi5zdGFydC5vZmZzZXQsIG4uZW5kLm9mZnNldF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGxbMF0sIGkgPSBsWzFdLCB1ID0gbFsyXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG51bGwgIT0gdGhpcy5kb21Ob2RlLmxhc3RDaGlsZCAmJiB0aGlzLmRvbU5vZGUubGFzdENoaWxkICE9PSB0aGlzLnRleHROb2RlOykgdGhpcy5kb21Ob2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuZG9tTm9kZS5sYXN0Q2hpbGQsIHRoaXMuZG9tTm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXh0Tm9kZS5kYXRhICE9PSB0LkNPTlRFTlRTKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLnRleHROb2RlLmRhdGEuc3BsaXQodC5DT05URU5UUykuam9pbigiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0IGluc3RhbmNlb2Ygc1siZGVmYXVsdCJdID8gKG8gPSB0aGlzLm5leHQuZG9tTm9kZSwgdGhpcy5uZXh0Lmluc2VydEF0KDAsIGMpLCB0aGlzLnRleHROb2RlLmRhdGEgPSB0LkNPTlRFTlRTKSA6ICh0aGlzLnRleHROb2RlLmRhdGEgPSBjLCB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUoYVsiZGVmYXVsdCJdLmNyZWF0ZSh0aGlzLnRleHROb2RlKSwgdGhpcyksIHRoaXMudGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0LkNPTlRFTlRTKSwgdGhpcy5kb21Ob2RlLmFwcGVuZENoaWxkKHRoaXMudGV4dE5vZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVtb3ZlKCksIG51bGwgIT0gaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gW2ksIHVdLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKG8uZGF0YS5sZW5ndGgsIGUgLSAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gcihmLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9IGRbMF0sIHUgPSBkWzFdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZTogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE5vZGU6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ1cGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuc29tZSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiY2hhcmFjdGVyRGF0YSIgPT09IGUudHlwZSAmJiBlLnRhcmdldCA9PT0gbi50ZXh0Tm9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciAmJiAodC5yYW5nZSA9IHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidmFsdWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oYVsiZGVmYXVsdCJdLkVtYmVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC5ibG90TmFtZSA9ICJjdXJzb3IiLCBsLmNsYXNzTmFtZSA9ICJxbC1jdXJzb3IiLCBsLnRhZ05hbWUgPSAic3BhbiIsIGwuQ09OVEVOVFMgPSAiXHVmZWZmIiwgdFsiZGVmYXVsdCJdID0gbAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYShuKDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuKDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGEobyk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHModGhpcywgdCksIHUodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShyWyJkZWZhdWx0Il0uQ29udGFpbmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC5hbGxvd2VkQ2hpbGRyZW4gPSBbaVsiZGVmYXVsdCJdLCBvLkJsb2NrRW1iZWQsIGxdLCB0WyJkZWZhdWx0Il0gPSBsCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5Db2xvclN0eWxlID0gdC5Db2xvckNsYXNzID0gdC5Db2xvckF0dHJpYnV0b3IgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIHAoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHAobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKHIgPSBhKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSh0aGlzLCB0KSwgbCh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgbyh0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ2YWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJ2YWx1ZSIsIHRoaXMpLmNhbGwodGhpcywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zdGFydHNXaXRoKCJyZ2IoIikgPyAobiA9IG4ucmVwbGFjZSgvXlteXGRdKy8sICIiKS5yZXBsYWNlKC9bXlxkXSskLywgIiIpLCAiIyIgKyBuLnNwbGl0KCIsIikubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgiMDAiICsgcGFyc2VJbnQoZSkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5qb2luKCIiKSkgOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oc1siZGVmYXVsdCJdLkF0dHJpYnV0b3IuU3R5bGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG5ldyBzWyJkZWZhdWx0Il0uQXR0cmlidXRvci5DbGFzcygiY29sb3IiLCAicWwtY29sb3IiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IHNbImRlZmF1bHQiXS5TY29wZS5JTkxJTkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG5ldyBjKCJjb2xvciIsICJjb2xvciIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZTogc1siZGVmYXVsdCJdLlNjb3BlLklOTElORQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuQ29sb3JBdHRyaWJ1dG9yID0gYywgdC5Db2xvckNsYXNzID0gZiwgdC5Db2xvclN0eWxlID0gZAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuc2FuaXRpemUgPSB0WyJkZWZhdWx0Il0gPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIGYoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IGYobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oNik7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKHRoaXMsIHQpLCB1KHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAhPT0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lIHx8ICFuKSByZXR1cm4gaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImZvcm1hdCIsIHRoaXMpLmNhbGwodGhpcywgZSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmNvbnN0cnVjdG9yLnNhbml0aXplKG4pLCB0aGlzLmRvbU5vZGUuc2V0QXR0cmlidXRlKCJocmVmIiwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjcmVhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gaSh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCksICJjcmVhdGUiLCB0aGlzKS5jYWxsKHRoaXMsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IHRoaXMuc2FuaXRpemUoZSksIG4uc2V0QXR0cmlidXRlKCJocmVmIiwgZSksIG4uc2V0QXR0cmlidXRlKCJyZWwiLCAibm9vcGVuZXIgbm9yZWZlcnJlciIpLCBuLnNldEF0dHJpYnV0ZSgidGFyZ2V0IiwgIl9ibGFuayIpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSgiaHJlZiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNhbml0aXplIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhlLCB0aGlzLlBST1RPQ09MX1dISVRFTElTVCkgPyBlIDogdGhpcy5TQU5JVElaRURfVVJMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKChyID0gYSkgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmhyZWYgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmhyZWYuc2xpY2UoMCwgbi5ocmVmLmluZGV4T2YoIjoiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pbmRleE9mKHIpID4gLTEKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBsLmJsb3ROYW1lID0gImxpbmsiLCBsLnRhZ05hbWUgPSAiQSIsIGwuU0FOSVRJWkVEX1VSTCA9ICJhYm91dDpibGFuayIsIGwuUFJPVE9DT0xfV0hJVEVMSVNUID0gWyJodHRwIiwgImh0dHBzIiwgIm1haWx0byIsICJ0ZWwiXSwgdFsiZGVmYXVsdCJdID0gbCwgdC5zYW5pdGl6ZSA9IGMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAic3ltYm9sIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgZS5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIGUgIT09IFN5bWJvbC5wcm90b3R5cGUgPyAic3ltYm9sIiA6IHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBzKG4oMjMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBzKG4oMTA3KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNldEF0dHJpYnV0ZSh0LCAhKCJ0cnVlIiA9PT0gZS5nZXRBdHRyaWJ1dGUodCkpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsIGUpLCB0aGlzLnNlbGVjdCA9IHQsIHRoaXMuY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLCB0aGlzLmJ1aWxkUGlja2VyKCksIHRoaXMuc2VsZWN0LnN0eWxlLmRpc3BsYXkgPSAibm9uZSIsIHRoaXMuc2VsZWN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuY29udGFpbmVyLCB0aGlzLnNlbGVjdCksIHRoaXMubGFiZWwuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnRvZ2dsZVBpY2tlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmxhYmVsLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUua2V5Q29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBpWyJkZWZhdWx0Il0ua2V5cy5FTlRFUjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnRvZ2dsZVBpY2tlcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBpWyJkZWZhdWx0Il0ua2V5cy5FU0NBUEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5lc2NhcGUoKSwgZS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMudXBkYXRlLmJpbmQodGhpcykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyhlLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInRvZ2dsZVBpY2tlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xlKCJxbC1leHBhbmRlZCIpLCBsKHRoaXMubGFiZWwsICJhcmlhLWV4cGFuZGVkIiksIGwodGhpcy5vcHRpb25zLCAiYXJpYS1oaWRkZW4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJidWlsZEl0ZW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnRhYkluZGV4ID0gIjAiLCBuLnNldEF0dHJpYnV0ZSgicm9sZSIsICJidXR0b24iKSwgbi5jbGFzc0xpc3QuYWRkKCJxbC1waWNrZXItaXRlbSIpLCBlLmhhc0F0dHJpYnV0ZSgidmFsdWUiKSAmJiBuLnNldEF0dHJpYnV0ZSgiZGF0YS12YWx1ZSIsIGUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpKSwgZS50ZXh0Q29udGVudCAmJiBuLnNldEF0dHJpYnV0ZSgiZGF0YS1sYWJlbCIsIGUudGV4dENvbnRlbnQpLCBuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zZWxlY3RJdGVtKG4sICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUua2V5Q29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaVsiZGVmYXVsdCJdLmtleXMuRU5URVI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc2VsZWN0SXRlbShuLCAhMCksIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBpWyJkZWZhdWx0Il0ua2V5cy5FU0NBUEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZXNjYXBlKCksIGUucHJldmVudERlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYnVpbGRMYWJlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2xhc3NMaXN0LmFkZCgicWwtcGlja2VyLWxhYmVsIiksIGUuaW5uZXJIVE1MID0gYVsiZGVmYXVsdCJdLCBlLnRhYkluZGV4ID0gIjAiLCBlLnNldEF0dHJpYnV0ZSgicm9sZSIsICJidXR0b24iKSwgZS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCAiZmFsc2UiKSwgdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQoZSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYnVpbGRPcHRpb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuY2xhc3NMaXN0LmFkZCgicWwtcGlja2VyLW9wdGlvbnMiKSwgdC5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwgInRydWUiKSwgdC50YWJJbmRleCA9ICItMSIsIHQuaWQgPSAicWwtcGlja2VyLW9wdGlvbnMtIiArIHUsIHUgKz0gMSwgdGhpcy5sYWJlbC5zZXRBdHRyaWJ1dGUoImFyaWEtY29udHJvbHMiLCB0LmlkKSwgdGhpcy5vcHRpb25zID0gdCwgW10uc2xpY2UuY2FsbCh0aGlzLnNlbGVjdC5vcHRpb25zKS5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUuYnVpbGRJdGVtKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hcHBlbmRDaGlsZChyKSwgITAgPT09IG4uc2VsZWN0ZWQgJiYgZS5zZWxlY3RJdGVtKHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYnVpbGRQaWNrZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXS5zbGljZS5jYWxsKHRoaXMuc2VsZWN0LmF0dHJpYnV0ZXMpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY29udGFpbmVyLnNldEF0dHJpYnV0ZSh0Lm5hbWUsIHQudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgicWwtcGlja2VyIiksIHRoaXMubGFiZWwgPSB0aGlzLmJ1aWxkTGFiZWwoKSwgdGhpcy5idWlsZE9wdGlvbnMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJlc2NhcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCksIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUubGFiZWwuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY2xvc2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgicWwtZXhwYW5kZWQiKSwgdGhpcy5sYWJlbC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCAiZmFsc2UiKSwgdGhpcy5vcHRpb25zLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAidHJ1ZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNlbGVjdEl0ZW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoIi5xbC1zZWxlY3RlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAhPT0gbiAmJiAobnVsbCAhPSBuICYmIG4uY2xhc3NMaXN0LnJlbW92ZSgicWwtc2VsZWN0ZWQiKSwgbnVsbCAhPSBlICYmIChlLmNsYXNzTGlzdC5hZGQoInFsLXNlbGVjdGVkIiksIHRoaXMuc2VsZWN0LnNlbGVjdGVkSW5kZXggPSBbXS5pbmRleE9mLmNhbGwoZS5wYXJlbnROb2RlLmNoaWxkcmVuLCBlKSwgZS5oYXNBdHRyaWJ1dGUoImRhdGEtdmFsdWUiKSA/IHRoaXMubGFiZWwuc2V0QXR0cmlidXRlKCJkYXRhLXZhbHVlIiwgZS5nZXRBdHRyaWJ1dGUoImRhdGEtdmFsdWUiKSkgOiB0aGlzLmxhYmVsLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS12YWx1ZSIpLCBlLmhhc0F0dHJpYnV0ZSgiZGF0YS1sYWJlbCIpID8gdGhpcy5sYWJlbC5zZXRBdHRyaWJ1dGUoImRhdGEtbGFiZWwiLCBlLmdldEF0dHJpYnV0ZSgiZGF0YS1sYWJlbCIpKSA6IHRoaXMubGFiZWwucmVtb3ZlQXR0cmlidXRlKCJkYXRhLWxhYmVsIiksIHQpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIEV2ZW50KSB0aGlzLnNlbGVjdC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiY2hhbmdlIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIm9iamVjdCIgPT09ICgidW5kZWZpbmVkIiA9PSB0eXBlb2YgRXZlbnQgPyAidW5kZWZpbmVkIiA6IHIoRXZlbnQpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pbml0RXZlbnQoImNoYW5nZSIsICEwLCAhMCksIHRoaXMuc2VsZWN0LmRpc3BhdGNoRXZlbnQobykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInVwZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0LnNlbGVjdGVkSW5kZXggPiAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCIucWwtcGlja2VyLW9wdGlvbnMiKS5jaGlsZHJlblt0aGlzLnNlbGVjdC5zZWxlY3RlZEluZGV4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLnNlbGVjdC5vcHRpb25zW3RoaXMuc2VsZWN0LnNlbGVjdGVkSW5kZXhdLCB0aGlzLnNlbGVjdEl0ZW0odCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuc2VsZWN0SXRlbShudWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBudWxsICE9IGUgJiYgZSAhPT0gdGhpcy5zZWxlY3QucXVlcnlTZWxlY3Rvcigib3B0aW9uW3NlbGVjdGVkXSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsLmNsYXNzTGlzdC50b2dnbGUoInFsLWFjdGl2ZSIsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gYwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZyhuKDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBnKG4oNSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4oNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZyhpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBnKG4oMTYpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBnKG4oMjUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBnKG4oMjQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBnKG4oMzUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBnKG4oNikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGcobigyMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGcobig3KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZyhuKDU1KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gZyhuKDQyKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gZyhuKDIzKSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBnKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgb1siZGVmYXVsdCJdLnJlZ2lzdGVyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibG90cy9ibG9jayI6IGFbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibG90cy9ibG9jay9lbWJlZCI6IGkuQmxvY2tFbWJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibG90cy9icmVhayI6IHNbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibG90cy9jb250YWluZXIiOiB1WyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxvdHMvY3Vyc29yIjogbFsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsb3RzL2VtYmVkIjogY1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsb3RzL2lubGluZSI6IGZbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibG90cy9zY3JvbGwiOiBkWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxvdHMvdGV4dCI6IHBbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGVzL2NsaXBib2FyZCI6IGhbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGVzL2hpc3RvcnkiOiBtWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlcy9rZXlib2FyZCI6IHlbImRlZmF1bHQiXQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgclsiZGVmYXVsdCJdLnJlZ2lzdGVyKGFbImRlZmF1bHQiXSwgc1siZGVmYXVsdCJdLCBsWyJkZWZhdWx0Il0sIGZbImRlZmF1bHQiXSwgZFsiZGVmYXVsdCJdLCBwWyJkZWZhdWx0Il0pLCB0WyJkZWZhdWx0Il0gPSBvWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG9tTm9kZSA9IGUsIHRoaXMuZG9tTm9kZVtyLkRBVEFfS0VZXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb3Q6IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCAic3RhdGljcyIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUuY3JlYXRlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB0aGlzLnRhZ05hbWUpIHRocm93IG5ldyByLlBhcmNobWVudEVycm9yKCJCbG90IGRlZmluaXRpb24gbWlzc2luZyB0YWdOYW1lIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnRhZ05hbWUpID8gKCJzdHJpbmciID09IHR5cGVvZiBlICYmIChlID0gZS50b1VwcGVyQ2FzZSgpLCBwYXJzZUludChlKS50b1N0cmluZygpID09PSBlICYmIChlID0gcGFyc2VJbnQoZSkpKSwgdCA9ICJudW1iZXIiID09IHR5cGVvZiBlID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLnRhZ05hbWVbZSAtIDFdKSA6IHRoaXMudGFnTmFtZS5pbmRleE9mKGUpID4gLTEgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLnRhZ05hbWVbMF0pKSA6IHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMudGFnTmFtZSksIHRoaXMuY2xhc3NOYW1lICYmIHQuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0aGlzLnBhcmVudCAmJiAodGhpcy5zY3JvbGwgPSB0aGlzLnBhcmVudC5zY3JvbGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmRvbU5vZGUuY2xvbmVOb2RlKCExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuY3JlYXRlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuZGV0YWNoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyksIGRlbGV0ZSB0aGlzLmRvbU5vZGVbci5EQVRBX0tFWV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5kZWxldGVBdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc29sYXRlKGUsIHQpLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuZm9ybWF0QXQgPSBmdW5jdGlvbihlLCB0LCBuLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5pc29sYXRlKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSByLnF1ZXJ5KG4sIHIuU2NvcGUuQkxPVCkgJiYgbykgaS53cmFwKG4sIG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChudWxsICE9IHIucXVlcnkobiwgci5TY29wZS5BVFRSSUJVVEUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHIuY3JlYXRlKHRoaXMuc3RhdGljcy5zY29wZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLndyYXAoYSksIGEuZm9ybWF0KG4sIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5pbnNlcnRBdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBudWxsID09IG4gPyByLmNyZWF0ZSgidGV4dCIsIHQpIDogci5jcmVhdGUodCwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5zcGxpdChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKG8sIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuaW5zZXJ0SW50byA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gbnVsbCksIG51bGwgIT0gdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuY2hpbGRyZW4ucmVtb3ZlKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY2hpbGRyZW4uaW5zZXJ0QmVmb3JlKHRoaXMsIHQpLCBudWxsICE9IHQgJiYgKG4gPSB0LmRvbU5vZGUpLCB0aGlzLmRvbU5vZGUucGFyZW50Tm9kZSA9PSBlLmRvbU5vZGUgJiYgdGhpcy5kb21Ob2RlLm5leHRTaWJsaW5nID09IG4gfHwgZS5kb21Ob2RlLmluc2VydEJlZm9yZSh0aGlzLmRvbU5vZGUsIG4pLCB0aGlzLnBhcmVudCA9IGUsIHRoaXMuYXR0YWNoKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5pc29sYXRlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuc3BsaXQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNwbGl0KHQpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlICYmIChlID0gdGhpcy5wYXJlbnQpLCBudWxsID09IHRoaXMucGFyZW50IHx8IHRoaXMgPT0gZSA/IDAgOiB0aGlzLnBhcmVudC5jaGlsZHJlbi5vZmZzZXQodGhpcykgKyB0aGlzLnBhcmVudC5vZmZzZXQoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5vcHRpbWl6ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0aGlzLmRvbU5vZGVbci5EQVRBX0tFWV0gJiYgZGVsZXRlIHRoaXMuZG9tTm9kZVtyLkRBVEFfS0VZXS5tdXRhdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0aGlzLmRvbU5vZGUucGFyZW50Tm9kZSAmJiB0aGlzLmRvbU5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbU5vZGUpLCB0aGlzLmRldGFjaCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBlLnBhcmVudCAmJiAoZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsIGUubmV4dCksIGUucmVtb3ZlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUucmVwbGFjZVdpdGggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gInN0cmluZyIgPT0gdHlwZW9mIGUgPyByLmNyZWF0ZShlLCB0KSA6IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnJlcGxhY2UodGhpcyksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IGUgPyB0aGlzIDogdGhpcy5uZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oZSwgdCkge30sIGUucHJvdG90eXBlLndyYXAgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gInN0cmluZyIgPT0gdHlwZW9mIGUgPyByLmNyZWF0ZShlLCB0KSA6IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZShuLCB0aGlzLm5leHQpLCBuLmFwcGVuZENoaWxkKHRoaXMpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5ibG90TmFtZSA9ICJhYnN0cmFjdCIsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gbwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbigxMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbigzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbigzMyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbigxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVzID0ge30sIHRoaXMuZG9tTm9kZSA9IGUsIHRoaXMuYnVpbGQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5wcm90b3R5cGUuYXR0cmlidXRlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID8gZS5hZGQodGhpcy5kb21Ob2RlLCB0KSAmJiAobnVsbCAhPSBlLnZhbHVlKHRoaXMuZG9tTm9kZSkgPyB0aGlzLmF0dHJpYnV0ZXNbZS5hdHRyTmFtZV0gPSBlIDogZGVsZXRlIHRoaXMuYXR0cmlidXRlc1tlLmF0dHJOYW1lXSkgOiAoZS5yZW1vdmUodGhpcy5kb21Ob2RlKSwgZGVsZXRlIHRoaXMuYXR0cmlidXRlc1tlLmF0dHJOYW1lXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5idWlsZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlcyA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHJbImRlZmF1bHQiXS5rZXlzKHRoaXMuZG9tTm9kZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gb1siZGVmYXVsdCJdLmtleXModGhpcy5kb21Ob2RlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpWyJkZWZhdWx0Il0ua2V5cyh0aGlzLmRvbU5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmNvbmNhdChuKS5jb25jYXQocykuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhLnF1ZXJ5KHQsIGEuU2NvcGUuQVRUUklCVVRFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gaW5zdGFuY2VvZiByWyJkZWZhdWx0Il0gJiYgKGUuYXR0cmlidXRlc1tuLmF0dHJOYW1lXSA9IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKS5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuYXR0cmlidXRlc1tuXS52YWx1ZSh0LmRvbU5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5mb3JtYXQobiwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUubW92ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvcHkoZSksIE9iamVjdC5rZXlzKHRoaXMuYXR0cmlidXRlcykuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hdHRyaWJ1dGVzW2VdLnJlbW92ZSh0LmRvbU5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5hdHRyaWJ1dGVzID0ge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0W25dID0gZS5hdHRyaWJ1dGVzW25dLnZhbHVlKGUuZG9tTm9kZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMgfHwgKHIgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJvdG9fXzogW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX19wcm90b19fID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB8fCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiB0KSB0Lmhhc093blByb3BlcnR5KG4pICYmIChlW25dID0gdFtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcihlLCB0KSwgZS5wcm90b3R5cGUgPSBudWxsID09PSB0ID8gT2JqZWN0LmNyZWF0ZSh0KSA6IChuLnByb3RvdHlwZSA9IHQucHJvdG90eXBlLCBuZXcgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKS5zcGxpdCgvXHMrLykuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IGUuaW5kZXhPZih0ICsgIi0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGUgJiYgZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LmtleXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSB8fCAiIikuc3BsaXQoL1xzKy8pLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zcGxpdCgiLSIpLnNsaWNlKDAsIC0xKS5qb2luKCItIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF0aGlzLmNhbkFkZChlLCB0KSAmJiAodGhpcy5yZW1vdmUoZSksIGUuY2xhc3NMaXN0LmFkZCh0aGlzLmtleU5hbWUgKyAiLSIgKyB0KSwgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaShlLCB0aGlzLmtleU5hbWUpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jbGFzc0xpc3QucmVtb3ZlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCAwID09PSBlLmNsYXNzTGlzdC5sZW5ndGggJiYgZS5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnZhbHVlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gKGkoZSwgdGhpcy5rZXlOYW1lKVswXSB8fCAiIikuc2xpY2UodGhpcy5rZXlOYW1lLmxlbmd0aCArIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbkFkZChlLCB0KSA/IHQgOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KG4oMTIpWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBhCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCAociA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcm90b19fOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3Byb3RvX18gPSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHQpIHQuaGFzT3duUHJvcGVydHkobikgJiYgKGVbbl0gPSB0W25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5zcGxpdCgiLSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnNsaWNlKDEpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVswXS50b1VwcGVyQ2FzZSgpICsgZS5zbGljZSgxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5qb2luKCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0WzBdICsgbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSBlICYmIGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyh0LCBlKSwgdC5rZXlzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZS5nZXRBdHRyaWJ1dGUoInN0eWxlIikgfHwgIiIpLnNwbGl0KCI7IikubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnNwbGl0KCI6IilbMF0udHJpbSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5jYW5BZGQoZSwgdCkgJiYgKGUuc3R5bGVbaSh0aGlzLmtleU5hbWUpXSA9IHQsICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3R5bGVbaSh0aGlzLmtleU5hbWUpXSA9ICIiLCBlLmdldEF0dHJpYnV0ZSgic3R5bGUiKSB8fCBlLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUudmFsdWUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnN0eWxlW2kodGhpcy5rZXlOYW1lKV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FuQWRkKGUsIHQpID8gdCA6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0obigxMilbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IGEKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgZSksIHRoaXMucXVpbGwgPSB0LCB0aGlzLm9wdGlvbnMgPSBuLCB0aGlzLm1vZHVsZXMgPSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbml0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5vcHRpb25zLm1vZHVsZXMpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09IGUubW9kdWxlc1t0XSAmJiBlLmFkZE1vZHVsZSh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZE1vZHVsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucXVpbGwuY29uc3RydWN0b3JbImltcG9ydCJdKCJtb2R1bGVzLyIgKyBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1vZHVsZXNbZV0gPSBuZXcgdCh0aGlzLnF1aWxsLCB0aGlzLm9wdGlvbnMubW9kdWxlc1tlXSB8fCB7fSksIHRoaXMubW9kdWxlc1tlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uREVGQVVMVFMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiB7fQogICAgICAgICAgICAgICAgICAgICAgICB9LCBvLnRoZW1lcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogbwogICAgICAgICAgICAgICAgICAgICAgICB9LCB0WyJkZWZhdWx0Il0gPSBvCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24gYyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogYyhvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcyhuKDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBzKG4oNykpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gIlx1ZmVmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNvbnRlbnROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLCBuLmNvbnRlbnROb2RlLnNldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIiwgITEpLCBbXS5zbGljZS5jYWxsKG4uZG9tTm9kZS5jaGlsZE5vZGVzKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNvbnRlbnROb2RlLmFwcGVuZENoaWxkKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbi5sZWZ0R3VhcmQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh1KSwgbi5yaWdodEd1YXJkID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodSksIG4uZG9tTm9kZS5hcHBlbmRDaGlsZChuLmxlZnRHdWFyZCksIG4uZG9tTm9kZS5hcHBlbmRDaGlsZChuLmNvbnRlbnROb2RlKSwgbi5kb21Ob2RlLmFwcGVuZENoaWxkKG4ucmlnaHRHdWFyZCksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIHIodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaW5kZXgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHRoaXMubGVmdEd1YXJkID8gMCA6IGUgPT09IHRoaXMucmlnaHRHdWFyZCA/IDEgOiBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5kZXgiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlc3RvcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5kYXRhLnNwbGl0KHUpLmpvaW4oIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT09IHRoaXMubGVmdEd1YXJkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByZXYgaW5zdGFuY2VvZiBhWyJkZWZhdWx0Il0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLnByZXYubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJldi5pbnNlcnRBdChvLCByKSwgdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZTogdGhpcy5wcmV2LmRvbU5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldDogbyArIHIubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgbiA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHIpLCB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUoaVsiZGVmYXVsdCJdLmNyZWF0ZShuKSwgdGhpcyksIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IHIubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZSA9PT0gdGhpcy5yaWdodEd1YXJkICYmICh0aGlzLm5leHQgaW5zdGFuY2VvZiBhWyJkZWZhdWx0Il0gPyAodGhpcy5uZXh0Lmluc2VydEF0KDAsIHIpLCB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZTogdGhpcy5uZXh0LmRvbU5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IHIubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IChuID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUociksIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZShpWyJkZWZhdWx0Il0uY3JlYXRlKG4pLCB0aGlzLm5leHQpLCB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldDogci5sZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmRhdGEgPSB1LCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInVwZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImNoYXJhY3RlckRhdGEiID09PSBlLnR5cGUgJiYgKGUudGFyZ2V0ID09PSBuLmxlZnRHdWFyZCB8fCBlLnRhcmdldCA9PT0gbi5yaWdodEd1YXJkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4ucmVzdG9yZShlLnRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgJiYgKHQucmFuZ2UgPSByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGlbImRlZmF1bHQiXS5FbWJlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IGwKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LkFsaWduU3R5bGUgPSB0LkFsaWduQ2xhc3MgPSB0LkFsaWduQXR0cmlidXRlID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gKHIgPSBvKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IGlbImRlZmF1bHQiXS5TY29wZS5CTE9DSywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3Q6IFsicmlnaHQiLCAiY2VudGVyIiwgImp1c3RpZnkiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgaVsiZGVmYXVsdCJdLkF0dHJpYnV0b3IuQXR0cmlidXRlKCJhbGlnbiIsICJhbGlnbiIsIGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG5ldyBpWyJkZWZhdWx0Il0uQXR0cmlidXRvci5DbGFzcygiYWxpZ24iLCAicWwtYWxpZ24iLCBhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuZXcgaVsiZGVmYXVsdCJdLkF0dHJpYnV0b3IuU3R5bGUoImFsaWduIiwgInRleHQtYWxpZ24iLCBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5BbGlnbkF0dHJpYnV0ZSA9IHMsIHQuQWxpZ25DbGFzcyA9IHUsIHQuQWxpZ25TdHlsZSA9IGwKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LkJhY2tncm91bmRTdHlsZSA9IHQuQmFja2dyb3VuZENsYXNzID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gKHIgPSBvKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDI2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgaVsiZGVmYXVsdCJdLkF0dHJpYnV0b3IuQ2xhc3MoImJhY2tncm91bmQiLCAicWwtYmciLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IGlbImRlZmF1bHQiXS5TY29wZS5JTkxJTkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG5ldyBhLkNvbG9yQXR0cmlidXRvcigiYmFja2dyb3VuZCIsICJiYWNrZ3JvdW5kLWNvbG9yIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlOiBpWyJkZWZhdWx0Il0uU2NvcGUuSU5MSU5FCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5CYWNrZ3JvdW5kQ2xhc3MgPSBzLCB0LkJhY2tncm91bmRTdHlsZSA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LkRpcmVjdGlvblN0eWxlID0gdC5EaXJlY3Rpb25DbGFzcyA9IHQuRGlyZWN0aW9uQXR0cmlidXRlID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gKHIgPSBvKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IGlbImRlZmF1bHQiXS5TY29wZS5CTE9DSywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3Q6IFsicnRsIl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbmV3IGlbImRlZmF1bHQiXS5BdHRyaWJ1dG9yLkF0dHJpYnV0ZSgiZGlyZWN0aW9uIiwgImRpciIsIGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG5ldyBpWyJkZWZhdWx0Il0uQXR0cmlidXRvci5DbGFzcygiZGlyZWN0aW9uIiwgInFsLWRpcmVjdGlvbiIsIGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG5ldyBpWyJkZWZhdWx0Il0uQXR0cmlidXRvci5TdHlsZSgiZGlyZWN0aW9uIiwgImRpcmVjdGlvbiIsIGEpOwogICAgICAgICAgICAgICAgICAgICAgICB0LkRpcmVjdGlvbkF0dHJpYnV0ZSA9IHMsIHQuRGlyZWN0aW9uQ2xhc3MgPSB1LCB0LkRpcmVjdGlvblN0eWxlID0gbAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuRm9udENsYXNzID0gdC5Gb250U3R5bGUgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIHAoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHAobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKHIgPSBhKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZTogc1siZGVmYXVsdCJdLlNjb3BlLklOTElORSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3Q6IFsic2VyaWYiLCAibW9ub3NwYWNlIl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gbmV3IHNbImRlZmF1bHQiXS5BdHRyaWJ1dG9yLkNsYXNzKCJmb250IiwgInFsLWZvbnQiLCBjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBuZXcoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1KHRoaXMsIHQpLCBsKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAidmFsdWUiLCB0aGlzKS5jYWxsKHRoaXMsIGUpLnJlcGxhY2UoL1siJ10vZywgIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oc1siZGVmYXVsdCJdLkF0dHJpYnV0b3IuU3R5bGUpKSgiZm9udCIsICJmb250LWZhbWlseSIsIGMpOwogICAgICAgICAgICAgICAgICAgICAgICB0LkZvbnRTdHlsZSA9IGQsIHQuRm9udENsYXNzID0gZgogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuU2l6ZVN0eWxlID0gdC5TaXplQ2xhc3MgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gbigwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAociA9IG8pICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG5ldyBpWyJkZWZhdWx0Il0uQXR0cmlidXRvci5DbGFzcygic2l6ZSIsICJxbC1zaXplIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlOiBpWyJkZWZhdWx0Il0uU2NvcGUuSU5MSU5FLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlbGlzdDogWyJzbWFsbCIsICJsYXJnZSIsICJodWdlIl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG5ldyBpWyJkZWZhdWx0Il0uQXR0cmlidXRvci5TdHlsZSgic2l6ZSIsICJmb250LXNpemUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IGlbImRlZmF1bHQiXS5TY29wZS5JTkxJTkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0OiBbIjEwcHgiLCAiMThweCIsICIzMnB4Il0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB0LlNpemVDbGFzcyA9IGEsIHQuU2l6ZVN0eWxlID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiOiBuKDc2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IG4oNzcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBuKDc4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5OiBuKDc5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG4oODApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2txdW90ZTogbig4MSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2xkOiBuKDgyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFuOiBuKDgzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IG4oNTgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvZGUtYmxvY2siOiBuKDU4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBuKDg0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiOiBuKDg1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGw6IG4oODYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IG4oODcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGw6IG4oODgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IG4oODkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBuKDkwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm11bGE6IG4oOTEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTogbig5MiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjogbig5MykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGFsaWM6IG4oOTQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IG4oOTUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIisxIjogbig5NiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0xIjogbig5NykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBuKDk4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Q6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkOiBuKDk5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWxsZXQ6IG4oMTAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVjazogbigxMDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViOiBuKDEwMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyIjogbigxMDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWtlOiBuKDEwNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmU6IG4oMTA1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvOiBuKDEwNikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuZ2V0TGFzdENoYW5nZUluZGV4ID0gdFsiZGVmYXVsdCJdID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhKG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGEobig1KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIubGFzdFJlY29yZGVkID0gMCwgci5pZ25vcmVDaGFuZ2UgPSAhMSwgci5jbGVhcigpLCByLnF1aWxsLm9uKGlbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRSwgKGZ1bmN0aW9uKGUsIHQsIG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAhPT0gaVsiZGVmYXVsdCJdLmV2ZW50cy5URVhUX0NIQU5HRSB8fCByLmlnbm9yZUNoYW5nZSB8fCAoci5vcHRpb25zLnVzZXJPbmx5ICYmIG8gIT09IGlbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIgPyByLnRyYW5zZm9ybSh0KSA6IHIucmVjb3JkKHQsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgci5xdWlsbC5rZXlib2FyZC5hZGRCaW5kaW5nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiWiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0S2V5OiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHIudW5kby5iaW5kKHIpKSwgci5xdWlsbC5rZXlib2FyZC5hZGRCaW5kaW5nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiWiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0S2V5OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRLZXk6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgci5yZWRvLmJpbmQocikpLCAvV2luL2kudGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pICYmIHIucXVpbGwua2V5Ym9hcmQuYWRkQmluZGluZyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIlkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydEtleTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByLnJlZG8uYmluZChyKSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIHIodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjaGFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSB0aGlzLnN0YWNrW2VdLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnN0YWNrW2VdLnBvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFja1t0XS5wdXNoKG4pLCB0aGlzLmxhc3RSZWNvcmRlZCA9IDAsIHRoaXMuaWdub3JlQ2hhbmdlID0gITAsIHRoaXMucXVpbGwudXBkYXRlQ29udGVudHMobltlXSwgaVsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIHRoaXMuaWdub3JlQ2hhbmdlID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHUobltlXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLnNldFNlbGVjdGlvbihyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNsZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRvOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZG86IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY3V0b2ZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFJlY29yZGVkID0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZWNvcmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBlLm9wcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucmVkbyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnF1aWxsLmdldENvbnRlbnRzKCkuZGlmZih0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gRGF0ZS5ub3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhc3RSZWNvcmRlZCArIHRoaXMub3B0aW9ucy5kZWxheSA+IHIgJiYgdGhpcy5zdGFjay51bmRvLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMuc3RhY2sudW5kby5wb3AoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi5jb21wb3NlKG8udW5kbyksIGUgPSBvLnJlZG8uY29tcG9zZShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMubGFzdFJlY29yZGVkID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sudW5kby5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRvOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZG86IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLnN0YWNrLnVuZG8ubGVuZ3RoID4gdGhpcy5vcHRpb25zLm1heFN0YWNrICYmIHRoaXMuc3RhY2sudW5kby5zaGlmdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVkbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZSgicmVkbyIsICJ1bmRvIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidHJhbnNmb3JtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnVuZG8uZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC51bmRvID0gZS50cmFuc2Zvcm0odC51bmRvLCAhMCksIHQucmVkbyA9IGUudHJhbnNmb3JtKHQucmVkbywgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5zdGFjay5yZWRvLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudW5kbyA9IGUudHJhbnNmb3JtKHQudW5kbywgITApLCB0LnJlZG8gPSBlLnRyYW5zZm9ybSh0LnJlZG8sICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidW5kbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZSgidW5kbyIsICJyZWRvIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShhKG4oOSkpWyJkZWZhdWx0Il0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICs9IHRbImRlbGV0ZSJdIHx8IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUubGVuZ3RoKCkgLSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUub3BzW2Uub3BzLmxlbmd0aCAtIDFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQgJiYgKG51bGwgIT0gdC5pbnNlcnQgPyAic3RyaW5nIiA9PSB0eXBlb2YgdC5pbnNlcnQgJiYgdC5pbnNlcnQuZW5kc1dpdGgoIlxuIikgOiBudWxsICE9IHQuYXR0cmlidXRlcyAmJiBPYmplY3Qua2V5cyh0LmF0dHJpYnV0ZXMpLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gb1siZGVmYXVsdCJdLnF1ZXJ5KGUsIG9bImRlZmF1bHQiXS5TY29wZS5CTE9DSykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpICYmIChuIC09IDEpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcy5ERUZBVUxUUyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiAxZTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhTdGFjazogMTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck9ubHk6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRbImRlZmF1bHQiXSA9IHMsIHQuZ2V0TGFzdENoYW5nZUluZGV4ID0gdQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IHQuQmFzZVRvb2x0aXAgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uIEMoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IEMobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGgobigzKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaChuKDIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBoKG4oOCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGgobigyMykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGgobigzNCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGgobig1OSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGgobig2MCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGgobigyOCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGgobig2MSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBtKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGcoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBbITEsICJjZW50ZXIiLCAicmlnaHQiLCAianVzdGlmeSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IFsiIzAwMDAwMCIsICIjZTYwMDAwIiwgIiNmZjk5MDAiLCAiI2ZmZmYwMCIsICIjMDA4YTAwIiwgIiMwMDY2Y2MiLCAiIzk5MzNmZiIsICIjZmZmZmZmIiwgIiNmYWNjY2MiLCAiI2ZmZWJjYyIsICIjZmZmZmNjIiwgIiNjY2U4Y2MiLCAiI2NjZTBmNSIsICIjZWJkNmZmIiwgIiNiYmJiYmIiLCAiI2YwNjY2NiIsICIjZmZjMjY2IiwgIiNmZmZmNjYiLCAiIzY2Yjk2NiIsICIjNjZhM2UwIiwgIiNjMjg1ZmYiLCAiIzg4ODg4OCIsICIjYTEwMDAwIiwgIiNiMjZiMDAiLCAiI2IyYjIwMCIsICIjMDA2MTAwIiwgIiMwMDQ3YjIiLCAiIzZiMjRiMiIsICIjNDQ0NDQ0IiwgIiM1YzAwMDAiLCAiIzY2M2QwMCIsICIjNjY2NjAwIiwgIiMwMDM3MDAiLCAiIzAwMjk2NiIsICIjM2QxNDY2Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gWyExLCAic2VyaWYiLCAibW9ub3NwYWNlIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPID0gWyIxIiwgIjIiLCAiMyIsICExXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gPSBbInNtYWxsIiwgITEsICJsYXJnZSIsICJodWdlIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtKHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHkodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmVtaXR0ZXIubGlzdGVuRE9NKCJjbGljayIsIGRvY3VtZW50LmJvZHksIChmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQuYm9keS5jb250YWlucyhlLnJvb3QpKSByZXR1cm4gZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsIG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PSByLnRvb2x0aXAgfHwgci50b29sdGlwLnJvb3QuY29udGFpbnModC50YXJnZXQpIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHIudG9vbHRpcC50ZXh0Ym94IHx8IHIucXVpbGwuaGFzRm9jdXMoKSB8fCByLnRvb2x0aXAuaGlkZSgpLCBudWxsICE9IHIucGlja2VycyAmJiByLnBpY2tlcnMuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY29udGFpbmVyLmNvbnRhaW5zKHQudGFyZ2V0KSB8fCBlLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcodCwgZSksIHIodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkTW9kdWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImFkZE1vZHVsZSIsIHRoaXMpLmNhbGwodGhpcywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInRvb2xiYXIiID09PSBlICYmIHRoaXMuZXh0ZW5kVG9vbGJhcihuKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJidWlsZEJ1dHRvbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKS5zcGxpdCgvXHMrLykuZm9yRWFjaCgoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5zdGFydHNXaXRoKCJxbC0iKSAmJiAobiA9IG4uc2xpY2UoInFsLSIubGVuZ3RoKSwgbnVsbCAhPSB0W25dKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZGlyZWN0aW9uIiA9PT0gbikgZS5pbm5lckhUTUwgPSB0W25dWyIiXSArIHRbbl0ucnRsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHRbbl0pIGUuaW5uZXJIVE1MID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUudmFsdWUgfHwgIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IHIgJiYgdFtuXVtyXSAmJiAoZS5pbm5lckhUTUwgPSB0W25dW3JdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYnVpbGRQaWNrZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGlja2VycyA9IGUubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJxbC1hbGlnbiIpKSByZXR1cm4gbnVsbCA9PSBlLnF1ZXJ5U2VsZWN0b3IoIm9wdGlvbiIpICYmIEUoZSwgdiksIG5ldyBmWyJkZWZhdWx0Il0oZSwgdC5hbGlnbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJxbC1iYWNrZ3JvdW5kIikgfHwgZS5jbGFzc0xpc3QuY29udGFpbnMoInFsLWNvbG9yIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmNsYXNzTGlzdC5jb250YWlucygicWwtYmFja2dyb3VuZCIpID8gImJhY2tncm91bmQiIDogImNvbG9yIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZS5xdWVyeVNlbGVjdG9yKCJvcHRpb24iKSAmJiBFKGUsIGIsICJiYWNrZ3JvdW5kIiA9PT0gbiA/ICIjZmZmZmZmIiA6ICIjMDAwMDAwIiksIG5ldyBjWyJkZWZhdWx0Il0oZSwgdFtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZS5xdWVyeVNlbGVjdG9yKCJvcHRpb24iKSAmJiAoZS5jbGFzc0xpc3QuY29udGFpbnMoInFsLWZvbnQiKSA/IEUoZSwgdykgOiBlLmNsYXNzTGlzdC5jb250YWlucygicWwtaGVhZGVyIikgPyBFKGUsIE8pIDogZS5jbGFzc0xpc3QuY29udGFpbnMoInFsLXNpemUiKSAmJiBFKGUsIF8pKSwgbmV3IGRbImRlZmF1bHQiXShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnF1aWxsLm9uKHNbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucGlja2Vycy5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudXBkYXRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGxbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHguREVGQVVMVFMgPSAoMCwgaVsiZGVmYXVsdCJdKSghMCwge30sIGxbImRlZmF1bHQiXS5ERUZBVUxUUywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm11bGE6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwudGhlbWUudG9vbHRpcC5lZGl0KCJmb3JtdWxhIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcigiaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT0gdCAmJiAoKHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiZmlsZSIpLCB0LnNldEF0dHJpYnV0ZSgiYWNjZXB0IiwgImltYWdlL3BuZywgaW1hZ2UvZ2lmLCBpbWFnZS9qcGVnLCBpbWFnZS9ibXAsIGltYWdlL3gtaWNvbiIpLCB0LmNsYXNzTGlzdC5hZGQoInFsLWltYWdlIiksIHQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0LmZpbGVzICYmIG51bGwgIT0gdC5maWxlc1swXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBuZXcgRmlsZVJlYWRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ub25sb2FkID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZS5xdWlsbC5nZXRTZWxlY3Rpb24oITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucXVpbGwudXBkYXRlQ29udGVudHMoKG5ldyBhWyJkZWZhdWx0Il0pLnJldGFpbihyLmluZGV4KVsiZGVsZXRlIl0oci5sZW5ndGgpLmluc2VydCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiBuLnRhcmdldC5yZXN1bHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUiksIGUucXVpbGwuc2V0U2VsZWN0aW9uKHIuaW5kZXggKyAxLCBzWyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpLCB0LnZhbHVlID0gIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4ucmVhZEFzRGF0YVVSTCh0LmZpbGVzWzBdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0KSksIHQuY2xpY2soKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLnRoZW1lLnRvb2x0aXAuZWRpdCgidmlkZW8iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtKHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0geSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUsIG4pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci50ZXh0Ym94ID0gci5yb290LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9InRleHQiXScpLCByLmxpc3RlbigpLCByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZyh0LCBlKSwgcih0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxpc3RlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dGJveC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVbImRlZmF1bHQiXS5tYXRjaCh0LCAiZW50ZXIiKSA/IChlLnNhdmUoKSwgdC5wcmV2ZW50RGVmYXVsdCgpKSA6IHVbImRlZmF1bHQiXS5tYXRjaCh0LCAiZXNjYXBlIikgJiYgKGUuY2FuY2VsKCksIHQucHJldmVudERlZmF1bHQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNhbmNlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJlZGl0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAibGluayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb3QuY2xhc3NMaXN0LnJlbW92ZSgicWwtaGlkZGVuIiksIHRoaXMucm9vdC5jbGFzc0xpc3QuYWRkKCJxbC1lZGl0aW5nIiksIG51bGwgIT0gdCA/IHRoaXMudGV4dGJveC52YWx1ZSA9IHQgOiBlICE9PSB0aGlzLnJvb3QuZ2V0QXR0cmlidXRlKCJkYXRhLW1vZGUiKSAmJiAodGhpcy50ZXh0Ym94LnZhbHVlID0gIiIpLCB0aGlzLnBvc2l0aW9uKHRoaXMucXVpbGwuZ2V0Qm91bmRzKHRoaXMucXVpbGwuc2VsZWN0aW9uLnNhdmVkUmFuZ2UpKSwgdGhpcy50ZXh0Ym94LnNlbGVjdCgpLCB0aGlzLnRleHRib3guc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsIHRoaXMudGV4dGJveC5nZXRBdHRyaWJ1dGUoImRhdGEtIiArIGUpIHx8ICIiKSwgdGhpcy5yb290LnNldEF0dHJpYnV0ZSgiZGF0YS1tb2RlIiwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVzdG9yZUZvY3VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5xdWlsbC5zY3JvbGxpbmdDb250YWluZXIuc2Nyb2xsVG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLmZvY3VzKCksIHRoaXMucXVpbGwuc2Nyb2xsaW5nQ29udGFpbmVyLnNjcm9sbFRvcCA9IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2F2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiA9IHRoaXMudGV4dGJveC52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLnJvb3QuZ2V0QXR0cmlidXRlKCJkYXRhLW1vZGUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGluayI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnF1aWxsLnJvb3Quc2Nyb2xsVG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlua1JhbmdlID8gKHRoaXMucXVpbGwuZm9ybWF0VGV4dCh0aGlzLmxpbmtSYW5nZSwgImxpbmsiLCBuLCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgZGVsZXRlIHRoaXMubGlua1JhbmdlKSA6ICh0aGlzLnJlc3RvcmVGb2N1cygpLCB0aGlzLnF1aWxsLmZvcm1hdCgibGluayIsIG4sIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpKSwgdGhpcy5xdWlsbC5yb290LnNjcm9sbFRvcCA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ2aWRlbyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IChlID0gbikubWF0Y2goL14oPzooaHR0cHM/KTpcL1wvKT8oPzooPzp3d3d8bSlcLik/eW91dHViZVwuY29tXC93YXRjaC4qdj0oW2EtekEtWjAtOV8tXSspLykgfHwgZS5tYXRjaCgvXig/OihodHRwcz8pOlwvXC8pPyg/Oig/Ond3d3xtKVwuKT95b3V0dVwuYmVcLyhbYS16QS1aMC05Xy1dKykvKSwgbiA9IHQgPyAodFsxXSB8fCAiaHR0cHMiKSArICI6Ly93d3cueW91dHViZS5jb20vZW1iZWQvIiArIHRbMl0gKyAiP3Nob3dpbmZvPTAiIDogKHQgPSBlLm1hdGNoKC9eKD86KGh0dHBzPyk6XC9cLyk/KD86d3d3XC4pP3ZpbWVvXC5jb21cLyhcZCspLykpID8gKHRbMV0gfHwgImh0dHBzIikgKyAiOi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8iICsgdFsyXSArICIvIiA6IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmb3JtdWxhIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5xdWlsbC5nZXRTZWxlY3Rpb24oITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBvLmluZGV4ICsgby5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuaW5zZXJ0RW1iZWQoaSwgdGhpcy5yb290LmdldEF0dHJpYnV0ZSgiZGF0YS1tb2RlIiksIG4sIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCAiZm9ybXVsYSIgPT09IHRoaXMucm9vdC5nZXRBdHRyaWJ1dGUoImRhdGEtbW9kZSIpICYmIHRoaXMucXVpbGwuaW5zZXJ0VGV4dChpICsgMSwgIiAiLCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24oaSArIDIsIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dGJveC52YWx1ZSA9ICIiLCB0aGlzLmhpZGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHBbImRlZmF1bHQiXSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBFKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID09PSBuID8gci5zZXRBdHRyaWJ1dGUoInNlbGVjdGVkIiwgInNlbGVjdGVkIikgOiByLnNldEF0dHJpYnV0ZSgidmFsdWUiLCB0KSwgZS5hcHBlbmRDaGlsZChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdC5CYXNlVG9vbHRpcCA9IGssIHRbImRlZmF1bHQiXSA9IHgKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsLCB0aGlzLmxlbmd0aCA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gW10sIHQgPSAwOyB0IDwgYXJndW1lbnRzLmxlbmd0aDsgdCsrKSBlW3RdID0gYXJndW1lbnRzW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKGVbMF0sIG51bGwpLCBlLmxlbmd0aCA+IDEgJiYgdGhpcy5hcHBlbmQuYXBwbHkodGhpcywgZS5zbGljZSgxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIG4gPSB0aGlzLml0ZXJhdG9yKCk7IHQgPSBuKCk7KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9PT0gZSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgKGUubmV4dCA9IHQsIG51bGwgIT0gdCA/IChlLnByZXYgPSB0LnByZXYsIG51bGwgIT0gdC5wcmV2ICYmICh0LnByZXYubmV4dCA9IGUpLCB0LnByZXYgPSBlLCB0ID09PSB0aGlzLmhlYWQgJiYgKHRoaXMuaGVhZCA9IGUpKSA6IG51bGwgIT0gdGhpcy50YWlsID8gKHRoaXMudGFpbC5uZXh0ID0gZSwgZS5wcmV2ID0gdGhpcy50YWlsLCB0aGlzLnRhaWwgPSBlKSA6IChlLnByZXYgPSBudWxsLCB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBlKSwgdGhpcy5sZW5ndGggKz0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMCwgbiA9IHRoaXMuaGVhZDsgbnVsbCAhPSBuOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9PT0gZSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgKz0gbi5sZW5ndGgoKSwgbiA9IG4ubmV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5zKGUpICYmIChudWxsICE9IGUucHJldiAmJiAoZS5wcmV2Lm5leHQgPSBlLm5leHQpLCBudWxsICE9IGUubmV4dCAmJiAoZS5uZXh0LnByZXYgPSBlLnByZXYpLCBlID09PSB0aGlzLmhlYWQgJiYgKHRoaXMuaGVhZCA9IGUubmV4dCksIGUgPT09IHRoaXMudGFpbCAmJiAodGhpcy50YWlsID0gZS5wcmV2KSwgdGhpcy5sZW5ndGggLT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLml0ZXJhdG9yID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSB0aGlzLmhlYWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IGUgJiYgKGUgPSBlLm5leHQpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gITEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4sIHIgPSB0aGlzLml0ZXJhdG9yKCk7IG4gPSByKCk7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbi5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPCBvIHx8IHQgJiYgZSA9PT0gbyAmJiAobnVsbCA9PSBuLm5leHQgfHwgMCAhPT0gbi5uZXh0Lmxlbmd0aCgpKSkgcmV0dXJuIFtuLCBlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAtPSBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbbnVsbCwgMF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCwgbiA9IHRoaXMuaXRlcmF0b3IoKTsgdCA9IG4oKTspIGUodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLmZvckVhY2hBdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh0IDw9IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByLCBvID0gdGhpcy5maW5kKGUpLCBpID0gb1swXSwgYSA9IGUgLSBvWzFdLCBzID0gdGhpcy5pdGVyYXRvcihpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyID0gcygpKSAmJiBhIDwgZSArIHQ7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHIubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID4gYSA/IG4ociwgZSAtIGEsIE1hdGgubWluKHQsIGEgKyB1IC0gZSkpIDogbihyLCAwLCBNYXRoLm1pbih1LCBlICsgdCAtIGEpKSwgYSArPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLm1hcCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQucHVzaChlKG4pKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBbXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLnJlZHVjZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuLCByID0gdGhpcy5pdGVyYXRvcigpOyBuID0gcigpOykgdCA9IGUodCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUKICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSByCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCAociA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcm90b19fOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3Byb3RvX18gPSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHQpIHQuaGFzT3duUHJvcGVydHkobikgJiYgKGVbbl0gPSB0W25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuKDE3KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhT2xkVmFsdWU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHJlZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuY2FsbCh0aGlzLCB0KSB8fCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zY3JvbGwgPSBuLCBuLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udXBkYXRlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbi5vYnNlcnZlci5vYnNlcnZlKG4uZG9tTm9kZSwgcyksIG4uYXR0YWNoKCksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8odCwgZSksIHQucHJvdG90eXBlLmRldGFjaCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZS5kZXRhY2guY2FsbCh0aGlzKSwgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5kZWxldGVBdCA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoKSwgMCA9PT0gdCAmJiBuID09PSB0aGlzLmxlbmd0aCgpID8gdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IGUucHJvdG90eXBlLmRlbGV0ZUF0LmNhbGwodGhpcywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5mb3JtYXRBdCA9IGZ1bmN0aW9uKHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoKSwgZS5wcm90b3R5cGUuZm9ybWF0QXQuY2FsbCh0aGlzLCB0LCBuLCByLCBvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmluc2VydEF0ID0gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpLCBlLnByb3RvdHlwZS5pbnNlcnRBdC5jYWxsKHRoaXMsIHQsIG4sIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUub3B0aW1pemUgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gW10pLCB2b2lkIDAgPT09IG4gJiYgKG4gPSB7fSksIGUucHJvdG90eXBlLm9wdGltaXplLmNhbGwodGhpcywgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSBbXS5zbGljZS5jYWxsKHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKSk7IG8ubGVuZ3RoID4gMDspIHQucHVzaChvLnBvcCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IHQgJiYgKHQgPSAhMCksIG51bGwgIT0gZSAmJiBlICE9PSByICYmIG51bGwgIT0gZS5kb21Ob2RlLnBhcmVudE5vZGUgJiYgKG51bGwgPT0gZS5kb21Ob2RlW2EuREFUQV9LRVldLm11dGF0aW9ucyAmJiAoZS5kb21Ob2RlW2EuREFUQV9LRVldLm11dGF0aW9ucyA9IFtdKSwgdCAmJiBzKGUucGFyZW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBlLmRvbU5vZGVbYS5EQVRBX0tFWV0gJiYgbnVsbCAhPSBlLmRvbU5vZGVbYS5EQVRBX0tFWV0ubXV0YXRpb25zICYmIChlIGluc3RhbmNlb2YgaVsiZGVmYXVsdCJdICYmIGUuY2hpbGRyZW4uZm9yRWFjaCh1KSwgZS5vcHRpbWl6ZShuKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGwgPSB0LCBjID0gMDsgbC5sZW5ndGggPiAwOyBjICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID49IDEwMCkgdGhyb3cgbmV3IEVycm9yKCJbUGFyY2htZW50XSBNYXhpbXVtIG9wdGltaXplIGl0ZXJhdGlvbnMgcmVhY2hlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhLmZpbmQoZS50YXJnZXQsICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0ICYmICh0LmRvbU5vZGUgPT09IGUudGFyZ2V0ICYmICgiY2hpbGRMaXN0IiA9PT0gZS50eXBlID8gKHMoYS5maW5kKGUucHJldmlvdXNTaWJsaW5nLCAhMSkpLCBbXS5mb3JFYWNoLmNhbGwoZS5hZGRlZE5vZGVzLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhLmZpbmQoZSwgITEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyh0LCAhMSksIHQgaW5zdGFuY2VvZiBpWyJkZWZhdWx0Il0gJiYgdC5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyhlLCAhMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpIDogImF0dHJpYnV0ZXMiID09PSBlLnR5cGUgJiYgcyh0LnByZXYpKSwgcyh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCh1KSwgbyA9IChsID0gW10uc2xpY2UuY2FsbCh0aGlzLm9ic2VydmVyLnRha2VSZWNvcmRzKCkpKS5zbGljZSgpOyBvLmxlbmd0aCA+IDA7KSB0LnB1c2goby5wb3AoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IG4gJiYgKG4gPSB7fSksICh0ID0gdCB8fCB0aGlzLm9ic2VydmVyLnRha2VSZWNvcmRzKCkpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhLmZpbmQoZS50YXJnZXQsICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyBudWxsIDogbnVsbCA9PSB0LmRvbU5vZGVbYS5EQVRBX0tFWV0ubXV0YXRpb25zID8gKHQuZG9tTm9kZVthLkRBVEFfS0VZXS5tdXRhdGlvbnMgPSBbZV0sIHQpIDogKHQuZG9tTm9kZVthLkRBVEFfS0VZXS5tdXRhdGlvbnMucHVzaChlKSwgbnVsbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gZSAmJiBlICE9PSByICYmIG51bGwgIT0gZS5kb21Ob2RlW2EuREFUQV9LRVldICYmIGUudXBkYXRlKGUuZG9tTm9kZVthLkRBVEFfS0VZXS5tdXRhdGlvbnMgfHwgW10sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbnVsbCAhPSB0aGlzLmRvbU5vZGVbYS5EQVRBX0tFWV0ubXV0YXRpb25zICYmIGUucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMsIHRoaXMuZG9tTm9kZVthLkRBVEFfS0VZXS5tdXRhdGlvbnMsIG4pLCB0aGlzLm9wdGltaXplKHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5ibG90TmFtZSA9ICJzY3JvbGwiLCB0LmRlZmF1bHRDaGlsZCA9ICJibG9jayIsIHQuc2NvcGUgPSBhLlNjb3BlLkJMT0NLX0JMT1QsIHQudGFnTmFtZSA9ICJESVYiLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Byb3RvX186IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9fcHJvdG9fXyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdC5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoZVtuXSA9IHRbbl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoZSwgdCksIGUucHJvdG90eXBlID0gbnVsbCA9PT0gdCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4oMTgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSBlICYmIGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LmZvcm1hdHMgPSBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnRhZ05hbWUgPT09IHQudGFnTmFtZSA/IHVuZGVmaW5lZCA6IGUuZm9ybWF0cy5jYWxsKHRoaXMsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZm9ybWF0ID0gZnVuY3Rpb24obiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gIT09IHRoaXMuc3RhdGljcy5ibG90TmFtZSB8fCByID8gZS5wcm90b3R5cGUuZm9ybWF0LmNhbGwodGhpcywgbiwgcikgOiAodGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlIGluc3RhbmNlb2YgaVsiZGVmYXVsdCJdIHx8IChlID0gZS53cmFwKHQuYmxvdE5hbWUsICEwKSksIG8uYXR0cmlidXRlcy5jb3B5KGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy51bndyYXAoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5mb3JtYXRBdCA9IGZ1bmN0aW9uKHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0aGlzLmZvcm1hdHMoKVtyXSB8fCBhLnF1ZXJ5KHIsIGEuU2NvcGUuQVRUUklCVVRFKSA/IHRoaXMuaXNvbGF0ZSh0LCBuKS5mb3JtYXQociwgbykgOiBlLnByb3RvdHlwZS5mb3JtYXRBdC5jYWxsKHRoaXMsIHQsIG4sIHIsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUub3B0aW1pemUgPSBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlLm9wdGltaXplLmNhbGwodGhpcywgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5mb3JtYXRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBPYmplY3Qua2V5cyhyKS5sZW5ndGgpIHJldHVybiB0aGlzLnVud3JhcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMubmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBpbnN0YW5jZW9mIHQgJiYgby5wcmV2ID09PSB0aGlzICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhlKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKHQpLmxlbmd0aCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW25dICE9PSB0W25dKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShyLCBvLmZvcm1hdHMoKSkgJiYgKG8ubW92ZUNoaWxkcmVuKHRoaXMpLCBvLnJlbW92ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQuYmxvdE5hbWUgPSAiaW5saW5lIiwgdC5zY29wZSA9IGEuU2NvcGUuSU5MSU5FX0JMT1QsIHQudGFnTmFtZSA9ICJTUEFOIiwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShpWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBzCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCAociA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcm90b19fOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3Byb3RvX18gPSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIHQpIHQuaGFzT3duUHJvcGVydHkobikgJiYgKGVbbl0gPSB0W25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuKDE4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gZSAmJiBlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyh0LCBlKSwgdC5mb3JtYXRzID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGEucXVlcnkodC5ibG90TmFtZSkudGFnTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udGFnTmFtZSA9PT0gciA/IHVuZGVmaW5lZCA6IGUuZm9ybWF0cy5jYWxsKHRoaXMsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZm9ybWF0ID0gZnVuY3Rpb24obiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGEucXVlcnkobiwgYS5TY29wZS5CTE9DSykgJiYgKG4gIT09IHRoaXMuc3RhdGljcy5ibG90TmFtZSB8fCByID8gZS5wcm90b3R5cGUuZm9ybWF0LmNhbGwodGhpcywgbiwgcikgOiB0aGlzLnJlcGxhY2VXaXRoKHQuYmxvdE5hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmZvcm1hdEF0ID0gZnVuY3Rpb24odCwgbiwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGEucXVlcnkociwgYS5TY29wZS5CTE9DSykgPyB0aGlzLmZvcm1hdChyLCBvKSA6IGUucHJvdG90eXBlLmZvcm1hdEF0LmNhbGwodGhpcywgdCwgbiwgciwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5pbnNlcnRBdCA9IGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gciB8fCBudWxsICE9IGEucXVlcnkobiwgYS5TY29wZS5JTkxJTkUpKSBlLnByb3RvdHlwZS5pbnNlcnRBdC5jYWxsKHRoaXMsIHQsIG4sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5zcGxpdCh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gYS5jcmVhdGUobiwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnBhcmVudC5pbnNlcnRCZWZvcmUoaSwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvVHJpZGVudC8pID8gdGhpcy5idWlsZCgpIDogZS5wcm90b3R5cGUudXBkYXRlLmNhbGwodGhpcywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LmJsb3ROYW1lID0gImJsb2NrIiwgdC5zY29wZSA9IGEuU2NvcGUuQkxPQ0tfQkxPVCwgdC50YWdOYW1lID0gIlAiLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Byb3RvX186IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9fcHJvdG9fXyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdC5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoZVtuXSA9IHRbbl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoZSwgdCksIGUucHJvdG90eXBlID0gbnVsbCA9PT0gdCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGUgJiYgZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LmZvcm1hdHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZm9ybWF0ID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlLmZvcm1hdEF0LmNhbGwodGhpcywgMCwgdGhpcy5sZW5ndGgoKSwgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmZvcm1hdEF0ID0gZnVuY3Rpb24odCwgbiwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IHQgJiYgbiA9PT0gdGhpcy5sZW5ndGgoKSA/IHRoaXMuZm9ybWF0KHIsIG8pIDogZS5wcm90b3R5cGUuZm9ybWF0QXQuY2FsbCh0aGlzLCB0LCBuLCByLCBvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZm9ybWF0cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRpY3MuZm9ybWF0cyh0aGlzLmRvbU5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0obigxOSlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IGkKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Byb3RvX186IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9fcHJvdG9fXyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdCkgdC5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoZVtuXSA9IHRbbl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoZSwgdCksIGUucHJvdG90eXBlID0gbnVsbCA9PT0gdCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4oMTkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuY2FsbCh0aGlzLCB0KSB8fCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi50ZXh0ID0gbi5zdGF0aWNzLnZhbHVlKG4uZG9tTm9kZSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8odCwgZSksIHQuY3JlYXRlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnZhbHVlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubm9ybWFsaXplICYmICh0ID0gdC5ub3JtYWxpemUoKSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5kZWxldGVBdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb21Ob2RlLmRhdGEgPSB0aGlzLnRleHQgPSB0aGlzLnRleHQuc2xpY2UoMCwgZSkgKyB0aGlzLnRleHQuc2xpY2UoZSArIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuaW5kZXggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbU5vZGUgPT09IGUgPyB0IDogLTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5pbnNlcnRBdCA9IGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PSByID8gKHRoaXMudGV4dCA9IHRoaXMudGV4dC5zbGljZSgwLCB0KSArIG4gKyB0aGlzLnRleHQuc2xpY2UodCksIHRoaXMuZG9tTm9kZS5kYXRhID0gdGhpcy50ZXh0KSA6IGUucHJvdG90eXBlLmluc2VydEF0LmNhbGwodGhpcywgdCwgbiwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dC5sZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5vcHRpbWl6ZSA9IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUub3B0aW1pemUuY2FsbCh0aGlzLCBuKSwgdGhpcy50ZXh0ID0gdGhpcy5zdGF0aWNzLnZhbHVlKHRoaXMuZG9tTm9kZSksIDAgPT09IHRoaXMudGV4dC5sZW5ndGggPyB0aGlzLnJlbW92ZSgpIDogdGhpcy5uZXh0IGluc3RhbmNlb2YgdCAmJiB0aGlzLm5leHQucHJldiA9PT0gdGhpcyAmJiAodGhpcy5pbnNlcnRBdCh0aGlzLmxlbmd0aCgpLCB0aGlzLm5leHQudmFsdWUoKSksIHRoaXMubmV4dC5yZW1vdmUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5wb3NpdGlvbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdCAmJiAodCA9ICExKSwgW3RoaXMuZG9tTm9kZSwgZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gdCAmJiAodCA9ICExKSwgIXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBlKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlID09PSB0aGlzLmxlbmd0aCgpKSByZXR1cm4gdGhpcy5uZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhLmNyZWF0ZSh0aGlzLmRvbU5vZGUuc3BsaXRUZXh0KGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZShuLCB0aGlzLm5leHQpLCB0aGlzLnRleHQgPSB0aGlzLnN0YXRpY3MudmFsdWUodGhpcy5kb21Ob2RlKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiY2hhcmFjdGVyRGF0YSIgPT09IGUudHlwZSAmJiBlLnRhcmdldCA9PT0gbi5kb21Ob2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSAmJiAodGhpcy50ZXh0ID0gdGhpcy5zdGF0aWNzLnZhbHVlKHRoaXMuZG9tTm9kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUudmFsdWUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQuYmxvdE5hbWUgPSAidGV4dCIsIHQuc2NvcGUgPSBhLlNjb3BlLklOTElORV9CTE9ULCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuY2xhc3NMaXN0LnRvZ2dsZSgidGVzdC1jbGFzcyIsICExKSwgci5jbGFzc0xpc3QuY29udGFpbnMoInRlc3QtY2xhc3MiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBET01Ub2tlbkxpc3QucHJvdG90eXBlLnRvZ2dsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTVRva2VuTGlzdC5wcm90b3R5cGUudG9nZ2xlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiAhdGhpcy5jb250YWlucyhlKSA9PSAhdCA/IHQgOiBvLmNhbGwodGhpcywgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggfHwgKFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gdCB8fCAwLCB0aGlzLnN1YnN0cih0LCBlLmxlbmd0aCkgPT09IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSksIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggfHwgKFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgibnVtYmVyIiAhPSB0eXBlb2YgdCB8fCAhaXNGaW5pdGUodCkgfHwgTWF0aC5mbG9vcih0KSAhPT0gdCB8fCB0ID4gbi5sZW5ndGgpICYmICh0ID0gbi5sZW5ndGgpLCB0IC09IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmluZGV4T2YoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEgIT09IHIgJiYgciA9PT0gdAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgQXJyYXkucHJvdG90eXBlLmZpbmQgfHwgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgImZpbmQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB0aGlzKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZmluZCBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgZSkgdGhyb3cgbmV3IFR5cGVFcnJvcigicHJlZGljYXRlIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIG4gPSBPYmplY3QodGhpcyksIHIgPSBuLmxlbmd0aCA+Pj4gMCwgbyA9IGFyZ3VtZW50c1sxXSwgaSA9IDA7IGkgPCByOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gbltpXSwgZS5jYWxsKG8sIHQsIGksIG4pKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImVuYWJsZU9iamVjdFJlc2l6aW5nIiwgITEsICExKSwgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImF1dG9VcmxEZXRlY3QiLCAhMSwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAtMTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIoZSwgdCwgdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT0gdCkgcmV0dXJuIGUgPyBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIGVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIDogW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodSA8IDAgfHwgZS5sZW5ndGggPCB1KSAmJiAodSA9IG51bGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBpKGUsIHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlLnN1YnN0cmluZygwLCBjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBhKGUgPSBlLnN1YnN0cmluZyhjKSwgdCA9IHQuc3Vic3RyaW5nKGMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZS5zdWJzdHJpbmcoZS5sZW5ndGggLSBjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsIHRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuLCBlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGUubGVuZ3RoID4gdC5sZW5ndGggPyBlIDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlLmxlbmd0aCA+IHQubGVuZ3RoID8gdCA6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdS5pbmRleE9mKGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgIT0gYykgcmV0dXJuIHMgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMSwgdS5zdWJzdHJpbmcoMCwgYyldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIGxdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsIHUuc3Vic3RyaW5nKGMgKyBsLmxlbmd0aCldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGUubGVuZ3RoID4gdC5sZW5ndGggJiYgKHNbMF1bMF0gPSBzWzJdWzBdID0gbiksIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09IGwubGVuZ3RoKSByZXR1cm4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW24sIGVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsIHRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmxlbmd0aCA+IHQubGVuZ3RoID8gZSA6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUubGVuZ3RoID4gdC5sZW5ndGggPyB0IDogZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLmxlbmd0aCA8IDQgfHwgMiAqIHIubGVuZ3RoIDwgbi5sZW5ndGgpIHJldHVybiBudWxsOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIsIG8sIHMsIHUsIGwgPSBlLnN1YnN0cmluZyhuLCBuICsgTWF0aC5mbG9vcihlLmxlbmd0aCAvIDQpKSwgYyA9IC0xLCBmID0gIiI7IC0gMSAhPSAoYyA9IHQuaW5kZXhPZihsLCBjICsgMSkpOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGkoZS5zdWJzdHJpbmcobiksIHQuc3Vic3RyaW5nKGMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhKGUuc3Vic3RyaW5nKDAsIG4pLCB0LnN1YnN0cmluZygwLCBjKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYubGVuZ3RoIDwgcCArIGQgJiYgKGYgPSB0LnN1YnN0cmluZyhjIC0gcCwgYykgKyB0LnN1YnN0cmluZyhjLCBjICsgZCksIHIgPSBlLnN1YnN0cmluZygwLCBuIC0gcCksIG8gPSBlLnN1YnN0cmluZyhuICsgZCksIHMgPSB0LnN1YnN0cmluZygwLCBjIC0gcCksIHUgPSB0LnN1YnN0cmluZyhjICsgZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyICogZi5sZW5ndGggPj0gZS5sZW5ndGggPyBbciwgbywgcywgdSwgZl0gOiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcywgdSwgbCwgYywgZiwgZCA9IG8obiwgciwgTWF0aC5jZWlsKG4ubGVuZ3RoIC8gNCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvKG4sIHIsIE1hdGguY2VpbChuLmxlbmd0aCAvIDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZCAmJiAhcCkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcCA/IGQgJiYgZFs0XS5sZW5ndGggPiBwWzRdLmxlbmd0aCA/IGQgOiBwIDogZCwgZS5sZW5ndGggPiB0Lmxlbmd0aCA/ICh1ID0gc1swXSwgbCA9IHNbMV0sIGMgPSBzWzJdLCBmID0gc1szXSkgOiAoYyA9IHNbMF0sIGYgPSBzWzFdLCB1ID0gc1syXSwgbCA9IHNbM10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBzWzRdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt1LCBsLCBjLCBmLCBoXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBmWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBmWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBmWzNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBmWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSByKGQsIGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSByKHAsIG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcuY29uY2F0KFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgeV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIHYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBlLmxlbmd0aCwgaSA9IHQubGVuZ3RoLCBhID0gTWF0aC5jZWlsKChyICsgaSkgLyAyKSwgcyA9IGEsIHUgPSAyICogYSwgbCA9IG5ldyBBcnJheSh1KSwgYyA9IG5ldyBBcnJheSh1KSwgZiA9IDA7IGYgPCB1OyBmKyspIGxbZl0gPSAtMSwgY1tmXSA9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbFtzICsgMV0gPSAwLCBjW3MgKyAxXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gciAtIGksIHAgPSBkICUgMiAhPSAwLCBoID0gMCwgbSA9IDAsIHkgPSAwLCBnID0gMCwgdiA9IDA7IHYgPCBhOyB2KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBiID0gLXYgKyBoOyBiIDw9IHYgLSBtOyBiICs9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdyA9IHMgKyBiLCBPID0gKEMgPSBiID09IC12IHx8IGIgIT0gdiAmJiBsW3cgLSAxXSA8IGxbdyArIDFdID8gbFt3ICsgMV0gOiBsW3cgLSAxXSArIDEpIC0gYjsgQyA8IHIgJiYgTyA8IGkgJiYgZS5jaGFyQXQoQykgPT0gdC5jaGFyQXQoTyk7KSBDKyssIE8rKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxbd10gPSBDLCBDID4gcikgbSArPSAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChPID4gaSkgaCArPSAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChwICYmIChrID0gcyArIGQgLSBiKSA+PSAwICYmIGsgPCB1ICYmIC0xICE9IGNba10gJiYgQyA+PSAoeCA9IHIgLSBjW2tdKSkgcmV0dXJuIG8oZSwgdCwgQywgTykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgXyA9IC12ICsgeTsgXyA8PSB2IC0gZzsgXyArPSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHgsIGsgPSBzICsgXywgRSA9ICh4ID0gXyA9PSAtdiB8fCBfICE9IHYgJiYgY1trIC0gMV0gPCBjW2sgKyAxXSA/IGNbayArIDFdIDogY1trIC0gMV0gKyAxKSAtIF87IHggPCByICYmIEUgPCBpICYmIGUuY2hhckF0KHIgLSB4IC0gMSkgPT0gdC5jaGFyQXQoaSAtIEUgLSAxKTspIHgrKywgRSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY1trXSA9IHgsIHggPiByKSBnICs9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEUgPiBpKSB5ICs9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodyA9IHMgKyBkIC0gXykgPj0gMCAmJiB3IDwgdSAmJiAtMSAhPSBsW3ddKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPID0gcyArIChDID0gbFt3XSkgLSB3LCBDID49ICh4ID0gciAtIHgpKSByZXR1cm4gbyhlLCB0LCBDLCBPKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbiwgZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsIHRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUgPSBlLnN1YnN0cmluZygwLCBlLmxlbmd0aCAtIGMpLCB0ID0gdC5zdWJzdHJpbmcoMCwgdC5sZW5ndGggLSBjKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZiAmJiBwLnVuc2hpZnQoWzAsIGZdKSwgZCAmJiBwLnB1c2goWzAsIGRdKSwgcyhwKSwgbnVsbCAhPSB1ICYmIChwID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IHQpIHJldHVybiBbMCwgZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gMCwgbyA9IDA7IG8gPCBlLmxlbmd0aDsgbysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlW29dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpWzBdID09PSBuIHx8IDAgPT09IGlbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSByICsgaVsxXS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID09PSBhKSByZXR1cm4gW28gKyAxLCBlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5zbGljZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0IC0gciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gW2lbMF0sIGlbMV0uc2xpY2UoMCwgcyldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBbaVswXSwgaVsxXS5zbGljZShzKV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zcGxpY2UobywgMSwgdSwgbCksIFtvICsgMSwgZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiY3Vyc29yX3BvcyBpcyBvdXQgb2YgYm91bmRzISIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gclswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG9baV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvW2kgKyAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBhKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gYVswXSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcyAmJiBhWzFdICsgc1sxXSA9PT0gc1sxXSArIGFbMV0pIHJldHVybiBvLnNwbGljZShpLCAyLCBzLCBhKSwgbChvLCBpLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBzICYmIDAgPT09IHNbMV0uaW5kZXhPZihhWzFdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnNwbGljZShpLCAyLCBbc1swXSwgYVsxXV0sIFswLCBhWzFdXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gc1sxXS5zbGljZShhWzFdLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1Lmxlbmd0aCA+IDAgJiYgby5zcGxpY2UoaSArIDIsIDAsIFtzWzBdLCB1XSksIGwobywgaSwgMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0ocCwgdSkpLCBwID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAhMSwgciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNoYXJDb2RlQXQoMCkgPj0gNTYzMjAgJiYgZS5jaGFyQ29kZUF0KDApIDw9IDU3MzQzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5jaGFyQ29kZUF0KGUubGVuZ3RoIC0gMSkgPj0gNTUyOTYgJiYgZS5jaGFyQ29kZUF0KGUubGVuZ3RoIC0gMSkgPD0gNTYzMTkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSA9IDI7IGkgPCBlLmxlbmd0aDsgaSArPSAxKSAwID09PSBlW2kgLSAyXVswXSAmJiBvKGVbaSAtIDJdWzFdKSAmJiBlW2kgLSAxXVswXSA9PT0gbiAmJiByKGVbaSAtIDFdWzFdKSAmJiAxID09PSBlW2ldWzBdICYmIHIoZVtpXVsxXSkgJiYgKHQgPSAhMCwgZVtpIC0gMV1bMV0gPSBlW2kgLSAyXVsxXS5zbGljZSgtMSkgKyBlW2kgLSAxXVsxXSwgZVtpXVsxXSA9IGVbaSAtIDJdWzFdLnNsaWNlKC0xKSArIGVbaV1bMV0sIGVbaSAtIDJdWzFdID0gZVtpIC0gMl1bMV0uc2xpY2UoMCwgLTEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGUubGVuZ3RoOyBpICs9IDEpIGVbaV1bMV0ubGVuZ3RoID4gMCAmJiBhLnB1c2goZVtpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0ocCkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbyhlLCB0LCBuLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUuc3Vic3RyaW5nKDAsIG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnN1YnN0cmluZygwLCBvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5zdWJzdHJpbmcobiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQuc3Vic3RyaW5nKG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByKGksIGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSByKHMsIHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwuY29uY2F0KGMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICF0IHx8IGUuY2hhckF0KDApICE9IHQuY2hhckF0KDApKSByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwLCByID0gTWF0aC5taW4oZS5sZW5ndGgsIHQubGVuZ3RoKSwgbyA9IHIsIGkgPSAwOyBuIDwgbzspIGUuc3Vic3RyaW5nKGksIG8pID09IHQuc3Vic3RyaW5nKGksIG8pID8gaSA9IG4gPSBvIDogciA9IG8sIG8gPSBNYXRoLmZsb29yKChyIC0gbikgLyAyICsgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSB8fCAhdCB8fCBlLmNoYXJBdChlLmxlbmd0aCAtIDEpICE9IHQuY2hhckF0KHQubGVuZ3RoIC0gMSkpIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDAsIHIgPSBNYXRoLm1pbihlLmxlbmd0aCwgdC5sZW5ndGgpLCBvID0gciwgaSA9IDA7IG4gPCBvOykgZS5zdWJzdHJpbmcoZS5sZW5ndGggLSBvLCBlLmxlbmd0aCAtIGkpID09IHQuc3Vic3RyaW5nKHQubGVuZ3RoIC0gbywgdC5sZW5ndGggLSBpKSA/IGkgPSBuID0gbyA6IHIgPSBvLCBvID0gTWF0aC5mbG9vcigociAtIG4pIC8gMiArIG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnB1c2goWzAsICIiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCByID0gMCwgbyA9IDAsIHUgPSAwLCBsID0gIiIsIGMgPSAiIjsgciA8IGUubGVuZ3RoOykgc3dpdGNoIChlW3JdWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KyssIGMgKz0gZVtyXVsxXSwgcisrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8rKywgbCArPSBlW3JdWzFdLCByKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyArIHUgPiAxID8gKDAgIT09IG8gJiYgMCAhPT0gdSAmJiAoMCAhPT0gKHQgPSBpKGMsIGwpKSAmJiAociAtIG8gLSB1ID4gMCAmJiAwID09IGVbciAtIG8gLSB1IC0gMV1bMF0gPyBlW3IgLSBvIC0gdSAtIDFdWzFdICs9IGMuc3Vic3RyaW5nKDAsIHQpIDogKGUuc3BsaWNlKDAsIDAsIFswLCBjLnN1YnN0cmluZygwLCB0KV0pLCByKyspLCBjID0gYy5zdWJzdHJpbmcodCksIGwgPSBsLnN1YnN0cmluZyh0KSksIDAgIT09ICh0ID0gYShjLCBsKSkgJiYgKGVbcl1bMV0gPSBjLnN1YnN0cmluZyhjLmxlbmd0aCAtIHQpICsgZVtyXVsxXSwgYyA9IGMuc3Vic3RyaW5nKDAsIGMubGVuZ3RoIC0gdCksIGwgPSBsLnN1YnN0cmluZygwLCBsLmxlbmd0aCAtIHQpKSksIDAgPT09IG8gPyBlLnNwbGljZShyIC0gdSwgbyArIHUsIFsxLCBjXSkgOiAwID09PSB1ID8gZS5zcGxpY2UociAtIG8sIG8gKyB1LCBbbiwgbF0pIDogZS5zcGxpY2UociAtIG8gLSB1LCBvICsgdSwgW24sIGxdLCBbMSwgY10pLCByID0gciAtIG8gLSB1ICsgKG8gPyAxIDogMCkgKyAodSA/IDEgOiAwKSArIDEpIDogMCAhPT0gciAmJiAwID09IGVbciAtIDFdWzBdID8gKGVbciAtIDFdWzFdICs9IGVbcl1bMV0sIGUuc3BsaWNlKHIsIDEpKSA6IHIrKywgdSA9IDAsIG8gPSAwLCBsID0gIiIsIGMgPSAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgPT09IGVbZS5sZW5ndGggLSAxXVsxXSAmJiBlLnBvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IDE7IHIgPCBlLmxlbmd0aCAtIDE7KSAwID09IGVbciAtIDFdWzBdICYmIDAgPT0gZVtyICsgMV1bMF0gJiYgKGVbcl1bMV0uc3Vic3RyaW5nKGVbcl1bMV0ubGVuZ3RoIC0gZVtyIC0gMV1bMV0ubGVuZ3RoKSA9PSBlW3IgLSAxXVsxXSA/IChlW3JdWzFdID0gZVtyIC0gMV1bMV0gKyBlW3JdWzFdLnN1YnN0cmluZygwLCBlW3JdWzFdLmxlbmd0aCAtIGVbciAtIDFdWzFdLmxlbmd0aCksIGVbciArIDFdWzFdID0gZVtyIC0gMV1bMV0gKyBlW3IgKyAxXVsxXSwgZS5zcGxpY2UociAtIDEsIDEpLCBmID0gITApIDogZVtyXVsxXS5zdWJzdHJpbmcoMCwgZVtyICsgMV1bMV0ubGVuZ3RoKSA9PSBlW3IgKyAxXVsxXSAmJiAoZVtyIC0gMV1bMV0gKz0gZVtyICsgMV1bMV0sIGVbcl1bMV0gPSBlW3JdWzFdLnN1YnN0cmluZyhlW3IgKyAxXVsxXS5sZW5ndGgpICsgZVtyICsgMV1bMV0sIGUuc3BsaWNlKHIgKyAxLCAxKSwgZiA9ICEwKSksIHIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgJiYgcyhlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gcjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IHQgKyBuIC0gMTsgciA+PSAwICYmIHIgPj0gdCAtIDE7IHItLSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociArIDEgPCBlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGVbcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtyICsgMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9bMF0gPT09IGlbMV0gJiYgZS5zcGxpY2UociwgMiwgW29bMF0sIG9bMV0gKyBpWzFdXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHUuSU5TRVJUID0gMSwgdS5ERUxFVEUgPSBuLCB1LkVRVUFMID0gMCwgZS5leHBvcnRzID0gdQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBlKSB0LnB1c2gobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgICAgICB9KGUuZXhwb3J0cyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIE9iamVjdC5rZXlzID8gT2JqZWN0LmtleXMgOiBuKS5zaGltID0gbgogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAiW29iamVjdCBBcmd1bWVudHNdIiA9PSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICB9KCk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiW29iamVjdCBBcmd1bWVudHNdIiA9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAibnVtYmVyIiA9PSB0eXBlb2YgZS5sZW5ndGggJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsICJjYWxsZWUiKSAmJiAhT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsICJjYWxsZWUiKSB8fCAhMQogICAgICAgICAgICAgICAgICAgICAgICB9KHQgPSBlLmV4cG9ydHMgPSBuID8gciA6IG8pLnN1cHBvcnRlZCA9IHIsIHQudW5zdXBwb3J0ZWQgPSBvCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAifiI7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKCkge30KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mbiA9IGUsIHRoaXMuY29udGV4dCA9IHQsIHRoaXMub25jZSA9IG4gfHwgITEKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IG5ldyBvLCB0aGlzLl9ldmVudHNDb3VudCA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuY3JlYXRlICYmIChvLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCksIChuZXcgbykuX19wcm90b19fIHx8IChyID0gITEpKSwgYS5wcm90b3R5cGUuZXZlbnROYW1lcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQsIG8gPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSB0aGlzLl9ldmVudHNDb3VudCkgcmV0dXJuIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gZSA9IHRoaXMuX2V2ZW50cykgbi5jYWxsKGUsIHQpICYmIG8ucHVzaChyID8gdC5zbGljZSgxKSA6IHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBvLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpKSA6IG8KICAgICAgICAgICAgICAgICAgICAgICAgfSwgYS5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSByID8gciArIGUgOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLl9ldmVudHNbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkgcmV0dXJuICEhbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykgcmV0dXJuIFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8uZm4pIHJldHVybiBbby5mbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgYSA9IG8ubGVuZ3RoLCBzID0gbmV3IEFycmF5KGEpOyBpIDwgYTsgaSsrKSBzW2ldID0gb1tpXS5mbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbihlLCB0LCBuLCBvLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHIgPyByICsgZSA6IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2V2ZW50c1tzXSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUsIGwsIGMgPSB0aGlzLl9ldmVudHNbc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGFyZ3VtZW50cy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy5mbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYy5vbmNlICYmIHRoaXMucmVtb3ZlTGlzdGVuZXIoZSwgYy5mbiwgdW5kZWZpbmVkLCAhMCksIGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsIHQpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsIHQsIG4pLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsIHQsIG4sIG8pLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsIHQsIG4sIG8sIGkpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsIHQsIG4sIG8sIGksIGEpLCAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSAxLCB1ID0gbmV3IEFycmF5KGYgLSAxKTsgbCA8IGY7IGwrKykgdVtsIC0gMV0gPSBhcmd1bWVudHNbbF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5mbi5hcHBseShjLmNvbnRleHQsIHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkLCBwID0gYy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gMDsgbCA8IHA7IGwrKykgc3dpdGNoIChjW2xdLm9uY2UgJiYgdGhpcy5yZW1vdmVMaXN0ZW5lcihlLCBjW2xdLmZuLCB1bmRlZmluZWQsICEwKSwgZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2xdLmZuLmNhbGwoY1tsXS5jb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2xdLmZuLmNhbGwoY1tsXS5jb250ZXh0LCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2xdLmZuLmNhbGwoY1tsXS5jb250ZXh0LCB0LCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2xdLmZuLmNhbGwoY1tsXS5jb250ZXh0LCB0LCBuLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZCA9IDEsIHUgPSBuZXcgQXJyYXkoZiAtIDEpOyBkIDwgZjsgZCsrKSB1W2QgLSAxXSA9IGFyZ3VtZW50c1tkXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbbF0uZm4uYXBwbHkoY1tsXS5jb250ZXh0LCB1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9LCBhLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbmV3IGkodCwgbiB8fCB0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gciA/IHIgKyBlIDogZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmVudHNbYV0gPyB0aGlzLl9ldmVudHNbYV0uZm4gPyB0aGlzLl9ldmVudHNbYV0gPSBbdGhpcy5fZXZlbnRzW2FdLCBvXSA6IHRoaXMuX2V2ZW50c1thXS5wdXNoKG8pIDogKHRoaXMuX2V2ZW50c1thXSA9IG8sIHRoaXMuX2V2ZW50c0NvdW50KyspLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG5ldyBpKHQsIG4gfHwgdGhpcywgITApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSByID8gciArIGUgOiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50c1thXSA/IHRoaXMuX2V2ZW50c1thXS5mbiA/IHRoaXMuX2V2ZW50c1thXSA9IFt0aGlzLl9ldmVudHNbYV0sIG9dIDogdGhpcy5fZXZlbnRzW2FdLnB1c2gobykgOiAodGhpcy5fZXZlbnRzW2FdID0gbywgdGhpcy5fZXZlbnRzQ291bnQrKyksIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHIgPyByICsgZSA6IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2V2ZW50c1thXSkgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiAwID09IC0tdGhpcy5fZXZlbnRzQ291bnQgPyB0aGlzLl9ldmVudHMgPSBuZXcgbyA6IGRlbGV0ZSB0aGlzLl9ldmVudHNbYV0sIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMuX2V2ZW50c1thXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLmZuKSBzLmZuICE9PSB0IHx8IGkgJiYgIXMub25jZSB8fCBuICYmIHMuY29udGV4dCAhPT0gbiB8fCAoMCA9PSAtLXRoaXMuX2V2ZW50c0NvdW50ID8gdGhpcy5fZXZlbnRzID0gbmV3IG8gOiBkZWxldGUgdGhpcy5fZXZlbnRzW2FdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHUgPSAwLCBsID0gW10sIGMgPSBzLmxlbmd0aDsgdSA8IGM7IHUrKykoc1t1XS5mbiAhPT0gdCB8fCBpICYmICFzW3VdLm9uY2UgfHwgbiAmJiBzW3VdLmNvbnRleHQgIT09IG4pICYmIGwucHVzaChzW3VdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmxlbmd0aCA/IHRoaXMuX2V2ZW50c1thXSA9IDEgPT09IGwubGVuZ3RoID8gbFswXSA6IGwgOiAwID09IC0tdGhpcy5fZXZlbnRzQ291bnQgPyB0aGlzLl9ldmVudHMgPSBuZXcgbyA6IGRlbGV0ZSB0aGlzLl9ldmVudHNbYV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPyAodCA9IHIgPyByICsgZSA6IGUsIHRoaXMuX2V2ZW50c1t0XSAmJiAoMCA9PSAtLXRoaXMuX2V2ZW50c0NvdW50ID8gdGhpcy5fZXZlbnRzID0gbmV3IG8gOiBkZWxldGUgdGhpcy5fZXZlbnRzW3RdKSkgOiAodGhpcy5fZXZlbnRzID0gbmV3IG8sIHRoaXMuX2V2ZW50c0NvdW50ID0gMCksIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYS5wcm90b3R5cGUub2ZmID0gYS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIsIGEucHJvdG90eXBlLmFkZExpc3RlbmVyID0gYS5wcm90b3R5cGUub24sIGEucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYS5wcmVmaXhlZCA9IHIsIGEuRXZlbnRFbWl0dGVyID0gYSwgdm9pZCAwICE9PSBlICYmIChlLmV4cG9ydHMgPSBhKQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQubWF0Y2hUZXh0ID0gdC5tYXRjaFNwYWNpbmcgPSB0Lm1hdGNoTmV3bGluZSA9IHQubWF0Y2hCbG90ID0gdC5tYXRjaEF0dHJpYnV0b3IgPSB0WyJkZWZhdWx0Il0gPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiBlLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgZSAhPT0gU3ltYm9sLnByb3RvdHlwZSA/ICJzeW1ib2wiIDogdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSkgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhLCBzID0gZVtTeW1ib2wuaXRlcmF0b3JdKCk7ICEociA9IChhID0gcy5uZXh0KCkpLmRvbmUpICYmIChuLnB1c2goYS52YWx1ZSksICF0IHx8IG4ubGVuZ3RoICE9PSB0KTsgciA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICEwLCBpID0gdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhciAmJiBzWyJyZXR1cm4iXSAmJiBzWyJyZXR1cm4iXSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB0aHJvdyBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gYihuKDMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBiKG4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGIobigwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYihuKDUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBiKG4oMTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBiKG4oOSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG4oMzYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG4oMzcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGIobigxMykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG4oMjYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IG4oMzgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4oMzkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IG4oNDApOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGVbdF0gPSBuLCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE8gPSAoMCwgY1siZGVmYXVsdCJdKSgicXVpbGw6Y2xpcGJvYXJkIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gIl9fcWwtbWF0Y2hlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtOb2RlLlRFWFRfTk9ERSwgUl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW05vZGUuVEVYVF9OT0RFLCBMXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImJyIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUCh0LCAiXG4iKSB8fCB0Lmluc2VydCgiXG4iKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtOb2RlLkVMRU1FTlRfTk9ERSwgTF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW05vZGUuRUxFTUVOVF9OT0RFLCBNXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTm9kZS5FTEVNRU5UX05PREUsIEldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtOb2RlLkVMRU1FTlRfTk9ERSwgTl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW05vZGUuRUxFTUVOVF9OT0RFLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5zdHlsZSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuZm9udFN0eWxlICYmICJpdGFsaWMiID09PSBqKGUpLmZvbnRTdHlsZSAmJiAobi5pdGFsaWMgPSAhMCksIHIuZm9udFdlaWdodCAmJiAoaihlKS5mb250V2VpZ2h0LnN0YXJ0c1dpdGgoImJvbGQiKSB8fCBwYXJzZUludChqKGUpLmZvbnRXZWlnaHQpID49IDcwMCkgJiYgKG4uYm9sZCA9ICEwKSwgT2JqZWN0LmtleXMobikubGVuZ3RoID4gMCAmJiAodCA9IFModCwgbikpLCBwYXJzZUZsb2F0KHIudGV4dEluZGVudCB8fCAwKSA+IDAgJiYgKHQgPSAobmV3IHNbImRlZmF1bHQiXSkuaW5zZXJ0KCJcdCIpLmNvbmNhdCh0KSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImxpIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHVbImRlZmF1bHQiXS5xdWVyeShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbiB8fCAibGlzdC1pdGVtIiAhPT0gbi5ibG90TmFtZSB8fCAhUCh0LCAiXG4iKSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAtMSwgbyA9IGUucGFyZW50Tm9kZTsgIW8uY2xhc3NMaXN0LmNvbnRhaW5zKCJxbC1jbGlwYm9hcmQiKTspICJsaXN0IiA9PT0gKHVbImRlZmF1bHQiXS5xdWVyeShvKSB8fCB7fSkuYmxvdE5hbWUgJiYgKHIgKz0gMSksIG8gPSBvLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByIDw9IDAgPyB0IDogdC5jb21wb3NlKChuZXcgc1siZGVmYXVsdCJdKS5yZXRhaW4odC5sZW5ndGgoKSAtIDEpLnJldGFpbigxLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJiIiwgVC5iaW5kKFQsICJib2xkIildLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaSIsIFQuYmluZChULCAiaXRhbGljIildLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsic3R5bGUiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBzWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBbZC5BbGlnbkF0dHJpYnV0ZSwgeS5EaXJlY3Rpb25BdHRyaWJ1dGVdLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlW3Qua2V5TmFtZV0gPSB0LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwge30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IFtkLkFsaWduU3R5bGUsIHAuQmFja2dyb3VuZFN0eWxlLCBtLkNvbG9yU3R5bGUsIHkuRGlyZWN0aW9uU3R5bGUsIGcuRm9udFN0eWxlLCB2LlNpemVTdHlsZV0ucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbdC5rZXlOYW1lXSA9IHQsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnF1aWxsLnJvb3QuYWRkRXZlbnRMaXN0ZW5lcigicGFzdGUiLCByLm9uUGFzdGUuYmluZChyKSksIHIuY29udGFpbmVyID0gci5xdWlsbC5hZGRDb250YWluZXIoInFsLWNsaXBib2FyZCIpLCByLmNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIsICEwKSwgci5jb250YWluZXIuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIC0xKSwgci5tYXRjaGVycyA9IFtdLCB4LmNvbmNhdChyLm9wdGlvbnMubWF0Y2hlcnMpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbyhlLCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdFswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdFsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuLm1hdGNoVmlzdWFsIHx8IGEgIT09IEkpICYmIHIuYWRkTWF0Y2hlcihpLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIGkodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkTWF0Y2hlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZXJzLnB1c2goW2UsIHRdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjb252ZXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgcmV0dXJuIHRoaXMuY29udGFpbmVyLmlubmVySFRNTCA9IGUucmVwbGFjZSgvXD5ccj9cbiArXDwvZywgIj48IiksIHRoaXMuY29udmVydCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnF1aWxsLmdldEZvcm1hdCh0aGlzLnF1aWxsLnNlbGVjdGlvbi5zYXZlZFJhbmdlLmluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0W2hbImRlZmF1bHQiXS5ibG90TmFtZV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuY29udGFpbmVyLmlubmVyVGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIuaW5uZXJIVE1MID0gIiIsIChuZXcgc1siZGVmYXVsdCJdKS5pbnNlcnQobiwgdyh7fSwgaFsiZGVmYXVsdCJdLmJsb3ROYW1lLCB0W2hbImRlZmF1bHQiXS5ibG90TmFtZV0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnByZXBhcmVNYXRjaGluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvKHIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBEKHRoaXMuY29udGFpbmVyLCBhLCB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQKGwsICJcbiIpICYmIG51bGwgPT0gbC5vcHNbbC5vcHMubGVuZ3RoIC0gMV0uYXR0cmlidXRlcyAmJiAobCA9IGwuY29tcG9zZSgobmV3IHNbImRlZmF1bHQiXSkucmV0YWluKGwubGVuZ3RoKCkgLSAxKVsiZGVsZXRlIl0oMSkpKSwgTy5sb2coImNvbnZlcnQiLCB0aGlzLmNvbnRhaW5lci5pbm5lckhUTUwsIGwpLCB0aGlzLmNvbnRhaW5lci5pbm5lckhUTUwgPSAiIiwgbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkYW5nZXJvdXNseVBhc3RlSFRNTCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogbFsiZGVmYXVsdCJdLnNvdXJjZXMuQVBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSB0aGlzLnF1aWxsLnNldENvbnRlbnRzKHRoaXMuY29udmVydChlKSwgdCksIHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKDAsIGxbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuY29udmVydCh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLnVwZGF0ZUNvbnRlbnRzKChuZXcgc1siZGVmYXVsdCJdKS5yZXRhaW4oZSkuY29uY2F0KHIpLCBuKSwgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24oZSArIHIubGVuZ3RoKCksIGxbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAib25QYXN0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCAmJiB0aGlzLnF1aWxsLmlzRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gKG5ldyBzWyJkZWZhdWx0Il0pLnJldGFpbihuLmluZGV4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMucXVpbGwuc2Nyb2xsaW5nQ29udGFpbmVyLnNjcm9sbFRvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5mb2N1cygpLCB0aGlzLnF1aWxsLnNlbGVjdGlvbi51cGRhdGUobFsiZGVmYXVsdCJdLnNvdXJjZXMuU0lMRU5UKSwgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLmNvbmNhdCh0LmNvbnZlcnQoKSlbImRlbGV0ZSJdKG4ubGVuZ3RoKSwgdC5xdWlsbC51cGRhdGVDb250ZW50cyhyLCBsWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdC5xdWlsbC5zZXRTZWxlY3Rpb24oci5sZW5ndGgoKSAtIG4ubGVuZ3RoLCBsWyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpLCB0LnF1aWxsLnNjcm9sbGluZ0NvbnRhaW5lci5zY3JvbGxUb3AgPSBvLCB0LnF1aWxsLmZvY3VzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicHJlcGFyZU1hdGNoaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXRjaGVycy5mb3JFYWNoKChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBvKHIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGlbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnB1c2gocyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHVzaChzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10uZm9yRWFjaC5jYWxsKGUuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoYSksIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtfXSA9IGVbX10gfHwgW10sIGVbX10ucHVzaChzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBbdCwgbl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShmWyJkZWZhdWx0Il0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gUyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm9iamVjdCIgPT09ICh2b2lkIDAgPT09IHQgPyAidW5kZWZpbmVkIiA6IHIodCkpID8gT2JqZWN0LmtleXModCkucmVkdWNlKChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFMoZSwgbiwgdFtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlKSA6IGUucmVkdWNlKChmdW5jdGlvbihlLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuYXR0cmlidXRlcyAmJiByLmF0dHJpYnV0ZXNbdF0gPyBlLnB1c2gocikgOiBlLmluc2VydChyLmluc2VydCwgKDAsIGFbImRlZmF1bHQiXSkoe30sIHcoe30sIHQsIG4pLCByLmF0dHJpYnV0ZXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG5ldyBzWyJkZWZhdWx0Il0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGooZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFKSByZXR1cm4ge307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9ICJfX3FsLWNvbXB1dGVkLXN0eWxlIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlW3RdIHx8IChlW3RdID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFAoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9ICIiLCByID0gZS5vcHMubGVuZ3RoIC0gMTsgciA+PSAwICYmIG4ubGVuZ3RoIDwgdC5sZW5ndGg7IC0tcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZS5vcHNbcl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBvLmluc2VydCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG8uaW5zZXJ0ICsgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc2xpY2UoLTEgKiB0Lmxlbmd0aCkgPT09IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gZS5jaGlsZE5vZGVzLmxlbmd0aCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBqKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsiYmxvY2siLCAibGlzdC1pdGVtIl0uaW5kZXhPZih0LmRpc3BsYXkpID4gLTEKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gRChlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5ub2RlVHlwZSA9PT0gZS5URVhUX05PREUgPyBuLnJlZHVjZSgoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbmV3IHNbImRlZmF1bHQiXSkgOiBlLm5vZGVUeXBlID09PSBlLkVMRU1FTlRfTk9ERSA/IFtdLnJlZHVjZS5jYWxsKGUuY2hpbGROb2RlcyB8fCBbXSwgKGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IEQobywgdCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8ubm9kZVR5cGUgPT09IGUuRUxFTUVOVF9OT0RFICYmIChpID0gdC5yZWR1Y2UoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQobywgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaSksIGkgPSAob1tfXSB8fCBbXSkucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0KG8sIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkpKSwgci5jb25jYXQoaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuZXcgc1siZGVmYXVsdCJdKSA6IG5ldyBzWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gVChlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUyhuLCBlLCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gTihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHVbImRlZmF1bHQiXS5BdHRyaWJ1dG9yLkF0dHJpYnV0ZS5rZXlzKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB1WyJkZWZhdWx0Il0uQXR0cmlidXRvci5DbGFzcy5rZXlzKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB1WyJkZWZhdWx0Il0uQXR0cmlidXRvci5TdHlsZS5rZXlzKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNvbmNhdChyKS5jb25jYXQobykuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdVsiZGVmYXVsdCJdLnF1ZXJ5KHQsIHVbImRlZmF1bHQiXS5TY29wZS5BVFRSSUJVVEUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gbiAmJiAoaVtuLmF0dHJOYW1lXSA9IG4udmFsdWUoZSksIGlbbi5hdHRyTmFtZV0pIHx8IChudWxsID09IChuID0ga1t0XSkgfHwgbi5hdHRyTmFtZSAhPT0gdCAmJiBuLmtleU5hbWUgIT09IHQgfHwgKGlbbi5hdHRyTmFtZV0gPSBuLnZhbHVlKGUpIHx8IHVuZGVmaW5lZCksIG51bGwgPT0gKG4gPSBFW3RdKSB8fCBuLmF0dHJOYW1lICE9PSB0ICYmIG4ua2V5TmFtZSAhPT0gdCB8fCAobiA9IEVbdF0sIGlbbi5hdHRyTmFtZV0gPSBuLnZhbHVlKGUpIHx8IHVuZGVmaW5lZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIE9iamVjdC5rZXlzKGkpLmxlbmd0aCA+IDAgJiYgKHQgPSBTKHQsIGkpKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBNKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdVsiZGVmYXVsdCJdLnF1ZXJ5KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbikgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5wcm90b3R5cGUgaW5zdGFuY2VvZiB1WyJkZWZhdWx0Il0uRW1iZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi52YWx1ZShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IG8gJiYgKHJbbi5ibG90TmFtZV0gPSBvLCB0ID0gKG5ldyBzWyJkZWZhdWx0Il0pLmluc2VydChyLCBuLmZvcm1hdHMoZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4uZm9ybWF0cyAmJiAodCA9IFModCwgbi5ibG90TmFtZSwgbi5mb3JtYXRzKGUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBMKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQKHQsICJcbiIpIHx8IChBKGUpIHx8IHQubGVuZ3RoKCkgPiAwICYmIGUubmV4dFNpYmxpbmcgJiYgQShlLm5leHRTaWJsaW5nKSkgJiYgdC5pbnNlcnQoIlxuIiksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gSShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQShlKSAmJiBudWxsICE9IGUubmV4dEVsZW1lbnRTaWJsaW5nICYmICFQKHQsICJcblxuIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUub2Zmc2V0SGVpZ2h0ICsgcGFyc2VGbG9hdChqKGUpLm1hcmdpblRvcCkgKyBwYXJzZUZsb2F0KGooZSkubWFyZ2luQm90dG9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm5leHRFbGVtZW50U2libGluZy5vZmZzZXRUb3AgPiBlLm9mZnNldFRvcCArIDEuNSAqIG4gJiYgdC5pbnNlcnQoIlxuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFIoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmRhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIk86UCIgPT09IGUucGFyZW50Tm9kZS50YWdOYW1lKSByZXR1cm4gdC5pbnNlcnQobi50cmltKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IG4udHJpbSgpLmxlbmd0aCAmJiBlLnBhcmVudE5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJxbC1jbGlwYm9hcmQiKSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWooZS5wYXJlbnROb2RlKS53aGl0ZVNwYWNlLnN0YXJ0c1dpdGgoInByZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodCA9IHQucmVwbGFjZSgvW15cdTAwYTBdL2csICIiKSkubGVuZ3RoIDwgMSAmJiBlID8gIiAiIDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IChuID0gbi5yZXBsYWNlKC9cclxuL2csICIgIikucmVwbGFjZSgvXG4vZywgIiAiKSkucmVwbGFjZSgvXHNccysvZywgci5iaW5kKHIsICEwKSksIChudWxsID09IGUucHJldmlvdXNTaWJsaW5nICYmIEEoZS5wYXJlbnROb2RlKSB8fCBudWxsICE9IGUucHJldmlvdXNTaWJsaW5nICYmIEEoZS5wcmV2aW91c1NpYmxpbmcpKSAmJiAobiA9IG4ucmVwbGFjZSgvXlxzKy8sIHIuYmluZChyLCAhMSkpKSwgKG51bGwgPT0gZS5uZXh0U2libGluZyAmJiBBKGUucGFyZW50Tm9kZSkgfHwgbnVsbCAhPSBlLm5leHRTaWJsaW5nICYmIEEoZS5uZXh0U2libGluZykpICYmIChuID0gbi5yZXBsYWNlKC9ccyskLywgci5iaW5kKHIsICExKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pbnNlcnQobikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBDLkRFRkFVTFRTID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hWaXN1YWw6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRbImRlZmF1bHQiXSA9IEMsIHQubWF0Y2hBdHRyaWJ1dG9yID0gTiwgdC5tYXRjaEJsb3QgPSBNLCB0Lm1hdGNoTmV3bGluZSA9IEwsIHQubWF0Y2hTcGFjaW5nID0gSSwgdC5tYXRjaFRleHQgPSBSCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24gYyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogYyhvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbig2KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHModGhpcywgdCksIHUodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJvcHRpbWl6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgIm9wdGltaXplIiwgdGhpcykuY2FsbCh0aGlzLCBlKSwgdGhpcy5kb21Ob2RlLnRhZ05hbWUgIT09IHRoaXMuc3RhdGljcy50YWdOYW1lWzBdICYmIHRoaXMucmVwbGFjZVdpdGgodGhpcy5zdGF0aWNzLmJsb3ROYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCksICJjcmVhdGUiLCB0aGlzKS5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKChyID0gYSkgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC5ibG90TmFtZSA9ICJib2xkIiwgbC50YWdOYW1lID0gWyJTVFJPTkciLCAiQiJdLCB0WyJkZWZhdWx0Il0gPSBsCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5hZGRDb250cm9scyA9IHRbImRlZmF1bHQiXSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEsIHMgPSBlW1N5bWJvbC5pdGVyYXRvcl0oKTsgIShyID0gKGEgPSBzLm5leHQoKSkuZG9uZSkgJiYgKG4ucHVzaChhLnZhbHVlKSwgIXQgfHwgbi5sZW5ndGggIT09IHQpOyByID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFyICYmIHNbInJldHVybiJdICYmIHNbInJldHVybiJdKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjKG4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGMobigwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYyhuKDUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBjKG4oMTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBjKG4oOSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9ICgwLCB1WyJkZWZhdWx0Il0pKCJxdWlsbDp0b29sYmFyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGkgPSBmKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSwgbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpLm9wdGlvbnMuY29udGFpbmVyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0oYSwgaS5vcHRpb25zLmNvbnRhaW5lciksIGUuY29udGFpbmVyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsIGUuY29udGFpbmVyKSwgaS5jb250YWluZXIgPSBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAic3RyaW5nIiA9PSB0eXBlb2YgaS5vcHRpb25zLmNvbnRhaW5lciA/IGkuY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihpLm9wdGlvbnMuY29udGFpbmVyKSA6IGkuY29udGFpbmVyID0gaS5vcHRpb25zLmNvbnRhaW5lcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuY29udGFpbmVyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyAoaS5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgicWwtdG9vbGJhciIpLCBpLmNvbnRyb2xzID0gW10sIGkuaGFuZGxlcnMgPSB7fSwgT2JqZWN0LmtleXMoaS5vcHRpb25zLmhhbmRsZXJzKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmFkZEhhbmRsZXIoZSwgaS5vcHRpb25zLmhhbmRsZXJzW2VdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIFtdLmZvckVhY2guY2FsbChpLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24sIHNlbGVjdCIpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5hdHRhY2goZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBpLnF1aWxsLm9uKHNbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPT09IHNbImRlZmF1bHQiXS5ldmVudHMuU0VMRUNUSU9OX0NIQU5HRSAmJiBpLnVwZGF0ZSh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGkucXVpbGwub24oc1siZGVmYXVsdCJdLmV2ZW50cy5TQ1JPTExfT1BUSU1JWkUsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gaS5xdWlsbC5zZWxlY3Rpb24uZ2V0UmFuZ2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gcihlLCAxKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkudXBkYXRlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgaSkgOiAobyA9IGQuZXJyb3IoIkNvbnRhaW5lciByZXF1aXJlZCBmb3IgdG9vbGJhciIsIGkub3B0aW9ucyksIGYoaSwgbykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZEhhbmRsZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVyc1tlXSA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYXR0YWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gW10uZmluZC5jYWxsKGUuY2xhc3NMaXN0LCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gZS5pbmRleE9mKCJxbC0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuLnNsaWNlKCJxbC0iLmxlbmd0aCksICJCVVRUT04iID09PSBlLnRhZ05hbWUgJiYgZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiYnV0dG9uIiksIG51bGwgPT0gdGhpcy5oYW5kbGVyc1tuXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLnF1aWxsLnNjcm9sbC53aGl0ZWxpc3QgJiYgbnVsbCA9PSB0aGlzLnF1aWxsLnNjcm9sbC53aGl0ZWxpc3Rbbl0pIHJldHVybiB2b2lkIGQud2FybigiaWdub3JpbmcgYXR0YWNoaW5nIHRvIGRpc2FibGVkIGZvcm1hdCIsIG4sIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBhWyJkZWZhdWx0Il0ucXVlcnkobikpIHJldHVybiB2b2lkIGQud2FybigiaWdub3JpbmcgYXR0YWNoaW5nIHRvIG5vbmV4aXN0ZW50IGZvcm1hdCIsIG4sIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gIlNFTEVDVCIgPT09IGUudGFnTmFtZSA/ICJjaGFuZ2UiIDogImNsaWNrIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmFkZEV2ZW50TGlzdGVuZXIobywgKGZ1bmN0aW9uKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiU0VMRUNUIiA9PT0gZS50YWdOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5zZWxlY3RlZEluZGV4IDwgMCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBlLm9wdGlvbnNbZS5zZWxlY3RlZEluZGV4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAhbC5oYXNBdHRyaWJ1dGUoInNlbGVjdGVkIikgJiYgKGwudmFsdWUgfHwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB1ID0gIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJxbC1hY3RpdmUiKSAmJiAoZS52YWx1ZSB8fCAhZS5oYXNBdHRyaWJ1dGUoInZhbHVlIikpLCBvLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucXVpbGwuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0LnF1aWxsLnNlbGVjdGlvbi5nZXRSYW5nZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHIoYywgMSlbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHQuaGFuZGxlcnNbbl0pIHQuaGFuZGxlcnNbbl0uY2FsbCh0LCB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYVsiZGVmYXVsdCJdLnF1ZXJ5KG4pLnByb3RvdHlwZSBpbnN0YW5jZW9mIGFbImRlZmF1bHQiXS5FbWJlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodSA9IHByb21wdCgiRW50ZXIgIiArIG4pKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5xdWlsbC51cGRhdGVDb250ZW50cygobmV3IGlbImRlZmF1bHQiXSkucmV0YWluKGYuaW5kZXgpWyJkZWxldGUiXShmLmxlbmd0aCkuaW5zZXJ0KGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGVbdF0gPSBuLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHt9LCBuLCB1KSksIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0LnF1aWxsLmZvcm1hdChuLCB1LCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC51cGRhdGUoZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuY29udHJvbHMucHVzaChbbiwgZV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInVwZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG51bGwgPT0gZSA/IHt9IDogdGhpcy5xdWlsbC5nZXRGb3JtYXQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIobiwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gb1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIlNFTEVDVCIgPT09IGEudGFnTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgcyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG51bGwgPT0gdFtpXSkgcyA9IGEucXVlcnlTZWxlY3Rvcigib3B0aW9uW3NlbGVjdGVkXSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghQXJyYXkuaXNBcnJheSh0W2ldKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB0W2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyIgPT0gdHlwZW9mIHUgJiYgKHUgPSB1LnJlcGxhY2UoL1wiL2csICdcXCInKSksIHMgPSBhLnF1ZXJ5U2VsZWN0b3IoJ29wdGlvblt2YWx1ZT0iJyArIHUgKyAnIl0nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT0gcyA/IChhLnZhbHVlID0gIiIsIGEuc2VsZWN0ZWRJbmRleCA9IC0xKSA6IHMuc2VsZWN0ZWQgPSAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVsbCA9PSBlKSBhLmNsYXNzTGlzdC5yZW1vdmUoInFsLWFjdGl2ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGEuaGFzQXR0cmlidXRlKCJ2YWx1ZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gdFtpXSA9PT0gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgfHwgbnVsbCAhPSB0W2ldICYmIHRbaV0udG9TdHJpbmcoKSA9PT0gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgfHwgbnVsbCA9PSB0W2ldICYmICFhLmdldEF0dHJpYnV0ZSgidmFsdWUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5jbGFzc0xpc3QudG9nZ2xlKCJxbC1hY3RpdmUiLCBsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBhLmNsYXNzTGlzdC50b2dnbGUoInFsLWFjdGl2ZSIsIG51bGwgIT0gdFtpXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGxbImRlZmF1bHQiXSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnNldEF0dHJpYnV0ZSgidHlwZSIsICJidXR0b24iKSwgci5jbGFzc0xpc3QuYWRkKCJxbC0iICsgdCksIG51bGwgIT0gbiAmJiAoci52YWx1ZSA9IG4pLCBlLmFwcGVuZENoaWxkKHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG0oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheSh0WzBdKSB8fCAodCA9IFt0XSksIHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY2xhc3NMaXN0LmFkZCgicWwtZm9ybWF0cyIpLCB0LmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSBoKG4sIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gT2JqZWN0LmtleXMoZSlbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHIpID8gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5jbGFzc0xpc3QuYWRkKCJxbC0iICsgdCksIG4uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhMSAhPT0gZSA/IHQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIGUpIDogdC5zZXRBdHRyaWJ1dGUoInNlbGVjdGVkIiwgInNlbGVjdGVkIiksIHIuYXBwZW5kQ2hpbGQodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGUuYXBwZW5kQ2hpbGQocikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0obiwgdCwgcikgOiBoKG4sIHQsIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGUuYXBwZW5kQ2hpbGQobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHAuREVGQVVMVFMgPSB7fSwgcC5ERUZBVUxUUyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5xdWlsbC5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09IHQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnF1aWxsLmdldEZvcm1hdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBhWyJkZWZhdWx0Il0ucXVlcnkodCwgYVsiZGVmYXVsdCJdLlNjb3BlLklOTElORSkgJiYgZS5xdWlsbC5mb3JtYXQodCwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5xdWlsbC5yZW1vdmVGb3JtYXQodCwgc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucXVpbGwuZ2V0Rm9ybWF0KCkuYWxpZ247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJydGwiID09PSBlICYmIG51bGwgPT0gdCA/IHRoaXMucXVpbGwuZm9ybWF0KCJhbGlnbiIsICJyaWdodCIsIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpIDogZSB8fCAicmlnaHQiICE9PSB0IHx8IHRoaXMucXVpbGwuZm9ybWF0KCJhbGlnbiIsICExLCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSwgdGhpcy5xdWlsbC5mb3JtYXQoImRpcmVjdGlvbiIsIGUsIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMucXVpbGwuZ2V0Rm9ybWF0KHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHBhcnNlSW50KG4uaW5kZW50IHx8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIisxIiA9PT0gZSB8fCAiLTEiID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9ICIrMSIgPT09IGUgPyAxIDogLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicnRsIiA9PT0gbi5kaXJlY3Rpb24gJiYgKG8gKj0gLTEpLCB0aGlzLnF1aWxsLmZvcm1hdCgiaW5kZW50IiwgciArIG8sIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITAgPT09IGUgJiYgKGUgPSBwcm9tcHQoIkVudGVyIGxpbmsgVVJMOiIpKSwgdGhpcy5xdWlsbC5mb3JtYXQoImxpbmsiLCBlLCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5xdWlsbC5nZXRGb3JtYXQodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGVjayIgPT09IGUgPyAiY2hlY2tlZCIgPT09IG4ubGlzdCB8fCAidW5jaGVja2VkIiA9PT0gbi5saXN0ID8gdGhpcy5xdWlsbC5mb3JtYXQoImxpc3QiLCAhMSwgc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikgOiB0aGlzLnF1aWxsLmZvcm1hdCgibGlzdCIsICJ1bmNoZWNrZWQiLCBzWyJkZWZhdWx0Il0uc291cmNlcy5VU0VSKSA6IHRoaXMucXVpbGwuZm9ybWF0KCJsaXN0IiwgZSwgc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRbImRlZmF1bHQiXSA9IHAsIHQuYWRkQ29udHJvbHMgPSBtCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8cG9seWxpbmUgY2xhc3M9InFsLWV2ZW4gcWwtc3Ryb2tlIiBwb2ludHM9IjUgNyAzIDkgNSAxMSI+PC9wb2x5bGluZT4gPHBvbHlsaW5lIGNsYXNzPSJxbC1ldmVuIHFsLXN0cm9rZSIgcG9pbnRzPSIxMyA3IDE1IDkgMTMgMTEiPjwvcG9seWxpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0xMCB4Mj04IHkxPTUgeTI9MTM+PC9saW5lPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24gdShlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogdShvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbigyOCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLmxhYmVsLmlubmVySFRNTCA9IG4sIHIuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInFsLWNvbG9yLXBpY2tlciIpLCBbXS5zbGljZS5jYWxsKHIuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoIi5xbC1waWNrZXItaXRlbSIpLCAwLCA3KS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmNsYXNzTGlzdC5hZGQoInFsLXByaW1hcnkiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYnVpbGRJdGVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gaSh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgImJ1aWxkSXRlbSIsIHRoaXMpLmNhbGwodGhpcywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBlLmdldEF0dHJpYnV0ZSgidmFsdWUiKSB8fCAiIiwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJzZWxlY3RJdGVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJzZWxlY3RJdGVtIiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5sYWJlbC5xdWVyeVNlbGVjdG9yKCIucWwtY29sb3ItbGFiZWwiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZSAmJiBlLmdldEF0dHJpYnV0ZSgiZGF0YS12YWx1ZSIpIHx8ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciAmJiAoImxpbmUiID09PSByLnRhZ05hbWUgPyByLnN0eWxlLnN0cm9rZSA9IG8gOiByLnN0eWxlLmZpbGwgPSBvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCgociA9IGEpICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIHUoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHUobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMjgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgicWwtaWNvbi1waWNrZXIiKSwgW10uZm9yRWFjaC5jYWxsKHIuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoIi5xbC1waWNrZXItaXRlbSIpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSBuW2UuZ2V0QXR0cmlidXRlKCJkYXRhLXZhbHVlIikgfHwgIiJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgci5kZWZhdWx0SXRlbSA9IHIuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoIi5xbC1zZWxlY3RlZCIpLCByLnNlbGVjdEl0ZW0oci5kZWZhdWx0SXRlbSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2VsZWN0SXRlbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAic2VsZWN0SXRlbSIsIHRoaXMpLmNhbGwodGhpcywgZSwgbiksIGUgPSBlIHx8IHRoaXMuZGVmYXVsdEl0ZW0sIHRoaXMubGFiZWwuaW5uZXJIVE1MID0gZS5pbm5lckhUTUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgoKHIgPSBhKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IHMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCBlKSwgdGhpcy5xdWlsbCA9IHQsIHRoaXMuYm91bmRzQ29udGFpbmVyID0gbiB8fCBkb2N1bWVudC5ib2R5LCB0aGlzLnJvb3QgPSB0LmFkZENvbnRhaW5lcigicWwtdG9vbHRpcCIpLCB0aGlzLnJvb3QuaW5uZXJIVE1MID0gdGhpcy5jb25zdHJ1Y3Rvci5URU1QTEFURSwgdGhpcy5xdWlsbC5yb290ID09PSB0aGlzLnF1aWxsLnNjcm9sbGluZ0NvbnRhaW5lciAmJiB0aGlzLnF1aWxsLnJvb3QuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5yb290LnN0eWxlLm1hcmdpblRvcCA9IC0xICogci5xdWlsbC5yb290LnNjcm9sbFRvcCArICJweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmhpZGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoaWRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb290LmNsYXNzTGlzdC5hZGQoInFsLWhpZGRlbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInBvc2l0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5sZWZ0ICsgZS53aWR0aCAvIDIgLSB0aGlzLnJvb3Qub2Zmc2V0V2lkdGggLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmJvdHRvbSArIHRoaXMucXVpbGwucm9vdC5zY3JvbGxUb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb3Quc3R5bGUubGVmdCA9IHQgKyAicHgiLCB0aGlzLnJvb3Quc3R5bGUudG9wID0gbiArICJweCIsIHRoaXMucm9vdC5jbGFzc0xpc3QucmVtb3ZlKCJxbC1mbGlwIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuYm91bmRzQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLnJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5yaWdodCA+IHIucmlnaHQgJiYgKGkgPSByLnJpZ2h0IC0gby5yaWdodCwgdGhpcy5yb290LnN0eWxlLmxlZnQgPSB0ICsgaSArICJweCIpLCBvLmxlZnQgPCByLmxlZnQgJiYgKGkgPSByLmxlZnQgLSBvLmxlZnQsIHRoaXMucm9vdC5zdHlsZS5sZWZ0ID0gdCArIGkgKyAicHgiKSwgby5ib3R0b20gPiByLmJvdHRvbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gby5ib3R0b20gLSBvLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuYm90dG9tIC0gZS50b3AgKyBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS50b3AgPSBuIC0gcyArICJweCIsIHRoaXMucm9vdC5jbGFzc0xpc3QuYWRkKCJxbC1mbGlwIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNob3ciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb3QuY2xhc3NMaXN0LnJlbW92ZSgicWwtZWRpdGluZyIpLCB0aGlzLnJvb3QuY2xhc3NMaXN0LnJlbW92ZSgicWwtaGlkZGVuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBvCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEsIHMgPSBlW1N5bWJvbC5pdGVyYXRvcl0oKTsgIShyID0gKGEgPSBzLm5leHQoKSkuZG9uZSkgJiYgKG4ucHVzaChhLnZhbHVlKSwgIXQgfHwgbi5sZW5ndGggIT09IHQpOyByID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFyICYmIHNbInJldHVybiJdICYmIHNbInJldHVybiJdKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uIHcoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHcobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwKG4oMykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHAobig4KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbig0MyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcCh1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwKG4oMjcpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBuKDE1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBwKG4oNDEpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG0oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB5KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogWyIxIiwgIjIiLCAiMyIsICExXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYm9sZCIsICJpdGFsaWMiLCAidW5kZXJsaW5lIiwgImxpbmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0OiAib3JkZXJlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Q6ICJidWxsZXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjbGVhbiJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCh0aGlzLCB0KSwgbnVsbCAhPSBuLm1vZHVsZXMudG9vbGJhciAmJiBudWxsID09IG4ubW9kdWxlcy50b29sYmFyLmNvbnRhaW5lciAmJiAobi5tb2R1bGVzLnRvb2xiYXIuY29udGFpbmVyID0gZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUsIG4pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIucXVpbGwuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInFsLXNub3ciKSwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geSh0LCBlKSwgaSh0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJleHRlbmRUb29sYmFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInFsLXNub3ciKSwgdGhpcy5idWlsZEJ1dHRvbnMoW10uc2xpY2UuY2FsbChlLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24iKSksIGRbImRlZmF1bHQiXSksIHRoaXMuYnVpbGRQaWNrZXJzKFtdLnNsaWNlLmNhbGwoZS5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgic2VsZWN0IikpLCBkWyJkZWZhdWx0Il0pLCB0aGlzLnRvb2x0aXAgPSBuZXcgYih0aGlzLnF1aWxsLCB0aGlzLm9wdGlvbnMuYm91bmRzKSwgZS5jb250YWluZXIucXVlcnlTZWxlY3RvcigiLnFsLWxpbmsiKSAmJiB0aGlzLnF1aWxsLmtleWJvYXJkLmFkZEJpbmRpbmcoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0S2V5OiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmhhbmRsZXJzLmxpbmsuY2FsbChlLCAhbi5mb3JtYXQubGluaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGxbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHYuREVGQVVMVFMgPSAoMCwgYVsiZGVmYXVsdCJdKSghMCwge30sIGxbImRlZmF1bHQiXS5ERUZBVUxUUywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHQgfHwgMCA9PSB0Lmxlbmd0aCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMucXVpbGwuZ2V0VGV4dCh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL15cUytAXFMrXC5cUyskLy50ZXN0KG4pICYmIDAgIT09IG4uaW5kZXhPZigibWFpbHRvOiIpICYmIChuID0gIm1haWx0bzoiICsgbiksIHRoaXMucXVpbGwudGhlbWUudG9vbHRpcC5lZGl0KCJsaW5rIiwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5xdWlsbC5mb3JtYXQoImxpbmsiLCAhMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIucHJldmlldyA9IHIucm9vdC5xdWVyeVNlbGVjdG9yKCJhLnFsLXByZXZpZXciKSwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHkodCwgZSksIGkodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJsaXN0ZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAibGlzdGVuIiwgdGhpcykuY2FsbCh0aGlzKSwgdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoImEucWwtYWN0aW9uIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yb290LmNsYXNzTGlzdC5jb250YWlucygicWwtZWRpdGluZyIpID8gZS5zYXZlKCkgOiBlLmVkaXQoImxpbmsiLCBlLnByZXZpZXcudGV4dENvbnRlbnQpLCB0LnByZXZlbnREZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnJvb3QucXVlcnlTZWxlY3RvcigiYS5xbC1yZW1vdmUiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBlLmxpbmtSYW5nZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5saW5rUmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yZXN0b3JlRm9jdXMoKSwgZS5xdWlsbC5mb3JtYXRUZXh0KG4sICJsaW5rIiwgITEsIHNbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpLCBkZWxldGUgZS5saW5rUmFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKSwgZS5oaWRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnF1aWxsLm9uKHNbImRlZmF1bHQiXS5ldmVudHMuU0VMRUNUSU9OX0NIQU5HRSwgKGZ1bmN0aW9uKHQsIG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gdC5sZW5ndGggJiYgbyA9PT0gc1siZGVmYXVsdCJdLnNvdXJjZXMuVVNFUikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUucXVpbGwuc2Nyb2xsLmRlc2NlbmRhbnQoY1siZGVmYXVsdCJdLCB0LmluZGV4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSByKGksIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGFbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5rUmFuZ2UgPSBuZXcgZi5SYW5nZSh0LmluZGV4IC0gbCwgdS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGNbImRlZmF1bHQiXS5mb3JtYXRzKHUuZG9tTm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5wcmV2aWV3LnRleHRDb250ZW50ID0gZCwgZS5wcmV2aWV3LnNldEF0dHJpYnV0ZSgiaHJlZiIsIGQpLCBlLnNob3coKSwgdm9pZCBlLnBvc2l0aW9uKGUucXVpbGwuZ2V0Qm91bmRzKGUubGlua1JhbmdlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBkZWxldGUgZS5saW5rUmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5oaWRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInNob3ciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgInNob3ciLCB0aGlzKS5jYWxsKHRoaXMpLCB0aGlzLnJvb3QucmVtb3ZlQXR0cmlidXRlKCJkYXRhLW1vZGUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHUuQmFzZVRvb2x0aXApOwogICAgICAgICAgICAgICAgICAgICAgICBiLlRFTVBMQVRFID0gWyc8YSBjbGFzcz0icWwtcHJldmlldyIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iYWJvdXQ6YmxhbmsiPjwvYT4nLCAnPGlucHV0IHR5cGU9InRleHQiIGRhdGEtZm9ybXVsYT0iZT1tY14yIiBkYXRhLWxpbms9Imh0dHBzOi8vcXVpbGxqcy5jb20iIGRhdGEtdmlkZW89IkVtYmVkIFVSTCI+JywgJzxhIGNsYXNzPSJxbC1hY3Rpb24iPjwvYT4nLCAnPGEgY2xhc3M9InFsLXJlbW92ZSI+PC9hPiddLmpvaW4oIiIpLCB0WyJkZWZhdWx0Il0gPSB2CiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBMKG4oMjkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuKDM2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuKDM4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBMKG4oNjUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBMKG4oNjYpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuKDY3KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBMKGwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG4oMzcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG4oMjYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG4oMzkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4oNDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IEwobig1NikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEwobig2OCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IEwobigyNykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IEwobig2OSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IEwobig3MCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IEwobig3MSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9IEwobig3MikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9IEwobig3MykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IG4oMTMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IEwoeCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFID0gTChuKDc0KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDID0gTChuKDc1KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gTChuKDU3KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gTChuKDQxKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gTChuKDI4KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gTChuKDU5KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEID0gTChuKDYwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUID0gTChuKDYxKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOID0gTChuKDEwOCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTSA9IEwobig2MikpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gTChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJbImRlZmF1bHQiXS5yZWdpc3Rlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRvcnMvYXR0cmlidXRlL2RpcmVjdGlvbiI6IGkuRGlyZWN0aW9uQXR0cmlidXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL2NsYXNzL2FsaWduIjogby5BbGlnbkNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL2NsYXNzL2JhY2tncm91bmQiOiBmLkJhY2tncm91bmRDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dG9ycy9jbGFzcy9jb2xvciI6IGQuQ29sb3JDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dG9ycy9jbGFzcy9kaXJlY3Rpb24iOiBpLkRpcmVjdGlvbkNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL2NsYXNzL2ZvbnQiOiBwLkZvbnRDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dG9ycy9jbGFzcy9zaXplIjogaC5TaXplQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRvcnMvc3R5bGUvYWxpZ24iOiBvLkFsaWduU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRvcnMvc3R5bGUvYmFja2dyb3VuZCI6IGYuQmFja2dyb3VuZFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL3N0eWxlL2NvbG9yIjogZC5Db2xvclN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL3N0eWxlL2RpcmVjdGlvbiI6IGkuRGlyZWN0aW9uU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRvcnMvc3R5bGUvZm9udCI6IHAuRm9udFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0b3JzL3N0eWxlL3NpemUiOiBoLlNpemVTdHlsZQogICAgICAgICAgICAgICAgICAgICAgICB9LCAhMCksIHJbImRlZmF1bHQiXS5yZWdpc3Rlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9hbGlnbiI6IG8uQWxpZ25DbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL2RpcmVjdGlvbiI6IGkuRGlyZWN0aW9uQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9pbmRlbnQiOiBhLkluZGVudENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHMvYmFja2dyb3VuZCI6IGYuQmFja2dyb3VuZFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHMvY29sb3IiOiBkLkNvbG9yU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9mb250IjogcC5Gb250Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9zaXplIjogaC5TaXplQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9ibG9ja3F1b3RlIjogc1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHMvY29kZS1ibG9jayI6IGtbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL2hlYWRlciI6IHVbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL2xpc3QiOiBjWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9ib2xkIjogbVsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHMvY29kZSI6IHguQ29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL2l0YWxpYyI6IHlbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL2xpbmsiOiBnWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9zY3JpcHQiOiB2WyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9zdHJpa2UiOiBiWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy91bmRlcmxpbmUiOiB3WyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0cy9pbWFnZSI6IE9bImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXRzL3ZpZGVvIjogX1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHMvbGlzdC9pdGVtIjogbC5MaXN0SXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGVzL2Zvcm11bGEiOiBFWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlcy9zeW50YXgiOiBDWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlcy90b29sYmFyIjogU1siZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZW1lcy9idWJibGUiOiBOWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlbWVzL3Nub3ciOiBNWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWkvaWNvbnMiOiBqWyJkZWZhdWx0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWkvcGlja2VyIjogUFsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpL2ljb24tcGlja2VyIjogRFsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpL2NvbG9yLXBpY2tlciI6IEFbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1aS90b29sdGlwIjogVFsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sICEwKSwgdFsiZGVmYXVsdCJdID0gclsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5JbmRlbnRDbGFzcyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmVudW1lcmFibGUgPSByLmVudW1lcmFibGUgfHwgITEsIHIuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gciAmJiAoci53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIua2V5LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24gZihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZSAmJiAoZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBvID8gdW5kZWZpbmVkIDogZihvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiByKSByZXR1cm4gci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHIuZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBpLmNhbGwobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbigwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAociA9IGEpICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gbmV3KGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUodGhpcywgdCksIGwodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJhZGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiKzEiID09PSBuIHx8ICItMSIgPT09IG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy52YWx1ZShlKSB8fCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICIrMSIgPT09IG4gPyByICsgMSA6IHIgLSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IG4gPyAodGhpcy5yZW1vdmUoZSksICEwKSA6IGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJhZGQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNhbkFkZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJjYW5BZGQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pIHx8IGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJjYW5BZGQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIHBhcnNlSW50KG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ2YWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJ2YWx1ZSIsIHRoaXMpLmNhbGwodGhpcywgZSkpIHx8IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHNbImRlZmF1bHQiXS5BdHRyaWJ1dG9yLkNsYXNzKSkoImluZGVudCIsICJxbC1pbmRlbnQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZTogc1siZGVmYXVsdCJdLlNjb3BlLkJMT0NLLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0OiBbMSwgMiwgMywgNCwgNSwgNiwgNywgOF0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuSW5kZW50Q2xhc3MgPSBjCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBuKDQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCB0KSwgYSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KCgociA9IG8pICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IHIKICAgICAgICAgICAgICAgICAgICAgICAgfSlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuYmxvdE5hbWUgPSAiYmxvY2txdW90ZSIsIHMudGFnTmFtZSA9ICJibG9ja3F1b3RlIiwgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4oNCk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGUgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKHRoaXMsIHQpLCBzKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIG51bGwsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFnTmFtZS5pbmRleE9mKGUudGFnTmFtZSkgKyAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKChyID0gaSkgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgdS5ibG90TmFtZSA9ICJoZWFkZXIiLCB1LnRhZ05hbWUgPSBbIkgxIiwgIkgyIiwgIkgzIiwgIkg0IiwgIkg1IiwgIkg2Il0sIHRbImRlZmF1bHQiXSA9IHUKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0WyJkZWZhdWx0Il0gPSB0Lkxpc3RJdGVtID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbiBoKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBlICYmIChlID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG8gPyB1bmRlZmluZWQgOiBoKG8sIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIHIpIHJldHVybiByLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gci5nZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGkuY2FsbChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1KG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHUobig0KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdShuKDI1KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwodGhpcywgdCksIGModGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmKHQsIGUpLCByKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICE9PSBwLmJsb3ROYW1lIHx8IG4gPyBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiZm9ybWF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKSA6IHRoaXMucmVwbGFjZVdpdGgoaVsiZGVmYXVsdCJdLmNyZWF0ZSh0aGlzLnN0YXRpY3Muc2NvcGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW1vdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PSB0aGlzLnByZXYgJiYgbnVsbCA9PSB0aGlzLm5leHQgPyB0aGlzLnBhcmVudC5yZW1vdmUoKSA6IG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJyZW1vdmUiLCB0aGlzKS5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlcGxhY2VXaXRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuaXNvbGF0ZSh0aGlzLm9mZnNldCh0aGlzLnBhcmVudCksIHRoaXMubGVuZ3RoKCkpLCBlID09PSB0aGlzLnBhcmVudC5zdGF0aWNzLmJsb3ROYW1lID8gKHRoaXMucGFyZW50LnJlcGxhY2VXaXRoKGUsIG4pLCB0aGlzKSA6ICh0aGlzLnBhcmVudC51bndyYXAoKSwgbyh0LnByb3RvdHlwZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKSwgInJlcGxhY2VXaXRoIiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50YWdOYW1lID09PSB0aGlzLnRhZ05hbWUgPyB1bmRlZmluZWQgOiBvKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSwgImZvcm1hdHMiLCB0aGlzKS5jYWxsKHRoaXMsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oYVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZC5ibG90TmFtZSA9ICJsaXN0LWl0ZW0iLCBkLnRhZ05hbWUgPSAiTEkiOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwodGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBjKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQudGFyZ2V0LnBhcmVudE5vZGUgPT09IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4uc3RhdGljcy5mb3JtYXRzKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaVsiZGVmYXVsdCJdLmZpbmQodC50YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGVja2VkIiA9PT0gciA/IG8uZm9ybWF0KCJsaXN0IiwgInVuY2hlY2tlZCIpIDogInVuY2hlY2tlZCIgPT09IHIgJiYgby5mb3JtYXQoImxpc3QiLCAiY2hlY2tlZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIHIpLCBlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHIpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZih0LCBlKSwgcih0LCBudWxsLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAib3JkZXJlZCIgPT09IGUgPyAiT0wiIDogIlVMIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSwgImNyZWF0ZSIsIHRoaXMpLmNhbGwodGhpcywgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiY2hlY2tlZCIgIT09IGUgJiYgInVuY2hlY2tlZCIgIT09IGUgfHwgci5zZXRBdHRyaWJ1dGUoImRhdGEtY2hlY2tlZCIsICJjaGVja2VkIiA9PT0gZSksIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJPTCIgPT09IGUudGFnTmFtZSA/ICJvcmRlcmVkIiA6ICJVTCIgPT09IGUudGFnTmFtZSA/IGUuaGFzQXR0cmlidXRlKCJkYXRhLWNoZWNrZWQiKSA/ICJ0cnVlIiA9PT0gZS5nZXRBdHRyaWJ1dGUoImRhdGEtY2hlY2tlZCIpID8gImNoZWNrZWQiIDogInVuY2hlY2tlZCIgOiAiYnVsbGV0IiA6IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgcih0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5sZW5ndGggPiAwICYmIHRoaXMuY2hpbGRyZW4udGFpbC5mb3JtYXQoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IHt9LCB0ID0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lLCBuID0gdGhpcy5zdGF0aWNzLmZvcm1hdHModGhpcy5kb21Ob2RlKSwgdCBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogZVt0XSA9IG4sIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImluc2VydEJlZm9yZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBkKSBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiaW5zZXJ0QmVmb3JlIiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG51bGwgPT0gbiA/IHRoaXMubGVuZ3RoKCkgOiBuLm9mZnNldCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5zcGxpdChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkucGFyZW50Lmluc2VydEJlZm9yZShlLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIm9wdGltaXplIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAib3B0aW1pemUiLCB0aGlzKS5jYWxsKHRoaXMsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMubmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBuICYmIG4ucHJldiA9PT0gdGhpcyAmJiBuLnN0YXRpY3MuYmxvdE5hbWUgPT09IHRoaXMuc3RhdGljcy5ibG90TmFtZSAmJiBuLmRvbU5vZGUudGFnTmFtZSA9PT0gdGhpcy5kb21Ob2RlLnRhZ05hbWUgJiYgbi5kb21Ob2RlLmdldEF0dHJpYnV0ZSgiZGF0YS1jaGVja2VkIikgPT09IHRoaXMuZG9tTm9kZS5nZXRBdHRyaWJ1dGUoImRhdGEtY2hlY2tlZCIpICYmIChuLm1vdmVDaGlsZHJlbih0aGlzKSwgbi5yZW1vdmUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVwbGFjZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuc3RhdGljcy5ibG90TmFtZSAhPT0gdGhpcy5zdGF0aWNzLmJsb3ROYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGlbImRlZmF1bHQiXS5jcmVhdGUodGhpcy5zdGF0aWNzLmRlZmF1bHRDaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1vdmVDaGlsZHJlbihuKSwgdGhpcy5hcHBlbmRDaGlsZChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8odC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJyZXBsYWNlIiwgdGhpcykuY2FsbCh0aGlzLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHNbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHAuYmxvdE5hbWUgPSAibGlzdCIsIHAuc2NvcGUgPSBpWyJkZWZhdWx0Il0uU2NvcGUuQkxPQ0tfQkxPVCwgcC50YWdOYW1lID0gWyJPTCIsICJVTCJdLCBwLmRlZmF1bHRDaGlsZCA9ICJsaXN0LWl0ZW0iLCBwLmFsbG93ZWRDaGlsZHJlbiA9IFtkXSwgdC5MaXN0SXRlbSA9IGQsIHRbImRlZmF1bHQiXSA9IHAKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IG4oNTYpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSh0aGlzLCB0KSwgYSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KCgociA9IG8pICYmIHIuX19lc01vZHVsZSA/IHIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IHIKICAgICAgICAgICAgICAgICAgICAgICAgfSlbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuYmxvdE5hbWUgPSAiaXRhbGljIiwgcy50YWdOYW1lID0gWyJFTSIsICJJIl0sIHRbImRlZmF1bHQiXSA9IHMKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbiBjKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBlICYmIChlID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG8gPyB1bmRlZmluZWQgOiBjKG8sIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIHIpIHJldHVybiByLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gci5nZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGkuY2FsbChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuKDYpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyh0aGlzLCB0KSwgdSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgbyh0LCBudWxsLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdXBlciIgPT09IGUgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdXAiKSA6ICJzdWIiID09PSBlID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3ViIikgOiBpKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSwgImNyZWF0ZSIsIHRoaXMpLmNhbGwodGhpcywgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJTVUIiID09PSBlLnRhZ05hbWUgPyAic3ViIiA6ICJTVVAiID09PSBlLnRhZ05hbWUgPyAic3VwZXIiIDogdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKChyID0gYSkgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICB9KVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC5ibG90TmFtZSA9ICJzY3JpcHQiLCBsLnRhZ05hbWUgPSBbIlNVQiIsICJTVVAiXSwgdFsiZGVmYXVsdCJdID0gbAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gbig2KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodGhpcywgdCksIGEodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSgoKHIgPSBvKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgICAgIH0pWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICBzLmJsb3ROYW1lID0gInN0cmlrZSIsIHMudGFnTmFtZSA9ICJTIiwgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gbig2KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodGhpcywgdCksIGEodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSgoKHIgPSBvKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgICAgIH0pWyJkZWZhdWx0Il0pOwogICAgICAgICAgICAgICAgICAgICAgICBzLmJsb3ROYW1lID0gInVuZGVybGluZSIsIHMudGFnTmFtZSA9ICJVIiwgdFsiZGVmYXVsdCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIHAoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHAobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKHIgPSBhKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBuKDI3KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IFsiYWx0IiwgImhlaWdodCIsICJ3aWR0aCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCh0aGlzLCB0KSwgYyh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgbyh0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5pbmRleE9mKGUpID4gLTEgPyBuID8gdGhpcy5kb21Ob2RlLnNldEF0dHJpYnV0ZShlLCBuKSA6IHRoaXMuZG9tTm9kZS5yZW1vdmVBdHRyaWJ1dGUoZSkgOiBpKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiZm9ybWF0IiwgdGhpcykuY2FsbCh0aGlzLCBlLCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGkodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpLCAiY3JlYXRlIiwgdGhpcykuY2FsbCh0aGlzLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiBuLnNldEF0dHJpYnV0ZSgic3JjIiwgdGhpcy5zYW5pdGl6ZShlKSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZi5yZWR1Y2UoKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5oYXNBdHRyaWJ1dGUobikgJiYgKHRbbl0gPSBlLmdldEF0dHJpYnV0ZShuKSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAibWF0Y2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC9cLihqcGU/Z3xnaWZ8cG5nKSQvLnRlc3QoZSkgfHwgL15kYXRhOmltYWdlXC8uKztiYXNlNjQvLnRlc3QoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAic2FuaXRpemUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCB1LnNhbml0aXplKShlLCBbImh0dHAiLCAiaHR0cHMiLCAiZGF0YSJdKSA/IGUgOiAiLy86MCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidmFsdWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKCJzcmMiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHNbImRlZmF1bHQiXS5FbWJlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGQuYmxvdE5hbWUgPSAiaW1hZ2UiLCBkLnRhZ05hbWUgPSAiSU1HIiwgdFsiZGVmYXVsdCJdID0gZAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uIHAoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHAobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbigyNyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gKHIgPSBzKSAmJiByLl9fZXNNb2R1bGUgPyByIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IFsiaGVpZ2h0IiwgIndpZHRoIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsKHRoaXMsIHQpLCBjKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLmluZGV4T2YoZSkgPiAtMSA/IG4gPyB0aGlzLmRvbU5vZGUuc2V0QXR0cmlidXRlKGUsIG4pIDogdGhpcy5kb21Ob2RlLnJlbW92ZUF0dHJpYnV0ZShlKSA6IGkodC5wcm90b3R5cGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSksICJmb3JtYXQiLCB0aGlzKS5jYWxsKHRoaXMsIGUsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY3JlYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gaSh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCksICJjcmVhdGUiLCB0aGlzKS5jYWxsKHRoaXMsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc2V0QXR0cmlidXRlKCJmcmFtZWJvcmRlciIsICIwIiksIG4uc2V0QXR0cmlidXRlKCJhbGxvd2Z1bGxzY3JlZW4iLCAhMCksIG4uc2V0QXR0cmlidXRlKCJzcmMiLCB0aGlzLnNhbml0aXplKGUpKSwgbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmb3JtYXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmLnJlZHVjZSgoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmhhc0F0dHJpYnV0ZShuKSAmJiAodFtuXSA9IGUuZ2V0QXR0cmlidXRlKG4pKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJzYW5pdGl6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdVsiZGVmYXVsdCJdLnNhbml0aXplKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSgic3JjIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShhLkJsb2NrRW1iZWQpOwogICAgICAgICAgICAgICAgICAgICAgICBkLmJsb3ROYW1lID0gInZpZGVvIiwgZC5jbGFzc05hbWUgPSAicWwtdmlkZW8iLCBkLnRhZ05hbWUgPSAiSUZSQU1FIiwgdFsiZGVmYXVsdCJdID0gZAogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IHQuRm9ybXVsYUJsb3QgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uIGgoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IGgobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHUobigzNSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHUobig1KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdShuKDkpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCh0aGlzLCB0KSwgYyh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYodCwgZSksIHIodCwgbnVsbCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjcmVhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbyh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCksICJjcmVhdGUiLCB0aGlzKS5jYWxsKHRoaXMsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgKHdpbmRvdy5rYXRleC5yZW5kZXIoZSwgbiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dPbkVycm9yOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ29sb3I6ICIjZjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbi5zZXRBdHRyaWJ1dGUoImRhdGEtdmFsdWUiLCBlKSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidmFsdWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSgiZGF0YS12YWx1ZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oaVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZC5ibG90TmFtZSA9ICJmb3JtdWxhIiwgZC5jbGFzc05hbWUgPSAicWwtZm9ybXVsYSIsIGQudGFnTmFtZSA9ICJTUEFOIjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwodGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBjKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IHdpbmRvdy5rYXRleCkgdGhyb3cgbmV3IEVycm9yKCJGb3JtdWxhIG1vZHVsZSByZXF1aXJlcyBLYVRlWC4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYodCwgZSksIHIodCwgbnVsbCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZWdpc3RlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhWyJkZWZhdWx0Il0ucmVnaXN0ZXIoZCwgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oc1siZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5Gb3JtdWxhQmxvdCA9IGQsIHRbImRlZmF1bHQiXSA9IHAKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0WyJkZWZhdWx0Il0gPSB0LkNvZGVUb2tlbiA9IHQuQ29kZUJsb2NrID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbiBtKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBlICYmIChlID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG8gPyB1bmRlZmluZWQgOiBtKG8sIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIHIpIHJldHVybiByLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gci5nZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGkuY2FsbChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB1KG4oMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHUobig1KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdShuKDkpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCh0aGlzLCB0KSwgYyh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYodCwgZSksIHIodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZXBsYWNlV2l0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb21Ob2RlLnRleHRDb250ZW50ID0gdGhpcy5kb21Ob2RlLnRleHRDb250ZW50LCB0aGlzLmF0dGFjaCgpLCBvKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAicmVwbGFjZVdpdGgiLCB0aGlzKS5jYWxsKHRoaXMsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhpZ2hsaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmRvbU5vZGUudGV4dENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVkVGV4dCAhPT0gdCAmJiAoKHQudHJpbSgpLmxlbmd0aCA+IDAgfHwgbnVsbCA9PSB0aGlzLmNhY2hlZFRleHQpICYmICh0aGlzLmRvbU5vZGUuaW5uZXJIVE1MID0gZSh0KSwgdGhpcy5kb21Ob2RlLm5vcm1hbGl6ZSgpLCB0aGlzLmF0dGFjaCgpKSwgdGhpcy5jYWNoZWRUZXh0ID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSh1KG4oMTMpKVsiZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZC5jbGFzc05hbWUgPSAicWwtc3ludGF4IjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBuZXcgaVsiZGVmYXVsdCJdLkF0dHJpYnV0b3IuQ2xhc3MoInRva2VuIiwgImhsanMiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IGlbImRlZmF1bHQiXS5TY29wZS5JTkxJTkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBjKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSwgbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2Ygci5vcHRpb25zLmhpZ2hsaWdodCkgdGhyb3cgbmV3IEVycm9yKCJTeW50YXggbW9kdWxlIHJlcXVpcmVzIGhpZ2hsaWdodC5qcy4gUGxlYXNlIGluY2x1ZGUgdGhlIGxpYnJhcnkgb24gdGhlIHBhZ2UgYmVmb3JlIFF1aWxsLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnF1aWxsLm9uKGFbImRlZmF1bHQiXS5ldmVudHMuU0NST0xMX09QVElNSVpFLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobyksIG8gPSBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmhpZ2hsaWdodCgpLCBvID0gbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHIub3B0aW9ucy5pbnRlcnZhbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCByLmhpZ2hsaWdodCgpLCByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmKHQsIGUpLCByKHQsIG51bGwsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlZ2lzdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVsiZGVmYXVsdCJdLnJlZ2lzdGVyKHAsICEwKSwgYVsiZGVmYXVsdCJdLnJlZ2lzdGVyKGQsICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCByKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhpZ2hsaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5xdWlsbC5zZWxlY3Rpb24uY29tcG9zaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbC51cGRhdGUoYVsiZGVmYXVsdCJdLnNvdXJjZXMuVVNFUik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuc2Nyb2xsLmRlc2NlbmRhbnRzKGQpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5oaWdobGlnaHQoZS5vcHRpb25zLmhpZ2hsaWdodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMucXVpbGwudXBkYXRlKGFbImRlZmF1bHQiXS5zb3VyY2VzLlNJTEVOVCksIG51bGwgIT0gdCAmJiB0aGlzLnF1aWxsLnNldFNlbGVjdGlvbih0LCBhWyJkZWZhdWx0Il0uc291cmNlcy5TSUxFTlQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oc1siZGVmYXVsdCJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgaC5ERUZBVUxUUyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogbnVsbCA9PSB3aW5kb3cuaGxqcyA/IG51bGwgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5obGpzLmhpZ2hsaWdodEF1dG8oZSkudmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbDogMWUzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQuQ29kZUJsb2NrID0gZCwgdC5Db2RlVG9rZW4gPSBwLCB0WyJkZWZhdWx0Il0gPSBoCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MyB4Mj0xNSB5MT05IHkyPTk+PC9saW5lPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MyB4Mj0xMyB5MT0xNCB5Mj0xND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0zIHgyPTkgeTE9NCB5Mj00PjwvbGluZT4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTE1IHgyPTMgeTE9OSB5Mj05PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTE0IHgyPTQgeTE9MTQgeTI9MTQ+PC9saW5lPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MTIgeDI9NiB5MT00IHkyPTQ+PC9saW5lPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MTUgeDI9MyB5MT05IHkyPTk+PC9saW5lPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MTUgeDI9NSB5MT0xNCB5Mj0xND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0xNSB4Mj05IHkxPTQgeTI9ND48L2xpbmU+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0xNSB4Mj0zIHkxPTkgeTI9OT48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0xNSB4Mj0zIHkxPTE0IHkyPTE0PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTE1IHgyPTMgeTE9NCB5Mj00PjwvbGluZT4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGcgY2xhc3M9InFsLWZpbGwgcWwtY29sb3ItbGFiZWwiPiA8cG9seWdvbiBwb2ludHM9IjYgNi44NjggNiA2IDUgNiA1IDcgNS45NDIgNyA2IDYuODY4Ij48L3BvbHlnb24+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD00IHk9ND48L3JlY3Q+IDxwb2x5Z29uIHBvaW50cz0iNi44MTcgNSA2IDUgNiA2IDYuMzggNiA2LjgxNyA1Ij48L3BvbHlnb24+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0yIHk9Nj48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0zIHk9NT48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD00IHk9Nz48L3JlY3Q+IDxwb2x5Z29uIHBvaW50cz0iNCAxMS40MzkgNCAxMSAzIDExIDMgMTIgMy43NTUgMTIgNCAxMS40MzkiPjwvcG9seWdvbj4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTIgeT0xMj48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0yIHk9OT48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0yIHk9MTU+PC9yZWN0PiA8cG9seWdvbiBwb2ludHM9IjQuNjMgMTAgNCAxMCA0IDExIDQuMTkyIDExIDQuNjMgMTAiPjwvcG9seWdvbj4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTMgeT04PjwvcmVjdD4gPHBhdGggZD1NMTAuODMyLDQuMkwxMSw0LjU4MlY0SDEwLjcwOEExLjk0OCwxLjk0OCwwLDAsMSwxMC44MzIsNC4yWj48L3BhdGg+IDxwYXRoIGQ9TTcsNC41ODJMNy4xNjgsNC4yQTEuOTI5LDEuOTI5LDAsMCwxLDcuMjkyLDRIN1Y0LjU4Mlo+PC9wYXRoPiA8cGF0aCBkPU04LDEzSDcuNjgzbC0wLjM1MS44YTEuOTMzLDEuOTMzLDAsMCwxLS4xMjQuMkg4VjEzWj48L3BhdGg+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0xMiB5PTI+PC9yZWN0PiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9MTEgeT0zPjwvcmVjdD4gPHBhdGggZD1NOSwzSDhWMy4yODJBMS45ODUsMS45ODUsMCwwLDEsOSwzWj48L3BhdGg+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0yIHk9Mz48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD02IHk9Mj48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0zIHk9Mj48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD01IHk9Mz48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD05IHk9Mj48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0xNSB5PTE0PjwvcmVjdD4gPHBvbHlnb24gcG9pbnRzPSIxMy40NDcgMTAuMTc0IDEzLjQ2OSAxMC4yMjUgMTMuNDcyIDEwLjIzMiAxMy44MDggMTEgMTQgMTEgMTQgMTAgMTMuMzcgMTAgMTMuNDQ3IDEwLjE3NCI+PC9wb2x5Z29uPiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9MTMgeT03PjwvcmVjdD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTE1IHk9NT48L3JlY3Q+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0xNCB5PTY+PC9yZWN0PiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9MTUgeT04PjwvcmVjdD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTE0IHk9OT48L3JlY3Q+IDxwYXRoIGQ9TTMuNzc1LDE0SDN2MUg0VjE0LjMxNEExLjk3LDEuOTcsMCwwLDEsMy43NzUsMTRaPjwvcGF0aD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTE0IHk9Mz48L3JlY3Q+IDxwb2x5Z29uIHBvaW50cz0iMTIgNi44NjggMTIgNiAxMS42MiA2IDEyIDYuODY4Ij48L3BvbHlnb24+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0xNSB5PTI+PC9yZWN0PiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9MTIgeT01PjwvcmVjdD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTEzIHk9ND48L3JlY3Q+IDxwb2x5Z29uIHBvaW50cz0iMTIuOTMzIDkgMTMgOSAxMyA4IDEyLjQ5NSA4IDEyLjkzMyA5Ij48L3BvbHlnb24+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD05IHk9MTQ+PC9yZWN0PiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9OCB5PTE1PjwvcmVjdD4gPHBhdGggZD1NNiwxNC45MjZWMTVIN1YxNC4zMTZBMS45OTMsMS45OTMsMCwwLDEsNiwxNC45MjZaPjwvcGF0aD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTUgeT0xNT48L3JlY3Q+IDxwYXRoIGQ9TTEwLjY2OCwxMy44TDEwLjMxNywxM0gxMHYxaDAuNzkyQTEuOTQ3LDEuOTQ3LDAsMCwxLDEwLjY2OCwxMy44Wj48L3BhdGg+IDxyZWN0IGhlaWdodD0xIHdpZHRoPTEgeD0xMSB5PTE1PjwvcmVjdD4gPHBhdGggZD1NMTQuMzMyLDEyLjJhMS45OSwxLjk5LDAsMCwxLC4xNjYuOEgxNVYxMkgxNC4yNDVaPjwvcGF0aD4gPHJlY3QgaGVpZ2h0PTEgd2lkdGg9MSB4PTE0IHk9MTU+PC9yZWN0PiA8cmVjdCBoZWlnaHQ9MSB3aWR0aD0xIHg9MTUgeT0xMT48L3JlY3Q+IDwvZz4gPHBvbHlsaW5lIGNsYXNzPXFsLXN0cm9rZSBwb2ludHM9IjUuNSAxMyA5IDUgMTIuNSAxMyI+PC9wb2x5bGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTExLjYzIHgyPTYuMzggeTE9MTEgeTI9MTE+PC9saW5lPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8cmVjdCBjbGFzcz0icWwtZmlsbCBxbC1zdHJva2UiIGhlaWdodD0zIHdpZHRoPTMgeD00IHk9NT48L3JlY3Q+IDxyZWN0IGNsYXNzPSJxbC1maWxsIHFsLXN0cm9rZSIgaGVpZ2h0PTMgd2lkdGg9MyB4PTExIHk9NT48L3JlY3Q+IDxwYXRoIGNsYXNzPSJxbC1ldmVuIHFsLWZpbGwgcWwtc3Ryb2tlIiBkPU03LDhjMCw0LjAzMS0zLDUtMyw1PjwvcGF0aD4gPHBhdGggY2xhc3M9InFsLWV2ZW4gcWwtZmlsbCBxbC1zdHJva2UiIGQ9TTE0LDhjMCw0LjAzMS0zLDUtMyw1PjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtc3Ryb2tlIGQ9TTUsNEg5LjVBMi41LDIuNSwwLDAsMSwxMiw2LjV2MEEyLjUsMi41LDAsMCwxLDkuNSw5SDVBMCwwLDAsMCwxLDUsOVY0QTAsMCwwLDAsMSw1LDRaPjwvcGF0aD4gPHBhdGggY2xhc3M9cWwtc3Ryb2tlIGQ9TTUsOWg1LjVBMi41LDIuNSwwLDAsMSwxMywxMS41djBBMi41LDIuNSwwLDAsMSwxMC41LDE0SDVhMCwwLDAsMCwxLDAsMFY5QTAsMCwwLDAsMSw1LDlaPjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgY2xhc3M9IiIgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTUgeDI9MTMgeTE9MyB5Mj0zPjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTYgeDI9OS4zNSB5MT0xMiB5Mj0zPjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTExIHgyPTE1IHkxPTExIHkyPTE1PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTE1IHgyPTExIHkxPTExIHkyPTE1PjwvbGluZT4gPHJlY3QgY2xhc3M9cWwtZmlsbCBoZWlnaHQ9MSByeD0wLjUgcnk9MC41IHdpZHRoPTcgeD0yIHk9MTQ+PC9yZWN0PiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8bGluZSBjbGFzcz0icWwtY29sb3ItbGFiZWwgcWwtc3Ryb2tlIHFsLXRyYW5zcGFyZW50IiB4MT0zIHgyPTE1IHkxPTE1IHkyPTE1PjwvbGluZT4gPHBvbHlsaW5lIGNsYXNzPXFsLXN0cm9rZSBwb2ludHM9IjUuNSAxMSA5IDMgMTIuNSAxMSI+PC9wb2x5bGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTExLjYzIHgyPTYuMzggeTE9OSB5Mj05PjwvbGluZT4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBvbHlnb24gY2xhc3M9InFsLXN0cm9rZSBxbC1maWxsIiBwb2ludHM9IjMgMTEgNSA5IDMgNyAzIDExIj48L3BvbHlnb24+IDxsaW5lIGNsYXNzPSJxbC1zdHJva2UgcWwtZmlsbCIgeDE9MTUgeDI9MTEgeTE9NCB5Mj00PjwvbGluZT4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xMSwzYTMsMywwLDAsMCwwLDZoMVYzSDExWj48L3BhdGg+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTExIHdpZHRoPTEgeD0xMSB5PTQ+PC9yZWN0PiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xMSB3aWR0aD0xIHg9MTMgeT00PjwvcmVjdD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBvbHlnb24gY2xhc3M9InFsLXN0cm9rZSBxbC1maWxsIiBwb2ludHM9IjE1IDEyIDEzIDEwIDE1IDggMTUgMTIiPjwvcG9seWdvbj4gPGxpbmUgY2xhc3M9InFsLXN0cm9rZSBxbC1maWxsIiB4MT05IHgyPTUgeTE9NCB5Mj00PjwvbGluZT4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU01LDNBMywzLDAsMCwwLDUsOUg2VjNINVo+PC9wYXRoPiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xMSB3aWR0aD0xIHg9NSB5PTQ+PC9yZWN0PiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xMSB3aWR0aD0xIHg9NyB5PTQ+PC9yZWN0PiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8cGF0aCBjbGFzcz1xbC1maWxsIGQ9TTE0LDE2SDRhMSwxLDAsMCwxLDAtMkgxNEExLDEsMCwwLDEsMTQsMTZaIC8+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMTQsNEg0QTEsMSwwLDAsMSw0LDJIMTRBMSwxLDAsMCwxLDE0LDRaIC8+IDxyZWN0IGNsYXNzPXFsLWZpbGwgeD0zIHk9NiB3aWR0aD0xMiBoZWlnaHQ9NiByeD0xIHJ5PTEgLz4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xMywxNkg1YTEsMSwwLDAsMSwwLTJoOEExLDEsMCwwLDEsMTMsMTZaIC8+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMTMsNEg1QTEsMSwwLDAsMSw1LDJoOEExLDEsMCwwLDEsMTMsNFogLz4gPHJlY3QgY2xhc3M9cWwtZmlsbCB4PTIgeT02IHdpZHRoPTE0IGhlaWdodD02IHJ4PTEgcnk9MSAvPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8cGF0aCBjbGFzcz1xbC1maWxsIGQ9TTE1LDhIMTNhMSwxLDAsMCwxLDAtMmgyQTEsMSwwLDAsMSwxNSw4WiAvPiA8cGF0aCBjbGFzcz1xbC1maWxsIGQ9TTE1LDEySDEzYTEsMSwwLDAsMSwwLTJoMkExLDEsMCwwLDEsMTUsMTJaIC8+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMTUsMTZINWExLDEsMCwwLDEsMC0ySDE1QTEsMSwwLDAsMSwxNSwxNlogLz4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xNSw0SDVBMSwxLDAsMCwxLDUsMkgxNUExLDEsMCwwLDEsMTUsNFogLz4gPHJlY3QgY2xhc3M9cWwtZmlsbCB4PTIgeT02IHdpZHRoPTggaGVpZ2h0PTYgcng9MSByeT0xIC8+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NNSw4SDNBMSwxLDAsMCwxLDMsNkg1QTEsMSwwLDAsMSw1LDhaIC8+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NNSwxMkgzYTEsMSwwLDAsMSwwLTJINUExLDEsMCwwLDEsNSwxMlogLz4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xMywxNkgzYTEsMSwwLDAsMSwwLTJIMTNBMSwxLDAsMCwxLDEzLDE2WiAvPiA8cGF0aCBjbGFzcz1xbC1maWxsIGQ9TTEzLDRIM0ExLDEsMCwwLDEsMywySDEzQTEsMSwwLDAsMSwxMyw0WiAvPiA8cmVjdCBjbGFzcz1xbC1maWxsIHg9OCB5PTYgd2lkdGg9OCBoZWlnaHQ9NiByeD0xIHJ5PTEgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQgMTgpIHJvdGF0ZSgtMTgwKSIvPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8cGF0aCBjbGFzcz1xbC1maWxsIGQ9TTExLjc1OSwyLjQ4MmEyLjU2MSwyLjU2MSwwLDAsMC0zLjUzLjYwN0E3LjY1Niw3LjY1NiwwLDAsMCw2LjgsNi4yQzYuMTA5LDkuMTg4LDUuMjc1LDE0LjY3Nyw0LjE1LDE0LjkyN2ExLjU0NSwxLjU0NSwwLDAsMC0xLjMtLjkzM0EwLjkyMiwwLjkyMiwwLDAsMCwyLDE1LjAzNlMxLjk1NCwxNiw0LjExOSwxNnMzLjA5MS0yLjY5MSwzLjctNS41NTNjMC4xNzctLjgyNi4zNi0xLjcyNiwwLjU1NC0yLjZMOC43NzUsNi4yYzAuMzgxLTEuNDIxLjgwNy0yLjUyMSwxLjMwNi0yLjY3NmExLjAxNCwxLjAxNCwwLDAsMCwxLjAyLjU2QTAuOTY2LDAuOTY2LDAsMCwwLDExLjc1OSwyLjQ4Mlo+PC9wYXRoPiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xLjYgcng9MC44IHJ5PTAuOCB3aWR0aD01IHg9NS4xNSB5PTYuMj48L3JlY3Q+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMTMuNjYzLDEyLjAyN2ExLjY2MiwxLjY2MiwwLDAsMSwuMjY2LTAuMjc2cTAuMTkzLDAuMDY5LjQ1NiwwLjEzOGEyLjEsMi4xLDAsMCwwLC41MzUuMDY5LDEuMDc1LDEuMDc1LDAsMCwwLC43NjctMC4zLDEuMDQ0LDEuMDQ0LDAsMCwwLC4zMTQtMC44LDAuODQsMC44NCwwLDAsMC0uMjM4LTAuNjE5LDAuOCwwLjgsMCwwLDAtLjU5NC0wLjIzOSwxLjE1NCwxLjE1NCwwLDAsMC0uNzgxLjMsNC42MDcsNC42MDcsMCwwLDAtLjc4MSwxcS0wLjA5MS4xNS0uMjE4LDAuMzQ2bC0wLjI0Ni4zOGMtMC4wNjgtLjI4OC0wLjEzNy0wLjU4Mi0wLjIxMi0wLjg4NS0wLjQ1OS0xLjg0Ny0yLjQ5NC0uOTg0LTIuOTQxLTAuOC0wLjQ4Mi4yLS4zNTMsMC42NDctMC4wOTQsMC41MjlhMC44NjksMC44NjksMCwwLDEsMS4yODEuNTg1YzAuMjE3LDAuNzUxLjM3NywxLjQzNiwwLjUyNywyLjAzOGE1LjY4OCw1LjY4OCwwLDAsMS0uMzYyLjQ2NywyLjY5LDIuNjksMCwwLDEtLjI2NC4yNzFxLTAuMjIxLS4wOC0wLjQ3MS0wLjE0N2EyLjAyOSwyLjAyOSwwLDAsMC0uNTIyLTAuMDY2LDEuMDc5LDEuMDc5LDAsMCwwLS43NjguM0ExLjA1OCwxLjA1OCwwLDAsMCw5LDE1LjEzMWEwLjgyLDAuODIsMCwwLDAsLjgzMi44NTIsMS4xMzQsMS4xMzQsMCwwLDAsLjc4Ny0wLjMsNS4xMSw1LjExLDAsMCwwLC43NzYtMC45OTNxMC4xNDEtLjIxOS4yMTUtMC4zNGMwLjA0Ni0uMDc2LjEyMi0wLjE5NCwwLjIyMy0wLjM0NmEyLjc4NiwyLjc4NiwwLDAsMCwuOTE4LDEuNzI2LDIuNTgyLDIuNTgyLDAsMCwwLDIuMzc2LS4xODVjMC4zMTctLjE4MS4yMTItMC41NjUsMC0wLjQ5NEEwLjgwNywwLjgwNywwLDAsMSwxNC4xNzYsMTVhNS4xNTksNS4xNTksMCwwLDEtLjkxMy0yLjQ0NmwwLDBRMTMuNDg3LDEyLjI0LDEzLjY2MywxMi4wMjdaPjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld0JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xMCw0VjE0YTEsMSwwLDAsMS0yLDBWMTBIM3Y0YTEsMSwwLDAsMS0yLDBWNEExLDEsMCwwLDEsMyw0VjhIOFY0YTEsMSwwLDAsMSwyLDBabTYuMDY3ODcsOS4yMDlIMTQuOTg5NzVWNy41OTg2M2EuNTQwODUuNTQwODUsMCwwLDAtLjYwNS0uNjA1NDdoLS42Mjc0NGExLjAxMTE5LDEuMDExMTksMCwwLDAtLjc0OC4yOTY4OEwxMS42NDUsOC41NjY0MWEuNTQzNS41NDM1LDAsMCwwLS4wMjIuODU4NGwuMjg2MTMuMzA3NjJhLjUzODYxLjUzODYxLDAsMCwwLC44NDcxNy4wMzMybC4wOTkxMi0uMDg3ODlhMS4yMTM3LDEuMjEzNywwLDAsMCwuMjQxNy0uMzUyNTRoLjAyMjQ2cy0uMDExMjMuMzA4NTktLjAxMTIzLjYwNTQ3VjEzLjIwOUgxMi4wNDFhLjU0MDg1LjU0MDg1LDAsMCwwLS42MDUuNjA1NDd2LjQzOTQ1YS41NDA4NS41NDA4NSwwLDAsMCwuNjA1LjYwNTQ3aDQuMDI2ODZhLjU0MDg1LjU0MDg1LDAsMCwwLC42MDUtLjYwNTQ3di0uNDM5NDVBLjU0MDg1LjU0MDg1LDAsMCwwLDE2LjA2Nzg3LDEzLjIwOVogLz4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld0JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xNi43Mzk3NSwxMy44MTQ0NXYuNDM5NDVhLjU0MDg1LjU0MDg1LDAsMCwxLS42MDUuNjA1NDdIMTEuODU1YS41ODM5Mi41ODM5MiwwLDAsMS0uNjQ4OTMtLjYwNTQ3VjE0LjAxMjdjMC0yLjkwNTI3LDMuMzk5NDEtMy40MjE4NywzLjM5OTQxLTQuNTU0NjlhLjc3Njc1Ljc3Njc1LDAsMCwwLS44NDcxNy0uNzgxMjUsMS4xNzY4NCwxLjE3Njg0LDAsMCwwLS44MzU5NC4zODQ3N2MtLjI3NDkuMjYzNjctLjU2MS4zNzQtLjg1NzkxLjEzMTg0bC0uNDI5Mi0uMzQwODJjLS4zMDgxMS0uMjQyMTktLjM4NTI1LS41MTc1OC0uMTU0My0uODE0NDVhMi45NzE1NSwyLjk3MTU1LDAsMCwxLDIuNDUzNjEtMS4xNzY3NiwyLjQ1MzkzLDIuNDUzOTMsMCwwLDEsMi42ODQwOCwyLjQwOTE4YzAsMi40NTMxMi0zLjE3OTIsMi45MjY3Ni0zLjI3ODMyLDMuOTM4NDhoMi43OTQ0M0EuNTQwODUuNTQwODUsMCwwLDEsMTYuNzM5NzUsMTMuODE0NDVaTTksM0EuOTk5NzQuOTk5NzQsMCwwLDAsOCw0VjhIM1Y0QTEsMSwwLDAsMCwxLDRWMTRhMSwxLDAsMCwwLDIsMFYxMEg4djRhMSwxLDAsMCwwLDIsMFY0QS45OTk3NC45OTk3NCwwLDAsMCw5LDNaIC8+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT03IHgyPTEzIHkxPTQgeTI9ND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT01IHgyPTExIHkxPTE0IHkyPTE0PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTggeDI9MTAgeTE9MTQgeTI9ND48L2xpbmU+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxyZWN0IGNsYXNzPXFsLXN0cm9rZSBoZWlnaHQ9MTAgd2lkdGg9MTIgeD0zIHk9ND48L3JlY3Q+IDxjaXJjbGUgY2xhc3M9cWwtZmlsbCBjeD02IGN5PTcgcj0xPjwvY2lyY2xlPiA8cG9seWxpbmUgY2xhc3M9InFsLWV2ZW4gcWwtZmlsbCIgcG9pbnRzPSI1IDEyIDUgMTEgNyA5IDggMTAgMTEgNyAxMyA5IDEzIDEyIDUgMTIiPjwvcG9seWxpbmU+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0zIHgyPTE1IHkxPTE0IHkyPTE0PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTMgeDI9MTUgeTE9NCB5Mj00PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTkgeDI9MTUgeTE9OSB5Mj05PjwvbGluZT4gPHBvbHlsaW5lIGNsYXNzPSJxbC1maWxsIHFsLXN0cm9rZSIgcG9pbnRzPSIzIDcgMyAxMSA1IDkgMyA3Ij48L3BvbHlsaW5lPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MyB4Mj0xNSB5MT0xNCB5Mj0xND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0zIHgyPTE1IHkxPTQgeTI9ND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT05IHgyPTE1IHkxPTkgeTI9OT48L2xpbmU+IDxwb2x5bGluZSBjbGFzcz1xbC1zdHJva2UgcG9pbnRzPSI1IDcgNSAxMSAzIDkgNSA3Ij48L3BvbHlsaW5lPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSAnPHN2ZyB2aWV3Ym94PSIwIDAgMTggMTgiPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9NyB4Mj0xMSB5MT03IHkyPTExPjwvbGluZT4gPHBhdGggY2xhc3M9InFsLWV2ZW4gcWwtc3Ryb2tlIiBkPU04LjksNC41NzdhMy40NzYsMy40NzYsMCwwLDEsLjM2LDQuNjc5QTMuNDc2LDMuNDc2LDAsMCwxLDQuNTc3LDguOUMzLjE4NSw3LjUsMi4wMzUsNi40LDQuMjE3LDQuMjE3UzcuNSwzLjE4NSw4LjksNC41NzdaPjwvcGF0aD4gPHBhdGggY2xhc3M9InFsLWV2ZW4gcWwtc3Ryb2tlIiBkPU0xMy40MjMsOS4xYTMuNDc2LDMuNDc2LDAsMCwwLTQuNjc5LS4zNiwzLjQ3NiwzLjQ3NiwwLDAsMCwuMzYsNC42NzljMS4zOTIsMS4zOTIsMi41LDIuNTQyLDQuNjc5LjM2UzE0LjgxNSwxMC41LDEzLjQyMyw5LjFaPjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTcgeDI9MTUgeTE9NCB5Mj00PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTcgeDI9MTUgeTE9OSB5Mj05PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTcgeDI9MTUgeTE9MTQgeTI9MTQ+PC9saW5lPiA8bGluZSBjbGFzcz0icWwtc3Ryb2tlIHFsLXRoaW4iIHgxPTIuNSB4Mj00LjUgeTE9NS41IHkyPTUuNT48L2xpbmU+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMy41LDZBMC41LDAuNSwwLDAsMSwzLDUuNVYzLjA4NWwtMC4yNzYuMTM4QTAuNSwwLjUsMCwwLDEsMi4wNTMsM2MtMC4xMjQtLjI0Ny0wLjAyMy0wLjMyNC4yMjQtMC40NDdsMS0uNUEwLjUsMC41LDAsMCwxLDQsMi41djNBMC41LDAuNSwwLDAsMSwzLjUsNlo+PC9wYXRoPiA8cGF0aCBjbGFzcz0icWwtc3Ryb2tlIHFsLXRoaW4iIGQ9TTQuNSwxMC41aC0yYzAtLjIzNCwxLjg1LTEuMDc2LDEuODUtMi4yMzRBMC45NTksMC45NTksMCwwLDAsMi41LDguMTU2PjwvcGF0aD4gPHBhdGggY2xhc3M9InFsLXN0cm9rZSBxbC10aGluIiBkPU0yLjUsMTQuODQ2YTAuOTU5LDAuOTU5LDAsMCwwLDEuODUtLjEwOUEwLjcsMC43LDAsMCwwLDMuNzUsMTRhMC42ODgsMC42ODgsMCwwLDAsLjYtMC43MzYsMC45NTksMC45NTksMCwwLDAtMS44NS0uMTA5PjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTYgeDI9MTUgeTE9NCB5Mj00PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTYgeDI9MTUgeTE9OSB5Mj05PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTYgeDI9MTUgeTE9MTQgeTI9MTQ+PC9saW5lPiA8bGluZSBjbGFzcz1xbC1zdHJva2UgeDE9MyB4Mj0zIHkxPTQgeTI9ND48L2xpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT0zIHgyPTMgeTE9OSB5Mj05PjwvbGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTMgeDI9MyB5MT0xNCB5Mj0xND48L2xpbmU+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIGNsYXNzPSIiIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT05IHgyPTE1IHkxPTQgeTI9ND48L2xpbmU+IDxwb2x5bGluZSBjbGFzcz1xbC1zdHJva2UgcG9pbnRzPSIzIDQgNCA1IDYgMyI+PC9wb2x5bGluZT4gPGxpbmUgY2xhc3M9cWwtc3Ryb2tlIHgxPTkgeDI9MTUgeTE9MTQgeTI9MTQ+PC9saW5lPiA8cG9seWxpbmUgY2xhc3M9cWwtc3Ryb2tlIHBvaW50cz0iMyAxNCA0IDE1IDYgMTMiPjwvcG9seWxpbmU+IDxsaW5lIGNsYXNzPXFsLXN0cm9rZSB4MT05IHgyPTE1IHkxPTkgeTI9OT48L2xpbmU+IDxwb2x5bGluZSBjbGFzcz1xbC1zdHJva2UgcG9pbnRzPSIzIDkgNCAxMCA2IDgiPjwvcG9seWxpbmU+IDwvc3ZnPicKICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9ICc8c3ZnIHZpZXdib3g9IjAgMCAxOCAxOCI+IDxwYXRoIGNsYXNzPXFsLWZpbGwgZD1NMTUuNSwxNUgxMy44NjFhMy44NTgsMy44NTgsMCwwLDAsMS45MTQtMi45NzUsMS44LDEuOCwwLDAsMC0xLjYtMS43NTFBMS45MjEsMS45MjEsMCwwLDAsMTIuMDIxLDExLjdhMC41MDAxMywwLjUwMDEzLDAsMSwwLC45NTcuMjkxaDBhMC45MTQsMC45MTQsMCwwLDEsMS4wNTMtLjcyNSwwLjgxLDAuODEsMCwwLDEsLjc0NC43NjJjMCwxLjA3Ni0xLjE2OTcxLDEuODY5ODItMS45Mzk3MSwyLjQzMDgyQTEuNDU2MzksMS40NTYzOSwwLDAsMCwxMiwxNS41YTAuNSwwLjUsMCwwLDAsLjUuNWgzQTAuNSwwLjUsMCwwLDAsMTUuNSwxNVogLz4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU05LjY1LDUuMjQxYTEsMSwwLDAsMC0xLjQwOS4xMDhMNiw3Ljk2NCwzLjc1OSw1LjM0OUExLDEsMCwwLDAsMi4xOTIsNi41OTE3OFEyLjIxNTQxLDYuNjIxMywyLjI0MSw2LjY0OUw0LjY4NCw5LjUsMi4yNDEsMTIuMzVBMSwxLDAsMCwwLDMuNzEsMTMuNzA3MjJxMC4wMjU1Ny0uMDI3NjguMDQ5LTAuMDU3MjJMNiwxMS4wMzYsOC4yNDEsMTMuNjVhMSwxLDAsMSwwLDEuNTY3LTEuMjQyNzdROS43ODQ1OSwxMi4zNzc3LDkuNzU5LDEyLjM1TDcuMzE2LDkuNSw5Ljc1OSw2LjY1MUExLDEsMCwwLDAsOS42NSw1LjI0MVogLz4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU0xNS41LDdIMTMuODYxYTQuMDE1LDQuMDE1LDAsMCwwLDEuOTE0LTIuOTc1LDEuOCwxLjgsMCwwLDAtMS42LTEuNzUxQTEuOTIyLDEuOTIyLDAsMCwwLDEyLjAyMSwzLjdhMC41LDAuNSwwLDEsMCwuOTU3LjI5MSwwLjkxNywwLjkxNywwLDAsMSwxLjA1My0uNzI1LDAuODEsMC44MSwwLDAsMSwuNzQ0Ljc2MmMwLDEuMDc3LTEuMTY0LDEuOTI1LTEuOTM0LDIuNDg2QTEuNDIzLDEuNDIzLDAsMCwwLDEyLDcuNWEwLjUsMC41LDAsMCwwLC41LjVoM0EwLjUsMC41LDAsMCwwLDE1LjUsN1ogLz4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU05LjY1MSw1LjI0MWExLDEsMCwwLDAtMS40MS4xMDhMNiw3Ljk2NCwzLjc1OSw1LjM0OWExLDEsMCwxLDAtMS41MTksMS4zTDQuNjgzLDkuNSwyLjI0MSwxMi4zNWExLDEsMCwxLDAsMS41MTksMS4zTDYsMTEuMDM2LDguMjQxLDEzLjY1YTEsMSwwLDAsMCwxLjUxOS0xLjNMNy4zMTcsOS41LDkuNzU5LDYuNjUxQTEsMSwwLDAsMCw5LjY1MSw1LjI0MVogLz4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPGxpbmUgY2xhc3M9InFsLXN0cm9rZSBxbC10aGluIiB4MT0xNS41IHgyPTIuNSB5MT04LjUgeTI9OS41PjwvbGluZT4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU05LjAwNyw4QzYuNTQyLDcuNzkxLDYsNy41MTksNiw2LjUsNiw1Ljc5Miw3LjI4Myw1LDksNWMxLjU3MSwwLDIuNzY1LjY3OSwyLjk2OSwxLjMwOWExLDEsMCwwLDAsMS45LS42MTdDMTMuMzU2LDQuMTA2LDExLjM1NCwzLDksMyw2LjIsMyw0LDQuNTM4LDQsNi41YTMuMiwzLjIsMCwwLDAsLjUsMS44NDNaPjwvcGF0aD4gPHBhdGggY2xhc3M9cWwtZmlsbCBkPU04Ljk4NCwxMEMxMS40NTcsMTAuMjA4LDEyLDEwLjQ3OSwxMiwxMS41YzAsMC43MDgtMS4yODMsMS41LTMsMS41LTEuNTcxLDAtMi43NjUtLjY3OS0yLjk2OS0xLjMwOWExLDEsMCwxLDAtMS45LjYxN0M0LjY0NCwxMy44OTQsNi42NDYsMTUsOSwxNWMyLjgsMCw1LTEuNTM4LDUtMy41YTMuMiwzLjIsMCwwLDAtLjUtMS44NDNaPjwvcGF0aD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBhdGggY2xhc3M9cWwtc3Ryb2tlIGQ9TTUsM1Y5YTQuMDEyLDQuMDEyLDAsMCwwLDQsNEg5YTQuMDEyLDQuMDEyLDAsMCwwLDQtNFYzPjwvcGF0aD4gPHJlY3QgY2xhc3M9cWwtZmlsbCBoZWlnaHQ9MSByeD0wLjUgcnk9MC41IHdpZHRoPTEyIHg9MyB5PTE1PjwvcmVjdD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHJlY3QgY2xhc3M9cWwtc3Ryb2tlIGhlaWdodD0xMiB3aWR0aD0xMiB4PTMgeT0zPjwvcmVjdD4gPHJlY3QgY2xhc3M9cWwtZmlsbCBoZWlnaHQ9MTIgd2lkdGg9MSB4PTUgeT0zPjwvcmVjdD4gPHJlY3QgY2xhc3M9cWwtZmlsbCBoZWlnaHQ9MTIgd2lkdGg9MSB4PTEyIHk9Mz48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTIgd2lkdGg9OCB4PTUgeT04PjwvcmVjdD4gPHJlY3QgY2xhc3M9cWwtZmlsbCBoZWlnaHQ9MSB3aWR0aD0zIHg9MyB5PTU+PC9yZWN0PiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xIHdpZHRoPTMgeD0zIHk9Nz48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTEgd2lkdGg9MyB4PTMgeT0xMD48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTEgd2lkdGg9MyB4PTMgeT0xMj48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTEgd2lkdGg9MyB4PTEyIHk9NT48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTEgd2lkdGg9MyB4PTEyIHk9Nz48L3JlY3Q+IDxyZWN0IGNsYXNzPXFsLWZpbGwgaGVpZ2h0PTEgd2lkdGg9MyB4PTEyIHk9MTA+PC9yZWN0PiA8cmVjdCBjbGFzcz1xbC1maWxsIGhlaWdodD0xIHdpZHRoPTMgeD0xMiB5PTEyPjwvcmVjdD4gPC9zdmc+JwogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gJzxzdmcgdmlld2JveD0iMCAwIDE4IDE4Ij4gPHBvbHlnb24gY2xhc3M9cWwtc3Ryb2tlIHBvaW50cz0iNyAxMSA5IDEzIDExIDExIDcgMTEiPjwvcG9seWdvbj4gPHBvbHlnb24gY2xhc3M9cWwtc3Ryb2tlIHBvaW50cz0iNyA3IDkgNSAxMSA3IDcgNyI+PC9wb2x5Z29uPiA8L3N2Zz4nCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gdC5CdWJibGVUb29sdGlwID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uIHYoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGUgJiYgKGUgPSBGdW5jdGlvbi5wcm90b3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gbyA/IHVuZGVmaW5lZCA6IHYobywgdCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gcikgcmV0dXJuIHIudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaS5jYWxsKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmKG4oMykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGYobig4KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbig0MyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZihzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuKDE1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBmKG4oNDEpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHAoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYm9sZCIsICJpdGFsaWMiLCAibGluayJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgImJsb2NrcXVvdGUiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQodGhpcywgdCksIG51bGwgIT0gbi5tb2R1bGVzLnRvb2xiYXIgJiYgbnVsbCA9PSBuLm1vZHVsZXMudG9vbGJhci5jb250YWluZXIgJiYgKG4ubW9kdWxlcy50b29sYmFyLmNvbnRhaW5lciA9IG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHAodGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnF1aWxsLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJxbC1idWJibGUiKSwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCh0LCBlKSwgbyh0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJleHRlbmRUb29sYmFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IG5ldyBnKHRoaXMucXVpbGwsIHRoaXMub3B0aW9ucy5ib3VuZHMpLCB0aGlzLnRvb2x0aXAucm9vdC5hcHBlbmRDaGlsZChlLmNvbnRhaW5lciksIHRoaXMuYnVpbGRCdXR0b25zKFtdLnNsaWNlLmNhbGwoZS5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uIikpLCBjWyJkZWZhdWx0Il0pLCB0aGlzLmJ1aWxkUGlja2VycyhbXS5zbGljZS5jYWxsKGUuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoInNlbGVjdCIpKSwgY1siZGVmYXVsdCJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHVbImRlZmF1bHQiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHkuREVGQVVMVFMgPSAoMCwgaVsiZGVmYXVsdCJdKSghMCwge30sIHVbImRlZmF1bHQiXS5ERUZBVUxUUywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID8gdGhpcy5xdWlsbC50aGVtZS50b29sdGlwLmVkaXQoKSA6IHRoaXMucXVpbGwuZm9ybWF0KCJsaW5rIiwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQodGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBwKHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSwgbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnF1aWxsLm9uKGFbImRlZmF1bHQiXS5ldmVudHMuRURJVE9SX0NIQU5HRSwgKGZ1bmN0aW9uKGUsIHQsIG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT09IGFbImRlZmF1bHQiXS5ldmVudHMuU0VMRUNUSU9OX0NIQU5HRSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHQgJiYgdC5sZW5ndGggPiAwICYmIG8gPT09IGFbImRlZmF1bHQiXS5zb3VyY2VzLlVTRVIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnNob3coKSwgci5yb290LnN0eWxlLmxlZnQgPSAiMHB4Iiwgci5yb290LnN0eWxlLndpZHRoID0gIiIsIHIucm9vdC5zdHlsZS53aWR0aCA9IHIucm9vdC5vZmZzZXRXaWR0aCArICJweCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSByLnF1aWxsLmdldExpbmVzKHQuaW5kZXgsIHQubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gaS5sZW5ndGgpIHIucG9zaXRpb24oci5xdWlsbC5nZXRCb3VuZHModCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGlbaS5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSByLnF1aWxsLmdldEluZGV4KHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IE1hdGgubWluKHMubGVuZ3RoKCkgLSAxLCB0LmluZGV4ICsgdC5sZW5ndGggLSB1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSByLnF1aWxsLmdldEJvdW5kcyhuZXcgbC5SYW5nZSh1LCBjKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucG9zaXRpb24oZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gci50ZXh0Ym94ICYmIHIucXVpbGwuaGFzRm9jdXMoKSAmJiByLmhpZGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgodCwgZSksIG8odCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJsaXN0ZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAibGlzdGVuIiwgdGhpcykuY2FsbCh0aGlzKSwgdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoIi5xbC1jbG9zZSIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yb290LmNsYXNzTGlzdC5yZW1vdmUoInFsLWVkaXRpbmciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMucXVpbGwub24oYVsiZGVmYXVsdCJdLmV2ZW50cy5TQ1JPTExfT1BUSU1JWkUsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZS5yb290LmNsYXNzTGlzdC5jb250YWlucygicWwtaGlkZGVuIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnF1aWxsLmdldFNlbGVjdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IHQgJiYgZS5wb3NpdGlvbihlLnF1aWxsLmdldEJvdW5kcyh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNhbmNlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJwb3NpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSByKHQucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAicG9zaXRpb24iLCB0aGlzKS5jYWxsKHRoaXMsIGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yKCIucWwtdG9vbHRpcC1hcnJvdyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5zdHlsZS5tYXJnaW5MZWZ0ID0gIiIsIDAgPT09IG4pIHJldHVybiBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnN0eWxlLm1hcmdpbkxlZnQgPSAtMSAqIG4gLSBvLm9mZnNldFdpZHRoIC8gMiArICJweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfShzLkJhc2VUb29sdGlwKTsKICAgICAgICAgICAgICAgICAgICAgICAgZy5URU1QTEFURSA9IFsnPHNwYW4gY2xhc3M9InFsLXRvb2x0aXAtYXJyb3ciPjwvc3Bhbj4nLCAnPGRpdiBjbGFzcz0icWwtdG9vbHRpcC1lZGl0b3IiPicsICc8aW5wdXQgdHlwZT0idGV4dCIgZGF0YS1mb3JtdWxhPSJlPW1jXjIiIGRhdGEtbGluaz0iaHR0cHM6Ly9xdWlsbGpzLmNvbSIgZGF0YS12aWRlbz0iRW1iZWQgVVJMIj4nLCAnPGEgY2xhc3M9InFsLWNsb3NlIj48L2E+JywgIjwvZGl2PiJdLmpvaW4oIiIpLCB0LkJ1YmJsZVRvb2x0aXAgPSBnLCB0WyJkZWZhdWx0Il0gPSB5CiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBuKDYzKQogICAgICAgICAgICAgICAgICAgIH1dKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICB9LCBlLmV4cG9ydHMgPSB0KCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNTk1MzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAociA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAic3ltYm9sIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgZS5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIGUgIT09IFN5bWJvbC5wcm90b3R5cGUgPyAic3ltYm9sIiA6IHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgfSkoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHQuWiA9IHZvaWQgMDsKICAgICAgICAgICAgICAgIHZhciBvID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLl9fZXNNb2R1bGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gZSB8fCAib2JqZWN0IiAhPT0gcihlKSAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiBlKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdSgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiB0LmhhcyhlKSkgcmV0dXJuIHQuZ2V0KGUpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsIGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBpKSA6IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAmJiAoYS5nZXQgfHwgYS5zZXQpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGksIGEpIDogbltpXSA9IGVbaV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgblsiZGVmYXVsdCJdID0gZSwgdCAmJiB0LnNldChlLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICB9KG4oNzM2MykpLAogICAgICAgICAgICAgICAgICAgIGkgPSBzKG4oNTY5NykpLAogICAgICAgICAgICAgICAgICAgIGEgPSBzKG4oODUyNykpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KCkgewogICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiBXZWFrTWFwKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG5ldyBXZWFrTWFwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB1ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfSwgZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSByZXR1cm4gYyhlKQogICAgICAgICAgICAgICAgICAgIH0oZSkgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSByZXR1cm4gQXJyYXkuZnJvbShlKQogICAgICAgICAgICAgICAgICAgIH0oZSkgfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSByZXR1cm4gYyhlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwgLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAiT2JqZWN0IiA9PT0gbiAmJiBlLmNvbnN0cnVjdG9yICYmIChuID0gZS5jb25zdHJ1Y3Rvci5uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJNYXAiID09PSBuIHx8ICJTZXQiID09PSBuKSByZXR1cm4gQXJyYXkuZnJvbShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJBcmd1bWVudHMiID09PSBuIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYyhlLCB0KQogICAgICAgICAgICAgICAgICAgIH0oZSkgfHwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpCiAgICAgICAgICAgICAgICAgICAgfSgpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgKG51bGwgPT0gdCB8fCB0ID4gZS5sZW5ndGgpICYmICh0ID0gZS5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwLCByID0gbmV3IEFycmF5KHQpOyBuIDwgdDsgbisrKSByW25dID0gZVtuXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChmID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAxOyB0IDwgYXJndW1lbnRzLmxlbmd0aDsgdCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50c1t0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gbikgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sIHIpICYmIChlW3JdID0gbltyXSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgIH0pLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307CiAgICAgICAgICAgICAgICAgICAgdmFyIG4sIHIsIG8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IGUpIHJldHVybiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIHIsIG8gPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBPYmplY3Qua2V5cyhlKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gMDsgciA8IGkubGVuZ3RoOyByKyspIG4gPSBpW3JdLCB0LmluZGV4T2YobikgPj0gMCB8fCAob1tuXSA9IGVbbl0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAwOyByIDwgaS5sZW5ndGg7IHIrKykgbiA9IGlbcl0sIHQuaW5kZXhPZihuKSA+PSAwIHx8IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLCBuKSAmJiAob1tuXSA9IGVbbl0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gcChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBPYmplY3Qua2V5cyhlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgKHIgPSByLmZpbHRlcigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgdCkuZW51bWVyYWJsZQogICAgICAgICAgICAgICAgICAgICAgICB9KSkpLCBuLnB1c2guYXBwbHkobiwgcikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMTsgdCA8IGFyZ3VtZW50cy5sZW5ndGg7IHQrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG51bGwgIT0gYXJndW1lbnRzW3RdID8gYXJndW1lbnRzW3RdIDoge307CiAgICAgICAgICAgICAgICAgICAgICAgIHQgJSAyID8gcChPYmplY3QobiksICEwKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKGUsIHQsIG5bdF0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpIDogcChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sIHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBtKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24geShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gZyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChnID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuX19wcm90b19fID0gdCwgZQogICAgICAgICAgICAgICAgICAgIH0pKGUsIHQpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gdihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ1bmRlZmluZWQiID09IHR5cGVvZiBSZWZsZWN0IHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgUHJveHkpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIChmdW5jdGlvbigpIHt9KSkpLCAhMAogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCByID0gTyhlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gTyh0aGlzKS5jb25zdHJ1Y3RvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBSZWZsZWN0LmNvbnN0cnVjdChyLCBhcmd1bWVudHMsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuID0gci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYih0aGlzLCBuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBiKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT09IHIodCkgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IHcoZSkgOiB0CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gdyhlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE8oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAoTyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKQogICAgICAgICAgICAgICAgICAgIH0pKGUpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gXyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSkgOiBlW3RdID0gbiwgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHggPSBbIm9uQ2hhbmdlIiwgIm9uT3BlbiIsICJvbkNsb3NlIiwgIm9uTW9udGhDaGFuZ2UiLCAib25ZZWFyQ2hhbmdlIiwgIm9uUmVhZHkiLCAib25WYWx1ZVVwZGF0ZSIsICJvbkRheUNyZWF0ZSJdLAogICAgICAgICAgICAgICAgICAgIGsgPSBpWyJkZWZhdWx0Il0ub25lT2ZUeXBlKFtpWyJkZWZhdWx0Il0uZnVuYywgaVsiZGVmYXVsdCJdLmFycmF5T2YoaVsiZGVmYXVsdCJdLmZ1bmMpXSksCiAgICAgICAgICAgICAgICAgICAgRSA9IFsib25DcmVhdGUiLCAib25EZXN0cm95Il0sCiAgICAgICAgICAgICAgICAgICAgQyA9IGlbImRlZmF1bHQiXS5mdW5jLAogICAgICAgICAgICAgICAgICAgIFMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIGcoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfShzLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIHIsIGkgPSB2KHMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSh0aGlzLCBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoLCBuID0gbmV3IEFycmF5KHQpLCByID0gMDsgciA8IHQ7IHIrKykgbltyXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfKHcoZSA9IGkuY2FsbC5hcHBseShpLCBbdGhpc10uY29uY2F0KG4pKSksICJjcmVhdGVGbGF0cGlja3JJbnN0YW5jZSIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubm9kZS5ibHVyICYmIGUubm9kZS5ibHVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGUucHJvcHMub3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGoodCwgZS5wcm9wcyksIGUuZmxhdHBpY2tyID0gKDAsIGFbImRlZmF1bHQiXSkoZS5ub2RlLCB0KSwgZS5wcm9wcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKSAmJiBlLmZsYXRwaWNrci5zZXREYXRlKGUucHJvcHMudmFsdWUsICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUucHJvcHMub25DcmVhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAmJiBuKGUuZmxhdHBpY2tyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBfKHcoZSksICJkZXN0cm95RmxhdHBpY2tySW5zdGFuY2UiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnByb3BzLm9uRGVzdHJveTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ICYmIHQoZS5mbGF0cGlja3IpLCBlLmZsYXRwaWNrci5kZXN0cm95KCksIGUuZmxhdHBpY2tyID0gbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBfKHcoZSksICJoYW5kbGVOb2RlQ2hhbmdlIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm5vZGUgPSB0LCBlLmZsYXRwaWNrciAmJiAoZS5kZXN0cm95RmxhdHBpY2tySW5zdGFuY2UoKSwgZS5jcmVhdGVGbGF0cGlja3JJbnN0YW5jZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPSBzLCAobiA9IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjb21wb25lbnREaWRVcGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucHJvcHMub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUub3B0aW9uczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gaih0LCB0aGlzLnByb3BzKSwgbiA9IGoobiwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLCBvID0gci5sZW5ndGggLSAxOyBvID49IDA7IG8tLSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHJbb10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAhPT0gbltpXSAmJiAoLTEgPT09IHguaW5kZXhPZihpKSB8fCBBcnJheS5pc0FycmF5KGEpIHx8IChhID0gW2FdKSwgdGhpcy5mbGF0cGlja3Iuc2V0KGksIGEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0hdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKSB8fCB0aGlzLnByb3BzLnZhbHVlICYmIEFycmF5LmlzQXJyYXkodGhpcy5wcm9wcy52YWx1ZSkgJiYgZS52YWx1ZSAmJiBBcnJheS5pc0FycmF5KGUudmFsdWUpICYmIHRoaXMucHJvcHMudmFsdWUuZXZlcnkoKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtuXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSB8fCB0aGlzLnByb3BzLnZhbHVlID09PSBlLnZhbHVlIHx8IHRoaXMuZmxhdHBpY2tyLnNldERhdGUodGhpcy5wcm9wcy52YWx1ZSwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudERpZE1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZsYXRwaWNrckluc3RhbmNlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY29tcG9uZW50V2lsbFVubW91bnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveUZsYXRwaWNrckluc3RhbmNlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMucHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmRlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUudmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmNoaWxkcmVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5yZW5kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBkKGUsIFsib3B0aW9ucyIsICJkZWZhdWx0VmFsdWUiLCAidmFsdWUiLCAiY2hpbGRyZW4iLCAicmVuZGVyIl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNbZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIEUuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc1tlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYSA/IGEoaChoKHt9LCBzKSwge30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmhhbmRsZU5vZGVDaGFuZ2UpIDogdC53cmFwID8gb1siZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImRpdiIsIGYoe30sIHMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiB0aGlzLmhhbmRsZU5vZGVDaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaSkgOiBvWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgiaW5wdXQiLCBmKHt9LCBzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiB0aGlzLmhhbmRsZU5vZGVDaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfV0pICYmIHkodC5wcm90b3R5cGUsIG4pLCByICYmIHkodCwgciksIHMKICAgICAgICAgICAgICAgICAgICB9KG8uQ29tcG9uZW50KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBqKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGgoe30sIGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB4LmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuaGFzT3duUHJvcGVydHkoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbltlXSAmJiAhQXJyYXkuaXNBcnJheShuW2VdKSA/IG5bZV0gPSBbbltlXV0gOiBuW2VdIHx8IChuW2VdID0gW10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBBcnJheS5pc0FycmF5KHRbZV0pID8gdFtlXSA6IFt0W2VdXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyID0gbltlXSkucHVzaC5hcHBseShyLCBsKG8pKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfKFMsICJwcm9wVHlwZXMiLCB7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBpWyJkZWZhdWx0Il0uc3RyaW5nLAogICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGlbImRlZmF1bHQiXS5vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGssCiAgICAgICAgICAgICAgICAgICAgb25PcGVuOiBrLAogICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U6IGssCiAgICAgICAgICAgICAgICAgICAgb25Nb250aENoYW5nZTogaywKICAgICAgICAgICAgICAgICAgICBvblllYXJDaGFuZ2U6IGssCiAgICAgICAgICAgICAgICAgICAgb25SZWFkeTogaywKICAgICAgICAgICAgICAgICAgICBvblZhbHVlVXBkYXRlOiBrLAogICAgICAgICAgICAgICAgICAgIG9uRGF5Q3JlYXRlOiBrLAogICAgICAgICAgICAgICAgICAgIG9uQ3JlYXRlOiBDLAogICAgICAgICAgICAgICAgICAgIG9uRGVzdHJveTogQywKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaVsiZGVmYXVsdCJdLm9uZU9mVHlwZShbaVsiZGVmYXVsdCJdLnN0cmluZywgaVsiZGVmYXVsdCJdLmFycmF5LCBpWyJkZWZhdWx0Il0ub2JqZWN0LCBpWyJkZWZhdWx0Il0ubnVtYmVyXSksCiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IGlbImRlZmF1bHQiXS5ub2RlLAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogaVsiZGVmYXVsdCJdLnN0cmluZywKICAgICAgICAgICAgICAgICAgICByZW5kZXI6IGlbImRlZmF1bHQiXS5mdW5jCiAgICAgICAgICAgICAgICB9KSwgXyhTLCAiZGVmYXVsdFByb3BzIiwgewogICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHt9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBQID0gUzsKICAgICAgICAgICAgICAgIHQuWiA9IFAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgNzkxNDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgdmFyIHIgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDE7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiBuKSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobiwgcikgJiYgKGVbcl0gPSBuW3JdKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICBpID0gbig3MzYzKSwKICAgICAgICAgICAgICAgICAgICBhID0gdShpKSwKICAgICAgICAgICAgICAgICAgICBzID0gdShuKDU2OTcpKTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogImhpZGRlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICJzY3JvbGwiLAogICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiAicHJlIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYyA9IFsiZXh0cmFXaWR0aCIsICJpbmplY3RTdHlsZXMiLCAiaW5wdXRDbGFzc05hbWUiLCAiaW5wdXRSZWYiLCAiaW5wdXRTdHlsZSIsICJtaW5XaWR0aCIsICJvbkF1dG9zaXplIiwgInBsYWNlaG9sZGVySXNNaW5XaWR0aCJdLAogICAgICAgICAgICAgICAgICAgIGYgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc3R5bGUuZm9udFNpemUgPSBlLmZvbnRTaXplLCB0LnN0eWxlLmZvbnRGYW1pbHkgPSBlLmZvbnRGYW1pbHksIHQuc3R5bGUuZm9udFdlaWdodCA9IGUuZm9udFdlaWdodCwgdC5zdHlsZS5mb250U3R5bGUgPSBlLmZvbnRTdHlsZSwgdC5zdHlsZS5sZXR0ZXJTcGFjaW5nID0gZS5sZXR0ZXJTcGFjaW5nLCB0LnN0eWxlLnRleHRUcmFuc2Zvcm0gPSBlLnRleHRUcmFuc2Zvcm0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGQgPSAhKCJ1bmRlZmluZWQiID09IHR5cGVvZiB3aW5kb3cgfHwgIXdpbmRvdy5uYXZpZ2F0b3IpICYmIC9NU0lFIHxUcmlkZW50XC98RWRnZVwvLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSwKICAgICAgICAgICAgICAgICAgICBwID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkID8gIl8iICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDEyKSA6IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgKHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLCBlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5pbnB1dFJlZiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmlucHV0ID0gZSwgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygbi5wcm9wcy5pbnB1dFJlZiAmJiBuLnByb3BzLmlucHV0UmVmKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnBsYWNlSG9sZGVyU2l6ZXJSZWYgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5wbGFjZUhvbGRlclNpemVyID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5zaXplclJlZiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNpemVyID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5zdGF0ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpZHRoOiBlLm1pbldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0SWQ6IGUuaWQgfHwgcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZJZDogZS5pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCB0KSA6IGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgbyh0LCBudWxsLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmlkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICE9PSB0LnByZXZJZCA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRJZDogbiB8fCBwKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZJZDogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgbyh0LCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY29tcG9uZW50RGlkTW91bnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW91bnRlZCA9ICEwLCB0aGlzLmNvcHlJbnB1dFN0eWxlcygpLCB0aGlzLnVwZGF0ZUlucHV0V2lkdGgoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjb21wb25lbnREaWRVcGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmlucHV0V2lkdGggIT09IHRoaXMuc3RhdGUuaW5wdXRXaWR0aCAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB0aGlzLnByb3BzLm9uQXV0b3NpemUgJiYgdGhpcy5wcm9wcy5vbkF1dG9zaXplKHRoaXMuc3RhdGUuaW5wdXRXaWR0aCksIHRoaXMudXBkYXRlSW5wdXRXaWR0aCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudFdpbGxVbm1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdW50ZWQgPSAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjb3B5SW5wdXRTdHlsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdW50ZWQgJiYgd2luZG93LmdldENvbXB1dGVkU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmlucHV0ICYmIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuaW5wdXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICYmIChmKGUsIHRoaXMuc2l6ZXIpLCB0aGlzLnBsYWNlSG9sZGVyU2l6ZXIgJiYgZihlLCB0aGlzLnBsYWNlSG9sZGVyU2l6ZXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlSW5wdXRXaWR0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW91bnRlZCAmJiB0aGlzLnNpemVyICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiB0aGlzLnNpemVyLnNjcm9sbFdpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5wcm9wcy5wbGFjZWhvbGRlciAmJiAoIXRoaXMucHJvcHMudmFsdWUgfHwgdGhpcy5wcm9wcy52YWx1ZSAmJiB0aGlzLnByb3BzLnBsYWNlaG9sZGVySXNNaW5XaWR0aCkgPyBNYXRoLm1heCh0aGlzLnNpemVyLnNjcm9sbFdpZHRoLCB0aGlzLnBsYWNlSG9sZGVyU2l6ZXIuc2Nyb2xsV2lkdGgpICsgMiA6IHRoaXMuc2l6ZXIuc2Nyb2xsV2lkdGggKyAyLCAoZSArPSAibnVtYmVyIiA9PT0gdGhpcy5wcm9wcy50eXBlICYmIHRoaXMucHJvcHMuZXh0cmFXaWR0aCA9PT0gdW5kZWZpbmVkID8gMTYgOiBwYXJzZUludCh0aGlzLnByb3BzLmV4dHJhV2lkdGgpIHx8IDApIDwgdGhpcy5wcm9wcy5taW5XaWR0aCAmJiAoZSA9IHRoaXMucHJvcHMubWluV2lkdGgpLCBlICE9PSB0aGlzLnN0YXRlLmlucHV0V2lkdGggJiYgdGhpcy5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpZHRoOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJnZXRJbnB1dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZm9jdXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJibHVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0LmJsdXIoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJzZWxlY3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQuc2VsZWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVyU3R5bGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMucHJvcHMuaW5qZWN0U3R5bGVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkICYmIGUgPyBhWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgic3R5bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2h0bWw6ICJpbnB1dCMiICsgdGhpcy5zdGF0ZS5pbnB1dElkICsgIjo6LW1zLWNsZWFyIHtkaXNwbGF5OiBub25lO30iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IFt0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSwgdGhpcy5wcm9wcy52YWx1ZSwgIiJdLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGUgJiYgZSAhPT0gdW5kZWZpbmVkID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gcih7fSwgdGhpcy5wcm9wcy5zdHlsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5kaXNwbGF5IHx8ICh0LmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSByKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveFNpemluZzogImNvbnRlbnQtYm94IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLnN0YXRlLmlucHV0V2lkdGggKyAicHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucHJvcHMuaW5wdXRTdHlsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiBlKSB0LmluZGV4T2YocikgPj0gMCB8fCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwgcikgJiYgKG5bcl0gPSBlW3JdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcy5wcm9wcywgW10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZSBlW3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0obyksIG8uY2xhc3NOYW1lID0gdGhpcy5wcm9wcy5pbnB1dENsYXNzTmFtZSwgby5pZCA9IHRoaXMuc3RhdGUuaW5wdXRJZCwgby5zdHlsZSA9IG4sIGFbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy5wcm9wcy5jbGFzc05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5yZW5kZXJTdHlsZXMoKSwgYVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImlucHV0Iiwgcih7fSwgbywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IHRoaXMuaW5wdXRSZWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGFbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogdGhpcy5zaXplclJlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlKSwgdGhpcy5wcm9wcy5wbGFjZWhvbGRlciA/IGFbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogdGhpcy5wbGFjZUhvbGRlclNpemVyUmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucHJvcHMucGxhY2Vob2xkZXIpIDogbnVsbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgICAgICAgICAgICAgfShpLkNvbXBvbmVudCk7CiAgICAgICAgICAgICAgICBoLnByb3BUeXBlcyA9IHsKICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHNbImRlZmF1bHQiXS5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBzWyJkZWZhdWx0Il0uYW55LAogICAgICAgICAgICAgICAgICAgIGV4dHJhV2lkdGg6IHNbImRlZmF1bHQiXS5vbmVPZlR5cGUoW3NbImRlZmF1bHQiXS5udW1iZXIsIHNbImRlZmF1bHQiXS5zdHJpbmddKSwKICAgICAgICAgICAgICAgICAgICBpZDogc1siZGVmYXVsdCJdLnN0cmluZywKICAgICAgICAgICAgICAgICAgICBpbmplY3RTdHlsZXM6IHNbImRlZmF1bHQiXS5ib29sLAogICAgICAgICAgICAgICAgICAgIGlucHV0Q2xhc3NOYW1lOiBzWyJkZWZhdWx0Il0uc3RyaW5nLAogICAgICAgICAgICAgICAgICAgIGlucHV0UmVmOiBzWyJkZWZhdWx0Il0uZnVuYywKICAgICAgICAgICAgICAgICAgICBpbnB1dFN0eWxlOiBzWyJkZWZhdWx0Il0ub2JqZWN0LAogICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBzWyJkZWZhdWx0Il0ub25lT2ZUeXBlKFtzWyJkZWZhdWx0Il0ubnVtYmVyLCBzWyJkZWZhdWx0Il0uc3RyaW5nXSksCiAgICAgICAgICAgICAgICAgICAgb25BdXRvc2l6ZTogc1siZGVmYXVsdCJdLmZ1bmMsCiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHNbImRlZmF1bHQiXS5mdW5jLAogICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBzWyJkZWZhdWx0Il0uc3RyaW5nLAogICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVySXNNaW5XaWR0aDogc1siZGVmYXVsdCJdLmJvb2wsCiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHNbImRlZmF1bHQiXS5vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNbImRlZmF1bHQiXS5hbnkKICAgICAgICAgICAgICAgIH0sIGguZGVmYXVsdFByb3BzID0gewogICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgIGluamVjdFN0eWxlczogITAKICAgICAgICAgICAgICAgIH0sIHQuWiA9IGgKICAgICAgICAgICAgfSwKICAgICAgICAgICAgOTMyMjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgciwgbyA9IG4oMzI4OCksCiAgICAgICAgICAgICAgICAgICAgaSA9IChyID0gbykgJiYgci5fX2VzTW9kdWxlID8gciA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiByCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRbImRlZmF1bHQiXSA9IGlbImRlZmF1bHQiXSwgZS5leHBvcnRzID0gdFsiZGVmYXVsdCJdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDMyMDM6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gewogICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRyYWNrOiAiaW5wdXQtcmFuZ2VfX3RyYWNrIGlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZElucHV0UmFuZ2U6ICJpbnB1dC1yYW5nZSBpbnB1dC1yYW5nZS0tZGlzYWJsZWQiLAogICAgICAgICAgICAgICAgICAgIGlucHV0UmFuZ2U6ICJpbnB1dC1yYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgbGFiZWxDb250YWluZXI6ICJpbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICBtYXhMYWJlbDogImlucHV0LXJhbmdlX19sYWJlbCBpbnB1dC1yYW5nZV9fbGFiZWwtLW1heCIsCiAgICAgICAgICAgICAgICAgICAgbWluTGFiZWw6ICJpbnB1dC1yYW5nZV9fbGFiZWwgaW5wdXQtcmFuZ2VfX2xhYmVsLS1taW4iLAogICAgICAgICAgICAgICAgICAgIHNsaWRlcjogImlucHV0LXJhbmdlX19zbGlkZXIiLAogICAgICAgICAgICAgICAgICAgIHNsaWRlckNvbnRhaW5lcjogImlucHV0LXJhbmdlX19zbGlkZXItY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICB0cmFjazogImlucHV0LXJhbmdlX190cmFjayBpbnB1dC1yYW5nZV9fdHJhY2stLWJhY2tncm91bmQiLAogICAgICAgICAgICAgICAgICAgIHZhbHVlTGFiZWw6ICJpbnB1dC1yYW5nZV9fbGFiZWwgaW5wdXQtcmFuZ2VfX2xhYmVsLS12YWx1ZSIKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICAzMjg4OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgIGkgPSBnKG4oNzM2MykpLAogICAgICAgICAgICAgICAgICAgIGEgPSBnKG4oNTY5NykpLAogICAgICAgICAgICAgICAgICAgIHMgPSBnKG4oNjUyMSkpLAogICAgICAgICAgICAgICAgICAgIHUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlICYmIGUuX19lc01vZHVsZSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIGUpIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCBuKSAmJiAodFtuXSA9IGVbbl0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFsiZGVmYXVsdCJdID0gZSwgdAogICAgICAgICAgICAgICAgICAgIH0obigzMjMyKSksCiAgICAgICAgICAgICAgICAgICAgbCA9IGcobigzMjAzKSksCiAgICAgICAgICAgICAgICAgICAgYyA9IGcobig5MTkxKSksCiAgICAgICAgICAgICAgICAgICAgZiA9IGcobigyODA3KSksCiAgICAgICAgICAgICAgICAgICAgZCA9IGcobigyMDk3KSksCiAgICAgICAgICAgICAgICAgICAgcCA9IGcobigyNzM3KSksCiAgICAgICAgICAgICAgICAgICAgaCA9IGcobig3NTIpKSwKICAgICAgICAgICAgICAgICAgICBtID0gbig4MzAyKSwKICAgICAgICAgICAgICAgICAgICB5ID0gbig2ODc4KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBnKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gdihlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB7fTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpW2VdID0gcltlXQogICAgICAgICAgICAgICAgICAgIH0pKSwgaS5lbnVtZXJhYmxlID0gISFpLmVudW1lcmFibGUsIGkuY29uZmlndXJhYmxlID0gISFpLmNvbmZpZ3VyYWJsZSwgKCJ2YWx1ZSIgaW4gaSB8fCBpLmluaXRpYWxpemVyKSAmJiAoaS53cml0YWJsZSA9ICEwKSwgaSA9IG4uc2xpY2UoKS5yZXZlcnNlKCkucmVkdWNlKChmdW5jdGlvbihuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByKGUsIHQsIG4pIHx8IG4KICAgICAgICAgICAgICAgICAgICB9KSwgaSksIG8gJiYgdm9pZCAwICE9PSBpLmluaXRpYWxpemVyICYmIChpLnZhbHVlID0gaS5pbml0aWFsaXplciA/IGkuaW5pdGlhbGl6ZXIuY2FsbChvKSA6IHZvaWQgMCwgaS5pbml0aWFsaXplciA9IHVuZGVmaW5lZCksIHZvaWQgMCA9PT0gaS5pbml0aWFsaXplciAmJiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIGkpLCBpID0gbnVsbCksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBiID0gKHYoKHIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc3RhcnRWYWx1ZSA9IG51bGwsIG4ubm9kZSA9IG51bGwsIG4udHJhY2tOb2RlID0gbnVsbCwgbi5pc1NsaWRlckRyYWdnaW5nID0gITEsIG4ubGFzdEtleU1vdmVkID0gbnVsbCwgbgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyB0eXBlb2YgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIChPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSwgdCkgOiBlLl9fcHJvdG9fXyA9IHQpCiAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSwgbyh0LCBudWxsLCBbewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJwcm9wVHlwZXMiLAogICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1NhbWVWYWx1ZXM6IGFbImRlZmF1bHQiXS5ib29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbGxlZGJ5OiBhWyJkZWZhdWx0Il0uc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFDb250cm9sczogYVsiZGVmYXVsdCJdLnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBhWyJkZWZhdWx0Il0ub2JqZWN0T2YoYVsiZGVmYXVsdCJdLnN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGFbImRlZmF1bHQiXS5ib29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZVRyYWNrOiBhWyJkZWZhdWx0Il0uYm9vbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRMYWJlbDogYVsiZGVmYXVsdCJdLmZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmFsdWU6IGZbImRlZmF1bHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5WYWx1ZTogZlsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFbImRlZmF1bHQiXS5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VTdGFydDogYVsiZGVmYXVsdCJdLmZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGFbImRlZmF1bHQiXS5mdW5jLmlzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VDb21wbGV0ZTogYVsiZGVmYXVsdCJdLmZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcDogYVsiZGVmYXVsdCJdLm51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZFsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImRlZmF1bHRQcm9wcyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93U2FtZVZhbHVlczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogbFsiZGVmYXVsdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhWYWx1ZTogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluVmFsdWU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcDogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfV0pLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudFdpbGxVbm1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVEb2N1bWVudE1vdXNlVXBMaXN0ZW5lcigpLCB0aGlzLnJlbW92ZURvY3VtZW50VG91Y2hFbmRMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldENvbXBvbmVudENsYXNzTmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmRpc2FibGVkID8gdGhpcy5wcm9wcy5jbGFzc05hbWVzLmRpc2FibGVkSW5wdXRSYW5nZSA6IHRoaXMucHJvcHMuY2xhc3NOYW1lcy5pbnB1dFJhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldFRyYWNrQ2xpZW50UmVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYWNrTm9kZS5nZXRDbGllbnRSZWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0S2V5QnlQb3NpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHUuZ2V0VmFsdWVGcm9tUHJvcHModGhpcy5wcm9wcywgdGhpcy5pc011bHRpVmFsdWUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHUuZ2V0UG9zaXRpb25zRnJvbVZhbHVlcyh0LCB0aGlzLnByb3BzLm1pblZhbHVlLCB0aGlzLnByb3BzLm1heFZhbHVlLCB0aGlzLmdldFRyYWNrQ2xpZW50UmVjdCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTXVsdGlWYWx1ZSgpICYmICgwLCBtLmRpc3RhbmNlVG8pKGUsIG4ubWluKSA8ICgwLCBtLmRpc3RhbmNlVG8pKGUsIG4ubWF4KSkgcmV0dXJuICJtaW4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtYXgiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldEtleXMiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc011bHRpVmFsdWUoKSA/IFsibWluIiwgIm1heCJdIDogWyJtYXgiXQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYXNTdGVwRGlmZmVyZW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHUuZ2V0VmFsdWVGcm9tUHJvcHModGhpcy5wcm9wcywgdGhpcy5pc011bHRpVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG0ubGVuZ3RoKShlLm1pbiwgdC5taW4pID49IHRoaXMucHJvcHMuc3RlcCB8fCAoMCwgbS5sZW5ndGgpKGUubWF4LCB0Lm1heCkgPj0gdGhpcy5wcm9wcy5zdGVwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImlzTXVsdGlWYWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbS5pc09iamVjdCkodGhpcy5wcm9wcy52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaXNXaXRoaW5SYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc011bHRpVmFsdWUoKSA/IGUubWluID49IHRoaXMucHJvcHMubWluVmFsdWUgJiYgZS5tYXggPD0gdGhpcy5wcm9wcy5tYXhWYWx1ZSAmJiB0aGlzLnByb3BzLmFsbG93U2FtZVZhbHVlcyA/IGUubWluIDw9IGUubWF4IDogZS5taW4gPCBlLm1heCA6IGUubWF4ID49IHRoaXMucHJvcHMubWluVmFsdWUgJiYgZS5tYXggPD0gdGhpcy5wcm9wcy5tYXhWYWx1ZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJzaG91bGRVcGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNXaXRoaW5SYW5nZShlKSAmJiB0aGlzLmhhc1N0ZXBEaWZmZXJlbmNlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInVwZGF0ZVBvc2l0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdS5nZXRWYWx1ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0aGlzLmlzTXVsdGlWYWx1ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdS5nZXRQb3NpdGlvbnNGcm9tVmFsdWVzKG4sIHRoaXMucHJvcHMubWluVmFsdWUsIHRoaXMucHJvcHMubWF4VmFsdWUsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcltlXSA9IHQsIHRoaXMubGFzdEtleU1vdmVkID0gZSwgdGhpcy51cGRhdGVQb3NpdGlvbnMocikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlUG9zaXRpb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IHUuZ2V0VmFsdWVGcm9tUG9zaXRpb24oZS5taW4sIHRoaXMucHJvcHMubWluVmFsdWUsIHRoaXMucHJvcHMubWF4VmFsdWUsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHUuZ2V0VmFsdWVGcm9tUG9zaXRpb24oZS5tYXgsIHRoaXMucHJvcHMubWluVmFsdWUsIHRoaXMucHJvcHMubWF4VmFsdWUsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IHUuZ2V0U3RlcFZhbHVlRnJvbVZhbHVlKHQubWluLCB0aGlzLnByb3BzLnN0ZXApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHUuZ2V0U3RlcFZhbHVlRnJvbVZhbHVlKHQubWF4LCB0aGlzLnByb3BzLnN0ZXApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWVzKG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInVwZGF0ZVZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdS5nZXRWYWx1ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0aGlzLmlzTXVsdGlWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5bZV0gPSB0LCB0aGlzLnVwZGF0ZVZhbHVlcyhuKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ1cGRhdGVWYWx1ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG91bGRVcGRhdGUoZSkgJiYgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLmlzTXVsdGlWYWx1ZSgpID8gZSA6IGUubWF4KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpbmNyZW1lbnRWYWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHUuZ2V0VmFsdWVGcm9tUHJvcHModGhpcy5wcm9wcywgdGhpcy5pc011bHRpVmFsdWUoKSlbZV0gKyB0aGlzLnByb3BzLnN0ZXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImRlY3JlbWVudFZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdS5nZXRWYWx1ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0aGlzLmlzTXVsdGlWYWx1ZSgpKVtlXSAtIHRoaXMucHJvcHMuc3RlcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50TW91c2VVcExpc3RlbmVyKCksIHRoaXMubm9kZS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLmhhbmRsZU1vdXNlVXApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZERvY3VtZW50VG91Y2hFbmRMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRUb3VjaEVuZExpc3RlbmVyKCksIHRoaXMubm9kZS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgdGhpcy5oYW5kbGVUb3VjaEVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVtb3ZlRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5oYW5kbGVNb3VzZVVwKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW1vdmVEb2N1bWVudFRvdWNoRW5kTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIHRoaXMuaGFuZGxlVG91Y2hFbmQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVNsaWRlckRyYWciLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB1LmdldFBvc2l0aW9uRnJvbUV2ZW50KGUsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTbGlkZXJEcmFnZ2luZyA9ICEwLCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi51cGRhdGVQb3NpdGlvbih0LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVUcmFja0RyYWciLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVkICYmIHRoaXMucHJvcHMuZHJhZ2dhYmxlVHJhY2sgJiYgIXRoaXMuaXNTbGlkZXJEcmFnZ2luZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4ubWF4VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLm1pblZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkubWF4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5taW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1LmdldFBvc2l0aW9uRnJvbUV2ZW50KGUsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdS5nZXRWYWx1ZUZyb21Qb3NpdGlvbihsLCBvLCByLCB0aGlzLmdldFRyYWNrQ2xpZW50UmVjdCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHUuZ2V0U3RlcFZhbHVlRnJvbVZhbHVlKGMsIHRoaXMucHJvcHMuc3RlcCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB1LmdldFBvc2l0aW9uRnJvbUV2ZW50KHQsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gdS5nZXRWYWx1ZUZyb21Qb3NpdGlvbihkLCBvLCByLCB0aGlzLmdldFRyYWNrQ2xpZW50UmVjdCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHUuZ2V0U3RlcFZhbHVlRnJvbVZhbHVlKHAsIHRoaXMucHJvcHMuc3RlcCkgLSBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluOiBzIC0gaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogYSAtIGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlcyhtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVTbGlkZXJLZXlEb3duIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wcm9wcy5kaXNhYmxlZCkgc3dpdGNoIChlLmtleUNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHkuTEVGVF9BUlJPVzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHkuRE9XTl9BUlJPVzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpLCB0aGlzLmRlY3JlbWVudFZhbHVlKHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHkuUklHSFRfQVJST1c6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB5LlVQX0FSUk9XOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHRoaXMuaW5jcmVtZW50VmFsdWUodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlVHJhY2tNb3VzZURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnByb3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbi5tYXhWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4ubWluVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5tYXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLm1pbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB1LmdldFZhbHVlRnJvbVBvc2l0aW9uKHQsIG8sIHIsIHRoaXMuZ2V0VHJhY2tDbGllbnRSZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdS5nZXRTdGVwVmFsdWVGcm9tVmFsdWUobCwgdGhpcy5wcm9wcy5zdGVwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIXRoaXMucHJvcHMuZHJhZ2dhYmxlVHJhY2sgfHwgYyA+IGEgfHwgYyA8IHMpICYmIHRoaXMudXBkYXRlUG9zaXRpb24odGhpcy5nZXRLZXlCeVBvc2l0aW9uKHQpLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVJbnRlcmFjdGlvblN0YXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZVN0YXJ0ICYmIHRoaXMucHJvcHMub25DaGFuZ2VTdGFydCh0aGlzLnByb3BzLnZhbHVlKSwgdGhpcy5wcm9wcy5vbkNoYW5nZUNvbXBsZXRlICYmICEoMCwgbS5pc0RlZmluZWQpKHRoaXMuc3RhcnRWYWx1ZSkgJiYgKHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMucHJvcHMudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUludGVyYWN0aW9uRW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NsaWRlckRyYWdnaW5nICYmICh0aGlzLmlzU2xpZGVyRHJhZ2dpbmcgPSAhMSksIHRoaXMucHJvcHMub25DaGFuZ2VDb21wbGV0ZSAmJiAoMCwgbS5pc0RlZmluZWQpKHRoaXMuc3RhcnRWYWx1ZSkgJiYgKHRoaXMuc3RhcnRWYWx1ZSAhPT0gdGhpcy5wcm9wcy52YWx1ZSAmJiB0aGlzLnByb3BzLm9uQ2hhbmdlQ29tcGxldGUodGhpcy5wcm9wcy52YWx1ZSksIHRoaXMuc3RhcnRWYWx1ZSA9IG51bGwpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUtleURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcmFjdGlvblN0YXJ0KGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUtleVVwIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25FbmQoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlTW91c2VEb3duIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25TdGFydChlKSwgdGhpcy5hZGREb2N1bWVudE1vdXNlVXBMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZU1vdXNlVXAiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcmFjdGlvbkVuZChlKSwgdGhpcy5yZW1vdmVEb2N1bWVudE1vdXNlVXBMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVRvdWNoU3RhcnQiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcmFjdGlvblN0YXJ0KGUpLCB0aGlzLmFkZERvY3VtZW50VG91Y2hFbmRMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVRvdWNoRW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25FbmQoZSksIHRoaXMucmVtb3ZlRG9jdW1lbnRUb3VjaEVuZExpc3RlbmVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVyU2xpZGVycyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdS5nZXRWYWx1ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0aGlzLmlzTXVsdGlWYWx1ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdS5nZXRQZXJjZW50YWdlc0Zyb21WYWx1ZXModCwgdGhpcy5wcm9wcy5taW5WYWx1ZSwgdGhpcy5wcm9wcy5tYXhWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHRoaXMucHJvcHMuYWxsb3dTYW1lVmFsdWVzICYmICJtaW4iID09PSB0aGlzLmxhc3RLZXlNb3ZlZCA/IHRoaXMuZ2V0S2V5cygpLnJldmVyc2UoKSA6IHRoaXMuZ2V0S2V5cygpKS5tYXAoKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRbcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuW3JdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMubWF4VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzLm1pblZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibWluIiA9PT0gciA/IHUgPSB0Lm1heCA6IGwgPSB0Lm1pbiwgaVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQocFsiZGVmYXVsdCJdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbGxlZGJ5OiBlLnByb3BzLmFyaWFMYWJlbGxlZGJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhQ29udHJvbHM6IGUucHJvcHMuYXJpYUNvbnRyb2xzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBlLnByb3BzLmNsYXNzTmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdExhYmVsOiBlLnByb3BzLmZvcm1hdExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFZhbHVlOiB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5WYWx1ZTogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TbGlkZXJEcmFnOiBlLmhhbmRsZVNsaWRlckRyYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2xpZGVyS2V5RG93bjogZS5oYW5kbGVTbGlkZXJLZXlEb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50YWdlOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVySGlkZGVuSW5wdXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLm5hbWUpIHJldHVybiBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5pc011bHRpVmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdS5nZXRWYWx1ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEtleXMoKS5tYXAoKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG5bcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0ID8gIiIgKyBlLnByb3BzLm5hbWUgKyAoMCwgbS5jYXB0aWFsaXplKShyKSA6IGUucHJvcHMubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImlucHV0IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJoaWRkZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVuZGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldENvbXBvbmVudENsYXNzTmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB1LmdldFZhbHVlRnJvbVByb3BzKHRoaXMucHJvcHMsIHRoaXMuaXNNdWx0aVZhbHVlKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB1LmdldFBlcmNlbnRhZ2VzRnJvbVZhbHVlcyhuLCB0aGlzLnByb3BzLm1pblZhbHVlLCB0aGlzLnByb3BzLm1heFZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWRpc2FibGVkIjogdGhpcy5wcm9wcy5kaXNhYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5ub2RlID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVLZXlEb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5VXA6IHRoaXMuaGFuZGxlS2V5VXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd246IHRoaXMuaGFuZGxlTW91c2VEb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVG91Y2hTdGFydDogdGhpcy5oYW5kbGVUb3VjaFN0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudChjWyJkZWZhdWx0Il0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiB0aGlzLnByb3BzLmNsYXNzTmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0TGFiZWw6IHRoaXMucHJvcHMuZm9ybWF0TGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIm1pbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucHJvcHMubWluVmFsdWUpLCBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudChoWyJkZWZhdWx0Il0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiB0aGlzLnByb3BzLmNsYXNzTmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlVHJhY2s6IHRoaXMucHJvcHMuZHJhZ2dhYmxlVHJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudHJhY2tOb2RlID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudGFnZXM6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja0RyYWc6IHRoaXMuaGFuZGxlVHJhY2tEcmFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tNb3VzZURvd246IHRoaXMuaGFuZGxlVHJhY2tNb3VzZURvd24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucmVuZGVyU2xpZGVycygpKSwgaVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoY1siZGVmYXVsdCJdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogdGhpcy5wcm9wcy5jbGFzc05hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdExhYmVsOiB0aGlzLnByb3BzLmZvcm1hdExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJtYXgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnByb3BzLm1heFZhbHVlKSwgdGhpcy5yZW5kZXJIaWRkZW5JbnB1dHMoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgfShpWyJkZWZhdWx0Il0uQ29tcG9uZW50KSkucHJvdG90eXBlLCAiaGFuZGxlU2xpZGVyRHJhZyIsIFtzWyJkZWZhdWx0Il1dLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIucHJvdG90eXBlLCAiaGFuZGxlU2xpZGVyRHJhZyIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVUcmFja0RyYWciLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZVRyYWNrRHJhZyIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVTbGlkZXJLZXlEb3duIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVTbGlkZXJLZXlEb3duIiksIHIucHJvdG90eXBlKSwgdihyLnByb3RvdHlwZSwgImhhbmRsZVRyYWNrTW91c2VEb3duIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVUcmFja01vdXNlRG93biIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVJbnRlcmFjdGlvblN0YXJ0IiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVJbnRlcmFjdGlvblN0YXJ0IiksIHIucHJvdG90eXBlKSwgdihyLnByb3RvdHlwZSwgImhhbmRsZUludGVyYWN0aW9uRW5kIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVJbnRlcmFjdGlvbkVuZCIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVLZXlEb3duIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVLZXlEb3duIiksIHIucHJvdG90eXBlKSwgdihyLnByb3RvdHlwZSwgImhhbmRsZUtleVVwIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVLZXlVcCIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZURvd24iLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZU1vdXNlRG93biIpLCByLnByb3RvdHlwZSksIHYoci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZVVwIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZVVwIiksIHIucHJvdG90eXBlKSwgdihyLnByb3RvdHlwZSwgImhhbmRsZVRvdWNoU3RhcnQiLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZVRvdWNoU3RhcnQiKSwgci5wcm90b3R5cGUpLCB2KHIucHJvdG90eXBlLCAiaGFuZGxlVG91Y2hFbmQiLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZVRvdWNoRW5kIiksIHIucHJvdG90eXBlKSwgcik7CiAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBiLCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNjg3ODogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB0LkRPV05fQVJST1cgPSA0MCwgdC5MRUZUX0FSUk9XID0gMzcsIHQuUklHSFRfQVJST1cgPSAzOSwgdC5VUF9BUlJPVyA9IDM4CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDkxOTE6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgIH0pLCB0WyJkZWZhdWx0Il0gPSBhOwogICAgICAgICAgICAgICAgdmFyIHIgPSBpKG4oNzM2MykpLAogICAgICAgICAgICAgICAgICAgIG8gPSBpKG4oNTY5NykpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZm9ybWF0TGFiZWwgPyBlLmZvcm1hdExhYmVsKGUuY2hpbGRyZW4sIGUudHlwZSkgOiBlLmNoaWxkcmVuOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgic3BhbiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBlLmNsYXNzTmFtZXNbZS50eXBlICsgIkxhYmVsIl0KICAgICAgICAgICAgICAgICAgICB9LCByWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgic3BhbiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBlLmNsYXNzTmFtZXMubGFiZWxDb250YWluZXIKICAgICAgICAgICAgICAgICAgICB9LCB0KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGEucHJvcFR5cGVzID0gewogICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBvWyJkZWZhdWx0Il0ubm9kZS5pc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IG9bImRlZmF1bHQiXS5vYmplY3RPZihvWyJkZWZhdWx0Il0uc3RyaW5nKS5pc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgIGZvcm1hdExhYmVsOiBvWyJkZWZhdWx0Il0uZnVuYywKICAgICAgICAgICAgICAgICAgICB0eXBlOiBvWyJkZWZhdWx0Il0uc3RyaW5nLmlzUmVxdWlyZWQKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICAyODA3OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5tYXhWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUubWluVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoMCwgci5pc051bWJlcikobikgfHwgISgwLCByLmlzTnVtYmVyKSh0KSkgcmV0dXJuIG5ldyBFcnJvcignIm1pblZhbHVlIiBhbmQgIm1heFZhbHVlIiBtdXN0IGJlIGEgbnVtYmVyJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4gPj0gdCkgcmV0dXJuIG5ldyBFcnJvcignIm1pblZhbHVlIiBtdXN0IGJlIHNtYWxsZXIgdGhhbiAibWF4VmFsdWUiJykKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB2YXIgciA9IG4oODMwMik7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjczNzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHZhciByLCBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICBpID0gbChuKDczNjMpKSwKICAgICAgICAgICAgICAgICAgICBhID0gbChuKDU2OTcpKSwKICAgICAgICAgICAgICAgICAgICBzID0gbChuKDY1MjEpKSwKICAgICAgICAgICAgICAgICAgICB1ID0gbChuKDkxOTEpKTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYyhlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB7fTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpW2VdID0gcltlXQogICAgICAgICAgICAgICAgICAgIH0pKSwgaS5lbnVtZXJhYmxlID0gISFpLmVudW1lcmFibGUsIGkuY29uZmlndXJhYmxlID0gISFpLmNvbmZpZ3VyYWJsZSwgKCJ2YWx1ZSIgaW4gaSB8fCBpLmluaXRpYWxpemVyKSAmJiAoaS53cml0YWJsZSA9ICEwKSwgaSA9IG4uc2xpY2UoKS5yZXZlcnNlKCkucmVkdWNlKChmdW5jdGlvbihuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByKGUsIHQsIG4pIHx8IG4KICAgICAgICAgICAgICAgICAgICB9KSwgaSksIG8gJiYgdm9pZCAwICE9PSBpLmluaXRpYWxpemVyICYmIChpLnZhbHVlID0gaS5pbml0aWFsaXplciA/IGkuaW5pdGlhbGl6ZXIuY2FsbChvKSA6IHZvaWQgMCwgaS5pbml0aWFsaXplciA9IHVuZGVmaW5lZCksIHZvaWQgMCA9PT0gaS5pbml0aWFsaXplciAmJiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIGkpLCBpID0gbnVsbCksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBmID0gKGMoKHIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdCB8fCAib2JqZWN0IiAhPSB0eXBlb2YgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0ID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCAodC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ubm9kZSA9IG51bGwsIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgbnVsbCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicHJvcFR5cGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsbGVkYnk6IGFbImRlZmF1bHQiXS5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUNvbnRyb2xzOiBhWyJkZWZhdWx0Il0uc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IGFbImRlZmF1bHQiXS5vYmplY3RPZihhWyJkZWZhdWx0Il0uc3RyaW5nKS5pc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdExhYmVsOiBhWyJkZWZhdWx0Il0uZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhWYWx1ZTogYVsiZGVmYXVsdCJdLm51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5WYWx1ZTogYVsiZGVmYXVsdCJdLm51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNsaWRlckRyYWc6IGFbImRlZmF1bHQiXS5mdW5jLmlzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TbGlkZXJLZXlEb3duOiBhWyJkZWZhdWx0Il0uZnVuYy5pc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IGFbImRlZmF1bHQiXS5udW1iZXIuaXNSZXF1aXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBhWyJkZWZhdWx0Il0uc3RyaW5nLmlzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFbImRlZmF1bHQiXS5udW1iZXIuaXNSZXF1aXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfV0pLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudFdpbGxVbm1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVEb2N1bWVudE1vdXNlTW92ZUxpc3RlbmVyKCksIHRoaXMucmVtb3ZlRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIoKSwgdGhpcy5yZW1vdmVEb2N1bWVudFRvdWNoRW5kTGlzdGVuZXIoKSwgdGhpcy5yZW1vdmVEb2N1bWVudFRvdWNoTW92ZUxpc3RlbmVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZ2V0U3R5bGUiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYWJzb2x1dGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDEwMCAqICh0aGlzLnByb3BzLnBlcmNlbnRhZ2UgfHwgMCkgKyAiJSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lcigpLCB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLmhhbmRsZU1vdXNlTW92ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50TW91c2VVcExpc3RlbmVyKCksIHRoaXMubm9kZS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLmhhbmRsZU1vdXNlVXApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZERvY3VtZW50VG91Y2hNb3ZlTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50VG91Y2hNb3ZlTGlzdGVuZXIoKSwgdGhpcy5ub2RlLm93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgdGhpcy5oYW5kbGVUb3VjaE1vdmUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImFkZERvY3VtZW50VG91Y2hFbmRMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRUb3VjaEVuZExpc3RlbmVyKCksIHRoaXMubm9kZS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgdGhpcy5oYW5kbGVUb3VjaEVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVtb3ZlRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuaGFuZGxlTW91c2VNb3ZlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW1vdmVEb2N1bWVudE1vdXNlVXBMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLmhhbmRsZU1vdXNlVXApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbW92ZURvY3VtZW50VG91Y2hNb3ZlTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0aGlzLmhhbmRsZVRvdWNoTW92ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVtb3ZlRG9jdW1lbnRUb3VjaEVuZExpc3RlbmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLmhhbmRsZVRvdWNoRW5kKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVNb3VzZURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERvY3VtZW50TW91c2VNb3ZlTGlzdGVuZXIoKSwgdGhpcy5hZGREb2N1bWVudE1vdXNlVXBMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZU1vdXNlVXAiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50TW91c2VNb3ZlTGlzdGVuZXIoKSwgdGhpcy5yZW1vdmVEb2N1bWVudE1vdXNlVXBMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZU1vdXNlTW92ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uU2xpZGVyRHJhZyhlLCB0aGlzLnByb3BzLnR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVRvdWNoU3RhcnQiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERvY3VtZW50VG91Y2hFbmRMaXN0ZW5lcigpLCB0aGlzLmFkZERvY3VtZW50VG91Y2hNb3ZlTGlzdGVuZXIoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVUb3VjaE1vdmUiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblNsaWRlckRyYWcoZSwgdGhpcy5wcm9wcy50eXBlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVUb3VjaEVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRUb3VjaE1vdmVMaXN0ZW5lcigpLCB0aGlzLnJlbW92ZURvY3VtZW50VG91Y2hFbmRMaXN0ZW5lcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUtleURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblNsaWRlcktleURvd24oZSwgdGhpcy5wcm9wcy50eXBlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZW5kZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0U3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgic3BhbiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRoaXMucHJvcHMuY2xhc3NOYW1lcy5zbGlkZXJDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubm9kZSA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCh1WyJkZWZhdWx0Il0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiB0aGlzLnByb3BzLmNsYXNzTmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0TGFiZWw6IHRoaXMucHJvcHMuZm9ybWF0TGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInZhbHVlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5wcm9wcy52YWx1ZSksIGlbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtbGFiZWxsZWRieSI6IHRoaXMucHJvcHMuYXJpYUxhYmVsbGVkYnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtY29udHJvbHMiOiB0aGlzLnByb3BzLmFyaWFDb250cm9scywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS12YWx1ZW1heCI6IHRoaXMucHJvcHMubWF4VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtdmFsdWVtaW4iOiB0aGlzLnByb3BzLm1pblZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLXZhbHVlbm93IjogdGhpcy5wcm9wcy52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRoaXMucHJvcHMuY2xhc3NOYW1lcy5zbGlkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlOiAiZmFsc2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVLZXlEb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duOiB0aGlzLmhhbmRsZU1vdXNlRG93biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRvdWNoU3RhcnQ6IHRoaXMuaGFuZGxlVG91Y2hTdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlOiAic2xpZGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleDogIjAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgfShpWyJkZWZhdWx0Il0uQ29tcG9uZW50KSkucHJvdG90eXBlLCAiaGFuZGxlTW91c2VEb3duIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZURvd24iKSwgci5wcm90b3R5cGUpLCBjKHIucHJvdG90eXBlLCAiaGFuZGxlTW91c2VVcCIsIFtzWyJkZWZhdWx0Il1dLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIucHJvdG90eXBlLCAiaGFuZGxlTW91c2VVcCIpLCByLnByb3RvdHlwZSksIGMoci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZU1vdmUiLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZU1vdXNlTW92ZSIpLCByLnByb3RvdHlwZSksIGMoci5wcm90b3R5cGUsICJoYW5kbGVUb3VjaFN0YXJ0IiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVUb3VjaFN0YXJ0IiksIHIucHJvdG90eXBlKSwgYyhyLnByb3RvdHlwZSwgImhhbmRsZVRvdWNoTW92ZSIsIFtzWyJkZWZhdWx0Il1dLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIucHJvdG90eXBlLCAiaGFuZGxlVG91Y2hNb3ZlIiksIHIucHJvdG90eXBlKSwgYyhyLnByb3RvdHlwZSwgImhhbmRsZVRvdWNoRW5kIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVUb3VjaEVuZCIpLCByLnByb3RvdHlwZSksIGMoci5wcm90b3R5cGUsICJoYW5kbGVLZXlEb3duIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVLZXlEb3duIiksIHIucHJvdG90eXBlKSwgcik7CiAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBmLCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNzUyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgIGkgPSB1KG4oNzM2MykpLAogICAgICAgICAgICAgICAgICAgIGEgPSB1KG4oNTY5NykpLAogICAgICAgICAgICAgICAgICAgIHMgPSB1KG4oNjUyMSkpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKGUsIHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhyKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlbZV0gPSByW2VdCiAgICAgICAgICAgICAgICAgICAgfSkpLCBpLmVudW1lcmFibGUgPSAhIWkuZW51bWVyYWJsZSwgaS5jb25maWd1cmFibGUgPSAhIWkuY29uZmlndXJhYmxlLCAoInZhbHVlIiBpbiBpIHx8IGkuaW5pdGlhbGl6ZXIpICYmIChpLndyaXRhYmxlID0gITApLCBpID0gbi5zbGljZSgpLnJldmVyc2UoKS5yZWR1Y2UoKGZ1bmN0aW9uKG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIoZSwgdCwgbikgfHwgbgogICAgICAgICAgICAgICAgICAgIH0pLCBpKSwgbyAmJiB2b2lkIDAgIT09IGkuaW5pdGlhbGl6ZXIgJiYgKGkudmFsdWUgPSBpLmluaXRpYWxpemVyID8gaS5pbml0aWFsaXplci5jYWxsKG8pIDogdm9pZCAwLCBpLmluaXRpYWxpemVyID0gdW5kZWZpbmVkKSwgdm9pZCAwID09PSBpLmluaXRpYWxpemVyICYmIChPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgaSksIGkgPSBudWxsKSwgaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGMgPSAobCgociA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBlIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMsICh0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcywgZSkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5ub2RlID0gbnVsbCwgbi50cmFja0RyYWdFdmVudCA9IG51bGwsIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiICsgdHlwZW9mIHQpOwogICAgICAgICAgICAgICAgICAgICAgICBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodCAmJiB0LnByb3RvdHlwZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdCAmJiAoT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0KQogICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG8odCwgbnVsbCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicHJvcFR5cGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IGFbImRlZmF1bHQiXS5ub2RlLmlzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogYVsiZGVmYXVsdCJdLm9iamVjdE9mKGFbImRlZmF1bHQiXS5zdHJpbmcpLmlzUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlVHJhY2s6IGFbImRlZmF1bHQiXS5ib29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tEcmFnOiBhWyJkZWZhdWx0Il0uZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNrTW91c2VEb3duOiBhWyJkZWZhdWx0Il0uZnVuYy5pc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VzOiBhWyJkZWZhdWx0Il0ub2JqZWN0T2YoYVsiZGVmYXVsdCJdLm51bWJlcikuaXNSZXF1aXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfV0pLCBvKHQsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldENsaWVudFJlY3QiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImdldEFjdGl2ZVRyYWNrU3R5bGUiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IDEwMCAqICh0aGlzLnByb3BzLnBlcmNlbnRhZ2VzLm1heCAtIHRoaXMucHJvcHMucGVyY2VudGFnZXMubWluKSArICIlIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMTAwICogdGhpcy5wcm9wcy5wZXJjZW50YWdlcy5taW4gKyAiJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lcigpLCB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLmhhbmRsZU1vdXNlTW92ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiYWRkRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50TW91c2VVcExpc3RlbmVyKCksIHRoaXMubm9kZS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLmhhbmRsZU1vdXNlVXApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbW92ZURvY3VtZW50TW91c2VNb3ZlTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLmhhbmRsZU1vdXNlTW92ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAicmVtb3ZlRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5oYW5kbGVNb3VzZVVwKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVNb3VzZU1vdmUiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5kcmFnZ2FibGVUcmFjayAmJiAobnVsbCAhPT0gdGhpcy50cmFja0RyYWdFdmVudCAmJiB0aGlzLnByb3BzLm9uVHJhY2tEcmFnKGUsIHRoaXMudHJhY2tEcmFnRXZlbnQpLCB0aGlzLnRyYWNrRHJhZ0V2ZW50ID0gZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlTW91c2VVcCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZHJhZ2dhYmxlVHJhY2sgJiYgKHRoaXMucmVtb3ZlRG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lcigpLCB0aGlzLnJlbW92ZURvY3VtZW50TW91c2VVcExpc3RlbmVyKCksIHRoaXMudHJhY2tEcmFnRXZlbnQgPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVNb3VzZURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogKGUudG91Y2hlcyA/IGUudG91Y2hlc1swXS5jbGllbnRYIDogZS5jbGllbnRYKSAtIHRoaXMuZ2V0Q2xpZW50UmVjdCgpLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25UcmFja01vdXNlRG93bihlLCB0KSwgdGhpcy5wcm9wcy5kcmFnZ2FibGVUcmFjayAmJiAodGhpcy5hZGREb2N1bWVudE1vdXNlTW92ZUxpc3RlbmVyKCksIHRoaXMuYWRkRG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlVG91Y2hTdGFydCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIHRoaXMuaGFuZGxlTW91c2VEb3duKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbmRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXRBY3RpdmVUcmFja1N0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRoaXMucHJvcHMuY2xhc3NOYW1lcy50cmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5oYW5kbGVNb3VzZURvd24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ub3VjaFN0YXJ0OiB0aGlzLmhhbmRsZVRvdWNoU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubm9kZSA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpWyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy5wcm9wcy5jbGFzc05hbWVzLmFjdGl2ZVRyYWNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5wcm9wcy5jaGlsZHJlbikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH1dKSwgdAogICAgICAgICAgICAgICAgfShpWyJkZWZhdWx0Il0uQ29tcG9uZW50KSkucHJvdG90eXBlLCAiaGFuZGxlTW91c2VNb3ZlIiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZU1vdmUiKSwgci5wcm90b3R5cGUpLCBsKHIucHJvdG90eXBlLCAiaGFuZGxlTW91c2VVcCIsIFtzWyJkZWZhdWx0Il1dLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIucHJvdG90eXBlLCAiaGFuZGxlTW91c2VVcCIpLCByLnByb3RvdHlwZSksIGwoci5wcm90b3R5cGUsICJoYW5kbGVNb3VzZURvd24iLCBbc1siZGVmYXVsdCJdXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSwgImhhbmRsZU1vdXNlRG93biIpLCByLnByb3RvdHlwZSksIGwoci5wcm90b3R5cGUsICJoYW5kbGVUb3VjaFN0YXJ0IiwgW3NbImRlZmF1bHQiXV0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5wcm90b3R5cGUsICJoYW5kbGVUb3VjaFN0YXJ0IiksIHIucHJvdG90eXBlKSwgcik7CiAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBjLCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjA5NzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUubWF4VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLm1pblZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVt0XTsKICAgICAgICAgICAgICAgICAgICBpZiAoISgoMCwgci5pc051bWJlcikoaSkgfHwgKDAsIHIuaXNPYmplY3QpKGkpICYmICgwLCByLmlzTnVtYmVyKShpLm1pbikgJiYgKDAsIHIuaXNOdW1iZXIpKGkubWF4KSkpIHJldHVybiBuZXcgRXJyb3IoJyInICsgdCArICciIG11c3QgYmUgYSBudW1iZXIgb3IgYSByYW5nZSBvYmplY3QnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoKDAsIHIuaXNOdW1iZXIpKGkpICYmIChpIDwgbyB8fCBpID4gbikpIHJldHVybiBuZXcgRXJyb3IoJyInICsgdCArICciIG11c3QgYmUgaW4gYmV0d2VlbiAibWluVmFsdWUiIGFuZCAibWF4VmFsdWUiJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCgwLCByLmlzT2JqZWN0KShpKSAmJiAoaS5taW4gPCBvIHx8IGkubWluID4gbiB8fCBpLm1heCA8IG8gfHwgaS5tYXggPiBuKSkgcmV0dXJuIG5ldyBFcnJvcignIicgKyB0ICsgJyIgbXVzdCBiZSBpbiBiZXR3ZWVuICJtaW5WYWx1ZSIgYW5kICJtYXhWYWx1ZSInKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHZhciByID0gbig4MzAyKTsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICAzMjMyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDE7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhcmd1bWVudHNbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gbikgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sIHIpICYmIChlW3JdID0gbltyXSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0LmdldFBlcmNlbnRhZ2VGcm9tUG9zaXRpb24gPSBpLCB0LmdldFZhbHVlRnJvbVBvc2l0aW9uID0gZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gaShlLCByKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArIChuIC0gdCkgKiBvCiAgICAgICAgICAgICAgICB9LCB0LmdldFZhbHVlRnJvbVByb3BzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0KSByZXR1cm4gcih7fSwgZS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWluOiBlLm1pblZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICBtYXg6IGUudmFsdWUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0LmdldFBlcmNlbnRhZ2VGcm9tVmFsdWUgPSBhLCB0LmdldFBlcmNlbnRhZ2VzRnJvbVZhbHVlcyA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBtaW46IGEoZS5taW4sIHQsIG4pLAogICAgICAgICAgICAgICAgICAgICAgICBtYXg6IGEoZS5tYXgsIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgdC5nZXRQb3NpdGlvbkZyb21WYWx1ZSA9IHMsIHQuZ2V0UG9zaXRpb25zRnJvbVZhbHVlcyA9IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBtaW46IHMoZS5taW4sIHQsIG4sIHIpLAogICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHMoZS5tYXgsIHQsIG4sIHIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgdC5nZXRQb3NpdGlvbkZyb21FdmVudCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAoZS50b3VjaGVzID8gZS50b3VjaGVzWzBdIDogZSkuY2xpZW50WDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4OiAoMCwgby5jbGFtcCkociAtIHQubGVmdCwgMCwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0LmdldFN0ZXBWYWx1ZUZyb21WYWx1ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChlIC8gdCkgKiB0CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgdmFyIG8gPSBuKDgzMDIpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC53aWR0aDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS54IC8gbiB8fCAwCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgoMCwgby5jbGFtcCkoZSwgdCwgbikgLSB0KSAvIChuIC0gdCkgfHwgMAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gci53aWR0aDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4OiBhKGUsIHQsIG4pICogbywKICAgICAgICAgICAgICAgICAgICAgICAgeTogMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjkzOTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGUuc2xpY2UoMSkKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICAyNDI2OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChlLCB0KSwgbikKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICA5NTg4OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdFsiZGVmYXVsdCJdID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gTWF0aC5wb3codC54IC0gZS54LCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IE1hdGgucG93KHQueSAtIGUueSwgMik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydChuICsgcikKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICA4MzAyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciByID0gbigyOTM5KTsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiY2FwdGlhbGl6ZSIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhyKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgbyA9IG4oMjQyNik7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgImNsYW1wIiwgewogICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjKG8pWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBpID0gbig5NTg4KTsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiZGlzdGFuY2VUbyIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhpKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgYSA9IG4oMjMzMCk7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgImlzRGVmaW5lZCIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhhKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgcyA9IG4oNDkpOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJpc051bWJlciIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhzKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgdSA9IG4oMTM0NCk7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgImlzT2JqZWN0IiwgewogICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjKHUpWyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBsID0gbigxMzU5KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLl9fZXNNb2R1bGUgPyBlIDogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgImxlbmd0aCIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhsKVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjMzMDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAhPT0gdW5kZWZpbmVkICYmIG51bGwgIT09IGUKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICA0OTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm51bWJlciIgPT0gdHlwZW9mIGUKICAgICAgICAgICAgICAgIH0sIGUuZXhwb3J0cyA9IHRbImRlZmF1bHQiXQogICAgICAgICAgICB9LAogICAgICAgICAgICAxMzQ0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBuID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBlCiAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiBlLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgZSAhPT0gU3ltYm9sLnByb3RvdHlwZSA/ICJzeW1ib2wiIDogdHlwZW9mIGUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGUgJiYgIm9iamVjdCIgPT09ICh2b2lkIDAgPT09IGUgPyAidW5kZWZpbmVkIiA6IG4oZSkpCiAgICAgICAgICAgICAgICB9LCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTM1OTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICAgICAgfSksIHRbImRlZmF1bHQiXSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoZSAtIHQpCiAgICAgICAgICAgICAgICB9LCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgNzU1NTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0ge307CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4ocikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodFtyXSkgcmV0dXJuIHRbcl0uZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0W3JdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czoge30KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsIG8sIG8uZXhwb3J0cywgbiksIG8ubCA9ICEwLCBvLmV4cG9ydHMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ubSA9IGUsIG4uYyA9IHQsIG4uZCA9IGZ1bmN0aW9uKGUsIHQsIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5vKGUsIHQpIHx8IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogcgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sIG4uciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBTeW1ib2wudG9TdHJpbmdUYWcgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFN5bWJvbC50b1N0cmluZ1RhZywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICJNb2R1bGUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCBuLnQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxICYgdCAmJiAoZSA9IG4oZSkpLCA4ICYgdCkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICg0ICYgdCAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlICYmIGUuX19lc01vZHVsZSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4ucihyKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsICJkZWZhdWx0IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMiAmIHQgJiYgInN0cmluZyIgIT0gdHlwZW9mIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvIGluIGUpIG4uZChyLCBvLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbdF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0uYmluZChudWxsLCBvKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICAgICAgfSwgbi5uID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgJiYgZS5fX2VzTW9kdWxlID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmQodCwgImEiLCB0KSwgdAogICAgICAgICAgICAgICAgICAgIH0sIG4ubyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCB0KQogICAgICAgICAgICAgICAgICAgIH0sIG4ucCA9ICIiLCBuKG4ucyA9IDkpCiAgICAgICAgICAgICAgICB9KFtmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gbig3MzYzKQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgICAgIC8qIQogICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDE3IEplZCBXYXRzb24uCiAgICAgICAgICAgICAgICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZQogICAgICAgICAgICAgICAgICAgICAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lcwogICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHt9Lmhhc093blByb3BlcnR5OwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBbXSwgdCA9IDA7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGFyZ3VtZW50c1t0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHR5cGVvZiByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT09IGkgfHwgIm51bWJlciIgPT09IGkpIGUucHVzaChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyKSAmJiByLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvLmFwcGx5KG51bGwsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAmJiBlLnB1c2goYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgib2JqZWN0IiA9PT0gaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgaW4gcikgbi5jYWxsKHIsIHMpICYmIHJbc10gJiYgZS5wdXNoKHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuam9pbigiICIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID8gKG9bImRlZmF1bHQiXSA9IG8sIGUuZXhwb3J0cyA9IG8pIDogdm9pZCAwID09PSAociA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgICAgICAgICAgICAgfS5hcHBseSh0LCBbXSkpIHx8IChlLmV4cG9ydHMgPSByKQogICAgICAgICAgICAgICAgICAgIH0oKQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gL15ccyt8XHMrJC9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IC9eMGJbMDFdKyQvaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAvXjBvWzAtN10rJC9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHBhcnNlSW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9ICJvYmplY3QiID09IHR5cGVvZiB0ICYmIHQgJiYgdC5PYmplY3QgPT09IE9iamVjdCAmJiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9ICJvYmplY3QiID09IHR5cGVvZiBzZWxmICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHMgfHwgdSB8fCBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gbC5TeW1ib2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZiA/IGYucHJvdG90eXBlIDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGQgPyBkLnRvU3RyaW5nIDogdm9pZCAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkoZSkpIHJldHVybiBwID8gcC5jYWxsKGUpIDogIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgKyAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiMCIgPT0gdCAmJiAxIC8gZSA9PSAtMSAvIDAgPyAiLTAiIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBtKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdHlwZW9mIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFlICYmICgib2JqZWN0IiA9PSB0IHx8ICJmdW5jdGlvbiIgPT0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN5bWJvbCIgPT0gdHlwZW9mIGUgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkgJiYgIltvYmplY3QgU3ltYm9sXSIgPT0gYy5jYWxsKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGcoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPyAoZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm51bWJlciIgPT0gdHlwZW9mIGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5KGUpKSByZXR1cm4gTmFOOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtKGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZS52YWx1ZU9mID8gZS52YWx1ZU9mKCkgOiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gbSh0KSA/IHQgKyAiIiA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBlKSByZXR1cm4gMCA9PT0gZSA/IGUgOiArZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5yZXBsYWNlKG4sICIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG8udGVzdChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyB8fCBpLnRlc3QoZSkgPyBhKGUuc2xpY2UoMiksIHMgPyAyIDogOCkgOiByLnRlc3QoZSkgPyBOYU4gOiArZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlKSkgPT09IDEgLyAwIHx8IGUgPT09IC0xIC8gMCA/IDE3OTc2OTMxMzQ4NjIzMTU3ZTI5MiAqIChlIDwgMCA/IC0xIDogMSkgOiBlID09IGUgPyBlIDogMCA6IDAgPT09IGUgPyBlIDogMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBvLCBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSBudWxsID09IChyID0gZSkgPyAiIiA6IGgociksIG8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBnKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdCAlIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPT0gdCA/IG4gPyB0IC0gbiA6IHQgOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KG4pLCAwLCBpID0gZS5sZW5ndGgsIG8gPT0gbyAmJiAodm9pZCAwICE9PSBpICYmIChvID0gbyA8PSBpID8gbyA6IGkpLCBvID0gbyA+PSAwID8gbyA6IDApLCBuID0gbywgdCA9IGgodCksIGUuc2xpY2UobiwgbiArIHQubGVuZ3RoKSA9PSB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KS5jYWxsKHRoaXMsIG4oMykpCiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICAgICAgICAgbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBuID0gbiB8fCBuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIHdpbmRvdyAmJiAobiA9IHdpbmRvdykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gbgogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCByID0gL15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgdCAmJiB0Lk9iamVjdCA9PT0gT2JqZWN0ICYmIHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gIm9iamVjdCIgPT0gdHlwZW9mIHNlbGYgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbyB8fCBpIHx8IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gQXJyYXkucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IEZ1bmN0aW9uLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBPYmplY3QucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGFbIl9fY29yZS1qc19zaGFyZWRfXyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IChuID0gL1teLl0rJC8uZXhlYyhjICYmIGMua2V5cyAmJiBjLmtleXMuSUVfUFJPVE8gfHwgIiIpKSA/ICJTeW1ib2woc3JjKV8xLiIgKyBuIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdS50b1N0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBsLmhhc093blByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGwudG9TdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gUmVnRXhwKCJeIiArIGQuY2FsbChwKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywgIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCAiJDEuKj8iKSArICIkIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcy5zcGxpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gRShhLCAiTWFwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gRShPYmplY3QsICJjcmVhdGUiKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGIoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZSA/IGUubGVuZ3RoIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodGhpcy5jbGVhcigpOyArK3QgPCBuOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZVt0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldChyWzBdLCByWzFdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUgPyBlLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHRoaXMuY2xlYXIoKTsgKyt0IDwgbjspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoclswXSwgclsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gTyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlID8gZS5sZW5ndGggOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0aGlzLmNsZWFyKCk7ICsrdCA8IG47KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHJbMF0sIHJbMV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF8oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiwgciwgbyA9IGUubGVuZ3RoOyBvLS07KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiA9IGVbb11bMF0pID09PSAociA9IHQpIHx8IG4gIT0gbiAmJiByICE9IHIpIHJldHVybiBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHgoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoIVMoZSkgfHwgKHQgPSBlLCBmICYmIGYgaW4gdCkpICYmIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBTKGUpID8gaC5jYWxsKGUpIDogIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJbb2JqZWN0IEZ1bmN0aW9uXSIgPT0gdCB8fCAiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iID09IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gZSAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiBlLnRvU3RyaW5nKSB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gISEoZSArICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkgPyBtIDogcikudGVzdChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQuY2FsbChlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKyAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gayhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgciwgbyA9IGUuX19kYXRhX187CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCJzdHJpbmciID09IChyID0gdHlwZW9mKG4gPSB0KSkgfHwgIm51bWJlciIgPT0gciB8fCAic3ltYm9sIiA9PSByIHx8ICJib29sZWFuIiA9PSByID8gIl9fcHJvdG9fXyIgIT09IG4gOiBudWxsID09PSBuKSA/IG9bInN0cmluZyIgPT0gdHlwZW9mIHQgPyAic3RyaW5nIiA6ICJoYXNoIl0gOiBvLm1hcAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBFKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyB2b2lkIDAgOiBlW3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHgobikgPyBuIDogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEMoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIGUgfHwgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdCA/IHQuYXBwbHkodGhpcywgcikgOiByWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5jYWNoZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5oYXMobykpIHJldHVybiBpLmdldChvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuYXBwbHkodGhpcywgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uY2FjaGUgPSBpLnNldChvLCBhKSwgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNhY2hlID0gbmV3KEMuQ2FjaGUgfHwgTyksIG4KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gUyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHR5cGVvZiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZSAmJiAoIm9iamVjdCIgPT0gdCB8fCAiZnVuY3Rpb24iID09IHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYi5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSB2ID8gdihudWxsKSA6IHt9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGIucHJvdG90eXBlWyJkZWxldGUiXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhcyhlKSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1tlXQogICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX187CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdFtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iID09PSBuID8gdm9pZCAwIDogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAuY2FsbCh0LCBlKSA/IHRbZV0gOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYgPyB2b2lkIDAgIT09IHRbZV0gOiBwLmNhbGwodCwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX19bZV0gPSB2ICYmIHZvaWQgMCA9PT0gdCA/ICJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiA6IHQsIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdy5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSBbXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB3LnByb3RvdHlwZVsiZGVsZXRlIl0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IF8odCwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShuIDwgMCB8fCAobiA9PSB0Lmxlbmd0aCAtIDEgPyB0LnBvcCgpIDogeS5jYWxsKHQsIG4sIDEpLCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBfKHQsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPCAwID8gdm9pZCAwIDogdFtuXVsxXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB3LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXyh0aGlzLl9fZGF0YV9fLCBlKSA+IC0xCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHcucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fX2RhdGFfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gXyhuLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByIDwgMCA/IG4ucHVzaChbZSwgdF0pIDogbltyXVsxXSA9IHQsIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfSwgTy5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaDogbmV3IGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBuZXcoZyB8fCB3KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc6IG5ldyBiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIE8ucHJvdG90eXBlWyJkZWxldGUiXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrKHRoaXMsIGUpWyJkZWxldGUiXShlKQogICAgICAgICAgICAgICAgICAgICAgICB9LCBPLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gayh0aGlzLCBlKS5nZXQoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgTy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGsodGhpcywgZSkuaGFzKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIE8ucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrKHRoaXMsIGUpLnNldChlLCB0KSwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICB9LCBDLkNhY2hlID0gTywgZS5leHBvcnRzID0gQwogICAgICAgICAgICAgICAgICAgIH0pLmNhbGwodGhpcywgbigzKSkKICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IC9eXHMrfFxzKyQvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAvXlstK10weFswLTlhLWZdKyQvaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAvXjBiWzAxXSskL2ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gL14wb1swLTddKyQvaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwYXJzZUludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiB0ICYmIHQuT2JqZWN0ID09PSBPYmplY3QgJiYgdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAib2JqZWN0IiA9PSB0eXBlb2Ygc2VsZiAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzIHx8IHUgfHwgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IE1hdGgubWF4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IE1hdGgubWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsLkRhdGUubm93KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdHlwZW9mIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFlICYmICgib2JqZWN0IiA9PSB0IHx8ICJmdW5jdGlvbiIgPT0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm51bWJlciIgPT0gdHlwZW9mIGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzeW1ib2wiID09IHR5cGVvZiBlIHx8IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlKSAmJiAiW29iamVjdCBTeW1ib2xdIiA9PSBjLmNhbGwoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpKSByZXR1cm4gTmFOOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGgoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUudmFsdWVPZiA/IGUudmFsdWVPZigpIDogZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gaCh0KSA/IHQgKyAiIiA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSkgcmV0dXJuIDAgPT09IGUgPyBlIDogK2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5yZXBsYWNlKG4sICIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gby50ZXN0KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgfHwgaS50ZXN0KGUpID8gYShlLnNsaWNlKDIpLCBzID8gMiA6IDgpIDogci50ZXN0KGUpID8gTmFOIDogK2UKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgaSwgYSwgcywgdSwgbCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgZSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHYodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgPSBvID0gdm9pZCAwLCBsID0gdCwgYSA9IGUuYXBwbHkoaSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBiKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCA9IGUsIHMgPSBzZXRUaW1lb3V0KE8sIHQpLCBjID8gdihlKSA6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUgLSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHUgfHwgbiA+PSB0IHx8IG4gPCAwIHx8IHkgJiYgZSAtIGwgPj0gaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE8oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcoZSkpIHJldHVybiBfKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzZXRUaW1lb3V0KE8sIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0IC0gKGUgLSB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHkgPyBkKG4sIGkgLSAoZSAtIGwpKSA6IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF8oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzID0gdm9pZCAwLCBnICYmIHIgPyB2KGUpIDogKHIgPSBvID0gdm9pZCAwLCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHgoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBwKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB3KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gYXJndW1lbnRzLCBvID0gdGhpcywgdSA9IGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gcykgcmV0dXJuIGIodSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5KSByZXR1cm4gcyA9IHNldFRpbWVvdXQoTywgdCksIHYodSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gcyAmJiAocyA9IHNldFRpbWVvdXQoTywgdCkpLCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IG0odCkgfHwgMCwgaChuKSAmJiAoYyA9ICEhbi5sZWFkaW5nLCBpID0gKHkgPSAibWF4V2FpdCIgaW4gbikgPyBmKG0obi5tYXhXYWl0KSB8fCAwLCB0KSA6IGksIGcgPSAidHJhaWxpbmciIGluIG4gPyAhIW4udHJhaWxpbmcgOiBnKSwgeC5jYW5jZWwgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IHMgJiYgY2xlYXJUaW1lb3V0KHMpLCBsID0gMCwgciA9IHUgPSBvID0gcyA9IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeC5mbHVzaCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHMgPyBhIDogXyhwKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB4CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KS5jYWxsKHRoaXMsIG4oMykpCiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAiW29iamVjdCBBcmd1bWVudHNdIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAiW29iamVjdCBNYXBdIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAiW29iamVjdCBPYmplY3RdIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAiW29iamVjdCBTZXRdIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAvXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAvXlx3KiQvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IC9eXC4vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IC9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IC9cXChcXCk/L2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gL15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gL14oPzowfFsxLTldXGQqKSQvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBoWyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXSA9IGhbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdID0gaFsiW29iamVjdCBJbnQ4QXJyYXldIl0gPSBoWyJbb2JqZWN0IEludDE2QXJyYXldIl0gPSBoWyJbb2JqZWN0IEludDMyQXJyYXldIl0gPSBoWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl0gPSBoWyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdID0gaFsiW29iamVjdCBVaW50MTZBcnJheV0iXSA9IGhbIltvYmplY3QgVWludDMyQXJyYXldIl0gPSAhMCwgaFtyXSA9IGhbIltvYmplY3QgQXJyYXldIl0gPSBoWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdID0gaFsiW29iamVjdCBCb29sZWFuXSJdID0gaFsiW29iamVjdCBEYXRhVmlld10iXSA9IGhbIltvYmplY3QgRGF0ZV0iXSA9IGhbIltvYmplY3QgRXJyb3JdIl0gPSBoWyJbb2JqZWN0IEZ1bmN0aW9uXSJdID0gaFtvXSA9IGhbIltvYmplY3QgTnVtYmVyXSJdID0gaFtpXSA9IGhbIltvYmplY3QgUmVnRXhwXSJdID0gaFthXSA9IGhbIltvYmplY3QgU3RyaW5nXSJdID0gaFsiW29iamVjdCBXZWFrTWFwXSJdID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgZSAmJiBlLk9iamVjdCA9PT0gT2JqZWN0ICYmIGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gIm9iamVjdCIgPT0gdHlwZW9mIHNlbGYgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gbSB8fCB5IHx8IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gdCAmJiAhdC5ub2RlVHlwZSAmJiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHYgJiYgIm9iamVjdCIgPT0gdHlwZW9mIG4gJiYgbiAmJiAhbi5ub2RlVHlwZSAmJiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGIgJiYgYi5leHBvcnRzID09PSB2ICYmIG0ucHJvY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdyAmJiB3LmJpbmRpbmcoInV0aWwiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gTyAmJiBPLmlzVHlwZWRBcnJheTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHgoZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZSA/IGUubGVuZ3RoIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociAmJiBpICYmIChuID0gZVsrK29dKTsgKytvIDwgaTspIG4gPSB0KG4sIGVbb10sIG8sIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gayhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gLTEsIHIgPSBlID8gZS5sZW5ndGggOiAwOyArK24gPCByOykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodChlW25dLCBuLCBlKSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEUoZSwgdCwgbiwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8oZSwgKGZ1bmN0aW9uKGUsIG8sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gciA/IChyID0gITEsIGUpIDogdChuLCBlLCBvLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGUgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgZS50b1N0cmluZykgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gISEoZSArICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gQXJyYXkoZS5zaXplKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUsIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuWysrdF0gPSBbciwgZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbgogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBqKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IEFycmF5KGUuc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgblsrK3RdID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFAsIEEsIEQsIFQgPSBBcnJheS5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOID0gRnVuY3Rpb24ucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTSA9IE9iamVjdC5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMID0gZ1siX19jb3JlLWpzX3NoYXJlZF9fIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gKFAgPSAvW14uXSskLy5leGVjKEwgJiYgTC5rZXlzICYmIEwua2V5cy5JRV9QUk9UTyB8fCAiIikpID8gIlN5bWJvbChzcmMpXzEuIiArIFAgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBOLnRvU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IE0uaGFzT3duUHJvcGVydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGID0gTS50b1N0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYgPSBSZWdFeHAoIl4iICsgUi5jYWxsKHEpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCAiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csICIkMS4qPyIpICsgIiQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSBnLlN5bWJvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUgPSBnLlVpbnQ4QXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIID0gTS5wcm9wZXJ0eUlzRW51bWVyYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSBULnNwbGljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcgPSAoQSA9IE9iamVjdC5rZXlzLCBEID0gT2JqZWN0LCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEEoRChlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSyA9IF9lKGcsICJEYXRhVmlldyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWSA9IF9lKGcsICJNYXAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEcgPSBfZShnLCAiUHJvbWlzZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCA9IF9lKGcsICJTZXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEgPSBfZShnLCAiV2Vha01hcCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWiA9IF9lKE9iamVjdCwgImNyZWF0ZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWCA9IEFlKEspLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSiA9IEFlKFkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWUgPSBBZShHKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlID0gQWUoJCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZSA9IEFlKFEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUgPSBCID8gQi5wcm90b3R5cGUgOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZSA9IHJlID8gcmUudmFsdWVPZiA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGllID0gcmUgPyByZS50b1N0cmluZyA6IHZvaWQgMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUgPyBlLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHRoaXMuY2xlYXIoKTsgKyt0IDwgbjspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoclswXSwgclsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2UoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZSA/IGUubGVuZ3RoIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodGhpcy5jbGVhcigpOyArK3QgPCBuOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZVt0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldChyWzBdLCByWzFdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB1ZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlID8gZS5sZW5ndGggOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0aGlzLmNsZWFyKCk7ICsrdCA8IG47KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHJbMF0sIHJbMV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGxlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUgPyBlLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHRoaXMuX19kYXRhX18gPSBuZXcgdWU7ICsrdCA8IG47KSB0aGlzLmFkZChlW3RdKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9fZGF0YV9fID0gbmV3IHNlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGZlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBlLmxlbmd0aDsgbi0tOykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVGUoZVtuXVswXSwgdCkpIHJldHVybiBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYWUucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9fZGF0YV9fID0gWiA/IFoobnVsbCkgOiB7fQogICAgICAgICAgICAgICAgICAgICAgICB9LCBhZS5wcm90b3R5cGVbImRlbGV0ZSJdID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFzKGUpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2VdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGFlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX187CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoWikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdFtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iID09PSBuID8gdm9pZCAwIDogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHEuY2FsbCh0LCBlKSA/IHRbZV0gOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYWUucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fX2RhdGFfXzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBaID8gdm9pZCAwICE9PSB0W2VdIDogcS5jYWxsKHQsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGFlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fX2RhdGFfX1tlXSA9IFogJiYgdm9pZCAwID09PSB0ID8gIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iIDogdCwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICB9LCBzZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSBbXQogICAgICAgICAgICAgICAgICAgICAgICB9LCBzZS5wcm90b3R5cGVbImRlbGV0ZSJdID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmZSh0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKG4gPCAwIHx8IChuID09IHQubGVuZ3RoIC0gMSA/IHQucG9wKCkgOiB6LmNhbGwodCwgbiwgMSksIDApKQogICAgICAgICAgICAgICAgICAgICAgICB9LCBzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmZSh0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuIDwgMCA/IHZvaWQgMCA6IHRbbl1bMV0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgc2UucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmZSh0aGlzLl9fZGF0YV9fLCBlKSA+IC0xCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuX19kYXRhX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGZlKG4sIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgPCAwID8gbi5wdXNoKFtlLCB0XSkgOiBuW3JdWzFdID0gdCwgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICB9LCB1ZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX19kYXRhX18gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaDogbmV3IGFlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogbmV3KFkgfHwgc2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZzogbmV3IGFlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVlLnByb3RvdHlwZVsiZGVsZXRlIl0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2UodGhpcywgZSlbImRlbGV0ZSJdKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2UodGhpcywgZSkuZ2V0KGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVlLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2UodGhpcywgZSkuaGFzKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2UodGhpcywgZSkuc2V0KGUsIHQpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGxlLnByb3RvdHlwZS5hZGQgPSBsZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLnNldChlLCAiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGxlLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgY2UucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9fZGF0YV9fID0gbmV3IHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNlLnByb3RvdHlwZVsiZGVsZXRlIl0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fX2RhdGFfX1siZGVsZXRlIl0oZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgY2UucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChlKQogICAgICAgICAgICAgICAgICAgICAgICB9LCBjZS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuX19kYXRhX187CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiBpbnN0YW5jZW9mIHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLl9fZGF0YV9fOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghWSB8fCByLmxlbmd0aCA8IDE5OSkgcmV0dXJuIHIucHVzaChbZSwgdF0pLCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9fZGF0YV9fID0gbmV3IHVlKHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zZXQoZSwgdCksIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlLCBwZSA9IChkZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBoZShlLCB0LCBVZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUxlKGUpKSByZXR1cm4gZGUoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IGUubGVuZ3RoLCByID0gLTEsIG8gPSBPYmplY3QoZSk7ICsrciA8IG4gJiYgITEgIT09IHQob1tyXSwgciwgbyk7KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gLTEsIG8gPSBPYmplY3QoZSksIGkgPSBuKGUpLCBhID0gaS5sZW5ndGg7IGEtLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBpWysrcl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMSA9PT0gdChvW3NdLCBzLCBvKSkgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBtZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMCwgciA9ICh0ID0gRWUodCwgZSkgPyBbdF0gOiBiZSh0KSkubGVuZ3RoOyBudWxsICE9IGUgJiYgbiA8IHI7KSBlID0gZVtQZSh0W24rK10pXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIG4gPT0gciA/IGUgOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geWUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSAmJiB0IGluIE9iamVjdChlKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBnZShlLCB0LCBuLCBzLCB1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdCB8fCAobnVsbCA9PSBlIHx8IG51bGwgPT0gdCB8fCAhcWUoZSkgJiYgIUZlKHQpID8gZSAhPSBlICYmIHQgIT0gdCA6IGZ1bmN0aW9uKGUsIHQsIG4sIHMsIHUsIGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IE1lKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gTWUodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAiW29iamVjdCBBcnJheV0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gIltvYmplY3QgQXJyYXldIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjIHx8IChkID0gKGQgPSB4ZShlKSkgPT0gciA/IGkgOiBkKSwgZiB8fCAocCA9IChwID0geGUodCkpID09IHIgPyBpIDogcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBkID09IGkgJiYgIUMoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBwID09IGkgJiYgIUModCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBkID09IHA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkgJiYgIWgpIHJldHVybiBsIHx8IChsID0gbmV3IGNlKSwgYyB8fCBCZShlKSA/IHdlKGUsIHQsIG4sIHMsIHUsIGwpIDogZnVuY3Rpb24oZSwgdCwgbiwgciwgaSwgcywgdSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgRGF0YVZpZXddIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5ieXRlTGVuZ3RoICE9IHQuYnl0ZUxlbmd0aCB8fCBlLmJ5dGVPZmZzZXQgIT0gdC5ieXRlT2Zmc2V0KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUuYnVmZmVyLCB0ID0gdC5idWZmZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IEFycmF5QnVmZmVyXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoZS5ieXRlTGVuZ3RoICE9IHQuYnl0ZUxlbmd0aCB8fCAhcihuZXcgVShlKSwgbmV3IFUodCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgQm9vbGVhbl0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiW29iamVjdCBEYXRlXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IE51bWJlcl0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUZSgrZSwgK3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiW29iamVjdCBFcnJvcl0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm5hbWUgPT0gdC5uYW1lICYmIGUubWVzc2FnZSA9PSB0Lm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJbb2JqZWN0IFJlZ0V4cF0iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiW29iamVjdCBTdHJpbmddIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PSB0ICsgIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG86CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBTOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gMiAmIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgfHwgKGwgPSBqKSwgZS5zaXplICE9IHQuc2l6ZSAmJiAhYykgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gdS5nZXQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYpIHJldHVybiBmID09IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyB8PSAxLCB1LnNldChlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHdlKGwoZSksIGwodCksIHIsIGksIHMsIHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1WyJkZWxldGUiXShlKSwgZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIltvYmplY3QgU3ltYm9sXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9lKSByZXR1cm4gb2UuY2FsbChlKSA9PSBvZS5jYWxsKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0LCBkLCBuLCBzLCB1LCBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgyICYgdSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBoICYmIHEuY2FsbChlLCAiX193cmFwcGVkX18iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBtICYmIHEuY2FsbCh0LCAiX193cmFwcGVkX18iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgfHwgdikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBnID8gZS52YWx1ZSgpIDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gdiA/IHQudmFsdWUoKSA6IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCB8fCAobCA9IG5ldyBjZSksIG4oYiwgdywgcywgdSwgbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF5ICYmIChsIHx8IChsID0gbmV3IGNlKSwgZnVuY3Rpb24oZSwgdCwgbiwgciwgbywgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IDIgJiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFVlKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSAhPSBVZSh0KS5sZW5ndGggJiYgIWEpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IHU7IGwtLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gc1tsXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGEgPyBjIGluIHQgOiBxLmNhbGwodCwgYykpKSByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGkuZ2V0KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiAmJiBpLmdldCh0KSkgcmV0dXJuIGYgPT0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5zZXQoZSwgdCksIGkuc2V0KHQsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwID0gYTsgKytsIDwgdTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gZVtjID0gc1tsXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHRbY107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgdmFyIHkgPSBhID8gcihtLCBoLCBjLCB0LCBlLCBpKSA6IHIoaCwgbSwgYywgZSwgdCwgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh2b2lkIDAgPT09IHkgPyBoID09PSBtIHx8IG4oaCwgbSwgciwgbywgaSkgOiB5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCB8fCAocCA9ICJjb25zdHJ1Y3RvciIgPT0gYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCAmJiAhcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBlLmNvbnN0cnVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0LmNvbnN0cnVjdG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9PSB2IHx8ICEoImNvbnN0cnVjdG9yIiBpbiBlKSB8fCAhKCJjb25zdHJ1Y3RvciIgaW4gdCkgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZyAmJiBnIGluc3RhbmNlb2YgZyAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB2ICYmIHYgaW5zdGFuY2VvZiB2IHx8IChkID0gITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlbImRlbGV0ZSJdKGUpLCBpWyJkZWxldGUiXSh0KSwgZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdCwgbiwgcywgdSwgbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQsIGdlLCBuLCBzLCB1KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgPyBlIDogbnVsbCA9PSBlID8gSGUgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSA/IE1lKGUpID8gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFZShlKSAmJiBDZSh0KSA/IFNlKFBlKGUpLCB0KSA6IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG51bGwgPT0gZSA/IHZvaWQgMCA6IG1lKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gciA/IHZvaWQgMCA6IHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShuLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gciAmJiByID09PSB0ID8gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSAmJiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciwgbyA9IC0xLCBpID0gKHQgPSBFZSh0LCBlKSA/IFt0XSA6IGJlKHQpKS5sZW5ndGg7ICsrbyA8IGk7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gUGUodFtvXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHIgPSBudWxsICE9IGUgJiYgbihlLCBhKSkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZVthXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gciB8fCAhIShpID0gZSA/IGUubGVuZ3RoIDogMCkgJiYgUmUoaSkgJiYga2UoYSwgaSkgJiYgKE1lKGUpIHx8IE5lKGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0LCB5ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShuLCBlKSA6IGdlKHQsIHIsIHZvaWQgMCwgMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGVbMF0sIGVbMV0pIDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gVWUoZSksIG4gPSB0Lmxlbmd0aDsgbi0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlW3JdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFtuXSA9IFtyLCBvLCBDZShvKV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgPT0gdC5sZW5ndGggJiYgdFswXVsyXSA/IFNlKHRbMF1bMF0sIHRbMF1bMV0pIDogZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA9PT0gZSB8fCBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4ubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgcmV0dXJuICFpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gT2JqZWN0KGUpOyBvLS07KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuW29dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhWzJdID8gYVsxXSAhPT0gZVthWzBdXSA6ICEoYVswXSBpbiBlKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgKytvIDwgaTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IChhID0gbltvXSlbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlW3NdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYVsyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSB1ICYmICEocyBpbiBlKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMsIGYgPSBuZXcgY2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHZvaWQgMCA9PT0gYyA/IGdlKGwsIHUsIHIsIDMsIGYpIDogYykpIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KG4sIDAsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlKSA6IEVlKHQgPSBlKSA/IChuID0gUGUodCksIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gdm9pZCAwIDogZVtuXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lKHQsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0LCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGJlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNZShlKSA/IGUgOiBqZShlKQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3ZShlLCB0LCBuLCByLCBvLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IDIgJiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyAhPSB1ICYmICEoYSAmJiB1ID4gcykpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gaS5nZXQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCAmJiBpLmdldCh0KSkgcmV0dXJuIGwgPT0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAxICYgbyA/IG5ldyBsZSA6IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaS5zZXQoZSwgdCksIGkuc2V0KHQsIGUpOyArK2MgPCBzOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gZVtjXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRbY107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHZhciBtID0gYSA/IHIoaCwgcCwgYywgdCwgZSwgaSkgOiByKHAsIGgsIGMsIGUsIHQsIGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0pIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghayh0LCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZC5oYXModCkgJiYgKHAgPT09IGUgfHwgbihwLCBlLCByLCBvLCBpKSkpIHJldHVybiBkLmFkZCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwICE9PSBoICYmICFuKHAsIGgsIHIsIG8sIGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVsiZGVsZXRlIl0oZSksIGlbImRlbGV0ZSJdKHQpLCBmCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE9lKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCByLCBvID0gZS5fX2RhdGFfXzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoInN0cmluZyIgPT0gKHIgPSB0eXBlb2YobiA9IHQpKSB8fCAibnVtYmVyIiA9PSByIHx8ICJzeW1ib2wiID09IHIgfHwgImJvb2xlYW4iID09IHIgPyAiX19wcm90b19fIiAhPT0gbiA6IG51bGwgPT09IG4pID8gb1sic3RyaW5nIiA9PSB0eXBlb2YgdCA/ICJzdHJpbmciIDogImhhc2giXSA6IG8ubWFwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9lKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyB2b2lkIDAgOiBlW3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISghcWUoZSkgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFJICYmIEkgaW4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkpICYmIChJZShlKSB8fCBDKGUpID8gViA6IGQpLnRlc3QoQWUoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KG4pID8gbiA6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGLmNhbGwoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGtlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhISh0ID0gbnVsbCA9PSB0ID8gOTAwNzE5OTI1NDc0MDk5MSA6IHQpICYmICgibnVtYmVyIiA9PSB0eXBlb2YgZSB8fCBwLnRlc3QoZSkpICYmIGUgPiAtMSAmJiBlICUgMSA9PSAwICYmIGUgPCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEVlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNZShlKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0eXBlb2YgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKCJudW1iZXIiICE9IG4gJiYgInN5bWJvbCIgIT0gbiAmJiAiYm9vbGVhbiIgIT0gbiAmJiBudWxsICE9IGUgJiYgIVZlKGUpKSB8fCB1LnRlc3QoZSkgfHwgIXMudGVzdChlKSB8fCBudWxsICE9IHQgJiYgZSBpbiBPYmplY3QodCkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQ2UoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT0gZSAmJiAhcWUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gU2UoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBuICYmIG5bZV0gPT09IHQgJiYgKHZvaWQgMCAhPT0gdCB8fCBlIGluIE9iamVjdChuKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfShLICYmICJbb2JqZWN0IERhdGFWaWV3XSIgIT0geGUobmV3IEsobmV3IEFycmF5QnVmZmVyKDEpKSkgfHwgWSAmJiB4ZShuZXcgWSkgIT0gbyB8fCBHICYmICJbb2JqZWN0IFByb21pc2VdIiAhPSB4ZShHLnJlc29sdmUoKSkgfHwgJCAmJiB4ZShuZXcgJCkgIT0gYSB8fCBRICYmICJbb2JqZWN0IFdlYWtNYXBdIiAhPSB4ZShuZXcgUSkpICYmICh4ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gRi5jYWxsKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0ID09IGkgPyBlLmNvbnN0cnVjdG9yIDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuID8gQWUobikgOiB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgc3dpdGNoIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBYOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIltvYmplY3QgRGF0YVZpZXddIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEo6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZWU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiW29iamVjdCBQcm9taXNlXSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBuZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJbb2JqZWN0IFdlYWtNYXBdIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqZSA9IERlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBudWxsID09ICh0ID0gZSkgPyAiIiA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWZShlKSkgcmV0dXJuIGllID8gaWUuY2FsbChlKSA6ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZSArICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiMCIgPT0gdCAmJiAxIC8gZSA9PSAtMSAvIDAgPyAiLTAiIDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbC50ZXN0KGUpICYmIG4ucHVzaCgiIiksIGUucmVwbGFjZShjLCAoZnVuY3Rpb24oZSwgdCwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucHVzaChyID8gby5yZXBsYWNlKGYsICIkMSIpIDogdCB8fCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFBlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSB8fCBWZShlKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgKyAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiMCIgPT0gdCAmJiAxIC8gZSA9PSAtMSAvIDAgPyAiLTAiIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBBZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFIuY2FsbChlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKyAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gRGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIGUgfHwgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdCA/IHQuYXBwbHkodGhpcywgcikgOiByWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5jYWNoZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5oYXMobykpIHJldHVybiBpLmdldChvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuYXBwbHkodGhpcywgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uY2FjaGUgPSBpLnNldChvLCBhKSwgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNhY2hlID0gbmV3KERlLkNhY2hlIHx8IHVlKSwgbgogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBUZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdCB8fCBlICE9IGUgJiYgdCAhPSB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE5lKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZlKGUpICYmIExlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpICYmIHEuY2FsbChlLCAiY2FsbGVlIikgJiYgKCFILmNhbGwoZSwgImNhbGxlZSIpIHx8IEYuY2FsbChlKSA9PSByKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIERlLkNhY2hlID0gdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBNZSA9IEFycmF5LmlzQXJyYXk7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBMZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlICYmIFJlKGUubGVuZ3RoKSAmJiAhSWUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gSWUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBxZShlKSA/IEYuY2FsbChlKSA6ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJbb2JqZWN0IEZ1bmN0aW9uXSIgPT0gdCB8fCAiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iID09IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gUmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJudW1iZXIiID09IHR5cGVvZiBlICYmIGUgPiAtMSAmJiBlICUgMSA9PSAwICYmIGUgPD0gOTAwNzE5OTI1NDc0MDk5MQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBxZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHR5cGVvZiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZSAmJiAoIm9iamVjdCIgPT0gdCB8fCAiZnVuY3Rpb24iID09IHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEZlKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gVmUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzeW1ib2wiID09IHR5cGVvZiBlIHx8IEZlKGUpICYmICJbb2JqZWN0IFN5bWJvbF0iID09IEYuY2FsbChlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZSA9IF8gPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0oXykgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmUoZSkgJiYgUmUoZS5sZW5ndGgpICYmICEhaFtGLmNhbGwoZSldCiAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBVZShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTGUoZSkgPyBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBNZShlKSB8fCBOZShlKSA/IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAtMSwgciA9IEFycmF5KGUpOyArK24gPCBlOykgcltuXSA9IHQobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUubGVuZ3RoLCBTdHJpbmcpIDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICEhcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGUpICF0ICYmICFxLmNhbGwoZSwgaSkgfHwgbyAmJiAoImxlbmd0aCIgPT0gaSB8fCBrZShpLCByKSkgfHwgbi5wdXNoKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpIDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID0gKHQgPSBlKSAmJiB0LmNvbnN0cnVjdG9yLCB0ICE9PSAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiAmJiBuLnByb3RvdHlwZSB8fCBNKSkgcmV0dXJuIFcoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIHIgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvIGluIE9iamVjdChlKSkgcS5jYWxsKGUsIG8pICYmICJjb25zdHJ1Y3RvciIgIT0gbyAmJiByLnB1c2gobyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gSGUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBuLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE1lKGUpID8geCA6IEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGFyZ3VtZW50cy5sZW5ndGggPCAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIoZSwgdmUodCksIG4sIG8sIHBlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkuY2FsbCh0aGlzLCBuKDMpLCBuKDcpKGUpKQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUud2VicGFja1BvbHlmaWxsIHx8IChlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkge30sIGUucGF0aHMgPSBbXSwgZS5jaGlsZHJlbiB8fCAoZS5jaGlsZHJlbiA9IFtdKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJsb2FkZWQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUubAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJpZCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLndlYnBhY2tQb2x5ZmlsbCA9IDEpLCBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIFN0cmluZy5wcm90b3R5cGUucGFkRW5kIHx8IChTdHJpbmcucHJvdG90eXBlLnBhZEVuZCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPj49IDAsIHQgPSBTdHJpbmcodm9pZCAwICE9PSB0ID8gdCA6ICIgIiksIHRoaXMubGVuZ3RoID4gZSA/IFN0cmluZyh0aGlzKSA6ICgoZSAtPSB0aGlzLmxlbmd0aCkgPiB0Lmxlbmd0aCAmJiAodCArPSB0LnJlcGVhdChlIC8gdC5sZW5ndGgpKSwgU3RyaW5nKHRoaXMpICsgdC5zbGljZSgwLCBlKSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBlW3RdID0gbiwgZQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpIHx8ICJbb2JqZWN0IEFyZ3VtZW50c10iID09PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpIHJldHVybiBBcnJheS5mcm9tKGUpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSBuZXcgQXJyYXkoZS5sZW5ndGgpOyB0IDwgZS5sZW5ndGg7IHQrKykgblt0XSA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfShlKSB8fCBvKGUpIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKQogICAgICAgICAgICAgICAgICAgICAgICB9KCkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGMgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgInN5bWJvbCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmIGUuY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBlICE9PSBTeW1ib2wucHJvdG90eXBlID8gInN5bWJvbCIgOiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgICAgICB9KShlKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZiA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAic3ltYm9sIiA9PT0gYyhTeW1ib2wuaXRlcmF0b3IpID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiBlLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgZSAhPT0gU3ltYm9sLnByb3RvdHlwZSA/ICJzeW1ib2wiIDogYyhlKQogICAgICAgICAgICAgICAgICAgICAgICB9KShlKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBwKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKQogICAgICAgICAgICAgICAgICAgICAgICB9KShlKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoaCA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5fX3Byb3RvX18gPSB0LCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4ucih0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IG4oMCksCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBuLm4obSksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBuKDUpLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gbi5uKGcpLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gbig0KSwKICAgICAgICAgICAgICAgICAgICAgICAgdyA9IG4ubihiKSwKICAgICAgICAgICAgICAgICAgICAgICAgTyA9IG4oNiksCiAgICAgICAgICAgICAgICAgICAgICAgIF8gPSBuLm4oTyksCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBuKDIpLAogICAgICAgICAgICAgICAgICAgICAgICBrID0gbi5uKHgpLAogICAgICAgICAgICAgICAgICAgICAgICBFID0gbigxKSwKICAgICAgICAgICAgICAgICAgICAgICAgQyA9IG4ubihFKTsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gUyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKGUpIHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhLCBzID0gZVtTeW1ib2wuaXRlcmF0b3JdKCk7ICEociA9IChhID0gcy5uZXh0KCkpLmRvbmUpICYmIChuLnB1c2goYS52YWx1ZSksICF0IHx8IG4ubGVuZ3RoICE9PSB0KTsgciA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGkgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgfHwgbnVsbCA9PSBzWyJyZXR1cm4iXSB8fCBzWyJyZXR1cm4iXSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQpIHx8IHMoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBuKDgpOwogICAgICAgICAgICAgICAgICAgIHZhciBqID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJBZmdoYW5pc3RhbiIsIFsiYXNpYSJdLCAiYWYiLCAiOTMiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQWxiYW5pYSIsIFsiZXVyb3BlIl0sICJhbCIsICIzNTUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQWxnZXJpYSIsIFsiYWZyaWNhIiwgIm5vcnRoLWFmcmljYSJdLCAiZHoiLCAiMjEzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkFuZG9ycmEiLCBbImV1cm9wZSJdLCAiYWQiLCAiMzc2Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkFuZ29sYSIsIFsiYWZyaWNhIl0sICJhbyIsICIyNDQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQW50aWd1YSBhbmQgQmFyYnVkYSIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgImFnIiwgIjEyNjgiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQXJnZW50aW5hIiwgWyJhbWVyaWNhIiwgInNvdXRoLWFtZXJpY2EiXSwgImFyIiwgIjU0IiwgIiguLikgLi4uLi4uLi4iLCAwLCBbIjExIiwgIjIyMSIsICIyMjMiLCAiMjYxIiwgIjI2NCIsICIyNjUyIiwgIjI4MCIsICIyOTA1IiwgIjI5MSIsICIyOTIwIiwgIjI5NjYiLCAiMjk5IiwgIjM0MSIsICIzNDIiLCAiMzQzIiwgIjM1MSIsICIzNzYiLCAiMzc5IiwgIjM4MSIsICIzODMzIiwgIjM4NSIsICIzODciLCAiMzg4Il1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJBcm1lbmlhIiwgWyJhc2lhIiwgImV4LXVzc3IiXSwgImFtIiwgIjM3NCIsICIuLiAuLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQXJ1YmEiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJhdyIsICIyOTciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQXVzdHJhbGlhIiwgWyJvY2VhbmlhIl0sICJhdSIsICI2MSIsICIoLi4pIC4uLi4gLi4uLiIsIDAsIFsiMiIsICIzIiwgIjQiLCAiNyIsICI4IiwgIjAyIiwgIjAzIiwgIjA0IiwgIjA3IiwgIjA4Il1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJBdXN0cmlhIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iXSwgImF0IiwgIjQzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkF6ZXJiYWlqYW4iLCBbImFzaWEiLCAiZXgtdXNzciJdLCAiYXoiLCAiOTk0IiwgIiguLikgLi4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJhaGFtYXMiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJicyIsICIxMjQyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJhaHJhaW4iLCBbIm1pZGRsZS1lYXN0Il0sICJiaCIsICI5NzMiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQmFuZ2xhZGVzaCIsIFsiYXNpYSJdLCAiYmQiLCAiODgwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJhcmJhZG9zIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiYmIiLCAiMTI0NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCZWxhcnVzIiwgWyJldXJvcGUiLCAiZXgtdXNzciJdLCAiYnkiLCAiMzc1IiwgIiguLikgLi4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJlbGdpdW0iLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAiYmUiLCAiMzIiLCAiLi4uIC4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJlbGl6ZSIsIFsiYW1lcmljYSIsICJjZW50cmFsLWFtZXJpY2EiXSwgImJ6IiwgIjUwMSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCZW5pbiIsIFsiYWZyaWNhIl0sICJiaiIsICIyMjkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQmh1dGFuIiwgWyJhc2lhIl0sICJidCIsICI5NzUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQm9saXZpYSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJibyIsICI1OTEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYSIsIFsiZXVyb3BlIiwgImV4LXl1Z29zIl0sICJiYSIsICIzODciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQm90c3dhbmEiLCBbImFmcmljYSJdLCAiYnciLCAiMjY3Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkJyYXppbCIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJiciIsICI1NSIsICIoLi4pIC4uLi4uLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnkiLCBbImFzaWEiXSwgImlvIiwgIjI0NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCcnVuZWkiLCBbImFzaWEiXSwgImJuIiwgIjY3MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCdWxnYXJpYSIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJiZyIsICIzNTkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQnVya2luYSBGYXNvIiwgWyJhZnJpY2EiXSwgImJmIiwgIjIyNiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCdXJ1bmRpIiwgWyJhZnJpY2EiXSwgImJpIiwgIjI1NyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDYW1ib2RpYSIsIFsiYXNpYSJdLCAia2giLCAiODU1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNhbWVyb29uIiwgWyJhZnJpY2EiXSwgImNtIiwgIjIzNyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDYW5hZGEiLCBbImFtZXJpY2EiLCAibm9ydGgtYW1lcmljYSJdLCAiY2EiLCAiMSIsICIoLi4uKSAuLi4tLi4uLiIsIDEsIFsiMjA0IiwgIjIyNiIsICIyMzYiLCAiMjQ5IiwgIjI1MCIsICIyODkiLCAiMzA2IiwgIjM0MyIsICIzNjUiLCAiMzg3IiwgIjQwMyIsICI0MTYiLCAiNDE4IiwgIjQzMSIsICI0MzciLCAiNDM4IiwgIjQ1MCIsICI1MDYiLCAiNTE0IiwgIjUxOSIsICI1NDgiLCAiNTc5IiwgIjU4MSIsICI1ODciLCAiNjA0IiwgIjYxMyIsICI2MzkiLCAiNjQ3IiwgIjY3MiIsICI3MDUiLCAiNzA5IiwgIjc0MiIsICI3NzgiLCAiNzgwIiwgIjc4MiIsICI4MDciLCAiODE5IiwgIjgyNSIsICI4NjciLCAiODczIiwgIjkwMiIsICI5MDUiXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNhcGUgVmVyZGUiLCBbImFmcmljYSJdLCAiY3YiLCAiMjM4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNhcmliYmVhbiBOZXRoZXJsYW5kcyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgImJxIiwgIjU5OSIsICIiLCAxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljIiwgWyJhZnJpY2EiXSwgImNmIiwgIjIzNiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDaGFkIiwgWyJhZnJpY2EiXSwgInRkIiwgIjIzNSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDaGlsZSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJjbCIsICI1NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDaGluYSIsIFsiYXNpYSJdLCAiY24iLCAiODYiLCAiLi4tLi4uLi4uLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNvbG9tYmlhIiwgWyJhbWVyaWNhIiwgInNvdXRoLWFtZXJpY2EiXSwgImNvIiwgIjU3IiwgIi4uLiAuLi4gLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDb21vcm9zIiwgWyJhZnJpY2EiXSwgImttIiwgIjI2OSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDb25nbyIsIFsiYWZyaWNhIl0sICJjZCIsICIyNDMiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQ29uZ28iLCBbImFmcmljYSJdLCAiY2ciLCAiMjQyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNvc3RhIFJpY2EiLCBbImFtZXJpY2EiLCAiY2VudHJhbC1hbWVyaWNhIl0sICJjciIsICI1MDYiLCAiLi4uLi0uLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkPDtHRlIGTigJlJdm9pcmUiLCBbImFmcmljYSJdLCAiY2kiLCAiMjI1IiwgIi4uIC4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNyb2F0aWEiLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJleC15dWdvcyJdLCAiaHIiLCAiMzg1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkN1YmEiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJjdSIsICI1MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJDdXJhw6dhbyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgImN3IiwgIjU5OSIsICIiLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQ3lwcnVzIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iXSwgImN5IiwgIjM1NyIsICIuLiAuLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQ3plY2ggUmVwdWJsaWMiLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAiY3oiLCAiNDIwIiwgIi4uLiAuLi4gLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkRlbm1hcmsiLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJiYWx0aWMiXSwgImRrIiwgIjQ1IiwgIi4uIC4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkRqaWJvdXRpIiwgWyJhZnJpY2EiXSwgImRqIiwgIjI1MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJEb21pbmljYSIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgImRtIiwgIjE3NjciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRG9taW5pY2FuIFJlcHVibGljIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiZG8iLCAiMSIsICIiLCAyLCBbIjgwOSIsICI4MjkiLCAiODQ5Il1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJFY3VhZG9yIiwgWyJhbWVyaWNhIiwgInNvdXRoLWFtZXJpY2EiXSwgImVjIiwgIjU5MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJFZ3lwdCIsIFsiYWZyaWNhIiwgIm5vcnRoLWFmcmljYSJdLCAiZWciLCAiMjAiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRWwgU2FsdmFkb3IiLCBbImFtZXJpY2EiLCAiY2VudHJhbC1hbWVyaWNhIl0sICJzdiIsICI1MDMiLCAiLi4uLi0uLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkVxdWF0b3JpYWwgR3VpbmVhIiwgWyJhZnJpY2EiXSwgImdxIiwgIjI0MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJFcml0cmVhIiwgWyJhZnJpY2EiXSwgImVyIiwgIjI5MSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJFc3RvbmlhIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iLCAiZXgtdXNzciIsICJiYWx0aWMiXSwgImVlIiwgIjM3MiIsICIuLi4uIC4uLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJFdGhpb3BpYSIsIFsiYWZyaWNhIl0sICJldCIsICIyNTEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRmlqaSIsIFsib2NlYW5pYSJdLCAiZmoiLCAiNjc5Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkZpbmxhbmQiLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJiYWx0aWMiXSwgImZpIiwgIjM1OCIsICIuLiAuLi4gLi4gLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRnJhbmNlIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iXSwgImZyIiwgIjMzIiwgIi4gLi4gLi4gLi4gLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRnJlbmNoIEd1aWFuYSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJnZiIsICI1OTQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiRnJlbmNoIFBvbHluZXNpYSIsIFsib2NlYW5pYSJdLCAicGYiLCAiNjg5Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkdhYm9uIiwgWyJhZnJpY2EiXSwgImdhIiwgIjI0MSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHYW1iaWEiLCBbImFmcmljYSJdLCAiZ20iLCAiMjIwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkdlb3JnaWEiLCBbImFzaWEiLCAiZXgtdXNzciJdLCAiZ2UiLCAiOTk1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkdlcm1hbnkiLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJiYWx0aWMiXSwgImRlIiwgIjQ5IiwgIi4uLi4gLi4uLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiR2hhbmEiLCBbImFmcmljYSJdLCAiZ2giLCAiMjMzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkdyZWVjZSIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJnciIsICIzMCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHcmVuYWRhIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiZ2QiLCAiMTQ3MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHdWFkZWxvdXBlIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiZ3AiLCAiNTkwIiwgIiIsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHdWFtIiwgWyJvY2VhbmlhIl0sICJndSIsICIxNjcxIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkd1YXRlbWFsYSIsIFsiYW1lcmljYSIsICJjZW50cmFsLWFtZXJpY2EiXSwgImd0IiwgIjUwMiIsICIuLi4uLS4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiR3VpbmVhIiwgWyJhZnJpY2EiXSwgImduIiwgIjIyNCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHdWluZWEtQmlzc2F1IiwgWyJhZnJpY2EiXSwgImd3IiwgIjI0NSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJHdXlhbmEiLCBbImFtZXJpY2EiLCAic291dGgtYW1lcmljYSJdLCAiZ3kiLCAiNTkyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkhhaXRpIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiaHQiLCAiNTA5IiwgIi4uLi4tLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJIb25kdXJhcyIsIFsiYW1lcmljYSIsICJjZW50cmFsLWFtZXJpY2EiXSwgImhuIiwgIjUwNCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJIb25nIEtvbmciLCBbImFzaWEiXSwgImhrIiwgIjg1MiIsICIuLi4uIC4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiSHVuZ2FyeSIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJodSIsICIzNiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJJY2VsYW5kIiwgWyJldXJvcGUiXSwgImlzIiwgIjM1NCIsICIuLi4gLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJJbmRpYSIsIFsiYXNpYSJdLCAiaW4iLCAiOTEiLCAiLi4uLi4tLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiSW5kb25lc2lhIiwgWyJhc2lhIl0sICJpZCIsICI2MiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJJcmFuIiwgWyJtaWRkbGUtZWFzdCJdLCAiaXIiLCAiOTgiLCAiLi4uIC4uLiAuLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIklyYXEiLCBbIm1pZGRsZS1lYXN0Il0sICJpcSIsICI5NjQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiSXJlbGFuZCIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJpZSIsICIzNTMiLCAiLi4gLi4uLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJJc3JhZWwiLCBbIm1pZGRsZS1lYXN0Il0sICJpbCIsICI5NzIiLCAiLi4uIC4uLiAuLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkl0YWx5IiwgWyJldXJvcGUiLCAiZXUtdW5pb24iXSwgIml0IiwgIjM5IiwgIi4uLiAuLi4uLi4uIiwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkphbWFpY2EiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJqbSIsICIxODc2Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkphcGFuIiwgWyJhc2lhIl0sICJqcCIsICI4MSIsICIuLiAuLi4uIC4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiSm9yZGFuIiwgWyJtaWRkbGUtZWFzdCJdLCAiam8iLCAiOTYyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkthemFraHN0YW4iLCBbImFzaWEiLCAiZXgtdXNzciJdLCAia3oiLCAiNyIsICIuLi4gLi4uLS4uLS4uIiwgMSwgWyIzMTAiLCAiMzExIiwgIjMxMiIsICIzMTMiLCAiMzE1IiwgIjMxOCIsICIzMjEiLCAiMzI0IiwgIjMyNSIsICIzMjYiLCAiMzI3IiwgIjMzNiIsICI3MTcyIiwgIjczNjIyIl1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJLZW55YSIsIFsiYWZyaWNhIl0sICJrZSIsICIyNTQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiS2lyaWJhdGkiLCBbIm9jZWFuaWEiXSwgImtpIiwgIjY4NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJLb3Nvdm8iLCBbImV1cm9wZSIsICJleC15dWdvcyJdLCAieGsiLCAiMzgzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkt1d2FpdCIsIFsibWlkZGxlLWVhc3QiXSwgImt3IiwgIjk2NSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJLeXJneXpzdGFuIiwgWyJhc2lhIiwgImV4LXVzc3IiXSwgImtnIiwgIjk5NiIsICIuLi4gLi4uIC4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJMYW9zIiwgWyJhc2lhIl0sICJsYSIsICI4NTYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTGF0dmlhIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iLCAiZXgtdXNzciIsICJiYWx0aWMiXSwgImx2IiwgIjM3MSIsICIuLiAuLi4gLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkxlYmFub24iLCBbIm1pZGRsZS1lYXN0Il0sICJsYiIsICI5NjEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTGVzb3RobyIsIFsiYWZyaWNhIl0sICJscyIsICIyNjYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTGliZXJpYSIsIFsiYWZyaWNhIl0sICJsciIsICIyMzEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTGlieWEiLCBbImFmcmljYSIsICJub3J0aC1hZnJpY2EiXSwgImx5IiwgIjIxOCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJMaWVjaHRlbnN0ZWluIiwgWyJldXJvcGUiXSwgImxpIiwgIjQyMyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJMaXRodWFuaWEiLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJleC11c3NyIiwgImJhbHRpYyJdLCAibHQiLCAiMzcwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkx1eGVtYm91cmciLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAibHUiLCAiMzUyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1hY2F1IiwgWyJhc2lhIl0sICJtbyIsICI4NTMiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTWFjZWRvbmlhIiwgWyJldXJvcGUiLCAiZXgteXVnb3MiXSwgIm1rIiwgIjM4OSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNYWRhZ2FzY2FyIiwgWyJhZnJpY2EiXSwgIm1nIiwgIjI2MSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNYWxhd2kiLCBbImFmcmljYSJdLCAibXciLCAiMjY1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1hbGF5c2lhIiwgWyJhc2lhIl0sICJteSIsICI2MCIsICIuLi0uLi4uLS4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTWFsZGl2ZXMiLCBbImFzaWEiXSwgIm12IiwgIjk2MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNYWxpIiwgWyJhZnJpY2EiXSwgIm1sIiwgIjIyMyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNYWx0YSIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJtdCIsICIzNTYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTWFyc2hhbGwgSXNsYW5kcyIsIFsib2NlYW5pYSJdLCAibWgiLCAiNjkyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1hcnRpbmlxdWUiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJtcSIsICI1OTYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTWF1cml0YW5pYSIsIFsiYWZyaWNhIl0sICJtciIsICIyMjIiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTWF1cml0aXVzIiwgWyJhZnJpY2EiXSwgIm11IiwgIjIzMCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNZXhpY28iLCBbImFtZXJpY2EiLCAiY2VudHJhbC1hbWVyaWNhIl0sICJteCIsICI1MiIsICIuLi4gLi4uIC4uLi4iLCAwLCBbIjU1IiwgIjgxIiwgIjMzIiwgIjY1NiIsICI2NjQiLCAiOTk4IiwgIjc3NCIsICIyMjkiXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1pY3JvbmVzaWEiLCBbIm9jZWFuaWEiXSwgImZtIiwgIjY5MSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNb2xkb3ZhIiwgWyJldXJvcGUiXSwgIm1kIiwgIjM3MyIsICIoLi4pIC4uLS4uLS4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1vbmFjbyIsIFsiZXVyb3BlIl0sICJtYyIsICIzNzciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTW9uZ29saWEiLCBbImFzaWEiXSwgIm1uIiwgIjk3NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNb250ZW5lZ3JvIiwgWyJldXJvcGUiLCAiZXgteXVnb3MiXSwgIm1lIiwgIjM4MiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJNb3JvY2NvIiwgWyJhZnJpY2EiLCAibm9ydGgtYWZyaWNhIl0sICJtYSIsICIyMTIiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTW96YW1iaXF1ZSIsIFsiYWZyaWNhIl0sICJteiIsICIyNTgiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTXlhbm1hciIsIFsiYXNpYSJdLCAibW0iLCAiOTUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTmFtaWJpYSIsIFsiYWZyaWNhIl0sICJuYSIsICIyNjQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTmF1cnUiLCBbImFmcmljYSJdLCAibnIiLCAiNjc0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5lcGFsIiwgWyJhc2lhIl0sICJucCIsICI5NzciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTmV0aGVybGFuZHMiLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAibmwiLCAiMzEiLCAiLi4gLi4uLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTmV3IENhbGVkb25pYSIsIFsib2NlYW5pYSJdLCAibmMiLCAiNjg3Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5ldyBaZWFsYW5kIiwgWyJvY2VhbmlhIl0sICJueiIsICI2NCIsICIuLi4tLi4uLS4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiTmljYXJhZ3VhIiwgWyJhbWVyaWNhIiwgImNlbnRyYWwtYW1lcmljYSJdLCAibmkiLCAiNTA1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5pZ2VyIiwgWyJhZnJpY2EiXSwgIm5lIiwgIjIyNyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJOaWdlcmlhIiwgWyJhZnJpY2EiXSwgIm5nIiwgIjIzNCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJOb3J0aCBLb3JlYSIsIFsiYXNpYSJdLCAia3AiLCAiODUwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5vcndheSIsIFsiZXVyb3BlIiwgImJhbHRpYyJdLCAibm8iLCAiNDciLCAiLi4uIC4uIC4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJPbWFuIiwgWyJtaWRkbGUtZWFzdCJdLCAib20iLCAiOTY4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlBha2lzdGFuIiwgWyJhc2lhIl0sICJwayIsICI5MiIsICIuLi4tLi4uLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJQYWxhdSIsIFsib2NlYW5pYSJdLCAicHciLCAiNjgwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlBhbGVzdGluZSIsIFsibWlkZGxlLWVhc3QiXSwgInBzIiwgIjk3MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJQYW5hbWEiLCBbImFtZXJpY2EiLCAiY2VudHJhbC1hbWVyaWNhIl0sICJwYSIsICI1MDciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUGFwdWEgTmV3IEd1aW5lYSIsIFsib2NlYW5pYSJdLCAicGciLCAiNjc1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlBhcmFndWF5IiwgWyJhbWVyaWNhIiwgInNvdXRoLWFtZXJpY2EiXSwgInB5IiwgIjU5NSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJQZXJ1IiwgWyJhbWVyaWNhIiwgInNvdXRoLWFtZXJpY2EiXSwgInBlIiwgIjUxIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlBoaWxpcHBpbmVzIiwgWyJhc2lhIl0sICJwaCIsICI2MyIsICIuLi4uIC4uLi4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUG9sYW5kIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iLCAiYmFsdGljIl0sICJwbCIsICI0OCIsICIuLi4tLi4uLS4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJQb3J0dWdhbCIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJwdCIsICIzNTEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUHVlcnRvIFJpY28iLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJwciIsICIxIiwgIiIsIDMsIFsiNzg3IiwgIjkzOSJdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUWF0YXIiLCBbIm1pZGRsZS1lYXN0Il0sICJxYSIsICI5NzQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUsOpdW5pb24iLCBbImFmcmljYSJdLCAicmUiLCAiMjYyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlJvbWFuaWEiLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAicm8iLCAiNDAiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUnVzc2lhIiwgWyJldXJvcGUiLCAiYXNpYSIsICJleC11c3NyIiwgImJhbHRpYyJdLCAicnUiLCAiNyIsICIoLi4uKSAuLi4tLi4tLi4iLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiUndhbmRhIiwgWyJhZnJpY2EiXSwgInJ3IiwgIjI1MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTYWludCBLaXR0cyBhbmQgTmV2aXMiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJrbiIsICIxODY5Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNhaW50IEx1Y2lhIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAibGMiLCAiMTc1OCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgInZjIiwgIjE3ODQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU2Ftb2EiLCBbIm9jZWFuaWEiXSwgIndzIiwgIjY4NSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTYW4gTWFyaW5vIiwgWyJldXJvcGUiXSwgInNtIiwgIjM3OCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTw6NvIFRvbcOpIGFuZCBQcsOtbmNpcGUiLCBbImFmcmljYSJdLCAic3QiLCAiMjM5Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNhdWRpIEFyYWJpYSIsIFsibWlkZGxlLWVhc3QiXSwgInNhIiwgIjk2NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTZW5lZ2FsIiwgWyJhZnJpY2EiXSwgInNuIiwgIjIyMSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTZXJiaWEiLCBbImV1cm9wZSIsICJleC15dWdvcyJdLCAicnMiLCAiMzgxIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNleWNoZWxsZXMiLCBbImFmcmljYSJdLCAic2MiLCAiMjQ4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNpZXJyYSBMZW9uZSIsIFsiYWZyaWNhIl0sICJzbCIsICIyMzIiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU2luZ2Fwb3JlIiwgWyJhc2lhIl0sICJzZyIsICI2NSIsICIuLi4uLS4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU2xvdmFraWEiLCBbImV1cm9wZSIsICJldS11bmlvbiJdLCAic2siLCAiNDIxIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNsb3ZlbmlhIiwgWyJldXJvcGUiLCAiZXUtdW5pb24iLCAiZXgteXVnb3MiXSwgInNpIiwgIjM4NiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTb2xvbW9uIElzbGFuZHMiLCBbIm9jZWFuaWEiXSwgInNiIiwgIjY3NyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTb21hbGlhIiwgWyJhZnJpY2EiXSwgInNvIiwgIjI1MiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTb3V0aCBBZnJpY2EiLCBbImFmcmljYSJdLCAiemEiLCAiMjciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU291dGggS29yZWEiLCBbImFzaWEiXSwgImtyIiwgIjgyIiwgIi4uLiAuLi4uIC4uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU291dGggU3VkYW4iLCBbImFmcmljYSIsICJub3J0aC1hZnJpY2EiXSwgInNzIiwgIjIxMSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTcGFpbiIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJlcyIsICIzNCIsICIuLi4gLi4uIC4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTcmkgTGFua2EiLCBbImFzaWEiXSwgImxrIiwgIjk0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlN1ZGFuIiwgWyJhZnJpY2EiXSwgInNkIiwgIjI0OSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTdXJpbmFtZSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJzciIsICI1OTciXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU3dhemlsYW5kIiwgWyJhZnJpY2EiXSwgInN6IiwgIjI2OCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTd2VkZW4iLCBbImV1cm9wZSIsICJldS11bmlvbiIsICJiYWx0aWMiXSwgInNlIiwgIjQ2IiwgIiguLi4pIC4uLi0uLi4iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU3dpdHplcmxhbmQiLCBbImV1cm9wZSJdLCAiY2giLCAiNDEiLCAiLi4gLi4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlN5cmlhIiwgWyJtaWRkbGUtZWFzdCJdLCAic3kiLCAiOTYzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlRhaXdhbiIsIFsiYXNpYSJdLCAidHciLCAiODg2Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlRhamlraXN0YW4iLCBbImFzaWEiLCAiZXgtdXNzciJdLCAidGoiLCAiOTkyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlRhbnphbmlhIiwgWyJhZnJpY2EiXSwgInR6IiwgIjI1NSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJUaGFpbGFuZCIsIFsiYXNpYSJdLCAidGgiLCAiNjYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVGltb3ItTGVzdGUiLCBbImFzaWEiXSwgInRsIiwgIjY3MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJUb2dvIiwgWyJhZnJpY2EiXSwgInRnIiwgIjIyOCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJUb25nYSIsIFsib2NlYW5pYSJdLCAidG8iLCAiNjc2Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlRyaW5pZGFkIGFuZCBUb2JhZ28iLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJ0dCIsICIxODY4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlR1bmlzaWEiLCBbImFmcmljYSIsICJub3J0aC1hZnJpY2EiXSwgInRuIiwgIjIxNiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJUdXJrZXkiLCBbImV1cm9wZSJdLCAidHIiLCAiOTAiLCAiLi4uIC4uLiAuLiAuLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJUdXJrbWVuaXN0YW4iLCBbImFzaWEiLCAiZXgtdXNzciJdLCAidG0iLCAiOTkzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlR1dmFsdSIsIFsiYXNpYSJdLCAidHYiLCAiNjg4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlVnYW5kYSIsIFsiYWZyaWNhIl0sICJ1ZyIsICIyNTYiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVWtyYWluZSIsIFsiZXVyb3BlIiwgImV4LXVzc3IiXSwgInVhIiwgIjM4MCIsICIoLi4pIC4uLiAuLiAuLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJVbml0ZWQgQXJhYiBFbWlyYXRlcyIsIFsibWlkZGxlLWVhc3QiXSwgImFlIiwgIjk3MSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJVbml0ZWQgS2luZ2RvbSIsIFsiZXVyb3BlIiwgImV1LXVuaW9uIl0sICJnYiIsICI0NCIsICIuLi4uIC4uLi4uLiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJVbml0ZWQgU3RhdGVzIiwgWyJhbWVyaWNhIiwgIm5vcnRoLWFtZXJpY2EiXSwgInVzIiwgIjEiLCAiKC4uLikgLi4uLS4uLi4iLCAwLCBbIjkwNyIsICIyMDUiLCAiMjUxIiwgIjI1NiIsICIzMzQiLCAiNDc5IiwgIjUwMSIsICI4NzAiLCAiNDgwIiwgIjUyMCIsICI2MDIiLCAiNjIzIiwgIjkyOCIsICIyMDkiLCAiMjEzIiwgIjMxMCIsICIzMjMiLCAiNDA4IiwgIjQxNSIsICI1MTAiLCAiNTMwIiwgIjU1OSIsICI1NjIiLCAiNjE5IiwgIjYyNiIsICI2NTAiLCAiNjYxIiwgIjcwNyIsICI3MTQiLCAiNzYwIiwgIjgwNSIsICI4MTgiLCAiODMxIiwgIjg1OCIsICI5MDkiLCAiOTE2IiwgIjkyNSIsICI5NDkiLCAiOTUxIiwgIjMwMyIsICI3MTkiLCAiOTcwIiwgIjIwMyIsICI4NjAiLCAiMjAyIiwgIjMwMiIsICIyMzkiLCAiMzA1IiwgIjMyMSIsICIzNTIiLCAiMzg2IiwgIjQwNyIsICI1NjEiLCAiNzI3IiwgIjc3MiIsICI4MTMiLCAiODUwIiwgIjg2MyIsICI5MDQiLCAiOTQxIiwgIjk1NCIsICIyMjkiLCAiNDA0IiwgIjQ3OCIsICI3MDYiLCAiNzcwIiwgIjkxMiIsICI4MDgiLCAiMzE5IiwgIjUxNSIsICI1NjMiLCAiNjQxIiwgIjcxMiIsICIyMDgiLCAiMjE3IiwgIjMwOSIsICIzMTIiLCAiNjE4IiwgIjYzMCIsICI3MDgiLCAiNzczIiwgIjgxNSIsICI4NDciLCAiMjE5IiwgIjI2MCIsICIzMTciLCAiNTc0IiwgIjc2NSIsICI4MTIiLCAiMzE2IiwgIjYyMCIsICI3ODUiLCAiOTEzIiwgIjI3MCIsICI1MDIiLCAiNjA2IiwgIjg1OSIsICIyMjUiLCAiMzE4IiwgIjMzNyIsICI1MDQiLCAiOTg1IiwgIjQxMyIsICI1MDgiLCAiNjE3IiwgIjc4MSIsICI5NzgiLCAiMzAxIiwgIjQxMCIsICIyMDciLCAiMjMxIiwgIjI0OCIsICIyNjkiLCAiMzEzIiwgIjUxNyIsICI1ODYiLCAiNjE2IiwgIjczNCIsICI4MTAiLCAiOTA2IiwgIjk4OSIsICIyMTgiLCAiMzIwIiwgIjUwNyIsICI2MTIiLCAiNjUxIiwgIjc2MyIsICI5NTIiLCAiMzE0IiwgIjQxNyIsICI1NzMiLCAiNjM2IiwgIjY2MCIsICI4MTYiLCAiMjI4IiwgIjYwMSIsICI2NjIiLCAiNDA2IiwgIjI1MiIsICIzMzYiLCAiNzA0IiwgIjgyOCIsICI5MTAiLCAiOTE5IiwgIjcwMSIsICIzMDgiLCAiNDAyIiwgIjYwMyIsICIyMDEiLCAiNjA5IiwgIjczMiIsICI4NTYiLCAiOTA4IiwgIjk3MyIsICI1MDUiLCAiNTc1IiwgIjcwMiIsICI3NzUiLCAiMjEyIiwgIjMxNSIsICI1MTYiLCAiNTE4IiwgIjU4NSIsICI2MDciLCAiNjMxIiwgIjcxNiIsICI3MTgiLCAiODQ1IiwgIjkxNCIsICIyMTYiLCAiMzMwIiwgIjQxOSIsICI0NDAiLCAiNTEzIiwgIjYxNCIsICI3NDAiLCAiOTM3IiwgIjQwNSIsICI1ODAiLCAiOTE4IiwgIjUwMyIsICI1NDEiLCAiMjE1IiwgIjQxMiIsICI1NzAiLCAiNjEwIiwgIjcxNyIsICI3MjQiLCAiODE0IiwgIjQwMSIsICI4MDMiLCAiODQzIiwgIjg2NCIsICI2MDUiLCAiNDIzIiwgIjYxNSIsICI3MzEiLCAiODY1IiwgIjkwMSIsICI5MzEiLCAiMjEwIiwgIjIxNCIsICIyNTQiLCAiMjgxIiwgIjMyNSIsICIzNjEiLCAiNDA5IiwgIjQzMiIsICI1MTIiLCAiNzEzIiwgIjgwNiIsICI4MTciLCAiODMwIiwgIjkwMyIsICI5MTUiLCAiOTM2IiwgIjk0MCIsICI5NTYiLCAiOTcyIiwgIjk3OSIsICI0MzUiLCAiODAxIiwgIjI3NiIsICI0MzQiLCAiNTQwIiwgIjcwMyIsICI3NTciLCAiODA0IiwgIjgwMiIsICIyMDYiLCAiMjUzIiwgIjM2MCIsICI0MjUiLCAiNTA5IiwgIjI2MiIsICI0MTQiLCAiNjA4IiwgIjcxNSIsICI5MjAiLCAiMzA0IiwgIjMwNyJdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVXJ1Z3VheSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJ1eSIsICI1OTgiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVXpiZWtpc3RhbiIsIFsiYXNpYSIsICJleC11c3NyIl0sICJ1eiIsICI5OTgiLCAiLi4gLi4uIC4uIC4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlZhbnVhdHUiLCBbIm9jZWFuaWEiXSwgInZ1IiwgIjY3OCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJWYXRpY2FuIENpdHkiLCBbImV1cm9wZSJdLCAidmEiLCAiMzkiLCAiLi4gLi4uLiAuLi4uIiwgMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlZlbmV6dWVsYSIsIFsiYW1lcmljYSIsICJzb3V0aC1hbWVyaWNhIl0sICJ2ZSIsICI1OCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJWaWV0bmFtIiwgWyJhc2lhIl0sICJ2biIsICI4NCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJZZW1lbiIsIFsibWlkZGxlLWVhc3QiXSwgInllIiwgIjk2NyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJaYW1iaWEiLCBbImFmcmljYSJdLCAiem0iLCAiMjYwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlppbWJhYndlIiwgWyJhZnJpY2EiXSwgInp3IiwgIjI2MyJdCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFAgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkFtZXJpY2FuIFNhbW9hIiwgWyJvY2VhbmlhIl0sICJhcyIsICIxNjg0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkFuZ3VpbGxhIiwgWyJhbWVyaWNhIiwgImNhcnJpYmVhbiJdLCAiYWkiLCAiMTI2NCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJCZXJtdWRhIiwgWyJhbWVyaWNhIiwgIm5vcnRoLWFtZXJpY2EiXSwgImJtIiwgIjE0NDEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQnJpdGlzaCBWaXJnaW4gSXNsYW5kcyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgInZnIiwgIjEyODQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiQ2F5bWFuIElzbGFuZHMiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJreSIsICIxMzQ1Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkNvb2sgSXNsYW5kcyIsIFsib2NlYW5pYSJdLCAiY2siLCAiNjgyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkZhbGtsYW5kIElzbGFuZHMiLCBbImFtZXJpY2EiLCAic291dGgtYW1lcmljYSJdLCAiZmsiLCAiNTAwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkZhcm9lIElzbGFuZHMiLCBbImV1cm9wZSJdLCAiZm8iLCAiMjk4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkdpYnJhbHRhciIsIFsiZXVyb3BlIl0sICJnaSIsICIzNTAiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiR3JlZW5sYW5kIiwgWyJhbWVyaWNhIl0sICJnbCIsICIyOTkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiSmVyc2V5IiwgWyJldXJvcGUiLCAiZXUtdW5pb24iXSwgImplIiwgIjQ0IiwgIi4uLi4gLi4uLi4uIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk1vbnRzZXJyYXQiLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJtcyIsICIxNjY0Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5pdWUiLCBbImFzaWEiXSwgIm51IiwgIjY4MyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJOb3Jmb2xrIElzbGFuZCIsIFsib2NlYW5pYSJdLCAibmYiLCAiNjcyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIk5vcnRoZXJuIE1hcmlhbmEgSXNsYW5kcyIsIFsib2NlYW5pYSJdLCAibXAiLCAiMTY3MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTYWludCBCYXJ0aMOpbGVteSIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgImJsIiwgIjU5MCIsICIiLCAxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiU2FpbnQgSGVsZW5hIiwgWyJhZnJpY2EiXSwgInNoIiwgIjI5MCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJTYWludCBNYXJ0aW4iLCBbImFtZXJpY2EiLCAiY2FycmliZWFuIl0sICJtZiIsICI1OTAiLCAiIiwgMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNhaW50IFBpZXJyZSBhbmQgTWlxdWVsb24iLCBbImFtZXJpY2EiLCAibm9ydGgtYW1lcmljYSJdLCAicG0iLCAiNTA4Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlNpbnQgTWFhcnRlbiIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgInN4IiwgIjE3MjEiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVG9rZWxhdSIsIFsib2NlYW5pYSJdLCAidGsiLCAiNjkwIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlR1cmtzIGFuZCBDYWljb3MgSXNsYW5kcyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgInRjIiwgIjE2NDkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiVS5TLiBWaXJnaW4gSXNsYW5kcyIsIFsiYW1lcmljYSIsICJjYXJyaWJlYW4iXSwgInZpIiwgIjEzNDAiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiV2FsbGlzIGFuZCBGdXR1bmEiLCBbIm9jZWFuaWEiXSwgIndmIiwgIjY4MSJdCiAgICAgICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEEoZSwgdCwgbiwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIW4gfHwgbyA/IGUgKyAiIi5wYWRFbmQodC5sZW5ndGgsICIuIikgKyAiICIgKyByIDogZSArICIiLnBhZEVuZCh0Lmxlbmd0aCwgIi4iKSArICIgIiArIG4KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEQoZSwgdCwgbiwgbywgYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcywgdSwgbCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSA9ICEwID09PSB0LCBbKHMgPSBbXSkuY29uY2F0LmFwcGx5KHMsIGkoZS5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb25zOiBlWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc28yOiBlWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogZVszXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbENvZGU6IGVbM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogQShuLCBlWzNdLCBlWzRdLCBvLCBhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IGVbNV0gfHwgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbNl0gJiYgZVs2XS5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDE7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbnVsbCAhPSBhcmd1bWVudHNbdF0gPyBhcmd1bWVudHNbdF0gOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gT2JqZWN0LmtleXMobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmIChvID0gby5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLCBlKS5lbnVtZXJhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpKSwgby5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcihlLCB0LCBuW3RdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHt9LCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmRpYWxDb2RlID0gZVszXSArIHQsIG4uaXNBcmVhQ29kZSA9ICEwLCBuLmFyZWFDb2RlTGVuZ3RoID0gdC5sZW5ndGgsIHMucHVzaChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBzLmxlbmd0aCA+IDAgPyAoaS5tYWluQ29kZSA9ICEwLCB1IHx8ICJBcnJheSIgPT09IHQuY29uc3RydWN0b3IubmFtZSAmJiB0LmluY2x1ZGVzKGVbMl0pID8gKGkuaGFzQXJlYUNvZGVzID0gITAsIFtpXS5jb25jYXQocykpIDogKGwgPSBsLmNvbmNhdChzKSwgW2ldKSkgOiBbaV0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSksIGxdCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBUKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gT2JqZWN0LmtleXMobiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IE9iamVjdC52YWx1ZXMobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmZvckVhY2goKGZ1bmN0aW9uKG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgcmV0dXJuIGUucHVzaChbbiwgaVtvXV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbMF0gPT09IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0xID09PSBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gW25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzW3RdID0gaVtvXSwgZS5wdXNoKHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGVbYV1bdF0gPSBpW29dCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gTihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSB0Lmxlbmd0aCA/IGUgOiBlLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmZpbmRJbmRleCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0WzBdID09PSBlWzJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgPT09IG4pIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W25dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJbMV0gJiYgKGVbNF0gPSByWzFdKSwgclszXSAmJiAoZVs1XSA9IHJbM10pLCByWzJdICYmIChlWzZdID0gclsyXSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBNID0gZnVuY3Rpb24gSShlLCB0LCBuLCByLCBvLCBhLCBzLCBsLCBjLCBmLCBkLCBwLCBoLCBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KHRoaXMsIEkpLCB0aGlzLmZpbHRlclJlZ2lvbnMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5yZWdpb25zLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5yZWdpb25zLnNvbWUoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9PT0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5zb21lKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuc29ydFRlcnJpdG9yaWVzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10uY29uY2F0KGkoZSksIGkodCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNvcnQoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUubmFtZSA8IHQubmFtZSA/IC0xIDogZS5uYW1lID4gdC5uYW1lID8gMSA6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZ2V0RmlsdGVyZWRDb3VudHJ5TGlzdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gZS5sZW5ndGggPyB0IDogbiA/IGUubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5maW5kKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pc28yID09PSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4pIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IHQuZmlsdGVyKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSB0LmlzbzIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmxvY2FsaXplQ291bnRyaWVzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAwOyByIDwgZS5sZW5ndGg7IHIrKykgdm9pZCAwICE9PSB0W2Vbcl0uaXNvMl0gPyBlW3JdLmxvY2FsTmFtZSA9IHRbZVtyXS5pc28yXSA6IHZvaWQgMCAhPT0gdFtlW3JdLm5hbWVdICYmIChlW3JdLmxvY2FsTmFtZSA9IHRbZVtyXS5uYW1lXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gfHwgZS5zb3J0KChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmxvY2FsTmFtZSA8IHQubG9jYWxOYW1lID8gLTEgOiBlLmxvY2FsTmFtZSA+IHQubG9jYWxOYW1lID8gMSA6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZ2V0Q3VzdG9tQXJlYXMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IFtdLCByID0gMDsgciA8IHQubGVuZ3RoOyByKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5kaWFsQ29kZSArPSB0W3JdLCBuLnB1c2gobykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZXhjbHVkZUNvdW50cmllcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdC5sZW5ndGggPyBlIDogZS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0LmluY2x1ZGVzKGUuaXNvMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFQociwgMSwgZSwgITApLCBUKHIsIDMsIHQpLCBUKHIsIDIsIG4pLCByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShsLCBjLCBmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gTihKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGopKSwgeSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IE4oSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShQKSksIHkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBTKEQoZywgZSwgcCwgaCwgbSksIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBiWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSBiWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgXyA9IFMoRCh2LCBlLCBwLCBoLCBtKSwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBfWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9bMV0sIHcgPSB0aGlzLnNvcnRUZXJyaXRvcmllcyh4LCB3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAmJiAodyA9IHRoaXMuZmlsdGVyUmVnaW9ucyhuLCB3KSksIHRoaXMub25seUNvdW50cmllcyA9IHRoaXMubG9jYWxpemVDb3VudHJpZXModGhpcy5leGNsdWRlQ291bnRyaWVzKHRoaXMuZ2V0RmlsdGVyZWRDb3VudHJ5TGlzdChyLCB3LCBzLmluY2x1ZGVzKCJvbmx5Q291bnRyaWVzIikpLCBhKSwgZCwgcy5pbmNsdWRlcygib25seUNvdW50cmllcyIpKSwgdGhpcy5wcmVmZXJyZWRDb3VudHJpZXMgPSAwID09PSBvLmxlbmd0aCA/IFtdIDogdGhpcy5sb2NhbGl6ZUNvdW50cmllcyh0aGlzLmdldEZpbHRlcmVkQ291bnRyeUxpc3Qobywgdywgcy5pbmNsdWRlcygicHJlZmVycmVkQ291bnRyaWVzIikpLCBkLCBzLmluY2x1ZGVzKCJwcmVmZXJyZWRDb3VudHJpZXMiKSksIHRoaXMuaGlkZGVuQXJlYUNvZGVzID0gdGhpcy5leGNsdWRlQ291bnRyaWVzKHRoaXMuZ2V0RmlsdGVyZWRDb3VudHJ5TGlzdChyLCBPKSwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgTCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUodGhpcywgdCksIChuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwgIm9iamVjdCIgIT09IGYodCkgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCA/IGQoZSkgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0aGlzLCBwKHQpLmNhbGwodGhpcywgZSkpKS5nZXRQcm9iYWJsZUNhbmRpZGF0ZSA9IHcoKSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAwICE9PSBlLmxlbmd0aCA/IG4uc3RhdGUub25seUNvdW50cmllcy5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrKCkodC5uYW1lLnRvTG93ZXJDYXNlKCksIGUudG9Mb3dlckNhc2UoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGQoZChuKSkpWzBdIDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbi5ndWVzc1NlbGVjdGVkQ291bnRyeSA9IHcoKSgoZnVuY3Rpb24oZSwgdCwgciwgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCExID09PSBuLnByb3BzLmVuYWJsZUFyZWFDb2RlcyAmJiAoby5zb21lKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsoKShlLCB0LmRpYWxDb2RlKSkgcmV0dXJuIHIuc29tZSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5pc28yID09PSBlLmlzbzIgJiYgZS5tYWluQ29kZSkgcmV0dXJuIGkgPSBlLCAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgaSkpIHJldHVybiBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHIuZmluZCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaXNvMiA9PSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCIiID09PSBlLnRyaW0oKSkgcmV0dXJuIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gci5yZWR1Y2UoKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrKCkoZSwgbi5kaWFsQ29kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5kaWFsQ29kZS5sZW5ndGggPiB0LmRpYWxDb2RlLmxlbmd0aCkgcmV0dXJuIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uZGlhbENvZGUubGVuZ3RoID09PSB0LmRpYWxDb2RlLmxlbmd0aCAmJiBuLnByaW9yaXR5IDwgdC5wcmlvcml0eSkgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsQ29kZTogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogMTAwMDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZChkKG4pKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzLm5hbWUgPyBzIDogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbi51cGRhdGVDb3VudHJ5ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgciA9IG4uc3RhdGUub25seUNvdW50cmllczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQgPSBlLmluZGV4T2YoMCkgPj0gIjAiICYmIGUuaW5kZXhPZigwKSA8PSAiOSIgPyByLmZpbmQoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmRpYWxDb2RlID09ICtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IHIuZmluZCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuaXNvMiA9PSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkgJiYgdC5kaWFsQ29kZSAmJiBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnRyeTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZE51bWJlcjogbi5wcm9wcy5kaXNhYmxlQ291bnRyeUNvZGUgPyAiIiA6IG4uZm9ybWF0TnVtYmVyKHQuZGlhbENvZGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5zY3JvbGxUbyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbi5kcm9wZG93blJlZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICYmIGRvY3VtZW50LmJvZHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIub2Zmc2V0SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkgKyBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzLm9mZnNldEhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHUudG9wICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBjICsgbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGMgLSBpICsgci5zY3JvbGxUb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvIC8gMiAtIGwgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLnByb3BzLmVuYWJsZVNlYXJjaCA/IGMgPCBpICsgMzIgOiBjIDwgaSkgdCAmJiAoZCAtPSBwKSwgci5zY3JvbGxUb3AgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGYgPiBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgKGQgKz0gcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gbyAtIGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuc2Nyb2xsVG9wID0gZCAtIGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnNjcm9sbFRvVG9wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5kcm9wZG93blJlZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiBkb2N1bWVudC5ib2R5ICYmIChlLnNjcm9sbFRvcCA9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5mb3JtYXROdW1iZXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByLCBpID0gdC5mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbi5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1LmRpc2FibGVDb3VudHJ5Q29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB1LmVuYWJsZUFyZWFDb2RlU3RyZXRjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB1LmVuYWJsZUxvbmdOdW1iZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHUuYXV0b0Zvcm1hdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPyAoKHIgPSBpLnNwbGl0KCIgIikpLnNoaWZ0KCksIHIgPSByLmpvaW4oIiAiKSkgOiBjICYmIHQuaXNBcmVhQ29kZSA/ICgociA9IGkuc3BsaXQoIiAiKSlbMV0gPSByWzFdLnJlcGxhY2UoL1wuKy8sICIiLnBhZEVuZCh0LmFyZWFDb2RlTGVuZ3RoLCAiLiIpKSwgciA9IHIuam9pbigiICIpKSA6IHIgPSBpLCAhZSB8fCAwID09PSBlLmxlbmd0aCkgcmV0dXJuIGwgPyAiIiA6IG4ucHJvcHMucHJlZml4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLmxlbmd0aCA8IDIgfHwgIXIgfHwgIWQpIHJldHVybiBsID8gZSA6IG4ucHJvcHMucHJlZml4ICsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAsIGggPSBfKCkociwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBlLnJlbWFpbmluZ1RleHQubGVuZ3RoKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiLiIgIT09IHQpIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVGV4dDogZS5mb3JtYXR0ZWRUZXh0ICsgdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdUZXh0OiBlLnJlbWFpbmluZ1RleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgciA9IGEobiA9IGUucmVtYWluaW5nVGV4dCkgfHwgbyhuKSB8fCBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHJbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHIuc2xpY2UoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFRleHQ6IGUuZm9ybWF0dGVkVGV4dCArIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nVGV4dDogdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVGV4dDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdUZXh0OiBlLnNwbGl0KCIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwID0gZiA/IGguZm9ybWF0dGVkVGV4dCArIGgucmVtYWluaW5nVGV4dC5qb2luKCIiKSA6IGguZm9ybWF0dGVkVGV4dCkuaW5jbHVkZXMoIigiKSAmJiAhcC5pbmNsdWRlcygiKSIpICYmIChwICs9ICIpIiksIHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmN1cnNvclRvRW5kID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5udW1iZXJJbnB1dFJlZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZm9jdXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS52YWx1ZS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKSIgPT09IGUudmFsdWUuY2hhckF0KHQgLSAxKSAmJiAodCAtPSAxKSwgZS5zZXRTZWxlY3Rpb25SYW5nZSh0LCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5nZXRFbGVtZW50ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gblsiZmxhZ19ub18iLmNvbmNhdChlKV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmdldENvdW50cnlEYXRhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnN0YXRlLnNlbGVjdGVkQ291bnRyeSA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG4uc3RhdGUuc2VsZWN0ZWRDb3VudHJ5Lm5hbWUgfHwgIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsQ29kZTogbi5zdGF0ZS5zZWxlY3RlZENvdW50cnkuZGlhbENvZGUgfHwgIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogbi5zdGF0ZS5zZWxlY3RlZENvdW50cnkuaXNvMiB8fCAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogbi5zdGF0ZS5zZWxlY3RlZENvdW50cnkuZm9ybWF0IHx8ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlRmxhZ0Ryb3Bkb3duQ2xpY2sgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KCksIG4uc3RhdGUuc2hvd0Ryb3Bkb3duIHx8ICFuLnByb3BzLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG4uc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQucHJlZmVycmVkQ291bnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0Lm9ubHlDb3VudHJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWRDb3VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmNvbmNhdFByZWZlcnJlZENvdW50cmllcyhyLCBvKS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZGlhbENvZGUgPT09IGkuZGlhbENvZGUgJiYgZS5pc28yID09PSBpLmlzbzIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93RHJvcGRvd246ICFuLnN0YXRlLnNob3dEcm9wZG93biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRDb3VudHJ5SW5kZXg6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnN0YXRlLnNob3dEcm9wZG93biAmJiBuLnNjcm9sbFRvKG4uZ2V0RWxlbWVudChuLnN0YXRlLmhpZ2hsaWdodENvdW50cnlJbmRleCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlSW5wdXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS50YXJnZXQudmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbi5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLnByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByLm9uQ2hhbmdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4ucHJvcHMuZGlzYWJsZUNvdW50cnlDb2RlID8gIiIgOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4uc3RhdGUuc2VsZWN0ZWRDb3VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4uc3RhdGUuZnJlZXplU2VsZWN0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4ucHJvcHMuY291bnRyeUNvZGVFZGl0YWJsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBvICsgKHMuaGFzQXJlYUNvZGVzID8gbi5zdGF0ZS5vbmx5Q291bnRyaWVzLmZpbmQoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5pc28yID09PSBzLmlzbzIgJiYgZS5tYWluQ29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmRpYWxDb2RlIDogcy5kaWFsQ29kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5zbGljZSgwLCBsLmxlbmd0aCkgIT09IGwpIHJldHVybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID09PSBvKSByZXR1cm4gaSAmJiBpKCIiLCBuLmdldENvdW50cnlEYXRhKCksIGUsICIiKSwgbi5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWROdW1iZXI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5yZXBsYWNlKC9cRC9nLCAiIikubGVuZ3RoID4gMTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMSA9PT0gbi5wcm9wcy5lbmFibGVMb25nTnVtYmVycykgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJudW1iZXIiID09IHR5cGVvZiBuLnByb3BzLmVuYWJsZUxvbmdOdW1iZXJzICYmIHQucmVwbGFjZSgvXEQvZywgIiIpLmxlbmd0aCA+IG4ucHJvcHMuZW5hYmxlTG9uZ051bWJlcnMpIHJldHVybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ICE9PSBuLnN0YXRlLmZvcm1hdHRlZE51bWJlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCA/IGUucHJldmVudERlZmF1bHQoKSA6IGUucmV0dXJuVmFsdWUgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gbi5wcm9wcy5jb3VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBuLnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmLm9ubHlDb3VudHJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGYuc2VsZWN0ZWRDb3VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmLmhpZGRlbkFyZWFDb2RlczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICYmIGUucGVyc2lzdCgpLCB0Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IHQucmVwbGFjZSgvXEQvZywgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghbi5zdGF0ZS5mcmVlemVTZWxlY3Rpb24gfHwgcCAmJiBwLmRpYWxDb2RlLmxlbmd0aCA+IG0ubGVuZ3RoKSAmJiAocyA9IG4ucHJvcHMuZGlzYWJsZUNvdW50cnlHdWVzcyA/IHAgOiBuLmd1ZXNzU2VsZWN0ZWRDb3VudHJ5KG0uc3Vic3RyaW5nKDAsIDYpLCBjLCBkLCBoKSB8fCBwLCB1ID0gITEpLCBhID0gbi5mb3JtYXROdW1iZXIobSwgcyksIHMgPSBzLmRpYWxDb2RlID8gcyA6IHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gZS50YXJnZXQuc2VsZWN0aW9uU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGUudGFyZ2V0LnNlbGVjdGlvblN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBuLnN0YXRlLmZvcm1hdHRlZE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gYS5sZW5ndGggLSB2Lmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZE51bWJlcjogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlemVTZWxlY3Rpb246IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudHJ5OiBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA+IDAgJiYgKGcgLT0gYiksICIpIiA9PSBhLmNoYXJBdChhLmxlbmd0aCAtIDEpID8gbi5udW1iZXJJbnB1dFJlZi5zZXRTZWxlY3Rpb25SYW5nZShhLmxlbmd0aCAtIDEsIGEubGVuZ3RoIC0gMSkgOiBnID4gMCAmJiB2Lmxlbmd0aCA+PSBhLmxlbmd0aCA/IG4ubnVtYmVySW5wdXRSZWYuc2V0U2VsZWN0aW9uUmFuZ2UoZywgZykgOiB5IDwgdi5sZW5ndGggJiYgbi5udW1iZXJJbnB1dFJlZi5zZXRTZWxlY3Rpb25SYW5nZSh5LCB5KSwgaSAmJiBpKGEucmVwbGFjZSgvW14wLTldKy9nLCAiIiksIG4uZ2V0Q291bnRyeURhdGEoKSwgZSwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5oYW5kbGVJbnB1dENsaWNrID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dEcm9wZG93bjogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4ucHJvcHMub25DbGljayAmJiBuLnByb3BzLm9uQ2xpY2soZSwgbi5nZXRDb3VudHJ5RGF0YSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlRG91YmxlQ2xpY2sgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS50YXJnZXQudmFsdWUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZSgwLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlRmxhZ0l0ZW1DbGljayA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLnN0YXRlLnNlbGVjdGVkQ291bnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLnN0YXRlLm9ubHlDb3VudHJpZXMuZmluZCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID09IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gbi5zdGF0ZS5mb3JtYXR0ZWROdW1iZXIucmVwbGFjZSgiICIsICIiKS5yZXBsYWNlKCIoIiwgIiIpLnJlcGxhY2UoIikiLCAiIikucmVwbGFjZSgiLSIsICIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5sZW5ndGggPiAxID8gaS5yZXBsYWNlKHIuZGlhbENvZGUsIG8uZGlhbENvZGUpIDogby5kaWFsQ29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5mb3JtYXROdW1iZXIoYS5yZXBsYWNlKC9cRC9nLCAiIiksIG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Ryb3Bkb3duOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50cnk6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZXplU2VsZWN0aW9uOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWROdW1iZXI6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jdXJzb3JUb0VuZCgpLCBuLnByb3BzLm9uQ2hhbmdlICYmIG4ucHJvcHMub25DaGFuZ2Uocy5yZXBsYWNlKC9bXjAtOV0rL2csICIiKSwgbi5nZXRDb3VudHJ5RGF0YSgpLCB0LCBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmhhbmRsZUlucHV0Rm9jdXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ubnVtYmVySW5wdXRSZWYgJiYgbi5udW1iZXJJbnB1dFJlZi52YWx1ZSA9PT0gbi5wcm9wcy5wcmVmaXggJiYgbi5zdGF0ZS5zZWxlY3RlZENvdW50cnkgJiYgIW4ucHJvcHMuZGlzYWJsZUNvdW50cnlDb2RlICYmIG4uc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyOiBuLnByb3BzLnByZWZpeCArIG4uc3RhdGUuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucHJvcHMuanVtcEN1cnNvclRvRW5kICYmIHNldFRpbWVvdXQobi5jdXJzb3JUb0VuZCwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbi5wcm9wcy5vbkZvY3VzICYmIG4ucHJvcHMub25Gb2N1cyhlLCBuLmdldENvdW50cnlEYXRhKCkpLCBuLnByb3BzLmp1bXBDdXJzb3JUb0VuZCAmJiBzZXRUaW1lb3V0KG4uY3Vyc29yVG9FbmQsIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5oYW5kbGVJbnB1dEJsdXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlIHx8IG4uc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IG4ucHJvcHMucGxhY2Vob2xkZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4ucHJvcHMub25CbHVyICYmIG4ucHJvcHMub25CbHVyKGUsIG4uZ2V0Q291bnRyeURhdGEoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmhhbmRsZUlucHV0Q29weSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4ucHJvcHMuY29weU51bWJlcnNPbmx5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxhY2UoL1teMC05XSsvZywgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvcGxhaW4iLCB0KSwgZS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmdldEhpZ2hsaWdodENvdW50cnlJbmRleCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuLnN0YXRlLmhpZ2hsaWdodENvdW50cnlJbmRleCArIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IDwgMCB8fCB0ID49IG4uc3RhdGUub25seUNvdW50cmllcy5sZW5ndGggKyBuLnN0YXRlLnByZWZlcnJlZENvdW50cmllcy5sZW5ndGggPyB0IC0gZSA6IG4ucHJvcHMuZW5hYmxlU2VhcmNoICYmIHQgPiBuLmdldFNlYXJjaEZpbHRlcmVkQ291bnRyaWVzKCkubGVuZ3RoID8gMCA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnNlYXJjaENvdW50cnkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuLmdldFByb2JhYmxlQ2FuZGlkYXRlKG4uc3RhdGUucXVlcnlTdHJpbmcpIHx8IG4uc3RhdGUub25seUNvdW50cmllc1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBuLnN0YXRlLm9ubHlDb3VudHJpZXMuZmluZEluZGV4KChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPT0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpICsgbi5zdGF0ZS5wcmVmZXJyZWRDb3VudHJpZXMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNjcm9sbFRvKG4uZ2V0RWxlbWVudCh0KSwgITApLCBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodENvdW50cnlJbmRleDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlS2V5ZG93biA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuLnByb3BzLmtleXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS50YXJnZXQuY2xhc3NOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5pbmNsdWRlcygic2VsZWN0ZWQtZmxhZyIpICYmIGUud2hpY2ggPT09IHQuRU5URVIgJiYgIW4uc3RhdGUuc2hvd0Ryb3Bkb3duKSByZXR1cm4gbi5oYW5kbGVGbGFnRHJvcGRvd25DbGljayhlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuaW5jbHVkZXMoImZvcm0tY29udHJvbCIpICYmIChlLndoaWNoID09PSB0LkVOVEVSIHx8IGUud2hpY2ggPT09IHQuRVNDKSkgcmV0dXJuIGUudGFyZ2V0LmJsdXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uc3RhdGUuc2hvd0Ryb3Bkb3duICYmICFuLnByb3BzLmRpc2FibGVkICYmICghci5pbmNsdWRlcygic2VhcmNoLWJveCIpIHx8IGUud2hpY2ggPT09IHQuVVAgfHwgZS53aGljaCA9PT0gdC5ET1dOIHx8IGUud2hpY2ggPT09IHQuRU5URVIgfHwgZS53aGljaCA9PT0gdC5FU0MgJiYgIiIgPT09IGUudGFyZ2V0LnZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCA/IGUucHJldmVudERlZmF1bHQoKSA6IGUucmV0dXJuVmFsdWUgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRDb3VudHJ5SW5kZXg6IG4uZ2V0SGlnaGxpZ2h0Q291bnRyeUluZGV4KGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNjcm9sbFRvKG4uZ2V0RWxlbWVudChuLnN0YXRlLmhpZ2hsaWdodENvdW50cnlJbmRleCksICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS53aGljaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdC5ET1dOOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHQuVVA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8oLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHQuRU5URVI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucHJvcHMuZW5hYmxlU2VhcmNoID8gbi5oYW5kbGVGbGFnSXRlbUNsaWNrKG4uZ2V0U2VhcmNoRmlsdGVyZWRDb3VudHJpZXMoKVtuLnN0YXRlLmhpZ2hsaWdodENvdW50cnlJbmRleF0gfHwgbi5nZXRTZWFyY2hGaWx0ZXJlZENvdW50cmllcygpWzBdLCBlKSA6IG4uaGFuZGxlRmxhZ0l0ZW1DbGljayhbXS5jb25jYXQoaShuLnN0YXRlLnByZWZlcnJlZENvdW50cmllcyksIGkobi5zdGF0ZS5vbmx5Q291bnRyaWVzKSlbbi5zdGF0ZS5oaWdobGlnaHRDb3VudHJ5SW5kZXhdLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB0LkVTQzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHQuVEFCOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dEcm9wZG93bjogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5jdXJzb3JUb0VuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLndoaWNoID49IHQuQSAmJiBlLndoaWNoIDw9IHQuWiB8fCBlLndoaWNoID09PSB0LlNQQUNFKSAmJiBuLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nOiBuLnN0YXRlLnF1ZXJ5U3RyaW5nICsgU3RyaW5nLmZyb21DaGFyQ29kZShlLndoaWNoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnN0YXRlLmRlYm91bmNlZFF1ZXJ5U3RpbmdTZWFyY2hlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlSW5wdXRLZXlEb3duID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG4ucHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdC5rZXlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQub25FbnRlcktleVByZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQub25LZXlEb3duOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLndoaWNoID09PSByLkVOVEVSICYmIG8gJiYgbyhlKSwgaSAmJiBpKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5oYW5kbGVDbGlja091dHNpZGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uZHJvcGRvd25SZWYgJiYgIW4uZHJvcGRvd25Db250YWluZXJSZWYuY29udGFpbnMoZS50YXJnZXQpICYmIG4uc3RhdGUuc2hvd0Ryb3Bkb3duICYmIG4uc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Ryb3Bkb3duOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uaGFuZGxlU2VhcmNoQ2hhbmdlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuY3VycmVudFRhcmdldC52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIucHJlZmVycmVkQ291bnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHIuc2VsZWN0ZWRDb3VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiIiA9PT0gdCAmJiBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG4uc3RhdGUub25seUNvdW50cmllczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmNvbmNhdFByZWZlcnJlZENvdW50cmllcyhvLCBzKS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PSBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNjcm9sbFRvKG4uZ2V0RWxlbWVudChhKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAxMDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodENvdW50cnlJbmRleDogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4uY29uY2F0UHJlZmVycmVkQ291bnRyaWVzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5sZW5ndGggPiAwID8gaShuZXcgU2V0KGUuY29uY2F0KHQpKSkgOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5nZXREcm9wZG93bkNvdW50cnlOYW1lID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5sb2NhbE5hbWUgfHwgZS5uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5nZXRTZWFyY2hGaWx0ZXJlZENvdW50cmllcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG4uc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZS5wcmVmZXJyZWRDb3VudHJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5vbmx5Q291bnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUuc2VhcmNoVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbi5wcm9wcy5lbmFibGVTZWFyY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5jb25jYXRQcmVmZXJyZWRDb3VudHJpZXModCwgciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gby50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCIrIiwgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSAmJiB1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoL15cZCskLy50ZXN0KHUpKSByZXR1cm4gcy5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZGlhbENvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsiIi5jb25jYXQodCldLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBzLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuaXNvMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsiIi5jb25jYXQodCldLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmxvY2FsTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaXNvMiwgWyIiLmNvbmNhdCh0KSwgIiIuY29uY2F0KG4gfHwgIiIpXS5zb21lKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnNjcm9sbFRvVG9wKCksIGkobmV3IFNldChbXS5jb25jYXQobCwgYykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5nZXRDb3VudHJ5RHJvcGRvd25MaXN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLnByZWZlcnJlZENvdW50cmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLmhpZ2hsaWdodENvdW50cnlJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLnNob3dEcm9wZG93biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLnNlYXJjaFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4ucHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gcy5kaXNhYmxlRHJvcGRvd24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcy5wcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbi5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBjLmVuYWJsZVNlYXJjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjLnNlYXJjaE5vdEZvdW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGMuZGlzYWJsZVNlYXJjaEljb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gYy5zZWFyY2hDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBjLnNlYXJjaFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGMuc2VhcmNoUGxhY2Vob2xkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gYy5hdXRvY29tcGxldGVTZWFyY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gbi5nZXRTZWFyY2hGaWx0ZXJlZENvdW50cmllcygpLm1hcCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbyA9PT0gdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IEMoKSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZlcnJlZDogInVzIiA9PT0gZS5pc28yIHx8ICJnYiIgPT09IGUuaXNvMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogInVzIiA9PT0gZS5pc28yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0OiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gImZsYWcgIi5jb25jYXQoZS5pc28yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geS5hLmNyZWF0ZUVsZW1lbnQoImxpIiwgT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5bImZsYWdfbm9fIi5jb25jYXQodCldID0gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJmbGFnX25vXyIuY29uY2F0KHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS1mbGFnLWtleSI6ICJmbGFnX25vXyIuY29uY2F0KHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhLWRpYWwtY29kZSI6ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg6IHUgPyAiLTEiIDogIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS1jb3VudHJ5LWNvZGUiOiBlLmlzbzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmhhbmRsZUZsYWdJdGVtQ2xpY2soZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogIm9wdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1zZWxlY3RlZCI6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA6IHt9KSwgeS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHkuYS5jcmVhdGVFbGVtZW50KCJzcGFuIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJjb3VudHJ5LW5hbWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5nZXREcm9wZG93bkNvdW50cnlOYW1lKGUpKSwgeS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImRpYWwtY29kZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLmZvcm1hdCA/IG4uZm9ybWF0TnVtYmVyKGUuZGlhbENvZGUsIGUpIDogbCArIGUuZGlhbENvZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHkuYS5jcmVhdGVFbGVtZW50KCJsaSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkYXNoZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImRpdmlkZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5sZW5ndGggPiAwICYmICghZiB8fCBmICYmICFhLnRyaW0oKSkgJiYgYi5zcGxpY2UodC5sZW5ndGgsIDAsIHcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgTyA9IEMoKShyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VudHJ5LWxpc3QiOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGU6ICFpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4ucHJvcHMuZHJvcGRvd25DbGFzcywgITApKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHkuYS5jcmVhdGVFbGVtZW50KCJ1bCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhZiAmJiBlICYmIGUuZm9jdXMoKSwgbi5kcm9wZG93blJlZiA9IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IE8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogbi5wcm9wcy5kcm9wZG93blN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogImxpc3Rib3giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg6ICIwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmICYmIHkuYS5jcmVhdGVFbGVtZW50KCJsaSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogQygpKHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaDogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGgsIGgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAhcCAmJiB5LmEuY3JlYXRlRWxlbWVudCgic3BhbiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogQygpKHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWFyY2gtZW1vamkiOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgIiIuY29uY2F0KGgsICItZW1vamkiKSwgaCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogImltZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1sYWJlbCI6ICJNYWduaWZ5aW5nIGdsYXNzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAi8J+UjiIpLCB5LmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IEMoKShyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VhcmNoLWJveCI6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAiIi5jb25jYXQoaCwgIi1ib3giKSwgaCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAic2VhcmNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZTogdiA/ICJvbiIgOiAib2ZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG4uaGFuZGxlU2VhcmNoQ2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYi5sZW5ndGggPiAwID8gYiA6IHkuYS5jcmVhdGVFbGVtZW50KCJsaSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogIm5vLWVudHJpZXMtbWVzc2FnZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLCBudWxsLCBkKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCwgYyA9IG5ldyBNKGUuZW5hYmxlQXJlYUNvZGVzLCBlLmVuYWJsZVRlcnJpdG9yaWVzLCBlLnJlZ2lvbnMsIGUub25seUNvdW50cmllcywgZS5wcmVmZXJyZWRDb3VudHJpZXMsIGUuZXhjbHVkZUNvdW50cmllcywgZS5wcmVzZXJ2ZU9yZGVyLCBlLm1hc2tzLCBlLnByaW9yaXR5LCBlLmFyZWFDb2RlcywgZS5sb2NhbGl6YXRpb24sIGUucHJlZml4LCBlLmRlZmF1bHRNYXNrLCBlLmFsd2F5c0RlZmF1bHRNYXNrKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGMub25seUNvdW50cmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGMucHJlZmVycmVkQ291bnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gYy5oaWRkZW5BcmVhQ29kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBlLnZhbHVlID8gZS52YWx1ZS5yZXBsYWNlKC9cRC9nLCAiIikgOiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZS5kaXNhYmxlSW5pdGlhbENvdW50cnlHdWVzcyA/IDAgOiBiLmxlbmd0aCA+IDEgPyBuLmd1ZXNzU2VsZWN0ZWRDb3VudHJ5KGIuc3Vic3RyaW5nKDAsIDYpLCBlLmNvdW50cnksIGgsIGcpIHx8IDAgOiBlLmNvdW50cnkgJiYgaC5maW5kKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmlzbzIgPT0gZS5jb3VudHJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE8sIHggPSBiLmxlbmd0aCA8IDIgJiYgbCAmJiAhaygpKGIsIGwuZGlhbENvZGUpID8gbC5kaWFsQ29kZSA6ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gPSAiIiA9PT0gYiAmJiAwID09PSBsID8gIiIgOiBuLmZvcm1hdE51bWJlcigoZS5kaXNhYmxlQ291bnRyeUNvZGUgPyAiIiA6IHgpICsgYiwgbC5uYW1lID8gbCA6IHZvaWQgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEUgPSBoLmZpbmRJbmRleCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PSBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnN0YXRlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93RHJvcGRvd246IGUuc2hvd0Ryb3Bkb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWROdW1iZXI6IE8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlDb3VudHJpZXM6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZlcnJlZENvdW50cmllczogbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuQXJlYUNvZGVzOiBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50cnk6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodENvdW50cnlJbmRleDogRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlTdHJpbmc6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlemVTZWxlY3Rpb246ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZWRRdWVyeVN0aW5nU2VhcmNoZXI6IHYoKShuLnNlYXJjaENvdW50cnksIDI1MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIGgoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgZSksIG4gPSB0LCAoYyA9IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY29tcG9uZW50RGlkTW91bnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciAmJiB0aGlzLnByb3BzLmVuYWJsZUNsaWNrT3V0c2lkZSAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZSksIHRoaXMucHJvcHMub25Nb3VudCAmJiB0aGlzLnByb3BzLm9uTW91bnQodGhpcy5zdGF0ZS5mb3JtYXR0ZWROdW1iZXIucmVwbGFjZSgvW14wLTldKy9nLCAiIiksIHRoaXMuZ2V0Q291bnRyeURhdGEoKSwgdGhpcy5zdGF0ZS5mb3JtYXR0ZWROdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudFdpbGxVbm1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYgdGhpcy5wcm9wcy5lbmFibGVDbGlja091dHNpZGUgJiYgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5oYW5kbGVDbGlja091dHNpZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudERpZFVwZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jb3VudHJ5ICE9PSB0aGlzLnByb3BzLmNvdW50cnkgPyB0aGlzLnVwZGF0ZUNvdW50cnkodGhpcy5wcm9wcy5jb3VudHJ5KSA6IGUudmFsdWUgIT09IHRoaXMucHJvcHMudmFsdWUgJiYgdGhpcy51cGRhdGVGb3JtYXR0ZWROdW1iZXIodGhpcy5wcm9wcy52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlRm9ybWF0dGVkTnVtYmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gZSkgcmV0dXJuIHRoaXMuc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudHJ5OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQub25seUNvdW50cmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnNlbGVjdGVkQ291bnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmhpZGRlbkFyZWFDb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnByb3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuY291bnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLnByZWZpeDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCIiID09PSBlKSByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50cnk6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWROdW1iZXI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSwgbCwgYyA9IGUucmVwbGFjZSgvXEQvZywgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociAmJiBrKCkoZSwgcyArIHIuZGlhbENvZGUpKSBsID0gdGhpcy5mb3JtYXROdW1iZXIoYywgciksIHRoaXMuc2V0U3RhdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyOiBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gKHUgPSB0aGlzLnByb3BzLmRpc2FibGVDb3VudHJ5R3Vlc3MgPyByIDogdGhpcy5ndWVzc1NlbGVjdGVkQ291bnRyeShjLnN1YnN0cmluZygwLCA2KSwgYSwgbiwgbykgfHwgcikgJiYgaygpKGMsIHMgKyB1LmRpYWxDb2RlKSA/IHUuZGlhbENvZGUgOiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLmZvcm1hdE51bWJlcigodGhpcy5wcm9wcy5kaXNhYmxlQ291bnRyeUNvZGUgPyAiIiA6IGYpICsgYywgdSB8fCB2b2lkIDApLCB0aGlzLnNldFN0YXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50cnk6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyOiBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbmRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiwgbyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLm9ubHlDb3VudHJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5zZWxlY3RlZENvdW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gaS5zaG93RHJvcGRvd24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gaS5mb3JtYXR0ZWROdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gaS5oaWRkZW5BcmVhQ29kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdGhpcy5wcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmLmRpc2FibGVEcm9wZG93biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBmLnJlbmRlclN0cmluZ0FzRmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmLmlzVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gZi5kZWZhdWx0RXJyb3JNZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGYuc3BlY2lhbExhYmVsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImJvb2xlYW4iID09IHR5cGVvZiBoKSB0ID0gaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IGgobC5yZXBsYWNlKC9cRC9nLCAiIiksIHMsIGEsIGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvb2xlYW4iID09IHR5cGVvZiB2ID8gITEgPT09ICh0ID0gdikgJiYgKG4gPSBtKSA6ICh0ID0gITEsIG4gPSB2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gQygpKChyKGUgPSB7fSwgdGhpcy5wcm9wcy5jb250YWluZXJDbGFzcywgITApLCByKGUsICJyZWFjdC10ZWwtaW5wdXQiLCAhMCksIGUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBDKCkoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycm93OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cDogdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPID0gQygpKHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtLWNvbnRyb2wiOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZC1udW1iZXIiOiAhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnByb3BzLmlucHV0Q2xhc3MsICEwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gQygpKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZWN0ZWQtZmxhZyI6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IEMoKShyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxhZy1kcm9wZG93biI6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkLW51bWJlciI6ICF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucHJvcHMuYnV0dG9uQ2xhc3MsICEwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gImZsYWcgIi5jb25jYXQocyAmJiBzLmlzbzIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogIiIuY29uY2F0KGIsICIgIikuY29uY2F0KHRoaXMucHJvcHMuY2xhc3NOYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0aGlzLnByb3BzLnN0eWxlIHx8IHRoaXMucHJvcHMuY29udGFpbmVyU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd246IHRoaXMuaGFuZGxlS2V5ZG93bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBnICYmIHkuYS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJzcGVjaWFsLWxhYmVsIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBnKSwgbiAmJiB5LmEuY3JlYXRlRWxlbWVudCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiaW52YWxpZC1udW1iZXItbWVzc2FnZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbiksIHkuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIsIE9iamVjdC5hc3NpZ24oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBPLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHRoaXMucHJvcHMuaW5wdXRTdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLmhhbmRsZUlucHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVJbnB1dENsaWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3VibGVDbGljazogdGhpcy5oYW5kbGVEb3VibGVDbGljaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM6IHRoaXMuaGFuZGxlSW5wdXRGb2N1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogdGhpcy5oYW5kbGVJbnB1dEJsdXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvcHk6IHRoaXMuaGFuZGxlSW5wdXRDb3B5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd246IHRoaXMuaGFuZGxlSW5wdXRLZXlEb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMucHJvcHMucGxhY2Vob2xkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5wcm9wcy5kaXNhYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJ0ZWwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucHJvcHMuaW5wdXRQcm9wcywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5udW1iZXJJbnB1dFJlZiA9IGUsICJmdW5jdGlvbiIgPT0gdHlwZW9mIG8ucHJvcHMuaW5wdXRQcm9wcy5yZWYgPyBvLnByb3BzLmlucHV0UHJvcHMucmVmKGUpIDogIm9iamVjdCIgPT0gdHlwZW9mIG8ucHJvcHMuaW5wdXRQcm9wcy5yZWYgJiYgKG8ucHJvcHMuaW5wdXRQcm9wcy5yZWYuY3VycmVudCA9IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgeS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB0aGlzLnByb3BzLmJ1dHRvblN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uZHJvcGRvd25Db250YWluZXJSZWYgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHAgPyB5LmEuY3JlYXRlRWxlbWVudCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBfCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHApIDogeS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGQgPyB2b2lkIDAgOiB0aGlzLmhhbmRsZUZsYWdEcm9wZG93bkNsaWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHMgPyAiIi5jb25jYXQocy5sb2NhbE5hbWUgfHwgcy5uYW1lLCAiOiArICIpLmNvbmNhdChzLmRpYWxDb2RlKSA6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg6IGQgPyAiLTEiIDogIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogImJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1oYXNwb3B1cCI6ICJsaXN0Ym94IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWV4cGFuZGVkIjogISF1IHx8IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB5LmEuY3JlYXRlRWxlbWVudCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICFkICYmIHkuYS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSwgdSAmJiB0aGlzLmdldENvdW50cnlEcm9wZG93bkxpc3QoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0pICYmIGwobi5wcm90b3R5cGUsIGMpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0oeS5hLkNvbXBvbmVudCk7CiAgICAgICAgICAgICAgICAgICAgTC5kZWZhdWx0UHJvcHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlDb3VudHJpZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBwcmVmZXJyZWRDb3VudHJpZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlQ291bnRyaWVzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICIxICg3MDIpIDEyMy00NTY3IiwKICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICJzZWFyY2giLAogICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hOb3RGb3VuZDogIk5vIGVudHJpZXMgdG8gc2hvdyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzSW1hZ2VQYXRoOiAiLi9mbGFncy5wbmciLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclN0eWxlOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRTdHlsZToge30sCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25TdHlsZToge30sCiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFN0eWxlOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyQ2xhc3M6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENsYXNzOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xhc3M6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBkcm9wZG93bkNsYXNzOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQ2xhc3M6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9ybWF0OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQXJlYUNvZGVzOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlVGVycml0b3JpZXM6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlQ291bnRyeUNvZGU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlRHJvcGRvd246ICExLAogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVMb25nTnVtYmVyczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlRWRpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVTZWFyY2g6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlU2VhcmNoSWNvbjogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVJbml0aWFsQ291bnRyeUd1ZXNzOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUNvdW50cnlHdWVzczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbnM6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxpemF0aW9uOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgbWFza3M6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBhcmVhQ29kZXM6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlT3JkZXI6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWFzazogIi4uLiAuLi4gLi4uIC4uLiAuLiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5c0RlZmF1bHRNYXNrOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAiKyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOdW1iZXJzT25seTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclN0cmluZ0FzRmxhZzogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZVNlYXJjaDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGp1bXBDdXJzb3JUb0VuZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUFyZWFDb2RlU3RyZXRjaDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUNsaWNrT3V0c2lkZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dEcm9wZG93bjogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RXJyb3JNZXNzYWdlOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbExhYmVsOiAiUGhvbmUiLAogICAgICAgICAgICAgICAgICAgICAgICBvbkVudGVyS2V5UHJlc3M6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGtleXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVQOiAzOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPV046IDQwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUklHSFQ6IDM5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVGVDogMzcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTlRFUjogMTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU0M6IDI3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUExVUzogNDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBOiA2NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFo6IDkwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BBQ0U6IDMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCOiA5CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB0WyJkZWZhdWx0Il0gPSBMCiAgICAgICAgICAgICAgICB9XSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTE2NzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwogICAgICAgICAgICAgICAgdmFyIHIsIG8gPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IChyID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHIgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJvdG9fXzogW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX19wcm90b19fID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB8fCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiB0KSB0Lmhhc093blByb3BlcnR5KG4pICYmIChlW25dID0gdFtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByKGUsIHQpLCBlLnByb3RvdHlwZSA9IG51bGwgPT09IHQgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzICYmIHRoaXMuX19hc3NpZ24gfHwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoaSA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCwgbiA9IDEsIHIgPSBhcmd1bWVudHMubGVuZ3RoOyBuIDwgcjsgbisrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gaW4gdCA9IGFyZ3VtZW50c1tuXSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIG8pICYmIChlW29dID0gdFtvXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICB9KS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhID0gdGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXlzIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMCwgdCA9IDAsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyB0IDwgbjsgdCsrKSBlICs9IGFyZ3VtZW50c1t0XS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gQXJyYXkoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IG47IHQrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBhcmd1bWVudHNbdF0sIGEgPSAwLCBzID0gaS5sZW5ndGg7IGEgPCBzOyBhKyssIG8rKykgcltvXSA9IGlbYV07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzID0gdGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdSA9IHMobig3MzYzKSksCiAgICAgICAgICAgICAgICAgICAgbCA9IHMobigxNTMzKSksCiAgICAgICAgICAgICAgICAgICAgYyA9IHMobig4NDQ2KSksCiAgICAgICAgICAgICAgICAgICAgZiA9IHMobig2MDk1KSksCiAgICAgICAgICAgICAgICAgICAgZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuY2FsbCh0aGlzLCB0KSB8fCB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5kaXJ0eVByb3BzID0gWyJtb2R1bGVzIiwgImZvcm1hdHMiLCAiYm91bmRzIiwgInRoZW1lIiwgImNoaWxkcmVuIl0sIG4uY2xlYW5Qcm9wcyA9IFsiaWQiLCAiY2xhc3NOYW1lIiwgInN0eWxlIiwgInBsYWNlaG9sZGVyIiwgInRhYkluZGV4IiwgIm9uQ2hhbmdlIiwgIm9uQ2hhbmdlU2VsZWN0aW9uIiwgIm9uRm9jdXMiLCAib25CbHVyIiwgIm9uS2V5UHJlc3MiLCAib25LZXlEb3duIiwgIm9uS2V5VXAiXSwgbi5zdGF0ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnNlbGVjdGlvbiA9IG51bGwsIG4ub25FZGl0b3JDaGFuZ2UgPSBmdW5jdGlvbihlLCB0LCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEsIHMsIHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQtY2hhbmdlIiA9PT0gZSA/IG51bGwgPT09IChhID0gKGkgPSBuKS5vbkVkaXRvckNoYW5nZVRleHQpIHx8IHZvaWQgMCA9PT0gYSB8fCBhLmNhbGwoaSwgbi5lZGl0b3Iucm9vdC5pbm5lckhUTUwsIHQsIG8sIG4udW5wcml2aWxlZ2VkRWRpdG9yKSA6ICJzZWxlY3Rpb24tY2hhbmdlIiA9PT0gZSAmJiAobnVsbCA9PT0gKHUgPSAocyA9IG4pLm9uRWRpdG9yQ2hhbmdlU2VsZWN0aW9uKSB8fCB2b2lkIDAgPT09IHUgfHwgdS5jYWxsKHMsIHQsIG8sIG4udW5wcml2aWxlZ2VkRWRpdG9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4uaXNDb250cm9sbGVkKCkgPyB0LnZhbHVlIDogdC5kZWZhdWx0VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi52YWx1ZSA9IG51bGwgIT0gciA/IHIgOiAiIiwgbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHQsIGUpLCB0LnByb3RvdHlwZS52YWxpZGF0ZVByb3BzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodVsiZGVmYXVsdCJdLkNoaWxkcmVuLmNvdW50KGUuY2hpbGRyZW4pID4gMSkgdGhyb3cgbmV3IEVycm9yKCJUaGUgUXVpbGwgZWRpdGluZyBhcmVhIGNhbiBvbmx5IGJlIGNvbXBvc2VkIG9mIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodVsiZGVmYXVsdCJdLkNoaWxkcmVuLmNvdW50KGUuY2hpbGRyZW4pICYmICJ0ZXh0YXJlYSIgPT09IChudWxsID09PSAodCA9IHVbImRlZmF1bHQiXS5DaGlsZHJlbi5vbmx5KGUuY2hpbGRyZW4pKSB8fCB2b2lkIDAgPT09IHQgPyB2b2lkIDAgOiB0LnR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoIlF1aWxsIGRvZXMgbm90IHN1cHBvcnQgZWRpdGluZyBvbiBhIDx0ZXh0YXJlYT4uIFVzZSBhIDxkaXY+IGluc3RlYWQuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sYXN0RGVsdGFDaGFuZ2VTZXQgJiYgZS52YWx1ZSA9PT0gdGhpcy5sYXN0RGVsdGFDaGFuZ2VTZXQpIHRocm93IG5ldyBFcnJvcigiWW91IGFyZSBwYXNzaW5nIHRoZSBgZGVsdGFgIG9iamVjdCBmcm9tIHRoZSBgb25DaGFuZ2VgIGV2ZW50IGJhY2sgYXMgYHZhbHVlYC4gWW91IG1vc3QgcHJvYmFibHkgd2FudCBgZWRpdG9yLmdldENvbnRlbnRzKClgIGluc3RlYWQuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3plbm9hbWFyby9yZWFjdC1xdWlsbCN1c2luZy1kZWx0YXMiKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgciA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0ZVByb3BzKGUpLCAhdGhpcy5lZGl0b3IgfHwgdGhpcy5zdGF0ZS5nZW5lcmF0aW9uICE9PSB0LmdlbmVyYXRpb24pIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmFsdWUiIGluIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMuZ2V0RWRpdG9yQ29udGVudHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG51bGwgIT0gKG4gPSBlLnZhbHVlKSA/IG4gOiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRXF1YWxWYWx1ZShpLCBvKSB8fCB0aGlzLnNldEVkaXRvckNvbnRlbnRzKHRoaXMuZWRpdG9yLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucmVhZE9ubHkgIT09IHRoaXMucHJvcHMucmVhZE9ubHkgJiYgdGhpcy5zZXRFZGl0b3JSZWFkT25seSh0aGlzLmVkaXRvciwgZS5yZWFkT25seSksIGEodGhpcy5jbGVhblByb3BzLCB0aGlzLmRpcnR5UHJvcHMpLnNvbWUoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWNbImRlZmF1bHQiXShlW3RdLCByLnByb3BzW3RdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFJlZ2VuZXJhdGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaXJ0eVByb3BzLnNvbWUoKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWNbImRlZmF1bHQiXShlW25dLCB0LnByb3BzW25dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbnRpYXRlRWRpdG9yKCksIHRoaXMuc2V0RWRpdG9yQ29udGVudHModGhpcy5lZGl0b3IsIHRoaXMuZ2V0RWRpdG9yQ29udGVudHMoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveUVkaXRvcigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvciAmJiB0aGlzLnNob3VsZENvbXBvbmVudFJlZ2VuZXJhdGUoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuZWRpdG9yLmdldENvbnRlbnRzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmVkaXRvci5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2VuZXJhdGlvblNuYXBzaG90ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uOiBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5zZXRTdGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpb246IHRoaXMuc3RhdGUuZ2VuZXJhdGlvbiArIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5kZXN0cm95RWRpdG9yKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmdlbmVyYXRpb24gIT09IHQuZ2VuZXJhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5yZWdlbmVyYXRpb25TbmFwc2hvdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IChyID0gaS5kZWx0YSwgaS5zZWxlY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnJlZ2VuZXJhdGlvblNuYXBzaG90LCB0aGlzLmluc3RhbnRpYXRlRWRpdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLmVkaXRvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnNldENvbnRlbnRzKHIpLCBwKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc2V0RWRpdG9yU2VsZWN0aW9uKHMsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmluc3RhbnRpYXRlRWRpdG9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRvciA/IHRoaXMuaG9va0VkaXRvcih0aGlzLmVkaXRvcikgOiB0aGlzLmVkaXRvciA9IHRoaXMuY3JlYXRlRWRpdG9yKHRoaXMuZ2V0RWRpdGluZ0FyZWEoKSwgdGhpcy5nZXRFZGl0b3JDb25maWcoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZGVzdHJveUVkaXRvciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IgJiYgdGhpcy51bmhvb2tFZGl0b3IodGhpcy5lZGl0b3IpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmlzQ29udHJvbGxlZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ2YWx1ZSIgaW4gdGhpcy5wcm9wcwogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5nZXRFZGl0b3JDb25maWcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzOiB0aGlzLnByb3BzLmJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRzOiB0aGlzLnByb3BzLmZvcm1hdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogdGhpcy5wcm9wcy5tb2R1bGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnByb3BzLnBsYWNlaG9sZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5OiB0aGlzLnByb3BzLnJlYWRPbmx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGluZ0NvbnRhaW5lcjogdGhpcy5wcm9wcy5zY3JvbGxpbmdDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg6IHRoaXMucHJvcHMudGFiSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU6IHRoaXMucHJvcHMudGhlbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZ2V0RWRpdG9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKSB0aHJvdyBuZXcgRXJyb3IoIkFjY2Vzc2luZyBub24taW5zdGFudGlhdGVkIGVkaXRvciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmNyZWF0ZUVkaXRvciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbmV3IGZbImRlZmF1bHQiXShlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQudGFiSW5kZXggJiYgdGhpcy5zZXRFZGl0b3JUYWJJbmRleChuLCB0LnRhYkluZGV4KSwgdGhpcy5ob29rRWRpdG9yKG4pLCBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmhvb2tFZGl0b3IgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVucHJpdmlsZWdlZEVkaXRvciA9IHRoaXMubWFrZVVucHJpdmlsZWdlZEVkaXRvcihlKSwgZS5vbigiZWRpdG9yLWNoYW5nZSIsIHRoaXMub25FZGl0b3JDaGFuZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVuaG9va0VkaXRvciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUub2ZmKCJlZGl0b3ItY2hhbmdlIiwgdGhpcy5vbkVkaXRvckNoYW5nZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZ2V0RWRpdG9yQ29udGVudHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmdldEVkaXRvclNlbGVjdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmlzRGVsdGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLm9wcwogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5pc0VxdWFsVmFsdWUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0RlbHRhKGUpICYmIHRoaXMuaXNEZWx0YSh0KSA/IGNbImRlZmF1bHQiXShlLm9wcywgdC5vcHMpIDogY1siZGVmYXVsdCJdKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnNldEVkaXRvckNvbnRlbnRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuZ2V0RWRpdG9yU2VsZWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgdCA/IGUuc2V0Q29udGVudHMoZS5jbGlwYm9hcmQuY29udmVydCh0KSkgOiBlLnNldENvbnRlbnRzKHQpLCBwKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zZXRFZGl0b3JTZWxlY3Rpb24oZSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zZXRFZGl0b3JTZWxlY3Rpb24gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24gPSB0LCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmdldExlbmd0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0LmluZGV4LCBuIC0gMSkpLCB0Lmxlbmd0aCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHQubGVuZ3RoLCBuIC0gMSAtIHQuaW5kZXgpKSwgZS5zZXRTZWxlY3Rpb24odCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuc2V0RWRpdG9yVGFiSW5kZXggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09PSAociA9IG51bGwgPT09IChuID0gZSkgfHwgdm9pZCAwID09PSBuID8gdm9pZCAwIDogbi5zY3JvbGwpIHx8IHZvaWQgMCA9PT0gciA/IHZvaWQgMCA6IHIuZG9tTm9kZSkgJiYgKGUuc2Nyb2xsLmRvbU5vZGUudGFiSW5kZXggPSB0KQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zZXRFZGl0b3JSZWFkT25seSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPyBlLmRpc2FibGUoKSA6IGUuZW5hYmxlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUubWFrZVVucHJpdmlsZWdlZEVkaXRvciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SFRNTDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnJvb3QuaW5uZXJIVE1MCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMZW5ndGg6IHQuZ2V0TGVuZ3RoLmJpbmQodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGV4dDogdC5nZXRUZXh0LmJpbmQodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGVudHM6IHQuZ2V0Q29udGVudHMuYmluZCh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTZWxlY3Rpb246IHQuZ2V0U2VsZWN0aW9uLmJpbmQodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Qm91bmRzOiB0LmdldEJvdW5kcy5iaW5kKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmdldEVkaXRpbmdBcmVhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWRpdGluZ0FyZWEpIHRocm93IG5ldyBFcnJvcigiSW5zdGFudGlhdGluZyBvbiBtaXNzaW5nIGVkaXRpbmcgYXJlYSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBsWyJkZWZhdWx0Il0uZmluZERPTU5vZGUodGhpcy5lZGl0aW5nQXJlYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZWxlbWVudCBmb3IgZWRpdGluZyBhcmVhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMyA9PT0gZS5ub2RlVHlwZSkgdGhyb3cgbmV3IEVycm9yKCJFZGl0aW5nIGFyZWEgY2Fubm90IGJlIGEgdGV4dCBub2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5yZW5kZXJFZGl0aW5nQXJlYSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLnByb3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LmNoaWxkcmVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnByZXNlcnZlV2hpdGVzcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHRoaXMuc3RhdGUuZ2VuZXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmVkaXRpbmdBcmVhID0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1WyJkZWZhdWx0Il0uQ2hpbGRyZW4uY291bnQobikgPyB1WyJkZWZhdWx0Il0uY2xvbmVFbGVtZW50KHVbImRlZmF1bHQiXS5DaGlsZHJlbi5vbmx5KG4pLCBvKSA6IHIgPyB1WyJkZWZhdWx0Il0uY3JlYXRlRWxlbWVudCgicHJlIiwgaSh7fSwgbykpIDogdVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImRpdiIsIGkoe30sIG8pKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMucHJvcHMuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHRoaXMucHJvcHMuc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0aGlzLnN0YXRlLmdlbmVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAicXVpbGwgIiArIChlID0gdGhpcy5wcm9wcy5jbGFzc05hbWUsIG51bGwgIT0gZSA/IGUgOiAiIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlQcmVzczogdGhpcy5wcm9wcy5vbktleVByZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bjogdGhpcy5wcm9wcy5vbktleURvd24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlVcDogdGhpcy5wcm9wcy5vbktleVVwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnJlbmRlckVkaXRpbmdBcmVhKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLm9uRWRpdG9yQ2hhbmdlVGV4dCA9IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvLCBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZWRpdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLmlzRGVsdGEodGhpcy52YWx1ZSkgPyByLmdldENvbnRlbnRzKCkgOiByLmdldEhUTUwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhICE9PSB0aGlzLmdldEVkaXRvckNvbnRlbnRzKCkgJiYgKHRoaXMubGFzdERlbHRhQ2hhbmdlU2V0ID0gdCwgdGhpcy52YWx1ZSA9IGEsIG51bGwgPT09IChpID0gKG8gPSB0aGlzLnByb3BzKS5vbkNoYW5nZSkgfHwgdm9pZCAwID09PSBpIHx8IGkuY2FsbChvLCBlLCB0LCBuLCByKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUub25FZGl0b3JDaGFuZ2VTZWxlY3Rpb24gPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgaSwgYSwgcywgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gdGhpcy5nZXRFZGl0b3JTZWxlY3Rpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9ICFsICYmIGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBsICYmICFlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbImRlZmF1bHQiXShlLCBsKSB8fCAodGhpcy5zZWxlY3Rpb24gPSBlLCBudWxsID09PSAobyA9IChyID0gdGhpcy5wcm9wcykub25DaGFuZ2VTZWxlY3Rpb24pIHx8IHZvaWQgMCA9PT0gbyB8fCBvLmNhbGwociwgZSwgdCwgbiksIGYgPyBudWxsID09PSAoYSA9IChpID0gdGhpcy5wcm9wcykub25Gb2N1cykgfHwgdm9pZCAwID09PSBhIHx8IGEuY2FsbChpLCBlLCB0LCBuKSA6IGQgJiYgKG51bGwgPT09ICh1ID0gKHMgPSB0aGlzLnByb3BzKS5vbkJsdXIpIHx8IHZvaWQgMCA9PT0gdSB8fCB1LmNhbGwocywgbCwgdCwgbikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5mb2N1cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IgJiYgdGhpcy5lZGl0b3IuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5ibHVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRvciAmJiAodGhpcy5zZWxlY3Rpb24gPSBudWxsLCB0aGlzLmVkaXRvci5ibHVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQuZGlzcGxheU5hbWUgPSAiUmVhY3QgUXVpbGwiLCB0LlF1aWxsID0gZlsiZGVmYXVsdCJdLCB0LmRlZmF1bHRQcm9wcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lOiAic25vdyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5OiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0CiAgICAgICAgICAgICAgICAgICAgfSh1WyJkZWZhdWx0Il0uQ29tcG9uZW50KTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBwKGUpIHsKICAgICAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBkCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDYwNzM6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gKHIgPSBuKDczNjMpLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuW3JdKSByZXR1cm4gbltyXS5leHBvcnRzOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG5bcl0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cywgbywgby5leHBvcnRzLCB0KSwgby5sb2FkZWQgPSAhMCwgby5leHBvcnRzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBuID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubSA9IGUsIHQuYyA9IG4sIHQucCA9ICIiLCB0KDApCiAgICAgICAgICAgICAgICB9KFtmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gbigyKQogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKHQsIHIsIG8sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKHRoaXMsIGUpLCB0aGlzLnN0YXJ0UG9pbnQgPSB0LCB0aGlzLmNvbnRyb2wxID0gciwgdGhpcy5jb250cm9sMiA9IG8sIHRoaXMuZW5kUG9pbnQgPSBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImxlbmd0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiwgciwgbywgaSwgYSwgcywgdSA9IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IHUgPj0gZTsgZSsrKSB0ID0gZSAvIHUsIG4gPSB0aGlzLl9wb2ludCh0LCB0aGlzLnN0YXJ0UG9pbnQueCwgdGhpcy5jb250cm9sMS54LCB0aGlzLmNvbnRyb2wyLngsIHRoaXMuZW5kUG9pbnQueCksIHIgPSB0aGlzLl9wb2ludCh0LCB0aGlzLnN0YXJ0UG9pbnQueSwgdGhpcy5jb250cm9sMS55LCB0aGlzLmNvbnRyb2wyLnksIHRoaXMuZW5kUG9pbnQueSksIGUgPiAwICYmIChhID0gbiAtIG8sIHMgPSByIC0gaSwgbCArPSBNYXRoLnNxcnQoYSAqIGEgKyBzICogcykpLCBvID0gbiwgaSA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9wb2ludCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKiAoMSAtIGUpICogKDEgLSBlKSAqICgxIC0gZSkgKyAzICogbiAqICgxIC0gZSkgKiAoMSAtIGUpICogZSArIDMgKiByICogKDEgLSBlKSAqIGUgKiBlICsgbyAqIGUgKiBlICogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgZQogICAgICAgICAgICAgICAgICAgICAgICB9KCk7CiAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gbywgZS5leHBvcnRzID0gdFsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgInVzZSBzdHJpY3QiOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IjogZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIiArIHR5cGVvZiB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgKGUuX19wcm90b19fID0gdCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lbnVtZXJhYmxlID0gci5lbnVtZXJhYmxlIHx8ICExLCByLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIHIgJiYgKHIud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLmtleSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIGUodC5wcm90b3R5cGUsIG4pLCByICYmIGUodCwgciksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9ICEwOyByOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBsID0gdSA9IHZvaWQgMCwgciA9ICExLCBudWxsID09PSBvICYmIChvID0gRnVuY3Rpb24ucHJvdG90eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobywgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiBzKSByZXR1cm4gcy52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBzLmdldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdSA/IHZvaWQgMCA6IHUuY2FsbChhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gbCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBsLCB0ID0gaSwgbiA9IGEsIHIgPSAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gcihuKDQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHIobigxKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSByKG4oMykpLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyh0aGlzLCB0KSwgcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLCAiY29uc3RydWN0b3IiLCB0aGlzKS5jYWxsKHRoaXMsIGUpLCB0aGlzLnZlbG9jaXR5RmlsdGVyV2VpZ2h0ID0gdGhpcy5wcm9wcy52ZWxvY2l0eUZpbHRlcldlaWdodCB8fCAuNywgdGhpcy5taW5XaWR0aCA9IHRoaXMucHJvcHMubWluV2lkdGggfHwgLjUsIHRoaXMubWF4V2lkdGggPSB0aGlzLnByb3BzLm1heFdpZHRoIHx8IDIuNSwgdGhpcy5kb3RTaXplID0gdGhpcy5wcm9wcy5kb3RTaXplIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHRoaXMubWluV2lkdGggKyB0aGlzLm1heFdpZHRoKSAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnBlbkNvbG9yID0gdGhpcy5wcm9wcy5wZW5Db2xvciB8fCAiYmxhY2siLCB0aGlzLmJhY2tncm91bmRDb2xvciA9IHRoaXMucHJvcHMuYmFja2dyb3VuZENvbG9yIHx8ICJyZ2JhKDAsMCwwLDApIiwgdGhpcy5vbkVuZCA9IHRoaXMucHJvcHMub25FbmQsIHRoaXMub25CZWdpbiA9IHRoaXMucHJvcHMub25CZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodCwgZSksIGEodCwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJjb21wb25lbnREaWRNb3VudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYW52YXMgPSB0aGlzLnJlZnMuY3YsIHRoaXMuX2N0eCA9IHRoaXMuX2NhbnZhcy5nZXRDb250ZXh0KCIyZCIpLCB0aGlzLmNsZWFyKCksIHRoaXMuX2hhbmRsZU1vdXNlRXZlbnRzKCksIHRoaXMuX2hhbmRsZVRvdWNoRXZlbnRzKCksIHRoaXMuX3Jlc2l6ZUNhbnZhcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImNvbXBvbmVudFdpbGxVbm1vdW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub2ZmKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY2xlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9jYW52YXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZmlsbFN0eWxlID0gdGhpcy5iYWNrZ3JvdW5kQ29sb3IsIHQuY2xlYXJSZWN0KDAsIDAsIG4ud2lkdGgsIG4uaGVpZ2h0KSwgdC5maWxsUmVjdCgwLCAwLCBuLndpZHRoLCBuLmhlaWdodCksIHRoaXMuX3Jlc2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidG9EYXRhVVJMIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuX2NhbnZhczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udG9EYXRhVVJMLmFwcGx5KG4sIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZnJvbURhdGFVUkwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuZXcgSW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLl9jYW52YXMud2lkdGggLyByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuX2NhbnZhcy5oZWlnaHQgLyByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNldCgpLCBuLnNyYyA9IGUsIG4ub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9jdHguZHJhd0ltYWdlKG4sIDAsIDAsIG8sIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuX2lzRW1wdHkgPSAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpc0VtcHR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0VtcHR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9yZXNpemVDYW52YXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5fY2FudmFzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IE1hdGgubWF4KHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDEsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LndpZHRoID0gdC5vZmZzZXRXaWR0aCAqIG4sIHQuaGVpZ2h0ID0gdC5vZmZzZXRIZWlnaHQgKiBuLCBlLnNjYWxlKG4sIG4pLCB0aGlzLl9pc0VtcHR5ID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX3Jlc2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRzID0gW10sIHRoaXMuX2xhc3RWZWxvY2l0eSA9IDAsIHRoaXMuX2xhc3RXaWR0aCA9ICh0aGlzLm1pbldpZHRoICsgdGhpcy5tYXhXaWR0aCkgLyAyLCB0aGlzLl9pc0VtcHR5ID0gITAsIHRoaXMuX2N0eC5maWxsU3R5bGUgPSB0aGlzLnBlbkNvbG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9oYW5kbGVNb3VzZUV2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3VzZUJ1dHRvbkRvd24gPSAhMSwgdGhpcy5fY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKSwgdGhpcy5fY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX2hhbmRsZU1vdXNlTW92ZS5iaW5kKHRoaXMpKSwgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX2hhbmRsZU1vdXNlVXAuYmluZCh0aGlzKSksIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl9yZXNpemVDYW52YXMuYmluZCh0aGlzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2hhbmRsZVRvdWNoRXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbnZhcy5zdHlsZS5tc1RvdWNoQWN0aW9uID0gIm5vbmUiLCB0aGlzLl9jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQuYmluZCh0aGlzKSksIHRoaXMuX2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0aGlzLl9oYW5kbGVUb3VjaE1vdmUuYmluZCh0aGlzKSksIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgdGhpcy5faGFuZGxlVG91Y2hFbmQuYmluZCh0aGlzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAib2ZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24pLCB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5faGFuZGxlTW91c2VNb3ZlKSwgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX2hhbmRsZU1vdXNlVXApLCB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQpLCB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgdGhpcy5faGFuZGxlVG91Y2hNb3ZlKSwgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCB0aGlzLl9oYW5kbGVUb3VjaEVuZCksIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl9yZXNpemVDYW52YXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9oYW5kbGVNb3VzZURvd24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IGUud2hpY2ggJiYgKHRoaXMuX21vdXNlQnV0dG9uRG93biA9ICEwLCB0aGlzLl9zdHJva2VCZWdpbihlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2hhbmRsZU1vdXNlTW92ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW91c2VCdXR0b25Eb3duICYmIHRoaXMuX3N0cm9rZVVwZGF0ZShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfaGFuZGxlTW91c2VVcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9PT0gZS53aGljaCAmJiB0aGlzLl9tb3VzZUJ1dHRvbkRvd24gJiYgKHRoaXMuX21vdXNlQnV0dG9uRG93biA9ICExLCB0aGlzLl9zdHJva2VFbmQoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9oYW5kbGVUb3VjaFN0YXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuY2hhbmdlZFRvdWNoZXNbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0cm9rZUJlZ2luKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9oYW5kbGVUb3VjaE1vdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmNoYW5nZWRUb3VjaGVzWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdHJva2VVcGRhdGUodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2hhbmRsZVRvdWNoRW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldCA9PT0gdGhpcy5fY2FudmFzICYmIHRoaXMuX3N0cm9rZUVuZChlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfc3Ryb2tlVXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2NyZWF0ZVBvaW50KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRQb2ludCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfc3Ryb2tlQmVnaW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0KCksIHRoaXMuX3N0cm9rZVVwZGF0ZShlKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5vbkJlZ2luICYmIHRoaXMub25CZWdpbihlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfc3Ryb2tlRHJhdyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5kb3RTaXplID8gdGhpcy5kb3RTaXplKCkgOiB0aGlzLmRvdFNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuYmVnaW5QYXRoKCksIHRoaXMuX2RyYXdQb2ludChlLngsIGUueSwgbiksIHQuY2xvc2VQYXRoKCksIHQuZmlsbCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9zdHJva2VFbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5wb2ludHMubGVuZ3RoID4gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLnBvaW50c1swXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXQgJiYgbiAmJiB0aGlzLl9zdHJva2VEcmF3KG4pLCAiZnVuY3Rpb24iID09IHR5cGVvZiB0aGlzLm9uRW5kICYmIHRoaXMub25FbmQoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2NyZWF0ZVBvaW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2NhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBjWyJkZWZhdWx0Il0oZS5jbGllbnRYIC0gdC5sZWZ0LCBlLmNsaWVudFkgLSB0LnRvcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2FkZFBvaW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgciwgbyA9IHRoaXMucG9pbnRzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnB1c2goZSksIG8ubGVuZ3RoID4gMiAmJiAoMyA9PT0gby5sZW5ndGggJiYgby51bnNoaWZ0KG9bMF0pLCB0ID0gdGhpcy5fY2FsY3VsYXRlQ3VydmVDb250cm9sUG9pbnRzKG9bMF0sIG9bMV0sIG9bMl0pLmMyLCBuID0gdGhpcy5fY2FsY3VsYXRlQ3VydmVDb250cm9sUG9pbnRzKG9bMV0sIG9bMl0sIG9bM10pLmMxLCByID0gbmV3IGxbImRlZmF1bHQiXShvWzFdLCB0LCBuLCBvWzJdKSwgdGhpcy5fYWRkQ3VydmUociksIG8uc2hpZnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX2NhbGN1bGF0ZUN1cnZlQ29udHJvbFBvaW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLnggLSB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZS55IC0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQueCAtIG4ueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnkgLSBuLnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IChlLnggKyB0LngpIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAoZS55ICsgdC55KSAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6ICh0LnggKyBuLngpIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAodC55ICsgbi55KSAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5zcXJ0KHIgKiByICsgbyAqIG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IE1hdGguc3FydChpICogaSArIGEgKiBhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBzLnggLSB1LngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcy55IC0gdS55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGYgLyAobCArIGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB1LnggKyBkICogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB1LnkgKyBwICogaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB0LnggLSBtLngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gdC55IC0gbS55OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzE6IG5ldyBjWyJkZWZhdWx0Il0ocy54ICsgeSwgcy55ICsgZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMjogbmV3IGNbImRlZmF1bHQiXSh1LnggKyB5LCB1LnkgKyBnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9hZGRDdXJ2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIHIgPSBlLnN0YXJ0UG9pbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLmVuZFBvaW50LnZlbG9jaXR5RnJvbShyKSwgdCA9IHRoaXMudmVsb2NpdHlGaWx0ZXJXZWlnaHQgKiB0ICsgKDEgLSB0aGlzLnZlbG9jaXR5RmlsdGVyV2VpZ2h0KSAqIHRoaXMuX2xhc3RWZWxvY2l0eSwgbiA9IHRoaXMuX3N0cm9rZVdpZHRoKHQpLCB0aGlzLl9kcmF3Q3VydmUoZSwgdGhpcy5fbGFzdFdpZHRoLCBuKSwgdGhpcy5fbGFzdFZlbG9jaXR5ID0gdCwgdGhpcy5fbGFzdFdpZHRoID0gbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfZHJhd1BvaW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuX2N0eDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5tb3ZlVG8oZSwgdCksIHIuYXJjKGUsIHQsIG4sIDAsIDIgKiBNYXRoLlBJLCAhMSksIHRoaXMuX2lzRW1wdHkgPSAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJfZHJhd0N1cnZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgaSwgYSwgcywgdSwgbCwgYywgZiwgZCwgcCwgaCA9IHRoaXMuX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBuIC0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gTWF0aC5mbG9vcihlLmxlbmd0aCgpKSwgaC5iZWdpblBhdGgoKSwgaSA9IDA7IHIgPiBpOyBpKyspIHUgPSAocyA9IChhID0gaSAvIHIpICogYSkgKiBhLCBkID0gKGYgPSAoYyA9IChsID0gMSAtIGEpICogbCkgKiBsKSAqIGUuc3RhcnRQb2ludC54LCBkICs9IDMgKiBjICogYSAqIGUuY29udHJvbDEueCwgZCArPSAzICogbCAqIHMgKiBlLmNvbnRyb2wyLngsIGQgKz0gdSAqIGUuZW5kUG9pbnQueCwgcCA9IGYgKiBlLnN0YXJ0UG9pbnQueSwgcCArPSAzICogYyAqIGEgKiBlLmNvbnRyb2wxLnksIHAgKz0gMyAqIGwgKiBzICogZS5jb250cm9sMi55LCBwICs9IHUgKiBlLmVuZFBvaW50LnksIG8gPSB0ICsgdSAqIG0sIHRoaXMuX2RyYXdQb2ludChkLCBwLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5jbG9zZVBhdGgoKSwgaC5maWxsKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiX3N0cm9rZVdpZHRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy5tYXhXaWR0aCAvIChlICsgMSksIHRoaXMubWluV2lkdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogInJlbmRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImRpdiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAic2lnbmF0dXJlLXBhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJtLXNpZ25hdHVyZS1wYWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJtLXNpZ25hdHVyZS1wYWQtLWJvZHkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJjYW52YXMiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6ICJjdiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnByb3BzLmNsZWFyQnV0dG9uICYmIHVbImRlZmF1bHQiXS5jcmVhdGVFbGVtZW50KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJtLXNpZ25hdHVyZS1wYWQtLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdVsiZGVmYXVsdCJdLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJ0biBidG4tZGVmYXVsdCBidXR0b24gY2xlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogdGhpcy5jbGVhci5iaW5kKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICJDbGVhciIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSh1WyJkZWZhdWx0Il0uQ29tcG9uZW50KTsKICAgICAgICAgICAgICAgICAgICB0WyJkZWZhdWx0Il0gPSBmLCBlLmV4cG9ydHMgPSB0WyJkZWZhdWx0Il0KICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBlKHQucHJvdG90eXBlLCBuKSwgciAmJiBlKHQsIHIpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZSh0LCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbih0aGlzLCBlKSwgdGhpcy54ID0gdCwgdGhpcy55ID0gciwgdGhpcy50aW1lID0gbyB8fCAobmV3IERhdGUpLmdldFRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIoZSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJ2ZWxvY2l0eUZyb20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRpbWUgIT09IGUudGltZSA/IHRoaXMuZGlzdGFuY2VUbyhlKSAvICh0aGlzLnRpbWUgLSBlLnRpbWUpIDogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkaXN0YW5jZVRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHRoaXMueCAtIGUueCwgMikgKyBNYXRoLnBvdyh0aGlzLnkgLSBlLnksIDIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKSwgZQogICAgICAgICAgICAgICAgICAgICAgICB9KCk7CiAgICAgICAgICAgICAgICAgICAgdFsiZGVmYXVsdCJdID0gbywgZS5leHBvcnRzID0gdFsiZGVmYXVsdCJdCiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5leHBvcnRzID0gcgogICAgICAgICAgICAgICAgfV0pKQogICAgICAgICAgICB9LAogICAgICAgICAgICA3MzYzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBSZWFjdAogICAgICAgICAgICB9LAogICAgICAgICAgICAxNTMzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBlLmV4cG9ydHMgPSBSZWFjdERPTQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB0ID0ge307CgogICAgZnVuY3Rpb24gbihyKSB7CiAgICAgICAgdmFyIG8gPSB0W3JdOwogICAgICAgIGlmIChvICE9PSB1bmRlZmluZWQpIHJldHVybiBvLmV4cG9ydHM7CiAgICAgICAgdmFyIGkgPSB0W3JdID0gewogICAgICAgICAgICBpZDogciwKICAgICAgICAgICAgbG9hZGVkOiAhMSwKICAgICAgICAgICAgZXhwb3J0czoge30KICAgICAgICB9OwogICAgICAgIHJldHVybiBlW3JdLmNhbGwoaS5leHBvcnRzLCBpLCBpLmV4cG9ydHMsIG4pLCBpLmxvYWRlZCA9ICEwLCBpLmV4cG9ydHMKICAgIH0KICAgIG4ubiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlICYmIGUuX19lc01vZHVsZSA/IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGVbImRlZmF1bHQiXQogICAgICAgICAgICB9IDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9OwogICAgICAgICAgICByZXR1cm4gbi5kKHQsIHsKICAgICAgICAgICAgICAgIGE6IHQKICAgICAgICAgICAgfSksIHQKICAgICAgICB9LCBuLmQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGZvciAodmFyIHIgaW4gdCkgbi5vKHQsIHIpICYmICFuLm8oZSwgcikgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHsKICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgZ2V0OiB0W3JdCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgbi5nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZ2xvYmFsVGhpcykgcmV0dXJuIGdsb2JhbFRoaXM7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKQogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHdpbmRvdykgcmV0dXJuIHdpbmRvdwogICAgICAgICAgICB9CiAgICAgICAgfSgpLCBuLm8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwgdCkKICAgICAgICB9LCBuLnIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiBTeW1ib2wgJiYgU3ltYm9sLnRvU3RyaW5nVGFnICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAiTW9kdWxlIgogICAgICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgbi5ubWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlLnBhdGhzID0gW10sIGUuY2hpbGRyZW4gfHwgKGUuY2hpbGRyZW4gPSBbXSksIGUKICAgICAgICB9LAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgIHZhciBlID0gbig3MzYzKSwKICAgICAgICAgICAgICAgIHQgPSBuLm4oZSksCiAgICAgICAgICAgICAgICByID0gZSA9PiBlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7CiAgICAgICAgICAgIGNvbnN0IG8gPSAiYmx1ciIsCiAgICAgICAgICAgICAgICBpID0gImNoYW5nZSIsCiAgICAgICAgICAgICAgICBhID0gImlucHV0IiwKICAgICAgICAgICAgICAgIHMgPSAib25CbHVyIiwKICAgICAgICAgICAgICAgIHUgPSAib25DaGFuZ2UiLAogICAgICAgICAgICAgICAgbCA9ICJvblN1Ym1pdCIsCiAgICAgICAgICAgICAgICBjID0gIm9uVG91Y2hlZCIsCiAgICAgICAgICAgICAgICBmID0gImFsbCIsCiAgICAgICAgICAgICAgICBkID0gInVuZGVmaW5lZCIsCiAgICAgICAgICAgICAgICBwID0gIm1heCIsCiAgICAgICAgICAgICAgICBoID0gIm1pbiIsCiAgICAgICAgICAgICAgICBtID0gIm1heExlbmd0aCIsCiAgICAgICAgICAgICAgICB5ID0gIm1pbkxlbmd0aCIsCiAgICAgICAgICAgICAgICBnID0gInBhdHRlcm4iLAogICAgICAgICAgICAgICAgdiA9ICJyZXF1aXJlZCIsCiAgICAgICAgICAgICAgICBiID0gInZhbGlkYXRlIjsKICAgICAgICAgICAgdmFyIHcgPSBlID0+IG51bGwgPT0gZTsKICAgICAgICAgICAgY29uc3QgTyA9IGUgPT4gIm9iamVjdCIgPT0gdHlwZW9mIGU7CiAgICAgICAgICAgIHZhciBfID0gZSA9PiAhdyhlKSAmJiAhQXJyYXkuaXNBcnJheShlKSAmJiBPKGUpICYmICEoZSBpbnN0YW5jZW9mIERhdGUpLAogICAgICAgICAgICAgICAgeCA9IGUgPT4gL15cdyokLy50ZXN0KGUpLAogICAgICAgICAgICAgICAgayA9IGUgPT4gZS5maWx0ZXIoQm9vbGVhbiksCiAgICAgICAgICAgICAgICBFID0gZSA9PiBrKGUucmVwbGFjZSgvWyJ8J10vZywgIiIpLnJlcGxhY2UoL1xbL2csICIuIikucmVwbGFjZSgvXF0vZywgIiIpLnNwbGl0KCIuIikpOwoKICAgICAgICAgICAgZnVuY3Rpb24gQyhlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICBsZXQgciA9IC0xOwogICAgICAgICAgICAgICAgY29uc3QgbyA9IHgodCkgPyBbdF0gOiBFKHQpLAogICAgICAgICAgICAgICAgICAgIGkgPSBvLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICBhID0gaSAtIDE7CiAgICAgICAgICAgICAgICBmb3IgKDsgKytyIDwgaTspIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gb1tyXTsKICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IG47CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgIT09IGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGVbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBfKG4pIHx8IEFycmF5LmlzQXJyYXkobikgPyBuIDogaXNOYU4oK29bciArIDFdKSA/IHt9IDogW10KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZVt0XSA9IGksIGUgPSBlW3RdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBTID0gKGUsIHQgPSB7fSkgPT4gewogICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbiBpbiBlKSB4KG4pID8gdFtuXSA9IGVbbl0gOiBDKHQsIG4sIGVbbl0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaiA9IGUgPT4gZSA9PT0gdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgUCA9IChlID0ge30sIHQsIG4pID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gayh0LnNwbGl0KC9bLFtcXS5dKz8vKSkucmVkdWNlKCgoZSwgdCkgPT4gdyhlKSA/IGUgOiBlW3RdKSwgZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGoocikgfHwgciA9PT0gZSA/IGooZVt0XSkgPyBuIDogZVt0XSA6IHIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBID0gKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgICAgICByKGUpICYmIGUucmVtb3ZlRXZlbnRMaXN0ZW5lciAmJiAoZS5yZW1vdmVFdmVudExpc3RlbmVyKGEsIHQpLCBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoaSwgdCksIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLCB0KSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGNvbnN0IEQgPSB7CiAgICAgICAgICAgICAgICBpc1ZhbGlkOiAhMSwKICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHZhciBUID0gZSA9PiBBcnJheS5pc0FycmF5KGUpID8gZS5yZWR1Y2UoKChlLCB0KSA9PiB0ICYmIHQucmVmLmNoZWNrZWQgPyB7CiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZDogITAsCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHQucmVmLnZhbHVlCiAgICAgICAgICAgICAgICB9IDogZSksIEQpIDogRCwKICAgICAgICAgICAgICAgIE4gPSBlID0+ICJyYWRpbyIgPT09IGUudHlwZSwKICAgICAgICAgICAgICAgIE0gPSBlID0+ICJmaWxlIiA9PT0gZS50eXBlLAogICAgICAgICAgICAgICAgTCA9IGUgPT4gImNoZWNrYm94IiA9PT0gZS50eXBlLAogICAgICAgICAgICAgICAgSSA9IGUgPT4gInNlbGVjdC1tdWx0aXBsZSIgPT09IGUudHlwZTsKICAgICAgICAgICAgY29uc3QgUiA9IHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITEsCiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZDogITEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBxID0gewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAhMCwKICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkOiAhMAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgdmFyIEYgPSBlID0+IHsKICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUubGVuZ3RoID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5maWx0ZXIoKGUgPT4gZSAmJiBlLnJlZi5jaGVja2VkKSkubWFwKCgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkgPT4gZSkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkOiAhIXQubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkOiB0LAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogcgogICAgICAgICAgICAgICAgICAgIH0gPSBlWzBdLnJlZjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA/IHIgJiYgIWooci52YWx1ZSkgPyBqKG4pIHx8ICIiID09PSBuID8gcSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6ICEwCiAgICAgICAgICAgICAgICAgICAgfSA6IHEgOiBSCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gUgogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gVihlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICBjb25zdCBpID0gZS5jdXJyZW50W3RdOwogICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICByZWY6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQXNOdW1iZXI6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQXNEYXRlOiB1LAogICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZUFzOiBsCiAgICAgICAgICAgICAgICAgICAgfSA9IGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgcikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBNKG4pID8gbi5maWxlcyA6IE4obikgPyBUKGkub3B0aW9ucykudmFsdWUgOiBJKG4pID8gKGEgPSBuLm9wdGlvbnMsIFsuLi5hXS5maWx0ZXIoKCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBlCiAgICAgICAgICAgICAgICAgICAgfSkgPT4gZSkpLm1hcCgoKHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUKICAgICAgICAgICAgICAgICAgICB9KSA9PiBlKSkpIDogTChuKSA/IEYoaS5vcHRpb25zKS52YWx1ZSA6IG8gPyBlIDogcyA/ICIiID09PSBlID8gTmFOIDogK2UgOiB1ID8gbi52YWx1ZUFzRGF0ZSA6IGwgPyBsKGUpIDogZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGE7CiAgICAgICAgICAgICAgICBpZiAobikgcmV0dXJuIFAobi5jdXJyZW50LCB0KQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBCKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhZSB8fCBlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgZS5ub2RlVHlwZSAhPT0gTm9kZS5ET0NVTUVOVF9OT0RFICYmIEIoZS5wYXJlbnROb2RlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBVID0gZSA9PiBfKGUpICYmICFPYmplY3Qua2V5cyhlKS5sZW5ndGgsCiAgICAgICAgICAgICAgICBIID0gZSA9PiAiYm9vbGVhbiIgPT0gdHlwZW9mIGU7CgogICAgICAgICAgICBmdW5jdGlvbiB6KGUsIHQpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB4KHQpID8gW3RdIDogRSh0KSwKICAgICAgICAgICAgICAgICAgICByID0gMSA9PSBuLmxlbmd0aCA/IGUgOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0LnNsaWNlKDAsIC0xKS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHIgPCBuOykgZSA9IGooZSkgPyByKysgOiBlW3RbcisrXV07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfShlLCBuKSwKICAgICAgICAgICAgICAgICAgICBvID0gbltuLmxlbmd0aCAtIDFdOwogICAgICAgICAgICAgICAgbGV0IGk7CiAgICAgICAgICAgICAgICByICYmIGRlbGV0ZSByW29dOwogICAgICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBuLnNsaWNlKDAsIC0xKS5sZW5ndGg7IHQrKykgewogICAgICAgICAgICAgICAgICAgIGxldCByLCBvID0gLTE7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IG4uc2xpY2UoMCwgLSh0ICsgMSkpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gYS5sZW5ndGggLSAxOwogICAgICAgICAgICAgICAgICAgIGZvciAodCA+IDAgJiYgKGkgPSBlKTsgKytvIDwgYS5sZW5ndGg7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBhW29dOwogICAgICAgICAgICAgICAgICAgICAgICByID0gciA/IHJbdF0gOiBlW3RdLCBzID09PSBvICYmIChfKHIpICYmIFUocikgfHwgQXJyYXkuaXNBcnJheShyKSAmJiAhci5maWx0ZXIoKGUgPT4gXyhlKSAmJiAhVShlKSB8fCBIKGUpKSkubGVuZ3RoKSAmJiAoaSA/IGRlbGV0ZSBpW3RdIDogZGVsZXRlIGVbdF0pLCBpID0gcgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgVyA9IChlLCB0KSA9PiBlICYmIGUucmVmID09PSB0OwogICAgICAgICAgICB2YXIgSyA9IGUgPT4gdyhlKSB8fCAhTyhlKTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIFkoZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKEsoZSkgfHwgSyh0KSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHIgaW4gdCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSBlW3JdLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdFtyXTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBlW3JdID0gXyhvKSAmJiBfKGkpIHx8IEFycmF5LmlzQXJyYXkobykgJiYgQXJyYXkuaXNBcnJheShpKSA/IFkobywgaSkgOiBpCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEcodCwgbiwgcikgewogICAgICAgICAgICAgICAgaWYgKEsodCkgfHwgSyhuKSB8fCB0IGluc3RhbmNlb2YgRGF0ZSB8fCBuIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHQgPT09IG47CiAgICAgICAgICAgICAgICBpZiAoISgwLCBlLmlzVmFsaWRFbGVtZW50KSh0KSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBPYmplY3Qua2V5cyh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IE9iamVjdC5rZXlzKG4pOwogICAgICAgICAgICAgICAgICAgIGlmIChlLmxlbmd0aCAhPT0gby5sZW5ndGgpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG8gb2YgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdFtvXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyIHx8ICJyZWYiICE9PSBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gbltvXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoXyhlKSB8fCBBcnJheS5pc0FycmF5KGUpKSAmJiAoXyh0KSB8fCBBcnJheS5pc0FycmF5KHQpKSA/ICFHKGUsIHQsIHIpIDogZSAhPT0gdCkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gJChlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICBsZXQgaSA9IC0xOwogICAgICAgICAgICAgICAgZm9yICg7ICsraSA8IGUubGVuZ3RoOykgewogICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgciBpbiBlW2ldKSBBcnJheS5pc0FycmF5KGVbaV1bcl0pID8gKCFuW2ldICYmIChuW2ldID0ge30pLCBuW2ldW3JdID0gW10sICQoZVtpXVtyXSwgUCh0W2ldIHx8IHt9LCByLCBbXSksIG5baV1bcl0sIG5baV0sIHIpKSA6IEcoUCh0W2ldIHx8IHt9LCByKSwgZVtpXVtyXSkgPyBDKG5baV0gfHwge30sIHIpIDogbltpXSA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbltpXSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgW3JdOiAhMAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHIgJiYgIW4ubGVuZ3RoICYmIGRlbGV0ZSByW29dCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBRID0gKGUsIHQsIG4pID0+IFkoJChlLCB0LCBuLnNsaWNlKDAsIGUubGVuZ3RoKSksICQodCwgZSwgbi5zbGljZSgwLCBlLmxlbmd0aCkpKSwKICAgICAgICAgICAgICAgIFogPSBlID0+ICJzdHJpbmciID09IHR5cGVvZiBlLAogICAgICAgICAgICAgICAgWCA9IChlLCB0LCBuLCByLCBvKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHt9OwogICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdCBpbiBlLmN1cnJlbnQpKGoobykgfHwgKFoobykgPyB0LnN0YXJ0c1dpdGgobykgOiBBcnJheS5pc0FycmF5KG8pICYmIG8uZmluZCgoZSA9PiB0LnN0YXJ0c1dpdGgoZSkpKSkpICYmIChpW3RdID0gVihlLCB0LCB1bmRlZmluZWQsIHIpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA/IFMoaSkgOiBZKHQsIFMoaSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgSiA9IGUgPT4gZSBpbnN0YW5jZW9mIFJlZ0V4cCwKICAgICAgICAgICAgICAgIGVlID0gZSA9PiBfKGUpICYmICFKKGUpID8gZSA6IHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAiIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRlID0gZSA9PiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLAogICAgICAgICAgICAgICAgbmUgPSB0ID0+IFoodCkgfHwgKDAsIGUuaXNWYWxpZEVsZW1lbnQpKHQpOwoKICAgICAgICAgICAgZnVuY3Rpb24gcmUoZSwgdCwgbiA9ICJ2YWxpZGF0ZSIpIHsKICAgICAgICAgICAgICAgIGlmIChuZShlKSB8fCBIKGUpICYmICFlKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHR5cGU6IG4sCiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbmUoZSkgPyBlIDogIiIsCiAgICAgICAgICAgICAgICAgICAgcmVmOiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIG9lID0gKGUsIHQsIG4sIHIsIG8pID0+IHQgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG5bZV0pLCB7CiAgICAgICAgICAgICAgICAgICAgdHlwZXM6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbltlXSAmJiBuW2VdLnR5cGVzID8gbltlXS50eXBlcyA6IHt9KSwgewogICAgICAgICAgICAgICAgICAgICAgICBbcl06IG8gfHwgITAKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkgOiB7fSwKICAgICAgICAgICAgICAgIGllID0gYXN5bmMgKGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICByZWY6IG4sCiAgICAgICAgICAgICAgICAgICAgcmVmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBvLAogICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBpLAogICAgICAgICAgICAgICAgICAgIG1heExlbmd0aDogYSwKICAgICAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IHMsCiAgICAgICAgICAgICAgICAgICAgbWluOiB1LAogICAgICAgICAgICAgICAgICAgIG1heDogbCwKICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBjLAogICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlOiBmCiAgICAgICAgICAgICAgICB9LCBkKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgTyA9IG4ubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBrID0gTihuKSwKICAgICAgICAgICAgICAgICAgICAgICAgRSA9IEwobiksCiAgICAgICAgICAgICAgICAgICAgICAgIEMgPSBrIHx8IEUsCiAgICAgICAgICAgICAgICAgICAgICAgIFMgPSAiIiA9PT0gciwKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IG9lLmJpbmQobnVsbCwgTywgdCwgeCksCiAgICAgICAgICAgICAgICAgICAgICAgIFAgPSAoZSwgdCwgciwgbyA9IG0sIGkgPSB5KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gZSA/IHQgOiByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeFtPXSA9IE9iamVjdC5hc3NpZ24oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUgPyBvIDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaihlID8gbyA6IGksIGEpKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGlmIChpICYmICghayAmJiAhRSAmJiAoUyB8fCB3KHIpKSB8fCBIKHIpICYmICFyIHx8IEUgJiYgIUYobykuaXNWYWxpZCB8fCBrICYmICFUKG8pLmlzVmFsaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbwogICAgICAgICAgICAgICAgICAgICAgICB9ID0gbmUoaSkgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogISFpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaQogICAgICAgICAgICAgICAgICAgICAgICB9IDogZWUoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICYmICh4W09dID0gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogQyA/ICgoZS5jdXJyZW50W09dLm9wdGlvbnMgfHwgW10pWzBdIHx8IHt9KS5yZWYgOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKHYsIG8pKSwgIXQpKSByZXR1cm4geAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoISh3KHUpICYmIHcobCkgfHwgIiIgPT09IHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlLCBvOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gZWUobCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZWUodSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IG4udmFsdWVBc0RhdGUgfHwgbmV3IERhdGUocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaKGkudmFsdWUpICYmIChlID0gdCA+IG5ldyBEYXRlKGkudmFsdWUpKSwgWihhLnZhbHVlKSAmJiAobyA9IHQgPCBuZXcgRGF0ZShhLnZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBuLnZhbHVlQXNOdW1iZXIgfHwgcGFyc2VGbG9hdChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcoaS52YWx1ZSkgfHwgKGUgPSB0ID4gaS52YWx1ZSksIHcoYS52YWx1ZSkgfHwgKG8gPSB0IDwgYS52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGUgfHwgbykgJiYgKFAoISFlLCBpLm1lc3NhZ2UsIGEubWVzc2FnZSwgcCwgaCksICF0KSkgcmV0dXJuIHgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKFoocikgJiYgIVMgJiYgKGEgfHwgcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGVlKGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVlKHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICF3KGUudmFsdWUpICYmIHIubGVuZ3RoID4gZS52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAhdyhuLnZhbHVlKSAmJiByLmxlbmd0aCA8IG4udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobyB8fCBpKSAmJiAoUChvLCBlLm1lc3NhZ2UsIG4ubWVzc2FnZSksICF0KSkgcmV0dXJuIHgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKFoocikgJiYgYyAmJiAhUykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG8KICAgICAgICAgICAgICAgICAgICAgICAgfSA9IGVlKGMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoSihlKSAmJiAhZS50ZXN0KHIpICYmICh4W09dID0gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaihnLCBvKSksICF0KSkgcmV0dXJuIHgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IFYoZSwgTywgZCwgITEsICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBDICYmIG8gPyBvWzBdLnJlZiA6IG47CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZShmKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHJlKGF3YWl0IGYociksIGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgKHhbT10gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGUpLCBqKGIsIGUubWVzc2FnZSkpLCAhdCkpIHJldHVybiB4CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXyhmKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW24sIG9dIG9mIE9iamVjdC5lbnRyaWVzKGYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVKGUpICYmICF0KSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gcmUoYXdhaXQgbyhyKSwgaSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAmJiAoZSA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYSksIGoobiwgYS5tZXNzYWdlKSksIHQgJiYgKHhbT10gPSBlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVShlKSAmJiAoeFtPXSA9IE9iamVjdC5hc3NpZ24oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlKSwgIXQpKSByZXR1cm4geAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB4CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBjb25zdCBhZSA9IChlLCB0LCBuID0gW10pID0+IHsKICAgICAgICAgICAgICAgIGZvciAoY29uc3QgciBpbiB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IGUgKyAoXyh0KSA/IGAuJHtyfWAgOiBgWyR7cn1dYCk7CiAgICAgICAgICAgICAgICAgICAgSyh0W3JdKSA/IG4ucHVzaChvKSA6IGFlKG8sIHRbcl0sIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgc2UgPSAoZSwgdCwgbiwgciwgbykgPT4gewogICAgICAgICAgICAgICAgICAgIGxldCBpID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmFkZCh0KSwgVShlKSB8fCAoaSA9IFAoZSwgdCksIChfKGkpIHx8IEFycmF5LmlzQXJyYXkoaSkpICYmIGFlKHQsIGkpLmZvckVhY2goKGUgPT4gbi5hZGQoZSkpKSksIGooaSkgPyBvID8gciA6IFAociwgdCkgOiBpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdWUgPSAoewogICAgICAgICAgICAgICAgICAgIGlzT25CbHVyOiBlLAogICAgICAgICAgICAgICAgICAgIGlzT25DaGFuZ2U6IHQsCiAgICAgICAgICAgICAgICAgICAgaXNPblRvdWNoOiBuLAogICAgICAgICAgICAgICAgICAgIGlzVG91Y2hlZDogciwKICAgICAgICAgICAgICAgICAgICBpc1JlVmFsaWRhdGVPbkJsdXI6IG8sCiAgICAgICAgICAgICAgICAgICAgaXNSZVZhbGlkYXRlT25DaGFuZ2U6IGksCiAgICAgICAgICAgICAgICAgICAgaXNCbHVyRXZlbnQ6IGEsCiAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0ZWQ6IHMsCiAgICAgICAgICAgICAgICAgICAgaXNPbkFsbDogdQogICAgICAgICAgICAgICAgfSkgPT4gIXUgJiYgKCFzICYmIG4gPyAhKHIgfHwgYSkgOiAocyA/IG8gOiBlKSA/ICFhIDogIShzID8gaSA6IHQpIHx8IGEpLAogICAgICAgICAgICAgICAgbGUgPSBlID0+IGUuc3Vic3RyaW5nKDAsIGUuaW5kZXhPZigiWyIpKTsKICAgICAgICAgICAgY29uc3QgY2UgPSAoZSwgdCkgPT4gUmVnRXhwKGBeJHt0fShbfC4pXFxkK2AucmVwbGFjZSgvXFsvZywgIlxcWyIpLnJlcGxhY2UoL1xdL2csICJcXF0iKSkudGVzdChlKTsKICAgICAgICAgICAgdmFyIGZlID0gKGUsIHQpID0+IFsuLi5lXS5zb21lKChlID0+IGNlKHQsIGUpKSk7CiAgICAgICAgICAgIHZhciBkZSA9IHR5cGVvZiB3aW5kb3cgIT09IGQgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSBkOwoKICAgICAgICAgICAgZnVuY3Rpb24gcGUoZSkgewogICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICBsZXQgbjsKICAgICAgICAgICAgICAgIGlmIChLKGUpIHx8IGRlICYmIChlIGluc3RhbmNlb2YgRmlsZSB8fCByKGUpKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICBpZiAoIVsiU2V0IiwgIk1hcCIsICJPYmplY3QiLCAiRGF0ZSIsICJBcnJheSJdLmluY2x1ZGVzKG51bGwgPT09ICh0ID0gZS5jb25zdHJ1Y3RvcikgfHwgdm9pZCAwID09PSB0ID8gdm9pZCAwIDogdC5uYW1lKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBuID0gbmV3IERhdGUoZS5nZXRUaW1lKCkpLCBuOwogICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTZXQpIHsKICAgICAgICAgICAgICAgICAgICBuID0gbmV3IFNldDsKICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgZSkgbi5hZGQodCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgbiA9IG5ldyBNYXA7CiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIGUua2V5cygpKSBuLnNldCh0LCBwZShlLmdldCh0KSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuID0gQXJyYXkuaXNBcnJheShlKSA/IFtdIDoge307CiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgaW4gZSkgblt0XSA9IHBlKGVbdF0pOwogICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgaGUgPSBlID0+ICh7CiAgICAgICAgICAgICAgICAgICAgaXNPblN1Ym1pdDogIWUgfHwgZSA9PT0gbCwKICAgICAgICAgICAgICAgICAgICBpc09uQmx1cjogZSA9PT0gcywKICAgICAgICAgICAgICAgICAgICBpc09uQ2hhbmdlOiBlID09PSB1LAogICAgICAgICAgICAgICAgICAgIGlzT25BbGw6IGUgPT09IGYsCiAgICAgICAgICAgICAgICAgICAgaXNPblRvdWNoOiBlID09PSBjCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIG1lID0gZSA9PiBOKGUpIHx8IEwoZSk7CiAgICAgICAgICAgIGNvbnN0IHllID0gdHlwZW9mIHdpbmRvdyA9PT0gZCwKICAgICAgICAgICAgICAgIGdlID0gZGUgPyAiUHJveHkiIGluIHdpbmRvdyA6IHR5cGVvZiBQcm94eSAhPT0gZDsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHZlKHsKICAgICAgICAgICAgICAgIG1vZGU6IHQgPSBsLAogICAgICAgICAgICAgICAgcmVWYWxpZGF0ZU1vZGU6IG4gPSB1LAogICAgICAgICAgICAgICAgcmVzb2x2ZXI6IHMsCiAgICAgICAgICAgICAgICBjb250ZXh0OiBjLAogICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlczogZCA9IHt9LAogICAgICAgICAgICAgICAgc2hvdWxkRm9jdXNFcnJvcjogcCA9ICEwLAogICAgICAgICAgICAgICAgc2hvdWxkVW5yZWdpc3RlcjogaCA9ICEwLAogICAgICAgICAgICAgICAgY3JpdGVyaWFNb2RlOiBtCiAgICAgICAgICAgIH0gPSB7fSkgewogICAgICAgICAgICAgICAgY29uc3QgeSA9ICgwLCBlLnVzZVJlZikoe30pLAogICAgICAgICAgICAgICAgICAgIGcgPSAoMCwgZS51c2VSZWYpKHt9KSwKICAgICAgICAgICAgICAgICAgICB2ID0gKDAsIGUudXNlUmVmKSh7fSksCiAgICAgICAgICAgICAgICAgICAgYiA9ICgwLCBlLnVzZVJlZikobmV3IFNldCksCiAgICAgICAgICAgICAgICAgICAgTyA9ICgwLCBlLnVzZVJlZikoe30pLAogICAgICAgICAgICAgICAgICAgIEUgPSAoMCwgZS51c2VSZWYpKHt9KSwKICAgICAgICAgICAgICAgICAgICBEID0gKDAsIGUudXNlUmVmKSh7fSksCiAgICAgICAgICAgICAgICAgICAgVCA9ICgwLCBlLnVzZVJlZikoe30pLAogICAgICAgICAgICAgICAgICAgIFIgPSAoMCwgZS51c2VSZWYpKGQpLAogICAgICAgICAgICAgICAgICAgIHEgPSAoMCwgZS51c2VSZWYpKCExKSwKICAgICAgICAgICAgICAgICAgICBGID0gKDAsIGUudXNlUmVmKSghMSksCiAgICAgICAgICAgICAgICAgICAgSCA9ICgwLCBlLnVzZVJlZikoKSwKICAgICAgICAgICAgICAgICAgICBZID0gKDAsIGUudXNlUmVmKSh7fSksCiAgICAgICAgICAgICAgICAgICAgJCA9ICgwLCBlLnVzZVJlZikoe30pLAogICAgICAgICAgICAgICAgICAgIEogPSAoMCwgZS51c2VSZWYpKGMpLAogICAgICAgICAgICAgICAgICAgIGVlID0gKDAsIGUudXNlUmVmKShzKSwKICAgICAgICAgICAgICAgICAgICBuZSA9ICgwLCBlLnVzZVJlZikobmV3IFNldCksCiAgICAgICAgICAgICAgICAgICAgcmUgPSAoMCwgZS51c2VSZWYpKGhlKHQpKSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzT25TdWJtaXQ6IG9lLAogICAgICAgICAgICAgICAgICAgICAgICBpc09uVG91Y2g6IGNlCiAgICAgICAgICAgICAgICAgICAgfSA9IHJlLmN1cnJlbnQsCiAgICAgICAgICAgICAgICAgICAgdmUgPSBtID09PSBmLAogICAgICAgICAgICAgICAgICAgIFtiZSwgd2VdID0gKDAsIGUudXNlU3RhdGUpKHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNEaXJ0eTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRhdGluZzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRpcnR5RmllbGRzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0ZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRDb3VudDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hlZDoge30sCiAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VibWl0dGluZzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VibWl0U3VjY2Vzc2Z1bDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6ICFvZSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiB7fQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIE9lID0gKDAsIGUudXNlUmVmKSh7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzRGlydHk6ICFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlydHlGaWVsZHM6ICFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hlZDogIWdlIHx8IGNlLAogICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkYXRpbmc6ICFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0aW5nOiAhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6ICFnZQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIF9lID0gKDAsIGUudXNlUmVmKShiZSksCiAgICAgICAgICAgICAgICAgICAgeGUgPSAoMCwgZS51c2VSZWYpKCksCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpc09uQmx1cjoga2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzT25DaGFuZ2U6IEVlCiAgICAgICAgICAgICAgICAgICAgfSA9ICgwLCBlLnVzZVJlZikoaGUobikpLmN1cnJlbnQ7CiAgICAgICAgICAgICAgICBKLmN1cnJlbnQgPSBjLCBlZS5jdXJyZW50ID0gcywgX2UuY3VycmVudCA9IGJlLCBZLmN1cnJlbnQgPSBoID8ge30gOiBVKFkuY3VycmVudCkgPyBwZShkKSA6IFkuY3VycmVudDsKICAgICAgICAgICAgICAgIGNvbnN0IENlID0gKDAsIGUudXNlQ2FsbGJhY2spKCgoZSA9IHt9KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHEuY3VycmVudCB8fCAoX2UuY3VycmVudCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgX2UuY3VycmVudCksIGUpLCB3ZShfZS5jdXJyZW50KSkKICAgICAgICAgICAgICAgICAgICB9KSwgW10pLAogICAgICAgICAgICAgICAgICAgIFNlID0gKCkgPT4gT2UuY3VycmVudC5pc1ZhbGlkYXRpbmcgJiYgQ2UoewogICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkYXRpbmc6ICEwCiAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgamUgPSAoMCwgZS51c2VDYWxsYmFjaykoKChlLCB0LCBuID0gITEsIHIgPSB7fSwgbykgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IG4gfHwgKCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZEZpZWxkczogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1dpdGhWYWxpZGF0aW9uOiBvCiAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBqKG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBQKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgJiYgISFhIHx8ICFpICYmICFHKGEsIG4sICEwKSB8fCBpICYmIFAobywgdCkgJiYgIVAociwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBfZS5jdXJyZW50LmVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkRmllbGRzOiBULmN1cnJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNXaXRoVmFsaWRhdGlvbjogRC5jdXJyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gUChfZS5jdXJyZW50LmVycm9ycywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPyAoeihULmN1cnJlbnQsIGUpLCBpID0gaSB8fCAhYSB8fCAhRyhhLCB0LCAhMCksIEMoX2UuY3VycmVudC5lcnJvcnMsIGUsIHQpKSA6ICgoUChELmN1cnJlbnQsIGUpIHx8IGVlLmN1cnJlbnQpICYmIChDKFQuY3VycmVudCwgZSwgITApLCBpID0gaSB8fCBhKSwgeihfZS5jdXJyZW50LmVycm9ycywgZSkpLCAoaSAmJiAhdyhuKSB8fCAhVShyKSB8fCBPZS5jdXJyZW50LmlzVmFsaWRhdGluZykgJiYgQ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHIpLCBlZS5jdXJyZW50ID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZDogISFvCiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7fSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRhdGluZzogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSksIFtdKSwKICAgICAgICAgICAgICAgICAgICBQZSA9ICgwLCBlLnVzZUNhbGxiYWNrKSgoKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogbwogICAgICAgICAgICAgICAgICAgICAgICB9ID0geS5jdXJyZW50W2VdLCBpID0gZGUgJiYgcihuKSAmJiB3KHQpID8gIiIgOiB0OwogICAgICAgICAgICAgICAgICAgICAgICBOKG4pID8gKG8gfHwgW10pLmZvckVhY2goKCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSkgPT4gZS5jaGVja2VkID0gZS52YWx1ZSA9PT0gaSkpIDogTShuKSAmJiAhWihpKSA/IG4uZmlsZXMgPSBpIDogSShuKSA/IFsuLi5uLm9wdGlvbnNdLmZvckVhY2goKGUgPT4gZS5zZWxlY3RlZCA9IGkuaW5jbHVkZXMoZS52YWx1ZSkpKSA6IEwobikgJiYgbyA/IG8ubGVuZ3RoID4gMSA/IG8uZm9yRWFjaCgoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogZQogICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiBlLmNoZWNrZWQgPSBBcnJheS5pc0FycmF5KGkpID8gISFpLmZpbmQoKHQgPT4gdCA9PT0gZS52YWx1ZSkpIDogaSA9PT0gZS52YWx1ZSkpIDogb1swXS5yZWYuY2hlY2tlZCA9ICEhaSA6IG4udmFsdWUgPSBpCiAgICAgICAgICAgICAgICAgICAgfSksIFtdKSwKICAgICAgICAgICAgICAgICAgICBBZSA9ICgwLCBlLnVzZUNhbGxiYWNrKSgoKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9lLmN1cnJlbnQuaXNEaXJ0eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IFZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiB0ICYmIEMobiwgZSwgdCksICFHKG4sIFIuY3VycmVudCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICB9KSwgW10pLAogICAgICAgICAgICAgICAgICAgIERlID0gKDAsIGUudXNlQ2FsbGJhY2spKCgoZSwgdCA9ICEwKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPZS5jdXJyZW50LmlzRGlydHkgfHwgT2UuY3VycmVudC5kaXJ0eUZpZWxkcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9ICFHKFAoUi5jdXJyZW50LCBlKSwgVih5LCBlLCBZKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFAoX2UuY3VycmVudC5kaXJ0eUZpZWxkcywgZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IF9lLmN1cnJlbnQuaXNEaXJ0eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPyBDKF9lLmN1cnJlbnQuZGlydHlGaWVsZHMsIGUsICEwKSA6IHooX2UuY3VycmVudC5kaXJ0eUZpZWxkcywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RpcnR5OiBBZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJ0eUZpZWxkczogX2UuY3VycmVudC5kaXJ0eUZpZWxkcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IE9lLmN1cnJlbnQuaXNEaXJ0eSAmJiBvICE9PSBpLmlzRGlydHkgfHwgT2UuY3VycmVudC5kaXJ0eUZpZWxkcyAmJiByICE9PSBQKF9lLmN1cnJlbnQuZGlydHlGaWVsZHMsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgJiYgdCAmJiBDZShpKSwgYSA/IGkgOiB7fQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7fQogICAgICAgICAgICAgICAgICAgIH0pLCBbXSksCiAgICAgICAgICAgICAgICAgICAgVGUgPSAoMCwgZS51c2VDYWxsYmFjaykoKGFzeW5jIChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSAoYXdhaXQgaWUoeSwgdmUsIHkuY3VycmVudFtlXSwgWSkpW2VdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gamUoZSwgbiwgdCksIGoobikKICAgICAgICAgICAgICAgICAgICB9KSwgW2plLCB2ZV0pLAogICAgICAgICAgICAgICAgICAgIE5lID0gKDAsIGUudXNlQ2FsbGJhY2spKChhc3luYyBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBhd2FpdCBlZS5jdXJyZW50KFZlKCksIEouY3VycmVudCwgdmUpLCBuID0gX2UuY3VycmVudC5pc1ZhbGlkOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGUubWFwKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gUCh0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA/IEMoX2UuY3VycmVudC5lcnJvcnMsIGUsIG4pIDogeihfZS5jdXJyZW50LmVycm9ycywgZSksICFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuZXZlcnkoQm9vbGVhbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IFUodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZGF0aW5nOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgfSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gUCh0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqZShlLCByLCBuICE9PSBVKHQpLCB7fSwgVSh0KSksICFyCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgW2plLCB2ZV0pLAogICAgICAgICAgICAgICAgICAgIE1lID0gKDAsIGUudXNlQ2FsbGJhY2spKChhc3luYyBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGUgfHwgT2JqZWN0LmtleXMoeS5jdXJyZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNlKCksIGVlLmN1cnJlbnQpIHJldHVybiBOZSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICFlICYmIChfZS5jdXJyZW50LmVycm9ycyA9IHt9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBhd2FpdCBQcm9taXNlLmFsbCh0Lm1hcCgoYXN5bmMgZSA9PiBhd2FpdCBUZShlLCBudWxsKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZGF0aW5nOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4uZXZlcnkoQm9vbGVhbikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgVGUodCkKICAgICAgICAgICAgICAgICAgICB9KSwgW05lLCBUZV0pLAogICAgICAgICAgICAgICAgICAgIExlID0gKDAsIGUudXNlQ2FsbGJhY2spKCgoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICBzaG91bGREaXJ0eTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkVmFsaWRhdGU6IHIKICAgICAgICAgICAgICAgICAgICB9KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgQyhvLCBlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpIG9mIGFlKGUsIHQpKSB5LmN1cnJlbnRbaV0gJiYgKFBlKGksIFAobywgaSkpLCBuICYmIERlKGkpLCByICYmIE1lKGkpKQogICAgICAgICAgICAgICAgICAgIH0pLCBbTWUsIFBlLCBEZV0pLAogICAgICAgICAgICAgICAgICAgIEllID0gKDAsIGUudXNlQ2FsbGJhY2spKCgoZSwgdCwgbikgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWggJiYgIUsodCkgJiYgQyhZLmN1cnJlbnQsIGUsIEFycmF5LmlzQXJyYXkodCkgPyBbLi4udF0gOiBPYmplY3QuYXNzaWduKHt9LCB0KSksIHkuY3VycmVudFtlXSkgUGUoZSwgdCksIG4uc2hvdWxkRGlydHkgJiYgRGUoZSksIG4uc2hvdWxkVmFsaWRhdGUgJiYgTWUoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFLKHQpICYmIChMZShlLCB0LCBuKSwgbmUuY3VycmVudC5oYXMoZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gbGUoZSkgfHwgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMoZy5jdXJyZW50LCBlLCB0KSwgJC5jdXJyZW50W3JdKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcl06IFAoZy5jdXJyZW50LCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIChPZS5jdXJyZW50LmlzRGlydHkgfHwgT2UuY3VycmVudC5kaXJ0eUZpZWxkcykgJiYgbi5zaG91bGREaXJ0eSAmJiAoQyhfZS5jdXJyZW50LmRpcnR5RmllbGRzLCBlLCBRKHQsIFAoUi5jdXJyZW50LCBlLCBbXSksIFAoX2UuY3VycmVudC5kaXJ0eUZpZWxkcywgZSwgW10pKSksIENlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RpcnR5OiAhRyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIFZlKCkpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlXTogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBSLmN1cnJlbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSFoICYmIEMoWS5jdXJyZW50LCBlLCB0KQogICAgICAgICAgICAgICAgICAgIH0pLCBbRGUsIFBlLCBMZV0pLAogICAgICAgICAgICAgICAgICAgIFJlID0gZSA9PiBGLmN1cnJlbnQgfHwgYi5jdXJyZW50LmhhcyhlKSB8fCBiLmN1cnJlbnQuaGFzKChlLm1hdGNoKC9cdysvKSB8fCBbXSlbMF0pLAogICAgICAgICAgICAgICAgICAgIHFlID0gZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVShPLmN1cnJlbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBuIGluIE8uY3VycmVudCkgZSAmJiBPLmN1cnJlbnRbbl0uc2l6ZSAmJiAhTy5jdXJyZW50W25dLmhhcyhlKSAmJiAhTy5jdXJyZW50W25dLmhhcyhsZShlKSkgfHwgKEUuY3VycmVudFtuXSgpLCB0ID0gITEpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gRmUoZSkgewogICAgICAgICAgICAgICAgICAgIGlmICghaCkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgdCA9IHBlKGUpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgbmUuY3VycmVudCkgeChlKSAmJiAhdFtlXSAmJiAodCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdCksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlXTogW10KICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFZlKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoWihlKSkgcmV0dXJuIFYoeSwgZSwgWSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG4gb2YgZSkgQyh0LCBuLCBWKHksIG4sIFkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZlKFgoeSwgcGUoWS5jdXJyZW50KSwgaCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBILmN1cnJlbnQgPSBILmN1cnJlbnQgPyBILmN1cnJlbnQgOiBhc3luYyAoewogICAgICAgICAgICAgICAgICAgIHR5cGU6IGUsCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiB0CiAgICAgICAgICAgICAgICB9KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSB0Lm5hbWU7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHkuY3VycmVudFtuXTsKICAgICAgICAgICAgICAgICAgICBsZXQgaSwgYTsKICAgICAgICAgICAgICAgICAgICBpZiAocikgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gZSA9PT0gbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB1ZShPYmplY3QuYXNzaWduKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0JsdXJFdmVudDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlVmFsaWRhdGVPbkNoYW5nZTogRWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZVZhbGlkYXRlT25CbHVyOiBrZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RvdWNoZWQ6ICEhUChfZS5jdXJyZW50LnRvdWNoZWQsIG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VibWl0dGVkOiBfZS5jdXJyZW50LmlzU3VibWl0dGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByZS5jdXJyZW50KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsID0gRGUobiwgITEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICFVKGwpIHx8ICFzICYmIFJlKG4pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocyAmJiAhUChfZS5jdXJyZW50LnRvdWNoZWQsIG4pICYmIE9lLmN1cnJlbnQudG91Y2hlZCAmJiAoQyhfZS5jdXJyZW50LnRvdWNoZWQsIG4sICEwKSwgbCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbCksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3VjaGVkOiBfZS5jdXJyZW50LnRvdWNoZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgIWggJiYgTCh0KSAmJiBDKFkuY3VycmVudCwgbiwgVih5LCBuKSksIHUpIHJldHVybiAhcyAmJiBxZShuKSwgKCFVKGwpIHx8IGMgJiYgVShsKSkgJiYgQ2UobCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTZSgpLCBlZS5jdXJyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID0gYXdhaXQgZWUuY3VycmVudChWZSgpLCBKLmN1cnJlbnQsIHZlKSwgciA9IF9lLmN1cnJlbnQuaXNWYWxpZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gUChlLCBuKSwgTCh0KSAmJiAhaSAmJiBlZS5jdXJyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGxlKG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gUChlLCB0LCB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci50eXBlICYmIHIubWVzc2FnZSAmJiAoaSA9IHIpLCB0ICYmIChyIHx8IFAoX2UuY3VycmVudC5lcnJvcnMsIHQpKSAmJiAobiA9IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gVShlKSwgciAhPT0gYSAmJiAoYyA9ICEwKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaSA9IChhd2FpdCBpZSh5LCB2ZSwgciwgWSkpW25dOwogICAgICAgICAgICAgICAgICAgICAgICAhcyAmJiBxZShuKSwgamUobiwgaSwgYywgbCwgYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgY29uc3QgQmUgPSAoMCwgZS51c2VDYWxsYmFjaykoKGFzeW5jIChlID0ge30pID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IFUoeS5jdXJyZW50KSA/IFIuY3VycmVudCA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA9IGF3YWl0IGVlLmN1cnJlbnQoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHQpLCBWZSgpKSwgZSksIEouY3VycmVudCwgdmUpIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFUobik7CiAgICAgICAgICAgICAgICAgICAgICAgIF9lLmN1cnJlbnQuaXNWYWxpZCAhPT0gciAmJiBDZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkOiByCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSksIFt2ZV0pLAogICAgICAgICAgICAgICAgICAgIFVlID0gKDAsIGUudXNlQ2FsbGJhY2spKCgoZSwgdCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQsIG4sIHIsIG8sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID0gbiwgdSA9IGUuY3VycmVudFtzXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBWKGUsIHMsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFqKHQpICYmIEMoci5jdXJyZW50LCBzLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS50eXBlICYmIHUgPyBOKGEpIHx8IEwoYSkgPyBBcnJheS5pc0FycmF5KHUub3B0aW9ucykgJiYgdS5vcHRpb25zLmxlbmd0aCA/IChrKHUub3B0aW9ucykuZm9yRWFjaCgoKGUgPSB7fSwgbikgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCKGUucmVmKSAmJiBXKGUsIGUucmVmKSB8fCBpKSAmJiAoQShlLnJlZiwgdCksIHoodS5vcHRpb25zLCBgWyR7bn1dYCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHUub3B0aW9ucyAmJiAhayh1Lm9wdGlvbnMpLmxlbmd0aCAmJiBkZWxldGUgZS5jdXJyZW50W3NdKSA6IGRlbGV0ZSBlLmN1cnJlbnRbc10gOiAoQihhKSAmJiBXKHUsIGEpIHx8IGkpICYmIChBKGEsIHQpLCBkZWxldGUgZS5jdXJyZW50W3NdKSA6IGRlbGV0ZSBlLmN1cnJlbnRbc10KICAgICAgICAgICAgICAgICAgICAgICAgfSh5LCBILmN1cnJlbnQsIGUsIFksIGgsIHQpLCBoICYmICh6KFQuY3VycmVudCwgZS5yZWYubmFtZSksIHooRC5jdXJyZW50LCBlLnJlZi5uYW1lKSkKICAgICAgICAgICAgICAgICAgICB9KSwgW2hdKSwKICAgICAgICAgICAgICAgICAgICBIZSA9ICgwLCBlLnVzZUNhbGxiYWNrKSgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGLmN1cnJlbnQpIENlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIGIuY3VycmVudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5zdGFydHNXaXRoKGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcWUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLCBbXSksCiAgICAgICAgICAgICAgICAgICAgemUgPSAoMCwgZS51c2VDYWxsYmFjaykoKChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgKFVlKGUsIHQpLCBoICYmICFrKGUub3B0aW9ucyB8fCBbXSkubGVuZ3RoICYmICh6KF9lLmN1cnJlbnQuZXJyb3JzLCBlLnJlZi5uYW1lKSwgQyhfZS5jdXJyZW50LmRpcnR5RmllbGRzLCBlLnJlZi5uYW1lLCAhMCksIENlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGlydHk6IEFlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIE9lLmN1cnJlbnQuaXNWYWxpZCAmJiBlZS5jdXJyZW50ICYmIEJlKCksIEhlKGUucmVmLm5hbWUpKSkKICAgICAgICAgICAgICAgICAgICB9KSwgW0JlLCBVZV0pOwogICAgICAgICAgICAgICAgY29uc3QgV2UgPSAoMCwgZS51c2VDYWxsYmFjaykoKChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IG4gPyBPLmN1cnJlbnRbbl0gOiBiLmN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgbGV0IG8gPSBYKHksIHBlKFkuY3VycmVudCksIGgsICExLCBlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoWihlKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gbGUoZSkgfHwgZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5lLmN1cnJlbnQuaGFzKG4pICYmIChvID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB2LmN1cnJlbnQpLCBvKSksIHNlKG8sIGUsIHIsIGooUChSLmN1cnJlbnQsIGUpKSA/IHQgOiBQKFIuY3VycmVudCwgZSksICEwKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gaih0KSA/IFIuY3VycmVudCA6IHQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZSkgPyBlLnJlZHVjZSgoKGUsIHQpID0+IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgW3RdOiBzZShvLCB0LCByLCBpKQogICAgICAgICAgICAgICAgICAgIH0pKSwge30pIDogKEYuY3VycmVudCA9IGoobiksIFMoIVUobykgJiYgbyB8fCBpKSkKICAgICAgICAgICAgICAgIH0pLCBbXSk7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gS2UoZSwgdCA9IHt9KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBzLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdQogICAgICAgICAgICAgICAgICAgIH0gPSBlLCBsID0gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogZQogICAgICAgICAgICAgICAgICAgIH0sIHQpLCBjID0geS5jdXJyZW50LCBmID0gbWUoZSksIGQgPSBmZShuZS5jdXJyZW50LCBuKSwgcCA9IHQgPT4gZGUgJiYgKCFyKGUpIHx8IHQgPT09IGUpOwogICAgICAgICAgICAgICAgICAgIGxldCBtLCBnID0gY1tuXSwKICAgICAgICAgICAgICAgICAgICAgICAgdiA9ICEwOwogICAgICAgICAgICAgICAgICAgIGlmIChnICYmIChmID8gQXJyYXkuaXNBcnJheShnLm9wdGlvbnMpICYmIGsoZy5vcHRpb25zKS5maW5kKChlID0+IHUgPT09IGUucmVmLnZhbHVlICYmIHAoZS5yZWYpKSkgOiBwKGcucmVmKSkpIHJldHVybiB2b2lkKGNbbl0gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGcpLCB0KSk7CiAgICAgICAgICAgICAgICAgICAgZyA9IHMgPyBmID8gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFsuLi5rKGcgJiYgZy5vcHRpb25zIHx8IFtdKSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICByZWY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB0KSA6IE9iamVjdC5hc3NpZ24oe30sIGwpIDogbCwgY1tuXSA9IGc7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYiA9IGooUChZLmN1cnJlbnQsIG4pKTsKICAgICAgICAgICAgICAgICAgICBVKFIuY3VycmVudCkgJiYgYiB8fCAobSA9IFAoYiA/IFIuY3VycmVudCA6IFkuY3VycmVudCwgbiksIHYgPSBqKG0pLCB2IHx8IGQgfHwgUGUobiwgbSkpLCBVKHQpIHx8IChDKEQuY3VycmVudCwgbiwgITApLCAhb2UgJiYgT2UuY3VycmVudC5pc1ZhbGlkICYmIGllKHksIHZlLCBnLCBZKS50aGVuKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IF9lLmN1cnJlbnQuaXNWYWxpZDsKICAgICAgICAgICAgICAgICAgICAgICAgVShlKSA/IEMoVC5jdXJyZW50LCBuLCAhMCkgOiB6KFQuY3VycmVudCwgbiksIHQgIT09IFUoZSkgJiYgQ2UoKQogICAgICAgICAgICAgICAgICAgIH0pKSksICFoIHx8IGQgJiYgdiB8fCAhZCAmJiB6KF9lLmN1cnJlbnQuZGlydHlGaWVsZHMsIG4pLCBzICYmIGZ1bmN0aW9uKHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBlCiAgICAgICAgICAgICAgICAgICAgfSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICByKGUpICYmIG4gJiYgKGUuYWRkRXZlbnRMaXN0ZW5lcih0ID8gaSA6IGEsIG4pLCBlLmFkZEV2ZW50TGlzdGVuZXIobywgbikpCiAgICAgICAgICAgICAgICAgICAgfShmICYmIGcub3B0aW9ucyA/IGcub3B0aW9uc1tnLm9wdGlvbnMubGVuZ3RoIC0gMV0gOiBnLCBmIHx8ICJzZWxlY3Qtb25lIiA9PT0gZS50eXBlLCBILmN1cnJlbnQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb25zdCBZZSA9ICgwLCBlLnVzZUNhbGxiYWNrKSgoKGUsIHQpID0+IGFzeW5jIG4gPT4gewogICAgICAgICAgICAgICAgICAgIG4gJiYgbi5wcmV2ZW50RGVmYXVsdCAmJiAobi5wcmV2ZW50RGVmYXVsdCgpLCBuLnBlcnNpc3QoKSk7CiAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IEZlKFgoeSwgcGUoWS5jdXJyZW50KSwgaCwgITApKTsKICAgICAgICAgICAgICAgICAgICBPZS5jdXJyZW50LmlzU3VibWl0dGluZyAmJiBDZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VibWl0dGluZzogITAKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWUuY3VycmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBhd2FpdCBlZS5jdXJyZW50KG8sIEouY3VycmVudCwgdmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2UuY3VycmVudC5lcnJvcnMgPSByID0gZSwgbyA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh5LmN1cnJlbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA9IGUucmVmLCBuID0gYXdhaXQgaWUoeSwgdmUsIGUsIFkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuW3RdID8gKEMociwgdCwgblt0XSksIHooVC5jdXJyZW50LCB0KSkgOiBQKEQuY3VycmVudCwgdCkgJiYgKHooX2UuY3VycmVudC5lcnJvcnMsIHQpLCBDKFQuY3VycmVudCwgdCwgITApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgVShyKSAmJiBPYmplY3Qua2V5cyhfZS5jdXJyZW50LmVycm9ycykuZXZlcnkoKGUgPT4gZSBpbiB5LmN1cnJlbnQpKSA/IChDZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0aW5nOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYXdhaXQgZShvLCBuKSkgOiAoX2UuY3VycmVudC5lcnJvcnMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIF9lLmN1cnJlbnQuZXJyb3JzKSwgciksIHQgJiYgYXdhaXQgdChfZS5jdXJyZW50LmVycm9ycywgbiksIHAgJiYgKChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG4gaW4gZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUCh0LCBuKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZVtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnJlZi5mb2N1cyAmJiBqKHQucmVmLmZvY3VzKCkpKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lm9wdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Lm9wdGlvbnNbMF0ucmVmLmZvY3VzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkoeS5jdXJyZW50LCBfZS5jdXJyZW50LmVycm9ycykpCiAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgX2UuY3VycmVudC5pc1N1Ym1pdHRpbmcgPSAhMSwgQ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0ZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0aW5nOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VibWl0U3VjY2Vzc2Z1bDogVShfZS5jdXJyZW50LmVycm9ycyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRDb3VudDogX2UuY3VycmVudC5zdWJtaXRDb3VudCArIDEKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgW3AsIHZlXSk7CiAgICAgICAgICAgICAgICAoMCwgZS51c2VFZmZlY3QpKCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgcyAmJiBPZS5jdXJyZW50LmlzVmFsaWQgJiYgQmUoKSwgeGUuY3VycmVudCA9IHhlLmN1cnJlbnQgfHwgIWRlID8geGUuY3VycmVudCA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG4gb2YgT2JqZWN0LnZhbHVlcyhlLmN1cnJlbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuICYmIG4ub3B0aW9ucykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIG4ub3B0aW9ucykgZSAmJiBlLnJlZiAmJiBCKGUucmVmKSAmJiB0KG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbiAmJiBCKG4ucmVmKSAmJiB0KG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ub2JzZXJ2ZSh3aW5kb3cuZG9jdW1lbnQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0cmVlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgbgogICAgICAgICAgICAgICAgICAgIH0oeSwgemUpCiAgICAgICAgICAgICAgICB9KSwgW3plLCBSLmN1cnJlbnRdKSwgKDAsIGUudXNlRWZmZWN0KSgoKCkgPT4gKCkgPT4gewogICAgICAgICAgICAgICAgICAgIHhlLmN1cnJlbnQgJiYgeGUuY3VycmVudC5kaXNjb25uZWN0KCksIHEuY3VycmVudCA9ICEwLCBPYmplY3QudmFsdWVzKHkuY3VycmVudCkuZm9yRWFjaCgoZSA9PiB6ZShlLCAhMCkpKQogICAgICAgICAgICAgICAgfSksIFtdKSwgIXMgJiYgT2UuY3VycmVudC5pc1ZhbGlkICYmIChiZS5pc1ZhbGlkID0gRyhULmN1cnJlbnQsIEQuY3VycmVudCkgJiYgVShfZS5jdXJyZW50LmVycm9ycykpOwogICAgICAgICAgICAgICAgY29uc3QgR2UgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6IE1lLAogICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZTogKDAsIGUudXNlQ2FsbGJhY2spKChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZShlLCB0LCBuIHx8IHt9KSwgUmUoZSkgJiYgQ2UoKSwgcWUoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIFtJZSwgTWVdKSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VmFsdWVzOiAoMCwgZS51c2VDYWxsYmFjaykoVmUsIFtdKSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXI6ICgwLCBlLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF5ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoWihlKSkgS2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghXyhlKSB8fCAhKCJuYW1lIiBpbiBlKSkgcmV0dXJuIHQgPT4gdCAmJiBLZSh0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2UoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBbUi5jdXJyZW50XSksCiAgICAgICAgICAgICAgICAgICAgICAgIHVucmVnaXN0ZXI6ICgwLCBlLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIEFycmF5LmlzQXJyYXkoZSkgPyBlIDogW2VdKSB6ZSh5LmN1cnJlbnRbdF0sICEwKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgW10pLAogICAgICAgICAgICAgICAgICAgICAgICBmb3JtU3RhdGU6IGdlID8gbmV3IFByb3h5KGJlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IChlLCB0KSA9PiB0IGluIGUgPyAoT2UuY3VycmVudFt0XSA9ICEwLCBlW3RdKSA6IHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGJlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAkZSA9ICgwLCBlLnVzZU1lbW8pKCgoKSA9PiBPYmplY3QuYXNzaWduKHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNGb3JtRGlydHk6IEFlLAogICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVXYXRjaGVkVmFsdWU6IEhlLAogICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRVbnJlZ2lzdGVyOiBoLAogICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVGb3JtU3RhdGU6IENlLAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVGaWVsZEV2ZW50TGlzdGVuZXI6IFVlLAogICAgICAgICAgICAgICAgICAgICAgICB3YXRjaEludGVybmFsOiBXZSwKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogcmUuY3VycmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgcmVWYWxpZGF0ZU1vZGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVWYWxpZGF0ZU9uQmx1cjoga2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlVmFsaWRhdGVPbkNoYW5nZTogRWUKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVSZXNvbHZlcjogcyA/IEJlIDogdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNSZWY6IHksCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0RmllbGRBcnJheUZ1bmN0aW9uUmVmOiAkLAogICAgICAgICAgICAgICAgICAgICAgICB1c2VXYXRjaEZpZWxkc1JlZjogTywKICAgICAgICAgICAgICAgICAgICAgICAgdXNlV2F0Y2hSZW5kZXJGdW5jdGlvbnNSZWY6IEUsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkQXJyYXlEZWZhdWx0VmFsdWVzUmVmOiBnLAogICAgICAgICAgICAgICAgICAgICAgICB2YWxpZEZpZWxkc1JlZjogVCwKICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzV2l0aFZhbGlkYXRpb25SZWY6IEQsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkQXJyYXlOYW1lc1JlZjogbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRGb3JtU3RhdGVSZWY6IE9lLAogICAgICAgICAgICAgICAgICAgICAgICBmb3JtU3RhdGVSZWY6IF9lLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzUmVmOiBSLAogICAgICAgICAgICAgICAgICAgICAgICBzaGFsbG93RmllbGRzU3RhdGVSZWY6IFksCiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkQXJyYXlWYWx1ZXNSZWY6IHYKICAgICAgICAgICAgICAgICAgICB9LCBHZSkpLCBbUi5jdXJyZW50LCBIZSwgaCwgVWUsIFdlXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgICAgICAgICAgd2F0Y2g6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjb250cm9sOiAkZSwKICAgICAgICAgICAgICAgICAgICBoYW5kbGVTdWJtaXQ6IFllLAogICAgICAgICAgICAgICAgICAgIHJlc2V0OiAoMCwgZS51c2VDYWxsYmFjaykoKChlLCB0ID0ge30pID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIE9iamVjdC52YWx1ZXMoeS5jdXJyZW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBlLCBpID0gbWUodCkgJiYgQXJyYXkuaXNBcnJheShvKSA/IG9bMF0ucmVmIDogdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIoaSkpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmNsb3Nlc3QoImZvcm0iKS5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHkuY3VycmVudCA9IHt9LCBSLmN1cnJlbnQgPSBPYmplY3QuYXNzaWduKHt9LCBlIHx8IFIuY3VycmVudCksIGUgJiYgcWUoIiIpLCBPYmplY3QudmFsdWVzKCQuY3VycmVudCkuZm9yRWFjaCgoZSA9PiB0ZShlKSAmJiBlKCkpKSwgWS5jdXJyZW50ID0gaCA/IHt9IDogcGUoZSB8fCBSLmN1cnJlbnQpLCAoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGlydHk6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1N1Ym1pdHRlZDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoZWQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0Q291bnQ6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJ0eUZpZWxkczogYQogICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIHx8IChULmN1cnJlbnQgPSB7fSwgRC5jdXJyZW50ID0ge30pLCBnLmN1cnJlbnQgPSB7fSwgYi5jdXJyZW50ID0gbmV3IFNldCwgRi5jdXJyZW50ID0gITEsIENlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRDb3VudDogaSA/IF9lLmN1cnJlbnQuc3VibWl0Q291bnQgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGlydHk6ICEhdCAmJiBfZS5jdXJyZW50LmlzRGlydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0ZWQ6ICEhbiAmJiBfZS5jdXJyZW50LmlzU3VibWl0dGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6ICEhbyAmJiBfZS5jdXJyZW50LmlzVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlydHlGaWVsZHM6IGEgPyBfZS5jdXJyZW50LmRpcnR5RmllbGRzIDoge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hlZDogciA/IF9lLmN1cnJlbnQudG91Y2hlZCA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogZSA/IF9lLmN1cnJlbnQuZXJyb3JzIDoge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJtaXR0aW5nOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1N1Ym1pdFN1Y2Nlc3NmdWw6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9KSh0KQogICAgICAgICAgICAgICAgICAgIH0pLCBbXSksCiAgICAgICAgICAgICAgICAgICAgY2xlYXJFcnJvcnM6ICgwLCBlLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlICYmIChBcnJheS5pc0FycmF5KGUpID8gZSA6IFtlXSkuZm9yRWFjaCgoZSA9PiB5LmN1cnJlbnRbZV0gJiYgeChlKSA/IGRlbGV0ZSBfZS5jdXJyZW50LmVycm9yc1tlXSA6IHooX2UuY3VycmVudC5lcnJvcnMsIGUpKSksIENlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogZSA/IF9lLmN1cnJlbnQuZXJyb3JzIDoge30KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSwgW10pLAogICAgICAgICAgICAgICAgICAgIHNldEVycm9yOiAoMCwgZS51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9ICh5LmN1cnJlbnRbZV0gfHwge30pLnJlZjsKICAgICAgICAgICAgICAgICAgICAgICAgQyhfZS5jdXJyZW50LmVycm9ycywgZSwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0KSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgQ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQuc2hvdWxkRm9jdXMgJiYgbiAmJiBuLmZvY3VzICYmIG4uZm9jdXMoKQogICAgICAgICAgICAgICAgICAgIH0pLCBbXSksCiAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBiZS5lcnJvcnMKICAgICAgICAgICAgICAgIH0sIEdlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgICAgICAgICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogICAgICAgICAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuCgogICAgICAgICAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogICAgICAgICAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKICAgICAgICAgICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULAogICAgICAgICAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICAgICAgICAgICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IKICAgICAgICAgICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgogICAgICAgICAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogICAgICAgICAgICBjb25zdCBiZSA9ICgwLCBlLmNyZWF0ZUNvbnRleHQpKG51bGwpOwogICAgICAgICAgICBiZS5kaXNwbGF5TmFtZSA9ICJSSEZDb250ZXh0IjsKICAgICAgICAgICAgY29uc3Qgd2UgPSAoKSA9PiAoMCwgZS51c2VDb250ZXh0KShiZSk7CiAgICAgICAgICAgIHZhciBPZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuYXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LmVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQubWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQucmVuZGVyLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIHIsIG8gPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gT2JqZWN0LmtleXMoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAwOyByIDwgaS5sZW5ndGg7IHIrKykgdC5pbmRleE9mKG4gPSBpW3JdKSA+PSAwIHx8IChvW25dID0gZVtuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgICAgICAgICB9KHQsIFsiYXMiLCAiZXJyb3JzIiwgIm5hbWUiLCAibWVzc2FnZSIsICJyZW5kZXIiXSksCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB3ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gUChyIHx8IHUuZXJyb3JzLCBvKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWwpIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgIHZhciBjID0gbC5tZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gbC50eXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IE9iamVjdC5hc3NpZ24oe30sIHMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBjIHx8IGkKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmlzVmFsaWRFbGVtZW50KShuKSA/ICgwLCBlLmNsb25lRWxlbWVudCkobiwgZCkgOiBhID8gYSh7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGMgfHwgaSwKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXM6IGYKICAgICAgICAgICAgICAgICAgICB9KSA6ICgwLCBlLmNyZWF0ZUVsZW1lbnQpKG4gfHwgZS5GcmFnbWVudCwgZCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfZSA9IG4oNDI1MSksCiAgICAgICAgICAgICAgICB4ZSA9IG4ubihfZSksCiAgICAgICAgICAgICAgICBrZSA9IG4oNTk1Myk7CgogICAgICAgICAgICBmdW5jdGlvbiBFZSgpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoRWUgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDE7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhcmd1bWVudHNbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gbikgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sIHIpICYmIChlW3JdID0gbltyXSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0pLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gQ2UoZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9OwogICAgICAgICAgICAgICAgdmFyIG4sIHIsIG8gPSB7fSwKICAgICAgICAgICAgICAgICAgICBpID0gT2JqZWN0LmtleXMoZSk7CiAgICAgICAgICAgICAgICBmb3IgKHIgPSAwOyByIDwgaS5sZW5ndGg7IHIrKykgbiA9IGlbcl0sIHQuaW5kZXhPZihuKSA+PSAwIHx8IChvW25dID0gZVtuXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBTZShlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKFNlID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5fX3Byb3RvX18gPSB0LCBlCiAgICAgICAgICAgICAgICB9KShlLCB0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBqZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NwZWVkeSA9IGUuc3BlZWR5ID09PSB1bmRlZmluZWQgfHwgZS5zcGVlZHksIHRoaXMudGFncyA9IFtdLCB0aGlzLmN0ciA9IDAsIHRoaXMubm9uY2UgPSBlLm5vbmNlLCB0aGlzLmtleSA9IGUua2V5LCB0aGlzLmNvbnRhaW5lciA9IGUuY29udGFpbmVyLCB0aGlzLmJlZm9yZSA9IG51bGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciB0ID0gZS5wcm90b3R5cGU7CiAgICAgICAgICAgICAgICByZXR1cm4gdC5pbnNlcnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY3RyICUgKHRoaXMuaXNTcGVlZHkgPyA2NWUzIDogMSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnNldEF0dHJpYnV0ZSgiZGF0YS1lbW90aW9uIiwgZS5rZXkpLCBlLm5vbmNlICE9PSB1bmRlZmluZWQgJiYgdC5zZXRBdHRyaWJ1dGUoIm5vbmNlIiwgZS5ub25jZSksIHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICB0ID0gMCA9PT0gdGhpcy50YWdzLmxlbmd0aCA/IHRoaXMuYmVmb3JlIDogdGhpcy50YWdzW3RoaXMudGFncy5sZW5ndGggLSAxXS5uZXh0U2libGluZywgdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKG4sIHQpLCB0aGlzLnRhZ3MucHVzaChuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTcGVlZHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5zaGVldCkgcmV0dXJuIGUuc2hlZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgdCsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5zdHlsZVNoZWV0c1t0XS5vd25lck5vZGUgPT09IGUpIHJldHVybiBkb2N1bWVudC5zdHlsZVNoZWV0c1t0XQogICAgICAgICAgICAgICAgICAgICAgICB9KHIpOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAxMDUgPT09IGUuY2hhckNvZGVBdCgxKSAmJiA2NCA9PT0gZS5jaGFyQ29kZUF0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pbnNlcnRSdWxlKGUsIGkgPyAwIDogby5jc3NSdWxlcy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSByLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0cisrCiAgICAgICAgICAgICAgICB9LCB0LmZsdXNoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWdzLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy50YWdzID0gW10sIHRoaXMuY3RyID0gMAogICAgICAgICAgICAgICAgfSwgZQogICAgICAgICAgICB9KCk7CiAgICAgICAgICAgIHZhciBQZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIHIsIHUsIGwsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCwgaCwgbSwgeSwgdywgXyA9IDAsIHggPSAwLCBrID0gMCwgRSA9IDAsIEMgPSAwLCBUID0gMCwgTSA9IG0gPSBwID0gMCwgSSA9IDAsIFIgPSAwLCBxID0gMCwgRiA9IDAsIFYgPSB1Lmxlbmd0aCwgQiA9IFYgLSAxLCBVID0gIiIsIEggPSAiIiwgeiA9ICIiLCBXID0gIiI7IEkgPCBWOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSB1LmNoYXJDb2RlQXQoSSksIEkgPT09IEIgJiYgMCAhPT0geCArIEUgKyBrICsgXyAmJiAoMCAhPT0geCAmJiAoaCA9IDQ3ID09PSB4ID8gMTAgOiA0NyksIEUgPSBrID0gXyA9IDAsIFYrKywgQisrKSwgMCA9PT0geCArIEUgKyBrICsgXykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJID09PSBCICYmICgwIDwgUiAmJiAoVSA9IFUucmVwbGFjZShmLCAiIikpLCAwIDwgVS50cmltKCkubGVuZ3RoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUgKz0gdS5jaGFyQXQoSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gNTkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwID0gKFUgPSBVLnRyaW0oKSkuY2hhckNvZGVBdCgwKSwgbSA9IDEsIEYgPSArK0k7IEkgPCBWOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaCA9IHUuY2hhckNvZGVBdChJKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0rKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0tLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ3OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChoID0gdS5jaGFyQ29kZUF0KEkgKyAxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0NzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChNID0gSSArIDE7IE0gPCBCOyArK00pIHN3aXRjaCAodS5jaGFyQ29kZUF0KE0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0NzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQyID09PSBoICYmIDQyID09PSB1LmNoYXJDb2RlQXQoTSAtIDEpICYmIEkgKyAyICE9PSBNKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gTSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQ3ID09PSBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gTSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgPSBNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IEkrKyA8IEIgJiYgdS5jaGFyQ29kZUF0KEkpICE9PSBoOyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBtKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJKysKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobSA9IHUuc3Vic3RyaW5nKEYsIEkpLCAwID09PSBwICYmIChwID0gKFUgPSBVLnJlcGxhY2UoYywgIiIpLnRyaW0oKSkuY2hhckNvZGVBdCgwKSksIHApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKDAgPCBSICYmIChVID0gVS5yZXBsYWNlKGYsICIiKSksIGggPSBVLmNoYXJDb2RlQXQoMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEYgPSAobSA9IHQociwgUiwgbSwgaCwgZCArIDEpKS5sZW5ndGgsIDAgPCBOICYmICh3ID0gcygzLCBtLCBSID0gbihELCBVLCBxKSwgciwgaiwgUywgRiwgaCwgZCwgbCksIFUgPSBSLmpvaW4oIiIpLCB2b2lkIDAgIT09IHcgJiYgMCA9PT0gKEYgPSAobSA9IHcudHJpbSgpKS5sZW5ndGgpICYmIChoID0gMCwgbSA9ICIiKSksIDAgPCBGKSBzd2l0Y2ggKGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUgPSBVLnJlcGxhY2UoTywgYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0NToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gVSArICJ7IiArIG0gKyAifSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gKFUgPSBVLnJlcGxhY2UoZywgIiQxICQyIikpICsgInsiICsgbSArICJ9IiwgbSA9IDEgPT09IEEgfHwgMiA9PT0gQSAmJiBpKCJAIiArIG0sIDMpID8gIkAtd2Via2l0LSIgKyBtICsgIkAiICsgbSA6ICJAIiArIG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBVICsgbSwgMTEyID09PSBsICYmIChIICs9IG0sIG0gPSAiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIG0gPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHQociwgbihyLCBVLCBxKSwgbSwgbCwgZCArIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ICs9IG0sIG0gPSBxID0gUiA9IE0gPSBwID0gMCwgVSA9ICIiLCBoID0gdS5jaGFyQ29kZUF0KCsrSSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA8IChGID0gKFUgPSAoMCA8IFIgPyBVLnJlcGxhY2UoZiwgIiIpIDogVSkudHJpbSgpKS5sZW5ndGgpKSBzd2l0Y2ggKDAgPT09IE0gJiYgKHAgPSBVLmNoYXJDb2RlQXQoMCksIDQ1ID09PSBwIHx8IDk2IDwgcCAmJiAxMjMgPiBwKSAmJiAoRiA9IChVID0gVS5yZXBsYWNlKCIgIiwgIjoiKSkubGVuZ3RoKSwgMCA8IE4gJiYgdm9pZCAwICE9PSAodyA9IHMoMSwgVSwgciwgZSwgaiwgUywgSC5sZW5ndGgsIGwsIGQsIGwpKSAmJiAwID09PSAoRiA9IChVID0gdy50cmltKCkpLmxlbmd0aCkgJiYgKFUgPSAiXDBcMCIpLCBwID0gVS5jaGFyQ29kZUF0KDApLCBoID0gVS5jaGFyQ29kZUF0KDEpLCBwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMTA1ID09PSBoIHx8IDk5ID09PSBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXICs9IFUgKyB1LmNoYXJBdChJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OCAhPT0gVS5jaGFyQ29kZUF0KEYgLSAxKSAmJiAoSCArPSBvKFUsIHAsIGgsIFUuY2hhckNvZGVBdCgyKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gUiA9IE0gPSBwID0gMCwgVSA9ICIiLCBoID0gdS5jaGFyQ29kZUF0KCsrSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3ID09PSB4ID8geCA9IDAgOiAwID09PSAxICsgcCAmJiAxMDcgIT09IGwgJiYgMCA8IFUubGVuZ3RoICYmIChSID0gMSwgVSArPSAiXDAiKSwgMCA8IE4gKiBMICYmIHMoMCwgVSwgciwgZSwgaiwgUywgSC5sZW5ndGgsIGwsIGQsIGwpLCBTID0gMSwgaisrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTI1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0geCArIEUgKyBrICsgXykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUysrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoUysrLCB5ID0gdS5jaGFyQXQoSSksIGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IEUgKyBfICsgeCkgc3dpdGNoIChDKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIgIT09IGggJiYgKHkgPSAiICIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAiXFwwIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9ICJcXGYiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gIlxcdiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IEUgKyB4ICsgXyAmJiAoUiA9IHEgPSAxLCB5ID0gIlxmIiArIHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IEUgKyB4ICsgXyArIFAgJiYgMCA8IE0pIHN3aXRjaCAoSSAtIE0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEyID09PSBDICYmIDU4ID09PSB1LmNoYXJDb2RlQXQoSSAtIDMpICYmIChQID0gQyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMSA9PT0gVCAmJiAoUCA9IFQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1ODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBFICsgeCArIF8gJiYgKE0gPSBJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0geCArIGsgKyBFICsgXyAmJiAoUiA9IDEsIHkgKz0gIlxyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSB4ICYmIChFID0gRSA9PT0gaCA/IDAgOiAwID09PSBFID8gaCA6IEUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5MToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBFICsgeCArIGsgJiYgXysrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5MzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBFICsgeCArIGsgJiYgXy0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0MToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBFICsgeCArIF8gJiYgay0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0MDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gRSArIHggKyBfKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBwKSBzd2l0Y2ggKDIgKiBDICsgMyAqIFQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTMzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsrKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0geCArIGsgKyBFICsgXyArIE0gKyBtICYmIChtID0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0NzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgwIDwgRSArIF8gKyBrKSkgc3dpdGNoICh4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoMiAqIGggKyAzICogdS5jaGFyQ29kZUF0KEkgKyAxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjM1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gNDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjIwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGID0gSSwgeCA9IDQyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0MjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3ID09PSBoICYmIDQyID09PSBDICYmIEYgKyAyICE9PSBJICYmICgzMyA9PT0gdS5jaGFyQ29kZUF0KEYgKyAyKSAmJiAoSCArPSB1LnN1YnN0cmluZyhGLCBJICsgMSkpLCB5ID0gIiIsIHggPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSB4ICYmIChVICs9IHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUID0gQywgQyA9IGgsIEkrKwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwIDwgKEYgPSBILmxlbmd0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSID0gciwgMCA8IE4gJiYgKHZvaWQgMCAhPT0gKHcgPSBzKDIsIEgsIFIsIGUsIGosIFMsIEYsIGwsIGQsIGwpKSAmJiAwID09PSAoSCA9IHcpLmxlbmd0aCkpIHJldHVybiBXICsgSCArIHo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSCA9IFIuam9pbigiLCIpICsgInsiICsgSCArICJ9IiwgMCAhPSBBICogUCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoMiAhPT0gQSB8fCBpKEgsIDIpIHx8IChQID0gMCksIFApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIID0gSC5yZXBsYWNlKGIsICI6LW1vei0kMSIpICsgSDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggPSBILnJlcGxhY2UodiwgIjo6LXdlYmtpdC1pbnB1dC0kMSIpICsgSC5yZXBsYWNlKHYsICI6Oi1tb3otJDEiKSArIEgucmVwbGFjZSh2LCAiOi1tcy1pbnB1dC0kMSIpICsgSAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBXICsgSCArIHoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHQudHJpbSgpLnNwbGl0KG0pOwogICAgICAgICAgICAgICAgICAgICAgICB0ID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBvLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDAgPT09IGEgPyAiIiA6IGVbMF0gKyAiICI7IHMgPCBpOyArK3MpIHRbc10gPSByKGUsIHRbc10sIG4pLnRyaW0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBzID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBbXTsgcyA8IGk7ICsrcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBhOyArK2wpIHRbdSsrXSA9IHIoZVtsXSArICIgIiwgb1tzXSwgbikudHJpbSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuY2hhckNvZGVBdCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgzMyA+IHIgJiYgKHIgPSAodCA9IHQudHJpbSgpKS5jaGFyQ29kZUF0KDApKSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5yZXBsYWNlKHksICIkMSIgKyBlLnRyaW0oKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnRyaW0oKSArIHQucmVwbGFjZSh5LCAiJDEiICsgZS50cmltKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA8IDEgKiBuICYmIDAgPCB0LmluZGV4T2YoIlxmIikpIHJldHVybiB0LnJlcGxhY2UoeSwgKDU4ID09PSBlLmNoYXJDb2RlQXQoMCkgPyAiIiA6ICIkMSIpICsgZS50cmltKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKyB0CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBlICsgIjsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IDIgKiB0ICsgMyAqIG4gKyA0ICogcjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDk0NCA9PT0gcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGEuaW5kZXhPZigiOiIsIDkpICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gYS5zdWJzdHJpbmcoZSwgYS5sZW5ndGggLSAxKS50cmltKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSA9IGEuc3Vic3RyaW5nKDAsIGUpLnRyaW0oKSArIHUgKyAiOyIsIDEgPT09IEEgfHwgMiA9PT0gQSAmJiBpKHUsIDEpID8gIi13ZWJraXQtIiArIHUgKyB1IDogdQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBBIHx8IDIgPT09IEEgJiYgIWkoYSwgMSkpIHJldHVybiBhOwogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAxNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gOTcgPT09IGEuY2hhckNvZGVBdCgxMCkgPyAiLXdlYmtpdC0iICsgYSArIGEgOiBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NTE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDExNiA9PT0gYS5jaGFyQ29kZUF0KDMpID8gIi13ZWJraXQtIiArIGEgKyBhIDogYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTYzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxMTAgPT09IGEuY2hhckNvZGVBdCg1KSA/ICItd2Via2l0LSIgKyBhICsgYSA6IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMDk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEwMCAhPT0gYS5jaGFyQ29kZUF0KDQpKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTY5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICItd2Via2l0LSIgKyBhICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTc4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiLXdlYmtpdC0iICsgYSArICItbW96LSIgKyBhICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAxOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTgzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiLXdlYmtpdC0iICsgYSArICItbW96LSIgKyBhICsgIi1tcy0iICsgYSArIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg4MzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoNDUgPT09IGEuY2hhckNvZGVBdCg4KSkgcmV0dXJuICItd2Via2l0LSIgKyBhICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA8IGEuaW5kZXhPZigiaW1hZ2Utc2V0KCIsIDExKSkgcmV0dXJuIGEucmVwbGFjZShDLCAiJDEtd2Via2l0LSQyIikgKyBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5MzI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQ1ID09PSBhLmNoYXJDb2RlQXQoNCkpIHN3aXRjaCAoYS5jaGFyQ29kZUF0KDUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICItd2Via2l0LWJveC0iICsgYS5yZXBsYWNlKCItZ3JvdyIsICIiKSArICItd2Via2l0LSIgKyBhICsgIi1tcy0iICsgYS5yZXBsYWNlKCJncm93IiwgInBvc2l0aXZlIikgKyBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiLXdlYmtpdC0iICsgYSArICItbXMtIiArIGEucmVwbGFjZSgic2hyaW5rIiwgIm5lZ2F0aXZlIikgKyBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICItd2Via2l0LSIgKyBhICsgIi1tcy0iICsgYS5yZXBsYWNlKCJiYXNpcyIsICJwcmVmZXJyZWQtc2l6ZSIpICsgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIi13ZWJraXQtIiArIGEgKyAiLW1zLSIgKyBhICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTY0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiLXdlYmtpdC0iICsgYSArICItbXMtZmxleC0iICsgYSArIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMjM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDk5ICE9PSBhLmNoYXJDb2RlQXQoOCkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiLXdlYmtpdC1ib3gtcGFjayIgKyAodSA9IGEuc3Vic3RyaW5nKGEuaW5kZXhPZigiOiIsIDE1KSkucmVwbGFjZSgiZmxleC0iLCAiIikucmVwbGFjZSgic3BhY2UtYmV0d2VlbiIsICJqdXN0aWZ5IikpICsgIi13ZWJraXQtIiArIGEgKyAiLW1zLWZsZXgtcGFjayIgKyB1ICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcC50ZXN0KGEpID8gYS5yZXBsYWNlKGQsICI6LXdlYmtpdC0iKSArIGEucmVwbGFjZShkLCAiOi1tb3otIikgKyBhIDogYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMWUzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodCA9ICh1ID0gYS5zdWJzdHJpbmcoMTMpLnRyaW0oKSkuaW5kZXhPZigiLSIpICsgMSwgdS5jaGFyQ29kZUF0KDApICsgdS5jaGFyQ29kZUF0KHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjI2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGEucmVwbGFjZSh3LCAidGIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIzMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBhLnJlcGxhY2UodywgInRiLXJsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gYS5yZXBsYWNlKHcsICJsciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIi13ZWJraXQtIiArIGEgKyAiLW1zLSIgKyB1ICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAxNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgPT09IGEuaW5kZXhPZigic3RpY2t5IiwgOSkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NzU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0ID0gKGEgPSBlKS5sZW5ndGggLSAxMCwgcyA9ICh1ID0gKDMzID09PSBhLmNoYXJDb2RlQXQodCkgPyBhLnN1YnN0cmluZygwLCB0KSA6IGEpLnN1YnN0cmluZyhlLmluZGV4T2YoIjoiLCA3KSArIDEpLnRyaW0oKSkuY2hhckNvZGVBdCgwKSArICgwIHwgdS5jaGFyQ29kZUF0KDcpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIwMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxMTEgPiB1LmNoYXJDb2RlQXQoOCkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhLnJlcGxhY2UodSwgIi13ZWJraXQtIiArIHUpICsgIjsiICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIwNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gYS5yZXBsYWNlKHUsICItd2Via2l0LSIgKyAoMTAyIDwgcyA/ICJpbmxpbmUtIiA6ICIiKSArICJib3giKSArICI7IiArIGEucmVwbGFjZSh1LCAiLXdlYmtpdC0iICsgdSkgKyAiOyIgKyBhLnJlcGxhY2UodSwgIi1tcy0iICsgdSArICJib3giKSArICI7IiArIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgKyAiOyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkzODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoNDUgPT09IGEuY2hhckNvZGVBdCg1KSkgc3dpdGNoIChhLmNoYXJDb2RlQXQoNikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSA9IGEucmVwbGFjZSgiLWl0ZW1zIiwgIiIpLCAiLXdlYmtpdC0iICsgYSArICItd2Via2l0LWJveC0iICsgdSArICItbXMtZmxleC0iICsgdSArIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICItd2Via2l0LSIgKyBhICsgIi1tcy1mbGV4LWl0ZW0tIiArIGEucmVwbGFjZSh4LCAiIikgKyBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICItd2Via2l0LSIgKyBhICsgIi1tcy1mbGV4LWxpbmUtcGFjayIgKyBhLnJlcGxhY2UoImFsaWduLWNvbnRlbnQiLCAiIikucmVwbGFjZSh4LCAiIikgKyBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NzM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk4OToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoNDUgIT09IGEuY2hhckNvZGVBdCgzKSB8fCAxMjIgPT09IGEuY2hhckNvZGVBdCg0KSkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkzMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTUzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMCA9PT0gRS50ZXN0KGUpKSByZXR1cm4gMTE1ID09PSAodSA9IGUuc3Vic3RyaW5nKGUuaW5kZXhPZigiOiIpICsgMSkpLmNoYXJDb2RlQXQoMCkgPyBvKGUucmVwbGFjZSgic3RyZXRjaCIsICJmaWxsLWF2YWlsYWJsZSIpLCB0LCBuLCByKS5yZXBsYWNlKCI6ZmlsbC1hdmFpbGFibGUiLCAiOnN0cmV0Y2giKSA6IGEucmVwbGFjZSh1LCAiLXdlYmtpdC0iICsgdSkgKyBhLnJlcGxhY2UodSwgIi1tb3otIiArIHUucmVwbGFjZSgiZmlsbC0iLCAiIikpICsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTYyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gIi13ZWJraXQtIiArIGEgKyAoMTAyID09PSBhLmNoYXJDb2RlQXQoNSkgPyAiLW1zLSIgKyBhIDogIiIpICsgYSwgMjExID09PSBuICsgciAmJiAxMDUgPT09IGEuY2hhckNvZGVBdCgxMykgJiYgMCA8IGEuaW5kZXhPZigidHJhbnNmb3JtIiwgMTApKSByZXR1cm4gYS5zdWJzdHJpbmcoMCwgYS5pbmRleE9mKCI7IiwgMjcpICsgMSkucmVwbGFjZShoLCAiJDEtd2Via2l0LSQyIikgKyBhCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuaW5kZXhPZigxID09PSB0ID8gIjoiIDogInsiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLnN1YnN0cmluZygwLCAzICE9PSB0ID8gbiA6IDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPSBlLnN1YnN0cmluZyhuICsgMSwgZS5sZW5ndGggLSAxKSwgTSgyICE9PSB0ID8gciA6IHIucmVwbGFjZShrLCAiJDEiKSwgbiwgdCkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG8odCwgdC5jaGFyQ29kZUF0KDApLCB0LmNoYXJDb2RlQXQoMSksIHQuY2hhckNvZGVBdCgyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICE9PSB0ICsgIjsiID8gbi5yZXBsYWNlKF8sICIgb3IgKCQxKSIpLnN1YnN0cmluZyg0KSA6ICIoIiArIHQgKyAiKSIKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSwgdCwgbiwgciwgbywgaSwgYSwgcywgdSwgYykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmLCBkID0gMCwgcCA9IHQ7IGQgPCBOOyArK2QpIHN3aXRjaCAoZiA9IFRbZF0uY2FsbChsLCBlLCBwLCBuLCByLCBvLCBpLCBhLCBzLCB1LCBjKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB2b2lkIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICExOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAhMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbnVsbDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGYKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocCAhPT0gdCkgcmV0dXJuIHAKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSAoZSA9IGUucHJlZml4KSAmJiAoTSA9IG51bGwsIGUgPyAiZnVuY3Rpb24iICE9IHR5cGVvZiBlID8gQSA9IDEgOiAoQSA9IDIsIE0gPSBlKSA6IEEgPSAwKSwgdQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDMzID4gci5jaGFyQ29kZUF0KDApICYmIChyID0gci50cmltKCkpLCByID0gW3JdLCAwIDwgTikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBzKC0xLCBuLCByLCByLCBqLCBTLCAwLCAwLCAwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gbyAmJiAic3RyaW5nIiA9PSB0eXBlb2YgbyAmJiAobiA9IG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0KEQsIHIsIG4sIDAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA8IE4gJiYgKHZvaWQgMCAhPT0gKG8gPSBzKC0yLCBpLCByLCByLCBqLCBTLCBpLmxlbmd0aCwgMCwgMCwgMCkpICYmIChpID0gbykpLCAiIiwgUCA9IDAsIFMgPSBqID0gMSwgaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IC9eXDArL2csCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAvW1wwXHJcZl0vZywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IC86ICovZywKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IC96b298Z3JhLywKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IC8oWyw6IF0pKHRyYW5zZm9ybSkvZywKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IC8sXHIrPy9nLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gLyhbXHRcclxuIF0pKlxmPyYvZywKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IC9AKGtcdyspXHMqKFxTKilccyovLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gLzo6KHBsYWNlKS9nLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gLzoocmVhZC1vbmx5KS9nLAogICAgICAgICAgICAgICAgICAgICAgICB3ID0gL1tzdmhdXHcrLVt0YmxyXXsyfS8sCiAgICAgICAgICAgICAgICAgICAgICAgIE8gPSAvXChccyooLiopXHMqXCkvZywKICAgICAgICAgICAgICAgICAgICAgICAgXyA9IC8oW1xzXFNdKj8pOy9nLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gLy1zZWxmfGZsZXgtL2csCiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAvW15dKj8oOltycF1bZWxdYVtcdy1dKylbXl0qLywKICAgICAgICAgICAgICAgICAgICAgICAgRSA9IC9zdHJldGNofDpccypcdytcLSg/OmNvbnRlfGF2YWlsKS8sCiAgICAgICAgICAgICAgICAgICAgICAgIEMgPSAvKFteLV0pKGltYWdlLXNldFwoKS8sCiAgICAgICAgICAgICAgICAgICAgICAgIFMgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICBqID0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIEEgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICBEID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIFQgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgTiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIE0gPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBMID0gMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbC51c2UgPSBmdW5jdGlvbiBJKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHZvaWQgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbnVsbDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOID0gVC5sZW5ndGggPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSkgVFtOKytdID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSBlLmxlbmd0aDsgdCA8IG47ICsrdCkgSShlW3RdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEwgPSAwIHwgISFlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEkKICAgICAgICAgICAgICAgICAgICB9LCBsLnNldCA9IHUsIHZvaWQgMCAhPT0gZSAmJiB1KGUpLCBsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQWUgPSAiLyp8Ki8iOwoKICAgICAgICAgICAgZnVuY3Rpb24gRGUoZSkgewogICAgICAgICAgICAgICAgZSAmJiBUZS5jdXJyZW50Lmluc2VydChlICsgIn0iKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBUZSA9IHsKICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBudWxsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgTmUgPSBmdW5jdGlvbihlLCB0LCBuLCByLCBvLCBpLCBhLCBzLCB1LCBsKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodC5jaGFyQ29kZUF0KDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRlLmN1cnJlbnQuaW5zZXJ0KHQgKyAiOyIpLCAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDk4ID09PSB0LmNoYXJDb2RlQXQoMikpIHJldHVybiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBzKSByZXR1cm4gdCArIEFlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVGUuY3VycmVudC5pbnNlcnQoblswXSArIHQpLCAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArICgwID09PSBsID8gQWUgOiAiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAtMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc3BsaXQoIi8qfCovfSIpLmZvckVhY2goRGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIE1lID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUgPT09IHVuZGVmaW5lZCAmJiAoZSA9IHt9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IGUua2V5IHx8ICJjc3MiOwogICAgICAgICAgICAgICAgICAgIGUucHJlZml4ICE9PSB1bmRlZmluZWQgJiYgKHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogZS5wcmVmaXgKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG5ldyBQZSh0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgbywgaSA9IHt9OwogICAgICAgICAgICAgICAgICAgIG8gPSBlLmNvbnRhaW5lciB8fCBkb2N1bWVudC5oZWFkOwogICAgICAgICAgICAgICAgICAgIHZhciBhLCBzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgic3R5bGVbZGF0YS1lbW90aW9uLSIgKyBuICsgIl0iKTsKICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHMsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZ2V0QXR0cmlidXRlKCJkYXRhLWVtb3Rpb24tIiArIG4pLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaVtlXSA9ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZS5wYXJlbnROb2RlICE9PSBvICYmIG8uYXBwZW5kQ2hpbGQoZSkKICAgICAgICAgICAgICAgICAgICB9KSksIHIudXNlKGUuc3R5bGlzUGx1Z2lucykoTmUpLCBhID0gZnVuY3Rpb24oZSwgdCwgbiwgbykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgVGUuY3VycmVudCA9IG4sIHIoZSwgdC5zdHlsZXMpLCBvICYmICh1Lmluc2VydGVkW2ldID0gITApCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBuLAogICAgICAgICAgICAgICAgICAgICAgICBzaGVldDogbmV3IGplKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmNlOiBlLm5vbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWR5OiBlLnNwZWVkeQogICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgbm9uY2U6IGUubm9uY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGVkOiBpLAogICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0OiBhCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIExlKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gIiI7CiAgICAgICAgICAgICAgICByZXR1cm4gbi5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICBlW25dICE9PSB1bmRlZmluZWQgPyB0LnB1c2goZVtuXSkgOiByICs9IG4gKyAiICIKICAgICAgICAgICAgICAgIH0pKSwgcgogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBJZSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gZS5rZXkgKyAiLSIgKyB0Lm5hbWU7CiAgICAgICAgICAgICAgICBpZiAoITEgPT09IG4gJiYgZS5yZWdpc3RlcmVkW3JdID09PSB1bmRlZmluZWQgJiYgKGUucmVnaXN0ZXJlZFtyXSA9IHQuc3R5bGVzKSwgZS5pbnNlcnRlZFt0Lm5hbWVdID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHQ7CiAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICBlLmluc2VydCgiLiIgKyByLCBvLCBlLnNoZWV0LCAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBvLm5leHQKICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChvICE9PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHZhciBSZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCBuID0gMCwgciA9IDAsIG8gPSBlLmxlbmd0aDsgbyA+PSA0OyArK3IsIG8gLT0gNCkgdCA9IDE1NDA0ODM0NzcgKiAoNjU1MzUgJiAodCA9IDI1NSAmIGUuY2hhckNvZGVBdChyKSB8ICgyNTUgJiBlLmNoYXJDb2RlQXQoKytyKSkgPDwgOCB8ICgyNTUgJiBlLmNoYXJDb2RlQXQoKytyKSkgPDwgMTYgfCAoMjU1ICYgZS5jaGFyQ29kZUF0KCsrcikpIDw8IDI0KSkgKyAoNTk3OTcgKiAodCA+Pj4gMTYpIDw8IDE2KSwgbiA9IDE1NDA0ODM0NzcgKiAoNjU1MzUgJiAodCBePSB0ID4+PiAyNCkpICsgKDU5Nzk3ICogKHQgPj4+IDE2KSA8PCAxNikgXiAxNTQwNDgzNDc3ICogKDY1NTM1ICYgbikgKyAoNTk3OTcgKiAobiA+Pj4gMTYpIDw8IDE2KTsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiBePSAoMjU1ICYgZS5jaGFyQ29kZUF0KHIgKyAyKSkgPDwgMTY7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gXj0gKDI1NSAmIGUuY2hhckNvZGVBdChyICsgMSkpIDw8IDg7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAxNTQwNDgzNDc3ICogKDY1NTM1ICYgKG4gXj0gMjU1ICYgZS5jaGFyQ29kZUF0KHIpKSkgKyAoNTk3OTcgKiAobiA+Pj4gMTYpIDw8IDE2KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCgobiA9IDE1NDA0ODM0NzcgKiAoNjU1MzUgJiAobiBePSBuID4+PiAxMykpICsgKDU5Nzk3ICogKG4gPj4+IDE2KSA8PCAxNikpIF4gbiA+Pj4gMTUpID4+PiAwKS50b1N0cmluZygzNikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBxZSA9IHsKICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogMSwKICAgICAgICAgICAgICAgICAgICBib3JkZXJJbWFnZU91dHNldDogMSwKICAgICAgICAgICAgICAgICAgICBib3JkZXJJbWFnZVNsaWNlOiAxLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckltYWdlV2lkdGg6IDEsCiAgICAgICAgICAgICAgICAgICAgYm94RmxleDogMSwKICAgICAgICAgICAgICAgICAgICBib3hGbGV4R3JvdXA6IDEsCiAgICAgICAgICAgICAgICAgICAgYm94T3JkaW5hbEdyb3VwOiAxLAogICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvdW50OiAxLAogICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IDEsCiAgICAgICAgICAgICAgICAgICAgZmxleDogMSwKICAgICAgICAgICAgICAgICAgICBmbGV4R3JvdzogMSwKICAgICAgICAgICAgICAgICAgICBmbGV4UG9zaXRpdmU6IDEsCiAgICAgICAgICAgICAgICAgICAgZmxleFNocmluazogMSwKICAgICAgICAgICAgICAgICAgICBmbGV4TmVnYXRpdmU6IDEsCiAgICAgICAgICAgICAgICAgICAgZmxleE9yZGVyOiAxLAogICAgICAgICAgICAgICAgICAgIGdyaWRSb3c6IDEsCiAgICAgICAgICAgICAgICAgICAgZ3JpZFJvd0VuZDogMSwKICAgICAgICAgICAgICAgICAgICBncmlkUm93U3BhbjogMSwKICAgICAgICAgICAgICAgICAgICBncmlkUm93U3RhcnQ6IDEsCiAgICAgICAgICAgICAgICAgICAgZ3JpZENvbHVtbjogMSwKICAgICAgICAgICAgICAgICAgICBncmlkQ29sdW1uRW5kOiAxLAogICAgICAgICAgICAgICAgICAgIGdyaWRDb2x1bW5TcGFuOiAxLAogICAgICAgICAgICAgICAgICAgIGdyaWRDb2x1bW5TdGFydDogMSwKICAgICAgICAgICAgICAgICAgICBtc0dyaWRSb3c6IDEsCiAgICAgICAgICAgICAgICAgICAgbXNHcmlkUm93U3BhbjogMSwKICAgICAgICAgICAgICAgICAgICBtc0dyaWRDb2x1bW46IDEsCiAgICAgICAgICAgICAgICAgICAgbXNHcmlkQ29sdW1uU3BhbjogMSwKICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAxLAogICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDEsCiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSwKICAgICAgICAgICAgICAgICAgICBvcnBoYW5zOiAxLAogICAgICAgICAgICAgICAgICAgIHRhYlNpemU6IDEsCiAgICAgICAgICAgICAgICAgICAgd2lkb3dzOiAxLAogICAgICAgICAgICAgICAgICAgIHpJbmRleDogMSwKICAgICAgICAgICAgICAgICAgICB6b29tOiAxLAogICAgICAgICAgICAgICAgICAgIFdlYmtpdExpbmVDbGFtcDogMSwKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMSwKICAgICAgICAgICAgICAgICAgICBmbG9vZE9wYWNpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgc3RvcE9wYWNpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlRGFzaGFycmF5OiAxLAogICAgICAgICAgICAgICAgICAgIHN0cm9rZURhc2hvZmZzZXQ6IDEsCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTWl0ZXJsaW1pdDogMSwKICAgICAgICAgICAgICAgICAgICBzdHJva2VPcGFjaXR5OiAxLAogICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgRmUgPSAvW0EtWl18Xm1zL2csCiAgICAgICAgICAgICAgICBWZSA9IC9fRU1PXyhbXl9dKz8pXyhbXl0qPylfRU1PXy9nLAogICAgICAgICAgICAgICAgQmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ1ID09PSBlLmNoYXJDb2RlQXQoMSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBVZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlICYmICJib29sZWFuIiAhPSB0eXBlb2YgZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEhlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbbl0gPT09IHVuZGVmaW5lZCAmJiAodFtuXSA9IGUobikpLCB0W25dCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBCZShlKSA/IGUgOiBlLnJlcGxhY2UoRmUsICItJCYiKS50b0xvd2VyQ2FzZSgpCiAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICB6ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYW5pbWF0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYW5pbWF0aW9uTmFtZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQpIHJldHVybiB0LnJlcGxhY2UoVmUsIChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEtlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IEtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAxID09PSBxZVtlXSB8fCBCZShlKSB8fCAibnVtYmVyIiAhPSB0eXBlb2YgdCB8fCAwID09PSB0ID8gdCA6IHQgKyAicHgiCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gV2UoZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbikgcmV0dXJuICIiOwogICAgICAgICAgICAgICAgaWYgKG4uX19lbW90aW9uX3N0eWxlcyAhPT0gdW5kZWZpbmVkKSByZXR1cm4gbjsKICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIG4pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSBuLmFuaW0pIHJldHVybiBLZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG4ubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogbi5zdHlsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBLZQogICAgICAgICAgICAgICAgICAgICAgICB9LCBuLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLnN0eWxlcyAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4ubmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvICE9PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG8gIT09IHVuZGVmaW5lZDspIEtlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBvLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogby5zdHlsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IEtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbyA9IG8ubmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLnN0eWxlcyArICI7IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBuLmxlbmd0aDsgbysrKSByICs9IFdlKGUsIHQsIG5bb10sICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgIT0gdHlwZW9mIGEpIG51bGwgIT0gdCAmJiB0W2FdICE9PSB1bmRlZmluZWQgPyByICs9IGkgKyAieyIgKyB0W2FdICsgIn0iIDogVWUoYSkgJiYgKHIgKz0gSGUoaSkgKyAiOiIgKyB6ZShpLCBhKSArICI7Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGEpIHx8ICJzdHJpbmciICE9IHR5cGVvZiBhWzBdIHx8IG51bGwgIT0gdCAmJiB0W2FbMF1dICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gV2UoZSwgdCwgYSwgITEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYW5pbWF0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhbmltYXRpb25OYW1lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciArPSBIZShpKSArICI6IiArIHMgKyAiOyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgKz0gaSArICJ7IiArIHMgKyAifSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB1ID0gMDsgdSA8IGEubGVuZ3RoOyB1KyspIFVlKGFbdV0pICYmIChyICs9IEhlKGkpICsgIjoiICsgemUoaSwgYVt1XSkgKyAiOyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0LCBuKTsKICAgICAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gS2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4oZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gS2UgPSBpLCBXZShlLCB0LCBhLCByKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB0KSByZXR1cm4gbjsKICAgICAgICAgICAgICAgIHZhciBzID0gdFtuXTsKICAgICAgICAgICAgICAgIHJldHVybiBzID09PSB1bmRlZmluZWQgfHwgciA/IG4gOiBzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIEtlLCBZZSA9IC9sYWJlbDpccyooW15ccztcbntdKylccyo7L2c7CiAgICAgICAgICAgIHZhciBHZSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gZS5sZW5ndGggJiYgIm9iamVjdCIgPT0gdHlwZW9mIGVbMF0gJiYgbnVsbCAhPT0gZVswXSAmJiBlWzBdLnN0eWxlcyAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZVswXTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gIiI7CiAgICAgICAgICAgICAgICAgICAgS2UgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlWzBdOwogICAgICAgICAgICAgICAgICAgIG51bGwgPT0gaSB8fCBpLnJhdyA9PT0gdW5kZWZpbmVkID8gKHIgPSAhMSwgbyArPSBXZShuLCB0LCBpLCAhMSkpIDogbyArPSBpWzBdOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAxOyBhIDwgZS5sZW5ndGg7IGErKykgbyArPSBXZShuLCB0LCBlW2FdLCA0NiA9PT0gby5jaGFyQ29kZUF0KG8ubGVuZ3RoIC0gMSkpLCByICYmIChvICs9IGlbYV0pOwogICAgICAgICAgICAgICAgICAgIFllLmxhc3RJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcywgdSA9ICIiOyBudWxsICE9PSAocyA9IFllLmV4ZWMobykpOykgdSArPSAiLSIgKyBzWzFdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFJlKG8pICsgdSwKICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiBvLAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBLZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAkZSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksCiAgICAgICAgICAgICAgICBRZSA9ICgwLCBlLmNyZWF0ZUNvbnRleHQpKCJ1bmRlZmluZWQiICE9IHR5cGVvZiBIVE1MRWxlbWVudCA/IE1lKCkgOiBudWxsKSwKICAgICAgICAgICAgICAgIFplID0gKDAsIGUuY3JlYXRlQ29udGV4dCkoe30pLAogICAgICAgICAgICAgICAgWGUgPSAoUWUuUHJvdmlkZXIsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmNyZWF0ZUVsZW1lbnQpKFFlLkNvbnN1bWVyLCBudWxsLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQobiwgZSwgcikKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIGUuZm9yd2FyZFJlZikobikKICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgSmUgPSAiX19FTU9USU9OX1RZUEVfUExFQVNFX0RPX05PVF9VU0VfXyIsCiAgICAgICAgICAgICAgICBldCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHt9OwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gdCkgJGUuY2FsbCh0LCByKSAmJiAobltyXSA9IHRbcl0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuW0plXSA9IGUsIG4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0dCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbnQgPSBmdW5jdGlvbih0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBudWxsID09PSByID8gbi5jc3MgOiBuLmNzcyhyKTsKICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgaSAmJiB0LnJlZ2lzdGVyZWRbaV0gIT09IHVuZGVmaW5lZCAmJiAoaSA9IHQucmVnaXN0ZXJlZFtpXSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuW0plXSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9ICIiOwogICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBuLmNsYXNzTmFtZSA/IHUgPSBMZSh0LnJlZ2lzdGVyZWQsIHMsIG4uY2xhc3NOYW1lKSA6IG51bGwgIT0gbi5jbGFzc05hbWUgJiYgKHUgPSBuLmNsYXNzTmFtZSArICIgIik7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBHZShzKTsKICAgICAgICAgICAgICAgICAgICBJZSh0LCBsLCAic3RyaW5nIiA9PSB0eXBlb2YgYSk7CiAgICAgICAgICAgICAgICAgICAgdSArPSB0LmtleSArICItIiArIGwubmFtZTsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHt9OwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGYgaW4gbikgJGUuY2FsbChuLCBmKSAmJiAiY3NzIiAhPT0gZiAmJiBmICE9PSBKZSAmJiAoY1tmXSA9IG5bZl0pOwogICAgICAgICAgICAgICAgICAgIGMucmVmID0gbywgYy5jbGFzc05hbWUgPSB1OwogICAgICAgICAgICAgICAgICAgIHZhciBkID0gKDAsIGUuY3JlYXRlRWxlbWVudCkoYSwgYyksCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAoMCwgZS5jcmVhdGVFbGVtZW50KSh0dCwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmNyZWF0ZUVsZW1lbnQpKGUuRnJhZ21lbnQsIG51bGwsIHAsIGQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcnQgPSBYZSgoZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiB0LmNzcyA/ICgwLCBlLmNyZWF0ZUVsZW1lbnQpKFplLkNvbnN1bWVyLCBudWxsLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnQobiwgdCwgZSwgcikKICAgICAgICAgICAgICAgICAgICB9KSkgOiBudChuLCB0LCBudWxsLCByKQogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICB2YXIgb3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCwgdCA9IG5ldyBBcnJheShlKSwgbiA9IDA7IG4gPCBlOyBuKyspIHRbbl0gPSBhcmd1bWVudHNbbl07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdlKHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaXQgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhcmd1bWVudHM7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbiB8fCAhJGUuY2FsbChuLCAiY3NzIikpIHJldHVybiBlLmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCByKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbmV3IEFycmF5KG8pOwogICAgICAgICAgICAgICAgICAgIGlbMF0gPSBydCwgaVsxXSA9IGV0KHQsIG4pOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAyOyBhIDwgbzsgYSsrKSBpW2FdID0gclthXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5jcmVhdGVFbGVtZW50LmFwcGx5KG51bGwsIGkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYXQgPSBYZSgoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5zdHlsZXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHIpIHJldHVybiAoMCwgZS5jcmVhdGVFbGVtZW50KShaZS5Db25zdW1lciwgbnVsbCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBHZShbcih0KV0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIGUuY3JlYXRlRWxlbWVudCkoc3QsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQ6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZTogbgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IEdlKFtyXSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmNyZWF0ZUVsZW1lbnQpKHN0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQ6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlOiBuCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgIHN0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBuOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2FsbCh0aGlzLCB0LCBuLCByKSB8fCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4gPSBlLCAodCA9IHIpLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLCB0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHQsIFNlKHQsIG4pOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gci5wcm90b3R5cGU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGVldCA9IG5ldyBqZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHRoaXMucHJvcHMuY2FjaGUua2V5ICsgIi1nbG9iYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uY2U6IHRoaXMucHJvcHMuY2FjaGUuc2hlZXQubm9uY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHRoaXMucHJvcHMuY2FjaGUuc2hlZXQuY29udGFpbmVyCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInN0eWxlW2RhdGEtZW1vdGlvbi0iICsgdGhpcy5wcm9wcy5jYWNoZS5rZXkgKyAnPSInICsgdGhpcy5wcm9wcy5zZXJpYWxpemVkLm5hbWUgKyAnIl0nKTsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gZSAmJiB0aGlzLnNoZWV0LnRhZ3MucHVzaChlKSwgdGhpcy5wcm9wcy5jYWNoZS5zaGVldC50YWdzLmxlbmd0aCAmJiAodGhpcy5zaGVldC5iZWZvcmUgPSB0aGlzLnByb3BzLmNhY2hlLnNoZWV0LnRhZ3NbMF0pLCB0aGlzLmluc2VydFN0eWxlcygpCiAgICAgICAgICAgICAgICAgICAgfSwgby5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc2VyaWFsaXplZC5uYW1lICE9PSB0aGlzLnByb3BzLnNlcmlhbGl6ZWQubmFtZSAmJiB0aGlzLmluc2VydFN0eWxlcygpCiAgICAgICAgICAgICAgICAgICAgfSwgby5pbnNlcnRTdHlsZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuc2VyaWFsaXplZC5uZXh0ICE9PSB1bmRlZmluZWQgJiYgSWUodGhpcy5wcm9wcy5jYWNoZSwgdGhpcy5wcm9wcy5zZXJpYWxpemVkLm5leHQsICEwKSwgdGhpcy5zaGVldC50YWdzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnNoZWV0LnRhZ3NbdGhpcy5zaGVldC50YWdzLmxlbmd0aCAtIDFdLm5leHRFbGVtZW50U2libGluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlZXQuYmVmb3JlID0gZSwgdGhpcy5zaGVldC5mbHVzaCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jYWNoZS5pbnNlcnQoIiIsIHRoaXMucHJvcHMuc2VyaWFsaXplZCwgdGhpcy5zaGVldCwgITEpCiAgICAgICAgICAgICAgICAgICAgfSwgby5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZWV0LmZsdXNoKCkKICAgICAgICAgICAgICAgICAgICB9LCBvLnJlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICAgICAgICAgIH0sIHIKICAgICAgICAgICAgICAgIH0oZS5Db21wb25lbnQpLAogICAgICAgICAgICAgICAgdXQgPSBmdW5jdGlvbiBsYShlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IGUubGVuZ3RoLCBuID0gMCwgciA9ICIiOyBuIDwgdDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZVtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG8pKSBpID0gbGEobyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgaW4gaSA9ICIiLCBvKSBvW2FdICYmIGEgJiYgKGkgJiYgKGkgKz0gIiAiKSwgaSArPSBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgJiYgKHIgJiYgKHIgKz0gIiAiKSwgciArPSBpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gbHQoZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSBbXSwKICAgICAgICAgICAgICAgICAgICBvID0gTGUoZSwgciwgbik7CiAgICAgICAgICAgICAgICByZXR1cm4gci5sZW5ndGggPCAyID8gbiA6IG8gKyB0KHIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmdCA9IFhlKChmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmNyZWF0ZUVsZW1lbnQpKFplLkNvbnN1bWVyLCBudWxsLCAoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoLCB0ID0gbmV3IEFycmF5KGUpLCByID0gMDsgciA8IGU7IHIrKykgdFtyXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IEdlKHQsIG4ucmVnaXN0ZXJlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEllKG4sIG8sICExKSwgbi5rZXkgKyAiLSIgKyBvLm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzczogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoLCB0ID0gbmV3IEFycmF5KGUpLCByID0gMDsgciA8IGU7IHIrKykgdFtyXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGx0KG4ucmVnaXN0ZXJlZCwgbywgdXQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZTogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmNoaWxkcmVuKGkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9ICgwLCBlLmNyZWF0ZUVsZW1lbnQpKGN0LCBudWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBlLmNyZWF0ZUVsZW1lbnQpKGUuRnJhZ21lbnQsIG51bGwsIHMsIGEpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICBkdCA9IFsibW91c2Vkb3duIiwgInRvdWNoc3RhcnQiXTsKICAgICAgICAgICAgLyoqIQogICAgICAgICAgICAgKiBAZmlsZU92ZXJ2aWV3IEtpY2thc3MgbGlicmFyeSB0byBjcmVhdGUgYW5kIHBsYWNlIHBvcHBlcnMgbmVhciB0aGVpciByZWZlcmVuY2UgZWxlbWVudHMuCiAgICAgICAgICAgICAqIEB2ZXJzaW9uIDEuMTYuMQogICAgICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTYgRmVkZXJpY28gWml2b2xvIGFuZCBjb250cmlidXRvcnMKICAgICAgICAgICAgICoKICAgICAgICAgICAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogICAgICAgICAgICAgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAogICAgICAgICAgICAgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCiAgICAgICAgICAgICAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKICAgICAgICAgICAgICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCiAgICAgICAgICAgICAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAgICAgICAgICAgICAqCiAgICAgICAgICAgICAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbAogICAgICAgICAgICAgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogICAgICAgICAgICAgKgogICAgICAgICAgICAgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogICAgICAgICAgICAgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICAgICAgICAgICAgICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAgICAgICAgICAgICAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICAgICAgICAgICAgICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICAgICAgICAgICAgICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICAgICAgICAgICAgICogU09GVFdBUkUuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICB2YXIgcHQgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBkb2N1bWVudCAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbmF2aWdhdG9yLAogICAgICAgICAgICAgICAgaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gWyJFZGdlIiwgIlRyaWRlbnQiLCAiRmlyZWZveCJdLCB0ID0gMDsgdCA8IGUubGVuZ3RoOyB0ICs9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoZVt0XSkgPj0gMCkgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgdmFyIG10ID0gcHQgJiYgd2luZG93LlByb21pc2UgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9ICExOwogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHQgfHwgKHQgPSAhMCwgd2luZG93LlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0ID0gITEsIGUoKQogICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gITE7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdCB8fCAodCA9ICEwLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICExLCBlKCkKICAgICAgICAgICAgICAgICAgICB9KSwgaHQpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24geXQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgIltvYmplY3QgRnVuY3Rpb25dIiA9PT0ge30udG9TdHJpbmcuY2FsbChlKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBndChlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoMSAhPT0gZS5ub2RlVHlwZSkgcmV0dXJuIFtdOwogICAgICAgICAgICAgICAgdmFyIG4gPSBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlLCBudWxsKTsKICAgICAgICAgICAgICAgIHJldHVybiB0ID8gblt0XSA6IG4KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdnQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICJIVE1MIiA9PT0gZS5ub2RlTmFtZSA/IGUgOiBlLnBhcmVudE5vZGUgfHwgZS5ob3N0CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGJ0KGUpIHsKICAgICAgICAgICAgICAgIGlmICghZSkgcmV0dXJuIGRvY3VtZW50LmJvZHk7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKGUubm9kZU5hbWUpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJIVE1MIjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJCT0RZIjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUub3duZXJEb2N1bWVudC5ib2R5OwogICAgICAgICAgICAgICAgICAgIGNhc2UgIiNkb2N1bWVudCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmJvZHkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciB0ID0gZ3QoZSksCiAgICAgICAgICAgICAgICAgICAgbiA9IHQub3ZlcmZsb3csCiAgICAgICAgICAgICAgICAgICAgciA9IHQub3ZlcmZsb3dYLAogICAgICAgICAgICAgICAgICAgIG8gPSB0Lm92ZXJmbG93WTsKICAgICAgICAgICAgICAgIHJldHVybiAvKGF1dG98c2Nyb2xsfG92ZXJsYXkpLy50ZXN0KG4gKyBvICsgcikgPyBlIDogYnQodnQoZSkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHd0KGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUucmVmZXJlbmNlTm9kZSA/IGUucmVmZXJlbmNlTm9kZSA6IGUKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgT3QgPSBwdCAmJiAhKCF3aW5kb3cuTVNJbnB1dE1ldGhvZENvbnRleHQgfHwgIWRvY3VtZW50LmRvY3VtZW50TW9kZSksCiAgICAgICAgICAgICAgICBfdCA9IHB0ICYmIC9NU0lFIDEwLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwoKICAgICAgICAgICAgZnVuY3Rpb24geHQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIDExID09PSBlID8gT3QgOiAxMCA9PT0gZSA/IF90IDogT3QgfHwgX3QKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24ga3QoZSkgewogICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IHh0KDEwKSA/IGRvY3VtZW50LmJvZHkgOiBudWxsLCBuID0gZS5vZmZzZXRQYXJlbnQgfHwgbnVsbDsgbiA9PT0gdCAmJiBlLm5leHRFbGVtZW50U2libGluZzspIG4gPSAoZSA9IGUubmV4dEVsZW1lbnRTaWJsaW5nKS5vZmZzZXRQYXJlbnQ7CiAgICAgICAgICAgICAgICB2YXIgciA9IG4gJiYgbi5ub2RlTmFtZTsKICAgICAgICAgICAgICAgIHJldHVybiByICYmICJCT0RZIiAhPT0gciAmJiAiSFRNTCIgIT09IHIgPyAtMSAhPT0gWyJUSCIsICJURCIsICJUQUJMRSJdLmluZGV4T2Yobi5ub2RlTmFtZSkgJiYgInN0YXRpYyIgPT09IGd0KG4sICJwb3NpdGlvbiIpID8ga3QobikgOiBuIDogZSA/IGUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gRXQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGUucGFyZW50Tm9kZSA/IEV0KGUucGFyZW50Tm9kZSkgOiBlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEN0KGUsIHQpIHsKICAgICAgICAgICAgICAgIGlmICghKGUgJiYgZS5ub2RlVHlwZSAmJiB0ICYmIHQubm9kZVR5cGUpKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAgICAgICAgdmFyIG4gPSBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcsCiAgICAgICAgICAgICAgICAgICAgciA9IG4gPyBlIDogdCwKICAgICAgICAgICAgICAgICAgICBvID0gbiA/IHQgOiBlLAogICAgICAgICAgICAgICAgICAgIGkgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAgICAgICAgICAgaS5zZXRTdGFydChyLCAwKSwgaS5zZXRFbmQobywgMCk7CiAgICAgICAgICAgICAgICB2YXIgYSwgcywgdSA9IGkuY29tbW9uQW5jZXN0b3JDb250YWluZXI7CiAgICAgICAgICAgICAgICBpZiAoZSAhPT0gdSAmJiB0ICE9PSB1IHx8IHIuY29udGFpbnMobykpIHJldHVybiAiQk9EWSIgPT09IChzID0gKGEgPSB1KS5ub2RlTmFtZSkgfHwgIkhUTUwiICE9PSBzICYmIGt0KGEuZmlyc3RFbGVtZW50Q2hpbGQpICE9PSBhID8ga3QodSkgOiB1OwogICAgICAgICAgICAgICAgdmFyIGwgPSBFdChlKTsKICAgICAgICAgICAgICAgIHJldHVybiBsLmhvc3QgPyBDdChsLmhvc3QsIHQpIDogQ3QoZSwgRXQodCkuaG9zdCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gU3QoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICJ0b3AiLAogICAgICAgICAgICAgICAgICAgIG4gPSAidG9wIiA9PT0gdCA/ICJzY3JvbGxUb3AiIDogInNjcm9sbExlZnQiLAogICAgICAgICAgICAgICAgICAgIHIgPSBlLm5vZGVOYW1lOwogICAgICAgICAgICAgICAgaWYgKCJCT0RZIiA9PT0gciB8fCAiSFRNTCIgPT09IHIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLm93bmVyRG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCB8fCBvOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpW25dCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZVtuXQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBqdChlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkICYmIGFyZ3VtZW50c1syXSwKICAgICAgICAgICAgICAgICAgICByID0gU3QodCwgInRvcCIpLAogICAgICAgICAgICAgICAgICAgIG8gPSBTdCh0LCAibGVmdCIpLAogICAgICAgICAgICAgICAgICAgIGkgPSBuID8gLTEgOiAxOwogICAgICAgICAgICAgICAgcmV0dXJuIGUudG9wICs9IHIgKiBpLCBlLmJvdHRvbSArPSByICogaSwgZS5sZWZ0ICs9IG8gKiBpLCBlLnJpZ2h0ICs9IG8gKiBpLCBlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFB0KGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gIngiID09PSB0ID8gIkxlZnQiIDogIlRvcCIsCiAgICAgICAgICAgICAgICAgICAgciA9ICJMZWZ0IiA9PT0gbiA/ICJSaWdodCIgOiAiQm90dG9tIjsKICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KGVbImJvcmRlciIgKyBuICsgIldpZHRoIl0pICsgcGFyc2VGbG9hdChlWyJib3JkZXIiICsgciArICJXaWR0aCJdKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBBdChlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodFsib2Zmc2V0IiArIGVdLCB0WyJzY3JvbGwiICsgZV0sIG5bImNsaWVudCIgKyBlXSwgblsib2Zmc2V0IiArIGVdLCBuWyJzY3JvbGwiICsgZV0sIHh0KDEwKSA/IHBhcnNlSW50KG5bIm9mZnNldCIgKyBlXSkgKyBwYXJzZUludChyWyJtYXJnaW4iICsgKCJIZWlnaHQiID09PSBlID8gIlRvcCIgOiAiTGVmdCIpXSkgKyBwYXJzZUludChyWyJtYXJnaW4iICsgKCJIZWlnaHQiID09PSBlID8gIkJvdHRvbSIgOiAiUmlnaHQiKV0pIDogMCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gRHQoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLmJvZHksCiAgICAgICAgICAgICAgICAgICAgbiA9IGUuZG9jdW1lbnRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIHIgPSB4dCgxMCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShuKTsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBBdCgiSGVpZ2h0IiwgdCwgbiwgciksCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IEF0KCJXaWR0aCIsIHQsIG4sIHIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIFR0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiB0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBOdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZW51bWVyYWJsZSA9IHIuZW51bWVyYWJsZSB8fCAhMSwgci5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiByICYmIChyLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgci5rZXksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgZSh0LnByb3RvdHlwZSwgbiksIHIgJiYgZSh0LCByKSwgdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgIE10ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0IGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgIH0pIDogZVt0XSA9IG4sIGUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBMdCA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAxOyB0IDwgYXJndW1lbnRzLmxlbmd0aDsgdCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzW3RdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByIGluIG4pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCByKSAmJiAoZVtyXSA9IG5bcl0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gSXQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIEx0KHt9LCBlLCB7CiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGUubGVmdCArIGUud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBlLnRvcCArIGUuaGVpZ2h0CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBSdChlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHt9OwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBpZiAoeHQoMTApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFN0KGUsICJ0b3AiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBTdChlLCAibGVmdCIpOwogICAgICAgICAgICAgICAgICAgICAgICB0LnRvcCArPSBuLCB0LmxlZnQgKz0gciwgdC5ib3R0b20gKz0gbiwgdC5yaWdodCArPSByCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHQgPSBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChmKSB7fQogICAgICAgICAgICAgICAgdmFyIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHQubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiB0LnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHQucmlnaHQgLSB0LmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdC5ib3R0b20gLSB0LnRvcAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaSA9ICJIVE1MIiA9PT0gZS5ub2RlTmFtZSA/IER0KGUub3duZXJEb2N1bWVudCkgOiB7fSwKICAgICAgICAgICAgICAgICAgICBhID0gaS53aWR0aCB8fCBlLmNsaWVudFdpZHRoIHx8IG8ud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgcyA9IGkuaGVpZ2h0IHx8IGUuY2xpZW50SGVpZ2h0IHx8IG8uaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgIHUgPSBlLm9mZnNldFdpZHRoIC0gYSwKICAgICAgICAgICAgICAgICAgICBsID0gZS5vZmZzZXRIZWlnaHQgLSBzOwogICAgICAgICAgICAgICAgaWYgKHUgfHwgbCkgewogICAgICAgICAgICAgICAgICAgIHZhciBjID0gZ3QoZSk7CiAgICAgICAgICAgICAgICAgICAgdSAtPSBQdChjLCAieCIpLCBsIC09IFB0KGMsICJ5IiksIG8ud2lkdGggLT0gdSwgby5oZWlnaHQgLT0gbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIEl0KG8pCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHF0KGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzJdLAogICAgICAgICAgICAgICAgICAgIHIgPSB4dCgxMCksCiAgICAgICAgICAgICAgICAgICAgbyA9ICJIVE1MIiA9PT0gdC5ub2RlTmFtZSwKICAgICAgICAgICAgICAgICAgICBpID0gUnQoZSksCiAgICAgICAgICAgICAgICAgICAgYSA9IFJ0KHQpLAogICAgICAgICAgICAgICAgICAgIHMgPSBidChlKSwKICAgICAgICAgICAgICAgICAgICB1ID0gZ3QodCksCiAgICAgICAgICAgICAgICAgICAgbCA9IHBhcnNlRmxvYXQodS5ib3JkZXJUb3BXaWR0aCksCiAgICAgICAgICAgICAgICAgICAgYyA9IHBhcnNlRmxvYXQodS5ib3JkZXJMZWZ0V2lkdGgpOwogICAgICAgICAgICAgICAgbiAmJiBvICYmIChhLnRvcCA9IE1hdGgubWF4KGEudG9wLCAwKSwgYS5sZWZ0ID0gTWF0aC5tYXgoYS5sZWZ0LCAwKSk7CiAgICAgICAgICAgICAgICB2YXIgZiA9IEl0KHsKICAgICAgICAgICAgICAgICAgICB0b3A6IGkudG9wIC0gYS50b3AgLSBsLAogICAgICAgICAgICAgICAgICAgIGxlZnQ6IGkubGVmdCAtIGEubGVmdCAtIGMsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGkud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpLmhlaWdodAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBpZiAoZi5tYXJnaW5Ub3AgPSAwLCBmLm1hcmdpbkxlZnQgPSAwLCAhciAmJiBvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBwYXJzZUZsb2F0KHUubWFyZ2luVG9wKSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHBhcnNlRmxvYXQodS5tYXJnaW5MZWZ0KTsKICAgICAgICAgICAgICAgICAgICBmLnRvcCAtPSBsIC0gZCwgZi5ib3R0b20gLT0gbCAtIGQsIGYubGVmdCAtPSBjIC0gcCwgZi5yaWdodCAtPSBjIC0gcCwgZi5tYXJnaW5Ub3AgPSBkLCBmLm1hcmdpbkxlZnQgPSBwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gKHIgJiYgIW4gPyB0LmNvbnRhaW5zKHMpIDogdCA9PT0gcyAmJiAiQk9EWSIgIT09IHMubm9kZU5hbWUpICYmIChmID0ganQoZiwgdCkpLCBmCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEZ0KGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzFdLAogICAgICAgICAgICAgICAgICAgIG4gPSBlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIHIgPSBxdChlLCBuKSwKICAgICAgICAgICAgICAgICAgICBvID0gTWF0aC5tYXgobi5jbGllbnRXaWR0aCwgd2luZG93LmlubmVyV2lkdGggfHwgMCksCiAgICAgICAgICAgICAgICAgICAgaSA9IE1hdGgubWF4KG4uY2xpZW50SGVpZ2h0LCB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgMCksCiAgICAgICAgICAgICAgICAgICAgYSA9IHQgPyAwIDogU3QobiksCiAgICAgICAgICAgICAgICAgICAgcyA9IHQgPyAwIDogU3QobiwgImxlZnQiKSwKICAgICAgICAgICAgICAgICAgICB1ID0gewogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGEgLSByLnRvcCArIHIubWFyZ2luVG9wLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBzIC0gci5sZWZ0ICsgci5tYXJnaW5MZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogbywKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiBJdCh1KQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBWdChlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUubm9kZU5hbWU7CiAgICAgICAgICAgICAgICBpZiAoIkJPRFkiID09PSB0IHx8ICJIVE1MIiA9PT0gdCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgaWYgKCJmaXhlZCIgPT09IGd0KGUsICJwb3NpdGlvbiIpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHZ0KGUpOwogICAgICAgICAgICAgICAgcmV0dXJuICEhbiAmJiBWdChuKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBCdChlKSB7CiAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUucGFyZW50RWxlbWVudCB8fCB4dCgpKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IGUucGFyZW50RWxlbWVudDsgdCAmJiAibm9uZSIgPT09IGd0KHQsICJ0cmFuc2Zvcm0iKTspIHQgPSB0LnBhcmVudEVsZW1lbnQ7CiAgICAgICAgICAgICAgICByZXR1cm4gdCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gVXQoZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgdmFyIG8gPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCAmJiBhcmd1bWVudHNbNF0sCiAgICAgICAgICAgICAgICAgICAgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhID0gbyA/IEJ0KGUpIDogQ3QoZSwgd3QodCkpOwogICAgICAgICAgICAgICAgaWYgKCJ2aWV3cG9ydCIgPT09IHIpIGkgPSBGdChhLCBvKTsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICJzY3JvbGxQYXJlbnQiID09PSByID8gIkJPRFkiID09PSAocyA9IGJ0KHZ0KHQpKSkubm9kZU5hbWUgJiYgKHMgPSBlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSA6IHMgPSAid2luZG93IiA9PT0gciA/IGUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgOiByOwogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gcXQocywgYSwgbyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJIVE1MIiAhPT0gcy5ub2RlTmFtZSB8fCBWdChhKSkgaSA9IHU7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gRHQoZS5vd25lckRvY3VtZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBsLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBsLndpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICBpLnRvcCArPSB1LnRvcCAtIHUubWFyZ2luVG9wLCBpLmJvdHRvbSA9IGMgKyB1LnRvcCwgaS5sZWZ0ICs9IHUubGVmdCAtIHUubWFyZ2luTGVmdCwgaS5yaWdodCA9IGYgKyB1LmxlZnQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgZCA9ICJudW1iZXIiID09IHR5cGVvZihuID0gbiB8fCAwKTsKICAgICAgICAgICAgICAgIHJldHVybiBpLmxlZnQgKz0gZCA/IG4gOiBuLmxlZnQgfHwgMCwgaS50b3AgKz0gZCA/IG4gOiBuLnRvcCB8fCAwLCBpLnJpZ2h0IC09IGQgPyBuIDogbi5yaWdodCB8fCAwLCBpLmJvdHRvbSAtPSBkID8gbiA6IG4uYm90dG9tIHx8IDAsIGkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gSHQoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUud2lkdGggKiBlLmhlaWdodAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB6dChlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogMDsKICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gZS5pbmRleE9mKCJhdXRvIikpIHJldHVybiBlOwogICAgICAgICAgICAgICAgdmFyIGEgPSBVdChuLCByLCBpLCBvKSwKICAgICAgICAgICAgICAgICAgICBzID0gewogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0LnRvcCAtIGEudG9wCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYS5yaWdodCAtIHQucmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGEuaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGEuYm90dG9tIC0gdC5ib3R0b20KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHQubGVmdCAtIGEubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYS5oZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdSA9IE9iamVjdC5rZXlzKHMpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNbZV0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWE6IEh0KHNbZV0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSkpLnNvcnQoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYXJlYSAtIGUuYXJlYQogICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICBsID0gdS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA+PSBuLmNsaWVudFdpZHRoICYmIHIgPj0gbi5jbGllbnRIZWlnaHQKICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgYyA9IGwubGVuZ3RoID4gMCA/IGxbMF0ua2V5IDogdVswXS5rZXksCiAgICAgICAgICAgICAgICAgICAgZiA9IGUuc3BsaXQoIi0iKVsxXTsKICAgICAgICAgICAgICAgIHJldHVybiBjICsgKGYgPyAiLSIgKyBmIDogIiIpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFd0KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBudWxsLAogICAgICAgICAgICAgICAgICAgIG8gPSByID8gQnQodCkgOiBDdCh0LCB3dChuKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gcXQobiwgbywgcikKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gS3QoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlKSwKICAgICAgICAgICAgICAgICAgICBuID0gcGFyc2VGbG9hdCh0Lm1hcmdpblRvcCB8fCAwKSArIHBhcnNlRmxvYXQodC5tYXJnaW5Cb3R0b20gfHwgMCksCiAgICAgICAgICAgICAgICAgICAgciA9IHBhcnNlRmxvYXQodC5tYXJnaW5MZWZ0IHx8IDApICsgcGFyc2VGbG9hdCh0Lm1hcmdpblJpZ2h0IHx8IDApOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogZS5vZmZzZXRXaWR0aCArIHIsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlLm9mZnNldEhlaWdodCArIG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gWXQoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogInJpZ2h0IiwKICAgICAgICAgICAgICAgICAgICByaWdodDogImxlZnQiLAogICAgICAgICAgICAgICAgICAgIGJvdHRvbTogInRvcCIsCiAgICAgICAgICAgICAgICAgICAgdG9wOiAiYm90dG9tIgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiBlLnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0W2VdCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gR3QoZSwgdCwgbikgewogICAgICAgICAgICAgICAgbiA9IG4uc3BsaXQoIi0iKVswXTsKICAgICAgICAgICAgICAgIHZhciByID0gS3QoZSksCiAgICAgICAgICAgICAgICAgICAgbyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHIud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogci5oZWlnaHQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGkgPSAtMSAhPT0gWyJyaWdodCIsICJsZWZ0Il0uaW5kZXhPZihuKSwKICAgICAgICAgICAgICAgICAgICBhID0gaSA/ICJ0b3AiIDogImxlZnQiLAogICAgICAgICAgICAgICAgICAgIHMgPSBpID8gImxlZnQiIDogInRvcCIsCiAgICAgICAgICAgICAgICAgICAgdSA9IGkgPyAiaGVpZ2h0IiA6ICJ3aWR0aCIsCiAgICAgICAgICAgICAgICAgICAgbCA9IGkgPyAid2lkdGgiIDogImhlaWdodCI7CiAgICAgICAgICAgICAgICByZXR1cm4gb1thXSA9IHRbYV0gKyB0W3VdIC8gMiAtIHJbdV0gLyAyLCBvW3NdID0gbiA9PT0gcyA/IHRbc10gLSByW2xdIDogdFtZdChzKV0sIG8KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gJHQoZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5maW5kID8gZS5maW5kKHQpIDogZS5maWx0ZXIodClbMF0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gUXQoZSwgdCwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIChuID09PSB1bmRlZmluZWQgPyBlIDogZS5zbGljZSgwLCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXgpIHJldHVybiBlLmZpbmRJbmRleCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVt0XSA9PT0gbgogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICR0KGUsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlW3RdID09PSBuCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmluZGV4T2YocikKICAgICAgICAgICAgICAgIH0oZSwgIm5hbWUiLCBuKSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlWyJmdW5jdGlvbiJdICYmIGNvbnNvbGUud2FybigiYG1vZGlmaWVyLmZ1bmN0aW9uYCBpcyBkZXByZWNhdGVkLCB1c2UgYG1vZGlmaWVyLmZuYCEiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGVbImZ1bmN0aW9uIl0gfHwgZS5mbjsKICAgICAgICAgICAgICAgICAgICBlLmVuYWJsZWQgJiYgeXQobikgJiYgKHQub2Zmc2V0cy5wb3BwZXIgPSBJdCh0Lm9mZnNldHMucG9wcGVyKSwgdC5vZmZzZXRzLnJlZmVyZW5jZSA9IEl0KHQub2Zmc2V0cy5yZWZlcmVuY2UpLCB0ID0gbih0LCBlKSkKICAgICAgICAgICAgICAgIH0pKSwgdAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBadCgpIHsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZS5pc0Rlc3Ryb3llZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gewogICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZTogdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dTdHlsZXM6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgZmxpcHBlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldHM6IHt9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBlLm9mZnNldHMucmVmZXJlbmNlID0gV3QodGhpcy5zdGF0ZSwgdGhpcy5wb3BwZXIsIHRoaXMucmVmZXJlbmNlLCB0aGlzLm9wdGlvbnMucG9zaXRpb25GaXhlZCksIGUucGxhY2VtZW50ID0genQodGhpcy5vcHRpb25zLnBsYWNlbWVudCwgZS5vZmZzZXRzLnJlZmVyZW5jZSwgdGhpcy5wb3BwZXIsIHRoaXMucmVmZXJlbmNlLCB0aGlzLm9wdGlvbnMubW9kaWZpZXJzLmZsaXAuYm91bmRhcmllc0VsZW1lbnQsIHRoaXMub3B0aW9ucy5tb2RpZmllcnMuZmxpcC5wYWRkaW5nKSwgZS5vcmlnaW5hbFBsYWNlbWVudCA9IGUucGxhY2VtZW50LCBlLnBvc2l0aW9uRml4ZWQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25GaXhlZCwgZS5vZmZzZXRzLnBvcHBlciA9IEd0KHRoaXMucG9wcGVyLCBlLm9mZnNldHMucmVmZXJlbmNlLCBlLnBsYWNlbWVudCksIGUub2Zmc2V0cy5wb3BwZXIucG9zaXRpb24gPSB0aGlzLm9wdGlvbnMucG9zaXRpb25GaXhlZCA/ICJmaXhlZCIgOiAiYWJzb2x1dGUiLCBlID0gUXQodGhpcy5tb2RpZmllcnMsIGUpLCB0aGlzLnN0YXRlLmlzQ3JlYXRlZCA/IHRoaXMub3B0aW9ucy5vblVwZGF0ZShlKSA6ICh0aGlzLnN0YXRlLmlzQ3JlYXRlZCA9ICEwLCB0aGlzLm9wdGlvbnMub25DcmVhdGUoZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFh0KGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUubmFtZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5lbmFibGVkICYmIG4gPT09IHQKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBKdChlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gWyExLCAibXMiLCAiV2Via2l0IiwgIk1veiIsICJPIl0sIG4gPSBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZS5zbGljZSgxKSwgciA9IDA7IHIgPCB0Lmxlbmd0aDsgcisrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0W3JdLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbyA/ICIiICsgbyArIG4gOiBlOwogICAgICAgICAgICAgICAgICAgIGlmICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgZG9jdW1lbnQuYm9keS5zdHlsZVtpXSkgcmV0dXJuIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGVuKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuaXNEZXN0cm95ZWQgPSAhMCwgWHQodGhpcy5tb2RpZmllcnMsICJhcHBseVN0eWxlIikgJiYgKHRoaXMucG9wcGVyLnJlbW92ZUF0dHJpYnV0ZSgieC1wbGFjZW1lbnQiKSwgdGhpcy5wb3BwZXIuc3R5bGUucG9zaXRpb24gPSAiIiwgdGhpcy5wb3BwZXIuc3R5bGUudG9wID0gIiIsIHRoaXMucG9wcGVyLnN0eWxlLmxlZnQgPSAiIiwgdGhpcy5wb3BwZXIuc3R5bGUucmlnaHQgPSAiIiwgdGhpcy5wb3BwZXIuc3R5bGUuYm90dG9tID0gIiIsIHRoaXMucG9wcGVyLnN0eWxlLndpbGxDaGFuZ2UgPSAiIiwgdGhpcy5wb3BwZXIuc3R5bGVbSnQoInRyYW5zZm9ybSIpXSA9ICIiKSwgdGhpcy5kaXNhYmxlRXZlbnRMaXN0ZW5lcnMoKSwgdGhpcy5vcHRpb25zLnJlbW92ZU9uRGVzdHJveSAmJiB0aGlzLnBvcHBlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucG9wcGVyKSwgdGhpcwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB0bihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUub3duZXJEb2N1bWVudDsKICAgICAgICAgICAgICAgIHJldHVybiB0ID8gdC5kZWZhdWx0VmlldyA6IHdpbmRvdwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBubihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9ICJCT0RZIiA9PT0gZS5ub2RlTmFtZSwKICAgICAgICAgICAgICAgICAgICBpID0gbyA/IGUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyA6IGU7CiAgICAgICAgICAgICAgICBpLmFkZEV2ZW50TGlzdGVuZXIodCwgbiwgewogICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgICAgICAgICB9KSwgbyB8fCBubihidChpLnBhcmVudE5vZGUpLCB0LCBuLCByKSwgci5wdXNoKGkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHJuKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgIG4udXBkYXRlQm91bmQgPSByLCB0bihlKS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBuLnVwZGF0ZUJvdW5kLCB7CiAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdmFyIG8gPSBidChlKTsKICAgICAgICAgICAgICAgIHJldHVybiBubihvLCAic2Nyb2xsIiwgbi51cGRhdGVCb3VuZCwgbi5zY3JvbGxQYXJlbnRzKSwgbi5zY3JvbGxFbGVtZW50ID0gbywgbi5ldmVudHNFbmFibGVkID0gITAsIG4KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmV2ZW50c0VuYWJsZWQgfHwgKHRoaXMuc3RhdGUgPSBybih0aGlzLnJlZmVyZW5jZSwgdGhpcy5vcHRpb25zLCB0aGlzLnN0YXRlLCB0aGlzLnNjaGVkdWxlVXBkYXRlKSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gYW4oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdDsKICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZCAmJiAoY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5zY2hlZHVsZVVwZGF0ZSksIHRoaXMuc3RhdGUgPSAoZSA9IHRoaXMucmVmZXJlbmNlLCB0ID0gdGhpcy5zdGF0ZSwgdG4oZSkucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdC51cGRhdGVCb3VuZCksIHQuc2Nyb2xsUGFyZW50cy5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0LnVwZGF0ZUJvdW5kKQogICAgICAgICAgICAgICAgfSkpLCB0LnVwZGF0ZUJvdW5kID0gbnVsbCwgdC5zY3JvbGxQYXJlbnRzID0gW10sIHQuc2Nyb2xsRWxlbWVudCA9IG51bGwsIHQuZXZlbnRzRW5hYmxlZCA9ICExLCB0KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gc24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICIiICE9PSBlICYmICFpc05hTihwYXJzZUZsb2F0KGUpKSAmJiBpc0Zpbml0ZShlKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB1bihlLCB0KSB7CiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAiIjsgLSAxICE9PSBbIndpZHRoIiwgImhlaWdodCIsICJ0b3AiLCAicmlnaHQiLCAiYm90dG9tIiwgImxlZnQiXS5pbmRleE9mKG4pICYmIHNuKHRbbl0pICYmIChyID0gInB4IiksIGUuc3R5bGVbbl0gPSB0W25dICsgcgogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGxuID0gcHQgJiYgL0ZpcmVmb3gvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwoKICAgICAgICAgICAgZnVuY3Rpb24gY24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIHIgPSAkdChlLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5uYW1lID09PSB0CiAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgIG8gPSAhIXIgJiYgZS5zb21lKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm5hbWUgPT09IG4gJiYgZS5lbmFibGVkICYmIGUub3JkZXIgPCByLm9yZGVyCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgaWYgKCFvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAiYCIgKyB0ICsgImAiLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gImAiICsgbiArICJgIjsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYSArICIgbW9kaWZpZXIgaXMgcmVxdWlyZWQgYnkgIiArIGkgKyAiIG1vZGlmaWVyIGluIG9yZGVyIHRvIHdvcmssIGJlIHN1cmUgdG8gaW5jbHVkZSBpdCBiZWZvcmUgIiArIGkgKyAiISIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBmbiA9IFsiYXV0by1zdGFydCIsICJhdXRvIiwgImF1dG8tZW5kIiwgInRvcC1zdGFydCIsICJ0b3AiLCAidG9wLWVuZCIsICJyaWdodC1zdGFydCIsICJyaWdodCIsICJyaWdodC1lbmQiLCAiYm90dG9tLWVuZCIsICJib3R0b20iLCAiYm90dG9tLXN0YXJ0IiwgImxlZnQtZW5kIiwgImxlZnQiLCAibGVmdC1zdGFydCJdLAogICAgICAgICAgICAgICAgZG4gPSBmbi5zbGljZSgzKTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHBuKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgJiYgYXJndW1lbnRzWzFdLAogICAgICAgICAgICAgICAgICAgIG4gPSBkbi5pbmRleE9mKGUpLAogICAgICAgICAgICAgICAgICAgIHIgPSBkbi5zbGljZShuICsgMSkuY29uY2F0KGRuLnNsaWNlKDAsIG4pKTsKICAgICAgICAgICAgICAgIHJldHVybiB0ID8gci5yZXZlcnNlKCkgOiByCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGhuID0gImZsaXAiLAogICAgICAgICAgICAgICAgbW4gPSAiY2xvY2t3aXNlIiwKICAgICAgICAgICAgICAgIHluID0gImNvdW50ZXJjbG9ja3dpc2UiOwoKICAgICAgICAgICAgZnVuY3Rpb24gZ24oZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgdmFyIG8gPSBbMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgaSA9IC0xICE9PSBbInJpZ2h0IiwgImxlZnQiXS5pbmRleE9mKHIpLAogICAgICAgICAgICAgICAgICAgIGEgPSBlLnNwbGl0KC8oXCt8XC0pLykubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnRyaW0oKQogICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICBzID0gYS5pbmRleE9mKCR0KGEsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSAhPT0gZS5zZWFyY2goLyx8XHMvKQogICAgICAgICAgICAgICAgICAgIH0pKSk7CiAgICAgICAgICAgICAgICBhW3NdICYmIC0xID09PSBhW3NdLmluZGV4T2YoIiwiKSAmJiBjb25zb2xlLndhcm4oIk9mZnNldHMgc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlKHMpIGFyZSBkZXByZWNhdGVkLCB1c2UgYSBjb21tYSAoLCkgaW5zdGVhZC4iKTsKICAgICAgICAgICAgICAgIHZhciB1ID0gL1xzKixccyp8XHMrLywKICAgICAgICAgICAgICAgICAgICBsID0gLTEgIT09IHMgPyBbYS5zbGljZSgwLCBzKS5jb25jYXQoW2Fbc10uc3BsaXQodSlbMF1dKSwgW2Fbc10uc3BsaXQodSlbMV1dLmNvbmNhdChhLnNsaWNlKHMgKyAxKSldIDogW2FdOwogICAgICAgICAgICAgICAgcmV0dXJuIChsID0gbC5tYXAoKGZ1bmN0aW9uKGUsIHIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9ICgxID09PSByID8gIWkgOiBpKSA/ICJoZWlnaHQiIDogIndpZHRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICExOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIgPT09IGVbZS5sZW5ndGggLSAxXSAmJiAtMSAhPT0gWyIrIiwgIi0iXS5pbmRleE9mKHQpID8gKGVbZS5sZW5ndGggLSAxXSA9IHQsIGEgPSAhMCwgZSkgOiBhID8gKGVbZS5sZW5ndGggLSAxXSArPSB0LCBhID0gITEsIGUpIDogZS5jb25jYXQodCkKICAgICAgICAgICAgICAgICAgICB9KSwgW10pLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLm1hdGNoKC8oKD86XC18XCspP1xkKlwuP1xkKikoLiopLyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICtvWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvWzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBhLmluZGV4T2YoIiUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIlcCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEl0KHMpW3RdIC8gMTAwICogaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2aCIgPT09IGEgfHwgInZ3IiA9PT0gYSkgcmV0dXJuICgidmgiID09PSBhID8gTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCwgd2luZG93LmlubmVySGVpZ2h0IHx8IDApIDogTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLCB3aW5kb3cuaW5uZXJXaWR0aCB8fCAwKSkgLyAxMDAgKiBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgICAgICAgICAgICAgfShlLCBvLCB0LCBuKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSkpKS5mb3JFYWNoKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5mb3JFYWNoKChmdW5jdGlvbihuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNuKG4pICYmIChvW3RdICs9IG4gKiAoIi0iID09PSBlW3IgLSAxXSA/IC0xIDogMSkpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9KSksIG8KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgdm4gPSB7CiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiAiYm90dG9tIiwKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbkZpeGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICBldmVudHNFbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICByZW1vdmVPbkRlc3Ryb3k6ICExLAogICAgICAgICAgICAgICAgICAgIG9uQ3JlYXRlOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgICAgIG9uVXBkYXRlOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyczogewogICAgICAgICAgICAgICAgICAgICAgICBzaGlmdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUucGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5zcGxpdCgiLSIpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdC5zcGxpdCgiLSIpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZS5vZmZzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG8ucmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG8ucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IC0xICE9PSBbImJvdHRvbSIsICJ0b3AiXS5pbmRleE9mKG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMgPyAibGVmdCIgOiAidG9wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzID8gIndpZHRoIiA6ICJoZWlnaHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogTXQoe30sIHUsIGlbdV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogTXQoe30sIHUsIGlbdV0gKyBpW2xdIC0gYVtsXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUub2Zmc2V0cy5wb3BwZXIgPSBMdCh7fSwgYSwgY1tyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogMjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLnBsYWNlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUub2Zmc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG8ucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gby5yZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByLnNwbGl0KCItIilbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUgPSBzbigrbikgPyBbK24sIDBdIDogZ24obiwgaSwgYSwgcyksICJsZWZ0IiA9PT0gcyA/IChpLnRvcCArPSB1WzBdLCBpLmxlZnQgLT0gdVsxXSkgOiAicmlnaHQiID09PSBzID8gKGkudG9wICs9IHVbMF0sIGkubGVmdCArPSB1WzFdKSA6ICJ0b3AiID09PSBzID8gKGkubGVmdCArPSB1WzBdLCBpLnRvcCAtPSB1WzFdKSA6ICJib3R0b20iID09PSBzICYmIChpLmxlZnQgKz0gdVswXSwgaS50b3AgKz0gdVsxXSksIGUucG9wcGVyID0gaSwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50T3ZlcmZsb3c6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiAzMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmJvdW5kYXJpZXNFbGVtZW50IHx8IGt0KGUuaW5zdGFuY2UucG9wcGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmluc3RhbmNlLnJlZmVyZW5jZSA9PT0gbiAmJiAobiA9IGt0KG4pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IEp0KCJ0cmFuc2Zvcm0iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUuaW5zdGFuY2UucG9wcGVyLnN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gby50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvW3JdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8udG9wID0gIiIsIG8ubGVmdCA9ICIiLCBvW3JdID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBVdChlLmluc3RhbmNlLnBvcHBlciwgZS5pbnN0YW5jZS5yZWZlcmVuY2UsIHQucGFkZGluZywgbiwgZS5wb3NpdGlvbkZpeGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnRvcCA9IGksIG8ubGVmdCA9IGEsIG9bcl0gPSBzLCB0LmJvdW5kYXJpZXMgPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gdC5wcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUub2Zmc2V0cy5wb3BwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBjW2VdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjW2VdIDwgdVtlXSAmJiAhdC5lc2NhcGVXaXRoUmVmZXJlbmNlICYmIChuID0gTWF0aC5tYXgoY1tlXSwgdVtlXSkpLCBNdCh7fSwgZSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICJyaWdodCIgPT09IGUgPyAibGVmdCIgOiAidG9wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNbZV0gPiB1W2VdICYmICF0LmVzY2FwZVdpdGhSZWZlcmVuY2UgJiYgKHIgPSBNYXRoLm1pbihjW25dLCB1W2VdIC0gKCJyaWdodCIgPT09IGUgPyBjLndpZHRoIDogYy5oZWlnaHQpKSksIE10KHt9LCBuLCByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAtMSAhPT0gWyJsZWZ0IiwgInRvcCJdLmluZGV4T2YoZSkgPyAicHJpbWFyeSIgOiAic2Vjb25kYXJ5IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IEx0KHt9LCBjLCBmW3RdKGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZS5vZmZzZXRzLnBvcHBlciA9IGMsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogWyJsZWZ0IiwgInJpZ2h0IiwgInRvcCIsICJib3R0b20iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyaWVzRWxlbWVudDogInNjcm9sbFBhcmVudCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAga2VlcFRvZ2V0aGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogNDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5vZmZzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5wb3BwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUucGxhY2VtZW50LnNwbGl0KCItIilbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBNYXRoLmZsb29yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gLTEgIT09IFsidG9wIiwgImJvdHRvbSJdLmluZGV4T2YobyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhID8gInJpZ2h0IiA6ICJib3R0b20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gYSA/ICJsZWZ0IiA6ICJ0b3AiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYSA/ICJ3aWR0aCIgOiAiaGVpZ2h0IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbltzXSA8IGkoclt1XSkgJiYgKGUub2Zmc2V0cy5wb3BwZXJbdV0gPSBpKHJbdV0pIC0gbltsXSksIG5bdV0gPiBpKHJbc10pICYmIChlLm9mZnNldHMucG9wcGVyW3VdID0gaShyW3NdKSksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3c6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiA1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjbihlLmluc3RhbmNlLm1vZGlmaWVycywgImFycm93IiwgImtlZXBUb2dldGhlciIpKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuZWxlbWVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEociA9IGUuaW5zdGFuY2UucG9wcGVyLnF1ZXJ5U2VsZWN0b3IocikpKSByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWUuaW5zdGFuY2UucG9wcGVyLmNvbnRhaW5zKHIpKSByZXR1cm4gY29uc29sZS53YXJuKCJXQVJOSU5HOiBgYXJyb3cuZWxlbWVudGAgbXVzdCBiZSBjaGlsZCBvZiBpdHMgcG9wcGVyIGVsZW1lbnQhIiksIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5vZmZzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5wb3BwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLnJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IC0xICE9PSBbImxlZnQiLCAicmlnaHQiXS5pbmRleE9mKG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gdSA/ICJoZWlnaHQiIDogIndpZHRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHUgPyAiVG9wIiA6ICJMZWZ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGMudG9Mb3dlckNhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHUgPyAibGVmdCIgOiAidG9wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHUgPyAiYm90dG9tIiA6ICJyaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBLdChyKVtsXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzW3BdIC0gaCA8IGFbZl0gJiYgKGUub2Zmc2V0cy5wb3BwZXJbZl0gLT0gYVtmXSAtIChzW3BdIC0gaCkpLCBzW2ZdICsgaCA+IGFbcF0gJiYgKGUub2Zmc2V0cy5wb3BwZXJbZl0gKz0gc1tmXSArIGggLSBhW3BdKSwgZS5vZmZzZXRzLnBvcHBlciA9IEl0KGUub2Zmc2V0cy5wb3BwZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gc1tmXSArIHNbbF0gLyAyIC0gaCAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBndChlLmluc3RhbmNlLnBvcHBlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBwYXJzZUZsb2F0KHlbIm1hcmdpbiIgKyBjXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBwYXJzZUZsb2F0KHlbImJvcmRlciIgKyBjICsgIldpZHRoIl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gbSAtIGUub2Zmc2V0cy5wb3BwZXJbZl0gLSBnIC0gdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYiA9IE1hdGgubWF4KE1hdGgubWluKGFbbF0gLSBoLCBiKSwgMCksIGUuYXJyb3dFbGVtZW50ID0gciwgZS5vZmZzZXRzLmFycm93ID0gKE10KG4gPSB7fSwgZiwgTWF0aC5yb3VuZChiKSksIE10KG4sIGQsICIiKSwgbiksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiAiW3gtYXJyb3ddIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBmbGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogNjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChYdChlLmluc3RhbmNlLm1vZGlmaWVycywgImlubmVyIikpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmZsaXBwZWQgJiYgZS5wbGFjZW1lbnQgPT09IGUub3JpZ2luYWxQbGFjZW1lbnQpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gVXQoZS5pbnN0YW5jZS5wb3BwZXIsIGUuaW5zdGFuY2UucmVmZXJlbmNlLCB0LnBhZGRpbmcsIHQuYm91bmRhcmllc0VsZW1lbnQsIGUucG9zaXRpb25GaXhlZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gWXQociksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLnBsYWNlbWVudC5zcGxpdCgiLSIpWzFdIHx8ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmJlaGF2aW9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaG46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gW3IsIG9dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbW46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gcG4ocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB5bjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwbihyLCAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmJlaGF2aW9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmZvckVhY2goKGZ1bmN0aW9uKHMsIHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgIT09IHMgfHwgYS5sZW5ndGggPT09IHUgKyAxKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUucGxhY2VtZW50LnNwbGl0KCItIilbMF0sIG8gPSBZdChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBlLm9mZnNldHMucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUub2Zmc2V0cy5yZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gTWF0aC5mbG9vciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAibGVmdCIgPT09IHIgJiYgZihsLnJpZ2h0KSA+IGYoYy5sZWZ0KSB8fCAicmlnaHQiID09PSByICYmIGYobC5sZWZ0KSA8IGYoYy5yaWdodCkgfHwgInRvcCIgPT09IHIgJiYgZihsLmJvdHRvbSkgPiBmKGMudG9wKSB8fCAiYm90dG9tIiA9PT0gciAmJiBmKGwudG9wKSA8IGYoYy5ib3R0b20pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGYobC5sZWZ0KSA8IGYobi5sZWZ0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmKGwucmlnaHQpID4gZihuLnJpZ2h0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBmKGwudG9wKSA8IGYobi50b3ApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGYobC5ib3R0b20pID4gZihuLmJvdHRvbSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gImxlZnQiID09PSByICYmIHAgfHwgInJpZ2h0IiA9PT0gciAmJiBoIHx8ICJ0b3AiID09PSByICYmIG0gfHwgImJvdHRvbSIgPT09IHIgJiYgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSAtMSAhPT0gWyJ0b3AiLCAiYm90dG9tIl0uaW5kZXhPZihyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAhIXQuZmxpcFZhcmlhdGlvbnMgJiYgKHYgJiYgInN0YXJ0IiA9PT0gaSAmJiBwIHx8IHYgJiYgImVuZCIgPT09IGkgJiYgaCB8fCAhdiAmJiAic3RhcnQiID09PSBpICYmIG0gfHwgIXYgJiYgImVuZCIgPT09IGkgJiYgeSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gISF0LmZsaXBWYXJpYXRpb25zQnlDb250ZW50ICYmICh2ICYmICJzdGFydCIgPT09IGkgJiYgaCB8fCB2ICYmICJlbmQiID09PSBpICYmIHAgfHwgIXYgJiYgInN0YXJ0IiA9PT0gaSAmJiB5IHx8ICF2ICYmICJlbmQiID09PSBpICYmIG0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9IGIgfHwgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGQgfHwgZyB8fCBPKSAmJiAoZS5mbGlwcGVkID0gITAsIChkIHx8IGcpICYmIChyID0gYVt1ICsgMV0pLCBPICYmIChpID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJlbmQiID09PSBlID8gInN0YXJ0IiA6ICJzdGFydCIgPT09IGUgPyAiZW5kIiA6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShpKSksIGUucGxhY2VtZW50ID0gciArIChpID8gIi0iICsgaSA6ICIiKSwgZS5vZmZzZXRzLnBvcHBlciA9IEx0KHt9LCBlLm9mZnNldHMucG9wcGVyLCBHdChlLmluc3RhbmNlLnBvcHBlciwgZS5vZmZzZXRzLnJlZmVyZW5jZSwgZS5wbGFjZW1lbnQpKSwgZSA9IFF0KGUuaW5zdGFuY2UubW9kaWZpZXJzLCBlLCAiZmxpcCIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAiZmxpcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcmllc0VsZW1lbnQ6ICJ2aWV3cG9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGlwVmFyaWF0aW9uczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGlwVmFyaWF0aW9uc0J5Q29udGVudDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiA3MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnBsYWNlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuc3BsaXQoIi0iKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUub2Zmc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gci5yZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAtMSAhPT0gWyJsZWZ0IiwgInJpZ2h0Il0uaW5kZXhPZihuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IC0xID09PSBbInRvcCIsICJsZWZ0Il0uaW5kZXhPZihuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb1thID8gImxlZnQiIDogInRvcCJdID0gaVtuXSAtIChzID8gb1thID8gIndpZHRoIiA6ICJoZWlnaHQiXSA6IDApLCBlLnBsYWNlbWVudCA9IFl0KHQpLCBlLm9mZnNldHMucG9wcGVyID0gSXQobyksIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgaGlkZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDgwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNuKGUuaW5zdGFuY2UubW9kaWZpZXJzLCAiaGlkZSIsICJwcmV2ZW50T3ZlcmZsb3ciKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLm9mZnNldHMucmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gJHQoZS5pbnN0YW5jZS5tb2RpZmllcnMsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInByZXZlbnRPdmVyZmxvdyIgPT09IGUubmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuYm91bmRhcmllczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5ib3R0b20gPCBuLnRvcCB8fCB0LmxlZnQgPiBuLnJpZ2h0IHx8IHQudG9wID4gbi5ib3R0b20gfHwgdC5yaWdodCA8IG4ubGVmdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoITAgPT09IGUuaGlkZSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaGlkZSA9ICEwLCBlLmF0dHJpYnV0ZXNbIngtb3V0LW9mLWJvdW5kYXJpZXMiXSA9ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCExID09PSBlLmhpZGUpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmhpZGUgPSAhMSwgZS5hdHRyaWJ1dGVzWyJ4LW91dC1vZi1ib3VuZGFyaWVzIl0gPSAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlU3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiA4NTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLm9mZnNldHMucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gJHQoZS5pbnN0YW5jZS5tb2RpZmllcnMsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImFwcGx5U3R5bGUiID09PSBlLm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmdwdUFjY2VsZXJhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9PSB1bmRlZmluZWQgJiYgY29uc29sZS53YXJuKCJXQVJOSU5HOiBgZ3B1QWNjZWxlcmF0aW9uYCBvcHRpb24gbW92ZWQgdG8gYGNvbXB1dGVTdHlsZWAgbW9kaWZpZXIgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUG9wcGVyLmpzISIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gaSAhPT0gdW5kZWZpbmVkID8gaSA6IHQuZ3B1QWNjZWxlcmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0ga3QoZS5pbnN0YW5jZS5wb3BwZXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gUnQocyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogby5wb3NpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLm9mZnNldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4ucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLnJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gTWF0aC5yb3VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5mbG9vciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGkoby53aWR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGkoci53aWR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IC0xICE9PSBbImxlZnQiLCAicmlnaHQiXS5pbmRleE9mKGUucGxhY2VtZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gLTEgIT09IGUucGxhY2VtZW50LmluZGV4T2YoIi0iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdCA/IGMgfHwgZiB8fCB1ICUgMiA9PSBsICUgMiA/IGkgOiBhIDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gdCA/IGkgOiBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBkKHUgJSAyID09IDEgJiYgbCAlIDIgPT0gMSAmJiAhZiAmJiB0ID8gci5sZWZ0IC0gMSA6IHIubGVmdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBwKHIudG9wKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IHAoci5ib3R0b20pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBkKHIucmlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgd2luZG93LmRldmljZVBpeGVsUmF0aW8gPCAyIHx8ICFsbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAiYm90dG9tIiA9PT0gbiA/ICJ0b3AiIDogImJvdHRvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAicmlnaHQiID09PSByID8gImxlZnQiIDogInJpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IEp0KCJ0cmFuc2Zvcm0iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSA9ICJib3R0b20iID09PSBmID8gIkhUTUwiID09PSBzLm5vZGVOYW1lID8gLXMuY2xpZW50SGVpZ2h0ICsgYy5ib3R0b20gOiAtdS5oZWlnaHQgKyBjLmJvdHRvbSA6IGMudG9wLCBoID0gInJpZ2h0IiA9PT0gZCA/ICJIVE1MIiA9PT0gcy5ub2RlTmFtZSA/IC1zLmNsaWVudFdpZHRoICsgYy5yaWdodCA6IC11LndpZHRoICsgYy5yaWdodCA6IGMubGVmdCwgYSAmJiBwKSBsW3BdID0gInRyYW5zbGF0ZTNkKCIgKyBoICsgInB4LCAiICsgbSArICJweCwgMCkiLCBsW2ZdID0gMCwgbFtkXSA9IDAsIGwud2lsbENoYW5nZSA9ICJ0cmFuc2Zvcm0iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9ICJib3R0b20iID09PSBmID8gLTEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9ICJyaWdodCIgPT09IGQgPyAtMSA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxbZl0gPSBtICogeSwgbFtkXSA9IGggKiBnLCBsLndpbGxDaGFuZ2UgPSBmICsgIiwgIiArIGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4LXBsYWNlbWVudCI6IGUucGxhY2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hdHRyaWJ1dGVzID0gTHQoe30sIHYsIGUuYXR0cmlidXRlcyksIGUuc3R5bGVzID0gTHQoe30sIGwsIGUuc3R5bGVzKSwgZS5hcnJvd1N0eWxlcyA9IEx0KHt9LCBlLm9mZnNldHMuYXJyb3csIGUuYXJyb3dTdHlsZXMpLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1QWNjZWxlcmF0aW9uOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6ICJib3R0b20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogInJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBhcHBseVN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogOTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0LCBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bihlLmluc3RhbmNlLnBvcHBlciwgZS5zdHlsZXMpLCB0ID0gZS5pbnN0YW5jZS5wb3BwZXIsIG4gPSBlLmF0dHJpYnV0ZXMsIE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITEgIT09IG5bZV0gPyB0LnNldEF0dHJpYnV0ZShlLCBuW2VdKSA6IHQucmVtb3ZlQXR0cmlidXRlKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBlLmFycm93RWxlbWVudCAmJiBPYmplY3Qua2V5cyhlLmFycm93U3R5bGVzKS5sZW5ndGggJiYgdW4oZS5hcnJvd0VsZW1lbnQsIGUuYXJyb3dTdHlsZXMpLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Mb2FkOiBmdW5jdGlvbihlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBXdChvLCB0LCBlLCBuLnBvc2l0aW9uRml4ZWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0genQobi5wbGFjZW1lbnQsIGksIHQsIGUsIG4ubW9kaWZpZXJzLmZsaXAuYm91bmRhcmllc0VsZW1lbnQsIG4ubW9kaWZpZXJzLmZsaXAucGFkZGluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuc2V0QXR0cmlidXRlKCJ4LXBsYWNlbWVudCIsIGEpLCB1bih0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuLnBvc2l0aW9uRml4ZWQgPyAiZml4ZWQiIDogImFic29sdXRlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1QWNjZWxlcmF0aW9uOiB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBibiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUodCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgVHQodGhpcywgZSksIHRoaXMuc2NoZWR1bGVVcGRhdGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoci51cGRhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMudXBkYXRlID0gbXQodGhpcy51cGRhdGUuYmluZCh0aGlzKSksIHRoaXMub3B0aW9ucyA9IEx0KHt9LCBlLkRlZmF1bHRzLCBvKSwgdGhpcy5zdGF0ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGVzdHJveWVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ3JlYXRlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxQYXJlbnRzOiBbXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnJlZmVyZW5jZSA9IHQgJiYgdC5qcXVlcnkgPyB0WzBdIDogdCwgdGhpcy5wb3BwZXIgPSBuICYmIG4uanF1ZXJ5ID8gblswXSA6IG4sIHRoaXMub3B0aW9ucy5tb2RpZmllcnMgPSB7fSwgT2JqZWN0LmtleXMoTHQoe30sIGUuRGVmYXVsdHMubW9kaWZpZXJzLCBvLm1vZGlmaWVycykpLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIub3B0aW9ucy5tb2RpZmllcnNbdF0gPSBMdCh7fSwgZS5EZWZhdWx0cy5tb2RpZmllcnNbdF0gfHwge30sIG8ubW9kaWZpZXJzID8gby5tb2RpZmllcnNbdF0gOiB7fSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLm1vZGlmaWVycyA9IE9iamVjdC5rZXlzKHRoaXMub3B0aW9ucy5tb2RpZmllcnMpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEx0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByLm9wdGlvbnMubW9kaWZpZXJzW2VdKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkuc29ydCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUub3JkZXIgLSB0Lm9yZGVyCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5tb2RpZmllcnMuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5lbmFibGVkICYmIHl0KGUub25Mb2FkKSAmJiBlLm9uTG9hZChyLnJlZmVyZW5jZSwgci5wb3BwZXIsIHIub3B0aW9ucywgZSwgci5zdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnVwZGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMub3B0aW9ucy5ldmVudHNFbmFibGVkOwogICAgICAgICAgICAgICAgICAgICAgICBpICYmIHRoaXMuZW5hYmxlRXZlbnRMaXN0ZW5lcnMoKSwgdGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkID0gaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnQoZSwgW3sKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAidXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFp0LmNhbGwodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGVzdHJveSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbi5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImVuYWJsZUV2ZW50TGlzdGVuZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uLmNhbGwodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGlzYWJsZUV2ZW50TGlzdGVuZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFuLmNhbGwodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH1dKSwgZQogICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICBibi5VdGlscyA9ICgidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ID8gd2luZG93IDogbi5nKS5Qb3BwZXJVdGlscywgYm4ucGxhY2VtZW50cyA9IGZuLCBibi5EZWZhdWx0cyA9IHZuOwogICAgICAgICAgICB2YXIgd24gPSBibiwKICAgICAgICAgICAgICAgIE9uID0gKG4oMjM1MyksIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgKz0gfn4oMWU2ICogTWF0aC5yYW5kb20oKSkKICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgZG9jdW1lbnQgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIF9uID0gKCJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdy5kb2N1bWVudCAmJiAvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiB3aW5kb3cuTVNTdHJlYW0sIHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiAia3BtMHYyIiwKICAgICAgICAgICAgICAgICAgICBzdHlsZXM6ICJwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjE2cHg7aGVpZ2h0OjhweDttYXJnaW46MCA1cHg7JjpiZWZvcmUsJjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO2NvbnRlbnQ6Jyc7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZDt9IgogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICB4biA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0LnBsYWNlbWVudDsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IENlKHQsIFsicGxhY2VtZW50Il0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpdChlLkZyYWdtZW50LCBudWxsLCBpdChhdCwgewogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IGtuCiAgICAgICAgICAgICAgICAgICAgfSksIGl0KCJkaXYiLCBFZSh7fSwgbiwgewogICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS1hcnJvdyI6ICJ0cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgY3NzOiBfbgogICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBrbiA9IHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiAicnZvOThzIiwKICAgICAgICAgICAgICAgICAgICBzdHlsZXM6ICJbeC1wbGFjZW1lbnRePSd0b3AnXXttYXJnaW4tYm90dG9tOjhweDtbZGF0YS1hcnJvd117Ym90dG9tOi05cHg7fVtkYXRhLWFycm93XTpiZWZvcmV7Ym90dG9tOjA7Ym9yZGVyLXdpZHRoOjhweCA4cHggMDtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsMC4yNSk7fVtkYXRhLWFycm93XTphZnRlcntib3R0b206MXB4O2JvcmRlci13aWR0aDo4cHggOHB4IDA7Ym9yZGVyLXRvcC1jb2xvcjojZmZmO319W3gtcGxhY2VtZW50Xj0ncmlnaHQnXXttYXJnaW4tbGVmdDo4cHg7W2RhdGEtYXJyb3dde2xlZnQ6LTlweDt3aWR0aDo4cHg7aGVpZ2h0OjE2cHg7bWFyZ2luOjVweCAwO31bZGF0YS1hcnJvd106YmVmb3Jle2xlZnQ6MDtib3JkZXItd2lkdGg6OHB4IDhweCA4cHggMDtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwwLjI1KTt9W2RhdGEtYXJyb3ddOmFmdGVye2xlZnQ6MXB4O2JvcmRlci13aWR0aDo4cHggOHB4IDhweCAwO2JvcmRlci1yaWdodC1jb2xvcjojZmZmO319W3gtcGxhY2VtZW50Xj0nYm90dG9tJ117bWFyZ2luLXRvcDo4cHg7W2RhdGEtYXJyb3dde3RvcDotOXB4O31bZGF0YS1hcnJvd106YmVmb3Jle3RvcDowO2JvcmRlci13aWR0aDowIDhweCA4cHggOHB4O2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwwLjI1KTt9W2RhdGEtYXJyb3ddOmFmdGVye3RvcDoxcHg7Ym9yZGVyLXdpZHRoOjAgOHB4IDhweCA4cHg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmO319W3gtcGxhY2VtZW50Xj0nbGVmdCdde21hcmdpbi1yaWdodDo4cHg7W2RhdGEtYXJyb3dde3JpZ2h0Oi05cHg7d2lkdGg6OHB4O2hlaWdodDoxNnB4O21hcmdpbjo1cHggMDt9W2RhdGEtYXJyb3ddOmJlZm9yZXtyaWdodDowO2JvcmRlci13aWR0aDo4cHggMCA4cHggOHB4O2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsMC4yNSk7fVtkYXRhLWFycm93XTphZnRlcntyaWdodDoxcHg7Ym9yZGVyLXdpZHRoOjhweCAwIDhweCA4cHg7Ym9yZGVyLWxlZnQtY29sb3I6I2ZmZjt9fSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBFbiA9IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgaSwgYSA9IG4uaGVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5ib2R5LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gbi5jaGlsZHJlbiwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4ucGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICBjID0gbi50cmlnZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gbi5zdHlsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBDZShuLCBbImhlYWRlciIsICJib2R5IiwgImNoaWxkcmVuIiwgInBsYWNlbWVudCIsICJ0cmlnZ2VyIiwgInN0eWxlcyJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHQoKS5DaGlsZHJlbi5vbmx5KHUpLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gKDAsIGUudXNlUmVmKShudWxsKSwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9ICgwLCBlLnVzZVN0YXRlKSghMSksCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBtWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gbVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgdiA9ICgwLCBlLnVzZVN0YXRlKSghMSksCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB2WzBdLAogICAgICAgICAgICAgICAgICAgICAgICB3ID0gdlsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgTyA9ICgwLCBlLnVzZVN0YXRlKSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVySWQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VJZDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycm93SWQ6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIF8gPSBPWzBdLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gT1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgayA9IF8ucG9wb3ZlcklkLAogICAgICAgICAgICAgICAgICAgICAgICBFID0gXy5yZWZlcmVuY2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgQyA9IF8uYXJyb3dJZDsKICAgICAgICAgICAgICAgICAgICByID0gaCwgbyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuaWQgPT09IEUgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRSkuY29udGFpbnMoZS50YXJnZXQpIHx8IGcoITEpCiAgICAgICAgICAgICAgICAgICAgfSwgaSA9ICgwLCBlLnVzZVJlZikoKSwgKDAsIGUudXNlRWZmZWN0KSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuY3VycmVudCA9IG8KICAgICAgICAgICAgICAgICAgICB9KSwgW29dKSwgKDAsIGUudXNlRWZmZWN0KSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgci5jdXJyZW50ICYmICFyLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQpICYmIGkuY3VycmVudChldmVudCkKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGR0LmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHQsIGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHQsIGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSksIFtyLCBvXSksICgwLCBlLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWspIHJldHVybiB4KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXJJZDogT24oInBvcG92ZXIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUlkOiBPbigicmVmZXJlbmNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvd0lkOiBPbigiYXJyb3ciKQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChrKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChFKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChDKTsKICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiB0ICYmIG4gJiYgKG5ldyB3bih0LCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdyh5KSkKICAgICAgICAgICAgICAgICAgICB9KSwgW3ldKTsKICAgICAgICAgICAgICAgICAgICB2YXIgUyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogW0NuLmNvbnRlbnQsIGYuY29udGVudF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogW0NuLmhlYWRlciwgZi5oZWFkZXJdLAogICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBbQ24uYm9keSwgZi5ib2R5XQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0KGUuRnJhZ21lbnQsIG51bGwsIGsgPyBpdCgiZGl2IiwgRWUoe30sIGQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGssCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogaCwKICAgICAgICAgICAgICAgICAgICAgICAgY3NzOiBTLmNvbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBiID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIgogICAgICAgICAgICAgICAgICAgICAgICB9IDoge30KICAgICAgICAgICAgICAgICAgICB9KSwgaXQoeG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEMKICAgICAgICAgICAgICAgICAgICB9KSwgYSA/IGl0KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNzczogUy5oZWFkZXIKICAgICAgICAgICAgICAgICAgICB9LCBhKSA6IG51bGwsIGl0KCJkaXYiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNzczogUy5ib2R5CiAgICAgICAgICAgICAgICAgICAgfSwgcykpIDogbnVsbCwgdCgpLmNsb25lRWxlbWVudChwLCBFZSh7fSwgcC5wcm9wcywgewogICAgICAgICAgICAgICAgICAgICAgICBpZDogRSwKICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2xpY2siID09PSBjICYmIGcoIXkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBFbi5kZWZhdWx0UHJvcHMgPSB7CiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICJyaWdodCIsCiAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiY2xpY2siLAogICAgICAgICAgICAgICAgc3R5bGVzOiB7fQogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgQ24gPSB7CiAgICAgICAgICAgICAgICAgICAgY29udGVudDogewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiMTA2aGE4cyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogImRpc3BsYXk6bm9uZTttYXgtd2lkdGg6MzAwcHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwLjIpO3otaW5kZXg6MTA2MDsiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIjEya296MXoiLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6ICJwYWRkaW5nOjhweCAxMnB4O2JhY2tncm91bmQtY29sb3I6I2Y3ZjdmNztmb250LXNpemU6MTZweDtmb250LXdlaWdodDpib2xkO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDsiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBib2R5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJrN2t5bTgiLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6ICJwYWRkaW5nOjhweCAxMnB4O2ZvbnQtc2l6ZToxNHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDsiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFNuID0gRW47CgogICAgICAgICAgICBmdW5jdGlvbiBqbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUudG91Y2hlczsKICAgICAgICAgICAgICAgIGlmICh0ICYmIHQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0WzBdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IG4uY2xpZW50WCwKICAgICAgICAgICAgICAgICAgICAgICAgeTogbi5jbGllbnRZCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB4OiBlLmNsaWVudFgsCiAgICAgICAgICAgICAgICAgICAgeTogZS5jbGllbnRZCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIFBuID0gewogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAicmVsYXRpdmUiLAogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJpbmxpbmUtYmxvY2siLAogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogIiNkZGQiLAogICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogNSwKICAgICAgICAgICAgICAgICAgICB1c2VyU2VsZWN0OiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAiYm9yZGVyLWJveCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBbiA9IHsKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIiwKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICIjNWU3MmU0IiwKICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDUsCiAgICAgICAgICAgICAgICAgICAgdXNlclNlbGVjdDogIm5vbmUiLAogICAgICAgICAgICAgICAgICAgIGJveFNpemluZzogImJvcmRlci1ib3giCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgRG4gPSB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJyZWxhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIiwKICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnIiInLAogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxOCwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4LAogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogIiNmZmYiLAogICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogIjUwJSIsCiAgICAgICAgICAgICAgICAgICAgYm94U2hhZG93OiAiMCAxcHggMXB4IHJnYmEoMCwwLDAsLjUpIiwKICAgICAgICAgICAgICAgICAgICB1c2VyU2VsZWN0OiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiAicG9pbnRlciIsCiAgICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAiYm9yZGVyLWJveCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBUbiA9IHsKICAgICAgICAgICAgICAgICAgICB4OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrOiBFZSh7fSwgUG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IEVlKHt9LCBBbiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAiMTAwJSIKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iOiBFZSh7fSwgRG4pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrOiBFZSh7fSwgUG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IEVlKHt9LCBBbiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiMTAwJSIKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iOiBFZSh7fSwgRG4pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB4eTogewogICAgICAgICAgICAgICAgICAgICAgICB0cmFjazogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJyZWxhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogImhpZGRlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICIjNWU3MmU0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICB0aHVtYjogRWUoe30sIERuKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogLjUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgTm4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmRpc2FibGVkLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5heGlzLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC54bWluLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC54bWF4LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC55bWluLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC55bWF4LAogICAgICAgICAgICAgICAgICAgICAgICBjID0gdC54c3RlcCwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHQueXN0ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0Lm9uQ2hhbmdlLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gdC5vbkRyYWdTdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHQub25EcmFnRW5kLAogICAgICAgICAgICAgICAgICAgICAgICBtID0gdC5vbkNsaWNrLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gdC54cmV2ZXJzZSwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHQueXJldmVyc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0LnN0eWxlcywKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IENlKHQsIFsiZGlzYWJsZWQiLCAiYXhpcyIsICJ4IiwgInkiLCAieG1pbiIsICJ4bWF4IiwgInltaW4iLCAieW1heCIsICJ4c3RlcCIsICJ5c3RlcCIsICJvbkNoYW5nZSIsICJvbkRyYWdTdGFydCIsICJvbkRyYWdFbmQiLCAib25DbGljayIsICJ4cmV2ZXJzZSIsICJ5cmV2ZXJzZSIsICJzdHlsZXMiXSksCiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSAoMCwgZS51c2VSZWYpKG51bGwpLAogICAgICAgICAgICAgICAgICAgICAgICBPID0gKDAsIGUudXNlUmVmKShudWxsKSwKICAgICAgICAgICAgICAgICAgICAgICAgXyA9ICgwLCBlLnVzZVJlZikoe30pLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gKDAsIGUudXNlUmVmKSh7fSk7CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGsoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUubGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdy5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPCAwICYmIChuID0gMCksIG4gPiBpICYmIChuID0gaSksIHQgPCAwICYmICh0ID0gMCksIHQgPiBwICYmICh0ID0gcCksICJ4IiAhPT0gciAmJiAieHkiICE9PSByIHx8IChoID0gbiAvIGkgKiAocyAtIGEpKSwgInkiICE9PSByICYmICJ4eSIgIT09IHIgfHwgKG0gPSB0IC8gcCAqIChsIC0gdSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSAoMCAhPT0gaCA/IHBhcnNlSW50KGggLyBjLCAxMCkgKiBjIDogMCkgKyBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAoMCAhPT0gbSA/IHBhcnNlSW50KG0gLyBmLCAxMCkgKiBmIDogMCkgKyB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogeSA/IHMgLSB2ICsgYSA6IHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZyA/IGwgLSBiICsgdSA6IGIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEUoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gTy5jdXJyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBqbihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uY3VycmVudCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB0Lm9mZnNldExlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogdC5vZmZzZXRUb3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHguY3VycmVudCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiByLngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogci55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBDKSwgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIFMpLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBDLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIFMpLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsIFMpLCBwICYmIHAoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQyhlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gfHwgKGUucHJldmVudERlZmF1bHQoKSwgayhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGpuKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0LnggKyBfLmN1cnJlbnQueCAtIHguY3VycmVudC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogdC55ICsgXy5jdXJyZW50LnkgLSB4LmN1cnJlbnQueQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KGUpKSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBuIHx8IChlLnByZXZlbnREZWZhdWx0KCksIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIEMpLCBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgUyksIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIEMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIFMpLCBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsIFMpLCBoICYmIGgoZSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBqLCBQLCBBID0gKChqID0gKGkgLSB1KSAvIChsIC0gdSkgKiAxMDApID4gMTAwICYmIChqID0gMTAwKSwgaiA8IDAgJiYgKGogPSAwKSwgIngiID09PSByICYmIChqID0gMCksIChQID0gKG8gLSBhKSAvIChzIC0gYSkgKiAxMDApID4gMTAwICYmIChQID0gMTAwKSwgUCA8IDAgJiYgKFAgPSAwKSwgInkiID09PSByICYmIChQID0gMCksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IFAKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIEQgPSB7fTsKICAgICAgICAgICAgICAgICAgICAieCIgPT09IHIgJiYgKEQud2lkdGggPSBBLmxlZnQgKyAiJSIpLCAieSIgPT09IHIgJiYgKEQuaGVpZ2h0ID0gQS50b3AgKyAiJSIpLCB5ICYmIChELmxlZnQgPSAxMDAgLSBBLmxlZnQgKyAiJSIpLCBnICYmIChELnRvcCA9IDEwMCAtIEEudG9wICsgIiUiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgVCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogInRyYW5zbGF0ZSgtNTAlLCAtNTAlKSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHkgPyAxMDAgLSBBLmxlZnQgKyAiJSIgOiBBLmxlZnQgKyAiJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogZyA/IDEwMCAtIEEudG9wICsgIiUiIDogQS50b3AgKyAiJSIKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICJ4IiA9PT0gciA/IFQudG9wID0gIjUwJSIgOiAieSIgPT09IHIgJiYgKFQubGVmdCA9ICI1MCUiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgTiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2s6IEVlKHt9LCBUbltyXS50cmFjaywge30sIHYudHJhY2spLAogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IEVlKHt9LCBUbltyXS5hY3RpdmUsIHt9LCB2LmFjdGl2ZSksCiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iOiBFZSh7fSwgVG5bcl0udGh1bWIsIHt9LCB2LnRodW1iKSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IEVlKHt9LCBUbi5kaXNhYmxlZCwge30sIHYuZGlzYWJsZWQpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXQoImRpdiIsIEVlKHt9LCBiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogdywKICAgICAgICAgICAgICAgICAgICAgICAgY3NzOiBvdChbTi50cmFjaywgbiAmJiBOLmRpc2FibGVkXSwgIjtsYWJlbDpTbGlkZXI7IiksCiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gam4oZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB3LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHQueCAtIHIubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiB0LnkgLSByLnRvcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBtICYmIG0oZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLCBpdCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjc3M6IE4uYWN0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogRAogICAgICAgICAgICAgICAgICAgIH0pLCBpdCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICByZWY6IE8sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBULAogICAgICAgICAgICAgICAgICAgICAgICBvblRvdWNoU3RhcnQ6IEUsCiAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duOiBFLAogICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpLCBlLm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCBpdCgiZGl2IiwgewogICAgICAgICAgICAgICAgICAgICAgICBjc3M6IE4udGh1bWIKICAgICAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBObi5kZWZhdWx0UHJvcHMgPSB7CiAgICAgICAgICAgICAgICBkaXNhYmxlZDogITEsCiAgICAgICAgICAgICAgICBheGlzOiAieCIsCiAgICAgICAgICAgICAgICB4OiA1MCwKICAgICAgICAgICAgICAgIHhtaW46IDAsCiAgICAgICAgICAgICAgICB4bWF4OiAxMDAsCiAgICAgICAgICAgICAgICB5OiA1MCwKICAgICAgICAgICAgICAgIHltaW46IDAsCiAgICAgICAgICAgICAgICB5bWF4OiAxMDAsCiAgICAgICAgICAgICAgICB4c3RlcDogMSwKICAgICAgICAgICAgICAgIHlzdGVwOiAxLAogICAgICAgICAgICAgICAgeHJldmVyc2U6ICExLAogICAgICAgICAgICAgICAgeXJldmVyc2U6ICExLAogICAgICAgICAgICAgICAgc3R5bGVzOiB7fQogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgTW4gPSBObiwKICAgICAgICAgICAgICAgIExuID0gbig3NjU0KSwKICAgICAgICAgICAgICAgIEluID0gbi5uKExuKSwKICAgICAgICAgICAgICAgIFJuID0gbigxNzYzKSwKICAgICAgICAgICAgICAgIHFuID0gbi5uKFJuKSwKICAgICAgICAgICAgICAgIEZuID0gbig3MDM3KSwKICAgICAgICAgICAgICAgIFZuID0gbi5uKEZuKSwKICAgICAgICAgICAgICAgIEJuID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUGhvbmV8aVBhZHxpUG9kL2kpLAogICAgICAgICAgICAgICAgVW4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LnN0ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0Lm1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQubWF4LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQub25DaGFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lm9uS2V5RG93biwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQuZW5hYmxlTW9iaWxlTnVtZXJpY0tleWJvYXJkLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5jb21wb25lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBDZSh0LCBbInN0ZXAiLCAibWluIiwgIm1heCIsICJ2YWx1ZSIsICJvbkNoYW5nZSIsICJvbktleURvd24iLCAiZW5hYmxlTW9iaWxlTnVtZXJpY0tleWJvYXJkIiwgImNvbXBvbmVudCJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9ICgwLCBlLnVzZVN0YXRlKShpKSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGZbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBmWzFdOwogICAgICAgICAgICAgICAgICAgICgwLCBlLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBwKGkpCiAgICAgICAgICAgICAgICAgICAgfSksIFtpXSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkLAogICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHFuKCkoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWbigpKGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGUgPSBlLnRyaW0oKSkpIHJldHVybiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBwYXJzZUZsb2F0KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUluKCkodCkpIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAoZSksIGEgJiYgYSh0KQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4ID09PSBlLmtleUNvZGUgPyBhICYmIGEoem4oIisiLCBpLCBvLCByLCBuKSkgOiA0MCA9PT0gZS5rZXlDb2RlICYmIGEgJiYgYSh6bigiLSIsIGksIG8sIHIsIG4pKSwgcyAmJiBzKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG9uV2hlZWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LmJsdXIoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXQobCwgRWUoe30sIGMsIGgsIHUgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNzczogSG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJudW1iZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dE1vZGU6ICJudW1lcmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogQm4gPyAiWzAtOV0qIiA6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBzdGVwOiBuLAogICAgICAgICAgICAgICAgICAgICAgICBtaW46IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heDogbwogICAgICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNzczogSG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJ0ZXh0IgogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgVW4uZGVmYXVsdFByb3BzID0gewogICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlOiAib2ZmIiwKICAgICAgICAgICAgICAgIGVuYWJsZU1vYmlsZU51bWVyaWNLZXlib2FyZDogITEsCiAgICAgICAgICAgICAgICB2YWx1ZTogIiIsCiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUub25DaGFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBDZShlLCBbIm9uQ2hhbmdlIl0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpdCgiaW5wdXQiLCBFZSh7fSwgbiwgewogICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCAmJiB0KGUudGFyZ2V0LnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3RlcDogMQogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgSG4gPSB7CiAgICAgICAgICAgICAgICBNb3pBcHBlYXJhbmNlOiAidGV4dGZpZWxkIiwKICAgICAgICAgICAgICAgICImOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLCAmOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIjogewogICAgICAgICAgICAgICAgICAgIFdlYmtpdEFwcGVhcmFuY2U6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHpuKGUsIHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgICAgIGlmICgiIiA9PT0gdCkgcmV0dXJuIHFuKCkocikgPyByIDogIg=="}},"time_used":227,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":106,"receive":121,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/users.svg","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.861Z","timestamp":1785128398861,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/users.svg HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/svg+xml\r\ncontent-length: 525\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:46 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"49d-67c3620e-6b902c57497234c0;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457452\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 798765c2856645f67b578127153951db-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":1181,"size_decoded":1100,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"740a535daba0887550d508826245dfc3","sha1":"c86992035a1999ced6a81893d74b2d1ecf8731b6","sha256":"f9dce1f2df2b289e3c601f7858f178d75accb2919deaf29e4dc3c2f7ffa2c1a6","sha512":"7b606ed8777cce86927715748726809f6aa2a847c51672df35d76ce9642c389092b3d7df333136fb008126f8a63d6997db422bb280665f3db40d40a65afd5030","ssdeep":"","tlshash":"3521f05ac2bb9ab9288a12555f5c05417d60e4f3e34952c0baef1461ef088d0bda3397","first_seen":"2026-07-27T03:56:42.458173Z","last_seen":"2026-07-27T05:01:06.145766Z","times_seen":3,"resource_available":false,"data":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iX9Ch0LvQvtC5XzIiIGRhdGEtbmFtZT0i0KHQu9C+0LkgMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0xLCAuY2xzLTIgewogICAgICAgIHN0cm9rZS13aWR0aDogMHB4OwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6ICMzODkwZmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIj4KICAgIDxnPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTIiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIi8+CiAgICAgIDxnIGlkPSJEODlfQnVzaW5lc3NfY2hhcnRfZmluYW5jZV9ncmFwaGljYWxfcGllIiBkYXRhLW5hbWU9IkQ4OSwgQnVzaW5lc3MsIGNoYXJ0LCBmaW5hbmNlLCBncmFwaGljYWwsIHBpZSI+CiAgICAgICAgPGc+CiAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00MC4xLDQ5LjVjMC01LDMuOS05LDguOC05LjR2LTE4LjdjLTE1LjIuMy0yNy41LDEyLjgtMjcuNSwyOC4xLDAsNy41LDMsMTQuNCw3LjgsMTkuNGwxMi4yLTE0LjdjLS44LTEuNC0xLjMtMy0xLjMtNC43WiIvPgogICAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDkuNSw1OC45Yy0zLDAtNS42LTEuNC03LjQtMy42bC0xMiwxNC41YzUuMSw0LjgsMTEuOSw3LjgsMTkuNCw3LjhzMTQuNC0zLDE5LjQtNy44bC0xMi0xNC41Yy0xLjgsMi4yLTQuNCwzLjYtNy40LDMuNloiLz4KICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQxLjQsNDkuNWMwLDQuNSwzLjYsOC4xLDguMSw4LjFzOC4xLTMuNiw4LjEtOC4xLTMuNi04LjEtOC4xLTguMS04LjEsMy42LTguMSw4LjFaIi8+CiAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MC4xLDIxLjR2MTguOGM0LjkuMyw4LjgsNC40LDguOCw5LjQsMCwxLjctLjUsMy4zLTEuMyw0LjdsMTIuMiwxNC43YzQuOC01LjEsNy44LTExLjksNy44LTE5LjQsMC0xNS40LTEyLjMtMjcuOS0yNy41LTI4LjJaIi8+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4="}},"time_used":101,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":101,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.145Z","timestamp":1785128399145,"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/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.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://circuittradetech.com\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: 50316\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 04:26:34 GMT\r\nexpires: Fri, 23 Jul 2027 04:26:34 GMT\r\ncache-control: public, max-age=31536000\r\nage: 347605\r\nlast-modified: Wed, 10 Sep 2025 16:23:20 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":50316,"size_decoded":51129,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 50316, version 1.0","md5":"97b33529e13b04b2205144e28a17a1d6","sha1":"9eaf3fe571af16f72a84dbadc1fce0128dff4486","sha256":"1dd49afc07fb2231b2ff686cbf007725fb2742271bb1f28ebd98f22a0d817343","sha512":"ce731a26fac8fd5583137450138d71fc36a9a0c4b79257a5af74be21cc2773b6e3a1ead61055411ec1c2cc857b8b0e6cbc94971f5f0b51820b458d9146af89bf","ssdeep":"768:etWz8e4bJ7xYqUBOYPc1NmWL7TDGrAZrIzcbWomWEjoyW6Md/AE1wBje34U:eZdhUQN5ToAZrIz7uEjR7udw5e34U","tlshash":"a33301e2882ca65cfe1ba7f8c422cc65e3336044f63d461d5766ff6ee470605e83a016","first_seen":"2025-09-12T00:12:40.161531Z","last_seen":"2026-07-27T17:31:42.777395Z","times_seen":23056,"resource_available":false,"data":"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"}},"time_used":122,"timings":{"blocked":19,"dns":0,"connect":32,"send":0,"wait":18,"receive":52,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"static.getbutton.io/widget/bundle.js","fqdn":"static.getbutton.io","domain":"getbutton.io","tld":"io"},"ip":{"addr":"104.26.14.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T05:00:02.718Z","timestamp":1785128402718,"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":"getbutton.io","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Tue, 16 Jun 2026 00:45:37 GMT","end":"Mon, 14 Sep 2026 01:45:33 GMT"},"fingerprint":{"sha1":"DC:2F:40:2C:2E:8F:A1:FE:B6:A3:D2:1B:01:7E:28:02:66:38:0E:86","sha256":"E1:C6:2E:FD:25:F8:44:CA:B3:2C:26:9B:A5:CB:26:9B:6D:77:7B:CF:2A:52:29:CD:23:39:99:E7:89:F4:41:57"}}},"request":{"raw":"GET /widget/bundle.js HTTP/1.1\r\nHost: static.getbutton.io\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://circuittradetech.com/\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\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\ndate: Mon, 27 Jul 2026 05:00:02 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nserver: cloudflare\r\nlast-modified: Fri, 13 Feb 2026 07:15:48 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\netag: \"698ecfa4-6beb9\"\r\nexpires: Mon, 27 Jul 2026 06:17:50 GMT\r\ncache-control: max-age=14400\r\naccess-control-allow-origin: *\r\ncontent-encoding: gzip\r\nage: 6131\r\ncf-cache-status: HIT\r\nvary: accept-encoding\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=YdKhr7ydLnf5Yc78%2FxbOEKREsBos0IuGyG5xgIIzTeyt0KoU%2BgvO258MAvwnBhm9krV2W5oLzQTBO6yYQSzKQ74cyIR1wEVn834iQulmAmER8I7zBMHpIDBA6YeUYM6uXxe%2BlNg%3D\"}]}\r\ncf-ray: a2191404f95f56ab-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":442041,"size_decoded":129341,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (65475)","md5":"bc3e8108dcd36c0d0c129a726dd8f47f","sha1":"db6320723c55ad91550a1ca87176058bed49d99c","sha256":"791450932271b1682c103cadb334baea8bf68100069c3c3eb317ed8a20098483","sha512":"821203cb21570cee7a989e40a417990e408949e7d239766562cfee62c0a0320c936bfbc8fcb2ecb35067ba1034eb7363d907edb72ccd878ee510640aa7a976b3","ssdeep":"6144:HSFryQhY3HpsS+U6qAcXha0oPKiqLVwoNbsR5LoQGnE2:xQhY3JsS+U6qASoPKiq+oNbsRFoQGnE2","tlshash":"53946de93290f0a653b352b700af240bf379641a785d8860a215ecdcf8b94ed513bf6d","first_seen":"2026-02-13T07:56:32.581356Z","last_seen":"2026-07-27T16:56:48.649607Z","times_seen":2716,"resource_available":true,"data":"LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgYnVuZGxlLmpzLkxJQ0VOU0UgKi8KIWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSl7dmFyIHQ7cmV0dXJuKHJbZV18fCh0PXJbZV09e2k6ZSxsOiExLGV4cG9ydHM6e319LG5bZV0uY2FsbCh0LmV4cG9ydHMsdCx0LmV4cG9ydHMsbyksdC5sPSEwLHQpKS5leHBvcnRzfXZhciBuLHI7bj1bZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDE2OCl9LGZ1bmN0aW9uKGUsVWUsQmUpeyFmdW5jdGlvbihlKXtCZS5kKFVlLCJhIixmdW5jdGlvbigpe3JldHVybiB6ZX0pLEJlLmQoVWUsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIFJlfSksQmUuZChVZSwiYyIsZnVuY3Rpb24oKXtyZXR1cm4gQX0pLEJlLmQoVWUsImUiLGZ1bmN0aW9uKCl7cmV0dXJuIE5lfSk7dmFyIGE9QmUoNTYpLHg9QmUoMCksZD1CZS5uKHgpLHQ9QmUoOTUpLFI9QmUubih0KSxOPUJlKDk2KSxEPUJlKDk3KSxVPUJlKDU4KSx0PUJlKDU3KSxCPUJlLm4odCk7ZnVuY3Rpb24gaygpe3JldHVybihrPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuLHI9YXJndW1lbnRzW3RdO2ZvcihuIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbikmJihlW25dPXJbbl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBGPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtlWzBdXSxyPTAsbz10Lmxlbmd0aDtyPG87cis9MSluLnB1c2godFtyXSxlW3IrMV0pO3JldHVybiBufSxjPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYiW29iamVjdCBPYmplY3RdIj09PShlLnRvU3RyaW5nP2UudG9TdHJpbmcoKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpJiYhT2JqZWN0KGEudHlwZU9mKShlKX0scD1PYmplY3QuZnJlZXplKFtdKSxTPU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIEMoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9ZnVuY3Rpb24gSChlKXtyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHwiQ29tcG9uZW50In1mdW5jdGlvbiBtKGUpe3JldHVybiBlJiYic3RyaW5nIj09dHlwZW9mIGUuc3R5bGVkQ29tcG9uZW50SWR9dmFyIHU9dm9pZCAwIT09ZSYmKHtSRUFDVF9BUFBfQ09OVEFDVF9GT1JNX0hPU1Q6ImdldGJ1dHRvbi5pbyIsUkVBQ1RfQVBQX1ZBTElEQVRJT05fVVJMOiJodHRwczovL3dpZGdldC5nZXRidXR0b24uaW8vYXBpL3ZhbGlkYXRlIixSRUFDVF9BUFBfQUxMT1dFRF9ET01BSU5TX0xJU1Q6ImFkbWluLmdldGJ1dHRvbi5pbywgbmV4dC5nZXRidXR0b24uaW8sIDEyNy4wLjAuMSwgbG9jYWxob3N0LCB0ZXN0LmdldGJ1dHRvbi5pbywgZGV2LmdldGJ1dHRvbi5pbywgZ2V0YnV0dG9uLmlvLCBhZG1pbi5zaG9waWZ5LmNvbSIsUkVBQ1RfQVBQX0dPT0dMRU1BUFNfQVBJX0tFWToiQUl6YVN5Qnp4Tm8yLWxhSXpBVC1HcnFndDVVYVFoTVNzbFQxSEJFIixSRUFDVF9BUFBfQUlfQlVORExFX1VSTDoiaHR0cHM6Ly9zdGF0aWMuZ2V0YnV0dG9uLmlvL3dpZGdldC9idW5kbGUtYWkuanMifS5SRUFDVF9BUFBfU0NfQVRUUnx8e1JFQUNUX0FQUF9DT05UQUNUX0ZPUk1fSE9TVDoiZ2V0YnV0dG9uLmlvIixSRUFDVF9BUFBfVkFMSURBVElPTl9VUkw6Imh0dHBzOi8vd2lkZ2V0LmdldGJ1dHRvbi5pby9hcGkvdmFsaWRhdGUiLFJFQUNUX0FQUF9BTExPV0VEX0RPTUFJTlNfTElTVDoiYWRtaW4uZ2V0YnV0dG9uLmlvLCBuZXh0LmdldGJ1dHRvbi5pbywgMTI3LjAuMC4xLCBsb2NhbGhvc3QsIHRlc3QuZ2V0YnV0dG9uLmlvLCBkZXYuZ2V0YnV0dG9uLmlvLCBnZXRidXR0b24uaW8sIGFkbWluLnNob3BpZnkuY29tIixSRUFDVF9BUFBfR09PR0xFTUFQU19BUElfS0VZOiJBSXphU3lCenhObzItbGFJekFULUdycWd0NVVhUWhNU3NsVDFIQkUiLFJFQUNUX0FQUF9BSV9CVU5ETEVfVVJMOiJodHRwczovL3N0YXRpYy5nZXRidXR0b24uaW8vd2lkZ2V0L2J1bmRsZS1haS5qcyJ9LlNDX0FUVFIpfHwiZGF0YS1zdHlsZWQiLHM9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJIVE1MRWxlbWVudCJpbiB3aW5kb3csdD1Cb29sZWFuKCJib29sZWFuIj09dHlwZW9mIFNDX0RJU0FCTEVfU1BFRURZP1NDX0RJU0FCTEVfU1BFRURZOnZvaWQgMCE9PWUmJih2b2lkIDAhPT17UkVBQ1RfQVBQX0NPTlRBQ1RfRk9STV9IT1NUOiJnZXRidXR0b24uaW8iLFJFQUNUX0FQUF9WQUxJREFUSU9OX1VSTDoiaHR0cHM6Ly93aWRnZXQuZ2V0YnV0dG9uLmlvL2FwaS92YWxpZGF0ZSIsUkVBQ1RfQVBQX0FMTE9XRURfRE9NQUlOU19MSVNUOiJhZG1pbi5nZXRidXR0b24uaW8sIG5leHQuZ2V0YnV0dG9uLmlvLCAxMjcuMC4wLjEsIGxvY2FsaG9zdCwgdGVzdC5nZXRidXR0b24uaW8sIGRldi5nZXRidXR0b24uaW8sIGdldGJ1dHRvbi5pbywgYWRtaW4uc2hvcGlmeS5jb20iLFJFQUNUX0FQUF9HT09HTEVNQVBTX0FQSV9LRVk6IkFJemFTeUJ6eE5vMi1sYUl6QVQtR3JxZ3Q1VWFRaE1Tc2xUMUhCRSIsUkVBQ1RfQVBQX0FJX0JVTkRMRV9VUkw6Imh0dHBzOi8vc3RhdGljLmdldGJ1dHRvbi5pby93aWRnZXQvYnVuZGxlLWFpLmpzIn0uUkVBQ1RfQVBQX1NDX0RJU0FCTEVfU1BFRURZJiYiIiE9PXtSRUFDVF9BUFBfQ09OVEFDVF9GT1JNX0hPU1Q6ImdldGJ1dHRvbi5pbyIsUkVBQ1RfQVBQX1ZBTElEQVRJT05fVVJMOiJodHRwczovL3dpZGdldC5nZXRidXR0b24uaW8vYXBpL3ZhbGlkYXRlIixSRUFDVF9BUFBfQUxMT1dFRF9ET01BSU5TX0xJU1Q6ImFkbWluLmdldGJ1dHRvbi5pbywgbmV4dC5nZXRidXR0b24uaW8sIDEyNy4wLjAuMSwgbG9jYWxob3N0LCB0ZXN0LmdldGJ1dHRvbi5pbywgZGV2LmdldGJ1dHRvbi5pbywgZ2V0YnV0dG9uLmlvLCBhZG1pbi5zaG9waWZ5LmNvbSIsUkVBQ1RfQVBQX0dPT0dMRU1BUFNfQVBJX0tFWToiQUl6YVN5Qnp4Tm8yLWxhSXpBVC1HcnFndDVVYVFoTVNzbFQxSEJFIixSRUFDVF9BUFBfQUlfQlVORExFX1VSTDoiaHR0cHM6Ly9zdGF0aWMuZ2V0YnV0dG9uLmlvL3dpZGdldC9idW5kbGUtYWkuanMifS5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFk/ImZhbHNlIiE9PXtSRUFDVF9BUFBfQ09OVEFDVF9GT1JNX0hPU1Q6ImdldGJ1dHRvbi5pbyIsUkVBQ1RfQVBQX1ZBTElEQVRJT05fVVJMOiJodHRwczovL3dpZGdldC5nZXRidXR0b24uaW8vYXBpL3ZhbGlkYXRlIixSRUFDVF9BUFBfQUxMT1dFRF9ET01BSU5TX0xJU1Q6ImFkbWluLmdldGJ1dHRvbi5pbywgbmV4dC5nZXRidXR0b24uaW8sIDEyNy4wLjAuMSwgbG9jYWxob3N0LCB0ZXN0LmdldGJ1dHRvbi5pbywgZGV2LmdldGJ1dHRvbi5pbywgZ2V0YnV0dG9uLmlvLCBhZG1pbi5zaG9waWZ5LmNvbSIsUkVBQ1RfQVBQX0dPT0dMRU1BUFNfQVBJX0tFWToiQUl6YVN5Qnp4Tm8yLWxhSXpBVC1HcnFndDVVYVFoTVNzbFQxSEJFIixSRUFDVF9BUFBfQUlfQlVORExFX1VSTDoiaHR0cHM6Ly9zdGF0aWMuZ2V0YnV0dG9uLmlvL3dpZGdldC9idW5kbGUtYWkuanMifS5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFkmJntSRUFDVF9BUFBfQ09OVEFDVF9GT1JNX0hPU1Q6ImdldGJ1dHRvbi5pbyIsUkVBQ1RfQVBQX1ZBTElEQVRJT05fVVJMOiJodHRwczovL3dpZGdldC5nZXRidXR0b24uaW8vYXBpL3ZhbGlkYXRlIixSRUFDVF9BUFBfQUxMT1dFRF9ET01BSU5TX0xJU1Q6ImFkbWluLmdldGJ1dHRvbi5pbywgbmV4dC5nZXRidXR0b24uaW8sIDEyNy4wLjAuMSwgbG9jYWxob3N0LCB0ZXN0LmdldGJ1dHRvbi5pbywgZGV2LmdldGJ1dHRvbi5pbywgZ2V0YnV0dG9uLmlvLCBhZG1pbi5zaG9waWZ5LmNvbSIsUkVBQ1RfQVBQX0dPT0dMRU1BUFNfQVBJX0tFWToiQUl6YVN5Qnp4Tm8yLWxhSXpBVC1HcnFndDVVYVFoTVNzbFQxSEJFIixSRUFDVF9BUFBfQUlfQlVORExFX1VSTDoiaHR0cHM6Ly9zdGF0aWMuZ2V0YnV0dG9uLmlvL3dpZGdldC9idW5kbGUtYWkuanMifS5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFk6dm9pZCAwIT09e1JFQUNUX0FQUF9DT05UQUNUX0ZPUk1fSE9TVDoiZ2V0YnV0dG9uLmlvIixSRUFDVF9BUFBfVkFMSURBVElPTl9VUkw6Imh0dHBzOi8vd2lkZ2V0LmdldGJ1dHRvbi5pby9hcGkvdmFsaWRhdGUiLFJFQUNUX0FQUF9BTExPV0VEX0RPTUFJTlNfTElTVDoiYWRtaW4uZ2V0YnV0dG9uLmlvLCBuZXh0LmdldGJ1dHRvbi5pbywgMTI3LjAuMC4xLCBsb2NhbGhvc3QsIHRlc3QuZ2V0YnV0dG9uLmlvLCBkZXYuZ2V0YnV0dG9uLmlvLCBnZXRidXR0b24uaW8sIGFkbWluLnNob3BpZnkuY29tIixSRUFDVF9BUFBfR09PR0xFTUFQU19BUElfS0VZOiJBSXphU3lCenhObzItbGFJekFULUdycWd0NVVhUWhNU3NsVDFIQkUiLFJFQUNUX0FQUF9BSV9CVU5ETEVfVVJMOiJodHRwczovL3N0YXRpYy5nZXRidXR0b24uaW8vd2lkZ2V0L2J1bmRsZS1haS5qcyJ9LlNDX0RJU0FCTEVfU1BFRURZJiYiIiE9PXtSRUFDVF9BUFBfQ09OVEFDVF9GT1JNX0hPU1Q6ImdldGJ1dHRvbi5pbyIsUkVBQ1RfQVBQX1ZBTElEQVRJT05fVVJMOiJodHRwczovL3dpZGdldC5nZXRidXR0b24uaW8vYXBpL3ZhbGlkYXRlIixSRUFDVF9BUFBfQUxMT1dFRF9ET01BSU5TX0xJU1Q6ImFkbWluLmdldGJ1dHRvbi5pbywgbmV4dC5nZXRidXR0b24uaW8sIDEyNy4wLjAuMSwgbG9jYWxob3N0LCB0ZXN0LmdldGJ1dHRvbi5pbywgZGV2LmdldGJ1dHRvbi5pbywgZ2V0YnV0dG9uLmlvLCBhZG1pbi5zaG9waWZ5LmNvbSIsUkVBQ1RfQVBQX0dPT0dMRU1BUFNfQVBJX0tFWToiQUl6YVN5Qnp4Tm8yLWxhSXpBVC1HcnFndDVVYVFoTVNzbFQxSEJFIixSRUFDVF9BUFBfQUlfQlVORExFX1VSTDoiaHR0cHM6Ly9zdGF0aWMuZ2V0YnV0dG9uLmlvL3dpZGdldC9idW5kbGUtYWkuanMifS5TQ19ESVNBQkxFX1NQRUVEWSYmImZhbHNlIiE9PXtSRUFDVF9BUFBfQ09OVEFDVF9GT1JNX0hPU1Q6ImdldGJ1dHRvbi5pbyIsUkVBQ1RfQVBQX1ZBTElEQVRJT05fVVJMOiJodHRwczovL3dpZGdldC5nZXRidXR0b24uaW8vYXBpL3ZhbGlkYXRlIixSRUFDVF9BUFBfQUxMT1dFRF9ET01BSU5TX0xJU1Q6ImFkbWluLmdldGJ1dHRvbi5pbywgbmV4dC5nZXRidXR0b24uaW8sIDEyNy4wLjAuMSwgbG9jYWxob3N0LCB0ZXN0LmdldGJ1dHRvbi5pbywgZGV2LmdldGJ1dHRvbi5pbywgZ2V0YnV0dG9uLmlvLCBhZG1pbi5zaG9waWZ5LmNvbSIsUkVBQ1RfQVBQX0dPT0dMRU1BUFNfQVBJX0tFWToiQUl6YVN5Qnp4Tm8yLWxhSXpBVC1HcnFndDVVYVFoTVNzbFQxSEJFIixSRUFDVF9BUFBfQUlfQlVORExFX1VSTDoiaHR0cHM6Ly9zdGF0aWMuZ2V0YnV0dG9uLmlvL3dpZGdldC9idW5kbGUtYWkuanMifS5TQ19ESVNBQkxFX1NQRUVEWSYme1JFQUNUX0FQUF9DT05UQUNUX0ZPUk1fSE9TVDoiZ2V0YnV0dG9uLmlvIixSRUFDVF9BUFBfVkFMSURBVElPTl9VUkw6Imh0dHBzOi8vd2lkZ2V0LmdldGJ1dHRvbi5pby9hcGkvdmFsaWRhdGUiLFJFQUNUX0FQUF9BTExPV0VEX0RPTUFJTlNfTElTVDoiYWRtaW4uZ2V0YnV0dG9uLmlvLCBuZXh0LmdldGJ1dHRvbi5pbywgMTI3LjAuMC4xLCBsb2NhbGhvc3QsIHRlc3QuZ2V0YnV0dG9uLmlvLCBkZXYuZ2V0YnV0dG9uLmlvLCBnZXRidXR0b24uaW8sIGFkbWluLnNob3BpZnkuY29tIixSRUFDVF9BUFBfR09PR0xFTUFQU19BUElfS0VZOiJBSXphU3lCenhObzItbGFJekFULUdycWd0NVVhUWhNU3NsVDFIQkUiLFJFQUNUX0FQUF9BSV9CVU5ETEVfVVJMOiJodHRwczovL3N0YXRpYy5nZXRidXR0b24uaW8vd2lkZ2V0L2J1bmRsZS1haS5qcyJ9LlNDX0RJU0FCTEVfU1BFRURZKSksVj17fTtmdW5jdGlvbiBoKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KDE8dD90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTt0aHJvdyBuZXcgRXJyb3IoIkFuIGVycm9yIG9jY3VycmVkLiBTZWUgaHR0cHM6Ly9naXQuaW8vSlVJYUUjIitlKyIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIisoMDxuLmxlbmd0aD8iIEFyZ3M6ICIrbi5qb2luKCIsICIpOiIiKSl9ZnVuY3Rpb24gcihlKXtpZihuLmhhcyhlKSlyZXR1cm4gbi5nZXQoZSk7Zm9yKDtmLmhhcyhvKTspbysrO3ZhciB0PW8rKztyZXR1cm4gbi5zZXQoZSx0KSxmLnNldCh0LGUpLHR9ZnVuY3Rpb24gJChlKXt2YXIgdD1kb2N1bWVudC5oZWFkLHI9ZXx8dCxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksdD12b2lkIDAhPT0odD1mdW5jdGlvbigpe2Zvcih2YXIgZT1yLmNoaWxkTm9kZXMsdD1lLmxlbmd0aDswPD10O3QtLSl7dmFyIG49ZVt0XTtpZihuJiYxPT09bi5ub2RlVHlwZSYmbi5oYXNBdHRyaWJ1dGUodSkpcmV0dXJuIG59fSgpKT90Lm5leHRTaWJsaW5nOm51bGwsbj0oZS5zZXRBdHRyaWJ1dGUodSwiYWN0aXZlIiksZS5zZXRBdHRyaWJ1dGUoImRhdGEtc3R5bGVkLXZlcnNpb24iLCI1LjMuMTEiKSxpKCkpO3JldHVybiBuJiZlLnNldEF0dHJpYnV0ZSgibm9uY2UiLG4pLHIuaW5zZXJ0QmVmb3JlKGUsdCksZX1mdW5jdGlvbiBXKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUrKDI1PGU/Mzk6OTcpKX0oZT1pZS5wcm90b3R5cGUpLmluZGV4T2ZHcm91cD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPTA7bjxlO24rKyl0Kz10aGlzLmdyb3VwU2l6ZXNbbl07cmV0dXJuIHR9LGUuaW5zZXJ0UnVsZXM9ZnVuY3Rpb24oZSx0KXtpZihlPj10aGlzLmdyb3VwU2l6ZXMubGVuZ3RoKXtmb3IodmFyIG49dGhpcy5ncm91cFNpemVzLHI9bi5sZW5ndGgsbz1yO288PWU7KShvPDw9MSk8MCYmaCgxNiwiIitlKTt0aGlzLmdyb3VwU2l6ZXM9bmV3IFVpbnQzMkFycmF5KG8pLHRoaXMuZ3JvdXBTaXplcy5zZXQobiksdGhpcy5sZW5ndGg9bztmb3IodmFyIGE9cjthPG87YSsrKXRoaXMuZ3JvdXBTaXplc1thXT0wfWZvcih2YXIgaT10aGlzLmluZGV4T2ZHcm91cChlKzEpLGw9MCxjPXQubGVuZ3RoO2w8YztsKyspdGhpcy50YWcuaW5zZXJ0UnVsZShpLHRbbF0pJiYodGhpcy5ncm91cFNpemVzW2VdKyssaSsrKX0sZS5jbGVhckdyb3VwPWZ1bmN0aW9uKGUpe2lmKGU8dGhpcy5sZW5ndGgpe3ZhciB0PXRoaXMuZ3JvdXBTaXplc1tlXSxuPXRoaXMuaW5kZXhPZkdyb3VwKGUpLHI9bit0O3RoaXMuZ3JvdXBTaXplc1tlXT0wO2Zvcih2YXIgbz1uO288cjtvKyspdGhpcy50YWcuZGVsZXRlUnVsZShuKX19LGUuZ2V0R3JvdXA9ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7aWYoIShlPj10aGlzLmxlbmd0aHx8MD09PXRoaXMuZ3JvdXBTaXplc1tlXSkpZm9yKHZhciBuPXRoaXMuZ3JvdXBTaXplc1tlXSxlPXRoaXMuaW5kZXhPZkdyb3VwKGUpLHI9ZStuLG89ZTtvPHI7bysrKXQrPXRoaXMudGFnLmdldFJ1bGUobykrIi8qIXNjKi9cbiI7cmV0dXJuIHR9O3ZhciBHPWllLG49bmV3IE1hcCxmPW5ldyBNYXAsbz0xLHE9ZnVuY3Rpb24oZSx0KXtvPD10JiYobz10KzEpLG4uc2V0KGUsdCksZi5zZXQodCxlKX0sWj0ic3R5bGVbIit1KyddW2RhdGEtc3R5bGVkLXZlcnNpb249IjUuMy4xMSJdJyxYPW5ldyBSZWdFeHAoIl4iK3UrJ1xcLmcoXFxkKylcXFtpZD0iKFtcXHdcXGQtXSspIlxcXS4qPyIoW14iXSopJyksWT1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByLG89bi5zcGxpdCgiLCIpLGE9MCxpPW8ubGVuZ3RoO2E8aTthKyspKHI9b1thXSkmJmUucmVnaXN0ZXJOYW1lKHQscil9LGk9ZnVuY3Rpb24oKXtyZXR1cm4gQmUubmN9LFE9KChlPWFlLnByb3RvdHlwZSkuaW5zZXJ0UnVsZT1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gdGhpcy5zaGVldC5pbnNlcnRSdWxlKHQsZSksdGhpcy5sZW5ndGgrKywhMH1jYXRjaChlKXtyZXR1cm4hMX19LGUuZGVsZXRlUnVsZT1mdW5jdGlvbihlKXt0aGlzLnNoZWV0LmRlbGV0ZVJ1bGUoZSksdGhpcy5sZW5ndGgtLX0sZS5nZXRSdWxlPWZ1bmN0aW9uKGUpe2U9dGhpcy5zaGVldC5jc3NSdWxlc1tlXTtyZXR1cm4gdm9pZCAwIT09ZSYmInN0cmluZyI9PXR5cGVvZiBlLmNzc1RleHQ/ZS5jc3NUZXh0OiIifSxhZSksSz0oKGU9b2UucHJvdG90eXBlKS5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8PXRoaXMubGVuZ3RoJiYwPD1lJiYodD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0KSxlPXRoaXMubm9kZXNbZV0sdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0LGV8fG51bGwpLHRoaXMubGVuZ3RoKyssITApfSxlLmRlbGV0ZVJ1bGU9ZnVuY3Rpb24oZSl7dGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMubm9kZXNbZV0pLHRoaXMubGVuZ3RoLS19LGUuZ2V0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm4gZTx0aGlzLmxlbmd0aD90aGlzLm5vZGVzW2VdLnRleHRDb250ZW50OiIifSxvZSksSj0oKGU9cmUucHJvdG90eXBlKS5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8PXRoaXMubGVuZ3RoJiYodGhpcy5ydWxlcy5zcGxpY2UoZSwwLHQpLHRoaXMubGVuZ3RoKyssITApfSxlLmRlbGV0ZVJ1bGU9ZnVuY3Rpb24oZSl7dGhpcy5ydWxlcy5zcGxpY2UoZSwxKSx0aGlzLmxlbmd0aC0tfSxlLmdldFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8dGhpcy5sZW5ndGg/dGhpcy5ydWxlc1tlXToiIn0scmUpLGVlPXMsdGU9e2lzU2VydmVyOiFzLHVzZUNTU09NSW5qZWN0aW9uOiF0fSxsPShnLnJlZ2lzdGVySWQ9ciwoZT1nLnByb3RvdHlwZSkucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucz1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMCksbmV3IGcoayh7fSx0aGlzLm9wdGlvbnMse30sZSksdGhpcy5ncyx0JiZ0aGlzLm5hbWVzfHx2b2lkIDApfSxlLmFsbG9jYXRlR1NJbnN0YW5jZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5nc1tlXT0odGhpcy5nc1tlXXx8MCkrMX0sZS5nZXRUYWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWd8fCh0aGlzLnRhZz0oZT0obj10aGlzLm9wdGlvbnMpLmlzU2VydmVyLHQ9bi51c2VDU1NPTUluamVjdGlvbixuPW4udGFyZ2V0LGU9bmV3KGU/Sjp0P1E6SykobiksbmV3IEcoZSkpKTt2YXIgZSx0LG59LGUuaGFzTmFtZUZvcklkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubmFtZXMuaGFzKGUpJiZ0aGlzLm5hbWVzLmdldChlKS5oYXModCl9LGUucmVnaXN0ZXJOYW1lPWZ1bmN0aW9uKGUsdCl7dmFyIG47cihlKSx0aGlzLm5hbWVzLmhhcyhlKT90aGlzLm5hbWVzLmdldChlKS5hZGQodCk6KChuPW5ldyBTZXQpLmFkZCh0KSx0aGlzLm5hbWVzLnNldChlLG4pKX0sZS5pbnNlcnRSdWxlcz1mdW5jdGlvbihlLHQsbil7dGhpcy5yZWdpc3Rlck5hbWUoZSx0KSx0aGlzLmdldFRhZygpLmluc2VydFJ1bGVzKHIoZSksbil9LGUuY2xlYXJOYW1lcz1mdW5jdGlvbihlKXt0aGlzLm5hbWVzLmhhcyhlKSYmdGhpcy5uYW1lcy5nZXQoZSkuY2xlYXIoKX0sZS5jbGVhclJ1bGVzPWZ1bmN0aW9uKGUpe3RoaXMuZ2V0VGFnKCkuY2xlYXJHcm91cChyKGUpKSx0aGlzLmNsZWFyTmFtZXMoZSl9LGUuY2xlYXJUYWc9ZnVuY3Rpb24oKXt0aGlzLnRhZz12b2lkIDB9LGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcyx0PWUuZ2V0VGFnKCksbj10Lmxlbmd0aCxyPSIiLG89MDtvPG47bysrKXtjPW87dmFyIGEsaSxsLGM9Zi5nZXQoYyk7dm9pZCAwIT09YyYmKGE9ZS5uYW1lcy5nZXQoYyksaT10LmdldEdyb3VwKG8pLGEpJiZpJiZhLnNpemUmJihjPXUrIi5nIitvKydbaWQ9IicrYysnIl0nLGw9IiIsdm9pZCAwIT09YSYmYS5mb3JFYWNoKGZ1bmN0aW9uKGUpezA8ZS5sZW5ndGgmJihsKz1lKyIsIil9KSxyKz1pK2MrJ3tjb250ZW50OiInK2wrJyJ9Lyohc2MqL1xuJyl9cmV0dXJuIHJ9LGcpLG5lPS8oYSkoZCkvZ2k7ZnVuY3Rpb24gZyhlLHQsbil7aWYodm9pZCAwPT09ZSYmKGU9Uyksdm9pZCAwPT09dCYmKHQ9e30pLHRoaXMub3B0aW9ucz1rKHt9LHRlLHt9LGUpLHRoaXMuZ3M9dCx0aGlzLm5hbWVzPW5ldyBNYXAobiksdGhpcy5zZXJ2ZXI9ISFlLmlzU2VydmVyLCF0aGlzLnNlcnZlciYmcyYmZWUpe2VlPSExO2Zvcih2YXIgcj10aGlzLG89ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChaKSxhPTAsaT1vLmxlbmd0aDthPGk7YSsrKXt2YXIgbD1vW2FdO2wmJiJhY3RpdmUiIT09bC5nZXRBdHRyaWJ1dGUodSkmJihmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0odC50ZXh0Q29udGVudHx8IiIpLnNwbGl0KCIvKiFzYyovXG4iKSxyPVtdLG89MCxhPW4ubGVuZ3RoO288YTtvKyspe3ZhciBpLGwsYyx1PW5bb10udHJpbSgpO3UmJigoaT11Lm1hdGNoKFgpKT8obD0wfHBhcnNlSW50KGlbMV0sMTApLGM9aVsyXSwwIT1sJiYocShjLGwpLFkoZSxjLGlbM10pLGUuZ2V0VGFnKCkuaW5zZXJ0UnVsZXMobCxyKSksci5sZW5ndGg9MCk6ci5wdXNoKHUpKX19KHIsbCksbC5wYXJlbnROb2RlKSYmbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGwpfX19ZnVuY3Rpb24gcmUoZSl7dGhpcy5ydWxlcz1bXSx0aGlzLmxlbmd0aD0wfWZ1bmN0aW9uIG9lKGUpe2U9dGhpcy5lbGVtZW50PSQoZSk7dGhpcy5ub2Rlcz1lLmNoaWxkTm9kZXMsdGhpcy5sZW5ndGg9MH1mdW5jdGlvbiBhZShlKXtlPXRoaXMuZWxlbWVudD0kKGUpO2UuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpKSx0aGlzLnNoZWV0PWZ1bmN0aW9uKGUpe2lmKGUuc2hlZXQpcmV0dXJuIGUuc2hlZXQ7Zm9yKHZhciB0PWRvY3VtZW50LnN0eWxlU2hlZXRzLG49MCxyPXQubGVuZ3RoO248cjtuKyspe3ZhciBvPXRbbl07aWYoby5vd25lck5vZGU9PT1lKXJldHVybiBvfWgoMTcpfShlKSx0aGlzLmxlbmd0aD0wfWZ1bmN0aW9uIGllKGUpe3RoaXMuZ3JvdXBTaXplcz1uZXcgVWludDMyQXJyYXkoNTEyKSx0aGlzLmxlbmd0aD01MTIsdGhpcy50YWc9ZX1mdW5jdGlvbiBiKGUpe2Zvcih2YXIgdD0iIixuPU1hdGguYWJzKGUpOzUyPG47bj1uLzUyfDApdD1XKG4lNTIpK3Q7cmV0dXJuKFcobiU1MikrdCkucmVwbGFjZShuZSwiJDEtJDIiKX1mdW5jdGlvbiB5KGUsdCl7Zm9yKHZhciBuPXQubGVuZ3RoO247KWU9MzMqZV50LmNoYXJDb2RlQXQoLS1uKTtyZXR1cm4gZX1mdW5jdGlvbiBsZShlKXtyZXR1cm4geSg1MzgxLGUpfWZ1bmN0aW9uIGNlKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCs9MSl7dmFyIG49ZVt0XTtpZihDKG4pJiYhbShuKSlyZXR1cm4hMX1yZXR1cm4hMH12YXIgdWU9bGUoIjUuMy4xMSIpLHNlPShwZS5wcm90b3R5cGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuY29tcG9uZW50SWQsbz1bXTtpZih0aGlzLmJhc2VTdHlsZSYmby5wdXNoKHRoaXMuYmFzZVN0eWxlLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKGUsdCxuKSksdGhpcy5pc1N0YXRpYyYmIW4uaGFzaCl0aGlzLnN0YXRpY1J1bGVzSWQmJnQuaGFzTmFtZUZvcklkKHIsdGhpcy5zdGF0aWNSdWxlc0lkKT9vLnB1c2godGhpcy5zdGF0aWNSdWxlc0lkKTooYT1qKHRoaXMucnVsZXMsZSx0LG4pLmpvaW4oIiIpLGk9Yih5KHRoaXMuYmFzZUhhc2gsYSk+Pj4wKSx0Lmhhc05hbWVGb3JJZChyLGkpfHwoYT1uKGEsIi4iK2ksdm9pZCAwLHIpLHQuaW5zZXJ0UnVsZXMocixpLGEpKSxvLnB1c2goaSksdGhpcy5zdGF0aWNSdWxlc0lkPWkpO2Vsc2V7Zm9yKHZhciBhLGksbD10aGlzLnJ1bGVzLmxlbmd0aCxjPXkodGhpcy5iYXNlSGFzaCxuLmhhc2gpLHU9IiIscz0wO3M8bDtzKyspe3ZhciBmPXRoaXMucnVsZXNbc107InN0cmluZyI9PXR5cGVvZiBmP3UrPWY6ZiYmKGY9aihmLGUsdCxuKSxmPUFycmF5LmlzQXJyYXkoZik/Zi5qb2luKCIiKTpmLGM9eShjLGYrcyksdSs9Zil9dSYmKGE9YihjPj4+MCksdC5oYXNOYW1lRm9ySWQocixhKXx8KGk9bih1LCIuIithLHZvaWQgMCxyKSx0Lmluc2VydFJ1bGVzKHIsYSxpKSksby5wdXNoKGEpKX1yZXR1cm4gby5qb2luKCIgIil9LHBlKSxmZT0vXlxzKlwvXC8uKiQvZ20sZGU9WyI6IiwiWyIsIi4iLCIjIl07ZnVuY3Rpb24gcGUoZSx0LG4pe3RoaXMucnVsZXM9ZSx0aGlzLnN0YXRpY1J1bGVzSWQ9IiIsdGhpcy5pc1N0YXRpYz0odm9pZCAwPT09bnx8bi5pc1N0YXRpYykmJmNlKGUpLHRoaXMuY29tcG9uZW50SWQ9dCx0aGlzLmJhc2VIYXNoPXkodWUsdCksdGhpcy5iYXNlU3R5bGU9bixsLnJlZ2lzdGVySWQodCl9ZnVuY3Rpb24gbWUoZSl7ZnVuY3Rpb24gdChlLHQsbixyLG8sYSxpLGwsYyx1KXtzd2l0Y2goZSl7Y2FzZSAxOmlmKDA9PT1jJiY2ND09PXQuY2hhckNvZGVBdCgwKSlyZXR1cm4gcyh0KyI7IiksIiI7YnJlYWs7Y2FzZSAyOmlmKDA9PT1sKXJldHVybiB0KyIvKnwqLyI7YnJlYWs7Y2FzZSAzOnN3aXRjaChsKXtjYXNlIDEwMjpjYXNlIDExMjpyZXR1cm4gcyhuWzBdK3QpLCIiO2RlZmF1bHQ6cmV0dXJuIHQrKDA9PT11PyIvKnwqLyI6IiIpfWNhc2UtMjp0LnNwbGl0KCIvKnwqL30iKS5mb3JFYWNoKGYpfX1mdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4gMD09PXQmJi0xIT09ZGUuaW5kZXhPZihuW2EubGVuZ3RoXSl8fG4ubWF0Y2gobCk/ZToiLiIrb312YXIgbyxhLGksbCxzLGU9dm9pZCAwPT09ZT9TOmUsbj1lLm9wdGlvbnMsbj12b2lkIDA9PT1uP1M6bixlPWUucGx1Z2lucyxlPXZvaWQgMD09PWU/cDplLGM9bmV3IE4uYShuKSx1PVtdO3M9ZnVuY3Rpb24oZSl7dS5wdXNoKGUpfTtmdW5jdGlvbiBmKGUpe2lmKGUpdHJ5e3MoZSsifSIpfWNhdGNoKGUpe319ZnVuY3Rpb24gZChlLHQsbixyKXt2b2lkIDA9PT1yJiYocj0iJiIpO2U9ZS5yZXBsYWNlKGZlLCIiKSxlPXQmJm4/bisiICIrdCsiIHsgIitlKyIgfSI6ZTtyZXR1cm4gbz1yLGE9dCxpPW5ldyBSZWdFeHAoIlxcIithKyJcXGIiLCJnIiksbD1uZXcgUmVnRXhwKCIoXFwiK2ErIlxcYil7Mix9IiksYyhufHwhdD8iIjp0LGUpfXJldHVybiBjLnVzZShbXS5jb25jYXQoZSxbZnVuY3Rpb24oZSx0LG4pezI9PT1lJiZuLmxlbmd0aCYmMDxuWzBdLmxhc3RJbmRleE9mKGEpJiYoblswXT1uWzBdLnJlcGxhY2UoaSxyKSl9LHQsZnVuY3Rpb24oZSl7aWYoLTI9PT1lKXJldHVybiBlPXUsdT1bXSxlfV0pKSxkLmhhc2g9ZS5sZW5ndGg/ZS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5uYW1lfHxoKDE1KSx5KGUsdC5uYW1lKX0sNTM4MSkudG9TdHJpbmcoKToiIixkfXZhciB2PWQuYS5jcmVhdGVDb250ZXh0KCksdz0odi5Db25zdW1lcixkLmEuY3JlYXRlQ29udGV4dCgpKSxoZT0ody5Db25zdW1lcixuZXcgbCksRT1tZSgpO2Z1bmN0aW9uIE8oKXtyZXR1cm4gT2JqZWN0KHgudXNlQ29udGV4dCkodil8fGhlfWZ1bmN0aW9uIGdlKCl7cmV0dXJuIE9iamVjdCh4LnVzZUNvbnRleHQpKHcpfHxFfWZ1bmN0aW9uIGJlKHQpe3ZhciBlPU9iamVjdCh4LnVzZVN0YXRlKSh0LnN0eWxpc1BsdWdpbnMpLG49ZVswXSxyPWVbMV0sbz1PKCksZT1PYmplY3QoeC51c2VNZW1vKShmdW5jdGlvbigpe3ZhciBlPW87cmV0dXJuIHQuc2hlZXQ/ZT10LnNoZWV0OnQudGFyZ2V0JiYoZT1lLnJlY29uc3RydWN0V2l0aE9wdGlvbnMoe3RhcmdldDp0LnRhcmdldH0sITEpKSxlPXQuZGlzYWJsZUNTU09NSW5qZWN0aW9uP2UucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucyh7dXNlQ1NTT01JbmplY3Rpb246ITF9KTplfSxbdC5kaXNhYmxlQ1NTT01JbmplY3Rpb24sdC5zaGVldCx0LnRhcmdldF0pLGE9T2JqZWN0KHgudXNlTWVtbykoZnVuY3Rpb24oKXtyZXR1cm4gbWUoe29wdGlvbnM6e3ByZWZpeDohdC5kaXNhYmxlVmVuZG9yUHJlZml4ZXN9LHBsdWdpbnM6bn0pfSxbdC5kaXNhYmxlVmVuZG9yUHJlZml4ZXMsbl0pO3JldHVybiBPYmplY3QoeC51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7UigpKG4sdC5zdHlsaXNQbHVnaW5zKXx8cih0LnN0eWxpc1BsdWdpbnMpfSxbdC5zdHlsaXNQbHVnaW5zXSksZC5hLmNyZWF0ZUVsZW1lbnQodi5Qcm92aWRlcix7dmFsdWU6ZX0sZC5hLmNyZWF0ZUVsZW1lbnQody5Qcm92aWRlcix7dmFsdWU6YX0sdC5jaGlsZHJlbikpfVNlLnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1FKSx0aGlzLm5hbWUrZS5oYXNofTt2YXIgeWU9U2UsdmU9LyhbQS1aXSkvLHdlPS8oW0EtWl0pL2cseGU9L15tcy0vLGtlPWZ1bmN0aW9uKGUpe3JldHVybiItIitlLnRvTG93ZXJDYXNlKCl9O2Z1bmN0aW9uIFNlKGUsdCl7dmFyIHI9dGhpczt0aGlzLmluamVjdD1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PUUpO3ZhciBuPXIubmFtZSt0Lmhhc2g7ZS5oYXNOYW1lRm9ySWQoci5pZCxuKXx8ZS5pbnNlcnRSdWxlcyhyLmlkLG4sdChyLnJ1bGVzLG4sIkBrZXlmcmFtZXMiKSl9LHRoaXMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gaCgxMixTdHJpbmcoci5uYW1lKSl9LHRoaXMubmFtZT1lLHRoaXMuaWQ9InNjLWtleWZyYW1lcy0iK2UsdGhpcy5ydWxlcz10fWZ1bmN0aW9uIENlKGUpe3JldHVybiB2ZS50ZXN0KGUpP2UucmVwbGFjZSh3ZSxrZSkucmVwbGFjZSh4ZSwiLW1zLSIpOmV9dmFyIEVlPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHwhMT09PWV8fCIiPT09ZX07ZnVuY3Rpb24gaihlLHQsbixyKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIG8sYT1bXSxpPTAsbD1lLmxlbmd0aDtpPGw7aSs9MSkiIiE9PShvPWooZVtpXSx0LG4scikpJiYoQXJyYXkuaXNBcnJheShvKT9hLnB1c2guYXBwbHkoYSxvKTphLnB1c2gobykpO3JldHVybiBhfXJldHVybiBFZShlKT8iIjptKGUpPyIuIitlLnN0eWxlZENvbXBvbmVudElkOkMoZSk/ImZ1bmN0aW9uIiE9dHlwZW9mIGV8fGUucHJvdG90eXBlJiZlLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50fHwhdD9lOmooZSh0KSx0LG4scik6ZSBpbnN0YW5jZW9mIHllP24/KGUuaW5qZWN0KG4sciksZS5nZXROYW1lKHIpKTplOmMoZSk/ZnVuY3Rpb24gZSh0LG4pe3ZhciByLG8sYSxpPVtdO2ZvcihhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmIUVlKHRbYV0pJiYoQXJyYXkuaXNBcnJheSh0W2FdKSYmdFthXS5pc0Nzc3x8Qyh0W2FdKT9pLnB1c2goQ2UoYSkrIjoiLHRbYV0sIjsiKTpjKHRbYV0pP2kucHVzaC5hcHBseShpLGUodFthXSxhKSk6aS5wdXNoKENlKGEpKyI6ICIrKHI9YSxudWxsPT0obz10W2FdKXx8ImJvb2xlYW4iPT10eXBlb2Ygb3x8IiI9PT1vPyIiOiJudW1iZXIiIT10eXBlb2Ygb3x8MD09PW98fHIgaW4gRC5hfHxyLnN0YXJ0c1dpdGgoIi0tIik/U3RyaW5nKG8pLnRyaW0oKTpvKyJweCIpKyI7IikpO3JldHVybiBuP1tuKyIgeyJdLmNvbmNhdChpLFsifSJdKTppfShlKTplLnRvU3RyaW5nKCl9dmFyIE9lPWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYoZS5pc0Nzcz0hMCksZX07ZnVuY3Rpb24gQShlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSgxPHQ/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07cmV0dXJuIEMoZSl8fGMoZSk/T2UoaihGKHAsW2VdLmNvbmNhdChuKSkpKTowPT09bi5sZW5ndGgmJjE9PT1lLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBlWzBdP2U6T2UoaihGKGUsbikpKX1uZXcgU2V0O3ZhciBqZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPVMpLGUudGhlbWUhPT1uLnRoZW1lJiZlLnRoZW1lfHx0fHxuLnRoZW1lfSxBZT0vWyEiIyQlJicoKSorLC4vOjs8PT4/QFtcXFxdXmB7fH1+LV0rL2csUGU9LyheLXwtJCkvZztmdW5jdGlvbiBQKGUpe3JldHVybiBlLnJlcGxhY2UoQWUsIi0iKS5yZXBsYWNlKFBlLCIiKX12YXIgST1mdW5jdGlvbihlKXtyZXR1cm4gYihsZShlKT4+PjApfTtmdW5jdGlvbiBfKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmITB9dmFyIHo9ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJiFBcnJheS5pc0FycmF5KGUpfSxJZT1mdW5jdGlvbihlKXtyZXR1cm4iX19wcm90b19fIiE9PWUmJiJjb25zdHJ1Y3RvciIhPT1lJiYicHJvdG90eXBlIiE9PWV9O2Z1bmN0aW9uIF9lKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KDE8dD90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTtmb3IodmFyIG8sYSxpLGw9MCxjPW47bDxjLmxlbmd0aDtsKyspe3ZhciB1PWNbbF07aWYoeih1KSlmb3IodmFyIHMgaW4gdSlJZShzKSYmKG89ZSxhPXVbc10scz1zLGk9dm9pZCAwLGk9b1tzXSx6KGEpJiZ6KGkpP19lKGksYSk6b1tzXT1hKX1yZXR1cm4gZX12YXIgVD1kLmEuY3JlYXRlQ29udGV4dCgpO1QuQ29uc3VtZXI7ZnVuY3Rpb24gemUobil7dmFyIHI9T2JqZWN0KHgudXNlQ29udGV4dCkoVCksZT1PYmplY3QoeC51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiBlPW4udGhlbWUsdD1yLGU/QyhlKT9lKHQpOkFycmF5LmlzQXJyYXkoZSl8fCJvYmplY3QiIT10eXBlb2YgZT9oKDgpOnQ/ayh7fSx0LHt9LGUpOmU6aCgxNCk7dmFyIGUsdH0sW24udGhlbWUscl0pO3JldHVybiBuLmNoaWxkcmVuP2QuYS5jcmVhdGVFbGVtZW50KFQuUHJvdmlkZXIse3ZhbHVlOmV9LG4uY2hpbGRyZW4pOm51bGx9dmFyIEw9e307ZnVuY3Rpb24gVGUocixvLGEpe3ZhciB0PW0ociksZT0hXyhyKSxuPW8uYXR0cnMsbj12b2lkIDA9PT1uP3A6bixpPW8uY29tcG9uZW50SWQsaT12b2lkIDA9PT1pP2Z1bmN0aW9uKGUsdCl7ZT0ic3RyaW5nIiE9dHlwZW9mIGU/InNjIjpQKGUpLExbZV09KExbZV18fDApKzEsZT1lKyItIitJKCI1LjMuMTEiK2UrTFtlXSk7cmV0dXJuIHQ/dCsiLSIrZTplfShvLmRpc3BsYXlOYW1lLG8ucGFyZW50Q29tcG9uZW50SWQpOmksbD1vLmRpc3BsYXlOYW1lLGw9dm9pZCAwPT09bD9fKHIpPyJzdHlsZWQuIityOiJTdHlsZWQoIitIKHIpKyIpIjpsLGk9by5kaXNwbGF5TmFtZSYmby5jb21wb25lbnRJZD9QKG8uZGlzcGxheU5hbWUpKyItIitvLmNvbXBvbmVudElkOm8uY29tcG9uZW50SWR8fGksYz10JiZyLmF0dHJzP0FycmF5LnByb3RvdHlwZS5jb25jYXQoci5hdHRycyxuKS5maWx0ZXIoQm9vbGVhbik6bix1PW8uc2hvdWxkRm9yd2FyZFByb3A7dCYmci5zaG91bGRGb3J3YXJkUHJvcCYmKHU9by5zaG91bGRGb3J3YXJkUHJvcD9mdW5jdGlvbihlLHQsbil7cmV0dXJuIHIuc2hvdWxkRm9yd2FyZFByb3AoZSx0LG4pJiZvLnNob3VsZEZvcndhcmRQcm9wKGUsdCxuKX06ci5zaG91bGRGb3J3YXJkUHJvcCk7ZnVuY3Rpb24gcyhlLHQpe3ZhciBuLHIsYSxpLG8sbD13LGM9KG09dikuYXR0cnMsdT1tLmNvbXBvbmVudFN0eWxlLHM9bS5kZWZhdWx0UHJvcHMsZj1tLmZvbGRlZENvbXBvbmVudElkcyxkPW0uc2hvdWxkRm9yd2FyZFByb3AscD1tLnN0eWxlZENvbXBvbmVudElkLG09bS50YXJnZXQsYz0ocz1qZShlLE9iamVjdCh4LnVzZUNvbnRleHQpKFQpLHMpfHxTLGM9YyxhPWsoe30sZSx7dGhlbWU6cz12b2lkIDA9PT1zP1M6c30pLGk9e30sYy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0LG4scixvPWU7Zm9yKHQgaW4gbz1DKG8pP28oYSk6bylhW3RdPWlbdF09ImNsYXNzTmFtZSI9PT10PyhuPWlbdF0scj1vW3RdLG4mJnI/bisiICIrcjpufHxyKTpvW3RdfSksKHM9W2EsaV0pWzFdKSxsPSh1PXUsbD1sLHM9c1swXSxuPU8oKSxyPWdlKCksbD91LmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKFMsbixyKTp1LmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzKHMsbixyKSksdT10LGg9Yy4kYXN8fGUuJGFzfHxjLmFzfHxlLmFzfHxtLGc9XyhoKSxiPWMhPT1lP2soe30sZSx7fSxjKTplLHk9e307Zm9yKG8gaW4gYikiJCIhPT1vWzBdJiYiYXMiIT09byYmKCJmb3J3YXJkZWRBcyI9PT1vP3kuYXM9YltvXTooZD9kKG8sVS5hLGgpOiFnfHxPYmplY3QoVS5hKShvKSkmJih5W29dPWJbb10pKTtyZXR1cm4gZS5zdHlsZSYmYy5zdHlsZSE9PWUuc3R5bGUmJih5LnN0eWxlPWsoe30sZS5zdHlsZSx7fSxjLnN0eWxlKSkseS5jbGFzc05hbWU9QXJyYXkucHJvdG90eXBlLmNvbmNhdChmLHAsbCE9PXA/bDpudWxsLGUuY2xhc3NOYW1lLGMuY2xhc3NOYW1lKS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpLHkucmVmPXUsT2JqZWN0KHguY3JlYXRlRWxlbWVudCkoaCx5KX12YXIgdixmPW5ldyBzZShhLGksdD9yLmNvbXBvbmVudFN0eWxlOnZvaWQgMCksdz1mLmlzU3RhdGljJiYwPT09bi5sZW5ndGg7cmV0dXJuIHMuZGlzcGxheU5hbWU9bCwodj1kLmEuZm9yd2FyZFJlZihzKSkuYXR0cnM9Yyx2LmNvbXBvbmVudFN0eWxlPWYsdi5kaXNwbGF5TmFtZT1sLHYuc2hvdWxkRm9yd2FyZFByb3A9dSx2LmZvbGRlZENvbXBvbmVudElkcz10P0FycmF5LnByb3RvdHlwZS5jb25jYXQoci5mb2xkZWRDb21wb25lbnRJZHMsci5zdHlsZWRDb21wb25lbnRJZCk6cCx2LnN0eWxlZENvbXBvbmVudElkPWksdi50YXJnZXQ9dD9yLnRhcmdldDpyLHYud2l0aENvbXBvbmVudD1mdW5jdGlvbihlKXt2YXIgdD1vLmNvbXBvbmVudElkLG49ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O2Zvcih2YXIgbixyPXt9LG89T2JqZWN0LmtleXMoZSksYT0wO2E8by5sZW5ndGg7YSsrKW49b1thXSwwPD10LmluZGV4T2Yobil8fChyW25dPWVbbl0pO3JldHVybiByfShvLFsiY29tcG9uZW50SWQiXSksdD10JiZ0KyItIisoXyhlKT9lOlAoSChlKSkpO3JldHVybiBUZShlLGsoe30sbix7YXR0cnM6Yyxjb21wb25lbnRJZDp0fSksYSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LCJkZWZhdWx0UHJvcHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9sZGVkRGVmYXVsdFByb3BzfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fZm9sZGVkRGVmYXVsdFByb3BzPXQ/X2Uoe30sci5kZWZhdWx0UHJvcHMsZSk6ZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodiwidG9TdHJpbmciLHt2YWx1ZTpmdW5jdGlvbigpe3JldHVybiIuIit2LnN0eWxlZENvbXBvbmVudElkfX0pLGUmJkIoKSh2LHIse2F0dHJzOiEwLGNvbXBvbmVudFN0eWxlOiEwLGRpc3BsYXlOYW1lOiEwLGZvbGRlZENvbXBvbmVudElkczohMCxzaG91bGRGb3J3YXJkUHJvcDohMCxzdHlsZWRDb21wb25lbnRJZDohMCx0YXJnZXQ6ITAsd2l0aENvbXBvbmVudDohMH0pLHZ9ZnVuY3Rpb24gTShlKXtyZXR1cm4gZnVuY3Rpb24gdChuLHIsbyl7dmFyIGU7cmV0dXJuIHZvaWQgMD09PW8mJihvPVMpLE9iamVjdChhLmlzVmFsaWRFbGVtZW50VHlwZSkocik/KChlPWZ1bmN0aW9uKCl7cmV0dXJuIG4ocixvLEEuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfSkud2l0aENvbmZpZz1mdW5jdGlvbihlKXtyZXR1cm4gdChuLHIsayh7fSxvLHt9LGUpKX0sZS5hdHRycz1mdW5jdGlvbihlKXtyZXR1cm4gdChuLHIsayh7fSxvLHthdHRyczpBcnJheS5wcm90b3R5cGUuY29uY2F0KG8uYXR0cnMsZSkuZmlsdGVyKEJvb2xlYW4pfSkpfSxlKTpoKDEsU3RyaW5nKHIpKX0oVGUsZSl9WyJhIiwiYWJiciIsImFkZHJlc3MiLCJhcmVhIiwiYXJ0aWNsZSIsImFzaWRlIiwiYXVkaW8iLCJiIiwiYmFzZSIsImJkaSIsImJkbyIsImJpZyIsImJsb2NrcXVvdGUiLCJib2R5IiwiYnIiLCJidXR0b24iLCJjYW52YXMiLCJjYXB0aW9uIiwiY2l0ZSIsImNvZGUiLCJjb2wiLCJjb2xncm91cCIsImRhdGEiLCJkYXRhbGlzdCIsImRkIiwiZGVsIiwiZGV0YWlscyIsImRmbiIsImRpYWxvZyIsImRpdiIsImRsIiwiZHQiLCJlbSIsImVtYmVkIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWQiLCJoZWFkZXIiLCJoZ3JvdXAiLCJociIsImh0bWwiLCJpIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQiLCJpbnMiLCJrYmQiLCJrZXlnZW4iLCJsYWJlbCIsImxlZ2VuZCIsImxpIiwibGluayIsIm1haW4iLCJtYXAiLCJtYXJrIiwibWFycXVlZSIsIm1lbnUiLCJtZW51aXRlbSIsIm1ldGEiLCJtZXRlciIsIm5hdiIsIm5vc2NyaXB0Iiwib2JqZWN0Iiwib2wiLCJvcHRncm91cCIsIm9wdGlvbiIsIm91dHB1dCIsInAiLCJwYXJhbSIsInBpY3R1cmUiLCJwcmUiLCJwcm9ncmVzcyIsInEiLCJycCIsInJ0IiwicnVieSIsInMiLCJzYW1wIiwic2NyaXB0Iiwic2VjdGlvbiIsInNlbGVjdCIsInNtYWxsIiwic291cmNlIiwic3BhbiIsInN0cm9uZyIsInN0eWxlIiwic3ViIiwic3VtbWFyeSIsInN1cCIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGltZSIsInRpdGxlIiwidHIiLCJ0cmFjayIsInUiLCJ1bCIsInZhciIsInZpZGVvIiwid2JyIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJkZWZzIiwiZWxsaXBzZSIsImZvcmVpZ25PYmplY3QiLCJnIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyR3JhZGllbnQiLCJtYXJrZXIiLCJtYXNrIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJzdG9wIiwic3ZnIiwidGV4dCIsInRleHRQYXRoIiwidHNwYW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe01bZV09TShlKX0pLCh0PU1lLnByb3RvdHlwZSkuY3JlYXRlU3R5bGVzPWZ1bmN0aW9uKGUsdCxuLHIpe3Q9cihqKHRoaXMucnVsZXMsdCxuLHIpLmpvaW4oIiIpLCIiKSxyPXRoaXMuY29tcG9uZW50SWQrZTtuLmluc2VydFJ1bGVzKHIscix0KX0sdC5yZW1vdmVTdHlsZXM9ZnVuY3Rpb24oZSx0KXt0LmNsZWFyUnVsZXModGhpcy5jb21wb25lbnRJZCtlKX0sdC5yZW5kZXJTdHlsZXM9ZnVuY3Rpb24oZSx0LG4scil7MjxlJiZsLnJlZ2lzdGVySWQodGhpcy5jb21wb25lbnRJZCtlKSx0aGlzLnJlbW92ZVN0eWxlcyhlLG4pLHRoaXMuY3JlYXRlU3R5bGVzKGUsdCxuLHIpfTt2YXIgTGU9TWU7ZnVuY3Rpb24gTWUoZSx0KXt0aGlzLnJ1bGVzPWUsdGhpcy5jb21wb25lbnRJZD10LHRoaXMuaXNTdGF0aWM9Y2UoZSksbC5yZWdpc3RlcklkKHRoaXMuY29tcG9uZW50SWQrMSl9ZnVuY3Rpb24gUmUoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoMTx0P3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO3ZhciBlPUEuYXBwbHkodm9pZCAwLFtlXS5jb25jYXQobikpLGE9InNjLWdsb2JhbC0iK0koSlNPTi5zdHJpbmdpZnkoZSkpLGk9bmV3IExlKGUsYSk7ZnVuY3Rpb24gbChlKXt2YXIgdD1PKCksbj1nZSgpLHI9T2JqZWN0KHgudXNlQ29udGV4dCkoVCksbz1PYmplY3QoeC51c2VSZWYpKHQuYWxsb2NhdGVHU0luc3RhbmNlKGEpKS5jdXJyZW50O3JldHVybiB0LnNlcnZlciYmYyhvLGUsdCxyLG4pLE9iamVjdCh4LnVzZUxheW91dEVmZmVjdCkoZnVuY3Rpb24oKXtpZighdC5zZXJ2ZXIpcmV0dXJuIGMobyxlLHQscixuKSxmdW5jdGlvbigpe3JldHVybiBpLnJlbW92ZVN0eWxlcyhvLHQpfX0sW28sZSx0LHIsbl0pLG51bGx9ZnVuY3Rpb24gYyhlLHQsbixyLG8pe2kuaXNTdGF0aWM/aS5yZW5kZXJTdHlsZXMoZSxWLG4sbyk6KHQ9ayh7fSx0LHt0aGVtZTpqZSh0LHIsbC5kZWZhdWx0UHJvcHMpfSksaS5yZW5kZXJTdHlsZXMoZSx0LG4sbykpfXJldHVybiBkLmEubWVtbyhsKX1mdW5jdGlvbiBOZShlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSgxPHQ/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07dmFyIGU9QS5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChuKSkuam9pbigiIiksbz1JKGUpO3JldHVybiBuZXcgeWUobyxlKX0oZT1EZS5wcm90b3R5cGUpLmNvbGxlY3RTdHlsZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2VhbGVkP2goMik6ZC5hLmNyZWF0ZUVsZW1lbnQoYmUse3NoZWV0OnRoaXMuaW5zdGFuY2V9LGUpfSxlLmludGVybGVhdmVXaXRoTm9kZVN0cmVhbT1mdW5jdGlvbihlKXtyZXR1cm4gaCgzKX07ZnVuY3Rpb24gRGUoKXt2YXIgbj10aGlzO3RoaXMuX2VtaXRTaGVldENTUz1mdW5jdGlvbigpe3ZhciBlLHQ9bi5pbnN0YW5jZS50b1N0cmluZygpO3JldHVybiB0PyI8c3R5bGUgIitbKGU9aSgpKSYmJ25vbmNlPSInK2UrJyInLHUrJz0idHJ1ZSInLCdkYXRhLXN0eWxlZC12ZXJzaW9uPSI1LjMuMTEiJ10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKSsiPiIrdCsiPC9zdHlsZT4iOiIifSx0aGlzLmdldFN0eWxlVGFncz1mdW5jdGlvbigpe3JldHVybiBuLnNlYWxlZD9oKDIpOm4uX2VtaXRTaGVldENTUygpfSx0aGlzLmdldFN0eWxlRWxlbWVudD1mdW5jdGlvbigpe3ZhciBlLHQ7cmV0dXJuIG4uc2VhbGVkP2goMik6KChlPXt9KVt1XT0iIixlWyJkYXRhLXN0eWxlZC12ZXJzaW9uIl09IjUuMy4xMSIsZS5kYW5nZXJvdXNseVNldElubmVySFRNTD17X19odG1sOm4uaW5zdGFuY2UudG9TdHJpbmcoKX0sZT1lLCh0PWkoKSkmJihlLm5vbmNlPXQpLFtkLmEuY3JlYXRlRWxlbWVudCgic3R5bGUiLGsoe30sZSx7a2V5OiJzYy0wLTAifSkpXSl9LHRoaXMuc2VhbD1mdW5jdGlvbigpe24uc2VhbGVkPSEwfSx0aGlzLmluc3RhbmNlPW5ldyBsKHtpc1NlcnZlcjohMH0pLHRoaXMuc2VhbGVkPSExfVVlLmQ9TX0uY2FsbCh0aGlzLEJlKDkyKSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgbj1uKDYxKSxyPW4uYWxsO2UuZXhwb3J0cz1uLklTX0hUTUxEREE/ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT1yfTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX19LGZ1bmN0aW9uKG4sZSx0KXshZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtyZXR1cm4gZSYmZS5NYXRoPT09TWF0aCYmZX1uLmV4cG9ydHM9dCgib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHx0KCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHx0KCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fHQoIm9iamVjdCI9PXR5cGVvZiBlJiZlKXx8dCgib2JqZWN0Ij09dHlwZW9mIHRoaXMmJnRoaXMpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfS5jYWxsKHRoaXMsdCgyMikpfSxmdW5jdGlvbihlLHQsbil7dmFyIG49bigyOCkscj1GdW5jdGlvbi5wcm90b3R5cGUsbz1yLmNhbGwscj1uJiZyLmJpbmQuYmluZChvLG8pO2UuZXhwb3J0cz1uP3I6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG8uYXBwbHkoZSxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDMpLG89big2NiksYT1uKDExKSxpPW4oNjgpLGw9big2NCksbj1uKDYzKSxjPXIuU3ltYm9sLHU9bygid2tzIikscz1uP2MuZm9yfHxjOmMmJmMud2l0aG91dFNldHRlcnx8aTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGEodSxlKXx8KHVbZV09bCYmYShjLGUpP2NbZV06cygiU3ltYm9sLiIrZSkpLHVbZV19fSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4hIWUoKX1jYXRjaChlKXtyZXR1cm4hMH19fSxmdW5jdGlvbihlLHQsbil7dmFyIHU9bigzKSxzPW4oNDEpLmYsZj1uKDE4KSxkPW4oMTkpLHA9big0NSksbT1uKDczKSxoPW4oNzYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxhPWUudGFyZ2V0LGk9ZS5nbG9iYWwsbD1lLnN0YXQsYz1pP3U6bD91W2FdfHxwKGEse30pOih1W2FdfHx7fSkucHJvdG90eXBlO2lmKGMpZm9yKG4gaW4gdCl7aWYocj10W25dLG89ZS5kb250Q2FsbEdldFNldD8obz1zKGMsbikpJiZvLnZhbHVlOmNbbl0sIWgoaT9uOmErKGw/Ii4iOiIjIikrbixlLmZvcmNlZCkmJnZvaWQgMCE9PW8pe2lmKHR5cGVvZiByPT10eXBlb2Ygbyljb250aW51ZTttKHIsbyl9KGUuc2hhbXx8byYmby5zaGFtKSYmZihyLCJzaGFtIiwhMCksZChjLG4scixlKX19fSxmdW5jdGlvbihlLHQsbil7dmFyIG49bigyOCkscj1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtlLmV4cG9ydHM9bj9yLmJpbmQocik6ZnVuY3Rpb24oKXtyZXR1cm4gci5hcHBseShyLGFyZ3VtZW50cyl9fSxmdW5jdGlvbihlLHQsbil7bj1uKDYpO2UuZXhwb3J0cz0hbihmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDIpLG89bigzMyksYT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHIoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IGEobyhlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big0KSxvPW4oNjcpLGE9cih7fS5oYXNPd25Qcm9wZXJ0eSk7ZS5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEobyhlKSx0KX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDEzKSxvPVN0cmluZyxhPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYocihlKSlyZXR1cm4gZTt0aHJvdyBuZXcgYShvKGUpKyIgaXMgbm90IGFuIG9iamVjdCIpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMiksbj1uKDYxKSxvPW4uYWxsO2UuZXhwb3J0cz1uLklTX0hUTUxEREE/ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlP251bGwhPT1lOnIoZSl8fGU9PT1vfTpmdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGU/bnVsbCE9PWU6cihlKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDMpLG89bigyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyPyhuPXJbZV0sbyhuKT9uOnZvaWQgMCk6cltlXSYmcltlXVt0XTt2YXIgbn19LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9ITF9LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3ZhciBuLHI7dGhpcy5wcm9taXNlPW5ldyBlKGZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwIT09bnx8dm9pZCAwIT09cil0aHJvdyBuZXcgYSgiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTtuPWUscj10fSksdGhpcy5yZXNvbHZlPW8obiksdGhpcy5yZWplY3Q9byhyKX12YXIgbz1uKDEwKSxhPVR5cGVFcnJvcjtlLmV4cG9ydHMuZj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHIoZSl9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big5KSxvPW4oNjkpLGE9big3MCksaT1uKDEyKSxsPW4oNjApLGM9VHlwZUVycm9yLHU9T2JqZWN0LmRlZmluZVByb3BlcnR5LHM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixmPSJlbnVtZXJhYmxlIixkPSJjb25maWd1cmFibGUiLHA9IndyaXRhYmxlIjt0LmY9cj9hP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcjtyZXR1cm4gaShlKSx0PWwodCksaShuKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmInByb3RvdHlwZSI9PT10JiYidmFsdWUiaW4gbiYmcCBpbiBuJiYhbltwXSYmKHI9cyhlLHQpKSYmcltwXSYmKGVbdF09bi52YWx1ZSxuPXtjb25maWd1cmFibGU6KGQgaW4gbj9uOnIpW2RdLGVudW1lcmFibGU6KGYgaW4gbj9uOnIpW2ZdLHdyaXRhYmxlOiExfSksdShlLHQsbil9OnU6ZnVuY3Rpb24oZSx0LG4pe2lmKGkoZSksdD1sKHQpLGkobiksbyl0cnl7cmV0dXJuIHUoZSx0LG4pfWNhdGNoKGUpe31pZigiZ2V0ImluIG58fCJzZXQiaW4gbil0aHJvdyBuZXcgYygiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4idmFsdWUiaW4gbiYmKGVbdF09bi52YWx1ZSksZX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDkpLG89bigxNyksYT1uKDIzKTtlLmV4cG9ydHM9cj9mdW5jdGlvbihlLHQsbil7cmV0dXJuIG8uZihlLHQsYSgxLG4pKX06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlW3RdPW4sZX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1uKDIpLGw9bigxNyksYz1uKDcxKSx1PW4oNDUpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz0ocj1yfHx7fSkuZW51bWVyYWJsZSxhPXZvaWQgMCE9PXIubmFtZT9yLm5hbWU6dDtpZihpKG4pJiZjKG4sYSxyKSxyLmdsb2JhbClvP2VbdF09bjp1KHQsbik7ZWxzZXt0cnl7ci51bnNhZmU/ZVt0XSYmKG89ITApOmRlbGV0ZSBlW3RdfWNhdGNoKGUpe31vP2VbdF09bjpsLmYoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiFyLm5vbkNvbmZpZ3VyYWJsZSx3cml0YWJsZTohci5ub25Xcml0YWJsZX0pfXJldHVybiBlfX0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJue2Vycm9yOiExLHZhbHVlOmUoKX19Y2F0Y2goZSl7cmV0dXJue2Vycm9yOiEwLHZhbHVlOmV9fX19LGZ1bmN0aW9uKGUsdCxuKXtuPW4oMyk7ZS5leHBvcnRzPW4uUHJvbWlzZX0sZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtuPW58fG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfWNhdGNoKGUpeyJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYobj13aW5kb3cpfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6ISgxJmUpLGNvbmZpZ3VyYWJsZTohKDImZSksd3JpdGFibGU6ISg0JmUpLHZhbHVlOnR9fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTA1KSxvPW4oNDIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihvKGUpKX19LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBiKGUsdCl7dGhpcy5zdG9wcGVkPWUsdGhpcy5yZXN1bHQ9dH12YXIgeT1uKDUzKSx2PW4oOCksdz1uKDEyKSx4PW4oMzMpLGs9bigxMjYpLFM9big3NSksQz1uKDMxKSxFPW4oMTI3KSxPPW4oNzgpLGo9bigxMjgpLEE9VHlwZUVycm9yLFA9Yi5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVybiBhJiZqKGEsIm5vcm1hbCIsZSksbmV3IGIoITAsZSl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZD8odyhlKSxoP2coZVswXSxlWzFdLHIpOmcoZVswXSxlWzFdKSk6aD9nKGUscik6ZyhlKX12YXIgYSxpLGwsYyx1LHMsZj1uJiZuLnRoYXQsZD0hKCFufHwhbi5BU19FTlRSSUVTKSxwPSEoIW58fCFuLklTX1JFQ09SRCksbT0hKCFufHwhbi5JU19JVEVSQVRPUiksaD0hKCFufHwhbi5JTlRFUlJVUFRFRCksZz15KHQsZik7aWYocClhPWUuaXRlcmF0b3I7ZWxzZSBpZihtKWE9ZTtlbHNle2lmKCEobj1PKGUpKSl0aHJvdyBuZXcgQSh4KGUpKyIgaXMgbm90IGl0ZXJhYmxlIik7aWYoayhuKSl7Zm9yKGk9MCxsPVMoZSk7aTxsO2krKylpZigoYz1vKGVbaV0pKSYmQyhQLGMpKXJldHVybiBjO3JldHVybiBuZXcgYighMSl9YT1FKGUsbil9Zm9yKHU9KHA/ZTphKS5uZXh0OyEocz12KHUsYSkpLmRvbmU7KXt0cnl7Yz1vKHMudmFsdWUpfWNhdGNoKGUpe2ooYSwidGhyb3ciLGUpfWlmKCJvYmplY3QiPT10eXBlb2YgYyYmYyYmQyhQLGMpKXJldHVybiBjfXJldHVybiBuZXcgYighMSl9fSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPXt9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigzKSxvPW4oMjEpLGE9bigyKSxpPW4oNzYpLGw9big0NiksYz1uKDUpLHU9bigxNDgpLHM9big4NyksZj1uKDE1KSxkPW4oNjUpLHA9byYmby5wcm90b3R5cGUsbT1jKCJzcGVjaWVzIiksaD0hMSxnPWEoci5Qcm9taXNlUmVqZWN0aW9uRXZlbnQpLG49aSgiUHJvbWlzZSIsZnVuY3Rpb24oKXt2YXIgZT1sKG8pLHQ9ZSE9PVN0cmluZyhvKTtpZighdCYmNjY9PT1kKXJldHVybiEwO2lmKGYmJighcC5jYXRjaHx8IXAuZmluYWxseSkpcmV0dXJuITA7aWYoIWR8fGQ8NTF8fCEvbmF0aXZlIGNvZGUvLnRlc3QoZSkpe3ZhciBlPW5ldyBvKGZ1bmN0aW9uKGUpe2UoMSl9KSxuPWZ1bmN0aW9uKGUpe2UoZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7fSl9O2lmKChlLmNvbnN0cnVjdG9yPXt9KVttXT1uLCEoaD1lLnRoZW4oZnVuY3Rpb24oKXt9KWluc3RhbmNlb2YgbikpcmV0dXJuITB9cmV0dXJuIXQmJih1fHxzKSYmIWd9KTtlLmV4cG9ydHM9e0NPTlNUUlVDVE9SOm4sUkVKRUNUSU9OX0VWRU5UOmcsU1VCQ0xBU1NJTkc6aH19LGZ1bmN0aW9uKGUsdCxuKXtuPW4oNik7ZS5leHBvcnRzPSFuKGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZXx8ZS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBuPW4oNCkscj1uKHt9LnRvU3RyaW5nKSxvPW4oIiIuc2xpY2UpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbyhyKGUpLDgsLTEpfX0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZX19LGZ1bmN0aW9uKGUsdCxuKXtuPW4oNCk7ZS5leHBvcnRzPW4oe30uaXNQcm90b3R5cGVPZil9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJlN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KXx8IiJ9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gcihlKX1jYXRjaChlKXtyZXR1cm4iT2JqZWN0In19fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigzKSxuPW4oMTMpLG89ci5kb2N1bWVudCxhPW4obykmJm4oby5jcmVhdGVFbGVtZW50KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGE/by5jcmVhdGVFbGVtZW50KGUpOnt9fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8sYSxpLGw9bigxMDgpLGM9bigzKSx1PW4oMTMpLHM9bigxOCksZj1uKDExKSxkPW4oNDQpLHA9big0Nyksbj1uKDQ4KSxtPSJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIsaD1jLlR5cGVFcnJvcixjPWMuV2Vha01hcCxnPWx8fGQuc3RhdGU/KChhPWQuc3RhdGV8fChkLnN0YXRlPW5ldyBjKSkuZ2V0PWEuZ2V0LGEuaGFzPWEuaGFzLGEuc2V0PWEuc2V0LHI9ZnVuY3Rpb24oZSx0KXtpZihhLmhhcyhlKSl0aHJvdyBuZXcgaChtKTtyZXR1cm4gdC5mYWNhZGU9ZSxhLnNldChlLHQpLHR9LG89ZnVuY3Rpb24oZSl7cmV0dXJuIGEuZ2V0KGUpfHx7fX0sZnVuY3Rpb24oZSl7cmV0dXJuIGEuaGFzKGUpfSk6KG5baT1wKCJzdGF0ZSIpXT0hMCxyPWZ1bmN0aW9uKGUsdCl7aWYoZihlLGkpKXRocm93IG5ldyBoKG0pO3JldHVybiB0LmZhY2FkZT1lLHMoZSxpLHQpLHR9LG89ZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSxpKT9lW2ldOnt9fSxmdW5jdGlvbihlKXtyZXR1cm4gZihlLGkpfSk7ZS5leHBvcnRzPXtzZXQ6cixnZXQ6byxoYXM6ZyxlbmZvcmNlOmZ1bmN0aW9uKGUpe3JldHVybiBnKGUpP28oZSk6cihlLHt9KX0sZ2V0dGVyRm9yOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtpZih1KGUpJiYoZT1vKGUpKS50eXBlPT09dClyZXR1cm4gZTt0aHJvdyBuZXcgaCgiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK3QrIiByZXF1aXJlZCIpfX19fSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKGUpe2Uud3JpdGUoaCgiIikpLGUuY2xvc2UoKTt2YXIgdD1lLnBhcmVudFdpbmRvdy5PYmplY3Q7cmV0dXJuIGU9bnVsbCx0fXZhciBhLGk9bigxMiksbD1uKDExOSksYz1uKDUwKSx1PW4oNDgpLHM9big3NyksZj1uKDM0KSxuPW4oNDcpLGQ9InByb3RvdHlwZSIscD0ic2NyaXB0IixtPW4oIklFX1BST1RPIiksaD1mdW5jdGlvbihlKXtyZXR1cm4iPCIrcCsiPiIrZSsiPC8iK3ArIj4ifSxnPWZ1bmN0aW9uKCl7dHJ5e2E9bmV3IEFjdGl2ZVhPYmplY3QoImh0bWxmaWxlIil9Y2F0Y2goZSl7fWc9InVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudHx8ZG9jdW1lbnQuZG9tYWluJiZhP28oYSk6KGU9ZigiaWZyYW1lIiksdD0iamF2YSIrcCsiOiIsZS5zdHlsZS5kaXNwbGF5PSJub25lIixzLmFwcGVuZENoaWxkKGUpLGUuc3JjPVN0cmluZyh0KSwodD1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSx0LndyaXRlKGgoImRvY3VtZW50LkY9T2JqZWN0IikpLHQuY2xvc2UoKSx0LkYpO2Zvcih2YXIgZSx0LG49Yy5sZW5ndGg7bi0tOylkZWxldGUgZ1tkXVtjW25dXTtyZXR1cm4gZygpfTt1W21dPSEwLGUuZXhwb3J0cz1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBudWxsIT09ZT8ocltkXT1pKGUpLG49bmV3IHIscltkXT1udWxsLG5bbV09ZSk6bj1nKCksdm9pZCAwPT09dD9uOmwuZihuLHQpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNTQpLG89bigyKSxhPW4oMjkpLGk9big1KSgidG9TdHJpbmdUYWciKSxsPU9iamVjdCxjPSJBcmd1bWVudHMiPT09YShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO2UuZXhwb3J0cz1yP2E6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHZvaWQgMD09PWU/IlVuZGVmaW5lZCI6bnVsbD09PWU/Ik51bGwiOiJzdHJpbmciPT10eXBlb2YodD1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gZVt0XX1jYXRjaChlKXt9fShlPWwoZSksaSkpP3Q6Yz9hKGUpOiJPYmplY3QiPT09KHQ9YShlKSkmJm8oZS5jYWxsZWUpPyJBcmd1bWVudHMiOnR9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNykuZixvPW4oMTEpLGE9big1KSgidG9TdHJpbmdUYWciKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4peyhlPWUmJiFuP2UucHJvdG90eXBlOmUpJiYhbyhlLGEpJiZyKGUsYSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOnR9KX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDMpLG49bigyOSk7ZS5leHBvcnRzPSJwcm9jZXNzIj09PW4oci5wcm9jZXNzKX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMjEpLG89bigxNTApLG49bigyNykuQ09OU1RSVUNUT1I7ZS5leHBvcnRzPW58fCFvKGZ1bmN0aW9uKGUpe3IuYWxsKGUpLnRoZW4odm9pZCAwLGZ1bmN0aW9uKCl7fSl9KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oOSksbz1uKDgpLGE9bigxMDQpLGk9bigyMyksbD1uKDI0KSxjPW4oNjApLHU9bigxMSkscz1uKDY5KSxmPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5mPXI/ZjpmdW5jdGlvbihlLHQpe2lmKGU9bChlKSx0PWModCkscyl0cnl7cmV0dXJuIGYoZSx0KX1jYXRjaChlKXt9aWYodShlLHQpKXJldHVybiBpKCFvKGEuZixlLHQpLGVbdF0pfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMzApLG89VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihyKGUpKXRocm93IG5ldyBvKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTApLG89bigzMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZT1lW3RdO3JldHVybiBvKGUpP3ZvaWQgMDpyKGUpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMyksbj1uKDQ1KSxvPSJfX2NvcmUtanNfc2hhcmVkX18iLHI9cltvXXx8bihvLHt9KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMyksbz1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dHJ5e28ocix0LHt2YWx1ZTpuLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWNhdGNoKGUpe3JbdF09bn1yZXR1cm4gbn19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDQpLG89bigyKSxuPW4oNDQpLGE9cihGdW5jdGlvbi50b1N0cmluZyk7byhuLmluc3BlY3RTb3VyY2UpfHwobi5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfSksZS5leHBvcnRzPW4uaW5zcGVjdFNvdXJjZX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNjYpLG89big2OCksYT1yKCJrZXlzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhW2VdfHwoYVtlXT1vKGUpKX19LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9e319LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDExMyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2U9K2U7cmV0dXJuIGUhPWV8fDA9PWU/MDpyKGUpfX0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1bImNvbnN0cnVjdG9yIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0b0xvY2FsZVN0cmluZyIsInRvU3RyaW5nIiwidmFsdWVPZiJdfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxMSksbz1uKDIpLGE9big2NyksaT1uKDQ3KSxuPW4oMTE2KSxsPWkoIklFX1BST1RPIiksYz1PYmplY3QsdT1jLnByb3RvdHlwZTtlLmV4cG9ydHM9bj9jLmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3ZhciB0LGU9YShlKTtyZXR1cm4gcihlLGwpP2VbbF06KHQ9ZS5jb25zdHJ1Y3RvcixvKHQpJiZlIGluc3RhbmNlb2YgdD90LnByb3RvdHlwZTplIGluc3RhbmNlb2YgYz91Om51bGwpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBvPW4oMTE3KSxhPW4oMTIpLGk9bigxMTgpO2UuZXhwb3J0cz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24oKXt2YXIgbixyPSExLGU9e307dHJ5eyhuPW8oT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIiwic2V0IikpKGUsW10pLHI9ZSBpbnN0YW5jZW9mIEFycmF5fWNhdGNoKGUpe31yZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlKSxpKHQpLHI/bihlLHQpOmUuX19wcm90b19fPXQsZX19KCk6dm9pZCAwKX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTI1KSxvPW4oMTApLGE9bigyOCksaT1yKHIuYmluZCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oZSksdm9pZCAwPT09dD9lOmE/aShlLHQpOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17fTtyW24oNSkoInRvU3RyaW5nVGFnIildPSJ6IixlLmV4cG9ydHM9IltvYmplY3Qgel0iPT09U3RyaW5nKHIpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigzNyksbz1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJTeW1ib2wiPT09cihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpO3JldHVybiBvKGUpfX0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDE3NSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE3Niksbz17Y2hpbGRDb250ZXh0VHlwZXM6ITAsY29udGV4dFR5cGU6ITAsY29udGV4dFR5cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxnZXREZWZhdWx0UHJvcHM6ITAsZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiEwLGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczohMCxtaXhpbnM6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LGY9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0sYT17JCR0eXBlb2Y6ITAsY29tcGFyZTohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LGk9e307ZnVuY3Rpb24gZChlKXtyZXR1cm4gci5pc01lbW8oZSk/YTppW2UuJCR0eXBlb2ZdfHxvfWlbci5Gb3J3YXJkUmVmXT17JCR0eXBlb2Y6ITAscmVuZGVyOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxwcm9wVHlwZXM6ITB9LGlbci5NZW1vXT1hO3ZhciBwPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxtPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLGg9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxnPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsYj1PYmplY3QuZ2V0UHJvdG90eXBlT2YseT1PYmplY3QucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQsbixyKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pe3kmJihvPWIobikpJiZvIT09eSYmZSh0LG8scik7Zm9yKHZhciBvLGE9bShuKSxpPShoJiYoYT1hLmNvbmNhdChoKG4pKSksZCh0KSksbD1kKG4pLGM9MDtjPGEubGVuZ3RoOysrYyl7dmFyIHU9YVtjXTtpZighKGZbdV18fHImJnJbdV18fGwmJmxbdV18fGkmJmlbdV0pKXt2YXIgcz1nKG4sdSk7dHJ5e3AodCx1LHMpfWNhdGNoKGUpe319fX1yZXR1cm4gdH19LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKHQpe3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1uW2VdJiYobltlXT10KGUpKSxuW2VdfX1uLmQodCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pO3ZhciBvPS9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFiYnJ8YWNjZXB0fGFjY2VwdENoYXJzZXR8YWNjZXNzS2V5fGFjdGlvbnxhbGxvd3xhbGxvd1VzZXJNZWRpYXxhbGxvd1BheW1lbnRSZXF1ZXN0fGFsbG93RnVsbFNjcmVlbnxhbGxvd1RyYW5zcGFyZW5jeXxhbHR8YXN5bmN8YXV0b0NvbXBsZXRlfGF1dG9QbGF5fGNhcHR1cmV8Y2VsbFBhZGRpbmd8Y2VsbFNwYWNpbmd8Y2hhbGxlbmdlfGNoYXJTZXR8Y2hlY2tlZHxjaXRlfGNsYXNzSUR8Y2xhc3NOYW1lfGNvbHN8Y29sU3Bhbnxjb250ZW50fGNvbnRlbnRFZGl0YWJsZXxjb250ZXh0TWVudXxjb250cm9sc3xjb250cm9sc0xpc3R8Y29vcmRzfGNyb3NzT3JpZ2lufGRhdGF8ZGF0ZVRpbWV8ZGVjb2Rpbmd8ZGVmYXVsdHxkZWZlcnxkaXJ8ZGlzYWJsZWR8ZGlzYWJsZVBpY3R1cmVJblBpY3R1cmV8ZG93bmxvYWR8ZHJhZ2dhYmxlfGVuY1R5cGV8ZW50ZXJLZXlIaW50fGZvcm18Zm9ybUFjdGlvbnxmb3JtRW5jVHlwZXxmb3JtTWV0aG9kfGZvcm1Ob1ZhbGlkYXRlfGZvcm1UYXJnZXR8ZnJhbWVCb3JkZXJ8aGVhZGVyc3xoZWlnaHR8aGlkZGVufGhpZ2h8aHJlZnxocmVmTGFuZ3xodG1sRm9yfGh0dHBFcXVpdnxpZHxpbnB1dE1vZGV8aW50ZWdyaXR5fGlzfGtleVBhcmFtc3xrZXlUeXBlfGtpbmR8bGFiZWx8bGFuZ3xsaXN0fGxvYWRpbmd8bG9vcHxsb3d8bWFyZ2luSGVpZ2h0fG1hcmdpbldpZHRofG1heHxtYXhMZW5ndGh8bWVkaWF8bWVkaWFHcm91cHxtZXRob2R8bWlufG1pbkxlbmd0aHxtdWx0aXBsZXxtdXRlZHxuYW1lfG5vbmNlfG5vVmFsaWRhdGV8b3BlbnxvcHRpbXVtfHBhdHRlcm58cGxhY2Vob2xkZXJ8cGxheXNJbmxpbmV8cG9zdGVyfHByZWxvYWR8cHJvZmlsZXxyYWRpb0dyb3VwfHJlYWRPbmx5fHJlZmVycmVyUG9saWN5fHJlbHxyZXF1aXJlZHxyZXZlcnNlZHxyb2xlfHJvd3N8cm93U3BhbnxzYW5kYm94fHNjb3BlfHNjb3BlZHxzY3JvbGxpbmd8c2VhbWxlc3N8c2VsZWN0ZWR8c2hhcGV8c2l6ZXxzaXplc3xzbG90fHNwYW58c3BlbGxDaGVja3xzcmN8c3JjRG9jfHNyY0xhbmd8c3JjU2V0fHN0YXJ0fHN0ZXB8c3R5bGV8c3VtbWFyeXx0YWJJbmRleHx0YXJnZXR8dGl0bGV8dHJhbnNsYXRlfHR5cGV8dXNlTWFwfHZhbHVlfHdpZHRofHdtb2RlfHdyYXB8YWJvdXR8ZGF0YXR5cGV8aW5saXN0fHByZWZpeHxwcm9wZXJ0eXxyZXNvdXJjZXx0eXBlb2Z8dm9jYWJ8YXV0b0NhcGl0YWxpemV8YXV0b0NvcnJlY3R8YXV0b1NhdmV8Y29sb3J8aW5jcmVtZW50YWx8ZmFsbGJhY2t8aW5lcnR8aXRlbVByb3B8aXRlbVNjb3BlfGl0ZW1UeXBlfGl0ZW1JRHxpdGVtUmVmfG9ufG9wdGlvbnxyZXN1bHRzfHNlY3VyaXR5fHVuc2VsZWN0YWJsZXxhY2NlbnRIZWlnaHR8YWNjdW11bGF0ZXxhZGRpdGl2ZXxhbGlnbm1lbnRCYXNlbGluZXxhbGxvd1Jlb3JkZXJ8YWxwaGFiZXRpY3xhbXBsaXR1ZGV8YXJhYmljRm9ybXxhc2NlbnR8YXR0cmlidXRlTmFtZXxhdHRyaWJ1dGVUeXBlfGF1dG9SZXZlcnNlfGF6aW11dGh8YmFzZUZyZXF1ZW5jeXxiYXNlbGluZVNoaWZ0fGJhc2VQcm9maWxlfGJib3h8YmVnaW58Ymlhc3xieXxjYWxjTW9kZXxjYXBIZWlnaHR8Y2xpcHxjbGlwUGF0aFVuaXRzfGNsaXBQYXRofGNsaXBSdWxlfGNvbG9ySW50ZXJwb2xhdGlvbnxjb2xvckludGVycG9sYXRpb25GaWx0ZXJzfGNvbG9yUHJvZmlsZXxjb2xvclJlbmRlcmluZ3xjb250ZW50U2NyaXB0VHlwZXxjb250ZW50U3R5bGVUeXBlfGN1cnNvcnxjeHxjeXxkfGRlY2VsZXJhdGV8ZGVzY2VudHxkaWZmdXNlQ29uc3RhbnR8ZGlyZWN0aW9ufGRpc3BsYXl8ZGl2aXNvcnxkb21pbmFudEJhc2VsaW5lfGR1cnxkeHxkeXxlZGdlTW9kZXxlbGV2YXRpb258ZW5hYmxlQmFja2dyb3VuZHxlbmR8ZXhwb25lbnR8ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZHxmaWxsfGZpbGxPcGFjaXR5fGZpbGxSdWxlfGZpbHRlcnxmaWx0ZXJSZXN8ZmlsdGVyVW5pdHN8Zmxvb2RDb2xvcnxmbG9vZE9wYWNpdHl8Zm9jdXNhYmxlfGZvbnRGYW1pbHl8Zm9udFNpemV8Zm9udFNpemVBZGp1c3R8Zm9udFN0cmV0Y2h8Zm9udFN0eWxlfGZvbnRWYXJpYW50fGZvbnRXZWlnaHR8Zm9ybWF0fGZyb218ZnJ8Znh8Znl8ZzF8ZzJ8Z2x5cGhOYW1lfGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsfGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbHxnbHlwaFJlZnxncmFkaWVudFRyYW5zZm9ybXxncmFkaWVudFVuaXRzfGhhbmdpbmd8aG9yaXpBZHZYfGhvcml6T3JpZ2luWHxpZGVvZ3JhcGhpY3xpbWFnZVJlbmRlcmluZ3xpbnxpbjJ8aW50ZXJjZXB0fGt8azF8azJ8azN8azR8a2VybmVsTWF0cml4fGtlcm5lbFVuaXRMZW5ndGh8a2VybmluZ3xrZXlQb2ludHN8a2V5U3BsaW5lc3xrZXlUaW1lc3xsZW5ndGhBZGp1c3R8bGV0dGVyU3BhY2luZ3xsaWdodGluZ0NvbG9yfGxpbWl0aW5nQ29uZUFuZ2xlfGxvY2FsfG1hcmtlckVuZHxtYXJrZXJNaWR8bWFya2VyU3RhcnR8bWFya2VySGVpZ2h0fG1hcmtlclVuaXRzfG1hcmtlcldpZHRofG1hc2t8bWFza0NvbnRlbnRVbml0c3xtYXNrVW5pdHN8bWF0aGVtYXRpY2FsfG1vZGV8bnVtT2N0YXZlc3xvZmZzZXR8b3BhY2l0eXxvcGVyYXRvcnxvcmRlcnxvcmllbnR8b3JpZW50YXRpb258b3JpZ2lufG92ZXJmbG93fG92ZXJsaW5lUG9zaXRpb258b3ZlcmxpbmVUaGlja25lc3N8cGFub3NlMXxwYWludE9yZGVyfHBhdGhMZW5ndGh8cGF0dGVybkNvbnRlbnRVbml0c3xwYXR0ZXJuVHJhbnNmb3JtfHBhdHRlcm5Vbml0c3xwb2ludGVyRXZlbnRzfHBvaW50c3xwb2ludHNBdFh8cG9pbnRzQXRZfHBvaW50c0F0WnxwcmVzZXJ2ZUFscGhhfHByZXNlcnZlQXNwZWN0UmF0aW98cHJpbWl0aXZlVW5pdHN8cnxyYWRpdXN8cmVmWHxyZWZZfHJlbmRlcmluZ0ludGVudHxyZXBlYXRDb3VudHxyZXBlYXREdXJ8cmVxdWlyZWRFeHRlbnNpb25zfHJlcXVpcmVkRmVhdHVyZXN8cmVzdGFydHxyZXN1bHR8cm90YXRlfHJ4fHJ5fHNjYWxlfHNlZWR8c2hhcGVSZW5kZXJpbmd8c2xvcGV8c3BhY2luZ3xzcGVjdWxhckNvbnN0YW50fHNwZWN1bGFyRXhwb25lbnR8c3BlZWR8c3ByZWFkTWV0aG9kfHN0YXJ0T2Zmc2V0fHN0ZERldmlhdGlvbnxzdGVtaHxzdGVtdnxzdGl0Y2hUaWxlc3xzdG9wQ29sb3J8c3RvcE9wYWNpdHl8c3RyaWtldGhyb3VnaFBvc2l0aW9ufHN0cmlrZXRocm91Z2hUaGlja25lc3N8c3RyaW5nfHN0cm9rZXxzdHJva2VEYXNoYXJyYXl8c3Ryb2tlRGFzaG9mZnNldHxzdHJva2VMaW5lY2FwfHN0cm9rZUxpbmVqb2lufHN0cm9rZU1pdGVybGltaXR8c3Ryb2tlT3BhY2l0eXxzdHJva2VXaWR0aHxzdXJmYWNlU2NhbGV8c3lzdGVtTGFuZ3VhZ2V8dGFibGVWYWx1ZXN8dGFyZ2V0WHx0YXJnZXRZfHRleHRBbmNob3J8dGV4dERlY29yYXRpb258dGV4dFJlbmRlcmluZ3x0ZXh0TGVuZ3RofHRvfHRyYW5zZm9ybXx1MXx1Mnx1bmRlcmxpbmVQb3NpdGlvbnx1bmRlcmxpbmVUaGlja25lc3N8dW5pY29kZXx1bmljb2RlQmlkaXx1bmljb2RlUmFuZ2V8dW5pdHNQZXJFbXx2QWxwaGFiZXRpY3x2SGFuZ2luZ3x2SWRlb2dyYXBoaWN8dk1hdGhlbWF0aWNhbHx2YWx1ZXN8dmVjdG9yRWZmZWN0fHZlcnNpb258dmVydEFkdll8dmVydE9yaWdpblh8dmVydE9yaWdpbll8dmlld0JveHx2aWV3VGFyZ2V0fHZpc2liaWxpdHl8d2lkdGhzfHdvcmRTcGFjaW5nfHdyaXRpbmdNb2RlfHh8eEhlaWdodHx4MXx4Mnx4Q2hhbm5lbFNlbGVjdG9yfHhsaW5rQWN0dWF0ZXx4bGlua0FyY3JvbGV8eGxpbmtIcmVmfHhsaW5rUm9sZXx4bGlua1Nob3d8eGxpbmtUaXRsZXx4bGlua1R5cGV8eG1sQmFzZXx4bWxuc3x4bWxuc1hsaW5rfHhtbExhbmd8eG1sU3BhY2V8eXx5MXx5Mnx5Q2hhbm5lbFNlbGVjdG9yfHp8em9vbUFuZFBhbnxmb3J8Y2xhc3N8YXV0b2ZvY3VzKXwoKFtEZF1bQWFdW1R0XVtBYV18W0FhXVtScl1bSWldW0FhXXx4KS0uKikpJC8sYT1yKGZ1bmN0aW9uKGUpe3JldHVybiBvLnRlc3QoZSl8fDExMT09PWUuY2hhckNvZGVBdCgwKSYmMTEwPT09ZS5jaGFyQ29kZUF0KDEpJiZlLmNoYXJDb2RlQXQoMik8OTF9KX0sZnVuY3Rpb24oZSx0LG4pe24oMTAzKX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTA2KSxvPW4oNjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtlPXIoZSwic3RyaW5nIik7cmV0dXJuIG8oZSk/ZTplKyIifX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPSJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmFsbDtlLmV4cG9ydHM9e2FsbDpyLElTX0hUTUxEREE6dm9pZCAwPT09ciYmdm9pZCAwIT09cn19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE0KSxvPW4oMiksYT1uKDMxKSxuPW4oNjMpLGk9T2JqZWN0O2UuZXhwb3J0cz1uP2Z1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX06ZnVuY3Rpb24oZSl7dmFyIHQ9cigiU3ltYm9sIik7cmV0dXJuIG8odCkmJmEodC5wcm90b3R5cGUsaShlKSl9fSxmdW5jdGlvbihlLHQsbil7bj1uKDY0KTtlLmV4cG9ydHM9biYmIVN5bWJvbC5zaGFtJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcn0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNjUpLG89big2KSxhPW4oMykuU3RyaW5nO2UuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFvKGZ1bmN0aW9uKCl7dmFyIGU9U3ltYm9sKCJzeW1ib2wgZGV0ZWN0aW9uIik7cmV0dXJuIWEoZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJnImJnI8NDF9KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8sYT1uKDMpLG49bigzMiksaT1hLnByb2Nlc3MsYT1hLkRlbm8saT1pJiZpLnZlcnNpb25zfHxhJiZhLnZlcnNpb24sYT1pJiZpLnY4OyEobz1hPzA8KHI9YS5zcGxpdCgiLiIpKVswXSYmclswXTw0PzE6KyhyWzBdK3JbMV0pOm8pJiZuJiYoIShyPW4ubWF0Y2goL0VkZ2VcLyhcZCspLykpfHw3NDw9clsxXSkmJihyPW4ubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihvPStyWzFdKSxlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTUpLG89big0NCk7KGUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBvW2VdfHwob1tlXT12b2lkIDAhPT10P3Q6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjoiMy4zNC4wIixtb2RlOnI/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxNC0yMDIzIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM0LjAvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNDIpLG89T2JqZWN0O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbyhyKGUpKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgbj1uKDQpLHI9MCxvPU1hdGgucmFuZG9tKCksYT1uKDEuLnRvU3RyaW5nKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIlN5bWJvbCgiKyh2b2lkIDA9PT1lPyIiOmUpKyIpXyIrYSgrK3IrbywzNil9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big5KSxvPW4oNiksYT1uKDM0KTtlLmV4cG9ydHM9IXImJiFvKGZ1bmN0aW9uKCl7cmV0dXJuIDchPT1PYmplY3QuZGVmaW5lUHJvcGVydHkoYSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDkpLG49big2KTtlLmV4cG9ydHM9ciYmbihmdW5jdGlvbigpe3JldHVybiA0MiE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbigpe30sInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDQpLG89big2KSxhPW4oMiksaT1uKDExKSxsPW4oOSksYz1uKDcyKS5DT05GSUdVUkFCTEUsdT1uKDQ2KSxuPW4oMzUpLHM9bi5lbmZvcmNlLGY9bi5nZXQsZD1TdHJpbmcscD1PYmplY3QuZGVmaW5lUHJvcGVydHksbT1yKCIiLnNsaWNlKSxoPXIoIiIucmVwbGFjZSksZz1yKFtdLmpvaW4pLGI9bCYmIW8oZnVuY3Rpb24oKXtyZXR1cm4gOCE9PXAoZnVuY3Rpb24oKXt9LCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkseT1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIiksbj1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4peyJTeW1ib2woIj09PW0oZCh0KSwwLDcpJiYodD0iWyIraChkKHQpLC9eU3ltYm9sXCgoW14pXSopXCkvLCIkMSIpKyJdIiksbiYmbi5nZXR0ZXImJih0PSJnZXQgIit0KSxuJiZuLnNldHRlciYmKHQ9InNldCAiK3QpLCghaShlLCJuYW1lIil8fGMmJmUubmFtZSE9PXQpJiYobD9wKGUsIm5hbWUiLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pOmUubmFtZT10KSxiJiZuJiZpKG4sImFyaXR5IikmJmUubGVuZ3RoIT09bi5hcml0eSYmcChlLCJsZW5ndGgiLHt2YWx1ZTpuLmFyaXR5fSk7dHJ5e24mJmkobiwiY29uc3RydWN0b3IiKSYmbi5jb25zdHJ1Y3Rvcj9sJiZwKGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSk6ZS5wcm90b3R5cGUmJihlLnByb3RvdHlwZT12b2lkIDApfWNhdGNoKGUpe31uPXMoZSk7cmV0dXJuIGkobiwic291cmNlIil8fChuLnNvdXJjZT1nKHksInN0cmluZyI9PXR5cGVvZiB0P3Q6IiIpKSxlfTtGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9bihmdW5jdGlvbigpe3JldHVybiBhKHRoaXMpJiZmKHRoaXMpLnNvdXJjZXx8dSh0aGlzKX0sInRvU3RyaW5nIil9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDkpLG49bigxMSksbz1GdW5jdGlvbi5wcm90b3R5cGUsYT1yJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLG49bihvLCJuYW1lIiksaT1uJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uKCl7fS5uYW1lLHI9biYmKCFyfHxhKG8sIm5hbWUiKS5jb25maWd1cmFibGUpO2UuZXhwb3J0cz17RVhJU1RTOm4sUFJPUEVSOmksQ09ORklHVVJBQkxFOnJ9fSxmdW5jdGlvbihlLHQsbil7dmFyIGM9bigxMSksdT1uKDEwOSkscz1uKDQxKSxmPW4oMTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPXUodCksbz1mLmYsYT1zLmYsaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbD1yW2ldO2MoZSxsKXx8biYmYyhuLGwpfHxvKGUsbCxhKHQsbCkpfX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDQpLGk9bigxMSksbD1uKDI0KSxjPW4oMTExKS5pbmRleE9mLHU9big0OCkscz1yKFtdLnB1c2gpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuLHI9bChlKSxvPTAsYT1bXTtmb3IobiBpbiByKSFpKHUsbikmJmkocixuKSYmcyhhLG4pO2Zvcig7dC5sZW5ndGg+bzspIWkocixuPXRbbysrXSl8fH5jKGEsbil8fHMoYSxuKTtyZXR1cm4gYX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDExNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKGUubGVuZ3RoKX19LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCl7cmV0dXJuKGU9Y1tsKGUpXSk9PT1zfHxlIT09dSYmKGEodCk/byh0KTohIXQpfXZhciBvPW4oNiksYT1uKDIpLGk9LyN8XC5wcm90b3R5cGVcLi8sbD1yLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoaSwiLiIpLnRvTG93ZXJDYXNlKCl9LGM9ci5kYXRhPXt9LHU9ci5OQVRJVkU9Ik4iLHM9ci5QT0xZRklMTD0iUCI7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXtuPW4oMTQpO2UuZXhwb3J0cz1uKCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigzNyksbz1uKDQzKSxhPW4oMzApLGk9bigyNiksbD1uKDUpKCJpdGVyYXRvciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighYShlKSlyZXR1cm4gbyhlLGwpfHxvKGUsIkBAaXRlcmF0b3IiKXx8aVtyKGUpXX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDI0KSxvPW4oMTMwKSxhPW4oMjYpLGk9bigzNSksbD1uKDE3KS5mLGM9big4MCksdT1uKDgyKSxzPW4oMTUpLG49big5KSxmPSJBcnJheSBJdGVyYXRvciIsZD1pLnNldCxwPWkuZ2V0dGVyRm9yKGYpLGk9KGUuZXhwb3J0cz1jKEFycmF5LCJBcnJheSIsZnVuY3Rpb24oZSx0KXtkKHRoaXMse3R5cGU6Zix0YXJnZXQ6cihlKSxpbmRleDowLGtpbmQ6dH0pfSxmdW5jdGlvbigpe3ZhciBlPXAodGhpcyksdD1lLnRhcmdldCxuPWUuaW5kZXgrKztpZighdHx8bj49dC5sZW5ndGgpcmV0dXJuIGUudGFyZ2V0PXZvaWQgMCx1KHZvaWQgMCwhMCk7c3dpdGNoKGUua2luZCl7Y2FzZSJrZXlzIjpyZXR1cm4gdShuLCExKTtjYXNlInZhbHVlcyI6cmV0dXJuIHUodFtuXSwhMSl9cmV0dXJuIHUoW24sdFtuXV0sITEpfSwidmFsdWVzIiksYS5Bcmd1bWVudHM9YS5BcnJheSk7aWYobygia2V5cyIpLG8oInZhbHVlcyIpLG8oImVudHJpZXMiKSwhcyYmbiYmInZhbHVlcyIhPT1pLm5hbWUpdHJ5e2woaSwibmFtZSIse3ZhbHVlOiJ2YWx1ZXMifSl9Y2F0Y2goZSl7fX0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIGgoKXtyZXR1cm4gdGhpc312YXIgZz1uKDcpLGI9big4KSx5PW4oMTUpLHI9big3Miksdj1uKDIpLHc9bigxMzEpLHg9big1MSksaz1uKDUyKSxTPW4oMzgpLEM9bigxOCksRT1uKDE5KSxvPW4oNSksTz1uKDI2KSxuPW4oODEpLGo9ci5QUk9QRVIsQT1yLkNPTkZJR1VSQUJMRSxQPW4uSXRlcmF0b3JQcm90b3R5cGUsST1uLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMsXz1vKCJpdGVyYXRvciIpLHo9InZhbHVlcyIsVD0iZW50cmllcyI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLHIsbyxhLGkpe3cobix0LHIpO2Z1bmN0aW9uIGwoZSl7aWYoZT09PW8mJnApcmV0dXJuIHA7aWYoIUkmJmUmJmUgaW4gZilyZXR1cm4gZltlXTtzd2l0Y2goZSl7Y2FzZSJrZXlzIjpjYXNlIHo6Y2FzZSBUOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzLGUpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyl9fXZhciBjLHUscj10KyIgSXRlcmF0b3IiLHM9ITEsZj1lLnByb3RvdHlwZSxkPWZbX118fGZbIkBAaXRlcmF0b3IiXXx8byYmZltvXSxwPSFJJiZkfHxsKG8pLG09IkFycmF5Ij09PXQmJmYuZW50cmllc3x8ZDtpZihtJiYobT14KG0uY2FsbChuZXcgZSkpKSE9PU9iamVjdC5wcm90b3R5cGUmJm0ubmV4dCYmKHl8fHgobSk9PT1QfHwoaz9rKG0sUCk6dihtW19dKXx8RShtLF8saCkpLFMobSxyLCEwLCEwKSx5KSYmKE9bcl09aCksaiYmbz09PXomJmQmJmQubmFtZSE9PXomJigheSYmQT9DKGYsIm5hbWUiLHopOihzPSEwLHA9ZnVuY3Rpb24oKXtyZXR1cm4gYihkLHRoaXMpfSkpLG8paWYoYz17dmFsdWVzOmwoeiksa2V5czphP3A6bCgia2V5cyIpLGVudHJpZXM6bChUKX0saSlmb3IodSBpbiBjKSFJJiYhcyYmdSBpbiBmfHxFKGYsdSxjW3VdKTtlbHNlIGcoe3RhcmdldDp0LHByb3RvOiEwLGZvcmNlZDpJfHxzfSxjKTtyZXR1cm4geSYmIWl8fGZbX109PT1wfHxFKGYsXyxwLHtuYW1lOm99KSxPW3RdPXAsY319LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGE9big2KSxpPW4oMiksbD1uKDEzKSxjPW4oMzYpLHU9big1MSkscz1uKDE5KSxmPW4oNSksbj1uKDE1KSxkPWYoIml0ZXJhdG9yIiksZj0hMTtbXS5rZXlzJiYoIm5leHQiaW4obz1bXS5rZXlzKCkpPyh1PXUodShvKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKHI9dSk6Zj0hMCksIWwocil8fGEoZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gcltkXS5jYWxsKGUpIT09ZX0pP3I9e306biYmKHI9YyhyKSksaShyW2RdKXx8cyhyLGQsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGUuZXhwb3J0cz17SXRlcmF0b3JQcm90b3R5cGU6cixCVUdHWV9TQUZBUklfSVRFUkFUT1JTOmZ9fSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3ZhbHVlOmUsZG9uZTp0fX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDEyKSxvPW4oMTM5KSxhPW4oMzApLGk9big1KSgic3BlY2llcyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBlPXIoZSkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PWV8fGEoZT1yKGUpW2ldKT90Om8oZSl9fSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZnVuY3Rpb24oKXtQKGUpfX1mdW5jdGlvbiBvKGUpe1AoZS5kYXRhKX1mdW5jdGlvbiBhKGUpe2MucG9zdE1lc3NhZ2UoRShlKSxpLnByb3RvY29sKyIvLyIraS5ob3N0KX12YXIgaSxsLGM9bigzKSx1PW4oMTQxKSxzPW4oNTMpLGY9bigyKSxkPW4oMTEpLHA9big2KSxtPW4oNzcpLGg9bigxNDIpLGc9bigzNCksYj1uKDE0MykseT1uKDg1KSxuPW4oMzkpLHY9Yy5zZXRJbW1lZGlhdGUsdz1jLmNsZWFySW1tZWRpYXRlLHg9Yy5wcm9jZXNzLGs9Yy5EaXNwYXRjaCxTPWMuRnVuY3Rpb24sQz1jLk1lc3NhZ2VDaGFubmVsLEU9Yy5TdHJpbmcsTz0wLGo9e30sQT0ib25yZWFkeXN0YXRlY2hhbmdlIixQPShwKGZ1bmN0aW9uKCl7aT1jLmxvY2F0aW9ufSksZnVuY3Rpb24oZSl7dmFyIHQ7ZChqLGUpJiYodD1qW2VdLGRlbGV0ZSBqW2VdLHQoKSl9KTt2JiZ3fHwodj1mdW5jdGlvbihlKXtiKGFyZ3VtZW50cy5sZW5ndGgsMSk7dmFyIHQ9ZihlKT9lOlMoZSksbj1oKGFyZ3VtZW50cywxKTtyZXR1cm4galsrK09dPWZ1bmN0aW9uKCl7dSh0LHZvaWQgMCxuKX0sbChPKSxPfSx3PWZ1bmN0aW9uKGUpe2RlbGV0ZSBqW2VdfSxuP2w9ZnVuY3Rpb24oZSl7eC5uZXh0VGljayhyKGUpKX06ayYmay5ub3c/bD1mdW5jdGlvbihlKXtrLm5vdyhyKGUpKX06QyYmIXk/KHk9KG49bmV3IEMpLnBvcnQyLG4ucG9ydDEub25tZXNzYWdlPW8sbD1zKHkucG9zdE1lc3NhZ2UseSkpOmMuYWRkRXZlbnRMaXN0ZW5lciYmZihjLnBvc3RNZXNzYWdlKSYmIWMuaW1wb3J0U2NyaXB0cyYmaSYmImZpbGU6IiE9PWkucHJvdG9jb2wmJiFwKGEpPyhsPWEsYy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixvLCExKSk6bD1BIGluIGcoInNjcmlwdCIpP2Z1bmN0aW9uKGUpe20uYXBwZW5kQ2hpbGQoZygic2NyaXB0IikpW0FdPWZ1bmN0aW9uKCl7bS5yZW1vdmVDaGlsZCh0aGlzKSxQKGUpfX06ZnVuY3Rpb24oZSl7c2V0VGltZW91dChyKGUpLDApfSksZS5leHBvcnRzPXtzZXQ6dixjbGVhcjp3fX0sZnVuY3Rpb24oZSx0LG4pe249bigzMik7ZS5leHBvcnRzPS8oPzppcGFkfGlwaG9uZXxpcG9kKS4qYXBwbGV3ZWJraXQvaS50ZXN0KG4pfSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcigpe3RoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsfXIucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24oZSl7dmFyIGU9e2l0ZW06ZSxuZXh0Om51bGx9LHQ9dGhpcy50YWlsO3Q/dC5uZXh0PWU6dGhpcy5oZWFkPWUsdGhpcy50YWlsPWV9LGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaGVhZDtpZihlKXJldHVybiBudWxsPT09KHRoaXMuaGVhZD1lLm5leHQpJiYodGhpcy50YWlsPW51bGwpLGUuaXRlbX19LGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPSJvYmplY3QiPT10eXBlb2YgRGVubyYmRGVubyYmIm9iamVjdCI9PXR5cGVvZiBEZW5vLnZlcnNpb259LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDEyKSxvPW4oMTMpLGE9bigxNik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSksbyh0KSYmdC5jb25zdHJ1Y3Rvcj09PWU/dDooKDAsKGU9YS5mKGUpKS5yZXNvbHZlKSh0KSxlLnByb21pc2UpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNyksdT1uKDgpLHM9bigxMCksbz1uKDE2KSxhPW4oMjApLGY9bigyNSk7cih7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwLGZvcmNlZDpuKDQwKX0se2FsbFNldHRsZWQ6ZnVuY3Rpb24oZSl7dmFyIGw9dGhpcyx0PW8uZihsKSxjPXQucmVzb2x2ZSxuPXQucmVqZWN0LHI9YShmdW5jdGlvbigpe3ZhciByPXMobC5yZXNvbHZlKSxvPVtdLGE9MCxpPTE7ZihlLGZ1bmN0aW9uKGUpe3ZhciB0PWErKyxuPSExO2krKyx1KHIsbCxlKS50aGVuKGZ1bmN0aW9uKGUpe258fChuPSEwLG9bdF09e3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTplfSwtLWkpfHxjKG8pfSxmdW5jdGlvbihlKXtufHwobj0hMCxvW3RdPXtzdGF0dXM6InJlamVjdGVkIixyZWFzb246ZX0sLS1pKXx8YyhvKX0pfSksLS1pfHxjKG8pfSk7cmV0dXJuIHIuZXJyb3ImJm4oci52YWx1ZSksdC5wcm9taXNlfX0pfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big3KSxkPW4oOCkscD1uKDEwKSxvPW4oMTQpLGE9bigxNiksaT1uKDIwKSxtPW4oMjUpLG49big0MCksaD0iTm8gb25lIHByb21pc2UgcmVzb2x2ZWQiO3Ioe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6bn0se2FueTpmdW5jdGlvbihlKXt2YXIgYz10aGlzLHU9bygiQWdncmVnYXRlRXJyb3IiKSx0PWEuZihjKSxzPXQucmVzb2x2ZSxmPXQucmVqZWN0LG49aShmdW5jdGlvbigpe3ZhciByPXAoYy5yZXNvbHZlKSxvPVtdLGE9MCxpPTEsbD0hMTttKGUsZnVuY3Rpb24oZSl7dmFyIHQ9YSsrLG49ITE7aSsrLGQocixjLGUpLnRoZW4oZnVuY3Rpb24oZSl7bnx8bHx8KGw9ITAscyhlKSl9LGZ1bmN0aW9uKGUpe258fGx8fChuPSEwLG9bdF09ZSwtLWkpfHxmKG5ldyB1KG8saCkpfSl9KSwtLWl8fGYobmV3IHUobyxoKSl9KTtyZXR1cm4gbi5lcnJvciYmZihuLnZhbHVlKSx0LnByb21pc2V9fSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDcpLG89bigxNik7cih7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwfSx7d2l0aFJlc29sdmVyczpmdW5jdGlvbigpe3ZhciBlPW8uZih0aGlzKTtyZXR1cm57cHJvbWlzZTplLnByb21pc2UscmVzb2x2ZTplLnJlc29sdmUscmVqZWN0OmUucmVqZWN0fX19KX0sZnVuY3Rpb24oZSx0KXt2YXIgbixyLGU9ZS5leHBvcnRzPXt9O2Z1bmN0aW9uIG8oKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBhKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX10cnl7bj0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om99Y2F0Y2goZSl7bj1vfXRyeXtyPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OmF9Y2F0Y2goZSl7cj1hfWZ1bmN0aW9uIGkodCl7aWYobj09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQodCwwKTtpZigobj09PW98fCFuKSYmc2V0VGltZW91dClyZXR1cm4obj1zZXRUaW1lb3V0KSh0LDApO3RyeXtyZXR1cm4gbih0LDApfWNhdGNoKGUpe3RyeXtyZXR1cm4gbi5jYWxsKG51bGwsdCwwKX1jYXRjaChlKXtyZXR1cm4gbi5jYWxsKHRoaXMsdCwwKX19fXZhciBsLGM9W10sdT0hMSxzPS0xO2Z1bmN0aW9uIGYoKXt1JiZsJiYodT0hMSxsLmxlbmd0aD9jPWwuY29uY2F0KGMpOnM9LTEsYy5sZW5ndGgpJiZkKCl9ZnVuY3Rpb24gZCgpe2lmKCF1KXtmb3IodmFyIGU9aShmKSx0PSh1PSEwLGMubGVuZ3RoKTt0Oyl7Zm9yKGw9YyxjPVtdOysrczx0OylsJiZsW3NdLnJ1bigpO3M9LTEsdD1jLmxlbmd0aH1sPW51bGwsdT0hMSwhZnVuY3Rpb24odCl7aWYocj09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KHQpO2lmKChyPT09YXx8IXIpJiZjbGVhclRpbWVvdXQpcmV0dXJuKHI9Y2xlYXJUaW1lb3V0KSh0KTt0cnl7cih0KX1jYXRjaChlKXt0cnl7cmV0dXJuIHIuY2FsbChudWxsLHQpfWNhdGNoKGUpe3JldHVybiByLmNhbGwodGhpcyx0KX19fShlKX19ZnVuY3Rpb24gcChlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fWZ1bmN0aW9uIG0oKXt9ZS5uZXh0VGljaz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZigxPGFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO2MucHVzaChuZXcgcChlLHQpKSwxIT09Yy5sZW5ndGh8fHV8fGkoZCl9LHAucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LGUudGl0bGU9ImJyb3dzZXIiLGUuYnJvd3Nlcj0hMCxlLmVudj17fSxlLmFyZ3Y9W10sZS52ZXJzaW9uPSIiLGUudmVyc2lvbnM9e30sZS5vbj1tLGUuYWRkTGlzdGVuZXI9bSxlLm9uY2U9bSxlLm9mZj1tLGUucmVtb3ZlTGlzdGVuZXI9bSxlLnJlbW92ZUFsbExpc3RlbmVycz1tLGUuZW1pdD1tLGUucHJlcGVuZExpc3RlbmVyPW0sZS5wcmVwZW5kT25jZUxpc3RlbmVyPW0sZS5saXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuW119LGUuYmluZGluZz1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkIil9LGUuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxlLmNoZGlyPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LGUudW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19LGZ1bmN0aW9uKGUsdCxuKXtuPW4oMTY5KTt0LmNyZWF0ZVJvb3Q9bi5jcmVhdGVSb290LHQuaHlkcmF0ZVJvb3Q9bi5oeWRyYXRlUm9vdH0sZnVuY3Rpb24odixlLHQpeyFmdW5jdGlvbihlKXt2YXIgbj05MDA3MTk5MjU0NzQwOTkxLHI9IltvYmplY3QgQXJndW1lbnRzXSIsbz0iW29iamVjdCBGdW5jdGlvbl0iLGE9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixpPSJbb2JqZWN0IFN5bWJvbF0iLGU9Im9iamVjdCI9PXR5cGVvZiBlJiZlJiZlLk9iamVjdD09PU9iamVjdCYmZSx0PSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsZT1lfHx0fHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpO3ZhciB0PU9iamVjdC5wcm90b3R5cGUsbD10Lmhhc093blByb3BlcnR5LGM9dC50b1N0cmluZyxlPWUuU3ltYm9sLHU9dC5wcm9wZXJ0eUlzRW51bWVyYWJsZSxzPWU/ZS5pc0NvbmNhdFNwcmVhZGFibGU6dm9pZCAwLGY9TWF0aC5tYXg7ZnVuY3Rpb24gbShlKXtyZXR1cm4gcChlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGgoZSkmJmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJi0xPGUmJmUlMT09MCYmZTw9bn0oZS5sZW5ndGgpJiYhZnVuY3Rpb24oZSl7ZT1mdW5jdGlvbihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gZSYmKCJvYmplY3QiPT10fHwiZnVuY3Rpb24iPT10KX0oZSk/Yy5jYWxsKGUpOiIiO3JldHVybiBlPT1vfHxlPT1hfShlKX0oZSl9KHQ9ZSkmJmwuY2FsbCh0LCJjYWxsZWUiKSYmKCF1LmNhbGwodCwiY2FsbGVlIil8fGMuY2FsbCh0KT09cil8fCEhKHMmJmUmJmVbc10pO3ZhciB0fWZ1bmN0aW9uIGQoZSl7dmFyIHQ7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwic3ltYm9sIj09dHlwZW9mKHQ9ZSl8fGgodCkmJmMuY2FsbCh0KT09aT9lOiIwIj09KHQ9ZSsiIikmJjEvZT09LTEvMD8iLTAiOnR9dmFyIHA9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBoKGUpe3JldHVybiEhZSYmIm9iamVjdCI9PXR5cGVvZiBlfWZ1bmN0aW9uIGcoKXtmb3IodmFyIGU9YXJndW1lbnRzLHQ9LTEsbj1mKGUubGVuZ3RoLXksMCkscj1BcnJheShuKTsrK3Q8bjspclt0XT1lW3krdF07Zm9yKHZhciB0PS0xLG89QXJyYXkoeSsxKTsrK3Q8eTspb1t0XT1lW3RdO29beV09cjt2YXIgYT1iLGk9dGhpcyxsPW87c3dpdGNoKGwubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIGEuY2FsbChpKTtjYXNlIDE6cmV0dXJuIGEuY2FsbChpLGxbMF0pO2Nhc2UgMjpyZXR1cm4gYS5jYWxsKGksbFswXSxsWzFdKTtjYXNlIDM6cmV0dXJuIGEuY2FsbChpLGxbMF0sbFsxXSxsWzJdKX1yZXR1cm4gYS5hcHBseShpLGwpfXZhciBiLHk7Yj1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307Zm9yKHZhciBuPWUsZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0tMSxyPWU/ZS5sZW5ndGg6MCxvPUFycmF5KHIpOysrbjxyOylvW25dPXQoZVtuXSxuLGUpO3JldHVybiBvfShmdW5jdGlvbiBlKHQsbixyLG8sYSl7dmFyIGk9LTEsbD10Lmxlbmd0aDtmb3Iocj1yfHxtLGE9YXx8W107KytpPGw7KXt2YXIgYz10W2ldO2lmKDA8biYmcihjKSlpZigxPG4pZShjLG4tMSxyLG8sYSk7ZWxzZXtwPWQ9Zj1zPXU9dm9pZCAwO2Zvcih2YXIgdT1hLHM9YyxmPS0xLGQ9cy5sZW5ndGgscD11Lmxlbmd0aDsrK2Y8ZDspdVtwK2ZdPXNbZl19ZWxzZSBvfHwoYVthLmxlbmd0aF09Yyl9cmV0dXJuIGF9KHQsMSksZCkscj1uPU9iamVjdChuKSxvPWUsYT1mdW5jdGlvbihlLHQpe3JldHVybiB0IGluIG59LGk9LTEsbD1vLmxlbmd0aCxjPXt9OysraTxsOyl7dmFyIHU9b1tpXSxzPXJbdV07YShzLHUpJiYoY1t1XT1zKX1yZXR1cm4gY30seT1mKHZvaWQgMD09PXk/Yi5sZW5ndGgtMTp5LDApO3YuZXhwb3J0cz1nfS5jYWxsKHRoaXMsdCgyMikpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixyKXtpZih2b2lkIDAhPT0odT1uP24uY2FsbChyLGUsdCk6dm9pZCAwKSlyZXR1cm4hIXU7aWYoZSE9PXQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8IWV8fCJvYmplY3QiIT10eXBlb2YgdHx8IXQpcmV0dXJuITE7dmFyIG89T2JqZWN0LmtleXMoZSksYT1PYmplY3Qua2V5cyh0KTtpZihvLmxlbmd0aCE9PWEubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmJpbmQodCksbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgYz1vW2xdO2lmKCFpKGMpKXJldHVybiExO3ZhciB1LHM9ZVtjXSxmPXRbY107aWYoITE9PT0odT1uP24uY2FsbChyLHMsZixjKTp2b2lkIDApfHx2b2lkIDA9PT11JiZzIT09ZilyZXR1cm4hMX19cmV0dXJuITB9fSxmdW5jdGlvbihlLHQsbil7dC5hPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIEEoZSx0LG4pe3ZhciByPXQudHJpbSgpLnNwbGl0KGYpLG89KHQ9cikubGVuZ3RoLGE9ZS5sZW5ndGg7c3dpdGNoKGEpe2Nhc2UgMDpjYXNlIDE6dmFyIGk9MDtmb3IoZT0wPT09YT8iIjplWzBdKyIgIjtpPG87KytpKXRbaV09dShlLHRbaV0sbikudHJpbSgpO2JyZWFrO2RlZmF1bHQ6dmFyIGw9aT0wO2Zvcih0PVtdO2k8bzsrK2kpZm9yKHZhciBjPTA7YzxhOysrYyl0W2wrK109dShlW2NdKyIgIixyW2ldLG4pLnRyaW0oKX1yZXR1cm4gdH1mdW5jdGlvbiB1KGUsdCxuKXt2YXIgcj10LmNoYXJDb2RlQXQoMCk7c3dpdGNoKHI9cjwzMz8odD10LnRyaW0oKSkuY2hhckNvZGVBdCgwKTpyKXtjYXNlIDM4OnJldHVybiB0LnJlcGxhY2UobywiJDEiK2UudHJpbSgpKTtjYXNlIDU4OnJldHVybiBlLnRyaW0oKSt0LnJlcGxhY2UobywiJDEiK2UudHJpbSgpKTtkZWZhdWx0OmlmKDA8K24mJjA8dC5pbmRleE9mKCJcZiIpKXJldHVybiB0LnJlcGxhY2UobywoNTg9PT1lLmNoYXJDb2RlQXQoMCk/IiI6IiQxIikrZS50cmltKCkpfXJldHVybiBlK3R9ZnVuY3Rpb24gUChlLHQsbixyKXt2YXIgbyxhPWUrIjsiLGk9Mip0KzMqbis0KnI7aWYoOTQ0PT1pKXJldHVybiBlPWEuaW5kZXhPZigiOiIsOSkrMSxvPWEuc3Vic3RyaW5nKGUsYS5sZW5ndGgtMSkudHJpbSgpLG89YS5zdWJzdHJpbmcoMCxlKS50cmltKCkrbysiOyIsMT09PUh8fDI9PT1IJiZJKG8sMSk/Ii13ZWJraXQtIitvK286bztpZigwIT09SCYmKDIhPT1IfHxJKGEsMSkpKXN3aXRjaChpKXtjYXNlIDEwMTU6cmV0dXJuIDk3PT09YS5jaGFyQ29kZUF0KDEwKT8iLXdlYmtpdC0iK2ErYTphO2Nhc2UgOTUxOnJldHVybiAxMTY9PT1hLmNoYXJDb2RlQXQoMyk/Ii13ZWJraXQtIithK2E6YTtjYXNlIDk2MzpyZXR1cm4gMTEwPT09YS5jaGFyQ29kZUF0KDUpPyItd2Via2l0LSIrYSthOmE7Y2FzZSAxMDA5OmlmKDEwMCE9PWEuY2hhckNvZGVBdCg0KSlicmVhaztjYXNlIDk2OTpjYXNlIDk0MjpyZXR1cm4iLXdlYmtpdC0iK2ErYTtjYXNlIDk3ODpyZXR1cm4iLXdlYmtpdC0iK2ErIi1tb3otIithK2E7Y2FzZSAxMDE5OmNhc2UgOTgzOnJldHVybiItd2Via2l0LSIrYSsiLW1vei0iK2ErIi1tcy0iK2ErYTtjYXNlIDg4MzppZig0NT09PWEuY2hhckNvZGVBdCg4KSlyZXR1cm4iLXdlYmtpdC0iK2ErYTtpZigwPGEuaW5kZXhPZigiaW1hZ2Utc2V0KCIsMTEpKXJldHVybiBhLnJlcGxhY2UoZywiJDEtd2Via2l0LSQyIikrYTticmVhaztjYXNlIDkzMjppZig0NT09PWEuY2hhckNvZGVBdCg0KSlzd2l0Y2goYS5jaGFyQ29kZUF0KDUpKXtjYXNlIDEwMzpyZXR1cm4iLXdlYmtpdC1ib3gtIithLnJlcGxhY2UoIi1ncm93IiwiIikrIi13ZWJraXQtIithKyItbXMtIithLnJlcGxhY2UoImdyb3ciLCJwb3NpdGl2ZSIpK2E7Y2FzZSAxMTU6cmV0dXJuIi13ZWJraXQtIithKyItbXMtIithLnJlcGxhY2UoInNocmluayIsIm5lZ2F0aXZlIikrYTtjYXNlIDk4OnJldHVybiItd2Via2l0LSIrYSsiLW1zLSIrYS5yZXBsYWNlKCJiYXNpcyIsInByZWZlcnJlZC1zaXplIikrYX1yZXR1cm4iLXdlYmtpdC0iK2ErIi1tcy0iK2ErYTtjYXNlIDk2NDpyZXR1cm4iLXdlYmtpdC0iK2ErIi1tcy1mbGV4LSIrYSthO2Nhc2UgMTAyMzppZig5OSE9PWEuY2hhckNvZGVBdCg4KSlicmVhaztyZXR1cm4iLXdlYmtpdC1ib3gtcGFjayIrKG89YS5zdWJzdHJpbmcoYS5pbmRleE9mKCI6IiwxNSkpLnJlcGxhY2UoImZsZXgtIiwiIikucmVwbGFjZSgic3BhY2UtYmV0d2VlbiIsImp1c3RpZnkiKSkrIi13ZWJraXQtIithKyItbXMtZmxleC1wYWNrIitvK2E7Y2FzZSAxMDA1OnJldHVybiBjLnRlc3QoYSk/YS5yZXBsYWNlKGwsIjotd2Via2l0LSIpK2EucmVwbGFjZShsLCI6LW1vei0iKSthOmE7Y2FzZSAxZTM6c3dpdGNoKHQ9KG89YS5zdWJzdHJpbmcoMTMpLnRyaW0oKSkuaW5kZXhPZigiLSIpKzEsby5jaGFyQ29kZUF0KDApK28uY2hhckNvZGVBdCh0KSl7Y2FzZSAyMjY6bz1hLnJlcGxhY2UoZCwidGIiKTticmVhaztjYXNlIDIzMjpvPWEucmVwbGFjZShkLCJ0Yi1ybCIpO2JyZWFrO2Nhc2UgMjIwOm89YS5yZXBsYWNlKGQsImxyIik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gYX1yZXR1cm4iLXdlYmtpdC0iK2ErIi1tcy0iK28rYTtjYXNlIDEwMTc6aWYoLTE9PT1hLmluZGV4T2YoInN0aWNreSIsOSkpYnJlYWs7Y2FzZSA5NzU6c3dpdGNoKHQ9KGE9ZSkubGVuZ3RoLTEwLGk9KG89KDMzPT09YS5jaGFyQ29kZUF0KHQpP2Euc3Vic3RyaW5nKDAsdCk6YSkuc3Vic3RyaW5nKGUuaW5kZXhPZigiOiIsNykrMSkudHJpbSgpKS5jaGFyQ29kZUF0KDApKygwfG8uY2hhckNvZGVBdCg3KSkpe2Nhc2UgMjAzOmlmKG8uY2hhckNvZGVBdCg4KTwxMTEpYnJlYWs7Y2FzZSAxMTU6YT1hLnJlcGxhY2UobywiLXdlYmtpdC0iK28pKyI7IithO2JyZWFrO2Nhc2UgMjA3OmNhc2UgMTAyOmE9YS5yZXBsYWNlKG8sIi13ZWJraXQtIisoMTAyPGk/ImlubGluZS0iOiIiKSsiYm94IikrIjsiK2EucmVwbGFjZShvLCItd2Via2l0LSIrbykrIjsiK2EucmVwbGFjZShvLCItbXMtIitvKyJib3giKSsiOyIrYX1yZXR1cm4gYSsiOyI7Y2FzZSA5Mzg6aWYoNDU9PT1hLmNoYXJDb2RlQXQoNSkpc3dpdGNoKGEuY2hhckNvZGVBdCg2KSl7Y2FzZSAxMDU6cmV0dXJuIG89YS5yZXBsYWNlKCItaXRlbXMiLCIiKSwiLXdlYmtpdC0iK2ErIi13ZWJraXQtYm94LSIrbysiLW1zLWZsZXgtIitvK2E7Y2FzZSAxMTU6cmV0dXJuIi13ZWJraXQtIithKyItbXMtZmxleC1pdGVtLSIrYS5yZXBsYWNlKG0sIiIpK2E7ZGVmYXVsdDpyZXR1cm4iLXdlYmtpdC0iK2ErIi1tcy1mbGV4LWxpbmUtcGFjayIrYS5yZXBsYWNlKCJhbGlnbi1jb250ZW50IiwiIikucmVwbGFjZShtLCIiKSthfWJyZWFrO2Nhc2UgOTczOmNhc2UgOTg5OmlmKDQ1IT09YS5jaGFyQ29kZUF0KDMpfHwxMjI9PT1hLmNoYXJDb2RlQXQoNCkpYnJlYWs7Y2FzZSA5MzE6Y2FzZSA5NTM6aWYoITA9PT1oLnRlc3QoZSkpcmV0dXJuIDExNT09PShvPWUuc3Vic3RyaW5nKGUuaW5kZXhPZigiOiIpKzEpKS5jaGFyQ29kZUF0KDApP1AoZS5yZXBsYWNlKCJzdHJldGNoIiwiZmlsbC1hdmFpbGFibGUiKSx0LG4scikucmVwbGFjZSgiOmZpbGwtYXZhaWxhYmxlIiwiOnN0cmV0Y2giKTphLnJlcGxhY2UobywiLXdlYmtpdC0iK28pK2EucmVwbGFjZShvLCItbW96LSIrby5yZXBsYWNlKCJmaWxsLSIsIiIpKSthO2JyZWFrO2Nhc2UgOTYyOmlmKGE9Ii13ZWJraXQtIithKygxMDI9PT1hLmNoYXJDb2RlQXQoNSk/Ii1tcy0iK2E6IiIpK2EsMjExPT09bityJiYxMDU9PT1hLmNoYXJDb2RlQXQoMTMpJiYwPGEuaW5kZXhPZigidHJhbnNmb3JtIiwxMCkpcmV0dXJuIGEuc3Vic3RyaW5nKDAsYS5pbmRleE9mKCI7IiwyNykrMSkucmVwbGFjZShzLCIkMS13ZWJraXQtJDIiKSthfXJldHVybiBhfWZ1bmN0aW9uIEkoZSx0KXt2YXIgbj1lLmluZGV4T2YoMT09PXQ/IjoiOiJ7Iikscj1lLnN1YnN0cmluZygwLDMhPT10P246MTApLG49ZS5zdWJzdHJpbmcobisxLGUubGVuZ3RoLTEpO3JldHVybiBpKDIhPT10P3I6ci5yZXBsYWNlKGEsIiQxIiksbix0KX1mdW5jdGlvbiBfKGUsdCl7dmFyIG49UCh0LHQuY2hhckNvZGVBdCgwKSx0LmNoYXJDb2RlQXQoMSksdC5jaGFyQ29kZUF0KDIpKTtyZXR1cm4gbiE9PXQrIjsiP24ucmVwbGFjZShyLCIgb3IgKCQxKSIpLnN1YnN0cmluZyg0KToiKCIrdCsiKSJ9ZnVuY3Rpb24geihlLHQsbixyLG8sYSxpLGwsYyx1KXtmb3IodmFyIHMsZj0wLGQ9dDtmPCQ7KytmKXN3aXRjaChzPWJbZl0uY2FsbChwLGUsZCxuLHIsbyxhLGksbCxjLHUpKXtjYXNlIHZvaWQgMDpjYXNlITE6Y2FzZSEwOmNhc2UgbnVsbDpicmVhaztkZWZhdWx0OmQ9c31pZihkIT09dClyZXR1cm4gZH1mdW5jdGlvbiB0KGUpe3JldHVybiB2b2lkIDAhPT0oZT1lLnByZWZpeCkmJihpPW51bGwsZT8iZnVuY3Rpb24iIT10eXBlb2YgZT9IPTE6KEg9MixpPWUpOkg9MCksdH1mdW5jdGlvbiBwKGUsdCl7ZT1bZT1lLmNoYXJDb2RlQXQoMCk8MzM/ZS50cmltKCk6ZV0sMDwkJiZ2b2lkIDAhPT0obj16KC0xLHQsZSxlLEIsVSwwLDAsMCwwKSkmJiJzdHJpbmciPT10eXBlb2YgbiYmKHQ9bik7dmFyIG4sdD1mdW5jdGlvbiBlKHQsbixyLG8sYSl7Zm9yKHZhciBpLGwsYyx1LHMsZj0wLGQ9MCxwPTAsbT0wLGg9MCxnPTAsYj1jPWk9MCx5PTAsdj0wLHc9MCx4PTAsaz1yLmxlbmd0aCxTPWstMSxDPSIiLEU9IiIsTz0iIixqPSIiO3k8azspe2lmKGw9ci5jaGFyQ29kZUF0KHkpLHk9PT1TJiYwIT09ZCttK3ArZiYmKDAhPT1kJiYobD00Nz09PWQ/MTA6NDcpLG09cD1mPTAsaysrLFMrKyksMD09PWQrbStwK2Ype2lmKHk9PT1TJiYwPChDPTA8dj9DLnJlcGxhY2UoTCwiIik6QykudHJpbSgpLmxlbmd0aCl7c3dpdGNoKGwpe2Nhc2UgMzI6Y2FzZSA5OmNhc2UgNTk6Y2FzZSAxMzpjYXNlIDEwOmJyZWFrO2RlZmF1bHQ6Qys9ci5jaGFyQXQoeSl9bD01OX1zd2l0Y2gobCl7Y2FzZSAxMjM6Zm9yKGk9KEM9Qy50cmltKCkpLmNoYXJDb2RlQXQoMCksYz0xLHg9Kyt5O3k8azspe3N3aXRjaChsPXIuY2hhckNvZGVBdCh5KSl7Y2FzZSAxMjM6YysrO2JyZWFrO2Nhc2UgMTI1OmMtLTticmVhaztjYXNlIDQ3OnN3aXRjaChsPXIuY2hhckNvZGVBdCh5KzEpKXtjYXNlIDQyOmNhc2UgNDc6ZTp7Zm9yKGI9eSsxO2I8UzsrK2Ipc3dpdGNoKHIuY2hhckNvZGVBdChiKSl7Y2FzZSA0NzppZig0MiE9PWx8fDQyIT09ci5jaGFyQ29kZUF0KGItMSl8fHkrMj09PWIpYnJlYWs7eT1iKzE7YnJlYWsgZTtjYXNlIDEwOmlmKDQ3PT09bCl7eT1iKzE7YnJlYWsgZX19eT1ifX1icmVhaztjYXNlIDkxOmwrKztjYXNlIDQwOmwrKztjYXNlIDM0OmNhc2UgMzk6Zm9yKDt5Kys8UyYmci5jaGFyQ29kZUF0KHkpIT09bDspO31pZigwPT09YylicmVhazt5Kyt9aWYoYz1yLnN1YnN0cmluZyh4LHkpLDY0PT09KGk9MD09PWk/KEM9Qy5yZXBsYWNlKFQsIiIpLnRyaW0oKSkuY2hhckNvZGVBdCgwKTppKSl7c3dpdGNoKGw9KEM9MDx2P0MucmVwbGFjZShMLCIiKTpDKS5jaGFyQ29kZUF0KDEpKXtjYXNlIDEwMDpjYXNlIDEwOTpjYXNlIDExNTpjYXNlIDQ1OnY9bjticmVhaztkZWZhdWx0OnY9Vn1pZih4PShjPWUobix2LGMsbCxhKzEpKS5sZW5ndGgsMDwkJiYocz16KDMsYyx2PUEoVixDLHcpLG4sQixVLHgsbCxhLG8pLEM9di5qb2luKCIiKSx2b2lkIDAhPT1zKSYmMD09PSh4PShjPXMudHJpbSgpKS5sZW5ndGgpJiYobD0wLGM9IiIpLDA8eClzd2l0Y2gobCl7Y2FzZSAxMTU6Qz1DLnJlcGxhY2UoRCxfKTtjYXNlIDEwMDpjYXNlIDEwOTpjYXNlIDQ1OmM9QysieyIrYysifSI7YnJlYWs7Y2FzZSAxMDc6Yz0oQz1DLnJlcGxhY2UoTSwiJDEgJDIiKSkrInsiK2MrIn0iLGM9MT09PUh8fDI9PT1IJiZJKCJAIitjLDMpPyJALXdlYmtpdC0iK2MrIkAiK2M6IkAiK2M7YnJlYWs7ZGVmYXVsdDpjPUMrYywxMTI9PT1vJiYoRSs9YyxjPSIiKX1lbHNlIGM9IiJ9ZWxzZSBjPWUobixBKG4sQyx3KSxjLG8sYSsxKTtPKz1jLGM9dz12PWI9aT0wLEM9IiIsbD1yLmNoYXJDb2RlQXQoKyt5KTticmVhaztjYXNlIDEyNTpjYXNlIDU5OmlmKDE8KHg9KEM9KDA8dj9DLnJlcGxhY2UoTCwiIik6QykudHJpbSgpKS5sZW5ndGgpKXN3aXRjaCgwPT09YiYmKGk9Qy5jaGFyQ29kZUF0KDApLDQ1PT09aXx8OTY8aSYmaTwxMjMpJiYoeD0oQz1DLnJlcGxhY2UoIiAiLCI6IikpLmxlbmd0aCksMDwkJiZ2b2lkIDAhPT0ocz16KDEsQyxuLHQsQixVLEUubGVuZ3RoLG8sYSxvKSkmJjA9PT0oeD0oQz1zLnRyaW0oKSkubGVuZ3RoKSYmKEM9IlwwXDAiKSxpPUMuY2hhckNvZGVBdCgwKSxsPUMuY2hhckNvZGVBdCgxKSxpKXtjYXNlIDA6YnJlYWs7Y2FzZSA2NDppZigxMDU9PT1sfHw5OT09PWwpe2orPUMrci5jaGFyQXQoeSk7YnJlYWt9ZGVmYXVsdDo1OCE9PUMuY2hhckNvZGVBdCh4LTEpJiYoRSs9UChDLGksbCxDLmNoYXJDb2RlQXQoMikpKX13PXY9Yj1pPTAsQz0iIixsPXIuY2hhckNvZGVBdCgrK3kpfX1zd2l0Y2gobCl7Y2FzZSAxMzpjYXNlIDEwOjQ3PT09ZD9kPTA6MD09PTEraSYmMTA3IT09byYmMDxDLmxlbmd0aCYmKHY9MSxDKz0iXDAiKSwwPCQqVyYmeigwLEMsbix0LEIsVSxFLmxlbmd0aCxvLGEsbyksVT0xLEIrKzticmVhaztjYXNlIDU5OmNhc2UgMTI1OmlmKDA9PT1kK20rcCtmKXtVKys7YnJlYWt9ZGVmYXVsdDpzd2l0Y2goVSsrLHU9ci5jaGFyQXQoeSksbCl7Y2FzZSA5OmNhc2UgMzI6aWYoMD09PW0rZitkKXN3aXRjaChoKXtjYXNlIDQ0OmNhc2UgNTg6Y2FzZSA5OmNhc2UgMzI6dT0iIjticmVhaztkZWZhdWx0OjMyIT09bCYmKHU9IiAiKX1icmVhaztjYXNlIDA6dT0iXFwwIjticmVhaztjYXNlIDEyOnU9IlxcZiI7YnJlYWs7Y2FzZSAxMTp1PSJcXHYiO2JyZWFrO2Nhc2UgMzg6MD09PW0rZCtmJiYodj13PTEsdT0iXGYiK3UpO2JyZWFrO2Nhc2UgMTA4OmlmKDA9PT1tK2QrZitGJiYwPGIpc3dpdGNoKHktYil7Y2FzZSAyOjExMj09PWgmJjU4PT09ci5jaGFyQ29kZUF0KHktMykmJihGPWgpO2Nhc2UgODoxMTE9PT1nJiYoRj1nKX1icmVhaztjYXNlIDU4OjA9PT1tK2QrZiYmKGI9eSk7YnJlYWs7Y2FzZSA0NDowPT09ZCtwK20rZiYmKHY9MSx1Kz0iXHIiKTticmVhaztjYXNlIDM0OmNhc2UgMzk6MD09PWQmJihtPW09PT1sPzA6MD09PW0/bDptKTticmVhaztjYXNlIDkxOjA9PT1tK2QrcCYmZisrO2JyZWFrO2Nhc2UgOTM6MD09PW0rZCtwJiZmLS07YnJlYWs7Y2FzZSA0MTowPT09bStkK2YmJnAtLTticmVhaztjYXNlIDQwOjA9PT1tK2QrZiYmKDA9PT1pJiYyKmgrMypnIT01MzMmJihpPTEpLHArKyk7YnJlYWs7Y2FzZSA2NDowPT09ZCtwK20rZitiK2MmJihjPTEpO2JyZWFrO2Nhc2UgNDI6Y2FzZSA0NzppZighKDA8bStmK3ApKXN3aXRjaChkKXtjYXNlIDA6c3dpdGNoKDIqbCszKnIuY2hhckNvZGVBdCh5KzEpKXtjYXNlIDIzNTpkPTQ3O2JyZWFrO2Nhc2UgMjIwOng9eSxkPTQyfWJyZWFrO2Nhc2UgNDI6NDc9PT1sJiY0Mj09PWgmJngrMiE9PXkmJigzMz09PXIuY2hhckNvZGVBdCh4KzIpJiYoRSs9ci5zdWJzdHJpbmcoeCx5KzEpKSx1PSIiLGQ9MCl9fTA9PT1kJiYoQys9dSl9Zz1oLGg9bCx5Kyt9aWYoMDwoeD1FLmxlbmd0aCkpe2lmKHY9biwwPCQmJnZvaWQgMCE9PShzPXooMixFLHYsdCxCLFUseCxvLGEsbykpJiYwPT09KEU9cykubGVuZ3RoKXJldHVybiBqK0UrTztpZihFPXYuam9pbigiLCIpKyJ7IitFKyJ9IiwwIT1IKkYpe3N3aXRjaChGPTIhPT1IfHxJKEUsMik/RjowKXtjYXNlIDExMTpFPUUucmVwbGFjZShOLCI6LW1vei0kMSIpK0U7YnJlYWs7Y2FzZSAxMTI6RT1FLnJlcGxhY2UoUiwiOjotd2Via2l0LWlucHV0LSQxIikrRS5yZXBsYWNlKFIsIjo6LW1vei0kMSIpK0UucmVwbGFjZShSLCI6LW1zLWlucHV0LSQxIikrRX1GPTB9fXJldHVybiBqK0UrT30oVixlLHQsMCwwKTtyZXR1cm4gMDwkJiZ2b2lkIDAhPT0obj16KC0yLHQsZSxlLEIsVSx0Lmxlbmd0aCwwLDAsMCkpJiYodD1uKSxGPTAsVT1CPTEsdH12YXIgVD0vXlwwKy9nLEw9L1tcMFxyXGZdL2csbD0vOiAqL2csYz0vem9vfGdyYS8scz0vKFssOiBdKSh0cmFuc2Zvcm0pL2csZj0vLFxyKz8vZyxvPS8oW1x0XHJcbiBdKSpcZj8mL2csTT0vQChrXHcrKVxzKihcUyopXHMqLyxSPS86OihwbGFjZSkvZyxOPS86KHJlYWQtb25seSkvZyxkPS9bc3ZoXVx3Ky1bdGJscl17Mn0vLEQ9L1woXHMqKC4qKVxzKlwpL2cscj0vKFtcc1xTXSo/KTsvZyxtPS8tc2VsZnxmbGV4LS9nLGE9L1teXSo/KDpbcnBdW2VsXWFbXHctXSspW15dKi8saD0vc3RyZXRjaHw6XHMqXHcrXC0oPzpjb250ZXxhdmFpbCkvLGc9LyhbXi1dKShpbWFnZS1zZXRcKCkvLFU9MSxCPTEsRj0wLEg9MSxWPVtdLGI9W10sJD0wLGk9bnVsbCxXPTA7cmV0dXJuIHAudXNlPWZ1bmN0aW9uIGUodCl7c3dpdGNoKHQpe2Nhc2Ugdm9pZCAwOmNhc2UgbnVsbDokPWIubGVuZ3RoPTA7YnJlYWs7ZGVmYXVsdDppZigiZnVuY3Rpb24iPT10eXBlb2YgdCliWyQrK109dDtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgdClmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjsrK24pZSh0W25dKTtlbHNlIFc9MHwhIXR9cmV0dXJuIGV9LHAuc2V0PXQsdm9pZCAwIT09ZSYmdChlKSxwfX0sZnVuY3Rpb24oZSx0LG4pe3QuYT17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6MSxib3JkZXJJbWFnZU91dHNldDoxLGJvcmRlckltYWdlU2xpY2U6MSxib3JkZXJJbWFnZVdpZHRoOjEsYm94RmxleDoxLGJveEZsZXhHcm91cDoxLGJveE9yZGluYWxHcm91cDoxLGNvbHVtbkNvdW50OjEsY29sdW1uczoxLGZsZXg6MSxmbGV4R3JvdzoxLGZsZXhQb3NpdGl2ZToxLGZsZXhTaHJpbms6MSxmbGV4TmVnYXRpdmU6MSxmbGV4T3JkZXI6MSxncmlkUm93OjEsZ3JpZFJvd0VuZDoxLGdyaWRSb3dTcGFuOjEsZ3JpZFJvd1N0YXJ0OjEsZ3JpZENvbHVtbjoxLGdyaWRDb2x1bW5FbmQ6MSxncmlkQ29sdW1uU3BhbjoxLGdyaWRDb2x1bW5TdGFydDoxLG1zR3JpZFJvdzoxLG1zR3JpZFJvd1NwYW46MSxtc0dyaWRDb2x1bW46MSxtc0dyaWRDb2x1bW5TcGFuOjEsZm9udFdlaWdodDoxLGxpbmVIZWlnaHQ6MSxvcGFjaXR5OjEsb3JkZXI6MSxvcnBoYW5zOjEsdGFiU2l6ZToxLHdpZG93czoxLHpJbmRleDoxLHpvb206MSxXZWJraXRMaW5lQ2xhbXA6MSxmaWxsT3BhY2l0eToxLGZsb29kT3BhY2l0eToxLHN0b3BPcGFjaXR5OjEsc3Ryb2tlRGFzaGFycmF5OjEsc3Ryb2tlRGFzaG9mZnNldDoxLHN0cm9rZU1pdGVybGltaXQ6MSxzdHJva2VPcGFjaXR5OjEsc3Ryb2tlV2lkdGg6MX19LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big5OSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDEwMCk7bigxNjMpLG4oMTY0KSxuKDE2NSksbigxNjYpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxMDEpO24oMTYyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTAyKTtuKDE1OSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXtuKDU5KSxuKDc5KSxuKDEzMiksbigxMzQpLG4oODkpLG4oOTApLG4oOTEpLG4oMTU1KSxuKDE1Nik7bj1uKDE1OCk7ZS5leHBvcnRzPW4uUHJvbWlzZX0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIG8oZSx0KXt2YXIgbixyPWEodix0aGlzKTtyZXR1cm4gbD9uPWwobmV3IGIscj9pKHRoaXMpOnYpOihuPXI/dGhpczp1KHYpLHMobixnLCJFcnJvciIpKSx2b2lkIDAhPT10JiZzKG4sIm1lc3NhZ2UiLGgodCkpLHAobixvLG4uc3RhY2ssMSksMjxhcmd1bWVudHMubGVuZ3RoJiZkKG4sYXJndW1lbnRzWzJdKSxtKGUseSx7dGhhdDpyPVtdfSkscyhuLCJlcnJvcnMiLHIpLG59dmFyIHI9big3KSxhPW4oMzEpLGk9big1MSksbD1uKDUyKSxjPW4oNzMpLHU9bigzNikscz1uKDE4KSxmPW4oMjMpLGQ9bigxMjEpLHA9bigxMjIpLG09bigyNSksaD1uKDEyOSksZz1uKDUpKCJ0b1N0cmluZ1RhZyIpLGI9RXJyb3IseT1bXS5wdXNoLHY9KGw/bChvLGIpOmMobyxiLHtuYW1lOiEwfSksby5wcm90b3R5cGU9dShiLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6ZigxLG8pLG1lc3NhZ2U6ZigxLCIiKSxuYW1lOmYoMSwiQWdncmVnYXRlRXJyb3IiKX0pKTtyKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsYXJpdHk6Mn0se0FnZ3JlZ2F0ZUVycm9yOm99KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixhPW8mJiFyLmNhbGwoezE6Mn0sMSk7dC5mPWE/ZnVuY3Rpb24oZSl7ZT1vKHRoaXMsZSk7cmV0dXJuISFlJiZlLmVudW1lcmFibGV9OnJ9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDQpLG89big2KSxhPW4oMjkpLGk9T2JqZWN0LGw9cigiIi5zcGxpdCk7ZS5leHBvcnRzPW8oZnVuY3Rpb24oKXtyZXR1cm4haSgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSk/ZnVuY3Rpb24oZSl7cmV0dXJuIlN0cmluZyI9PT1hKGUpP2woZSwiIik6aShlKX06aX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oOCksbz1uKDEzKSxhPW4oNjIpLGk9big0MyksbD1uKDEwNyksbj1uKDUpLGM9VHlwZUVycm9yLHU9bigidG9QcmltaXRpdmUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighbyhlKXx8YShlKSlyZXR1cm4gZTt2YXIgbj1pKGUsdSk7aWYobil7aWYobj1yKG4sZSx0PXZvaWQgMD09PXQ/ImRlZmF1bHQiOnQpLCFvKG4pfHxhKG4pKXJldHVybiBuO3Rocm93IG5ldyBjKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX1yZXR1cm4gbChlLHQ9dm9pZCAwPT09dD8ibnVtYmVyIjp0KX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1uKDgpLGE9bigyKSxpPW4oMTMpLGw9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuLHI7aWYoInN0cmluZyI9PT10JiZhKG49ZS50b1N0cmluZykmJiFpKHI9byhuLGUpKSlyZXR1cm4gcjtpZihhKG49ZS52YWx1ZU9mKSYmIWkocj1vKG4sZSkpKXJldHVybiByO2lmKCJzdHJpbmciIT09dCYmYShuPWUudG9TdHJpbmcpJiYhaShyPW8obixlKSkpcmV0dXJuIHI7dGhyb3cgbmV3IGwoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMyksbj1uKDIpLHI9ci5XZWFrTWFwO2UuZXhwb3J0cz1uKHIpJiYvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKHIpKX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTQpLG89big0KSxhPW4oMTEwKSxpPW4oMTE1KSxsPW4oMTIpLGM9byhbXS5jb25jYXQpO2UuZXhwb3J0cz1yKCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5jdGlvbihlKXt2YXIgdD1hLmYobChlKSksbj1pLmY7cmV0dXJuIG4/Yyh0LG4oZSkpOnR9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big3NCksbz1uKDUwKS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSxvKX19LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGwpe3JldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHIsbz1jKGUpLGE9cyhvKSxpPXUobixhKTtpZihsJiZ0IT10KXtmb3IoO2k8YTspaWYoKHI9b1tpKytdKSE9cilyZXR1cm4hMH1lbHNlIGZvcig7aTxhO2krKylpZigobHx8aSBpbiBvKSYmb1tpXT09PXQpcmV0dXJuIGx8fGl8fDA7cmV0dXJuIWwmJi0xfX12YXIgYz1uKDI0KSx1PW4oMTEyKSxzPW4oNzUpO2UuZXhwb3J0cz17aW5jbHVkZXM6cighMCksaW5kZXhPZjpyKCExKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDQ5KSxvPU1hdGgubWF4LGE9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZT1yKGUpO3JldHVybiBlPDA/byhlK3QsMCk6YShlLHQpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPU1hdGguY2VpbCxvPU1hdGguZmxvb3I7ZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uKGUpe2U9K2U7cmV0dXJuKDA8ZT9vOnIpKGUpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNDkpLG89TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiAwPGU/byhyKGUpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxmdW5jdGlvbihlLHQsbil7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LGZ1bmN0aW9uKGUsdCxuKXtuPW4oNik7ZS5leHBvcnRzPSFuKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbCxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IGUpIT09ZS5wcm90b3R5cGV9KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNCksbz1uKDEwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3RyeXtyZXR1cm4gcihvKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KVtuXSkpfWNhdGNoKGUpe319fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigyKSxvPVN0cmluZyxhPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlfHxyKGUpKXJldHVybiBlO3Rocm93IG5ldyBhKCJDYW4ndCBzZXQgIitvKGUpKyIgYXMgYSBwcm90b3R5cGUiKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDkpLG89big3MCksbD1uKDE3KSxjPW4oMTIpLHU9bigyNCkscz1uKDEyMCk7dC5mPXImJiFvP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCl7YyhlKTtmb3IodmFyIG4scj11KHQpLG89cyh0KSxhPW8ubGVuZ3RoLGk9MDtpPGE7KWwuZihlLG49b1tpKytdLHJbbl0pO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNzQpLG89big1MCk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gcihlLG8pfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTMpLG89bigxOCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cih0KSYmImNhdXNlImluIHQmJm8oZSwiY2F1c2UiLHQuY2F1c2UpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBvPW4oMTgpLGE9bigxMjMpLGk9bigxMjQpLGw9RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLHIpe2kmJihsP2woZSx0KTpvKGUsInN0YWNrIixhKG4scikpKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgbj1uKDQpLHI9RXJyb3Isbz1uKCIiLnJlcGxhY2UpLG49U3RyaW5nKG5ldyByKCJ6eGNhc2QiKS5zdGFjayksYT0vXG5ccyphdCBbXjpdKjpbXlxuXSovLGk9YS50ZXN0KG4pO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGkmJiJzdHJpbmciPT10eXBlb2YgZSYmIXIucHJlcGFyZVN0YWNrVHJhY2UpZm9yKDt0LS07KWU9byhlLGEsIiIpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNiksbz1uKDIzKTtlLmV4cG9ydHM9IXIoZnVuY3Rpb24oKXt2YXIgZT1uZXcgRXJyb3IoImEiKTtyZXR1cm4hKCJzdGFjayJpbiBlKXx8KE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJzdGFjayIsbygxLDcpKSw3IT09ZS5zdGFjayl9KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMjkpLG89big0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIkZ1bmN0aW9uIj09PXIoZSkpcmV0dXJuIG8oZSl9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big1KSxvPW4oMjYpLGE9cigiaXRlcmF0b3IiKSxpPUFycmF5LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihvLkFycmF5PT09ZXx8aVthXT09PWUpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oOCksbz1uKDEwKSxhPW4oMTIpLGk9bigzMyksbD1uKDc4KSxjPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0PWFyZ3VtZW50cy5sZW5ndGg8Mj9sKGUpOnQ7aWYobyh0KSlyZXR1cm4gYShyKHQsZSkpO3Rocm93IG5ldyBjKGkoZSkrIiBpcyBub3QgaXRlcmFibGUiKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDgpLGk9bigxMiksbD1uKDQzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG87aShlKTt0cnl7aWYoIShyPWwoZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyBuO3JldHVybiBufXI9YShyLGUpfWNhdGNoKGUpe289ITAscj1lfWlmKCJ0aHJvdyI9PT10KXRocm93IG47aWYobyl0aHJvdyByO3JldHVybiBpKHIpLG59fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PWU/YXJndW1lbnRzLmxlbmd0aDwyPyIiOnQ6cihlKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDUpLG89bigzNiksbj1uKDE3KS5mLGE9cigidW5zY29wYWJsZXMiKSxpPUFycmF5LnByb3RvdHlwZTt2b2lkIDA9PT1pW2FdJiZuKGksYSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOm8obnVsbCl9KSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aVthXVtlXT0hMH19LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBvKCl7cmV0dXJuIHRoaXN9dmFyIGE9big4MSkuSXRlcmF0b3JQcm90b3R5cGUsaT1uKDM2KSxsPW4oMjMpLGM9bigzOCksdT1uKDI2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4scil7dCs9IiBJdGVyYXRvciI7cmV0dXJuIGUucHJvdG90eXBlPWkoYSx7bmV4dDpsKCshcixuKX0pLGMoZSx0LCExLCEwKSx1W3RdPW8sZX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDU0KSxvPW4oMTkpLG49bigxMzMpO3J8fG8oT2JqZWN0LnByb3RvdHlwZSwidG9TdHJpbmciLG4se3Vuc2FmZTohMH0pfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big1NCksbz1uKDM3KTtlLmV4cG9ydHM9cj97fS50b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0ICIrbyh0aGlzKSsiXSJ9fSxmdW5jdGlvbihlLHQsbil7bigxMzUpLG4oMTQ5KSxuKDE1MSksbigxNTIpLG4oMTUzKSxuKDE1NCl9LGZ1bmN0aW9uKFIsTixlKXtmdW5jdGlvbiBhKGUsdCl7dmFyIG4scixvLGEsaT10LnZhbHVlLGw9dC5zdGF0ZT09PU8sYz1sP2Uub2s6ZS5mYWlsLHU9ZS5yZXNvbHZlLHM9ZS5yZWplY3QsZj1lLmRvbWFpbjt0cnl7Yz8obHx8KHQucmVqZWN0aW9uPT09QSYmKGE9dCxtKGgscCxmdW5jdGlvbigpe3ZhciBlPWEuZmFjYWRlO2Q/Uy5lbWl0KCJyZWplY3Rpb25IYW5kbGVkIixlKTpfKEosZSxhLnZhbHVlKX0pKSx0LnJlamVjdGlvbj1qKSwhMD09PWM/bj1pOihmJiZmLmVudGVyKCksbj1jKGkpLGYmJihmLmV4aXQoKSxvPSEwKSksbj09PWUucHJvbWlzZT9zKG5ldyB4KCJQcm9taXNlLWNoYWluIGN5Y2xlIikpOihyPVAobikpP20ocixuLHUscyk6dShuKSk6cyhpKX1jYXRjaChlKXtmJiYhbyYmZi5leGl0KCkscyhlKX19dmFyIG4sdCxyLEQ9ZSg3KSxVPWUoMTUpLGQ9ZSgzOSkscD1lKDMpLG09ZSg4KSxvPWUoMTkpLGk9ZSg1MiksQj1lKDM4KSxGPWUoMTM2KSxIPWUoMTApLGw9ZSgyKSxWPWUoMTMpLCQ9ZSgxMzgpLFc9ZSg4MyksaD1lKDg0KS5zZXQsYz1lKDE0NCksRz1lKDE0NykscT1lKDIwKSxaPWUoODYpLHU9ZSgzNSkscz1lKDIxKSxmPWUoMjcpLGU9ZSgxNiksZz0iUHJvbWlzZSIsYj1mLkNPTlNUUlVDVE9SLFg9Zi5SRUpFQ1RJT05fRVZFTlQsZj1mLlNVQkNMQVNTSU5HLHk9dS5nZXR0ZXJGb3IoZyksWT11LnNldCx1PXMmJnMucHJvdG90eXBlLHY9cyx3PXUseD1wLlR5cGVFcnJvcixrPXAuZG9jdW1lbnQsUz1wLnByb2Nlc3MsQz1lLmYsUT1DLEs9ISEoayYmay5jcmVhdGVFdmVudCYmcC5kaXNwYXRjaEV2ZW50KSxFPSJ1bmhhbmRsZWRyZWplY3Rpb24iLEo9InJlamVjdGlvbmhhbmRsZWQiLE89MSxlZT0yLGo9MSxBPTIsUD1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4hKCFWKGUpfHwhbCh0PWUudGhlbikpJiZ0fSxJPWZ1bmN0aW9uKG4sbyl7bi5ub3RpZmllZHx8KG4ubm90aWZpZWQ9ITAsYyhmdW5jdGlvbigpe2Zvcih2YXIgZSxyLHQ9bi5yZWFjdGlvbnM7ZT10LmdldCgpOylhKGUsbik7bi5ub3RpZmllZD0hMSxvJiYhbi5yZWplY3Rpb24mJihyPW4sbShoLHAsZnVuY3Rpb24oKXt2YXIgZT1yLmZhY2FkZSx0PXIudmFsdWUsbj16KHIpO2lmKG4mJihuPXEoZnVuY3Rpb24oKXtkP1MuZW1pdCgidW5oYW5kbGVkUmVqZWN0aW9uIix0LGUpOl8oRSxlLHQpfSksci5yZWplY3Rpb249ZHx8eihyKT9BOmosbi5lcnJvcikpdGhyb3cgbi52YWx1ZX0pKX0pKX0sXz1mdW5jdGlvbihlLHQsbil7dmFyIHI7Sz8oKHI9ay5jcmVhdGVFdmVudCgiRXZlbnQiKSkucHJvbWlzZT10LHIucmVhc29uPW4sci5pbml0RXZlbnQoZSwhMSwhMCkscC5kaXNwYXRjaEV2ZW50KHIpKTpyPXtwcm9taXNlOnQscmVhc29uOm59LCFYJiYodD1wWyJvbiIrZV0pP3Qocik6ZT09PUUmJkcoIlVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbiIsbil9LHo9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVqZWN0aW9uIT09aiYmIWUucGFyZW50fSxUPWZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gZnVuY3Rpb24oZSl7dChuLGUscil9fSxMPWZ1bmN0aW9uKGUsdCxuKXtlLmRvbmV8fChlLmRvbmU9ITAsKGU9bj9uOmUpLnZhbHVlPXQsZS5zdGF0ZT1lZSxJKGUsITApKX0sTT1mdW5jdGlvbihuLGUsdCl7aWYoIW4uZG9uZSl7bi5kb25lPSEwLHQmJihuPXQpO3RyeXtpZihuLmZhY2FkZT09PWUpdGhyb3cgbmV3IHgoIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmIik7dmFyIHI9UChlKTtyP2MoZnVuY3Rpb24oKXt2YXIgdD17ZG9uZTohMX07dHJ5e20ocixlLFQoTSx0LG4pLFQoTCx0LG4pKX1jYXRjaChlKXtMKHQsZSxuKX19KToobi52YWx1ZT1lLG4uc3RhdGU9TyxJKG4sITEpKX1jYXRjaChlKXtMKHtkb25lOiExfSxlLG4pfX19O2lmKGImJih3PSh2PWZ1bmN0aW9uKGUpeyQodGhpcyx3KSxIKGUpLG0obix0aGlzKTt2YXIgdD15KHRoaXMpO3RyeXtlKFQoTSx0KSxUKEwsdCkpfWNhdGNoKGUpe0wodCxlKX19KS5wcm90b3R5cGUsKG49ZnVuY3Rpb24oZSl7WSh0aGlzLHt0eXBlOmcsZG9uZTohMSxub3RpZmllZDohMSxwYXJlbnQ6ITEscmVhY3Rpb25zOm5ldyBaLHJlamVjdGlvbjohMSxzdGF0ZTowLHZhbHVlOnZvaWQgMH0pfSkucHJvdG90eXBlPW8odywidGhlbiIsZnVuY3Rpb24oZSx0KXt2YXIgbj15KHRoaXMpLHI9QyhXKHRoaXMsdikpO3JldHVybiBuLnBhcmVudD0hMCxyLm9rPSFsKGUpfHxlLHIuZmFpbD1sKHQpJiZ0LHIuZG9tYWluPWQ/Uy5kb21haW46dm9pZCAwLDA9PT1uLnN0YXRlP24ucmVhY3Rpb25zLmFkZChyKTpjKGZ1bmN0aW9uKCl7YShyLG4pfSksci5wcm9taXNlfSksdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBuLHQ9eShlKTt0aGlzLnByb21pc2U9ZSx0aGlzLnJlc29sdmU9VChNLHQpLHRoaXMucmVqZWN0PVQoTCx0KX0sZS5mPUM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12fHx2b2lkIDA9PT1lP25ldyB0OlEoZSl9LCFVKSYmbChzKSYmdSE9PU9iamVjdC5wcm90b3R5cGUpe3I9dS50aGVuLGZ8fG8odSwidGhlbiIsZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3JldHVybiBuZXcgdihmdW5jdGlvbihlLHQpe20ocixuLGUsdCl9KS50aGVuKGUsdCl9LHt1bnNhZmU6ITB9KTt0cnl7ZGVsZXRlIHUuY29uc3RydWN0b3J9Y2F0Y2goZSl7fWkmJmkodSx3KX1EKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsd3JhcDohMCxmb3JjZWQ6Yn0se1Byb21pc2U6dn0pLEIodixnLCExLCEwKSxGKGcpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNCksbz1uKDEzNyksYT1uKDUpLGk9big5KSxsPWEoInNwZWNpZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZT1yKGUpO2kmJmUmJiFlW2xdJiZvKGUsbCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNzEpLG89bigxNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbi5nZXQmJnIobi5nZXQsdCx7Z2V0dGVyOiEwfSksbi5zZXQmJnIobi5zZXQsdCx7c2V0dGVyOiEwfSksby5mKGUsdCxuKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDMxKSxvPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihyKHQsZSkpcmV0dXJuIGU7dGhyb3cgbmV3IG8oIkluY29ycmVjdCBpbnZvY2F0aW9uIil9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNDApLG89bigzMyksYT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHIoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IGEobyhlKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIil9fSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKGUpe2lmKCFjKGUpKXJldHVybiExO3RyeXtyZXR1cm4gcChyLGQsZSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGEoZSl7aWYoIWMoZSkpcmV0dXJuITE7c3dpdGNoKHUoZSkpe2Nhc2UiQXN5bmNGdW5jdGlvbiI6Y2FzZSJHZW5lcmF0b3JGdW5jdGlvbiI6Y2FzZSJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIjpyZXR1cm4hMX10cnl7cmV0dXJuIGd8fCEhaChtLGYoZSkpfWNhdGNoKGUpe3JldHVybiEwfX12YXIgaT1uKDQpLGw9big2KSxjPW4oMiksdT1uKDM3KSxzPW4oMTQpLGY9big0NiksZD1bXSxwPXMoIlJlZmxlY3QiLCJjb25zdHJ1Y3QiKSxtPS9eXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXGIvLGg9aShtLmV4ZWMpLGc9IW0udGVzdChyKTthLnNoYW09ITAsZS5leHBvcnRzPSFwfHxsKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIG8oby5jYWxsKXx8IW8oT2JqZWN0KXx8IW8oZnVuY3Rpb24oKXtlPSEwfSl8fGV9KT9hOm99LGZ1bmN0aW9uKGUsdCxuKXt2YXIgbj1uKDI4KSxyPUZ1bmN0aW9uLnByb3RvdHlwZSxvPXIuYXBwbHksYT1yLmNhbGw7ZS5leHBvcnRzPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5hcHBseXx8KG4/YS5iaW5kKG8pOmZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkobyxhcmd1bWVudHMpfSl9LGZ1bmN0aW9uKGUsdCxuKXtuPW4oNCk7ZS5leHBvcnRzPW4oW10uc2xpY2UpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGU8dCl0aHJvdyBuZXcgcigiTm90IGVub3VnaCBhcmd1bWVudHMiKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGEsaSxsLGMsdT1uKDMpLHM9big1MyksZj1uKDQxKS5mLGQ9big4NCkuc2V0LHA9big4NiksbT1uKDg1KSxoPW4oMTQ1KSxnPW4oMTQ2KSxiPW4oMzkpLG49dS5NdXRhdGlvbk9ic2VydmVyfHx1LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIseT11LmRvY3VtZW50LHY9dS5wcm9jZXNzLHc9dS5Qcm9taXNlLGY9Zih1LCJxdWV1ZU1pY3JvdGFzayIpLGY9ZiYmZi52YWx1ZTtmfHwoaT1uZXcgcCxsPWZ1bmN0aW9uKCl7dmFyIGUsdDtmb3IoYiYmKGU9di5kb21haW4pJiZlLmV4aXQoKTt0PWkuZ2V0KCk7KXRyeXt0KCl9Y2F0Y2goZSl7dGhyb3cgaS5oZWFkJiZjKCksZX1lJiZlLmVudGVyKCl9LGM9bXx8Ynx8Z3x8IW58fCF5PyFoJiZ3JiZ3LnJlc29sdmU/KChwPXcucmVzb2x2ZSh2b2lkIDApKS5jb25zdHJ1Y3Rvcj13LGE9cyhwLnRoZW4scCksZnVuY3Rpb24oKXthKGwpfSk6Yj9mdW5jdGlvbigpe3YubmV4dFRpY2sobCl9OihkPXMoZCx1KSxmdW5jdGlvbigpe2QobCl9KToocj0hMCxvPXkuY3JlYXRlVGV4dE5vZGUoIiIpLG5ldyBuKGwpLm9ic2VydmUobyx7Y2hhcmFjdGVyRGF0YTohMH0pLGZ1bmN0aW9uKCl7by5kYXRhPXI9IXJ9KSxmPWZ1bmN0aW9uKGUpe2kuaGVhZHx8YygpLGkuYWRkKGUpfSksZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxuKXtuPW4oMzIpO2UuZXhwb3J0cz0vaXBhZHxpcGhvbmV8aXBvZC9pLnRlc3QobikmJiJ1bmRlZmluZWQiIT10eXBlb2YgUGViYmxlfSxmdW5jdGlvbihlLHQsbil7bj1uKDMyKTtlLmV4cG9ydHM9L3dlYjBzKD8hLipjaHJvbWUpL2kudGVzdChuKX0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3RyeXsxPT09YXJndW1lbnRzLmxlbmd0aD9jb25zb2xlLmVycm9yKGUpOmNvbnNvbGUuZXJyb3IoZSx0KX1jYXRjaChlKXt9fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oODcpLG49bigzOSk7ZS5leHBvcnRzPSFyJiYhbiYmIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJiJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnR9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDcpLHM9big4KSxmPW4oMTApLG89bigxNiksYT1uKDIwKSxkPW4oMjUpO3Ioe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6big0MCl9LHthbGw6ZnVuY3Rpb24oZSl7dmFyIGw9dGhpcyx0PW8uZihsKSxjPXQucmVzb2x2ZSx1PXQucmVqZWN0LG49YShmdW5jdGlvbigpe3ZhciByPWYobC5yZXNvbHZlKSxvPVtdLGE9MCxpPTE7ZChlLGZ1bmN0aW9uKGUpe3ZhciB0PWErKyxuPSExO2krKyxzKHIsbCxlKS50aGVuKGZ1bmN0aW9uKGUpe258fChuPSEwLG9bdF09ZSwtLWkpfHxjKG8pfSx1KX0pLC0taXx8YyhvKX0pO3JldHVybiBuLmVycm9yJiZ1KG4udmFsdWUpLHQucHJvbWlzZX19KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBvPW4oNSkoIml0ZXJhdG9yIiksYT0hMTt0cnl7dmFyIHI9MCxpPXtuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ISFyKyt9fSxyZXR1cm46ZnVuY3Rpb24oKXthPSEwfX07aVtvXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBcnJheS5mcm9tKGksZnVuY3Rpb24oKXt0aHJvdyAyfSl9Y2F0Y2goZSl7fWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3RyeXtpZighdCYmIWEpcmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITF9dmFyIG49ITE7dHJ5e3ZhciByPXt9O3Jbb109ZnVuY3Rpb24oKXtyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOm49ITB9fX19LGUocil9Y2F0Y2goZSl7fXJldHVybiBufX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNyksbz1uKDE1KSxhPW4oMjcpLkNPTlNUUlVDVE9SLGk9bigyMSksbD1uKDE0KSxjPW4oMiksbj1uKDE5KSx1PWkmJmkucHJvdG90eXBlO3Ioe3RhcmdldDoiUHJvbWlzZSIscHJvdG86ITAsZm9yY2VkOmEscmVhbDohMH0se2NhdGNoOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLGUpfX0pLCFvJiZjKGkpJiYocj1sKCJQcm9taXNlIikucHJvdG90eXBlLmNhdGNoLHUuY2F0Y2ghPT1yKSYmbih1LCJjYXRjaCIscix7dW5zYWZlOiEwfSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDcpLGE9big4KSxpPW4oMTApLGw9bigxNiksYz1uKDIwKSx1PW4oMjUpO3Ioe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6big0MCl9LHtyYWNlOmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMscj1sLmYobiksbz1yLnJlamVjdCx0PWMoZnVuY3Rpb24oKXt2YXIgdD1pKG4ucmVzb2x2ZSk7dShlLGZ1bmN0aW9uKGUpe2EodCxuLGUpLnRoZW4oci5yZXNvbHZlLG8pfSl9KTtyZXR1cm4gdC5lcnJvciYmbyh0LnZhbHVlKSxyLnByb21pc2V9fSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDcpLG89big4KSxhPW4oMTYpO3Ioe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6bigyNykuQ09OU1RSVUNUT1J9LHtyZWplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9YS5mKHRoaXMpO3JldHVybiBvKHQucmVqZWN0LHZvaWQgMCxlKSx0LnByb21pc2V9fSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDcpLG89bigxNCksYT1uKDE1KSxpPW4oMjEpLGw9bigyNykuQ09OU1RSVUNUT1IsYz1uKDg4KSx1PW8oIlByb21pc2UiKSxzPWEmJiFsO3Ioe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6YXx8bH0se3Jlc29sdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIGMocyYmdGhpcz09PXU/aTp0aGlzLGUpfX0pfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big3KSxvPW4oMTUpLGE9bigyMSksaT1uKDYpLGw9bigxNCksYz1uKDIpLHU9big4Mykscz1uKDg4KSxuPW4oMTkpLGY9YSYmYS5wcm90b3R5cGU7cih7dGFyZ2V0OiJQcm9taXNlIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohIWEmJmkoZnVuY3Rpb24oKXtmLmZpbmFsbHkuY2FsbCh7dGhlbjpmdW5jdGlvbigpe319LGZ1bmN0aW9uKCl7fSl9KX0se2ZpbmFsbHk6ZnVuY3Rpb24odCl7dmFyIG49dSh0aGlzLGwoIlByb21pc2UiKSksZT1jKHQpO3JldHVybiB0aGlzLnRoZW4oZT9mdW5jdGlvbihlKXtyZXR1cm4gcyhuLHQoKSkudGhlbihmdW5jdGlvbigpe3JldHVybiBlfSl9OnQsZT9mdW5jdGlvbihlKXtyZXR1cm4gcyhuLHQoKSkudGhlbihmdW5jdGlvbigpe3Rocm93IGV9KX06dCl9fSksIW8mJmMoYSkmJihyPWwoIlByb21pc2UiKS5wcm90b3R5cGUuZmluYWxseSxmLmZpbmFsbHkhPT1yKSYmbihmLCJmaW5hbGx5IixyLHt1bnNhZmU6ITB9KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTU3KS5jaGFyQXQsbz1uKDU1KSxhPW4oMzUpLGk9big4MCksbD1uKDgyKSxjPSJTdHJpbmcgSXRlcmF0b3IiLHU9YS5zZXQscz1hLmdldHRlckZvcihjKTtpKFN0cmluZywiU3RyaW5nIixmdW5jdGlvbihlKXt1KHRoaXMse3R5cGU6YyxzdHJpbmc6byhlKSxpbmRleDowfSl9LGZ1bmN0aW9uKCl7dmFyIGU9cyh0aGlzKSx0PWUuc3RyaW5nLG49ZS5pbmRleDtyZXR1cm4gbj49dC5sZW5ndGg/bCh2b2lkIDAsITApOih0PXIodCxuKSxlLmluZGV4Kz10Lmxlbmd0aCxsKHQsITEpKX0pfSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihvKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbixlPWkobChlKSksdD1hKHQpLHI9ZS5sZW5ndGg7cmV0dXJuIHQ8MHx8cjw9dD9vPyIiOnZvaWQgMDoobj11KGUsdCkpPDU1Mjk2fHw1NjMxOTxufHx0KzE9PT1yfHwocj11KGUsdCsxKSk8NTYzMjB8fDU3MzQzPHI/bz9jKGUsdCk6bjpvP3MoZSx0LHQrMik6ci01NjMyMCsobi01NTI5Njw8MTApKzY1NTM2fX12YXIgbz1uKDQpLGE9big0OSksaT1uKDU1KSxsPW4oNDIpLGM9bygiIi5jaGFyQXQpLHU9bygiIi5jaGFyQ29kZUF0KSxzPW8oIiIuc2xpY2UpO2UuZXhwb3J0cz17Y29kZUF0OnIoITEpLGNoYXJBdDpyKCEwKX19LGZ1bmN0aW9uKGUsdCxuKXtuPW4oMyk7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKHQsZSl7aWYodCl7aWYodFtmXSE9PWQpdHJ5e3UodCxmLGQpfWNhdGNoKGUpe3RbZl09ZH1pZihzKHQsZSwhMCksaVtlXSlmb3IodmFyIG4gaW4gYylpZih0W25dIT09Y1tuXSl0cnl7dSh0LG4sY1tuXSl9Y2F0Y2goZSl7dFtuXT1jW25dfX19dmFyIG8sYT1uKDMpLGk9bigxNjApLGw9bigxNjEpLGM9big3OSksdT1uKDE4KSxzPW4oMzgpLGY9big1KSgiaXRlcmF0b3IiKSxkPWMudmFsdWVzO2ZvcihvIGluIGkpcihhW29dJiZhW29dLnByb3RvdHlwZSxvKTtyKGwsIkRPTVRva2VuTGlzdCIpfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPXtDU1NSdWxlTGlzdDowLENTU1N0eWxlRGVjbGFyYXRpb246MCxDU1NWYWx1ZUxpc3Q6MCxDbGllbnRSZWN0TGlzdDowLERPTVJlY3RMaXN0OjAsRE9NU3RyaW5nTGlzdDowLERPTVRva2VuTGlzdDoxLERhdGFUcmFuc2Zlckl0ZW1MaXN0OjAsRmlsZUxpc3Q6MCxIVE1MQWxsQ29sbGVjdGlvbjowLEhUTUxDb2xsZWN0aW9uOjAsSFRNTEZvcm1FbGVtZW50OjAsSFRNTFNlbGVjdEVsZW1lbnQ6MCxNZWRpYUxpc3Q6MCxNaW1lVHlwZUFycmF5OjAsTmFtZWROb2RlTWFwOjAsTm9kZUxpc3Q6MSxQYWludFJlcXVlc3RMaXN0OjAsUGx1Z2luOjAsUGx1Z2luQXJyYXk6MCxTVkdMZW5ndGhMaXN0OjAsU1ZHTnVtYmVyTGlzdDowLFNWR1BhdGhTZWdMaXN0OjAsU1ZHUG9pbnRMaXN0OjAsU1ZHU3RyaW5nTGlzdDowLFNWR1RyYW5zZm9ybUxpc3Q6MCxTb3VyY2VCdWZmZXJMaXN0OjAsU3R5bGVTaGVldExpc3Q6MCxUZXh0VHJhY2tDdWVMaXN0OjAsVGV4dFRyYWNrTGlzdDowLFRvdWNoTGlzdDowfX0sZnVuY3Rpb24oZSx0LG4pe249bigzNCkoInNwYW4iKS5jbGFzc0xpc3Qsbj1uJiZuLmNvbnN0cnVjdG9yJiZuLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtlLmV4cG9ydHM9bj09PU9iamVjdC5wcm90b3R5cGU/dm9pZCAwOm59LGZ1bmN0aW9uKGUsdCxuKXtuKDkxKX0sZnVuY3Rpb24oZSx0LG4pe24oNTkpfSxmdW5jdGlvbihlLHQsbil7big4OSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDcpLG89bigxNiksYT1uKDIwKTtyKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOiEwfSx7dHJ5OmZ1bmN0aW9uKGUpe3ZhciB0PW8uZih0aGlzKSxlPWEoZSk7cmV0dXJuKGUuZXJyb3I/dC5yZWplY3Q6dC5yZXNvbHZlKShlLnZhbHVlKSx0LnByb21pc2V9fSl9LGZ1bmN0aW9uKGUsdCxuKXtuKDkwKX0sZnVuY3Rpb24oZSx0LG4peyFmdW5jdGlvbihlKXt2YXIgdCxuLGM9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzfHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fHZvaWQgMCE9PWUmJmV8fHt9LHI9IlVSTFNlYXJjaFBhcmFtcyJpbiBjLG89IlN5bWJvbCJpbiBjJiYiaXRlcmF0b3IiaW4gU3ltYm9sLHU9IkZpbGVSZWFkZXIiaW4gYyYmIkJsb2IiaW4gYyYmZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBCbG9iLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxhPSJGb3JtRGF0YSJpbiBjLHM9IkFycmF5QnVmZmVyImluIGM7ZnVuY3Rpb24gZihlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJihlPVN0cmluZyhlKSksL1teYS16MC05XC0jJCUmJyorLl5fYHx+IV0vaS50ZXN0KGUpfHwiIj09PWUpdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWU6ICInK2UrJyInKTtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGU9InN0cmluZyIhPXR5cGVvZiBlP1N0cmluZyhlKTplfWZ1bmN0aW9uIGkodCl7dmFyIGU9e25leHQ6ZnVuY3Rpb24oKXt2YXIgZT10LnNoaWZ0KCk7cmV0dXJue2RvbmU6dm9pZCAwPT09ZSx2YWx1ZTplfX19O3JldHVybiBvJiYoZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIGV9KSxlfWZ1bmN0aW9uIHAodCl7dGhpcy5tYXA9e30sdCBpbnN0YW5jZW9mIHA/dC5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7dGhpcy5hcHBlbmQodCxlKX0sdGhpcyk6QXJyYXkuaXNBcnJheSh0KT90LmZvckVhY2goZnVuY3Rpb24oZSl7aWYoMiE9ZS5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiSGVhZGVycyBjb25zdHJ1Y3RvcjogZXhwZWN0ZWQgbmFtZS92YWx1ZSBwYWlyIHRvIGJlIGxlbmd0aCAyLCBmb3VuZCIrZS5sZW5ndGgpO3RoaXMuYXBwZW5kKGVbMF0sZVsxXSl9LHRoaXMpOnQmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZvckVhY2goZnVuY3Rpb24oZSl7dGhpcy5hcHBlbmQoZSx0W2VdKX0sdGhpcyl9ZnVuY3Rpb24gbChlKXtpZighZS5fbm9Cb2R5KXJldHVybiBlLmJvZHlVc2VkP1Byb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoIkFscmVhZHkgcmVhZCIpKTp2b2lkKGUuYm9keVVzZWQ9ITApfWZ1bmN0aW9uIG0obil7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7bi5vbmxvYWQ9ZnVuY3Rpb24oKXtlKG4ucmVzdWx0KX0sbi5vbmVycm9yPWZ1bmN0aW9uKCl7dChuLmVycm9yKX19KX1mdW5jdGlvbiBoKGUpe3ZhciB0PW5ldyBGaWxlUmVhZGVyLG49bSh0KTtyZXR1cm4gdC5yZWFkQXNBcnJheUJ1ZmZlcihlKSxufWZ1bmN0aW9uIGcoZSl7dmFyIHQ7cmV0dXJuIGUuc2xpY2U/ZS5zbGljZSgwKTooKHQ9bmV3IFVpbnQ4QXJyYXkoZS5ieXRlTGVuZ3RoKSkuc2V0KG5ldyBVaW50OEFycmF5KGUpKSx0LmJ1ZmZlcil9ZnVuY3Rpb24gYigpe3JldHVybiB0aGlzLmJvZHlVc2VkPSExLHRoaXMuX2luaXRCb2R5PWZ1bmN0aW9uKGUpe3ZhciB0O3RoaXMuYm9keVVzZWQ9dGhpcy5ib2R5VXNlZCwodGhpcy5fYm9keUluaXQ9ZSk/InN0cmluZyI9PXR5cGVvZiBlP3RoaXMuX2JvZHlUZXh0PWU6dSYmQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKT90aGlzLl9ib2R5QmxvYj1lOmEmJkZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpP3RoaXMuX2JvZHlGb3JtRGF0YT1lOnImJlVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKT90aGlzLl9ib2R5VGV4dD1lLnRvU3RyaW5nKCk6cyYmdSYmKHQ9ZSkmJkRhdGFWaWV3LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKHQpPyh0aGlzLl9ib2R5QXJyYXlCdWZmZXI9ZyhlLmJ1ZmZlciksdGhpcy5fYm9keUluaXQ9bmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pKTpzJiYoQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSl8fG4oZSkpP3RoaXMuX2JvZHlBcnJheUJ1ZmZlcj1nKGUpOnRoaXMuX2JvZHlUZXh0PWU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpOih0aGlzLl9ub0JvZHk9ITAsdGhpcy5fYm9keVRleHQ9IiIpLHRoaXMuaGVhZGVycy5nZXQoImNvbnRlbnQtdHlwZSIpfHwoInN0cmluZyI9PXR5cGVvZiBlP3RoaXMuaGVhZGVycy5zZXQoImNvbnRlbnQtdHlwZSIsInRleHQvcGxhaW47Y2hhcnNldD1VVEYtOCIpOnRoaXMuX2JvZHlCbG9iJiZ0aGlzLl9ib2R5QmxvYi50eXBlP3RoaXMuaGVhZGVycy5zZXQoImNvbnRlbnQtdHlwZSIsdGhpcy5fYm9keUJsb2IudHlwZSk6ciYmVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpJiZ0aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCIpKX0sdSYmKHRoaXMuYmxvYj1mdW5jdGlvbigpe3ZhciBlPWwodGhpcyk7aWYoZSlyZXR1cm4gZTtpZih0aGlzLl9ib2R5QmxvYilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKTtpZih0aGlzLl9ib2R5QXJyYXlCdWZmZXIpcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpO2lmKHRoaXMuX2JvZHlGb3JtRGF0YSl0aHJvdyBuZXcgRXJyb3IoImNvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxvYiIpO3JldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpfSksdGhpcy5hcnJheUJ1ZmZlcj1mdW5jdGlvbigpe2lmKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilyZXR1cm4gbCh0aGlzKXx8KEFycmF5QnVmZmVyLmlzVmlldyh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpP1Byb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnVmZmVyLnNsaWNlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0LHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0K3RoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKSk6UHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpO2lmKHUpcmV0dXJuIHRoaXMuYmxvYigpLnRoZW4oaCk7dGhyb3cgbmV3IEVycm9yKCJjb3VsZCBub3QgcmVhZCBhcyBBcnJheUJ1ZmZlciIpfSx0aGlzLnRleHQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scj1sKHRoaXMpO2lmKHIpcmV0dXJuIHI7aWYodGhpcy5fYm9keUJsb2IpcmV0dXJuIHI9dGhpcy5fYm9keUJsb2IsZT1uZXcgRmlsZVJlYWRlcix0PW0oZSksbj0obj0vY2hhcnNldD0oW0EtWmEtejAtOV8tXSspLy5leGVjKHIudHlwZSkpP25bMV06InV0Zi04IixlLnJlYWRBc1RleHQocixuKSx0O2lmKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uZXcgVWludDhBcnJheShlKSxuPW5ldyBBcnJheSh0Lmxlbmd0aCkscj0wO3I8dC5sZW5ndGg7cisrKW5bcl09U3RyaW5nLmZyb21DaGFyQ29kZSh0W3JdKTtyZXR1cm4gbi5qb2luKCIiKX0odGhpcy5fYm9keUFycmF5QnVmZmVyKSk7aWYodGhpcy5fYm9keUZvcm1EYXRhKXRocm93IG5ldyBFcnJvcigiY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0Iik7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dCl9LGEmJih0aGlzLmZvcm1EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dCgpLnRoZW4odyl9KSx0aGlzLmpzb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKX0sdGhpc31zJiYodD1bIltvYmplY3QgSW50OEFycmF5XSIsIltvYmplY3QgVWludDhBcnJheV0iLCJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSIsIltvYmplY3QgSW50MTZBcnJheV0iLCJbb2JqZWN0IFVpbnQxNkFycmF5XSIsIltvYmplY3QgSW50MzJBcnJheV0iLCJbb2JqZWN0IFVpbnQzMkFycmF5XSIsIltvYmplY3QgRmxvYXQzMkFycmF5XSIsIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdLG49QXJyYXlCdWZmZXIuaXNWaWV3fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmLTE8dC5pbmRleE9mKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSl9KSxwLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24oZSx0KXtlPWYoZSksdD1kKHQpO3ZhciBuPXRoaXMubWFwW2VdO3RoaXMubWFwW2VdPW4/bisiLCAiK3Q6dH0scC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLm1hcFtmKGUpXX0scC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBlPWYoZSksdGhpcy5oYXMoZSk/dGhpcy5tYXBbZV06bnVsbH0scC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShmKGUpKX0scC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dGhpcy5tYXBbZihlKV09ZCh0KX0scC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0aGlzLm1hcCl0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuKSYmZS5jYWxsKHQsdGhpcy5tYXBbbl0sbix0aGlzKX0scC5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3ZhciBuPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24oZSx0KXtuLnB1c2godCl9KSxpKG4pfSxwLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QucHVzaChlKX0pLGkodCl9LHAucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7bi5wdXNoKFt0LGVdKX0pLGkobil9LG8mJihwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPXAucHJvdG90eXBlLmVudHJpZXMpO3ZhciB5PVsiQ09OTkVDVCIsIkRFTEVURSIsIkdFVCIsIkhFQUQiLCJPUFRJT05TIiwiUEFUQ0giLCJQT1NUIiwiUFVUIiwiVFJBQ0UiXTtmdW5jdGlvbiB2KGUsdCl7aWYoISh0aGlzIGluc3RhbmNlb2YgdikpdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgIm5ldyIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJyk7dmFyIG4scj0odD10fHx7fSkuYm9keTtpZihlIGluc3RhbmNlb2Ygdil7aWYoZS5ib2R5VXNlZCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBbHJlYWR5IHJlYWQiKTt0aGlzLnVybD1lLnVybCx0aGlzLmNyZWRlbnRpYWxzPWUuY3JlZGVudGlhbHMsdC5oZWFkZXJzfHwodGhpcy5oZWFkZXJzPW5ldyBwKGUuaGVhZGVycykpLHRoaXMubWV0aG9kPWUubWV0aG9kLHRoaXMubW9kZT1lLm1vZGUsdGhpcy5zaWduYWw9ZS5zaWduYWwscnx8bnVsbD09ZS5fYm9keUluaXR8fChyPWUuX2JvZHlJbml0LGUuYm9keVVzZWQ9ITApfWVsc2UgdGhpcy51cmw9U3RyaW5nKGUpO2lmKHRoaXMuY3JlZGVudGlhbHM9dC5jcmVkZW50aWFsc3x8dGhpcy5jcmVkZW50aWFsc3x8InNhbWUtb3JpZ2luIiwhdC5oZWFkZXJzJiZ0aGlzLmhlYWRlcnN8fCh0aGlzLmhlYWRlcnM9bmV3IHAodC5oZWFkZXJzKSksdGhpcy5tZXRob2Q9KGU9dC5tZXRob2R8fHRoaXMubWV0aG9kfHwiR0VUIixuPWUudG9VcHBlckNhc2UoKSwtMTx5LmluZGV4T2Yobik/bjplKSx0aGlzLm1vZGU9dC5tb2RlfHx0aGlzLm1vZGV8fG51bGwsdGhpcy5zaWduYWw9dC5zaWduYWx8fHRoaXMuc2lnbmFsfHxmdW5jdGlvbigpe2lmKCJBYm9ydENvbnRyb2xsZXIiaW4gYylyZXR1cm4obmV3IEFib3J0Q29udHJvbGxlcikuc2lnbmFsfSgpLHRoaXMucmVmZXJyZXI9bnVsbCwoIkdFVCI9PT10aGlzLm1ldGhvZHx8IkhFQUQiPT09dGhpcy5tZXRob2QpJiZyKXRocm93IG5ldyBUeXBlRXJyb3IoIkJvZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBIRUFEIHJlcXVlc3RzIik7dGhpcy5faW5pdEJvZHkociksIkdFVCIhPT10aGlzLm1ldGhvZCYmIkhFQUQiIT09dGhpcy5tZXRob2R8fCJuby1zdG9yZSIhPT10LmNhY2hlJiYibm8tY2FjaGUiIT09dC5jYWNoZXx8KChuPS8oWz8mXSlfPVteJl0qLykudGVzdCh0aGlzLnVybCk/dGhpcy51cmw9dGhpcy51cmwucmVwbGFjZShuLCIkMV89IisobmV3IERhdGUpLmdldFRpbWUoKSk6dGhpcy51cmwrPSgvXD8vLnRlc3QodGhpcy51cmwpPyImIjoiPyIpKyJfPSIrKG5ldyBEYXRlKS5nZXRUaW1lKCkpfWZ1bmN0aW9uIHcoZSl7dmFyIG49bmV3IEZvcm1EYXRhO3JldHVybiBlLnRyaW0oKS5zcGxpdCgiJiIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ7ZSYmKHQ9KGU9ZS5zcGxpdCgiPSIpKS5zaGlmdCgpLnJlcGxhY2UoL1wrL2csIiAiKSxlPWUuam9pbigiPSIpLnJlcGxhY2UoL1wrL2csIiAiKSxuLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQodCksZGVjb2RlVVJJQ29tcG9uZW50KGUpKSl9KSxufWZ1bmN0aW9uIHgoZSx0KXtpZighKHRoaXMgaW5zdGFuY2VvZiB4KSl0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSAibmV3IiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKTtpZih0PXR8fHt9LHRoaXMudHlwZT0iZGVmYXVsdCIsdGhpcy5zdGF0dXM9dm9pZCAwPT09dC5zdGF0dXM/MjAwOnQuc3RhdHVzLHRoaXMuc3RhdHVzPDIwMHx8NTk5PHRoaXMuc3RhdHVzKXRocm93IG5ldyBSYW5nZUVycm9yKCJGYWlsZWQgdG8gY29uc3RydWN0ICdSZXNwb25zZSc6IFRoZSBzdGF0dXMgcHJvdmlkZWQgKDApIGlzIG91dHNpZGUgdGhlIHJhbmdlIFsyMDAsIDU5OV0uIik7dGhpcy5vaz0yMDA8PXRoaXMuc3RhdHVzJiZ0aGlzLnN0YXR1czwzMDAsdGhpcy5zdGF0dXNUZXh0PXZvaWQgMD09PXQuc3RhdHVzVGV4dD8iIjoiIit0LnN0YXR1c1RleHQsdGhpcy5oZWFkZXJzPW5ldyBwKHQuaGVhZGVycyksdGhpcy51cmw9dC51cmx8fCIiLHRoaXMuX2luaXRCb2R5KGUpfXYucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB2KHRoaXMse2JvZHk6dGhpcy5fYm9keUluaXR9KX0sYi5jYWxsKHYucHJvdG90eXBlKSxiLmNhbGwoeC5wcm90b3R5cGUpLHgucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB4KHRoaXMuX2JvZHlJbml0LHtzdGF0dXM6dGhpcy5zdGF0dXMsc3RhdHVzVGV4dDp0aGlzLnN0YXR1c1RleHQsaGVhZGVyczpuZXcgcCh0aGlzLmhlYWRlcnMpLHVybDp0aGlzLnVybH0pfSx4LmVycm9yPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHgobnVsbCx7c3RhdHVzOjIwMCxzdGF0dXNUZXh0OiIifSk7cmV0dXJuIGUuc3RhdHVzPTAsZS50eXBlPSJlcnJvciIsZX07dmFyIGs9WzMwMSwzMDIsMzAzLDMwNywzMDhdLFM9KHgucmVkaXJlY3Q9ZnVuY3Rpb24oZSx0KXtpZigtMT09PWsuaW5kZXhPZih0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBzdGF0dXMgY29kZSIpO3JldHVybiBuZXcgeChudWxsLHtzdGF0dXM6dCxoZWFkZXJzOntsb2NhdGlvbjplfX0pfSxjLkRPTUV4Y2VwdGlvbik7dHJ5e25ldyBTfWNhdGNoKGUpeyhTPWZ1bmN0aW9uKGUsdCl7dGhpcy5tZXNzYWdlPWUsdGhpcy5uYW1lPXQ7dD1FcnJvcihlKTt0aGlzLnN0YWNrPXQuc3RhY2t9KS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLFMucHJvdG90eXBlLmNvbnN0cnVjdG9yPVN9ZnVuY3Rpb24gQyhyLGwpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihvLGUpe3ZhciBhPW5ldyB2KHIsbCk7aWYoYS5zaWduYWwmJmEuc2lnbmFsLmFib3J0ZWQpcmV0dXJuIGUobmV3IFMoIkFib3J0ZWQiLCJBYm9ydEVycm9yIikpO3ZhciBuLGk9bmV3IFhNTEh0dHBSZXF1ZXN0O2Z1bmN0aW9uIHQoKXtpLmFib3J0KCl9aS5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZSxuLHQ9e3N0YXR1c1RleHQ6aS5zdGF0dXNUZXh0LGhlYWRlcnM6KGU9aS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKXx8IiIsbj1uZXcgcCxlLnJlcGxhY2UoL1xyP1xuW1x0IF0rL2csIiAiKS5zcGxpdCgiXHIiKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLmluZGV4T2YoIlxuIik/ZS5zdWJzdHIoMSxlLmxlbmd0aCk6ZX0pLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIGU9ZS5zcGxpdCgiOiIpLHQ9ZS5zaGlmdCgpLnRyaW0oKTtpZih0KXtlPWUuam9pbigiOiIpLnRyaW0oKTt0cnl7bi5hcHBlbmQodCxlKX1jYXRjaChlKXtjb25zb2xlLndhcm4oIlJlc3BvbnNlICIrZS5tZXNzYWdlKX19fSksbil9LHI9KGEudXJsLnN0YXJ0c1dpdGgoImZpbGU6Ly8iKSYmKGkuc3RhdHVzPDIwMHx8NTk5PGkuc3RhdHVzKT90LnN0YXR1cz0yMDA6dC5zdGF0dXM9aS5zdGF0dXMsdC51cmw9InJlc3BvbnNlVVJMImluIGk/aS5yZXNwb25zZVVSTDp0LmhlYWRlcnMuZ2V0KCJYLVJlcXVlc3QtVVJMIiksInJlc3BvbnNlImluIGk/aS5yZXNwb25zZTppLnJlc3BvbnNlVGV4dCk7c2V0VGltZW91dChmdW5jdGlvbigpe28obmV3IHgocix0KSl9LDApfSxpLm9uZXJyb3I9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZShuZXcgVHlwZUVycm9yKCJOZXR3b3JrIHJlcXVlc3QgZmFpbGVkIikpfSwwKX0saS5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZShuZXcgVHlwZUVycm9yKCJOZXR3b3JrIHJlcXVlc3QgdGltZWQgb3V0IikpfSwwKX0saS5vbmFib3J0PWZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2UobmV3IFMoIkFib3J0ZWQiLCJBYm9ydEVycm9yIikpfSwwKX0saS5vcGVuKGEubWV0aG9kLGZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4iIj09PXQmJmMubG9jYXRpb24uaHJlZj9jLmxvY2F0aW9uLmhyZWY6dH1jYXRjaChlKXtyZXR1cm4gdH19KGEudXJsKSwhMCksImluY2x1ZGUiPT09YS5jcmVkZW50aWFscz9pLndpdGhDcmVkZW50aWFscz0hMDoib21pdCI9PT1hLmNyZWRlbnRpYWxzJiYoaS53aXRoQ3JlZGVudGlhbHM9ITEpLCJyZXNwb25zZVR5cGUiaW4gaSYmKHU/aS5yZXNwb25zZVR5cGU9ImJsb2IiOnMmJihpLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiKSksbCYmIm9iamVjdCI9PXR5cGVvZiBsLmhlYWRlcnMmJiEobC5oZWFkZXJzIGluc3RhbmNlb2YgcHx8Yy5IZWFkZXJzJiZsLmhlYWRlcnMgaW5zdGFuY2VvZiBjLkhlYWRlcnMpPyhuPVtdLE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGwuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihlKXtuLnB1c2goZihlKSksaS5zZXRSZXF1ZXN0SGVhZGVyKGUsZChsLmhlYWRlcnNbZV0pKX0pLGEuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7LTE9PT1uLmluZGV4T2YodCkmJmkuc2V0UmVxdWVzdEhlYWRlcih0LGUpfSkpOmEuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7aS5zZXRSZXF1ZXN0SGVhZGVyKHQsZSl9KSxhLnNpZ25hbCYmKGEuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0Iix0KSxpLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQ9PT1pLnJlYWR5U3RhdGUmJmEuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0Iix0KX0pLGkuc2VuZCh2b2lkIDA9PT1hLl9ib2R5SW5pdD9udWxsOmEuX2JvZHlJbml0KX0pfUMucG9seWZpbGw9ITAsYy5mZXRjaHx8KGMuZmV0Y2g9QyxjLkhlYWRlcnM9cCxjLlJlcXVlc3Q9dixjLlJlc3BvbnNlPXgpfS5jYWxsKHRoaXMsbigyMikpfSxmdW5jdGlvbihlLHQsbil7dmFyIGY9U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpLGQ9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIikscj1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLG89U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSxhPVN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksaT1TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpLGw9U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLGM9U3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSx1PVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIikscz1TeW1ib2wuZm9yKCJyZWFjdC5tZW1vIikscD1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5IiksbT1TeW1ib2wuaXRlcmF0b3I7dmFyIGg9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LGc9T2JqZWN0LmFzc2lnbixiPXt9O2Z1bmN0aW9uIHkoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9Yix0aGlzLnVwZGF0ZXI9bnx8aH1mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIHcoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9Yix0aGlzLnVwZGF0ZXI9bnx8aH15LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LHkucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9ZSl0aHJvdyBFcnJvcigic2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUsdCwic2V0U3RhdGUiKX0seS5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGUsImZvcmNlVXBkYXRlIil9LHYucHJvdG90eXBlPXkucHJvdG90eXBlO3ZhciB4PXcucHJvdG90eXBlPW5ldyB2LGs9KHguY29uc3RydWN0b3I9dyxnKHgseS5wcm90b3R5cGUpLHguaXNQdXJlUmVhY3RDb21wb25lbnQ9ITAsQXJyYXkuaXNBcnJheSksUz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEM9e2N1cnJlbnQ6bnVsbH0sRT17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIE8oZSx0LG4pe3ZhciByLG89e30sYT1udWxsLGk9bnVsbDtpZihudWxsIT10KWZvcihyIGluIHZvaWQgMCE9PXQucmVmJiYoaT10LnJlZiksdm9pZCAwIT09dC5rZXkmJihhPSIiK3Qua2V5KSx0KVMuY2FsbCh0LHIpJiYhRS5oYXNPd25Qcm9wZXJ0eShyKSYmKG9bcl09dFtyXSk7dmFyIGw9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1sKW8uY2hpbGRyZW49bjtlbHNlIGlmKDE8bCl7Zm9yKHZhciBjPUFycmF5KGwpLHU9MDt1PGw7dSsrKWNbdV09YXJndW1lbnRzW3UrMl07by5jaGlsZHJlbj1jfWlmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihyIGluIGw9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09b1tyXSYmKG9bcl09bFtyXSk7cmV0dXJueyQkdHlwZW9mOmYsdHlwZTplLGtleTphLHJlZjppLHByb3BzOm8sX293bmVyOkMuY3VycmVudH19ZnVuY3Rpb24gaihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09Zn12YXIgQT0vXC8rL2c7ZnVuY3Rpb24gUChlLHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJm51bGwhPWUua2V5PyhlPSIiK2Uua2V5LG49eyI9IjoiPTAiLCI6IjoiPTIifSwiJCIrZS5yZXBsYWNlKC9bPTpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KSk6dC50b1N0cmluZygzNik7dmFyIG59ZnVuY3Rpb24gSShlLHQsbixyLG8pe3ZhciBhLGksbD0hMTtpZihudWxsPT09KGU9InVuZGVmaW5lZCIhPT0odT10eXBlb2YgZSkmJiJib29sZWFuIiE9PXU/ZTpudWxsKSlsPSEwO2Vsc2Ugc3dpdGNoKHUpe2Nhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6bD0hMDticmVhaztjYXNlIm9iamVjdCI6c3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgZjpjYXNlIGQ6bD0hMH19aWYobClyZXR1cm4gbz1vKGw9ZSksZT0iIj09PXI/Ii4iK1AobCwwKTpyLGsobyk/KG49IiIsSShvLHQsbj1udWxsIT1lP2UucmVwbGFjZShBLCIkJi8iKSsiLyI6biwiIixmdW5jdGlvbihlKXtyZXR1cm4gZX0pKTpudWxsIT1vJiYoaihvKSYmKGk9bisoIShhPW8pLmtleXx8bCYmbC5rZXk9PT1vLmtleT8iIjooIiIrby5rZXkpLnJlcGxhY2UoQSwiJCYvIikrIi8iKStlLG89eyQkdHlwZW9mOmYsdHlwZTphLnR5cGUsa2V5OmkscmVmOmEucmVmLHByb3BzOmEucHJvcHMsX293bmVyOmEuX293bmVyfSksdC5wdXNoKG8pKSwxO2lmKGw9MCxyPSIiPT09cj8iLiI6cisiOiIsayhlKSlmb3IodmFyIGM9MDtjPGUubGVuZ3RoO2MrKyl7dmFyIHUscz1yK1AodT1lW2NdLGMpO2wrPUkodSx0LG4scyxvKX1lbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZihzPW51bGwhPT0oaT1lKSYmIm9iamVjdCI9PXR5cGVvZiBpJiYiZnVuY3Rpb24iPT10eXBlb2YoaT1tJiZpW21dfHxpWyJAQGl0ZXJhdG9yIl0pP2k6bnVsbCkpZm9yKGU9cy5jYWxsKGUpLGM9MDshKHU9ZS5uZXh0KCkpLmRvbmU7KWwrPUkodT11LnZhbHVlLHQsbixzPXIrUCh1LGMrKyksbyk7ZWxzZSBpZigib2JqZWN0Ij09PXUpdGhyb3cgdD1TdHJpbmcoZSksRXJyb3IoIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogIisoIltvYmplY3QgT2JqZWN0XSI9PT10PyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOnQpKyIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuIik7cmV0dXJuIGx9ZnVuY3Rpb24gXyhlLHQsbil7dmFyIHI7cmV0dXJuIG51bGw9PWV8fChyPTAsSShlLGU9W10sIiIsIiIsZnVuY3Rpb24oZSl7cmV0dXJuIHQuY2FsbChuLGUscisrKX0pKSxlfWZ1bmN0aW9uIHoodCl7dmFyIGU7aWYoLTE9PT10Ll9zdGF0dXMmJigoZT0oZT10Ll9yZXN1bHQpKCkpLnRoZW4oZnVuY3Rpb24oZSl7MCE9PXQuX3N0YXR1cyYmLTEhPT10Ll9zdGF0dXN8fCh0Ll9zdGF0dXM9MSx0Ll9yZXN1bHQ9ZSl9LGZ1bmN0aW9uKGUpezAhPT10Ll9zdGF0dXMmJi0xIT09dC5fc3RhdHVzfHwodC5fc3RhdHVzPTIsdC5fcmVzdWx0PWUpfSksLTE9PT10Ll9zdGF0dXMpJiYodC5fc3RhdHVzPTAsdC5fcmVzdWx0PWUpLDE9PT10Ll9zdGF0dXMpcmV0dXJuIHQuX3Jlc3VsdC5kZWZhdWx0O3Rocm93IHQuX3Jlc3VsdH12YXIgVD17Y3VycmVudDpudWxsfSxMPXt0cmFuc2l0aW9uOm51bGx9LHg9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6VCxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzpMLFJlYWN0Q3VycmVudE93bmVyOkN9O3QuQ2hpbGRyZW49e21hcDpfLGZvckVhY2g6ZnVuY3Rpb24oZSx0LG4pe18oZSxmdW5jdGlvbigpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxuKX0sY291bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9MDtyZXR1cm4gXyhlLGZ1bmN0aW9uKCl7dCsrfSksdH0sdG9BcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gXyhlLGZ1bmN0aW9uKGUpe3JldHVybiBlfSl8fFtdfSxvbmx5OmZ1bmN0aW9uKGUpe2lmKGooZSkpcmV0dXJuIGU7dGhyb3cgRXJyb3IoIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLiIpfX0sdC5Db21wb25lbnQ9eSx0LkZyYWdtZW50PXIsdC5Qcm9maWxlcj1hLHQuUHVyZUNvbXBvbmVudD13LHQuU3RyaWN0TW9kZT1vLHQuU3VzcGVuc2U9dSx0Ll9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPXgsdC5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe2lmKG51bGw9PWUpdGhyb3cgRXJyb3IoIlJlYWN0LmNsb25lRWxlbWVudCguLi4pOiBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQsIGJ1dCB5b3UgcGFzc2VkICIrZSsiLiIpO3ZhciByPWcoe30sZS5wcm9wcyksbz1lLmtleSxhPWUucmVmLGk9ZS5fb3duZXI7aWYobnVsbCE9dClmb3IobCBpbiB2b2lkIDAhPT10LnJlZiYmKGE9dC5yZWYsaT1DLmN1cnJlbnQpLHZvaWQgMCE9PXQua2V5JiYobz0iIit0LmtleSksZS50eXBlJiZlLnR5cGUuZGVmYXVsdFByb3BzJiYoYz1lLnR5cGUuZGVmYXVsdFByb3BzKSx0KVMuY2FsbCh0LGwpJiYhRS5oYXNPd25Qcm9wZXJ0eShsKSYmKHJbbF09KHZvaWQgMD09PXRbbF0mJnZvaWQgMCE9PWM/Yzp0KVtsXSk7dmFyIGw9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1sKXIuY2hpbGRyZW49bjtlbHNlIGlmKDE8bCl7Zm9yKHZhciBjPUFycmF5KGwpLHU9MDt1PGw7dSsrKWNbdV09YXJndW1lbnRzW3UrMl07ci5jaGlsZHJlbj1jfXJldHVybnskJHR5cGVvZjpmLHR5cGU6ZS50eXBlLGtleTpvLHJlZjphLHByb3BzOnIsX293bmVyOml9fSx0LmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9eyQkdHlwZW9mOmwsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsLF9kZWZhdWx0VmFsdWU6bnVsbCxfZ2xvYmFsTmFtZTpudWxsfSkuUHJvdmlkZXI9eyQkdHlwZW9mOmksX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSx0LmNyZWF0ZUVsZW1lbnQ9Tyx0LmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9Ty5iaW5kKG51bGwsZSk7cmV0dXJuIHQudHlwZT1lLHR9LHQuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19LHQuZm9yd2FyZFJlZj1mdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6YyxyZW5kZXI6ZX19LHQuaXNWYWxpZEVsZW1lbnQ9aix0Lmxhenk9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOnAsX3BheWxvYWQ6e19zdGF0dXM6LTEsX3Jlc3VsdDplfSxfaW5pdDp6fX0sdC5tZW1vPWZ1bmN0aW9uKGUsdCl7cmV0dXJueyQkdHlwZW9mOnMsdHlwZTplLGNvbXBhcmU6dm9pZCAwPT09dD9udWxsOnR9fSx0LnN0YXJ0VHJhbnNpdGlvbj1mdW5jdGlvbihlKXt2YXIgdD1MLnRyYW5zaXRpb247TC50cmFuc2l0aW9uPXt9O3RyeXtlKCl9ZmluYWxseXtMLnRyYW5zaXRpb249dH19LHQudW5zdGFibGVfYWN0PWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoImFjdCguLi4pIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuIil9LHQudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVC5jdXJyZW50LnVzZUNhbGxiYWNrKGUsdCl9LHQudXNlQ29udGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gVC5jdXJyZW50LnVzZUNvbnRleHQoZSl9LHQudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe30sdC51c2VEZWZlcnJlZFZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBULmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShlKX0sdC51c2VFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVC5jdXJyZW50LnVzZUVmZmVjdChlLHQpfSx0LnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIFQuY3VycmVudC51c2VJZCgpfSx0LnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBULmN1cnJlbnQudXNlSW1wZXJhdGl2ZUhhbmRsZShlLHQsbil9LHQudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFQuY3VycmVudC51c2VJbnNlcnRpb25FZmZlY3QoZSx0KX0sdC51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVC5jdXJyZW50LnVzZUxheW91dEVmZmVjdChlLHQpfSx0LnVzZU1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVC5jdXJyZW50LnVzZU1lbW8oZSx0KX0sdC51c2VSZWR1Y2VyPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVC5jdXJyZW50LnVzZVJlZHVjZXIoZSx0LG4pfSx0LnVzZVJlZj1mdW5jdGlvbihlKXtyZXR1cm4gVC5jdXJyZW50LnVzZVJlZihlKX0sdC51c2VTdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gVC5jdXJyZW50LnVzZVN0YXRlKGUpfSx0LnVzZVN5bmNFeHRlcm5hbFN0b3JlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVC5jdXJyZW50LnVzZVN5bmNFeHRlcm5hbFN0b3JlKGUsdCxuKX0sdC51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIFQuY3VycmVudC51c2VUcmFuc2l0aW9uKCl9LHQudmVyc2lvbj0iMTguMi4wIn0sZnVuY3Rpb24oZSx0LG4peyFmdW5jdGlvbiBlKCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18mJiJmdW5jdGlvbiI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UpdHJ5e19fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShlKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfX0oKSxlLmV4cG9ydHM9bigxNzApfSxmdW5jdGlvbihhLGMsUil7dmFyIE49UigwKSxCPVIoMTcxKTtmdW5jdGlvbiBEKGUpe2Zvcih2YXIgdD0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXQrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuXSk7cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgIit0KyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9dmFyIEY9bmV3IFNldCxIPXt9O2Z1bmN0aW9uIFYoZSx0KXskKGUsdCksJChlKyJDYXB0dXJlIix0KX1mdW5jdGlvbiAkKGUsdCl7Zm9yKEhbZV09dCxlPTA7ZTx0Lmxlbmd0aDtlKyspRi5hZGQodFtlXSl9dmFyIFI9ISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8dm9pZCAwPT09d2luZG93LmRvY3VtZW50fHx2b2lkIDA9PT13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksVz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEc9L15bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRF1bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRFwtLjAtOVx1MDBCN1x1MDMwMC1cdTAzNkZcdTIwM0YtXHUyMDQwXSokLyxxPXt9LFo9e307ZnVuY3Rpb24gWChlLHQsbixyKXtpZihudWxsPT10fHxmdW5jdGlvbihlLHQsbixyKXtpZihudWxsPT09bnx8MCE9PW4udHlwZSlzd2l0Y2godHlwZW9mIHQpe2Nhc2UiZnVuY3Rpb24iOmNhc2Uic3ltYm9sIjpyZXR1cm4gMTtjYXNlImJvb2xlYW4iOnJldHVybiByP3ZvaWQgMDpudWxsIT09bj8hbi5hY2NlcHRzQm9vbGVhbnM6ImRhdGEtIiE9PShlPWUudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpKSYmImFyaWEtIiE9PWU7ZGVmYXVsdDpyZXR1cm59fShlLHQsbixyKSlyZXR1cm4gMTtpZighciYmbnVsbCE9PW4pc3dpdGNoKG4udHlwZSl7Y2FzZSAzOnJldHVybiF0O2Nhc2UgNDpyZXR1cm4hMT09PXQ7Y2FzZSA1OnJldHVybiBpc05hTih0KTtjYXNlIDY6cmV0dXJuIGlzTmFOKHQpfHx0PDF9fWZ1bmN0aW9uIG4oZSx0LG4scixvLGEsaSl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PXR8fDM9PT10fHw0PT09dCx0aGlzLmF0dHJpYnV0ZU5hbWU9cix0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1vLHRoaXMubXVzdFVzZVByb3BlcnR5PW4sdGhpcy5wcm9wZXJ0eU5hbWU9ZSx0aGlzLnR5cGU9dCx0aGlzLnNhbml0aXplVVJMPWEsdGhpcy5yZW1vdmVFbXB0eVN0cmluZz1pfXZhciBpPXt9LFk9KCJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtpW2VdPW5ldyBuKGUsMCwhMSxlLG51bGwsITEsITEpfSksW1siYWNjZXB0Q2hhcnNldCIsImFjY2VwdC1jaGFyc2V0Il0sWyJjbGFzc05hbWUiLCJjbGFzcyJdLFsiaHRtbEZvciIsImZvciJdLFsiaHR0cEVxdWl2IiwiaHR0cC1lcXVpdiJdXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF07aVt0XT1uZXcgbih0LDEsITEsZVsxXSxudWxsLCExLCExKX0pLFsiY29udGVudEVkaXRhYmxlIiwiZHJhZ2dhYmxlIiwic3BlbGxDaGVjayIsInZhbHVlIl0uZm9yRWFjaChmdW5jdGlvbihlKXtpW2VdPW5ldyBuKGUsMiwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KSxbImF1dG9SZXZlcnNlIiwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsImZvY3VzYWJsZSIsInByZXNlcnZlQWxwaGEiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lbZV09bmV3IG4oZSwyLCExLGUsbnVsbCwhMSwhMSl9KSwiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGRpc2FibGVSZW1vdGVQbGF5YmFjayBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZSIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lbZV09bmV3IG4oZSwzLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLFsiY2hlY2tlZCIsIm11bHRpcGxlIiwibXV0ZWQiLCJzZWxlY3RlZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7aVtlXT1uZXcgbihlLDMsITAsZSxudWxsLCExLCExKX0pLFsiY2FwdHVyZSIsImRvd25sb2FkIl0uZm9yRWFjaChmdW5jdGlvbihlKXtpW2VdPW5ldyBuKGUsNCwhMSxlLG51bGwsITEsITEpfSksWyJjb2xzIiwicm93cyIsInNpemUiLCJzcGFuIl0uZm9yRWFjaChmdW5jdGlvbihlKXtpW2VdPW5ldyBuKGUsNiwhMSxlLG51bGwsITEsITEpfSksWyJyb3dTcGFuIiwic3RhcnQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lbZV09bmV3IG4oZSw1LCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLC9bXC06XShbYS16XSkvZyk7ZnVuY3Rpb24gUShlKXtyZXR1cm4gZVsxXS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIEsoZSx0LG4scil7dmFyIG8sYT1pLmhhc093blByb3BlcnR5KHQpP2lbdF06bnVsbDsobnVsbCE9PWE/MCE9PWEudHlwZTpyfHwhKDI8dC5sZW5ndGgpfHwibyIhPT10WzBdJiYiTyIhPT10WzBdfHwibiIhPT10WzFdJiYiTiIhPT10WzFdKSYmKFgodCxuLGEscikmJihuPW51bGwpLHJ8fG51bGw9PT1hPyhvPXQsKFcuY2FsbChaLG8pfHwhVy5jYWxsKHEsbykmJihHLnRlc3Qobyk/WltvXT0hMDp2b2lkKHFbb109ITApKSkmJihudWxsPT09bj9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LCIiK24pKSk6YS5tdXN0VXNlUHJvcGVydHk/ZVthLnByb3BlcnR5TmFtZV09bnVsbD09PW4/MyE9PWEudHlwZSYmIiI6bjoodD1hLmF0dHJpYnV0ZU5hbWUscj1hLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09bj9lLnJlbW92ZUF0dHJpYnV0ZSh0KToobj0zPT09KGE9YS50eXBlKXx8ND09PWEmJiEwPT09bj8iIjoiIituLHI/ZS5zZXRBdHRyaWJ1dGVOUyhyLHQsbik6ZS5zZXRBdHRyaWJ1dGUodCxuKSkpKX0iYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoWSxRKTtpW3RdPW5ldyBuKHQsMSwhMSxlLG51bGwsITEsITEpfSksInhsaW5rOmFjdHVhdGUgeGxpbms6YXJjcm9sZSB4bGluazpyb2xlIHhsaW5rOnNob3cgeGxpbms6dGl0bGUgeGxpbms6dHlwZSIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShZLFEpO2lbdF09bmV3IG4odCwxLCExLGUsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCExLCExKX0pLFsieG1sOmJhc2UiLCJ4bWw6bGFuZyIsInhtbDpzcGFjZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKFksUSk7aVt0XT1uZXcgbih0LDEsITEsZSwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwhMSwhMSl9KSxbInRhYkluZGV4IiwiY3Jvc3NPcmlnaW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lbZV09bmV3IG4oZSwxLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLGkueGxpbmtIcmVmPW5ldyBuKCJ4bGlua0hyZWYiLDEsITEsInhsaW5rOmhyZWYiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwhMCwhMSksWyJzcmMiLCJocmVmIiwiYWN0aW9uIiwiZm9ybUFjdGlvbiJdLmZvckVhY2goZnVuY3Rpb24oZSl7aVtlXT1uZXcgbihlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7dmFyIEo9Ti5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCxlZT1TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50IiksdGU9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksbmU9U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKSxyZT1TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpLG9lPVN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksYWU9U3ltYm9sLmZvcigicmVhY3QucHJvdmlkZXIiKSxpZT1TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0IiksbGU9U3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSxjZT1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpLHVlPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlX2xpc3QiKSxzZT1TeW1ib2wuZm9yKCJyZWFjdC5tZW1vIiksZmU9U3ltYm9sLmZvcigicmVhY3QubGF6eSIpLGRlPShTeW1ib2wuZm9yKCJyZWFjdC5zY29wZSIpLFN5bWJvbC5mb3IoInJlYWN0LmRlYnVnX3RyYWNlX21vZGUiKSxTeW1ib2wuZm9yKCJyZWFjdC5vZmZzY3JlZW4iKSkscGU9KFN5bWJvbC5mb3IoInJlYWN0LmxlZ2FjeV9oaWRkZW4iKSxTeW1ib2wuZm9yKCJyZWFjdC5jYWNoZSIpLFN5bWJvbC5mb3IoInJlYWN0LnRyYWNpbmdfbWFya2VyIiksU3ltYm9sLml0ZXJhdG9yKTtmdW5jdGlvbiBtZShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mKGU9cGUmJmVbcGVdfHxlWyJAQGl0ZXJhdG9yIl0pP2U6bnVsbH12YXIgaGUsZz1PYmplY3QuYXNzaWduO2Z1bmN0aW9uIGdlKGUpe2lmKHZvaWQgMD09PWhlKXRyeXt0aHJvdyBFcnJvcigpfWNhdGNoKGUpe3ZhciB0PWUuc3RhY2sudHJpbSgpLm1hdGNoKC9cbiggKihhdCApPykvKTtoZT10JiZ0WzFdfHwiIn1yZXR1cm4iXG4iK2hlK2V9dmFyIGJlPSExO2Z1bmN0aW9uIHllKHQsZSl7aWYoIXR8fGJlKXJldHVybiIiO2JlPSEwO3ZhciBuPUVycm9yLnByZXBhcmVTdGFja1RyYWNlO0Vycm9yLnByZXBhcmVTdGFja1RyYWNlPXZvaWQgMDt0cnl7aWYoZSlpZihlPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwcm9wcyIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCl9fSksIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmNvbnN0cnVjdCl7dHJ5e1JlZmxlY3QuY29uc3RydWN0KGUsW10pfWNhdGNoKGUpe3ZhciByPWV9UmVmbGVjdC5jb25zdHJ1Y3QodCxbXSxlKX1lbHNle3RyeXtlLmNhbGwoKX1jYXRjaChlKXtyPWV9dC5jYWxsKGUucHJvdG90eXBlKX1lbHNle3RyeXt0aHJvdyBFcnJvcigpfWNhdGNoKGUpe3I9ZX10KCl9fWNhdGNoKGUpe2lmKGUmJnImJiJzdHJpbmciPT10eXBlb2YgZS5zdGFjayl7Zm9yKHZhciBvLGE9ZS5zdGFjay5zcGxpdCgiXG4iKSxpPXIuc3RhY2suc3BsaXQoIlxuIiksbD1hLmxlbmd0aC0xLGM9aS5sZW5ndGgtMTsxPD1sJiYwPD1jJiZhW2xdIT09aVtjXTspYy0tO2Zvcig7MTw9bCYmMDw9YztsLS0sYy0tKWlmKGFbbF0hPT1pW2NdKXtpZigxIT09bHx8MSE9PWMpZG97aWYobC0tLC0tYzwwfHxhW2xdIT09aVtjXSlyZXR1cm4gbz0iXG4iK2FbbF0ucmVwbGFjZSgiIGF0IG5ldyAiLCIgYXQgIiksbz10LmRpc3BsYXlOYW1lJiZvLmluY2x1ZGVzKCI8YW5vbnltb3VzPiIpP28ucmVwbGFjZSgiPGFub255bW91cz4iLHQuZGlzcGxheU5hbWUpOm99d2hpbGUoMTw9bCYmMDw9Yyk7YnJlYWt9fX1maW5hbGx5e2JlPSExLEVycm9yLnByZXBhcmVTdGFja1RyYWNlPW59cmV0dXJuKHQ9dD90LmRpc3BsYXlOYW1lfHx0Lm5hbWU6IiIpP2dlKHQpOiIifWZ1bmN0aW9uIHZlKGUpe3ZhciB0PWUudHlwZTtzd2l0Y2goZS50YWcpe2Nhc2UgMjQ6cmV0dXJuIkNhY2hlIjtjYXNlIDk6cmV0dXJuKHQuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Db25zdW1lciI7Y2FzZSAxMDpyZXR1cm4odC5fY29udGV4dC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLlByb3ZpZGVyIjtjYXNlIDE4OnJldHVybiJEZWh5ZHJhdGVkRnJhZ21lbnQiO2Nhc2UgMTE6cmV0dXJuIGU9KGU9dC5yZW5kZXIpLmRpc3BsYXlOYW1lfHxlLm5hbWV8fCIiLHQuZGlzcGxheU5hbWV8fCgiIiE9PWU/IkZvcndhcmRSZWYoIitlKyIpIjoiRm9yd2FyZFJlZiIpO2Nhc2UgNzpyZXR1cm4iRnJhZ21lbnQiO2Nhc2UgNTpyZXR1cm4gdDtjYXNlIDQ6cmV0dXJuIlBvcnRhbCI7Y2FzZSAzOnJldHVybiJSb290IjtjYXNlIDY6cmV0dXJuIlRleHQiO2Nhc2UgMTY6cmV0dXJuIGZ1bmN0aW9uIGUodCl7aWYobnVsbCE9dCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHQuZGlzcGxheU5hbWV8fHQubmFtZXx8bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7c3dpdGNoKHQpe2Nhc2UgbmU6cmV0dXJuIkZyYWdtZW50IjtjYXNlIHRlOnJldHVybiJQb3J0YWwiO2Nhc2Ugb2U6cmV0dXJuIlByb2ZpbGVyIjtjYXNlIHJlOnJldHVybiJTdHJpY3RNb2RlIjtjYXNlIGNlOnJldHVybiJTdXNwZW5zZSI7Y2FzZSB1ZTpyZXR1cm4iU3VzcGVuc2VMaXN0In1pZigib2JqZWN0Ij09dHlwZW9mIHQpc3dpdGNoKHQuJCR0eXBlb2Ype2Nhc2UgaWU6cmV0dXJuKHQuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Db25zdW1lciI7Y2FzZSBhZTpyZXR1cm4odC5fY29udGV4dC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLlByb3ZpZGVyIjtjYXNlIGxlOnZhciBuPXQucmVuZGVyO3JldHVybiB0PSh0PXQuZGlzcGxheU5hbWUpfHwoIiIhPT0odD1uLmRpc3BsYXlOYW1lfHxuLm5hbWV8fCIiKT8iRm9yd2FyZFJlZigiK3QrIikiOiJGb3J3YXJkUmVmIik7Y2FzZSBzZTpyZXR1cm4gbnVsbCE9PShuPXQuZGlzcGxheU5hbWV8fG51bGwpP246ZSh0LnR5cGUpfHwiTWVtbyI7Y2FzZSBmZTpuPXQuX3BheWxvYWQsdD10Ll9pbml0O3RyeXtyZXR1cm4gZSh0KG4pKX1jYXRjaChlKXt9fX1yZXR1cm4gbnVsbH0odCk7Y2FzZSA4OnJldHVybiB0PT09cmU/IlN0cmljdE1vZGUiOiJNb2RlIjtjYXNlIDIyOnJldHVybiJPZmZzY3JlZW4iO2Nhc2UgMTI6cmV0dXJuIlByb2ZpbGVyIjtjYXNlIDIxOnJldHVybiJTY29wZSI7Y2FzZSAxMzpyZXR1cm4iU3VzcGVuc2UiO2Nhc2UgMTk6cmV0dXJuIlN1c3BlbnNlTGlzdCI7Y2FzZSAyNTpyZXR1cm4iVHJhY2luZ01hcmtlciI7Y2FzZSAxOmNhc2UgMDpjYXNlIDE3OmNhc2UgMjpjYXNlIDE0OmNhc2UgMTU6aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHQuZGlzcGxheU5hbWV8fHQubmFtZXx8bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gd2UoZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlImJvb2xlYW4iOmNhc2UibnVtYmVyIjpjYXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQiOmNhc2Uib2JqZWN0IjpyZXR1cm4gZTtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiB4ZShlKXt2YXIgdD1lLnR5cGU7cmV0dXJuKGU9ZS5ub2RlTmFtZSkmJiJpbnB1dCI9PT1lLnRvTG93ZXJDYXNlKCkmJigiY2hlY2tib3giPT09dHx8InJhZGlvIj09PXQpfWZ1bmN0aW9uIGtlKGUpe2UuX3ZhbHVlVHJhY2tlcnx8KGUuX3ZhbHVlVHJhY2tlcj1mdW5jdGlvbihlKXt2YXIgdCxuLHI9eGUoZSk/ImNoZWNrZWQiOiJ2YWx1ZSIsbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUuY29uc3RydWN0b3IucHJvdG90eXBlLHIpLGE9IiIrZVtyXTtpZighZS5oYXNPd25Qcm9wZXJ0eShyKSYmdm9pZCAwIT09byYmImZ1bmN0aW9uIj09dHlwZW9mIG8uZ2V0JiYiZnVuY3Rpb24iPT10eXBlb2Ygby5zZXQpcmV0dXJuIHQ9by5nZXQsbj1vLnNldCxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGUpe2E9IiIrZSxuLmNhbGwodGhpcyxlKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOm8uZW51bWVyYWJsZX0pLHtnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBhfSxzZXRWYWx1ZTpmdW5jdGlvbihlKXthPSIiK2V9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2UuX3ZhbHVlVHJhY2tlcj1udWxsLGRlbGV0ZSBlW3JdfX19KGUpKX1mdW5jdGlvbiBTZShlKXt2YXIgdCxuLHI7aWYoZSlyZXR1cm4odD1lLl92YWx1ZVRyYWNrZXIpPyhuPXQuZ2V0VmFsdWUoKSxyPSIiLChlPXI9ZT94ZShlKT9lLmNoZWNrZWQ/InRydWUiOiJmYWxzZSI6ZS52YWx1ZTpyKSE9PW4mJih0LnNldFZhbHVlKGUpLDEpKToxfWZ1bmN0aW9uIENlKHQpe2lmKHZvaWQgMD09PSh0PXR8fCgidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCkpKXJldHVybiBudWxsO3RyeXtyZXR1cm4gdC5hY3RpdmVFbGVtZW50fHx0LmJvZHl9Y2F0Y2goZSl7cmV0dXJuIHQuYm9keX19ZnVuY3Rpb24gRWUoZSx0KXt2YXIgbj10LmNoZWNrZWQ7cmV0dXJuIGcoe30sdCx7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6dm9pZCAwLGNoZWNrZWQ6bnVsbCE9bj9uOmUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZH0pfWZ1bmN0aW9uIE9lKGUsdCl7dmFyIG49bnVsbD09dC5kZWZhdWx0VmFsdWU/IiI6dC5kZWZhdWx0VmFsdWUscj1udWxsIT10LmNoZWNrZWQ/dC5jaGVja2VkOnQuZGVmYXVsdENoZWNrZWQsbj13ZShudWxsIT10LnZhbHVlP3QudmFsdWU6bik7ZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpyLGluaXRpYWxWYWx1ZTpuLGNvbnRyb2xsZWQ6ImNoZWNrYm94Ij09PXQudHlwZXx8InJhZGlvIj09PXQudHlwZT9udWxsIT10LmNoZWNrZWQ6bnVsbCE9dC52YWx1ZX19ZnVuY3Rpb24gamUoZSx0KXtudWxsIT0odD10LmNoZWNrZWQpJiZLKGUsImNoZWNrZWQiLHQsITEpfWZ1bmN0aW9uIEFlKGUsdCl7amUoZSx0KTt2YXIgbj13ZSh0LnZhbHVlKSxyPXQudHlwZTtpZihudWxsIT1uKSJudW1iZXIiPT09cj8oMD09PW4mJiIiPT09ZS52YWx1ZXx8ZS52YWx1ZSE9bikmJihlLnZhbHVlPSIiK24pOmUudmFsdWUhPT0iIituJiYoZS52YWx1ZT0iIituKTtlbHNlIGlmKCJzdWJtaXQiPT09cnx8InJlc2V0Ij09PXIpcmV0dXJuIHZvaWQgZS5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIik7dC5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKT9JZShlLHQudHlwZSxuKTp0Lmhhc093blByb3BlcnR5KCJkZWZhdWx0VmFsdWUiKSYmSWUoZSx0LnR5cGUsd2UodC5kZWZhdWx0VmFsdWUpKSxudWxsPT10LmNoZWNrZWQmJm51bGwhPXQuZGVmYXVsdENoZWNrZWQmJihlLmRlZmF1bHRDaGVja2VkPSEhdC5kZWZhdWx0Q2hlY2tlZCl9ZnVuY3Rpb24gUGUoZSx0LG4pe2lmKHQuaGFzT3duUHJvcGVydHkoInZhbHVlIil8fHQuaGFzT3duUHJvcGVydHkoImRlZmF1bHRWYWx1ZSIpKXt2YXIgcj10LnR5cGU7aWYoISgic3VibWl0IiE9PXImJiJyZXNldCIhPT1yfHx2b2lkIDAhPT10LnZhbHVlJiZudWxsIT09dC52YWx1ZSkpcmV0dXJuO3Q9IiIrZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxufHx0PT09ZS52YWx1ZXx8KGUudmFsdWU9dCksZS5kZWZhdWx0VmFsdWU9dH0iIiE9PShuPWUubmFtZSkmJihlLm5hbWU9IiIpLGUuZGVmYXVsdENoZWNrZWQ9ISFlLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQsIiIhPT1uJiYoZS5uYW1lPW4pfWZ1bmN0aW9uIEllKGUsdCxuKXsibnVtYmVyIj09PXQmJkNlKGUub3duZXJEb2N1bWVudCk9PT1lfHwobnVsbD09bj9lLmRlZmF1bHRWYWx1ZT0iIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmUuZGVmYXVsdFZhbHVlIT09IiIrbiYmKGUuZGVmYXVsdFZhbHVlPSIiK24pKX12YXIgX2U9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiB6ZShlLHQsbixyKXtpZihlPWUub3B0aW9ucyx0KXt0PXt9O2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXRbIiQiK25bb11dPSEwO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspbz10Lmhhc093blByb3BlcnR5KCIkIitlW25dLnZhbHVlKSxlW25dLnNlbGVjdGVkIT09byYmKGVbbl0uc2VsZWN0ZWQ9byksbyYmciYmKGVbbl0uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2ZvcihuPSIiK3dlKG4pLHQ9bnVsbCxvPTA7bzxlLmxlbmd0aDtvKyspe2lmKGVbb10udmFsdWU9PT1uKXJldHVybiBlW29dLnNlbGVjdGVkPSEwLHZvaWQociYmKGVbb10uZGVmYXVsdFNlbGVjdGVkPSEwKSk7bnVsbCE9PXR8fGVbb10uZGlzYWJsZWR8fCh0PWVbb10pfW51bGwhPT10JiYodC5zZWxlY3RlZD0hMCl9fWZ1bmN0aW9uIFRlKGUsdCl7aWYobnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCl0aHJvdyBFcnJvcihEKDkxKSk7cmV0dXJuIGcoe30sdCx7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46IiIrZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0pfWZ1bmN0aW9uIExlKGUsdCl7dmFyIG49dC52YWx1ZTtpZihudWxsPT1uKXtpZihuPXQuY2hpbGRyZW4sdD10LmRlZmF1bHRWYWx1ZSxudWxsIT1uKXtpZihudWxsIT10KXRocm93IEVycm9yKEQoOTIpKTtpZihfZShuKSl7aWYoMTxuLmxlbmd0aCl0aHJvdyBFcnJvcihEKDkzKSk7bj1uWzBdfXQ9bn1uPXQ9bnVsbD09dD8iIjp0fWUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOndlKG4pfX1mdW5jdGlvbiBNZShlLHQpe3ZhciBuPXdlKHQudmFsdWUpLHI9d2UodC5kZWZhdWx0VmFsdWUpO251bGwhPW4mJigobj0iIituKSE9PWUudmFsdWUmJihlLnZhbHVlPW4pLG51bGw9PXQuZGVmYXVsdFZhbHVlKSYmZS5kZWZhdWx0VmFsdWUhPT1uJiYoZS5kZWZhdWx0VmFsdWU9biksbnVsbCE9ciYmKGUuZGVmYXVsdFZhbHVlPSIiK3IpfWZ1bmN0aW9uIFJlKGUpe3ZhciB0PWUudGV4dENvbnRlbnQ7dD09PWUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUmJiIiIT09dCYmbnVsbCE9PXQmJihlLnZhbHVlPXQpfWZ1bmN0aW9uIE5lKGUpe3N3aXRjaChlKXtjYXNlInN2ZyI6cmV0dXJuImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjtjYXNlIm1hdGgiOnJldHVybiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIjtkZWZhdWx0OnJldHVybiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIn19ZnVuY3Rpb24gRGUoZSx0KXtyZXR1cm4gbnVsbD09ZXx8Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPT09ZT9OZSh0KToiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPT09ZSYmImZvcmVpZ25PYmplY3QiPT09dD8iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI6ZX1CZT1mdW5jdGlvbihlLHQpe2lmKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIhPT1lLm5hbWVzcGFjZVVSSXx8ImlubmVySFRNTCJpbiBlKWUuaW5uZXJIVE1MPXQ7ZWxzZXtmb3IoKFVlPVVlfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPSI8c3ZnPiIrdC52YWx1ZU9mKCkudG9TdHJpbmcoKSsiPC9zdmc+Iix0PVVlLmZpcnN0Q2hpbGQ7ZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7Zm9yKDt0LmZpcnN0Q2hpbGQ7KWUuYXBwZW5kQ2hpbGQodC5maXJzdENoaWxkKX19O3ZhciBVZSxCZSxGZT0idW5kZWZpbmVkIiE9dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbihlLHQsbixyKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBCZShlLHQpfSl9OkJlO2Z1bmN0aW9uIEhlKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0Q29udGVudD10fXZhciBWZT17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0sJGU9WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtmdW5jdGlvbiBXZShlLHQsbil7cmV0dXJuIG51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCIiPT09dD8iIjpufHwibnVtYmVyIiE9dHlwZW9mIHR8fDA9PT10fHxWZS5oYXNPd25Qcm9wZXJ0eShlKSYmVmVbZV0/KCIiK3QpLnRyaW0oKTp0KyJweCJ9ZnVuY3Rpb24gR2UoZSx0KXtmb3IodmFyIG4gaW4gZT1lLnN0eWxlLHQpe3ZhciByLG87dC5oYXNPd25Qcm9wZXJ0eShuKSYmKHI9MD09PW4uaW5kZXhPZigiLS0iKSxvPVdlKG4sdFtuXSxyKSwiZmxvYXQiPT09biYmKG49ImNzc0Zsb2F0Iikscj9lLnNldFByb3BlcnR5KG4sbyk6ZVtuXT1vKX19T2JqZWN0LmtleXMoVmUpLmZvckVhY2goZnVuY3Rpb24odCl7JGUuZm9yRWFjaChmdW5jdGlvbihlKXtlPWUrdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cmluZygxKSxWZVtlXT1WZVt0XX0pfSk7dmFyIHFlPWcoe21lbnVpdGVtOiEwfSx7YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSk7ZnVuY3Rpb24gWmUoZSx0KXtpZih0KXtpZihxZVtlXSYmKG51bGwhPXQuY2hpbGRyZW58fG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKEQoMTM3LGUpKTtpZihudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXtpZihudWxsIT10LmNoaWxkcmVuKXRocm93IEVycm9yKEQoNjApKTtpZigib2JqZWN0IiE9dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUx8fCEoIl9faHRtbCJpbiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihEKDYxKSl9aWYobnVsbCE9dC5zdHlsZSYmIm9iamVjdCIhPXR5cGVvZiB0LnN0eWxlKXRocm93IEVycm9yKEQoNjIpKX19ZnVuY3Rpb24gWGUoZSx0KXtpZigtMT09PWUuaW5kZXhPZigiLSIpKXJldHVybiJzdHJpbmciPT10eXBlb2YgdC5pcztzd2l0Y2goZSl7Y2FzZSJhbm5vdGF0aW9uLXhtbCI6Y2FzZSJjb2xvci1wcm9maWxlIjpjYXNlImZvbnQtZmFjZSI6Y2FzZSJmb250LWZhY2Utc3JjIjpjYXNlImZvbnQtZmFjZS11cmkiOmNhc2UiZm9udC1mYWNlLWZvcm1hdCI6Y2FzZSJmb250LWZhY2UtbmFtZSI6Y2FzZSJtaXNzaW5nLWdseXBoIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX12YXIgWWU9bnVsbDtmdW5jdGlvbiBRZShlKXtyZXR1cm4gMz09PShlPShlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdykuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQ/ZS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudDplKS5ub2RlVHlwZT9lLnBhcmVudE5vZGU6ZX12YXIgS2U9bnVsbCxKZT1udWxsLGV0PW51bGw7ZnVuY3Rpb24gdHQoZSl7aWYoZT16byhlKSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEtlKXRocm93IEVycm9yKEQoMjgwKSk7dmFyIHQ9ZS5zdGF0ZU5vZGU7dCYmKHQ9TG8odCksS2UoZS5zdGF0ZU5vZGUsZS50eXBlLHQpKX19ZnVuY3Rpb24gbnQoZSl7SmU/ZXQ/ZXQucHVzaChlKTpldD1bZV06SmU9ZX1mdW5jdGlvbiBydCgpe2lmKEplKXt2YXIgZT1KZSx0PWV0O2lmKGV0PUplPW51bGwsdHQoZSksdClmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXR0KHRbZV0pfX1mdW5jdGlvbiBvdChlLHQpe3JldHVybiBlKHQpfWZ1bmN0aW9uIGF0KCl7fXZhciBpdD0hMTtmdW5jdGlvbiBsdChlLHQsbil7aWYoaXQpcmV0dXJuIGUodCxuKTtpdD0hMDt0cnl7b3QoZSx0LG4pfWZpbmFsbHl7aXQ9ITEsbnVsbD09PUplJiZudWxsPT09ZXR8fChhdCgpLHJ0KCkpfX1mdW5jdGlvbiBjdChlLHQpe3ZhciBuPWUuc3RhdGVOb2RlO2lmKG51bGw9PT1uKXJldHVybiBudWxsO3ZhciByPUxvKG4pO2lmKG51bGw9PT1yKXJldHVybiBudWxsO3N3aXRjaChuPXJbdF0sdCl7Y2FzZSJvbkNsaWNrIjpjYXNlIm9uQ2xpY2tDYXB0dXJlIjpjYXNlIm9uRG91YmxlQ2xpY2siOmNhc2Uib25Eb3VibGVDbGlja0NhcHR1cmUiOmNhc2Uib25Nb3VzZURvd24iOmNhc2Uib25Nb3VzZURvd25DYXB0dXJlIjpjYXNlIm9uTW91c2VNb3ZlIjpjYXNlIm9uTW91c2VNb3ZlQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlVXAiOmNhc2Uib25Nb3VzZVVwQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlRW50ZXIiOmU9IShyPShyPSFyLmRpc2FibGVkKT9yOiEoImJ1dHRvbiI9PT0oZT1lLnR5cGUpfHwiaW5wdXQiPT09ZXx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09ZSkpO2JyZWFrO2RlZmF1bHQ6ZT0hMX1pZihlKXJldHVybiBudWxsO2lmKG4mJiJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IEVycm9yKEQoMjMxLHQsdHlwZW9mIG4pKTtyZXR1cm4gbn12YXIgdXQ9ITE7aWYoUil0cnl7dmFyIGU9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXt1dD0hMH19KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsZSxlKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsZSxlKX1jYXRjaChlKXt1dD0hMX12YXIgc3Q9ITEsZnQ9bnVsbCxkdD0hMSxwdD1udWxsLG10PXtvbkVycm9yOmZ1bmN0aW9uKGUpe3N0PSEwLGZ0PWV9fTtmdW5jdGlvbiBodChlLHQsbixyLG8sYSxpLGwsYyl7c3Q9ITEsZnQ9bnVsbCxmdW5jdGlvbihlLHQsbixyLG8sYSxpLGwsYyl7dmFyIHU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXt0LmFwcGx5KG4sdSl9Y2F0Y2goZSl7dGhpcy5vbkVycm9yKGUpfX0uYXBwbHkobXQsYXJndW1lbnRzKX1mdW5jdGlvbiBndChlKXt2YXIgdD1lLG49ZTtpZihlLmFsdGVybmF0ZSlmb3IoO3QucmV0dXJuOyl0PXQucmV0dXJuO2Vsc2UgZm9yKGU9dDswIT0oNDA5OCYodD1lKS5mbGFncykmJihuPXQucmV0dXJuKSxlPXQucmV0dXJuOyk7cmV0dXJuIDM9PT10LnRhZz9uOm51bGx9ZnVuY3Rpb24gYnQoZSl7aWYoMTM9PT1lLnRhZyl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT0odD1udWxsPT09dCYmbnVsbCE9PShlPWUuYWx0ZXJuYXRlKT9lLm1lbW9pemVkU3RhdGU6dCkpcmV0dXJuIHQuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiB5dChlKXtpZihndChlKSE9PWUpdGhyb3cgRXJyb3IoRCgxODgpKX1mdW5jdGlvbiB2dChlKXtyZXR1cm4gbnVsbCE9PShlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYWx0ZXJuYXRlO2lmKCF0KXtpZihudWxsPT09KHQ9Z3QoZSkpKXRocm93IEVycm9yKEQoMTg4KSk7cmV0dXJuIHQhPT1lP251bGw6ZX1mb3IodmFyIG49ZSxyPXQ7Oyl7dmFyIG89bi5yZXR1cm47aWYobnVsbD09PW8pYnJlYWs7dmFyIGE9by5hbHRlcm5hdGU7aWYobnVsbD09PWEpe2lmKG51bGw9PT0ocj1vLnJldHVybikpYnJlYWs7bj1yfWVsc2V7aWYoby5jaGlsZD09PWEuY2hpbGQpe2ZvcihhPW8uY2hpbGQ7YTspe2lmKGE9PT1uKXJldHVybiB5dChvKSxlO2lmKGE9PT1yKXJldHVybiB5dChvKSx0O2E9YS5zaWJsaW5nfXRocm93IEVycm9yKEQoMTg4KSl9aWYobi5yZXR1cm4hPT1yLnJldHVybiluPW8scj1hO2Vsc2V7Zm9yKHZhciBpPSExLGw9by5jaGlsZDtsOyl7aWYobD09PW4pe2k9ITAsbj1vLHI9YTticmVha31pZihsPT09cil7aT0hMCxyPW8sbj1hO2JyZWFrfWw9bC5zaWJsaW5nfWlmKCFpKXtmb3IobD1hLmNoaWxkO2w7KXtpZihsPT09bil7aT0hMCxuPWEscj1vO2JyZWFrfWlmKGw9PT1yKXtpPSEwLHI9YSxuPW87YnJlYWt9bD1sLnNpYmxpbmd9aWYoIWkpdGhyb3cgRXJyb3IoRCgxODkpKX19aWYobi5hbHRlcm5hdGUhPT1yKXRocm93IEVycm9yKEQoMTkwKSl9fWlmKDMhPT1uLnRhZyl0aHJvdyBFcnJvcihEKDE4OCkpO3JldHVybiBuLnN0YXRlTm9kZS5jdXJyZW50PT09bj9lOnR9KGUpKT9mdW5jdGlvbiBlKHQpe2lmKDU9PT10LnRhZ3x8Nj09PXQudGFnKXJldHVybiB0O2Zvcih0PXQuY2hpbGQ7bnVsbCE9PXQ7KXt2YXIgbj1lKHQpO2lmKG51bGwhPT1uKXJldHVybiBuO3Q9dC5zaWJsaW5nfXJldHVybiBudWxsfShlKTpudWxsfXZhciB3dD1CLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2sseHQ9Qi51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxrdD1CLnVuc3RhYmxlX3Nob3VsZFlpZWxkLFN0PUIudW5zdGFibGVfcmVxdWVzdFBhaW50LGg9Qi51bnN0YWJsZV9ub3csQ3Q9Qi51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCxFdD1CLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5LE90PUIudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksanQ9Qi51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxBdD1CLnVuc3RhYmxlX0xvd1ByaW9yaXR5LFB0PUIudW5zdGFibGVfSWRsZVByaW9yaXR5LEl0PW51bGwsX3Q9bnVsbDt2YXIgenQ9TWF0aC5jbHozMnx8ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PShlPj4+PTApPzMyOjMxLShUdChlKS9MdHwwKXwwfSxUdD1NYXRoLmxvZyxMdD1NYXRoLkxOMjt2YXIgTXQ9NjQsUnQ9NDE5NDMwNDtmdW5jdGlvbiBOdChlKXtzd2l0Y2goZSYtZSl7Y2FzZSAxOnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMjtjYXNlIDQ6cmV0dXJuIDQ7Y2FzZSA4OnJldHVybiA4O2Nhc2UgMTY6cmV0dXJuIDE2O2Nhc2UgMzI6cmV0dXJuIDMyO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIDQxOTQyNDAmZTtjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OnJldHVybiAxMzAwMjM0MjQmZTtjYXNlIDEzNDIxNzcyODpyZXR1cm4gMTM0MjE3NzI4O2Nhc2UgMjY4NDM1NDU2OnJldHVybiAyNjg0MzU0NTY7Y2FzZSA1MzY4NzA5MTI6cmV0dXJuIDUzNjg3MDkxMjtjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuIDEwNzM3NDE4MjQ7ZGVmYXVsdDpyZXR1cm4gZX19ZnVuY3Rpb24gRHQoZSx0KXt2YXIgbj1lLnBlbmRpbmdMYW5lcztpZigwPT09bilyZXR1cm4gMDt2YXIgcixvPTAsYT1lLnN1c3BlbmRlZExhbmVzLGk9ZS5waW5nZWRMYW5lcyxsPTI2ODQzNTQ1NSZuO2lmKDAhPWw/MCE9KHI9bCZ+YSk/bz1OdChyKTowIT09KGkmPWwpJiYobz1OdChpKSk6MCE9KGw9biZ+YSk/bz1OdChsKTowIT09aSYmKG89TnQoaSkpLDA9PT1vKXJldHVybiAwO2lmKDAhPT10JiZ0IT09byYmMD09KHQmYSkmJigoaT10Ji10KTw9KGE9byYtbyl8fDE2PT09YSYmMCE9KDQxOTQyNDAmaSkpKXJldHVybiB0O2lmKDAhPSg0Jm8pJiYob3w9MTYmbiksMCE9PSh0PWUuZW50YW5nbGVkTGFuZXMpKWZvcihlPWUuZW50YW5nbGVtZW50cyx0Jj1vOzA8dDspb3w9ZVtuPTMxLXp0KHQpXSx0Jj1+KGE9MTw8bik7cmV0dXJuIG99ZnVuY3Rpb24gVXQoZSx0KXtmb3IodmFyIG49ZS5zdXNwZW5kZWRMYW5lcyxyPWUucGluZ2VkTGFuZXMsbz1lLmV4cGlyYXRpb25UaW1lcyxhPWUucGVuZGluZ0xhbmVzOzA8YTspe3ZhciBpPTMxLXp0KGEpLGw9MTw8aSxjPW9baV07LTE9PT1jPzAhPShsJm4pJiYwPT0obCZyKXx8KG9baV09ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIHQrMjUwO2Nhc2UgODpjYXNlIDE2OmNhc2UgMzI6Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gdCs1ZTM7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4tMTtkZWZhdWx0OnJldHVybi0xfX0obCx0KSk6Yzw9dCYmKGUuZXhwaXJlZExhbmVzfD1sKSxhJj1+bH19ZnVuY3Rpb24gQnQoZSl7cmV0dXJuIDAhPT0oZT0tMTA3Mzc0MTgyNSZlLnBlbmRpbmdMYW5lcyk/ZToxMDczNzQxODI0JmU/MTA3Mzc0MTgyNDowfWZ1bmN0aW9uIEZ0KCl7dmFyIGU9TXQ7cmV0dXJuIDA9PSg0MTk0MjQwJihNdDw8PTEpKSYmKE10PTY0KSxlfWZ1bmN0aW9uIEh0KGUpe2Zvcih2YXIgdD1bXSxuPTA7bjwzMTtuKyspdC5wdXNoKGUpO3JldHVybiB0fWZ1bmN0aW9uIFZ0KGUsdCxuKXtlLnBlbmRpbmdMYW5lc3w9dCw1MzY4NzA5MTIhPT10JiYoZS5zdXNwZW5kZWRMYW5lcz0wLGUucGluZ2VkTGFuZXM9MCksKGU9ZS5ldmVudFRpbWVzKVt0PTMxLXp0KHQpXT1ufWZ1bmN0aW9uICR0KGUsdCl7dmFyIG49ZS5lbnRhbmdsZWRMYW5lc3w9dDtmb3IoZT1lLmVudGFuZ2xlbWVudHM7bjspe3ZhciByPTMxLXp0KG4pLG89MTw8cjtvJnR8ZVtyXSZ0JiYoZVtyXXw9dCksbiY9fm99fXZhciB4PTA7ZnVuY3Rpb24gV3QoZSl7cmV0dXJuIDE8KGUmPS1lKT80PGU/MCE9KDI2ODQzNTQ1NSZlKT8xNjo1MzY4NzA5MTI6NDoxfXZhciBHdCxxdCxadCxYdCxZdCxRdD0hMSxLdD1bXSxKdD1udWxsLGVuPW51bGwsdG49bnVsbCxubj1uZXcgTWFwLHJuPW5ldyBNYXAsb249W10sYW49Im1vdXNlZG93biBtb3VzZXVwIHRvdWNoY2FuY2VsIHRvdWNoZW5kIHRvdWNoc3RhcnQgYXV4Y2xpY2sgZGJsY2xpY2sgcG9pbnRlcmNhbmNlbCBwb2ludGVyZG93biBwb2ludGVydXAgZHJhZ2VuZCBkcmFnc3RhcnQgZHJvcCBjb21wb3NpdGlvbmVuZCBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgaW5wdXQgdGV4dElucHV0IGNvcHkgY3V0IHBhc3RlIGNsaWNrIGNoYW5nZSBjb250ZXh0bWVudSByZXNldCBzdWJtaXQiLnNwbGl0KCIgIik7ZnVuY3Rpb24gbG4oZSx0KXtzd2l0Y2goZSl7Y2FzZSJmb2N1c2luIjpjYXNlImZvY3Vzb3V0IjpKdD1udWxsO2JyZWFrO2Nhc2UiZHJhZ2VudGVyIjpjYXNlImRyYWdsZWF2ZSI6ZW49bnVsbDticmVhaztjYXNlIm1vdXNlb3ZlciI6Y2FzZSJtb3VzZW91dCI6dG49bnVsbDticmVhaztjYXNlInBvaW50ZXJvdmVyIjpjYXNlInBvaW50ZXJvdXQiOm5uLmRlbGV0ZSh0LnBvaW50ZXJJZCk7YnJlYWs7Y2FzZSJnb3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSJsb3N0cG9pbnRlcmNhcHR1cmUiOnJuLmRlbGV0ZSh0LnBvaW50ZXJJZCl9fWZ1bmN0aW9uIGNuKGUsdCxuLHIsbyxhKXtyZXR1cm4gbnVsbD09PWV8fGUubmF0aXZlRXZlbnQhPT1hPyhlPXtibG9ja2VkT246dCxkb21FdmVudE5hbWU6bixldmVudFN5c3RlbUZsYWdzOnIsbmF0aXZlRXZlbnQ6YSx0YXJnZXRDb250YWluZXJzOltvXX0sbnVsbCE9PXQmJm51bGwhPT0odD16byh0KSkmJnF0KHQpKTooZS5ldmVudFN5c3RlbUZsYWdzfD1yLHQ9ZS50YXJnZXRDb250YWluZXJzLG51bGwhPT1vJiYtMT09PXQuaW5kZXhPZihvKSYmdC5wdXNoKG8pKSxlfWZ1bmN0aW9uIHVuKGUpe3ZhciB0PV9vKGUudGFyZ2V0KTtpZihudWxsIT09dCl7dmFyIG49Z3QodCk7aWYobnVsbCE9PW4paWYoMTM9PT0odD1uLnRhZykpe2lmKG51bGwhPT0odD1idChuKSkpcmV0dXJuIGUuYmxvY2tlZE9uPXQsdm9pZCBZdChlLnByaW9yaXR5LGZ1bmN0aW9uKCl7WnQobil9KX1lbHNlIGlmKDM9PT10JiZuLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXJldHVybiB2b2lkKGUuYmxvY2tlZE9uPTM9PT1uLnRhZz9uLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGwpfWUuYmxvY2tlZE9uPW51bGx9ZnVuY3Rpb24gc24oZSl7aWYobnVsbD09PWUuYmxvY2tlZE9uKXtmb3IodmFyIHQ9ZS50YXJnZXRDb250YWluZXJzOzA8dC5sZW5ndGg7KXt2YXIgbj14bihlLmRvbUV2ZW50TmFtZSxlLmV2ZW50U3lzdGVtRmxhZ3MsdFswXSxlLm5hdGl2ZUV2ZW50KTtpZihudWxsIT09bilyZXR1cm4gbnVsbCE9PSh0PXpvKG4pKSYmcXQodCksZS5ibG9ja2VkT249biwwO3ZhciByPW5ldyhuPWUubmF0aXZlRXZlbnQpLmNvbnN0cnVjdG9yKG4udHlwZSxuKTtZZT1yLG4udGFyZ2V0LmRpc3BhdGNoRXZlbnQociksWWU9bnVsbCx0LnNoaWZ0KCl9cmV0dXJuIDF9fWZ1bmN0aW9uIGZuKGUsdCxuKXtzbihlKSYmbi5kZWxldGUodCl9ZnVuY3Rpb24gZG4oKXtRdD0hMSxudWxsIT09SnQmJnNuKEp0KSYmKEp0PW51bGwpLG51bGwhPT1lbiYmc24oZW4pJiYoZW49bnVsbCksbnVsbCE9PXRuJiZzbih0bikmJih0bj1udWxsKSxubi5mb3JFYWNoKGZuKSxybi5mb3JFYWNoKGZuKX1mdW5jdGlvbiBwbihlLHQpe2UuYmxvY2tlZE9uPT09dCYmKGUuYmxvY2tlZE9uPW51bGwsUXR8fChRdD0hMCxCLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soQi51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxkbikpKX1mdW5jdGlvbiBtbih0KXtmdW5jdGlvbiBlKGUpe3JldHVybiBwbihlLHQpfWlmKDA8S3QubGVuZ3RoKXtwbihLdFswXSx0KTtmb3IodmFyIG49MTtuPEt0Lmxlbmd0aDtuKyspe3ZhciByPUt0W25dO3IuYmxvY2tlZE9uPT09dCYmKHIuYmxvY2tlZE9uPW51bGwpfX1mb3IobnVsbCE9PUp0JiZwbihKdCx0KSxudWxsIT09ZW4mJnBuKGVuLHQpLG51bGwhPT10biYmcG4odG4sdCksbm4uZm9yRWFjaChlKSxybi5mb3JFYWNoKGUpLG49MDtuPG9uLmxlbmd0aDtuKyspKHI9b25bbl0pLmJsb2NrZWRPbj09PXQmJihyLmJsb2NrZWRPbj1udWxsKTtmb3IoOzA8b24ubGVuZ3RoJiZudWxsPT09KG49b25bMF0pLmJsb2NrZWRPbjspdW4obiksbnVsbD09PW4uYmxvY2tlZE9uJiZvbi5zaGlmdCgpfXZhciBobj1KLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLGduPSEwO2Z1bmN0aW9uIGJuKGUsdCxuLHIpe3ZhciBvPXgsYT1obi50cmFuc2l0aW9uO2huLnRyYW5zaXRpb249bnVsbDt0cnl7eD0xLHZuKGUsdCxuLHIpfWZpbmFsbHl7eD1vLGhuLnRyYW5zaXRpb249YX19ZnVuY3Rpb24geW4oZSx0LG4scil7dmFyIG89eCxhPWhuLnRyYW5zaXRpb247aG4udHJhbnNpdGlvbj1udWxsO3RyeXt4PTQsdm4oZSx0LG4scil9ZmluYWxseXt4PW8saG4udHJhbnNpdGlvbj1hfX1mdW5jdGlvbiB2bihlLHQsbixyKXtpZihnbil7dmFyIG89eG4oZSwwLDAscik7aWYobnVsbD09PW8pcm8oZSx0LHIsd24sbiksbG4oZSxyKTtlbHNlIGlmKGZ1bmN0aW9uKGUsdCxuLHIsbyl7c3dpdGNoKHQpe2Nhc2UiZm9jdXNpbiI6cmV0dXJuIEp0PWNuKEp0LGUsdCxuLHIsbyksMTtjYXNlImRyYWdlbnRlciI6cmV0dXJuIGVuPWNuKGVuLGUsdCxuLHIsbyksMTtjYXNlIm1vdXNlb3ZlciI6cmV0dXJuIHRuPWNuKHRuLGUsdCxuLHIsbyksMTtjYXNlInBvaW50ZXJvdmVyIjp2YXIgYT1vLnBvaW50ZXJJZDtyZXR1cm4gbm4uc2V0KGEsY24obm4uZ2V0KGEpfHxudWxsLGUsdCxuLHIsbykpLDE7Y2FzZSJnb3Rwb2ludGVyY2FwdHVyZSI6cmV0dXJuIGE9by5wb2ludGVySWQscm4uc2V0KGEsY24ocm4uZ2V0KGEpfHxudWxsLGUsdCxuLHIsbykpLDF9fShvLGUsdCxuLHIpKXIuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihsbihlLHIpLDQmdCYmLTE8YW4uaW5kZXhPZihlKSl7Zm9yKDtudWxsIT09bzspe3ZhciBhPXpvKG8pO2lmKG51bGwhPT1hJiZHdChhKSxudWxsPT09KGE9eG4oZSwwLDAscikpJiZybyhlLHQscix3bixuKSxhPT09bylicmVhaztvPWF9bnVsbCE9PW8mJnIuc3RvcFByb3BhZ2F0aW9uKCl9ZWxzZSBybyhlLHQscixudWxsLG4pfX12YXIgd249bnVsbDtmdW5jdGlvbiB4bihlLHQsbixyKXtpZigod249bnVsbCkhPT0oZT1fbyhlPVFlKHIpKSkpaWYobnVsbD09PSh0PWd0KGUpKSllPW51bGw7ZWxzZSBpZigxMz09PShuPXQudGFnKSl7aWYobnVsbCE9PShlPWJ0KHQpKSlyZXR1cm4gZTtlPW51bGx9ZWxzZSBpZigzPT09bil7aWYodC5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZClyZXR1cm4gMz09PXQudGFnP3Quc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtlPW51bGx9ZWxzZSB0IT09ZSYmKGU9bnVsbCk7cmV0dXJuIHduPWUsbnVsbH1mdW5jdGlvbiBrbihlKXtzd2l0Y2goZSl7Y2FzZSJjYW5jZWwiOmNhc2UiY2xpY2siOmNhc2UiY2xvc2UiOmNhc2UiY29udGV4dG1lbnUiOmNhc2UiY29weSI6Y2FzZSJjdXQiOmNhc2UiYXV4Y2xpY2siOmNhc2UiZGJsY2xpY2siOmNhc2UiZHJhZ2VuZCI6Y2FzZSJkcmFnc3RhcnQiOmNhc2UiZHJvcCI6Y2FzZSJmb2N1c2luIjpjYXNlImZvY3Vzb3V0IjpjYXNlImlucHV0IjpjYXNlImludmFsaWQiOmNhc2Uia2V5ZG93biI6Y2FzZSJrZXlwcmVzcyI6Y2FzZSJrZXl1cCI6Y2FzZSJtb3VzZWRvd24iOmNhc2UibW91c2V1cCI6Y2FzZSJwYXN0ZSI6Y2FzZSJwYXVzZSI6Y2FzZSJwbGF5IjpjYXNlInBvaW50ZXJjYW5jZWwiOmNhc2UicG9pbnRlcmRvd24iOmNhc2UicG9pbnRlcnVwIjpjYXNlInJhdGVjaGFuZ2UiOmNhc2UicmVzZXQiOmNhc2UicmVzaXplIjpjYXNlInNlZWtlZCI6Y2FzZSJzdWJtaXQiOmNhc2UidG91Y2hjYW5jZWwiOmNhc2UidG91Y2hlbmQiOmNhc2UidG91Y2hzdGFydCI6Y2FzZSJ2b2x1bWVjaGFuZ2UiOmNhc2UiY2hhbmdlIjpjYXNlInNlbGVjdGlvbmNoYW5nZSI6Y2FzZSJ0ZXh0SW5wdXQiOmNhc2UiY29tcG9zaXRpb25zdGFydCI6Y2FzZSJjb21wb3NpdGlvbmVuZCI6Y2FzZSJjb21wb3NpdGlvbnVwZGF0ZSI6Y2FzZSJiZWZvcmVibHVyIjpjYXNlImFmdGVyYmx1ciI6Y2FzZSJiZWZvcmVpbnB1dCI6Y2FzZSJibHVyIjpjYXNlImZ1bGxzY3JlZW5jaGFuZ2UiOmNhc2UiZm9jdXMiOmNhc2UiaGFzaGNoYW5nZSI6Y2FzZSJwb3BzdGF0ZSI6Y2FzZSJzZWxlY3QiOmNhc2Uic2VsZWN0c3RhcnQiOnJldHVybiAxO2Nhc2UiZHJhZyI6Y2FzZSJkcmFnZW50ZXIiOmNhc2UiZHJhZ2V4aXQiOmNhc2UiZHJhZ2xlYXZlIjpjYXNlImRyYWdvdmVyIjpjYXNlIm1vdXNlbW92ZSI6Y2FzZSJtb3VzZW91dCI6Y2FzZSJtb3VzZW92ZXIiOmNhc2UicG9pbnRlcm1vdmUiOmNhc2UicG9pbnRlcm91dCI6Y2FzZSJwb2ludGVyb3ZlciI6Y2FzZSJzY3JvbGwiOmNhc2UidG9nZ2xlIjpjYXNlInRvdWNobW92ZSI6Y2FzZSJ3aGVlbCI6Y2FzZSJtb3VzZWVudGVyIjpjYXNlIm1vdXNlbGVhdmUiOmNhc2UicG9pbnRlcmVudGVyIjpjYXNlInBvaW50ZXJsZWF2ZSI6cmV0dXJuIDQ7Y2FzZSJtZXNzYWdlIjpzd2l0Y2goQ3QoKSl7Y2FzZSBFdDpyZXR1cm4gMTtjYXNlIE90OnJldHVybiA0O2Nhc2UganQ6Y2FzZSBBdDpyZXR1cm4gMTY7Y2FzZSBQdDpyZXR1cm4gNTM2ODcwOTEyO2RlZmF1bHQ6cmV0dXJuIDE2fWRlZmF1bHQ6cmV0dXJuIDE2fX12YXIgU249bnVsbCxDbj1udWxsLEVuPW51bGw7ZnVuY3Rpb24gT24oKXtpZihFbilyZXR1cm4gRW47Zm9yKHZhciBlPUNuLHQ9ZS5sZW5ndGgsbj0oInZhbHVlImluIFNuP1NuLnZhbHVlOlNuLnRleHRDb250ZW50KSxyPW4ubGVuZ3RoLG89MDtvPHQmJmVbb109PT1uW29dO28rKyk7Zm9yKHZhciBhPXQtbyxpPTE7aTw9YSYmZVt0LWldPT09bltyLWldO2krKyk7cmV0dXJuIEVuPW4uc2xpY2UobywxPGk/MS1pOnZvaWQgMCl9ZnVuY3Rpb24gam4oZSl7dmFyIHQ9ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBlPzA9PT0oZT1lLmNoYXJDb2RlKSYmMTM9PT10JiYoZT0xMyk6ZT10LDMyPD0oZT0xMD09PWU/MTM6ZSl8fDEzPT09ZT9lOjB9ZnVuY3Rpb24gQW4oKXtyZXR1cm4hMH1mdW5jdGlvbiBQbigpe3JldHVybiExfWZ1bmN0aW9uIEluKGkpe2Z1bmN0aW9uIGUoZSx0LG4scixvKXtmb3IodmFyIGEgaW4gdGhpcy5fcmVhY3ROYW1lPWUsdGhpcy5fdGFyZ2V0SW5zdD1uLHRoaXMudHlwZT10LHRoaXMubmF0aXZlRXZlbnQ9cix0aGlzLnRhcmdldD1vLHRoaXMuY3VycmVudFRhcmdldD1udWxsLGkpaS5oYXNPd25Qcm9wZXJ0eShhKSYmKGU9aVthXSx0aGlzW2FdPWU/ZShyKTpyW2FdKTtyZXR1cm4gdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG51bGwhPXIuZGVmYXVsdFByZXZlbnRlZD9yLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1yLnJldHVyblZhbHVlKT9BbjpQbix0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPVBuLHRoaXN9cmV0dXJuIGcoZS5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOiJ1bmtub3duIiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1Bbil9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6InVua25vd24iIT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1Bbil9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt9LGlzUGVyc2lzdGVudDpBbn0pLGV9dmFyIF9uLHpuLFRuLGU9e2V2ZW50UGhhc2U6MCxidWJibGVzOjAsY2FuY2VsYWJsZTowLHRpbWVTdGFtcDpmdW5jdGlvbihlKXtyZXR1cm4gZS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6MCxpc1RydXN0ZWQ6MH0sTG49SW4oZSksdD1nKHt9LGUse3ZpZXc6MCxkZXRhaWw6MH0pLE1uPUluKHQpLHI9Zyh7fSx0LHtzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAscGFnZVg6MCxwYWdlWTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxnZXRNb2RpZmllclN0YXRlOkduLGJ1dHRvbjowLGJ1dHRvbnM6MCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lLnJlbGF0ZWRUYXJnZXQ/ZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRvRWxlbWVudDplLmZyb21FbGVtZW50OmUucmVsYXRlZFRhcmdldH0sbW92ZW1lbnRYOmZ1bmN0aW9uKGUpe3JldHVybiJtb3ZlbWVudFgiaW4gZT9lLm1vdmVtZW50WDooZSE9PVRuJiYoem49VG4mJiJtb3VzZW1vdmUiPT09ZS50eXBlPyhfbj1lLnNjcmVlblgtVG4uc2NyZWVuWCxlLnNjcmVlblktVG4uc2NyZWVuWSk6X249MCxUbj1lKSxfbil9LG1vdmVtZW50WTpmdW5jdGlvbihlKXtyZXR1cm4ibW92ZW1lbnRZImluIGU/ZS5tb3ZlbWVudFk6em59fSksUm49SW4ociksTm49SW4oZyh7fSxyLHtkYXRhVHJhbnNmZXI6MH0pKSxEbj1JbihnKHt9LHQse3JlbGF0ZWRUYXJnZXQ6MH0pKSxVbj1JbihnKHt9LGUse2FuaW1hdGlvbk5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pKSxCbj1JbihnKHt9LGUse2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuKCJjbGlwYm9hcmREYXRhImluIGU/ZTp3aW5kb3cpLmNsaXBib2FyZERhdGF9fSkpLEZuPUluKGcoe30sZSx7ZGF0YTowfSkpLEhuPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxWbj17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2UiLDIwOiJDYXBzTG9jayIsMjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFycm93RG93biIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIsMTEzOiJGMiIsMTE0OiJGMyIsMTE1OiJGNCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5OiJGOCIsMTIwOiJGOSIsMTIxOiJGMTAiLDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExvY2siLDIyNDoiTWV0YSJ9LCRuPXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtleSIsTWV0YToibWV0YUtleSIsU2hpZnQ6InNoaWZ0S2V5In07ZnVuY3Rpb24gV24oZSl7dmFyIHQ9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gdC5nZXRNb2RpZmllclN0YXRlP3QuZ2V0TW9kaWZpZXJTdGF0ZShlKTohIShlPSRuW2VdKSYmISF0W2VdfWZ1bmN0aW9uIEduKCl7cmV0dXJuIFdufXZhciBxbj1JbihnKHt9LHQse2tleTpmdW5jdGlvbihlKXtpZihlLmtleSl7dmFyIHQ9SG5bZS5rZXldfHxlLmtleTtpZigiVW5pZGVudGlmaWVkIiE9PXQpcmV0dXJuIHR9cmV0dXJuImtleXByZXNzIj09PWUudHlwZT8xMz09PShlPWpuKGUpKT8iRW50ZXIiOlN0cmluZy5mcm9tQ2hhckNvZGUoZSk6ImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP1ZuW2Uua2V5Q29kZV18fCJVbmlkZW50aWZpZWQiOiIifSxjb2RlOjAsbG9jYXRpb246MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAscmVwZWF0OjAsbG9jYWxlOjAsZ2V0TW9kaWZpZXJTdGF0ZTpHbixjaGFyQ29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlP2puKGUpOjB9LGtleUNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihlKXtyZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlP2puKGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH19KSksWm49SW4oZyh7fSxyLHtwb2ludGVySWQ6MCx3aWR0aDowLGhlaWdodDowLHByZXNzdXJlOjAsdGFuZ2VudGlhbFByZXNzdXJlOjAsdGlsdFg6MCx0aWx0WTowLHR3aXN0OjAscG9pbnRlclR5cGU6MCxpc1ByaW1hcnk6MH0pKSxYbj1JbihnKHt9LHQse3RvdWNoZXM6MCx0YXJnZXRUb3VjaGVzOjAsY2hhbmdlZFRvdWNoZXM6MCxhbHRLZXk6MCxtZXRhS2V5OjAsY3RybEtleTowLHNoaWZ0S2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTpHbn0pKSxZbj1JbihnKHt9LGUse3Byb3BlcnR5TmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSkpLFFuPUluKGcoe30scix7ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVgiaW4gZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4gZT8tZS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBlP2UuZGVsdGFZOiJ3aGVlbERlbHRhWSJpbiBlPy1lLndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImluIGU/LWUud2hlZWxEZWx0YTowfSxkZWx0YVo6MCxkZWx0YU1vZGU6MH0pKSxLbj1bOSwxMywyNywzMl0sSm49UiYmIkNvbXBvc2l0aW9uRXZlbnQiaW4gd2luZG93LHQ9bnVsbCxlcj0oUiYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKHQ9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSxSJiYiVGV4dEV2ZW50ImluIHdpbmRvdyYmIXQpLHRyPVImJighSm58fHQmJjg8dCYmdDw9MTEpLG5yPVN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLHJyPSExO2Z1bmN0aW9uIG9yKGUsdCl7c3dpdGNoKGUpe2Nhc2Uia2V5dXAiOnJldHVybi0xIT09S24uaW5kZXhPZih0LmtleUNvZGUpO2Nhc2Uia2V5ZG93biI6cmV0dXJuIDIyOSE9PXQua2V5Q29kZTtjYXNlImtleXByZXNzIjpjYXNlIm1vdXNlZG93biI6Y2FzZSJmb2N1c291dCI6cmV0dXJuIDE7ZGVmYXVsdDpyZXR1cm59fWZ1bmN0aW9uIGFyKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YoZT1lLmRldGFpbCkmJiJkYXRhImluIGU/ZS5kYXRhOm51bGx9dmFyIGlyPSExO3ZhciBscj17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCwiZGF0ZXRpbWUtbG9jYWwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH07ZnVuY3Rpb24gY3IoZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10P2xyW2UudHlwZV06InRleHRhcmVhIj09PXR9ZnVuY3Rpb24gdXIoZSx0LG4scil7bnQociksMDwodD1hbyh0LCJvbkNoYW5nZSIpKS5sZW5ndGgmJihuPW5ldyBMbigib25DaGFuZ2UiLCJjaGFuZ2UiLG51bGwsbixyKSxlLnB1c2goe2V2ZW50Om4sbGlzdGVuZXJzOnR9KSl9dmFyIHNyPW51bGwsZnI9bnVsbDtmdW5jdGlvbiBkcihlKXtLcihlLDApfWZ1bmN0aW9uIHByKGUpe2lmKFNlKFRvKGUpKSlyZXR1cm4gZX1mdW5jdGlvbiBtcihlLHQpe2lmKCJjaGFuZ2UiPT09ZSlyZXR1cm4gdH12YXIgaHI9ITE7ZnVuY3Rpb24gZ3IoKXtzciYmKHNyLmRldGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixiciksZnI9c3I9bnVsbCl9ZnVuY3Rpb24gYnIoZSl7dmFyIHQ7InZhbHVlIj09PWUucHJvcGVydHlOYW1lJiZwcihmcikmJih1cih0PVtdLGZyLGUsUWUoZSkpLGx0KGRyLHQpKX1mdW5jdGlvbiB5cihlLHQsbil7ImZvY3VzaW4iPT09ZT8oZ3IoKSxmcj1uLChzcj10KS5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsYnIpKToiZm9jdXNvdXQiPT09ZSYmZ3IoKX1mdW5jdGlvbiB2cihlKXtpZigic2VsZWN0aW9uY2hhbmdlIj09PWV8fCJrZXl1cCI9PT1lfHwia2V5ZG93biI9PT1lKXJldHVybiBwcihmcil9ZnVuY3Rpb24gd3IoZSx0KXtpZigiY2xpY2siPT09ZSlyZXR1cm4gcHIodCl9ZnVuY3Rpb24geHIoZSx0KXtpZigiaW5wdXQiPT09ZXx8ImNoYW5nZSI9PT1lKXJldHVybiBwcih0KX1SJiYodD1SJiYoKGU9Im9uaW5wdXQiaW4gZG9jdW1lbnQpfHwoKHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLnNldEF0dHJpYnV0ZSgib25pbnB1dCIsInJldHVybjsiKSxlPSJmdW5jdGlvbiI9PXR5cGVvZiByLm9uaW5wdXQpLGUpLGhyPXQmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSkpO3ZhciBrcj0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczpmdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKDAhPT1lfHwxL2U9PTEvdCl8fGUhPWUmJnQhPXR9O2Z1bmN0aW9uIFNyKGUsdCl7aWYoIWtyKGUsdCkpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSkscj1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PXIubGVuZ3RoKXJldHVybiExO2ZvcihyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl07aWYoIVcuY2FsbCh0LG8pfHwha3IoZVtvXSx0W29dKSlyZXR1cm4hMX19cmV0dXJuITB9ZnVuY3Rpb24gQ3IoZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIEVyKGUsdCl7dmFyIG4scj1DcihlKTtmb3IoZT0wO3I7KXtpZigzPT09ci5ub2RlVHlwZSl7aWYobj1lK3IudGV4dENvbnRlbnQubGVuZ3RoLGU8PXQmJnQ8PW4pcmV0dXJue25vZGU6cixvZmZzZXQ6dC1lfTtlPW59ZTp7Zm9yKDtyOyl7aWYoci5uZXh0U2libGluZyl7cj1yLm5leHRTaWJsaW5nO2JyZWFrIGV9cj1yLnBhcmVudE5vZGV9cj12b2lkIDB9cj1DcihyKX19ZnVuY3Rpb24gT3IoKXtmb3IodmFyIGU9d2luZG93LHQ9Q2UoKTt0IGluc3RhbmNlb2YgZS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgbj0ic3RyaW5nIj09dHlwZW9mIHQuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmfWNhdGNoKGUpe249ITF9aWYoIW4pYnJlYWs7dD1DZSgoZT10LmNvbnRlbnRXaW5kb3cpLmRvY3VtZW50KX1yZXR1cm4gdH1mdW5jdGlvbiBqcihlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQmJigiaW5wdXQiPT09dCYmKCJ0ZXh0Ij09PWUudHlwZXx8InNlYXJjaCI9PT1lLnR5cGV8fCJ0ZWwiPT09ZS50eXBlfHwidXJsIj09PWUudHlwZXx8InBhc3N3b3JkIj09PWUudHlwZSl8fCJ0ZXh0YXJlYSI9PT10fHwidHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9ZnVuY3Rpb24gQXIoZSl7dmFyIHQsbixyLG89T3IoKSxhPWUuZm9jdXNlZEVsZW0saT1lLnNlbGVjdGlvblJhbmdlO2lmKG8hPT1hJiZhJiZhLm93bmVyRG9jdW1lbnQmJmZ1bmN0aW9uIGUodCxuKXtyZXR1cm4hKCF0fHwhbikmJih0PT09bnx8KCF0fHwzIT09dC5ub2RlVHlwZSkmJihuJiYzPT09bi5ub2RlVHlwZT9lKHQsbi5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gdD90LmNvbnRhaW5zKG4pOiEhdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuKSkpKX0oYS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxhKSl7bnVsbCE9PWkmJmpyKGEpJiYobz1pLnN0YXJ0LHZvaWQgMD09PShlPWkuZW5kKSYmKGU9byksInNlbGVjdGlvblN0YXJ0ImluIGE/KGEuc2VsZWN0aW9uU3RhcnQ9byxhLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihlLGEudmFsdWUubGVuZ3RoKSk6KGU9KG89YS5vd25lckRvY3VtZW50fHxkb2N1bWVudCkmJm8uZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uJiYoZT1lLmdldFNlbGVjdGlvbigpLG49YS50ZXh0Q29udGVudC5sZW5ndGgsdD1NYXRoLm1pbihpLnN0YXJ0LG4pLGk9dm9pZCAwPT09aS5lbmQ/dDpNYXRoLm1pbihpLmVuZCxuKSwhZS5leHRlbmQmJmk8dCYmKG49aSxpPXQsdD1uKSxuPUVyKGEsdCkscj1FcihhLGkpLG4pJiZyJiYoMSE9PWUucmFuZ2VDb3VudHx8ZS5hbmNob3JOb2RlIT09bi5ub2RlfHxlLmFuY2hvck9mZnNldCE9PW4ub2Zmc2V0fHxlLmZvY3VzTm9kZSE9PXIubm9kZXx8ZS5mb2N1c09mZnNldCE9PXIub2Zmc2V0KSYmKChvPW8uY3JlYXRlUmFuZ2UoKSkuc2V0U3RhcnQobi5ub2RlLG4ub2Zmc2V0KSxlLnJlbW92ZUFsbFJhbmdlcygpLGk8dD8oZS5hZGRSYW5nZShvKSxlLmV4dGVuZChyLm5vZGUsci5vZmZzZXQpKTooby5zZXRFbmQoci5ub2RlLHIub2Zmc2V0KSxlLmFkZFJhbmdlKG8pKSkpLG89W107Zm9yKGU9YTtlPWUucGFyZW50Tm9kZTspMT09PWUubm9kZVR5cGUmJm8ucHVzaCh7ZWxlbWVudDplLGxlZnQ6ZS5zY3JvbGxMZWZ0LHRvcDplLnNjcm9sbFRvcH0pO2ZvcigiZnVuY3Rpb24iPT10eXBlb2YgYS5mb2N1cyYmYS5mb2N1cygpLGE9MDthPG8ubGVuZ3RoO2ErKykoZT1vW2FdKS5lbGVtZW50LnNjcm9sbExlZnQ9ZS5sZWZ0LGUuZWxlbWVudC5zY3JvbGxUb3A9ZS50b3B9fXZhciBQcj1SJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiZkb2N1bWVudC5kb2N1bWVudE1vZGU8PTExLElyPW51bGwsX3I9bnVsbCx6cj1udWxsLFRyPSExO2Z1bmN0aW9uIExyKGUsdCxuKXt2YXIgcj1uLndpbmRvdz09PW4/bi5kb2N1bWVudDo5PT09bi5ub2RlVHlwZT9uOm4ub3duZXJEb2N1bWVudDtUcnx8bnVsbD09SXJ8fElyIT09Q2Uocil8fChyPSJzZWxlY3Rpb25TdGFydCJpbihyPUlyKSYmanIocik/e3N0YXJ0OnIuc2VsZWN0aW9uU3RhcnQsZW5kOnIuc2VsZWN0aW9uRW5kfTp7YW5jaG9yTm9kZToocj0oci5vd25lckRvY3VtZW50JiZyLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uKCkpLmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OnIuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpyLmZvY3VzTm9kZSxmb2N1c09mZnNldDpyLmZvY3VzT2Zmc2V0fSx6ciYmU3IoenIscikpfHwoenI9ciwwPChyPWFvKF9yLCJvblNlbGVjdCIpKS5sZW5ndGgmJih0PW5ldyBMbigib25TZWxlY3QiLCJzZWxlY3QiLG51bGwsdCxuKSxlLnB1c2goe2V2ZW50OnQsbGlzdGVuZXJzOnJ9KSx0LnRhcmdldD1JcikpfWZ1bmN0aW9uIE1yKGUsdCl7dmFyIG49e307cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgpXT10LnRvTG93ZXJDYXNlKCksblsiV2Via2l0IitlXT0id2Via2l0Iit0LG5bIk1veiIrZV09Im1veiIrdCxufXZhciBScj17YW5pbWF0aW9uZW5kOk1yKCJBbmltYXRpb24iLCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25pdGVyYXRpb246TXIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkl0ZXJhdGlvbiIpLGFuaW1hdGlvbnN0YXJ0Ok1yKCJBbmltYXRpb24iLCJBbmltYXRpb25TdGFydCIpLHRyYW5zaXRpb25lbmQ6TXIoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uRW5kIil9LE5yPXt9LERyPXt9O2Z1bmN0aW9uIFVyKGUpe2lmKE5yW2VdKXJldHVybiBOcltlXTtpZihScltlXSl7dmFyIHQsbj1ScltlXTtmb3IodCBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkodCkmJnQgaW4gRHIpcmV0dXJuIE5yW2VdPW5bdF19cmV0dXJuIGV9UiYmKERyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJBbmltYXRpb25FdmVudCJpbiB3aW5kb3d8fChkZWxldGUgUnIuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgUnIuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgUnIuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSwiVHJhbnNpdGlvbkV2ZW50ImluIHdpbmRvd3x8ZGVsZXRlIFJyLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7dmFyIEJyPVVyKCJhbmltYXRpb25lbmQiKSxGcj1VcigiYW5pbWF0aW9uaXRlcmF0aW9uIiksSHI9VXIoImFuaW1hdGlvbnN0YXJ0IiksVnI9VXIoInRyYW5zaXRpb25lbmQiKSwkcj1uZXcgTWFwLFdyPSJhYm9ydCBhdXhDbGljayBjYW5jZWwgY2FuUGxheSBjYW5QbGF5VGhyb3VnaCBjbGljayBjbG9zZSBjb250ZXh0TWVudSBjb3B5IGN1dCBkcmFnIGRyYWdFbmQgZHJhZ0VudGVyIGRyYWdFeGl0IGRyYWdMZWF2ZSBkcmFnT3ZlciBkcmFnU3RhcnQgZHJvcCBkdXJhdGlvbkNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBnb3RQb2ludGVyQ2FwdHVyZSBpbnB1dCBpbnZhbGlkIGtleURvd24ga2V5UHJlc3Mga2V5VXAgbG9hZCBsb2FkZWREYXRhIGxvYWRlZE1ldGFkYXRhIGxvYWRTdGFydCBsb3N0UG9pbnRlckNhcHR1cmUgbW91c2VEb3duIG1vdXNlTW92ZSBtb3VzZU91dCBtb3VzZU92ZXIgbW91c2VVcCBwYXN0ZSBwYXVzZSBwbGF5IHBsYXlpbmcgcG9pbnRlckNhbmNlbCBwb2ludGVyRG93biBwb2ludGVyTW92ZSBwb2ludGVyT3V0IHBvaW50ZXJPdmVyIHBvaW50ZXJVcCBwcm9ncmVzcyByYXRlQ2hhbmdlIHJlc2V0IHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1Ym1pdCBzdXNwZW5kIHRpbWVVcGRhdGUgdG91Y2hDYW5jZWwgdG91Y2hFbmQgdG91Y2hTdGFydCB2b2x1bWVDaGFuZ2Ugc2Nyb2xsIHRvZ2dsZSB0b3VjaE1vdmUgd2FpdGluZyB3aGVlbCIuc3BsaXQoIiAiKTtmdW5jdGlvbiBHcihlLHQpeyRyLnNldChlLHQpLFYodCxbZV0pfWZvcih2YXIgcXI9MDtxcjxXci5sZW5ndGg7cXIrKyl7dmFyIFpyPVdyW3FyXTtHcihaci50b0xvd2VyQ2FzZSgpLCJvbiIrKFpyWzBdLnRvVXBwZXJDYXNlKCkrWnIuc2xpY2UoMSkpKX1HcihCciwib25BbmltYXRpb25FbmQiKSxHcihGciwib25BbmltYXRpb25JdGVyYXRpb24iKSxHcihIciwib25BbmltYXRpb25TdGFydCIpLEdyKCJkYmxjbGljayIsIm9uRG91YmxlQ2xpY2siKSxHcigiZm9jdXNpbiIsIm9uRm9jdXMiKSxHcigiZm9jdXNvdXQiLCJvbkJsdXIiKSxHcihWciwib25UcmFuc2l0aW9uRW5kIiksJCgib25Nb3VzZUVudGVyIixbIm1vdXNlb3V0IiwibW91c2VvdmVyIl0pLCQoIm9uTW91c2VMZWF2ZSIsWyJtb3VzZW91dCIsIm1vdXNlb3ZlciJdKSwkKCJvblBvaW50ZXJFbnRlciIsWyJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiXSksJCgib25Qb2ludGVyTGVhdmUiLFsicG9pbnRlcm91dCIsInBvaW50ZXJvdmVyIl0pLFYoIm9uQ2hhbmdlIiwiY2hhbmdlIGNsaWNrIGZvY3VzaW4gZm9jdXNvdXQgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2UiLnNwbGl0KCIgIikpLFYoIm9uU2VsZWN0IiwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKSxWKCJvbkJlZm9yZUlucHV0IixbImNvbXBvc2l0aW9uZW5kIiwia2V5cHJlc3MiLCJ0ZXh0SW5wdXQiLCJwYXN0ZSJdKSxWKCJvbkNvbXBvc2l0aW9uRW5kIiwiY29tcG9zaXRpb25lbmQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpLFYoIm9uQ29tcG9zaXRpb25TdGFydCIsImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpLFYoIm9uQ29tcG9zaXRpb25VcGRhdGUiLCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSk7dmFyIFhyPSJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZyIuc3BsaXQoIiAiKSxZcj1uZXcgU2V0KCJjYW5jZWwgY2xvc2UgaW52YWxpZCBsb2FkIHNjcm9sbCB0b2dnbGUiLnNwbGl0KCIgIikuY29uY2F0KFhyKSk7ZnVuY3Rpb24gUXIoZSx0LG4pe3ZhciByPWUudHlwZXx8InVua25vd24tZXZlbnQiO2UuY3VycmVudFRhcmdldD1uLGZ1bmN0aW9uKCl7dmFyIGU7aHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHN0JiYoZT1mdCxzdD0hMSxmdD1udWxsLGR0fHwoZHQ9ITAscHQ9ZSkpfShyLHQsdm9pZCAwLGUpLGUuY3VycmVudFRhcmdldD1udWxsfWZ1bmN0aW9uIEtyKGUsdCl7dD0wIT0oNCZ0KTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9KG89ZVtuXSkuZXZlbnQsbz1vLmxpc3RlbmVycztlOnt2YXIgYT12b2lkIDA7aWYodClmb3IodmFyIGk9by5sZW5ndGgtMTswPD1pO2ktLSl7dmFyIGw9KHU9b1tpXSkuaW5zdGFuY2UsYz11LmN1cnJlbnRUYXJnZXQsdT11Lmxpc3RlbmVyO2lmKGwhPT1hJiZyLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgZTtRcihyLHUsYyksYT1sfWVsc2UgZm9yKGk9MDtpPG8ubGVuZ3RoO2krKyl7aWYobD0odT1vW2ldKS5pbnN0YW5jZSxjPXUuY3VycmVudFRhcmdldCx1PXUubGlzdGVuZXIsbCE9PWEmJnIuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBlO1FyKHIsdSxjKSxhPWx9fX1pZihkdCl0aHJvdyBlPXB0LGR0PSExLHB0PW51bGwsZX1mdW5jdGlvbiBzKGUsdCl7dmFyIG49dFtBb10scj1lKyJfX2J1YmJsZSI7KG49dm9pZCAwPT09bj90W0FvXT1uZXcgU2V0Om4pLmhhcyhyKXx8KG5vKHQsZSwyLCExKSxuLmFkZChyKSl9ZnVuY3Rpb24gSnIoZSx0LG4pe3ZhciByPTA7dCYmKHJ8PTQpLG5vKG4sZSxyLHQpfXZhciBlbz0iX3JlYWN0TGlzdGVuaW5nIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtmdW5jdGlvbiB0byh0KXt2YXIgZTt0W2VvXXx8KHRbZW9dPSEwLEYuZm9yRWFjaChmdW5jdGlvbihlKXsic2VsZWN0aW9uY2hhbmdlIiE9PWUmJihZci5oYXMoZSl8fEpyKGUsITEsdCksSnIoZSwhMCx0KSl9KSxudWxsPT09KGU9OT09PXQubm9kZVR5cGU/dDp0Lm93bmVyRG9jdW1lbnQpKXx8ZVtlb118fEpyKCJzZWxlY3Rpb25jaGFuZ2UiLCEoZVtlb109ITApLGUpfWZ1bmN0aW9uIG5vKGUsdCxuLHIpe3N3aXRjaChrbih0KSl7Y2FzZSAxOnZhciBvPWJuO2JyZWFrO2Nhc2UgNDpvPXluO2JyZWFrO2RlZmF1bHQ6bz12bn1uPW8uYmluZChudWxsLHQsbixlKSxvPSF1dHx8InRvdWNoc3RhcnQiIT09dCYmInRvdWNobW92ZSIhPT10JiYid2hlZWwiIT09dD92b2lkIDA6ITAscj92b2lkIDAhPT1vP2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4se2NhcHR1cmU6ITAscGFzc2l2ZTpvfSk6ZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMCk6dm9pZCAwIT09bz9lLmFkZEV2ZW50TGlzdGVuZXIodCxuLHtwYXNzaXZlOm99KTplLmFkZEV2ZW50TGlzdGVuZXIodCxuLCExKX1mdW5jdGlvbiBybyhnLGIseSxlLHQpe3ZhciB2PWU7aWYoMD09KDEmYikmJjA9PSgyJmIpJiZudWxsIT09ZSllOmZvcig7Oyl7aWYobnVsbD09PWUpcmV0dXJuO3ZhciBuPWUudGFnO2lmKDM9PT1ufHw0PT09bil7dmFyIHI9ZS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztpZihyPT09dHx8OD09PXIubm9kZVR5cGUmJnIucGFyZW50Tm9kZT09PXQpYnJlYWs7aWYoND09PW4pZm9yKG49ZS5yZXR1cm47bnVsbCE9PW47KXt2YXIgbz1uLnRhZztpZigoMz09PW98fDQ9PT1vKSYmKChvPW4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pPT09dHx8OD09PW8ubm9kZVR5cGUmJm8ucGFyZW50Tm9kZT09PXQpKXJldHVybjtuPW4ucmV0dXJufWZvcig7bnVsbCE9PXI7KXtpZihudWxsPT09KG49X28ocikpKXJldHVybjtpZig1PT09KG89bi50YWcpfHw2PT09byl7ZT12PW47Y29udGludWUgZX1yPXIucGFyZW50Tm9kZX19ZT1lLnJldHVybn1sdChmdW5jdGlvbigpe3ZhciBlLHQsbixyPXYsbz1RZSh5KSxhPVtdO2U6e3ZhciBpPSRyLmdldChnKTtpZih2b2lkIDAhPT1pKXt2YXIgbD1MbixjPWc7c3dpdGNoKGcpe2Nhc2Uia2V5cHJlc3MiOmlmKDA9PT1qbih5KSlicmVhayBlO2Nhc2Uia2V5ZG93biI6Y2FzZSJrZXl1cCI6bD1xbjticmVhaztjYXNlImZvY3VzaW4iOmM9ImZvY3VzIixsPURuO2JyZWFrO2Nhc2UiZm9jdXNvdXQiOmM9ImJsdXIiLGw9RG47YnJlYWs7Y2FzZSJiZWZvcmVibHVyIjpjYXNlImFmdGVyYmx1ciI6bD1EbjticmVhaztjYXNlImNsaWNrIjppZigyPT09eS5idXR0b24pYnJlYWsgZTtjYXNlImF1eGNsaWNrIjpjYXNlImRibGNsaWNrIjpjYXNlIm1vdXNlZG93biI6Y2FzZSJtb3VzZW1vdmUiOmNhc2UibW91c2V1cCI6Y2FzZSJtb3VzZW91dCI6Y2FzZSJtb3VzZW92ZXIiOmNhc2UiY29udGV4dG1lbnUiOmw9Um47YnJlYWs7Y2FzZSJkcmFnIjpjYXNlImRyYWdlbmQiOmNhc2UiZHJhZ2VudGVyIjpjYXNlImRyYWdleGl0IjpjYXNlImRyYWdsZWF2ZSI6Y2FzZSJkcmFnb3ZlciI6Y2FzZSJkcmFnc3RhcnQiOmNhc2UiZHJvcCI6bD1ObjticmVhaztjYXNlInRvdWNoY2FuY2VsIjpjYXNlInRvdWNoZW5kIjpjYXNlInRvdWNobW92ZSI6Y2FzZSJ0b3VjaHN0YXJ0IjpsPVhuO2JyZWFrO2Nhc2UgQnI6Y2FzZSBGcjpjYXNlIEhyOmw9VW47YnJlYWs7Y2FzZSBWcjpsPVluO2JyZWFrO2Nhc2Uic2Nyb2xsIjpsPU1uO2JyZWFrO2Nhc2Uid2hlZWwiOmw9UW47YnJlYWs7Y2FzZSJjb3B5IjpjYXNlImN1dCI6Y2FzZSJwYXN0ZSI6bD1CbjticmVhaztjYXNlImdvdHBvaW50ZXJjYXB0dXJlIjpjYXNlImxvc3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSJwb2ludGVyY2FuY2VsIjpjYXNlInBvaW50ZXJkb3duIjpjYXNlInBvaW50ZXJtb3ZlIjpjYXNlInBvaW50ZXJvdXQiOmNhc2UicG9pbnRlcm92ZXIiOmNhc2UicG9pbnRlcnVwIjpsPVpufWZvcih2YXIgdT0hKGY9MCE9KDQmYikpJiYic2Nyb2xsIj09PWcscz1mP251bGwhPT1pP2krIkNhcHR1cmUiOm51bGw6aSxmPVtdLGQ9cjtudWxsIT09ZDspe3ZhciBwLG09KHA9ZCkuc3RhdGVOb2RlO2lmKDU9PT1wLnRhZyYmbnVsbCE9PW0mJihwPW0sbnVsbCE9PXMpJiZudWxsIT0obT1jdChkLHMpKSYmZi5wdXNoKG9vKGQsbSxwKSksdSlicmVhaztkPWQucmV0dXJufTA8Zi5sZW5ndGgmJihpPW5ldyBsKGksYyxudWxsLHksbyksYS5wdXNoKHtldmVudDppLGxpc3RlbmVyczpmfSkpfX1pZigwPT0oNyZiKSl7aWYobD0ibW91c2VvdXQiPT09Z3x8InBvaW50ZXJvdXQiPT09ZywoIShpPSJtb3VzZW92ZXIiPT09Z3x8InBvaW50ZXJvdmVyIj09PWcpfHx5PT09WWV8fCEoYz15LnJlbGF0ZWRUYXJnZXR8fHkuZnJvbUVsZW1lbnQpfHwhX28oYykmJiFjW2pvXSkmJihsfHxpKSYmKGk9by53aW5kb3c9PT1vP286KGk9by5vd25lckRvY3VtZW50KT9pLmRlZmF1bHRWaWV3fHxpLnBhcmVudFdpbmRvdzp3aW5kb3csbD8obD1yLG51bGwhPT0oYz0oYz15LnJlbGF0ZWRUYXJnZXR8fHkudG9FbGVtZW50KT9fbyhjKTpudWxsKSYmKGMhPT0odT1ndChjKSl8fDUhPT1jLnRhZyYmNiE9PWMudGFnKSYmKGM9bnVsbCkpOihsPW51bGwsYz1yKSxsIT09Yykpe2lmKGY9Um4sbT0ib25Nb3VzZUxlYXZlIixzPSJvbk1vdXNlRW50ZXIiLGQ9Im1vdXNlIiwicG9pbnRlcm91dCIhPT1nJiYicG9pbnRlcm92ZXIiIT09Z3x8KGY9Wm4sbT0ib25Qb2ludGVyTGVhdmUiLHM9Im9uUG9pbnRlckVudGVyIixkPSJwb2ludGVyIiksdT1udWxsPT1sP2k6VG8obCkscD1udWxsPT1jP2k6VG8oYyksKGk9bmV3IGYobSxkKyJsZWF2ZSIsbCx5LG8pKS50YXJnZXQ9dSxpLnJlbGF0ZWRUYXJnZXQ9cCxtPW51bGwsX28obyk9PT1yJiYoKGY9bmV3IGYocyxkKyJlbnRlciIsYyx5LG8pKS50YXJnZXQ9cCxmLnJlbGF0ZWRUYXJnZXQ9dSxtPWYpLHU9bSxsJiZjKWU6e2ZvcihzPWMsZD0wLHA9Zj1sO3A7cD1pbyhwKSlkKys7Zm9yKHA9MCxtPXM7bTttPWlvKG0pKXArKztmb3IoOzA8ZC1wOylmPWlvKGYpLGQtLTtmb3IoOzA8cC1kOylzPWlvKHMpLHAtLTtmb3IoO2QtLTspe2lmKGY9PT1zfHxudWxsIT09cyYmZj09PXMuYWx0ZXJuYXRlKWJyZWFrIGU7Zj1pbyhmKSxzPWlvKHMpfWY9bnVsbH1lbHNlIGY9bnVsbDtudWxsIT09bCYmbG8oYSxpLGwsZiwhMSksbnVsbCE9PWMmJm51bGwhPT11JiZsbyhhLHUsYyxmLCEwKX1zd2l0Y2goInNlbGVjdCI9PT0obD0oaT1yP1RvKHIpOndpbmRvdykubm9kZU5hbWUmJmkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl8fCJpbnB1dCI9PT1sJiYiZmlsZSI9PT1pLnR5cGU/ZT1tcjpjcihpKT9ocj9lPXhyOihlPXZyLHQ9eXIpOiEobD1pLm5vZGVOYW1lKXx8ImlucHV0IiE9PWwudG9Mb3dlckNhc2UoKXx8ImNoZWNrYm94IiE9PWkudHlwZSYmInJhZGlvIiE9PWkudHlwZXx8KGU9d3IpLChlPWUmJmUoZyxyKSk/dXIoYSxlLHksbyk6KHQmJnQoZyxpLHIpLCJmb2N1c291dCI9PT1nJiYodD1pLl93cmFwcGVyU3RhdGUpJiZ0LmNvbnRyb2xsZWQmJiJudW1iZXIiPT09aS50eXBlJiZJZShpLCJudW1iZXIiLGkudmFsdWUpKSx0PXI/VG8ocik6d2luZG93LGcpe2Nhc2UiZm9jdXNpbiI6IWNyKHQpJiYidHJ1ZSIhPT10LmNvbnRlbnRFZGl0YWJsZXx8KElyPXQsX3I9cix6cj1udWxsKTticmVhaztjYXNlImZvY3Vzb3V0Ijp6cj1fcj1Jcj1udWxsO2JyZWFrO2Nhc2UibW91c2Vkb3duIjpUcj0hMDticmVhaztjYXNlImNvbnRleHRtZW51IjpjYXNlIm1vdXNldXAiOmNhc2UiZHJhZ2VuZCI6VHI9ITEsTHIoYSx5LG8pO2JyZWFrO2Nhc2Uic2VsZWN0aW9uY2hhbmdlIjppZihQcilicmVhaztjYXNlImtleWRvd24iOmNhc2Uia2V5dXAiOkxyKGEseSxvKX1pZihKbillOntzd2l0Y2goZyl7Y2FzZSJjb21wb3NpdGlvbnN0YXJ0Ijp2YXIgaD0ib25Db21wb3NpdGlvblN0YXJ0IjticmVhayBlO2Nhc2UiY29tcG9zaXRpb25lbmQiOmg9Im9uQ29tcG9zaXRpb25FbmQiO2JyZWFrIGU7Y2FzZSJjb21wb3NpdGlvbnVwZGF0ZSI6aD0ib25Db21wb3NpdGlvblVwZGF0ZSI7YnJlYWsgZX1oPXZvaWQgMH1lbHNlIGlyP29yKGcseSkmJihoPSJvbkNvbXBvc2l0aW9uRW5kIik6ImtleWRvd24iPT09ZyYmMjI5PT09eS5rZXlDb2RlJiYoaD0ib25Db21wb3NpdGlvblN0YXJ0Iik7aCYmKHRyJiYia28iIT09eS5sb2NhbGUmJihpcnx8Im9uQ29tcG9zaXRpb25TdGFydCIhPT1oPyJvbkNvbXBvc2l0aW9uRW5kIj09PWgmJmlyJiYobj1PbigpKTooQ249InZhbHVlImluKFNuPW8pP1NuLnZhbHVlOlNuLnRleHRDb250ZW50LGlyPSEwKSksMDwodD1hbyhyLGgpKS5sZW5ndGgpJiYoaD1uZXcgRm4oaCxnLG51bGwseSxvKSxhLnB1c2goe2V2ZW50OmgsbGlzdGVuZXJzOnR9KSxufHxudWxsIT09KG49YXIoeSkpKSYmKGguZGF0YT1uKSwobj0oZXI/ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJjb21wb3NpdGlvbmVuZCI6cmV0dXJuIGFyKHQpO2Nhc2Uia2V5cHJlc3MiOnJldHVybiAzMiE9PXQud2hpY2g/bnVsbDoocnI9ITAsbnIpO2Nhc2UidGV4dElucHV0IjpyZXR1cm4oZT10LmRhdGEpPT09bnImJnJyP251bGw6ZTtkZWZhdWx0OnJldHVybiBudWxsfX06ZnVuY3Rpb24oZSx0KXtpZihpcilyZXR1cm4iY29tcG9zaXRpb25lbmQiPT09ZXx8IUpuJiZvcihlLHQpPyhlPU9uKCksRW49Q249U249bnVsbCxpcj0hMSxlKTpudWxsO3N3aXRjaChlKXtjYXNlInBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlImtleXByZXNzIjppZighKHQuY3RybEtleXx8dC5hbHRLZXl8fHQubWV0YUtleSl8fHQuY3RybEtleSYmdC5hbHRLZXkpe2lmKHQuY2hhciYmMTx0LmNoYXIubGVuZ3RoKXJldHVybiB0LmNoYXI7aWYodC53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlImNvbXBvc2l0aW9uZW5kIjpyZXR1cm4gdHImJiJrbyIhPT10LmxvY2FsZT9udWxsOnQuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX0pKGcseSkpJiYwPChyPWFvKHIsIm9uQmVmb3JlSW5wdXQiKSkubGVuZ3RoJiYobz1uZXcgRm4oIm9uQmVmb3JlSW5wdXQiLCJiZWZvcmVpbnB1dCIsbnVsbCx5LG8pLGEucHVzaCh7ZXZlbnQ6byxsaXN0ZW5lcnM6cn0pLG8uZGF0YT1uKX1LcihhLGIpfSl9ZnVuY3Rpb24gb28oZSx0LG4pe3JldHVybntpbnN0YW5jZTplLGxpc3RlbmVyOnQsY3VycmVudFRhcmdldDpufX1mdW5jdGlvbiBhbyhlLHQpe2Zvcih2YXIgbj10KyJDYXB0dXJlIixyPVtdO251bGwhPT1lOyl7dmFyIG89ZSxhPW8uc3RhdGVOb2RlOzU9PT1vLnRhZyYmbnVsbCE9PWEmJihvPWEsbnVsbCE9KGE9Y3QoZSxuKSkmJnIudW5zaGlmdChvbyhlLGEsbykpLG51bGwhPShhPWN0KGUsdCkpKSYmci5wdXNoKG9vKGUsYSxvKSksZT1lLnJldHVybn1yZXR1cm4gcn1mdW5jdGlvbiBpbyhlKXtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDtmb3IoOyhlPWUucmV0dXJuKSYmNSE9PWUudGFnOyk7cmV0dXJuIGV8fG51bGx9ZnVuY3Rpb24gbG8oZSx0LG4scixvKXtmb3IodmFyIGE9dC5fcmVhY3ROYW1lLGk9W107bnVsbCE9PW4mJm4hPT1yOyl7dmFyIGw9bixjPWwuYWx0ZXJuYXRlLHU9bC5zdGF0ZU5vZGU7aWYobnVsbCE9PWMmJmM9PT1yKWJyZWFrOzU9PT1sLnRhZyYmbnVsbCE9PXUmJihsPXUsbz9udWxsIT0oYz1jdChuLGEpKSYmaS51bnNoaWZ0KG9vKG4sYyxsKSk6bnVsbCE9KGM9Y3QobixhKSkmJmkucHVzaChvbyhuLGMsbCkpKSxuPW4ucmV0dXJufTAhPT1pLmxlbmd0aCYmZS5wdXNoKHtldmVudDp0LGxpc3RlbmVyczppfSl9dmFyIGNvPS9cclxuPy9nLHVvPS9cdTAwMDB8XHVGRkZEL2c7ZnVuY3Rpb24gc28oZSl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgZT9lOiIiK2UpLnJlcGxhY2UoY28sIlxuIikucmVwbGFjZSh1bywiIil9ZnVuY3Rpb24gZm8oZSx0LG4pe2lmKHQ9c28odCksc28oZSkhPT10JiZuKXRocm93IEVycm9yKEQoNDI1KSl9ZnVuY3Rpb24gcG8oKXt9dmFyIG1vPW51bGwsaG89bnVsbDtmdW5jdGlvbiBnbyhlLHQpe3JldHVybiJ0ZXh0YXJlYSI9PT1lfHwibm9zY3JpcHQiPT09ZXx8InN0cmluZyI9PXR5cGVvZiB0LmNoaWxkcmVufHwibnVtYmVyIj09dHlwZW9mIHQuY2hpbGRyZW58fCJvYmplY3QiPT10eXBlb2YgdC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfXZhciBibz0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OnZvaWQgMCx5bz0iZnVuY3Rpb24iPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDp2b2lkIDAsdm89ImZ1bmN0aW9uIj09dHlwZW9mIFByb21pc2U/UHJvbWlzZTp2b2lkIDAsd289ImZ1bmN0aW9uIj09dHlwZW9mIHF1ZXVlTWljcm90YXNrP3F1ZXVlTWljcm90YXNrOnZvaWQgMCE9PXZvP2Z1bmN0aW9uKGUpe3JldHVybiB2by5yZXNvbHZlKG51bGwpLnRoZW4oZSkuY2F0Y2goeG8pfTpibztmdW5jdGlvbiB4byhlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfWZ1bmN0aW9uIGtvKGUsdCl7dmFyIG49dCxyPTA7ZG97dmFyIG89bi5uZXh0U2libGluZztpZihlLnJlbW92ZUNoaWxkKG4pLG8mJjg9PT1vLm5vZGVUeXBlKWlmKCIvJCI9PT0obj1vLmRhdGEpKXtpZigwPT09cilyZXR1cm4gZS5yZW1vdmVDaGlsZChvKSx2b2lkIG1uKHQpO3ItLX1lbHNlIiQiIT09biYmIiQ/IiE9PW4mJiIkISIhPT1ufHxyKyt9d2hpbGUobj1vKTttbih0KX1mdW5jdGlvbiBTbyhlKXtmb3IoO251bGwhPWU7ZT1lLm5leHRTaWJsaW5nKXt2YXIgdD1lLm5vZGVUeXBlO2lmKDE9PT10fHwzPT09dClicmVhaztpZig4PT09dCl7aWYoIiQiPT09KHQ9ZS5kYXRhKXx8IiQhIj09PXR8fCIkPyI9PT10KWJyZWFrO2lmKCIvJCI9PT10KXJldHVybiBudWxsfX1yZXR1cm4gZX1mdW5jdGlvbiBDbyhlKXtlPWUucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgdD0wO2U7KXtpZig4PT09ZS5ub2RlVHlwZSl7dmFyIG49ZS5kYXRhO2lmKCIkIj09PW58fCIkISI9PT1ufHwiJD8iPT09bil7aWYoMD09PXQpcmV0dXJuIGU7dC0tfWVsc2UiLyQiPT09biYmdCsrfWU9ZS5wcmV2aW91c1NpYmxpbmd9cmV0dXJuIG51bGx9dmFyIHI9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksRW89Il9fcmVhY3RGaWJlciQiK3IsT289Il9fcmVhY3RQcm9wcyQiK3Isam89Il9fcmVhY3RDb250YWluZXIkIityLEFvPSJfX3JlYWN0RXZlbnRzJCIrcixQbz0iX19yZWFjdExpc3RlbmVycyQiK3IsSW89Il9fcmVhY3RIYW5kbGVzJCIrcjtmdW5jdGlvbiBfbyhlKXt2YXIgdD1lW0VvXTtpZih0KXJldHVybiB0O2Zvcih2YXIgbj1lLnBhcmVudE5vZGU7bjspe2lmKHQ9bltqb118fG5bRW9dKXtpZihuPXQuYWx0ZXJuYXRlLG51bGwhPT10LmNoaWxkfHxudWxsIT09biYmbnVsbCE9PW4uY2hpbGQpZm9yKGU9Q28oZSk7bnVsbCE9PWU7KXtpZihuPWVbRW9dKXJldHVybiBuO2U9Q28oZSl9cmV0dXJuIHR9bj0oZT1uKS5wYXJlbnROb2RlfXJldHVybiBudWxsfWZ1bmN0aW9uIHpvKGUpe3JldHVybiEoZT1lW0VvXXx8ZVtqb10pfHw1IT09ZS50YWcmJjYhPT1lLnRhZyYmMTMhPT1lLnRhZyYmMyE9PWUudGFnP251bGw6ZX1mdW5jdGlvbiBUbyhlKXtpZig1PT09ZS50YWd8fDY9PT1lLnRhZylyZXR1cm4gZS5zdGF0ZU5vZGU7dGhyb3cgRXJyb3IoRCgzMykpfWZ1bmN0aW9uIExvKGUpe3JldHVybiBlW09vXXx8bnVsbH12YXIgTW89W10sUm89LTE7ZnVuY3Rpb24gTm8oZSl7cmV0dXJue2N1cnJlbnQ6ZX19ZnVuY3Rpb24gdShlKXtSbzwwfHwoZS5jdXJyZW50PU1vW1JvXSxNb1tSb109bnVsbCxSby0tKX1mdW5jdGlvbiBiKGUsdCl7TW9bKytSb109ZS5jdXJyZW50LGUuY3VycmVudD10fXZhciBEbz17fSx5PU5vKERvKSx2PU5vKCExKSxVbz1EbztmdW5jdGlvbiBCbyhlLHQpe3ZhciBuPWUudHlwZS5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIERvO3ZhciByPWUuc3RhdGVOb2RlO2lmKHImJnIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PXQpcmV0dXJuIHIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIG8sYT17fTtmb3IobyBpbiBuKWFbb109dFtvXTtyZXR1cm4gciYmKChlPWUuc3RhdGVOb2RlKS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PXQsZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1hKSxhfWZ1bmN0aW9uIHcoZSl7cmV0dXJuIG51bGwhPShlPWUuY2hpbGRDb250ZXh0VHlwZXMpfWZ1bmN0aW9uIEZvKCl7dSh2KSx1KHkpfWZ1bmN0aW9uIEhvKGUsdCxuKXtpZih5LmN1cnJlbnQhPT1Ebyl0aHJvdyBFcnJvcihEKDE2OCkpO2IoeSx0KSxiKHYsbil9ZnVuY3Rpb24gVm8oZSx0LG4pe3ZhciByLG89ZS5zdGF0ZU5vZGU7aWYodD10LmNoaWxkQ29udGV4dFR5cGVzLCJmdW5jdGlvbiIhPXR5cGVvZiBvLmdldENoaWxkQ29udGV4dClyZXR1cm4gbjtmb3IociBpbiBvPW8uZ2V0Q2hpbGRDb250ZXh0KCkpaWYoIShyIGluIHQpKXRocm93IEVycm9yKEQoMTA4LHZlKGUpfHwiVW5rbm93biIscikpO3JldHVybiBnKHt9LG4sbyl9ZnVuY3Rpb24gJG8oZSl7ZT0oZT1lLnN0YXRlTm9kZSkmJmUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHR8fERvLFVvPXkuY3VycmVudCxiKHksZSksYih2LHYuY3VycmVudCl9ZnVuY3Rpb24gV28oZSx0LG4pe3ZhciByPWUuc3RhdGVOb2RlO2lmKCFyKXRocm93IEVycm9yKEQoMTY5KSk7bj8oZT1WbyhlLHQsVW8pLHIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ9ZSx1KHYpLHUoeSksYih5LGUpKTp1KHYpLGIodixuKX12YXIgR289bnVsbCxxbz0hMSxabz0hMTtmdW5jdGlvbiBYbyhlKXtudWxsPT09R28/R289W2VdOkdvLnB1c2goZSl9ZnVuY3Rpb24gWW8oKXtpZighWm8mJm51bGwhPT1Hbyl7Wm89ITA7dmFyIHQ9MCxlPXg7dHJ5e3ZhciBuPUdvO2Zvcih4PTE7dDxuLmxlbmd0aDt0KyspZm9yKHZhciByPW5bdF07bnVsbCE9PShyPXIoITApKTspO0dvPW51bGwscW89ITF9Y2F0Y2goZSl7dGhyb3cgbnVsbCE9PUdvJiYoR289R28uc2xpY2UodCsxKSksd3QoRXQsWW8pLGV9ZmluYWxseXt4PWUsWm89ITF9fXJldHVybiBudWxsfXZhciBRbz1bXSxLbz0wLEpvPW51bGwsZWE9MCx0YT1bXSxuYT0wLHJhPW51bGwsb2E9MSxhYT0iIjtmdW5jdGlvbiBpYShlLHQpe1FvW0tvKytdPWVhLFFvW0tvKytdPUpvLEpvPWUsZWE9dH1mdW5jdGlvbiBsYShlLHQsbil7dGFbbmErK109b2EsdGFbbmErK109YWEsdGFbbmErK109cmEscmE9ZTt2YXIgcixvPW9hLGE9KGU9YWEsMzItenQobyktMSksaT0obyY9figxPDxhKSxuKz0xLDMyLXp0KHQpK2EpO2FhPTMwPGk/KGk9KG8mKDE8PChyPWEtYSU1KSktMSkudG9TdHJpbmcoMzIpLG8+Pj1yLGEtPXIsb2E9MTw8MzItenQodCkrYXxuPDxhfG8saStlKToob2E9MTw8aXxuPDxhfG8sZSl9ZnVuY3Rpb24gY2EoZSl7bnVsbCE9PWUucmV0dXJuJiYoaWEoZSwxKSxsYShlLDEsMCkpfWZ1bmN0aW9uIHVhKGUpe2Zvcig7ZT09PUpvOylKbz1Rb1stLUtvXSxRb1tLb109bnVsbCxlYT1Rb1stLUtvXSxRb1tLb109bnVsbDtmb3IoO2U9PT1yYTspcmE9dGFbLS1uYV0sdGFbbmFdPW51bGwsYWE9dGFbLS1uYV0sdGFbbmFdPW51bGwsb2E9dGFbLS1uYV0sdGFbbmFdPW51bGx9dmFyIHNhPW51bGwsaz1udWxsLFU9ITEsZmE9bnVsbDtmdW5jdGlvbiBkYShlLHQpe3ZhciBuPW51KDUsbnVsbCxudWxsLDApO24uZWxlbWVudFR5cGU9IkRFTEVURUQiLG4uc3RhdGVOb2RlPXQsbnVsbD09PSh0PShuLnJldHVybj1lKS5kZWxldGlvbnMpPyhlLmRlbGV0aW9ucz1bbl0sZS5mbGFnc3w9MTYpOnQucHVzaChuKX1mdW5jdGlvbiBwYShlLHQpe3N3aXRjaChlLnRhZyl7Y2FzZSA1OnZhciBuPWUudHlwZTtyZXR1cm4gbnVsbCE9PSh0PTEhPT10Lm5vZGVUeXBlfHxuLnRvTG93ZXJDYXNlKCkhPT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/bnVsbDp0KSYmKGUuc3RhdGVOb2RlPXQsc2E9ZSxrPVNvKHQuZmlyc3RDaGlsZCksMSk7Y2FzZSA2OnJldHVybiBudWxsIT09KHQ9IiI9PT1lLnBlbmRpbmdQcm9wc3x8MyE9PXQubm9kZVR5cGU/bnVsbDp0KSYmKGUuc3RhdGVOb2RlPXQsc2E9ZSxrPW51bGwsMSk7Y2FzZSAxMzpyZXR1cm4gbnVsbCE9PSh0PTghPT10Lm5vZGVUeXBlP251bGw6dCkmJihuPW51bGwhPT1yYT97aWQ6b2Esb3ZlcmZsb3c6YWF9Om51bGwsZS5tZW1vaXplZFN0YXRlPXtkZWh5ZHJhdGVkOnQsdHJlZUNvbnRleHQ6bixyZXRyeUxhbmU6MTA3Mzc0MTgyNH0sKG49bnUoMTgsbnVsbCxudWxsLDApKS5zdGF0ZU5vZGU9dCwobi5yZXR1cm49ZSkuY2hpbGQ9bixzYT1lLGs9bnVsbCwxKTtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gbWEoZSl7cmV0dXJuIDAhPSgxJmUubW9kZSkmJjA9PSgxMjgmZS5mbGFncyl9ZnVuY3Rpb24gaGEoZSl7aWYoVSlpZihrKXt2YXIgdD1rO2lmKCFwYShlLGspKXtpZihtYShlKSl0aHJvdyBFcnJvcihEKDQxOCkpO3ZhciBuPVNvKHQubmV4dFNpYmxpbmcpLHI9c2E7biYmcGEoZSxuKT9kYShyLHQpOihlLmZsYWdzPS00MDk3JmUuZmxhZ3N8MixVPSExLHNhPWUpfX1lbHNle2lmKG1hKGUpKXRocm93IEVycm9yKEQoNDE4KSk7ZS5mbGFncz0tNDA5NyZlLmZsYWdzfDIsVT0hMSxzYT1lfX1mdW5jdGlvbiBnYShlKXtmb3IoZT1lLnJldHVybjtudWxsIT09ZSYmNSE9PWUudGFnJiYzIT09ZS50YWcmJjEzIT09ZS50YWc7KWU9ZS5yZXR1cm47c2E9ZX1mdW5jdGlvbiBiYShlKXtpZihlIT09c2EpcmV0dXJuITE7aWYoIVUpcmV0dXJuIGdhKGUpLCEoVT0hMCk7dmFyIHQ7aWYodD0odD0odD0zIT09ZS50YWcpJiYhKHQ9NSE9PWUudGFnKT8iaGVhZCIhPT0odD1lLnR5cGUpJiYiYm9keSIhPT10JiYhZ28oZS50eXBlLGUubWVtb2l6ZWRQcm9wcyk6dCkmJmspe2lmKG1hKGUpKXRocm93IHlhKCksRXJyb3IoRCg0MTgpKTtmb3IoO3Q7KWRhKGUsdCksdD1Tbyh0Lm5leHRTaWJsaW5nKX1pZihnYShlKSwxMz09PWUudGFnKXtpZighKGU9bnVsbCE9PShlPWUubWVtb2l6ZWRTdGF0ZSk/ZS5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKEQoMzE3KSk7ZTp7Zm9yKGU9ZS5uZXh0U2libGluZyx0PTA7ZTspe2lmKDg9PT1lLm5vZGVUeXBlKXt2YXIgbj1lLmRhdGE7aWYoIi8kIj09PW4pe2lmKDA9PT10KXtrPVNvKGUubmV4dFNpYmxpbmcpO2JyZWFrIGV9dC0tfWVsc2UiJCIhPT1uJiYiJCEiIT09biYmIiQ/IiE9PW58fHQrK31lPWUubmV4dFNpYmxpbmd9az1udWxsfX1lbHNlIGs9c2E/U28oZS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9ZnVuY3Rpb24geWEoKXtmb3IodmFyIGU9aztlOyllPVNvKGUubmV4dFNpYmxpbmcpfWZ1bmN0aW9uIHZhKCl7az1zYT1udWxsLFU9ITF9ZnVuY3Rpb24gd2EoZSl7bnVsbD09PWZhP2ZhPVtlXTpmYS5wdXNoKGUpfXZhciB4YT1KLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnO2Z1bmN0aW9uIGthKGUsdCl7aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHZhciBuIGluIHQ9Zyh7fSx0KSxlPWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PXRbbl0mJih0W25dPWVbbl0pO3JldHVybiB0fXZhciBTYT1ObyhudWxsKSxDYT1udWxsLEVhPW51bGwsT2E9bnVsbDtmdW5jdGlvbiBqYSgpe09hPUVhPUNhPW51bGx9ZnVuY3Rpb24gQWEoZSl7dmFyIHQ9U2EuY3VycmVudDt1KFNhKSxlLl9jdXJyZW50VmFsdWU9dH1mdW5jdGlvbiBQYShlLHQsbil7Zm9yKDtudWxsIT09ZTspe3ZhciByPWUuYWx0ZXJuYXRlO2lmKChlLmNoaWxkTGFuZXMmdCkhPT10PyhlLmNoaWxkTGFuZXN8PXQsbnVsbCE9PXImJihyLmNoaWxkTGFuZXN8PXQpKTpudWxsIT09ciYmKHIuY2hpbGRMYW5lcyZ0KSE9PXQmJihyLmNoaWxkTGFuZXN8PXQpLGU9PT1uKWJyZWFrO2U9ZS5yZXR1cm59fWZ1bmN0aW9uIElhKGUsdCl7KE9hPUVhPW51bGwpIT09KGU9KENhPWUpLmRlcGVuZGVuY2llcykmJm51bGwhPT1lLmZpcnN0Q29udGV4dCYmKDAhPShlLmxhbmVzJnQpJiYoaj0hMCksZS5maXJzdENvbnRleHQ9bnVsbCl9ZnVuY3Rpb24gX2EoZSl7dmFyIHQ9ZS5fY3VycmVudFZhbHVlO2lmKE9hIT09ZSlpZihlPXtjb250ZXh0OmUsbWVtb2l6ZWRWYWx1ZTp0LG5leHQ6bnVsbH0sbnVsbD09PUVhKXtpZihudWxsPT09Q2EpdGhyb3cgRXJyb3IoRCgzMDgpKTtFYT1lLENhLmRlcGVuZGVuY2llcz17bGFuZXM6MCxmaXJzdENvbnRleHQ6ZX19ZWxzZSBFYT1FYS5uZXh0PWU7cmV0dXJuIHR9dmFyIHphPW51bGw7ZnVuY3Rpb24gVGEoZSl7bnVsbD09PXphP3phPVtlXTp6YS5wdXNoKGUpfWZ1bmN0aW9uIExhKGUsdCxuLHIpe3ZhciBvPXQuaW50ZXJsZWF2ZWQ7cmV0dXJuIG51bGw9PT1vPyhuLm5leHQ9bixUYSh0KSk6KG4ubmV4dD1vLm5leHQsby5uZXh0PW4pLHQuaW50ZXJsZWF2ZWQ9bixNYShlLHIpfWZ1bmN0aW9uIE1hKGUsdCl7ZS5sYW5lc3w9dDt2YXIgbj1lLmFsdGVybmF0ZTtmb3IobnVsbCE9PW4mJihuLmxhbmVzfD10KSxlPShuPWUpLnJldHVybjtudWxsIT09ZTspZS5jaGlsZExhbmVzfD10LG51bGwhPT0obj1lLmFsdGVybmF0ZSkmJihuLmNoaWxkTGFuZXN8PXQpLGU9KG49ZSkucmV0dXJuO3JldHVybiAzPT09bi50YWc/bi5zdGF0ZU5vZGU6bnVsbH12YXIgUmE9ITE7ZnVuY3Rpb24gTmEoZSl7ZS51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmUubWVtb2l6ZWRTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6bnVsbCxsYXN0QmFzZVVwZGF0ZTpudWxsLHNoYXJlZDp7cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MH0sZWZmZWN0czpudWxsfX1mdW5jdGlvbiBEYShlLHQpe2U9ZS51cGRhdGVRdWV1ZSx0LnVwZGF0ZVF1ZXVlPT09ZSYmKHQudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTplLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6ZS5maXJzdEJhc2VVcGRhdGUsbGFzdEJhc2VVcGRhdGU6ZS5sYXN0QmFzZVVwZGF0ZSxzaGFyZWQ6ZS5zaGFyZWQsZWZmZWN0czplLmVmZmVjdHN9KX1mdW5jdGlvbiBVYShlLHQpe3JldHVybntldmVudFRpbWU6ZSxsYW5lOnQsdGFnOjAscGF5bG9hZDpudWxsLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfX1mdW5jdGlvbiBCYShlLHQsbil7dmFyIHIsbz1lLnVwZGF0ZVF1ZXVlO3JldHVybiBudWxsPT09bz9udWxsOihvPW8uc2hhcmVkLDAhPSgyJl8pPyhudWxsPT09KHI9by5wZW5kaW5nKT90Lm5leHQ9dDoodC5uZXh0PXIubmV4dCxyLm5leHQ9dCksby5wZW5kaW5nPXQpOihudWxsPT09KHI9by5pbnRlcmxlYXZlZCk/KHQubmV4dD10LFRhKG8pKToodC5uZXh0PXIubmV4dCxyLm5leHQ9dCksby5pbnRlcmxlYXZlZD10KSxNYShlLG4pKX1mdW5jdGlvbiBGYShlLHQsbil7dmFyIHI7bnVsbCE9PSh0PXQudXBkYXRlUXVldWUpJiYodD10LnNoYXJlZCwwIT0oNDE5NDI0MCZuKSkmJihyPXQubGFuZXMsciY9ZS5wZW5kaW5nTGFuZXMsJHQoZSx0LmxhbmVzPW58PXIpKX1mdW5jdGlvbiBIYShlLHQpe3ZhciBuPWUudXBkYXRlUXVldWUscj1lLmFsdGVybmF0ZTtpZihudWxsIT09ciYmbj09PShyPXIudXBkYXRlUXVldWUpKXt2YXIgbz1udWxsLGE9bnVsbDtpZihudWxsIT09KG49bi5maXJzdEJhc2VVcGRhdGUpKXtkb3t2YXIgaT17ZXZlbnRUaW1lOm4uZXZlbnRUaW1lLGxhbmU6bi5sYW5lLHRhZzpuLnRhZyxwYXlsb2FkOm4ucGF5bG9hZCxjYWxsYmFjazpuLmNhbGxiYWNrLG5leHQ6bnVsbH19d2hpbGUobnVsbD09PWE/bz1hPWk6YT1hLm5leHQ9aSxudWxsIT09KG49bi5uZXh0KSk7bnVsbD09PWE/bz1hPXQ6YT1hLm5leHQ9dH1lbHNlIG89YT10O249e2Jhc2VTdGF0ZTpyLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6byxsYXN0QmFzZVVwZGF0ZTphLHNoYXJlZDpyLnNoYXJlZCxlZmZlY3RzOnIuZWZmZWN0c30sZS51cGRhdGVRdWV1ZT1ufWVsc2UgbnVsbD09PShlPW4ubGFzdEJhc2VVcGRhdGUpP24uZmlyc3RCYXNlVXBkYXRlPXQ6ZS5uZXh0PXQsbi5sYXN0QmFzZVVwZGF0ZT10fWZ1bmN0aW9uIFZhKGUsdCxuLHIpe3ZhciBvLGEsaT1lLnVwZGF0ZVF1ZXVlLGw9KFJhPSExLGkuZmlyc3RCYXNlVXBkYXRlKSxjPWkubGFzdEJhc2VVcGRhdGU7aWYobnVsbCE9PShmPWkuc2hhcmVkLnBlbmRpbmcpJiYoaS5zaGFyZWQucGVuZGluZz1udWxsLGE9KG89ZikubmV4dCwoby5uZXh0PW51bGwpPT09Yz9sPWE6Yy5uZXh0PWEsYz1vLG51bGwhPT0ocz1lLmFsdGVybmF0ZSkpJiYoZj0ocz1zLnVwZGF0ZVF1ZXVlKS5sYXN0QmFzZVVwZGF0ZSkhPT1jJiYobnVsbD09PWY/cy5maXJzdEJhc2VVcGRhdGU9YTpmLm5leHQ9YSxzLmxhc3RCYXNlVXBkYXRlPW8pLG51bGwhPT1sKXtmb3IodmFyIHU9aS5iYXNlU3RhdGUsYz0wLHM9YT1vPW51bGwsZj1sOzspe3ZhciBkPWYubGFuZSxwPWYuZXZlbnRUaW1lO2lmKChyJmQpPT09ZCl7bnVsbCE9PXMmJihzPXMubmV4dD17ZXZlbnRUaW1lOnAsbGFuZTowLHRhZzpmLnRhZyxwYXlsb2FkOmYucGF5bG9hZCxjYWxsYmFjazpmLmNhbGxiYWNrLG5leHQ6bnVsbH0pO2U6e3ZhciBtPWUsaD1mLGQ9dCxwPW47c3dpdGNoKGgudGFnKXtjYXNlIDE6aWYoImZ1bmN0aW9uIj09dHlwZW9mKG09aC5wYXlsb2FkKSl7dT1tLmNhbGwocCx1LGQpO2JyZWFrIGV9dT1tO2JyZWFrIGU7Y2FzZSAzOm0uZmxhZ3M9LTY1NTM3Jm0uZmxhZ3N8MTI4O2Nhc2UgMDppZihudWxsPT0oZD0iZnVuY3Rpb24iPT10eXBlb2YobT1oLnBheWxvYWQpP20uY2FsbChwLHUsZCk6bSkpYnJlYWsgZTt1PWcoe30sdSxkKTticmVhayBlO2Nhc2UgMjpSYT0hMH19bnVsbCE9PWYuY2FsbGJhY2smJjAhPT1mLmxhbmUmJihlLmZsYWdzfD02NCxudWxsPT09KGQ9aS5lZmZlY3RzKT9pLmVmZmVjdHM9W2ZdOmQucHVzaChmKSl9ZWxzZSBwPXtldmVudFRpbWU6cCxsYW5lOmQsdGFnOmYudGFnLHBheWxvYWQ6Zi5wYXlsb2FkLGNhbGxiYWNrOmYuY2FsbGJhY2ssbmV4dDpudWxsfSxudWxsPT09cz8oYT1zPXAsbz11KTpzPXMubmV4dD1wLGN8PWQ7aWYobnVsbD09PShmPWYubmV4dCkpe2lmKG51bGw9PT0oZj1pLnNoYXJlZC5wZW5kaW5nKSlicmVhaztmPShkPWYpLm5leHQsZC5uZXh0PW51bGwsaS5sYXN0QmFzZVVwZGF0ZT1kLGkuc2hhcmVkLnBlbmRpbmc9bnVsbH19aWYobnVsbD09PXMmJihvPXUpLGkuYmFzZVN0YXRlPW8saS5maXJzdEJhc2VVcGRhdGU9YSxpLmxhc3RCYXNlVXBkYXRlPXMsbnVsbCE9PSh0PWkuc2hhcmVkLmludGVybGVhdmVkKSlmb3IoaT10O2N8PWkubGFuZSwoaT1pLm5leHQpIT09dDspO2Vsc2UgbnVsbD09PWwmJihpLnNoYXJlZC5sYW5lcz0wKTtoY3w9YyxlLmxhbmVzPWMsZS5tZW1vaXplZFN0YXRlPXV9fWZ1bmN0aW9uICRhKGUsdCxuKXtpZihlPXQuZWZmZWN0cywodC5lZmZlY3RzPW51bGwpIT09ZSlmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcj1lW3RdLG89ci5jYWxsYmFjaztpZihudWxsIT09byl7aWYoci5jYWxsYmFjaz1udWxsLHI9biwiZnVuY3Rpb24iIT10eXBlb2Ygbyl0aHJvdyBFcnJvcihEKDE5MSxvKSk7by5jYWxsKHIpfX19dmFyIFdhPShuZXcgTi5Db21wb25lbnQpLnJlZnM7ZnVuY3Rpb24gR2EoZSx0LG4scil7bj1udWxsPT0obj1uKHIsdD1lLm1lbW9pemVkU3RhdGUpKT90Omcoe30sdCxuKSxlLm1lbW9pemVkU3RhdGU9biwwPT09ZS5sYW5lcyYmKGUudXBkYXRlUXVldWUuYmFzZVN0YXRlPW4pfXZhciBxYT17aXNNb3VudGVkOmZ1bmN0aW9uKGUpe3JldHVybiEhKGU9ZS5fcmVhY3RJbnRlcm5hbHMpJiZndChlKT09PWV9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQsbil7ZT1lLl9yZWFjdEludGVybmFsczt2YXIgcj1tKCksbz16YyhlKSxhPVVhKHIsbyk7YS5wYXlsb2FkPXQsbnVsbCE9biYmKGEuY2FsbGJhY2s9biksbnVsbCE9PSh0PUJhKGUsYSxvKSkmJihUYyh0LGUsbyxyKSxGYSh0LGUsbykpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCxuKXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciByPW0oKSxvPXpjKGUpLGE9VWEocixvKTthLnRhZz0xLGEucGF5bG9hZD10LG51bGwhPW4mJihhLmNhbGxiYWNrPW4pLG51bGwhPT0odD1CYShlLGEsbykpJiYoVGModCxlLG8sciksRmEodCxlLG8pKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUsdCl7ZT1lLl9yZWFjdEludGVybmFsczt2YXIgbj1tKCkscj16YyhlKSxvPVVhKG4scik7by50YWc9MixudWxsIT10JiYoby5jYWxsYmFjaz10KSxudWxsIT09KHQ9QmEoZSxvLHIpKSYmKFRjKHQsZSxyLG4pLEZhKHQsZSxyKSl9fTtmdW5jdGlvbiBaYShlLHQsbixyLG8sYSxpKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YoZT1lLnN0YXRlTm9kZSkuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Uuc2hvdWxkQ29tcG9uZW50VXBkYXRlKHIsYSxpKTohKHQucHJvdG90eXBlJiZ0LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCYmU3IobixyKSYmU3IobyxhKSl9ZnVuY3Rpb24gWGEoZSx0LG4pe3ZhciByPSExLG89RG8sYT10LmNvbnRleHRUeXBlO3Q9bmV3IHQobixhPSJvYmplY3QiPT10eXBlb2YgYSYmbnVsbCE9PWE/X2EoYSk6KG89dyh0KT9Vbzp5LmN1cnJlbnQsKHI9bnVsbCE9KHI9dC5jb250ZXh0VHlwZXMpKT9CbyhlLG8pOkRvKSksZS5tZW1vaXplZFN0YXRlPW51bGwhPT10LnN0YXRlJiZ2b2lkIDAhPT10LnN0YXRlP3Quc3RhdGU6bnVsbCx0LnVwZGF0ZXI9cWEsKGUuc3RhdGVOb2RlPXQpLl9yZWFjdEludGVybmFscz1lLHImJigoZT1lLnN0YXRlTm9kZSkuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1vLGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9YSl9ZnVuY3Rpb24gWWEoZSx0LG4scil7ZT10LnN0YXRlLCJmdW5jdGlvbiI9PXR5cGVvZiB0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJnQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuLHIpLCJmdW5jdGlvbiI9PXR5cGVvZiB0LlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZ0LlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG4sciksdC5zdGF0ZSE9PWUmJnFhLmVucXVldWVSZXBsYWNlU3RhdGUodCx0LnN0YXRlLG51bGwpfWZ1bmN0aW9uIFFhKGUsdCxuLHIpe3ZhciBvPWUuc3RhdGVOb2RlLGE9KG8ucHJvcHM9bixvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxvLnJlZnM9V2EsTmEoZSksdC5jb250ZXh0VHlwZSk7Im9iamVjdCI9PXR5cGVvZiBhJiZudWxsIT09YT9vLmNvbnRleHQ9X2EoYSk6KGE9dyh0KT9Vbzp5LmN1cnJlbnQsby5jb250ZXh0PUJvKGUsYSkpLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlLCJmdW5jdGlvbiI9PXR5cGVvZihhPXQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKSYmKEdhKGUsMCxhLG4pLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlKSwiZnVuY3Rpb24iPT10eXBlb2YgdC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHN8fCJmdW5jdGlvbiI9PXR5cGVvZiBvLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHwiZnVuY3Rpb24iIT10eXBlb2Ygby5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiYiZnVuY3Rpb24iIT10eXBlb2Ygby5jb21wb25lbnRXaWxsTW91bnR8fCh0PW8uc3RhdGUsImZ1bmN0aW9uIj09dHlwZW9mIG8uY29tcG9uZW50V2lsbE1vdW50JiZvLmNvbXBvbmVudFdpbGxNb3VudCgpLCJmdW5jdGlvbiI9PXR5cGVvZiBvLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJm8uVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLHQhPT1vLnN0YXRlJiZxYS5lbnF1ZXVlUmVwbGFjZVN0YXRlKG8sby5zdGF0ZSxudWxsKSxWYShlLG4sbyxyKSxvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSksImZ1bmN0aW9uIj09dHlwZW9mIG8uY29tcG9uZW50RGlkTW91bnQmJihlLmZsYWdzfD00MTk0MzA4KX1mdW5jdGlvbiBLYShlLHQsbil7aWYobnVsbCE9PShlPW4ucmVmKSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUmJiJvYmplY3QiIT10eXBlb2YgZSl7aWYobi5fb3duZXIpe2lmKG49bi5fb3duZXIpe2lmKDEhPT1uLnRhZyl0aHJvdyBFcnJvcihEKDMwOSkpO3ZhciByPW4uc3RhdGVOb2RlfXZhciBvLGE7aWYocilyZXR1cm4gbz1yLGE9IiIrZSxudWxsIT09dCYmbnVsbCE9PXQucmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5yZWYmJnQucmVmLl9zdHJpbmdSZWY9PT1hP3QucmVmOigodD1mdW5jdGlvbihlKXt2YXIgdD1vLnJlZnM7dD09PVdhJiYodD1vLnJlZnM9e30pLG51bGw9PT1lP2RlbGV0ZSB0W2FdOnRbYV09ZX0pLl9zdHJpbmdSZWY9YSx0KTt0aHJvdyBFcnJvcihEKDE0NyxlKSl9aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IEVycm9yKEQoMjg0KSk7aWYoIW4uX293bmVyKXRocm93IEVycm9yKEQoMjkwLGUpKX1yZXR1cm4gZX1mdW5jdGlvbiBKYShlLHQpe3Rocm93IGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLEVycm9yKEQoMzEsIltvYmplY3QgT2JqZWN0XSI9PT1lPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKHQpLmpvaW4oIiwgIikrIn0iOmUpKX1mdW5jdGlvbiBlaShlKXtyZXR1cm4oMCxlLl9pbml0KShlLl9wYXlsb2FkKX1mdW5jdGlvbiB0aShBKXtmdW5jdGlvbiBQKGUsdCl7dmFyIG47QSYmKG51bGw9PT0obj1lLmRlbGV0aW9ucyk/KGUuZGVsZXRpb25zPVt0XSxlLmZsYWdzfD0xNik6bi5wdXNoKHQpKX1mdW5jdGlvbiBJKGUsdCl7aWYoQSlmb3IoO251bGwhPT10OylQKGUsdCksdD10LnNpYmxpbmc7cmV0dXJuIG51bGx9ZnVuY3Rpb24gXyhlLHQpe2ZvcihlPW5ldyBNYXA7bnVsbCE9PXQ7KW51bGwhPT10LmtleT9lLnNldCh0LmtleSx0KTplLnNldCh0LmluZGV4LHQpLHQ9dC5zaWJsaW5nO3JldHVybiBlfWZ1bmN0aW9uIHooZSx0KXtyZXR1cm4oZT1vdShlLHQpKS5pbmRleD0wLGUuc2libGluZz1udWxsLGV9ZnVuY3Rpb24gVChlLHQsbil7aWYoZS5pbmRleD1uLEEpe2lmKG51bGwhPT0obj1lLmFsdGVybmF0ZSkpcmV0dXJuKG49bi5pbmRleCk8dD8oZS5mbGFnc3w9Mix0KTpuO2UuZmxhZ3N8PTJ9ZWxzZSBlLmZsYWdzfD0xMDQ4NTc2O3JldHVybiB0fWZ1bmN0aW9uIEwoZSl7cmV0dXJuIEEmJm51bGw9PT1lLmFsdGVybmF0ZSYmKGUuZmxhZ3N8PTIpLGV9ZnVuY3Rpb24gYShlLHQsbixyKXtyZXR1cm4gbnVsbD09PXR8fDYhPT10LnRhZz8odD1jdShuLGUubW9kZSxyKSkucmV0dXJuPWU6KHQ9eih0LG4pKS5yZXR1cm49ZSx0fWZ1bmN0aW9uIGkoZSx0LG4scil7dmFyIG89bi50eXBlO3JldHVybiBvPT09bmU/YyhlLHQsbi5wcm9wcy5jaGlsZHJlbixyLG4ua2V5KToobnVsbCE9PXQmJih0LmVsZW1lbnRUeXBlPT09b3x8Im9iamVjdCI9PXR5cGVvZiBvJiZudWxsIT09byYmby4kJHR5cGVvZj09PWZlJiZlaShvKT09PXQudHlwZSk/KHI9eih0LG4ucHJvcHMpKS5yZWY9S2EoMCx0LG4pOihyPWF1KG4udHlwZSxuLmtleSxuLnByb3BzLG51bGwsZS5tb2RlLHIpKS5yZWY9S2EoMCx0LG4pLHIucmV0dXJuPWUscil9ZnVuY3Rpb24gbChlLHQsbixyKXtyZXR1cm4gbnVsbD09PXR8fDQhPT10LnRhZ3x8dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyE9PW4uY29udGFpbmVySW5mb3x8dC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24hPT1uLmltcGxlbWVudGF0aW9uPyh0PXV1KG4sZS5tb2RlLHIpKS5yZXR1cm49ZToodD16KHQsbi5jaGlsZHJlbnx8W10pKS5yZXR1cm49ZSx0fWZ1bmN0aW9uIGMoZSx0LG4scixvKXtyZXR1cm4gbnVsbD09PXR8fDchPT10LnRhZz8odD1pdShuLGUubW9kZSxyLG8pKS5yZXR1cm49ZToodD16KHQsbikpLnJldHVybj1lLHR9ZnVuY3Rpb24gTShlLHQsbil7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYiIiE9PXR8fCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4odD1jdSgiIit0LGUubW9kZSxuKSkucmV0dXJuPWUsdDtpZigib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10KXtzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBlZTpyZXR1cm4obj1hdSh0LnR5cGUsdC5rZXksdC5wcm9wcyxudWxsLGUubW9kZSxuKSkucmVmPUthKDAsbnVsbCx0KSxuLnJldHVybj1lLG47Y2FzZSB0ZTpyZXR1cm4odD11dSh0LGUubW9kZSxuKSkucmV0dXJuPWUsdDtjYXNlIGZlOnJldHVybiBNKGUsKDAsdC5faW5pdCkodC5fcGF5bG9hZCksbil9aWYoX2UodCl8fG1lKHQpKXJldHVybih0PWl1KHQsZS5tb2RlLG4sbnVsbCkpLnJldHVybj1lLHQ7SmEoMCx0KX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBSKGUsdCxuLHIpe3ZhciBvPW51bGwhPT10P3Qua2V5Om51bGw7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYiIiE9PW58fCJudW1iZXIiPT10eXBlb2YgbilyZXR1cm4gbnVsbCE9PW8/bnVsbDphKGUsdCwiIituLHIpO2lmKCJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9PW4pe3N3aXRjaChuLiQkdHlwZW9mKXtjYXNlIGVlOnJldHVybiBuLmtleT09PW8/aShlLHQsbixyKTpudWxsO2Nhc2UgdGU6cmV0dXJuIG4ua2V5PT09bz9sKGUsdCxuLHIpOm51bGw7Y2FzZSBmZTpyZXR1cm4gUihlLHQsKG89bi5faW5pdCkobi5fcGF5bG9hZCkscil9aWYoX2Uobil8fG1lKG4pKXJldHVybiBudWxsIT09bz9udWxsOmMoZSx0LG4scixudWxsKTtKYSgwLG4pfXJldHVybiBudWxsfWZ1bmN0aW9uIE4oZSx0LG4scixvKXtpZigic3RyaW5nIj09dHlwZW9mIHImJiIiIT09cnx8Im51bWJlciI9PXR5cGVvZiByKXJldHVybiBhKHQsZT1lLmdldChuKXx8bnVsbCwiIityLG8pO2lmKCJvYmplY3QiPT10eXBlb2YgciYmbnVsbCE9PXIpe3N3aXRjaChyLiQkdHlwZW9mKXtjYXNlIGVlOnJldHVybiBpKHQsZT1lLmdldChudWxsPT09ci5rZXk/bjpyLmtleSl8fG51bGwscixvKTtjYXNlIHRlOnJldHVybiBsKHQsZT1lLmdldChudWxsPT09ci5rZXk/bjpyLmtleSl8fG51bGwscixvKTtjYXNlIGZlOnJldHVybiBOKGUsdCxuLCgwLHIuX2luaXQpKHIuX3BheWxvYWQpLG8pfWlmKF9lKHIpfHxtZShyKSlyZXR1cm4gYyh0LGU9ZS5nZXQobil8fG51bGwscixvLG51bGwpO0phKDAscil9cmV0dXJuIG51bGx9cmV0dXJuIGZ1bmN0aW9uIGUodCxuLHIsbyl7aWYoIm9iamVjdCI9PXR5cGVvZihyPSJvYmplY3QiPT10eXBlb2YgciYmbnVsbCE9PXImJnIudHlwZT09PW5lJiZudWxsPT09ci5rZXk/ci5wcm9wcy5jaGlsZHJlbjpyKSYmbnVsbCE9PXIpe3N3aXRjaChyLiQkdHlwZW9mKXtjYXNlIGVlOmU6e2Zvcih2YXIgYT1yLmtleSxpPW47bnVsbCE9PWk7KXtpZihpLmtleT09PWEpe2lmKChhPXIudHlwZSk9PT1uZSl7aWYoNz09PWkudGFnKXtJKHQsaS5zaWJsaW5nKSwobj16KGksci5wcm9wcy5jaGlsZHJlbikpLnJldHVybj10LHQ9bjticmVhayBlfX1lbHNlIGlmKGkuZWxlbWVudFR5cGU9PT1hfHwib2JqZWN0Ij09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09ZmUmJmVpKGEpPT09aS50eXBlKXtJKHQsaS5zaWJsaW5nKSwobj16KGksci5wcm9wcykpLnJlZj1LYSgwLGksciksbi5yZXR1cm49dCx0PW47YnJlYWsgZX1JKHQsaSk7YnJlYWt9UCh0LGkpLGk9aS5zaWJsaW5nfXQ9ci50eXBlPT09bmU/KChuPWl1KHIucHJvcHMuY2hpbGRyZW4sdC5tb2RlLG8sci5rZXkpKS5yZXR1cm49dCxuKTooKG89YXUoci50eXBlLHIua2V5LHIucHJvcHMsbnVsbCx0Lm1vZGUsbykpLnJlZj1LYSgwLG4sciksby5yZXR1cm49dCxvKX1yZXR1cm4gTCh0KTtjYXNlIHRlOmU6e2ZvcihpPXIua2V5O251bGwhPT1uOyl7aWYobi5rZXk9PT1pKXtpZig0PT09bi50YWcmJm4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT1yLmNvbnRhaW5lckluZm8mJm4uc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uPT09ci5pbXBsZW1lbnRhdGlvbil7SSh0LG4uc2libGluZyksKG49eihuLHIuY2hpbGRyZW58fFtdKSkucmV0dXJuPXQsdD1uO2JyZWFrIGV9SSh0LG4pO2JyZWFrfVAodCxuKSxuPW4uc2libGluZ30obj11dShyLHQubW9kZSxvKSkucmV0dXJuPXQsdD1ufXJldHVybiBMKHQpO2Nhc2UgZmU6cmV0dXJuIGUodCxuLChpPXIuX2luaXQpKHIuX3BheWxvYWQpLG8pfWlmKF9lKHIpKXtmb3IodmFyIGw9dCxjPW4sdT1yLHM9byxmPW51bGwsZD1udWxsLHA9YyxtPWM9MCxoPW51bGw7bnVsbCE9PXAmJm08dS5sZW5ndGg7bSsrKXtwLmluZGV4Pm0/KGg9cCxwPW51bGwpOmg9cC5zaWJsaW5nO3ZhciBnPVIobCxwLHVbbV0scyk7aWYobnVsbD09PWcpe251bGw9PT1wJiYocD1oKTticmVha31BJiZwJiZudWxsPT09Zy5hbHRlcm5hdGUmJlAobCxwKSxjPVQoZyxjLG0pLG51bGw9PT1kP2Y9ZzpkLnNpYmxpbmc9ZyxkPWcscD1ofWlmKG09PT11Lmxlbmd0aClJKGwscCk7ZWxzZSBpZihudWxsPT09cClmb3IoO208dS5sZW5ndGg7bSsrKW51bGwhPT0ocD1NKGwsdVttXSxzKSkmJihjPVQocCxjLG0pLG51bGw9PT1kP2Y9cDpkLnNpYmxpbmc9cCxkPXApO2Vsc2V7Zm9yKHA9XyhsLHApO208dS5sZW5ndGg7bSsrKW51bGwhPT0oaD1OKHAsbCxtLHVbbV0scykpJiYoQSYmbnVsbCE9PWguYWx0ZXJuYXRlJiZwLmRlbGV0ZShudWxsPT09aC5rZXk/bTpoLmtleSksYz1UKGgsYyxtKSxudWxsPT09ZD9mPWg6ZC5zaWJsaW5nPWgsZD1oKTtBJiZwLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIFAobCxlKX0pfXJldHVybiBVJiZpYShsLG0pLGZ9aWYobWUocikpe3ZhciBiPXQseT1uLHY9cix3PW8seD1tZSh2KTtpZigiZnVuY3Rpb24iIT10eXBlb2YgeCl0aHJvdyBFcnJvcihEKDE1MCkpO2lmKG51bGw9PSh2PXguY2FsbCh2KSkpdGhyb3cgRXJyb3IoRCgxNTEpKTtmb3IodmFyIGs9eD1udWxsLFM9eSxDPXk9MCxFPW51bGwsTz12Lm5leHQoKTtudWxsIT09UyYmIU8uZG9uZTtDKyssTz12Lm5leHQoKSl7Uy5pbmRleD5DPyhFPVMsUz1udWxsKTpFPVMuc2libGluZzt2YXIgaj1SKGIsUyxPLnZhbHVlLHcpO2lmKG51bGw9PT1qKXtudWxsPT09UyYmKFM9RSk7YnJlYWt9QSYmUyYmbnVsbD09PWouYWx0ZXJuYXRlJiZQKGIsUykseT1UKGoseSxDKSxudWxsPT09az94PWo6ay5zaWJsaW5nPWosaz1qLFM9RX1pZihPLmRvbmUpSShiLFMpO2Vsc2UgaWYobnVsbD09PVMpZm9yKDshTy5kb25lO0MrKyxPPXYubmV4dCgpKW51bGwhPT0oTz1NKGIsTy52YWx1ZSx3KSkmJih5PVQoTyx5LEMpLG51bGw9PT1rP3g9TzprLnNpYmxpbmc9TyxrPU8pO2Vsc2V7Zm9yKFM9XyhiLFMpOyFPLmRvbmU7QysrLE89di5uZXh0KCkpbnVsbCE9PShPPU4oUyxiLEMsTy52YWx1ZSx3KSkmJihBJiZudWxsIT09Ty5hbHRlcm5hdGUmJlMuZGVsZXRlKG51bGw9PT1PLmtleT9DOk8ua2V5KSx5PVQoTyx5LEMpLG51bGw9PT1rP3g9TzprLnNpYmxpbmc9TyxrPU8pO0EmJlMuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gUChiLGUpfSl9cmV0dXJuIFUmJmlhKGIsQykseH1KYSgwLHIpfXJldHVybiJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yfHwibnVtYmVyIj09dHlwZW9mIHI/KHI9IiIrciwobj1udWxsIT09biYmNj09PW4udGFnPyhJKHQsbi5zaWJsaW5nKSx6KG4scikpOihJKHQsbiksY3Uocix0Lm1vZGUsbykpKS5yZXR1cm49dCxMKHQ9bikpOkkodCxuKX19dmFyIG5pPXRpKCEwKSxyaT10aSghMSksb2k9e30sYWk9Tm8ob2kpLGlpPU5vKG9pKSxsaT1ObyhvaSk7ZnVuY3Rpb24gY2koZSl7aWYoZT09PW9pKXRocm93IEVycm9yKEQoMTc0KSk7cmV0dXJuIGV9ZnVuY3Rpb24gdWkoZSx0KXtzd2l0Y2goYihsaSx0KSxiKGlpLGUpLGIoYWksb2kpLGU9dC5ub2RlVHlwZSl7Y2FzZSA5OmNhc2UgMTE6dD0odD10LmRvY3VtZW50RWxlbWVudCk/dC5uYW1lc3BhY2VVUkk6RGUobnVsbCwiIik7YnJlYWs7ZGVmYXVsdDp0PURlKHQ9KGU9OD09PWU/dC5wYXJlbnROb2RlOnQpLm5hbWVzcGFjZVVSSXx8bnVsbCxlPWUudGFnTmFtZSl9dShhaSksYihhaSx0KX1mdW5jdGlvbiBzaSgpe3UoYWkpLHUoaWkpLHUobGkpfWZ1bmN0aW9uIGZpKGUpe2NpKGxpLmN1cnJlbnQpO3ZhciB0PWNpKGFpLmN1cnJlbnQpLG49RGUodCxlLnR5cGUpO3QhPT1uJiYoYihpaSxlKSxiKGFpLG4pKX1mdW5jdGlvbiBkaShlKXtpaS5jdXJyZW50PT09ZSYmKHUoYWkpLHUoaWkpKX12YXIgUz1ObygwKTtmdW5jdGlvbiBwaShlKXtmb3IodmFyIHQ9ZTtudWxsIT09dDspe2lmKDEzPT09dC50YWcpe3ZhciBuPXQubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09biYmKG51bGw9PT0obj1uLmRlaHlkcmF0ZWQpfHwiJD8iPT09bi5kYXRhfHwiJCEiPT09bi5kYXRhKSlyZXR1cm4gdH1lbHNlIGlmKDE5PT09dC50YWcmJnZvaWQgMCE9PXQubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcil7aWYoMCE9KDEyOCZ0LmZsYWdzKSlyZXR1cm4gdH1lbHNlIGlmKG51bGwhPT10LmNoaWxkKXt0PSh0LmNoaWxkLnJldHVybj10KS5jaGlsZDtjb250aW51ZX1pZih0PT09ZSlicmVhaztmb3IoO251bGw9PT10LnNpYmxpbmc7KXtpZihudWxsPT09dC5yZXR1cm58fHQucmV0dXJuPT09ZSlyZXR1cm4gbnVsbDt0PXQucmV0dXJufXQuc2libGluZy5yZXR1cm49dC5yZXR1cm4sdD10LnNpYmxpbmd9cmV0dXJuIG51bGx9dmFyIG1pPVtdO2Z1bmN0aW9uIGhpKCl7Zm9yKHZhciBlPTA7ZTxtaS5sZW5ndGg7ZSsrKW1pW2VdLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5PW51bGw7bWkubGVuZ3RoPTB9dmFyIGdpPUouUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixiaT1KLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLHlpPTAsQz1udWxsLEU9bnVsbCxPPW51bGwsdmk9ITEsd2k9ITEseGk9MCxraT0wO2Z1bmN0aW9uIG8oKXt0aHJvdyBFcnJvcihEKDMyMSkpfWZ1bmN0aW9uIFNpKGUsdCl7aWYobnVsbCE9PXQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGgmJm48ZS5sZW5ndGg7bisrKWlmKCFrcihlW25dLHRbbl0pKXJldHVybjtyZXR1cm4gMX19ZnVuY3Rpb24gQ2koZSx0LG4scixvLGEpe2lmKHlpPWEsKEM9dCkubWVtb2l6ZWRTdGF0ZT1udWxsLHQudXBkYXRlUXVldWU9bnVsbCx0LmxhbmVzPTAsZ2kuY3VycmVudD1udWxsPT09ZXx8bnVsbD09PWUubWVtb2l6ZWRTdGF0ZT9vbDphbCxlPW4ocixvKSx3aSl7YT0wO2Rve2lmKHdpPSExLHhpPTAsMjU8PWEpdGhyb3cgRXJyb3IoRCgzMDEpKX13aGlsZShhKz0xLE89RT1udWxsLHQudXBkYXRlUXVldWU9bnVsbCxnaS5jdXJyZW50PWlsLGU9bihyLG8pLHdpKX1pZihnaS5jdXJyZW50PXJsLHQ9bnVsbCE9PUUmJm51bGwhPT1FLm5leHQseWk9MCxPPUU9Qz1udWxsLHZpPSExLHQpdGhyb3cgRXJyb3IoRCgzMDApKTtyZXR1cm4gZX1mdW5jdGlvbiBFaSgpe3ZhciBlPTAhPT14aTtyZXR1cm4geGk9MCxlfWZ1bmN0aW9uIE9pKCl7dmFyIGU9e21lbW9pemVkU3RhdGU6bnVsbCxiYXNlU3RhdGU6bnVsbCxiYXNlUXVldWU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH07cmV0dXJuIG51bGw9PT1PP0MubWVtb2l6ZWRTdGF0ZT1PPWU6Tz1PLm5leHQ9ZSxPfWZ1bmN0aW9uIGppKCl7ZT1udWxsPT09RT9udWxsIT09KGU9Qy5hbHRlcm5hdGUpP2UubWVtb2l6ZWRTdGF0ZTpudWxsOkUubmV4dDt2YXIgZSx0PW51bGw9PT1PP0MubWVtb2l6ZWRTdGF0ZTpPLm5leHQ7aWYobnVsbCE9PXQpTz10LEU9ZTtlbHNle2lmKG51bGw9PT1lKXRocm93IEVycm9yKEQoMzEwKSk7ZT17bWVtb2l6ZWRTdGF0ZTooRT1lKS5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpFLmJhc2VTdGF0ZSxiYXNlUXVldWU6RS5iYXNlUXVldWUscXVldWU6RS5xdWV1ZSxuZXh0Om51bGx9LG51bGw9PT1PP0MubWVtb2l6ZWRTdGF0ZT1PPWU6Tz1PLm5leHQ9ZX1yZXR1cm4gT31mdW5jdGlvbiBBaShlLHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoZSk6dH1mdW5jdGlvbiBQaShlKXt2YXIgdD1qaSgpLG49dC5xdWV1ZTtpZihudWxsPT09bil0aHJvdyBFcnJvcihEKDMxMSkpO24ubGFzdFJlbmRlcmVkUmVkdWNlcj1lO3ZhciByLG89KGk9RSkuYmFzZVF1ZXVlO2lmKG51bGwhPT0oYT1uLnBlbmRpbmcpJiYobnVsbCE9PW8mJihyPW8ubmV4dCxvLm5leHQ9YS5uZXh0LGEubmV4dD1yKSxpLmJhc2VRdWV1ZT1vPWEsbi5wZW5kaW5nPW51bGwpLG51bGwhPT1vKXt2YXIgYT1vLm5leHQsaT1pLmJhc2VTdGF0ZSxsPXI9bnVsbCxjPW51bGwsdT1hO2Rve3ZhciBzLGY9dS5sYW5lfXdoaWxlKCh5aSZmKT09PWY/KG51bGwhPT1jJiYoYz1jLm5leHQ9e2xhbmU6MCxhY3Rpb246dS5hY3Rpb24saGFzRWFnZXJTdGF0ZTp1Lmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTp1LmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksaT11Lmhhc0VhZ2VyU3RhdGU/dS5lYWdlclN0YXRlOmUoaSx1LmFjdGlvbikpOihzPXtsYW5lOmYsYWN0aW9uOnUuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6dS5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6dS5lYWdlclN0YXRlLG5leHQ6bnVsbH0sbnVsbD09PWM/KGw9Yz1zLHI9aSk6Yz1jLm5leHQ9cyxDLmxhbmVzfD1mLGhjfD1mKSxudWxsIT09KHU9dS5uZXh0KSYmdSE9PWEpO251bGw9PT1jP3I9aTpjLm5leHQ9bCxrcihpLHQubWVtb2l6ZWRTdGF0ZSl8fChqPSEwKSx0Lm1lbW9pemVkU3RhdGU9aSx0LmJhc2VTdGF0ZT1yLHQuYmFzZVF1ZXVlPWMsbi5sYXN0UmVuZGVyZWRTdGF0ZT1pfWlmKG51bGwhPT0oZT1uLmludGVybGVhdmVkKSlmb3Iobz1lO2E9by5sYW5lLEMubGFuZXN8PWEsaGN8PWEsKG89by5uZXh0KSE9PWU7KTtlbHNlIG51bGw9PT1vJiYobi5sYW5lcz0wKTtyZXR1cm5bdC5tZW1vaXplZFN0YXRlLG4uZGlzcGF0Y2hdfWZ1bmN0aW9uIElpKGUpe3ZhciB0PWppKCksbj10LnF1ZXVlO2lmKG51bGw9PT1uKXRocm93IEVycm9yKEQoMzExKSk7bi5sYXN0UmVuZGVyZWRSZWR1Y2VyPWU7dmFyIHI9bi5kaXNwYXRjaCxvPW4ucGVuZGluZyxhPXQubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09byl7bi5wZW5kaW5nPW51bGw7Zm9yKHZhciBpPW89by5uZXh0O2E9ZShhLGkuYWN0aW9uKSwoaT1pLm5leHQpIT09bzspO2tyKGEsdC5tZW1vaXplZFN0YXRlKXx8KGo9ITApLHQubWVtb2l6ZWRTdGF0ZT1hLG51bGw9PT10LmJhc2VRdWV1ZSYmKHQuYmFzZVN0YXRlPWEpLG4ubGFzdFJlbmRlcmVkU3RhdGU9YX1yZXR1cm5bYSxyXX1mdW5jdGlvbiBfaSgpe31mdW5jdGlvbiB6aShlLHQpe3ZhciBuPUMscj1qaSgpLG89dCgpLGE9IWtyKHIubWVtb2l6ZWRTdGF0ZSxvKTtpZihhJiYoci5tZW1vaXplZFN0YXRlPW8saj0hMCkscj1yLnF1ZXVlLCRpKE1pLmJpbmQobnVsbCxuLHIsZSksW2VdKSxyLmdldFNuYXBzaG90IT09dHx8YXx8bnVsbCE9PU8mJjEmTy5tZW1vaXplZFN0YXRlLnRhZyl7aWYobi5mbGFnc3w9MjA0OCxVaSg5LExpLmJpbmQobnVsbCxuLHIsbyx0KSx2b2lkIDAsbnVsbCksbnVsbD09PXApdGhyb3cgRXJyb3IoRCgzNDkpKTswPT0oMzAmeWkpJiZUaShuLHQsbyl9cmV0dXJuIG99ZnVuY3Rpb24gVGkoZSx0LG4pe2UuZmxhZ3N8PTE2Mzg0LGU9e2dldFNuYXBzaG90OnQsdmFsdWU6bn0sbnVsbD09PSh0PUMudXBkYXRlUXVldWUpPyhDLnVwZGF0ZVF1ZXVlPXQ9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0pLnN0b3Jlcz1bZV06bnVsbD09PShuPXQuc3RvcmVzKT90LnN0b3Jlcz1bZV06bi5wdXNoKGUpfWZ1bmN0aW9uIExpKGUsdCxuLHIpe3QudmFsdWU9bix0LmdldFNuYXBzaG90PXIsUmkodCkmJk5pKGUpfWZ1bmN0aW9uIE1pKGUsdCxuKXtyZXR1cm4gbihmdW5jdGlvbigpe1JpKHQpJiZOaShlKX0pfWZ1bmN0aW9uIFJpKGUpe3ZhciB0PWUuZ2V0U25hcHNob3Q7ZT1lLnZhbHVlO3RyeXt2YXIgbj10KCk7cmV0dXJuIWtyKGUsbil9Y2F0Y2goZSl7cmV0dXJuIDF9fWZ1bmN0aW9uIE5pKGUpe3ZhciB0PU1hKGUsMSk7bnVsbCE9PXQmJlRjKHQsZSwxLC0xKX1mdW5jdGlvbiBEaShlKXt2YXIgdD1PaSgpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lKCkpLHQubWVtb2l6ZWRTdGF0ZT10LmJhc2VTdGF0ZT1lLGU9KHQucXVldWU9ZT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6QWksbGFzdFJlbmRlcmVkU3RhdGU6ZX0pLmRpc3BhdGNoPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj16YyhlKSxvPXtsYW5lOnIsYWN0aW9uOm4saGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihlbChlKSl0bCh0LG8pO2Vsc2V7dmFyIGE9ZS5hbHRlcm5hdGU7aWYoMD09PWUubGFuZXMmJihudWxsPT09YXx8MD09PWEubGFuZXMpJiZudWxsIT09KGE9dC5sYXN0UmVuZGVyZWRSZWR1Y2VyKSl0cnl7dmFyIGksbD10Lmxhc3RSZW5kZXJlZFN0YXRlLGM9YShsLG4pO2lmKG8uaGFzRWFnZXJTdGF0ZT0hMCxvLmVhZ2VyU3RhdGU9YyxrcihjLGwpKXJldHVybiBudWxsPT09KGk9dC5pbnRlcmxlYXZlZCk/KG8ubmV4dD1vLFRhKHQpKTooby5uZXh0PWkubmV4dCxpLm5leHQ9byksdm9pZCh0LmludGVybGVhdmVkPW8pfWNhdGNoKGUpe31udWxsIT09KG49TGEoZSx0LG8scikpJiYobz1tKCksVGMobixlLHIsbyksbmwobix0LHIpKX19LmJpbmQobnVsbCxDLGUpLFt0Lm1lbW9pemVkU3RhdGUsZV19ZnVuY3Rpb24gVWkoZSx0LG4scil7cmV0dXJuIGU9e3RhZzplLGNyZWF0ZTp0LGRlc3Ryb3k6bixkZXBzOnIsbmV4dDpudWxsfSxudWxsPT09KHQ9Qy51cGRhdGVRdWV1ZSk/KEMudXBkYXRlUXVldWU9dD17bGFzdEVmZmVjdDpudWxsLHN0b3JlczpudWxsfSkubGFzdEVmZmVjdD1lLm5leHQ9ZTpudWxsPT09KG49dC5sYXN0RWZmZWN0KT90Lmxhc3RFZmZlY3Q9ZS5uZXh0PWU6KHI9bi5uZXh0LChuLm5leHQ9ZSkubmV4dD1yLHQubGFzdEVmZmVjdD1lKSxlfWZ1bmN0aW9uIEJpKCl7cmV0dXJuIGppKCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiBGaShlLHQsbixyKXt2YXIgbz1PaSgpO0MuZmxhZ3N8PWUsby5tZW1vaXplZFN0YXRlPVVpKDF8dCxuLHZvaWQgMCx2b2lkIDA9PT1yP251bGw6cil9ZnVuY3Rpb24gSGkoZSx0LG4scil7dmFyIG89amkoKSxhPShyPXZvaWQgMD09PXI/bnVsbDpyLHZvaWQgMCk7aWYobnVsbCE9PUUpe3ZhciBpPUUubWVtb2l6ZWRTdGF0ZSxhPWkuZGVzdHJveTtpZihudWxsIT09ciYmU2kocixpLmRlcHMpKXJldHVybiB2b2lkKG8ubWVtb2l6ZWRTdGF0ZT1VaSh0LG4sYSxyKSl9Qy5mbGFnc3w9ZSxvLm1lbW9pemVkU3RhdGU9VWkoMXx0LG4sYSxyKX1mdW5jdGlvbiBWaShlLHQpe3JldHVybiBGaSg4MzkwNjU2LDgsZSx0KX1mdW5jdGlvbiAkaShlLHQpe3JldHVybiBIaSgyMDQ4LDgsZSx0KX1mdW5jdGlvbiBXaShlLHQpe3JldHVybiBIaSg0LDIsZSx0KX1mdW5jdGlvbiBHaShlLHQpe3JldHVybiBIaSg0LDQsZSx0KX1mdW5jdGlvbiBxaShlLHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0PyhlPWUoKSx0KGUpLGZ1bmN0aW9uKCl7dChudWxsKX0pOm51bGwhPXQ/KGU9ZSgpLHQuY3VycmVudD1lLGZ1bmN0aW9uKCl7dC5jdXJyZW50PW51bGx9KTp2b2lkIDB9ZnVuY3Rpb24gWmkoZSx0LG4pe3JldHVybiBuPW51bGwhPW4/bi5jb25jYXQoW2VdKTpudWxsLEhpKDQsNCxxaS5iaW5kKG51bGwsdCxlKSxuKX1mdW5jdGlvbiBYaSgpe31mdW5jdGlvbiBZaShlLHQpe3ZhciBuPWppKCkscj0odD12b2lkIDA9PT10P251bGw6dCxuLm1lbW9pemVkU3RhdGUpO3JldHVybiBudWxsIT09ciYmbnVsbCE9PXQmJlNpKHQsclsxXSk/clswXToobi5tZW1vaXplZFN0YXRlPVtlLHRdLGUpfWZ1bmN0aW9uIFFpKGUsdCl7dmFyIG49amkoKSxyPSh0PXZvaWQgMD09PXQ/bnVsbDp0LG4ubWVtb2l6ZWRTdGF0ZSk7cmV0dXJuIG51bGwhPT1yJiZudWxsIT09dCYmU2kodCxyWzFdKT9yWzBdOihlPWUoKSxuLm1lbW9pemVkU3RhdGU9W2UsdF0sZSl9ZnVuY3Rpb24gS2koZSx0LG4pe3JldHVybiAwPT0oMjEmeWkpPyhlLmJhc2VTdGF0ZSYmKGUuYmFzZVN0YXRlPSExLGo9ITApLGUubWVtb2l6ZWRTdGF0ZT1uKTooa3Iobix0KXx8KG49RnQoKSxDLmxhbmVzfD1uLGhjfD1uLGUuYmFzZVN0YXRlPSEwKSx0KX1mdW5jdGlvbiBKaSgpe3JldHVybiBqaSgpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gZWwoZSl7dmFyIHQ9ZS5hbHRlcm5hdGU7cmV0dXJuIGU9PT1DfHxudWxsIT09dCYmdD09PUN9ZnVuY3Rpb24gdGwoZSx0KXt3aT12aT0hMDt2YXIgbj1lLnBlbmRpbmc7bnVsbD09PW4/dC5uZXh0PXQ6KHQubmV4dD1uLm5leHQsbi5uZXh0PXQpLGUucGVuZGluZz10fWZ1bmN0aW9uIG5sKGUsdCxuKXt2YXIgcjswIT0oNDE5NDI0MCZuKSYmKHI9dC5sYW5lcyxyJj1lLnBlbmRpbmdMYW5lcywkdChlLHQubGFuZXM9bnw9cikpfXZhciBybD17cmVhZENvbnRleHQ6X2EsdXNlQ2FsbGJhY2s6byx1c2VDb250ZXh0Om8sdXNlRWZmZWN0Om8sdXNlSW1wZXJhdGl2ZUhhbmRsZTpvLHVzZUluc2VydGlvbkVmZmVjdDpvLHVzZUxheW91dEVmZmVjdDpvLHVzZU1lbW86byx1c2VSZWR1Y2VyOm8sdXNlUmVmOm8sdXNlU3RhdGU6byx1c2VEZWJ1Z1ZhbHVlOm8sdXNlRGVmZXJyZWRWYWx1ZTpvLHVzZVRyYW5zaXRpb246byx1c2VNdXRhYmxlU291cmNlOm8sdXNlU3luY0V4dGVybmFsU3RvcmU6byx1c2VJZDpvLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sb2w9e3JlYWRDb250ZXh0Ol9hLHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9pKCkubWVtb2l6ZWRTdGF0ZT1bZSx2b2lkIDA9PT10P251bGw6dF0sZX0sdXNlQ29udGV4dDpfYSx1c2VFZmZlY3Q6VmksdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG49bnVsbCE9bj9uLmNvbmNhdChbZV0pOm51bGwsRmkoNDE5NDMwOCw0LHFpLmJpbmQobnVsbCx0LGUpLG4pfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRmkoNDE5NDMwOCw0LGUsdCl9LHVzZUluc2VydGlvbkVmZmVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBGaSg0LDIsZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3ZhciBuPU9pKCk7cmV0dXJuIHQ9dm9pZCAwPT09dD9udWxsOnQsZT1lKCksbi5tZW1vaXplZFN0YXRlPVtlLHRdLGV9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPU9pKCk7cmV0dXJuIHQ9dm9pZCAwIT09bj9uKHQpOnQsci5tZW1vaXplZFN0YXRlPXIuYmFzZVN0YXRlPXQsZT0oci5xdWV1ZT1lPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjplLGxhc3RSZW5kZXJlZFN0YXRlOnR9KS5kaXNwYXRjaD1mdW5jdGlvbihlLHQsbil7dmFyIHI9emMoZSk7bj17bGFuZTpyLGFjdGlvbjpuLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH0sZWwoZSk/dGwodCxuKTpudWxsIT09KG49TGEoZSx0LG4scikpJiYoVGMobixlLHIsbSgpKSxubChuLHQscikpfS5iaW5kKG51bGwsQyxlKSxbci5tZW1vaXplZFN0YXRlLGVdfSx1c2VSZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIE9pKCkubWVtb2l6ZWRTdGF0ZT1lPXtjdXJyZW50OmV9fSx1c2VTdGF0ZTpEaSx1c2VEZWJ1Z1ZhbHVlOlhpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIE9pKCkubWVtb2l6ZWRTdGF0ZT1lfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9KHQ9RGkoITEpKVswXSx0PWZ1bmN0aW9uKGUsdCl7dmFyIG49eCxyPSh4PTAhPT1uJiZuPDQ/bjo0LGUoITApLGJpLnRyYW5zaXRpb24pO2JpLnRyYW5zaXRpb249e307dHJ5e2UoITEpLHQoKX1maW5hbGx5e3g9bixiaS50cmFuc2l0aW9uPXJ9fS5iaW5kKG51bGwsdFsxXSk7cmV0dXJuW2UsT2koKS5tZW1vaXplZFN0YXRlPXRdfSx1c2VNdXRhYmxlU291cmNlOmZ1bmN0aW9uKCl7fSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9QyxvPU9pKCk7aWYoVSl7aWYodm9pZCAwPT09bil0aHJvdyBFcnJvcihEKDQwNykpO249bigpfWVsc2V7aWYobj10KCksbnVsbD09PXApdGhyb3cgRXJyb3IoRCgzNDkpKTswPT0oMzAmeWkpJiZUaShyLHQsbil9dmFyIGE9e3ZhbHVlOm8ubWVtb2l6ZWRTdGF0ZT1uLGdldFNuYXBzaG90OnR9O3JldHVybiBvLnF1ZXVlPWEsVmkoTWkuYmluZChudWxsLHIsYSxlKSxbZV0pLHIuZmxhZ3N8PTIwNDgsVWkoOSxMaS5iaW5kKG51bGwscixhLG4sdCksdm9pZCAwLG51bGwpLG59LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGUsdD1PaSgpLG49cC5pZGVudGlmaWVyUHJlZml4O3JldHVybiBVPyhlPWFhLG49IjoiK24rIlIiKyhlPShvYSZ+KDE8PDMyLXp0KG9hKS0xKSkudG9TdHJpbmcoMzIpK2UpLDA8KGU9eGkrKykmJihuKz0iSCIrZS50b1N0cmluZygzMikpLG4rPSI6Iik6bj0iOiIrbisiciIrKGU9a2krKykudG9TdHJpbmcoMzIpKyI6Iix0Lm1lbW9pemVkU3RhdGU9bn0sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxhbD17cmVhZENvbnRleHQ6X2EsdXNlQ2FsbGJhY2s6WWksdXNlQ29udGV4dDpfYSx1c2VFZmZlY3Q6JGksdXNlSW1wZXJhdGl2ZUhhbmRsZTpaaSx1c2VJbnNlcnRpb25FZmZlY3Q6V2ksdXNlTGF5b3V0RWZmZWN0OkdpLHVzZU1lbW86UWksdXNlUmVkdWNlcjpQaSx1c2VSZWY6QmksdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gUGkoQWkpfSx1c2VEZWJ1Z1ZhbHVlOlhpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEtpKGppKCksRS5tZW1vaXplZFN0YXRlLGUpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuW1BpKEFpKVswXSxqaSgpLm1lbW9pemVkU3RhdGVdfSx1c2VNdXRhYmxlU291cmNlOl9pLHVzZVN5bmNFeHRlcm5hbFN0b3JlOnppLHVzZUlkOkppLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0saWw9e3JlYWRDb250ZXh0Ol9hLHVzZUNhbGxiYWNrOllpLHVzZUNvbnRleHQ6X2EsdXNlRWZmZWN0OiRpLHVzZUltcGVyYXRpdmVIYW5kbGU6WmksdXNlSW5zZXJ0aW9uRWZmZWN0OldpLHVzZUxheW91dEVmZmVjdDpHaSx1c2VNZW1vOlFpLHVzZVJlZHVjZXI6SWksdXNlUmVmOkJpLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIElpKEFpKX0sdXNlRGVidWdWYWx1ZTpYaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWppKCk7cmV0dXJuIG51bGw9PT1FP3QubWVtb2l6ZWRTdGF0ZT1lOktpKHQsRS5tZW1vaXplZFN0YXRlLGUpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuW0lpKEFpKVswXSxqaSgpLm1lbW9pemVkU3RhdGVdfSx1c2VNdXRhYmxlU291cmNlOl9pLHVzZVN5bmNFeHRlcm5hbFN0b3JlOnppLHVzZUlkOkppLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX07ZnVuY3Rpb24gbGwoZSx0KXt0cnl7Zm9yKHZhciBuPSIiLHI9dDtuKz1mdW5jdGlvbihlKXtzd2l0Y2goZS50YWcpe2Nhc2UgNTpyZXR1cm4gZ2UoZS50eXBlKTtjYXNlIDE2OnJldHVybiBnZSgiTGF6eSIpO2Nhc2UgMTM6cmV0dXJuIGdlKCJTdXNwZW5zZSIpO2Nhc2UgMTk6cmV0dXJuIGdlKCJTdXNwZW5zZUxpc3QiKTtjYXNlIDA6Y2FzZSAyOmNhc2UgMTU6cmV0dXJuIGU9eWUoZS50eXBlLCExKTtjYXNlIDExOnJldHVybiBlPXllKGUudHlwZS5yZW5kZXIsITEpO2Nhc2UgMTpyZXR1cm4gZT15ZShlLnR5cGUsITApO2RlZmF1bHQ6cmV0dXJuIiJ9fShyKSxyPXIucmV0dXJuOyk7dmFyIG89bn1jYXRjaChlKXtvPSJcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6ICIrZS5tZXNzYWdlKyJcbiIrZS5zdGFja31yZXR1cm57dmFsdWU6ZSxzb3VyY2U6dCxzdGFjazpvLGRpZ2VzdDpudWxsfX1mdW5jdGlvbiBjbChlLHQsbil7cmV0dXJue3ZhbHVlOmUsc291cmNlOm51bGwsc3RhY2s6bnVsbCE9bj9uOm51bGwsZGlnZXN0Om51bGwhPXQ/dDpudWxsfX1mdW5jdGlvbiB1bChlLHQpe3RyeXtjb25zb2xlLmVycm9yKHQudmFsdWUpfWNhdGNoKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9fXZhciBzbD0iZnVuY3Rpb24iPT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcDtmdW5jdGlvbiBmbChlLHQsbil7KG49VWEoLTEsbikpLnRhZz0zLG4ucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgcj10LnZhbHVlO3JldHVybiBuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7a2N8fChrYz0hMCxTYz1yKSx1bCgwLHQpfSxufWZ1bmN0aW9uIGRsKGUsdCxuKXsobj1VYSgtMSxuKSkudGFnPTM7dmFyIHIsbz1lLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yLGU9KCJmdW5jdGlvbiI9PXR5cGVvZiBvJiYocj10LnZhbHVlLG4ucGF5bG9hZD1mdW5jdGlvbigpe3JldHVybiBvKHIpfSxuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7dWwoMCx0KX0pLGUuc3RhdGVOb2RlKTtyZXR1cm4gbnVsbCE9PWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbXBvbmVudERpZENhdGNoJiYobi5jYWxsYmFjaz1mdW5jdGlvbigpe3VsKDAsdCksImZ1bmN0aW9uIiE9dHlwZW9mIG8mJihudWxsPT09Q2M/Q2M9bmV3IFNldChbdGhpc10pOkNjLmFkZCh0aGlzKSk7dmFyIGU9dC5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKHQudmFsdWUse2NvbXBvbmVudFN0YWNrOm51bGwhPT1lP2U6IiJ9KX0pLG59ZnVuY3Rpb24gcGwoZSx0LG4pe3ZhciByLG89ZS5waW5nQ2FjaGU7bnVsbD09PW8/KG89ZS5waW5nQ2FjaGU9bmV3IHNsLHI9bmV3IFNldCxvLnNldCh0LHIpKTp2b2lkIDA9PT0ocj1vLmdldCh0KSkmJihyPW5ldyBTZXQsby5zZXQodCxyKSksci5oYXMobil8fChyLmFkZChuKSxlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLnBpbmdDYWNoZTtudWxsIT09ciYmci5kZWxldGUodCksdD1tKCksZS5waW5nZWRMYW5lc3w9ZS5zdXNwZW5kZWRMYW5lcyZuLHA9PT1lJiYoVCZuKT09PW4mJig0PT09THx8Mz09PUwmJigxMzAwMjM0MjQmVCk9PT1UJiZoKCktdmM8NTAwP1ZjKGUsMCk6YmN8PW4pLExjKGUsdCl9LmJpbmQobnVsbCxlLHQsbiksdC50aGVuKGUsZSkpfWZ1bmN0aW9uIG1sKGUpe2Rve3ZhciB0O2lmKHQ9KHQ9MTM9PT1lLnRhZyk/bnVsbD09PSh0PWUubWVtb2l6ZWRTdGF0ZSl8fG51bGwhPT10LmRlaHlkcmF0ZWQ6dClyZXR1cm4gZX13aGlsZShudWxsIT09KGU9ZS5yZXR1cm4pKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBobChlLHQsbixyLG8pe2lmKDA9PSgxJmUubW9kZSkpcmV0dXJuIGU9PT10P2UuZmxhZ3N8PTY1NTM2OihlLmZsYWdzfD0xMjgsbi5mbGFnc3w9MTMxMDcyLG4uZmxhZ3MmPS01MjgwNSwxPT09bi50YWcmJihudWxsPT09bi5hbHRlcm5hdGU/bi50YWc9MTc6KCh0PVVhKC0xLDEpKS50YWc9MixCYShuLHQsMSkpKSxuLmxhbmVzfD0xKTtlLmZsYWdzfD02NTUzNixlLmxhbmVzPW99dmFyIGdsPUouUmVhY3RDdXJyZW50T3duZXIsaj0hMTtmdW5jdGlvbiBBKGUsdCxuLHIpe3QuY2hpbGQ9bnVsbD09PWU/cmkodCxudWxsLG4scik6bmkodCxlLmNoaWxkLG4scil9ZnVuY3Rpb24gYmwoZSx0LG4scixvKXtuPW4ucmVuZGVyO3ZhciBhPXQucmVmO3JldHVybiBJYSh0LG8pLHI9Q2koZSx0LG4scixhLG8pLG49RWkoKSxudWxsPT09ZXx8aj8oVSYmbiYmY2EodCksdC5mbGFnc3w9MSxBKGUsdCxyLG8pLHQuY2hpbGQpOih0LnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdC5mbGFncyY9LTIwNTMsZS5sYW5lcyY9fm8sUmwoZSx0LG8pKX1mdW5jdGlvbiB5bChlLHQsbixyLG8pe3ZhciBhO2lmKG51bGw9PT1lKXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZihhPW4udHlwZSl8fHJ1KGEpfHx2b2lkIDAhPT1hLmRlZmF1bHRQcm9wc3x8bnVsbCE9PW4uY29tcGFyZXx8dm9pZCAwIT09bi5kZWZhdWx0UHJvcHM/KChlPWF1KG4udHlwZSxudWxsLHIsdCx0Lm1vZGUsbykpLnJlZj10LnJlZiwoZS5yZXR1cm49dCkuY2hpbGQ9ZSk6KHQudGFnPTE1LHQudHlwZT1hLHZsKGUsdCxhLHIsbykpO2lmKGE9ZS5jaGlsZCwwPT0oZS5sYW5lcyZvKSl7dmFyIGk9YS5tZW1vaXplZFByb3BzO2lmKChuPW51bGwhPT0obj1uLmNvbXBhcmUpP246U3IpKGkscikmJmUucmVmPT09dC5yZWYpcmV0dXJuIFJsKGUsdCxvKX1yZXR1cm4gdC5mbGFnc3w9MSwoZT1vdShhLHIpKS5yZWY9dC5yZWYsKGUucmV0dXJuPXQpLmNoaWxkPWV9ZnVuY3Rpb24gdmwoZSx0LG4scixvKXtpZihudWxsIT09ZSl7dmFyIGE9ZS5tZW1vaXplZFByb3BzO2lmKFNyKGEscikmJmUucmVmPT09dC5yZWYpe2lmKGo9ITEsdC5wZW5kaW5nUHJvcHM9cj1hLDA9PShlLmxhbmVzJm8pKXJldHVybiB0LmxhbmVzPWUubGFuZXMsUmwoZSx0LG8pOzAhPSgxMzEwNzImZS5mbGFncykmJihqPSEwKX19cmV0dXJuIGtsKGUsdCxuLHIsbyl9ZnVuY3Rpb24gd2woZSx0LG4pe3ZhciByPXQucGVuZGluZ1Byb3BzLG89ci5jaGlsZHJlbixhPW51bGwhPT1lP2UubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKCJoaWRkZW4iPT09ci5tb2RlKWlmKDA9PSgxJnQubW9kZSkpdC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxiKHBjLGRjKSxkY3w9bjtlbHNle2lmKDA9PSgxMDczNzQxODI0Jm4pKXJldHVybiBlPW51bGwhPT1hP2EuYmFzZUxhbmVzfG46bix0LmxhbmVzPXQuY2hpbGRMYW5lcz0xMDczNzQxODI0LHQubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOmUsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sdC51cGRhdGVRdWV1ZT1udWxsLGIocGMsZGMpLGRjfD1lLG51bGw7dC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxyPW51bGwhPT1hP2EuYmFzZUxhbmVzOm4sYihwYyxkYyksZGN8PXJ9ZWxzZSBudWxsIT09YT8ocj1hLmJhc2VMYW5lc3xuLHQubWVtb2l6ZWRTdGF0ZT1udWxsKTpyPW4sYihwYyxkYyksZGN8PXI7cmV0dXJuIEEoZSx0LG8sbiksdC5jaGlsZH1mdW5jdGlvbiB4bChlLHQpe3ZhciBuPXQucmVmOyhudWxsPT09ZSYmbnVsbCE9PW58fG51bGwhPT1lJiZlLnJlZiE9PW4pJiYodC5mbGFnc3w9NTEyLHQuZmxhZ3N8PTIwOTcxNTIpfWZ1bmN0aW9uIGtsKGUsdCxuLHIsbyl7dmFyIGE9Qm8odCx3KG4pP1VvOnkuY3VycmVudCk7cmV0dXJuIElhKHQsbyksbj1DaShlLHQsbixyLGEsbykscj1FaSgpLG51bGw9PT1lfHxqPyhVJiZyJiZjYSh0KSx0LmZsYWdzfD0xLEEoZSx0LG4sbyksdC5jaGlsZCk6KHQudXBkYXRlUXVldWU9ZS51cGRhdGVRdWV1ZSx0LmZsYWdzJj0tMjA1MyxlLmxhbmVzJj1+byxSbChlLHQsbykpfWZ1bmN0aW9uIFNsKGUsdCxuLHIsbyl7dmFyIGEsaSxsLGMsdSxzLGYsZCxwLG07cmV0dXJuIHcobik/KGE9ITAsJG8odCkpOmE9ITEsSWEodCxvKSxyPW51bGw9PT10LnN0YXRlTm9kZT8oTWwoZSx0KSxYYSh0LG4sciksUWEodCxuLHIsbyksITApOm51bGw9PT1lPyhpPXQuc3RhdGVOb2RlLGw9dC5tZW1vaXplZFByb3BzLGkucHJvcHM9bCxkPWkuY29udGV4dCxjPSJvYmplY3QiPT10eXBlb2YoYz1uLmNvbnRleHRUeXBlKSYmbnVsbCE9PWM/X2EoYyk6Qm8odCxjPXcobik/VW86eS5jdXJyZW50KSwocz0iZnVuY3Rpb24iPT10eXBlb2YodT1uLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGkuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJiJmdW5jdGlvbiIhPXR5cGVvZiBpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fGw9PT1yJiZkPT09Y3x8WWEoMCxpLHIsYyksUmE9ITEsZj10Lm1lbW9pemVkU3RhdGUsaS5zdGF0ZT1mLFZhKHQscixpLG8pLGQ9dC5tZW1vaXplZFN0YXRlLGwhPT1yfHxmIT09ZHx8di5jdXJyZW50fHxSYT8oImZ1bmN0aW9uIj09dHlwZW9mIHUmJihHYSh0LDAsdSxyKSxkPXQubWVtb2l6ZWRTdGF0ZSksKGw9UmF8fFphKHQsbixsLHIsZixkLGMpKT8oc3x8ImZ1bmN0aW9uIiE9dHlwZW9mIGkuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmImZ1bmN0aW9uIiE9dHlwZW9mIGkuY29tcG9uZW50V2lsbE1vdW50fHwoImZ1bmN0aW9uIj09dHlwZW9mIGkuY29tcG9uZW50V2lsbE1vdW50JiZpLmNvbXBvbmVudFdpbGxNb3VudCgpLCJmdW5jdGlvbiI9PXR5cGVvZiBpLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmkuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSwiZnVuY3Rpb24iPT10eXBlb2YgaS5jb21wb25lbnREaWRNb3VudCYmKHQuZmxhZ3N8PTQxOTQzMDgpKTooImZ1bmN0aW9uIj09dHlwZW9mIGkuY29tcG9uZW50RGlkTW91bnQmJih0LmZsYWdzfD00MTk0MzA4KSx0Lm1lbW9pemVkUHJvcHM9cix0Lm1lbW9pemVkU3RhdGU9ZCksaS5wcm9wcz1yLGkuc3RhdGU9ZCxpLmNvbnRleHQ9YyxsKTooImZ1bmN0aW9uIj09dHlwZW9mIGkuY29tcG9uZW50RGlkTW91bnQmJih0LmZsYWdzfD00MTk0MzA4KSwhMSkpOihpPXQuc3RhdGVOb2RlLERhKGUsdCksbD10Lm1lbW9pemVkUHJvcHMsYz10LnR5cGU9PT10LmVsZW1lbnRUeXBlP2w6a2EodC50eXBlLGwpLGkucHJvcHM9YyxzPXQucGVuZGluZ1Byb3BzLGY9aS5jb250ZXh0LGQ9Im9iamVjdCI9PXR5cGVvZihkPW4uY29udGV4dFR5cGUpJiZudWxsIT09ZD9fYShkKTpCbyh0LGQ9dyhuKT9Vbzp5LmN1cnJlbnQpLCh1PSJmdW5jdGlvbiI9PXR5cGVvZihwPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGkuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpfHwiZnVuY3Rpb24iIT10eXBlb2YgaS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmImZ1bmN0aW9uIiE9dHlwZW9mIGkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8bD09PXMmJmY9PT1kfHxZYSgwLGkscixkKSxSYT0hMSxmPXQubWVtb2l6ZWRTdGF0ZSxpLnN0YXRlPWYsVmEodCxyLGksbyksbT10Lm1lbW9pemVkU3RhdGUsbCE9PXN8fGYhPT1tfHx2LmN1cnJlbnR8fFJhPygiZnVuY3Rpb24iPT10eXBlb2YgcCYmKEdhKHQsMCxwLHIpLG09dC5tZW1vaXplZFN0YXRlKSwoYz1SYXx8WmEodCxuLGMscixmLG0sZCl8fCExKT8odXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGkuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBpLmNvbXBvbmVudFdpbGxVcGRhdGV8fCgiZnVuY3Rpb24iPT10eXBlb2YgaS5jb21wb25lbnRXaWxsVXBkYXRlJiZpLmNvbXBvbmVudFdpbGxVcGRhdGUocixtLGQpLCJmdW5jdGlvbiI9PXR5cGVvZiBpLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZpLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKHIsbSxkKSksImZ1bmN0aW9uIj09dHlwZW9mIGkuY29tcG9uZW50RGlkVXBkYXRlJiYodC5mbGFnc3w9NCksImZ1bmN0aW9uIj09dHlwZW9mIGkuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJih0LmZsYWdzfD0xMDI0KSk6KCJmdW5jdGlvbiIhPXR5cGVvZiBpLmNvbXBvbmVudERpZFVwZGF0ZXx8bD09PWUubWVtb2l6ZWRQcm9wcyYmZj09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZmxhZ3N8PTQpLCJmdW5jdGlvbiIhPXR5cGVvZiBpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxsPT09ZS5tZW1vaXplZFByb3BzJiZmPT09ZS5tZW1vaXplZFN0YXRlfHwodC5mbGFnc3w9MTAyNCksdC5tZW1vaXplZFByb3BzPXIsdC5tZW1vaXplZFN0YXRlPW0pLGkucHJvcHM9cixpLnN0YXRlPW0saS5jb250ZXh0PWQsYyk6KCJmdW5jdGlvbiIhPXR5cGVvZiBpLmNvbXBvbmVudERpZFVwZGF0ZXx8bD09PWUubWVtb2l6ZWRQcm9wcyYmZj09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZmxhZ3N8PTQpLCJmdW5jdGlvbiIhPXR5cGVvZiBpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxsPT09ZS5tZW1vaXplZFByb3BzJiZmPT09ZS5tZW1vaXplZFN0YXRlfHwodC5mbGFnc3w9MTAyNCksITEpKSxDbChlLHQsbixyLGEsbyl9ZnVuY3Rpb24gQ2woZSx0LG4scixvLGEpe3hsKGUsdCk7dmFyIGk9MCE9KDEyOCZ0LmZsYWdzKTtpZighciYmIWkpcmV0dXJuIG8mJldvKHQsbiwhMSksUmwoZSx0LGEpO3I9dC5zdGF0ZU5vZGUsZ2wuY3VycmVudD10O3ZhciBsPWkmJiJmdW5jdGlvbiIhPXR5cGVvZiBuLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj9udWxsOnIucmVuZGVyKCk7cmV0dXJuIHQuZmxhZ3N8PTEsbnVsbCE9PWUmJmk/KHQuY2hpbGQ9bmkodCxlLmNoaWxkLG51bGwsYSksdC5jaGlsZD1uaSh0LG51bGwsbCxhKSk6QShlLHQsbCxhKSx0Lm1lbW9pemVkU3RhdGU9ci5zdGF0ZSxvJiZXbyh0LG4sITApLHQuY2hpbGR9ZnVuY3Rpb24gRWwoZSl7dmFyIHQ9ZS5zdGF0ZU5vZGU7dC5wZW5kaW5nQ29udGV4dD9IbygwLHQucGVuZGluZ0NvbnRleHQsdC5wZW5kaW5nQ29udGV4dCE9PXQuY29udGV4dCk6dC5jb250ZXh0JiZIbygwLHQuY29udGV4dCwhMSksdWkoZSx0LmNvbnRhaW5lckluZm8pfWZ1bmN0aW9uIE9sKGUsdCxuLHIsbyl7cmV0dXJuIHZhKCksd2EobyksdC5mbGFnc3w9MjU2LEEoZSx0LG4sciksdC5jaGlsZH12YXIgamw9e2RlaHlkcmF0ZWQ6bnVsbCx0cmVlQ29udGV4dDpudWxsLHJldHJ5TGFuZTowfTtmdW5jdGlvbiBBbChlKXtyZXR1cm57YmFzZUxhbmVzOmUsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH19ZnVuY3Rpb24gUGwoZSx0LG4pe3ZhciByLG8sYT10LnBlbmRpbmdQcm9wcyxpPVMuY3VycmVudCxsPSExLGM9MCE9KDEyOCZ0LmZsYWdzKTtpZigobz0obz1jKXx8KG51bGw9PT1lfHxudWxsIT09ZS5tZW1vaXplZFN0YXRlKSYmMCE9KDImaSkpPyhsPSEwLHQuZmxhZ3MmPS0xMjkpOm51bGwhPT1lJiZudWxsPT09ZS5tZW1vaXplZFN0YXRlfHwoaXw9MSksYihTLDEmaSksbnVsbD09PWUpcmV0dXJuIGhhKHQpLG51bGwhPT0oZT10Lm1lbW9pemVkU3RhdGUpJiZudWxsIT09KGU9ZS5kZWh5ZHJhdGVkKT8oMD09KDEmdC5tb2RlKT90LmxhbmVzPTE6IiQhIj09PWUuZGF0YT90LmxhbmVzPTg6dC5sYW5lcz0xMDczNzQxODI0LG51bGwpOihjPWEuY2hpbGRyZW4sZT1hLmZhbGxiYWNrLGw/KGE9dC5tb2RlLGw9dC5jaGlsZCxjPXttb2RlOiJoaWRkZW4iLGNoaWxkcmVuOmN9LDA9PSgxJmEpJiZudWxsIT09bD8obC5jaGlsZExhbmVzPTAsbC5wZW5kaW5nUHJvcHM9Yyk6bD1sdShjLGEsMCxudWxsKSxlPWl1KGUsYSxuLG51bGwpLGwucmV0dXJuPXQsZS5yZXR1cm49dCxsLnNpYmxpbmc9ZSx0LmNoaWxkPWwsdC5jaGlsZC5tZW1vaXplZFN0YXRlPUFsKG4pLHQubWVtb2l6ZWRTdGF0ZT1qbCxlKTpJbCh0LGMpKTtpZihudWxsPT09KGk9ZS5tZW1vaXplZFN0YXRlKXx8bnVsbD09PShvPWkuZGVoeWRyYXRlZCkpcmV0dXJuIGw/KGw9YS5mYWxsYmFjayxjPXQubW9kZSxvPShpPWUuY2hpbGQpLnNpYmxpbmcsdT17bW9kZToiaGlkZGVuIixjaGlsZHJlbjphLmNoaWxkcmVufSwwPT0oMSZjKSYmdC5jaGlsZCE9PWk/KChhPXQuY2hpbGQpLmNoaWxkTGFuZXM9MCxhLnBlbmRpbmdQcm9wcz11LHQuZGVsZXRpb25zPW51bGwpOihhPW91KGksdSkpLnN1YnRyZWVGbGFncz0xNDY4MDA2NCZpLnN1YnRyZWVGbGFncyxudWxsIT09bz9sPW91KG8sbCk6KGw9aXUobCxjLG4sbnVsbCkpLmZsYWdzfD0yLGwucmV0dXJuPXQsYS5yZXR1cm49dCxhLnNpYmxpbmc9bCx0LmNoaWxkPWEsYT1sLGw9dC5jaGlsZCxjPW51bGw9PT0oYz1lLmNoaWxkLm1lbW9pemVkU3RhdGUpP0FsKG4pOntiYXNlTGFuZXM6Yy5iYXNlTGFuZXN8bixjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpjLnRyYW5zaXRpb25zfSxsLm1lbW9pemVkU3RhdGU9YyxsLmNoaWxkTGFuZXM9ZS5jaGlsZExhbmVzJn5uLHQubWVtb2l6ZWRTdGF0ZT1qbCk6KGU9KGw9ZS5jaGlsZCkuc2libGluZyxhPW91KGwse21vZGU6InZpc2libGUiLGNoaWxkcmVuOmEuY2hpbGRyZW59KSwwPT0oMSZ0Lm1vZGUpJiYoYS5sYW5lcz1uKSxhLnJldHVybj10LChhLnNpYmxpbmc9bnVsbCkhPT1lJiYobnVsbD09PShuPXQuZGVsZXRpb25zKT8odC5kZWxldGlvbnM9W2VdLHQuZmxhZ3N8PTE2KTpuLnB1c2goZSkpLHQuY2hpbGQ9YSx0Lm1lbW9pemVkU3RhdGU9bnVsbCksYTt2YXIgdT1lLGw9dCxlPWEscz1vLHQ9aSxhPW47aWYoYylyZXR1cm4gMjU2JmwuZmxhZ3M/KGwuZmxhZ3MmPS0yNTcsZT1jbChFcnJvcihEKDQyMikpKSxfbCh1LGwsYSxlKSk6bnVsbCE9PWwubWVtb2l6ZWRTdGF0ZT8obC5jaGlsZD11LmNoaWxkLGwuZmxhZ3N8PTEyOCxudWxsKToodD1lLmZhbGxiYWNrLHM9bC5tb2RlLGU9bHUoe21vZGU6InZpc2libGUiLGNoaWxkcmVuOmUuY2hpbGRyZW59LHMsMCxudWxsKSwodD1pdSh0LHMsYSxudWxsKSkuZmxhZ3N8PTIsZS5yZXR1cm49bCx0LnJldHVybj1sLGUuc2libGluZz10LGwuY2hpbGQ9ZSwwIT0oMSZsLm1vZGUpJiZuaShsLHUuY2hpbGQsbnVsbCxhKSxsLmNoaWxkLm1lbW9pemVkU3RhdGU9QWwoYSksbC5tZW1vaXplZFN0YXRlPWpsLHQpO2lmKDA9PSgxJmwubW9kZSkpcmV0dXJuIF9sKHUsbCxhLG51bGwpO2lmKCIkISI9PT1zLmRhdGEpcmV0dXJuIGU9cj0oZT1zLm5leHRTaWJsaW5nJiZzLm5leHRTaWJsaW5nLmRhdGFzZXQpP2UuZGdzdDpyLHQ9RXJyb3IoRCg0MTkpKSxlPWNsKHQsZSx2b2lkIDApLF9sKHUsbCxhLGUpO2lmKHI9MCE9KGEmdS5jaGlsZExhbmVzKSxqfHxyKXtpZihudWxsIT09KGU9cCkpe3N3aXRjaChhJi1hKXtjYXNlIDQ6cz0yO2JyZWFrO2Nhc2UgMTY6cz04O2JyZWFrO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpzPTMyO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOnM9MjY4NDM1NDU2O2JyZWFrO2RlZmF1bHQ6cz0wfTAhPT0ocz0wIT0ocyYoZS5zdXNwZW5kZWRMYW5lc3xhKSk/MDpzKSYmcyE9PXQucmV0cnlMYW5lJiYodC5yZXRyeUxhbmU9cyxNYSh1LHMpLFRjKGUsdSxzLC0xKSl9cmV0dXJuIEdjKCksZT1jbChFcnJvcihEKDQyMSkpKSxfbCh1LGwsYSxlKX1yZXR1cm4iJD8iPT09cy5kYXRhPyhsLmZsYWdzfD0xMjgsbC5jaGlsZD11LmNoaWxkLGw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlLG49MDtudWxsIT09dCYmKG49dC5yZXRyeUxhbmUpLEpjKGUsbil9LmJpbmQobnVsbCx1KSxzLl9yZWFjdFJldHJ5PWwsbnVsbCk6KHU9dC50cmVlQ29udGV4dCxrPVNvKHMubmV4dFNpYmxpbmcpLHNhPWwsVT0hMCwoZmE9bnVsbCkhPT11JiYodGFbbmErK109b2EsdGFbbmErK109YWEsdGFbbmErK109cmEsb2E9dS5pZCxhYT11Lm92ZXJmbG93LHJhPWwpLChsPUlsKGwsZS5jaGlsZHJlbikpLmZsYWdzfD00MDk2LGwpfWZ1bmN0aW9uIElsKGUsdCl7cmV0dXJuKCh0PWx1KHttb2RlOiJ2aXNpYmxlIixjaGlsZHJlbjp0fSxlLm1vZGUsMCxudWxsKSkucmV0dXJuPWUpLmNoaWxkPXR9ZnVuY3Rpb24gX2woZSx0LG4scil7cmV0dXJuIG51bGwhPT1yJiZ3YShyKSxuaSh0LGUuY2hpbGQsbnVsbCxuKSwoZT1JbCh0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuKSkuZmxhZ3N8PTIsdC5tZW1vaXplZFN0YXRlPW51bGwsZX1mdW5jdGlvbiB6bChlLHQsbil7ZS5sYW5lc3w9dDt2YXIgcj1lLmFsdGVybmF0ZTtudWxsIT09ciYmKHIubGFuZXN8PXQpLFBhKGUucmV0dXJuLHQsbil9ZnVuY3Rpb24gVGwoZSx0LG4scixvKXt2YXIgYT1lLm1lbW9pemVkU3RhdGU7bnVsbD09PWE/ZS5tZW1vaXplZFN0YXRlPXtpc0JhY2t3YXJkczp0LHJlbmRlcmluZzpudWxsLHJlbmRlcmluZ1N0YXJ0VGltZTowLGxhc3Q6cix0YWlsOm4sdGFpbE1vZGU6b306KGEuaXNCYWNrd2FyZHM9dCxhLnJlbmRlcmluZz1udWxsLGEucmVuZGVyaW5nU3RhcnRUaW1lPTAsYS5sYXN0PXIsYS50YWlsPW4sYS50YWlsTW9kZT1vKX1mdW5jdGlvbiBMbChlLHQsbil7dmFyIHI9dC5wZW5kaW5nUHJvcHMsbz1yLnJldmVhbE9yZGVyLGE9ci50YWlsO2lmKEEoZSx0LHIuY2hpbGRyZW4sbiksMCE9KDImKHI9Uy5jdXJyZW50KSkpcj0xJnJ8Mix0LmZsYWdzfD0xMjg7ZWxzZXtpZihudWxsIT09ZSYmMCE9KDEyOCZlLmZsYWdzKSllOmZvcihlPXQuY2hpbGQ7bnVsbCE9PWU7KXtpZigxMz09PWUudGFnKW51bGwhPT1lLm1lbW9pemVkU3RhdGUmJnpsKGUsbix0KTtlbHNlIGlmKDE5PT09ZS50YWcpemwoZSxuLHQpO2Vsc2UgaWYobnVsbCE9PWUuY2hpbGQpe2U9KGUuY2hpbGQucmV0dXJuPWUpLmNoaWxkO2NvbnRpbnVlfWlmKGU9PT10KWJyZWFrO2Zvcig7bnVsbD09PWUuc2libGluZzspe2lmKG51bGw9PT1lLnJldHVybnx8ZS5yZXR1cm49PT10KWJyZWFrIGU7ZT1lLnJldHVybn1lLnNpYmxpbmcucmV0dXJuPWUucmV0dXJuLGU9ZS5zaWJsaW5nfXImPTF9aWYoYihTLHIpLDA9PSgxJnQubW9kZSkpdC5tZW1vaXplZFN0YXRlPW51bGw7ZWxzZSBzd2l0Y2gobyl7Y2FzZSJmb3J3YXJkcyI6Zm9yKG49dC5jaGlsZCxvPW51bGw7bnVsbCE9PW47KW51bGwhPT0oZT1uLmFsdGVybmF0ZSkmJm51bGw9PT1waShlKSYmKG89biksbj1uLnNpYmxpbmc7bnVsbD09PShuPW8pPyhvPXQuY2hpbGQsdC5jaGlsZD1udWxsKToobz1uLnNpYmxpbmcsbi5zaWJsaW5nPW51bGwpLFRsKHQsITEsbyxuLGEpO2JyZWFrO2Nhc2UiYmFja3dhcmRzIjpmb3Iobz10LmNoaWxkLHQuY2hpbGQ9bj1udWxsO251bGwhPT1vOyl7aWYobnVsbCE9PShlPW8uYWx0ZXJuYXRlKSYmbnVsbD09PXBpKGUpKXt0LmNoaWxkPW87YnJlYWt9ZT1vLnNpYmxpbmcsby5zaWJsaW5nPW4sbj1vLG89ZX1UbCh0LCEwLG4sbnVsbCxhKTticmVhaztjYXNlInRvZ2V0aGVyIjpUbCh0LCExLG51bGwsbnVsbCx2b2lkIDApO2JyZWFrO2RlZmF1bHQ6dC5tZW1vaXplZFN0YXRlPW51bGx9cmV0dXJuIHQuY2hpbGR9ZnVuY3Rpb24gTWwoZSx0KXswPT0oMSZ0Lm1vZGUpJiZudWxsIT09ZSYmKGUuYWx0ZXJuYXRlPW51bGwsdC5hbHRlcm5hdGU9bnVsbCx0LmZsYWdzfD0yKX1mdW5jdGlvbiBSbChlLHQsbil7aWYobnVsbCE9PWUmJih0LmRlcGVuZGVuY2llcz1lLmRlcGVuZGVuY2llcyksaGN8PXQubGFuZXMsMD09KG4mdC5jaGlsZExhbmVzKSlyZXR1cm4gbnVsbDtpZihudWxsIT09ZSYmdC5jaGlsZCE9PWUuY2hpbGQpdGhyb3cgRXJyb3IoRCgxNTMpKTtpZihudWxsIT09dC5jaGlsZCl7Zm9yKG49b3UoZT10LmNoaWxkLGUucGVuZGluZ1Byb3BzKSwodC5jaGlsZD1uKS5yZXR1cm49dDtudWxsIT09ZS5zaWJsaW5nOyllPWUuc2libGluZywobj1uLnNpYmxpbmc9b3UoZSxlLnBlbmRpbmdQcm9wcykpLnJldHVybj10O24uc2libGluZz1udWxsfXJldHVybiB0LmNoaWxkfWZ1bmN0aW9uIE5sKGUsdCl7aWYoIVUpc3dpdGNoKGUudGFpbE1vZGUpe2Nhc2UiaGlkZGVuIjp0PWUudGFpbDtmb3IodmFyIG49bnVsbDtudWxsIT09dDspbnVsbCE9PXQuYWx0ZXJuYXRlJiYobj10KSx0PXQuc2libGluZztudWxsPT09bj9lLnRhaWw9bnVsbDpuLnNpYmxpbmc9bnVsbDticmVhaztjYXNlImNvbGxhcHNlZCI6Zm9yKHZhciBuPWUudGFpbCxyPW51bGw7bnVsbCE9PW47KW51bGwhPT1uLmFsdGVybmF0ZSYmKHI9biksbj1uLnNpYmxpbmc7bnVsbD09PXI/dHx8bnVsbD09PWUudGFpbD9lLnRhaWw9bnVsbDplLnRhaWwuc2libGluZz1udWxsOnIuc2libGluZz1udWxsfX1mdW5jdGlvbiBmKGUpe3ZhciB0PW51bGwhPT1lLmFsdGVybmF0ZSYmZS5hbHRlcm5hdGUuY2hpbGQ9PT1lLmNoaWxkLG49MCxyPTA7aWYodClmb3IodmFyIG89ZS5jaGlsZDtudWxsIT09bzspbnw9by5sYW5lc3xvLmNoaWxkTGFuZXMscj0ocnw9MTQ2ODAwNjQmby5zdWJ0cmVlRmxhZ3MpfDE0NjgwMDY0Jm8uZmxhZ3Msby5yZXR1cm49ZSxvPW8uc2libGluZztlbHNlIGZvcihvPWUuY2hpbGQ7bnVsbCE9PW87KW58PW8ubGFuZXN8by5jaGlsZExhbmVzLHI9KHJ8PW8uc3VidHJlZUZsYWdzKXxvLmZsYWdzLG8ucmV0dXJuPWUsbz1vLnNpYmxpbmc7ZS5zdWJ0cmVlRmxhZ3N8PXIsZS5jaGlsZExhbmVzPW59dmFyIERsPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQuY2hpbGQ7bnVsbCE9PW47KXtpZig1PT09bi50YWd8fDY9PT1uLnRhZyllLmFwcGVuZENoaWxkKG4uc3RhdGVOb2RlKTtlbHNlIGlmKDQhPT1uLnRhZyYmbnVsbCE9PW4uY2hpbGQpe249KG4uY2hpbGQucmV0dXJuPW4pLmNoaWxkO2NvbnRpbnVlfWlmKG49PT10KWJyZWFrO2Zvcig7bnVsbD09PW4uc2libGluZzspe2lmKG51bGw9PT1uLnJldHVybnx8bi5yZXR1cm49PT10KXJldHVybjtuPW4ucmV0dXJufW4uc2libGluZy5yZXR1cm49bi5yZXR1cm4sbj1uLnNpYmxpbmd9fSxVbD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1lLm1lbW9pemVkUHJvcHM7aWYobyE9PXIpe2U9dC5zdGF0ZU5vZGUsY2koYWkuY3VycmVudCk7dmFyIGEsaT1udWxsO3N3aXRjaChuKXtjYXNlImlucHV0IjpvPUVlKGUsbykscj1FZShlLHIpLGk9W107YnJlYWs7Y2FzZSJzZWxlY3QiOm89Zyh7fSxvLHt2YWx1ZTp2b2lkIDB9KSxyPWcoe30scix7dmFsdWU6dm9pZCAwfSksaT1bXTticmVhaztjYXNlInRleHRhcmVhIjpvPVRlKGUsbykscj1UZShlLHIpLGk9W107YnJlYWs7ZGVmYXVsdDoiZnVuY3Rpb24iIT10eXBlb2Ygby5vbkNsaWNrJiYiZnVuY3Rpb24iPT10eXBlb2Ygci5vbkNsaWNrJiYoZS5vbmNsaWNrPXBvKX1mb3IodSBpbiBaZShuLHIpLG49bnVsbCxvKWlmKCFyLmhhc093blByb3BlcnR5KHUpJiZvLmhhc093blByb3BlcnR5KHUpJiZudWxsIT1vW3VdKWlmKCJzdHlsZSI9PT11KXt2YXIgbD1vW3VdO2ZvcihhIGluIGwpbC5oYXNPd25Qcm9wZXJ0eShhKSYmKG49bnx8e30sblthXT0iIil9ZWxzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCIhPT11JiYiY2hpbGRyZW4iIT09dSYmInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIhPT11JiYic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiE9PXUmJiJhdXRvRm9jdXMiIT09dSYmKEguaGFzT3duUHJvcGVydHkodSk/aT1pfHxbXTooaT1pfHxbXSkucHVzaCh1LG51bGwpKTtmb3IodSBpbiByKXt2YXIgYz1yW3VdLGw9bnVsbCE9bz9vW3VdOnZvaWQgMDtpZihyLmhhc093blByb3BlcnR5KHUpJiZjIT09bCYmKG51bGwhPWN8fG51bGwhPWwpKWlmKCJzdHlsZSI9PT11KWlmKGwpe2ZvcihhIGluIGwpIWwuaGFzT3duUHJvcGVydHkoYSl8fGMmJmMuaGFzT3duUHJvcGVydHkoYSl8fChuPW58fHt9LG5bYV09IiIpO2ZvcihhIGluIGMpYy5oYXNPd25Qcm9wZXJ0eShhKSYmbFthXSE9PWNbYV0mJihuPW58fHt9LG5bYV09Y1thXSl9ZWxzZSBufHwoaT1pfHxbXSkucHVzaCh1LG4pLG49YztlbHNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj09PXU/KGM9Yz9jLl9faHRtbDp2b2lkIDAsbD1sP2wuX19odG1sOnZvaWQgMCxudWxsIT1jJiZsIT09YyYmKGk9aXx8W10pLnB1c2godSxjKSk6ImNoaWxkcmVuIj09PXU/InN0cmluZyIhPXR5cGVvZiBjJiYibnVtYmVyIiE9dHlwZW9mIGN8fChpPWl8fFtdKS5wdXNoKHUsIiIrYyk6InN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIhPT11JiYic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiE9PXUmJihILmhhc093blByb3BlcnR5KHUpPyhudWxsIT1jJiYib25TY3JvbGwiPT09dSYmcygic2Nyb2xsIixlKSxpfHxsPT09Y3x8KGk9W10pKTooaT1pfHxbXSkucHVzaCh1LGMpKX1uJiYoaT1pfHxbXSkucHVzaCgic3R5bGUiLG4pO3ZhciB1PWk7KHQudXBkYXRlUXVldWU9dSkmJih0LmZsYWdzfD00KX19LEJsPWZ1bmN0aW9uKGUsdCxuLHIpe24hPT1yJiYodC5mbGFnc3w9NCl9LEZsPSExLFA9ITEsSGw9ImZ1bmN0aW9uIj09dHlwZW9mIFdlYWtTZXQ/V2Vha1NldDpTZXQsST1udWxsO2Z1bmN0aW9uIFZsKHQsbil7dmFyIGU9dC5yZWY7aWYobnVsbCE9PWUpaWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpdHJ5e2UobnVsbCl9Y2F0Y2goZSl7TSh0LG4sZSl9ZWxzZSBlLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiAkbCh0LG4sZSl7dHJ5e2UoKX1jYXRjaChlKXtNKHQsbixlKX19dmFyIFdsPSExO2Z1bmN0aW9uIEdsKGUsdCxuKXt2YXIgcj10LnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT0ocj1udWxsIT09cj9yLmxhc3RFZmZlY3Q6bnVsbCkpe3ZhciBvLGE9cj1yLm5leHQ7ZG97fXdoaWxlKChhLnRhZyZlKT09PWUmJihvPWEuZGVzdHJveSwoYS5kZXN0cm95PXZvaWQgMCkhPT1vKSYmJGwodCxuLG8pLChhPWEubmV4dCkhPT1yKX19ZnVuY3Rpb24gcWwoZSx0KXtpZihudWxsIT09KHQ9bnVsbCE9PSh0PXQudXBkYXRlUXVldWUpP3QubGFzdEVmZmVjdDpudWxsKSl7dmFyIG4scj10PXQubmV4dDtkb3t9d2hpbGUoKHIudGFnJmUpPT09ZSYmKG49ci5jcmVhdGUsci5kZXN0cm95PW4oKSksKHI9ci5uZXh0KSE9PXQpfX1mdW5jdGlvbiBabChlKXt2YXIgdCxuPWUucmVmO251bGwhPT1uJiYodD1lLnN0YXRlTm9kZSxlLnRhZyxlPXQsImZ1bmN0aW9uIj09dHlwZW9mIG4/bihlKTpuLmN1cnJlbnQ9ZSl9ZnVuY3Rpb24gWGwoZSl7cmV0dXJuIDU9PT1lLnRhZ3x8Mz09PWUudGFnfHw0PT09ZS50YWd9ZnVuY3Rpb24gWWwoZSl7ZTpmb3IoOzspe2Zvcig7bnVsbD09PWUuc2libGluZzspe2lmKG51bGw9PT1lLnJldHVybnx8WGwoZS5yZXR1cm4pKXJldHVybiBudWxsO2U9ZS5yZXR1cm59Zm9yKGUuc2libGluZy5yZXR1cm49ZS5yZXR1cm4sZT1lLnNpYmxpbmc7NSE9PWUudGFnJiY2IT09ZS50YWcmJjE4IT09ZS50YWc7KXtpZigyJmUuZmxhZ3MpY29udGludWUgZTtpZihudWxsPT09ZS5jaGlsZHx8ND09PWUudGFnKWNvbnRpbnVlIGU7ZT0oZS5jaGlsZC5yZXR1cm49ZSkuY2hpbGR9aWYoISgyJmUuZmxhZ3MpKXJldHVybiBlLnN0YXRlTm9kZX19dmFyIGQ9bnVsbCxRbD0hMTtmdW5jdGlvbiBLbChlLHQsbil7Zm9yKG49bi5jaGlsZDtudWxsIT09bjspSmwoZSx0LG4pLG49bi5zaWJsaW5nfWZ1bmN0aW9uIEpsKGUsdCxuKXtpZihfdCYmImZ1bmN0aW9uIj09dHlwZW9mIF90Lm9uQ29tbWl0RmliZXJVbm1vdW50KXRyeXtfdC5vbkNvbW1pdEZpYmVyVW5tb3VudChJdCxuKX1jYXRjaChlKXt9c3dpdGNoKG4udGFnKXtjYXNlIDU6UHx8Vmwobix0KTtjYXNlIDY6dmFyIHI9ZCxvPVFsO2Q9bnVsbCxLbChlLHQsbiksUWw9byxudWxsIT09KGQ9cikmJihRbD8oZT1kLG49bi5zdGF0ZU5vZGUsKDg9PT1lLm5vZGVUeXBlP2UucGFyZW50Tm9kZTplKS5yZW1vdmVDaGlsZChuKSk6ZC5yZW1vdmVDaGlsZChuLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgMTg6bnVsbCE9PWQmJihRbD8oZT1kLG49bi5zdGF0ZU5vZGUsOD09PWUubm9kZVR5cGU/a28oZS5wYXJlbnROb2RlLG4pOjE9PT1lLm5vZGVUeXBlJiZrbyhlLG4pLG1uKGUpKTprbyhkLG4uc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSA0OnI9ZCxvPVFsLGQ9bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxRbD0hMCxLbChlLHQsbiksZD1yLFFsPW87YnJlYWs7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmlmKCFQJiZudWxsIT09KHI9bi51cGRhdGVRdWV1ZSkmJm51bGwhPT0ocj1yLmxhc3RFZmZlY3QpKXtvPXI9ci5uZXh0O2Rve3ZhciBhPW8uZGVzdHJveSxpPW8udGFnfXdoaWxlKHZvaWQgMD09PWF8fDA9PSgyJmkpJiYwPT0oNCZpKXx8JGwobix0LGEpLChvPW8ubmV4dCkhPT1yKX1LbChlLHQsbik7YnJlYWs7Y2FzZSAxOmlmKCFQJiYoVmwobix0KSwiZnVuY3Rpb24iPT10eXBlb2Yocj1uLnN0YXRlTm9kZSkuY29tcG9uZW50V2lsbFVubW91bnQpKXRyeXtyLnByb3BzPW4ubWVtb2l6ZWRQcm9wcyxyLnN0YXRlPW4ubWVtb2l6ZWRTdGF0ZSxyLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goZSl7TShuLHQsZSl9S2woZSx0LG4pO2JyZWFrO2Nhc2UgMjE6S2woZSx0LG4pO2JyZWFrO2Nhc2UgMjI6MSZuLm1vZGU/KFA9KHI9UCl8fG51bGwhPT1uLm1lbW9pemVkU3RhdGUsS2woZSx0LG4pLFA9cik6S2woZSx0LG4pO2JyZWFrO2RlZmF1bHQ6S2woZSx0LG4pfX1mdW5jdGlvbiBlYyhuKXt2YXIgcixlPW4udXBkYXRlUXVldWU7bnVsbCE9PWUmJigobi51cGRhdGVRdWV1ZT1udWxsKT09PShyPW4uc3RhdGVOb2RlKSYmKHI9bi5zdGF0ZU5vZGU9bmV3IEhsKSxlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj0wO3N3aXRjaChlLnRhZyl7Y2FzZSAxMzp2YXIgcj1lLnN0YXRlTm9kZSxvPWUubWVtb2l6ZWRTdGF0ZTtudWxsIT09byYmKG49by5yZXRyeUxhbmUpO2JyZWFrO2Nhc2UgMTk6cj1lLnN0YXRlTm9kZTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKEQoMzE0KSl9bnVsbCE9PXImJnIuZGVsZXRlKHQpLEpjKGUsbil9LmJpbmQobnVsbCxuLGUpO3IuaGFzKGUpfHwoci5hZGQoZSksZS50aGVuKHQsdCkpfSkpfWZ1bmN0aW9uIHRjKGUsdCl7dmFyIG49dC5kZWxldGlvbnM7aWYobnVsbCE9PW4pZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl07dHJ5e3ZhciBhPWUsaT10LGw9aTtlOmZvcig7bnVsbCE9PWw7KXtzd2l0Y2gobC50YWcpe2Nhc2UgNTpkPWwuc3RhdGVOb2RlLFFsPSExO2JyZWFrIGU7Y2FzZSAzOmNhc2UgNDpkPWwuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sUWw9ITA7YnJlYWsgZX1sPWwucmV0dXJufWlmKG51bGw9PT1kKXRocm93IEVycm9yKEQoMTYwKSk7SmwoYSxpLG8pLGQ9bnVsbCxRbD0hMTt2YXIgYz1vLmFsdGVybmF0ZTtudWxsIT09YyYmKGMucmV0dXJuPW51bGwpLG8ucmV0dXJuPW51bGx9Y2F0Y2goZSl7TShvLHQsZSl9fWlmKDEyODU0JnQuc3VidHJlZUZsYWdzKWZvcih0PXQuY2hpbGQ7bnVsbCE9PXQ7KW5jKHQsZSksdD10LnNpYmxpbmd9ZnVuY3Rpb24gbmModCxlKXt2YXIgbj10LmFsdGVybmF0ZSxyPXQuZmxhZ3M7c3dpdGNoKHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6aWYodGMoZSx0KSxyYyh0KSw0JnIpe3RyeXtHbCgzLHQsdC5yZXR1cm4pLHFsKDMsdCl9Y2F0Y2goZSl7TSh0LHQucmV0dXJuLGUpfXRyeXtHbCg1LHQsdC5yZXR1cm4pfWNhdGNoKGUpe00odCx0LnJldHVybixlKX19YnJlYWs7Y2FzZSAxOnRjKGUsdCkscmModCksNTEyJnImJm51bGwhPT1uJiZWbChuLG4ucmV0dXJuKTticmVhaztjYXNlIDU6aWYodGMoZSx0KSxyYyh0KSw1MTImciYmbnVsbCE9PW4mJlZsKG4sbi5yZXR1cm4pLDMyJnQuZmxhZ3Mpe3ZhciBvPXQuc3RhdGVOb2RlO3RyeXtIZShvLCIiKX1jYXRjaChlKXtNKHQsdC5yZXR1cm4sZSl9fWlmKDQmciYmbnVsbCE9KG89dC5zdGF0ZU5vZGUpKXt2YXIgYT10Lm1lbW9pemVkUHJvcHMsaT1udWxsIT09bj9uLm1lbW9pemVkUHJvcHM6YSxsPXQudHlwZSxjPXQudXBkYXRlUXVldWU7aWYoKHQudXBkYXRlUXVldWU9bnVsbCkhPT1jKXRyeXsiaW5wdXQiPT09bCYmInJhZGlvIj09PWEudHlwZSYmbnVsbCE9YS5uYW1lJiZqZShvLGEpLFhlKGwsaSk7Zm9yKHZhciB1PVhlKGwsYSksaT0wO2k8Yy5sZW5ndGg7aSs9Mil7dmFyIHM9Y1tpXSxmPWNbaSsxXTsic3R5bGUiPT09cz9HZShvLGYpOiJkYW5nZXJvdXNseVNldElubmVySFRNTCI9PT1zP0ZlKG8sZik6ImNoaWxkcmVuIj09PXM/SGUobyxmKTpLKG8scyxmLHUpfXN3aXRjaChsKXtjYXNlImlucHV0IjpBZShvLGEpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOk1lKG8sYSk7YnJlYWs7Y2FzZSJzZWxlY3QiOnZhciBkPW8uX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZSxwPShvLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9ISFhLm11bHRpcGxlLGEudmFsdWUpO251bGwhPXA/emUobywhIWEubXVsdGlwbGUscCwhMSk6ZCE9PSEhYS5tdWx0aXBsZSYmKG51bGwhPWEuZGVmYXVsdFZhbHVlP3plKG8sISFhLm11bHRpcGxlLGEuZGVmYXVsdFZhbHVlLCEwKTp6ZShvLCEhYS5tdWx0aXBsZSxhLm11bHRpcGxlP1tdOiIiLCExKSl9b1tPb109YX1jYXRjaChlKXtNKHQsdC5yZXR1cm4sZSl9fWJyZWFrO2Nhc2UgNjppZih0YyhlLHQpLHJjKHQpLDQmcil7aWYobnVsbD09PXQuc3RhdGVOb2RlKXRocm93IEVycm9yKEQoMTYyKSk7bz10LnN0YXRlTm9kZSxhPXQubWVtb2l6ZWRQcm9wczt0cnl7by5ub2RlVmFsdWU9YX1jYXRjaChlKXtNKHQsdC5yZXR1cm4sZSl9fWJyZWFrO2Nhc2UgMzppZih0YyhlLHQpLHJjKHQpLDQmciYmbnVsbCE9PW4mJm4ubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpdHJ5e21uKGUuY29udGFpbmVySW5mbyl9Y2F0Y2goZSl7TSh0LHQucmV0dXJuLGUpfWJyZWFrO2Nhc2UgNDp0YyhlLHQpLHJjKHQpO2JyZWFrO2Nhc2UgMTM6dGMoZSx0KSxyYyh0KSw4MTkyJihvPXQuY2hpbGQpLmZsYWdzJiYoYT1udWxsIT09by5tZW1vaXplZFN0YXRlLCEoby5zdGF0ZU5vZGUuaXNIaWRkZW49YSl8fG51bGwhPT1vLmFsdGVybmF0ZSYmbnVsbCE9PW8uYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGV8fCh2Yz1oKCkpKSw0JnImJmVjKHQpO2JyZWFrO2Nhc2UgMjI6aWYocz1udWxsIT09biYmbnVsbCE9PW4ubWVtb2l6ZWRTdGF0ZSwxJnQubW9kZT8oUD0odT1QKXx8cyx0YyhlLHQpLFA9dSk6dGMoZSx0KSxyYyh0KSw4MTkyJnIpe2lmKHU9bnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSwodC5zdGF0ZU5vZGUuaXNIaWRkZW49dSkmJiFzJiYwIT0oMSZ0Lm1vZGUpKWZvcihzPShJPXQpLmNoaWxkO251bGwhPT1zOyl7Zm9yKGY9ST1zO251bGwhPT1JOyl7c3dpdGNoKHA9KGQ9SSkuY2hpbGQsZC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpHbCg0LGQsZC5yZXR1cm4pO2JyZWFrO2Nhc2UgMTpWbChkLGQucmV0dXJuKTt2YXIgbT1kLnN0YXRlTm9kZTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbS5jb21wb25lbnRXaWxsVW5tb3VudCl7bj0ocj1kKS5yZXR1cm47dHJ5e2U9cixtLnByb3BzPWUubWVtb2l6ZWRQcm9wcyxtLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxtLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goZSl7TShyLG4sZSl9fWJyZWFrO2Nhc2UgNTpWbChkLGQucmV0dXJuKTticmVhaztjYXNlIDIyOmlmKG51bGwhPT1kLm1lbW9pemVkU3RhdGUpe2ljKGYpO2NvbnRpbnVlfX1udWxsIT09cD8ocC5yZXR1cm49ZCxJPXApOmljKGYpfXM9cy5zaWJsaW5nfWU6Zm9yKHM9bnVsbCxmPXQ7Oyl7aWYoNT09PWYudGFnKXtpZihudWxsPT09cyl7cz1mO3RyeXtvPWYuc3RhdGVOb2RlLHU/ImZ1bmN0aW9uIj09dHlwZW9mKGE9by5zdHlsZSkuc2V0UHJvcGVydHk/YS5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsIm5vbmUiLCJpbXBvcnRhbnQiKTphLmRpc3BsYXk9Im5vbmUiOihsPWYuc3RhdGVOb2RlLGk9bnVsbCE9KGM9Zi5tZW1vaXplZFByb3BzLnN0eWxlKSYmYy5oYXNPd25Qcm9wZXJ0eSgiZGlzcGxheSIpP2MuZGlzcGxheTpudWxsLGwuc3R5bGUuZGlzcGxheT1XZSgiZGlzcGxheSIsaSkpfWNhdGNoKGUpe00odCx0LnJldHVybixlKX19fWVsc2UgaWYoNj09PWYudGFnKXtpZihudWxsPT09cyl0cnl7Zi5zdGF0ZU5vZGUubm9kZVZhbHVlPXU/IiI6Zi5tZW1vaXplZFByb3BzfWNhdGNoKGUpe00odCx0LnJldHVybixlKX19ZWxzZSBpZigoMjIhPT1mLnRhZyYmMjMhPT1mLnRhZ3x8bnVsbD09PWYubWVtb2l6ZWRTdGF0ZXx8Zj09PXQpJiZudWxsIT09Zi5jaGlsZCl7Zj0oZi5jaGlsZC5yZXR1cm49ZikuY2hpbGQ7Y29udGludWV9aWYoZj09PXQpYnJlYWs7Zm9yKDtudWxsPT09Zi5zaWJsaW5nOyl7aWYobnVsbD09PWYucmV0dXJufHxmLnJldHVybj09PXQpYnJlYWsgZTtzPT09ZiYmKHM9bnVsbCksZj1mLnJldHVybn1zPT09ZiYmKHM9bnVsbCksZi5zaWJsaW5nLnJldHVybj1mLnJldHVybixmPWYuc2libGluZ319YnJlYWs7Y2FzZSAxOTp0YyhlLHQpLHJjKHQpLDQmciYmZWModCk7YnJlYWs7Y2FzZSAyMTpicmVhaztkZWZhdWx0OnRjKGUsdCkscmModCl9fWZ1bmN0aW9uIHJjKHQpe3ZhciBlPXQuZmxhZ3M7aWYoMiZlKXt0cnl7ZTp7Zm9yKHZhciBuPXQucmV0dXJuO251bGwhPT1uOyl7aWYoWGwobikpe3ZhciByPW47YnJlYWsgZX1uPW4ucmV0dXJufXRocm93IEVycm9yKEQoMTYwKSl9c3dpdGNoKHIudGFnKXtjYXNlIDU6dmFyIG89ci5zdGF0ZU5vZGU7MzImci5mbGFncyYmKEhlKG8sIiIpLHIuZmxhZ3MmPS0zMyksIWZ1bmN0aW9uIGUodCxuLHIpe3ZhciBvPXQudGFnO2lmKDU9PT1vfHw2PT09byl0PXQuc3RhdGVOb2RlLG4/ci5pbnNlcnRCZWZvcmUodCxuKTpyLmFwcGVuZENoaWxkKHQpO2Vsc2UgaWYoNCE9PW8mJm51bGwhPT0odD10LmNoaWxkKSlmb3IoZSh0LG4sciksdD10LnNpYmxpbmc7bnVsbCE9PXQ7KWUodCxuLHIpLHQ9dC5zaWJsaW5nfSh0LFlsKHQpLG8pO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dmFyIGE9ci5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzshZnVuY3Rpb24gZSh0LG4scil7dmFyIG89dC50YWc7aWYoNT09PW98fDY9PT1vKXQ9dC5zdGF0ZU5vZGUsbj8oOD09PXIubm9kZVR5cGU/ci5wYXJlbnROb2RlOnIpLmluc2VydEJlZm9yZSh0LG4pOig4PT09ci5ub2RlVHlwZT8obj1yLnBhcmVudE5vZGUpLmluc2VydEJlZm9yZSh0LHIpOihuPXIpLmFwcGVuZENoaWxkKHQpLG51bGw9PShyPXIuX3JlYWN0Um9vdENvbnRhaW5lcikmJm51bGw9PT1uLm9uY2xpY2smJihuLm9uY2xpY2s9cG8pKTtlbHNlIGlmKDQhPT1vJiZudWxsIT09KHQ9dC5jaGlsZCkpZm9yKGUodCxuLHIpLHQ9dC5zaWJsaW5nO251bGwhPT10OyllKHQsbixyKSx0PXQuc2libGluZ30odCxZbCh0KSxhKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKEQoMTYxKSl9fWNhdGNoKGUpe00odCx0LnJldHVybixlKX10LmZsYWdzJj0tM300MDk2JmUmJih0LmZsYWdzJj0tNDA5Nyl9ZnVuY3Rpb24gb2MoZSx0LG4peyFmdW5jdGlvbiBlKHQsbixyKXtmb3IodmFyIG89MCE9KDEmdC5tb2RlKTtudWxsIT09STspe3ZhciBhPUksaT1hLmNoaWxkO2lmKDIyPT09YS50YWcmJm8pe3ZhciBsPW51bGwhPT1hLm1lbW9pemVkU3RhdGV8fEZsO2lmKCFsKXt2YXIgYz1hLmFsdGVybmF0ZSx1PW51bGwhPT1jJiZudWxsIT09Yy5tZW1vaXplZFN0YXRlfHxQLHM9KGM9RmwsUCk7aWYoRmw9bCwoUD11KSYmIXMpZm9yKEk9YTtudWxsIT09STspdT0obD1JKS5jaGlsZCwoMjIhPT1sLnRhZ3x8bnVsbD09PWwubWVtb2l6ZWRTdGF0ZSkmJm51bGwhPT11Pyh1LnJldHVybj1sLEk9dSk6bGMoYSk7Zm9yKDtudWxsIT09aTspZShJPWksbixyKSxpPWkuc2libGluZztJPWEsRmw9YyxQPXN9YWModCl9ZWxzZSAwIT0oODc3MiZhLnN1YnRyZWVGbGFncykmJm51bGwhPT1pPyhpLnJldHVybj1hLEk9aSk6YWModCl9fShJPWUsdCxuKX1mdW5jdGlvbiBhYyhlKXtmb3IoO251bGwhPT1JOyl7dmFyIHQ9STtpZigwIT0oODc3MiZ0LmZsYWdzKSl7dmFyIG4scixvLGE9dC5hbHRlcm5hdGU7dHJ5e2lmKDAhPSg4NzcyJnQuZmxhZ3MpKXN3aXRjaCh0LnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpQfHxxbCg1LHQpO2JyZWFrO2Nhc2UgMTp2YXIgaSxsPXQuc3RhdGVOb2RlLGM9KDQmdC5mbGFncyYmIVAmJihudWxsPT09YT9sLmNvbXBvbmVudERpZE1vdW50KCk6KGk9dC5lbGVtZW50VHlwZT09PXQudHlwZT9hLm1lbW9pemVkUHJvcHM6a2EodC50eXBlLGEubWVtb2l6ZWRQcm9wcyksbC5jb21wb25lbnREaWRVcGRhdGUoaSxhLm1lbW9pemVkU3RhdGUsbC5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSkpKSx0LnVwZGF0ZVF1ZXVlKTtudWxsIT09YyYmJGEoMCxjLGwpO2JyZWFrO2Nhc2UgMzp2YXIgdT10LnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT11KXtpZigoYT1udWxsKSE9PXQuY2hpbGQpc3dpdGNoKHQuY2hpbGQudGFnKXtjYXNlIDU6Y2FzZSAxOmE9dC5jaGlsZC5zdGF0ZU5vZGV9JGEoMCx1LGEpfWJyZWFrO2Nhc2UgNTp2YXIgcz10LnN0YXRlTm9kZTtpZihudWxsPT09YSYmNCZ0LmZsYWdzKXt2YXIgYT1zLGY9dC5tZW1vaXplZFByb3BzO3N3aXRjaCh0LnR5cGUpe2Nhc2UiYnV0dG9uIjpjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6Zi5hdXRvRm9jdXMmJmEuZm9jdXMoKTticmVhaztjYXNlImltZyI6Zi5zcmMmJihhLnNyYz1mLnNyYyl9fWJyZWFrO2Nhc2UgNjpjYXNlIDQ6Y2FzZSAxMjpicmVhaztjYXNlIDEzOm51bGw9PT10Lm1lbW9pemVkU3RhdGUmJm51bGwhPT0obj10LmFsdGVybmF0ZSkmJm51bGwhPT0ocj1uLm1lbW9pemVkU3RhdGUpJiZudWxsIT09KG89ci5kZWh5ZHJhdGVkKSYmbW4obyk7YnJlYWs7Y2FzZSAxOTpjYXNlIDE3OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDIzOmNhc2UgMjU6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihEKDE2MykpfVB8fDUxMiZ0LmZsYWdzJiZabCh0KX1jYXRjaChlKXtNKHQsdC5yZXR1cm4sZSl9fWlmKHQ9PT1lKXtJPW51bGw7YnJlYWt9aWYobnVsbCE9PShhPXQuc2libGluZykpe2EucmV0dXJuPXQucmV0dXJuLEk9YTticmVha31JPXQucmV0dXJufX1mdW5jdGlvbiBpYyhlKXtmb3IoO251bGwhPT1JOyl7dmFyIHQ9STtpZih0PT09ZSl7ST1udWxsO2JyZWFrfXZhciBuPXQuc2libGluZztpZihudWxsIT09bil7bi5yZXR1cm49dC5yZXR1cm4sST1uO2JyZWFrfUk9dC5yZXR1cm59fWZ1bmN0aW9uIGxjKGUpe2Zvcig7bnVsbCE9PUk7KXt2YXIgdD1JO3RyeXtzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6dmFyIG49dC5yZXR1cm47dHJ5e3FsKDQsdCl9Y2F0Y2goZSl7TSh0LG4sZSl9YnJlYWs7Y2FzZSAxOnZhciByPXQuc3RhdGVOb2RlO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiByLmNvbXBvbmVudERpZE1vdW50KXt2YXIgbz10LnJldHVybjt0cnl7ci5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKGUpe00odCxvLGUpfX12YXIgYT10LnJldHVybjt0cnl7WmwodCl9Y2F0Y2goZSl7TSh0LGEsZSl9YnJlYWs7Y2FzZSA1OnZhciBpPXQucmV0dXJuO3RyeXtabCh0KX1jYXRjaChlKXtNKHQsaSxlKX19fWNhdGNoKGUpe00odCx0LnJldHVybixlKX1pZih0PT09ZSl7ST1udWxsO2JyZWFrfXZhciBsPXQuc2libGluZztpZihudWxsIT09bCl7bC5yZXR1cm49dC5yZXR1cm4sST1sO2JyZWFrfUk9dC5yZXR1cm59fXZhciBjYz1NYXRoLmNlaWwsdWM9Si5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLHNjPUouUmVhY3RDdXJyZW50T3duZXIsZmM9Si5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxfPTAscD1udWxsLHo9bnVsbCxUPTAsZGM9MCxwYz1ObygwKSxMPTAsbWM9bnVsbCxoYz0wLGdjPTAsYmM9MCx5Yz1udWxsLGw9bnVsbCx2Yz0wLHdjPTEvMCx4Yz1udWxsLGtjPSExLFNjPW51bGwsQ2M9bnVsbCxFYz0hMSxPYz1udWxsLGpjPTAsQWM9MCxQYz1udWxsLEljPS0xLF9jPTA7ZnVuY3Rpb24gbSgpe3JldHVybiAwIT0oNiZfKT9oKCk6LTEhPT1JYz9JYzpJYz1oKCl9ZnVuY3Rpb24gemMoZSl7cmV0dXJuIDA9PSgxJmUubW9kZSk/MTowIT0oMiZfKSYmMCE9PVQ/VCYtVDpudWxsIT09eGEudHJhbnNpdGlvbj9fYz0wPT09X2M/RnQoKTpfYzowPT09KGU9eCk/dm9pZCAwPT09KGU9d2luZG93LmV2ZW50KT8xNjprbihlLnR5cGUpOmV9ZnVuY3Rpb24gVGMoZSx0LG4scil7aWYoNTA8QWMpdGhyb3cgQWM9MCxQYz1udWxsLEVycm9yKEQoMTg1KSk7VnQoZSxuLHIpLDAhPSgyJl8pJiZlPT09cHx8KGU9PT1wJiYoMD09KDImXykmJihnY3w9biksND09PUwpJiZEYyhlLFQpLExjKGUsciksMT09PW4mJjA9PT1fJiYwPT0oMSZ0Lm1vZGUpJiYod2M9aCgpKzUwMCxxbykmJllvKCkpfWZ1bmN0aW9uIExjKGUsdCl7dmFyIG4scj1lLmNhbGxiYWNrTm9kZSxvPShVdChlLHQpLER0KGUsZT09PXA/VDowKSk7aWYoMD09PW8pbnVsbCE9PXImJnh0KHIpLGUuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja1ByaW9yaXR5PTA7ZWxzZSBpZihlLmNhbGxiYWNrUHJpb3JpdHkhPT0odD1vJi1vKSl7aWYobnVsbCE9ciYmeHQociksMT09PXQpMD09PWUudGFnPyhuPVVjLmJpbmQobnVsbCxlKSxxbz0hMCxYbyhuKSk6WG8oVWMuYmluZChudWxsLGUpKSx3byhmdW5jdGlvbigpezA9PSg2Jl8pJiZZbygpfSkscj1udWxsO2Vsc2V7c3dpdGNoKFd0KG8pKXtjYXNlIDE6cj1FdDticmVhaztjYXNlIDQ6cj1PdDticmVhaztjYXNlIDE2OnI9anQ7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6cj1QdDticmVhaztkZWZhdWx0OnI9anR9cj1ldShyLE1jLmJpbmQobnVsbCxlKSl9ZS5jYWxsYmFja1ByaW9yaXR5PXQsZS5jYWxsYmFja05vZGU9cn19ZnVuY3Rpb24gTWModCxlKXtpZihJYz0tMSwoX2M9MCkhPSg2Jl8pKXRocm93IEVycm9yKEQoMzI3KSk7dmFyIG49dC5jYWxsYmFja05vZGU7aWYoUWMoKSYmdC5jYWxsYmFja05vZGUhPT1uKXJldHVybiBudWxsO3ZhciByPUR0KHQsdD09PXA/VDowKTtpZigwPT09cilyZXR1cm4gbnVsbDtpZigwIT0oMzAmcil8fDAhPShyJnQuZXhwaXJlZExhbmVzKXx8ZSllPXFjKHQscik7ZWxzZXtlPXI7dmFyIG89XyxhPShffD0yLFdjKCkpO2ZvcihwPT09dCYmVD09PWV8fCh4Yz1udWxsLHdjPWgoKSs1MDAsVmModCxlKSk7Oyl0cnl7Zm9yKDtudWxsIT09eiYmIWt0KCk7KVpjKHopO2JyZWFrfWNhdGNoKGUpeyRjKHQsZSl9amEoKSx1Yy5jdXJyZW50PWEsXz1vLGU9bnVsbCE9PXo/MDoocD1udWxsLFQ9MCxMKX1pZigwIT09ZSl7aWYoMT09PShlPTI9PT1lJiYwIT09KG89QnQodCkpP1JjKHQscj1vKTplKSl0aHJvdyBuPW1jLFZjKHQsMCksRGModCxyKSxMYyh0LGgoKSksbjtpZig2PT09ZSlEYyh0LHIpO2Vsc2V7aWYobz10LmN1cnJlbnQuYWx0ZXJuYXRlLDA9PSgzMCZyKSYmIWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lOzspe2lmKDE2Mzg0JnQuZmxhZ3Mpe3ZhciBuPXQudXBkYXRlUXVldWU7aWYobnVsbCE9PW4mJm51bGwhPT0obj1uLnN0b3JlcykpZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl0sYT1vLmdldFNuYXBzaG90O289by52YWx1ZTt0cnl7aWYoIWtyKGEoKSxvKSlyZXR1cm59Y2F0Y2goZSl7cmV0dXJufX19aWYobj10LmNoaWxkLDE2Mzg0JnQuc3VidHJlZUZsYWdzJiZudWxsIT09biluLnJldHVybj10LHQ9bjtlbHNle2lmKHQ9PT1lKWJyZWFrO2Zvcig7bnVsbD09PXQuc2libGluZzspe2lmKG51bGw9PT10LnJldHVybnx8dC5yZXR1cm49PT1lKXJldHVybiAxO3Q9dC5yZXR1cm59dC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZ319cmV0dXJuIDF9KG8pJiYxPT09KGU9Mj09PShlPXFjKHQscikpJiYwIT09KGE9QnQodCkpP1JjKHQscj1hKTplKSl0aHJvdyBuPW1jLFZjKHQsMCksRGModCxyKSxMYyh0LGgoKSksbjtzd2l0Y2godC5maW5pc2hlZFdvcms9byx0LmZpbmlzaGVkTGFuZXM9cixlKXtjYXNlIDA6Y2FzZSAxOnRocm93IEVycm9yKEQoMzQ1KSk7Y2FzZSAyOlljKHQsbCx4Yyk7YnJlYWs7Y2FzZSAzOmlmKERjKHQsciksKDEzMDAyMzQyNCZyKT09PXImJjEwPChlPXZjKzUwMC1oKCkpKXtpZigwIT09RHQodCwwKSlicmVhaztpZigoKG89dC5zdXNwZW5kZWRMYW5lcykmcikhPT1yKXttKCksdC5waW5nZWRMYW5lc3w9dC5zdXNwZW5kZWRMYW5lcyZvO2JyZWFrfXQudGltZW91dEhhbmRsZT1ibyhZYy5iaW5kKG51bGwsdCxsLHhjKSxlKX1lbHNlIFljKHQsbCx4Yyk7YnJlYWs7Y2FzZSA0OmlmKERjKHQsciksKDQxOTQyNDAmcikhPT1yKXtmb3IoZT10LmV2ZW50VGltZXMsbz0tMTswPHI7KXt2YXIgaT0zMS16dChyKSxhPTE8PGk7bzwoaT1lW2ldKSYmKG89aSksciY9fmF9cj1vLDEwPChyPSgocj1oKCktcik8MTIwPzEyMDpyPDQ4MD80ODA6cjwxMDgwPzEwODA6cjwxOTIwPzE5MjA6cjwzZTM/M2UzOnI8NDMyMD80MzIwOjE5NjAqY2Moci8xOTYwKSktcik/dC50aW1lb3V0SGFuZGxlPWJvKFljLmJpbmQobnVsbCx0LGwseGMpLHIpOlljKHQsbCx4Yyl9YnJlYWs7Y2FzZSA1OlljKHQsbCx4Yyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihEKDMyOSkpfX19cmV0dXJuIExjKHQsaCgpKSx0LmNhbGxiYWNrTm9kZT09PW4/TWMuYmluZChudWxsLHQpOm51bGx9ZnVuY3Rpb24gUmMoZSx0KXt2YXIgbj15YztyZXR1cm4gZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYoVmMoZSx0KS5mbGFnc3w9MjU2KSwyIT09KGU9cWMoZSx0KSkmJih0PWwsbD1uLG51bGwhPT10KSYmTmModCksZX1mdW5jdGlvbiBOYyhlKXtudWxsPT09bD9sPWU6bC5wdXNoLmFwcGx5KGwsZSl9ZnVuY3Rpb24gRGMoZSx0KXtmb3IodD10Jn5iYyZ+Z2MsZS5zdXNwZW5kZWRMYW5lc3w9dCxlLnBpbmdlZExhbmVzJj1+dCxlPWUuZXhwaXJhdGlvblRpbWVzOzA8dDspe3ZhciBuPTMxLXp0KHQpLHI9MTw8bjtlW25dPS0xLHQmPX5yfX1mdW5jdGlvbiBVYyhlKXtpZigwIT0oNiZfKSl0aHJvdyBFcnJvcihEKDMyNykpO1FjKCk7dmFyIHQ9RHQoZSwwKTtpZigwIT0oMSZ0KSl7dmFyIG4scj1xYyhlLHQpO2lmKDE9PT0ocj0wIT09ZS50YWcmJjI9PT1yJiYwIT09KG49QnQoZSkpP1JjKGUsdD1uKTpyKSl0aHJvdyByPW1jLFZjKGUsMCksRGMoZSx0KSxMYyhlLGgoKSkscjtpZig2PT09cil0aHJvdyBFcnJvcihEKDM0NSkpO2UuZmluaXNoZWRXb3JrPWUuY3VycmVudC5hbHRlcm5hdGUsZS5maW5pc2hlZExhbmVzPXQsWWMoZSxsLHhjKX1yZXR1cm4gTGMoZSxoKCkpLG51bGx9ZnVuY3Rpb24gQmMoZSx0KXt2YXIgbj1fO198PTE7dHJ5e3JldHVybiBlKHQpfWZpbmFsbHl7MD09PShfPW4pJiYod2M9aCgpKzUwMCxxbykmJllvKCl9fWZ1bmN0aW9uIEZjKGUpe251bGwhPT1PYyYmMD09PU9jLnRhZyYmMD09KDYmXykmJlFjKCk7dmFyIHQ9XyxuPShffD0xLGZjLnRyYW5zaXRpb24pLHI9eDt0cnl7aWYoZmMudHJhbnNpdGlvbj1udWxsLHg9MSxlKXJldHVybiBlKCl9ZmluYWxseXt4PXIsZmMudHJhbnNpdGlvbj1uLDA9PSg2JihfPXQpKSYmWW8oKX19ZnVuY3Rpb24gSGMoKXtkYz1wYy5jdXJyZW50LHUocGMpfWZ1bmN0aW9uIFZjKGUsdCl7ZS5maW5pc2hlZFdvcms9bnVsbCxlLmZpbmlzaGVkTGFuZXM9MDt2YXIgbixyLG8sYT1lLnRpbWVvdXRIYW5kbGU7aWYoLTEhPT1hJiYoZS50aW1lb3V0SGFuZGxlPS0xLHlvKGEpKSxudWxsIT09eilmb3IoYT16LnJldHVybjtudWxsIT09YTspe3ZhciBpPWE7c3dpdGNoKHVhKGkpLGkudGFnKXtjYXNlIDE6bnVsbCE9KGk9aS50eXBlLmNoaWxkQ29udGV4dFR5cGVzKSYmRm8oKTticmVhaztjYXNlIDM6c2koKSx1KHYpLHUoeSksaGkoKTticmVhaztjYXNlIDU6ZGkoaSk7YnJlYWs7Y2FzZSA0OnNpKCk7YnJlYWs7Y2FzZSAxMzpjYXNlIDE5OnUoUyk7YnJlYWs7Y2FzZSAxMDpBYShpLnR5cGUuX2NvbnRleHQpO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyMzpIYygpfWE9YS5yZXR1cm59aWYoej1lPW91KChwPWUpLmN1cnJlbnQsbnVsbCksVD1kYz10LGJjPWdjPWhjPUw9MCwobD15Yz1tYz1udWxsKSE9PXphKXtmb3IodD0wO3Q8emEubGVuZ3RoO3QrKyludWxsIT09KGk9KGE9emFbdF0pLmludGVybGVhdmVkKSYmKGEuaW50ZXJsZWF2ZWQ9bnVsbCxuPWkubmV4dCxudWxsIT09KHI9YS5wZW5kaW5nKSYmKG89ci5uZXh0LHIubmV4dD1uLGkubmV4dD1vKSxhLnBlbmRpbmc9aSk7emE9bnVsbH1yZXR1cm4gZX1mdW5jdGlvbiAkYyhlLHQpe2Rve3ZhciBuPXo7dHJ5e2lmKGphKCksZ2kuY3VycmVudD1ybCx2aSl7Zm9yKHZhciByPUMubWVtb2l6ZWRTdGF0ZTtudWxsIT09cjspe3ZhciBvPXIucXVldWU7bnVsbCE9PW8mJihvLnBlbmRpbmc9bnVsbCkscj1yLm5leHR9dmk9ITF9aWYoTz1FPUM9bnVsbCx3aT0hMSx4aT15aT0wLChzYy5jdXJyZW50PW51bGwpPT09bnx8bnVsbD09PW4ucmV0dXJuKXtMPTEsbWM9dCx6PW51bGw7YnJlYWt9ZTp7dmFyIGE9ZSxpPW4ucmV0dXJuLGw9dDtpZih0PVQsKGc9bikuZmxhZ3N8PTMyNzY4LG51bGwhPT1sJiYib2JqZWN0Ij09dHlwZW9mIGwmJiJmdW5jdGlvbiI9PXR5cGVvZiBsLnRoZW4pe3ZhciBjLHU9bCxzPWcsZj1zLnRhZyxkPSgwIT0oMSZzLm1vZGUpfHwwIT09ZiYmMTEhPT1mJiYxNSE9PWZ8fCgoYz1zLmFsdGVybmF0ZSk/KHMudXBkYXRlUXVldWU9Yy51cGRhdGVRdWV1ZSxzLm1lbW9pemVkU3RhdGU9Yy5tZW1vaXplZFN0YXRlLHMubGFuZXM9Yy5sYW5lcyk6KHMudXBkYXRlUXVldWU9bnVsbCxzLm1lbW9pemVkU3RhdGU9bnVsbCkpLG1sKGkpKTtpZihudWxsIT09ZCl7ZC5mbGFncyY9LTI1NyxobChkLGksZywwLHQpLDEmZC5tb2RlJiZwbChhLHUsdCk7dmFyIHAsbD11LG09KHQ9ZCkudXBkYXRlUXVldWU7bnVsbD09PW0/KChwPW5ldyBTZXQpLmFkZChsKSx0LnVwZGF0ZVF1ZXVlPXApOm0uYWRkKGwpO2JyZWFrIGV9aWYoMD09KDEmdCkpe3BsKGEsdSx0KSxHYygpO2JyZWFrIGV9bD1FcnJvcihEKDQyNikpfWVsc2UgaWYoVSYmMSZnLm1vZGUpe3ZhciBoPW1sKGkpO2lmKG51bGwhPT1oKXswPT0oNjU1MzYmaC5mbGFncykmJihoLmZsYWdzfD0yNTYpLGhsKGgsaSxnLDAsdCksd2EobGwobCxnKSk7YnJlYWsgZX19YT1sPWxsKGwsZyksNCE9PUwmJihMPTIpLG51bGw9PT15Yz95Yz1bYV06eWMucHVzaChhKSxhPWk7ZG97c3dpdGNoKGEudGFnKXtjYXNlIDM6YS5mbGFnc3w9NjU1MzYsdCY9LXQsYS5sYW5lc3w9dCxIYShhLGZsKDAsbCx0KSk7YnJlYWsgZTtjYXNlIDE6dmFyIGc9bCxiPWEudHlwZSx5PWEuc3RhdGVOb2RlO2lmKDA9PSgxMjgmYS5mbGFncykmJigiZnVuY3Rpb24iPT10eXBlb2YgYi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fG51bGwhPT15JiYiZnVuY3Rpb24iPT10eXBlb2YgeS5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1DY3x8IUNjLmhhcyh5KSkpKXthLmZsYWdzfD02NTUzNix0Jj0tdCxhLmxhbmVzfD10LEhhKGEsZGwoYSxnLHQpKTticmVhayBlfX19d2hpbGUobnVsbCE9PShhPWEucmV0dXJuKSl9WGMobil9Y2F0Y2goZSl7dD1lLHo9PT1uJiZudWxsIT09biYmKHo9bi5yZXR1cm4pO2NvbnRpbnVlfWJyZWFrfXdoaWxlKDEpfWZ1bmN0aW9uIFdjKCl7dmFyIGU9dWMuY3VycmVudDtyZXR1cm4gdWMuY3VycmVudD1ybCxudWxsPT09ZT9ybDplfWZ1bmN0aW9uIEdjKCl7MCE9PUwmJjMhPT1MJiYyIT09THx8KEw9NCksbnVsbD09PXB8fDA9PSgyNjg0MzU0NTUmaGMpJiYwPT0oMjY4NDM1NDU1JmdjKXx8RGMocCxUKX1mdW5jdGlvbiBxYyh0LGUpe3ZhciBuPV8scj0oX3w9MixXYygpKTtmb3IocD09PXQmJlQ9PT1lfHwoeGM9bnVsbCxWYyh0LGUpKTs7KXRyeXtmb3IoO251bGwhPT16OylaYyh6KTticmVha31jYXRjaChlKXskYyh0LGUpfWlmKGphKCksXz1uLHVjLmN1cnJlbnQ9cixudWxsIT09eil0aHJvdyBFcnJvcihEKDI2MSkpO3JldHVybiBwPW51bGwsVD0wLEx9ZnVuY3Rpb24gWmMoZSl7dmFyIHQ9eXUoZS5hbHRlcm5hdGUsZSxkYyk7ZS5tZW1vaXplZFByb3BzPWUucGVuZGluZ1Byb3BzLG51bGw9PT10P1hjKGUpOno9dCxzYy5jdXJyZW50PW51bGx9ZnVuY3Rpb24gWGMoZSl7dmFyIHQ9ZTtkb3t2YXIgbj10LmFsdGVybmF0ZTtpZihlPXQucmV0dXJuLDA9PSgzMjc2OCZ0LmZsYWdzKSl7aWYobnVsbCE9PShuPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnBlbmRpbmdQcm9wcztzd2l0Y2godWEodCksdC50YWcpe2Nhc2UgMjpjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OnJldHVybiBmKHQpLG51bGw7Y2FzZSAxOnJldHVybiB3KHQudHlwZSkmJkZvKCksZih0KSxudWxsO2Nhc2UgMzpyZXR1cm4gcj10LnN0YXRlTm9kZSxzaSgpLHUodiksdSh5KSxoaSgpLHIucGVuZGluZ0NvbnRleHQmJihyLmNvbnRleHQ9ci5wZW5kaW5nQ29udGV4dCxyLnBlbmRpbmdDb250ZXh0PW51bGwpLG51bGwhPT1lJiZudWxsIT09ZS5jaGlsZHx8KGJhKHQpP3QuZmxhZ3N8PTQ6bnVsbD09PWV8fGUubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJjA9PSgyNTYmdC5mbGFncyl8fCh0LmZsYWdzfD0xMDI0LG51bGwhPT1mYSYmKE5jKGZhKSxmYT1udWxsKSkpLGYodCksbnVsbDtjYXNlIDU6ZGkodCk7dmFyIG8sYT1jaShsaS5jdXJyZW50KTtpZihuPXQudHlwZSxudWxsIT09ZSYmbnVsbCE9dC5zdGF0ZU5vZGUpVWwoZSx0LG4sciksZS5yZWYhPT10LnJlZiYmKHQuZmxhZ3N8PTUxMix0LmZsYWdzfD0yMDk3MTUyKTtlbHNle2lmKCFyKXtpZihudWxsPT09dC5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IoRCgxNjYpKTtyZXR1cm4gZih0KSxudWxsfWlmKGU9Y2koYWkuY3VycmVudCksYmEodCkpe3I9dC5zdGF0ZU5vZGUsbj10LnR5cGU7dmFyIGksbCxjPXQubWVtb2l6ZWRQcm9wcztzd2l0Y2gocltFb109dCxyW09vXT1jLGU9MCE9KDEmdC5tb2RlKSxuKXtjYXNlImRpYWxvZyI6cygiY2FuY2VsIixyKSxzKCJjbG9zZSIscik7YnJlYWs7Y2FzZSJpZnJhbWUiOmNhc2Uib2JqZWN0IjpjYXNlImVtYmVkIjpzKCJsb2FkIixyKTticmVhaztjYXNlInZpZGVvIjpjYXNlImF1ZGlvIjpmb3IoYT0wO2E8WHIubGVuZ3RoO2ErKylzKFhyW2FdLHIpO2JyZWFrO2Nhc2Uic291cmNlIjpzKCJlcnJvciIscik7YnJlYWs7Y2FzZSJpbWciOmNhc2UiaW1hZ2UiOmNhc2UibGluayI6cygiZXJyb3IiLHIpLHMoImxvYWQiLHIpO2JyZWFrO2Nhc2UiZGV0YWlscyI6cygidG9nZ2xlIixyKTticmVhaztjYXNlImlucHV0IjpPZShyLGMpLHMoImludmFsaWQiLHIpO2JyZWFrO2Nhc2Uic2VsZWN0IjpyLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhYy5tdWx0aXBsZX0scygiaW52YWxpZCIscik7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6TGUocixjKSxzKCJpbnZhbGlkIixyKX1mb3IoaSBpbiBaZShuLGMpLGE9bnVsbCxjKWMuaGFzT3duUHJvcGVydHkoaSkmJihsPWNbaV0sImNoaWxkcmVuIj09PWk/InN0cmluZyI9PXR5cGVvZiBsP3IudGV4dENvbnRlbnQhPT1sJiYoITAhPT1jLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmZm8oci50ZXh0Q29udGVudCxsLGUpLGE9WyJjaGlsZHJlbiIsbF0pOiJudW1iZXIiPT10eXBlb2YgbCYmci50ZXh0Q29udGVudCE9PSIiK2wmJighMCE9PWMuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZmbyhyLnRleHRDb250ZW50LGwsZSksYT1bImNoaWxkcmVuIiwiIitsXSk6SC5oYXNPd25Qcm9wZXJ0eShpKSYmbnVsbCE9bCYmIm9uU2Nyb2xsIj09PWkmJnMoInNjcm9sbCIscikpO3N3aXRjaChuKXtjYXNlImlucHV0IjprZShyKSxQZShyLGMsITApO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmtlKHIpLFJlKHIpO2JyZWFrO2Nhc2Uic2VsZWN0IjpjYXNlIm9wdGlvbiI6YnJlYWs7ZGVmYXVsdDoiZnVuY3Rpb24iPT10eXBlb2YgYy5vbkNsaWNrJiYoci5vbmNsaWNrPXBvKX1yPWEsbnVsbCE9PSh0LnVwZGF0ZVF1ZXVlPXIpJiYodC5mbGFnc3w9NCl9ZWxzZXtpPTk9PT1hLm5vZGVUeXBlP2E6YS5vd25lckRvY3VtZW50LCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PShlPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWU/TmUobik6ZSk/InNjcmlwdCI9PT1uPygoZT1pLmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9IjxzY3JpcHQ+PFwvc2NyaXB0PiIsZT1lLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCkpOiJzdHJpbmciPT10eXBlb2Ygci5pcz9lPWkuY3JlYXRlRWxlbWVudChuLHtpczpyLmlzfSk6KGU9aS5jcmVhdGVFbGVtZW50KG4pLCJzZWxlY3QiPT09biYmKGk9ZSxyLm11bHRpcGxlP2kubXVsdGlwbGU9ITA6ci5zaXplJiYoaS5zaXplPXIuc2l6ZSkpKTplPWkuY3JlYXRlRWxlbWVudE5TKGUsbiksZVtFb109dCxlW09vXT1yLERsKGUsdCksdC5zdGF0ZU5vZGU9ZTtlOntzd2l0Y2goaT1YZShuLHIpLG4pe2Nhc2UiZGlhbG9nIjpzKCJjYW5jZWwiLGUpLHMoImNsb3NlIixlKSxhPXI7YnJlYWs7Y2FzZSJpZnJhbWUiOmNhc2Uib2JqZWN0IjpjYXNlImVtYmVkIjpzKCJsb2FkIixlKSxhPXI7YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6Zm9yKGE9MDthPFhyLmxlbmd0aDthKyspcyhYclthXSxlKTthPXI7YnJlYWs7Y2FzZSJzb3VyY2UiOnMoImVycm9yIixlKSxhPXI7YnJlYWs7Y2FzZSJpbWciOmNhc2UiaW1hZ2UiOmNhc2UibGluayI6cygiZXJyb3IiLGUpLHMoImxvYWQiLGUpLGE9cjticmVhaztjYXNlImRldGFpbHMiOnMoInRvZ2dsZSIsZSksYT1yO2JyZWFrO2Nhc2UiaW5wdXQiOk9lKGUsciksYT1FZShlLHIpLHMoImludmFsaWQiLGUpO2JyZWFrO2Nhc2Uib3B0aW9uIjphPXI7YnJlYWs7Y2FzZSJzZWxlY3QiOmUuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFyLm11bHRpcGxlfSxhPWcoe30scix7dmFsdWU6dm9pZCAwfSkscygiaW52YWxpZCIsZSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6TGUoZSxyKSxhPVRlKGUscikscygiaW52YWxpZCIsZSk7YnJlYWs7ZGVmYXVsdDphPXJ9Zm9yKGMgaW4gWmUobixhKSxsPWEpbC5oYXNPd25Qcm9wZXJ0eShjKSYmKG89bFtjXSwic3R5bGUiPT09Yz9HZShlLG8pOiJkYW5nZXJvdXNseVNldElubmVySFRNTCI9PT1jP251bGwhPShvPW8/by5fX2h0bWw6dm9pZCAwKSYmRmUoZSxvKToiY2hpbGRyZW4iPT09Yz8ic3RyaW5nIj09dHlwZW9mIG8/InRleHRhcmVhIj09PW4mJiIiPT09b3x8SGUoZSxvKToibnVtYmVyIj09dHlwZW9mIG8mJkhlKGUsIiIrbyk6InN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIhPT1jJiYic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiE9PWMmJiJhdXRvRm9jdXMiIT09YyYmKEguaGFzT3duUHJvcGVydHkoYyk/bnVsbCE9byYmIm9uU2Nyb2xsIj09PWMmJnMoInNjcm9sbCIsZSk6bnVsbCE9byYmSyhlLGMsbyxpKSkpO3N3aXRjaChuKXtjYXNlImlucHV0IjprZShlKSxQZShlLHIsITEpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmtlKGUpLFJlKGUpO2JyZWFrO2Nhc2Uib3B0aW9uIjpudWxsIT1yLnZhbHVlJiZlLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiK3dlKHIudmFsdWUpKTticmVhaztjYXNlInNlbGVjdCI6ZS5tdWx0aXBsZT0hIXIubXVsdGlwbGUsbnVsbCE9KGM9ci52YWx1ZSk/emUoZSwhIXIubXVsdGlwbGUsYywhMSk6bnVsbCE9ci5kZWZhdWx0VmFsdWUmJnplKGUsISFyLm11bHRpcGxlLHIuZGVmYXVsdFZhbHVlLCEwKTticmVhaztkZWZhdWx0OiJmdW5jdGlvbiI9PXR5cGVvZiBhLm9uQ2xpY2smJihlLm9uY2xpY2s9cG8pfXN3aXRjaChuKXtjYXNlImJ1dHRvbiI6Y2FzZSJpbnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOnI9ISFyLmF1dG9Gb2N1czticmVhayBlO2Nhc2UiaW1nIjpyPSEwO2JyZWFrIGU7ZGVmYXVsdDpyPSExfX1yJiYodC5mbGFnc3w9NCl9bnVsbCE9PXQucmVmJiYodC5mbGFnc3w9NTEyLHQuZmxhZ3N8PTIwOTcxNTIpfXJldHVybiBmKHQpLG51bGw7Y2FzZSA2OmlmKGUmJm51bGwhPXQuc3RhdGVOb2RlKUJsKDAsdCxlLm1lbW9pemVkUHJvcHMscik7ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIHImJm51bGw9PT10LnN0YXRlTm9kZSl0aHJvdyBFcnJvcihEKDE2NikpO2lmKG49Y2kobGkuY3VycmVudCksY2koYWkuY3VycmVudCksYmEodCkpe2lmKHI9dC5zdGF0ZU5vZGUsbj10Lm1lbW9pemVkUHJvcHMscltFb109dCwoYz1yLm5vZGVWYWx1ZSE9PW4pJiZudWxsIT09KGU9c2EpKXN3aXRjaChlLnRhZyl7Y2FzZSAzOmZvKHIubm9kZVZhbHVlLG4sMCE9KDEmZS5tb2RlKSk7YnJlYWs7Y2FzZSA1OiEwIT09ZS5tZW1vaXplZFByb3BzLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmZm8oci5ub2RlVmFsdWUsbiwwIT0oMSZlLm1vZGUpKX1jJiYodC5mbGFnc3w9NCl9ZWxzZSgocj0oOT09PW4ubm9kZVR5cGU/bjpuLm93bmVyRG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKHIpKVtFb109dCkuc3RhdGVOb2RlPXJ9cmV0dXJuIGYodCksbnVsbDtjYXNlIDEzOmlmKHUoUykscj10Lm1lbW9pemVkU3RhdGUsbnVsbD09PWV8fG51bGwhPT1lLm1lbW9pemVkU3RhdGUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUuZGVoeWRyYXRlZCl7aWYoVSYmbnVsbCE9PWsmJjAhPSgxJnQubW9kZSkmJjA9PSgxMjgmdC5mbGFncykpeWEoKSx2YSgpLHQuZmxhZ3N8PTk4NTYwLGM9ITE7ZWxzZSBpZihjPWJhKHQpLG51bGwhPT1yJiZudWxsIT09ci5kZWh5ZHJhdGVkKXtpZihudWxsPT09ZSl7aWYoIWMpdGhyb3cgRXJyb3IoRCgzMTgpKTtpZighKGM9bnVsbCE9PShjPXQubWVtb2l6ZWRTdGF0ZSk/Yy5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKEQoMzE3KSk7Y1tFb109dH1lbHNlIHZhKCksMD09KDEyOCZ0LmZsYWdzKSYmKHQubWVtb2l6ZWRTdGF0ZT1udWxsKSx0LmZsYWdzfD00O2YodCksYz0hMX1lbHNlIG51bGwhPT1mYSYmKE5jKGZhKSxmYT1udWxsKSxjPSEwO2lmKCFjKXJldHVybiA2NTUzNiZ0LmZsYWdzP3Q6bnVsbH1yZXR1cm4gMCE9KDEyOCZ0LmZsYWdzKT8odC5sYW5lcz1uLHQpOigocj1udWxsIT09cikhPT0obnVsbCE9PWUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUpJiZyJiYodC5jaGlsZC5mbGFnc3w9ODE5MiwwIT0oMSZ0Lm1vZGUpKSYmKG51bGw9PT1lfHwwIT0oMSZTLmN1cnJlbnQpPzA9PT1MJiYoTD0zKTpHYygpKSxudWxsIT09dC51cGRhdGVRdWV1ZSYmKHQuZmxhZ3N8PTQpLGYodCksbnVsbCk7Y2FzZSA0OnJldHVybiBzaSgpLG51bGw9PT1lJiZ0byh0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxmKHQpLG51bGw7Y2FzZSAxMDpyZXR1cm4gQWEodC50eXBlLl9jb250ZXh0KSxmKHQpLG51bGw7Y2FzZSAxNzpyZXR1cm4gdyh0LnR5cGUpJiZGbygpLGYodCksbnVsbDtjYXNlIDE5OmlmKHUoUyksbnVsbD09PShjPXQubWVtb2l6ZWRTdGF0ZSkpO2Vsc2V7aWYocj0wIT0oMTI4JnQuZmxhZ3MpLG51bGw9PT0oaT1jLnJlbmRlcmluZykpaWYocilObChjLCExKTtlbHNle2lmKDAhPT1MfHxudWxsIT09ZSYmMCE9KDEyOCZlLmZsYWdzKSlmb3IoZT10LmNoaWxkO251bGwhPT1lOyl7aWYobnVsbCE9PShpPXBpKGUpKSl7Zm9yKHQuZmxhZ3N8PTEyOCxObChjLCExKSxudWxsIT09KHI9aS51cGRhdGVRdWV1ZSkmJih0LnVwZGF0ZVF1ZXVlPXIsdC5mbGFnc3w9NCksdC5zdWJ0cmVlRmxhZ3M9MCxyPW4sbj10LmNoaWxkO251bGwhPT1uOyllPXIsKGM9bikuZmxhZ3MmPTE0NjgwMDY2LG51bGw9PT0oaT1jLmFsdGVybmF0ZSk/KGMuY2hpbGRMYW5lcz0wLGMubGFuZXM9ZSxjLmNoaWxkPW51bGwsYy5zdWJ0cmVlRmxhZ3M9MCxjLm1lbW9pemVkUHJvcHM9bnVsbCxjLm1lbW9pemVkU3RhdGU9bnVsbCxjLnVwZGF0ZVF1ZXVlPW51bGwsYy5kZXBlbmRlbmNpZXM9bnVsbCxjLnN0YXRlTm9kZT1udWxsKTooYy5jaGlsZExhbmVzPWkuY2hpbGRMYW5lcyxjLmxhbmVzPWkubGFuZXMsYy5jaGlsZD1pLmNoaWxkLGMuc3VidHJlZUZsYWdzPTAsYy5kZWxldGlvbnM9bnVsbCxjLm1lbW9pemVkUHJvcHM9aS5tZW1vaXplZFByb3BzLGMubWVtb2l6ZWRTdGF0ZT1pLm1lbW9pemVkU3RhdGUsYy51cGRhdGVRdWV1ZT1pLnVwZGF0ZVF1ZXVlLGMudHlwZT1pLnR5cGUsZT1pLmRlcGVuZGVuY2llcyxjLmRlcGVuZGVuY2llcz1udWxsPT09ZT9udWxsOntsYW5lczplLmxhbmVzLGZpcnN0Q29udGV4dDplLmZpcnN0Q29udGV4dH0pLG49bi5zaWJsaW5nO3JldHVybiBiKFMsMSZTLmN1cnJlbnR8MiksdC5jaGlsZH1lPWUuc2libGluZ31udWxsIT09Yy50YWlsJiZoKCk+d2MmJih0LmZsYWdzfD0xMjgsTmwoYywhKHI9ITApKSx0LmxhbmVzPTQxOTQzMDQpfWVsc2V7aWYoIXIpaWYobnVsbCE9PShlPXBpKGkpKSl7aWYodC5mbGFnc3w9MTI4LHI9ITAsbnVsbCE9PShuPWUudXBkYXRlUXVldWUpJiYodC51cGRhdGVRdWV1ZT1uLHQuZmxhZ3N8PTQpLE5sKGMsITApLG51bGw9PT1jLnRhaWwmJiJoaWRkZW4iPT09Yy50YWlsTW9kZSYmIWkuYWx0ZXJuYXRlJiYhVSlyZXR1cm4gZih0KSxudWxsfWVsc2UgMipoKCktYy5yZW5kZXJpbmdTdGFydFRpbWU+d2MmJjEwNzM3NDE4MjQhPT1uJiYodC5mbGFnc3w9MTI4LE5sKGMsIShyPSEwKSksdC5sYW5lcz00MTk0MzA0KTtjLmlzQmFja3dhcmRzPyhpLnNpYmxpbmc9dC5jaGlsZCx0LmNoaWxkPWkpOihudWxsIT09KG49Yy5sYXN0KT9uLnNpYmxpbmc9aTp0LmNoaWxkPWksYy5sYXN0PWkpfWlmKG51bGwhPT1jLnRhaWwpcmV0dXJuIHQ9Yy50YWlsLGMucmVuZGVyaW5nPXQsYy50YWlsPXQuc2libGluZyxjLnJlbmRlcmluZ1N0YXJ0VGltZT1oKCksdC5zaWJsaW5nPW51bGwsbj1TLmN1cnJlbnQsYihTLHI/MSZufDI6MSZuKSx0fXJldHVybiBmKHQpLG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBIYygpLHI9bnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSxudWxsIT09ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSE9PXImJih0LmZsYWdzfD04MTkyKSxyJiYwIT0oMSZ0Lm1vZGUpPzAhPSgxMDczNzQxODI0JmRjKSYmKGYodCksNiZ0LnN1YnRyZWVGbGFncykmJih0LmZsYWdzfD04MTkyKTpmKHQpLG51bGw7Y2FzZSAyNDpjYXNlIDI1OnJldHVybiBudWxsfXRocm93IEVycm9yKEQoMTU2LHQudGFnKSl9KG4sdCxkYykpKXJldHVybiB2b2lkKHo9bil9ZWxzZXtpZihudWxsIT09KG49ZnVuY3Rpb24oZSx0KXtzd2l0Y2godWEodCksdC50YWcpe2Nhc2UgMTpyZXR1cm4gdyh0LnR5cGUpJiZGbygpLDY1NTM2JihlPXQuZmxhZ3MpPyh0LmZsYWdzPS02NTUzNyZlfDEyOCx0KTpudWxsO2Nhc2UgMzpyZXR1cm4gc2koKSx1KHYpLHUoeSksaGkoKSwwIT0oNjU1MzYmKGU9dC5mbGFncykpJiYwPT0oMTI4JmUpPyh0LmZsYWdzPS02NTUzNyZlfDEyOCx0KTpudWxsO2Nhc2UgNTpyZXR1cm4gZGkodCksbnVsbDtjYXNlIDEzOmlmKHUoUyksbnVsbCE9PShlPXQubWVtb2l6ZWRTdGF0ZSkmJm51bGwhPT1lLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT10LmFsdGVybmF0ZSl0aHJvdyBFcnJvcihEKDM0MCkpO3ZhKCl9cmV0dXJuIDY1NTM2JihlPXQuZmxhZ3MpPyh0LmZsYWdzPS02NTUzNyZlfDEyOCx0KTpudWxsO2Nhc2UgMTk6cmV0dXJuIHUoUyksbnVsbDtjYXNlIDQ6cmV0dXJuIHNpKCksbnVsbDtjYXNlIDEwOnJldHVybiBBYSh0LnR5cGUuX2NvbnRleHQpLG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBIYygpLG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KG4sdCkpKXJldHVybiBuLmZsYWdzJj0zMjc2Nyx2b2lkKHo9bik7aWYobnVsbD09PWUpcmV0dXJuIEw9Nix2b2lkKHo9bnVsbCk7ZS5mbGFnc3w9MzI3NjgsZS5zdWJ0cmVlRmxhZ3M9MCxlLmRlbGV0aW9ucz1udWxsfWlmKG51bGwhPT0odD10LnNpYmxpbmcpKXJldHVybiB2b2lkKHo9dCl9d2hpbGUoej10PWUsbnVsbCE9PXQpOzA9PT1MJiYoTD01KX1mdW5jdGlvbiBZYyhlLHQsbil7dmFyIHI9eCxvPWZjLnRyYW5zaXRpb247dHJ5e2ZjLnRyYW5zaXRpb249bnVsbCx4PTE7Zm9yKHZhciBhPWUsaT10LGw9bixjPXI7UWMoKSxudWxsIT09T2M7KTtpZigwIT0oNiZfKSl0aHJvdyBFcnJvcihEKDMyNykpO2w9YS5maW5pc2hlZFdvcms7dmFyIHU9YS5maW5pc2hlZExhbmVzO2lmKG51bGwhPT1sKXtpZihhLmZpbmlzaGVkV29yaz1udWxsLGEuZmluaXNoZWRMYW5lcz0wLGw9PT1hLmN1cnJlbnQpdGhyb3cgRXJyb3IoRCgxNzcpKTthLmNhbGxiYWNrTm9kZT1udWxsLGEuY2FsbGJhY2tQcmlvcml0eT0wO3ZhciBzLGYsZD1sLmxhbmVzfGwuY2hpbGRMYW5lcztpZighZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnBlbmRpbmdMYW5lcyZ+dCxyPShlLnBlbmRpbmdMYW5lcz10LGUuc3VzcGVuZGVkTGFuZXM9MCxlLnBpbmdlZExhbmVzPTAsZS5leHBpcmVkTGFuZXMmPXQsZS5tdXRhYmxlUmVhZExhbmVzJj10LGUuZW50YW5nbGVkTGFuZXMmPXQsdD1lLmVudGFuZ2xlbWVudHMsZS5ldmVudFRpbWVzKTtmb3IoZT1lLmV4cGlyYXRpb25UaW1lczswPG47KXt2YXIgbz0zMS16dChuKSxhPTE8PG87dFtvXT0wLHJbb109LTEsZVtvXT0tMSxuJj1+YX19KGEsZCksYT09PXAmJih6PXA9bnVsbCxUPTApLDA9PSgyMDY0Jmwuc3VidHJlZUZsYWdzKSYmMD09KDIwNjQmbC5mbGFncyl8fEVjfHwoRWM9ITAsZXUoanQsZnVuY3Rpb24oKXtyZXR1cm4gUWMoKSxudWxsfSkpLGQ9MCE9KDE1OTkwJmwuZmxhZ3MpLDAhPSgxNTk5MCZsLnN1YnRyZWVGbGFncyl8fGQ/KGQ9ZmMudHJhbnNpdGlvbixmYy50cmFuc2l0aW9uPW51bGwscz14LHg9MSxmPV8sX3w9NCxzYy5jdXJyZW50PW51bGwsZnVuY3Rpb24oZSx0KXtpZihtbz1nbixqcihlPU9yKCkpKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl2YXIgbj17c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2Vsc2UgZTppZigoYT0obj0obj1lLm93bmVyRG9jdW1lbnQpJiZuLmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbiYmbi5nZXRTZWxlY3Rpb24oKSkmJjAhPT1hLnJhbmdlQ291bnQpe3ZhciBuPWEuYW5jaG9yTm9kZSxyPWEuYW5jaG9yT2Zmc2V0LG89YS5mb2N1c05vZGUsYT1hLmZvY3VzT2Zmc2V0O3RyeXtuLm5vZGVUeXBlLG8ubm9kZVR5cGV9Y2F0Y2goZSl7bj1udWxsO2JyZWFrIGV9dmFyIGksbD0wLGM9LTEsdT0tMSxzPTAsZj0wLGQ9ZSxwPW51bGw7dDpmb3IoOzspe2Zvcig7ZCE9PW58fDAhPT1yJiYzIT09ZC5ub2RlVHlwZXx8KGM9bCtyKSxkIT09b3x8MCE9PWEmJjMhPT1kLm5vZGVUeXBlfHwodT1sK2EpLDM9PT1kLm5vZGVUeXBlJiYobCs9ZC5ub2RlVmFsdWUubGVuZ3RoKSxudWxsIT09KGk9ZC5maXJzdENoaWxkKTspcD1kLGQ9aTtmb3IoOzspe2lmKGQ9PT1lKWJyZWFrIHQ7aWYocD09PW4mJisrcz09PXImJihjPWwpLHA9PT1vJiYrK2Y9PT1hJiYodT1sKSxudWxsIT09KGk9ZC5uZXh0U2libGluZykpYnJlYWs7cD0oZD1wKS5wYXJlbnROb2RlfWQ9aX1uPS0xPT09Y3x8LTE9PT11P251bGw6e3N0YXJ0OmMsZW5kOnV9fWVsc2Ugbj1udWxsO249bnx8e3N0YXJ0OjAsZW5kOjB9fWVsc2Ugbj1udWxsO2Zvcihnbj0hKGhvPXtmb2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOm59KSxJPXQ7bnVsbCE9PUk7KWlmKGU9KHQ9SSkuY2hpbGQsMCE9KDEwMjgmdC5zdWJ0cmVlRmxhZ3MpJiZudWxsIT09ZSllLnJldHVybj10LEk9ZTtlbHNlIGZvcig7bnVsbCE9PUk7KXt0PUk7dHJ5e3ZhciBtLGgsZyxiLHk9dC5hbHRlcm5hdGU7aWYoMCE9KDEwMjQmdC5mbGFncykpc3dpdGNoKHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmJyZWFrO2Nhc2UgMTpudWxsIT09eSYmKG09eS5tZW1vaXplZFByb3BzLGg9eS5tZW1vaXplZFN0YXRlLGI9KGc9dC5zdGF0ZU5vZGUpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHQuZWxlbWVudFR5cGU9PT10LnR5cGU/bTprYSh0LnR5cGUsbSksaCksZy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZT1iKTticmVhaztjYXNlIDM6dmFyIHY9dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzsxPT09di5ub2RlVHlwZT92LnRleHRDb250ZW50PSIiOjk9PT12Lm5vZGVUeXBlJiZ2LmRvY3VtZW50RWxlbWVudCYmdi5yZW1vdmVDaGlsZCh2LmRvY3VtZW50RWxlbWVudCk7YnJlYWs7Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpicmVhaztkZWZhdWx0OnRocm93IEVycm9yKEQoMTYzKSl9fWNhdGNoKGUpe00odCx0LnJldHVybixlKX1pZihudWxsIT09KGU9dC5zaWJsaW5nKSl7ZS5yZXR1cm49dC5yZXR1cm4sST1lO2JyZWFrfUk9dC5yZXR1cm59eT1XbCxXbD0hMX0oYSxsKSxuYyhsLGEpLEFyKGhvKSxnbj0hIW1vLGhvPW1vPW51bGwsb2MoYS5jdXJyZW50PWwsYSx1KSxTdCgpLF89Zix4PXMsZmMudHJhbnNpdGlvbj1kKTphLmN1cnJlbnQ9bCxFYyYmKEVjPSExLE9jPWEsamM9dSksMD09PShkPWEucGVuZGluZ0xhbmVzKSYmKENjPW51bGwpLCFmdW5jdGlvbihlKXtpZihfdCYmImZ1bmN0aW9uIj09dHlwZW9mIF90Lm9uQ29tbWl0RmliZXJSb290KXRyeXtfdC5vbkNvbW1pdEZpYmVyUm9vdChJdCxlLHZvaWQgMCwxMjg9PSgxMjgmZS5jdXJyZW50LmZsYWdzKSl9Y2F0Y2goZSl7fX0obC5zdGF0ZU5vZGUpLExjKGEsaCgpKSxudWxsIT09aSlmb3IoYz1hLm9uUmVjb3ZlcmFibGVFcnJvcixsPTA7bDxpLmxlbmd0aDtsKyspdT1pW2xdLGModS52YWx1ZSx7Y29tcG9uZW50U3RhY2s6dS5zdGFjayxkaWdlc3Q6dS5kaWdlc3R9KTtpZihrYyl0aHJvdyBrYz0hMSxhPVNjLFNjPW51bGwsYTswIT0oMSZqYykmJjAhPT1hLnRhZyYmUWMoKSwwIT0oMSYoZD1hLnBlbmRpbmdMYW5lcykpP2E9PT1QYz9BYysrOihBYz0wLFBjPWEpOkFjPTAsWW8oKX19ZmluYWxseXtmYy50cmFuc2l0aW9uPW8seD1yfXJldHVybiBudWxsfWZ1bmN0aW9uIFFjKCl7aWYobnVsbCE9PU9jKXt2YXIgZT1XdChqYyksdD1mYy50cmFuc2l0aW9uLG49eDt0cnl7aWYoZmMudHJhbnNpdGlvbj1udWxsLHg9ZTwxNj8xNjplLG51bGw9PT1PYyl2YXIgcj0hMTtlbHNle2lmKGU9T2MsT2M9bnVsbCwoamM9MCkhPSg2Jl8pKXRocm93IEVycm9yKEQoMzMxKSk7dmFyIG89Xztmb3IoX3w9NCxJPWUuY3VycmVudDtudWxsIT09STspe3ZhciBhPUksaT1hLmNoaWxkO2lmKDAhPSgxNiZJLmZsYWdzKSl7dmFyIGw9YS5kZWxldGlvbnM7aWYobnVsbCE9PWwpe2Zvcih2YXIgYz0wO2M8bC5sZW5ndGg7YysrKXt2YXIgdT1sW2NdO2ZvcihJPXU7bnVsbCE9PUk7KXtzd2l0Y2goKGY9SSkudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OkdsKDgsZixhKX12YXIgcz1mLmNoaWxkO2lmKG51bGwhPT1zKXMucmV0dXJuPWYsST1zO2Vsc2UgZm9yKDtudWxsIT09STspe3ZhciBmLGQ9KGY9SSkuc2libGluZyxwPWYucmV0dXJuO2lmKCFmdW5jdGlvbiBlKHQpe3ZhciBuPXQuYWx0ZXJuYXRlO251bGwhPT1uJiYodC5hbHRlcm5hdGU9bnVsbCxlKG4pKSx0LmNoaWxkPW51bGwsdC5kZWxldGlvbnM9bnVsbCx0LnNpYmxpbmc9bnVsbCw1PT09dC50YWcmJm51bGwhPT0obj10LnN0YXRlTm9kZSkmJihkZWxldGUgbltFb10sZGVsZXRlIG5bT29dLGRlbGV0ZSBuW0FvXSxkZWxldGUgbltQb10sZGVsZXRlIG5bSW9dKSx0LnN0YXRlTm9kZT1udWxsLHQucmV0dXJuPW51bGwsdC5kZXBlbmRlbmNpZXM9bnVsbCx0Lm1lbW9pemVkUHJvcHM9bnVsbCx0Lm1lbW9pemVkU3RhdGU9bnVsbCx0LnBlbmRpbmdQcm9wcz1udWxsLHQuc3RhdGVOb2RlPW51bGwsdC51cGRhdGVRdWV1ZT1udWxsfShmKSxmPT09dSl7ST1udWxsO2JyZWFrfWlmKG51bGwhPT1kKXtkLnJldHVybj1wLEk9ZDticmVha31JPXB9fX12YXIgbT1hLmFsdGVybmF0ZTtpZihudWxsIT09bSl7dmFyIGg9bS5jaGlsZDtpZihudWxsIT09aCl7bS5jaGlsZD1udWxsO2Rve3ZhciBnPWguc2libGluZ313aGlsZSgoaC5zaWJsaW5nPW51bGwpIT09KGg9ZykpfX1JPWF9fWlmKDAhPSgyMDY0JmEuc3VidHJlZUZsYWdzKSYmbnVsbCE9PWkpaS5yZXR1cm49YSxJPWk7ZWxzZSBmb3IoO251bGwhPT1JOyl7aWYoMCE9KDIwNDgmKGE9SSkuZmxhZ3MpKXN3aXRjaChhLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpHbCg5LGEsYS5yZXR1cm4pfXZhciBiPWEuc2libGluZztpZihudWxsIT09Yil7Yi5yZXR1cm49YS5yZXR1cm4sST1iO2JyZWFrfUk9YS5yZXR1cm59fXZhciB5PWUuY3VycmVudDtmb3IoST15O251bGwhPT1JOyl7dmFyIHY9KGk9SSkuY2hpbGQ7aWYoMCE9KDIwNjQmaS5zdWJ0cmVlRmxhZ3MpJiZudWxsIT09dil2LnJldHVybj1pLEk9djtlbHNlIGZvcihpPXk7bnVsbCE9PUk7KXtpZigwIT0oMjA0OCYobD1JKS5mbGFncykpdHJ5e3N3aXRjaChsLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpxbCg5LGwpfX1jYXRjaChlKXtNKGwsbC5yZXR1cm4sZSl9aWYobD09PWkpe0k9bnVsbDticmVha312YXIgdz1sLnNpYmxpbmc7aWYobnVsbCE9PXcpe3cucmV0dXJuPWwucmV0dXJuLEk9dzticmVha31JPWwucmV0dXJufX1pZihfPW8sWW8oKSxfdCYmImZ1bmN0aW9uIj09dHlwZW9mIF90Lm9uUG9zdENvbW1pdEZpYmVyUm9vdCl0cnl7X3Qub25Qb3N0Q29tbWl0RmliZXJSb290KEl0LGUpfWNhdGNoKGUpe31yPSEwfXJldHVybiByfWZpbmFsbHl7eD1uLGZjLnRyYW5zaXRpb249dH19fWZ1bmN0aW9uIEtjKGUsdCxuKXtlPUJhKGUsdD1mbCgwLHQ9bGwobix0KSwxKSwxKSx0PW0oKSxudWxsIT09ZSYmKFZ0KGUsMSx0KSxMYyhlLHQpKX1mdW5jdGlvbiBNKGUsdCxuKXtpZigzPT09ZS50YWcpS2MoZSxlLG4pO2Vsc2UgZm9yKDtudWxsIT09dDspe2lmKDM9PT10LnRhZyl7S2ModCxlLG4pO2JyZWFrfWlmKDE9PT10LnRhZyl7dmFyIHI9dC5zdGF0ZU5vZGU7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fCJmdW5jdGlvbiI9PXR5cGVvZiByLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PUNjfHwhQ2MuaGFzKHIpKSl7dD1CYSh0LGU9ZGwodCxlPWxsKG4sZSksMSksMSksZT1tKCksbnVsbCE9PXQmJihWdCh0LDEsZSksTGModCxlKSk7YnJlYWt9fXQ9dC5yZXR1cm59fWZ1bmN0aW9uIEpjKGUsdCl7MD09PXQmJigwPT0oMSZlLm1vZGUpP3Q9MToodD1SdCwwPT0oMTMwMDIzNDI0JihSdDw8PTEpKSYmKFJ0PTQxOTQzMDQpKSk7dmFyIG49bSgpO251bGwhPT0oZT1NYShlLHQpKSYmKFZ0KGUsdCxuKSxMYyhlLG4pKX1mdW5jdGlvbiBldShlLHQpe3JldHVybiB3dChlLHQpfWZ1bmN0aW9uIHR1KGUsdCxuLHIpe3RoaXMudGFnPWUsdGhpcy5rZXk9bix0aGlzLnNpYmxpbmc9dGhpcy5jaGlsZD10aGlzLnJldHVybj10aGlzLnN0YXRlTm9kZT10aGlzLnR5cGU9dGhpcy5lbGVtZW50VHlwZT1udWxsLHRoaXMuaW5kZXg9MCx0aGlzLnJlZj1udWxsLHRoaXMucGVuZGluZ1Byb3BzPXQsdGhpcy5kZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGwsdGhpcy5tb2RlPXIsdGhpcy5zdWJ0cmVlRmxhZ3M9dGhpcy5mbGFncz0wLHRoaXMuZGVsZXRpb25zPW51bGwsdGhpcy5jaGlsZExhbmVzPXRoaXMubGFuZXM9MCx0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIG51KGUsdCxuLHIpe3JldHVybiBuZXcgdHUoZSx0LG4scil9ZnVuY3Rpb24gcnUoZSl7cmV0dXJuKGU9ZS5wcm90b3R5cGUpJiZlLmlzUmVhY3RDb21wb25lbnR9ZnVuY3Rpb24gb3UoZSx0KXt2YXIgbj1lLmFsdGVybmF0ZTtyZXR1cm4gbnVsbD09PW4/KChuPW51KGUudGFnLHQsZS5rZXksZS5tb2RlKSkuZWxlbWVudFR5cGU9ZS5lbGVtZW50VHlwZSxuLnR5cGU9ZS50eXBlLG4uc3RhdGVOb2RlPWUuc3RhdGVOb2RlLChuLmFsdGVybmF0ZT1lKS5hbHRlcm5hdGU9bik6KG4ucGVuZGluZ1Byb3BzPXQsbi50eXBlPWUudHlwZSxuLmZsYWdzPTAsbi5zdWJ0cmVlRmxhZ3M9MCxuLmRlbGV0aW9ucz1udWxsKSxuLmZsYWdzPTE0NjgwMDY0JmUuZmxhZ3Msbi5jaGlsZExhbmVzPWUuY2hpbGRMYW5lcyxuLmxhbmVzPWUubGFuZXMsbi5jaGlsZD1lLmNoaWxkLG4ubWVtb2l6ZWRQcm9wcz1lLm1lbW9pemVkUHJvcHMsbi5tZW1vaXplZFN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxuLnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdD1lLmRlcGVuZGVuY2llcyxuLmRlcGVuZGVuY2llcz1udWxsPT09dD9udWxsOntsYW5lczp0LmxhbmVzLGZpcnN0Q29udGV4dDp0LmZpcnN0Q29udGV4dH0sbi5zaWJsaW5nPWUuc2libGluZyxuLmluZGV4PWUuaW5kZXgsbi5yZWY9ZS5yZWYsbn1mdW5jdGlvbiBhdShlLHQsbixyLG8sYSl7dmFyIGk9MjtpZigiZnVuY3Rpb24iPT10eXBlb2Yocj1lKSlydShlKSYmKGk9MSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUpaT01O2Vsc2UgZTpzd2l0Y2goZSl7Y2FzZSBuZTpyZXR1cm4gaXUobi5jaGlsZHJlbixvLGEsdCk7Y2FzZSByZTpvfD1pPTg7YnJlYWs7Y2FzZSBvZTpyZXR1cm4oZT1udSgxMixuLHQsMnxvKSkuZWxlbWVudFR5cGU9b2UsZS5sYW5lcz1hLGU7Y2FzZSBjZTpyZXR1cm4oZT1udSgxMyxuLHQsbykpLmVsZW1lbnRUeXBlPWNlLGUubGFuZXM9YSxlO2Nhc2UgdWU6cmV0dXJuKGU9bnUoMTksbix0LG8pKS5lbGVtZW50VHlwZT11ZSxlLmxhbmVzPWEsZTtjYXNlIGRlOnJldHVybiBsdShuLG8sYSx0KTtkZWZhdWx0OmlmKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUpc3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgYWU6aT0xMDticmVhayBlO2Nhc2UgaWU6aT05O2JyZWFrIGU7Y2FzZSBsZTppPTExO2JyZWFrIGU7Y2FzZSBzZTppPTE0O2JyZWFrIGU7Y2FzZSBmZTppPTE2LHI9bnVsbDticmVhayBlfXRocm93IEVycm9yKEQoMTMwLG51bGw9PWU/ZTp0eXBlb2YgZSwiIikpfXJldHVybih0PW51KGksbix0LG8pKS5lbGVtZW50VHlwZT1lLHQudHlwZT1yLHQubGFuZXM9YSx0fWZ1bmN0aW9uIGl1KGUsdCxuLHIpe3JldHVybihlPW51KDcsZSxyLHQpKS5sYW5lcz1uLGV9ZnVuY3Rpb24gbHUoZSx0LG4scil7cmV0dXJuKGU9bnUoMjIsZSxyLHQpKS5lbGVtZW50VHlwZT1kZSxlLmxhbmVzPW4sZS5zdGF0ZU5vZGU9e2lzSGlkZGVuOiExfSxlfWZ1bmN0aW9uIGN1KGUsdCxuKXtyZXR1cm4oZT1udSg2LGUsbnVsbCx0KSkubGFuZXM9bixlfWZ1bmN0aW9uIHV1KGUsdCxuKXtyZXR1cm4odD1udSg0LG51bGwhPT1lLmNoaWxkcmVuP2UuY2hpbGRyZW46W10sZS5rZXksdCkpLmxhbmVzPW4sdC5zdGF0ZU5vZGU9e2NvbnRhaW5lckluZm86ZS5jb250YWluZXJJbmZvLHBlbmRpbmdDaGlsZHJlbjpudWxsLGltcGxlbWVudGF0aW9uOmUuaW1wbGVtZW50YXRpb259LHR9ZnVuY3Rpb24gc3UoZSx0LG4scixvKXt0aGlzLnRhZz10LHRoaXMuY29udGFpbmVySW5mbz1lLHRoaXMuZmluaXNoZWRXb3JrPXRoaXMucGluZ0NhY2hlPXRoaXMuY3VycmVudD10aGlzLnBlbmRpbmdDaGlsZHJlbj1udWxsLHRoaXMudGltZW91dEhhbmRsZT0tMSx0aGlzLmNhbGxiYWNrTm9kZT10aGlzLnBlbmRpbmdDb250ZXh0PXRoaXMuY29udGV4dD1udWxsLHRoaXMuY2FsbGJhY2tQcmlvcml0eT0wLHRoaXMuZXZlbnRUaW1lcz1IdCgwKSx0aGlzLmV4cGlyYXRpb25UaW1lcz1IdCgtMSksdGhpcy5lbnRhbmdsZWRMYW5lcz10aGlzLmZpbmlzaGVkTGFuZXM9dGhpcy5tdXRhYmxlUmVhZExhbmVzPXRoaXMuZXhwaXJlZExhbmVzPXRoaXMucGluZ2VkTGFuZXM9dGhpcy5zdXNwZW5kZWRMYW5lcz10aGlzLnBlbmRpbmdMYW5lcz0wLHRoaXMuZW50YW5nbGVtZW50cz1IdCgwKSx0aGlzLmlkZW50aWZpZXJQcmVmaXg9cix0aGlzLm9uUmVjb3ZlcmFibGVFcnJvcj1vLHRoaXMubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1udWxsfWZ1bmN0aW9uIGZ1KGUsdCxuLHIsbyxhLGksbCxjKXtyZXR1cm4gZT1uZXcgc3UoZSx0LDAsbCxjKSwxPT09dD8odD0xLCEwPT09YSYmKHR8PTgpKTp0PTAsYT1udSgzLG51bGwsbnVsbCx0KSwoZS5jdXJyZW50PWEpLnN0YXRlTm9kZT1lLGEubWVtb2l6ZWRTdGF0ZT17ZWxlbWVudDpyLGlzRGVoeWRyYXRlZDpuLGNhY2hlOm51bGwsdHJhbnNpdGlvbnM6bnVsbCxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOm51bGx9LE5hKGEpLGV9ZnVuY3Rpb24gZHUoZSl7aWYoIWUpcmV0dXJuIERvO2U6e2lmKGd0KGU9ZS5fcmVhY3RJbnRlcm5hbHMpIT09ZXx8MSE9PWUudGFnKXRocm93IEVycm9yKEQoMTcwKSk7dmFyIHQ9ZTtkb3tzd2l0Y2godC50YWcpe2Nhc2UgMzp0PXQuc3RhdGVOb2RlLmNvbnRleHQ7YnJlYWsgZTtjYXNlIDE6aWYodyh0LnR5cGUpKXt0PXQuc3RhdGVOb2RlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0O2JyZWFrIGV9fX13aGlsZShudWxsIT09KHQ9dC5yZXR1cm4pKTt0aHJvdyBFcnJvcihEKDE3MSkpfWlmKDE9PT1lLnRhZyl7dmFyIG49ZS50eXBlO2lmKHcobikpcmV0dXJuIFZvKGUsbix0KX1yZXR1cm4gdH1mdW5jdGlvbiBwdShlLHQsbixyLG8sYSxpLGwsYyl7cmV0dXJuKGU9ZnUobixyLCEwLGUsMCxhLDAsbCxjKSkuY29udGV4dD1kdShudWxsKSxuPWUuY3VycmVudCwoYT1VYShyPW0oKSxvPXpjKG4pKSkuY2FsbGJhY2s9bnVsbCE9dD90Om51bGwsQmEobixhLG8pLGUuY3VycmVudC5sYW5lcz1vLFZ0KGUsbyxyKSxMYyhlLHIpLGV9ZnVuY3Rpb24gbXUoZSx0LG4scil7dmFyIG89dC5jdXJyZW50LGE9bSgpLGk9emMobyk7bj1kdShuKSxudWxsPT09dC5jb250ZXh0P3QuY29udGV4dD1uOnQucGVuZGluZ0NvbnRleHQ9biwodD1VYShhLGkpKS5wYXlsb2FkPXtlbGVtZW50OmV9LG51bGwhPT0ocj12b2lkIDA9PT1yP251bGw6cikmJih0LmNhbGxiYWNrPXIpLG51bGwhPT0oZT1CYShvLHQsaSkpJiYoVGMoZSxvLGksYSksRmEoZSxvLGkpKX1mdW5jdGlvbiBodShlKXtyZXR1cm4oZT1lLmN1cnJlbnQpLmNoaWxkPyhlLmNoaWxkLnRhZyxlLmNoaWxkLnN0YXRlTm9kZSk6bnVsbH1mdW5jdGlvbiBndShlLHQpe3ZhciBuO251bGwhPT0oZT1lLm1lbW9pemVkU3RhdGUpJiZudWxsIT09ZS5kZWh5ZHJhdGVkJiYobj1lLnJldHJ5TGFuZSxlLnJldHJ5TGFuZT0wIT09biYmbjx0P246dCl9ZnVuY3Rpb24gYnUoZSx0KXtndShlLHQpLChlPWUuYWx0ZXJuYXRlKSYmZ3UoZSx0KX12YXIgeXU9ZnVuY3Rpb24oZSx0LG4pe2lmKG51bGwhPT1lKWlmKGUubWVtb2l6ZWRQcm9wcyE9PXQucGVuZGluZ1Byb3BzfHx2LmN1cnJlbnQpaj0hMDtlbHNle2lmKDA9PShlLmxhbmVzJm4pJiYwPT0oMTI4JnQuZmxhZ3MpKXtqPSExO3t2YXIgcj1lO3ZhciBvPXQ7dmFyIGE9bjtzd2l0Y2goby50YWcpe2Nhc2UgMzpFbChvKSx2YSgpO2JyZWFrO2Nhc2UgNTpmaShvKTticmVhaztjYXNlIDE6dyhvLnR5cGUpJiYkbyhvKTticmVhaztjYXNlIDQ6dWkobyxvLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTticmVhaztjYXNlIDEwOnZhciBpPW8udHlwZS5fY29udGV4dCxsPW8ubWVtb2l6ZWRQcm9wcy52YWx1ZTtiKFNhLGkuX2N1cnJlbnRWYWx1ZSksaS5fY3VycmVudFZhbHVlPWw7YnJlYWs7Y2FzZSAxMzppZihudWxsIT09KGk9by5tZW1vaXplZFN0YXRlKSlyZXR1cm4gbnVsbCE9PWkuZGVoeWRyYXRlZD8oYihTLDEmUy5jdXJyZW50KSxvLmZsYWdzfD0xMjgsbnVsbCk6MCE9KGEmby5jaGlsZC5jaGlsZExhbmVzKT9QbChyLG8sYSk6KGIoUywxJlMuY3VycmVudCksbnVsbCE9PShyPVJsKHIsbyxhKSk/ci5zaWJsaW5nOm51bGwpO2IoUywxJlMuY3VycmVudCk7YnJlYWs7Y2FzZSAxOTppZihpPTAhPShhJm8uY2hpbGRMYW5lcyksMCE9KDEyOCZyLmZsYWdzKSl7aWYoaSlyZXR1cm4gTGwocixvLGEpO28uZmxhZ3N8PTEyOH1pZihudWxsIT09KGw9by5tZW1vaXplZFN0YXRlKSYmKGwucmVuZGVyaW5nPW51bGwsbC50YWlsPW51bGwsbC5sYXN0RWZmZWN0PW51bGwpLGIoUyxTLmN1cnJlbnQpLGkpYnJlYWs7cmV0dXJuIG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBvLmxhbmVzPTAsd2wocixvLGEpfXJldHVybiBSbChyLG8sYSk7cmV0dXJufX1qPTAhPSgxMzEwNzImZS5mbGFncyl9ZWxzZSBqPSExLFUmJjAhPSgxMDQ4NTc2JnQuZmxhZ3MpJiZsYSh0LGVhLHQuaW5kZXgpO3N3aXRjaCh0LmxhbmVzPTAsdC50YWcpe2Nhc2UgMjp2YXIgYz10LnR5cGUsdT0oTWwoZSx0KSxlPXQucGVuZGluZ1Byb3BzLEJvKHQseS5jdXJyZW50KSkscz0oSWEodCxuKSx1PUNpKG51bGwsdCxjLGUsdSxuKSxFaSgpKTtyZXR1cm4gdC5mbGFnc3w9MSx0PSJvYmplY3QiPT10eXBlb2YgdSYmbnVsbCE9PXUmJiJmdW5jdGlvbiI9PXR5cGVvZiB1LnJlbmRlciYmdm9pZCAwPT09dS4kJHR5cGVvZj8odC50YWc9MSx0Lm1lbW9pemVkU3RhdGU9bnVsbCx0LnVwZGF0ZVF1ZXVlPW51bGwsdyhjKT8ocz0hMCwkbyh0KSk6cz0hMSx0Lm1lbW9pemVkU3RhdGU9bnVsbCE9PXUuc3RhdGUmJnZvaWQgMCE9PXUuc3RhdGU/dS5zdGF0ZTpudWxsLE5hKHQpLHUudXBkYXRlcj1xYSxRYSgodC5zdGF0ZU5vZGU9dSkuX3JlYWN0SW50ZXJuYWxzPXQsYyxlLG4pLENsKG51bGwsdCxjLCEwLHMsbikpOih0LnRhZz0wLFUmJnMmJmNhKHQpLEEobnVsbCx0LHUsbiksdC5jaGlsZCk7Y2FzZSAxNjpjPXQuZWxlbWVudFR5cGU7ZTp7c3dpdGNoKE1sKGUsdCksZT10LnBlbmRpbmdQcm9wcyxjPSh1PWMuX2luaXQpKGMuX3BheWxvYWQpLHQudHlwZT1jLHU9dC50YWc9ZnVuY3Rpb24oZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIHJ1KGUpPzE6MDtpZihudWxsIT1lKXtpZigoZT1lLiQkdHlwZW9mKT09PWxlKXJldHVybiAxMTtpZihlPT09c2UpcmV0dXJuIDE0fXJldHVybiAyfShjKSxlPWthKGMsZSksdSl7Y2FzZSAwOnQ9a2wobnVsbCx0LGMsZSxuKTticmVhayBlO2Nhc2UgMTp0PVNsKG51bGwsdCxjLGUsbik7YnJlYWsgZTtjYXNlIDExOnQ9YmwobnVsbCx0LGMsZSxuKTticmVhayBlO2Nhc2UgMTQ6dD15bChudWxsLHQsYyxrYShjLnR5cGUsZSksbik7YnJlYWsgZX10aHJvdyBFcnJvcihEKDMwNixjLCIiKSl9cmV0dXJuIHQ7Y2FzZSAwOnJldHVybiBjPXQudHlwZSx1PXQucGVuZGluZ1Byb3BzLGtsKGUsdCxjLHU9dC5lbGVtZW50VHlwZT09PWM/dTprYShjLHUpLG4pO2Nhc2UgMTpyZXR1cm4gYz10LnR5cGUsdT10LnBlbmRpbmdQcm9wcyxTbChlLHQsYyx1PXQuZWxlbWVudFR5cGU9PT1jP3U6a2EoYyx1KSxuKTtjYXNlIDM6ZTp7aWYoRWwodCksbnVsbD09PWUpdGhyb3cgRXJyb3IoRCgzODcpKTtjPXQucGVuZGluZ1Byb3BzLHU9KHM9dC5tZW1vaXplZFN0YXRlKS5lbGVtZW50LERhKGUsdCksVmEodCxjLG51bGwsbik7dmFyIGY9dC5tZW1vaXplZFN0YXRlLGM9Zi5lbGVtZW50O2lmKHMuaXNEZWh5ZHJhdGVkKXtpZihzPXtlbGVtZW50OmMsaXNEZWh5ZHJhdGVkOiExLGNhY2hlOmYuY2FjaGUscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczpmLnBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXMsdHJhbnNpdGlvbnM6Zi50cmFuc2l0aW9uc30sdC51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9cyx0Lm1lbW9pemVkU3RhdGU9cywyNTYmdC5mbGFncyl7dD1PbChlLHQsYyxuLHU9bGwoRXJyb3IoRCg0MjMpKSx0KSk7YnJlYWsgZX1pZihjIT09dSl7dD1PbChlLHQsYyxuLHU9bGwoRXJyb3IoRCg0MjQpKSx0KSk7YnJlYWsgZX1mb3Ioaz1Tbyh0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvLmZpcnN0Q2hpbGQpLFU9ITAsbj1yaShzYT10LGZhPW51bGwsYyxuKSx0LmNoaWxkPW47bjspbi5mbGFncz0tMyZuLmZsYWdzfDQwOTYsbj1uLnNpYmxpbmd9ZWxzZXtpZih2YSgpLGM9PT11KXt0PVJsKGUsdCxuKTticmVhayBlfUEoZSx0LGMsbil9dD10LmNoaWxkfXJldHVybiB0O2Nhc2UgNTpyZXR1cm4gZmkodCksbnVsbD09PWUmJmhhKHQpLGM9dC50eXBlLHU9dC5wZW5kaW5nUHJvcHMscz1udWxsIT09ZT9lLm1lbW9pemVkUHJvcHM6bnVsbCxmPXUuY2hpbGRyZW4sZ28oYyx1KT9mPW51bGw6bnVsbCE9PXMmJmdvKGMscykmJih0LmZsYWdzfD0zMikseGwoZSx0KSxBKGUsdCxmLG4pLHQuY2hpbGQ7Y2FzZSA2OnJldHVybiBudWxsPT09ZSYmaGEodCksbnVsbDtjYXNlIDEzOnJldHVybiBQbChlLHQsbik7Y2FzZSA0OnJldHVybiB1aSh0LHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGM9dC5wZW5kaW5nUHJvcHMsbnVsbD09PWU/dC5jaGlsZD1uaSh0LG51bGwsYyxuKTpBKGUsdCxjLG4pLHQuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gYz10LnR5cGUsdT10LnBlbmRpbmdQcm9wcyxibChlLHQsYyx1PXQuZWxlbWVudFR5cGU9PT1jP3U6a2EoYyx1KSxuKTtjYXNlIDc6cmV0dXJuIEEoZSx0LHQucGVuZGluZ1Byb3BzLG4pLHQuY2hpbGQ7Y2FzZSA4OmNhc2UgMTI6cmV0dXJuIEEoZSx0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuLG4pLHQuY2hpbGQ7Y2FzZSAxMDplOntpZihjPXQudHlwZS5fY29udGV4dCx1PXQucGVuZGluZ1Byb3BzLHM9dC5tZW1vaXplZFByb3BzLGY9dS52YWx1ZSxiKFNhLGMuX2N1cnJlbnRWYWx1ZSksYy5fY3VycmVudFZhbHVlPWYsbnVsbCE9PXMpaWYoa3Iocy52YWx1ZSxmKSl7aWYocy5jaGlsZHJlbj09PXUuY2hpbGRyZW4mJiF2LmN1cnJlbnQpe3Q9UmwoZSx0LG4pO2JyZWFrIGV9fWVsc2UgZm9yKG51bGwhPT0ocz10LmNoaWxkKSYmKHMucmV0dXJuPXQpO251bGwhPT1zOyl7dmFyIGQ9cy5kZXBlbmRlbmNpZXM7aWYobnVsbCE9PWQpZm9yKHZhciBwLG0sZj1zLmNoaWxkLGg9ZC5maXJzdENvbnRleHQ7bnVsbCE9PWg7KXtpZihoLmNvbnRleHQ9PT1jKXsxPT09cy50YWcmJigoaD1VYSgtMSxuJi1uKSkudGFnPTIsbnVsbCE9PShwPXMudXBkYXRlUXVldWUpKSYmKG51bGw9PT0obT0ocD1wLnNoYXJlZCkucGVuZGluZyk/aC5uZXh0PWg6KGgubmV4dD1tLm5leHQsbS5uZXh0PWgpLHAucGVuZGluZz1oKSxzLmxhbmVzfD1uLG51bGwhPT0oaD1zLmFsdGVybmF0ZSkmJihoLmxhbmVzfD1uKSxQYShzLnJldHVybixuLHQpLGQubGFuZXN8PW47YnJlYWt9aD1oLm5leHR9ZWxzZSBpZigxMD09PXMudGFnKWY9cy50eXBlPT09dC50eXBlP251bGw6cy5jaGlsZDtlbHNlIGlmKDE4PT09cy50YWcpe2lmKG51bGw9PT0oZj1zLnJldHVybikpdGhyb3cgRXJyb3IoRCgzNDEpKTtmLmxhbmVzfD1uLG51bGwhPT0oZD1mLmFsdGVybmF0ZSkmJihkLmxhbmVzfD1uKSxQYShmLG4sdCksZj1zLnNpYmxpbmd9ZWxzZSBmPXMuY2hpbGQ7aWYobnVsbCE9PWYpZi5yZXR1cm49cztlbHNlIGZvcihmPXM7bnVsbCE9PWY7KXtpZihmPT09dCl7Zj1udWxsO2JyZWFrfWlmKG51bGwhPT0ocz1mLnNpYmxpbmcpKXtzLnJldHVybj1mLnJldHVybixmPXM7YnJlYWt9Zj1mLnJldHVybn1zPWZ9QShlLHQsdS5jaGlsZHJlbixuKSx0PXQuY2hpbGR9cmV0dXJuIHQ7Y2FzZSA5OnJldHVybiB1PXQudHlwZSxjPXQucGVuZGluZ1Byb3BzLmNoaWxkcmVuLElhKHQsbiksYz1jKHU9X2EodSkpLHQuZmxhZ3N8PTEsQShlLHQsYyxuKSx0LmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIHU9a2EoYz10LnR5cGUsdC5wZW5kaW5nUHJvcHMpLHlsKGUsdCxjLHU9a2EoYy50eXBlLHUpLG4pO2Nhc2UgMTU6cmV0dXJuIHZsKGUsdCx0LnR5cGUsdC5wZW5kaW5nUHJvcHMsbik7Y2FzZSAxNzpyZXR1cm4gYz10LnR5cGUsdT10LnBlbmRpbmdQcm9wcyx1PXQuZWxlbWVudFR5cGU9PT1jP3U6a2EoYyx1KSxNbChlLHQpLHQudGFnPTEsdyhjKT8oZT0hMCwkbyh0KSk6ZT0hMSxJYSh0LG4pLFhhKHQsYyx1KSxRYSh0LGMsdSxuKSxDbChudWxsLHQsYywhMCxlLG4pO2Nhc2UgMTk6cmV0dXJuIExsKGUsdCxuKTtjYXNlIDIyOnJldHVybiB3bChlLHQsbil9dGhyb3cgRXJyb3IoRCgxNTYsdC50YWcpKX0sdnU9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcG9ydEVycm9yP3JlcG9ydEVycm9yOmZ1bmN0aW9uKGUpe2NvbnNvbGUuZXJyb3IoZSl9O2Z1bmN0aW9uIHd1KGUpe3RoaXMuX2ludGVybmFsUm9vdD1lfWZ1bmN0aW9uIHh1KGUpe3RoaXMuX2ludGVybmFsUm9vdD1lfWZ1bmN0aW9uIGt1KGUpe3JldHVybiBlJiYoMT09PWUubm9kZVR5cGV8fDk9PT1lLm5vZGVUeXBlfHwxMT09PWUubm9kZVR5cGUpfWZ1bmN0aW9uIFN1KGUpe3JldHVybiBlJiYoMT09PWUubm9kZVR5cGV8fDk9PT1lLm5vZGVUeXBlfHwxMT09PWUubm9kZVR5cGV8fDg9PT1lLm5vZGVUeXBlJiYiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlICI9PT1lLm5vZGVWYWx1ZSl9ZnVuY3Rpb24gQ3UoKXt9ZnVuY3Rpb24gRXUoZSx0LG4scixvKXt2YXIgYSxpLGw9bi5fcmVhY3RSb290Q29udGFpbmVyO3JldHVybiBsPygiZnVuY3Rpb24iPT10eXBlb2YgbyYmKGk9byxvPWZ1bmN0aW9uKCl7dmFyIGU9aHUoYSk7aS5jYWxsKGUpfSksbXUodCxhPWwsZSxvKSk6YT1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciBhLGksbDtpZihvKXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByJiYoYT1yLHI9ZnVuY3Rpb24oKXt2YXIgZT1odShpKTthLmNhbGwoZSl9KSxpPXB1KHQscixlLDAsbnVsbCwhMSwwLCIiLEN1KSxlLl9yZWFjdFJvb3RDb250YWluZXI9aSxlW2pvXT1pLmN1cnJlbnQsdG8oOD09PWUubm9kZVR5cGU/ZS5wYXJlbnROb2RlOmUpLEZjKCksaTtmb3IoO289ZS5sYXN0Q2hpbGQ7KWUucmVtb3ZlQ2hpbGQobyk7ImZ1bmN0aW9uIj09dHlwZW9mIHImJihsPXIscj1mdW5jdGlvbigpe3ZhciBlPWh1KGMpO2wuY2FsbChlKX0pO3ZhciBjPWZ1KGUsMCwhMSxudWxsLDAsITEsMCwiIixDdSk7cmV0dXJuIGUuX3JlYWN0Um9vdENvbnRhaW5lcj1jLGVbam9dPWMuY3VycmVudCx0byg4PT09ZS5ub2RlVHlwZT9lLnBhcmVudE5vZGU6ZSksRmMoZnVuY3Rpb24oKXttdSh0LGMsbixyKX0pLGN9KG4sdCxlLG8sciksaHUoYSl9eHUucHJvdG90eXBlLnJlbmRlcj13dS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2ludGVybmFsUm9vdDtpZihudWxsPT09dCl0aHJvdyBFcnJvcihEKDQwOSkpO211KGUsdCxudWxsLG51bGwpfSx4dS5wcm90b3R5cGUudW5tb3VudD13dS5wcm90b3R5cGUudW5tb3VudD1mdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5faW50ZXJuYWxSb290O251bGwhPT10JiYodGhpcy5faW50ZXJuYWxSb290PW51bGwsZT10LmNvbnRhaW5lckluZm8sRmMoZnVuY3Rpb24oKXttdShudWxsLHQsbnVsbCxudWxsKX0pLGVbam9dPW51bGwpfSx4dS5wcm90b3R5cGUudW5zdGFibGVfc2NoZWR1bGVIeWRyYXRpb249ZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9WHQoKTtlPXtibG9ja2VkT246bnVsbCx0YXJnZXQ6ZSxwcmlvcml0eTp0fTtmb3IodmFyIG49MDtuPG9uLmxlbmd0aCYmMCE9PXQmJnQ8b25bbl0ucHJpb3JpdHk7bisrKTtvbi5zcGxpY2UobiwwLGUpLDA9PT1uJiZ1bihlKX19LEd0PWZ1bmN0aW9uKG4pe3N3aXRjaChuLnRhZyl7Y2FzZSAzOnZhciBlLHQ9bi5zdGF0ZU5vZGU7dC5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYwIT09KGU9TnQodC5wZW5kaW5nTGFuZXMpKSYmKCR0KHQsMXxlKSxMYyh0LGgoKSksMD09KDYmXykpJiYod2M9aCgpKzUwMCxZbygpKTticmVhaztjYXNlIDEzOkZjKGZ1bmN0aW9uKCl7dmFyIGUsdD1NYShuLDEpO251bGwhPT10JiYoZT1tKCksVGModCxuLDEsZSkpfSksYnUobiwxKX19LHF0PWZ1bmN0aW9uKGUpe3ZhciB0OzEzPT09ZS50YWcmJihudWxsIT09KHQ9TWEoZSwxMzQyMTc3MjgpKSYmVGModCxlLDEzNDIxNzcyOCxtKCkpLGJ1KGUsMTM0MjE3NzI4KSl9LFp0PWZ1bmN0aW9uKGUpe3ZhciB0LG47MTM9PT1lLnRhZyYmKG51bGwhPT0obj1NYShlLHQ9emMoZSkpKSYmVGMobixlLHQsbSgpKSxidShlLHQpKX0sWHQ9ZnVuY3Rpb24oKXtyZXR1cm4geH0sWXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj14O3RyeXtyZXR1cm4geD1lLHQoKX1maW5hbGx5e3g9bn19LGF0PUZjO2U9e3VzaW5nQ2xpZW50RW50cnlQb2ludDohKEtlPWZ1bmN0aW9uKGUsdCxuKXtzd2l0Y2godCl7Y2FzZSJpbnB1dCI6aWYoQWUoZSxuKSx0PW4ubmFtZSwicmFkaW8iPT09bi50eXBlJiZudWxsIT10KXtmb3Iobj1lO24ucGFyZW50Tm9kZTspbj1uLnBhcmVudE5vZGU7Zm9yKG49bi5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdpZnkoIiIrdCkrJ11bdHlwZT0icmFkaW8iXScpLHQ9MDt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI9blt0XTtpZihyIT09ZSYmci5mb3JtPT09ZS5mb3JtKXt2YXIgbz1MbyhyKTtpZighbyl0aHJvdyBFcnJvcihEKDkwKSk7U2UociksQWUocixvKX19fWJyZWFrO2Nhc2UidGV4dGFyZWEiOk1lKGUsbik7YnJlYWs7Y2FzZSJzZWxlY3QiOm51bGwhPSh0PW4udmFsdWUpJiZ6ZShlLCEhbi5tdWx0aXBsZSx0LCExKX19KSxFdmVudHM6W3pvLFRvLExvLG50LHJ0LG90PUJjXX0sdD17ZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6X28sYnVuZGxlVHlwZTowLHZlcnNpb246IjE4LjIuMCIscmVuZGVyZXJQYWNrYWdlTmFtZToicmVhY3QtZG9tIn0sUj17YnVuZGxlVHlwZTp0LmJ1bmRsZVR5cGUsdmVyc2lvbjp0LnZlcnNpb24scmVuZGVyZXJQYWNrYWdlTmFtZTp0LnJlbmRlcmVyUGFja2FnZU5hbWUscmVuZGVyZXJDb25maWc6dC5yZW5kZXJlckNvbmZpZyxvdmVycmlkZUhvb2tTdGF0ZTpudWxsLG92ZXJyaWRlSG9va1N0YXRlRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlSG9va1N0YXRlUmVuYW1lUGF0aDpudWxsLG92ZXJyaWRlUHJvcHM6bnVsbCxvdmVycmlkZVByb3BzRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlUHJvcHNSZW5hbWVQYXRoOm51bGwsc2V0RXJyb3JIYW5kbGVyOm51bGwsc2V0U3VzcGVuc2VIYW5kbGVyOm51bGwsc2NoZWR1bGVVcGRhdGU6bnVsbCxjdXJyZW50RGlzcGF0Y2hlclJlZjpKLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZmluZEhvc3RJbnN0YW5jZUJ5RmliZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT0oZT12dChlKSk/bnVsbDplLnN0YXRlTm9kZX0sZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6dC5maW5kRmliZXJCeUhvc3RJbnN0YW5jZXx8ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOm51bGwsc2NoZWR1bGVSZWZyZXNoOm51bGwsc2NoZWR1bGVSb290Om51bGwsc2V0UmVmcmVzaEhhbmRsZXI6bnVsbCxnZXRDdXJyZW50RmliZXI6bnVsbCxyZWNvbmNpbGVyVmVyc2lvbjoiMTguMi4wLW5leHQtOWUzYjc3MmI4LTIwMjIwNjA4In07aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pe3I9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKCFyLmlzRGlzYWJsZWQmJnIuc3VwcG9ydHNGaWJlcil0cnl7SXQ9ci5pbmplY3QoUiksX3Q9cn1jYXRjaChlKXt9fWMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9ZSxjLmNyZWF0ZVBvcnRhbD1mdW5jdGlvbihlLHQpe2lmKGt1KHQpKXJldHVybiBmdW5jdGlvbihlLHQsbixyKXtyZXR1cm57JCR0eXBlb2Y6dGUsa2V5Om51bGw9PShyPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09cj9yOm51bGwpP251bGw6IiIrcixjaGlsZHJlbjplLGNvbnRhaW5lckluZm86dCxpbXBsZW1lbnRhdGlvbjpufX0oZSx0LG51bGwsMjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwpO3Rocm93IEVycm9yKEQoMjAwKSl9LGMuY3JlYXRlUm9vdD1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbztpZihrdShlKSlyZXR1cm4gbj0hMSxyPSIiLG89dnUsbnVsbCE9dCYmKCEwPT09dC51bnN0YWJsZV9zdHJpY3RNb2RlJiYobj0hMCksdm9pZCAwIT09dC5pZGVudGlmaWVyUHJlZml4JiYocj10LmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PXQub25SZWNvdmVyYWJsZUVycm9yKSYmKG89dC5vblJlY292ZXJhYmxlRXJyb3IpLHQ9ZnUoZSwxLCExLG51bGwsMCxuLDAscixvKSxlW2pvXT10LmN1cnJlbnQsdG8oOD09PWUubm9kZVR5cGU/ZS5wYXJlbnROb2RlOmUpLG5ldyB3dSh0KTt0aHJvdyBFcnJvcihEKDI5OSkpfSxjLmZpbmRET01Ob2RlPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoMSE9PWUubm9kZVR5cGUpe3ZhciB0PWUuX3JlYWN0SW50ZXJuYWxzO2lmKHZvaWQgMD09PXQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlbmRlcil0aHJvdyBFcnJvcihEKDE4OCkpO3Rocm93IGU9T2JqZWN0LmtleXMoZSkuam9pbigiLCIpLEVycm9yKEQoMjY4LGUpKX1lPW51bGw9PT0oZT12dCh0KSk/bnVsbDplLnN0YXRlTm9kZX1yZXR1cm4gZX0sYy5mbHVzaFN5bmM9RmMsYy5oeWRyYXRlPWZ1bmN0aW9uKGUsdCxuKXtpZihTdSh0KSlyZXR1cm4gRXUobnVsbCxlLHQsITAsbik7dGhyb3cgRXJyb3IoRCgyMDApKX0sYy5oeWRyYXRlUm9vdD1mdW5jdGlvbihlLHQsbil7aWYoIWt1KGUpKXRocm93IEVycm9yKEQoNDA1KSk7dmFyIHI9bnVsbCE9biYmbi5oeWRyYXRlZFNvdXJjZXN8fG51bGwsbz0hMSxhPSIiLGk9dnU7aWYobnVsbCE9biYmKCEwPT09bi51bnN0YWJsZV9zdHJpY3RNb2RlJiYobz0hMCksdm9pZCAwIT09bi5pZGVudGlmaWVyUHJlZml4JiYoYT1uLmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PW4ub25SZWNvdmVyYWJsZUVycm9yKSYmKGk9bi5vblJlY292ZXJhYmxlRXJyb3IpLHQ9cHUodCxudWxsLGUsMSxudWxsIT1uP246bnVsbCxvLDAsYSxpKSxlW2pvXT10LmN1cnJlbnQsdG8oZSkscilmb3IoZT0wO2U8ci5sZW5ndGg7ZSsrKW89KG89KG49cltlXSkuX2dldFZlcnNpb24pKG4uX3NvdXJjZSksbnVsbD09dC5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhP3QubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1bbixvXTp0Lm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEucHVzaChuLG8pO3JldHVybiBuZXcgeHUodCl9LGMucmVuZGVyPWZ1bmN0aW9uKGUsdCxuKXtpZihTdSh0KSlyZXR1cm4gRXUobnVsbCxlLHQsITEsbik7dGhyb3cgRXJyb3IoRCgyMDApKX0sYy51bm1vdW50Q29tcG9uZW50QXROb2RlPWZ1bmN0aW9uKGUpe2lmKFN1KGUpKXJldHVybiEhZS5fcmVhY3RSb290Q29udGFpbmVyJiYoRmMoZnVuY3Rpb24oKXtFdShudWxsLG51bGwsZSwhMSxmdW5jdGlvbigpe2UuX3JlYWN0Um9vdENvbnRhaW5lcj1udWxsLGVbam9dPW51bGx9KX0pLCEwKTt0aHJvdyBFcnJvcihEKDQwKSl9LGMudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9QmMsYy51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihlLHQsbixyKXtpZighU3UobikpdGhyb3cgRXJyb3IoRCgyMDApKTtpZihudWxsPT1lfHx2b2lkIDA9PT1lLl9yZWFjdEludGVybmFscyl0aHJvdyBFcnJvcihEKDM4KSk7cmV0dXJuIEV1KGUsdCxuLCExLHIpfSxjLnZlcnNpb249IjE4LjIuMC1uZXh0LTllM2I3NzJiOC0yMDIyMDYwOCJ9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigxNzIpfSxmdW5jdGlvbihlLFQsdCl7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoZSx0KXt2YXIgbj1lLmxlbmd0aDtmb3IoZS5wdXNoKHQpOzA8bjspe3ZhciByPW4tMT4+PjEsbz1lW3JdO2lmKCEoMDxzKG8sdCkpKWJyZWFrO2Vbcl09dCxlW25dPW8sbj1yfX1mdW5jdGlvbiBsKGUpe3JldHVybiAwPT09ZS5sZW5ndGg/bnVsbDplWzBdfWZ1bmN0aW9uIGMoZSl7aWYoMCE9PWUubGVuZ3RoKXt2YXIgdD1lWzBdLG49ZS5wb3AoKTtpZihuIT09dCl7ZVswXT1uO2Zvcih2YXIgcj0wLG89ZS5sZW5ndGgsYT1vPj4+MTtyPGE7KXt2YXIgaT0yKihyKzEpLTEsbD1lW2ldLGM9MStpLHU9ZVtjXTtpZihzKGwsbik8MClyPWM8byYmcyh1LGwpPDA/KGVbcl09dSxlW2NdPW4sYyk6KGVbcl09bCxlW2ldPW4saSk7ZWxzZXtpZighKGM8byYmcyh1LG4pPDApKWJyZWFrO2Vbcl09dSxlW2NdPW4scj1jfX19fX1mdW5jdGlvbiBzKGUsdCl7dmFyIG49ZS5zb3J0SW5kZXgtdC5zb3J0SW5kZXg7cmV0dXJuIDAhPW4/bjplLmlkLXQuaWR9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdz8odD1wZXJmb3JtYW5jZSxULnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiB0Lm5vdygpfSk6KG49RGF0ZSxyPW4ubm93KCksVC51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gbi5ub3coKS1yfSk7dmFyIHQsbixyLHU9W10sZj1bXSxpPTEsZD1udWxsLHA9MyxtPSExLGg9ITEsZz0hMSxvPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6bnVsbCxiPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Om51bGwseT12b2lkIDAhPT1lP2U6bnVsbDtmdW5jdGlvbiB2KGUpe2Zvcih2YXIgdD1sKGYpO251bGwhPT10Oyl7aWYobnVsbD09PXQuY2FsbGJhY2spYyhmKTtlbHNle2lmKCEodC5zdGFydFRpbWU8PWUpKWJyZWFrO2MoZiksdC5zb3J0SW5kZXg9dC5leHBpcmF0aW9uVGltZSxhKHUsdCl9dD1sKGYpfX1mdW5jdGlvbiB3KGUpe3ZhciB0O2c9ITEsdihlKSxofHwobnVsbCE9PWwodSk/KGg9ITAsXyh4KSk6bnVsbCE9PSh0PWwoZikpJiZ6KHcsdC5zdGFydFRpbWUtZSkpfWZ1bmN0aW9uIHgoZSx0KXtoPSExLGcmJihnPSExLGIoTyksTz0tMSksbT0hMDt2YXIgbj1wO3RyeXtmb3Iodih0KSxkPWwodSk7bnVsbCE9PWQmJighKGQuZXhwaXJhdGlvblRpbWU+dCl8fGUmJiFQKCkpOyl7dmFyIHIsbz1kLmNhbGxiYWNrOyJmdW5jdGlvbiI9PXR5cGVvZiBvPyhkLmNhbGxiYWNrPW51bGwscD1kLnByaW9yaXR5TGV2ZWwscj1vKGQuZXhwaXJhdGlvblRpbWU8PXQpLHQ9VC51bnN0YWJsZV9ub3coKSwiZnVuY3Rpb24iPT10eXBlb2Ygcj9kLmNhbGxiYWNrPXI6ZD09PWwodSkmJmModSksdih0KSk6Yyh1KSxkPWwodSl9dmFyIGEsaT1udWxsIT09ZHx8KG51bGwhPT0oYT1sKGYpKSYmeih3LGEuc3RhcnRUaW1lLXQpLCExKTtyZXR1cm4gaX1maW5hbGx5e2Q9bnVsbCxwPW4sbT0hMX19InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZyYmbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcuYmluZChuYXZpZ2F0b3Iuc2NoZWR1bGluZyk7dmFyIGssUyxDPSExLEU9bnVsbCxPPS0xLGo9NSxBPS0xO2Z1bmN0aW9uIFAoKXtyZXR1cm4hKFQudW5zdGFibGVfbm93KCktQTxqKX1mdW5jdGlvbiBJKCl7aWYobnVsbCE9PUUpe3ZhciBlPVQudW5zdGFibGVfbm93KCksdD0oQT1lLCEwKTt0cnl7dD1FKCEwLGUpfWZpbmFsbHl7dD9rKCk6KEM9ITEsRT1udWxsKX19ZWxzZSBDPSExfWZ1bmN0aW9uIF8oZSl7RT1lLEN8fChDPSEwLGsoKSl9ZnVuY3Rpb24geihlLHQpe089byhmdW5jdGlvbigpe2UoVC51bnN0YWJsZV9ub3coKSl9LHQpfWs9ImZ1bmN0aW9uIj09dHlwZW9mIHk/ZnVuY3Rpb24oKXt5KEkpfToidW5kZWZpbmVkIiE9dHlwZW9mIE1lc3NhZ2VDaGFubmVsPyhlPW5ldyBNZXNzYWdlQ2hhbm5lbCxTPWUucG9ydDIsZS5wb3J0MS5vbm1lc3NhZ2U9SSxmdW5jdGlvbigpe1MucG9zdE1lc3NhZ2UobnVsbCl9KTpmdW5jdGlvbigpe28oSSwwKX0sVC51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NSxULnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTEsVC51bnN0YWJsZV9Mb3dQcmlvcml0eT00LFQudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MyxULnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsLFQudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9MixULnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKGUpe2UuY2FsbGJhY2s9bnVsbH0sVC51bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbj1mdW5jdGlvbigpe2h8fG18fChoPSEwLF8oeCkpfSxULnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPWZ1bmN0aW9uKGUpe2U8MHx8MTI1PGU/Y29uc29sZS5lcnJvcigiZm9yY2VGcmFtZVJhdGUgdGFrZXMgYSBwb3NpdGl2ZSBpbnQgYmV0d2VlbiAwIGFuZCAxMjUsIGZvcmNpbmcgZnJhbWUgcmF0ZXMgaGlnaGVyIHRoYW4gMTI1IGZwcyBpcyBub3Qgc3VwcG9ydGVkIik6aj0wPGU/TWF0aC5mbG9vcigxZTMvZSk6NX0sVC51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbD1mdW5jdGlvbigpe3JldHVybiBwfSxULnVuc3RhYmxlX2dldEZpcnN0Q2FsbGJhY2tOb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIGwodSl9LFQudW5zdGFibGVfbmV4dD1mdW5jdGlvbihlKXtzd2l0Y2gocCl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6dmFyIHQ9MzticmVhaztkZWZhdWx0OnQ9cH12YXIgbj1wO3A9dDt0cnl7cmV0dXJuIGUoKX1maW5hbGx5e3A9bn19LFQudW5zdGFibGVfcGF1c2VFeGVjdXRpb249ZnVuY3Rpb24oKXt9LFQudW5zdGFibGVfcmVxdWVzdFBhaW50PWZ1bmN0aW9uKCl7fSxULnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6ZT0zfXZhciBuPXA7cD1lO3RyeXtyZXR1cm4gdCgpfWZpbmFsbHl7cD1ufX0sVC51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1ULnVuc3RhYmxlX25vdygpO3N3aXRjaChuPSJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9PW4mJiJudW1iZXIiPT10eXBlb2Yobj1uLmRlbGF5KSYmMDxuP3IrbjpyLGUpe2Nhc2UgMTp2YXIgbz0tMTticmVhaztjYXNlIDI6bz0yNTA7YnJlYWs7Y2FzZSA1Om89MTA3Mzc0MTgyMzticmVhaztjYXNlIDQ6bz0xZTQ7YnJlYWs7ZGVmYXVsdDpvPTVlM31yZXR1cm4gZT17aWQ6aSsrLGNhbGxiYWNrOnQscHJpb3JpdHlMZXZlbDplLHN0YXJ0VGltZTpuLGV4cGlyYXRpb25UaW1lOm89bitvLHNvcnRJbmRleDotMX0scjxuPyhlLnNvcnRJbmRleD1uLGEoZixlKSxudWxsPT09bCh1KSYmZT09PWwoZikmJihnPyhiKE8pLE89LTEpOmc9ITAseih3LG4tcikpKTooZS5zb3J0SW5kZXg9byxhKHUsZSksaHx8bXx8KGg9ITAsXyh4KSkpLGV9LFQudW5zdGFibGVfc2hvdWxkWWllbGQ9UCxULnVuc3RhYmxlX3dyYXBDYWxsYmFjaz1mdW5jdGlvbih0KXt2YXIgbj1wO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXA7cD1uO3RyeXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtwPWV9fX19LmNhbGwodGhpcyx0KDE3Mykuc2V0SW1tZWRpYXRlKX0sZnVuY3Rpb24oZSxvLGEpeyFmdW5jdGlvbihlKXt2YXIgdD12b2lkIDAhPT1lJiZlfHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fHdpbmRvdyxuPUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseTtmdW5jdGlvbiByKGUsdCl7dGhpcy5faWQ9ZSx0aGlzLl9jbGVhckZuPXR9by5zZXRUaW1lb3V0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyByKG4uY2FsbChzZXRUaW1lb3V0LHQsYXJndW1lbnRzKSxjbGVhclRpbWVvdXQpfSxvLnNldEludGVydmFsPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyByKG4uY2FsbChzZXRJbnRlcnZhbCx0LGFyZ3VtZW50cyksY2xlYXJJbnRlcnZhbCl9LG8uY2xlYXJUaW1lb3V0PW8uY2xlYXJJbnRlcnZhbD1mdW5jdGlvbihlKXtlJiZlLmNsb3NlKCl9LHIucHJvdG90eXBlLnVucmVmPXIucHJvdG90eXBlLnJlZj1mdW5jdGlvbigpe30sci5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt0aGlzLl9jbGVhckZuLmNhbGwodCx0aGlzLl9pZCl9LG8uZW5yb2xsPWZ1bmN0aW9uKGUsdCl7Y2xlYXJUaW1lb3V0KGUuX2lkbGVUaW1lb3V0SWQpLGUuX2lkbGVUaW1lb3V0PXR9LG8udW5lbnJvbGw9ZnVuY3Rpb24oZSl7Y2xlYXJUaW1lb3V0KGUuX2lkbGVUaW1lb3V0SWQpLGUuX2lkbGVUaW1lb3V0PS0xfSxvLl91bnJlZkFjdGl2ZT1vLmFjdGl2ZT1mdW5jdGlvbihlKXtjbGVhclRpbWVvdXQoZS5faWRsZVRpbWVvdXRJZCk7dmFyIHQ9ZS5faWRsZVRpbWVvdXQ7MDw9dCYmKGUuX2lkbGVUaW1lb3V0SWQ9c2V0VGltZW91dChmdW5jdGlvbigpe2UuX29uVGltZW91dCYmZS5fb25UaW1lb3V0KCl9LHQpKX0sYSgxNzQpLG8uc2V0SW1tZWRpYXRlPSJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZi5zZXRJbW1lZGlhdGV8fHZvaWQgMCE9PWUmJmUuc2V0SW1tZWRpYXRlfHx0aGlzJiZ0aGlzLnNldEltbWVkaWF0ZSxvLmNsZWFySW1tZWRpYXRlPSJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZi5jbGVhckltbWVkaWF0ZXx8dm9pZCAwIT09ZSYmZS5jbGVhckltbWVkaWF0ZXx8dGhpcyYmdGhpcy5jbGVhckltbWVkaWF0ZX0uY2FsbCh0aGlzLGEoMjIpKX0sZnVuY3Rpb24oZSx0LG4peyFmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIGEoZSl7ZGVsZXRlIGNbZV19ZnVuY3Rpb24gaShlKXtpZih1KXNldFRpbWVvdXQoaSwwLGUpO2Vsc2V7dmFyIHQ9Y1tlXTtpZih0KXt1PSEwO3RyeXt2YXIgbj10LHI9bi5jYWxsYmFjayxvPW4uYXJncztzd2l0Y2goby5sZW5ndGgpe2Nhc2UgMDpyKCk7YnJlYWs7Y2FzZSAxOnIob1swXSk7YnJlYWs7Y2FzZSAyOnIob1swXSxvWzFdKTticmVhaztjYXNlIDM6cihvWzBdLG9bMV0sb1syXSk7YnJlYWs7ZGVmYXVsdDpyLmFwcGx5KGwsbyl9fWZpbmFsbHl7YShlKSx1PSExfX19fWZ1bmN0aW9uIG4oKXtmdW5jdGlvbiBlKGUpe2Uuc291cmNlPT09ciYmInN0cmluZyI9PXR5cGVvZiBlLmRhdGEmJjA9PT1lLmRhdGEuaW5kZXhPZih0KSYmaSgrZS5kYXRhLnNsaWNlKHQubGVuZ3RoKSl9dmFyIHQ9InNldEltbWVkaWF0ZSQiK01hdGgucmFuZG9tKCkrIiQiO3IuYWRkRXZlbnRMaXN0ZW5lcj9yLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUsITEpOnIuYXR0YWNoRXZlbnQoIm9ubWVzc2FnZSIsZSksZj1mdW5jdGlvbihlKXtyLnBvc3RNZXNzYWdlKHQrZSwiKiIpfX12YXIgcixsLG8sYyx1LHMsZixkLHA7KHI9InVuZGVmaW5lZCI9PXR5cGVvZiBzZWxmP3ZvaWQgMD09PWU/dGhpczplOnNlbGYpLnNldEltbWVkaWF0ZXx8KG89MSx1PSEoYz17fSkscz1yLmRvY3VtZW50LGU9KGU9T2JqZWN0LmdldFByb3RvdHlwZU9mJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YocikpJiZlLnNldFRpbWVvdXQ/ZTpyLCJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoci5wcm9jZXNzKT9mPWZ1bmN0aW9uKGUpe3QubmV4dFRpY2soZnVuY3Rpb24oKXtpKGUpfSl9OiFmdW5jdGlvbigpe3ZhciBlLHQ7aWYoci5wb3N0TWVzc2FnZSYmIXIuaW1wb3J0U2NyaXB0cylyZXR1cm4gZT0hMCx0PXIub25tZXNzYWdlLHIub25tZXNzYWdlPWZ1bmN0aW9uKCl7ZT0hMX0sci5wb3N0TWVzc2FnZSgiIiwiKiIpLHIub25tZXNzYWdlPXQsZX0oKT9mPXIuTWVzc2FnZUNoYW5uZWw/KChwPW5ldyBNZXNzYWdlQ2hhbm5lbCkucG9ydDEub25tZXNzYWdlPWZ1bmN0aW9uKGUpe2koZS5kYXRhKX0sZnVuY3Rpb24oZSl7cC5wb3J0Mi5wb3N0TWVzc2FnZShlKX0pOnMmJiJvbnJlYWR5c3RhdGVjaGFuZ2UiaW4gcy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKT8oZD1zLmRvY3VtZW50RWxlbWVudCxmdW5jdGlvbihlKXt2YXIgdD1zLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3Qub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aShlKSx0Lm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGQucmVtb3ZlQ2hpbGQodCksdD1udWxsfSxkLmFwcGVuZENoaWxkKHQpfSk6ZnVuY3Rpb24oZSl7c2V0VGltZW91dChpLDAsZSl9Om4oKSxlLnNldEltbWVkaWF0ZT1mdW5jdGlvbihlKXsiZnVuY3Rpb24iIT10eXBlb2YgZSYmKGU9bmV3IEZ1bmN0aW9uKCIiK2UpKTtmb3IodmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSksbj0wO248dC5sZW5ndGg7bisrKXRbbl09YXJndW1lbnRzW24rMV07cmV0dXJuIGNbb109e2NhbGxiYWNrOmUsYXJnczp0fSxmKG8pLG8rK30sZS5jbGVhckltbWVkaWF0ZT1hKX0uY2FsbCh0aGlzLG4oMjIpLG4oOTIpKX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByLG89U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpLGE9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksaT1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLGw9U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSxjPVN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksdT1TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpLHM9U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLGY9U3ltYm9sLmZvcigicmVhY3Quc2VydmVyX2NvbnRleHQiKSxkPVN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIikscD1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpLG09U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2VfbGlzdCIpLGg9U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLGc9U3ltYm9sLmZvcigicmVhY3QubGF6eSIpLGI9U3ltYm9sLmZvcigicmVhY3Qub2Zmc2NyZWVuIik7ZnVuY3Rpb24geShlKXtpZigib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lKXt2YXIgdD1lLiQkdHlwZW9mO3N3aXRjaCh0KXtjYXNlIG86c3dpdGNoKGU9ZS50eXBlKXtjYXNlIGk6Y2FzZSBjOmNhc2UgbDpjYXNlIHA6Y2FzZSBtOnJldHVybiBlO2RlZmF1bHQ6c3dpdGNoKGU9ZSYmZS4kJHR5cGVvZil7Y2FzZSBmOmNhc2UgczpjYXNlIGQ6Y2FzZSBnOmNhc2UgaDpjYXNlIHU6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm4gdH19Y2FzZSBhOnJldHVybiB0fX19cj1TeW1ib2wuZm9yKCJyZWFjdC5tb2R1bGUucmVmZXJlbmNlIiksdC5Db250ZXh0Q29uc3VtZXI9cyx0LkNvbnRleHRQcm92aWRlcj11LHQuRWxlbWVudD1vLHQuRm9yd2FyZFJlZj1kLHQuRnJhZ21lbnQ9aSx0Lkxhenk9Zyx0Lk1lbW89aCx0LlBvcnRhbD1hLHQuUHJvZmlsZXI9Yyx0LlN0cmljdE1vZGU9bCx0LlN1c3BlbnNlPXAsdC5TdXNwZW5zZUxpc3Q9bSx0LmlzQXN5bmNNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuITF9LHQuaXNDb25jdXJyZW50TW9kZT1mdW5jdGlvbigpe3JldHVybiExfSx0LmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGUpe3JldHVybiB5KGUpPT09c30sdC5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihlKXtyZXR1cm4geShlKT09PXV9LHQuaXNFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1vfSx0LmlzRm9yd2FyZFJlZj1mdW5jdGlvbihlKXtyZXR1cm4geShlKT09PWR9LHQuaXNGcmFnbWVudD1mdW5jdGlvbihlKXtyZXR1cm4geShlKT09PWl9LHQuaXNMYXp5PWZ1bmN0aW9uKGUpe3JldHVybiB5KGUpPT09Z30sdC5pc01lbW89ZnVuY3Rpb24oZSl7cmV0dXJuIHkoZSk9PT1ofSx0LmlzUG9ydGFsPWZ1bmN0aW9uKGUpe3JldHVybiB5KGUpPT09YX0sdC5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGUpe3JldHVybiB5KGUpPT09Y30sdC5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHkoZSk9PT1sfSx0LmlzU3VzcGVuc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHkoZSk9PT1wfSx0LmlzU3VzcGVuc2VMaXN0PWZ1bmN0aW9uKGUpe3JldHVybiB5KGUpPT09bX0sdC5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZXx8ZT09PWl8fGU9PT1jfHxlPT09bHx8ZT09PXB8fGU9PT1tfHxlPT09Ynx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmKGUuJCR0eXBlb2Y9PT1nfHxlLiQkdHlwZW9mPT09aHx8ZS4kJHR5cGVvZj09PXV8fGUuJCR0eXBlb2Y9PT1zfHxlLiQkdHlwZW9mPT09ZHx8ZS4kJHR5cGVvZj09PXJ8fHZvaWQgMCE9PWUuZ2V0TW9kdWxlSWQpfSx0LnR5cGVPZj15fSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMTc3KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Isbz1yP1N5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKTo2MDEwMyxhPXI/U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIik6NjAxMDYsaT1yP1N5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50Iik6NjAxMDcsbD1yP1N5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIik6NjAxMDgsYz1yP1N5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIik6NjAxMTQsdT1yP1N5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIik6NjAxMDkscz1yP1N5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKTo2MDExMCxmPXI/U3ltYm9sLmZvcigicmVhY3QuYXN5bmNfbW9kZSIpOjYwMTExLGQ9cj9TeW1ib2wuZm9yKCJyZWFjdC5jb25jdXJyZW50X21vZGUiKTo2MDExMSxwPXI/U3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKTo2MDExMixtPXI/U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKTo2MDExMyxoPXI/U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2VfbGlzdCIpOjYwMTIwLGc9cj9TeW1ib2wuZm9yKCJyZWFjdC5tZW1vIik6NjAxMTUsYj1yP1N5bWJvbC5mb3IoInJlYWN0LmxhenkiKTo2MDExNix5PXI/U3ltYm9sLmZvcigicmVhY3QuYmxvY2siKTo2MDEyMSx2PXI/U3ltYm9sLmZvcigicmVhY3QuZnVuZGFtZW50YWwiKTo2MDExNyx3PXI/U3ltYm9sLmZvcigicmVhY3QucmVzcG9uZGVyIik6NjAxMTgseD1yP1N5bWJvbC5mb3IoInJlYWN0LnNjb3BlIik6NjAxMTk7ZnVuY3Rpb24gayhlKXtpZigib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lKXt2YXIgdD1lLiQkdHlwZW9mO3N3aXRjaCh0KXtjYXNlIG86c3dpdGNoKGU9ZS50eXBlKXtjYXNlIGY6Y2FzZSBkOmNhc2UgaTpjYXNlIGM6Y2FzZSBsOmNhc2UgbTpyZXR1cm4gZTtkZWZhdWx0OnN3aXRjaChlPWUmJmUuJCR0eXBlb2Ype2Nhc2UgczpjYXNlIHA6Y2FzZSBiOmNhc2UgZzpjYXNlIHU6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm4gdH19Y2FzZSBhOnJldHVybiB0fX19ZnVuY3Rpb24gUyhlKXtyZXR1cm4gayhlKT09PWR9dC5Bc3luY01vZGU9Zix0LkNvbmN1cnJlbnRNb2RlPWQsdC5Db250ZXh0Q29uc3VtZXI9cyx0LkNvbnRleHRQcm92aWRlcj11LHQuRWxlbWVudD1vLHQuRm9yd2FyZFJlZj1wLHQuRnJhZ21lbnQ9aSx0Lkxhenk9Yix0Lk1lbW89Zyx0LlBvcnRhbD1hLHQuUHJvZmlsZXI9Yyx0LlN0cmljdE1vZGU9bCx0LlN1c3BlbnNlPW0sdC5pc0FzeW5jTW9kZT1mdW5jdGlvbihlKXtyZXR1cm4gUyhlKXx8ayhlKT09PWZ9LHQuaXNDb25jdXJyZW50TW9kZT1TLHQuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGsoZSk9PT1zfSx0LmlzQ29udGV4dFByb3ZpZGVyPWZ1bmN0aW9uKGUpe3JldHVybiBrKGUpPT09dX0sdC5pc0VsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PW99LHQuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGUpe3JldHVybiBrKGUpPT09cH0sdC5pc0ZyYWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBrKGUpPT09aX0sdC5pc0xhenk9ZnVuY3Rpb24oZSl7cmV0dXJuIGsoZSk9PT1ifSx0LmlzTWVtbz1mdW5jdGlvbihlKXtyZXR1cm4gayhlKT09PWd9LHQuaXNQb3J0YWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGsoZSk9PT1hfSx0LmlzUHJvZmlsZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGsoZSk9PT1jfSx0LmlzU3RyaWN0TW9kZT1mdW5jdGlvbihlKXtyZXR1cm4gayhlKT09PWx9LHQuaXNTdXNwZW5zZT1mdW5jdGlvbihlKXtyZXR1cm4gayhlKT09PW19LHQuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT1pfHxlPT09ZHx8ZT09PWN8fGU9PT1sfHxlPT09bXx8ZT09PWh8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJihlLiQkdHlwZW9mPT09Ynx8ZS4kJHR5cGVvZj09PWd8fGUuJCR0eXBlb2Y9PT11fHxlLiQkdHlwZW9mPT09c3x8ZS4kJHR5cGVvZj09PXB8fGUuJCR0eXBlb2Y9PT12fHxlLiQkdHlwZW9mPT09d3x8ZS4kJHR5cGVvZj09PXh8fGUuJCR0eXBlb2Y9PT15KX0sdC50eXBlT2Y9a30sZnVuY3Rpb24oYixlLHQpe3QucihlKSx0LmQoZSwic2NyaXB0SWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGd9KTt0KDk4KSx0KDE2Nyk7dmFyIG4sRj10KDApLEg9dC5uKEYpLGU9dCg5MykseT10Lm4oZSk7ZnVuY3Rpb24gbygpe3JldHVybiBuYXZpZ2F0b3IudXNlckFnZW50fHxuYXZpZ2F0b3IudmVuZG9yfWZ1bmN0aW9uIHYoKXtyZXR1cm4gMDw9bmF2aWdhdG9yLnBsYXRmb3JtLnRvVXBwZXJDYXNlKCkuaW5kZXhPZigiTUFDIil9ZnVuY3Rpb24gYSgpe3JldHVybiEhL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKXx8ISEvaXAoaG9uZXxvZHxhZCkvaS50ZXN0KG8oKSl8fG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyYmMjxuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMmJi9NYWNJbnRlbC8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pfWZ1bmN0aW9uIHcoKXtyZXR1cm4tMSE9PW8oKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImFuZHJvaWQiKX1mdW5jdGlvbiBEKCl7dmFyIGU7cmV0dXJuIHZvaWQgMD09PW4mJiExPT09KG49YSgpfHx3KCkpJiYoZT1vKCksbj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlyaXN8a2luZGxlfGxnZSB8bWFlbW98bWlkcHxtbXB8bW9iaWxlLitmaXJlZm94fG5ldGZyb250fG9wZXJhIG0ob2J8aW4paXxwYWxtKCBvcyk/fHBob25lfHAoaXhpfHJlKVwvfHBsdWNrZXJ8cG9ja2V0fHBzcHxzZXJpZXMoNHw2KTB8c3ltYmlhbnx0cmVvfHVwXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm8vaS50ZXN0KGUpfHwvMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pLnRlc3QoZS5zdWJzdHIoMCw0KSkpLG59ZnVuY3Rpb24gVSgpe3JldHVybiFEKCl9dmFyIGU9dCg5NCkseD10Lm4oZSk7ZnVuY3Rpb24gaShlKXtyZXR1cm4oaT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIF8odCxlKXt2YXIgbixyPU9iamVjdC5rZXlzKHQpO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYobj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpLGUmJihuPW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSxyLnB1c2guYXBwbHkocixuKSkscn12YXIgbD17Y2FsbFRvQWN0aW9uOiJNZXNzYWdlIHVzIPCfkYsiLGJ1dHRvblRleHQ6IkNvbnRhY3QgdXMiLGJ1dHRvblRleHRDbG9zZToiQ2xvc2UiLGdyZWV0aW5nTWVzc2FnZToiSGVsbG8g8J+RiyBIb3cgbWF5IHdlIGhlbHAgeW91PyBKdXN0IHNlbmQgdXMgYSBtZXNzYWdlIG5vdyB0byBnZXQgYXNzaXN0YW5jZS4iLGdyZWV0aW5nTWVzc2FnZURlbGF5OjUsY2FsbFRvQWN0aW9uRGVsYXk6M2UzLGNvbXBhbnlMb2dvVXJsOiExLGJ1dHRvbkltYWdlVXJsOiExLHBvc2l0aW9uOiJyaWdodCIsZ3JlZXRpbmc6ITEsYW5pbWF0aW9uOiExLGdyZWV0aW5nU3R5bGU6ImNsYXNzaWMiLGdyZWV0aW5nQWdlbnROYW1lOiJCb2IiLGdyZWV0aW5nRGlyZWN0aW9uOiJjb2x1bW4iLGdyZWV0aW5nQWdlbnRQb3NpdGlvbjoiTWFuYWdlciIsZ3JlZXRpbmdTdGFydENoYXRXaXRoOiJTdGFydCBDaGF0IHdpdGg6IixncmVldGluZ01lc3NlbmdlcnM6ITAsZ3JlZXRpbmdDb29raWU6ODY0MDAsYnJhbmRpbmc6ITEsZGlyZWN0aW9uOiJjb2x1bW4iLGJvcmRlcjohMSxub3RpZmljYXRpb25JbmRpY2F0b3I6ITEsYnV0dG9uQm9yZGVyUmFkaXVzOjUwLGFjdGl2YXRvclNpemU6NTAsYnV0dG9uU2hhZG93OjQwLGJ1dHRvbk9wYWNpdHk6MTAwLGJnU3R5bGU6ImNvbG9yIixidXR0b25BbmltYXRpb246InB1bHNlIixhY3RpdmF0b3JJY29uOiJjbGFzc2ljIixidXR0b25TdHlsZToiY2xhc3NpYyIsc2hpZnRIb3Jpem9udGFsOjAsc2hpZnRWZXJ0aWNhbDowLGdhOiExLG1pcnJvcjohMSxtb2JpbGU6ITAsZGVza3RvcDohMCxkb21haW46ITEsa2V5OiExLG9yZGVyOltdLGlzU2luZ2xlOiExLHNob3dXaWRnZXQ6ITAsY29uZmlnTG9hZGVkOiExLGRpc3BsYXlPbkFsbFBhZ2VzOiEwLHBhZ2VMaXN0VG9TaG93OltdLHBhZ2VMaXN0VG9IaWRlOltdLHN1YnNjcmlwdGlvbkNyZWF0ZWREYXRlOm51bGwsYnV0dG9uQ29sb3I6IiNGRjY1NTAiLGFwcGxlOiExLGFwcGxlTGFiZWw6IkFwcGxlIE1lc3NhZ2VzIixhcHBsZUNvbG9yOiIjMzNkOTRmIixhcHBsZUljb246ITEseW91dHViZTohMSx5b3V0dWJlTGFiZWw6IllvdXR1YmUiLHlvdXR1YmVDb2xvcjoiI2ZmMDAwMCIseW91dHViZUljb246ITEseW91dHViZVNob3dQb3B1cFBsYXRmb3JtOiJldmVyeXdoZXJlIixjYWxsOiExLGNhbGxMYWJlbDoiUGhvbmUiLGNhbGxDb2xvcjoiI2VjNTkyMyIsY2FsbEljb246ITEsY2FsbFFyQ29kZTohMSxjYWxsU2hvd1BvcHVwUGxhdGZvcm06ImRlc2t0b3AiLGNvbnRhY3Rmb3JtSG9zdDpudWxsLGNvbnRhY3Rmb3JtOiExLGNvbnRhY3Rmb3JtTGFiZWw6IkNvbnRhY3QgRm9ybSIsY29udGFjdGZvcm1Db2xvcjoiIzAwNjNmZiIsY29udGFjdGZvcm1JY29uOiExLGNvbnRhY3Rmb3JtUG9wdXBUaXRsZToiQ29udGFjdCBVcyIsY29udGFjdGZvcm1Qb3B1cExhbmc6ImVuIixkaXNjb3JkOiExLGRpc2NvcmRMYWJlbDoiRGlzY29yZCIsZGlzY29yZENvbG9yOiIjNTg2NUYyIixkaXNjb3JkSWNvbjohMSx0ZWFtczohMSx0ZWFtc0xhYmVsOiJUZWFtcyIsdGVhbXNDb2xvcjoiI2ZmZmZmZiIsdGVhbXNJY29uOiExLGVtYWlsOiExLGVtYWlsTGFiZWw6IkVtYWlsIixlbWFpbENvbG9yOiIjNjA2MDYwIixlbWFpbEljb246ITEsZmFjZWJvb2s6ITEsZmFjZWJvb2tMYWJlbDoiTWVzc2VuZ2VyIixmYWNlYm9va0NvbG9yOiIjMDA4NGZmIixmYWNlYm9va0ljb246ITEsZmFjZWJvb2tGcmFtZTpudWxsLGNhbGVuZGFySG9zdDpudWxsLGNhbGVuZGFyOiExLGNhbGVuZGFyTGFiZWw6IkFwcG9pbnRtZW50IixjYWxlbmRhckNvbG9yOiIjMDA2M2ZmIixjYWxlbmRhckljb246ITEsY2FsZW5kYXJDdXN0b21NZXNzYWdlOiJNYWtlIGFuIGFwcG9pbnRtZW50ISIsY2FsZW5kYXJOYW1lUGxhY2Vob2xkZXI6Ik5hbWUiLGNhbGVuZGFyUGhvbmVQbGFjZWhvbGRlcjoiUGhvbmUiLGNhbGVuZGFyRW1haWxQbGFjZWhvbGRlcjoiRW1haWwiLGNhbGVuZGFyTWVzc2FnZVBsYWNlaG9sZGVyOiJNZXNzYWdlIixjYWxlbmRhclNlbmRCdXR0b25UZXh0OiJTRU5EIixnb29nbGVtYXA6ITEsZ29vZ2xlbWFwTGFiZWw6Ikdvb2dsZSBNYXBzIixnb29nbGVtYXBDdXN0b21NZXNzYWdlOiExLGdvb2dsZW1hcENvbG9yOiIjZjNmM2YzIixnb29nbGVtYXBJY29uOiExLGdvb2dsZW1hcFNob3dQb3B1cFBsYXRmb3JtOiJub3doZXJlIixpbnN0YWdyYW06ITEsaW5zdGFncmFtTGFiZWw6Ikluc3RhZ3JhbSIsaW5zdGFncmFtQ29sb3I6IiNGNzc3MzciLGluc3RhZ3JhbUljb246ITEsbGluZTohMSxsaW5lTGFiZWw6IkxpbmUiLGxpbmVDb2xvcjoiIzAwYzMwMCIsbGluZUljb246ITEsbGluZVNob3dQb3B1cFBsYXRmb3JtOiJkZXNrdG9wIixsaW5rOiExLGxpbmtMYWJlbDoiTGluayIsbGlua0NvbG9yOiIjMWY4OGU1IixsaW5rSWNvbjohMSxsaW5rZWRpbjohMSxsaW5rZWRpbkxhYmVsOiJMaW5rZWRJbiIsbGlua2VkaW5Db2xvcjoiIzAwN2ViYiIsbGlua2VkaW5JY29uOiExLHNreXBlOiExLHNreXBlTGFiZWw6IlNreXBlIixza3lwZUNvbG9yOiIjMDBhZmYwIixza3lwZUljb246ITEsc2xhY2s6ITEsc2xhY2tMYWJlbDoiU2xhY2siLHNsYWNrQ29sb3I6IiNmZmZmZmYiLHNsYWNrSWNvbjohMSxzbXM6ITEsc21zTGFiZWw6IlNNUyIsc21zQ29sb3I6IiMxZWNlYTgiLHNtc0ljb246ITEsc21zU2hvd1BvcHVwUGxhdGZvcm06ImRlc2t0b3AiLHNuYXBjaGF0OiExLHNuYXBjaGF0TGFiZWw6IlNuYXBjaGF0IixzbmFwY2hhdENvbG9yOiIjRkZFQTAwIixzbmFwY2hhdEljb246ITEsc25hcGNoYXRTaG93UG9wdXBQbGF0Zm9ybToiZGVza3RvcCIsdGVsZWdyYW06ITEsdGVsZWdyYW1MYWJlbDoiVGVsZWdyYW0iLHRlbGVncmFtQ29sb3I6IiMwMDg3Y2IiLHRlbGVncmFtSWNvbjohMSx0aWt0b2s6ITEsdGlrdG9rTGFiZWw6IlRpa1RvayIsdGlrdG9rQ29sb3I6IiMwMDAwMDAiLHRpa3Rva0ljb246ITEsdHdpdHRlcjohMSx0d2l0dGVyTGFiZWw6IlguY29tIix0d2l0dGVyQ29sb3I6IiMwMDAwMDAiLHR3aXR0ZXJJY29uOiExLHZpYmVyOiExLHZpYmVyTGFiZWw6IlZpYmVyIix2aWJlckNvbG9yOiIjN2I1MTlkIix2aWJlckljb246ITEsdmliZXJTaG93UG9wdXBQbGF0Zm9ybToiZGVza3RvcCIsdmtvbnRha3RlOiExLHZrb250YWt0ZUxhYmVsOiJWa29udGFrdGUiLHZrb250YWt0ZUNvbG9yOiIjNjM4M2E4Iix2a29udGFrdGVJY29uOiExLGNhbGxiYWNrSG9zdDpudWxsLGNhbGxiYWNrOiExLGNhbGxiYWNrTGFiZWw6IkNhbGxiYWNrIixjYWxsYmFja0NvbG9yOiIjMDA2M2ZmIixjYWxsYmFja0ljb246ITEsY2FsbGJhY2tDdXN0b21NZXNzYWdlOiJXZSB3aWxsIGNhbGwgeW91IGJhY2sgaW4gNSBtaW5zISIsY2FsbGJhY2tOYW1lUGxhY2Vob2xkZXI6Ik5hbWUiLGNhbGxiYWNrUGhvbmVQbGFjZWhvbGRlcjoiUGhvbmUiLGNhbGxiYWNrU2VuZEJ1dHRvblRleHQ6IkNhbGwgbWUiLHdhemU6ITEsd2F6ZUxhYmVsOiJXYXplIix3YXplQ29sb3I6IiMzMmNjZmYiLHdhemVJY29uOiExLHdlY2hhdDohMSx3ZWNoYXRMYWJlbDoiV2VDaGF0Iix3ZWNoYXRDb2xvcjoiIzJkYzEwMCIsd2VjaGF0SWNvbjohMSx3ZWNoYXRTaG93UG9wdXBQbGF0Zm9ybToiZGVza3RvcCIsd2hhdHNhcHBMYWJlbDoiV2hhdHNBcHAiLHdoYXRzYXBwQ29sb3I6IiM0ZGMyNDciLHdoYXRzYXBwSWNvbjohMSx3aGF0c2FwcFNob3dQb3B1cDohMSx3aGF0c2FwcFBvcHVwVGl0bGU6ITEsd2hhdHNhcHBQb3B1cFN1YnRpdGxlOiExLHdoYXRzYXBwOiExLHdoYXRzYXBwQWdlbnROdW1iZXIyOiExLHdoYXRzYXBwQWdlbnROdW1iZXIzOiExLHdoYXRzYXBwQWdlbnROdW1iZXI0OiExLHdoYXRzYXBwQWdlbnROdW1iZXI1OiExLHdoYXRzYXBwQWdlbnROYW1lMToiQWdlbnQgbmFtZSIsd2hhdHNhcHBBZ2VudE5hbWUyOiJBZ2VudCBuYW1lIix3aGF0c2FwcEFnZW50TmFtZTM6IkFnZW50IG5hbWUiLHdoYXRzYXBwQWdlbnROYW1lNDoiQWdlbnQgbmFtZSIsd2hhdHNhcHBBZ2VudE5hbWU1OiJBZ2VudCBuYW1lIix3aGF0c2FwcEFnZW50UG9zaXRpb24xOiJBZ2VudCBwb3NpdGlvbiIsd2hhdHNhcHBBZ2VudFBvc2l0aW9uMjoiQWdlbnQgcG9zaXRpb24iLHdoYXRzYXBwQWdlbnRQb3NpdGlvbjM6IkFnZW50IHBvc2l0aW9uIix3aGF0c2FwcEFnZW50UG9zaXRpb240OiJBZ2VudCBwb3NpdGlvbiIsd2hhdHNhcHBBZ2VudFBvc2l0aW9uNToiQWdlbnQgcG9zaXRpb24iLHByZUZpbGxlZE1lc3NhZ2U6ITEsd2hhdHNhcHBQcmVGaWxsZWRNZXNzYWdlMjohMSx3aGF0c2FwcFByZUZpbGxlZE1lc3NhZ2UzOiExLHdoYXRzYXBwUHJlRmlsbGVkTWVzc2FnZTQ6ITEsd2hhdHNhcHBQcmVGaWxsZWRNZXNzYWdlNTohMSx3aGF0c2FwcEFnZW50SW1hZ2UxOiExLHdoYXRzYXBwQWdlbnRJbWFnZTI6ITEsd2hhdHNhcHBBZ2VudEltYWdlMzohMSx3aGF0c2FwcEFnZW50SW1hZ2U0OiExLHdoYXRzYXBwQWdlbnRJbWFnZTU6ITEsd29uZGVyY2hhdDohMSx3b25kZXJjaGF0TGFiZWw6IkFJIGFzc2lzdGFudCIsd29uZGVyY2hhdENvbG9yOiIjNjIzMmViIix3b25kZXJjaGF0SWNvbjohMSxhaTohMSxhaUxhYmVsOiJBSSBjaGF0Ym90IixhaUNvbG9yOiIjMTI5YmYzIixhaUljb246ITEsYWlBdXRvb3BlbjpudWxsLGtha2FvdGFsazohMSxrYWthb3RhbGtMYWJlbDoiS2FrYW9UYWxrIixrYWthb3RhbGtDb2xvcjoiI2YyZGMwMCIsa2FrYW90YWxrSWNvbjohMX0sYz1mdW5jdGlvbihyKXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbz1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9fKE9iamVjdChvKSwhMCkuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdCxuO3Q9cixuPW9bZT1lXSwoZT1mdW5jdGlvbihlKXtlPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1pKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwPT09bilyZXR1cm4oInN0cmluZyI9PT10P1N0cmluZzpOdW1iZXIpKGUpO249bi5jYWxsKGUsdHx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWkobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX0oZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1pKGUpP2U6U3RyaW5nKGUpfShlKSlpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW59KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG8pKTpfKE9iamVjdChvKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkocixlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobyxlKSl9KX1yZXR1cm4gcn0oe30sbCk7ZnVuY3Rpb24gdShlKXtyZXR1cm4odT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIHoodCxlKXt2YXIgbixyPU9iamVjdC5rZXlzKHQpO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYobj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpLGUmJihuPW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSxyLnB1c2guYXBwbHkocixuKSkscn1mdW5jdGlvbiByKHIpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBvPW51bGwhPWFyZ3VtZW50c1tlXT9hcmd1bWVudHNbZV06e307ZSUyP3ooT2JqZWN0KG8pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0LG47dD1yLG49b1tlPWVdLChlPWZ1bmN0aW9uKGUpe2U9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PXUoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDA9PT1uKXJldHVybigic3RyaW5nIj09PXQ/U3RyaW5nOk51bWJlcikoZSk7bj1uLmNhbGwoZSx0fHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09dShuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfShlLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXUoZSk/ZTpTdHJpbmcoZSl9KGUpKWluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bn0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOnooT2JqZWN0KG8pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLGUpKX0pfXJldHVybiByfXZhciBUPXtidXR0b25zOiExLGdyZWV0aW5nTWVzc2FnZTohMCxjYWxsVG9BY3Rpb246ITEsYnV0dG9uUG9wdXA6ITF9LEw9ImFjdGl2YXRvcl9jbGlja2VkIixNPSJhY3RpdmF0b3Jfb3ZlciIsUj0iZ3JlZXRpbmdfbWVzc2FnZV9jbG9zZWQiLHE9ImdyZWV0aW5nX21lc3NhZ2Vfb3BlbmVkIixaPSJidXR0b25fY2xpY2tlZCIsWD0ic2hvd19idXR0b25fcG9wdXAiLHM9e0FDVElWQVRPUl9DTElDS0VEOkwsQUNUSVZBVE9SX09WRVI6TSxHUkVFVElOR19NRVNTQUdFX0NMT1NFRDpSLEdSRUVUSU5HX01FU1NBR0VfT1BFTkVEOnEsQlVUVE9OX0NMSUNLRUQ6Wn07ZnVuY3Rpb24gWShlLHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgTDpyZXR1cm4gcihyKHIoe30sZSksdC5wYXlsb2FkKSx7fSx7YnV0dG9uczohZS5idXR0b25zLGNhbGxUb0FjdGlvbjplLmJ1dHRvbnN9KTtjYXNlIE06Y2FzZSBaOmNhc2UgWDpjYXNlIFI6Y2FzZSBxOnJldHVybiByKHIoe30sZSksdC5wYXlsb2FkKTtkZWZhdWx0OnJldHVybiBlfX1mdW5jdGlvbiBRKCl7Qi53aGF0c2FwcC5zaG93UG9wdXA9Yy53aGF0c2FwcFNob3dQb3B1cCxCLnlvdXR1YmUuc2hvd1BvcHVwPWYoYy55b3V0dWJlU2hvd1BvcHVwUGxhdGZvcm0pLEIuY2FsbC5zaG93UG9wdXA9ZihjLmNhbGxTaG93UG9wdXBQbGF0Zm9ybSksQi5zbXMuc2hvd1BvcHVwPWYoYy5zbXNTaG93UG9wdXBQbGF0Zm9ybSksQi5saW5lLnNob3dQb3B1cD1mKGMubGluZVNob3dQb3B1cFBsYXRmb3JtKSxCLnNuYXBjaGF0LnNob3dQb3B1cD1mKGMuc25hcGNoYXRTaG93UG9wdXBQbGF0Zm9ybSksQi52aWJlci5zaG93UG9wdXA9ZihjLnZpYmVyU2hvd1BvcHVwUGxhdGZvcm0pLEIud2VjaGF0LnNob3dQb3B1cD1mKGMud2VjaGF0U2hvd1BvcHVwUGxhdGZvcm0pLEIuZ29vZ2xlbWFwLnNob3dQb3B1cD1mKGMuZ29vZ2xlbWFwU2hvd1BvcHVwUGxhdGZvcm0pO3ZhciB0PVtdO3JldHVybiBKLm1hcChmdW5jdGlvbihlKXtCW2VdLnNob3dQb3B1cCYmdC5wdXNoKGUpfSksdH12YXIgSz1VKCkmJi0xPT09WyJmaXJlZm94IiwiZWRnIiwic2FmYXJpIl0uaW5kZXhPZihmdW5jdGlvbigpe2Zvcih2YXIgZT1vKCkudG9Mb3dlckNhc2UoKSx0PTAsbj1bImZpcmVmb3giLCJ0cmlkZW50IiwiZWRnZSIsImVkZyIsIm9wZXJhIiwiY2hyb21lIiwic2FmYXJpIl07dDxuLmxlbmd0aDt0Kyspe3ZhciByPW5bdF07aWYoLTE8ZS5pbmRleE9mKHIpKXJldHVybiByfX0oKSksZj1mdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSJldmVyeXdoZXJlIjpyZXR1cm4hMDtjYXNlImRlc2t0b3AiOnJldHVybiBVKCk7Y2FzZSJtb2JpbGUiOnJldHVybiFVKCk7ZGVmYXVsdDpyZXR1cm4hMX19LEI9e2FjdGl2YXRvcjp7Y29sb3I6Yy5idXR0b25Db2xvcixzaG93UG9wdXA6ITEsdGl0bGU6bnVsbCxvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LGFwcGxlOntjb2xvcjpjLmFwcGxlQ29sb3Isc2hvd1BvcHVwOiFhKCkmJiF2KCksdGl0bGU6Yy5hcHBsZUxhYmVsLGJ1dHRvbklkOiJnZXRidXR0b24tYXBwbGUiLG9uRGVza3RvcDohMCxvbk1vYmlsZTohMCxvblRhYmxldDohMH0seW91dHViZTp7Y29sb3I6Yy55b3V0dWJlQ29sb3Isc2hvd1BvcHVwOiEwLHRpdGxlOmMueW91dHViZUxhYmVsLGJ1dHRvbklkOiJnZXRidXR0b24teW91dHViZSIsb25EZXNrdG9wOiEwLG9uTW9iaWxlOiEwLG9uVGFibGV0OiEwfSxjYWxsOntjb2xvcjpjLmNhbGxDb2xvcixzaG93UG9wdXA6VSgpLGNhbGxRckNvZGU6ITAsdGl0bGU6Yy5jYWxsTGFiZWwsYnV0dG9uSWQ6ImdldGJ1dHRvbi1jYWxsIixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LGNvbnRhY3Rmb3JtOntob3N0OmMuY29udGFjdGZvcm1Ib3N0LGNvbG9yOmMuY29udGFjdGZvcm1Db2xvcixzaG93UG9wdXA6ITAsdGl0bGU6Yy5jb250YWN0Zm9ybUxhYmVsLGJ1dHRvbklkOiJnZXRidXR0b24tY29udGFjdGZvcm0iLG9uRGVza3RvcDohMCxvbk1vYmlsZTohMCxvblRhYmxldDohMH0sY2FsZW5kYXI6e2hvc3Q6Yy5jYWxlbmRhckhvc3QsY29sb3I6Yy5jYWxlbmRhckNvbG9yLHNob3dQb3B1cDohMCx0aXRsZTpjLmNhbGVuZGFyTGFiZWwsYnV0dG9uSWQ6ImdldGJ1dHRvbi1jYWxlbmRhciIsb25EZXNrdG9wOiEwLG9uTW9iaWxlOiEwLG9uVGFibGV0OiEwfSxkaXNjb3JkOntjb2xvcjpjLmRpc2NvcmRDb2xvcixzaG93UG9wdXA6ITEsdGl0bGU6Yy5kaXNjb3JkTGFiZWwsYnV0dG9uSWQ6ImdldGJ1dHRvbi1kaXNjb3JkIixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LHRlYW1zOntjb2xvcjpjLnRlYW1zQ29sb3Isc2hvd1BvcHVwOiExLHRpdGxlOmMudGVhbXNMYWJlbCxidXR0b25JZDoiZ2V0YnV0dG9uLXRlYW1zIixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LGVtYWlsOntjb2xvcjpjLmVtYWlsQ29sb3Isc2hvd1BvcHVwOiExLHRpdGxlOmMuZW1haWxMYWJlbCxidXR0b25JZDoiZ2V0YnV0dG9uLWVtYWlsIixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LGZhY2Vib29rOntjb2xvcjpjLmZhY2Vib29rQ29sb3Isc2hvd1BvcHVwOkssdGl0bGU6Yy5mYWNlYm9va0xhYmVsLGJ1dHRvbklkOiJnZXRidXR0b24tZmFjZWJvb2siLG9uRGVza3RvcDohMCxvbk1vYmlsZTohMCxvblRhYmxldDohMH0sZ29vZ2xlbWFwOntjb2xvcjpjLmdvb2dsZW1hcENvbG9yLHRpdGxlOmMuZ29vZ2xlbWFwTGFiZWwsc2hvd1BvcHVwOiExLGJ1dHRvbklkOiJnZXRidXR0b24tZ29vZ2xlbWFwIixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LGluc3RhZ3JhbTp7Y29sb3I6Yy5pbnN0YWdyYW1Db2xvcixzaG93UG9wdXA6ITEsdGl0bGU6Yy5pbnN0YWdyYW1MYWJlbCxidXR0b25JZDoiZ2V0YnV0dG9uLWluc3RhZ3JhbSIsb25EZXNrdG9wOiEwLG9uTW9iaWxlOiEwLG9uVGFibGV0OiEwfSxsaW5lOntjb2xvcjpjLmxpbmVDb2xvcixzaG93UG9wdXA6VSgpLHRpdGxlOmMubGluZUxhYmVsLGJ1dHRvbklkOiJnZXRidXR0b24tbGluZSIsb25EZXNrdG9wOiEwLG9uTW9iaWxlOiEwLG9uVGFibGV0OiEwfSxsaW5rOntjb2xvcjpjLmxpbmtDb2xvcixzaG93UG9wdXA6ITEsdGl0bGU6Yy5saW5rTGFiZWwsYnV0dG9uSWQ6ImdldGJ1dHRvbi1saW5rIixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LGxpbmtlZGluOntjb2xvcjpjLmxpbmtlZGluQ29sb3IsdGl0bGU6Yy5saW5rZWRpbkxhYmVsLGJ1dHRvbklkOiJnZXRidXR0b24tbGlua2VkaW4iLG9uRGVza3RvcDohMCxvbk1vYmlsZTohMCxvblRhYmxldDohMH0sc2t5cGU6e2NvbG9yOmMuc2t5cGVDb2xvcix0aXRsZTpjLnNreXBlTGFiZWwsYnV0dG9uSWQ6ImdldGJ1dHRvbi1za3lwZSIsb25EZXNrdG9wOiEwLG9uTW9iaWxlOiEwLG9uVGFibGV0OiEwfSxzbGFjazp7Y29sb3I6Yy5zbGFja0NvbG9yLHRpdGxlOmMuc2xhY2tMYWJlbCxidXR0b25JZDoiZ2V0YnV0dG9uLXNsYWNrIixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LHNtczp7Y29sb3I6Yy5zbXNDb2xvcixzaG93UG9wdXA6VSgpLHRpdGxlOmMuc21zTGFiZWwsYnV0dG9uSWQ6ImdldGJ1dHRvbi1zbXMiLG9uRGVza3RvcDohMCxvbk1vYmlsZTohMCxvblRhYmxldDohMX0sc25hcGNoYXQ6e2NvbG9yOmMuc25hcGNoYXRDb2xvcixzaG93UG9wdXA6VSgpLHRpdGxlOmMuc25hcGNoYXRMYWJlbCxidXR0b25JZDoiZ2V0YnV0dG9uLXNuYXBjaGF0IixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LHRlbGVncmFtOntjb2xvcjpjLnRlbGVncmFtQ29sb3Isc2hvd1BvcHVwOiExLHRpdGxlOmMudGVsZWdyYW1MYWJlbCxidXR0b25JZDoiZ2V0YnV0dG9uLXRlbGVncmFtIixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LHRpa3Rvazp7Y29sb3I6Yy50aWt0b2tDb2xvcix0aXRsZTpjLnRpa3Rva0xhYmVsLGJ1dHRvbklkOiJnZXRidXR0b24tdGlrdG9rIixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LHR3aXR0ZXI6e2NvbG9yOmMudHdpdHRlckNvbG9yLHRpdGxlOmMudHdpdHRlckxhYmVsLGJ1dHRvbklkOiJnZXRidXR0b24tdHdpdHRlciIsb25EZXNrdG9wOiEwLG9uTW9iaWxlOiEwLG9uVGFibGV0OiEwfSx2aWJlcjp7Y29sb3I6Yy52aWJlckNvbG9yLHNob3dQb3B1cDpVKCksdGl0bGU6Yy52aWJlckxhYmVsLGJ1dHRvbklkOiJnZXRidXR0b24tdmliZXIiLG9uRGVza3RvcDohMCxvbk1vYmlsZTohMCxvblRhYmxldDohMH0sY2FsbGJhY2s6e2hvc3Q6Yy5jYWxsYmFja0hvc3QsY29sb3I6Yy5jYWxsYmFja0NvbG9yLHNob3dQb3B1cDohMCx0aXRsZTpjLmNhbGxiYWNrTGFiZWwsYnV0dG9uSWQ6ImdldGJ1dHRvbi1jYWxsYmFjayIsb25EZXNrdG9wOiEwLG9uTW9iaWxlOiEwLG9uVGFibGV0OiEwfSx2a29udGFrdGU6e2NvbG9yOmMudmtvbnRha3RlQ29sb3Isc2hvd1BvcHVwOiExLHRpdGxlOmMudmtvbnRha3RlTGFiZWwsYnV0dG9uSWQ6ImdldGJ1dHRvbi12a29udGFrdGUiLG9uRGVza3RvcDohMCxvbk1vYmlsZTohMCxvblRhYmxldDohMH0sd2F6ZTp7Y29sb3I6Yy53YXplQ29sb3IsdGl0bGU6Yy53YXplTGFiZWwsYnV0dG9uSWQ6ImdldGJ1dHRvbi13YXplIixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LHdlY2hhdDp7Y29sb3I6Yy53ZWNoYXRDb2xvcix0aXRsZTpjLndlY2hhdExhYmVsLHNob3dQb3B1cDpVKCksYnV0dG9uSWQ6ImdldGJ1dHRvbi13ZWNoYXQiLG9uRGVza3RvcDohMCxvbk1vYmlsZTohMCxvblRhYmxldDohMH0sd2hhdHNhcHA6e2NvbG9yOmMud2hhdHNhcHBDb2xvcixzaG93UG9wdXA6Yy53aGF0c2FwcFNob3dQb3B1cCx0aXRsZTpjLndoYXRzYXBwTGFiZWwsYnV0dG9uSWQ6ImdldGJ1dHRvbi13aGF0c2FwcCIsb25EZXNrdG9wOiEwLG9uTW9iaWxlOiEwLG9uVGFibGV0OiEwfSx3b25kZXJjaGF0Ontjb2xvcjpjLndvbmRlcmNoYXRDb2xvcixzaG93UG9wdXA6ITAsdGl0bGU6Yy53b25kZXJjaGF0TGFiZWwsYnV0dG9uSWQ6ImdldGJ1dHRvbi13b25kZXJjaGF0IixvbkRlc2t0b3A6ITAsb25Nb2JpbGU6ITAsb25UYWJsZXQ6ITB9LGFpOntjb2xvcjpjLmFpQ29sb3Isc2hvd1BvcHVwOiEwLHRpdGxlOmMuYWlMYWJlbCxidXR0b25JZDoiYWkiLG9uRGVza3RvcDohMCxvbk1vYmlsZTohMCxvblRhYmxldDohMH0sa2FrYW90YWxrOntjb2xvcjpjLmtha2FvdGFsa0NvbG9yLHNob3dQb3B1cDohMSx0aXRsZTpjLmtha2FvdGFsa0xhYmVsLGJ1dHRvbklkOiJnZXRidXR0b24ta2FrYW90YWxrdCIsb25EZXNrdG9wOiEwLG9uTW9iaWxlOiEwLG9uVGFibGV0OiEwfX0sSj1PYmplY3Qua2V5cyhCKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIEJbZV0ub25EZXNrdG9wJiZVKCl8fEJbZV0ub25Nb2JpbGUmJiFVKCl9KTtmdW5jdGlvbiBkKGUpe3JldHVybihkPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gZWUodCxlKXt2YXIgbixyPU9iamVjdC5rZXlzKHQpO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYobj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpLGUmJihuPW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSxyLnB1c2guYXBwbHkocixuKSkscn1mdW5jdGlvbiB0ZSh0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9lZShPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24oZSl7bmUodCxlLG5bZV0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZWUoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pfXJldHVybiB0fWZ1bmN0aW9uIG5lKGUsdCxuKXtyZXR1cm4odD1mdW5jdGlvbihlKXtlPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1kKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwPT09bilyZXR1cm4oInN0cmluZyI9PT10P1N0cmluZzpOdW1iZXIpKGUpO249bi5jYWxsKGUsdHx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWQobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX0oZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1kKGUpP2U6U3RyaW5nKGUpfSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiByZShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8sYSxpLGw9W10sYz0hMCx1PSExO3RyeXtpZihhPShuPW4uY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPWEuY2FsbChuKSkuZG9uZSkmJihsLnB1c2goci52YWx1ZSksbC5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxvPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPW4ucmV0dXJuJiYoaT1uLnJldHVybigpLE9iamVjdChpKSE9PWkpKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgb319cmV0dXJuIGx9fShlLHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuO2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP29lKGUsdCk6Ik1hcCI9PT0obj0iT2JqZWN0Ij09PShuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOm4pfHwiU2V0Ij09PW4/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP29lKGUsdCk6dm9pZCAwfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gb2UoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgYWU9ZnVuY3Rpb24oKXt2YXIgZT1yZShPYmplY3QoRi51c2VTdGF0ZSkoYyksMiksdD1lWzBdLHI9ZVsxXTtyZXR1cm4gT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9KGU9ZS5kZXRhaWwpLmtleSxuPWUudmFsdWU7cihmdW5jdGlvbihlKXtyZXR1cm4gdGUodGUoe30sZSkse30sbmUoe30sZmUodCksbikpfSl9cmV0dXJuImFkbWluLmdldGJ1dHRvbi5pbywgbmV4dC5nZXRidXR0b24uaW8sIDEyNy4wLjAuMSwgbG9jYWxob3N0LCB0ZXN0LmdldGJ1dHRvbi5pbywgZGV2LmdldGJ1dHRvbi5pbywgZ2V0YnV0dG9uLmlvLCBhZG1pbi5zaG9waWZ5LmNvbSIuaW5jbHVkZXMobG9jYXRpb24uaG9zdG5hbWUpJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZXR0aW5nVXBkYXRlZCIsZSksZnVuY3Rpb24oKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZXR0aW5nVXBkYXRlZCIsZSl9fSxbY10pLHR9O2Z1bmN0aW9uIGllKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9bil7dmFyIHIsbyxhLGksbD1bXSxjPSEwLHU9ITE7dHJ5e2lmKGE9KG49bi5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QobikhPT1uKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KHI9YS5jYWxsKG4pKS5kb25lKSYmKGwucHVzaChyLnZhbHVlKSxsLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLG89ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9bi5yZXR1cm4mJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gbH19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/bGUoZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/bGUoZSx0KTp2b2lkIDB9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBsZShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBjZT1ILmEuY3JlYXRlQ29udGV4dChudWxsKTtmdW5jdGlvbiB1ZShlKXt2YXIgZT1lLmNoaWxkcmVuLHQ9aWUoT2JqZWN0KEYudXNlUmVkdWNlcikoWSxUKSwyKSxuPXRbMF0scj10WzFdLHQ9e3RvZ2dsZUJ1dHRvbnM6ZnVuY3Rpb24oKXtyKHt0eXBlOnMuQUNUSVZBVE9SX0NMSUNLRUQscGF5bG9hZDp7YnV0dG9uUG9wdXA6ITEsZ3JlZXRpbmdNZXNzYWdlOiExfX0pfSxzaG93QnV0dG9uczpmdW5jdGlvbigpe3Ioe3R5cGU6cy5BQ1RJVkFUT1JfT1ZFUixwYXlsb2FkOntidXR0b25zOiEwLGJ1dHRvblBvcHVwOiExLGdyZWV0aW5nTWVzc2FnZTohMSxjYWxsVG9BY3Rpb246ITF9fSl9LGNsb3NlR3JlZXRpbmdNZXNzYWdlOmZ1bmN0aW9uKCl7cih7dHlwZTpzLkdSRUVUSU5HX01FU1NBR0VfQ0xPU0VELHBheWxvYWQ6e2dyZWV0aW5nTWVzc2FnZTohMSxidXR0b25Qb3B1cDohMSxjYWxsVG9BY3Rpb246ITB9fSl9LG9wZW5HcmVldGluZ01lc3NhZ2U6ZnVuY3Rpb24oKXtyKHt0eXBlOnMuR1JFRVRJTkdfTUVTU0FHRV9PUEVORUQscGF5bG9hZDp7Z3JlZXRpbmdNZXNzYWdlOiEwLGNhbGxUb0FjdGlvbjohMX19KX0sYnV0dG9uQ2xpY2tlZDpmdW5jdGlvbigpe3Ioe3R5cGU6cy5CVVRUT05fQ0xJQ0tFRCxwYXlsb2FkOntidXR0b25zOiExLGdyZWV0aW5nTWVzc2FnZTohMSxjYWxsVG9BY3Rpb246ITAsYnV0dG9uUG9wdXA6ITB9fSl9LHNob3dCdXR0b25Qb3B1cDpmdW5jdGlvbigpe3IoZnVuY3Rpb24oZSl7cmV0dXJuIGU9MDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1lP2U6IiIsZT0tMSE9PVEoKS5pbmRleE9mKGUpJiZlLHt0eXBlOnMuQlVUVE9OX0NMSUNLRUQscGF5bG9hZDp7YnV0dG9uczohMSxidXR0b25Qb3B1cDplLGdyZWV0aW5nTWVzc2FnZTohMSxjYWxsVG9BY3Rpb246ITE9PT1lfX19KDA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiIikpfSxjbG9zZUJ1dHRvblBvcHVwOmZ1bmN0aW9uKCl7cih7dHlwZTpzLkJVVFRPTl9DTElDS0VELHBheWxvYWQ6e2J1dHRvbnM6ITEsYnV0dG9uUG9wdXA6ITEsZ3JlZXRpbmdNZXNzYWdlOiExLGNhbGxUb0FjdGlvbjohMCxjYWxsVG9BY3Rpb25UaW1lcjohMH19KX19LG89YWUoKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQoY2UuUHJvdmlkZXIse3ZhbHVlOntzdGF0ZTpuLGFjdGlvbnM6dCxzZXR0aW5nczpvfX0sZSl9Y2UuQ29uc3VtZXI7ZnVuY3Rpb24gc2UoZSl7dmFyIHQ9ZS5jaGlsZHJlbixlPWUudGhlbWU7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KEMuYSx7dGhlbWU6ZGVbZV19LHQpfWZ1bmN0aW9uIGZlKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbLV9dW2EtejAtOV0pL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9VcHBlckNhc2UoKS5yZXBsYWNlKCItIiwiIikucmVwbGFjZSgiXyIsIiIpfSl9dmFyIFY9Y2UsQz10KDEpLGRlPXtsZWZ0Ontwb3NpdGlvbjoibGVmdCIsYnV0dG9uc09yZGVyOjEscG9wdXBzT3JkZXI6Mixjb250YWluZXJEaXJlY3Rpb246ImZsZXgtc3RhcnQiLGNhbGxUb0FjdGlvbk1hcmdpbjoiYXV0byBhdXRvIGF1dG8gMzFweCIsZ3JlZXRpbmdNYXJnaW46IjIxcHggMjBweCAwIDAifSxyaWdodDp7cG9zaXRpb246InJpZ2h0IixidXR0b25zT3JkZXI6Mixwb3B1cHNPcmRlcjoxLGNvbnRhaW5lckRpcmVjdGlvbjoiZmxleC1lbmQiLGNhbGxUb0FjdGlvbk1hcmdpbjoiYXV0byAzMXB4IGF1dG8gYXV0byIsZ3JlZXRpbmdNYXJnaW46IjIxcHggMCAwIDIwcHgifX0sJD1mdW5jdGlvbihlKXtyZXR1cm4gSC5hLnVzZUNhbGxiYWNrKGZ1bmN0aW9uKGUpe3JldHVybiA0MDxlPzI6MzA8ZT8wOjIwPGU/LTE6MTA8ZT8tMjotNH0sW10pKGUpfSxwZT1mdW5jdGlvbihlLHQpe3JldHVybiBILmEudXNlQ2FsbGJhY2soZnVuY3Rpb24oZSx0KXt2YXIgbj0oZT1lKT97cjpwYXJzZUludChlLnN1YnN0cmluZygxLDMpLDE2KSxnOnBhcnNlSW50KGUuc3Vic3RyaW5nKDMsNSksMTYpLGI6cGFyc2VJbnQoZS5zdWJzdHJpbmcoNSw3KSwxNil9Om51bGw7aWYoIW4pcmV0dXJuIG51bGw7Zm9yKHZhciByPSgyNTUtbi5yKS8odC0yKSxvPSgyNTUtbi5nKS8odCsxKSxhPSgyNTUtbi5iKS8odCs1KSxpPVtdLGw9MDtsPD10O2wrKyl7dmFyIGM9TWF0aC5yb3VuZChuLnIrcipsKSx1PU1hdGgucm91bmQobi5nK28qbCkscz1NYXRoLnJvdW5kKG4uYithKmwpLGM9KHU9dSxzPXMsIm51bWJlciIhPXR5cGVvZihjPWMpfHwibnVtYmVyIiE9dHlwZW9mIHV8fCJudW1iZXIiIT10eXBlb2Ygcz9udWxsOiIjIitjLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikrdS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpK3MudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSk7YyYmaS5wdXNoKGMpfXJldHVybiBpLnNwbGljZSgtMyksaX0sW10pKGUsdCl9O2Z1bmN0aW9uIG1lKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9bil7dmFyIHIsbyxhLGksbD1bXSxjPSEwLHU9ITE7dHJ5e2lmKGE9KG49bi5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QobikhPT1uKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KHI9YS5jYWxsKG4pKS5kb25lKSYmKGwucHVzaChyLnZhbHVlKSxsLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLG89ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9bi5yZXR1cm4mJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gbH19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/aGUoZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/aGUoZSx0KTp2b2lkIDB9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBoZShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIGdlKG8pe3ZhciBlPW1lKEguYS51c2VTdGF0ZSghMSksMiksdD1lWzBdLGE9ZVsxXTtyZXR1cm4gSC5hLnVzZUVmZmVjdChmdW5jdGlvbigpe2Z1bmN0aW9uIHQobil7dmFyIHI9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpe3ImJnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0KCl9LHIpO3ZhciBlPW5ldyBJbWFnZTtlLnNyYz1uLGUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZnVuY3Rpb24oZSl7dCgpfSl9KX12YXIgbj1vJiY1MDA8PW8/by01MDA6bnVsbCxlPVtjLmJ1dHRvbkltYWdlVXJsLGMuY29tcGFueUxvZ29VcmxdLHI9W2MuY2FsbEljb24sYy5lbWFpbEljb24sYy5mYWNlYm9va0ljb24sYy5pbnN0YWdyYW1JY29uLGMubGlua0ljb24sYy5saW5lSWNvbixjLnNtc0ljb24sYy5zbmFwY2hhdEljb24sYy50ZWxlZ3JhbUljb24sYy52aWJlckljb24sYy52a29udGFrdGVJY29uLGMud2hhdHNhcHBJY29uLGMuYWlJY29uXSxlPWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0KGUsNTAwKX0pO1Byb21pc2UuYWxsKGUpLnRoZW4oZnVuY3Rpb24oKXt2YXIgZT1yLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdChlLG4pfSk7UHJvbWlzZS5hbGwoZSkudGhlbihmdW5jdGlvbigpe2EoITApfSl9KX0sW10pLHR9dmFyIFc9ZnVuY3Rpb24oZSl7aWYoImFkbWluLmdldGJ1dHRvbi5pbywgbmV4dC5nZXRidXR0b24uaW8sIDEyNy4wLjAuMSwgbG9jYWxob3N0LCB0ZXN0LmdldGJ1dHRvbi5pbywgZGV2LmdldGJ1dHRvbi5pbywgZ2V0YnV0dG9uLmlvLCBhZG1pbi5zaG9waWZ5LmNvbSIuaW5jbHVkZXMobG9jYXRpb24uaG9zdG5hbWUpKXJldHVybiBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZWxlbWVudEFwcGVhcmVkIix7ZGV0YWlsOnt3aWRnZXRXaWR0aDplfX0pKX07ZnVuY3Rpb24gYmUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1uKXt2YXIgcixvLGEsaSxsPVtdLGM9ITAsdT0hMTt0cnl7aWYoYT0obj1uLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0ocj1hLmNhbGwobikpLmRvbmUpJiYobC5wdXNoKHIudmFsdWUpLGwubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsbz1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1uLnJldHVybiYmKGk9bi5yZXR1cm4oKSxPYmplY3QoaSkhPT1pKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IG99fXJldHVybiBsfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT95ZShlLHQpOiJNYXAiPT09KG49Ik9iamVjdCI9PT0obj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSkpJiZlLmNvbnN0cnVjdG9yP2UuY29uc3RydWN0b3IubmFtZTpuKXx8IlNldCI9PT1uP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT95ZShlLHQpOnZvaWQgMH0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHllKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdmUoKXt2YXIgZT1iZShPYmplY3QoRi51c2VTdGF0ZSkoe3dpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwfSksMiksdD1lWzBdLG49ZVsxXTtyZXR1cm4gT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtuKHt3aWR0aDp3aW5kb3cuaW5uZXJXaWR0aCxoZWlnaHQ6d2luZG93LmlubmVySGVpZ2h0fSl9cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGUpLGUoKSxmdW5jdGlvbigpe3JldHVybiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixlKX19LFtdKSx0fWZ1bmN0aW9uIHdlKGUpe3JldHVybih3ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIHhlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxmdW5jdGlvbihlKXtlPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT13ZShlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMD09PW4pcmV0dXJuKCJzdHJpbmciPT09dD9TdHJpbmc6TnVtYmVyKShlKTtuPW4uY2FsbChlLHR8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT13ZShuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfShlLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXdlKGUpP2U6U3RyaW5nKGUpfShyLmtleSkscil9fXZhciBrZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIgdCxuLHI7cmV0dXJuIHQ9ZSxyPVt7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwscj0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbCxvPTQ8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTpudWxsLGE9NTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0mJmFyZ3VtZW50c1s1XSxlPShlPWUrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0LnRvU3RyaW5nKCkpKyI7ICIpKygicGF0aD0iKyhyfHwiLyIpKyI7ICIpKyJzYW1lc2l0ZT1sYXg7ICI7biYmKCJzdHJpbmciPT10eXBlb2Ygbnx8biBpbnN0YW5jZW9mIFN0cmluZz9lKz0iZXhwaXJlcz0iK24rIjsgIjooKHQ9bmV3IERhdGUpLnNldFRpbWUodC5nZXRUaW1lKCkrMWUzKm4pLGUrPSJleHBpcmVzPSIrdC50b1VUQ1N0cmluZygpKyI7ICIpKSxvJiYoZSs9ImRvbWFpbj0iK28rIjsgIiksYSYmKGUrPSJzZWN1cmU7ICIpLGRvY3VtZW50LmNvb2tpZT1lfX0se2tleToiZ2V0Iix2YWx1ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZSsiPSIsbj1kb2N1bWVudC5jb29raWUuc3BsaXQoIjsiKSxyPTA7cjxuLmxlbmd0aDtyKyspe2Zvcih2YXIgbz1uW3JdOyIgIj09PW8uY2hhckF0KDApOylvPW8uc3Vic3RyaW5nKDEpO2lmKDA9PT1vLmluZGV4T2YodCkpcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChvLnN1YnN0cmluZyh0Lmxlbmd0aCxvLmxlbmd0aCkpfXJldHVybiBudWxsfX1dLChuPW51bGwpJiZ4ZSh0LnByb3RvdHlwZSxuKSxyJiZ4ZSh0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9KCksU2U9MTYsQ2U9MTQsRWU9ImdiLXdpZGdldC1jb29raWUiLE9lPSExO2Z1bmN0aW9uIGplKCl7Y29uc29sZS5sb2coInZhbGlkYXRpb24uLi4iLGcpO2Z1bmN0aW9uIG8oZSl7ZS5zdGFydHNXaXRoKCJ3d3cuIikmJihlPWUuc2xpY2UoNCkpO3ZhciB0PWxvY2F0aW9uLmhvc3RuYW1lLGU9ZS50b0xvd2VyQ2FzZSgpLG49dC5zbGljZSgwLC1lLmxlbmd0aCkscj10LmVuZHNXaXRoKGUpJiZbIiIsIi4iXS5pbmNsdWRlcyhuLmNoYXJBdChuLmxlbmd0aC0xKSk7cmV0dXJuIHJ8fGNvbnNvbGUud2FybigicmVhc29uOiBkb21haW4iLHQsbixlKSxyfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuKXt2YXIgZSx0OyFnJiYiYWRtaW4uZ2V0YnV0dG9uLmlvLCBuZXh0LmdldGJ1dHRvbi5pbywgMTI3LjAuMC4xLCBsb2NhbGhvc3QsIHRlc3QuZ2V0YnV0dG9uLmlvLCBkZXYuZ2V0YnV0dG9uLmlvLCBnZXRidXR0b24uaW8sIGFkbWluLnNob3BpZnkuY29tIi5pbmNsdWRlcyhsb2NhdGlvbi5ob3N0bmFtZSk/KGMuaXNQcm89ITAsbigpKTpjLmtleXx8Z3x8Yy5oYXNoSWQ/KGU9KHQ9Imh0dHBzOi8vd2lkZ2V0LmdldGJ1dHRvbi5pby9hcGkvdmFsaWRhdGUiKSsiP2tleT0iK2Mua2V5LHQ9Zz90KyI/aGFzaF9pZD0iK2c6Yy5oYXNoSWQ/dCsiP2hhc2hfaWQ9IitjLmhhc2hJZDplLGZldGNoKHQpLnRoZW4oZnVuY3Rpb24oZSl7ZS5vaz9lLmpzb24oKS50aGVuKGZ1bmN0aW9uKGUpe3ZhciB0PW51bGwhPWUmJmUuY3JlYXRlZF9hdD9lLmNyZWF0ZWRfYXQ6bnVsbDtjLmlzUHJvPSEwPT09ZS52YWxpZCYmZnVuY3Rpb24oKXt2YXIgZT0wPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCx0PTE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLG49KGNvbnNvbGUubG9nKCJ2YWxpZGF0ZURvbWFpbiIsZSx0KSxuZXcgRGF0ZSgiMjAyMi0wNS0xMyIpKSxyPXQ/bmV3IERhdGUodCk6bnVsbDtyZXR1cm4gbnVsbD09PXQ/byhlKTohKG48PXIpfHwoZT9vKGUpOihjb25zb2xlLndhcm4oInJlYXNvbjogaW52YWxpZCBkb21haW4iLGUpLCExKSl9KGUuZG9tYWlucyx0KSxjLnN1YnNjcmlwdGlvbkNyZWF0ZWREYXRlPXQsZS5vcHRpb25zJiYoT2U9ZS5vcHRpb25zKSxjLmlzUHJvfHxjb25zb2xlLndhcm4oIkdldEJ1dHRvbiB3b3JrcyBpbiBERU1PIG1vZGUsIHBsZWFzZSByZW5ldyBzdWJzY3JpcHRpb24gb3IgY29udGFjdCB3aXRoIHVzOiBodHRwczovL2dldGJ1dHRvbi5pbyIpLG4oKX0pOihjLmlzUHJvPSEwLG4oKSl9KSk6KGMuaXNQcm89ITEsbigpKX0pfWZ1bmN0aW9uIEFlKGUpe3ZhciB0PVtdO3JldHVybih0PSJzdHJpbmciPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFN0cmluZz8oZT1lLnRyaW0oKSkuc3BsaXQoL1ssXG5dKy8pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9KTp0KS5maWx0ZXIoZnVuY3Rpb24oZSx0LG4pe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmIiIhPT1lLnRyaW0oKSYmbi5pbmRleE9mKGUpPT09dH0pfWZ1bmN0aW9uIFBlKGUpe3JldHVybiBlLnJlcGxhY2UoL1wvJC8sIiIpfWZ1bmN0aW9uIEllKGUsdCxuKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG8sYSxpPWVbcl0udHJpbSgpOyIiIT09aSYmKGkuZW5kc1dpdGgoIioiKT8obz1QZShpLnJlcGxhY2UoIioiLCIiKSksKGE9UGUod2luZG93LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKSkpLnN0YXJ0c1dpdGgobykmJmEubGVuZ3RoPm8ubGVuZ3RoP2Muc2hvd1dpZGdldD10OmMuc2hvd1dpZGdldD0hdCk6bmV3IFJlZ0V4cCgiXiIuY29uY2F0KFBlKGkucmVwbGFjZSgvXCovZywiLioiKSksIiQiKSwiaSIpLnRlc3QoUGUod2luZG93LmxvY2F0aW9uLmhyZWYpKSYmKGMuc2hvd1dpZGdldD10KSl9biYmIWMuc2hvd1dpZGdldCYmKGMuc2hvd1dpZGdldD0hMSl9ZnVuY3Rpb24gX2UoZSl7Zm9yKHZhciB0PTAsbj1PYmplY3Qua2V5cyhlKTt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI9blt0XTtjW2ZlKHIpXT1lW3JdfX1mdW5jdGlvbiB6ZShlLHQpe2Zvcih2YXIgbj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxyPTAsbz1PYmplY3Qua2V5cyhsKTtyPG8ubGVuZ3RoO3IrKyl7dmFyIGE9b1tyXTtjW2FdPWxbYV19biYmX2UobiksamUoIiIuY29uY2F0KHQsIi8vIikuY29uY2F0KGUsIi8iKSkudGhlbihmdW5jdGlvbigpe3ZhciBlLHQsbjtpZihPZSYmX2UoT2UpLGMuaXNQcm8/Yy5hY3RpdmF0b3JTaXplPWMuYWN0aXZhdG9yU2l6ZXx8NTA6Yy5hY3RpdmF0b3JTaXplPTUwLGMuaGFzT3duUHJvcGVydHkoInNoaWZ0SG9yaXpvbnRhbCIpJiYhKGMuc2hpZnRIb3Jpem9udGFsPFNlKSYmYy5pc1Byb3x8KGMuc2hpZnRIb3Jpem9udGFsPVNlKSxjLmhhc093blByb3BlcnR5KCJzaGlmdFZlcnRpY2FsIikmJiEoYy5zaGlmdFZlcnRpY2FsPENlKSYmYy5pc1Byb3x8KGMuc2hpZnRWZXJ0aWNhbD1DZSksInN0cmluZyI9PXR5cGVvZiBjLm9yZGVyfHxjLm9yZGVyIGluc3RhbmNlb2YgU3RyaW5nP2Mub3JkZXI9Yy5vcmRlci5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9KTpBcnJheS5pc0FycmF5KGMub3JkZXIpJiYoYy5vcmRlcj1bXSksYy5vcmRlcj1jLm9yZGVyLmNvbmNhdChPYmplY3Qua2V5cyh4KCkoYyxKKSkpLDA9PT1jLm9yZGVyLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkJ1dHRvbiBpcyBlbXB0eSIpO2Mub3JkZXI9Yy5vcmRlci5maWx0ZXIoZnVuY3Rpb24oZSx0LG4pe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmbi5pbmRleE9mKGUpPT09dH0pLGMub3JkZXI9Yy5vcmRlci5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuISFlJiZjLmhhc093blByb3BlcnR5KGUpJiYhIWNbZV19KSxjLmlzUHJvfHwoYy5vcmRlcj1jLm9yZGVyLnNsaWNlKDAsMikpLGMuYnV0dG9uQ29sb3I9bnVsbCE9KGU9Yy5idXR0b25Db2xvcik/ZToiI2ZmNjU1MCIsYy5pc1NpbmdsZT0xPT09Yy5vcmRlci5sZW5ndGgsYy5pc1Byb3x8KGMuYnV0dG9uSW1hZ2VVcmw9bnVsbCxjLmFwcGxlSWNvbj1udWxsLGMuY2FsbEljb249bnVsbCxjLmNvbnRhY3Rmb3JtSWNvbj1udWxsLGMuZGlzY29yZEljb249bnVsbCxjLmVtYWlsSWNvbj1udWxsLGMuZmFjZWJvb2tJY29uPW51bGwsYy5nb29nbGVtYXBJY29uPW51bGwsYy5pbnN0YWdyYW1JY29uPW51bGwsYy5saW5lSWNvbj1udWxsLGMubGlua0ljb249bnVsbCxjLmxpbmtlZGluSWNvbj1udWxsLGMuc2t5cGVJY29uPW51bGwsYy5zbGFja0ljb249bnVsbCxjLnNtc0ljb249bnVsbCxjLnNuYXBjaGF0SWNvbj1udWxsLGMudGVsZWdyYW1JY29uPW51bGwsYy50d2l0dGVySWNvbj1udWxsLGMudGlrdG9rSWNvbj1udWxsLGMudmliZXJJY29uPW51bGwsYy52a29udGFrdGVJY29uPW51bGwsYy53YXplSWNvbj1udWxsLGMud2VjaGF0SWNvbj1udWxsLGMud2hhdHNhcHBJY29uPW51bGwpLGMuaXNQcm98fChjLmFwcGxlTGFiZWw9Qi5hcHBsZS50aXRsZSxjLmNhbGxMYWJlbD1CLmNhbGwudGl0bGUsYy5jb250YWN0Zm9ybUxhYmVsPUIuY29udGFjdGZvcm0udGl0bGUsYy5kaXNjb3JkTGFiZWw9Qi5kaXNjb3JkLnRpdGxlLGMuZW1haWxMYWJlbD1CLmVtYWlsLnRpdGxlLGMuZmFjZWJvb2tMYWJlbD1CLmZhY2Vib29rLnRpdGxlLGMuZ29vZ2xlbWFwTGFiZWw9Qi5nb29nbGVtYXAudGl0bGUsYy5pbnN0YWdyYW1MYWJlbD1CLmluc3RhZ3JhbS50aXRsZSxjLmxpbmVMYWJlbD1CLmxpbmUudGl0bGUsYy5saW5rTGFiZWw9Qi5saW5rLnRpdGxlLGMubGlua2VkaW5MYWJlbD1CLmxpbmtlZGluLnRpdGxlLGMuc2t5cGVMYWJlbD1CLnNreXBlLnRpdGxlLGMuc2xhY2tMYWJlbD1CLnNsYWNrLnRpdGxlLGMuc21zTGFiZWw9Qi5zbXMudGl0bGUsYy5zbmFwY2hhdExhYmVsPUIuc25hcGNoYXQudGl0bGUsYy50ZWxlZ3JhbUxhYmVsPUIudGVsZWdyYW0udGl0bGUsYy50aWt0b2tMYWJlbD1CLnRpa3Rvay50aXRsZSxjLnR3aXR0ZXJMYWJlbD1CLnR3aXR0ZXIudGl0bGUsYy52aWJlckxhYmVsPUIudmliZXIudGl0bGUsYy52a29udGFrdGVMYWJlbD1CLnZrb250YWt0ZS50aXRsZSxjLndhemVMYWJlbD1CLndhemUudGl0bGUsYy53ZWNoYXRMYWJlbD1CLndlY2hhdC50aXRsZSxjLndoYXRzYXBwTGFiZWw9Qi53aGF0c2FwcC50aXRsZSksYy5ncmVldGluZz1jLmdyZWV0aW5nJiZjLmlzUHJvLGMuZ3JlZXRpbmcmJjAhPT1jLmdyZWV0aW5nQ29va2llJiYoZT1EYXRlLm5vdygpLG49RWUrKGd8fCIiKSwhKHQ9a2UuZ2V0KG4pKXx8KGUtKHQ9cGFyc2VJbnQodCwxMCkpKS8xZTM+PWMuZ3JlZXRpbmdDb29raWU/a2Uuc2V0KG4sZSxudWxsKTpjLmdyZWV0aW5nPSExKSxjLnBvc2l0aW9uPSJsZWZ0Ij09PWMucG9zaXRpb24/ImxlZnQiOiJyaWdodCIsIWMuaXNQcm8mJihjLmJyYW5kaW5nPSEwLGMuYW5pbWF0aW9uPSExLGMuZGlyZWN0aW9uPSJjb2x1bW4iLGMuYm9yZGVyPSExLGMubm90aWZpY2F0aW9uSW5kaWNhdG9yPSExLGMuYnV0dG9uQm9yZGVyUmFkaXVzPTUwLGMuYnV0dG9uU2hhZG93PTQwLGMuYnV0dG9uT3BhY2l0eT1sLmJ1dHRvbk9wYWNpdHksYy5iZ1N0eWxlPSJjb2xvciIsYy5hY3RpdmF0b3JJY29uPSJjbGFzc2ljIixjLmJ1dHRvblN0eWxlPSJjbGFzc2ljIixnfHxjLmhhc2hJZCkmJihjLmNhbGxUb0FjdGlvbj0hMSxjLmFjdGl2YXRvclNpemU9bC5hY3RpdmF0b3JTaXplLGMuYnV0dG9uQ29sb3I9bC5idXR0b25Db2xvcixjLmJ1dHRvblNoYWRvdz0wLGMuZ3JlZXRpbmc9ITEsYy5wb3NpdGlvbj1sLnBvc2l0aW9uLGMuc2hpZnRIb3Jpem9udGFsPTE2LGMuc2hpZnRWZXJ0aWNhbD0xNCksYy5nYT1jLmlzUHJvJiZjLmdhLHQ9QWUoYy5wYWdlTGlzdFRvU2hvdyksbj1BZShjLnBhZ2VMaXN0VG9IaWRlKSxjLmRpc3BsYXlPbkFsbFBhZ2VzP2Muc2hvd1dpZGdldD0hMDp0Lmxlbmd0aHx8bi5sZW5ndGg/dC5sZW5ndGg/bi5sZW5ndGg/KEllKHQsIShjLnNob3dXaWRnZXQ9ITEpLCExKSxJZShuLCExLCEwKSk6SWUodCwhKGMuc2hvd1dpZGdldD0hMSksITEpOkllKG4sIShjLnNob3dXaWRnZXQ9ITApLCEwKTpjLnNob3dXaWRnZXQ9ITEsYy5zaG93V2lkZ2V0JiYoYy5zaG93V2lkZ2V0PUQoKT9jLm1vYmlsZTpjLmRlc2t0b3ApLGMuY29uZmlnTG9hZGVkPSEwfSksc2V0VGltZW91dChmdW5jdGlvbigpe1coImNsYXNzaWMiPT09Yy5idXR0b25TdHlsZT9jLmFjdGl2YXRvclNpemU6MypjLmFjdGl2YXRvclNpemUpfSw1MDApfWZ1bmN0aW9uIFRlKCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7Yy5jb25maWdMb2FkZWQ/ZSghMCk6dCghMSl9KX1mdW5jdGlvbiBMZShyLGUsdCl7dmFyIG89MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1lP2U6MTAsYT0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PXQ/dDo1MDA7cmV0dXJuIGNvbnNvbGUubG9nKCJjb25maWcgbG9hZGluZy4uIixvKSxuZXcgUHJvbWlzZShmdW5jdGlvbih0LG4pe3IoKS50aGVuKHQpLmNhdGNoKGZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXsxPT09bz8obihlKSxjb25zb2xlLmVycm9yKCJzdG9wIGNvbmZpZyBsb2FkcyIpKTpMZShyLGEsby0xKS50aGVuKHQsbil9LGEpfSl9KX1mdW5jdGlvbiBNZShlKXt3aW5kb3cuaGFzT3duUHJvcGVydHkoImRhdGFMYXllciIpJiYodD1lLHdpbmRvdy5kYXRhTGF5ZXIucHVzaCh7ZXZlbnQ6ImdldGJ1dHRvbl9jbGljayIsZXZlbnRfY2F0ZWdvcnk6IkdldEJ1dHRvbiBXaWRnZXQiLGV2ZW50X2xhYmVsOiJjbGlja18iLmNvbmNhdCh0KSxldmVudENhdGVnb3J5OiJHZXRCdXR0b24gV2lkZ2V0IixldmVudEFjdGlvbjoiY2xpY2tfIi5jb25jYXQodCl9KSksd2luZG93Lmhhc093blByb3BlcnR5KCJndGFnIikmJih0PXtldmVudF9jYXRlZ29yeToiR2V0QnV0dG9uIFdpZGdldCIsZXZlbnRfbGFiZWw6ImNsaWNrXyIuY29uY2F0KHQ9ZSl9LHdpbmRvdy5ndGFnKCJldmVudCIsImNsaWNrIix0KSksd2luZG93Lmhhc093blByb3BlcnR5KCJnYSIpJiYobj17ZXZlbnRDYXRlZ29yeToiR2V0QnV0dG9uIFdpZGdldCIsZXZlbnRBY3Rpb246ImNsaWNrXyIuY29uY2F0KG49ZSl9LHI9d2luZG93LmdhLmdldEFsbD93aW5kb3cuZ2EuZ2V0QWxsKClbMF06dm9pZCAwKSYmci5zZW5kKCJldmVudCIsImNsaWNrIixuKTt2YXIgdCxuLHI9ZTtyPXtjb250ZW50X2NhdGVnb3J5OiJHZXRCdXR0b24gV2lkZ2V0Iixjb250ZW50X25hbWU6ImNsaWNrXyIuY29uY2F0KHIpfSwiZnVuY3Rpb24iPT10eXBlb2YgZmJxJiZmYnEoInRyYWNrIiwiY2xpY2siLHIpfXZhciBSZT1PYmplY3QoQy5lKShbIjAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg0NXB4KTt9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApO30iXSksTmU9T2JqZWN0KEMuZSkoWyIwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDQ1cHgpO30iXSksRGU9T2JqZWN0KEMuZSkoWyIwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNDVweCk7fXRve29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt9Il0pLFVlPU9iamVjdChDLmUpKFsiMCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC00NXB4KTt9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApO30iXSksQmU9T2JqZWN0KEMuZSkoWyIwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7fXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCg0NXB4KTt9Il0pLEZlPU9iamVjdChDLmUpKFsiMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApO310b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTQ1cHgpO30iXSksSGU9T2JqZWN0KEMuZSkoWyIwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSgtNjBkZWcpO310b3tvcGFjaXR5OjE7fSJdKSxWZT1PYmplY3QoQy5lKShbIjAle29wYWNpdHk6MTt9dG97b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoLTYwZGVnKTt9Il0pLGU9Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtMXMxOHEzZC0wIn0pKFsiYW5pbWF0aW9uLWR1cmF0aW9uOi4yczthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2U7YW5pbWF0aW9uLWRlbGF5Oi4wNXM7IiwiICIsIiAiLCIiXSxmdW5jdGlvbihlKXtyZXR1cm4icm93Ij09PWUuZGlyZWN0aW9uJiZPYmplY3QoQy5jKShbInRyYW5zZm9ybTp0cmFuc2xhdGVYKDApOyIsIjsiLCI7Il0sZS5pc1Nob3cmJk9iamVjdChDLmMpKFsiYW5pbWF0aW9uLWZpbGwtbW9kZTpiYWNrd2FyZHM7YW5pbWF0aW9uLW5hbWU6IiwiOyJdLCJyaWdodCI9PT1lLnRoZW1lLnBvc2l0aW9uP0RlOlVlKSwhZS5pc1Nob3cmJk9iamVjdChDLmMpKFsiYW5pbWF0aW9uLWZpbGwtbW9kZTpmb3J3YXJkczthbmltYXRpb24tbmFtZToiLCI7Il0sInJpZ2h0Ij09PWUudGhlbWUucG9zaXRpb24/QmU6RmUpKX0sZnVuY3Rpb24oZSl7cmV0dXJuImNvbHVtbiI9PT1lLmRpcmVjdGlvbiYmT2JqZWN0KEMuYykoWyJ0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTsiLCI7IiwiOyJdLGUuaXNTaG93JiZPYmplY3QoQy5jKShbImFuaW1hdGlvbi1maWxsLW1vZGU6YmFja3dhcmRzO2FuaW1hdGlvbi1uYW1lOiIsIjsiXSxSZSksIWUuaXNTaG93JiZPYmplY3QoQy5jKShbImFuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHM7YW5pbWF0aW9uLW5hbWU6IiwiOyJdLE5lKSl9LGZ1bmN0aW9uKGUpe3JldHVybiJhcm91bmQiPT09ZS5kaXJlY3Rpb24mJk9iamVjdChDLmMpKFsiYW5pbWF0aW9uLWR1cmF0aW9uOi40czthbmltYXRpb24tZmlsbC1tb2RlOmJvdGg7IiwiOyIsIjsiXSxlLmlzU2hvdyYmT2JqZWN0KEMuYykoWyJhbmltYXRpb24tbmFtZToiLCI7Il0sSGUpLCFlLmlzU2hvdyYmT2JqZWN0KEMuYykoWyJhbmltYXRpb24tbmFtZToiLCI7Il0sVmUpKX0pLHQ9Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtMXMxOHEzZC0xIn0pKFsiYW5pbWF0aW9uLWR1cmF0aW9uOi4yczthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2U7YW5pbWF0aW9uLWRlbGF5Oi4wNXM7IiwiICIsIiJdLGZ1bmN0aW9uKGUpe3JldHVybiJyb3ciPT09ZS5kaXJlY3Rpb24mJk9iamVjdChDLmMpKFsidHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7IiwiOyIsIjsiXSxlLmlzU2hvdyYmT2JqZWN0KEMuYykoWyJhbmltYXRpb24tZmlsbC1tb2RlOmJhY2t3YXJkczthbmltYXRpb24tbmFtZToiLCI7Il0sInJpZ2h0Ij09PWUudGhlbWUucG9zaXRpb24/RGU6VWUpLCFlLmlzU2hvdyYmT2JqZWN0KEMuYykoWyJhbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzO2FuaW1hdGlvbi1uYW1lOiIsIjsiXSwicmlnaHQiPT09ZS50aGVtZS5wb3NpdGlvbj9CZTpGZSkpfSxmdW5jdGlvbihlKXtyZXR1cm4icm93IiE9PWUuZGlyZWN0aW9uJiZPYmplY3QoQy5jKShbInRyYW5zZm9ybTp0cmFuc2xhdGVZKDApOyIsIjsiLCI7Il0sZS5pc1Nob3cmJk9iamVjdChDLmMpKFsiYW5pbWF0aW9uLWZpbGwtbW9kZTpiYWNrd2FyZHM7YW5pbWF0aW9uLW5hbWU6IiwiOyJdLFJlKSwhZS5pc1Nob3cmJk9iamVjdChDLmMpKFsiYW5pbWF0aW9uLWZpbGwtbW9kZTpmb3J3YXJkczthbmltYXRpb24tbmFtZToiLCI7Il0sTmUpKX0pLCRlPU9iamVjdChDLmUpKFsiMCV7b3BhY2l0eTowO2xlZnQ6LTIwcHg7fXRve29wYWNpdHk6MTtsZWZ0OjA7fSJdKSxXZT1PYmplY3QoQy5lKShbIjAle29wYWNpdHk6MTsiLCI6MDt9dG97b3BhY2l0eTowOyIsIjotMjBweDt9Il0sZnVuY3Rpb24oZSl7cmV0dXJuIGUudGhlbWUucG9zaXRpb259LGZ1bmN0aW9uKGUpe3JldHVybiBlLnRoZW1lLnBvc2l0aW9ufSksR2U9T2JqZWN0KEMuZSkoWyIwJXtvcGFjaXR5OjA7cmlnaHQ6LTIwcHg7fXRve29wYWNpdHk6MTtyaWdodDowO30iXSkscWU9T2JqZWN0KEMuZSkoWyIwJXtvcGFjaXR5OjE7IiwiOjA7fXRve29wYWNpdHk6MDsiLCI6LTIwcHg7fSJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRoZW1lLnBvc2l0aW9ufSxmdW5jdGlvbihlKXtyZXR1cm4gZS50aGVtZS5wb3NpdGlvbn0pLFplPUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLTFzMThxM2QtMiJ9KShbInRyYW5zZm9ybTp0cmFuc2xhdGVYKDApO3Bvc2l0aW9uOnJlbGF0aXZlO2FuaW1hdGlvbi1kdXJhdGlvbjowLjY0czthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMjMsMSwuMzIsMSk7YW5pbWF0aW9uLWRlbGF5OjAuMTZzOyIsIjsiLCI7Il0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNTaG93JiZPYmplY3QoQy5jKShbImFuaW1hdGlvbi1maWxsLW1vZGU6YmFja3dhcmRzO2FuaW1hdGlvbi1uYW1lOiIsIjsiXSxmdW5jdGlvbihlKXtyZXR1cm4ibGVmdCI9PT1lLnRoZW1lLnBvc2l0aW9uPyRlOkdlfSl9LGZ1bmN0aW9uKGUpe3JldHVybiFlLmlzU2hvdyYmT2JqZWN0KEMuYykoWyJhbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzO2FuaW1hdGlvbi1uYW1lOiIsIjsiXSxmdW5jdGlvbihlKXtyZXR1cm4ibGVmdCI9PT1lLnRoZW1lLnBvc2l0aW9uP1dlOnFlfSl9KSxYZT1PYmplY3QoQy5lKShbImZyb217b3BhY2l0eTowO21hcmdpbi1sZWZ0Oi0yMHB4O310b3tvcGFjaXR5OjE7fSJdKSxZZT1PYmplY3QoQy5lKShbImZyb217b3BhY2l0eTowO21hcmdpbi1yaWdodDotMjBweDt9dG97b3BhY2l0eToxO30iXSksUWU9T2JqZWN0KEMuZSkoWyIwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSk7fTE0JXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjMpO3RyYW5zZm9ybTpzY2FsZSgxLjMpO30yOCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtOnNjYWxlKDEpO300MiV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4zKTt0cmFuc2Zvcm06c2NhbGUoMS4zKTt9NzAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKTt9Il0pLEtlPU9iamVjdChDLmUpKFsiZnJvbXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt9MTUley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0yNSUsMCwwKSByb3RhdGUzZCgwLDAsMSwtNWRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0yNSUsMCwwKSByb3RhdGUzZCgwLDAsMSwtNWRlZyk7fTMwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgyMCUsMCwwKSByb3RhdGUzZCgwLDAsMSwzZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMjAlLDAsMCkgcm90YXRlM2QoMCwwLDEsM2RlZyk7fTQ1JXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTUlLDAsMCkgcm90YXRlM2QoMCwwLDEsLTNkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTUlLDAsMCkgcm90YXRlM2QoMCwwLDEsLTNkZWcpO302MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAlLDAsMCkgcm90YXRlM2QoMCwwLDEsMmRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwJSwwLDApIHJvdGF0ZTNkKDAsMCwxLDJkZWcpO303NSV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTUlLDAsMCkgcm90YXRlM2QoMCwwLDEsLTFkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtNSUsMCwwKSByb3RhdGUzZCgwLDAsMSwtMWRlZyk7fXRvey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO30iXSksSmU9T2JqZWN0KEMuZSkoWyJmcm9tey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoMSwxLDEpO3RyYW5zZm9ybTpzY2FsZTNkKDEsMSwxKTt9MzAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoMS4yNSwwLjc1LDEpO3RyYW5zZm9ybTpzY2FsZTNkKDEuMjUsMC43NSwxKTt9NDAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoMC43NSwxLjI1LDEpO3RyYW5zZm9ybTpzY2FsZTNkKDAuNzUsMS4yNSwxKTt9NTAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoMS4xNSwwLjg1LDEpO3RyYW5zZm9ybTpzY2FsZTNkKDEuMTUsMC44NSwxKTt9NjUley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoMC45NSwxLjA1LDEpO3RyYW5zZm9ybTpzY2FsZTNkKDAuOTUsMS4wNSwxKTt9NzUley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoMS4wNSwwLjk1LDEpO3RyYW5zZm9ybTpzY2FsZTNkKDEuMDUsMC45NSwxKTt9dG97LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCgxLDEsMSk7dHJhbnNmb3JtOnNjYWxlM2QoMSwxLDEpO30iXSksZXQ9T2JqZWN0KEMuZSkoWyJmcm9tLDIwJSw1MyUsdG97LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjIxNSwwLjYxLDAuMzU1LDEpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMjE1LDAuNjEsMC4zNTUsMSk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7fTQwJSw0MyV7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjc1NSwwLjA1LDAuODU1LDAuMDYpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuNzU1LDAuMDUsMC44NTUsMC4wNik7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMzBweCwwKSBzY2FsZVkoMS4xKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMzBweCwwKSBzY2FsZVkoMS4xKTt9NzAley13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC43NTUsMC4wNSwwLjg1NSwwLjA2KTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjc1NSwwLjA1LDAuODU1LDAuMDYpOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTE1cHgsMCkgc2NhbGVZKDEuMDUpO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xNXB4LDApIHNjYWxlWSgxLjA1KTt9ODAley13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMjE1LDAuNjEsMC4zNTUsMSk7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMjE1LDAuNjEsMC4zNTUsMSk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlWSgwLjk1KTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlWSgwLjk1KTt9OTAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTRweCwwKSBzY2FsZVkoMS4wMik7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTRweCwwKSBzY2FsZVkoMS4wMik7fSJdKSx0dD1PYmplY3QoQy5lKShbImZyb217LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCgxLDEsMSk7dHJhbnNmb3JtOnNjYWxlM2QoMSwxLDEpO301MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCgxLjEsMS4xLDEuMSk7dHJhbnNmb3JtOnNjYWxlM2QoMS4xLDEuMSwxLjEpO310b3std2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKDEsMSwxKTt0cmFuc2Zvcm06c2NhbGUzZCgxLDEsMSk7fSJdKSxudD1PYmplY3QoQy5lKShbIjAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7fTYuNSV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNnB4KSByb3RhdGVZKC05ZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNnB4KSByb3RhdGVZKC05ZGVnKTt9MTguNSV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCg1cHgpIHJvdGF0ZVkoN2RlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNXB4KSByb3RhdGVZKDdkZWcpO30zMS41JXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC0zcHgpIHJvdGF0ZVkoLTVkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0zcHgpIHJvdGF0ZVkoLTVkZWcpO300My41JXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDJweCkgcm90YXRlWSgzZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgycHgpIHJvdGF0ZVkoM2RlZyk7fTUwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApO30iXSkscnQ9T2JqZWN0KEMuZSkoWyIyMCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlM2QoMCwwLDEsMTVkZWcpO3RyYW5zZm9ybTpyb3RhdGUzZCgwLDAsMSwxNWRlZyk7fTQwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUzZCgwLDAsMSwtMTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUzZCgwLDAsMSwtMTBkZWcpO302MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlM2QoMCwwLDEsNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZTNkKDAsMCwxLDVkZWcpO304MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlM2QoMCwwLDEsLTVkZWcpO3RyYW5zZm9ybTpyb3RhdGUzZCgwLDAsMSwtNWRlZyk7fXRvey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZTNkKDAsMCwxLDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUzZCgwLDAsMSwwZGVnKTt9Il0pLG90PU9iamVjdChDLmUpKFsiZnJvbXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKDEsMSwxKTt0cmFuc2Zvcm06c2NhbGUzZCgxLDEsMSk7fTEwJSwyMCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCgwLjksMC45LDAuOSkgcm90YXRlM2QoMCwwLDEsLTNkZWcpO3RyYW5zZm9ybTpzY2FsZTNkKDAuOSwwLjksMC45KSByb3RhdGUzZCgwLDAsMSwtM2RlZyk7fTMwJSw1MCUsNzAlLDkwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKDEuMSwxLjEsMS4xKSByb3RhdGUzZCgwLDAsMSwzZGVnKTt0cmFuc2Zvcm06c2NhbGUzZCgxLjEsMS4xLDEuMSkgcm90YXRlM2QoMCwwLDEsM2RlZyk7fTQwJSw2MCUsODAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoMS4xLDEuMSwxLjEpIHJvdGF0ZTNkKDAsMCwxLC0zZGVnKTt0cmFuc2Zvcm06c2NhbGUzZCgxLjEsMS4xLDEuMSkgcm90YXRlM2QoMCwwLDEsLTNkZWcpO310b3std2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKDEsMSwxKTt0cmFuc2Zvcm06c2NhbGUzZCgxLDEsMSk7fSJdKSxhdD1PYmplY3QoQy5lKShbImZyb20sMTEuMSUsdG97LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7fTIyLjIley13ZWJraXQtdHJhbnNmb3JtOnNrZXdYKC0xMi41ZGVnKSBza2V3WSgtMTIuNWRlZyk7dHJhbnNmb3JtOnNrZXdYKC0xMi41ZGVnKSBza2V3WSgtMTIuNWRlZyk7fTMzLjMley13ZWJraXQtdHJhbnNmb3JtOnNrZXdYKDYuMjVkZWcpIHNrZXdZKDYuMjVkZWcpO3RyYW5zZm9ybTpza2V3WCg2LjI1ZGVnKSBza2V3WSg2LjI1ZGVnKTt9NDQuNCV7LXdlYmtpdC10cmFuc2Zvcm06c2tld1goLTMuMTI1ZGVnKSBza2V3WSgtMy4xMjVkZWcpO3RyYW5zZm9ybTpza2V3WCgtMy4xMjVkZWcpIHNrZXdZKC0zLjEyNWRlZyk7fTU1LjUley13ZWJraXQtdHJhbnNmb3JtOnNrZXdYKDEuNTYyNWRlZykgc2tld1koMS41NjI1ZGVnKTt0cmFuc2Zvcm06c2tld1goMS41NjI1ZGVnKSBza2V3WSgxLjU2MjVkZWcpO302Ni42JXstd2Via2l0LXRyYW5zZm9ybTpza2V3WCgtMC43ODEyNWRlZykgc2tld1koLTAuNzgxMjVkZWcpO3RyYW5zZm9ybTpza2V3WCgtMC43ODEyNWRlZykgc2tld1koLTAuNzgxMjVkZWcpO303Ny43JXstd2Via2l0LXRyYW5zZm9ybTpza2V3WCgwLjM5MDYyNWRlZykgc2tld1koMC4zOTA2MjVkZWcpO3RyYW5zZm9ybTpza2V3WCgwLjM5MDYyNWRlZykgc2tld1koMC4zOTA2MjVkZWcpO304OC44JXstd2Via2l0LXRyYW5zZm9ybTpza2V3WCgtMC4xOTUzMTI1ZGVnKSBza2V3WSgtMC4xOTUzMTI1ZGVnKTt0cmFuc2Zvcm06c2tld1goLTAuMTk1MzEyNWRlZykgc2tld1koLTAuMTk1MzEyNWRlZyk7fSJdKSxpdD1PYmplY3QoQy5lKShbIjAle3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7b3BhY2l0eToxO30xMDAle3dpZHRoOiIsInB4O2hlaWdodDoiLCJweDtvcGFjaXR5OjA7fSJdLDMqYy5hY3RpdmF0b3JTaXplKzIwLGMuYWN0aXZhdG9yU2l6ZSs1MCksbHQ9T2JqZWN0KEMuZSkoWyIwJXt3aWR0aDozMHB4O2hlaWdodDozMHB4O29wYWNpdHk6MTt9MTAwJXt3aWR0aDoiLCJweDtoZWlnaHQ6IiwicHg7b3BhY2l0eTowO30iXSwzKmMuYWN0aXZhdG9yU2l6ZSsyMCxjLmFjdGl2YXRvclNpemUrNTApLGN0PU9iamVjdChDLmUpKFsiMCV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVgoMSkgc2NhbGVZKDEpO301MCV7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZVgoMS40KSBzY2FsZVkoMS40KTt9MTAwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlWCgxKSBzY2FsZVkoMSk7fSJdKTtmdW5jdGlvbiB1dChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8sYSxpLGw9W10sYz0hMCx1PSExO3RyeXtpZihhPShuPW4uY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPWEuY2FsbChuKSkuZG9uZSkmJihsLnB1c2goci52YWx1ZSksbC5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxvPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPW4ucmV0dXJuJiYoaT1uLnJldHVybigpLE9iamVjdChpKSE9PWkpKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgb319cmV0dXJuIGx9fShlLHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuO2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3N0KGUsdCk6Ik1hcCI9PT0obj0iT2JqZWN0Ij09PShuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOm4pfHwiU2V0Ij09PW4/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP3N0KGUsdCk6dm9pZCAwfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gc3QoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgZnQ9Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtOGVxYzN5LTAifSkoWyIiLCIiXSxmdW5jdGlvbihlKXt2YXIgdD1lLm1pcnJvcixlPWUuYWN0aXZhdG9yU2l6ZTtyZXR1cm4gT2JqZWN0KEMuYykoWyJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjdweCAxMHB4O2xpbmUtaGVpZ2h0OjE2cHg7Zm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhIE5ldWUsSGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC1zaXplOiIsInB4O21hcmdpbjphdXRvOyIsIiJdLE1hdGgubWluKC4yOCplLDE3LjUpLHQmJk9iamVjdChDLmMpKFsiZGlyZWN0aW9uOnJ0bDt1bmljb2RlLWJpZGk6cGxhaW50ZXh0OyJdKSl9KSxkdD1PYmplY3QoQy5kKShaZSkud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLThlcWMzeS0xIn0pKFsiIiwiIl0sZnVuY3Rpb24oZSl7dmFyIHQ9ZS5idXR0b25TaGFkb3csZT1lLnRoZW1lO3JldHVybiBPYmplY3QoQy5jKShbImJveC1zaGFkb3c6MHB4IDFweCA3cHggcmdiYSgxMzYsMTM2LDEzNiwiLCIlKTtmbGV4LXNocmluazowO2JvcmRlcjoxcHggc29saWQgI2UyZTJlMjtib3JkZXItcmFkaXVzOjVweDtiYWNrZ3JvdW5kOndoaXRlO3RleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRhbnQ7Y29sb3I6IzAwMDAwMCAhaW1wb3J0YW50O2N1cnNvcjpwb2ludGVyO21hcmdpbjoiLCI7bWF4LXdpZHRoOjE3MnB4O21heC1oZWlnaHQ6NjVweDtkaXNwbGF5OmZsZXg7b3JkZXI6IiwiOyY6OmJlZm9yZXtjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6d2hpdGU7Ym9yZGVyLSIsIjoxcHggc29saWQgI2UyZTJlMjtib3JkZXItIiwiOjFweCBzb2xpZCAjZTJlMmUyOyIsIjotNXB4O3RvcDo1MCU7bWFyZ2luLXRvcDotNHB4O3dpZHRoOjhweDtoZWlnaHQ6OHB4O3otaW5kZXg6MTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7fSY6OmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDp3aGl0ZTtib3JkZXItIiwiOjFweCBzb2xpZCAjZTJlMmUyO2JvcmRlci0iLCI6MXB4IHNvbGlkICNlMmUyZTI7IiwiOi01cHg7dG9wOjUwJTttYXJnaW4tdG9wOi00cHg7d2lkdGg6OHB4O2hlaWdodDo4cHg7ei1pbmRleDoxO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt9Il0sMjA8dD90OjIwLGUuY2FsbFRvQWN0aW9uTWFyZ2luLGUucG9wdXBzT3JkZXIsImxlZnQiPT09ZS5wb3NpdGlvbj8idG9wIjoiYm90dG9tIixlLnBvc2l0aW9uLGUucG9zaXRpb24sImxlZnQiPT09ZS5wb3NpdGlvbj8idG9wIjoiYm90dG9tIixlLnBvc2l0aW9uLGUucG9zaXRpb24pfSkscHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ocmVmLHQ9dm9pZCAwPT09dD9udWxsOnQsZT1lLnRhcmdldCxlPXZvaWQgMD09PWU/bnVsbDplLG49T2JqZWN0KEYudXNlQ29udGV4dCkoVikscj1uLnN0YXRlLG89bi5hY3Rpb25zLnNob3dCdXR0b25zLG49bi5zZXR0aW5ncyxhPW4uY2FsbFRvQWN0aW9uLGk9bi5jYWxsVG9BY3Rpb25EZWxheSxsPW4uZGlyZWN0aW9uLGM9bi5idXR0b25TdHlsZSx1PW4uYWN0aXZhdG9yU2l6ZSxzPW4ubWlycm9yLG49bi5idXR0b25TaGFkb3csZj11dChPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpLGQ9ZlswXSxwPWZbMV0sZj11dChPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpLG09ZlswXSxoPWZbMV0sZz1PYmplY3QoRi51c2VSZWYpKDApO3JldHVybiBPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7IXIuYnV0dG9ucyYmITAhPT1yLmNhbGxUb0FjdGlvblRpbWVyfHwoY2xlYXJUaW1lb3V0KGcuY3VycmVudCksZy5jdXJyZW50PTApLHIuY2FsbFRvQWN0aW9uJiYwPGEubGVuZ3RoPzA9PT1nLmN1cnJlbnQmJihnLmN1cnJlbnQ9c2V0VGltZW91dChmdW5jdGlvbigpe3Aoci5jYWxsVG9BY3Rpb24pLGgoci5jYWxsVG9BY3Rpb24pLFcoImFyb3VuZCIhPT1sPyJjbGFzc2ljIj09PWM/MjgwOjMqdSsyMDA6OTk5OTk5OTk5KX0saSkpOnAoITEpfSksT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpe3IuY2FsbFRvQWN0aW9uJiYwPGEubGVuZ3RoJiZXKCJhcm91bmQiIT09bD8iY2xhc3NpYyI9PT1jPzI4MDozKnUrMjAwOjk5OTk5OTk5OSl9LFtyLmNhbGxUb0FjdGlvbixhLGMsbCx1XSksbSYmSC5hLmNyZWF0ZUVsZW1lbnQoZHQse2FzOm51bGw9PT10PyJkaXYiOiJhIixocmVmOnQsdGFyZ2V0OmUsb25Nb3VzZVVwOmZ1bmN0aW9uKCl7bygpfSxpc1Nob3c6ZCxvbkFuaW1hdGlvbkVuZDpmdW5jdGlvbigpe2goZCl9LGJ1dHRvblNoYWRvdzpufSxILmEuY3JlYXRlRWxlbWVudChmdCx7bWlycm9yOnMsYWN0aXZhdG9yU2l6ZTp1fSxhKSl9O2Z1bmN0aW9uIG10KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9bil7dmFyIHIsbyxhLGksbD1bXSxjPSEwLHU9ITE7dHJ5e2lmKGE9KG49bi5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QobikhPT1uKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KHI9YS5jYWxsKG4pKS5kb25lKSYmKGwucHVzaChyLnZhbHVlKSxsLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLG89ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9bi5yZXR1cm4mJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gbH19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/aHQoZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/aHQoZSx0KTp2b2lkIDB9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBodChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIGd0KGUpe3N3aXRjaCghMCl7Y2FzZSJudW1iZXIiPT10eXBlb2YgZTpyZXR1cm4gZSsicHgiO2Nhc2Uic21hbGwiPT09ZTpyZXR1cm4iMzRweCI7Y2FzZSJtZWRpdW0iPT09ZTpyZXR1cm4iNDVweCI7ZGVmYXVsdDpyZXR1cm4iNTBweCJ9fWZ1bmN0aW9uIEUoZSl7c3dpdGNoKGUpe2Nhc2UiaGVhcnRCZWF0IjpyZXR1cm4gUWU7Y2FzZSJ3b2JibGUiOnJldHVybiBLZTtjYXNlInJ1YmJlckJhbmQiOnJldHVybiBKZTtjYXNlImJvdW5jZSI6cmV0dXJuIGV0O2Nhc2UicHVsc2UiOnJldHVybiB0dDtjYXNlImhlYWRTaGFrZSI6cmV0dXJuIG50O2Nhc2Uic3dpbmciOnJldHVybiBydDtjYXNlInRhZGEiOnJldHVybiBvdDtjYXNlImplbGxvIjpyZXR1cm4gYXQ7Y2FzZSJyaW5nIjpyZXR1cm4gaXQ7Y2FzZSJkb3VibGVSaW5nIjpyZXR1cm4gbHQ7Y2FzZSJtb3ZlSW4iOnJldHVybiBjdDtkZWZhdWx0OnJldHVybiJzdGFuZGFyZCJ9fWZ1bmN0aW9uIE8oZSl7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDI6cmV0dXJuIDUuMTtjYXNlIDM6cmV0dXJuIDg7ZGVmYXVsdDpyZXR1cm4gMTJ9fWZ1bmN0aW9uIHAoZSl7ZnVuY3Rpb24gdCgpe058fChkP2goKTooUyYmTWUoYSkscCgpLG0oYSksITE9PT1CW2FdLnNob3dQb3B1cCYmZygpKSl9ZnVuY3Rpb24gbigpe0QoKXx8InNtYWxsIj09PXJ8fCJtZWRpdW0iPT09cnx8ImZhY2Vib29rIj09PWF8fGR8fChNKCEwKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TSghMSl9LDFlMyksdCgpKX12YXIgcj1lLnNpemUsbz1lLmxpbmssYT1lLm5hbWUsaT1lLmljb24sbD1lLnRhcmdldCxjPWUuY29sb3IsdT1lLmN1c3RvbUljb24sZT1lLmxhYmVsLHM9KGI9T2JqZWN0KEYudXNlQ29udGV4dCkoVikpLnN0YXRlLGY9cy5idXR0b25zLGQ9cy5idXR0b25Qb3B1cDtzLmdyZWV0aW5nTWVzc2FnZTt2YXIgcD0ocz1iLmFjdGlvbnMpLmJ1dHRvbkNsaWNrZWQsbT1zLnNob3dCdXR0b25Qb3B1cCxoPXMuY2xvc2VCdXR0b25Qb3B1cCxnPXMub3BlbkdyZWV0aW5nTWVzc2FnZSxiPShzPWIuc2V0dGluZ3MpLmJ1dHRvbkJvcmRlclJhZGl1cyx5PXMuYWN0aXZhdG9yU2l6ZSx2PXMuaXNQcm8sdz1zLmlzU2luZ2xlLHg9cy5kaXJlY3Rpb24saz1zLmJ1dHRvblN0eWxlLFM9cy5nYSxDPXMuYnV0dG9uQW5pbWF0aW9uLEU9cy5ib3JkZXIsTz1zLmJ1dHRvblNoYWRvdyxqPXMuYnV0dG9uT3BhY2l0eSxBPXMuYmdTdHlsZSxQPXMubm90aWZpY2F0aW9uSW5kaWNhdG9yLEk9cy5taXJyb3IsXz1zLm9yZGVyLHo9cy5wb3NpdGlvbixUPXMuYW5pbWF0aW9uLFI9JChiKSxMPSIiLHI9InNtYWxsIj09PXJ8fCJtZWRpdW0iPT09cj9yOnkseT0odj8oYz1jfHxCW2FdLmNvbG9yLEw9QlthXS5idXR0b25JZCk6Yz1idChjKT9jOkJbYV0uY29sb3IsdyYmKHMuYnV0dG9uQ29sb3I9YykscGUoYyw1KSksTj0odj1tdChPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpKVswXSxNPXZbMV07cmV0dXJuIE9iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXt2YXIgZTtpZigiY29sdW1uIj09PXgpcmV0dXJuIGU9c2V0VGltZW91dChmdW5jdGlvbigpe1coImNsYXNzaWMiPT09az9yOjMqcil9LDM1MCksZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZSl9O1coZj85OTk5OTk5OToiY2xhc3NpYyI9PT1rP3I6MypyKX0sW2sseCxyXSksT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpe3ZhciBlPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtXKCJjbGFzc2ljIj09PWs/cjozKnIpfSw1MDApO3JldHVybiBmdW5jdGlvbigpe2NsZWFyVGltZW91dChlKX19LFtrLHJdKSwhMD09PXc/SC5hLmNyZWF0ZUVsZW1lbnQoU3Qse29uTW91c2VVcDp0fSxVKCkmJkguYS5jcmVhdGVFbGVtZW50KHB0LHtocmVmOm8sdGFyZ2V0Omwsc2l6ZTpyfSksSC5hLmNyZWF0ZUVsZW1lbnQoeHQse2J1dHRvbkFuaW1hdGlvbjpDLGNvbG9yOmMsYnV0dG9uQm9yZGVyUmFkaXVzOmIsc2l6ZTpyLGFuaW1hdGlvbjpULGJ1dHRvblN0eWxlOmsscG9wdXBPcGVuZWQ6ZH0sSC5hLmNyZWF0ZUVsZW1lbnQod3Qse29uTW91c2VFbnRlcjpuLHNpemU6cixocmVmOm8sdGFyZ2V0OmwsImFyaWEtbGFiZWwiOiJHbyB0byAiLmNvbmNhdChhKSxjb2xvcjpjLGlkOkwsY3VzdG9tSWNvbjp1LGdyYWRpZW50OnksaW5kaWNhdG9yUG9zaXRpb246Uixib3JkZXI6RSxidXR0b25Cb3JkZXJSYWRpdXM6YixidXR0b25TaGFkb3c6TyxidXR0b25PcGFjaXR5OmosYmdTdHlsZTpBLGJ1dHRvblN0eWxlOmssYnV0dG9uQW5pbWF0aW9uOkMsbm90aWZpY2F0aW9uSW5kaWNhdG9yOlAsbWlycm9yOkksaXNTaW5nbGU6dyxkaXJlY3Rpb246eCxwb3NpdGlvbjp6LG9yZGVyOl8sYW5pbWF0aW9uOlQscG9wdXBPcGVuZWQ6ZH0saSwibWVkaXVtIj09PXImJkguYS5jcmVhdGVFbGVtZW50KEcse2NvbG9yOmMsbWlycm9yOkksc2l6ZTpyfSxlKSwibWVkaXVtIiE9PXImJiJjbGFzc2ljIiE9PWsmJkguYS5jcmVhdGVFbGVtZW50KEcse2NvbG9yOmMsbWlycm9yOkksc2l6ZTpyfSxlKSkpKTpILmEuY3JlYXRlRWxlbWVudChTdCx7b25Nb3VzZVVwOnQsZGF0YUluZGV4Onl0KF8sYSksb3BlbmVkOmYsc2l6ZTpyLGRpcmVjdGlvbjp4LG9yZGVyOl99LEguYS5jcmVhdGVFbGVtZW50KGt0LHtzaXplOnIsbWlycm9yOkksYnV0dG9uU3R5bGU6ayxkaXJlY3Rpb246eCxvcmRlcjpfLGRhdGFJbmRleDp5dChfLGEpLGJ1dHRvblNoYWRvdzpPfSxlKSxILmEuY3JlYXRlRWxlbWVudCh4dCx7c2l6ZTpyfSxILmEuY3JlYXRlRWxlbWVudCh3dCx7c2l6ZTpyLGhyZWY6byx0YXJnZXQ6bCwiYXJpYS1sYWJlbCI6IkdvIHRvICIuY29uY2F0KGEpLGNvbG9yOmMsaWQ6TCxjdXN0b21JY29uOnUsZ3JhZGllbnQ6eSwiZGF0YS1jb21wb25lbnQtbmFtZSI6IkJhc2VCdXR0b24iLGJvcmRlcjpFLGRhdGFJbmRleDp5dChfLGEpLGJ1dHRvbkJvcmRlclJhZGl1czpiLGJ1dHRvblNoYWRvdzpPLGJ1dHRvbk9wYWNpdHk6aixiZ1N0eWxlOkEsYnV0dG9uU3R5bGU6ayxtaXJyb3I6SSxpc1NpbmdsZTp3LGRpcmVjdGlvbjp4LHBvc2l0aW9uOnosb3JkZXI6X30saSwibWVkaXVtIiE9PXImJiJzbWFsbCIhPT1yJiYiY2xhc3NpYyIhPT1rJiZILmEuY3JlYXRlRWxlbWVudChHLHtjb2xvcjpjLG1pcnJvcjpJLHNpemU6cn0sZSkpKSl9dmFyIGJ0PWZ1bmN0aW9uKGUpe3JldHVybiEhWyIjNjY2NjY2IiwiIzY2NiIsIiNFNzQzMzkiLCIjRkY2NTUwIiwiI0E4Q0U1MCIsIiMxMjlCRjQiLCIjOTMyQzhCIiwiI0ZGMzE4RSIsIiMwMDAwMDAiLCIjMDAwIl0uaW5jbHVkZXMoZS50b1VwcGVyQ2FzZSgpKX0seXQ9ZnVuY3Rpb24oZSx0KXtlPWUuaW5kZXhPZih0KTtpZigtMSE9PWUpcmV0dXJuIGUrMX0sdnQ9MTQsd3Q9Qy5kLmEud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXE4YzZ0dC0wIn0pKFsiIiwiICJdLGZ1bmN0aW9uKGUpe3ZhciB0PWUuYnV0dG9uT3BhY2l0eSxuPWUuc2l6ZSxyPWUuYnV0dG9uU3R5bGUsbz1lLmlzU2luZ2xlLGE9ZS5iZ1N0eWxlLGk9ZS5jb2xvcixsPWUuZ3JhZGllbnQsYz1lLmJ1dHRvbkJvcmRlclJhZGl1cyx1PWUuYnV0dG9uSW1hZ2Uscz1lLnRoZW1lLGY9ZS5jdXN0b21JY29uLGQ9ZS5ub3RpZmljYXRpb25JbmRpY2F0b3IscD1lLmJ1dHRvblNoYWRvdyxtPWUuYm9yZGVyLGg9ZS5hbmltYXRpb24sZz1lLmJ1dHRvbkFuaW1hdGlvbixiPWUub3BlbmVkLHk9ZS5pbmRpY2F0b3JQb3NpdGlvbix2PWUubWlycm9yLHc9ZS5kYXRhSW5kZXgseD1lLmRpcmVjdGlvbixrPWUucG9zaXRpb24sUz1lLm9yZGVyLGU9ZS5wb3B1cE9wZW5lZDtyZXR1cm4gT2JqZWN0KEMuYykoWyJkaXNwbGF5OiIsIjtmbGV4LXNocmluazowO29wYWNpdHk6IiwiJTt0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50O3dpZHRoOiIsIjtoZWlnaHQ6IiwiO2JvcmRlci1yYWRpdXM6IiwiOyIsIjsiLCIgIiwiIG9yZGVyOiIsIjtwYWRkaW5nOiIsIjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7b3ZlcmZsb3c6IiwiOyIsIjt0cmFuc2l0aW9uOmFsbCAwLjVzO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MjAwO2JvcmRlcjoiLCI7IiwiICIsIiAiLCI7Jjpob3ZlcntjdXJzb3I6cG9pbnRlcjtjb2xvcjojZmZmZmZmICFpbXBvcnRhbnQ7fSIsIjsiLCIgIiwiICIsIiAiLCIgIiwiICIsIiAiLCIgIiwiICIsIiJdLDA9PT1uPyJub25lIjoiYmxvY2siLHQsZ3QoIm1lZGl1bSIhPT1uJiYic21hbGwiIT09biYmImNsYXNzaWMiIT09cj8zKm46biksZ3QobiksIiIuY29uY2F0KGMsIm1lZGl1bSIhPT1uJiYic21hbGwiIT09biYmImNsYXNzaWMiIT09cj8icHgiOiIlIiksbyYmIm1lZGl1bSI9PT1uJiZPYmplY3QoQy5jKShbIndpZHRoOjI5MHB4O2JvcmRlci1yYWRpdXM6MTBweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6MTBweDtjb2xvcjojZmZmZmZmO2ZvbnQtd2VpZ2h0OmJvbGQ7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDo1MnB4OyJdKSwiY29sb3IiPT09YT9PYmplY3QoQy5jKShbImJhY2tncm91bmQtY29sb3I6IiwiICFpbXBvcnRhbnQ7Il0saXx8IiM4NDg0ODQiKTpPYmplY3QoQy5jKShbImJhY2tncm91bmQ6IiwiOyJdLCJsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAiLmNvbmNhdChsLCIpIikpLHUmJiJjbGFzc2ljIj09PXImJk9iamVjdChDLmMpKFsiYmFja2dyb3VuZC1pbWFnZTp1cmwoICIsIiApO2JhY2tncm91bmQtc2l6ZTpjb3ZlciAhaW1wb3J0YW50O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsiXSx1KSxzLmJ1dHRvbnNPcmRlcixmPyIwIjoiNXB4IiwhZCYmImhpZGRlbiIsIm1lZGl1bSIhPT1uJiYic21hbGwiIT09biYmT2JqZWN0KEMuYykoWyJib3gtc2hhZG93OjBweCAxcHggN3B4IHJnYmEoMTM2LDEzNiwxMzYsIiwiJSk7Il0scCksbSYmIm1lZGl1bSIhPT1uJiYic21hbGwiIT09biYmIiIuY29uY2F0KC4wNDUqbiwicHggc29saWQgI2ZmZmZmZiIpLCJzbWFsbCI9PT1uJiYiI2ZmZmZmZiI9PT1pJiZPYmplY3QoQy5jKShbImJvcmRlcjoxcHggc29saWQgbGlnaHRncmF5O2NvbG9yOmJsYWNrICFpbXBvcnRhbnQ7Jjpob3Zlcntjb2xvcjpibGFjayAhaW1wb3J0YW50O30iXSksIm1lZGl1bSI9PT1uJiYiI2ZmZmZmZiI9PT1pJiZPYmplY3QoQy5jKShbImJvcmRlcjoxcHggc29saWQgbGlnaHRncmF5O2NvbG9yOmJsYWNrICFpbXBvcnRhbnQ7Jjpob3Zlcntjb2xvcjpibGFjayAhaW1wb3J0YW50O30iXSksaCYmT2JqZWN0KEMuYykoWyIiLCIiXSwic3RhbmRhcmQiIT09ZyYmInJpbmciIT09ZyYmImRvdWJsZVJpbmciIT09ZyYmIm1vdmVJbiIhPT1nJiYibWVkaXVtIiE9PW4mJk9iamVjdChDLmMpKFsiYW5pbWF0aW9uOiIsIiAycyBpbmZpbml0ZTthbmltYXRpb24tZGVsYXk6MXM7Jjpob3ZlcnthbmltYXRpb246bm9uZTt9Il0sRShnKSkpLGQmJiJtZWRpdW0iIT09biYmIWImJk9iamVjdChDLmMpKFsiJjpiZWZvcmV7Y29udGVudDonMSc7d2lkdGg6IiwicHg7aGVpZ2h0OiIsInB4O2Rpc3BsYXk6Z3JpZDtwbGFjZS1jb250ZW50OmNlbnRlcjtjb2xvcjojZmZmZmZmO2ZvbnQtc2l6ZToxM3B4O2JhY2tncm91bmQtY29sb3I6cmVkO2JvcmRlci1yYWRpdXM6NTAlO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7cG9zaXRpb246YWJzb2x1dGU7dG9wOiIsInB4OyIsIiBib3gtc2hhZG93OjBweCAxcHggMnB4IHJnYmEoMCwwLDAsNTAlKTt9OyJdLE1hdGgubWluKC4zKm4sMjApLE1hdGgubWluKC4zKm4sMjApLHktNCx2P09iamVjdChDLmMpKFsibGVmdDoiLCJweDsiXSx5LTQpOk9iamVjdChDLmMpKFsicmlnaHQ6IiwicHg7Il0seS00KSksYiYmT2JqZWN0KEMuYykoWyJhbmltYXRpb246bm9uZTsiXSksZSYmT2JqZWN0KEMuYykoWyJhbmltYXRpb246bm9uZTsiXSksIm1lZGl1bSIhPT1uJiYic21hbGwiIT09biYmImNsYXNzaWMiIT09ciYmT2JqZWN0KEMuYykoWyJhbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCwxZnIpOyIsIiJdLHY/T2JqZWN0KEMuYykoWyJwYWRkaW5nOjAgMTVweCAwIDIwcHg7Il0pOk9iamVjdChDLmMpKFsicGFkZGluZzowIDIwcHggMCAxNXB4OyJdKSksImNsYXNzaWMiIT09ciYmIm1lZGl1bSI9PT1ufHwic21hbGwiPT09biYmT2JqZWN0KEMuYykoWyJkaXNwbGF5OmdyaWQ7cGxhY2UtY29udGVudDpjZW50ZXI7Il0pLHYmJk9iamVjdChDLmMpKFsiZGlyZWN0aW9uOnJ0bDsiXSksInNtYWxsIj09PW4mJk9iamVjdChDLmMpKFsiZGlzcGxheTpibG9jazsiXSksdyYmImFyb3VuZCI9PT14JiYibWVkaXVtIiE9PW4mJiJzbWFsbCIhPT1uJiZPYmplY3QoQy5jKShbInRyYW5zZm9ybTpyb3RhdGUoIiwiZGVnKTsiXSwicmlnaHQiPT09az93KigzNjAvLU8oUykpLTE1KlMuc2xpY2UoMCw0KS5sZW5ndGg6dyooMzYwLy1PKFMpKS0xNSpTLnNsaWNlKDAsNCkubGVuZ3RoLTkwKSxwPDI1JiYiI2ZmZmZmZiI9PT1pJiZPYmplY3QoQy5jKShbIm91dGxpbmU6MXB4IHNvbGlkIGxpZ2h0Z3JheTsmOmhvdmVye291dGxpbmU6MXB4IHNvbGlkIGxpZ2h0Z3JheSAhaW1wb3J0YW50O30iXSkscDwyNSYmbSYmT2JqZWN0KEMuYykoWyJvdXRsaW5lOjFweCBzb2xpZCBsaWdodGdyYXk7Jjpob3ZlcntvdXRsaW5lOjFweCBzb2xpZCBsaWdodGdyYXkgIWltcG9ydGFudDt9Il0pKX0pLHh0PUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXE4YzZ0dC0xIn0pKFsiIiwiIl0sZnVuY3Rpb24oZSl7dmFyIHQ9ZS50aGVtZSxuPWUuYW5pbWF0aW9uLHI9ZS5idXR0b25BbmltYXRpb24sbz1lLnNpemUsYT1lLmJ1dHRvblN0eWxlLGk9ZS5idXR0b25Cb3JkZXJSYWRpdXMsbD1lLmNvbG9yLGM9ZS5vcGVuZWQsZT1lLnBvcHVwT3BlbmVkO3JldHVybiBPYmplY3QoQy5jKShbIm9yZGVyOiIsIjtwb3NpdGlvbjpyZWxhdGl2ZTsiLCIgIiwiICIsIiAiLCIiXSx0LmJ1dHRvbnNPcmRlcixuJiZPYmplY3QoQy5jKShbIiIsIiAiLCIgIiwiIl0sInJpbmciPT09ciYmT2JqZWN0KEMuYykoWyJhbmltYXRpb24tZGVsYXk6MXM7Jjo6YWZ0ZXJ7Y29udGVudDonJztib3JkZXItcmFkaXVzOiIsIjtib3JkZXI6NnB4IHNvbGlkICIsIjtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Oi0xO3RvcDo1MCU7bGVmdDo1MCU7aGVpZ2h0OiIsIjt3aWR0aDoiLCI7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO2FuaW1hdGlvbjoiLCIgMS41cyBpbmZpbml0ZTtvcGFjaXR5OjA7fSY6aG92ZXJ7YW5pbWF0aW9uOm5vbmU7fSJdLCIiLmNvbmNhdChpLCJtZWRpdW0iIT09byYmInNtYWxsIiE9PW8mJiJjbGFzc2ljIiE9PWE/InB4IjoiJSIpLGwsImNsYXNzaWMiIT09YT8iMTMwJSI6IjE1MCUiLCJjbGFzc2ljIiE9PWE/IjEzMCUiOiIxNTAlIixFKHIpKSwiZG91YmxlUmluZyI9PT1yJiZPYmplY3QoQy5jKShbImFuaW1hdGlvbi1kZWxheToxczsmOmhvdmVye2FuaW1hdGlvbjpub25lO30mOjphZnRlcntjb250ZW50OicnO29wYWNpdHk6MDtib3JkZXItcmFkaXVzOiIsIjtib3JkZXI6NnB4IHNvbGlkICIsIjtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Oi0xO3RvcDo1MCU7bGVmdDo1MCU7aGVpZ2h0OiIsIjt3aWR0aDoiLCI7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO2FuaW1hdGlvbjoiLCIgMS41cyBpbmZpbml0ZTt9Jjo6YmVmb3Jle2NvbnRlbnQ6Jyc7Ym9yZGVyLXJhZGl1czoiLCI7Ym9yZGVyOjZweCBzb2xpZCAiLCI7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDotMTt0b3A6NTAlO2xlZnQ6NTAlO2hlaWdodDoiLCI7d2lkdGg6IiwiO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTthbmltYXRpb246IiwiIDNzIGluZmluaXRlO29wYWNpdHk6MDt9Il0sIiIuY29uY2F0KGksIm1lZGl1bSIhPT1vJiYic21hbGwiIT09byYmImNsYXNzaWMiIT09YT8icHgiOiIlIiksbCwiY2xhc3NpYyIhPT1hPyIxMzAlIjoiMTUwJSIsImNsYXNzaWMiIT09YT8iMTMwJSI6IjE1MCUiLEUociksIiIuY29uY2F0KGksIm1lZGl1bSIhPT1vJiYic21hbGwiIT09byYmImNsYXNzaWMiIT09YT8icHgiOiIlIiksbCwiY2xhc3NpYyIhPT1hPyIxMzAlIjoiMTUwJSIsImNsYXNzaWMiIT09YT8iMTMwJSI6IjE1MCUiLEUocikpLCJtb3ZlSW4iPT09ciYmT2JqZWN0KEMuYykoWydhbmltYXRpb24tZGVsYXk6MXM7b3ZlcmZsb3c6dW5zZXQ7Jjpob3ZlcnthbmltYXRpb246bm9uZTt9JjphZnRlcntjb250ZW50OiIiO2FuaW1hdGlvbjonLCIgM3MgaW5maW5pdGU7b3BhY2l0eTowO2JhY2tncm91bmQtY29sb3I6IiwiNjk7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOiIsIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7ei1pbmRleDotMTtib3gtc2hhZG93OjAgMCA1MHB4IHJnYmEoMCwwLDAsMC4xKTt9Il0sRShyKSxsLCIiLmNvbmNhdChpLCJtZWRpdW0iIT09byYmInNtYWxsIiE9PW8mJiJjbGFzc2ljIiE9PWE/InB4IjoiJSIpKSksYyYmT2JqZWN0KEMuYykoWyImOmFmdGVyLCY6YmVmb3Jle2FuaW1hdGlvbjpub25lO30iXSksZSYmT2JqZWN0KEMuYykoWyImOmFmdGVyLCY6YmVmb3Jle2FuaW1hdGlvbjpub25lO30iXSksIm1lZGl1bSI9PT1vJiZPYmplY3QoQy5jKShbIiY6YWZ0ZXIsJjpiZWZvcmV7YW5pbWF0aW9uOm5vbmU7fSJdKSl9KSxrdD1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1xOGM2dHQtMiJ9KShbIiIsIiJdLGZ1bmN0aW9uKGUpe3ZhciB0PWUuYnV0dG9uU3R5bGUsbj1lLnNpemUscj1lLnRoZW1lLG89ZS5idXR0b25TaGFkb3csYT1lLmRpcmVjdGlvbixpPWUubWlycm9yLGw9ZS5vcmRlcixlPWUuZGF0YUluZGV4O3JldHVybiBPYmplY3QoQy5jKShbInBvc2l0aW9uOmFic29sdXRlOyIsIiAiLCIgei1pbmRleDoxMDAwO3BhZGRpbmc6N3B4IDEwcHg7Zm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhIE5ldWUsSGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC1zaXplOiIsInB4O2xpbmUtaGVpZ2h0OjEuMSAhaW1wb3J0YW50O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwLjEpO2JvcmRlci1yYWRpdXM6NHB4O2NvbG9yOiMzMzM7YmFja2dyb3VuZDp3aGl0ZTtib3gtc2hhZG93OjBweCAxcHggN3B4IHJnYmEoMTM2LDEzNiwxMzYsIiwiJSk7d2hpdGUtc3BhY2U6bm93cmFwO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNmb3JtLW9yaWdpbjoiLCI7IiwiICIsIiAiLCIgIiwiIl0sImNsYXNzaWMiIT09dCYmIm1lZGl1bSIhPT1uJiYic21hbGwiIT09bj9PYmplY3QoQy5jKShbImRpc3BsYXk6bm9uZSAhaW1wb3J0YW50OyJdKTpPYmplY3QoQy5jKShbImRpc3BsYXk6bm9uZTsiXSksInNtYWxsIiE9PW4mJiJtZWRpdW0iIT09bj9PYmplY3QoQy5jKShbIiIsIjoiLCJweDt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpOyJdLHIucG9zaXRpb24sbisxNyk6T2JqZWN0KEMuYykoWyJsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTtib3R0b206IiwicHg7Il0sInNtYWxsIj09PW4/LTMzOiJtZWRpdW0iPT09bj8tMzg6biksTWF0aC5taW4oInNtYWxsIj09PW4/MzQqLjI4OiJtZWRpdW0iPT09bj80NSouMjg6LjI4Km4sMTcuNSksMjA8bz9vOjIwLHIucG9zaXRpb24sInNtYWxsIiE9PW4mJiJtZWRpdW0iIT09biYmInJvdyI9PT1hJiZPYmplY3QoQy5jKShbInRvcDotNDVweDsiLCI6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKCIsIik7Il0sci5wb3NpdGlvbiwibGVmdCI9PT1yLnBvc2l0aW9uPyItNTAlIjoiNTAlIiksInNtYWxsIiE9PW4mJiJtZWRpdW0iIT09biYmT2JqZWN0KEMuYykoWyImOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgcmdiYSgwLDAsMCwuMDkpO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKCIsIik7IiwifSY6OmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkICNmZmY7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoIiwiKTsiLCJ9Il0sInJpZ2h0Ij09PXIucG9zaXRpb24/IjE4MGRlZyI6IjBkZWciLCJyaWdodCI9PT1yLnBvc2l0aW9uP09iamVjdChDLmMpKFsicmlnaHQ6LTExcHg7IiwiIl0sInJvdyI9PT1hJiZPYmplY3QoQy5jKShbInRvcDp1bnNldDtyaWdodDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNTAlKSByb3RhdGUoMjcwZGVnKTtib3R0b206LTExcHg7Il0pKTpPYmplY3QoQy5jKShbImxlZnQ6LTExcHg7IiwiIl0sInJvdyI9PT1hJiZPYmplY3QoQy5jKShbInRvcDp1bnNldDtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSByb3RhdGUoMjcwZGVnKTtib3R0b206LTExcHg7Il0pKSwicmlnaHQiPT09ci5wb3NpdGlvbj8iMTgwZGVnIjoiMGRlZyIsInJpZ2h0Ij09PXIucG9zaXRpb24mJiJyb3ciIT09YT9PYmplY3QoQy5jKShbInJpZ2h0Oi0xMHB4OyIsIiJdLCJyb3ciPT09YSYmT2JqZWN0KEMuYykoWyJ0b3A6dW5zZXQ7cmlnaHQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDUwJSkgcm90YXRlKDI3MGRlZyk7Ym90dG9tOi0xMHB4OyJdKSk6T2JqZWN0KEMuYykoWyJsZWZ0Oi0xMHB4OyIsIiJdLCJyb3ciPT09YSYmT2JqZWN0KEMuYykoWyJ0b3A6dW5zZXQ7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgcm90YXRlKDI3MGRlZyk7Ym90dG9tOi0xMHB4OyJdKSkpLGkmJk9iamVjdChDLmMpKFsiZGlyZWN0aW9uOnJ0bDt1bmljb2RlLWJpZGk6cGxhaW50ZXh0OyJdKSxlJiYiYXJvdW5kIj09PWEmJiJtZWRpdW0iIT09biYmInNtYWxsIiE9PW4mJk9iamVjdChDLmMpKFsidG9wOnVuc2V0O2xlZnQ6dW5zZXQ7cmlnaHQ6dW5zZXQ7Ym90dG9tOnVuc2V0OyIsIiAiLCIgIiwiICIsIiAiLCIgIiwiICIsIiAiLCIgdHJhbnNmb3JtOnJvdGF0ZSgiLCJkZWcpOyJdLDE9PT1lJiZPYmplY3QoQy5jKShbIiIsIiJdLCJyaWdodCI9PT1yLnBvc2l0aW9uP09iamVjdChDLmMpKFsicmlnaHQ6NTAlO2JvdHRvbTotNTAlOyJdKTpPYmplY3QoQy5jKShbInJpZ2h0OjUwJTtib3R0b206MjUlOyJdKSksMj09PWUmJjQ9PT1sLnNsaWNlKDAsNCkubGVuZ3RoJiZPYmplY3QoQy5jKShbIiIsIiJdLCJyaWdodCI9PT1yLnBvc2l0aW9uP09iamVjdChDLmMpKFsicmlnaHQ6MTAlO2JvdHRvbTotNDAlOyJdKTpPYmplY3QoQy5jKShbInJpZ2h0OjEyJTtib3R0b206LTE1JTsiXSkpLDM9PT1lJiY0PT09bC5zbGljZSgwLDQpLmxlbmd0aCYmT2JqZWN0KEMuYykoWyIiLCIiXSwicmlnaHQiPT09ci5wb3NpdGlvbj9PYmplY3QoQy5jKShbInJpZ2h0Oi0yMCU7Ym90dG9tOi01JTsiXSk6T2JqZWN0KEMuYykoWyJyaWdodDotNDElO2JvdHRvbTotNTMlOyJdKSksND09PWUmJjQ9PT1sLnNsaWNlKDAsNCkubGVuZ3RoJiZPYmplY3QoQy5jKShbIiIsIiJdLCJyaWdodCI9PT1yLnBvc2l0aW9uP09iamVjdChDLmMpKFsicmlnaHQ6LTMwJTtib3R0b206MzAlOyJdKTpPYmplY3QoQy5jKShbInJpZ2h0Oi04OCU7Ym90dG9tOi02MSU7Il0pKSwyPT09ZSYmMz09PWwuc2xpY2UoMCw0KS5sZW5ndGgmJk9iamVjdChDLmMpKFsiIiwiIl0sInJpZ2h0Ij09PXIucG9zaXRpb24/T2JqZWN0KEMuYykoWyJyaWdodDotNSU7Ym90dG9tOi0yNSU7Il0pOk9iamVjdChDLmMpKFsicmlnaHQ6NSU7Ym90dG9tOi0zOCU7Il0pKSwzPT09ZSYmMz09PWwuc2xpY2UoMCw0KS5sZW5ndGgmJk9iamVjdChDLmMpKFsiIiwiIl0sInJpZ2h0Ij09PXIucG9zaXRpb24/T2JqZWN0KEMuYykoWyJyaWdodDotMjUlO2JvdHRvbToyNSU7Il0pOk9iamVjdChDLmMpKFsicmlnaHQ6LTkwJTtib3R0b206LTYwJTsiXSkpLDE9PT1lJiYyPT09bC5zbGljZSgwLDQpLmxlbmd0aCYmT2JqZWN0KEMuYykoWyIiLCIiXSwicmlnaHQiPT09ci5wb3NpdGlvbj9PYmplY3QoQy5jKShbInJpZ2h0OjM1JTtib3R0b206LTUwJTsiXSk6T2JqZWN0KEMuYykoWyJyaWdodDo0NiU7Ym90dG9tOjglOyJdKSksMj09PWUmJjI9PT1sLnNsaWNlKDAsNCkubGVuZ3RoJiZPYmplY3QoQy5jKShbIiIsIiJdLCJyaWdodCI9PT1yLnBvc2l0aW9uP09iamVjdChDLmMpKFsicmlnaHQ6LTI1JTtib3R0b206MTUlOyJdKTpPYmplY3QoQy5jKShbInJpZ2h0Oi03NCU7Ym90dG9tOi02MCU7Il0pKSwicmlnaHQiPT09ci5wb3NpdGlvbj9lKigzNjAvLU8obCkpLTE1Kmwuc2xpY2UoMCw0KS5sZW5ndGg6ZSooMzYwLy1PKGwpKS0xNSpsLnNsaWNlKDAsNCkubGVuZ3RoLTkwKSl9KSxTdD1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1xOGM2dHQtMyJ9KShbIiIsIiJdLGZ1bmN0aW9uKGUpe3ZhciB0PWUudGhlbWUsbj1lLnNpemUscj1lLmRhdGFJbmRleCxvPWUuZGlyZWN0aW9uLGU9ZS5vcmRlcjtyZXR1cm4gT2JqZWN0KEMuYykoWyJkaXNwbGF5OmZsZXg7bWFyZ2luOiIsInB4O3Bvc2l0aW9uOnJlbGF0aXZlO2p1c3RpZnktY29udGVudDoiLCI7bWF4LWhlaWdodDoiLCJweDsiLCIgIiwiIl0sdnQvMix0LmNvbnRhaW5lckRpcmVjdGlvbixuLHImJiJhcm91bmQiPT09byYmIm1lZGl1bSIhPT1uJiYic21hbGwiIT09biYmT2JqZWN0KEMuYykoWyJwb3NpdGlvbjpmaXhlZDt0cmFuc2Zvcm06cm90YXRlKCIsImRlZykgdHJhbnNsYXRlWSgiLCJweCk7Il0sciooMzYwL08oZSkpLDIqbitmdW5jdGlvbihlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMjpyZXR1cm4tMjA7Y2FzZSAzOnJldHVybiAwO2RlZmF1bHQ6cmV0dXJuIDUwfX0oZSkpLFUoKSYmT2JqZWN0KEMuYykoWyImOmhvdmVyICIsIntkaXNwbGF5OmZsZXg7YW5pbWF0aW9uOiIsIiAwLjFzIGxpbmVhcjt9Il0sa3QsImxlZnQiPT09dC5wb3NpdGlvbj9YZTpZZSkpfSksRz1DLmQucC53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtcThjNnR0LTQifSkoWyIiLCIgICJdLGZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3Isbj1lLnNpemUsZT1lLm1pcnJvcjtyZXR1cm4gT2JqZWN0KEMuYykoWyJtYXJnaW46MCAhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOjAuNXB4O2ZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSBOZXVlLEhlbHZldGljYSxzYW5zLXNlcmlmOyIsIiBncmlkLWFyZWE6MSAvIDIgLyAyIC8gNTsiLCIiXSwiI2ZmZmZmZiI9PT10fHwiI2YzZjNmMyI9PT10P09iamVjdChDLmMpKFsiY29sb3I6IzAwMDAwMCAhaW1wb3J0YW50OyY6aG92ZXJ7Y29sb3I6IzAwMDAwMCAhaW1wb3J0YW50O30iXSk6T2JqZWN0KEMuYykoWyJjb2xvcjojZmZmZmZmOyJdKSwibWVkaXVtIiE9PW4/T2JqZWN0KEMuYykoWyIiLCIgbGluZS1oZWlnaHQ6MS4yNSAhaW1wb3J0YW50O2ZvbnQtc2l6ZToiLCJweDsiXSxlP09iamVjdChDLmMpKFsibWFyZ2luLXJpZ2h0OjEwcHg7dW5pY29kZS1iaWRpOnBsYWludGV4dDsiXSk6T2JqZWN0KEMuYykoWyJ0ZXh0LWFsaWduOmxlZnQ7bWFyZ2luLWxlZnQ6MTBweDsiXSksTWF0aC5taW4oLjI5Km4sMjIpKTpPYmplY3QoQy5jKShbImxpbmUtaGVpZ2h0OjEgIWltcG9ydGFudDtmb250LXNpemU6MjBweDsiXSkpfSk7ZnVuY3Rpb24gQ3QoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1uKXt2YXIgcixvLGEsaSxsPVtdLGM9ITAsdT0hMTt0cnl7aWYoYT0obj1uLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0ocj1hLmNhbGwobikpLmRvbmUpJiYobC5wdXNoKHIudmFsdWUpLGwubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsbz1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1uLnJldHVybiYmKGk9bi5yZXR1cm4oKSxPYmplY3QoaSkhPT1pKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IG99fXJldHVybiBsfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9FdChlLHQpOiJNYXAiPT09KG49Ik9iamVjdCI9PT0obj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSkpJiZlLmNvbnN0cnVjdG9yP2UuY29uc3RydWN0b3IubmFtZTpuKXx8IlNldCI9PT1uP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9FdChlLHQpOnZvaWQgMH0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIEV0KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gT3QoKXt2YXIgZT0uMDEqd2luZG93LmlubmVySGVpZ2h0O2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS12aCIsIiIuY29uY2F0KGUsInB4IikpfU90KCksd2luZG93Lm9ucmVzaXplPWZ1bmN0aW9uKCl7T3QoKX07ZnVuY3Rpb24ganQoZSl7dmFyIGU9ZS5zaXplLHQ9KHI9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3MpLmFwcGxlSWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0sdmVyc2lvbjoiMS4xIix2aWV3Qm94OiIwIDAgMTM4IDEyNSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNjguODIsMTMuNzJjLTI5LjU1LDAtNTMuNSwyMC01My41LDQ0LjU2LDAsMTUuNjQsOS44OSwzMC4xMiwyNiwzOC4xNkE0Mi40Miw0Mi40MiwwLDAsMSwzMiwxMDkuNTMsNTcuMyw1Ny4zLDAsMCwwLDUzLjY4LDEwMWE2NCw2NCwwLDAsMCwxNS4xNCwxLjg0YzI5LjU1LDAsNTMuNS0yMCw1My41LTQ0LjU2Uzk4LjM3LDEzLjcyLDY4LjgyLDEzLjcyWiJ9KSl9dmFyIGs9T2JqZWN0KEMuZCkodCkud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXI4cmZ6eC0wIn0pKFsiIiwiIl0sZnVuY3Rpb24oZSl7dmFyIHQ9ZS5taXJyb3Isbj1lLnRoZW1lLHI9ZS5zaXplLG89ZS5idXR0b25TaGFkb3csZT1lLmN1c3RvbVNldHRpbmdzO3JldHVybiBPYmplY3QoQy5jKShbImJveC1zaGFkb3c6MHB4IDFweCA3cHggcmdiYSgxMzYsMTM2LDEzNiwiLCIlKTttaW4taGVpZ2h0OjE0OXB4O2JvcmRlci1yYWRpdXM6MTBweDsiLCI6MDtib3R0b206IiwncHg7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmO3dpZHRoOjMwMnB4O3Bvc2l0aW9uOmFic29sdXRlO2xpbmUtaGVpZ2h0OjIzcHg7Zm9udC1zaXplOjE0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1mYW1pbHk6Um9ib3RvLCJIZWx2ZXRpY2EgTmV1ZSIsc2Fucy1zZXJpZjsnLCIgIiwiIl0sMjA8bz9vOjIwLG4ucG9zaXRpb24sciszMCwid2hhdHNhcHAiIT09ZSYmRCgpJiZPYmplY3QoQy5jKShbInBvc2l0aW9uOmZpeGVkO2JvdHRvbTowO3JpZ2h0OjA7ei1pbmRleDo5OTk5O2JvcmRlci1yYWRpdXM6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2hlaWdodDpjYWxjKHZhcigtLXZoKSAqIDEwMCk7Il0pLHQmJk9iamVjdChDLmMpKFsiZGlyZWN0aW9uOnJ0bDsiXSkpfSksUz1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yOHJmengtMSJ9KShbImN1cnNvcjpwb2ludGVyO3dpZHRoOjI0cHg7IiwiIl0sZnVuY3Rpb24oZSl7cmV0dXJuIGUubWlycm9yP09iamVjdChDLmMpKFsibWFyZ2luOjZweCBhdXRvIDAgMTJweDsiXSk6T2JqZWN0KEMuYykoWyJtYXJnaW46NnB4IDEycHggMCBhdXRvOyJdKX0pLGo9Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtcjhyZnp4LTIifSkoWyIiLCIiXSxmdW5jdGlvbihlKXt2YXIgdD1lLmdyYWRpZW50LG49ZS5iZ1N0eWxlLGU9ZS5jb2xvcjtyZXR1cm4gT2JqZWN0KEMuYykoWyIiLCIgZGlzcGxheTpmbGV4O2hlaWdodDo1MHB4O2JvcmRlci1yYWRpdXM6OXB4IDlweCAwIDA7YWxpZ24taXRlbXM6Y2VudGVyO3RleHQtYWxpZ246bGVmdDsiLCIiXSwiY29sb3IiPT09bj9PYmplY3QoQy5jKShbImJhY2tncm91bmQtY29sb3I6IiwiOyJdLGUpOk9iamVjdChDLmMpKFsiYmFja2dyb3VuZDoiLCI7Il0sImxpbmVhci1ncmFkaWVudCgxMzVkZWcsICIuY29uY2F0KHQsIikiKSksRCgpJiZPYmplY3QoQy5jKShbImJvcmRlci1yYWRpdXM6MDsiXSkpfSksQXQ9Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtcjhyZnp4LTMifSkoWyJ0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6I0ZGRkZGRjsiLCIiXSxmdW5jdGlvbihlKXtyZXR1cm4gZS5taXJyb3ImJk9iamVjdChDLmMpKFsidW5pY29kZS1iaWRpOnBsYWludGV4dDsiXSl9KSxBPUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXI4cmZ6eC00In0pKFsid2lkdGg6MjhweDtoZWlnaHQ6MjhweDsiLCIiXSxmdW5jdGlvbihlKXtyZXR1cm4gZS5taXJyb3I/T2JqZWN0KEMuYykoWyJtYXJnaW46MCAxMnB4IDAgM3B4OyJdKTpPYmplY3QoQy5jKShbIm1hcmdpbjowIDNweCAwIDEycHg7Il0pfSksUHQ9T2JqZWN0KEMuZCkoaykud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXI4cmZ6eC01In0pKFsiYm9yZGVyLXJhZGl1czoxNnB4O3dpZHRoOjMyMHB4OyJdKSxJdD1PYmplY3QoQy5kKShqKS53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtcjhyZnp4LTYifSkoWyJqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjtib3JkZXItcmFkaXVzOjE2cHggMTZweCAwIDA7cGFkZGluZzowIDE1cHg7aGVpZ2h0OjgwcHg7Il0pLF90PUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXI4cmZ6eC03In0pKFsiZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDsiXSksenQ9Qy5kLmg0LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yOHJmengtOCJ9KShbImNvbG9yOiNGRkZGRkY7bWFyZ2luOjA7bGluZS1oZWlnaHQ6MTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDpib2xkOyIsIiBsZXR0ZXItc3BhY2luZzowLjNweDsiXSxmdW5jdGlvbihlKXtyZXR1cm4gZS5taXJyb3I/T2JqZWN0KEMuYykoWyJ0ZXh0LWFsaWduOnJpZ2h0O3VuaWNvZGUtYmlkaTpwbGFpbnRleHQ7Il0pOk9iamVjdChDLmMpKFsidGV4dC1hbGlnbjpsZWZ0OyJdKX0pLFR0PUMuZC5wLndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yOHJmengtOSJ9KShbIiIsIiBjb2xvcjojZmZmZmZmY2M7bWFyZ2luOjVweCAwIDAgMDtsaW5lLWhlaWdodDoxO3dpZHRoOjE4MHB4O2xldHRlci1zcGFjaW5nOjAuM3B4OyJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLm1pcnJvcj9PYmplY3QoQy5jKShbInRleHQtYWxpZ246cmlnaHQ7dW5pY29kZS1iaWRpOnBsYWludGV4dDsiXSk6T2JqZWN0KEMuYykoWyJ0ZXh0LWFsaWduOmxlZnQ7Il0pfSksTHQ9Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtcjhyZnp4LTEwIn0pKFsid2lkdGg6NDVweDtoZWlnaHQ6NDVweDsiXSksTXQ9Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtcjhyZnp4LTExIn0pKFsiY3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpncmlkOyJdKSxSdD1PYmplY3QoQy5kKShrKS53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtcjhyZnp4LTEyIn0pKFsid2lkdGg6NTA1cHg7IiwiIl0sRCgpJiZPYmplY3QoQy5jKShbIndpZHRoOjEwMCU7Il0pKSxOdD1PYmplY3QoQy5kKShrKS53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtcjhyZnp4LTEzIn0pKFsid2lkdGg6NDgwcHg7bGluZS1oZWlnaHQ6MHB4OyIsIiJdLEQoKT9PYmplY3QoQy5jKShbIndpZHRoOjEwMCU7Il0pOk9iamVjdChDLmMpKFsiQG1lZGlhIChtYXgtd2lkdGg6NTIwcHgpe3dpZHRoOjM4MHB4O31AbWVkaWEgKG1heC13aWR0aDo0MDBweCl7d2lkdGg6MjgwcHg7fUBtZWRpYSAobWF4LWhlaWdodDo2MDBweCl7Ym90dG9tOjdweCAhaW1wb3J0YW50OyIsIjoiLCJweCAhaW1wb3J0YW50O30iXSxmdW5jdGlvbihlKXtyZXR1cm4gZS50aGVtZS5wb3NpdGlvbn0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2l6ZSszMH0pKSxEdD1PYmplY3QoQy5kKShrKS53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtcjhyZnp4LTE0In0pKFsiaGVpZ2h0OjY4MHB4O21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDE3MHB4KTtib3JkZXItcmFkaXVzOjIzcHg7d2lkdGg6MzMwcHg7IiwiIl0sRCgpP09iamVjdChDLmMpKFsid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtoZWlnaHQ6Y2FsYyh2YXIoLS12aCkgKiAxMDApO21heC1oZWlnaHQ6dW5zZXQ7Ym9yZGVyLXJhZGl1czowOyJdKTpPYmplY3QoQy5jKShbIkBtZWRpYSAobWF4LWhlaWdodDo1MDBweCl7bWF4LWhlaWdodDpjYWxjKDEwMHZoIC0gNDBweCk7Ym90dG9tOjdweCAhaW1wb3J0YW50OyIsIjoiLCJweCAhaW1wb3J0YW50O31AbWVkaWEgKG1heC13aWR0aDozNzBweCl7d2lkdGg6MjgwcHg7fSJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRoZW1lLnBvc2l0aW9ufSxmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplKzMwfSkpLFV0PU9iamVjdChDLmQpKGspLndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yOHJmengtMTUifSkoWyJ3aWR0aDo0ODBweDtsaW5lLWhlaWdodDowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym94LXNoYWRvdzpub25lOyIsIiJdLEQoKT9PYmplY3QoQy5jKShbIndpZHRoOjEwMCU7YmFja2dyb3VuZDojZmZmZmZmOyJdKTpPYmplY3QoQy5jKShbIkBtZWRpYSAobWF4LXdpZHRoOjUyMHB4KXt3aWR0aDozODBweDt9QG1lZGlhIChtYXgtd2lkdGg6NDAwcHgpe3dpZHRoOjI4MHB4O31AbWVkaWEgKG1heC1oZWlnaHQ6NTAwcHgpe2JvdHRvbTo3cHggIWltcG9ydGFudDsiLCI6IiwicHggIWltcG9ydGFudDt9Il0sZnVuY3Rpb24oZSl7cmV0dXJuIGUudGhlbWUucG9zaXRpb259LGZ1bmN0aW9uKGUpe3JldHVybiBlLnNpemUrMzB9KSksQnQ9T2JqZWN0KEMuZCkoUykud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXI4cmZ6eC0xNiJ9KShbImJhY2tncm91bmQ6I2ZmZmZmZjtib3JkZXItcmFkaXVzOjMwcHg7cGFkZGluZzo2cHg7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDsiLCIgIiwiIl0sIUQoKSYmT2JqZWN0KEMuYykoWyJib3gtc2hhZG93OjBweCAxcHggN3B4IHJnYmEoMTM2LDEzNiwxMzYsIiwiJSk7Il0sZnVuY3Rpb24oZSl7cmV0dXJuIDIwPGUuYnV0dG9uU2hhZG93P2UuYnV0dG9uU2hhZG93OjIwfSksZnVuY3Rpb24oZSl7cmV0dXJuIGUubWlycm9yP09iamVjdChDLmMpKFsibWFyZ2luOjAgYXV0byAwIDA7Il0pOk9iamVjdChDLmMpKFsibWFyZ2luOjAgMCAwIGF1dG87Il0pfSksUD1mdW5jdGlvbihlKXtlPWUuY3VzdG9tU2V0dGluZ3M7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KCJzdmciLHtzdHlsZToid2hhdHNhcHAiPT09ZT97d2lkdGg6IjI1cHgiLGhlaWdodDoiMjVweCIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn06InlvdXR1YmUiPT09ZT97d2lkdGg6IjEwMCUiLGZpbGw6IiMwMDAwMDAiLHN0cm9rZToibm9uZSJ9Ont3aWR0aDoiMTAwJSIsaGVpZ2h0OiIyNHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifSx2aWV3Qm94OiIwIDAgMjQgMjQiLHdpZHRoOiIyNCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0wIDBoMjR2MjRIMHoiLGZpbGw6Im5vbmUifSkpfSxOPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt4KHkpfWZ1bmN0aW9uIG4oKXtmKCl9dmFyIHI9ZS5pY29uLG89ZS5tZXNzZW5nZXJUaXRsZSxhPWUuY29sb3IsaT1lLmNoaWxkcmVuLGw9ZS5lbmFibGVQb3B1cCxjPWUuY3VzdG9tU2V0dGluZ3MsYz12b2lkIDAhPT1jJiZjLHU9ZS5iZ1N0eWxlLHU9dm9pZCAwPT09dT8iY29sb3IiOnUsZT1lLnNpemUscz1PYmplY3QoRi51c2VDb250ZXh0KShWKSxmPXMuYWN0aW9ucy5jbG9zZUJ1dHRvblBvcHVwLHM9cy5zZXR0aW5ncyxkPXMubWlycm9yLHA9cy53aGF0c2FwcFBvcHVwVGl0bGUsbT1zLndoYXRzYXBwUG9wdXBTdWJ0aXRsZSxoPXMuYnV0dG9uU2hhZG93LHM9cy5kaXJlY3Rpb24sZz1wZShhLDUpLGI9Q3QoT2JqZWN0KEYudXNlU3RhdGUpKCExKSwyKSx5PWJbMF0sdj1iWzFdLGI9Q3QoT2JqZWN0KEYudXNlU3RhdGUpKCExKSwyKSx3PWJbMF0seD1iWzFdO09iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXtsPyh2KCEwKSx4KCEwKSk6dighMSl9KTtyZXR1cm4ieW91dHViZSI9PT1jP3cmJkguYS5jcmVhdGVFbGVtZW50KFV0LHtpc1Nob3c6eSxvbkFuaW1hdGlvbkVuZDp0LHNpemU6ZSxidXR0b25TaGFkb3c6aCxkaXJlY3Rpb246cyxjdXN0b21TZXR0aW5nczpjfSxILmEuY3JlYXRlRWxlbWVudChqLG51bGwsRCgpJiZILmEuY3JlYXRlRWxlbWVudChBLHttaXJyb3I6ZH0sciksSC5hLmNyZWF0ZUVsZW1lbnQoQnQse29uTW91c2VVcDpuLG1pcnJvcjpkLGJ1dHRvblNoYWRvdzpofSxILmEuY3JlYXRlRWxlbWVudChQLHtjdXN0b21TZXR0aW5nczpjfSkpKSxpKToid29uZGVyY2hhdCI9PT1jP3cmJkguYS5jcmVhdGVFbGVtZW50KER0LHtpc1Nob3c6eSxvbkFuaW1hdGlvbkVuZDp0LHNpemU6ZSxidXR0b25TaGFkb3c6aCxkaXJlY3Rpb246cyxjdXN0b21TZXR0aW5nczpjfSxEKCkmJkguYS5jcmVhdGVFbGVtZW50KGose2NvbG9yOmEsYmdTdHlsZTp1LGdyYWRpZW50Omd9LEguYS5jcmVhdGVFbGVtZW50KEEse21pcnJvcjpkfSxyKSxILmEuY3JlYXRlRWxlbWVudChBdCx7bWlycm9yOmR9LG8pLEguYS5jcmVhdGVFbGVtZW50KFMse29uTW91c2VVcDpuLG1pcnJvcjpkfSxILmEuY3JlYXRlRWxlbWVudChQLG51bGwpKSksaSk6Imdvb2dsZW1hcCI9PT1jP3cmJkguYS5jcmVhdGVFbGVtZW50KE50LHtpc1Nob3c6eSxvbkFuaW1hdGlvbkVuZDp0LHNpemU6ZSxidXR0b25TaGFkb3c6aCxkaXJlY3Rpb246cyxjdXN0b21TZXR0aW5nczpjfSxILmEuY3JlYXRlRWxlbWVudChqLHtjb2xvcjphLGJnU3R5bGU6dSxncmFkaWVudDpnfSxILmEuY3JlYXRlRWxlbWVudChBLHttaXJyb3I6ZH0sciksSC5hLmNyZWF0ZUVsZW1lbnQoQXQse21pcnJvcjpkfSxvKSxILmEuY3JlYXRlRWxlbWVudChTLHtvbk1vdXNlVXA6bixtaXJyb3I6ZH0sSC5hLmNyZWF0ZUVsZW1lbnQoUCxudWxsKSkpLGkpOiJ3aGF0c2FwcCI9PT1jP3cmJkguYS5jcmVhdGVFbGVtZW50KFB0LHtpc1Nob3c6eSxvbkFuaW1hdGlvbkVuZDp0LHNpemU6ZSxtaXJyb3I6ZCxidXR0b25TaGFkb3c6aCxkaXJlY3Rpb246cyxjdXN0b21TZXR0aW5nczpjfSxILmEuY3JlYXRlRWxlbWVudChJdCx7Y29sb3I6YSxiZ1N0eWxlOnUsZ3JhZGllbnQ6Z30sSC5hLmNyZWF0ZUVsZW1lbnQoX3QsbnVsbCxILmEuY3JlYXRlRWxlbWVudChMdCxudWxsLHIpLEguYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwscCYmSC5hLmNyZWF0ZUVsZW1lbnQoenQse21pcnJvcjpkfSxwKSxtJiZILmEuY3JlYXRlRWxlbWVudChUdCx7bWlycm9yOmR9LG0pKSksSC5hLmNyZWF0ZUVsZW1lbnQoTXQse29uTW91c2VVcDpufSxILmEuY3JlYXRlRWxlbWVudChQLHtjdXN0b21TZXR0aW5nczpjfSkpKSxpKToiY2FsZW5kYXIiPT09Yz93JiZILmEuY3JlYXRlRWxlbWVudChSdCx7aXNTaG93Onksb25BbmltYXRpb25FbmQ6dCxzaXplOmUsbWlycm9yOmQsYnV0dG9uU2hhZG93OmgsZGlyZWN0aW9uOnN9LEguYS5jcmVhdGVFbGVtZW50KGose2NvbG9yOmEsYmdTdHlsZTp1LGdyYWRpZW50Omd9LEguYS5jcmVhdGVFbGVtZW50KEEse21pcnJvcjpkfSxyKSxILmEuY3JlYXRlRWxlbWVudChBdCx7bWlycm9yOmR9LG8pLEguYS5jcmVhdGVFbGVtZW50KFMse29uTW91c2VVcDpuLG1pcnJvcjpkfSxILmEuY3JlYXRlRWxlbWVudChQLG51bGwpKSksaSk6dyYmSC5hLmNyZWF0ZUVsZW1lbnQoayx7aXNTaG93Onksb25BbmltYXRpb25FbmQ6dCxzaXplOmUsbWlycm9yOmQsYnV0dG9uU2hhZG93OmgsZGlyZWN0aW9uOnMsY3VzdG9tU2V0dGluZ3M6Y30sSC5hLmNyZWF0ZUVsZW1lbnQoaix7Y29sb3I6YSxiZ1N0eWxlOnUsZ3JhZGllbnQ6Z30sSC5hLmNyZWF0ZUVsZW1lbnQoQSx7bWlycm9yOmR9LHIpLEguYS5jcmVhdGVFbGVtZW50KEF0LHttaXJyb3I6ZH0sbyksSC5hLmNyZWF0ZUVsZW1lbnQoUyx7b25Nb3VzZVVwOm4sbWlycm9yOmR9LEguYS5jcmVhdGVFbGVtZW50KFAsbnVsbCkpKSxpKX0sRnQ9Qy5kLnNwYW4ud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLTE2Z2R4MGktMCJ9KShbIiIsIiJdLGZ1bmN0aW9uKGUpe3ZhciB0PWUuYmdVcmwsbj1lLnNpemUscj1lLmlzU2luZ2xlLG89ZS5idXR0b25TdHlsZSxlPWUuYnV0dG9uQm9yZGVyUmFkaXVzO3JldHVybiBPYmplY3QoQy5jKShbJ2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudDtiYWNrZ3JvdW5kOnVybCgiJywnIikgbm8tcmVwZWF0IGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7d2lkdGg6JywiO2hlaWdodDoiLCI7IiwiIHBvaW50ZXItZXZlbnRzOm5vbmU7Ym9yZGVyLXJhZGl1czoiLCI7Il0sdCwibWVkaXVtIj09PW4mJnI/IjMwcHgiOiIxMDAlIiwibWVkaXVtIj09PW4mJnI/IjMwcHgiOiIxMDAlIiwiY2xhc3NpYyIhPT1vJiYibWVkaXVtIiE9PW4mJiJzbWFsbCIhPT1uJiZPYmplY3QoQy5jKShbIndpZHRoOiIsInB4O2hlaWdodDoiLCJweDsiXSxNYXRoLm1pbiguNTUqbiw0MCksTWF0aC5taW4oLjU1Km4sNDApKSwibWVkaXVtIiE9PW4mJiJzbWFsbCIhPT1uJiYiY2xhc3NpYyI9PT1vPyIiLmNvbmNhdChlLCIlIik6IiIuY29uY2F0KC4zNSplLCJweCIpKX0pLG09ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pY29uVXJsLGU9ZS5zaXplLG49T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Mscj1uLmlzU2luZ2xlLG89bi5idXR0b25TdHlsZSxuPW4uYnV0dG9uQm9yZGVyUmFkaXVzO3JldHVybiBILmEuY3JlYXRlRWxlbWVudChGdCx7YmdVcmw6dCxzaXplOmUsaXNTaW5nbGU6cixidXR0b25TdHlsZTpvLGJ1dHRvbkJvcmRlclJhZGl1czpufSl9O2Z1bmN0aW9uIEh0KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9bil7dmFyIHIsbyxhLGksbD1bXSxjPSEwLHU9ITE7dHJ5e2lmKGE9KG49bi5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QobikhPT1uKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KHI9YS5jYWxsKG4pKS5kb25lKSYmKGwucHVzaChyLnZhbHVlKSxsLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLG89ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9bi5yZXR1cm4mJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gbH19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/VnQoZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/VnQoZSx0KTp2b2lkIDB9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBWdChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uICR0KGUpe3ZhciB0PWUuc2l6ZSxlPXZvaWQgMD09PShlPWUuY3VzdG9tU2V0dGluZ3MpP251bGw6ZSxuPShvPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS55b3V0dWJlSWNvbixyPW8uaXNQcm8sbz1vLmlzU2luZ2xlO3JldHVybiByJiZuP0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6bixzaXplOnR9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT10JiZvP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0sdmVyc2lvbjoiMS4xIix2aWV3Qm94OiItMyAtMyAzOCAzOCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTIuOTMyIDIwLjQ1OXYtOC45MTdsNy44MzkgNC40NTl6TTMwLjM2OCA4LjczNWMtMC4zNTQtMS4zMDEtMS4zNTQtMi4zMDctMi42MjUtMi42NjNsLTAuMDI3LTAuMDA2Yy0zLjE5My0wLjQwNi02Ljg4Ni0wLjYzOC0xMC42MzQtMC42MzgtMC4zODEgMC0wLjc2MSAwLjAwMi0xLjE0IDAuMDA3bDAuMDU4LTAuMDAxYy0wLjMyMi0wLjAwNC0wLjcwMS0wLjAwNy0xLjA4Mi0wLjAwNy0zLjc0OCAwLTcuNDQzIDAuMjMyLTExLjA3MCAwLjY4MWwwLjQzNC0wLjA0NGMtMS4yOTcgMC4zNjMtMi4yOTcgMS4zNjgtMi42NDQgMi42NDNsLTAuMDA2IDAuMDI2Yy0wLjQgMi4xMDktMC42MjggNC41MzYtMC42MjggNy4wMTYgMCAwLjA4OCAwIDAuMTc2IDAuMDAxIDAuMjYzbC0wLTAuMDE0Yy0wIDAuMDc0LTAuMDAxIDAuMTYyLTAuMDAxIDAuMjUgMCAyLjQ4IDAuMjI5IDQuOTA2IDAuNjY2IDcuMjU5bC0wLjAzOC0wLjI0NGMwLjM1NCAxLjMwMSAxLjM1NCAyLjMwNyAyLjYyNSAyLjY2M2wwLjAyNyAwLjAwNmMzLjE5MyAwLjQwNiA2Ljg4NiAwLjYzOCAxMC42MzQgMC42MzggMC4zOCAwIDAuNzYtMC4wMDIgMS4xNC0wLjAwN2wtMC4wNTggMC4wMDFjMC4zMjIgMC4wMDQgMC43MDIgMC4wMDcgMS4wODIgMC4wMDcgMy43NDkgMCA3LjQ0My0wLjIzMiAxMS4wNzAtMC42ODFsLTAuNDM0IDAuMDQ0YzEuMjk4LTAuMzYyIDIuMjk4LTEuMzY4IDIuNjQ2LTIuNjQzbDAuMDA2LTAuMDI2YzAuMzk5LTIuMTA5IDAuNjI3LTQuNTM2IDAuNjI3LTcuMDE1IDAtMC4wODgtMC0wLjE3Ni0wLjAwMS0wLjI2M2wwIDAuMDEzYzAtMC4wNzQgMC4wMDEtMC4xNjIgMC4wMDEtMC4yNSAwLTIuNDgtMC4yMjktNC45MDYtMC42NjYtNy4yNTlsMC4wMzggMC4yNDR6IixmaWxsOiJ5b3V0dWJlIj09PWUmJiIjZmYwMDAwIn0pKX12YXIgV3Q9Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtMWVhNDV4aS0wIn0pKFsibWFyZ2luOjYwcHggMCA2MHB4IDA7bGluZS1oZWlnaHQ6MjNweDsmIGF7Y29sb3I6IzExMTtmb250LXNpemU6MjZweDt0ZXh0LWRlY29yYXRpb246bm9uZTt1bmljb2RlLWJpZGk6cGxhaW50ZXh0O30iXSksR3Q9Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MteTVqbTd5LTAifSkoWyJwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9pbnRlci1ldmVudHM6bm9uZTsiXSksWmU9T2JqZWN0KEMuZSkoWyIwJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpO30xMDAle3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTt9Il0pLHF0PUMuZC5zcGFuLndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy15NWptN3ktMSJ9KShbImRpc3BsYXk6YmxvY2s7d2lkdGg6NTBweDtoZWlnaHQ6NTBweDtib3JkZXI6MTBweCBzb2xpZCAjZjNmM2YzO2JvcmRlci10b3A6MTBweCBzb2xpZCAjMzgzNjM2O2JvcmRlci1yYWRpdXM6NTAlO2FuaW1hdGlvbjoiLCIgMS41cyBsaW5lYXIgaW5maW5pdGU7Il0sWmUpO2Z1bmN0aW9uIEkoZSl7ZS5jaGlsZHJlbjtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQoR3Qse2NsYXNzTmFtZToic3Bpbm5lci1jb250YWluZXIifSxILmEuY3JlYXRlRWxlbWVudChxdCx7Y2xhc3NOYW1lOiJsb2FkaW5nLXNwaW5uZXIifSkpfWZ1bmN0aW9uIFp0KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9bil7dmFyIHIsbyxhLGksbD1bXSxjPSEwLHU9ITE7dHJ5e2lmKGE9KG49bi5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QobikhPT1uKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KHI9YS5jYWxsKG4pKS5kb25lKSYmKGwucHVzaChyLnZhbHVlKSxsLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLG89ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9bi5yZXR1cm4mJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gbH19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/WHQoZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/WHQoZSx0KTp2b2lkIDB9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBYdChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIFl0KGUpe3ZhciBlPWUuc2l6ZSx0PShyPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS5jYWxsSWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0sdmlld0JveDoiLTcyIC03MiA3MDQgNzA0Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhtbG5zWGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsifSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6IiBNMTY2LjE1Niw1MTJoLTQxLjUzMWMtNy4zNzUtMC4wMzEtMjAuNTYzLTguNTYzLTIwLjkzOC04LjkwNkMzNy40MzgsNDM3Ljk2OSwwLDM0OC45MDYsMCwyNTUuOTM4IEMwLDE2Mi43MTksMzcuNjU2LDczLjM3NSwxMDQuMjgxLDguMjE5QzEwNC4zMTMsOC4xODgsMTE3LjI1LDAsMTI0LjYyNSwwaDQxLjUzMWMxNS4yMTksMCwzMy4yNSwxMS4xMjUsNDAuMDYzLDI0Ljc4MWwyLjkwNiw1Ljg0NCBjNi43ODEsMTMuNTk0LDYuMTg4LDM1LjU2My0xLjM0NCw0OC43NWwtMjcuOTA2LDQ4LjgxM2MtNy41NjMsMTMuMjE5LTI2LjE4OCwyNC4yNS00MS40MDYsMjQuMjVIMTEwLjc1IGMtMzYuODEzLDY0LTM2LjgxMywxNDMuMDk0LTAuMDMxLDIwNy4xMjVoMjcuNzVjMTUuMjE5LDAsMzMuODQ0LDExLjAzMSw0MS40MDYsMjQuMjVsMjcuODc1LDQ4LjgxMyBjNy41MzEsMTMuMTg4LDguMTU2LDM1LjA5NCwxLjM3NSw0OC43ODFsLTIuOTA2LDUuODQ0QzE5OS4zNzUsNTAwLjg0NCwxODEuMzc1LDUxMiwxNjYuMTU2LDUxMnogTTUxMiwxMjh2MjU2IGMwLDM1LjM0NC0yOC42NTYsNjQtNjQsNjRIMjQ0LjY4OGMtMS4yNS0xMS4yMTktMy45NjktMjIuMTU2LTkuMTU2LTMxLjI1bC0yNy44NzUtNDguODEzIGMtMTMuNDA2LTIzLjQwNi00Mi40NjktNDAuMzc1LTY5LjE4OC00MC4zNzVoLTguMTU2Yy0yMC4xODgtNDUuNDM4LTIwLjE4OC05Ny43MTksMC0xNDMuMTI1aDguMTU2IGMyNi43MTksMCw1NS43ODEtMTYuOTY5LDY5LjE4OC00MC4zNzVsMjcuOTA2LTQ4LjgxM2M1LjE4OC05LjA5NCw3LjkwNi0yMC4wNjMsOS4xNTYtMzEuMjVINDQ4QzQ4My4zNDQsNjQsNTEyLDkyLjY1Niw1MTIsMTI4eiBNMzI4LDM2OGMwLTEzLjI1LTEwLjc1LTI0LTI0LTI0cy0yNCwxMC43NS0yNCwyNHMxMC43NSwyNCwyNCwyNFMzMjgsMzgxLjI1LDMyOCwzNjh6IE0zMjgsMzA0YzAtMTMuMjUtMTAuNzUtMjQtMjQtMjQgcy0yNCwxMC43NS0yNCwyNHMxMC43NSwyNCwyNCwyNFMzMjgsMzE3LjI1LDMyOCwzMDR6IE0zMjgsMjQwYzAtMTMuMjUtMTAuNzUtMjQtMjQtMjRzLTI0LDEwLjc1LTI0LDI0czEwLjc1LDI0LDI0LDI0IFMzMjgsMjUzLjI1LDMyOCwyNDB6IE0zOTIsMzY4YzAtMTMuMjUtMTAuNzUtMjQtMjQtMjRzLTI0LDEwLjc1LTI0LDI0czEwLjc1LDI0LDI0LDI0UzM5MiwzODEuMjUsMzkyLDM2OHogTTM5MiwzMDQgYzAtMTMuMjUtMTAuNzUtMjQtMjQtMjRzLTI0LDEwLjc1LTI0LDI0czEwLjc1LDI0LDI0LDI0UzM5MiwzMTcuMjUsMzkyLDMwNHogTTM5MiwyNDBjMC0xMy4yNS0xMC43NS0yNC0yNC0yNHMtMjQsMTAuNzUtMjQsMjQgczEwLjc1LDI0LDI0LDI0UzM5MiwyNTMuMjUsMzkyLDI0MHogTTQ1NiwzNjhjMC0xMy4yNS0xMC43NS0yNC0yNC0yNHMtMjQsMTAuNzUtMjQsMjRzMTAuNzUsMjQsMjQsMjRTNDU2LDM4MS4yNSw0NTYsMzY4eiBNNDU2LDMwNCBjMC0xMy4yNS0xMC43NS0yNC0yNC0yNHMtMjQsMTAuNzUtMjQsMjRzMTAuNzUsMjQsMjQsMjRTNDU2LDMxNy4yNSw0NTYsMzA0eiBNNDU2LDI0MGMwLTEzLjI1LTEwLjc1LTI0LTI0LTI0cy0yNCwxMC43NS0yNCwyNCBzMTAuNzUsMjQsMjQsMjRTNDU2LDI1My4yNSw0NTYsMjQweiBNNDU2LDE0NGMwLTguODQ0LTcuMTU2LTE2LTE2LTE2SDI5NmMtOC44NDQsMC0xNiw3LjE1Ni0xNiwxNnYzMmMwLDguODQ0LDcuMTU2LDE2LDE2LDE2aDE0NCBjOC44NDQsMCwxNi03LjE1NiwxNi0xNlYxNDR6In0pKX12YXIgUXQ9Qy5kLmlmcmFtZS53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtMWVoNGUzMy0wIn0pKFsiaGVpZ2h0OjI3MHB4O2JvcmRlci1yYWRpdXM6OXB4O21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDEwMHB4KTtib3JkZXI6bm9uZTtvdmVyZmxvdzpoaWRkZW47dHJhbnNpdGlvbjpvcGFjaXR5IC41czt3aWR0aDoxMDAlO2JveC1zaGFkb3c6MHB4IDFweCA3cHggcmdiYSgxMzYsMTM2LDEzNiwiLCIlKTsiLCI7IiwiIl0sZnVuY3Rpb24oZSl7cmV0dXJuIDIwPGUuYnV0dG9uU2hhZG93P2UuYnV0dG9uU2hhZG93OjIwfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5pc0xvYWRpbmcmJk9iamVjdChDLmMpKFsib3BhY2l0eTowOyJdKX0sRCgpJiZPYmplY3QoQy5jKShbImhlaWdodDoxMDB2aDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSA1MHB4KTtib3JkZXItcmFkaXVzOjA7Il0pKSxLdD1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy0xZWg0ZTMzLTEifSkoWyIgIGJvcmRlci1yYWRpdXM6OXB4O3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246YmFja2dyb3VuZCAuNXM7IiwiICIsIiJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTG9hZGluZyYmT2JqZWN0KEMuYykoWyJiYWNrZ3JvdW5kOiMwMDAwMDA7Il0pfSxEKCkmJk9iamVjdChDLmMpKFsiYm9yZGVyLXJhZGl1czowOyJdKSk7ZnVuY3Rpb24gSnQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1uKXt2YXIgcixvLGEsaSxsPVtdLGM9ITAsdT0hMTt0cnl7aWYoYT0obj1uLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0ocj1hLmNhbGwobikpLmRvbmUpJiYobC5wdXNoKHIudmFsdWUpLGwubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsbz1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1uLnJldHVybiYmKGk9bi5yZXR1cm4oKSxPYmplY3QoaSkhPT1pKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IG99fXJldHVybiBsfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9lbihlLHQpOiJNYXAiPT09KG49Ik9iamVjdCI9PT0obj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSkpJiZlLmNvbnN0cnVjdG9yP2UuY29uc3RydWN0b3IubmFtZTpuKXx8IlNldCI9PT1uP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9lbihlLHQpOnZvaWQgMH0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGVuKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdG4oZSl7dmFyIGU9ZS5zaXplLHQ9KHI9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3MpLmNvbnRhY3Rmb3JtSWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0sdmlld0JveDoiMCAwIDMyIDMyIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhtbG5zWGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsifSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6IiBNMjcgMjIuNzU3YzAgMS4yNC0uOTg4IDIuMjQzLTIuMTkgMi4yNDNINy4xOUM1Ljk4IDI1IDUgMjMuOTk0IDUgMjIuNzU3VjEzLjY3YzAtLjU1Ni4zOS0uNzczLjg1NS0uNDk2bDguNzggNS4yMzhjLjc4Mi40NjcgMS45NS40NjcgMi43MyAwbDguNzgtNS4yMzhjLjQ3Mi0uMjguODU1LS4wNjMuODU1LjQ5NXY5LjA4N3oifSksSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiIgTTI3IDkuMjQzQzI3IDguMDA2IDI2LjAyIDcgMjQuODEgN0g3LjE5QzUuOTg4IDcgNSA4LjAwNCA1IDkuMjQzdi40NjVjMCAuNTU0LjM4NSAxLjIzMi44NTcgMS41MTRsOS42MSA1LjczM2MuMjY3LjE2LjguMTYgMS4wNjcgMGw5LjYxLTUuNzMzYy40NzMtLjI4My44NTYtLjk2Ljg1Ni0xLjUxNHYtLjQ2NXoifSkpfXZhciBubj1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy0xNXZnYmh0LTAifSkoWyJtYXJnaW46NjBweCAwIDYwcHggMDtsaW5lLWhlaWdodDoyM3B4OyYgYXtjb2xvcjojMTExO2ZvbnQtc2l6ZToyNnB4O3RleHQtZGVjb3JhdGlvbjpub25lO3VuaWNvZGUtYmlkaTpwbGFpbnRleHQ7fSJdKSxybj1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy0xNXZnYmh0LTEifSkoWyJtYXJnaW46MzBweCAyNXB4IDIwcHggMjVweDt0cmFuc2l0aW9uOm9wYWNpdHkgLjVzOyIsIjsmIGltZ3t3aWR0aDoxNTBweDttYXJnaW46MCBhdXRvO30mIGF7Y29sb3I6IzExMTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206MTBweDtmb250LXNpemU6MjZweDt0ZXh0LWRlY29yYXRpb246bm9uZTt1bmljb2RlLWJpZGk6cGxhaW50ZXh0O30iXSxmdW5jdGlvbihlKXtyZXR1cm4gZS5pc0xvYWRpbmcmJk9iamVjdChDLmMpKFsib3BhY2l0eTouMTU7Il0pfSk7ZnVuY3Rpb24gb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1uKXt2YXIgcixvLGEsaSxsPVtdLGM9ITAsdT0hMTt0cnl7aWYoYT0obj1uLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0ocj1hLmNhbGwobikpLmRvbmUpJiYobC5wdXNoKHIudmFsdWUpLGwubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsbz1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1uLnJldHVybiYmKGk9bi5yZXR1cm4oKSxPYmplY3QoaSkhPT1pKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IG99fXJldHVybiBsfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9hbihlLHQpOiJNYXAiPT09KG49Ik9iamVjdCI9PT0obj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSkpJiZlLmNvbnN0cnVjdG9yP2UuY29uc3RydWN0b3IubmFtZTpuKXx8IlNldCI9PT1uP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9hbihlLHQpOnZvaWQgMH0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGFuKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gbG4oZSl7dmFyIGU9ZS5zaXplLHQ9KHI9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3MpLmRpc2NvcmRJY29uLG49ci5pc1BybyxyPXIuaXNTaW5nbGU7cmV0dXJuIG4mJnQ/SC5hLmNyZWF0ZUVsZW1lbnQobSx7aWNvblVybDp0LHNpemU6ZX0pOkguYS5jcmVhdGVFbGVtZW50KCJzdmciLHtzdHlsZToibWVkaXVtIj09PWUmJnI/e2hlaWdodDoiMzBweCIsbWluV2lkdGg6IjMwcHgiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9Ont3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifSx2aWV3Qm94OiItMTcuNiAwIDE2MC4xNCA5Ni4zNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4bWxuc1hsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTA3LjcsOC4wN0ExMDUuMTUsMTA1LjE1LDAsMCwwLDgxLjQ3LDBhNzIuMDYsNzIuMDYsMCwwLDAtMy4zNiw2LjgzQTk3LjY4LDk3LjY4LDAsMCwwLDQ5LDYuODMsNzIuMzcsNzIuMzcsMCwwLDAsNDUuNjQsMCwxMDUuODksMTA1Ljg5LDAsMCwwLDE5LjM5LDguMDlDMi43OSwzMi42NS0xLjcxLDU2LjYuNTQsODAuMjFoMEExMDUuNzMsMTA1LjczLDAsMCwwLDMyLjcxLDk2LjM2LDc3LjcsNzcuNywwLDAsMCwzOS42LDg1LjI1YTY4LjQyLDY4LjQyLDAsMCwxLTEwLjg1LTUuMThjLjkxLS42NiwxLjgtMS4zNCwyLjY2LTJhNzUuNTcsNzUuNTcsMCwwLDAsNjQuMzIsMGMuODcuNzEsMS43NiwxLjM5LDIuNjYsMmE2OC42OCw2OC42OCwwLDAsMS0xMC44Nyw1LjE5LDc3LDc3LDAsMCwwLDYuODksMTEuMUExMDUuMjUsMTA1LjI1LDAsMCwwLDEyNi42LDgwLjIyaDBDMTI5LjI0LDUyLjg0LDEyMi4wOSwyOS4xMSwxMDcuNyw4LjA3Wk00Mi40NSw2NS42OUMzNi4xOCw2NS42OSwzMSw2MCwzMSw1M3M1LTEyLjc0LDExLjQzLTEyLjc0UzU0LDQ2LDUzLjg5LDUzLDQ4Ljg0LDY1LjY5LDQyLjQ1LDY1LjY5Wm00Mi4yNCwwQzc4LjQxLDY1LjY5LDczLjI1LDYwLDczLjI1LDUzczUtMTIuNzQsMTEuNDQtMTIuNzRTOTYuMjMsNDYsOTYuMTIsNTMsOTEuMDgsNjUuNjksODQuNjksNjUuNjlaIn0pKX1mdW5jdGlvbiBjbihlKXt2YXIgZT1lLnNpemUsdD0ocj1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncykudGVhbXNJY29uLG49ci5pc1BybyxyPXIuaXNTaW5nbGU7cmV0dXJuIG4mJnQ/SC5hLmNyZWF0ZUVsZW1lbnQobSx7aWNvblVybDp0LHNpemU6ZX0pOkguYS5jcmVhdGVFbGVtZW50KCJzdmciLHtzdHlsZToibWVkaXVtIj09PWUmJnI/e2hlaWdodDoiMzBweCIsbWluV2lkdGg6IjMwcHgiLHN0cm9rZToibm9uZSJ9Ont3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixzdHJva2U6Im5vbmUifSx2aWV3Qm94OiItMjAzLjMyNDk1IC01MTguMzMzNSAyODk3LjQ4MjkgMzExMC4wMDEiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseG1sbnNYbGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE1NTQuNjM3IDc3Ny41aDU3NS43MTNjNTQuMzkxIDAgOTguNDgzIDQ0LjA5MiA5OC40ODMgOTguNDgzdjUyNC4zOThjMCAxOTkuOTAxLTE2Mi4wNTEgMzYxLjk1Mi0zNjEuOTUyIDM2MS45NTJoLTEuNzExYy0xOTkuOTAxLjAyOC0zNjEuOTc1LTE2Mi0zNjIuMDA0LTM2MS45MDFWODI4Ljk3MWMuMDAxLTI4LjQyNyAyMy4wNDUtNTEuNDcxIDUxLjQ3MS01MS40NzF6IixmaWxsOiIjNTA1OUM5In0pLEguYS5jcmVhdGVFbGVtZW50KCJjaXJjbGUiLHtyOiIyMzMuMjUiLGN5OiI0NDAuNTgzIixjeDoiMTk0My43NSIsZmlsbDoiIzUwNTlDOSJ9KSxILmEuY3JlYXRlRWxlbWVudCgiY2lyY2xlIix7cjoiMzM2LjkxNyIsY3k6IjMzNi45MTciLGN4OiIxMjE4LjA4MyIsZmlsbDoiIzdCODNFQiJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xNjY3LjMyMyA3NzcuNUg3MTcuMDFjLTUzLjc0MyAxLjMzLTk2LjI1NyA0NS45MzEtOTUuMDEgOTkuNjc2djU5OC4xMDVjLTcuNTA1IDMyMi41MTkgMjQ3LjY1NyA1OTAuMTYgNTcwLjE2NyA1OTguMDUzIDMyMi41MS03Ljg5MyA1NzcuNjcxLTI3NS41MzQgNTcwLjE2Ny01OTguMDUzVjg3Ny4xNzZjMS4yNDUtNTMuNzQ1LTQxLjI2OC05OC4zNDYtOTUuMDExLTk5LjY3NnoiLGZpbGw6IiM3QjgzRUIifSksSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTI0NCA3NzcuNXY4MzguMTQ1Yy0uMjU4IDM4LjQzNS0yMy41NDkgNzIuOTY0LTU5LjA5IDg3LjU5OGE5MS44NTYgOTEuODU2IDAgMDEtMzUuNzY1IDcuMjU3SDY2Ny42MTNjLTYuNzM4LTE3LjEwNS0xMi45NTgtMzQuMjEtMTguMTQyLTUxLjgzM2E2MzEuMjg3IDYzMS4yODcgMCAwMS0yNy40NzItMTgzLjQ5Vjg3Ny4wMmMtMS4yNDYtNTMuNjU5IDQxLjE5OC05OC4xOSA5NC44NTUtOTkuNTJ6IixvcGFjaXR5OiIuMSJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMTkyLjE2NyA3NzcuNXY4ODkuOTc4YTkxLjgwMiA5MS44MDIgMCAwMS03LjI1NyAzNS43NjVjLTE0LjYzNCAzNS41NDEtNDkuMTYzIDU4LjgzMy04Ny41OTggNTkuMDlINjkxLjk3NWMtOC44MTItMTcuMTA1LTE3LjEwNS0zNC4yMS0yNC4zNjItNTEuODMzLTcuMjU3LTE3LjYyMy0xMi45NTgtMzQuMjEtMTguMTQyLTUxLjgzM2E2MzEuMjgyIDYzMS4yODIgMCAwMS0yNy40NzItMTgzLjQ5Vjg3Ny4wMmMtMS4yNDYtNTMuNjU5IDQxLjE5OC05OC4xOSA5NC44NTUtOTkuNTJ6IixvcGFjaXR5OiIuMiJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMTkyLjE2NyA3NzcuNXY3ODYuMzEyYy0uMzk1IDUyLjIyMy00Mi42MzIgOTQuNDYtOTQuODU1IDk0Ljg1NWgtNDQ3Ljg0QTYzMS4yODIgNjMxLjI4MiAwIDAxNjIyIDE0NzUuMTc3Vjg3Ny4wMmMtMS4yNDYtNTMuNjU5IDQxLjE5OC05OC4xOSA5NC44NTUtOTkuNTJ6IixvcGFjaXR5OiIuMiJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMTQwLjMzMyA3NzcuNXY3ODYuMzEyYy0uMzk1IDUyLjIyMy00Mi42MzIgOTQuNDYtOTQuODU1IDk0Ljg1NUg2NDkuNDcyQTYzMS4yODIgNjMxLjI4MiAwIDAxNjIyIDE0NzUuMTc3Vjg3Ny4wMmMtMS4yNDYtNTMuNjU5IDQxLjE5OC05OC4xOSA5NC44NTUtOTkuNTJ6IixvcGFjaXR5OiIuMiJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMjQ0IDUwOS41MjJ2MTYzLjI3NWMtOC44MTIuNTE4LTE3LjEwNSAxLjAzNy0yNS45MTcgMS4wMzctOC44MTIgMC0xNy4xMDUtLjUxOC0yNS45MTctMS4wMzdhMjg0LjQ3MiAyODQuNDcyIDAgMDEtNTEuODMzLTguMjkzYy0xMDQuOTYzLTI0Ljg1Ny0xOTEuNjc5LTk4LjQ2OS0yMzMuMjUtMTk4LjAwM2EyODguMDIgMjg4LjAyIDAgMDEtMTYuNTg3LTUxLjgzM2gyNTguNjQ4YzUyLjMwNS4xOTggOTQuNjU3IDQyLjU0OSA5NC44NTYgOTQuODU0eiIsb3BhY2l0eToiLjEifSksSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTE5Mi4xNjcgNTYxLjM1NXYxMTEuNDQyYTI4NC40NzIgMjg0LjQ3MiAwIDAxLTUxLjgzMy04LjI5M2MtMTA0Ljk2My0yNC44NTctMTkxLjY3OS05OC40NjktMjMzLjI1LTE5OC4wMDNoMTkwLjIyOGM1Mi4zMDQuMTk4IDk0LjY1NiA0Mi41NSA5NC44NTUgOTQuODU0eiIsb3BhY2l0eToiLjIifSksSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTE5Mi4xNjcgNTYxLjM1NXYxMTEuNDQyYTI4NC40NzIgMjg0LjQ3MiAwIDAxLTUxLjgzMy04LjI5M2MtMTA0Ljk2My0yNC44NTctMTkxLjY3OS05OC40NjktMjMzLjI1LTE5OC4wMDNoMTkwLjIyOGM1Mi4zMDQuMTk4IDk0LjY1NiA0Mi41NSA5NC44NTUgOTQuODU0eiIsb3BhY2l0eToiLjIifSksSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTE0MC4zMzMgNTYxLjM1NXYxMDMuMTQ4Yy0xMDQuOTYzLTI0Ljg1Ny0xOTEuNjc5LTk4LjQ2OS0yMzMuMjUtMTk4LjAwM2gxMzguMzk1YzUyLjMwNS4xOTkgOTQuNjU2IDQyLjU1MSA5NC44NTUgOTQuODU1eiIsb3BhY2l0eToiLjIifSksSC5hLmNyZWF0ZUVsZW1lbnQoImxpbmVhckdyYWRpZW50Iix7Z3JhZGllbnRUcmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDIwNzUuMzMzKSIseTI6IjM5NC4yNjEiLHgyOiI5NDIuMjM0Iix5MToiMTY4My4wNzMiLHgxOiIxOTguMDk5IixncmFkaWVudFVuaXRzOiJ1c2VyU3BhY2VPblVzZSIsaWQ6ImEifSxILmEuY3JlYXRlRWxlbWVudCgic3RvcCIse29mZnNldDoiMCIsc3RvcENvbG9yOiIjNWE2MmMzIn0pLEguYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7b2Zmc2V0OiIuNSIsc3RvcENvbG9yOiIjNGQ1NWJkIn0pLEguYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7b2Zmc2V0OiIxIixzdG9wQ29sb3I6IiMzOTQwYWIifSkpLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTk1LjAxIDQ2Ni41aDk1MC4zMTJjNTIuNDczIDAgOTUuMDEgNDIuNTM4IDk1LjAxIDk1LjAxdjk1MC4zMTJjMCA1Mi40NzMtNDIuNTM4IDk1LjAxLTk1LjAxIDk1LjAxSDk1LjAxYy01Mi40NzMgMC05NS4wMS00Mi41MzgtOTUuMDEtOTUuMDFWNTYxLjUxYzAtNTIuNDcyIDQyLjUzOC05NS4wMSA5NS4wMS05NS4wMXoiLGZpbGw6InVybCgjYSkifSksSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNODIwLjIxMSA4MjguMTkzaC0xODkuOTd2NTE3LjI5N2gtMTIxLjAzVjgyOC4xOTNIMzIwLjEyM1Y3MjcuODQ0aDUwMC4wODh6IixmaWxsOiIjRkZGIn0pKX1mdW5jdGlvbiB1bihlKXt2YXIgZT1lLnNpemUsdD0ocj1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncykuZW1haWxJY29uLG49ci5pc1BybyxyPXIuaXNTaW5nbGU7cmV0dXJuIG4mJnQ/SC5hLmNyZWF0ZUVsZW1lbnQobSx7aWNvblVybDp0LHNpemU6ZX0pOkguYS5jcmVhdGVFbGVtZW50KCJzdmciLHtzdHlsZToibWVkaXVtIj09PWUmJnI/e2hlaWdodDoiMzBweCIsbWluV2lkdGg6IjMwcHgiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9Ont3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifSx2aWV3Qm94OiIwIDAgMzIgMzIiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseG1sbnNYbGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE5LjYsMTkuNDdBNSw1LDAsMSwxLDIxLDE2djEuNWExLjUsMS41LDAsMCwwLDMsMFYxNmE4LDgsMCwxLDAtNC45NCw3LjRBMSwxLDAsMCwxLDIwLDI1LjE4bC0uMTQuMDZBMTAsMTAsMCwxLDEsMjYsMTZ2MS41YTMuNSwzLjUsMCwwLDEtNi40LDJaTTE2LDE5YTMsMywwLDEsMC0zLTNBMywzLDAsMCwwLDE2LDE5WiJ9KSl9ZnVuY3Rpb24gc24oZSl7dmFyIGU9ZS5zaXplLHQ9KHI9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3MpLmNhbGVuZGFySWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIix0cmFuc2Zvcm06InNjYWxlKDAuODUpIn0sdmVyc2lvbjoiMS4xIix2aWV3Qm94OiIwIDAgMjQuNSAyNCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNy43NSAyLjVDNy43NSAyLjA4NTc5IDcuNDE0MjEgMS43NSA3IDEuNzVDNi41ODU3OSAxLjc1IDYuMjUgMi4wODU3OSA2LjI1IDIuNVY0LjA3OTI2QzQuODEwNjcgNC4xOTQ1MSAzLjg2NTc3IDQuNDc3MzcgMy4xNzE1NyA1LjE3MTU3QzIuNDc3MzcgNS44NjU3NyAyLjE5NDUxIDYuODEwNjcgMi4wNzkyNiA4LjI1SDIxLjkyMDdDMjEuODA1NSA2LjgxMDY3IDIxLjUyMjYgNS44NjU3NyAyMC44Mjg0IDUuMTcxNTdDMjAuMTM0MiA0LjQ3NzM3IDE5LjE4OTMgNC4xOTQ1MSAxNy43NSA0LjA3OTI2VjIuNUMxNy43NSAyLjA4NTc5IDE3LjQxNDIgMS43NSAxNyAxLjc1QzE2LjU4NTggMS43NSAxNi4yNSAyLjA4NTc5IDE2LjI1IDIuNVY0LjAxMjlDMTUuNTg0NyA0IDE0LjgzOSA0IDE0IDRIMTBDOS4xNjA5NyA0IDguNDE1MjcgNCA3Ljc1IDQuMDEyOVYyLjVaIn0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0yIDEyQzIgMTEuMTYxIDIgMTAuNDE1MyAyLjAxMjkgOS43NUgyMS45ODcxQzIyIDEwLjQxNTMgMjIgMTEuMTYxIDIyIDEyVjE0QzIyIDE3Ljc3MTIgMjIgMTkuNjU2OSAyMC44Mjg0IDIwLjgyODRDMTkuNjU2OSAyMiAxNy43NzEyIDIyIDE0IDIySDEwQzYuMjI4NzYgMjIgNC4zNDMxNSAyMiAzLjE3MTU3IDIwLjgyODRDMiAxOS42NTY5IDIgMTcuNzcxMiAyIDE0VjEyWk0xNyAxNEMxNy41NTIzIDE0IDE4IDEzLjU1MjMgMTggMTNDMTggMTIuNDQ3NyAxNy41NTIzIDEyIDE3IDEyQzE2LjQ0NzcgMTIgMTYgMTIuNDQ3NyAxNiAxM0MxNiAxMy41NTIzIDE2LjQ0NzcgMTQgMTcgMTRaTTE3IDE4QzE3LjU1MjMgMTggMTggMTcuNTUyMyAxOCAxN0MxOCAxNi40NDc3IDE3LjU1MjMgMTYgMTcgMTZDMTYuNDQ3NyAxNiAxNiAxNi40NDc3IDE2IDE3QzE2IDE3LjU1MjMgMTYuNDQ3NyAxOCAxNyAxOFpNMTMgMTNDMTMgMTMuNTUyMyAxMi41NTIzIDE0IDEyIDE0QzExLjQ0NzcgMTQgMTEgMTMuNTUyMyAxMSAxM0MxMSAxMi40NDc3IDExLjQ0NzcgMTIgMTIgMTJDMTIuNTUyMyAxMiAxMyAxMi40NDc3IDEzIDEzWk0xMyAxN0MxMyAxNy41NTIzIDEyLjU1MjMgMTggMTIgMThDMTEuNDQ3NyAxOCAxMSAxNy41NTIzIDExIDE3QzExIDE2LjQ0NzcgMTEuNDQ3NyAxNiAxMiAxNkMxMi41NTIzIDE2IDEzIDE2LjQ0NzcgMTMgMTdaTTcgMTRDNy41NTIyOCAxNCA4IDEzLjU1MjMgOCAxM0M4IDEyLjQ0NzcgNy41NTIyOCAxMiA3IDEyQzYuNDQ3NzIgMTIgNiAxMi40NDc3IDYgMTNDNiAxMy41NTIzIDYuNDQ3NzIgMTQgNyAxNFpNNyAxOEM3LjU1MjI4IDE4IDggMTcuNTUyMyA4IDE3QzggMTYuNDQ3NyA3LjU1MjI4IDE2IDcgMTZDNi40NDc3MiAxNiA2IDE2LjQ0NzcgNiAxN0M2IDE3LjU1MjMgNi40NDc3MiAxOCA3IDE4WiJ9KSl9dmFyIGZuPUMuZC5pZnJhbWUud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLTE5bnpuamMtMCJ9KShbImhlaWdodDozNTZweDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSAxNTBweCk7Ym9yZGVyOm5vbmU7b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb246b3BhY2l0eSAuNXM7IiwiOyIsIiJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTG9hZGluZyYmT2JqZWN0KEMuYykoWyJvcGFjaXR5Oi4xNTsiXSl9LEQoKSYmT2JqZWN0KEMuYykoWyJ3aWR0aDoxMDAlO2hlaWdodDoxMDB2aDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSA1N3B4KTsiXSkpO2Z1bmN0aW9uIGRuKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9bil7dmFyIHIsbyxhLGksbD1bXSxjPSEwLHU9ITE7dHJ5e2lmKGE9KG49bi5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QobikhPT1uKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KHI9YS5jYWxsKG4pKS5kb25lKSYmKGwucHVzaChyLnZhbHVlKSxsLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLG89ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9bi5yZXR1cm4mJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gbH19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/cG4oZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/cG4oZSx0KTp2b2lkIDB9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBwbihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBtbj1DLmQuaWZyYW1lLndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy0xdXcwamMxLTAifSkoWyJoZWlnaHQ6NDA0cHg7bWF4LWhlaWdodDpjYWxjKDEwMHZoIC0gMTkwcHgpO2JvcmRlcjpub25lO292ZXJmbG93OmhpZGRlbjt0cmFuc2l0aW9uOm9wYWNpdHkgLjVzO3dpZHRoOjEwMCU7IiwiOyIsIiJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTG9hZGluZyYmT2JqZWN0KEMuYykoWyJvcGFjaXR5OjA7Il0pfSxEKCkmJk9iamVjdChDLmMpKFsiaGVpZ2h0OjEwMHZoO21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDUwcHgpOyJdKSksaG49ZnVuY3Rpb24oZSl7dmFyIGU9ZS5zaXplLHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Msbj10LmZhY2Vib29rSWNvbixyPXQuaXNQcm8sdD10LmlzU2luZ2xlO3JldHVybiByJiZuP0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6bixzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZ0P3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0sdmlld0JveDoiMCAwIDMyIDMyIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhtbG5zWGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsifSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xNiA2QzkuOTI1IDYgNSAxMC41NiA1IDE2LjE4NWMwIDMuMjA1IDEuNiA2LjA2NSA0LjEgNy45MzJWMjhsMy43NDUtMi4wNTZjMSAuMjc3IDIuMDU4LjQyNiAzLjE1NS40MjYgNi4wNzUgMCAxMS00LjU2IDExLTEwLjE4NUMyNyAxMC41NiAyMi4wNzUgNiAxNiA2em0xLjA5MyAxMy43MTZsLTIuOC0yLjk4OC01LjQ2NyAyLjk4OCA2LjAxMy02LjM4MyAyLjg2OCAyLjk4OCA1LjM5OC0yLjk4Ny02LjAxMyA2LjM4M3oifSkpfTtmdW5jdGlvbiBnbihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8sYSxpLGw9W10sYz0hMCx1PSExO3RyeXtpZihhPShuPW4uY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPWEuY2FsbChuKSkuZG9uZSkmJihsLnB1c2goci52YWx1ZSksbC5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxvPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPW4ucmV0dXJuJiYoaT1uLnJldHVybigpLE9iamVjdChpKSE9PWkpKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgb319cmV0dXJuIGx9fShlLHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuO2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2JuKGUsdCk6Ik1hcCI9PT0obj0iT2JqZWN0Ij09PShuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOm4pfHwiU2V0Ij09PW4/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2JuKGUsdCk6dm9pZCAwfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYm4oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB5bigpe3ZhciBlPShhPU9iamVjdChGLnVzZUNvbnRleHQpKFYpKS5zdGF0ZSx0PShhPWEuc2V0dGluZ3MpLmZhY2Vib29rLG49YS5mYWNlYm9va0xhYmVsLHI9YS5mYWNlYm9va0NvbG9yLG89YS5iZ1N0eWxlLGE9YS5hY3RpdmF0b3JTaXplLGk9KHM9Z24oT2JqZWN0KEYudXNlU3RhdGUpKCExKSwyKSlbMF0sbD1zWzFdO09iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXtsKCJmYWNlYm9vayI9PT1lLmJ1dHRvblBvcHVwKX0pO3ZhciBjPShzPWduKE9iamVjdChGLnVzZVN0YXRlKSghMCksMikpWzBdLHU9c1sxXSxzPShPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7ImZhY2Vib29rIj09PWUuYnV0dG9uUG9wdXAmJnUoITApfSxbZS5idXR0b25Qb3B1cF0pLCJodHRwczovL3d3dy5mYWNlYm9vay5jb20vcGx1Z2lucy9wYWdlLnBocD9ocmVmPWh0dHBzJTNBJTJGJTJGd3d3LmZhY2Vib29rLmNvbSUyRiIuY29uY2F0KHQsIiZ0YWJzPW1lc3NhZ2VzJndpZHRoPTMwMiZoZWlnaHQ9MzAwJnNtYWxsX2hlYWRlcj10cnVlJmFkYXB0X2NvbnRhaW5lcl93aWR0aD10cnVlJmhpZGVfY292ZXI9dHJ1ZSZzaG93X2ZhY2VwaWxlPWZhbHNlJmFwcElkIikpO3JldHVybiBILmEuY3JlYXRlRWxlbWVudChOLHtjb2xvcjpyLG1lc3NlbmdlclRpdGxlOm4saWNvbjpILmEuY3JlYXRlRWxlbWVudChobixudWxsKSxlbmFibGVQb3B1cDppLGJnU3R5bGU6byxzaXplOmF9LGMmJkguYS5jcmVhdGVFbGVtZW50KEksbnVsbCksSC5hLmNyZWF0ZUVsZW1lbnQod24se29uTG9hZDpmdW5jdGlvbihlKXt1KCExKX0sc2Nyb2xsaW5nOiJubyIsZnJhbWVCb3JkZXI6IjAiLGFsbG93dHJhbnNwYXJlbmN5OiJ0cnVlIixzcmM6c30pKX1mdW5jdGlvbiB2bihlKXt2YXIgZT1lLnNpemUsdD0ocj1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncykuZ29vZ2xlbWFwSWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiJyZ2IoMjM0LCA2NywgNTMpIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoicmdiKDIzNCwgNjcsIDUzKSIsc3Ryb2tlOiJub25lIn0sdmVyc2lvbjoiMS4xIix2aWV3Qm94OiIwIDAgMTIwIDEyMCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNjAsNy41QTM0LjU3LDM0LjU3LDAsMCwwLDI1LjQzLDQyLjA3QzI1LjQzLDYzLjIzLDQwLDcyLjgsNTAuMjgsODguOWM3LDExLDUuNTcsMTcuNiw5LjcyLDE3LjZzMi42OS02LjU4LDkuNzItMTcuNkM4MCw3Mi44LDk0LjU3LDYzLjIzLDk0LjU3LDQyLjA3QTM0LjU3LDM0LjU3LDAsMCwwLDYwLDcuNVptMCw0Ny44MUExMy4yNCwxMy4yNCwwLDEsMSw3My4yNCw0Mi4wNywxMy4yNCwxMy4yNCwwLDAsMSw2MCw1NS4zMVoifSkpfXZhciB3bj1DLmQuaWZyYW1lLndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy0xOTQyYTQ2LTAifSkoWyJib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjAgMCAxNnB4IDE2cHg7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjMwMnB4O2hlaWdodDozMDBweDsiXSkseG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIWUmJm51bGw9PT10JiZuZXcgRGF0ZShlKTxuZXcgRGF0ZSgiMjAyMi0wNS0yMCIpfTtmdW5jdGlvbiBrbihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8sYSxpLGw9W10sYz0hMCx1PSExO3RyeXtpZihhPShuPW4uY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPWEuY2FsbChuKSkuZG9uZSkmJihsLnB1c2goci52YWx1ZSksbC5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxvPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPW4ucmV0dXJuJiYoaT1uLnJldHVybigpLE9iamVjdChpKSE9PWkpKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgb319cmV0dXJuIGx9fShlLHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuO2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP1NuKGUsdCk6Ik1hcCI9PT0obj0iT2JqZWN0Ij09PShuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOm4pfHwiU2V0Ij09PW4/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1NuKGUsdCk6dm9pZCAwfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gU24oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBDbihlKXt2YXIgZT1lLnNpemUsdD0ocj1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncykuaW5zdGFncmFtSWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0sdmlld0JveDoiMCAwIDMyIDMyIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhtbG5zWGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsifSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Im0yMC45NzM1NSw1bC05Ljg4NTM3LDBjLTMuMzU3MDIsMCAtNi4wODgxOCwyLjczMTI5IC02LjA4ODE4LDYuMDg4MzFsMCw5Ljg4NTM3YzAsMy4zNTcxNSAyLjczMTE2LDYuMDg4MzEgNi4wODgxOCw2LjA4ODMxbDkuODg1MzcsMGMzLjM1NzI4LDAgNi4wODg0NCwtMi43MzEyOSA2LjA4ODQ0LC02LjA4ODMxbDAsLTkuODg1MzdjMC4wMDAxMywtMy4zNTcwMiAtMi43MzExNiwtNi4wODgzMSAtNi4wODg0NCwtNi4wODgzMXptNC4xMzExMywxNS45NzM2OGMwLDIuMjc3ODIgLTEuODUzMTgsNC4xMzA4NyAtNC4xMzEsNC4xMzA4N2wtOS44ODU1LDBjLTIuMjc3NjksMC4wMDAxMyAtNC4xMzA3NCwtMS44NTMwNSAtNC4xMzA3NCwtNC4xMzA4N2wwLC05Ljg4NTM3YzAsLTIuMjc3NjkgMS44NTMwNSwtNC4xMzA4NyA0LjEzMDc0LC00LjEzMDg3bDkuODg1MzcsMGMyLjI3NzgyLDAgNC4xMzEsMS44NTMxOCA0LjEzMSw0LjEzMDg3bDAsOS44ODUzN2wwLjAwMDEzLDB6In0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoibTE2LjAzMSwxMC4zNDY0NGMtMy4xMzQ2NiwwIC01LjY4NDgyLDIuNTUwMTYgLTUuNjg0ODIsNS42ODQ4MmMwLDMuMTM0NTMgMi41NTAxNiw1LjY4NDU2IDUuNjg0ODIsNS42ODQ1NmMzLjEzNDY2LDAgNS42ODQ4MiwtMi41NTAwMyA1LjY4NDgyLC01LjY4NDU2YzAsLTMuMTM0NjYgLTIuNTUwMTYsLTUuNjg0ODIgLTUuNjg0ODIsLTUuNjg0ODJ6bTAsOS40MTE4Yy0yLjA1NTE5LDAgLTMuNzI3MzcsLTEuNjcxOTIgLTMuNzI3MzcsLTMuNzI3MTFjMCwtMi4wNTUzMiAxLjY3MjA1LC0zLjcyNzM3IDMuNzI3MzcsLTMuNzI3MzdjMi4wNTUzMiwwIDMuNzI3MzcsMS42NzIwNSAzLjcyNzM3LDMuNzI3MzdjMCwyLjA1NTE5IC0xLjY3MjE4LDMuNzI3MTEgLTMuNzI3MzcsMy43MjcxMXoifSksSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJtMjEuOTU0MjMsOC42ODY2NmMtMC4zNzcxMywwIC0wLjc0NzYxLDAuMTUyNjggLTEuMDEzOTYsMC40MjAyYy0wLjI2NzY1LDAuMjY2MjEgLTAuNDIxNSwwLjYzNjgyIC0wLjQyMTUsMS4wMTUyNmMwLDAuMzc3MjcgMC4xNTM5OSwwLjc0Nzc0IDAuNDIxNSwxLjAxNTI2YzAuMjY2MjEsMC4yNjYyMSAwLjYzNjgyLDAuNDIwMiAxLjAxMzk2LDAuNDIwMmMwLjM3ODQ0LDAgMC43NDc3NCwtMC4xNTM5OSAxLjAxNTI2LC0wLjQyMDJjMC4yNjc1MiwtMC4yNjc1MiAwLjQyMDIsLTAuNjM4MTMgMC40MjAyLC0xLjAxNTI2YzAsLTAuMzc4NDQgLTAuMTUyNjgsLTAuNzQ5MDUgLTAuNDIwMiwtMS4wMTUyNmMtMC4yNjYyMSwtMC4yNjc1MiAtMC42MzY4MiwtMC40MjAyIC0xLjAxNTI2LC0wLjQyMDJ6In0pKX1mdW5jdGlvbiBFbihlKXt2YXIgZT1lLnNpemUsdD0ocj1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncykubGluZUljb24sbj1yLmlzUHJvLHI9ci5pc1NpbmdsZTtyZXR1cm4gbiYmdD9ILmEuY3JlYXRlRWxlbWVudChtLHtpY29uVXJsOnQsc2l6ZTplfSk6SC5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3N0eWxlOiJtZWRpdW0iPT09ZSYmcj97aGVpZ2h0OiIzMHB4IixtaW5XaWR0aDoiMzBweCIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn06e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9LHZpZXdCb3g6IjAgMCAzMiAzMiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4bWxuc1hsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjcgMTQuOTI2QzI3IDEwLjAwNiAyMi4wNjUgNiAxNiA2UzUgMTAuMDA1IDUgMTQuOTI2YzAgNC40MTMgMy45MTMgOC4xMSA5LjIgOC44MDguMzU4LjA3Ny44NDUuMjM2Ljk2OC41NDIuMTEyLjI3OC4wNzMuNzEzLjAzNi45OTVsLS4xNTcuOTQyYy0uMDQ4LjI4LS4yMiAxLjA4OC45NTMuNTkzIDEuMTc0LS40OTQgNi4zMzQtMy43MyA4LjY0Mi02LjM4NkMyNi4yMzYgMTguNjcgMjcgMTYuODk2IDI3IDE0LjkyNXptLTQuMjQ3LS40MWEuNTc3LjU3NyAwIDAgMSAwIDEuMTUzaC0xLjYxdjEuMDNoMS42MWEuNTc4LjU3OCAwIDAgMSAwIDEuMTU1aC0yLjE4NmEuNTc4LjU3OCAwIDAgMS0uNTc3LS41Nzd2LTQuMzdjMC0uMzIuMjYtLjU3OC41NzctLjU3OGgyLjE4NmEuNTc4LjU3OCAwIDAgMSAwIDEuMTUzaC0xLjYxdjEuMDMzaDEuNjF6bS0zLjUzNyAyLjc2MmEuNTc1LjU3NSAwIDAgMS0uNTc4LjU3Ny41OC41OCAwIDAgMS0uNDYtLjIzbC0yLjI0LTMuMDV2Mi43MDNhLjU3Ny41NzcgMCAwIDEtMS4xNTQgMHYtNC4zN2EuNTc3LjU3NyAwIDAgMSAxLjAzOC0uMzQ3bDIuMjQgMy4wNXYtMi43MDNhLjU3OC41NzggMCAwIDEgMS4xNTQgMHY0LjM3em0tNS4yNiAwYS41NzcuNTc3IDAgMCAxLTEuMTU0IDB2LTQuMzdhLjU3Ny41NzcgMCAwIDEgMS4xNTMgMHY0LjM3em0tMi4yNjIuNTc3SDkuNTA4YS41NzcuNTc3IDAgMCAxLS41NzYtLjU3N3YtNC4zN2EuNTc3LjU3NyAwIDAgMSAxLjE1MyAwVjE2LjdoMS42MWEuNTc3LjU3NyAwIDAgMSAwIDEuMTU1eiJ9KSl9dmFyIE9uPUMuZC5pZnJhbWUud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLTE3dGI2d3YtMCJ9KShbImhlaWdodDo0MDBweDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSAxMDBweCk7Ym9yZGVyOm5vbmU7b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb246b3BhY2l0eSAuNXM7d2lkdGg6MTAwJTsiLCI7IiwiIl0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNMb2FkaW5nJiZPYmplY3QoQy5jKShbIm9wYWNpdHk6MDsiXSl9LEQoKT9PYmplY3QoQy5jKShbImhlaWdodDoxMDB2aDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSA1MHB4KTtib3JkZXItcmFkaXVzOjA7Il0pOk9iamVjdChDLmMpKFsiIiwiIl0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ29vZ2xlbWFwQ3VzdG9tTWVzc2FnZT9PYmplY3QoQy5jKShbImJvcmRlci1yYWRpdXM6MDsiXSk6T2JqZWN0KEMuYykoWyJib3JkZXItcmFkaXVzOjAgMCA5cHggOXB4OyJdKX0pKTtmdW5jdGlvbiBqbihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8sYSxpLGw9W10sYz0hMCx1PSExO3RyeXtpZihhPShuPW4uY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPWEuY2FsbChuKSkuZG9uZSkmJihsLnB1c2goci52YWx1ZSksbC5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxvPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPW4ucmV0dXJuJiYoaT1uLnJldHVybigpLE9iamVjdChpKSE9PWkpKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgb319cmV0dXJuIGx9fShlLHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuO2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP0FuKGUsdCk6Ik1hcCI9PT0obj0iT2JqZWN0Ij09PShuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOm4pfHwiU2V0Ij09PW4/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP0FuKGUsdCk6dm9pZCAwfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gQW4oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBQbihlKXt2YXIgZT1lLnNpemUsdD0ocj1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncykubGlua0ljb24sbj1yLmlzUHJvLHI9ci5pc1NpbmdsZTtyZXR1cm4gbiYmdD9ILmEuY3JlYXRlRWxlbWVudChtLHtpY29uVXJsOnQsc2l6ZTplfSk6SC5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3N0eWxlOiJtZWRpdW0iPT09ZSYmcj97aGVpZ2h0OiIzMHB4IixtaW5XaWR0aDoiMzBweCIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn06e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9LHZpZXdCb3g6Ii00IC00IDMyIDMyIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhtbG5zWGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHg6IjBweCIseToiMHB4In0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNywyNWEyLjM4LDIuMzgsMCwwLDEtMS42OC0uN0wuNywxOS43M2EyLjM4LDIuMzgsMCwwLDEsMC0zLjM3bDUuMjItNS4yMmEyLjM3LDIuMzcsMCwwLDEsMS42OS0uN2gwYTIuMzUsMi4zNSwwLDAsMSwxLjY4LjcxbC45Mi45Mkw4LjgsMTMuNDhsLS45My0uOTNjLS4xLS4xLS4yMS0uMTQtLjI3LS4xMmEuMzkuMzksMCwwLDAtLjI3LjEyTDIuMTEsMTcuNzhhLjM5LjM5LDAsMCwwLDAsLjU0bDQuNTcsNC41N2EuMzkuMzksMCwwLDAsLjU0LDBsNS4yMi01LjIyYS4zOS4zOSwwLDAsMCwuMTItLjI4LjM2LjM2LDAsMCwwLS4xMS0uMjZsLS45NC0uOTQsMS40MS0xLjQyLjkzLjkzYTIuMzQsMi4zNCwwLDAsMSwuNywxLjY3LDIuMzcsMi4zNywwLDAsMS0uNywxLjdMOC42NCwyNC4zQTIuMzgsMi4zOCwwLDAsMSw3LDI1Wm0xLjM2LTYuOUw2LjksMTYuNjksMTYuNjksNi45LDE4LjEsOC4zMVptOS4wOC0zLjU0aDBhMi4zNSwyLjM1LDAsMCwxLTEuNjgtLjcxbC0uOTItLjkyLDEuNDItMS40MS45My45M2EuMzcuMzcsMCwwLDAsLjI3LjEyLjM5LjM5LDAsMCwwLC4yNy0uMTJsNS4yMi01LjIyYS4zOS4zOSwwLDAsMCwwLS41NEwxOC4zMiwyLjExYS4zOS4zOSwwLDAsMC0uNTQsMEwxMi41Niw3LjMzYS4zOS4zOSwwLDAsMC0uMTIuMjguMzYuMzYsMCwwLDAsLjExLjI2bC45NC45NC0xLjQxLDEuNDItLjkzLS45M2EyLjM0LDIuMzQsMCwwLDEtLjctMS42NywyLjM3LDIuMzcsMCwwLDEsLjctMS43TDE2LjM2LjdhMi4zOSwyLjM5LDAsMCwxLDMuMzcsMEwyNC4zLDUuMjdhMi4zOCwyLjM4LDAsMCwxLDAsMy4zN2wtNS4yMiw1LjIyQTIuMzcsMi4zNywwLDAsMSwxNy4zOSwxNC41NloifSkpfWZ1bmN0aW9uIEluKGUpe3ZhciBlPWUuc2l6ZSx0PShyPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS5saW5rZWRpbkljb24sbj1yLmlzUHJvLHI9ci5pc1NpbmdsZTtyZXR1cm4gbiYmdD9ILmEuY3JlYXRlRWxlbWVudChtLHtpY29uVXJsOnQsc2l6ZTplfSk6SC5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3N0eWxlOiJtZWRpdW0iPT09ZSYmcj97aGVpZ2h0OiIzMHB4IixtaW5XaWR0aDoiMzBweCIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9Ont3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sdmVyc2lvbjoiMS4xIix2aWV3Qm94OiIwIDAgNzIgNzIiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTU3LDU1SDQ4Ljc4VjQxYzAtMy44NC0xLjQ2LTYtNC40OS02LTMuMzEsMC01LDIuMjMtNSw2VjU1SDMxLjMzVjI4LjMzaDcuOTJ2My42YTkuMzIsOS4zMiwwLDAsMSw4LTQuNDFDNTMsMjcuNTIsNTcsMzEsNTcsMzguMTJaTTIxLjg4LDI0Ljg0YTQuOTIsNC45MiwwLDEsMSw0Ljg5LTQuOTJBNC45LDQuOSwwLDAsMSwyMS44OCwyNC44NFpNMTcuNzksNTVoOC4yNlYyOC4zM0gxNy43OVoifSkpfWZ1bmN0aW9uIF9uKGUpe3ZhciBlPWUuc2l6ZSx0PShyPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS5za3lwZUljb24sbj1yLmlzUHJvLHI9ci5pc1NpbmdsZTtyZXR1cm4gbiYmdD9ILmEuY3JlYXRlRWxlbWVudChtLHtpY29uVXJsOnQsc2l6ZTplfSk6SC5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3N0eWxlOiJtZWRpdW0iPT09ZSYmcj97aGVpZ2h0OiIzMHB4IixtaW5XaWR0aDoiMzBweCIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn06e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9LHZlcnNpb246IjEuMSIsdmlld0JveDoiMCAwIDUxMiA1MTIiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTQzNi45LDI5Ni44YzIuOC0xMi41LDQuMi0yNS40LDQuMi0zOC43YzAtOTkuNy04Mi0xODAuNi0xODMuMi0xODAuNmMtMTAuNywwLTIxLjEsMC45LTMxLjMsMi42ICBDMjEwLjMsNjkuOSwxOTEsNjQsMTcwLjIsNjRDMTExLjYsNjQsNjQsMTEwLjksNjQsMTY4LjdjMCwxOS40LDUuMywzNy41LDE0LjYsNTNjLTIuNCwxMS43LTMuNywyMy45LTMuNywzNi4zICBjMCw5OS44LDgyLDE4MC42LDE4My4xLDE4MC42YzExLjUsMCwyMi43LTEsMzMuNS0zYzE1LDcuOSwzMi4xLDEyLjQsNTAuMiwxMi40YzU4LjcsMCwxMDYuMi00Ni45LDEwNi4yLTEwNC43ICBDNDQ4LDMyNi42LDQ0NCwzMTAuOCw0MzYuOSwyOTYuOHogTTM1MS45LDM0NC4zYy04LjUsMTEuOC0yMSwyMS4yLTM3LjIsMjcuOGMtMTYuMSw2LjYtMzUuMyw5LjktNTcuMyw5LjkgIGMtMjYuMywwLTQ4LjMtNC42LTY1LjYtMTMuNmMtMTIuMy02LjYtMjIuNC0xNS40LTMwLjItMjYuNGMtNy44LTExLTExLjctMjItMTEuNy0zMi42YzAtNi42LDIuNi0xMi4zLDcuNi0xNy4xYzUtNC42LDExLjUtNywxOS4xLTcgIGM2LjMsMCwxMS43LDEuOCwxNi4xLDUuNWM0LjIsMy41LDcuOCw4LjcsMTAuNywxNS41YzMuMyw3LjMsNi44LDEzLjUsMTAuNiwxOC40YzMuNiw0LjcsOC43LDguNiwxNS4zLDExLjcgIGM2LjcsMy4xLDE1LjYsNC43LDI2LjYsNC43YzE1LjEsMCwyNy41LTMuMiwzNi44LTkuNWM5LjItNi4xLDEzLjYtMTMuNSwxMy42LTIyLjVjMC03LjEtMi4zLTEyLjctNy4xLTE3LjEgIGMtNS00LjYtMTEuNS04LjItMTkuNi0xMC42Yy04LjMtMi42LTE5LjYtNS4zLTMzLjYtOC4yYy0xOS00LTM1LjEtOC44LTQ4LTE0LjJjLTEzLjEtNS41LTIzLjctMTMuMi0zMS41LTIyLjcgIGMtNy45LTkuNy0xMS44LTIxLjktMTEuOC0zNi4yYzAtMTMuNyw0LjItMjUuOSwxMi40LTM2LjVjOC4yLTEwLjUsMjAuMS0xOC43LDM1LjYtMjQuM2MxNS4yLTUuNiwzMy4zLTguNCw1My43LTguNCAgYzE2LjQsMCwzMC43LDEuOSw0Mi43LDUuNWMxMi4xLDMuNywyMi4yLDguNywzMC4zLDE0LjljOCw2LjIsMTQsMTIuOCwxNy44LDE5LjdjMy44LDcsNS43LDEzLjksNS43LDIwLjZjMCw2LjQtMi41LDEyLjMtNy41LDE3LjQgIGMtNSw1LjEtMTEuMyw3LjgtMTguOCw3LjhjLTYuOCwwLTEyLjEtMS42LTE1LjgtNC44Yy0zLjQtMy03LTcuNi0xMC45LTE0LjNjLTQuNi04LjUtMTAuMS0xNS4zLTE2LjQtMjAuMWMtNi4yLTQuNi0xNi40LTctMzAuNi03ICBjLTEzLjEsMC0yMy44LDIuNi0zMS43LDcuN2MtNy42LDQuOS0xMS4zLDEwLjYtMTEuMywxNy4zYzAsNC4xLDEuMiw3LjUsMy43LDEwLjVjMi42LDMuMSw2LjIsNS45LDEwLjksOC4yICBjNC44LDIuNCw5LjgsNC4zLDE0LjcsNS42YzUuMSwxLjQsMTMuNiwzLjUsMjUuMyw2LjFjMTQuOSwzLjEsMjguNSw2LjcsNDAuNSwxMC40YzEyLjIsMy45LDIyLjcsOC42LDMxLjMsMTQuMSAgYzguOCw1LjYsMTUuNywxMi45LDIwLjcsMjEuNWM0LjksOC42LDcuNCwxOS40LDcuNCwzMS44QzM2NC44LDMxOC45LDM2MC41LDMzMi41LDM1MS45LDM0NC4zeiJ9KSl9ZnVuY3Rpb24gem4oZSl7dmFyIGU9ZS5zaXplLHQ9KHI9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3MpLnNsYWNrSWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0sdmVyc2lvbjoiMS4xIix2aWV3Qm94OiIwIDAgMTY4IDE2OCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNDcuMiwxMDBBMTMuMiwxMy4yLDAsMSwxLDM0LDg2LjhINDcuMlptNi42LDBhMTMuMiwxMy4yLDAsMCwxLDI2LjQsMHYzM2ExMy4yLDEzLjIsMCwwLDEtMjYuNCwwWiIsZmlsbDoiI2UwMWU1YSJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik02Nyw0N0ExMy4yLDEzLjIsMCwxLDEsODAuMiwzMy44VjQ3Wm0wLDYuN2ExMy4yLDEzLjIsMCwxLDEsMCwyNi40SDMzLjlhMTMuMiwxMy4yLDAsMCwxLDAtMjYuNFoiLGZpbGw6IiMzNmM1ZjAifSksSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTE5LjksNjYuOWExMy4yLDEzLjIsMCwxLDEsMTMuMiwxMy4ySDExOS45Wm0tNi42LDBhMTMuMiwxMy4yLDAsMCwxLTI2LjQsMFYzMy44YTEzLjIsMTMuMiwwLDAsMSwyNi40LDBaIixmaWxsOiIjMmViNjdkIn0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEwMC4xLDExOS44QTEzLjIsMTMuMiwwLDEsMSw4Ni45LDEzM1YxMTkuOFptMC02LjZhMTMuMiwxMy4yLDAsMSwxLDAtMjYuNGgzMy4xYTEzLjIsMTMuMiwwLDEsMSwwLDI2LjRaIixmaWxsOiIjZWNiMjJlIn0pKX1mdW5jdGlvbiBUbihlKXt2YXIgZT1lLnNpemUsdD0ocj1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncykuc21zSWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7dmlld0JveDoiMCAwIDMyIDMyIixzdHlsZToibWVkaXVtIj09PWUmJnI/e2hlaWdodDoiMzBweCIsbWluV2lkdGg6IjMwcHgiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9Ont3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifSx4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhtbG5zWGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsifSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yMSAyM2g0LjAxYzEuMSAwIDEuOTktLjg5MyAxLjk5LTEuOTk0VjguOTk0QzI3IDcuODk0IDI2LjExIDcgMjUuMDEgN0g2Ljk5QzUuODkgNyA1IDcuODkzIDUgOC45OTR2MTIuMDEyQzUgMjIuMTA2IDUuODkgMjMgNi45OSAyM2g5LjU2NmwzLjExNCAzLjUwNGMuNzMuODIgMS4zMy42MDIgMS4zMy0uNVYyM3pNMTAuNTE1IDEyLjE2NWMuMzYuMTEuNjgyLjI2Ljk2Mi40NDZsLS40MTMuODhhMy44ODIgMy44ODIgMCAwIDAtLjkxNS0uNDE2IDIuOSAyLjkgMCAwIDAtLjgyLS4xMzZjLS4zIDAtLjUzNi4wNTQtLjcwNy4xNmEuNTEyLjUxMiAwIDAgMC0uMjU2LjQ2YzAgLjE3My4wNTUuMzIuMTY3LjQzNy4xMS4xMi4yNTIuMjE0LjQyLjI4NS4xNy4wNzIuNDA4LjE1Mi43MTQuMjQuNC4xMi43MjUuMjM2Ljk3Ny4zNS4yNTIuMTE3LjQ2Ny4yOS42NDQuNTE4LjE3Ny4yMjguMjY2LjUyNi4yNjYuODkyIDAgLjM0NC0uMDk1LjY0Ny0uMjg1LjkwNy0uMTkuMjYtLjQ1My40Ni0uNzkuNi0uMzM4LjE0LS43MjQuMjEyLTEuMTYuMjEyLS40NSAwLS44ODgtLjA4Ni0xLjMxLS4yNTVhMy42NzMgMy42NzMgMCAwIDEtMS4xMS0uNjg0bC40MzQtLjg2M2MuMy4yNzYuNjI4LjQ5Ljk4NS42NC4zNTYuMTUuNjk1LjIyNCAxLjAxNy4yMjQuMzUgMCAuNjIyLS4wNjMuODE2LS4xOWEuNTk4LjU5OCAwIDAgMCAuMjkyLS41MjguNjE4LjYxOCAwIDAgMC0uMTc0LS40NSAxLjIxMiAxLjIxMiAwIDAgMC0uNDMtLjI4IDkuNjUgOS42NSAwIDAgMC0uNzEzLS4yMzcgNy40MTQgNy40MTQgMCAwIDEtLjk3Ny0uMzQ3IDEuNzUgMS43NSAwIDAgMS0uNjM3LS40OThjLS4xNzctLjIyLS4yNjYtLjUxLS4yNjYtLjg3NyAwLS4zMzQuMDktLjYyNS4yNy0uODc0LjE4LS4yNS40MzQtLjQ0My43Ni0uNTc4LjMyNC0uMTM1LjctLjIwMiAxLjEyNy0uMjAyLjM4IDAgLjc1LjA1NSAxLjExLjE2NXptNy43MzIgNS44bC0uMDEtNC40MjQtMS44NyAzLjgwNmgtLjY1M2wtMS44NjctMy44MDV2NC40MjZoLS45NDJWMTIuMDRoMS4xODZsMS45NTUgMy45MzggMS45NDUtMy45MzdoMS4xNzh2NS45MjZoLS45MnptNS43MjgtNS44Yy4zNi4xMS42OC4yNi45NjIuNDQ2bC0uNDEzLjg4YTMuODgyIDMuODgyIDAgMCAwLS45MTUtLjQxNiAyLjkgMi45IDAgMCAwLS44Mi0uMTM2Yy0uMyAwLS41MzcuMDU0LS43MDcuMTZhLjUxMi41MTIgMCAwIDAtLjI1Ny40NmMwIC4xNzMuMDU2LjMyLjE2OC40MzcuMTEuMTIuMjUyLjIxNC40Mi4yODUuMTcuMDcyLjQwOC4xNTIuNzE0LjI0LjQuMTIuNzI1LjIzNi45NzcuMzUuMjUyLjExNy40NjcuMjkuNjQ0LjUxOC4xNzcuMjI4LjI2Ni41MjYuMjY2Ljg5MiAwIC4zNDQtLjA5NS42NDctLjI4NS45MDctLjE5LjI2LS40NTMuNDYtLjc5LjYtLjMzOC4xNC0uNzI0LjIxMi0xLjE2LjIxMi0uNDUgMC0uODg4LS4wODYtMS4zMS0uMjU1YTMuNjczIDMuNjczIDAgMCAxLTEuMTEtLjY4NGwuNDM0LS44NjNjLjMuMjc2LjYyOC40OS45ODUuNjQuMzU2LjE1LjY5NS4yMjQgMS4wMTcuMjI0LjM1IDAgLjYyMi0uMDYzLjgxNi0uMTlhLjU5OC41OTggMCAwIDAgLjI5LS41MjguNjE4LjYxOCAwIDAgMC0uMTcyLS40NSAxLjIxMiAxLjIxMiAwIDAgMC0uNDMtLjI4IDkuNjUgOS42NSAwIDAgMC0uNzEzLS4yMzcgNy40MTQgNy40MTQgMCAwIDEtLjk3Ny0uMzQ3IDEuNzUgMS43NSAwIDAgMS0uNjM3LS40OThjLS4xNzctLjIyLS4yNjYtLjUxLS4yNjYtLjg3NyAwLS4zMzQuMDktLjYyNS4yNy0uODc0LjE4LS4yNS40MzQtLjQ0My43Ni0uNTc4LjMyNC0uMTM1LjctLjIwMiAxLjEyNi0uMjAyLjM4IDAgLjc1LjA1NSAxLjExMi4xNjV6In0pKX12YXIgTG49Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtMWNnd21tYy0wIn0pKFsibWFyZ2luOjI1cHggMjBweDsiXSk7ZnVuY3Rpb24gTW4oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1uKXt2YXIgcixvLGEsaSxsPVtdLGM9ITAsdT0hMTt0cnl7aWYoYT0obj1uLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0ocj1hLmNhbGwobikpLmRvbmUpJiYobC5wdXNoKHIudmFsdWUpLGwubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsbz1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1uLnJldHVybiYmKGk9bi5yZXR1cm4oKSxPYmplY3QoaSkhPT1pKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IG99fXJldHVybiBsfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9SbihlLHQpOiJNYXAiPT09KG49Ik9iamVjdCI9PT0obj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSkpJiZlLmNvbnN0cnVjdG9yP2UuY29uc3RydWN0b3IubmFtZTpuKXx8IlNldCI9PT1uP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9SbihlLHQpOnZvaWQgMH0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFJuKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gTm4oZSl7dmFyIGU9ZS5zaXplLHQ9KHI9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3MpLnNuYXBjaGF0SWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0sdmlld0JveDoiMCAwIDUxMiA1MTIiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseG1sbnNYbGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoibSAyNTQuMjMxOTIsNjcuNzQ1NjU2IGMgLTI0LjE1NTMsMC4xNjUzNiAtNDkuMTMzMyw2LjU3NjE2IC02OC43MTg4LDIyLjA2MjUgLTE0LjY2NywxMS41Nzc2NTQgLTI2LjE5OTE2LDI2LjkyMTE2NCAtMzMuNDY4NzEsNDQuMDYyNTA0IC0wLjAxMDksMC4wNDE1IC0wLjAyMTMsMC4wODMyIC0wLjAzMTIsMC4xMjUgLTYuOTIzNTgsMTcuNjYyMDYgLTYuMjgyNDEsMzYuNDU5MDggLTUuMzQzNzUsNTMuODc1IDQuOWUtNCwwLjAxMDYgLTQuOWUtNCwwLjAyMDcgMCwwLjAzMTIgMC41NzA0NiwxMi4yNDExMSAxLjkxOTIsMjQuMDkxODIgMC43ODEyNSwzNS4zNDM3NSAtMC4wOTE5LDAuNDM4MDIgLTAuMDk2LDAuNTQ3NzYgLTAuMTU2MjUsMC44MTI1IC01LjQ0NTE2LDAuOTg3MDEgLTExLjM3MiwwLjYyOTAyIC0xNy4yNSwtMC41IC0wLjAzMTIsLTIuOWUtNCAtMC4wNjI1LC0yLjllLTQgLTAuMDkzNywwIC00LjAyNjM5LC0wLjY5MzA2IC04LjMyNzk3LC0yLjM1MjI5IC0xMy4xODc1LC0zLjcxODc1IC0wLjA4MjgsLTAuMDIzIC0wLjE2NjE1LC0wLjA0MzggLTAuMjUsLTAuMDYyNSAtNC43MTYzMywtMS4wNzgyNCAtOS4zNTI0MiwwLjI5NTAxIC0xMi45MDYyNSwyLjkzNzUgLTAuMDQ1NywwLjAyOTYgLTAuMTA5ODUsMC4wNjM1IC0wLjE1NjI1LDAuMDkzNyAtMC4wNzEsMC4wNTQgLTAuMTQ4NjUsMC4xMDEyNCAtMC4yMTg3NSwwLjE1NjI1IC0yLjg5MjY1LDEuOTE1NiAtNi44NTQ5NzgsNS4xMzE5NyAtNy4wNjI0OTgsMTAuNzE4NzUgLTAuMDA5LDAuMzY2NTUgMC4wMjI1LDAuNzM0MDcgMC4wOTM3LDEuMDkzNzUgMC42MjQ2NCwzLjI4Mjk5IDIuNjQ0MDcsNS42ODM0MyA0LjQzNzQ5OCw3LjI1IDEuNzkzNDIsMS41NjY1NyAzLjQ4Nzc4LDIuNjAxMTkgNC41MzEyNSwzLjQwNjI1IDAuMDgxNCwwLjA2NTEgMC4xNjQ3NCwwLjEyNzYyIDAuMjUsMC4xODc1IDguNzk2OTUsNS45MzUxNCAxOC41MzI4MSw4LjU0Mjk5IDI3LDExLjg0Mzc1IDAuMDA5LDAuMDAzIDAuMDIyNSwtMC4wMDMgMC4wMzEyLDAgNS44NjIwNSwyLjU5NzMxIDEwLjk1NTkyLDYuNjM2MDkgMTIuMTI1LDExLjcxODc1IDEuNDU5NzcsNi40MjcxMyAtMS4yNDY4LDEzLjgwNTU4IC00Ljc4MTI1LDIwLjk2ODc1IC0wLjAwNCwwLjAwOSAwLjAwNCwwLjAyMjYgMCwwLjAzMTIgLTkuNTMzMzQsMTguOTg1NjUgLTIzLjY5MDg5LDM1LjQ5NjA5IC00MS4wOTM3NDgsNDcuNTkzNzUgLTkuMTIzNzQsNi4yOTUxMSAtMTkuNDE2NTI1LDEwLjk5NDUgLTMwLjE1NjMwNSwxMy45MDY0IC0wLjE0ODE0OSwwLjA0NTMgLTAuMjk0MTkyLDAuMDk3NCAtMC40Mzc1LDAuMTU2MjUgLTIuMjAzNzQsMC44Mjk4NiAtNy40MjkyNCwxLjM3MjQ3IC0xMC43MTg3NSw2LjM3NSAtMC4yMzM3OTMsMC4zNDkzNyAtMC40MjMyODIsMC43MjgzNSAtMC41NjI1LDEuMTI1IC0xLjEwOTIzLDMuMjE2OCAwLjE1NjIsNi42NzA1OCAxLjcxODc1LDguNTYyNSAxLjQ5MjEsMS44MDY2MiAzLjE1NjY3LDIuODU3ODYgNC41OTM3NSwzLjYyNSAwLjA3MzUsMC4wNDMgMC4xNDUxLDAuMDgyNCAwLjIxODc1LDAuMTI1IDkuMDQyNzYsNS4yMjYwOCAxOC45MTg1OTUsNy40OTE1NyAyNy45Mzc1MDUsOS44MTI1IDAuMDQxNSwwLjAxMDkgMC4wODMyLDAuMDIxMyAwLjEyNSwwLjAzMTIgNi40OTgxLDEuNDc5NzcgMTIuNDg4NzM4LDIuMjcwMjkgMTcuMzc0OTk4LDQuMzc1IDAuMjM5MjMsMC40MDIzNCAwLjcyODUyLDIuMDU4MzIgMS44NzUsNC44MTI1IDEuNjAxNTEsNC45OTk2OCAyLjMyOTUyLDEwLjkwMzcgNC4xODc1LDE3LjA5Mzc1IDAuNTA4MDQsMS43MTM0MiAyLjAwMjI1LDMuMDk1NTYgMy43NSwzLjQ2ODc1IDQuMTA0LDAuODcxOTMgNi4zNjExOSwtMC41MzYxNyA2LjcxODc1LC0wLjU2MjUgMC4xNjc1OCwtMC4wMTI0IDAuMzM0NTIsLTAuMDMzMyAwLjUsLTAuMDYyNSAxNS4xMDAxOSwtMi42NDY4IDMwLjE2ODM1LC00Ljk5MzgzIDQzLjk5OTk2LC0xLjUgMC4wMSwwLjAwMyAwLjAyMSwtMC4wMDMgMC4wMzEsMCAxNC41MTYsMy44MjM2MyAyNy4xMzA5LDEzLjkxNDQ2IDQxLjM0MzgsMjIuNTkzNzUgMC4wMjUsMC4wMTU0IDAuMDM3LDAuMDQ3MSAwLjA2MiwwLjA2MjUgbCAwLC0wLjAzMTIgYyA5LjQzNDIsNS45ODY0NiAyMC4zMzkzLDExLjg0ODUgMzIuOTM3NSwxMi4yODEyNSBsIDAsMC4wMzEyIGMgMC4wNDIsMTBlLTQgMC4wODMsLTEwZS00IDAuMTI1LDAgOS41MTU1LDAuNTM4OTYgMTguODU1LC0wLjA2NTcgMjcuOTY4NywtMC42ODc1IDAuMDUyMSw4LjFlLTQgMC4xMDQyLDguMWUtNCAwLjE1NjMsMCA3LjgwMzgsLTAuNzczMDIgMTUuMzgwNywtMy4zNzAwMiAyMiwtNy42MjUgMC4wOTQsLTAuMDUzNSAwLjE4NzYsLTAuMTAyNTggMC4yODEyLC0wLjE1NjI1IDE0Ljk0NTIsLTguNTYzNDQgMjguMjI1OCwtMTguODgyMzQgNDIuNzgxMywtMjUuMzQzNzUgMC4wMjEsLTAuMDA4IDAuMDQyLC0wLjAyMzcgMC4wNjIsLTAuMDMxMiA0LjcyMDgsLTEuNzExNTcgMTAuNjE4OSwtMS42MTUwNiAxNy4xODc1LC0yLjA2MjUgMC4wNjIsLTAuMDAyIDAuMTI1LDAuMDAyIDAuMTg3NSwwIDEyLjA1MjcsLTAuMzcyMSAyNC4xMjgzLDAuMjc0MTQgMzYuMDkzNywxLjg3NSAwLjQxNDQ4LDAuMDUyMiAwLjgzNTUyLDAuMDUyMiAxLjI1LDAgMS41NzE0LC0wLjE4NjQgMy4yODg5LC0xLjI0MTU1IDQuMTI1LC0yLjMxMjUgMC44MzYxLC0xLjA3MDk1IDEuMDc3LC0xLjk0MzE4IDEuMjUsLTIuNTYyNSAwLjM0NjIsLTEuMjM4NjQgMC42NjcsLTEuODMxMDIgMC4wOTQsLTAuODEyNSAwLjE4MTcsLTAuMzE2MDYgMC4zMjg3LC0wLjY1MjA1IDAuNDM3NSwtMSAyLjE5NzEsLTcuMjgwMDIgMy4zOTI1LC0xMy44Njc5NyA2LjkzNzUsLTE3Ljk2ODc1IDEuNTkyOSwtMS41NTcxNiA0LjMzNCwtMi4zMzg4NiA3LjQzNzUsLTIuMjgxMjUgMC4yMjk1MiwwLjAwNSAwLjQ1OTQxLC0wLjAwNSAwLjY4NzUsLTAuMDMxMiAxMC40MDI0LC0xLjIzMTMzIDE5LjgwNTIsLTQuOTg2OTYgMjguNzE4OCwtOC4xODc1IDAuMTA1NTYsLTAuMDM4MiAwLjIwOTg0LC0wLjA3OTkgMC4zMTI2LC0wLjEyNTA1IDMuMzExMywtMS40NDM0MSA4LjI0NTMsLTMuMDk5NjMgMTEuNjI1LC03Ljg0Mzc1IDAuMDE4LC0wLjAyNTQgMC4wNDQsLTAuMDM2OSAwLjA2MiwtMC4wNjI1IGwgLTAuMDMxLC0wLjAzMTIgYyAyLjg0MjgsLTMuOTcyNSAxLjUyMywtOS40MjQ2OSAtMi41LC0xMS45MDYyNSBsIDAuMDYyLC0wLjA2MjUgYyAtMC4xMjc1LC0wLjA4NjcgLTAuMjQ3NCwtMC4xMzU5NSAtMC4zNzUsLTAuMjE4NzUgLTAuMDM0LC0wLjAxODYgLTAuMDU5LC0wLjA0NDQgLTAuMDk0LC0wLjA2MjUgbCAwLDAuMDMxMiBjIC00LjgyNTksLTMuMTAwMDYgLTkuNjYxMiwtMy41MzA5MiAtMTIuNzE4NywtNC42NTYyNSAtMC4wNjIxLC0wLjAyMjEgLTAuMTI0NiwtMC4wNDI5IC0wLjE4NzUsLTAuMDYyNSAtMjAuNjg3MiwtNi42MzU2OCAtMzguNTc3OCwtMjAuOTIxMTEgLTUxLjkzNzUsLTM4LjMxMjUgLTcuNDE3MiwtOS42OTEyOSAtMTMuNjg5OSwtMjAuMjIyMDIgLTE3Ljg0MzgsLTMxLjQ2ODc1IC0wLjAxNCwtMC4wNDEgLTAuMDE4LC0wLjA4NCAtMC4wMzEsLTAuMTI1IC0xLjYyNjIsLTQuODgzNTMgLTEuNzA3NywtMTAuMjA5MDIgMC42ODc1LC0xMy40Mzc1IDAuMDMxNywtMC4wMzA4IDAuMDYzMSwtMC4wNjIgMC4wOTQsLTAuMDkzNyAzLjczNjYsLTUuMzY4MzkgMTAuNTkzNSwtOC44MTg3OCAxNy45MDYzLC0xMS41MzEyNSAwLjAzLC0wLjAxMDQgMC4wNjQsLTAuMDIwOCAwLjA5NCwtMC4wMzEyIDguMDgxOSwtMi44MTE1NyAxNi45MjYzLC02LjA4Njg2IDI0LjIxODcsLTEyLjU2MjUgMC4wMzE4LC0wLjAzMDggMC4wNjMxLC0wLjA2MiAwLjA5NCwtMC4wOTM3IDEuMTI4MywtMS4wNjY5NSAyLjQ4NTIsLTIuNDU2MDIgMy41LC00LjUzMTI1IDEuMDE0OSwtMi4wNzUyMyAxLjQ5NjEsLTUuMzEwMzIgMC4xNTYzLC04LjEyNSAzZS01LC0wLjAxMDQgM2UtNSwtMC4wMjA4IDAsLTAuMDMxMiAtMi4xMDQ0LC00LjMzNTQ5IC01Ljc3NCwtNi41NjYyIC04LjUsLTguMTg3NSAtMC4wMTAzLC0zZS01IC0wLjAyMDcsLTNlLTUgLTAuMDMxLDAgLTQuNTY3MywtMi42NjU5MiAtOS44ODE2LC0yLjgzODg3IC0xNC41LC0xLjM0Mzc1IC0wLjAxLDAuMDAzIC0wLjAyMSwtMC4wMDMgLTAuMDMxLDAgLTAuMDMxLDAuMDEwMSAtMC4wNjMsMC4wMjEgLTAuMDk0LDAuMDMxMiAtNC45ODkyLDEuNTE4MzUgLTkuMDYyNCwzLjMzMzkxIC0xMi44NDM4LDMuODEyNSAtMC4wODM5LDAuMDE4NyAtMC4xNjcyMiwwLjAzOTUgLTAuMjUsMC4wNjI1IC01LjM3MzcsMC45NTc3NyAtMTAuNTc3MywxLjE4Nzc5IC0xNC42MjUsLTAuMzEyNSAtMC4wMzgsLTAuNjA2NDkgLTAuMDU3LC0xLjc5MDEzIC0wLjIxODcsLTMuMjUgbCAwLjAzMSwwIGMgLTAuMjk4OCwtOC45MTUzIDAuNDU2NSwtMTguMTA2MDQgMC41OTM3LC0yNy42MjUgM2UtNCwtMC4wMjEyIC0zZS00LC0wLjA0MTMgMCwtMC4wNjI1IDAuNDExMiwtMTQuNDYzMTggMC45OTQ4LC0yOS4zNTI5NSAtMS4xMjUsLTQ0LjM0Mzc1IC0wLjAwOSwtMC4wNzMxIC0wLjAxOTEsLTAuMTQ2MDcgLTAuMDMxLC0wLjIxODc1IC00LjYxNTQsLTI1LjI4NzUzIC0yMC42ODcsLTQ3LjA2NzM2IC00MS4wNjI1LC02MS41NjI1MDQgLTE0LjgxMjEsLTEwLjUwOTg3IC0zMi4zOTcyLC0xNi4zNzU4MSAtNTAuMjUsLTE4LjAzMTI1IC0wLjAxLC0wLjAwMSAtMC4wMjEsMC4wMDEgLTAuMDMxLDAgLTUuOTkxMiwtMC42MDQ4NyAtMTEuOTc0MSwtMC44MTk0NSAtMTcuOTM3NSwtMC43NSB6In0pKX12YXIgRG49Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtdzB5OWo1LTAifSkoWyJtYXJnaW46NjBweCAwIDYwcHggMDtsaW5lLWhlaWdodDoyM3B4OyYgYXtjb2xvcjojMTExO2ZvbnQtc2l6ZToyNnB4O3RleHQtZGVjb3JhdGlvbjpub25lO3VuaWNvZGUtYmlkaTpwbGFpbnRleHQ7fSJdKTtmdW5jdGlvbiBVbihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8sYSxpLGw9W10sYz0hMCx1PSExO3RyeXtpZihhPShuPW4uY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPWEuY2FsbChuKSkuZG9uZSkmJihsLnB1c2goci52YWx1ZSksbC5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxvPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPW4ucmV0dXJuJiYoaT1uLnJldHVybigpLE9iamVjdChpKSE9PWkpKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgb319cmV0dXJuIGx9fShlLHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuO2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP0JuKGUsdCk6Ik1hcCI9PT0obj0iT2JqZWN0Ij09PShuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOm4pfHwiU2V0Ij09PW4/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP0JuKGUsdCk6dm9pZCAwfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gQm4oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBGbihlKXt2YXIgZT1lLnNpemUsdD0ocj1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncykudGVsZWdyYW1JY29uLG49ci5pc1BybyxyPXIuaXNTaW5nbGU7cmV0dXJuIG4mJnQ/SC5hLmNyZWF0ZUVsZW1lbnQobSx7aWNvblVybDp0LHNpemU6ZX0pOkguYS5jcmVhdGVFbGVtZW50KCJzdmciLHtzdHlsZToibWVkaXVtIj09PWUmJnI/e2hlaWdodDoiMzBweCIsbWluV2lkdGg6IjMwcHgiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9Ont3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifSx2aWV3Qm94OiItOCAtMTcgMTMwIDEzMCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4bWxuc1hsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNODguNzIzLDEyLjE0MkM3Ni40MTksMTcuMjM4LDIzLjY2MSwzOS4wOTEsOS4wODQsNDUuMDQ3Yy05Ljc3NiwzLjgxNS00LjA1Myw3LjM5Mi00LjA1Myw3LjM5MiAgICBzOC4zNDUsMi44NjEsMTUuNDk5LDUuMDA3YzcuMTUzLDIuMTQ2LDEwLjk2OC0wLjIzOCwxMC45NjgtMC4yMzhsMzMuNjItMjIuNjUyYzExLjkyMi04LjEwNyw5LjA2MS0xLjQzMSw2LjE5OSwxLjQzMSAgICBjLTYuMTk5LDYuMi0xNi40NTIsMTUuOTc1LTI1LjAzNiwyMy44NDRjLTMuODE1LDMuMzM4LTEuOTA4LDYuMTk5LTAuMjM4LDcuNjNjNi4xOTksNS4yNDYsMjMuMTI5LDE1Ljk3NiwyNC4wODIsMTYuNjkxICAgIGM1LjAzNywzLjU2NiwxNC45NDUsOC42OTksMTYuNDUyLTIuMTQ2YzAsMCw1Ljk2MS0zNy40MzUsNS45NjEtMzcuNDM1YzEuOTA4LTEyLjYzNywzLjgxNS0yNC4zMjEsNC4wNTMtMjcuNjU5ICAgIEM5Ny4zMDcsOC44MDQsODguNzIzLDEyLjE0Miw4OC43MjMsMTIuMTQyeiJ9KSl9ZnVuY3Rpb24gSG4oZSl7dmFyIGU9ZS5zaXplLHQ9KHI9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3MpLnRpa3Rva0ljb24sbj1yLmlzUHJvLHI9ci5pc1NpbmdsZTtyZXR1cm4gbiYmdD9ILmEuY3JlYXRlRWxlbWVudChtLHtpY29uVXJsOnQsc2l6ZTplfSk6SC5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3N0eWxlOiJtZWRpdW0iPT09ZSYmcj97aGVpZ2h0OiIzMHB4IixtaW5XaWR0aDoiMzBweCIsZmlsbDoiIzAwMCIsc3Ryb2tlOiJub25lIn06e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLGZpbGw6IiMwMDAiLHN0cm9rZToibm9uZSJ9LHZlcnNpb246IjEuMSIsdmlld0JveDoiMCAwIDEyMCAxMjAiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTQ5LjY3LDQ5Ljk0YTI2LjM3LDI2LjM3LDAsMCwxLDQuNjEuMjhWNjYuMzNDNDMsNjIuNTYsMzEuNjgsNzUuNjcsMzkuNDQsODcuMTQsMTUuNDIsNzUuNDIsNDkuNjcsNDkuOTQsNDkuNjcsNDkuOTRabTI1LjU1LTM0aDQuNHMtLjg3LDcuNDUsNS41MiwxNC43NmwuMDkuMDlDODEsMjkuNjksNzQuNjIsMjEuNTYsNzUuMjIsMTUuOTFabTI2LjUsMjIuMjJWNTMuOTFDODQuNDQsNTIuMDYsNzkuODMsNDcsNzkuNjQsNDYuODV2MzIuNkM3OS4zLDEwNCw0OS40MywxMTksMjkuNDEsOTkuNjRsMCwwYTI5LjksMjkuOSwwLDAsMCwxNi4zMiw0Ljg4QzYyLjA4LDEwNC45MSw3NS4yLDkwLDc1LDc1LjU3VjQzYy4yMS4xMiwyMi4wOC01LjMsMjIuMDgtNS4zQTE0LjkzLDE0LjkzLDAsMCwwLDEwMS43MiwzOC4xM1oiLGZpbGw6IiNlZTFkNTIifSksSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOTcuMDksMzcuNjdWNTBhNTQuOTQsNTQuOTQsMCwwLDEtOS43Ny0xLjMzQzc4LjI1LDQ2LjUsNzUuMiw0My4wOSw3NSw0M3YzMi42YTMyLjg3LDMyLjg3LDAsMCwxLTEuOTMsMTAuMTJDNzAuMzgsOTIuNSw2Mi4yNSwxMDUsNDUuNzcsMTA0LjU2YTMwLjEsMzAuMSwwLDAsMS0xNi4zMi00Ljg4bDAsMGMtNy4xNi01LjM5LTEwLTEzLjE0LTEwLTI0LjQ1LjMxLTcuNTQsOS43NS0yNS4yNywzMC4yMy0yNS4yN1Y2Mi40M3MtNi4zNS0yLjEtMTEuNDQsMS42MmMtMy41NSwyLjc2LTUuNDQsNS40NC02LDEwLjI1LDAsMy41My44NSw4LjUyLDUuNTksMTEuODYuNTYuMzYsMS4xLjY5LDEuNjQsMSwyLjc5LDMsMTIuNTcsMy42NSwxNy4yOSwxLjExLDYuOTItMy43Miw2Ljg4LTcyLjM0LDYuODgtNzIuMzRINzUuMmEyMiwyMiwwLDAsMCw1LjMxLDEwLjg4LDI1LjgyLDI1LjgyLDAsMCwwLDQuNyw0LDI0LjQ1LDI0LjQ1LDAsMCwwLDYuNDYsNC45NCwyNC45NCwyNC45NCwwLDAsMCw1LjQyLDJaIixmaWxsOiIjZmZmIn0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTM5LjU2LDUyLjA2QzI4Ljk0LDU1Ljc1LDIxLjUsNjYuODgsMjEsNzguNjJjLS40MiwxMC44Nyw1LDE3LjQ0LDguMzcsMjEuMDYtNC4wOS0yLjIxLTEzLjY2LTkuMy0xMy0yNC45NC44OC0yMCwxNy4zMi0zMC4yMSwzMy4yNi0yOC4zOXYzLjU5QTM1Ljc0LDM1Ljc0LDAsMCwwLDM5LjU2LDUyLjA2WiIsZmlsbDoiIzY5YzlkMCJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik03NS4yMiwxNS45MUg2My42NVY3Ny4zNmExOS4wNiwxOS4wNiwwLDAsMS0uNzEsNi4zMywxMi44NywxMi44NywwLDAsMS03LDcuNjZjLTUsMi04Ljg3LDEuNzctMTMuNS0xLjNhMTIuNDQsMTIuNDQsMCwwLDEtMy0yLjg5YzQsMi4xLDcuNDksMi4wNiwxMS44Ni4zMWExMi43MiwxMi43MiwwLDAsMCw3LTcuNjZBMTguNSwxOC41LDAsMCwwLDU5LDczLjQ5VjEySDc1QTEzLjcsMTMuNywwLDAsMCw3NS4yMiwxNS45MVpNOTcuMDksMzQuMjV2My40MmEyNC45NCwyNC45NCwwLDAsMS01LjQyLTIsMjQuNzUsMjQuNzUsMCwwLDEtNi40Ni00Ljk0LDE4LjY2LDE4LjY2LDAsMCwwLDEuODQsMS4wNkM5MS4xMywzMy44NSw5NS4xMywzNC40Nyw5Ny4wOSwzNC4yNVoiLGZpbGw6IiM2OWM5ZDAifSkpfWZ1bmN0aW9uIFZuKGUpe3ZhciBlPWUuc2l6ZSx0PShyPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS50d2l0dGVySWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0sdmlld0JveDoiLTM1MCAtMzUwIDE5MDAgMTkyNyIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNzE0LjE2MyA1MTkuMjg0TDExNjAuODkgMEgxMDU1LjAzTDY2Ny4xMzcgNDUwLjg4N0wzNTcuMzI4IDBIMEw0NjguNDkyIDY4MS44MjFMMCAxMjI2LjM3SDEwNS44NjZMNTE1LjQ5MSA3NTAuMjE4TDg0Mi42NzIgMTIyNi4zN0gxMjAwTDcxNC4xMzcgNTE5LjI4NEg3MTQuMTYzWk01NjkuMTY1IDY4Ny44MjhMNTIxLjY5NyA2MTkuOTM0TDE0NC4wMTEgNzkuNjk0NEgzMDYuNjE1TDYxMS40MTIgNTE1LjY4NUw2NTguODggNTgzLjU3OUwxMDU1LjA4IDExNTAuM0g4OTIuNDc2TDU2OS4xNjUgNjg3Ljg1NFY2ODcuODI4WiJ9KSl9ZnVuY3Rpb24gJG4oZSl7dmFyIGU9ZS5zaXplLHQ9KHI9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3MpLnZpYmVySWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0sdmlld0JveDoiMCAwIDMyIDMyIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhtbG5zWGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsifSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yMS4xNzYgMjdjLS4yMDgtLjA2Mi0uNjE4LS4xMy0uOTg3LS4zMDMtNi40NzYtMy4wMi0xMS4xOC03Ljk3Mi0xMy44NTMtMTUuMDgyLS44OTctMi4zODMuMDQtNC4zOTYgMi4yOTgtNS4yMi40MDUtLjE0Ny44MDItLjE1NyAxLjIuMDAyLjk2NC4zODMgMy40MDQgNC4wMjIgMy40NTggNS4xMS4wNDIuODM1LS40OCAxLjI4Ny0xIDEuNjctLjk4My43MjItLjk4OCAxLjYzOC0uNTY4IDIuNjYuOTQ4IDIuMzA4IDIuNTY3IDMuODk1IDQuNjYzIDQuOTI1Ljc2LjM3NCAxLjQ4OC4zMzcgMi4wMDctLjUxNS45MjUtMS41MTggMi4wNi0xLjQ0NSAzLjMtLjUwMi42Mi40NzMgMS4yNTMuOTM2IDEuODQ0IDEuNDUuOC43MDIgMS44MTYgMS4yODUgMS4zMzYgMi43NTQtLjUgMS41MjctMi4yMjYgMy4wNjYtMy43IDMuMDV6bS00Ljc2LTIwLjk4NmM0LjU0Ni4xNjYgOC40NiA0LjY3NyA4LjQwNiA5LjU0My0uMDA1LjQ3OC4xNTMgMS4xODUtLjUwNCAxLjE3Mi0uNjI4LS4wMTUtLjQ2NC0uNzMzLS41Mi0xLjIxLS42MDMtNS4xNjctMi43ODYtNy42MDYtNy41Mi04LjM5NC0uMzkyLS4wNjYtLjk5LjAyNi0uOTYtLjUzNS4wNDQtLjgzMy43NTQtLjUyMyAxLjA5Ny0uNTc2em02LjA3MiA4LjY3MmMtLjA0NS4zNTYuMTQ3Ljk2OC0uMzg1IDEuMDU2LS43Mi4xMTgtLjU4LS41OTUtLjY1LTEuMDUzLS40OC0zLjE0NC0xLjUtNC4yOTctNC40MjMtNS4wMDUtLjQzLS4xMDUtMS4xLS4wMzItLjk5LS43NS4xMDgtLjY4NS43MS0uNDUyIDEuMTY0LS4zOTMgMi45Mi4zOCA1LjMwNyAzLjEyNiA1LjI4NCA2LjE0NHptLTIuMjIyLS41NzNjLjAxMy4zOTgtLjAyNi44MTgtLjQ2Ljg3NC0uMzE0LjA0LS41Mi0uMjQ1LS41NTMtLjU5Ny0uMTItMS4yOTYtLjc1LTIuMDYyLTEuOTUtMi4yNy0uMzYtLjA2My0uNzEyLS4xOS0uNTQ0LS43MTUuMTEtLjM1Mi40MDgtLjM4Ny43MTItLjM5NiAxLjI5Ny0uMDM2IDIuODE1IDEuNjQ3IDIuNzk0IDMuMTAzeiJ9KSl9dmFyIFduPUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXZ1NmF3eC0wIn0pKFsiZm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbjo1cHggMCAxNXB4IDA7Il0pLEduPUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXZ1NmF3eC0xIn0pKFsibWFyZ2luOjIxcHggMjBweCAwIDIwcHg7Il0pLHFuPUMuZC5pbWcud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXZ1NmF3eC0yIn0pKFsid2lkdGg6MjAwcHggIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7bWFyZ2luOjAgYXV0byAhaW1wb3J0YW50OyJdKTtmdW5jdGlvbiBabihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8sYSxpLGw9W10sYz0hMCx1PSExO3RyeXtpZihhPShuPW4uY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPWEuY2FsbChuKSkuZG9uZSkmJihsLnB1c2goci52YWx1ZSksbC5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxvPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPW4ucmV0dXJuJiYoaT1uLnJldHVybigpLE9iamVjdChpKSE9PWkpKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgb319cmV0dXJuIGx9fShlLHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuO2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP1huKGUsdCk6Ik1hcCI9PT0obj0iT2JqZWN0Ij09PShuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOm4pfHwiU2V0Ij09PW4/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1huKGUsdCk6dm9pZCAwfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gWG4oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgWW49Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtMWJreGUxbi0wIn0pKFsibWFyZ2luOi01cHggMCAxNXB4IDA7Zm9udC1zaXplOjE2cHg7JiBpbWd7aGVpZ2h0OjIwMHB4O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOmF1dG87fSYgYXtjb2xvcjojMTExO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0OmJvbGQ7dW5pY29kZS1iaWRpOnBsYWludGV4dDsmIHNwYW57Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc2l6ZToxMnB4O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fX0iXSksUW49Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtMWJreGUxbi0xIn0pKFsibWFyZ2luOjE1cHggMjBweCAwIDIwcHg7bGluZS1oZWlnaHQ6MjNweDsiXSk7ZnVuY3Rpb24gS24oZSl7dmFyIGU9ZS5zaXplLHQ9KHI9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3MpLmNhbGxiYWNrSWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0sdmlld0JveDoiLTQgLTQgNTYgNTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseG1sbnNYbGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTI2LjQsMzMuOWMwLDAsNC0yLjYsNC44LTNjMC44LTAuNCwxLjctMC42LDIuMi0wLjJjMC44LDAuNSw3LjUsNC45LDguMSw1LjNjMC42LDAuNCwwLjgsMS41LDAuMSwyLjYgYy0wLjgsMS4xLTQuMyw1LjUtNS44LDUuNGMtMS41LDAtOC40LDAuNC0yMC4zLTExLjRDMy42LDIwLjcsNCwxMy44LDQsMTIuM2MwLTEuNSw0LjMtNS4xLDUuNC01LjhjMS4xLTAuOCwyLjItMC41LDIuNiwwLjEgYzAuNCwwLjYsNC44LDcuMyw1LjMsOC4xYzAuMywwLjUsMC4yLDEuNC0wLjIsMi4yYy0wLjQsMC44LTMsNC44LTMsNC44czAuNywyLjgsNSw3LjJDMjMuNSwzMy4yLDI2LjQsMzMuOSwyNi40LDMzLjl6In0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTM1LDlIMjV2NGgxMGMxLjEsMCwyLDAuOSwyLDJ2MTBoNFYxNUM0MSwxMS43LDM4LjMsOSwzNSw5eiJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yOCwxNkwyMS4zLDExTDI4LDYifSkpfWZ1bmN0aW9uIEpuKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9bil7dmFyIHIsbyxhLGksbD1bXSxjPSEwLHU9ITE7dHJ5e2lmKGE9KG49bi5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QobikhPT1uKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KHI9YS5jYWxsKG4pKS5kb25lKSYmKGwucHVzaChyLnZhbHVlKSxsLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLG89ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9bi5yZXR1cm4mJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gbH19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZXIoZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/ZXIoZSx0KTp2b2lkIDB9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBlcihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHRyKGUpe3ZhciBlPWUuc2l6ZSx0PShyPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS52a29udGFrdGVJY29uLG49ci5pc1BybyxyPXIuaXNTaW5nbGU7cmV0dXJuIG4mJnQ/SC5hLmNyZWF0ZUVsZW1lbnQobSx7aWNvblVybDp0LHNpemU6ZX0pOkguYS5jcmVhdGVFbGVtZW50KCJzdmciLHtzdHlsZToibWVkaXVtIj09PWUmJnI/e2hlaWdodDoiMzBweCIsbWluV2lkdGg6IjMwcHgiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9Ont3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifSx2aWV3Qm94OiIwIDAgMzIgMzIiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseG1sbnNYbGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTI2LjcxMiAxMC45NnMtLjE2Ny0uNDgtMS4yMS0uMzQ4bC0zLjQ0Ny4wMjRhLjc4NS43ODUgMCAwIDAtLjQ1NS4wNzJzLS4yMDQuMTA4LS4zLjM3YTIyLjEgMjIuMSAwIDAgMS0xLjI4IDIuNjk1Yy0xLjUzMyAyLjYxLTIuMTU2IDIuNzU0LTIuNDA3IDIuNTg3LS41ODctLjM3Mi0uNDMtMS41MS0uNDMtMi4zMjMgMC0yLjU0LjM4Mi0zLjU5Mi0uNzU2LTMuODY4LS4zNy0uMDg0LS42NDYtLjE0NC0xLjYxNi0uMTU2LTEuMjMyLS4wMTItMi4yNzQgMC0yLjg2LjI4Ny0uMzk2LjE5My0uNjk1LjYyNC0uNTE1LjY0OC4yMjcuMDM2Ljc0Mi4xNDMgMS4wMTcuNTE1IDAgMCAuMy40OS4zNDcgMS41NjguMTMgMi45ODItLjQ4IDMuMzUzLS40OCAzLjM1My0uNDY2LjI1Mi0xLjI4LS4xNjctMi40NzgtMi42MzQgMCAwLS42OTQtMS4yMjItMS4yMzMtMi41NjMtLjA5Ny0uMjUtLjI4OC0uMzgzLS4yODgtLjM4M3MtLjIxNi0uMTY4LS41MjctLjIxNmwtMy4yOC4wMjRjLS41MDQgMC0uNjgzLjIyOC0uNjgzLjIyOHMtLjE4LjE5LS4wMTIuNTg3YzIuNTYyIDYuMDIyIDUuNDgzIDkuMDQgNS40ODMgOS4wNHMyLjY3IDIuNzkgNS43IDIuNTk3aDEuMzc2Yy40MTgtLjAzNS42MzQtLjI2My42MzQtLjI2M3MuMTkyLS4yMTQuMTgtLjYxYy0uMDI0LTEuODQzLjgzOC0yLjEyLjgzOC0yLjEyLjgzOC0uMjYyIDEuOTE1IDEuNzg1IDMuMDY1IDIuNTc1IDAgMCAuODc0LjYgMS41MzIuNDY3bDMuMDY0LS4wNDhjMS42MTctLjAxLjg1LTEuMzUyLjg1LTEuMzUyLS4wNi0uMTA4LS40NDItLjkzNC0yLjI4Ni0yLjY0Ny0xLjkxNi0xLjc4NC0xLjY2NS0xLjQ5Ni42NTgtNC41ODUgMS40MTMtMS44OCAxLjk3Ni0zLjAzIDEuNzk2LTMuNTJ6In0pKX1mdW5jdGlvbiBucihlKXt2YXIgZT1lLnNpemUsdD0ocj1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncykud2F6ZUljb24sbj1yLmlzUHJvLHI9ci5pc1NpbmdsZTtyZXR1cm4gbiYmdD9ILmEuY3JlYXRlRWxlbWVudChtLHtpY29uVXJsOnQsc2l6ZTplfSk6SC5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3N0eWxlOiJtZWRpdW0iPT09ZSYmcj97aGVpZ2h0OiIzMHB4IixtaW5XaWR0aDoiMzBweCIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn06e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9LHZlcnNpb246IjEuMSIsdmlld0JveDoiMCAwIDMzMCAzMzAiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTI5OSwxNDkuNTlhMTIxLDEyMSwwLDAsMC0zNS42Mi04Ni4xNCwxMjIuOTMsMTIyLjkzLDAsMCwwLTg2LjE0LTM1LjYyYy0zNy4zLDAtNzIuMTMsMTYuODctOTYsNDYuODZhMTIxLjM1LDEyMS4zNSwwLDAsMC0yNi4xNSw3NS43OFYxNzBjMCwxMC4xNi03LDE5LjY0LTIxLDIwLjUyLTMuMzYuMy02LjIyLDIuNTctNi4yMiw1LjkyLS41OSw5LjI4LDkuMjgsMjYuMTUsMjIuNywzOS41N2ExMTUuOSwxMTUuOSwwLDAsMCwzMiwyMywzMy45MywzMy45MywwLDAsMCw2Ni42LDEyLjkzaDI4LjMyYzMuNjUsMTkuMTQsMjMuNTgsMzIuMjYsNDQuODksMjUsMTguNTUtNi4yMSwyNi42NC0yNy4yMywxOS45My00NC40QTEzNywxMzcsMCwwLDAsMjYzLDIzNS45MmExMjAuMzksMTIwLjM5LDAsMCwwLDM2LTg2LjMzWk0xNzcuMTQsMjU4LjEySDE0OS40MWEzNCwzNCwwLDAsMC02MS43Ni0xMS44NHYuM2ExMDAuOSwxMDAuOSwwLDAsMS0yNy4yNC0yMC4yM2MtOS41Ny05LjU3LTE0LjktMTguMjUtMTcuMDctMjMuODhhMzEuNzIsMzEuNzIsMCwwLDAsMTYuMjgtOS41NywzMy4zOCwzMy4zOCwwLDAsMCw5LTIzVjE0OS42OEExMDguNTYsMTA4LjU2LDAsMCwxLDI1My44MSw3M2ExMDguNDQsMTA4LjQ0LDAsMCwxLTc2LjY3LDE4NS4xWm02Ny42OS0xMzUuNDdhMTMuNDcsMTMuNDcsMCwxLDEtMTMuNDItMTMuNTIsMTMuNDMsMTMuNDMsMCwwLDEsMTMuNDIsMTMuNTJabS04MS40LDBBMTMuNDcsMTMuNDcsMCwxLDEsMTUwLDEwOS4xM2ExMy40MywxMy40MywwLDAsMSwxMy40MiwxMy41MlpNMTU0LjE1LDE2N2E3LjE2LDcuMTYsMCwwLDAtNi4yMi0zLjk0LDYuOCw2LjgsMCwwLDAtNi4yMSw5LjU3LDU0LjMsNTQuMywwLDAsMCw5OC4yNywwLDYuNzUsNi43NSwwLDAsMC02LjIxLTkuNTdoLS4zYTYuMzcsNi4zNywwLDAsMC01LjkyLDMuOTQsNDAuNTcsNDAuNTcsMCwwLDEtNzMuNDEsMFoifSkpfWZ1bmN0aW9uIHJyKGUpe3ZhciBlPWUuc2l6ZSx0PShyPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS53ZWNoYXRJY29uLG49ci5pc1BybyxyPXIuaXNTaW5nbGU7cmV0dXJuIG4mJnQ/SC5hLmNyZWF0ZUVsZW1lbnQobSx7aWNvblVybDp0LHNpemU6ZX0pOkguYS5jcmVhdGVFbGVtZW50KCJzdmciLHtzdHlsZToibWVkaXVtIj09PWUmJnI/e2hlaWdodDoiMzBweCIsbWluV2lkdGg6IjMwcHgiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9Ont3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifSx2ZXJzaW9uOiIxLjEiLHZpZXdCb3g6IjAgMCAxMDAgMTAwIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik02NS42OCwzNy43NWMtNy40Ny4zOS0xNCwyLjY1LTE5LjI1LDcuNzdhMjIuODcsMjIuODcsMCwwLDAtNy4xLDE5LjM2Yy0yLjkyLS4zNi01LjU4LS43NS04LjI1LTFhNS4xMyw1LjEzLDAsMCwwLTIuODEuNDdjLTIuNTksMS40Ny01LjA5LDMuMTMtOCw1LC41NC0yLjQ1Ljg5LTQuNiwxLjUyLTYuNjZhMi41NCwyLjU0LDAsMCwwLTEuMTYtMy4zNWMtOS02LjMzLTEyLjc1LTE1LjgxLTkuOTItMjUuNTcsMi42Mi05LDktMTQuNSwxNy43OC0xNy4zNUM0MC4zOCwxMi41MSw1My43OCwxNi40OCw2MSwyNmEyMi4zNiwyMi4zNiwwLDAsMSw0LjY1LDExLjhabS0zNC40LTNBMy40MywzLjQzLDAsMCwwLDI4LDMxLjI2YTMuMzQsMy4zNCwwLDEsMC0uMjEsNi42NywzLjQsMy40LDAsMCwwLDMuNTItMy4yMlptMTcuOTUtMy40NWEzLjQ0LDMuNDQsMCwwLDAtMy4zNywzLjQsMy4zNSwzLjM1LDAsMCwwLDMuNDYsMy4yOCwzLjM0LDMuMzQsMCwxLDAtLjA5LTYuNjhaIn0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTgyLjQ3LDg0LjM0Yy0yLjM3LTEuMDYtNC41NC0yLjY0LTYuODUtMi44OHMtNC43MiwxLjA5LTcuMTMsMS4zNGEyMy44NCwyMy44NCwwLDAsMS0xOS4zMy02LjMxYy0xMC4zMS05LjU0LTguODMtMjQuMTUsMy4wOS0zMiwxMC42LTYuOTQsMjYuMTQtNC42MywzMy42MSw1LDYuNTMsOC40MSw1Ljc2LDE5LjU3LTIuMiwyNi42My0yLjMxLDItMy4xNCwzLjcyLTEuNjYsNi40MmE3LjQyLDcuNDIsMCwwLDEsLjQ3LDEuNzZaTTU1LjUzLDU4LjI2YTIuNzksMi43OSwwLDEsMC0yLjc5LTIuNjksMi44LDIuOCwwLDAsMCwyLjc5LDIuNjlaTTcyLjg5LDUyLjdhMi43NywyLjc3LDAsMCwwLTIuNzYsMi42NiwyLjc1LDIuNzUsMCwxLDAsMi43Ni0yLjY2WiJ9KSl9dmFyIG9yPUMuZC5pZnJhbWUud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLTFqbnU2bjItMCJ9KShbImhlaWdodDoyMjBweDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSAxOTBweCk7Ym9yZGVyOm5vbmU7b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb246b3BhY2l0eSAuNXM7IiwiOyIsIiJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTG9hZGluZyYmT2JqZWN0KEMuYykoWyJvcGFjaXR5Oi4xNTsiXSl9LEQoKSYmT2JqZWN0KEMuYykoWyJ3aWR0aDoxMDAlO2hlaWdodDoxMDB2aDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSA1N3B4KTsiXSkpO2Z1bmN0aW9uIGFyKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9bil7dmFyIHIsbyxhLGksbD1bXSxjPSEwLHU9ITE7dHJ5e2lmKGE9KG49bi5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QobikhPT1uKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KHI9YS5jYWxsKG4pKS5kb25lKSYmKGwucHVzaChyLnZhbHVlKSxsLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLG89ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9bi5yZXR1cm4mJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gbH19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/aXIoZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/aXIoZSx0KTp2b2lkIDB9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBpcihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIGxyKGUpe3ZhciB0PWUuc2l6ZSxuPXZvaWQgMCE9PShuPWUuaXNJdGVtSWNvbikmJm4sZT12b2lkIDA9PT0oZT1lLmNvbG9yKT8iI2ZmZiI6ZSxyPShhPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS53aGF0c2FwcEljb24sbz1hLmlzUHJvLGE9YS5pc1NpbmdsZTtyZXR1cm4gbyYmciYmITE9PT1uP0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6cixzaXplOnR9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7dmlld0JveDoiMCAwIDMyIDMyIixzdHlsZToid2FfaGVhZGVyX2ljb24iPT09bj97d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn06bj97d2lkdGg6IjMwcHgiLGhlaWdodDoiMzBweCIsZmlsbDoiIi5jb25jYXQoZSksc3Ryb2tlOiJub25lIn06Im1lZGl1bSI9PT10JiZhP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn0seG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4bWxuc1hsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTkuMTEgMTcuMjA1Yy0uMzcyIDAtMS4wODggMS4zOS0xLjUxOCAxLjM5YS42My42MyAwIDAgMS0uMzE1LS4xYy0uODAyLS40MDItMS41MDQtLjgxNy0yLjE2My0xLjQ0Ny0uNTQ1LS41MTYtMS4xNDYtMS4yOS0xLjQ2LTEuOTYzYS40MjYuNDI2IDAgMCAxLS4wNzMtLjIxNWMwLS4zMy45OS0uOTQ1Ljk5LTEuNDkgMC0uMTQzLS43My0yLjA5LS44MzItMi4zMzUtLjE0My0uMzcyLS4yMTQtLjQ4Ny0uNi0uNDg3LS4xODcgMC0uMzYtLjA0My0uNTMtLjA0My0uMzAyIDAtLjUzLjExNS0uNzQ2LjMxNS0uNjg4LjY0NS0xLjAzMiAxLjMxOC0xLjA2IDIuMjY0di4xMTRjLS4wMTUuOTkuNDcyIDEuOTc3IDEuMDE3IDIuNzggMS4yMyAxLjgyIDIuNTA2IDMuNDEgNC41NTQgNC4zNC42MTYuMjg3IDIuMDM1Ljg4OCAyLjcyMi44ODguODE3IDAgMi4xNS0uNTE1IDIuNDc4LTEuMzE4LjEzLS4zMy4yNDQtLjczLjI0NC0xLjA4OCAwLS4wNTggMC0uMTQ0LS4wMy0uMjE1LS4xLS4xNzItMi40MzQtMS4zOS0yLjY3OC0xLjM5em0tMi45MDggNy41OTNjLTEuNzQ3IDAtMy40OC0uNTMtNC45NDItMS40OUw3Ljc5MyAyNC40MWwxLjEzMi0zLjMzN2E4Ljk1NSA4Ljk1NSAwIDAgMS0xLjcyLTUuMjcyYzAtNC45NTUgNC4wNC04Ljk5NSA4Ljk5Ny04Ljk5NVMyNS4yIDEwLjg0NSAyNS4yIDE1LjhjMCA0Ljk1OC00LjA0IDguOTk4LTguOTk4IDguOTk4em0wLTE5Ljc5OGMtNS45NiAwLTEwLjggNC44NDItMTAuOCAxMC44IDAgMS45NjQuNTMgMy44OTggMS41NDYgNS41NzRMNSAyNy4xNzZsNS45NzQtMS45MmExMC44MDcgMTAuODA3IDAgMCAwIDE2LjAzLTkuNDU1YzAtNS45NTgtNC44NDItMTAuOC0xMC44MDItMTAuOHoifSkpfXZhciBjcj1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy0yaWs1bGMtMCJ9KShbIm1hcmdpbjoyNXB4IDIwcHg7Il0pO2Z1bmN0aW9uIHVyKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9bil7dmFyIHIsbyxhLGksbD1bXSxjPSEwLHU9ITE7dHJ5e2lmKGE9KG49bi5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QobikhPT1uKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KHI9YS5jYWxsKG4pKS5kb25lKSYmKGwucHVzaChyLnZhbHVlKSxsLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLG89ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9bi5yZXR1cm4mJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gbH19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/c3IoZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/c3IoZSx0KTp2b2lkIDB9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBzcihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIGZyKGUpe3ZhciBlPWUuc2l6ZSx0PShyPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS53b25kZXJjaGF0SWNvbixuPXIuaXNQcm8scj1yLmlzU2luZ2xlO3JldHVybiBuJiZ0P0guYS5jcmVhdGVFbGVtZW50KG0se2ljb25Vcmw6dCxzaXplOmV9KTpILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4bWxuc1hsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixzdHlsZToibWVkaXVtIj09PWUmJnI/e2hlaWdodDoiMzBweCIsbWluV2lkdGg6IjMwcHgiLGZpbGw6IiNmZmZmZmYiLHN0cm9rZToibm9uZSJ9Ont3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmZmZmIixzdHJva2U6Im5vbmUifSx2aWV3Qm94OiIwIDAgMTAwIDEwMCJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTg1LDQ1Ljk0YzAtMTQuMTctMTEuNTgtMjUuNjctMjUuODctMjUuNjdoLTIwLjI1Yy0xNC4yOSwwLTI1Ljg3LDExLjQ5LTI1Ljg3LDI1LjY3djIuMjNjMCwxNC4xOCwxMS41OCwyNS42NywyNS44NywyNS42N2gyMC4yNWMxLjQyLDAsMi44MS0uMTIsNC4xNy0uMzRsNS42MSw5LjQ2YzIuOTEsNC45LDEwLjQ3LDIuODYsMTAuNDctMi44M3YtMTUuOTljMy41Mi00LjM4LDUuNjItOS45Myw1LjYyLTE1Ljk3di0yLjIzWk0zMi4xMiw1MS44N2MtMi40OSwwLTQuNS0yLjAyLTQuNS00LjUxaDBjMC0yLjQ5LDIuMDEtNC41MSw0LjUtNC41MmgwYzIuNDksMCw0LjUsMi4wMyw0LjUsNC41MiwwLDIuNDktMi4wMSw0LjUxLTQuNSw0LjUxWk00NS42Miw1MS44N2MtMi40OSwwLTQuNS0yLjAyLTQuNS00LjUxaDBjMC0yLjQ5LDIuMDEtNC41MSw0LjUtNC41MmgwYzIuNDksMCw0LjUsMi4wMyw0LjUsNC41MiwwLDIuNDktMi4wMSw0LjUxLTQuNSw0LjUxWk01NC43Miw0Ny44MWMtLjI1LS41NywwLTEuMjMuNTctMS40OGwzLjg5LTEuNzNjLjI2LS4xMS40Ni0uMzIuNTctLjU3bDEuNzItMy45Yy4xMS0uMjYuMzItLjQ2LjU3LS41Ny41Ny0uMjUsMS4yMywwLDEuNDcuNTdsMS43MiwzLjljLjExLjI1LjMyLjQ2LjU3LjU3bDMuODksMS43M2MuMjYuMTEuNDYuMzIuNTcuNTcuMjUuNTcsMCwxLjIzLS41NywxLjQ4bC0zLjg5LDEuNzNjLS4yNS4xMS0uNDYuMzItLjU3LjU3bC0xLjcyLDMuOWMtLjExLjI2LS4zMi40Ni0uNTcuNTctLjU3LjI1LTEuMjIsMC0xLjQ3LS41N2wtMS43Mi0zLjljLS4xMS0uMjYtLjMyLS40Ni0uNTctLjU3bC0zLjg5LTEuNzNjLS4yNi0uMTEtLjQ2LS4zMi0uNTctLjU3WiJ9KSl9dmFyIGRyPUMuZC51bC53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtbDAzMGFkLTAifSkoWyJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxMHB4O3BhZGRpbmc6MTVweDttYXJnaW46MDtsaXN0LXN0eWxlLXR5cGU6bm9uZTttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSAyMjRweCk7b3ZlcmZsb3c6YXV0bzsmOjotd2Via2l0LXNjcm9sbGJhcntoZWlnaHQ6NXB4O3dpZHRoOjVweDttYXJnaW4tYm90dG9tOjVweDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjAyKTt9Jjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7bWFyZ2luLWJvdHRvbToxMHB4O30mOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOnJnYmEoNTcsNTYsMTgsLjA3KTstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O30iLCIiXSxEKCkmJk9iamVjdChDLmMpKFsibWF4LWhlaWdodDpjYWxjKDEwMHZoIC0gMTEwcHgpOyJdKSkscHI9Qy5kLmEud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLWwwMzBhZC0xIn0pKFsiIiwiIl0sZnVuY3Rpb24oZSl7ZT1lLmNvbG9yO3JldHVybiBPYmplY3QoQy5jKShbImhlaWdodDo2NXB4O2JhY2tncm91bmQtY29sb3I6IiwiMTA7Ym9yZGVyLXJhZGl1czoxMnB4O2JvcmRlcjoxcHggc29saWQgIiwiMzA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjVweCAxMHB4O3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246MC4xcyBhbGw7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudDsmOmJlZm9yZXtjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt3aWR0aDoycHg7aGVpZ2h0OjMyLjVweDtiYWNrZ3JvdW5kLWNvbG9yOiIsIjt9Jjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDtib3gtc2hhZG93OnJnYigwIDAgMCAvIDglKSAycHggMnB4IDZweDt9Il0sZSxlLGUpfSksbXI9Qy5kLmltZy53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtbDAzMGFkLTIifSkoWyIiLCIiXSxmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbkJvcmRlclJhZGl1cyxlPWUuYm9yZGVyO3JldHVybiBPYmplY3QoQy5jKShbIndpZHRoOjQ1cHg7aGVpZ2h0OjQ1cHg7bWluLXdpZHRoOjQ1cHg7Ym9yZGVyLXJhZGl1czoiLCIlO29iamVjdC1maXQ6Y292ZXI7Ym9yZGVyOiIsIjsiXSx0LGUmJiIycHggc29saWQgI2ZmZmZmZiIpfSksaHI9Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtbDAzMGFkLTMifSkoWyIiLCIiXSxmdW5jdGlvbihlKXt2YXIgdD1lLmluZGljYXRvclBvc2l0aW9uLGU9ZS5taXJyb3I7cmV0dXJuIE9iamVjdChDLmMpKFsicG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NDVweDtoZWlnaHQ6NDVweDttaW4td2lkdGg6NDVweDsmOmFmdGVye2NvbnRlbnQ6Jyc7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiM0ZGMyNDc7Ym9yZGVyLXJhZGl1czo1MCU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOiIsInB4OyIsIiBib3gtc2hhZG93OjJweCAycHggNnB4IHJnYmEoMCwwLDAsMTAlKTt9Il0sdCxlP09iamVjdChDLmMpKFsibGVmdDoiLCJweDsiXSx0KTpPYmplY3QoQy5jKShbInJpZ2h0OiIsInB4OyJdLHQpKX0pLGdyPUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLWwwMzBhZC00In0pKFsiZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDsiXSksYnI9Qy5kLmg0LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1sMDMwYWQtNSJ9KShbImNvbG9yOiM0ZDUxNTc7Zm9udC1zaXplOjE0cHg7bWFyZ2luOjA7bGluZS1oZWlnaHQ6MTZweDtmb250LXdlaWdodDo2MDA7IiwiIHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxNzBweDsiXSxmdW5jdGlvbihlKXtyZXR1cm4gZS5taXJyb3I/T2JqZWN0KEMuYykoWyJ0ZXh0LWFsaWduOnJpZ2h0OyJdKTpPYmplY3QoQy5jKShbInRleHQtYWxpZ246bGVmdDsiXSl9KSx5cj1DLmQucC53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtbDAzMGFkLTYifSkoWyJjb2xvcjojOTg5YjlmO2ZvbnQtc2l6ZToxMnB4O21hcmdpbjo1cHggMCAwIDA7bGluZS1oZWlnaHQ6MTRweDsiLCIgdGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjE3MHB4OyJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLm1pcnJvcj9PYmplY3QoQy5jKShbInRleHQtYWxpZ246cmlnaHQ7Il0pOk9iamVjdChDLmMpKFsidGV4dC1hbGlnbjpsZWZ0OyJdKX0pO2Z1bmN0aW9uIHZyKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9bil7dmFyIHIsbyxhLGksbD1bXSxjPSEwLHU9ITE7dHJ5e2lmKGE9KG49bi5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QobikhPT1uKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KHI9YS5jYWxsKG4pKS5kb25lKSYmKGwucHVzaChyLnZhbHVlKSxsLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLG89ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9bi5yZXR1cm4mJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gbH19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/d3IoZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/d3IoZSx0KTp2b2lkIDB9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB3cihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHhyKGUpe3ZhciBlPWUuc2l6ZSx0PShyPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS5haUljb24sbj1yLmlzUHJvLHI9ci5pc1NpbmdsZTtyZXR1cm4gbiYmdD9ILmEuY3JlYXRlRWxlbWVudChtLHtpY29uVXJsOnQsc2l6ZTplfSk6SC5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseG1sbnNYbGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsc3R5bGU6Im1lZGl1bSI9PT1lJiZyP3toZWlnaHQ6IjMwcHgiLG1pbldpZHRoOiIzMHB4IixmaWxsOiIjZmZmZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZmZmZiIsc3Ryb2tlOiJub25lIn0sdmlld0JveDoiMCAwIDQ4IDQ4In0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiIjZmZmIixkOiJNMzguOTUsMTkuNTNjLS4yMy0uMDgtLjQyLS4yNi0uNDktLjUtMS4zMy00LjQ1LTQuNzMtNi4yMS0xMC4wOS02LjczLS4xOS0uMDItLjM3LS4xLS41MS0uMjMtLjU5LS41NC0xLjQ4LS44Ni0yLjgtLjk3LS4xNC0uMDEtLjI1LS4xMi0uMjctLjI2bC0uMjMtMS43MWMtLjAyLS4xMy4wNi0uMjYuMTgtLjMyLjc4LS4zMiwxLjMtMS4xMywxLjE4LTIuMDUtLjExLS44OC0uODMtMS41Ny0xLjctMS42Ny0xLjE3LS4xMy0yLjE2Ljc4LTIuMTYsMS45MywwLC44MS40OSwxLjUsMS4xOSwxLjc5LjEzLjA1LjIuMTguMTguMzJsLS4yMywxLjcxYy0uMDIuMTQtLjEzLjI1LS4yNy4yNi0xLjMyLjEtMi4yMS40My0yLjguOTctLjE0LjEzLS4zMi4yMS0uNTEuMjMtNS4zNi41Mi04Ljc1LDIuMjgtMTAuMDksNi43My0uMDcuMjQtLjI1LjQyLS40OS41LTEuNTYuNTMtMi4yNywxLjc2LTIuMjcsNC42N3MuNzIsNC4xNSwyLjI3LDQuNjdjLjIzLjA4LjQyLjI2LjQ5LjUsMS4zNiw0LjU1LDQuODgsNi4yOCwxMC40NCw2Ljc2aC0uMDZjLjI4LjAyLjUxLjI1LjUxLjUydjIuNjNjMCwuMzIuMzEuNTQuNjEuNDMsMS44OS0uNjksNy43OS0yLjg1LDEyLjMtNC43aDBjMi41NS0xLjAyLDQuMjctMi43Nyw1LjEzLTUuNjQuMDctLjI0LjI1LS40Mi40OS0uNSwxLjU2LS41MywyLjI3LTEuNzYsMi4yNy00LjY4cy0uNzItNC4xNS0yLjI3LTQuNjdaTTM0Ljc4LDI4Ljk1Yy0uMzYuOTEtLjg2LDEuNTYtMS41OCwyLjA2LTEuNjEsMS4xMy00LjUzLDEuNjUtOS4yMSwxLjY1cy03LjYtLjUzLTkuMjEtMS42NWMtLjcxLS41LTEuMjEtMS4xNi0xLjU4LTIuMDYtLjQ3LTEuMTctLjctMi43Ni0uNy00Ljc0cy4yNC0zLjU4LjctNC43NGMuMzYtLjkxLjg2LTEuNTYsMS41OC0yLjA2LDEuNjEtMS4xMyw0LjUzLTEuNjUsOS4yMS0xLjY1czcuNi41Miw5LjIxLDEuNjVjLjcxLjUsMS4yMSwxLjE2LDEuNTgsMi4wNi40NywxLjE3LjcsMi43Ni43LDQuNzRzLS4yNCwzLjU4LS43LDQuNzRaIn0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiI2ZmZiIsZDoiTTE4Ljk1LDIxLjk3Yy0xLjIxLDAtMS40NywxLjExLTEuNDcsMi4yNHMuMjYsMi4yNCwxLjQ3LDIuMjQsMS40Ny0xLjExLDEuNDctMi4yNC0uMjYtMi4yNC0xLjQ3LTIuMjRaIn0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiI2ZmZiIsZDoiTTI5LjA1LDIxLjk3Yy0xLjIxLDAtMS40NywxLjExLTEuNDcsMi4yNHMuMjYsMi4yNCwxLjQ3LDIuMjQsMS40Ny0xLjExLDEuNDctMi4yNC0uMjYtMi4yNC0xLjQ3LTIuMjRaIn0pKX12YXIga3I9Qy5kLmlmcmFtZS53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtMWdlamdrbS0wIn0pKFsiYm9yZGVyOm5vbmU7b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb246b3BhY2l0eSAuNXM7d2lkdGg6MTA4JTtoZWlnaHQ6MTAwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTJweCk7IiwiOyIsIiJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTG9hZGluZyYmT2JqZWN0KEMuYykoWyJvcGFjaXR5Oi4wOyJdKX0sRCgpJiZPYmplY3QoQy5jKShbImhlaWdodDoxMDB2aDtoZWlnaHQ6Y2FsYygodmFyKC0tdmgpICogMTAwKSAtIDUwcHgpO21heC1oZWlnaHQ6Y2FsYygxMDAlIC0gNTBweCk7d2lkdGg6Y2FsYygxMDAlICsgMTlweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTExcHgpOyJdKSk7ZnVuY3Rpb24gU3IoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1uKXt2YXIgcixvLGEsaSxsPVtdLGM9ITAsdT0hMTt0cnl7aWYoYT0obj1uLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0ocj1hLmNhbGwobikpLmRvbmUpJiYobC5wdXNoKHIudmFsdWUpLGwubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsbz1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1uLnJldHVybiYmKGk9bi5yZXR1cm4oKSxPYmplY3QoaSkhPT1pKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IG99fXJldHVybiBsfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9DcihlLHQpOiJNYXAiPT09KG49Ik9iamVjdCI9PT0obj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSkpJiZlLmNvbnN0cnVjdG9yP2UuY29uc3RydWN0b3IubmFtZTpuKXx8IlNldCI9PT1uP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9DcihlLHQpOnZvaWQgMH0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIENyKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIEVyPSJmcm9tLWdiLXdpZGdldCIsT3I9ZnVuY3Rpb24oKXtyZXR1cm4iaHR0cHM6Ly9zdGF0aWMuZ2V0YnV0dG9uLmlvL3dpZGdldC9idW5kbGUtYWkuanMifSxqcj1mdW5jdGlvbiBlKHQpe3ZhciBuPTE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3dpbmRvdy5HQkFJPyh0LmlkPUVyLGNvbnNvbGUubG9nKCdHQiBzZW5kIGV2ZW50OiAiaW5pdCBhcHAiJyx0KSx3aW5kb3cuR0JBSS5pbml0KHtzZXR0aW5nczp0fSkpOihjb25zb2xlLmVycm9yKCJ3aW5kb3cuR0JBSSBub3QgZm91bmQuLi4iLHdpbmRvdy5HQkFJKSxuPDE1P3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjb25zb2xlLmxvZygid2luZG93LkdCQUkgbG9hZGlnIGF0dGVtcHQgIi5jb25jYXQobisxLCI6IHJldHJ5aW5nIGluaXRQb3B1cC4uLiIpKSxlKHQsbisxKX0sMWUzKTpjb25zb2xlLmVycm9yKCJ3aW5kb3cuR0JBSSBhdHRlbXB0cyBmaW5pc2hlZC4iKSl9LEFyPWZ1bmN0aW9uKCl7SXIoe2lzX3Nob3dfcG9wdXA6ITB9KX0sUHI9ZnVuY3Rpb24oKXtJcih7aXNfc2hvd19wb3B1cDohMX0pfSxJcj1mdW5jdGlvbihlKXtlLmlkPUVyLGNvbnNvbGUubG9nKCdHQiBzZW5kIGV2ZW50OiAidXBkYXRlIHNldHRpbmdzIicsZSksd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJHZXRidXR0b25BaVVwZGF0ZVN0YXRlIix7ZGV0YWlsOmV9KSl9O2Z1bmN0aW9uIF9yKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9bil7dmFyIHIsbyxhLGksbD1bXSxjPSEwLHU9ITE7dHJ5e2lmKGE9KG49bi5jYWxsKGUpKS5uZXh0LDA9PT10KXtpZihPYmplY3QobikhPT1uKXJldHVybjtjPSExfWVsc2UgZm9yKDshKGM9KHI9YS5jYWxsKG4pKS5kb25lKSYmKGwucHVzaChyLnZhbHVlKSxsLmxlbmd0aCE9PXQpO2M9ITApO31jYXRjaChlKXt1PSEwLG89ZX1maW5hbGx5e3RyeXtpZighYyYmbnVsbCE9bi5yZXR1cm4mJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gbH19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/enIoZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/enIoZSx0KTp2b2lkIDB9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB6cihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIFRyKGUpe3ZhciBlPWUuc2l6ZSx0PShyPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS5rYWthb3RhbGtJY29uLG49ci5pc1BybyxyPXIuaXNTaW5nbGU7cmV0dXJuIG4mJnQ/SC5hLmNyZWF0ZUVsZW1lbnQobSx7aWNvblVybDp0LHNpemU6ZX0pOkguYS5jcmVhdGVFbGVtZW50KCJzdmciLHtzdHlsZToibWVkaXVtIj09PWUmJnI/e2hlaWdodDoiMzBweCIsbWluV2lkdGg6IjMwcHgiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9Ont3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifSx2ZXJzaW9uOiIxLjEiLHZpZXdCb3g6Ii0yNCAtMjQgMjUyIDIzNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0wLjQzNzUgODAuMjM0NEMwLjQzNzUgMzYuMDA4OCA0NS45MDgyIDAuMTU2MjUgMTAyIDAuMTU2MjVDMTU4LjA5MiAwLjE1NjI1IDIwMy41NjIgMzYuMDA4OCAyMDMuNTYyIDgwLjIzNDRDMjAzLjU2MiAxMjQuNDYxIDE1OC4wOTIgMTYwLjMxMiAxMDIgMTYwLjMxMkM5NS44NDM4IDE2MC4zMTIgODkuODE1NCAxNTkuODgyIDgzLjk2MDkgMTU5LjA1M0M3OC4xMDA2IDE2My4xODMgNDQuMjQyMiAxODYuOTY2IDQxLjA0NjkgMTg3LjQxMkM0MS4wNDY5IDE4Ny40MTIgMzkuNzM2MyAxODcuOTIyIDM4LjYyMjEgMTg3LjI2NkMzNy41MDc4IDE4Ni42MDkgMzcuNzEgMTg0Ljg4OSAzNy43MSAxODQuODg5QzM4LjA0NTkgMTgyLjU5OSA0Ni40ODczIDE1My40NDggNDguMDQzIDE0OC4wODNDMTkuNDQ3MyAxMzMuOTE2IDAuNDM3NSAxMDguODI3IDAuNDM3NSA4MC4yMzQ0Wk0zOS45ODgzIDEwMi41OTNDMzkuOTg4MyAxMDUuNjc5IDQyLjYxNjIgMTA4LjE4OCA0NS44NDc3IDEwOC4xODhDNDkuMDc5MSAxMDguMTg4IDUxLjcwNyAxMDUuNjc5IDUxLjcwNyAxMDIuNTkzVjY3Ljc4MzJINjAuODQ5NkM2NC4wMTk1IDY3Ljc4MzIgNjYuNTk5NiA2NS4yMDkgNjYuNTk5NiA2Mi4wNDU5QzY2LjU5OTYgNTguODgyOCA2NC4wMjA1IDU2LjMwODYgNjAuODQ5NiA1Ni4zMDg2SDMwLjg0NTdDMjcuNjc1OCA1Ni4zMDg2IDI1LjA5NTcgNTguODgyOCAyNS4wOTU3IDYyLjA0NTlDMjUuMDk1NyA2NS4yMDkgMjcuNjc0OCA2Ny43ODMyIDMwLjg0NTcgNjcuNzgzMkgzOS45ODgzVjEwMi41OTNaTTkyLjM1MDYgMTA1LjUyNEM5Mi45MTQxIDEwNy4xMiA5NC43ODMyIDEwOC4xMTIgOTcuMjI2NiAxMDguMTEyQzk4LjUxMTYgMTA4LjExMyA5OS43ODE5IDEwNy44MzggMTAwLjk1MSAxMDcuMzA1QzEwMi41NjYgMTA2LjU2MiAxMDQuMTE5IDEwNC41MTIgMTAyLjMzNiA5OC45NzI3TDg4LjMyNjIgNjIuMDk4NkM4Ny4zMzY5IDU5LjI4NzEgODQuMzM3OSA1Ni4zOTU1IDgwLjUxMDcgNTYuMzA5NkM3Ni42OTQzIDU2LjM5NjUgNzMuNjk1MyA1OS4yODcxIDcyLjcwOCA2Mi4wOTI4TDU4LjY5MjQgOTguOTgzNEM1Ni45MTMxIDEwNC41MSA1OC40NjU4IDEwNi41NTkgNjAuMDgxMSAxMDcuMzA0QzYxLjI1IDEwNy44MzggNjIuNTIwNCAxMDguMTE0IDYzLjgwNTcgMTA4LjExMkM2Ni4yNDkgMTA4LjExMiA2OC4xMTcyIDEwNy4xMjEgNjguNjc4NyAxMDUuNTI4TDcxLjU4MiA5Ny45Mjc3TDg5LjQ0OTIgOTcuOTI4N0w5Mi4zNTA2IDEwNS41MjRaTTgwLjUxNTYgNzAuOTIzOEw4Ni4zNjgyIDg3LjU0OThINzQuNjYzMUw4MC41MTU2IDcwLjkyMzhaTTEwNi4xNSAxMDEuOTYzQzEwNi4xNSAxMDQuOTI0IDEwOC42NjkgMTA3LjMzNCAxMTEuNzY2IDEwNy4zMzRIMTMwLjU2NEMxMzMuNjYxIDEwNy4zMzQgMTM2LjE4IDEwNC45MjQgMTM2LjE4IDEwMS45NjNDMTM2LjE4IDk5LjAwMiAxMzMuNjYxIDk2LjU5MTggMTMwLjU2NCA5Ni41OTE4SDExOC4xMTNWNjIuMTY4QzExOC4xMTMgNTguOTM2NSAxMTUuNDMgNTYuMzA4NiAxMTIuMTMyIDU2LjMwODZDMTA4LjgzNCA1Ni4zMDg2IDEwNi4xNSA1OC45MzY1IDEwNi4xNSA2Mi4xNjhWMTAxLjk2M1pNMTM4LjQ1OSAxMDIuMjUzQzEzOC40NTkgMTA1LjQ4NCAxNDEuMDg3IDEwOC4xMTIgMTQ0LjMxOCAxMDguMTEyQzE0NS44NzIgMTA4LjExIDE0Ny4zNjIgMTA3LjQ5MiAxNDguNDYxIDEwNi4zOTNDMTQ5LjU2IDEwNS4yOTQgMTUwLjE3OCAxMDMuODA0IDE1MC4xOCAxMDIuMjVWODkuNDY1OEwxNTIuMjEzIDg3LjQzMjZMMTY1Ljk1NCAxMDUuNjRDMTY2LjQ5OCAxMDYuMzY2IDE2Ny4yMDUgMTA2Ljk1NiAxNjguMDE4IDEwNy4zNkMxNjguODMxIDEwNy43NjUgMTY5LjcyNyAxMDcuOTczIDE3MC42MzUgMTA3Ljk2OUMxNzEuOTA3IDEwNy45NzIgMTczLjE0NiAxMDcuNTU2IDE3NC4xNTkgMTA2Ljc4NkMxNzQuNzc1IDEwNi4zMjQgMTc1LjI5MyAxMDUuNzQ1IDE3NS42ODMgMTA1LjA4MkMxNzYuMDczIDEwNC40MTkgMTc2LjMyOCAxMDMuNjg0IDE3Ni40MzMgMTAyLjkyMkMxNzYuNTQyIDEwMi4xNiAxNzYuNDk5IDEwMS4zODQgMTc2LjMwNiAxMDAuNjM5QzE3Ni4xMTMgOTkuODkzNCAxNzUuNzczIDk5LjE5NCAxNzUuMzA4IDk4LjU4MTFMMTYwLjg4NSA3OS40NzM2TDE3NC4yMzcgNjYuMTIzQzE3NS4xNTUgNjUuMjA0MSAxNzUuNjE1IDYzLjkzNzUgMTc1LjUzIDYyLjU1NTdDMTc1LjQ0NiA2MS4xODU2IDE3NC44MzQgNTkuODY2MiAxNzMuODA4IDU4Ljg0MDhDMTcyLjcwNyA1Ny43NDEyIDE3MS4yMzggNTcuMTEwNCAxNjkuNzc1IDU3LjExMDRDMTY4LjUyMSA1Ny4xMTA0IDE2Ny4zNjYgNTcuNTczMiAxNjYuNTI1IDU4LjQxNDFMMTUwLjE3OCA3NC43NjE3VjYyLjE2OEMxNTAuMTc4IDU4LjkzNjUgMTQ3LjU1IDU2LjMwODYgMTQ0LjMxOCA1Ni4zMDg2QzE0MS4wODcgNTYuMzA4NiAxMzguNDU5IDU4LjkzNjUgMTM4LjQ1OSA2Mi4xNjhWMTAyLjI1M1oifSkpfWZ1bmN0aW9uIExyKGUpe3ZhciB0PXZvaWQgMD09PSh0PWUuYWN0aXZhdG9ySWNvbik/bnVsbDp0LGU9ZS5idXR0b25JbWFnZSxuPShvPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS5hY3RpdmF0b3JTaXplLHI9by5idXR0b25Cb3JkZXJSYWRpdXMsbz1vLmJ1dHRvblN0eWxlO3JldHVybiBlP0guYS5jcmVhdGVFbGVtZW50KCJpbWciLHtzcmM6IiIuY29uY2F0KGUpLHN0eWxlOnt3aWR0aDoiIi5jb25jYXQoTWF0aC5taW4oLjU1Km4sNDApLCJweCIpLGhlaWdodDoiIi5jb25jYXQoTWF0aC5taW4oLjU1Km4sNDApLCJweCIpLG9iamVjdEZpdDoiY292ZXIiLGJvcmRlclJhZGl1czoiIi5jb25jYXQoLjM1KnIsInB4Iil9fSk6InNtaWxlIj09PXQ/SC5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3N0eWxlOiJjbGFzc2ljIiE9PW8/e3dpZHRoOiI4NSUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn06e3dpZHRoOiI2NSUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIixkaXNwbGF5OiJibG9jayIsbWFyZ2luOiJhdXRvIixtYXJnaW5MZWZ0OiIyMCUifSx2aWV3Qm94OiIwIDAgMzAgMzAiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGNsaXBSdWxlOiJldmVub2RkIixkOiJNNy40NjIwNCAyLjAyNzQ2QzkuNzUwMjcgMC42OTgzMjcgMTIuMzQ5NSAtMC4wMDExODM3NyAxNC45OTU1IDIuNjAzNzNlLTA2QzE3LjMwMzEgLTAuMDAxMzU3MzQgMTkuNTc5OSAwLjUzMDAyOCAyMS42NDg3IDEuNTUyNzlDMjMuNzE3NCAyLjU3NTU2IDI1LjUyMjMgNC4wNjIxIDI2LjkyMjcgNS44OTY3MUMyOC4zMjMyIDcuNzMxMzEgMjkuMjgxNSA5Ljg2NDQ3IDI5LjcyMyAxMi4xMzAxQzMwLjE2NDUgMTQuMzk1OCAzMC4wNzczIDE2LjczMjggMjkuNDY4MiAxOC45NTkyQzI4Ljg1OTEgMjEuMTg1NiAyNy43NDQ2IDIzLjI0MTQgMjYuMjExMyAyNC45NjY1QzI0LjY3OCAyNi42OTE2IDIyLjc2NzUgMjguMDM5NSAyMC42MjgzIDI4LjkwNTJDMTguNDg5MSAyOS43NzA4IDE2LjE3OSAzMC4xMzEgMTMuODc3OSAyOS45NTc2QzExLjU3NjggMjkuNzg0MiA5LjM0Njc5IDI5LjA4MTkgNy4zNjEzOSAyNy45MDU1TDEuODI5MzcgMjkuOTE4MkMxLjY3OTc5IDI5Ljk3MTkgMS41MjIwOSAyOS45OTk2IDEuMzYzMTQgMzBDMS4xNDQwNyAyOS45OTk4IDAuOTI4MjY0IDI5Ljk0NjkgMC43MzM5OTcgMjkuODQ1NkMwLjUzOTczIDI5Ljc0NDMgMC4zNzI3MjggMjkuNTk3NyAwLjI0NzEzNCAyOS40MTgxQzAuMTIxNTQgMjkuMjM4NiAwLjA0MTA1NDYgMjkuMDMxNCAwLjAxMjQ5NDQgMjguODE0MUMtMC4wMTYwNjU3IDI4LjU5NjkgMC4wMDgxNDA4MyAyOC4zNzU5IDAuMDgzMDYzNiAyOC4xN0wyLjA5Mzg0IDIyLjYzNjRDMC43NDQ5NDQgMjAuMzU5MyAwLjAyMjcwOSAxNy43NjU2IDAuMDAwNTI2ODMyIDE1LjExODlDLTAuMDIxNjU1MyAxMi40NzIxIDAuNjU3MDA3IDkuODY2NzEgMS45Njc1NSA3LjU2NzMzQzMuMjc4MDkgNS4yNjc5NSA1LjE3MzggMy4zNTY1OCA3LjQ2MjA0IDIuMDI3NDZaTTEwLjkwNiA4LjAzNjQ0QzkuODc0NSA4LjAzNjQ0IDkuMDM3ODcgOC44NzMzNyA5LjAzNzg3IDkuOTA0NjFDOS4wMzc4NyAxMC45MzY4IDkuODc0NSAxMS43NzMxIDEwLjkwNiAxMS43NzM0QzExLjkzNzMgMTEuNzczNCAxMi43NzM5IDEwLjkzNjggMTIuNzczOSA5LjkwNDYxQzEyLjc3MzkgOC44NzMwNiAxMS45MzczIDguMDM2NDQgMTAuOTA2IDguMDM2NDRaTTE5LjM3NzQgOC4wMzY0NEMxOC4zNDYyIDguMDM2NDQgMTcuNTA4NyA4Ljg3MzM3IDE3LjUwODcgOS45MDQ2MUMxNy41MDg3IDEwLjkzNjggMTguMzQ2NSAxMS43NzMxIDE5LjM3NzQgMTEuNzczNEMyMC40MDkgMTEuNzczNCAyMS4yNDU2IDEwLjkzNjggMjEuMjQ1NiA5LjkwNDYxQzIxLjI0NTYgOC44NzMwNiAyMC40MDg3IDguMDM2NDQgMTkuMzc3NCA4LjAzNjQ0Wk0xNS4wMTc4IDIxLjk2MzVDMTguMDU2NCAyMS45NjM1IDIwLjc2NzggMjAuMjMzNiAyMS45MjU2IDE3LjU1NjNDMjIuMTIzOCAxNy4wOTggMjEuOTEyOSAxNi41NjYgMjEuNDU0MSAxNi4zNjhDMjAuOTk2NSAxNi4xNjkyIDIwLjQ2NDQgMTYuMzgwNCAyMC4yNjYyIDE2LjgzODZDMTkuMzk0NiAxOC44NTQxIDE3LjMzNDUgMjAuMTU2MiAxNS4wMTc4IDIwLjE1NjJDMTIuNjQ3NCAyMC4xNTYyIDEwLjU3NTIgMTguODU1IDkuNzM4NjIgMTYuODQxQzkuNTk0MzEgMTYuNDkzMSA5LjI1ODEgMTYuMjgzNCA4LjkwMzggMTYuMjgzNEM4Ljc4ODEyIDE2LjI4MzQgOC42NzA2MiAxNi4zMDU3IDguNTU3MzQgMTYuMzUyNEM4LjA5NjEgMTYuNTQ0IDcuODc3NjggMTcuMDczIDguMDY5MjkgMTcuNTM0QzkuMTg3IDIwLjIyNDkgMTEuOTE0NCAyMS45NjM1IDE1LjAxNzggMjEuOTYzNVoiLGZpbGw6IndoaXRlIn0pKToic3F1YXJlX21lc3NhZ2UiPT09dD9ILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6ImNsYXNzaWMiIT09bz97d2lkdGg6Ijg1JSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjY1JSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUiLGRpc3BsYXk6ImJsb2NrIixtYXJnaW46ImF1dG8iLG1hcmdpbkxlZnQ6IjIwJSJ9LHZpZXdCb3g6IjAgMCAzMiAzMiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjMuOTU0NSAySDcuMDQ1NDVDNS4xNzc1NyAyLjAwMjE3IDMuMzg2ODMgMi43MjEyIDIuMDY2MDQgMy45OTkzOEMwLjc0NTI0MyA1LjI3NzU2IDAuMDAyMjM3NDQgNy4wMTA1MiAwIDguODE4MTRWMTkuNzI3MkMwLjAwMjA0OTU2IDIxLjI5ODMgMC41NjM3NjMgMjIuODIwOCAxLjU5MDQ3IDI0LjAzNzlDMi42MTcxNyAyNS4yNTUxIDQuMDQ2MDggMjYuMDkyNCA1LjYzNjM2IDI2LjQwODlWMzAuNjM2MkM1LjYzNjMzIDMwLjg4MyA1LjcwNTU0IDMxLjEyNTMgNS44MzY2MyAzMS4zMzcxQzUuOTY3NzIgMzEuNTQ4OSA2LjE1NTc2IDMxLjcyMjIgNi4zODA2OSAzMS44Mzg3QzYuNjA1NjMgMzEuOTU1MiA2Ljg1OTAxIDMyLjAxMDQgNy4xMTM4MiAzMS45OTg0QzcuMzY4NjIgMzEuOTg2NCA3LjYxNTI5IDMxLjkwNzcgNy44Mjc1IDMxLjc3MDdMMTUuOTIyNyAyNi41NDUzSDIzLjk1NDVDMjUuODIyNCAyNi41NDMxIDI3LjYxMzIgMjUuODI0MSAyOC45MzQgMjQuNTQ1OUMzMC4yNTQ4IDIzLjI2NzcgMzAuOTk3OCAyMS41MzQ4IDMxIDE5LjcyNzJWOC44MTgxNEMzMC45OTc4IDcuMDEwNTIgMzAuMjU0OCA1LjI3NzU2IDI4LjkzNCAzLjk5OTM4QzI3LjYxMzIgMi43MjEyIDI1LjgyMjQgMi4wMDIxNyAyMy45NTQ1IDJaTTIxLjEzNjQgMTguMzYzNUg5Ljg2MzY0QzkuNDg5OTIgMTguMzYzNSA5LjEzMTUxIDE4LjIxOTkgOC44NjcyNiAxNy45NjQxQzguNjAzIDE3LjcwODQgOC40NTQ1NSAxNy4zNjE2IDguNDU0NTUgMTYuOTk5OUM4LjQ1NDU1IDE2LjYzODIgOC42MDMgMTYuMjkxNCA4Ljg2NzI2IDE2LjAzNTdDOS4xMzE1MSAxNS43Nzk5IDkuNDg5OTIgMTUuNjM2MyA5Ljg2MzY0IDE1LjYzNjNIMjEuMTM2NEMyMS41MTAxIDE1LjYzNjMgMjEuODY4NSAxNS43Nzk5IDIyLjEzMjcgMTYuMDM1N0MyMi4zOTcgMTYuMjkxNCAyMi41NDU1IDE2LjYzODIgMjIuNTQ1NSAxNi45OTk5QzIyLjU0NTUgMTcuMzYxNiAyMi4zOTcgMTcuNzA4NCAyMi4xMzI3IDE3Ljk2NDFDMjEuODY4NSAxOC4yMTk5IDIxLjUxMDEgMTguMzYzNSAyMS4xMzY0IDE4LjM2MzVaTTIzLjk1NDUgMTIuOTA5SDcuMDQ1NDVDNi42NzE3NCAxMi45MDkgNi4zMTMzMyAxMi43NjUzIDYuMDQ5MDggMTIuNTA5NkM1Ljc4NDgyIDEyLjI1MzkgNS42MzYzNiAxMS45MDcgNS42MzYzNiAxMS41NDU0QzUuNjM2MzYgMTEuMTgzNyA1Ljc4NDgyIDEwLjgzNjkgNi4wNDkwOCAxMC41ODEyQzYuMzEzMzMgMTAuMzI1NCA2LjY3MTc0IDEwLjE4MTggNy4wNDU0NSAxMC4xODE4SDIzLjk1NDVDMjQuMzI4MyAxMC4xODE4IDI0LjY4NjcgMTAuMzI1NCAyNC45NTA5IDEwLjU4MTJDMjUuMjE1MiAxMC44MzY5IDI1LjM2MzYgMTEuMTgzNyAyNS4zNjM2IDExLjU0NTRDMjUuMzYzNiAxMS45MDcgMjUuMjE1MiAxMi4yNTM5IDI0Ljk1MDkgMTIuNTA5NkMyNC42ODY3IDEyLjc2NTMgMjQuMzI4MyAxMi45MDkgMjMuOTU0NSAxMi45MDlaIixmaWxsOiJ3aGl0ZSJ9KSk6InJvdW5kX21lc3NhZ2UiPT09dD9ILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6ImNsYXNzaWMiIT09bz97d2lkdGg6Ijg1JSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifTp7d2lkdGg6IjY1JSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUiLGRpc3BsYXk6ImJsb2NrIixtYXJnaW46ImF1dG8iLG1hcmdpbkxlZnQ6IjIwJSJ9LHZpZXdCb3g6IjAgMCAzMiAzMiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTYgMUM3LjcyOTM4IDEgMSA3LjcyOTM4IDEgMTZWMzAuMDYyNUMxIDMwLjU4IDEuNDIgMzEgMS45Mzc1IDMxSDE2QzI0LjI3MDYgMzEgMzEgMjQuMjcwNiAzMSAxNkMzMSA3LjcyOTM4IDI0LjI3MDYgMSAxNiAxWk0xNi45Mzc1IDE5Ljc1SDkuNDM3NUM4LjkyIDE5Ljc1IDguNSAxOS4zMyA4LjUgMTguODEyNUM4LjUgMTguMjk1IDguOTIgMTcuODc1IDkuNDM3NSAxNy44NzVIMTYuOTM3NUMxNy40NTUgMTcuODc1IDE3Ljg3NSAxOC4yOTUgMTcuODc1IDE4LjgxMjVDMTcuODc1IDE5LjMzIDE3LjQ1NSAxOS43NSAxNi45Mzc1IDE5Ljc1Wk0yMi41NjI1IDE0LjEyNUg5LjQzNzVDOC45MiAxNC4xMjUgOC41IDEzLjcwNSA4LjUgMTMuMTg3NUM4LjUgMTIuNjcgOC45MiAxMi4yNSA5LjQzNzUgMTIuMjVIMjIuNTYyNUMyMy4wOCAxMi4yNSAyMy41IDEyLjY3IDIzLjUgMTMuMTg3NUMyMy41IDEzLjcwNSAyMy4wOCAxNC4xMjUgMjIuNTYyNSAxNC4xMjVaIixmaWxsOiJ3aGl0ZSJ9KSk6ImRpYWxvZyI9PT10P0guYS5jcmVhdGVFbGVtZW50KCJzdmciLHtzdHlsZToiY2xhc3NpYyIhPT1vP3t3aWR0aDoiODUlIixoZWlnaHQ6IjEwMCUiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSJ9Ont3aWR0aDoiNjUlIixoZWlnaHQ6IjEwMCUiLGZpbGw6IiNmZmYiLHN0cm9rZToibm9uZSIsZGlzcGxheToiYmxvY2siLG1hcmdpbjoiYXV0byIsbWFyZ2luTGVmdDoiMjAlIn0sdmlld0JveDoiMCAwIDMyIDMyIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yNC45ODU3IDMwLjM2MTZDMjUuMjUxNSAzMC4zNjE2IDI1LjUxMzggMzAuNDYyNyAyNS43MTMzIDMwLjY1NTRDMjYuOTg4NyAzMS44ODcgMjguODQ5IDMyLjI5NyAzMC41MDI5IDMxLjc4MzhDMjkuNDM4NSAyOS41NjY0IDI5LjI5MSAyNy4wMjYxIDMwLjExNTggMjQuNjc0QzMxLjEzOTQgMjEuNzQ3NiAzMS4zOTYgMTguODE0NCAzMC4yMzEgMTUuODcyN0MyOS4yMDc1IDEzLjI4ODQgMjcuMjMyNSAxMS4xNDEzIDI0LjczMyA5LjkxNjk5QzI0Ljg4NjcgMTAuNzM2OCAyNC45NjQyIDExLjU3MjEgMjQuOTY0MiAxMi40MTYyQzI0Ljk2NDMgMTUuOTk5MyAyMy41ODY1IDE5LjM2OTIgMjEuMDg0OSAyMS45MDU0QzE4LjU4MjkgMjQuNDQxOSAxNS4yMjkxIDI1Ljg2ODEgMTEuNjQxMyAyNS45MjE0QzEwLjk3NDcgMjUuOTMxOCAxMC4zMTExIDI1Ljg5MjYgOS42NTUwNyAyNS44MDYyQzExLjYyNjkgMjkuMjYyNCAxNS4zNDU2IDMxLjUxMzQgMTkuNDMyMSAzMS41NzQxQzIxLjIxOTggMzEuNjAxNyAyMi45MzYyIDMxLjIyNzIgMjQuNTM0NyAzMC40NjM4QzI0LjY3ODYgMzAuMzk1IDI0LjgzMjggMzAuMzYxNiAyNC45ODU3IDMwLjM2MTZaIixmaWxsOiJ3aGl0ZSJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMS42NzA4IDEuMDAyMjhDNS4zMDYxNyAwLjg3NTg5OSAwLjAxNTM4MSA2LjAyNDgxIDMuNDUxMTVlLTA1IDEyLjM4ODFDLTAuMDAzNzI1MzkgMTMuOTQyOCAwLjI5OTc1MiAxNS40NTAxIDAuOTAyMTA0IDE2Ljg2ODRDMC45MTA4NTEgMTYuODg5MSAwLjkxODk4NSAxNi45MDk5IDAuOTI2MzUxIDE2LjkzMTFDMS43NTExNSAxOS4yODMyIDEuNjAzNzUgMjEuODIzNCAwLjUzOTMxMiAyNC4wNDA4QzIuMTkzMjggMjQuNTUzOSA0LjA1MzQ0IDI0LjE0NCA1LjMyODg5IDIyLjkxMjRDNS42NDMxMSAyMi42MDg5IDYuMTEzMjUgMjIuNTMyNCA2LjUwNzUgMjIuNzIwOUM4LjEwNTc3IDIzLjQ4NDIgOS44MjI0MyAyMy44NTk5IDExLjYxIDIzLjgzMTJDMTcuOTI0OSAyMy43Mzc0IDIyLjg3MTQgMTguNzIzNCAyMi44NzE0IDEyLjQxNjJDMjIuODcxNCA2LjI0NjY0IDE3Ljg0NjggMS4xMjY0MyAxMS42NzA4IDEuMDAyMjhaTTUuMzM1NzkgMTQuMTIxMkM0LjQyMTM3IDE0LjEyMTIgMy42ODAwNiAxMy4zODExIDMuNjgwMDYgMTIuNDY4MkMzLjY4MDA2IDExLjU1NTMgNC40MjEzNyAxMC44MTUyIDUuMzM1NzkgMTAuODE1MkM2LjI1MDIyIDEwLjgxNTIgNi45OTE1MyAxMS41NTUzIDYuOTkxNTMgMTIuNDY4MkM2Ljk5MTQ1IDEzLjM4MTEgNi4yNTAyMiAxNC4xMjEyIDUuMzM1NzkgMTQuMTIxMlpNMTEuNDM1NyAxNC4xMjEyQzEwLjUyMTMgMTQuMTIxMiA5Ljc3OTk5IDEzLjM4MTEgOS43Nzk5OSAxMi40NjgyQzkuNzc5OTkgMTEuNTU1MyAxMC41MjEzIDEwLjgxNTIgMTEuNDM1NyAxMC44MTUyQzEyLjM1MDIgMTAuODE1MiAxMy4wOTE1IDExLjU1NTMgMTMuMDkxNSAxMi40NjgyQzEzLjA5MTUgMTMuMzgxMSAxMi4zNTAyIDE0LjEyMTIgMTEuNDM1NyAxNC4xMjEyWk0xNy41MzU3IDE0LjEyMTJDMTYuNjIxMyAxNC4xMjEyIDE1Ljg4IDEzLjM4MTEgMTUuODggMTIuNDY4MkMxNS44OCAxMS41NTUzIDE2LjYyMTMgMTAuODE1MiAxNy41MzU3IDEwLjgxNTJDMTguNDUwMiAxMC44MTUyIDE5LjE5MTUgMTEuNTU1MyAxOS4xOTE1IDEyLjQ2ODJDMTkuMTkxNSAxMy4zODExIDE4LjQ1MDIgMTQuMTIxMiAxNy41MzU3IDE0LjEyMTJaIixmaWxsOiJ3aGl0ZSJ9KSk6InBsYW5lIj09PXQ/SC5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3N0eWxlOiJjbGFzc2ljIiE9PW8/e3dpZHRoOiI4NSUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIn06e3dpZHRoOiI2NSUiLGhlaWdodDoiMTAwJSIsZmlsbDoiI2ZmZiIsc3Ryb2tlOiJub25lIixkaXNwbGF5OiJibG9jayIsbWFyZ2luOiJhdXRvIixtYXJnaW5SaWdodDoiMjElIn0sdmlld0JveDoiMCAwIDMwIDMwIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifSxILmEuY3JlYXRlRWxlbWVudCgiZyIsbnVsbCxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yOS45NDc4IDIuMTI5NTJMMjQuNjYxMyAyNi41MTA0QzI0LjU0ODggMjcuMDQwNyAyNC4xOTczIDI3LjQ4NzMgMjMuNzA1MiAyNy43MjQ1QzIzLjIxMzEgMjcuOTYxOCAyMi42NTA3IDI3Ljk2MTggMjIuMTQ0NiAyNy43MjQ1TDE4LjIwNzggMjUuODI2NUMxOC4yMDc4IDI1LjgyNjUgMTMuMTc0NCAyOS40NDExIDEyLjE0ODEgMjkuOTE1NkMxMS45NTEyIDMwLjAxMzMgMTEuODY2OSAyOS45OTkzIDExLjcyNjMgMjkuOTk5M0MxMS41Mjk0IDI5Ljk5OTMgMTEuMzE4NSAyOS45NDM1IDExLjE0OTggMjkuODMxOEMxMC44NTQ2IDI5LjYzNjUgMTAuNjcxOCAyOS4zMTU1IDEwLjY3MTggMjguOTY2NlYyMS41NTZDMTAuNjU3NyAyMS40MDI1IDEwLjY3MTggMjEuMjQ5IDEwLjc1NjIgMjEuMDk1NUMxMC43NTYyIDIxLjA5NTUgMTAuNzcwMiAyMS4wNjc2IDEwLjc4NDMgMjEuMDUzNkMxMC44MjY1IDIwLjk4MzggMTAuODY4NiAyMC45MTQxIDEwLjkyNDkgMjAuODQ0M0wyMy44NzQgNi43NzY4MUw3Ljc3NTQ4IDE5LjkyMzJDNy42NDg5NCAyMC4wNDg4IDcuNDgwMjIgMjAuMTYwNCA3LjI5NzQ0IDIwLjIwMjNDNy4wMDIxOSAyMC4yODYxIDYuNjc4ODEgMjAuMjMwMiA2LjQyNTc0IDIwLjA2MjhMMS4wMTI3MSAxNy42MzQ0QzAuNDA4MTQxIDE3LjM0MTQgMC4wMjg1MjYxIDE2Ljc1NTIgMC4wMDA0MDY0NzYgMTYuMDg1M0MtMC4wMTM2NTMzIDE1LjQyOTQgMC4zMzc4NDIgMTQuODE1NCAwLjkyODM1MyAxNC40OTQ0TDI3LjM2MDggMC4yMTc1NjhDMjcuOTc5NCAtMC4xMTczNzIgMjguNzEwNSAtMC4wNjE1NDg5IDI5LjI4NyAwLjM1NzEyNkMyOS44NDk0IDAuNzc1ODAxIDMwLjEwMjQgMS40NTk2NCAyOS45NjE4IDIuMTI5NTJIMjkuOTQ3OFoiLGZpbGw6IndoaXRlIn0pKSk6SC5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3N0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixmaWxsOiIjZmZmIixzdHJva2U6Im5vbmUifSx2aWV3Qm94OiIwIC0yNTYgMTg1MCAxODUwIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhtbG5zWGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsifSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse3RyYW5zZm9ybToibWF0cml4KDAuNzExODY0NDEsMCwwLC0wLjcxMTg2NDQxLDI4OC41NDIzNywxMDkzLjk0ODIpIixkOiJNIDcwNCwxMTUyIFEgNTUxLDExNTIgNDE4LDExMDAgMjg1LDEwNDggMjA2LjUsOTU5IDEyOCw4NzAgMTI4LDc2OCBxIDAsLTgyIDUzLC0xNTggNTMsLTc2IDE0OSwtMTMyIGwgOTcsLTU2IC0zNSwtODQgcSAzNCwyMCA2MiwzOSBsIDQ0LDMxIDUzLC0xMCBxIDc4LC0xNCAxNTMsLTE0IDE1MywwIDI4Niw1MiAxMzMsNTIgMjExLjUsMTQxIDc4LjUsODkgNzguNSwxOTEgMCwxMDIgLTc4LjUsMTkxIC03OC41LDg5IC0yMTEuNSwxNDEgLTEzMyw1MiAtMjg2LDUyIHogbSAwLDEyOCBxIDE5MSwwIDM1My41LC02OC41IFEgMTIyMCwxMTQzIDEzMTQsMTAyNSAxNDA4LDkwNyAxNDA4LDc2OCAxNDA4LDYyOSAxMzE0LDUxMSAxMjIwLDM5MyAxMDU3LjUsMzI0LjUgODk1LDI1NiA3MDQsMjU2IDYxOCwyNTYgNTI4LDI3MiA0MDQsMTg0IDI1MCwxNDQgMjE0LDEzNSAxNjQsMTI4IGggLTMgcSAtMTEsMCAtMjAuNSw4IC05LjUsOCAtMTEuNSwyMSAtMSwzIC0xLDYuNSAwLDMuNSAwLjUsNi41IDAuNSwzIDIsNiBsIDIuNSw1IHEgMCwwIDMuNSw1LjUgMy41LDUuNSA0LDUgMC41LC0wLjUgNC41LDUgNCw1LjUgNCw0LjUgNSw2IDIzLDI1IDE4LDE5IDI2LDI5LjUgOCwxMC41IDIyLjUsMjkgUSAyMzUsMzAzIDI0NS41LDMyMyAyNTYsMzQzIDI2NiwzNjcgMTQyLDQzOSA3MSw1NDQgMCw2NDkgMCw3NjggMCw5MDcgOTQsMTAyNSAxODgsMTE0MyAzNTAuNSwxMjExLjUgNTEzLDEyODAgNzA0LDEyODAgWiBNIDE1MjYsMTExIHEgMTAsLTI0IDIwLjUsLTQ0IDEwLjUsLTIwIDI1LC0zOC41IDE0LjUsLTE4LjUgMjIuNSwtMjkgOCwtMTAuNSAyNiwtMjkuNSAxOCwtMTkgMjMsLTI1IDEsLTEgNCwtNC41IDMsLTMuNSA0LjUsLTUgMS41LC0xLjUgNCwtNSAyLjUsLTMuNSAzLjUsLTUuNSBsIDIuNSwtNSBxIDAsMCAyLC02IDIsLTYgMC41LC02LjUgLTEuNSwtMC41IC0xLC02LjUgLTMsLTE0IC0xMywtMjIgLTEwLC04IC0yMiwtNyAtNTAsNyAtODYsMTYgUSAxMzg4LC03MiAxMjY0LDE2IDExNzQsMCAxMDg4LDAgODE3LDAgNjE2LDEzMiBxIDU4LC00IDg4LC00IDE2MSwwIDMwOSw0NSAxNDgsNDUgMjY0LDEyOSAxMjUsOTIgMTkyLDIxMiA2NywxMjAgNjcsMjU0IDAsNzcgLTIzLDE1MiAxMjksLTcxIDIwNCwtMTc4IDc1LC0xMDcgNzUsLTIzMCAwLC0xMjAgLTcxLC0yMjQuNSBRIDE2NTAsMTgzIDE1MjYsMTExIFoifSkpfWZ1bmN0aW9uIE1yKCl7dmFyIGU9KHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3MpLmFjdGl2YXRvclNpemUsdD10LmJ1dHRvblN0eWxlO3JldHVybiBILmEuY3JlYXRlRWxlbWVudCgic3BhbiIse3N0eWxlOiJjbGFzc2ljIj09PXQ/e2Rpc3BsYXk6ImdyaWQiLHBsYWNlQ29udGVudDoiY2VudGVyIixmb250U2l6ZToiIi5jb25jYXQoZS0xMCwicHgiKSxmb250V2VpZ2h0OiI2MDAiLGNvbG9yOiIjZmZmZmZmIixtYXJnaW5Ub3A6IjFweCIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZm9udEZhbWlseToiVGltZXMgTmV3IFJvbWFuLCBzYW5zLXNlcmlmIixsaW5lSGVpZ2h0OiIxIn06e2ZvbnRTaXplOiIiLmNvbmNhdCguNSplKzE1LCJweCIpLGZvbnRXZWlnaHQ6IjYwMCIsY29sb3I6IiNmZmZmZmYiLGZvbnRGYW1pbHk6IlRpbWVzIE5ldyBSb21hbiwgc2Fucy1zZXJpZiIsbGluZUhlaWdodDoiMSJ9fSwiw5ciKX12YXIgaD17YXBwbGU6ZnVuY3Rpb24oZSl7dmFyIGU9ZS5zaXplLHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Msbj10LmFwcGxlLHI9dC5hcHBsZUNvbG9yLG89dC5hcHBsZUljb24sdD10LmFwcGxlTGFiZWwsbj1hKCl8fHYoKT8iaW1lc3NhZ2U6Ly8iLmNvbmNhdChuKTpudWxsO3JldHVybiBILmEuY3JlYXRlRWxlbWVudChwLHtzaXplOmUsbmFtZToiYXBwbGUiLGxpbms6bixpY29uOkguYS5jcmVhdGVFbGVtZW50KGp0LHtzaXplOmV9KSxjb2xvcjpyfHwhMSxjdXN0b21JY29uOiEhbyxsYWJlbDp0fSl9LHlvdXR1YmU6ZnVuY3Rpb24oZSl7dmFyIGU9ZS5zaXplLHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Msbj10LnlvdXR1YmUscj10LnlvdXR1YmVDb2xvcixvPXQueW91dHViZUljb24sYT10LnlvdXR1YmVMYWJlbCxuPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiZXZlcnl3aGVyZSI6cmV0dXJuIG51bGw7Y2FzZSJkZXNrdG9wIjppZihVKCkpcmV0dXJuIG51bGw7Y2FzZSJtb2JpbGUiOmlmKCFVKCkpcmV0dXJuIG51bGw7Y2FzZSJub3doZXJlIjpyZXR1cm4gZTtkZWZhdWx0OnJldHVybiBudWxsfX0obix0LnlvdXR1YmVTaG93UG9wdXBQbGF0Zm9ybSk7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KHAse3NpemU6ZSxuYW1lOiJ5b3V0dWJlIixsaW5rOm4sdGFyZ2V0OiJfYmxhbmsiLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoJHQse3NpemU6ZX0pLGNvbG9yOnJ8fCExLGN1c3RvbUljb246ISFvLGxhYmVsOmF9KX0sY2FsbDpmdW5jdGlvbihlKXt2YXIgZT1lLnNpemUsdD1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncyxuPXQuY2FsbCxyPXQuY2FsbENvbG9yLG89dC5jYWxsSWNvbixhPXQuY2FsbExhYmVsLG49ZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJldmVyeXdoZXJlIjpyZXR1cm4gbnVsbDtjYXNlImRlc2t0b3AiOnJldHVybiBVKCk/bnVsbDoidGVsOiIuY29uY2F0KGUpO2Nhc2UibW9iaWxlIjpyZXR1cm4gVSgpPyJ0ZWw6Ii5jb25jYXQoZSk6bnVsbDtjYXNlIm5vd2hlcmUiOnJldHVybiJ0ZWw6Ii5jb25jYXQoZSk7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KG4sdC5jYWxsU2hvd1BvcHVwUGxhdGZvcm0pO3JldHVybiBILmEuY3JlYXRlRWxlbWVudChwLHtzaXplOmUsbmFtZToiY2FsbCIsbGluazpuLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoWXQse3NpemU6ZX0pLGNvbG9yOnJ8fCExLGN1c3RvbUljb246ISFvLGxhYmVsOmF9KX0sY29udGFjdGZvcm06ZnVuY3Rpb24oZSl7dmFyIGU9ZS5zaXplLHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Msbj10LmNvbnRhY3Rmb3JtQ29sb3Iscj10LmNvbnRhY3Rmb3JtSWNvbix0PXQuY29udGFjdGZvcm1MYWJlbDtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6ImNvbnRhY3Rmb3JtIixpY29uOkguYS5jcmVhdGVFbGVtZW50KHRuLHtzaXplOmV9KSxjb2xvcjpufHwhMSxjdXN0b21JY29uOiEhcixsYWJlbDp0fSl9LGRpc2NvcmQ6ZnVuY3Rpb24oZSl7dmFyIGU9ZS5zaXplLHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Msbj10LmRpc2NvcmQscj10LmRpc2NvcmRDb2xvcixvPXQuZGlzY29yZEljb24sdD10LmRpc2NvcmRMYWJlbCxuPSIiLmNvbmNhdChuKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6ImRpc2NvcmQiLGxpbms6bix0YXJnZXQ6Il9ibGFuayIsaWNvbjpILmEuY3JlYXRlRWxlbWVudChsbix7c2l6ZTplfSksY29sb3I6cnx8ITEsY3VzdG9tSWNvbjohIW8sbGFiZWw6dH0pfSx0ZWFtczpmdW5jdGlvbihlKXt2YXIgZT1lLnNpemUsdD1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncyxuPXQudGVhbXMscj10LnRlYW1zQ29sb3Isbz10LnRlYW1zSWNvbix0PXQudGVhbXNMYWJlbCxuPSIiLmNvbmNhdChuKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6InRlYW1zIix0YXJnZXQ6Il9ibGFuayIsbGluazpuLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoY24se3NpemU6ZX0pLGNvbG9yOnJ8fCExLGN1c3RvbUljb246ISFvLGxhYmVsOnR9KX0sY2FsZW5kYXI6ZnVuY3Rpb24oZSl7dmFyIGU9ZS5zaXplLHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Msbj10LmNhbGVuZGFyQ29sb3Iscj10LmNhbGVuZGFySWNvbix0PXQuY2FsZW5kYXJMYWJlbDtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6ImNhbGVuZGFyIixpY29uOkguYS5jcmVhdGVFbGVtZW50KHNuLHtzaXplOmV9KSxjb2xvcjpufHwhMSxjdXN0b21JY29uOiEhcixsYWJlbDp0fSl9LGVtYWlsOmZ1bmN0aW9uKGUpe3ZhciBlPWUuc2l6ZSx0PU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzLG49dC5lbWFpbCxyPXQuZW1haWxDb2xvcixvPXQuZW1haWxJY29uLHQ9dC5lbWFpbExhYmVsLG49Im1haWx0bzoiLmNvbmNhdChuKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6ImVtYWlsIix0YXJnZXQ6Il9ibGFuayIsbGluazpuLGljb246SC5hLmNyZWF0ZUVsZW1lbnQodW4se3NpemU6ZX0pLGNvbG9yOnJ8fCExLGN1c3RvbUljb246ISFvLGxhYmVsOnR9KX0sZmFjZWJvb2s6ZnVuY3Rpb24oZSl7dmFyIHQsbixlPWUuc2l6ZSxyPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLG89ci5zdGF0ZSxhPXIuYWN0aW9ucy5jbG9zZUJ1dHRvblBvcHVwLHI9ci5zZXR0aW5ncyxpPXIuZmFjZWJvb2ssbD1yLmZhY2Vib29rQ29sb3IsYz1yLmZhY2Vib29rSWNvbix1PXIuZmFjZWJvb2tMYWJlbCxzPXIuZmFjZWJvb2tGcmFtZSxmPXIuc3Vic2NyaXB0aW9uQ3JlYXRlZERhdGUscj1sfHwhMSxsPSEhYztyZXR1cm4gT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpeyJmYWNlYm9vayI9PT1vLmJ1dHRvblBvcHVwJiZVKCkmJnMmJiF4bihmLHMpJiYob3BlbigiaHR0cHM6Ly9tLm1lLyIuY29uY2F0KGkpLCJnZXRidXR0b24tcG9wdXAtIitvLmJ1dHRvblBvcHVwLCJwb3B1cCxsZWZ0PTAsdG9wPTAsd2lkdGg9NjAwLGhlaWdodD01MDAiKSxhKG8uYnV0dG9uUG9wdXApKX0sW28uYnV0dG9uUG9wdXBdKSxILmEuY3JlYXRlRWxlbWVudChwLHtzaXplOmUsbmFtZToiZmFjZWJvb2siLGxpbms6KGM9Zix0PXMsbj1pLEsmJih4bihjLHQpfHx0KT92b2lkIDA6Imh0dHBzOi8vbS5tZS8iLmNvbmNhdChuKSksdGFyZ2V0OiJfYmxhbmsiLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoaG4se3NpemU6ZX0pLGNvbG9yOnIsY3VzdG9tSWNvbjpsLGxhYmVsOnV9KX0sZ29vZ2xlbWFwOmZ1bmN0aW9uKGUpe3ZhciBlPWUuc2l6ZSx0PU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzLG49dC5nb29nbGVtYXAscj10Lmdvb2dsZW1hcENvbG9yLG89dC5nb29nbGVtYXBJY29uLGE9dC5nb29nbGVtYXBMYWJlbCxuPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiZXZlcnl3aGVyZSI6cmV0dXJuIG51bGw7Y2FzZSJkZXNrdG9wIjppZihVKCkpcmV0dXJuIG51bGw7Y2FzZSJtb2JpbGUiOmlmKCFVKCkpcmV0dXJuIG51bGw7Y2FzZSJub3doZXJlIjpyZXR1cm4gZTtkZWZhdWx0OnJldHVybiBudWxsfX0obix0Lmdvb2dsZW1hcFNob3dQb3B1cFBsYXRmb3JtKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6Imdvb2dsZW1hcCIsdGFyZ2V0OiJfYmxhbmsiLGxpbms6bixpY29uOkguYS5jcmVhdGVFbGVtZW50KHZuLHtzaXplOmV9KSxjb2xvcjpyfHwhMSxjdXN0b21JY29uOiEhbyxsYWJlbDphfSl9LGluc3RhZ3JhbTpmdW5jdGlvbihlKXt2YXIgZT1lLnNpemUsdD1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncyxuPXQuaW5zdGFncmFtLHI9dC5pbnN0YWdyYW1Db2xvcixvPXQuaW5zdGFncmFtSWNvbix0PXQuaW5zdGFncmFtTGFiZWwsbj1mdW5jdGlvbihlKXtlPWUmJmUuc3RhcnRzV2l0aCgiaHR0cHM6Ly9pZy5tZS9tLyIpP2U6Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vIi5jb25jYXQoZSk7cmV0dXJuIGV9KG4pO3JldHVybiBILmEuY3JlYXRlRWxlbWVudChwLHtzaXplOmUsbmFtZToiaW5zdGFncmFtIixsaW5rOm4sdGFyZ2V0OiJfYmxhbmsiLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoQ24se3NpemU6ZX0pLGNvbG9yOnJ8fCExLGN1c3RvbUljb246ISFvLGxhYmVsOnR9KX0sbGluZTpmdW5jdGlvbihlKXt2YXIgZT1lLnNpemUsdD1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncyxuPXQubGluZSxyPXQubGluZUNvbG9yLG89dC5saW5lSWNvbix0PXQubGluZUxhYmVsLG49VSgpP251bGw6Ii8vIj09PShuPW4pLnN1YnN0cigwLDIpPyJodHRwczoiK246Imh0dHAiIT09bi5zdWJzdHIoMCw0KT8iaHR0cHM6Ly8iK246bjtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6ImxpbmUiLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoRW4se3NpemU6ZX0pLGNvbG9yOnJ8fCExLGxpbms6bixjdXN0b21JY29uOiEhbyxsYWJlbDp0fSl9LGxpbms6ZnVuY3Rpb24oZSl7dmFyIGU9ZS5zaXplLHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Msbj10Lmxpbmsscj10LmxpbmtJY29uLG89dC5saW5rQ29sb3IsdD10LmxpbmtMYWJlbCxuPSIiLmNvbmNhdChuKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6ImxpbmsiLHRhcmdldDoiX2JsYW5rIixsaW5rOm4saWNvbjpILmEuY3JlYXRlRWxlbWVudChQbix7c2l6ZTplfSksY29sb3I6b3x8ITEsY3VzdG9tSWNvbjohIXIsbGFiZWw6dH0pfSxsaW5rZWRpbjpmdW5jdGlvbihlKXt2YXIgZT1lLnNpemUsdD1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncyxuPXQubGlua2VkaW4scj10LmxpbmtlZGluSWNvbixvPXQubGlua2VkaW5Db2xvcix0PXQubGlua2VkaW5MYWJlbCxuPSIiLmNvbmNhdChuKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6ImxpbmtlZGluIix0YXJnZXQ6Il9ibGFuayIsbGluazpuLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoSW4se3NpemU6ZX0pLGNvbG9yOm98fCExLGN1c3RvbUljb246ISFyLGxhYmVsOnR9KX0sc2t5cGU6ZnVuY3Rpb24oZSl7dmFyIGU9ZS5zaXplLHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Msbj10LnNreXBlLHI9dC5za3lwZUljb24sbz10LnNreXBlQ29sb3IsdD10LnNreXBlTGFiZWwsbj0ic2t5cGU6Ii5jb25jYXQobiwiP2NoYXQiKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6InNreXBlIix0YXJnZXQ6Il9ibGFuayIsbGluazpuLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoX24se3NpemU6ZX0pLGNvbG9yOm98fCExLGN1c3RvbUljb246ISFyLGxhYmVsOnR9KX0sc2xhY2s6ZnVuY3Rpb24oZSl7dmFyIGU9ZS5zaXplLHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Msbj10LnNsYWNrLHI9dC5zbGFja0ljb24sbz10LnNsYWNrQ29sb3IsdD10LnNsYWNrTGFiZWwsbj0iIi5jb25jYXQobik7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KHAse3NpemU6ZSxuYW1lOiJzbGFjayIsdGFyZ2V0OiJfYmxhbmsiLGxpbms6bixpY29uOkguYS5jcmVhdGVFbGVtZW50KHpuLHtzaXplOmV9KSxjb2xvcjpvfHwhMSxjdXN0b21JY29uOiEhcixsYWJlbDp0fSl9LHNtczpmdW5jdGlvbihlKXt2YXIgZT1lLnNpemUsdD1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncyxuPXQuc21zLHI9dC5zbXNDb2xvcixvPXQuc21zSWNvbixhPXQuc21zTGFiZWwsbj1mdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlImV2ZXJ5d2hlcmUiOnJldHVybiBudWxsO2Nhc2UiZGVza3RvcCI6cmV0dXJuIFUoKT9udWxsOiJzbXM6Ii5jb25jYXQoZSk7Y2FzZSJtb2JpbGUiOnJldHVybiBVKCk/InNtczoiLmNvbmNhdChlKTpudWxsO2Nhc2Uibm93aGVyZSI6cmV0dXJuInNtczoiLmNvbmNhdChlKTtkZWZhdWx0OnJldHVybiBudWxsfX0obix0LnNtc1Nob3dQb3B1cFBsYXRmb3JtKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6InNtcyIsbGluazpuLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoVG4se3NpemU6ZX0pLGNvbG9yOnJ8fCExLGN1c3RvbUljb246ISFvLGxhYmVsOmF9KX0sc25hcGNoYXQ6ZnVuY3Rpb24oZSl7dmFyIGU9ZS5zaXplLHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Msbj10LnNuYXBjaGF0LHI9dC5zbmFwY2hhdENvbG9yLG89dC5zbmFwY2hhdEljb24sdD10LnNuYXBjaGF0TGFiZWwscj1yfHwhMSxvPSEhbztyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7bGluazpmdW5jdGlvbihlKXtpZihEKCkpcmV0dXJuImh0dHBzOi8vd3d3LnNuYXBjaGF0LmNvbS9hZGQvIi5jb25jYXQoZSl9KG4pLHNpemU6ZSxuYW1lOiJzbmFwY2hhdCIsaWNvbjpILmEuY3JlYXRlRWxlbWVudChObix7c2l6ZTplfSksY29sb3I6cixjdXN0b21JY29uOm8sbGFiZWw6dH0pfSx0ZWxlZ3JhbTpmdW5jdGlvbihlKXt2YXIgZT1lLnNpemUsdD1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncyxuPXQudGVsZWdyYW0scj10LnRlbGVncmFtQ29sb3Isbz10LnRlbGVncmFtSWNvbix0PXQudGVsZWdyYW1MYWJlbCxuPShVKCk/Imh0dHBzOi8vdGVsZWdyYW0ubWUvIjoidGc6Ly9yZXNvbHZlP2RvbWFpbj0iKS5jb25jYXQobik7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KHAse3NpemU6ZSxuYW1lOiJ0ZWxlZ3JhbSIsdGFyZ2V0OiJfYmxhbmsiLGxpbms6bixpY29uOkguYS5jcmVhdGVFbGVtZW50KEZuLHtzaXplOmV9KSxjb2xvcjpyfHwhMSxjdXN0b21JY29uOiEhbyxsYWJlbDp0fSl9LHRpa3RvazpmdW5jdGlvbihlKXt2YXIgZT1lLnNpemUsdD1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncyxuPXQudGlrdG9rLHI9dC50aWt0b2tDb2xvcixvPXQudGlrdG9rSWNvbix0PXQudGlrdG9rTGFiZWwsbj0iaHR0cHM6Ly90aWt0b2suY29tL0AiLmNvbmNhdChuKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6InRpa3RvayIsdGFyZ2V0OiJfYmxhbmsiLGxpbms6bixpY29uOkguYS5jcmVhdGVFbGVtZW50KEhuLHtzaXplOmV9KSxjb2xvcjpyfHwhMSxjdXN0b21JY29uOiEhbyxsYWJlbDp0fSl9LGNhbGxiYWNrOmZ1bmN0aW9uKGUpe3ZhciBlPWUuc2l6ZSx0PU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzLG49dC5jYWxsYmFja0NvbG9yLHI9dC5jYWxsYmFja0ljb24sdD10LmNhbGxiYWNrTGFiZWw7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KHAse3NpemU6ZSxuYW1lOiJjYWxsYmFjayIsaWNvbjpILmEuY3JlYXRlRWxlbWVudChLbix7c2l6ZTplfSksY29sb3I6bnx8ITEsY3VzdG9tSWNvbjohIXIsbGFiZWw6dH0pfSx0d2l0dGVyOmZ1bmN0aW9uKGUpe3ZhciBlPWUuc2l6ZSx0PU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzLG49dC50d2l0dGVyLHI9dC50d2l0dGVyQ29sb3Isbz10LnR3aXR0ZXJJY29uLHQ9dC50d2l0dGVyTGFiZWwsbj0iaHR0cDovL3R3aXR0ZXIuY29tLyIuY29uY2F0KG4pO3JldHVybiBILmEuY3JlYXRlRWxlbWVudChwLHtzaXplOmUsbmFtZToidHdpdHRlciIsdGFyZ2V0OiJfYmxhbmsiLGxpbms6bixpY29uOkguYS5jcmVhdGVFbGVtZW50KFZuLHtzaXplOmV9KSxjb2xvcjpyfHwhMSxjdXN0b21JY29uOiEhbyxsYWJlbDp0fSl9LHZpYmVyOmZ1bmN0aW9uKGUpe3ZhciBlPWUuc2l6ZSx0PU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzLG49dC52aWJlcixyPXQudmliZXJDb2xvcixvPXQudmliZXJJY29uLHQ9dC52aWJlckxhYmVsLHI9cnx8ITEsbz0hIW87cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KHAse2xpbms6ZnVuY3Rpb24oZSl7aWYoRCgpJiYvXlswLTkgKCkrLV0rJC8udGVzdChlKSlyZXR1cm4gZT1lLnJlcGxhY2UoL1xEKy9nLCIiKS5yZXBsYWNlKC9eWzBdKy9nLCIiKSwodygpPyJ2aWJlcjovL2NoYXQ/bnVtYmVyPSUyQiI6YSgpPyJ2aWJlcjovL2NoYXQ/bnVtYmVyPSsiOiJ2aWJlcjovL2NoYXQ/bnVtYmVyPSIpLmNvbmNhdChlKX0obiksdGFyZ2V0OiJfYmxhbmsiLHNpemU6ZSxuYW1lOiJ2aWJlciIsaWNvbjpILmEuY3JlYXRlRWxlbWVudCgkbix7c2l6ZTplfSksY29sb3I6cixjdXN0b21JY29uOm8sbGFiZWw6dH0pfSx2a29udGFrdGU6ZnVuY3Rpb24oZSl7dmFyIGU9ZS5zaXplLHQ9T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3Msbj10LnZrb250YWt0ZSxyPXQudmtvbnRha3RlQ29sb3Isbz10LnZrb250YWt0ZUljb24sdD10LnZrb250YWt0ZUxhYmVsLG49Imh0dHBzOi8vdmsubWUvIi5jb25jYXQobik7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KHAse3NpemU6ZSxuYW1lOiJ2a29udGFrdGUiLHRhcmdldDoiX2JsYW5rIixsaW5rOm4saWNvbjpILmEuY3JlYXRlRWxlbWVudCh0cix7c2l6ZTplfSksY29sb3I6cnx8ITEsY3VzdG9tSWNvbjohIW8sbGFiZWw6dH0pfSx3YXplOmZ1bmN0aW9uKGUpe3ZhciBlPWUuc2l6ZSx0PU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzLG49dC53YXplLHI9dC53YXplQ29sb3Isbz10LndhemVJY29uLHQ9dC53YXplTGFiZWwsbj0iIi5jb25jYXQobik7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KHAse3NpemU6ZSxuYW1lOiJ3YXplIix0YXJnZXQ6Il9ibGFuayIsbGluazpuLGljb246SC5hLmNyZWF0ZUVsZW1lbnQobnIse3NpemU6ZX0pLGNvbG9yOnJ8fCExLGN1c3RvbUljb246ISFvLGxhYmVsOnR9KX0sd2VjaGF0OmZ1bmN0aW9uKGUpe3ZhciBlPWUuc2l6ZSx0PU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzLG49dC53ZWNoYXQscj10LndlY2hhdENvbG9yLG89dC53ZWNoYXRJY29uLGE9dC53ZWNoYXRMYWJlbCxuPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiZXZlcnl3aGVyZSI6cmV0dXJuIG51bGw7Y2FzZSJkZXNrdG9wIjpyZXR1cm4gVSgpP251bGw6Imh0dHA6Ly93ZWl4aW4ucXEuY29tL3IvIi5jb25jYXQoZSk7Y2FzZSJtb2JpbGUiOnJldHVybiBVKCk/Imh0dHA6Ly93ZWl4aW4ucXEuY29tL3IvIi5jb25jYXQoZSk6bnVsbDtjYXNlIm5vd2hlcmUiOnJldHVybiJodHRwOi8vd2VpeGluLnFxLmNvbS9yLyIuY29uY2F0KGUpO2RlZmF1bHQ6cmV0dXJuIG51bGx9fShuLHQud2VjaGF0U2hvd1BvcHVwUGxhdGZvcm0pO3JldHVybiBILmEuY3JlYXRlRWxlbWVudChwLHtzaXplOmUsbmFtZToid2VjaGF0Iix0YXJnZXQ6Il9ibGFuayIsbGluazpuLGljb246SC5hLmNyZWF0ZUVsZW1lbnQocnIse3NpemU6ZX0pLGNvbG9yOnJ8fCExLGN1c3RvbUljb246ISFvLGxhYmVsOmF9KX0sd2hhdHNhcHA6ZnVuY3Rpb24oZSl7dmFyIHQsZT1lLnNpemUsbj1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncyxyPW4ud2hhdHNhcHAsbz1uLndoYXRzYXBwQ29sb3IsYT1uLndoYXRzYXBwSWNvbixpPW4ud2hhdHNhcHBMYWJlbCxsPW4ucHJlRmlsbGVkTWVzc2FnZSxuPW4ud2hhdHNhcHBTaG93UG9wdXAscj0obD1sLChyPXIpJiZyLnN0YXJ0c1dpdGgoImh0dHBzOi8vY2hhdC53aGF0c2FwcC5jb20vIik/dD1yOihyPXI/ci5tYXRjaCgvXGQrL2cpLmpvaW4oIiIpOm51bGwsdD0iaHR0cHM6Ly93YS5tZS8iLmNvbmNhdChyKSxsJiYodD0iIi5jb25jYXQodCwiP3RleHQ9IikuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChsKSkpKSx0KTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQocCx7c2l6ZTplLG5hbWU6IndoYXRzYXBwIixsaW5rOm4/bnVsbDpyLHRhcmdldDpuP251bGw6Il9ibGFuayIsaWNvbjpILmEuY3JlYXRlRWxlbWVudChscix7c2l6ZTplfSksY29sb3I6b3x8ITEsY3VzdG9tSWNvbjohIWEsbGFiZWw6aX0pfSx3b25kZXJjaGF0OmZ1bmN0aW9uKGUpe3ZhciBlPWUuc2l6ZSx0PU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzLG49dC53b25kZXJjaGF0Q29sb3Iscj10LndvbmRlcmNoYXRJY29uLHQ9dC53b25kZXJjaGF0TGFiZWw7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KHAse3NpemU6ZSxuYW1lOiJ3b25kZXJjaGF0IixsaW5rOm51bGwsaWNvbjpILmEuY3JlYXRlRWxlbWVudChmcix7c2l6ZTplfSksY29sb3I6bnx8ITEsY3VzdG9tSWNvbjohIXIsbGFiZWw6dH0pfSxhaTpmdW5jdGlvbihlKXt2YXIgZT1lLnNpemUsdD1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncyxuPXQuYWlDb2xvcixyPXQuYWlJY29uLHQ9dC5haUxhYmVsO3JldHVybiBILmEuY3JlYXRlRWxlbWVudChwLHtzaXplOmUsbmFtZToiYWkiLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoeHIse3NpemU6ZX0pLGNvbG9yOm58fCExLGN1c3RvbUljb246ISFyLGxhYmVsOnR9KX0sa2FrYW90YWxrOmZ1bmN0aW9uKGUpe3ZhciBlPWUuc2l6ZSx0PU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzLG49dC5rYWthb3RhbGsscj10Lmtha2FvdGFsa0NvbG9yLG89dC5rYWthb3RhbGtJY29uLHQ9dC5rYWthb3RhbGtMYWJlbCxuPSJodHRwczovL29wZW4ua2FrYW8uY29tL28vIi5jb25jYXQobik7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KHAse3NpemU6ZSxuYW1lOiJrYWthb3RhbGsiLGxpbms6bix0YXJnZXQ6Il9ibGFuayIsaWNvbjpILmEuY3JlYXRlRWxlbWVudChUcix7c2l6ZTplfSksY29sb3I6cnx8ITEsY3VzdG9tSWNvbjohIW8sbGFiZWw6dH0pfX0sUnI9e2FwcGxlOmZ1bmN0aW9uKCl7dmFyIGU9T2JqZWN0KEYudXNlQ29udGV4dCkoViksdD1lLnN0YXRlLGU9ZS5zZXR0aW5ncyxuPWUuYXBwbGVDb2xvcixyPWUuYXBwbGVMYWJlbCxvPWUuYXBwbGUsYT1lLmJnU3R5bGUsZT1lLmFjdGl2YXRvclNpemUsaT1IdChPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpLGw9aVswXSxjPWlbMV07cmV0dXJuIE9iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXtjKCJhcHBsZSI9PT10LmJ1dHRvblBvcHVwKX0pLEguYS5jcmVhdGVFbGVtZW50KE4se2NvbG9yOm4sbWVzc2VuZ2VyVGl0bGU6cixpY29uOkguYS5jcmVhdGVFbGVtZW50KGp0LG51bGwpLGVuYWJsZVBvcHVwOmwsYmdTdHlsZTphLHNpemU6ZX0sSC5hLmNyZWF0ZUVsZW1lbnQoV3QsbnVsbCxILmEuY3JlYXRlRWxlbWVudCgiYSIse2hyZWY6ImltZXNzYWdlOi8vIi5jb25jYXQobyl9LG8pKSl9LHlvdXR1YmU6ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3QoRi51c2VDb250ZXh0KShWKSx0PWUuc3RhdGUsZT1lLnNldHRpbmdzLG49ZS55b3V0dWJlQ29sb3Iscj1lLnlvdXR1YmVMYWJlbCxvPWUueW91dHViZSxhPWUuYmdTdHlsZSxpPWUuYWN0aXZhdG9yU2l6ZSxlPWUuYnV0dG9uU2hhZG93LG89KG89KG89bykucmVwbGFjZSgvd2F0Y2hcP3Y9LywiZW1iZWQvIikuc3BsaXQoIiYiKVswXSwobD1uZXcgVVJMU2VhcmNoUGFyYW1zKS5hcHBlbmQoImNvbnRyb2xzIiwiMCIpLGwuYXBwZW5kKCJhdXRvcGxheSIsIjEiKSxsLmFwcGVuZCgibG9vcCIsIjEiKSwiIi5jb25jYXQobywiPyIpLmNvbmNhdChsLnRvU3RyaW5nKCkpKSxsPVp0KE9iamVjdChGLnVzZVN0YXRlKSghMSksMiksYz1sWzBdLHU9bFsxXTtPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7dSgieW91dHViZSI9PT10LmJ1dHRvblBvcHVwKX0pO3ZhciBsPVp0KE9iamVjdChGLnVzZVN0YXRlKSghMCksMikscz1sWzBdLGY9bFsxXTtyZXR1cm4gT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpeyJ5b3V0dWJlIj09PXQuYnV0dG9uUG9wdXAmJmYoITApfSxbdC5idXR0b25Qb3B1cF0pLEguYS5jcmVhdGVFbGVtZW50KE4se2NvbG9yOm4sbWVzc2VuZ2VyVGl0bGU6cixjdXN0b21TZXR0aW5nczoieW91dHViZSIsaWNvbjpILmEuY3JlYXRlRWxlbWVudCgkdCx7Y3VzdG9tU2V0dGluZ3M6InlvdXR1YmUifSksZW5hYmxlUG9wdXA6YyxiZ1N0eWxlOmEsc2l6ZTppfSxILmEuY3JlYXRlRWxlbWVudChLdCx7aXNMb2FkaW5nOnN9LHMmJkguYS5jcmVhdGVFbGVtZW50KEksbnVsbCksSC5hLmNyZWF0ZUVsZW1lbnQoUXQse29uTG9hZDpmdW5jdGlvbihlKXtmKCExKX0sc3JjOm8saXNMb2FkaW5nOnMsYnV0dG9uU2hhZG93OmUsYWxsb3dGdWxsU2NyZWVuOiEwLGFsbG93OiJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7In0pKSl9LGNhbGw6ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3QoRi51c2VDb250ZXh0KShWKSx0PWUuc3RhdGUsZT1lLnNldHRpbmdzLG49ZS5jYWxsQ29sb3Iscj1lLmNhbGxMYWJlbCxvPWUuY2FsbCxhPWUuY2FsbFFyQ29kZSxpPWUuYmdTdHlsZSxlPWUuYWN0aXZhdG9yU2l6ZSxsPUp0KE9iamVjdChGLnVzZVN0YXRlKSghMSksMiksYz1sWzBdLHU9bFsxXTtPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7dSgiY2FsbCI9PT10LmJ1dHRvblBvcHVwKX0pO3ZhciBsPUp0KE9iamVjdChGLnVzZVN0YXRlKSghMCksMikscz1sWzBdLGY9bFsxXSxsPShPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7ImxpbmUiPT09dC5idXR0b25Qb3B1cCYmZighMCl9LFt0LmJ1dHRvblBvcHVwXSksInRlbDoiLmNvbmNhdChvKSksZD0iaHR0cHM6Ly9hcGkucXJzZXJ2ZXIuY29tL3YxL2NyZWF0ZS1xci1jb2RlLz9zaXplPTE1MHgxNTAmbWFyZ2luPTEwJmRhdGE9Ii5jb25jYXQobCk7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KE4se2NvbG9yOm4sbWVzc2VuZ2VyVGl0bGU6cixpY29uOkguYS5jcmVhdGVFbGVtZW50KFl0LG51bGwpLGVuYWJsZVBvcHVwOmMsYmdTdHlsZTppLHNpemU6ZX0sYT9ILmEuY3JlYXRlRWxlbWVudChybix7aXNMb2FkaW5nOnN9LHMmJkguYS5jcmVhdGVFbGVtZW50KEksbnVsbCksSC5hLmNyZWF0ZUVsZW1lbnQoImEiLHtocmVmOmx9LG8pLEguYS5jcmVhdGVFbGVtZW50KCJpbWciLHtvbkxvYWQ6ZnVuY3Rpb24oZSl7ZighMSl9LGFsdDoiY2FsbCIsc3JjOmQsaGVpZ2h0OiIxNTBweCIsd2lkdGg6IjE1MHB4In0pKTpILmEuY3JlYXRlRWxlbWVudChubixudWxsLEguYS5jcmVhdGVFbGVtZW50KCJhIix7aHJlZjpsfSxvKSkpfSxjb250YWN0Zm9ybTpmdW5jdGlvbigpe3ZhciBlLHQsbj1PYmplY3QoRi51c2VDb250ZXh0KShWKSxyPW4uc3RhdGUsbj1uLnNldHRpbmdzLG89bi5jb250YWN0Zm9ybSxhPW4uY29udGFjdGZvcm1Db2xvcixpPW4uY29udGFjdGZvcm1Qb3B1cFRpdGxlLGw9KG4uY29udGFjdGZvcm1Ib3N0LG4uY29udGFjdGZvcm1Qb3B1cExhbmcpLGM9bi5rZXksYz12b2lkIDA9PT1jP251bGw6Yyx1PW4ubWlycm9yLHM9bi5iZ1N0eWxlLGY9bi5hY3RpdmF0b3JTaXplLGQ9bi5oYXNoSWQsZD12b2lkIDA9PT1kP251bGw6ZCxuPW4uc2NyaXB0SWQsbj12b2lkIDA9PT1uP251bGw6bixwPW9uKE9iamVjdChGLnVzZVN0YXRlKSghMSksMiksbT1wWzBdLGg9cFsxXSxnPShwPW8sbz1sLGw9YyxjPXUsdT1kLGQ9bixuPWxvY2F0aW9uLmhvc3RuYW1lLGc9ImdldGJ1dHRvbi5pbyIsdD0iaHR0cHM6Ly9nZXRidXR0b24uaW8iLGI9bi5zbGljZSgwLC1nLmxlbmd0aCksbi5lbmRzV2l0aChnKSYmWyIiLCIuIl0uaW5jbHVkZXMoYi5jaGFyQXQoYi5sZW5ndGgtMSkpJiYoZT0vXi4rQC4rXC4uKyQvaS50ZXN0KHApP3A6bnVsbCksbj1uZXcgVVJMU2VhcmNoUGFyYW1zLGwmJm4uYXBwZW5kKCJ3aWRnZXRfa2V5IixsKSxlJiZuLmFwcGVuZCgidG8iLGUpLGMmJm4uYXBwZW5kKCJtaXJyb3IiLGMpLG8mJiJlbiIhPT1vJiZuLmFwcGVuZCgibGFuZyIsbyksKHV8fGQpJiZuLmFwcGVuZCgiaGFzaF9pZCIsdXx8ZCksdCsiL2NvbnRhY3QtYnV0dG9uPyIrbi50b1N0cmluZygpKTtPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7aCgiY29udGFjdGZvcm0iPT09ci5idXR0b25Qb3B1cCl9KTt2YXIgYj1vbihPYmplY3QoRi51c2VTdGF0ZSkoITApLDIpLHA9YlswXSx5PWJbMV07cmV0dXJuIE9iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXsibGluZSI9PT1yLmJ1dHRvblBvcHVwJiZ5KCEwKX0sW3IuYnV0dG9uUG9wdXBdKSxILmEuY3JlYXRlRWxlbWVudChOLHtjb2xvcjphLG1lc3NlbmdlclRpdGxlOmksaWNvbjpILmEuY3JlYXRlRWxlbWVudCh0bixudWxsKSxlbmFibGVQb3B1cDptLGJnU3R5bGU6cyxzaXplOmZ9LEguYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwscCYmSC5hLmNyZWF0ZUVsZW1lbnQoSSxudWxsKSxILmEuY3JlYXRlRWxlbWVudChmbix7b25Mb2FkOmZ1bmN0aW9uKGUpe3koITEpfSxzcmM6Zyxpc0xvYWRpbmc6cH0pKSl9LHNtczpmdW5jdGlvbigpe3ZhciBlPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLHQ9ZS5zdGF0ZSxlPWUuc2V0dGluZ3Msbj1lLnNtcyxyPWUuc21zQ29sb3Isbz1lLnNtc0xhYmVsLGE9ZS5iZ1N0eWxlLGU9ZS5hY3RpdmF0b3JTaXplLGk9TW4oT2JqZWN0KEYudXNlU3RhdGUpKCExKSwyKSxsPWlbMF0sYz1pWzFdO3JldHVybiBPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7Yygic21zIj09PXQuYnV0dG9uUG9wdXApfSksSC5hLmNyZWF0ZUVsZW1lbnQoTix7Y29sb3I6cixtZXNzZW5nZXJUaXRsZTpvLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoVG4sbnVsbCksZW5hYmxlUG9wdXA6bCxiZ1N0eWxlOmEsc2l6ZTplfSxILmEuY3JlYXRlRWxlbWVudChEbixudWxsLEguYS5jcmVhdGVFbGVtZW50KCJhIix7aHJlZjoic21zOiIuY29uY2F0KG4pfSxuKSkpfSxnb29nbGVtYXA6ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3QoRi51c2VDb250ZXh0KShWKSx0PWUuc3RhdGUsZT1lLnNldHRpbmdzLG49KGUuZ29vZ2xlbWFwQ29sb3IsZS5nb29nbGVtYXBMYWJlbCkscj1lLmdvb2dsZW1hcCxvPWUuYmdTdHlsZSxhPWUuYWN0aXZhdG9yU2l6ZSxlPWUuZ29vZ2xlbWFwQ3VzdG9tTWVzc2FnZSxyPSJodHRwczovL2dldGJ1dHRvbi5pby8/Y29udHJvbGxlcj1NYXBCdXR0b24mYWN0aW9uPWluZGV4Jmxpbms9Ii5jb25jYXQociksaT1rbihPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpLGw9aVswXSxjPWlbMV07T2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpe2MoImdvb2dsZW1hcCI9PT10LmJ1dHRvblBvcHVwKX0pO3ZhciBpPWtuKE9iamVjdChGLnVzZVN0YXRlKSghMCksMiksdT1pWzBdLHM9aVsxXTtyZXR1cm4gT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpeyJnb29nbGVtYXAiPT09dC5idXR0b25Qb3B1cCYmcyghMCl9LFt0LmJ1dHRvblBvcHVwXSksSC5hLmNyZWF0ZUVsZW1lbnQoTix7Y29sb3I6IiM5MzkzOTMiLG1lc3NlbmdlclRpdGxlOm4saWNvbjpILmEuY3JlYXRlRWxlbWVudCh2bixudWxsKSxjdXN0b21TZXR0aW5nczoiZ29vZ2xlbWFwIixlbmFibGVQb3B1cDpsLGJnU3R5bGU6byxzaXplOmF9LEguYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsdSYmSC5hLmNyZWF0ZUVsZW1lbnQoSSxudWxsKSxILmEuY3JlYXRlRWxlbWVudChPbix7b25Mb2FkOmZ1bmN0aW9uKGUpe3MoITEpfSxzcmM6cixpc0xvYWRpbmc6dSxsb2FkaW5nOiJsYXp5Iixnb29nbGVtYXBDdXN0b21NZXNzYWdlOmV9KSxlJiZILmEuY3JlYXRlRWxlbWVudCgicCIse3N0eWxlOnttYXJnaW46IjdweCAwcHgiLGxpbmVIZWlnaHQ6IjIzcHgifX0sZSkpKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZSx0LG4scj1PYmplY3QoRi51c2VDb250ZXh0KShWKSxvPXIuc3RhdGUscj1yLnNldHRpbmdzLGE9ci5jYWxsYmFjayxpPXIuY2FsbGJhY2tDb2xvcixsPXIuY2FsbGJhY2tMYWJlbCxjPShyLmNhbGxiYWNrSG9zdCxyLmNhbGxiYWNrQ3VzdG9tTWVzc2FnZSksdT1yLmNhbGxiYWNrTmFtZVBsYWNlaG9sZGVyLHM9ci5jYWxsYmFja1Bob25lUGxhY2Vob2xkZXIsZj1yLmNhbGxiYWNrU2VuZEJ1dHRvblRleHQsZD1yLmtleSxkPXZvaWQgMD09PWQ/bnVsbDpkLHA9ci5taXJyb3IsbT1yLmJnU3R5bGUsaD1yLmFjdGl2YXRvclNpemUsZz1yLmhhc2hJZCxnPXZvaWQgMD09PWc/bnVsbDpnLHI9ci5zY3JpcHRJZCxyPXZvaWQgMD09PXI/bnVsbDpyLGI9Sm4oT2JqZWN0KEYudXNlU3RhdGUpKCExKSwyKSx5PWJbMF0sdj1iWzFdLHc9KGI9YSxhPWksYz1jLHU9dSxzPXMsZj1mLGQ9ZCxwPXAsZz1nLHI9cix0PWxvY2F0aW9uLmhvc3RuYW1lLHc9ImdldGJ1dHRvbi5pbyIsbj0iaHR0cHM6Ly9nZXRidXR0b24uaW8iLGR8fCh4PXQuc2xpY2UoMCwtdy5sZW5ndGgpLHQuZW5kc1dpdGgodykmJlsiIiwiLiJdLmluY2x1ZGVzKHguY2hhckF0KHgubGVuZ3RoLTEpKSYmKGU9L14uK0AuK1wuLiskL2kudGVzdChiKT9iOm51bGwpKSx0PW5ldyBVUkxTZWFyY2hQYXJhbXMsZCYmdC5hcHBlbmQoIndpZGdldF9rZXkiLGQpLGUmJnQuYXBwZW5kKCJ0byIsZSkscCYmdC5hcHBlbmQoIm1pcnJvciIscCksYSYmdC5hcHBlbmQoImNvbG9yIixhLnNsaWNlKDEpKSxjJiZ0LmFwcGVuZCgiY3VzdG9tX21lc3NhZ2UiLGMpLHUmJnQuYXBwZW5kKCJuYW1lX3BsYWNlaG9sZGVyIix1KSxzJiZ0LmFwcGVuZCgicGhvbmVfcGxhY2Vob2xkZXIiLHMpLGYmJnQuYXBwZW5kKCJzZW5kX3RleHQiLGYpLChnfHxyKSYmdC5hcHBlbmQoImhhc2hfaWQiLGd8fHIpLG4rIi9jYWxsYmFjay1idXR0b24/Iit0LnRvU3RyaW5nKCkpO09iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXt2KCJjYWxsYmFjayI9PT1vLmJ1dHRvblBvcHVwKX0pO3ZhciB4PUpuKE9iamVjdChGLnVzZVN0YXRlKSghMCksMiksYj14WzBdLGs9eFsxXTtyZXR1cm4gT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpeyJjYWxsYmFjayI9PT1vLmJ1dHRvblBvcHVwJiZrKCEwKX0sW28uYnV0dG9uUG9wdXBdKSxILmEuY3JlYXRlRWxlbWVudChOLHtjb2xvcjppLG1lc3NlbmdlclRpdGxlOmwsaWNvbjpILmEuY3JlYXRlRWxlbWVudChLbixudWxsKSxlbmFibGVQb3B1cDp5LGJnU3R5bGU6bSxzaXplOmh9LEguYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsYiYmSC5hLmNyZWF0ZUVsZW1lbnQoSSxudWxsKSxILmEuY3JlYXRlRWxlbWVudChvcix7b25Mb2FkOmZ1bmN0aW9uKGUpe2soITEpfSxzcmM6dyxpc0xvYWRpbmc6Yn0pKSl9LGZhY2Vib29rOmZ1bmN0aW9uKCl7cmV0dXJuIHhuKCk/SC5hLmNyZWF0ZUVsZW1lbnQoeW4sbnVsbCk6SC5hLmNyZWF0ZUVsZW1lbnQoSC5hLkZyYWdtZW50LG51bGwpfSxjYWxlbmRhcjpmdW5jdGlvbigpe3ZhciBlLHQsbixyPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLG89ci5zdGF0ZSxyPXIuc2V0dGluZ3MsYT1yLmNhbGVuZGFyLGk9ci5jYWxlbmRhckNvbG9yLGw9ci5jYWxlbmRhckxhYmVsLGM9KHIuY2FsZW5kYXJIb3N0LHIuY2FsZW5kYXJDdXN0b21NZXNzYWdlKSx1PXIuY2FsZW5kYXJOYW1lUGxhY2Vob2xkZXIscz1yLmNhbGVuZGFyUGhvbmVQbGFjZWhvbGRlcixmPXIuY2FsZW5kYXJFbWFpbFBsYWNlaG9sZGVyLGQ9ci5jYWxlbmRhck1lc3NhZ2VQbGFjZWhvbGRlcixwPXIuY2FsZW5kYXJTZW5kQnV0dG9uVGV4dCxtPXIua2V5LG09dm9pZCAwPT09bT9udWxsOm0saD1yLm1pcnJvcixnPXIuYmdTdHlsZSxiPXIuYWN0aXZhdG9yU2l6ZSx5PXIuaGFzaElkLHk9dm9pZCAwPT09eT9udWxsOnkscj1yLnNjcmlwdElkLHI9dm9pZCAwPT09cj9udWxsOnIsdj1kbihPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpLHc9dlswXSx4PXZbMV0saz0odj1hLGE9aSxjPWMsdT11LHM9cyxmPWYsZD1kLHA9cCxtPW0saD1oLHk9eSxyPXIsdD1sb2NhdGlvbi5ob3N0bmFtZSxrPSJnZXRidXR0b24uaW8iLG49Imh0dHBzOi8vZ2V0YnV0dG9uLmlvIixtfHwoUz10LnNsaWNlKDAsLWsubGVuZ3RoKSx0LmVuZHNXaXRoKGspJiZbIiIsIi4iXS5pbmNsdWRlcyhTLmNoYXJBdChTLmxlbmd0aC0xKSkmJihlPS9eLitALitcLi4rJC9pLnRlc3Qodik/djpudWxsKSksdD1uZXcgVVJMU2VhcmNoUGFyYW1zLG0mJnQuYXBwZW5kKCJ3aWRnZXRfa2V5IixtKSxlJiZ0LmFwcGVuZCgidG8iLGUpLGgmJnQuYXBwZW5kKCJtaXJyb3IiLGgpLGEmJnQuYXBwZW5kKCJjb2xvciIsYS5zbGljZSgxKSksYyYmdC5hcHBlbmQoImN1c3RvbV9tZXNzYWdlIixjKSx1JiZ0LmFwcGVuZCgibmFtZV9wbGFjZWhvbGRlciIsdSkscyYmdC5hcHBlbmQoInBob25lX3BsYWNlaG9sZGVyIixzKSxmJiZ0LmFwcGVuZCgiZW1haWxfcGxhY2Vob2xkZXIiLGYpLGQmJnQuYXBwZW5kKCJtZXNzYWdlX3BsYWNlaG9sZGVyIixkKSxwJiZ0LmFwcGVuZCgic2VuZF90ZXh0IixwKSwoeXx8cikmJnQuYXBwZW5kKCJoYXNoX2lkIix5fHxyKSxuKyIvY2FsZW5kYXItYnV0dG9uPyIrdC50b1N0cmluZygpKTtPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7eCgiY2FsZW5kYXIiPT09by5idXR0b25Qb3B1cCl9KTt2YXIgUz1kbihPYmplY3QoRi51c2VTdGF0ZSkoITApLDIpLHY9U1swXSxDPVNbMV07cmV0dXJuIE9iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXsiY2FsZW5kYXIiPT09by5idXR0b25Qb3B1cCYmQyghMCl9LFtvLmJ1dHRvblBvcHVwXSksSC5hLmNyZWF0ZUVsZW1lbnQoTix7Y29sb3I6aSxtZXNzZW5nZXJUaXRsZTpsLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoc24sbnVsbCksY3VzdG9tU2V0dGluZ3M6ImNhbGVuZGFyIixlbmFibGVQb3B1cDp3LGJnU3R5bGU6ZyxzaXplOmJ9LEguYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsdiYmSC5hLmNyZWF0ZUVsZW1lbnQoSSxudWxsKSxILmEuY3JlYXRlRWxlbWVudChtbix7b25Mb2FkOmZ1bmN0aW9uKGUpe0MoITEpfSxzcmM6ayxpc0xvYWRpbmc6dn0pKSl9LGxpbmU6ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3QoRi51c2VDb250ZXh0KShWKSx0PWUuc3RhdGUsZT1lLnNldHRpbmdzLG49ZS5saW5lLHI9ZS5saW5lQ29sb3Isbz1lLmxpbmVMYWJlbCxhPWUuYmdTdHlsZSxlPWUuYWN0aXZhdG9yU2l6ZSxpPWpuKE9iamVjdChGLnVzZVN0YXRlKSghMSksMiksbD1pWzBdLGM9aVsxXTtPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7YygibGluZSI9PT10LmJ1dHRvblBvcHVwKX0pO3ZhciBpPWpuKE9iamVjdChGLnVzZVN0YXRlKSghMCksMiksdT1pWzBdLHM9aVsxXSxuPShPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7ImxpbmUiPT09dC5idXR0b25Qb3B1cCYmcyghMCl9LFt0LmJ1dHRvblBvcHVwXSksLTEhPT0obj0oaT1uKS5pbmRleE9mKCJAIikpPyhuPWkuc2xpY2UobiksImh0dHBzOi8vbGluZS5tZS90aS9wL34iLmNvbmNhdChuKSk6aSksaT0iaHR0cHM6Ly9hcGkucXJzZXJ2ZXIuY29tL3YxL2NyZWF0ZS1xci1jb2RlLz9zaXplPTI1MHgyNTAmbWFyZ2luPTEwJmRhdGE9Ii5jb25jYXQobik7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KE4se2NvbG9yOnIsbWVzc2VuZ2VyVGl0bGU6byxpY29uOkguYS5jcmVhdGVFbGVtZW50KEVuLG51bGwpLGVuYWJsZVBvcHVwOmwsYmdTdHlsZTphLHNpemU6ZX0sSC5hLmNyZWF0ZUVsZW1lbnQoTG4sbnVsbCx1JiZILmEuY3JlYXRlRWxlbWVudChJLG51bGwpLEguYS5jcmVhdGVFbGVtZW50KCJpbWciLHtvbkxvYWQ6ZnVuY3Rpb24oZSl7cyghMSl9LGFsdDoiV2VjaGF0IixzcmM6aSxoZWlnaHQ6IjI1MHB4Iix3aWR0aDoiMjUwcHgifSksSC5hLmNyZWF0ZUVsZW1lbnQoImEiLHtocmVmOiIiLmNvbmNhdChuKSx0YXJnZXQ6Il9ibGFuayJ9LG4pKSl9LHNuYXBjaGF0OmZ1bmN0aW9uKCl7dmFyIGU9T2JqZWN0KEYudXNlQ29udGV4dCkoViksdD1lLnN0YXRlLGU9ZS5zZXR0aW5ncyxuPWUuc25hcGNoYXQscj1lLnNuYXBjaGF0Q29sb3Isbz1lLnNuYXBjaGF0TGFiZWwsYT1lLmJnU3R5bGUsZT1lLmFjdGl2YXRvclNpemUsaT1VbihPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpLGw9aVswXSxjPWlbMV07T2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpe2MoInNuYXBjaGF0Ij09PXQuYnV0dG9uUG9wdXApfSk7dmFyIGk9VW4oT2JqZWN0KEYudXNlU3RhdGUpKCEwKSwyKSx1PWlbMF0scz1pWzFdLGk9KE9iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXsic25hcGNoYXQiPT09dC5idXR0b25Qb3B1cCYmcyghMCl9LFt0LmJ1dHRvblBvcHVwXSksImh0dHBzOi8vZmVlbGluc29uaWNlLWhyZC5hcHBzcG90LmNvbS93ZWIvZGVlcGxpbmsvc25hcGNvZGU/dXNlcm5hbWU9Ii5jb25jYXQobiwiJnR5cGU9UE5HIikpO3JldHVybiBILmEuY3JlYXRlRWxlbWVudChOLHtjb2xvcjpyLG1lc3NlbmdlclRpdGxlOm8saWNvbjpILmEuY3JlYXRlRWxlbWVudChObixudWxsKSxlbmFibGVQb3B1cDpsLGJnU3R5bGU6YSxzaXplOmV9LEguYS5jcmVhdGVFbGVtZW50KEduLG51bGwsdSYmSC5hLmNyZWF0ZUVsZW1lbnQoSSxudWxsKSxILmEuY3JlYXRlRWxlbWVudChxbix7b25Mb2FkOmZ1bmN0aW9uKGUpe3MoITEpfSxhbHQ6IlNuYXBjaGF0IixzcmM6aSxoZWlnaHQ6IjIwMHB4Iix3aWR0aDoiMjAwcHgifSksSC5hLmNyZWF0ZUVsZW1lbnQoV24sbnVsbCxuKSkpfSx2aWJlcjpmdW5jdGlvbigpe3ZhciBlPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLHQ9ZS5zdGF0ZSxlPWUuc2V0dGluZ3Msbj1lLnZpYmVyLHI9ZS52aWJlckNvbG9yLG89ZS52aWJlckxhYmVsLGE9ZS5iZ1N0eWxlLGU9ZS5hY3RpdmF0b3JTaXplLGk9Wm4oT2JqZWN0KEYudXNlU3RhdGUpKCExKSwyKSxsPWlbMF0sYz1pWzFdO09iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXtjKCJ2aWJlciI9PT10LmJ1dHRvblBvcHVwKX0pO3ZhciBpPVpuKE9iamVjdChGLnVzZVN0YXRlKSghMCksMiksdT1pWzBdLHM9aVsxXSxmPShPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7InZpYmVyIj09PXQuYnV0dG9uUG9wdXAmJnMoITApfSxbdC5idXR0b25Qb3B1cF0pLC9eWzAtOSAoKSstXSskLy50ZXN0KGk9bik/KGY9aS5yZXBsYWNlKC9cRCsvZywiIikucmVwbGFjZSgvXlswXSsvZywiIikse3FyOiJ2aWJlcjovL2FkZD9udW1iZXI9Ii5jb25jYXQoZiksbGluazoidmliZXI6Ly9jaGF0P251bWJlcj0iLmNvbmNhdChmKX0pOntxcjoidmliZXI6Ly9hZGQ/bnVtYmVyPSIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChpKSksbGluazoidmliZXI6Ly9wYT9jaGF0VVJJPSIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChpKSl9KSxpPWYubGluayxkPSJodHRwczovL2FwaS5xcnNlcnZlci5jb20vdjEvY3JlYXRlLXFyLWNvZGUvP3NpemU9MjUweDI1MCZtYXJnaW49MTAmZGF0YT0iLmNvbmNhdChmLnFyKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQoTix7Y29sb3I6cixtZXNzZW5nZXJUaXRsZTpvLGljb246SC5hLmNyZWF0ZUVsZW1lbnQoJG4sbnVsbCksZW5hYmxlUG9wdXA6bCxiZ1N0eWxlOmEsc2l6ZTplfSxILmEuY3JlYXRlRWxlbWVudChRbixudWxsLHUmJkguYS5jcmVhdGVFbGVtZW50KEksbnVsbCksSC5hLmNyZWF0ZUVsZW1lbnQoImltZyIse29uTG9hZDpmdW5jdGlvbihlKXtzKCExKX0sYWx0OiJWaWJlciIsc3JjOmQsaGVpZ2h0OiIyNTBweCIsd2lkdGg6IjI1MHB4In0pLEguYS5jcmVhdGVFbGVtZW50KFluLG51bGwsSC5hLmNyZWF0ZUVsZW1lbnQoImEiLHtocmVmOmksdGFyZ2V0OiJfYmxhbmsifSxuLEguYS5jcmVhdGVFbGVtZW50KCJiciIsbnVsbCksSC5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLG51bGwsIihPcGVuIGluIFZpYmVyIGZvciBEZXNrdG9wKSIpKSkpKX0sd2hhdHNhcHA6ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3QoRi51c2VDb250ZXh0KShWKSx0PWUuc3RhdGUsZT1lLnNldHRpbmdzLG49ZS53aGF0c2FwcEFnZW50SW1hZ2UxLHI9ZS53aGF0c2FwcEFnZW50SW1hZ2UyLG89ZS53aGF0c2FwcEFnZW50SW1hZ2UzLGE9ZS53aGF0c2FwcEFnZW50SW1hZ2U0LGk9ZS53aGF0c2FwcEFnZW50SW1hZ2U1LGw9ZS53aGF0c2FwcEFnZW50TmFtZTEsYz1lLndoYXRzYXBwQWdlbnROYW1lMix1PWUud2hhdHNhcHBBZ2VudE5hbWUzLHM9ZS53aGF0c2FwcEFnZW50TmFtZTQsZj1lLndoYXRzYXBwQWdlbnROYW1lNSxkPWUud2hhdHNhcHBBZ2VudFBvc2l0aW9uMSxwPWUud2hhdHNhcHBBZ2VudFBvc2l0aW9uMixtPWUud2hhdHNhcHBBZ2VudFBvc2l0aW9uMyxoPWUud2hhdHNhcHBBZ2VudFBvc2l0aW9uNCxnPWUud2hhdHNhcHBBZ2VudFBvc2l0aW9uNSxiPWUud2hhdHNhcHAseT1lLndoYXRzYXBwQWdlbnROdW1iZXIyLHY9ZS53aGF0c2FwcEFnZW50TnVtYmVyMyx3PWUud2hhdHNhcHBBZ2VudE51bWJlcjQseD1lLndoYXRzYXBwQWdlbnROdW1iZXI1LGs9ZS5wcmVGaWxsZWRNZXNzYWdlLFM9ZS53aGF0c2FwcFByZUZpbGxlZE1lc3NhZ2UyLEM9ZS53aGF0c2FwcFByZUZpbGxlZE1lc3NhZ2UzLEU9ZS53aGF0c2FwcFByZUZpbGxlZE1lc3NhZ2U0LE89ZS53aGF0c2FwcFByZUZpbGxlZE1lc3NhZ2U1LGo9ZS5idXR0b25Cb3JkZXJSYWRpdXMsQT1lLndoYXRzYXBwQ29sb3IsUD1lLmJnU3R5bGUsST1lLmFjdGl2YXRvclNpemUsXz1lLm1pcnJvcix6PWUuYm9yZGVyLGU9ZS53aGF0c2FwcExhYmVsLFQ9dXIoT2JqZWN0KEYudXNlU3RhdGUpKCExKSwyKSxMPVRbMF0sTT1UWzFdLFI9KE9iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXtNKCJ3aGF0c2FwcCI9PT10LmJ1dHRvblBvcHVwKX0pLCQoaikpLFQ9T2JqZWN0KEYudXNlTWVtbykoZnVuY3Rpb24oKXtyZXR1cm5be3Bob3RvOm4sbmFtZTpsLHBvc2l0aW9uOmQsbnVtYmVyOmIsbWVzc2FnZTprfSx7cGhvdG86cixuYW1lOmMscG9zaXRpb246cCxudW1iZXI6eSxtZXNzYWdlOlN9LHtwaG90bzpvLG5hbWU6dSxwb3NpdGlvbjptLG51bWJlcjp2LG1lc3NhZ2U6Q30se3Bob3RvOmEsbmFtZTpzLHBvc2l0aW9uOmgsbnVtYmVyOncsbWVzc2FnZTpFfSx7cGhvdG86aSxuYW1lOmYscG9zaXRpb246ZyxudW1iZXI6eCxtZXNzYWdlOk99XX0sW24scixvLGEsaSxsLGMsdSxzLGYsZCxwLG0saCxnLGIseSx2LHcseCxrLFMsQyxFLE9dKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQoTix7Y29sb3I6QSxtZXNzZW5nZXJUaXRsZTplLGljb246SC5hLmNyZWF0ZUVsZW1lbnQobHIse2lzSXRlbUljb246IndhX2hlYWRlcl9pY29uIn0pLGVuYWJsZVBvcHVwOkwsY3VzdG9tU2V0dGluZ3M6IndoYXRzYXBwIixiZ1N0eWxlOlAsc2l6ZTpJfSxILmEuY3JlYXRlRWxlbWVudChkcixudWxsLFQubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPWUucGhvdG8sYT1lLm5hbWUsaT1lLnBvc2l0aW9uLGw9ZS5udW1iZXIsZT1lLm1lc3NhZ2UsYz0oZT1lLChuPWwpJiZuLnN0YXJ0c1dpdGgoImh0dHBzOi8vY2hhdC53aGF0c2FwcC5jb20vIik/cj1uOihjPW4/bi5tYXRjaCgvXGQrL2cpLmpvaW4oIiIpOm51bGwscj0iaHR0cHM6Ly93YS5tZS8iLmNvbmNhdChjKSxudWxsIT09biYmZSYmKHI9IiIuY29uY2F0KHIsIj90ZXh0PSIpLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQoZSkpKSkscik7cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KCJsaSIse2tleTp0LHN0eWxlOntkaXNwbGF5OiFsJiYibm9uZSJ9fSxILmEuY3JlYXRlRWxlbWVudChwcix7aHJlZjpjLHRhcmdldDoiX2JsYW5rIixyZWw6Im5vcmVmZXJyZXIiLGNvbG9yOkF9LEguYS5jcmVhdGVFbGVtZW50KGdyLG51bGwsSC5hLmNyZWF0ZUVsZW1lbnQoaHIse2luZGljYXRvclBvc2l0aW9uOlIsbWlycm9yOl99LEguYS5jcmVhdGVFbGVtZW50KG1yLHtzcmM6b3x8bnVsbCxidXR0b25Cb3JkZXJSYWRpdXM6aixib3JkZXI6en0pKSxILmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLEguYS5jcmVhdGVFbGVtZW50KGJyLHttaXJyb3I6X30sYSksSC5hLmNyZWF0ZUVsZW1lbnQoeXIse21pcnJvcjpffSxpKSkpLEguYS5jcmVhdGVFbGVtZW50KGxyLHtpc0l0ZW1JY29uOiEwLGNvbG9yOkF9KSkpfSkpKX0sd2VjaGF0OmZ1bmN0aW9uKCl7dmFyIGU9T2JqZWN0KEYudXNlQ29udGV4dCkoViksdD1lLnN0YXRlLGU9ZS5zZXR0aW5ncyxuPWUud2VjaGF0LHI9ZS53ZWNoYXRDb2xvcixvPWUud2VjaGF0TGFiZWwsYT1lLmJnU3R5bGUsZT1lLmFjdGl2YXRvclNpemUsaT1hcihPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpLGw9aVswXSxjPWlbMV07T2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpe2MoIndlY2hhdCI9PT10LmJ1dHRvblBvcHVwKX0pO3ZhciBpPWFyKE9iamVjdChGLnVzZVN0YXRlKSghMCksMiksdT1pWzBdLHM9aVsxXSxpPShPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7IndlY2hhdCI9PT10LmJ1dHRvblBvcHVwJiZzKCEwKX0sW3QuYnV0dG9uUG9wdXBdKSwiaHR0cDovL3dlaXhpbi5xcS5jb20vci8iLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQobikpKSxpPSJodHRwczovL2FwaS5xcnNlcnZlci5jb20vdjEvY3JlYXRlLXFyLWNvZGUvP3NpemU9MjUweDI1MCZtYXJnaW49MTAmZGF0YT0iLmNvbmNhdChpKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQoTix7Y29sb3I6cixtZXNzZW5nZXJUaXRsZTpvLGljb246SC5hLmNyZWF0ZUVsZW1lbnQocnIsbnVsbCksZW5hYmxlUG9wdXA6bCxiZ1N0eWxlOmEsc2l6ZTplfSxILmEuY3JlYXRlRWxlbWVudChjcixudWxsLHUmJkguYS5jcmVhdGVFbGVtZW50KEksbnVsbCksSC5hLmNyZWF0ZUVsZW1lbnQoImltZyIse29uTG9hZDpmdW5jdGlvbihlKXtzKCExKX0sYWx0OiJXZWNoYXQiLHNyYzppLGhlaWdodDoiMjUwcHgiLHdpZHRoOiIyNTBweCJ9KSxILmEuY3JlYXRlRWxlbWVudCgiYSIse2hyZWY6Imh0dHA6Ly93ZWl4aW4ucXEuY29tL3IvIi5jb25jYXQobiksdGFyZ2V0OiJfYmxhbmsifSwiaHR0cDovL3dlaXhpbi5xcS5jb20vci8iLmNvbmNhdChuKSkpKX0sd29uZGVyY2hhdDpmdW5jdGlvbigpe3ZhciBlPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLHQ9ZS5zdGF0ZSxlPWUuc2V0dGluZ3Msbj1lLndvbmRlcmNoYXQscj1lLndvbmRlcmNoYXRDb2xvcixvPWUud29uZGVyY2hhdExhYmVsLGE9ZS5iZ1N0eWxlLGk9ZS5hY3RpdmF0b3JTaXplLGU9ZS5rZXksbD12cihPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpLGM9bFswXSx1PWxbMV0sbj0obD1uLG49ZSxlPW5ldyBVUkxTZWFyY2hQYXJhbXMsbiYmZS5hcHBlbmQoImdldGJ1dHRvbl9mYWxsYmFjayIsbiksRCgpJiZlLmFwcGVuZCgiaGVhZGVySGlkZGVuIiwhMCksImh0dHBzOi8vYXBwLndvbmRlcmNoYXQuaW8vY2hhdGJvdCIrIi8iLmNvbmNhdChsLCI/IikrZS50b1N0cmluZygpKTtPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7dSgid29uZGVyY2hhdCI9PT10LmJ1dHRvblBvcHVwKX0pO3ZhciBsPXZyKE9iamVjdChGLnVzZVN0YXRlKSghMCksMiksZT1sWzBdLHM9bFsxXTtyZXR1cm4gT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpeyJ3b25kZXJjaGF0Ij09PXQuYnV0dG9uUG9wdXAmJnMoITApfSxbdC5idXR0b25Qb3B1cF0pLEguYS5jcmVhdGVFbGVtZW50KE4se2NvbG9yOnIsbWVzc2VuZ2VyVGl0bGU6byxpY29uOkguYS5jcmVhdGVFbGVtZW50KGZyLG51bGwpLGVuYWJsZVBvcHVwOmMsYmdTdHlsZTphLHNpemU6aSxjdXN0b21TZXR0aW5nczoid29uZGVyY2hhdCJ9LEguYS5jcmVhdGVFbGVtZW50KEguYS5GcmFnbWVudCxudWxsLGUmJkguYS5jcmVhdGVFbGVtZW50KEksbnVsbCksSC5hLmNyZWF0ZUVsZW1lbnQoa3Ise29uTG9hZDpmdW5jdGlvbihlKXtzKCExKX0sc3JjOm4saXNMb2FkaW5nOmV9KSkpfSxhaTpmdW5jdGlvbigpe3ZhciB0LHIsZSxuPV9yKE9iamVjdChGLnVzZVN0YXRlKSghMSksMiksbz1uWzBdLGE9blsxXSxuPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLGk9bi5zdGF0ZSxsPW4uYWN0aW9ucyxuPW4uc2V0dGluZ3MsYz1uLmFpLHU9bi5haUNvbG9yLHM9bi5haUljb24sZj0obi5haVBvcHVwVGl0bGUsbi5iZ1N0eWxlLG4uYWlQb3B1cExhbmcsbi5rZXksbi5taXJyb3IpLGQ9bi5haUF1dG9vcGVuLHA9bi5wb3NpdGlvbixtPW4uYWN0aXZhdG9yU2l6ZSxoPW4uc2hpZnRWZXJ0aWNhbCxnPW4uc2hpZnRIb3Jpem9udGFsLG49KE9iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXthKCJhaSI9PT1pLmJ1dHRvblBvcHVwKX0pLE9iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXtzJiYoKG5ldyBJbWFnZSkuc3JjPXMpfSxbXSksbj17Y2xvc2VQb3B1cDpsLmNsb3NlQnV0dG9uUG9wdXB9LHQ9bi5jbG9zZVBvcHVwLG49U3IoT2JqZWN0KEYudXNlU3RhdGUpKCExKSwyKSxsPW5bMF0scj1uWzFdLE9iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXt2YXIgZSx0PSJnYi1haS1zY3JpcHQiLG49ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtaWQ9Ii5jb25jYXQodCwiXSIpKTtuPyJsb2FkZWQiPT09bi5nZXRBdHRyaWJ1dGUoImRhdGEtc3RhdHVzIik/cighMCk6KG4ub25sb2FkPWZ1bmN0aW9uKCl7cighMCksbi5zZXRBdHRyaWJ1dGUoImRhdGEtc3RhdHVzIiwibG9hZGVkIil9LG4ub25lcnJvcj1mdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKCJFcnJvciBsb2FkaW5nIEFJIHNjcmlwdCIsZSl9KToobj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSwwPD0oZT1PcigpKS5pbmRleE9mKCJsb2NhbGhvc3QiKSYmKG4udHlwZT0ibW9kdWxlIiksbi5zcmM9ZSxuLmRlZmVyPSEwLG4uc2V0QXR0cmlidXRlKCJkYXRhLWlkIix0KSxuLnNldEF0dHJpYnV0ZSgiZGF0YS1zdGF0dXMiLCJsb2FkaW5nIiksbi5vbmxvYWQ9ZnVuY3Rpb24oKXtyKCEwKSxuLnNldEF0dHJpYnV0ZSgiZGF0YS1zdGF0dXMiLCJsb2FkZWQiKX0sbi5vbmVycm9yPWZ1bmN0aW9uKGUpe2NvbnNvbGUuZXJyb3IoIkVycm9yIGxvYWRpbmcgQUkgc2NyaXB0IixlKX0sZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuKSl9LFtyXSksZT1PYmplY3QoRi51c2VDYWxsYmFjaykoZnVuY3Rpb24oZSl7ZT1lLmRldGFpbDtjb25zb2xlLmxvZygiR0IgcmVjZWl2ZWQgZXZlbnQ6IixlKSxlP2UuaWQhPT1Fcj9jb25zb2xlLmxvZygiR0Igc2tpcCBldmVudCwgaWQ6IixlLmlkKTp2b2lkIDAhPT1lLmlzX3Nob3dfcG9wdXAmJnQoZS5pc19zaG93X3BvcHVwKTpjb25zb2xlLmVycm9yKCJldmVudE1hbmFnZXI6IGV2ZW50LmRldGFpbCBub3QgZm91bmQhIil9LFt0XSksT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiR2V0YnV0dG9uVXBkYXRlU3RhdGUiLGUpLGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJHZXRidXR0b25VcGRhdGVTdGF0ZSIsZSl9fSxbZSx0XSkse2lzU2NyaXB0TG9hZGVkOmwsaW5pdFBvcHVwOmpyLGFwcGx5U2V0dGluZ3NQb3B1cDpJcixvcGVuUG9wdXA6QXIsY2xvc2VQb3B1cDpmdW5jdGlvbigpe3QoKSxQcigpfX0pLGI9bi5pc1NjcmlwdExvYWRlZCx5PW4ub3BlblBvcHVwLHY9bi5jbG9zZVBvcHVwLHc9bi5hcHBseVNldHRpbmdzUG9wdXAseD1uLmluaXRQb3B1cDtPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7YiYmdyh7Y29sb3JfaGVhZGVyOnV9KX0sW3VdKTt2YXIgbD1fcihPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpLGs9bFswXSxTPWxbMV07T2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpe3ZhciBlO28/az95KCk6a3x8KGI/KGU9e2JvdF9pZDpjLGJvdF9sb2dvOnN8fG51bGwsY29sb3JfaGVhZGVyOnUsaXNfc2hvd19wb3B1cDpkfHxvLGlzX3Nob3dfYWN0aXZhdG9yOiExLGFjdGl2YXRvcl9zaXplOm0sYWN0aXZhdG9yX29mZnNldF94OmcsYWN0aXZhdG9yX29mZnNldF95OmgsYWN0aXZhdG9yX3Bvc2l0aW9uOnAsaXNfbWlycm9yOmZ9LGNvbnNvbGUubG9nKCJhaSBzY3JpcHQgbG9hZGluZy4uLiIsd2luZG93LkdCQUksZSkseChlKSxTKCEwKSk6Y29uc29sZS5lcnJvcigiUG9wdXAgQUkgbm90IGluaXRpYWxpemVkIikpOihifHxkKSYmdigpfSxbb10pfX0sTnI9ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncy5vcmRlcjtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8oZT1lWzBdLEguYS5jcmVhdGVFbGVtZW50KEguYS5GcmFnbWVudCxudWxsLGhbZV0/SC5hLmNyZWF0ZUVsZW1lbnQoaFtlXSx7a2V5OjF9KTpudWxsKSk6bnVsbH07ZnVuY3Rpb24gRHIoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1uKXt2YXIgcixvLGEsaSxsPVtdLGM9ITAsdT0hMTt0cnl7aWYoYT0obj1uLmNhbGwoZSkpLm5leHQsMD09PXQpe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0ocj1hLmNhbGwobikpLmRvbmUpJiYobC5wdXNoKHIudmFsdWUpLGwubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe3U9ITAsbz1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT1uLnJldHVybiYmKGk9bi5yZXR1cm4oKSxPYmplY3QoaSkhPT1pKSlyZXR1cm59ZmluYWxseXtpZih1KXRocm93IG99fXJldHVybiBsfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9VcihlLHQpOiJNYXAiPT09KG49Ik9iamVjdCI9PT0obj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSkpJiZlLmNvbnN0cnVjdG9yP2UuY29uc3RydWN0b3IubmFtZTpuKXx8IlNldCI9PT1uP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9VcihlLHQpOnZvaWQgMH0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFVyKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gQnIoKXtmdW5jdGlvbiBlKCl7SSghMCksc2V0VGltZW91dChmdW5jdGlvbigpe0koITEpfSw1MDApfXZhciB0PU9iamVjdChGLnVzZUNvbnRleHQpKFYpLG49KGo9dC5zdGF0ZSkuYnV0dG9ucyxyPWouYnV0dG9uUG9wdXAsbz0oaj10LmFjdGlvbnMpLnRvZ2dsZUJ1dHRvbnMsYT1qLnNob3dCdXR0b25zLGk9ai5jbG9zZUJ1dHRvblBvcHVwLGw9KGo9dC5zZXR0aW5ncykuZGlyZWN0aW9uLGM9ai5hY3RpdmF0b3JTaXplLHQ9ai5hY3RpdmF0b3JJY29uLHU9ai5idXR0b25TdHlsZSxzPWouYnV0dG9uQW5pbWF0aW9uLGY9ai5idXR0b25Db2xvcixkPWouYnV0dG9uQm9yZGVyUmFkaXVzLHA9ai5idXR0b25JbWFnZVVybCxtPWouYm9yZGVyLGg9ai5idXR0b25TaGFkb3csZz1qLmJ1dHRvbk9wYWNpdHksYj1qLmJnU3R5bGUseT1qLm5vdGlmaWNhdGlvbkluZGljYXRvcix2PWoubWlycm9yLHc9ai5idXR0b25UZXh0LHg9ai5idXR0b25UZXh0Q2xvc2Usaz1qLmFuaW1hdGlvbixTPWouaXNTaW5nbGUsQz1qLm9yZGVyLEU9ai5wb3NpdGlvbixPPSQoai5idXR0b25Cb3JkZXJSYWRpdXMpLGo9cGUoai5idXR0b25Db2xvciw1KSxBPURyKE9iamVjdChGLnVzZVN0YXRlKSghMSksMiksUD1BWzBdLEk9QVsxXTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQoU3QsbnVsbCxVKCkmJiJyb3ciIT09bCYmSC5hLmNyZWF0ZUVsZW1lbnQocHQsbnVsbCksSC5hLmNyZWF0ZUVsZW1lbnQoeHQse29wZW5lZDpuLHBvcHVwT3BlbmVkOnIsYnV0dG9uQW5pbWF0aW9uOnMsY29sb3I6ZixidXR0b25Cb3JkZXJSYWRpdXM6ZCxzaXplOmMsYW5pbWF0aW9uOmssYnV0dG9uU3R5bGU6dX0sSC5hLmNyZWF0ZUVsZW1lbnQod3Qse29uTW91c2VVcDpmdW5jdGlvbigpe1B8fCgocj9pOm8pKCksZSgpLFcoImFyb3VuZCI9PT1sP24/Yzo5OTk5OTk5OTk6ImNsYXNzaWMiPT09dT9jOjMqYykpfSxvbk1vdXNlRW50ZXI6ZnVuY3Rpb24oKXtQfHwhVSgpfHwhMSE9PW58fHJ8fChhKCksZSgpLCJhcm91bmQiPT09bCYmVyg5OTk5OTk5OTkpKX0sZ3JhZGllbnQ6aixpbmRpY2F0b3JQb3NpdGlvbjpPLG9wZW5lZDpuLHBvcHVwT3BlbmVkOnIsImRhdGEtY29tcG9uZW50LW5hbWUiOiJCYXNlQnV0dG9uQWN0aXZhdG9yIiwiYXJpYS1sYWJlbCI6Ik9wZW4gbWVzc2VuZ2VycyBsaXN0Iixjb2xvcjpmLHNpemU6YyxidXR0b25JbWFnZTpwLGJvcmRlcjptLGJ1dHRvbkJvcmRlclJhZGl1czpkLGJ1dHRvblNoYWRvdzpoLGJ1dHRvbk9wYWNpdHk6ZyxiZ1N0eWxlOmIsYnV0dG9uQW5pbWF0aW9uOnMsbm90aWZpY2F0aW9uSW5kaWNhdG9yOnksYnV0dG9uU3R5bGU6dSxtaXJyb3I6dixhbmltYXRpb246ayxpc1NpbmdsZTpTLGRpcmVjdGlvbjpsLHBvc2l0aW9uOkUsb3JkZXI6Q30sSC5hLmNyZWF0ZUVsZW1lbnQoVnIse29wZW5lZDpuLGJ1dHRvblN0eWxlOnUsYnV0dG9uSW1hZ2VVcmw6cH0sIW4mJkguYS5jcmVhdGVFbGVtZW50KExyLHtidXR0b25JbWFnZToiY2xhc3NpYyIhPT11JiZwLGFjdGl2YXRvckljb246IXAmJnR9KSxuJiZILmEuY3JlYXRlRWxlbWVudChNcix7c3R5bGU6IndpZHRoOiA0MXB4In0pKSwiY2xhc3NpYyIhPT11JiYhbiYmSC5hLmNyZWF0ZUVsZW1lbnQoRyx7Y29sb3I6ZixtaXJyb3I6dixzaXplOmN9LHcpLCJjbGFzc2ljIiE9PXUmJm4mJkguYS5jcmVhdGVFbGVtZW50KEcse2NvbG9yOmYsbWlycm9yOnYsc2l6ZTpjfSx4KSkpKX12YXIgRnI9T2JqZWN0KEMuZSkoWyIwJXt0cmFuc2Zvcm06cm90YXRlKC0yNzBkZWcpO310b3t0cmFuc2Zvcm06cm90YXRlKDApO30iXSksSHI9T2JqZWN0KEMuZSkoWyIwJXt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyk7fXRve3RyYW5zZm9ybTpyb3RhdGUoMCk7fSJdKSxWcj1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy12MnAzaDItMCJ9KShbIiIsIiJdLGZ1bmN0aW9uKGUpe3ZhciB0PWUub3BlbmVkLG49ZS5idXR0b25TdHlsZSxlPWUuYnV0dG9uSW1hZ2VVcmw7cmV0dXJuIE9iamVjdChDLmMpKFsiYW5pbWF0aW9uLWR1cmF0aW9uOjAuNHM7YW5pbWF0aW9uLWRlbGF5Oi4wNXM7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTttYXJnaW4tdG9wOi0xcHg7IiwiOyIsIjsiLCIgIiwiIl0sdCYmT2JqZWN0KEMuYykoWyJhbmltYXRpb24tbmFtZToiLCI7Il0sRnIpLCF0JiZPYmplY3QoQy5jKShbImFuaW1hdGlvbi1uYW1lOiIsIjsiXSxIciksImNsYXNzaWMiIT09biYmT2JqZWN0KEMuYykoWyJkaXNwbGF5OmdyaWQ7cGxhY2UtY29udGVudDpjZW50ZXI7Il0pLGUmJiJjbGFzc2ljIj09PW4mJk9iamVjdChDLmMpKFsiZGlzcGxheTpub25lOyJdKSl9KTtmdW5jdGlvbiAkcihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8sYSxpLGw9W10sYz0hMCx1PSExO3RyeXtpZihhPShuPW4uY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPWEuY2FsbChuKSkuZG9uZSkmJihsLnB1c2goci52YWx1ZSksbC5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxvPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPW4ucmV0dXJuJiYoaT1uLnJldHVybigpLE9iamVjdChpKSE9PWkpKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgb319cmV0dXJuIGx9fShlLHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuO2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP1dyKGUsdCk6Ik1hcCI9PT0obj0iT2JqZWN0Ij09PShuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOm4pfHwiU2V0Ij09PW4/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1dyKGUsdCk6dm9pZCAwfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gV3IoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBHcigpe3JldHVybiBPYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncy5pc1NpbmdsZT9ILmEuY3JlYXRlRWxlbWVudChOcixudWxsKTpILmEuY3JlYXRlRWxlbWVudChacixudWxsKX1mdW5jdGlvbiBxcigpe3ZhciBlPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzLm9yZGVyO3JldHVybiBBcnJheS5pc0FycmF5KGUpP0guYS5jcmVhdGVFbGVtZW50KEguYS5GcmFnbWVudCxudWxsLGUubWFwKGZ1bmN0aW9uKGUsdCl7aWYoUnIuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFJyW2VdP0guYS5jcmVhdGVFbGVtZW50KFJyW2VdLHtrZXk6dH0pOm51bGx9KSk6bnVsbH12YXIgWnI9ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3QoRi51c2VDb250ZXh0KShWKSx0PWUuc3RhdGUsZT1lLnNldHRpbmdzLG89ZS5vcmRlcixhPWUuYWN0aXZhdG9yU2l6ZSxpPWUuc2hpZnRWZXJ0aWNhbCxuPWUuc2hpZnRIb3Jpem9udGFsLGU9ZS5kaXJlY3Rpb247aWYoIUFycmF5LmlzQXJyYXkobykpcmV0dXJuIG51bGw7dmFyIGw9dmUoKS5oZWlnaHQscj0kcihPYmplY3QoRi51c2VTdGF0ZSkoMCksMiksYz1yWzBdLHU9clsxXTtPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7dmFyIGU9YSt2dCx0PW8ubGVuZ3RoLG49TWF0aC5mbG9vcigobC1pKS9lKS0xLG49TWF0aC5jZWlsKG4qZSkscj1NYXRoLmNlaWwoZSp0L24pO3UodC1uL2UqKHItMSk8MiYmMjxuL2U/bi0rZTpuKX0sW2xdKTt2YXIgcj0kcihPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpLHM9clswXSxmPXJbMV0scj0kcihPYmplY3QoRi51c2VTdGF0ZSkoITEpLDIpLGQ9clswXSxwPXJbMV0scj0oT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpe3QuYnV0dG9ucz8oZighMCkscCghMCkpOmYoITEpfSxbdC5idXR0b25zXSksImFyb3VuZCI9PT1lP28uc2xpY2UoMCw0KTpvKTtyZXR1cm4gSC5hLmNyZWF0ZUVsZW1lbnQoSC5hLkZyYWdtZW50LG51bGwsZCYmSC5hLmNyZWF0ZUVsZW1lbnQoWHIse2lzU2hvdzpzLG9uQW5pbWF0aW9uRW5kOmZ1bmN0aW9uKCl7cChzKX0saGVpZ2h0OmMsZGlyZWN0aW9uOmUsb3JkZXI6byxzaGlmdFZlcnRpY2FsOmksc2hpZnRIb3Jpem9udGFsOm4sYWN0aXZhdG9yU2l6ZTphfSxyLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBoW2VdP0guYS5jcmVhdGVFbGVtZW50KGhbZV0se2tleTp0fSk6bnVsbH0pKSxILmEuY3JlYXRlRWxlbWVudChCcixudWxsKSl9LFhyPU9iamVjdChDLmQpKGUpLndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy0xd3hkZDJzLTAifSkoWyIiLCIiXSxmdW5jdGlvbihlKXt2YXIgdD1lLmRpcmVjdGlvbixuPWUudGhlbWUscj1lLm9yZGVyLG89ZS5zaGlmdFZlcnRpY2FsLGE9ZS5zaGlmdEhvcml6b250YWwsaT1lLmFjdGl2YXRvclNpemUsZT1lLmhlaWdodDtyZXR1cm4gT2JqZWN0KEMuYykoWyIiLCIgIiwiICIsIiJdLCJhcm91bmQiPT09dD9PYmplY3QoQy5jKShbImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0cmFuc2Zvcm06cm90YXRlKCIsImRlZyk7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOiIsInB4OyIsIjoiLCJweDsiXSwicmlnaHQiPT09bi5wb3NpdGlvbj8xNSpyLnNsaWNlKDAsNCkubGVuZ3RoOjE1KnIuc2xpY2UoMCw0KS5sZW5ndGgrOTAsbyooNzA8PWk/My4yOjIuNSksbi5wb3NpdGlvbiwyLjUqYSk6T2JqZWN0KEMuYykoWyJkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXgtd3JhcDoiLCI7bWFyZ2luLSIsIjphdXRvO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0OyJdLCJsZWZ0Ij09PW4ucG9zaXRpb24/IndyYXAiOiJ3cmFwLXJldmVyc2UiLCJsZWZ0Ij09PW4ucG9zaXRpb24/InJpZ2h0IjoibGVmdCIpLCJyb3ciPT09dCYmT2JqZWN0KEMuYykoWyJmbGV4LWRpcmVjdGlvbjoiLCI7ZmxleC13cmFwOiIsIjsiXSwicmlnaHQiPT09bi5wb3NpdGlvbiYmInJvdy1yZXZlcnNlIiwibGVmdCI9PT1uLnBvc2l0aW9uJiYid3JhcC1yZXZlcnNlIiksImNvbHVtbiI9PT10JiZPYmplY3QoQy5jKShbImZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlO2hlaWdodDoiLCI7Il0sZSsicHgiKSl9KTtmdW5jdGlvbiBZcihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8sYSxpLGw9W10sYz0hMCx1PSExO3RyeXtpZihhPShuPW4uY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPWEuY2FsbChuKSkuZG9uZSkmJihsLnB1c2goci52YWx1ZSksbC5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxvPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPW4ucmV0dXJuJiYoaT1uLnJldHVybigpLE9iamVjdChpKSE9PWkpKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgb319cmV0dXJuIGx9fShlLHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuO2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP1FyKGUsdCk6Ik1hcCI9PT0obj0iT2JqZWN0Ij09PShuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOm4pfHwiU2V0Ij09PW4/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1FyKGUsdCk6dm9pZCAwfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gUXIoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBLcigpe3ZhciBlPSh0PU9iamVjdChGLnVzZUNvbnRleHQpKFYpLnNldHRpbmdzKS5icmFuZGluZyx0PXQuYWN0aXZhdG9yU2l6ZTtyZXR1cm4gZSYmSC5hLmNyZWF0ZUVsZW1lbnQobm8se3NpemU6dCx0eXBlOiJsaW5rIixocmVmOnJvLHRhcmdldDoiX2JsYW5rIiwiYXJpYS1sYWJlbCI6IkdvIHRvIEdldEJ1dHRvbi5pbyB3ZWJzaXRlIn0sSC5hLmNyZWF0ZUVsZW1lbnQodG8sbnVsbCkpfXZhciBKcj1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy0xYXU4cnlsLTAifSkoWyJwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDo2NHB4O21hcmdpbjphdXRvOyJdKSxlbz1DLmQuc3Bhbi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtMWF1OHJ5bC0xIn0pKFsicG9zaXRpb246YWJzb2x1dGU7bGVmdDoycHg7cmlnaHQ6MDtib3R0b206LTFweDtoZWlnaHQ6MXB4O2JhY2tncm91bmQ6I2JlYmViZTsiXSksdG89ZnVuY3Rpb24oKXt2YXIgZT1ZcihILmEudXNlU3RhdGUoITEpLDIpLHQ9ZVswXSxuPWVbMV07cmV0dXJuIEguYS5jcmVhdGVFbGVtZW50KEpyLHtvbk1vdXNlRW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbighMCl9LG9uTW91c2VMZWF2ZTpmdW5jdGlvbigpe3JldHVybiBuKCExKX19LEguYS5jcmVhdGVFbGVtZW50KCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCA1OC4xNiAxMC4xNSJ9LEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTIuNDksNi40MiwxLjY1LDkuNzVjLS4wOS4yNy4xOC41NC40LjIxTDMuNjgsNy44OUE1LjQ5LDUuNDksMCwwLDAsNC43Niw4QzcuNCw4LDkuNTMsNi4yMSw5LjUzLDRTNy40LDAsNC43NiwwLDAsMS43OSwwLDRBMy40NywzLjQ3LDAsMCwwLC4yNCw1LjI1YS40NS40NSwwLDAsMCwuNDkuMTgsNy4wNyw3LjA3LDAsMCwwLC43LS4yNnMuMjQtLjEuMTktLjQ4aDBBMiwyLDAsMCwxLDEuNDksNEMxLjQ5LDIuNjIsMywxLjUsNC43NiwxLjVTOCwyLjYyLDgsNCw2LjU3LDYuNSw0Ljc2LDYuNWE0LjA2LDQuMDYsMCwwLDEtMS42OC0uMzZBLjQ5LjQ5LDAsMCwwLDIuNDksNi40MloiLGZpbGw6IiNhZmFmYWYifSksSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTEuMTIsMTAuMTVIMTFsLTEuNDktLjlhNS40NSw1LjQ1LDAsMCwxLTIuNC42LDQuMTYsNC4xNiwwLDAsMS0yLjI3LS42Mkw1LDkuMTdjMi4yMiwwLDUuNDMtMS42Niw1LjYxLTQuMzdoMGEzLDMsMCwwLDEsLjU3LDEuODYsMi4zMywyLjMzLDAsMCwxLS42NSwxLjY0bC41MiwxLjI5cy4yMi40NC4xNi41MS0uMDYuMDUtLjExLjA1WiIsZmlsbDoiI2FmYWZhZiJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik00OS44NCwzLjIxaDBhMi4zMywyLjMzLDAsMCwxLDIuMzIsMi4zNHYxLjNhMi4zMywyLjMzLDAsMCwxLTIuMzIsMi4zM2gwYTIuMzQsMi4zNCwwLDAsMS0yLjMzLTIuMzNWNS41NUEyLjM0LDIuMzQsMCwwLDEsNDkuODQsMy4yMVptMCwxLjE2aDBhMSwxLDAsMCwxLDEsMVY3YTEsMSwwLDAsMS0xLDFoMGExLDEsMCwwLDEtMS0xVjUuMzlBMSwxLDAsMCwxLDQ5Ljg0LDQuMzdaIixmaWxsOiIjYWZhZmFmIixmaWxsUnVsZToiZXZlbm9kZCJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik01NS44MywzLjIxaDBhMi4zNCwyLjM0LDAsMCwxLDIuMzMsMi4zNFY5LjA2SDU2Ljg0VjUuMzlhMSwxLDAsMCwwLTEtMWgwYTEsMSwwLDAsMC0xLDFWOS4wNkg1My41VjUuNTVBMi4zNCwyLjM0LDAsMCwxLDU1LjgzLDMuMjFaIixmaWxsOiIjYWZhZmFmIn0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTM2LjkzLDkuMDZoMGEyLjMzLDIuMzMsMCwwLDAsMi4zMy0yLjMyVjMuMjFIMzcuOTRWNi45YTEsMSwwLDAsMS0xLDFoMGExLDEsMCwwLDEtMS0xVjMuMjFIMzQuNlY2Ljc0QTIuMzMsMi4zMywwLDAsMCwzNi45Myw5LjA2WiIsZmlsbDoiI2FmYWZhZiJ9KSxILmEuY3JlYXRlRWxlbWVudCgicG9seWdvbiIse3BvaW50czoiNDMuMiAzLjM3IDQyLjEyIDMuMzcgNDIuMTIgMS43OSA0MC45NyAxLjc5IDQwLjk3IDMuMzcgMzkuOTEgMy4zNyA0MC4yNiA0LjM5IDQwLjk3IDQuMzkgNDAuOTcgOS4wMyA0Mi4xMiA5LjAzIDQyLjEyIDQuMzkgNDMuMiA0LjM5IDQzLjIgMy4zNyIsZmlsbDoiI2FmYWZhZiJ9KSxILmEuY3JlYXRlRWxlbWVudCgicG9seWdvbiIse3BvaW50czoiNDYuNzYgMy4zNyA0NS42NyAzLjM3IDQ1LjY3IDEuNzkgNDQuNTIgMS43OSA0NC41MiAzLjM3IDQzLjQ3IDMuMzcgNDMuODEgNC4zOSA0NC41MiA0LjM5IDQ0LjUyIDkuMDMgNDUuNjcgOS4wMyA0NS42NyA0LjM5IDQ2Ljc2IDQuMzkgNDYuNzYgMy4zNyIsZmlsbDoiI2FmYWZhZiJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yOC41NiwxLjczSDMwLjlhMy40OCwzLjQ4LDAsMCwxLDEuMzQuMTgsMS41MywxLjUzLDAsMCwxLC42Ni42MywyLjExLDIuMTEsMCwwLDEsLjI3LDEsMiwyLDAsMCwxLS4yMy45NSwxLjYsMS42LDAsMCwxLS41OS42NCwxLjQ5LDEuNDksMCwwLDEsLjguNjQsMi4wOSwyLjA5LDAsMCwxLC4zLDEuMTEsMi4zMSwyLjMxLDAsMCwxLS4zOCwxLjM1LDEuNTQsMS41NCwwLDAsMS0uODguNjhBOSw5LDAsMCwxLDMwLjU0LDloLTJaTTI5LjczLDNWNC42NGguNzhhNy4wNiw3LjA2LDAsMCwwLC44NywwLC43MS43MSwwLDAsMCwuNDctLjI2QS44Ni44NiwwLDAsMCwzMiwzLjc3YS45MS45MSwwLDAsMC0uMTQtLjUyQS42NC42NCwwLDAsMCwzMS41NSwzYTguMTYsOC4xNiwwLDAsMC0xLjE0LDBabTAsMi45VjcuNzloMS4xYTMuNDksMy40OSwwLDAsMCwuOTItLjA3LjcxLjcxLDAsMCwwLC4zNS0uMywxLjEzLDEuMTMsMCwwLDAsLjEzLS41OCwxLjIsMS4yLDAsMCwwLS4xNC0uNTkuODguODgsMCwwLDAtLjQtLjMyLDQuMSw0LjEsMCwwLDAtMS0uMDhaIixmaWxsOiIjYWZhZmFmIn0pLEguYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7cG9pbnRzOiIyNy41NiAzLjM3IDI2LjQ3IDMuMzcgMjYuNDcgMS43OSAyNS4zMiAxLjc5IDI1LjMyIDMuMzcgMjQuMjcgMy4zNyAyNC42MiA0LjM5IDI1LjMyIDQuMzkgMjUuMzIgOS4wMyAyNi40NyA5LjAzIDI2LjQ3IDQuMzkgMjcuNTYgNC4zOSAyNy41NiAzLjM3IixmaWxsOiIjYWZhZmFmIn0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTIxLjQ5LDMuMjFoMGEyLjM0LDIuMzQsMCwwLDEsMi4zMywyLjM0djFIMjAuNDhWN2MwLDEuMjUsMS45NCwxLjE5LDIuMy43MmwxLC43MmMtMS4xMywxLjM2LTQuNTkuODctNC41OS0xLjYxVjUuNTVBMi4zNCwyLjM0LDAsMCwxLDIxLjQ5LDMuMjFabS0xLDIuMzhoMnYtLjJhMSwxLDAsMCwwLTEtMWgwYTEsMSwwLDAsMC0xLDFaIixmaWxsOiIjYWZhZmFmIn0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE3LjI3LDMuMDVhMy44MiwzLjgyLDAsMCwwLTIuNjgsMCwxLjE0LDEuMTQsMCwwLDAtLjUuNzloMFY2Ljg2YTEuMTcsMS4xNywwLDAsMCwxLjA2LDEsMy45LDMuOSwwLDAsMCwxLjU0LS4wOVY2LjEySDE1LjlWNC43N0gxOHYzLjRhLjY0LjY0LDAsMCwxLS4zMS42NCw0LjU1LDQuNTUsMCwwLDEtMi43My40QTIuNTIsMi41MiwwLDAsMSwxMi43NSw3VjMuNzloMGEyLjY3LDIuNjcsMCwwLDEsMS4xNC0xLjkybDAsMGMxLjU2LS45MSwzLjgyLDAsMy44MywwWiIsZmlsbDoiI2FmYWZhZiJ9KSksdCYmSC5hLmNyZWF0ZUVsZW1lbnQoZW8sbnVsbCkpfSxubz1DLmQuYS53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2Mtc2JzaTdsLTAifSkoWyIiLCIiXSxmdW5jdGlvbihlKXt2YXIgdD1lLnRoZW1lLGU9ZS5zaXplO3JldHVybiBPYmplY3QoQy5jKShbIm9wYWNpdHk6MTtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6N3B4O3doaXRlLXNwYWNlOm5vd3JhcDttYXJnaW4tIiwiOmF1dG87dGV4dC1kZWNvcmF0aW9uOm5vbmU7d2lkdGg6IiwncHg7Zm9udC1mYW1pbHk6Um9ib3RvLCJIZWx2ZXRpY2EgTmV1ZSIsc2Fucy1zZXJpZjtmb250LXNpemU6MTFweDtsaW5lLWhlaWdodDoxMXB4O2NvbG9yOiNhZmFmYWYgIWltcG9ydGFudDtib3JkZXI6MDttYXgtd2lkdGg6aW5oZXJpdDsnLCIiXSwibGVmdCI9PT10LnBvc2l0aW9uPyJyaWdodCI6ImxlZnQiLChlfHw1MCkrMTQsVSgpJiZPYmplY3QoQy5jKShbIiY6aG92ZXJ7Y3Vyc29yOnBvaW50ZXI7fSJdKSl9KSxybz0iaHR0cHM6Ly9nZXRidXR0b24uaW8vP3V0bV9jYW1wYWlnbj1tdWx0eV93aWRnZXQmdXRtX21lZGl1bT13aWRnZXQmdXRtX3NvdXJjZT0iLmNvbmNhdCh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpO2Z1bmN0aW9uIG9vKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBpbyhlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGFvKGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGFvKGUsdCl7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/aW8oZSx0KToiTWFwIj09PShuPSJPYmplY3QiPT09KG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpKSYmZS5jb25zdHJ1Y3Rvcj9lLmNvbnN0cnVjdG9yLm5hbWU6bil8fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/aW8oZSx0KTp2b2lkIDB9ZnVuY3Rpb24gaW8oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgbG89Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtZjMwZzVsLTAifSkoWyJtYXJnaW4tYm90dG9tOjA7cGFkZGluZy1ib3R0b206MjZweDsiXSksY289Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtZjMwZzVsLTEifSkoWyJkaXNwbGF5OmZsZXg7cGFkZGluZzowOyIsIiBAbWVkaWEgKG1heC13aWR0aDozNzBweCl7bWFyZ2luLWxlZnQ6MThweDt9Il0sZnVuY3Rpb24oZSl7cmV0dXJuIGUubWlycm9yP09iamVjdChDLmMpKFsibWFyZ2luOjAgODVweCAwIDA7Il0pOk9iamVjdChDLmMpKFsibWFyZ2luOjAgMCAwIDg1cHg7Il0pfSksdW89Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtZjMwZzVsLTIifSkoWyJtYXJnaW4tYm90dG9tOjA7QG1lZGlhIChtYXgtd2lkdGg6MzcwcHgpe3RyYW5zZm9ybTpzY2FsZSgwLjkpO30iXSksc289Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2MtZjMwZzVsLTMifSkoWyJkaXNwbGF5OmZsZXg7cGFkZGluZzowO2p1c3RpZnktY29udGVudDpjZW50ZXI7IiwiIEBtZWRpYShtYXggLSB3aWR0aDozNzBweCl7dHJhbnNmb3JtOnNjYWxlKDAuOSk7fSJdLGZ1bmN0aW9uKGUpe3JldHVybiJtaW5pIj09PWUuZ3JlZXRpbmdTdHlsZSYmZS5idXR0b25zTnVtYmVyPDUmJjE8ZS5idXR0b25zTnVtYmVyJiZPYmplY3QoQy5jKShbImp1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O21hcmdpbi1sZWZ0OjM4cHg7Il0pfSksZm89ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3QoRi51c2VDb250ZXh0KShWKS5zZXR0aW5ncyx0PWUub3JkZXIsbj1lLmdyZWV0aW5nU3R5bGUsZT1lLm1pcnJvcjtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gbnVsbDt2YXIgcixvPVtdLGE9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8sYSxpPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihpKXJldHVybiByPSEobj0hMCkse3M6ZnVuY3Rpb24oKXtpPWkuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPWkubmV4dCgpO3JldHVybiBuPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe3I9ITAsbz1lfSxmOmZ1bmN0aW9uKCl7dHJ5e258fG51bGw9PWkucmV0dXJufHxpLnJldHVybigpfWZpbmFsbHl7aWYocil0aHJvdyBvfX19O2lmKEFycmF5LmlzQXJyYXkoZSl8fChpPWFvKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm4gaSYmKGU9aSksYT0wLHtzOnQ9ZnVuY3Rpb24oKXt9LG46ZnVuY3Rpb24oKXtyZXR1cm4gYT49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbYSsrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjp0fTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KG9vKHQpLnJldmVyc2UoKSk7dHJ5e2ZvcihhLnMoKTshKHI9YS5uKCkpLmRvbmU7KXt2YXIgaT1yLnZhbHVlLGw9QltpXTtpZigobCYmKCEwPT09VSgpJiZsLm9uRGVza3RvcHx8ITA9PT0vVGFibGV0fGlQYWR8aVBvZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJmwub25UYWJsZXQpfHwhMD09PUQoKSYmbC5vbk1vYmlsZSkmJihvLnB1c2goaSksNDxvLmxlbmd0aCkpYnJlYWt9fWNhdGNoKGUpe2EuZShlKX1maW5hbGx5e2EuZigpfXJldHVybiJhbHRlcm5hdGl2ZSI9PT1ufHwibWluaSI9PT1uP0guYS5jcmVhdGVFbGVtZW50KHVvLG51bGwsSC5hLmNyZWF0ZUVsZW1lbnQoc28se2J1dHRvbnNOdW1iZXI6by5sZW5ndGgsZ3JlZXRpbmdTdHlsZTpufSxvLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBoW2VdP0guYS5jcmVhdGVFbGVtZW50KGhbZV0se2tleTp0LHNpemU6Im1lZGl1bSJ9KTpudWxsfSkpKTpILmEuY3JlYXRlRWxlbWVudChsbyxudWxsLEguYS5jcmVhdGVFbGVtZW50KGNvLHttaXJyb3I6ZX0sby5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gaFtlXT9ILmEuY3JlYXRlRWxlbWVudChoW2VdLHtrZXk6dCxzaXplOiJzbWFsbCJ9KTpudWxsfSkucmV2ZXJzZSgpKSl9LHBvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sb3IsdD12b2lkIDA9PT10PyIjZmZmZmZmIjp0LGU9ZS5zaXplLGU9dm9pZCAwPT09ZT8iMjVweCI6ZTtyZXR1cm4iYWx0ZXJuYXRpdmUiPT09T2JqZWN0KEYudXNlQ29udGV4dCkoVikuc2V0dGluZ3MuZ3JlZXRpbmdTdHlsZT9ILmEuY3JlYXRlRWxlbWVudCgic3ZnIix7c3R5bGU6e3dpZHRoOmUsaGVpZ2h0OmUsZmlsbDp0LHN0cm9rZToibm9uZSJ9LHZpZXdCb3g6IjAgMCAyNCAyNCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn0sSC5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiJ9KSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0wIDBoMjR2MjRIMHoiLGZpbGw6Im5vbmUifSkpOkguYS5jcmVhdGVFbGVtZW50KCJzdmciLHtzdHlsZTp7d2lkdGg6IjE1cHgiLGhlaWdodDoiMTVweCIsZmlsbDoiI2EzYTNhMyIsc3Ryb2tlOiJub25lIn0sdmlld0JveDoiMCAwIDI0IDI0Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifSxILmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6In0pLEguYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTAgMGgyNHYyNEgweiIsZmlsbDoibm9uZSJ9KSl9O2Z1bmN0aW9uIG1vKGUpe3JldHVybihtbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIGhvKGUsdCxuKXtyZXR1cm4odD1mdW5jdGlvbihlKXtlPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPT1tbyhlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMD09PW4pcmV0dXJuKCJzdHJpbmciPT09dD9TdHJpbmc6TnVtYmVyKShlKTtuPW4uY2FsbChlLHR8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1tbyhuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfShlLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PW1vKGUpP2U6U3RyaW5nKGUpfSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBnbyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8sYSxpLGw9W10sYz0hMCx1PSExO3RyeXtpZihhPShuPW4uY2FsbChlKSkubmV4dCwwPT09dCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPWEuY2FsbChuKSkuZG9uZSkmJihsLnB1c2goci52YWx1ZSksbC5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7dT0hMCxvPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPW4ucmV0dXJuJiYoaT1uLnJldHVybigpLE9iamVjdChpKSE9PWkpKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgb319cmV0dXJuIGx9fShlLHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuO2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2JvKGUsdCk6Ik1hcCI9PT0obj0iT2JqZWN0Ij09PShuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOm4pfHwiU2V0Ij09PW4/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2JvKGUsdCk6dm9pZCAwfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYm8oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB5byhlKXtmdW5jdGlvbiB0KCl7bygpfWZ1bmN0aW9uIG4oKXtPKFMpfXZhciBlPWUuY29sb3Iscj0oaz1PYmplY3QoRi51c2VDb250ZXh0KShWKSkuc3RhdGUsbz1rLmFjdGlvbnMuY2xvc2VHcmVldGluZ01lc3NhZ2UsYT0oaz1rLnNldHRpbmdzKS5idXR0b25Cb3JkZXJSYWRpdXMsaT1rLmdyZWV0aW5nTWVzc2FnZURlbGF5LGw9ay5ncmVldGluZyxjPWsuZ3JlZXRpbmdEaXJlY3Rpb24sdT1rLmJ1dHRvblN0eWxlLHM9ay5hY3RpdmF0b3JTaXplLGY9ay5zaGlmdFZlcnRpY2FsLGQ9ay5wb3NpdGlvbixwPWsuc2hpZnRIb3Jpem9udGFsLG09ay5ncmVldGluZ1N0eWxlLGg9ay5taXJyb3IsZz1rLmJnU3R5bGUsYj1rLmNvbXBhbnlMb2dvVXJsLHk9ay5ncmVldGluZ01lc3NhZ2Usdj1rLmdyZWV0aW5nQWdlbnROYW1lLFI9ay5ncmVldGluZ0FnZW50UG9zaXRpb24sdz1rLmdyZWV0aW5nTWVzc2VuZ2VycyxOPWsuZ3JlZXRpbmdTdGFydENoYXRXaXRoLHg9ay5pc1NpbmdsZSxrPWsuYnV0dG9uU2hhZG93LFM9KGo9Z28oT2JqZWN0KEYudXNlU3RhdGUpKCExKSwyKSlbMF0sQz1qWzFdLEU9KGo9Z28oT2JqZWN0KEYudXNlU3RhdGUpKCExKSwyKSlbMF0sTz1qWzFdLGo9JChhKSxEPXBlKGUsNSksQT0iIi5jb25jYXQoaSwiMDAwIiksUD0oQS5pbmNsdWRlcygiLiIpJiYoQT0iIi5jb25jYXQoQS5yZXBsYWNlKC9cLi9nLCIiKS8xMCkpLE9iamVjdChGLnVzZVJlZikoMCkpO09iamVjdChGLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXtyLmdyZWV0aW5nTWVzc2FnZSYmIWw/dCgpOihyLmdyZWV0aW5nTWVzc2FnZT8wPT09UC5jdXJyZW50JiYoUC5jdXJyZW50PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtDKHIuZ3JlZXRpbmdNZXNzYWdlKSxPKHIuZ3JlZXRpbmdNZXNzYWdlKX0sK0EpKTooQyghMSksTyghMSkpLHIuYnV0dG9ucyYmY2xlYXJUaW1lb3V0KFAuY3VycmVudCkpfSksT2JqZWN0KEYudXNlRWZmZWN0KShmdW5jdGlvbigpe3IuZ3JlZXRpbmdNZXNzYWdlPyJyb3ciPT09YyYmVyg5OTk5OTk5OTkpOiJyb3ciPT09YyYmVygiY2xhc3NpYyI9PT11P3M6MypzKX0sW2MsdSxyLmdyZWV0aW5nTWVzc2FnZSxzXSk7dmFyIEk9KGk9dmUoKSkuaGVpZ2h0LGk9aS53aWR0aCxfPShNPWdvKE9iamVjdChGLnVzZVN0YXRlKSgiYXV0byIpLDIpKVswXSxVPU1bMV0sej0oTT1nbyhPYmplY3QoRi51c2VTdGF0ZSkoe3dpZHRoOiJhdXRvIixoZWlnaHQ6ImF1dG8ifSksMikpWzBdLEI9TVsxXSxUPU9iamVjdChGLnVzZVJlZikoKSxMPU9iamVjdChGLnVzZVJlZikoKSxNPShPYmplY3QoRi51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7dmFyIGUsdDtULmN1cnJlbnQmJih0PUktZi1zLXZ0LGU9VC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCsxNzgsVSh0PGU/dC0xNDg6ImF1dG8iKSksTC5jdXJyZW50JiYoZT1MLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LHQ9TC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLEIoe3dpZHRoOnQsaGVpZ2h0OmV9KSl9LFtJLEUsaSxMXSksImNlbnRlciIhPT1jPyJjb2x1bW4iPT09Yz97Ym90dG9tOnMrMzB9OiJyaWdodCI9PT1kP3tyaWdodDoiY2xhc3NpYyI9PT11P3MrMzA6MypzKzMwLGJvdHRvbTo3fTp7bGVmdDoiY2xhc3NpYyI9PT11P3MrMzA6MypzKzMwLGJvdHRvbTo3fTpobyh7Ym90dG9tOiJjYWxjKDUwdmggLSAiLmNvbmNhdCh6LmhlaWdodC8yKzEwLCJweCAtICIpLmNvbmNhdChmLzItMiwicHgpIil9LCJyaWdodCI9PT1kPyJyaWdodCI6ImxlZnQiLCJjYWxjKDUwdncgLSAiLmNvbmNhdCh6LndpZHRoLzIrMjAsInB4IC0gIikuY29uY2F0KHAvMi0yLCJweCkiKSkpLGk9KG5ldyBEYXRlKS5nZXRIb3VycygpKyI6IisobmV3IERhdGUpLmdldE1pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKTtyZXR1cm4iYWx0ZXJuYXRpdmUiPT09bT9FJiZILmEuY3JlYXRlRWxlbWVudChPbyx7aXNTaG93OlMsb25BbmltYXRpb25FbmQ6bixzaGlmdEhvcml6b250YWw6cCxtaXJyb3I6aCxyZWY6TCxzdHlsZTpNLGdyZWV0aW5nRGlyZWN0aW9uOmMsYWN0aXZhdG9yU2l6ZTpzfSxILmEuY3JlYXRlRWxlbWVudChqbyx7YnV0dG9uU2hhZG93OmssZ3JlZXRpbmdNZXNzZW5nZXJzOnd9LEguYS5jcmVhdGVFbGVtZW50KEFvLHtjb2xvcjplLGJnU3R5bGU6ZyxncmFkaWVudDpEfSxILmEuY3JlYXRlRWxlbWVudChQbyx7aXNTaW5nbGU6eH0sSC5hLmNyZWF0ZUVsZW1lbnQoSW8sbnVsbCxILmEuY3JlYXRlRWxlbWVudChMbyx7aW5kaWNhdG9yUG9zaXRpb246aixtaXJyb3I6aH0sSC5hLmNyZWF0ZUVsZW1lbnQoVG8se2NvbXBhbnlMb2dvVXJsOmIsYnV0dG9uQm9yZGVyUmFkaXVzOmF9KSksSC5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxILmEuY3JlYXRlRWxlbWVudChfbyx7bWlycm9yOmh9LHYpLEguYS5jcmVhdGVFbGVtZW50KHpvLHttaXJyb3I6aH0sUikpKSxILmEuY3JlYXRlRWxlbWVudChNbyx7b25Nb3VzZVVwOnR9LEguYS5jcmVhdGVFbGVtZW50KHBvLG51bGwpKSkpLEguYS5jcmVhdGVFbGVtZW50KFJvLHtncmVldGluZ01lc3NlbmdlcnM6d30sSC5hLmNyZWF0ZUVsZW1lbnQoR28se29uTW91c2VVcDp0fSxILmEuY3JlYXRlRWxlbWVudChwbyx7Y29sb3I6IiNlMGRmZGYiLHNpemU6IjIwcHgifSkpLEguYS5jcmVhdGVFbGVtZW50KCRvLG51bGwsaSksSC5hLmNyZWF0ZUVsZW1lbnQoRG8sbnVsbCxILmEuY3JlYXRlRWxlbWVudChCbyx7Y29tcGFueUxvZ29Vcmw6YixzaGlmdEhvcml6b250YWw6cCxidXR0b25Cb3JkZXJSYWRpdXM6YX0pLEguYS5jcmVhdGVFbGVtZW50KEZvLHtoZWlnaHQ6XyxtaXJyb3I6aH0sSC5hLmNyZWF0ZUVsZW1lbnQoVm8se21pcnJvcjpofSxILmEuY3JlYXRlRWxlbWVudCgic3BhbiIse3JlZjpUfSx5KSkpKSx3JiZILmEuY3JlYXRlRWxlbWVudChILmEuRnJhZ21lbnQsbnVsbCxILmEuY3JlYXRlRWxlbWVudChXbyx7bWlycm9yOmh9LE4pLEguYS5jcmVhdGVFbGVtZW50KGZvLG51bGwpKSkpKToibWluaSI9PT1tP0UmJkguYS5jcmVhdGVFbGVtZW50KE9vLHtpc1Nob3c6UyxvbkFuaW1hdGlvbkVuZDpuLHNoaWZ0SG9yaXpvbnRhbDpwLHJlZjpMLHN0eWxlOk0sbWlycm9yOmgsZ3JlZXRpbmdEaXJlY3Rpb246YyxhY3RpdmF0b3JTaXplOnN9LEguYS5jcmVhdGVFbGVtZW50KGpvLHtidXR0b25TaGFkb3c6ayxncmVldGluZ01lc3NlbmdlcnM6d30sSC5hLmNyZWF0ZUVsZW1lbnQoTm8sbnVsbCxILmEuY3JlYXRlRWxlbWVudChxbyx7b25Nb3VzZVVwOnR9LEguYS5jcmVhdGVFbGVtZW50KHBvLHtjb2xvcjoiI2UwZGZkZiIsc2l6ZToiMjBweCJ9KSksSC5hLmNyZWF0ZUVsZW1lbnQoVW8sbnVsbCxILmEuY3JlYXRlRWxlbWVudChCbyx7Y29tcGFueUxvZ29Vcmw6YixzaGlmdEhvcml6b250YWw6cCxidXR0b25Cb3JkZXJSYWRpdXM6YX0pLEguYS5jcmVhdGVFbGVtZW50KEhvLHtoZWlnaHQ6XyxtaXJyb3I6aH0sSC5hLmNyZWF0ZUVsZW1lbnQoVm8se21pcnJvcjpofSxILmEuY3JlYXRlRWxlbWVudCgic3BhbiIse3JlZjpUfSx5KSkpKSx3JiZILmEuY3JlYXRlRWxlbWVudChmbyxudWxsKSkpKTpFJiZILmEuY3JlYXRlRWxlbWVudCh2byx7aXNTaG93OlMsb25BbmltYXRpb25FbmQ6bixyZWY6TCxzdHlsZTpNLHNoaWZ0SG9yaXpvbnRhbDpwLG1pcnJvcjpoLGdyZWV0aW5nRGlyZWN0aW9uOmMsYWN0aXZhdG9yU2l6ZTpzfSxILmEuY3JlYXRlRWxlbWVudCh3byx7YnV0dG9uU2hhZG93OmssZ3JlZXRpbmdNZXNzZW5nZXJzOnd9LEguYS5jcmVhdGVFbGVtZW50KEVvLHtvbk1vdXNlVXA6dCxtaXJyb3I6aH0sSC5hLmNyZWF0ZUVsZW1lbnQocG8sbnVsbCkpLEguYS5jcmVhdGVFbGVtZW50KFNvLG51bGwsSC5hLmNyZWF0ZUVsZW1lbnQoQ28se2NvbXBhbnlMb2dvVXJsOmIsc2hpZnRIb3Jpem9udGFsOnB9KSxILmEuY3JlYXRlRWxlbWVudChrbyx7aGVpZ2h0Ol8sbWlycm9yOmh9LEguYS5jcmVhdGVFbGVtZW50KHhvLHttaXJyb3I6aH0sSC5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtyZWY6VH0seSkpKSksIXgmJncmJkguYS5jcmVhdGVFbGVtZW50KGZvLG51bGwpKSl9dmFyIHZvPU9iamVjdChDLmQpKHQpLndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtMCJ9KShbIiIsIiJdLGZ1bmN0aW9uKGUpe3ZhciB0PWUudGhlbWUsbj1lLm1pcnJvcixyPWUuZ3JlZXRpbmdEaXJlY3Rpb24sZT1lLmFjdGl2YXRvclNpemU7cmV0dXJuIE9iamVjdChDLmMpKFsnb3BhY2l0eToxO3BhZGRpbmc6MDtib3JkZXI6MDt3aWR0aDozNDNweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LWZhbWlseTpSb2JvdG8sIkhlbHZldGljYSBOZXVlIixzYW5zLXNlcmlmO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTo3M3B4O2xpbmUtaGVpZ2h0OjIzcHg7Zm9udC1zaXplOjE0cHg7JywiOjA7QG1lZGlhIChtYXgtd2lkdGg6MzcwcHgpe3dpZHRoOjI4MHB4O30iLCIgQG1lZGlhIChtYXgtd2lkdGg6NDcwcHgpeyIsIn0iXSx0LnBvc2l0aW9uLG4mJk9iamVjdChDLmMpKFsiZGlyZWN0aW9uOnJ0bDsiXSksInJvdyI9PT1yJiZPYmplY3QoQy5jKShbImJvdHRvbToiLCJweCAhaW1wb3J0YW50OyIsIjowICFpbXBvcnRhbnQ7Il0sZSszMCx0LnBvc2l0aW9uKSl9KSx3bz1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtMSJ9KShbIiIsIiJdLGZ1bmN0aW9uKGUpe3ZhciB0PWUuYnV0dG9uU2hhZG93LGU9ZS5ncmVldGluZ01lc3NlbmdlcnM7cmV0dXJuIE9iamVjdChDLmMpKFsiYm94LXNoYWRvdzowcHggMXB4IDdweCByZ2JhKDEzNiwxMzYsMTM2LCIsIiUpO2JvcmRlcjoxcHggc29saWQgI2UyZTJlMjtwb3NpdGlvbjpyZWxhdGl2ZTttaW4taGVpZ2h0OiIsIjtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtkaXNwbGF5OmJsb2NrOyJdLDIwPHQ/dDoyMCxlPyIxNDlweCI6InVuc2V0Iil9KSx4bz1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtMiJ9KShbInBhZGRpbmc6MTBweCAxNnB4O2xpbmUtaGVpZ2h0OjIwcHg7d2hpdGUtc3BhY2U6cHJlLXdyYXA7b3ZlcmZsb3cteTphdXRvO2hlaWdodDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDsiLCIgJjo6LXdlYmtpdC1zY3JvbGxiYXJ7aGVpZ2h0OjVweDt3aWR0aDo1cHg7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wMik7fSY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6cmdiYSg1Nyw1NiwxOCwuMDcpOy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7fSJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLm1pcnJvcj9PYmplY3QoQy5jKShbInRleHQtYWxpZ246cmlnaHQ7dW5pY29kZS1iaWRpOnBsYWludGV4dDsiXSk6T2JqZWN0KEMuYykoWyJ0ZXh0LWFsaWduOmxlZnQ7Il0pfSksa289Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2Mtcms3MmJoLTMifSkoWyIiLCIiXSxmdW5jdGlvbihlKXt2YXIgdD1lLmhlaWdodCxlPWUubWlycm9yO3JldHVybiBPYmplY3QoQy5jKShbIm1pbi1oZWlnaHQ6NTZweDtoZWlnaHQ6IiwiO3dpZHRoOjIzNHB4O2JvcmRlcjoxcHggc29saWQgI2UyZTJlMjtib3JkZXItcmFkaXVzOjhweDtwb3NpdGlvbjpyZWxhdGl2ZTsiLCIgJjo6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7dG9wOjIwcHg7Ym9yZGVyOjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkICNlMmUyZTI7IiwifSY6OmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7dG9wOjIwcHg7Ym9yZGVyOjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkICNmZmY7IiwifSJdLHQrInB4IixlP09iamVjdChDLmMpKFsibWFyZ2luOjAgYXV0byAwIDVweDsiXSk6T2JqZWN0KEMuYykoWyJtYXJnaW46MCA1cHggMCBhdXRvOyJdKSxlP09iamVjdChDLmMpKFsicmlnaHQ6LTEwcHg7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpOyJdKTpPYmplY3QoQy5jKShbImxlZnQ6LTEwcHg7Il0pLGU/T2JqZWN0KEMuYykoWyJyaWdodDotOXB4O3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsiXSk6T2JqZWN0KEMuYykoWyJsZWZ0Oi05cHg7Il0pKX0pLFNvPUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXJrNzJiaC00In0pKFsibWluLWhlaWdodDo1OHB4O2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7Y29sb3I6YmxhY2s7cGFkZGluZzoyN3B4IDE4cHggMjBweCAxOHB4O2Rpc3BsYXk6ZmxleDsiXSksQ289Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2Mtcms3MmJoLTUifSkoWydkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtoZWlnaHQ6NTBweDt3aWR0aDo1MHB4O21pbi13aWR0aDo1MHB4O2JvcmRlcjoxcHggc29saWQgI2UyZTJlMjtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOnVybCgiJywnIikgbm8tcmVwZWF0IGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7QG1lZGlhIChtYXgtd2lkdGg6MzcwcHgpe2Rpc3BsYXk6bm9uZTt9J10sZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tcGFueUxvZ29Vcmx9KSxFbz1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtNiJ9KShbIndpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjdweDsiLCIiXSxmdW5jdGlvbihlKXtyZXR1cm4gZS5taXJyb3I/T2JqZWN0KEMuYykoWyJsZWZ0OjlweDsiXSk6T2JqZWN0KEMuYykoWyJyaWdodDo5cHg7Il0pfSksT289T2JqZWN0KEMuZCkodm8pLndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtNyJ9KShbIndpZHRoOjMyMHB4OyJdKSxqbz1PYmplY3QoQy5kKSh3bykud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXJrNzJiaC04In0pKFsiYm9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czoxNnB4OyJdKSxBbz1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtOSJ9KShbIiIsIiAiXSxmdW5jdGlvbihlKXt2YXIgdD1lLmJnU3R5bGUsbj1lLmNvbG9yLGU9ZS5ncmFkaWVudDtyZXR1cm4gT2JqZWN0KEMuYykoWyJib3JkZXItcmFkaXVzOjE2cHggMTZweCAwIDA7IiwiIEBtZWRpYShtYXgtaGVpZ2h0OjQ3MHB4KXtkaXNwbGF5Om5vbmU7fSJdLCJjb2xvciI9PT10P09iamVjdChDLmMpKFsiYmFja2dyb3VuZC1jb2xvcjoiLCI7Il0sbik6T2JqZWN0KEMuYykoWyJiYWNrZ3JvdW5kOiIsIjsiXSwibGluZWFyLWdyYWRpZW50KDEzNWRlZywgIi5jb25jYXQoZSwiKSIpKSl9KSxQbz1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtMTAifSkoWyJib3JkZXItcmFkaXVzOjE2cHggMTZweCAwIDA7cGFkZGluZzowIDE1cHg7aGVpZ2h0OjgwcHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZHJvcC1maWx0ZXI6IiwiOyJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzU2luZ2xlJiYiYnJpZ2h0bmVzcygwLjUpIn0pLElvPUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXJrNzJiaC0xMSJ9KShbImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE1cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7Il0pLF9vPUMuZC5oNC53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2Mtcms3MmJoLTEyIn0pKFsibWFyZ2luOjA7dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOndoaXRlICFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxOHB4OyIsIiJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLm1pcnJvcj9PYmplY3QoQy5jKShbInRleHQtYWxpZ246cmlnaHQ7dW5pY29kZS1iaWRpOnBsYWludGV4dDsiXSk6T2JqZWN0KEMuYykoWyJ0ZXh0LWFsaWduOmxlZnQ7Il0pfSksem89Qy5kLnAud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXJrNzJiaC0xMyJ9KShbIm1hcmdpbjowO2xpbmUtaGVpZ2h0OjEuMyAhaW1wb3J0YW50O2NvbG9yOndoaXRlO2ZvbnQtc2l6ZToxNHB4OyIsIiJdLGZ1bmN0aW9uKGUpe3JldHVybiBlLm1pcnJvcj9PYmplY3QoQy5jKShbInRleHQtYWxpZ246cmlnaHQ7dW5pY29kZS1iaWRpOnBsYWludGV4dDsiXSk6T2JqZWN0KEMuYykoWyJ0ZXh0LWFsaWduOmxlZnQ7Il0pfSksVG89Qy5kLmltZy53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2Mtcms3MmJoLTE0In0pKFsiIiwiIl0sZnVuY3Rpb24oZSl7dmFyIHQ9ZS5idXR0b25Cb3JkZXJSYWRpdXMsZT1lLmNvbXBhbnlMb2dvVXJsO3JldHVybiBPYmplY3QoQy5jKShbImRpc3BsYXk6YmxvY2shaW1wb3J0YW50O2hlaWdodDo1MHB4ICFpbXBvcnRhbnQ7d2lkdGg6NTBweDttaW4td2lkdGg6NTBweDtib3JkZXI6MnB4IHNvbGlkICNmZmZmZmY7Ym9yZGVyLXJhZGl1czoiLCclO2JhY2tncm91bmQ6dXJsKCInLCciKSBuby1yZXBlYXQgY2VudGVyO2JhY2tncm91bmQtc2l6ZTpjb3ZlcjtAbWVkaWEgKG1heC13aWR0aDozNzBweCl7ZGlzcGxheTpub25lO30nXSx0LGUpfSksTG89Qy5kLmRpdi53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2Mtcms3MmJoLTE1In0pKFsiIiwiIl0sZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pbmRpY2F0b3JQb3NpdGlvbixlPWUubWlycm9yO3JldHVybiBPYmplY3QoQy5jKShbInBvc2l0aW9uOnJlbGF0aXZlOyY6YWZ0ZXJ7Y29udGVudDonJzt3aWR0aDoxMHB4O2hlaWdodDoxMHB4O2JhY2tncm91bmQtY29sb3I6IzRkYzI0Nztib3JkZXItcmFkaXVzOjUwJTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206IiwicHg7Ym94LXNoYWRvdzoycHggMnB4IDZweCByZ2JhKDAsMCwwLDEwJSk7IiwifSJdLHQsZT9PYmplY3QoQy5jKShbImxlZnQ6IiwicHg7Il0sdCk6T2JqZWN0KEMuYykoWyJyaWdodDoiLCJweDsiXSx0KSl9KSxNbz1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtMTYifSkoWyJ3aWR0aDoyNXB4O2hlaWdodDoyNXB4O2N1cnNvcjpwb2ludGVyOyJdKSxSbz1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtMTcifSkoWyJwYWRkaW5nOiIsIjtAbWVkaWEobWF4LWhlaWdodDo0NzBweCl7cGFkZGluZzo1cHggMTVweDt9Il0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ3JlZXRpbmdNZXNzZW5nZXJzPyIxNXB4IjoiMTVweCAxNXB4IDI1cHggMTVweCJ9KSxObz1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtMTgifSkoWyJwYWRkaW5nOjE1cHg7Il0pLERvPUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXJrNzJiaC0xOSJ9KShbImRpc3BsYXk6ZmxleDtnYXA6MTBweDtjb2xvcjojMDAwMDAwO0BtZWRpYShtYXgtaGVpZ2h0OjQ3MHB4KXttYXJnaW46N3B4IDA7fSJdKSxVbz1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtMjAifSkoWyJkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7Y29sb3I6IzAwMDAwMDttYXJnaW46N3B4IDA7Il0pLEJvPUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXJrNzJiaC0yMSJ9KShbIiIsIiJdLGZ1bmN0aW9uKGUpe3ZhciB0PWUuYnV0dG9uQm9yZGVyUmFkaXVzLGU9ZS5jb21wYW55TG9nb1VybDtyZXR1cm4gT2JqZWN0KEMuYykoWyJkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtoZWlnaHQ6MzVweDt3aWR0aDozNXB4O21pbi13aWR0aDozNXB4O2JvcmRlci1yYWRpdXM6IiwnJTtiYWNrZ3JvdW5kOnVybCgiJywnIikgbm8tcmVwZWF0IGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7J10sdCxlKX0pLEZvPUMuZC5kaXYud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXJrNzJiaC0yMiJ9KShbImJhY2tncm91bmQ6cmdiYSg0NCwxMjAsMjU1LDAuMik7bWF4LWhlaWdodDoyMHZoO3BhZGRpbmc6MTRweCAwOyIsIiBAbWVkaWEobWF4LWhlaWdodDo0NzBweCl7d2lkdGg6ODAlO30iXSxmdW5jdGlvbihlKXtyZXR1cm4gZS5taXJyb3I/T2JqZWN0KEMuYykoWyJib3JkZXItcmFkaXVzOjIwcHggMnB4IDIwcHggMjBweDsiXSk6T2JqZWN0KEMuYykoWyJib3JkZXItcmFkaXVzOjJweCAyMHB4IDIwcHggMjBweDsiXSl9KSxIbz1DLmQuZGl2LndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtMjMifSkoWyJiYWNrZ3JvdW5kOnJnYmEoNDQsMTIwLDI1NSwwLjIpO21heC1oZWlnaHQ6MjB2aDtwYWRkaW5nOjE0cHggMDt3aWR0aDo4MCU7IiwiIl0sZnVuY3Rpb24oZSl7cmV0dXJuIGUubWlycm9yP09iamVjdChDLmMpKFsiYm9yZGVyLXJhZGl1czoyMHB4IDJweCAyMHB4IDIwcHg7Il0pOk9iamVjdChDLmMpKFsiYm9yZGVyLXJhZGl1czoycHggMjBweCAyMHB4IDIwcHg7Il0pfSksVm89T2JqZWN0KEMuZCkoeG8pLndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtMjQifSkoWyJwYWRkaW5nOjAgMTZweDsiXSksJG89Qy5kLnAud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXJrNzJiaC0yNSJ9KShbIm1hcmdpbjowIDAgMTVweCAwO2NvbG9yOiM5NTlEQTk7QG1lZGlhKG1heC1oZWlnaHQ6NDcwcHgpe2Rpc3BsYXk6bm9uZTt9Il0pLFdvPUMuZC5wLndpdGhDb25maWcoe2NvbXBvbmVudElkOiJzYy1yazcyYmgtMjYifSkoWyJmb250LXdlaWdodDpib2xkO21hcmdpbjoyNXB4IDAgNXB4IDA7Y29sb3I6IzAwMDAwMCAhaW1wb3J0YW50OyIsIiBAbWVkaWEobWF4LWhlaWdodDo0NzBweCl7ZGlzcGxheTpub25lO30iXSxmdW5jdGlvbihlKXtyZXR1cm4gZS5taXJyb3ImJk9iamVjdChDLmMpKFsidW5pY29kZS1iaWRpOnBsYWludGV4dDsiXSl9KSxHbz1PYmplY3QoQy5kKShNbykud2l0aENvbmZpZyh7Y29tcG9uZW50SWQ6InNjLXJrNzJiaC0yNyJ9KShbImRpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NXB4O3JpZ2h0OjNweDtAbWVkaWEobWF4LWhlaWdodDo0NzBweCl7ZGlzcGxheTpibG9jazt9Il0pLHFvPU9iamVjdChDLmQpKE1vKS53aXRoQ29uZmlnKHtjb21wb25lbnRJZDoic2Mtcms3MmJoLTI4In0pKFsicG9zaXRpb246YWJzb2x1dGU7dG9wOjVweDtyaWdodDozcHg7Il0pLFpvPU9iamVjdChDLmIpKFsiIyIsIiA+ICp7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCkgIWltcG9ydGFudDtib3gtc2l6aW5nOmJvcmRlci1ib3ggIWltcG9ydGFudDt9IyIsIiBwe3BhZGRpbmctYm90dG9tOjAgIWltcG9ydGFudDt9IiwiIl0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29udGFpbmVySWR9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbnRhaW5lcklkfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5zZXR0aW5ncy5mYWNlYm9vayYmWG99KSxYbz1PYmplY3QoQy5jKShbIiNmYi1yb290IC5mYi1jdXN0b21lcmNoYXQgPip7b3BhY2l0eTowO30uZmItY3VzdG9tZXJjaGF0IGlmcmFtZXtib3R0b206IiwicHggIWltcG9ydGFudDsiLCI6IiwicHggIWltcG9ydGFudDt9LmZiLWN1c3RvbWVyY2hhdCBpZnJhbWUuZmJfY3VzdG9tZXJfY2hhdF9ib3VuY2VfaW5fdjJ7bWF4LWhlaWdodDpjYWxjKDgwJSAtIDMwcHgpICFpbXBvcnRhbnQ7fS5mYl9kaWFsb2d7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fS5mYl9jdXN0b21lcl9jaGF0X2JvdW5jZV9vdXRfdjJ7YW5pbWF0aW9uLW5hbWU6ZmJfYm91bmNlX291dF9jcyFpbXBvcnRhbnQ7fS5mYl9jdXN0b21lcl9jaGF0X2JvdW5jZV9pbl92MnthbmltYXRpb24tbmFtZTpmYl9ib3VuY2VfaW5fY3MhaW1wb3J0YW50O31Aa2V5ZnJhbWVzIGZiX2JvdW5jZV9pbl9jc3swJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlKDAsMCk7dHJhbnNmb3JtLW9yaWdpbjpib3R0b20gIiwiO301MCV7dHJhbnNmb3JtOnNjYWxlKDEuMDMsMS4wMyk7dHJhbnNmb3JtLW9yaWdpbjpib3R0b20gIiwiO30xMDAle29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSwxKTt0cmFuc2Zvcm0tb3JpZ2luOmJvdHRvbSAiLCI7fX1Aa2V5ZnJhbWVzIGZiX2JvdW5jZV9vdXRfY3N7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZSgxLDEpO3RyYW5zZm9ybS1vcmlnaW46Ym90dG9tICIsIjt9MTAwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlKDAsMCk7dHJhbnNmb3JtLW9yaWdpbjpib3R0b20gIiwiO319Il0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3R5bGVzLnNoaWZ0VmVydGljYWwrNTB9LGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0eWxlcy5wb3NpdGlvbn0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3R5bGVzLnNoaWZ0SG9yaXpvbnRhbC0yMH0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3R5bGVzLnBvc2l0aW9ufSxmdW5jdGlvbihlKXtyZXR1cm4gZS5zdHlsZXMucG9zaXRpb259LGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0eWxlcy5wb3NpdGlvbn0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3R5bGVzLnBvc2l0aW9ufSxmdW5jdGlvbihlKXtyZXR1cm4gZS5zdHlsZXMucG9zaXRpb259KTtmdW5jdGlvbiBZbyhlLHQpe3ZhciBuLHIsbyxhLGk9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKGkpcmV0dXJuIHI9IShuPSEwKSx7czpmdW5jdGlvbigpe2k9aS5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9aS5uZXh0KCk7cmV0dXJuIG49ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cj0hMCxvPWV9LGY6ZnVuY3Rpb24oKXt0cnl7bnx8bnVsbD09aS5yZXR1cm58fGkucmV0dXJuKCl9ZmluYWxseXtpZihyKXRocm93IG99fX07aWYoQXJyYXkuaXNBcnJheShlKXx8KGk9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9RbyhlLHQpOiJNYXAiPT09KG49Ik9iamVjdCI9PT0obj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSkpJiZlLmNvbnN0cnVjdG9yP2UuY29uc3RydWN0b3IubmFtZTpuKXx8IlNldCI9PT1uP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9RbyhlLHQpOnZvaWQgMH0oZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXJldHVybiBpJiYoZT1pKSxhPTAse3M6dD1mdW5jdGlvbigpe30sbjpmdW5jdGlvbigpe3JldHVybiBhPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVthKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOnR9O3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX1mdW5jdGlvbiBRbyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXdpbmRvdy5HQkJUTj13aW5kb3cuR0JCVE58fHtsb2FkZWRfYnV0dG9uc19oYXNoX2lkczpbXX07dmFyIEtvLEpvLGVhLHRhLG5hLGc9ITEscmE9WW8oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKTt0cnl7Zm9yKHJhLnMoKTshKGVhPXJhLm4oKSkuZG9uZTspe3ZhciBvYSxhYSxpYT1lYS52YWx1ZTtpZihudWxsIT0ob2E9aWEuc3JjKSYmb2EuaW5jbHVkZXMoIi5nZXRidXR0b24uaW8vd2lkZ2V0L2J1bmRsZS5qcz9pZCIpfHxudWxsIT0oYWE9aWEuc3JjKSYmYWEuaW5jbHVkZXMoIjo5MDAwL2J1bmRsZS5qcz9pZD0iKSl7aWYoZz1pYS5zcmMubWF0Y2goL2lkPShbXiZdKikvKVsxXSxjb25zb2xlLmxvZygiZm91bmQgaGFzaElkOiIsZyksIXdpbmRvdy5HQkJUTi5sb2FkZWRfYnV0dG9uc19oYXNoX2lkcy5pbmNsdWRlcyhnKSl7d2luZG93LkdCQlROLmxvYWRlZF9idXR0b25zX2hhc2hfaWRzLnB1c2goZyksdGE9ImdldGJ1dHRvbi5pbyIsbmE9Imh0dHBzOiIsY29uc29sZS5sb2coIj4gc2hvcnRDb2RlSW5pdCIpLHplKHRhLG5hKSxMZShUZSkudGhlbihmdW5jdGlvbigpe3JldHVybiBsYSgpfSkuY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3J9KSxjLnNjcmlwdElkPWc7YnJlYWt9Y29uc29sZS5sb2coInNraXAgbG9hZGluZyBoYXNoSWQ6ICIuY29uY2F0KGcsIiAoYWxyZWFkeSBsb2FkZWQpIikpfX19Y2F0Y2goZSl7cmEuZShlKX1maW5hbGx5e3JhLmYoKX1jb25zb2xlLmxvZygiPiBsb25nQ29kZUluaXQiKSx3aW5kb3cuV2hXaWRnZXRTZW5kQnV0dG9uPXtpbml0OnplLHJlSW5pdDpmdW5jdGlvbihlLHQsbil7emUoZSx0LG4pLExlKFRlKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGxhKCl9KS5jYXRjaChmdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS5lcnJvcn0pfX07dHJ5e2NvbnNvbGUubG9nKCI+IHRyeSIpLExlKFRlKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGxhKCl9KS5jYXRjaChmdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS5lcnJvcn0pfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoIj4gdHJ5IGVycm9yIixlKX12YXIgbGE9ZnVuY3Rpb24oKXt2YXIgZSx0O0pvJiYoSm8udW5tb3VudCgpLEpvPW51bGwsdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChLbykpJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksYy5zaG93V2lkZ2V0PzAhPT1jLm9yZGVyLmxlbmd0aHx8Zz8oS289ImdiLXdpZGdldC0iLmNvbmNhdChNYXRoLmZsb29yKDk5OTkqTWF0aC5yYW5kb20oKSkpLChlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5zZXRBdHRyaWJ1dGUoImlkIixLbyksZS5zZXRBdHRyaWJ1dGUoInNjcmlwdC1pZCIsZyksZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZSxkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC5uZXh0U2libGluZyksdD1mdW5jdGlvbigpe3JldHVybiBnZSgxZTMpP0guYS5jcmVhdGVFbGVtZW50KHVlLG51bGwsSC5hLmNyZWF0ZUVsZW1lbnQoY2Ese3Jvb3RDb250YWluZXI6ZSxjb250YWluZXJJZDpLb30pKToiIn0sKEpvPXkuYS5jcmVhdGVSb290KGUpKS5yZW5kZXIoSC5hLmNyZWF0ZUVsZW1lbnQodCxudWxsKSkpOmNvbnNvbGUud2FybigiR2V0QnV0dG9uIGlzIGVtcHR5Iik6Y29uc29sZS53YXJuKCJXaWRnZXQgaXMgaGlkZGVuIixnKX0sY2E9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yb290Q29udGFpbmVyLGU9ZS5jb250YWluZXJJZCxuPU9iamVjdChGLnVzZUNvbnRleHQpKFYpLHI9bi5hY3Rpb25zLG49bi5zZXR0aW5ncyxvPShILmEudXNlRWZmZWN0KGZ1bmN0aW9uKCl7d2luZG93LldoV2lkZ2V0U2VuZEJ1dHRvbj13aW5kb3cuV2hXaWRnZXRTZW5kQnV0dG9ufHx7fSx3aW5kb3cuV2hXaWRnZXRTZW5kQnV0dG9uLnNob3dQb3B1cD1mdW5jdGlvbihlKXtyLnNob3dCdXR0b25Qb3B1cChlKX19LFtdKSxuLnNoaWZ0VmVydGljYWwpLGE9bi5zaGlmdEhvcml6b250YWwsaT1uLnBvc2l0aW9uLGw9bi5kaXJlY3Rpb24sYz1uLmFjdGl2YXRvclNpemUsdT1uLmJ1dHRvbkNvbG9yLGw9IlxuICAgIGJvdHRvbTogIi5jb25jYXQobywicHggIWltcG9ydGFudDtcbiAgICAiKS5jb25jYXQoaSwiOiAiKS5jb25jYXQoYSwicHggIWltcG9ydGFudDtcbiAgICAvLyBvcGFjaXR5OiAwO1xuICAgIC8vIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O1xuICAgIHotaW5kZXg6IDE2MDAwMTYwICFpbXBvcnRhbnQ7XG4gICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgdGV4dC1hbGlnbjogIikuY29uY2F0KCJyaWdodCI9PT1pPyJyaWdodCI6ImxlZnQiLCI7XG4gICAgZGlzcGxheTogIikuY29uY2F0KCJyb3ciPT09bCYmImZsZXgiLCI7XG4gICAgYWxpZ24taXRlbXM6ICIpLmNvbmNhdCgicm93Ij09PWwmJiJmbGV4LWVuZCIsIjtcbiAgICBmbGV4LWRpcmVjdGlvbjogIikuY29uY2F0KCJsZWZ0Ij09PWkmJiJyb3ctcmV2ZXJzZSIsIjtcbiAgIiksbz0odC5zZXRBdHRyaWJ1dGUoInN0eWxlIixsKSx7c2hpZnRWZXJ0aWNhbDpvLHNoaWZ0SG9yaXpvbnRhbDphLGFjdGl2YXRvclNpemU6Yyxwb3NpdGlvbjppfSk7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJzdHlsZSIsbCksSC5hLmNyZWF0ZUVsZW1lbnQoSC5hLkZyYWdtZW50LG51bGwsSC5hLmNyZWF0ZUVsZW1lbnQoWm8se2NvbnRhaW5lcklkOmUsc3R5bGVzOm8sc2V0dGluZ3M6bn0pLEguYS5jcmVhdGVFbGVtZW50KHNlLHt0aGVtZTppfSxILmEuY3JlYXRlRWxlbWVudChHcixudWxsKSxILmEuY3JlYXRlRWxlbWVudChLcixudWxsKSxILmEuY3JlYXRlRWxlbWVudChxcixudWxsKSxILmEuY3JlYXRlRWxlbWVudCh5byx7Y29sb3I6dX0pKSl9fV0scj17fSxvLm09bixvLmM9cixvLmQ9ZnVuY3Rpb24oZSx0LG4pe28ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGdldDpufSl9LG8ucj1mdW5jdGlvbihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxvLnQ9ZnVuY3Rpb24odCxlKXtpZigxJmUmJih0PW8odCkpLDgmZSlyZXR1cm4gdDtpZig0JmUmJiJvYmplY3QiPT10eXBlb2YgdCYmdCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoby5yKG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSksMiZlJiYic3RyaW5nIiE9dHlwZW9mIHQpZm9yKHZhciByIGluIHQpby5kKG4scixmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0uYmluZChudWxsLHIpKTtyZXR1cm4gbn0sby5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBvLmQodCwiYSIsdCksdH0sby5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxvLnA9Ii8iLG8oby5zPTE3OCl9KCk7"}},"time_used":8,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":8,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/metform/public/assets/css/style3fd0.css?ver=3.8.2","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.812Z","timestamp":1785128398812,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/metform/public/assets/css/style3fd0.css?ver=3.8.2 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 4781\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"79c7-67c3620e-7141cb7737bab54d;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: d85fe3b67046522e75c1d7cfcb73858b-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":31175,"size_decoded":5353,"mime_type":"text/css","magic":"ASCII text","md5":"781ce4abf7b3c5db96d449fe1322e382","sha1":"f3743f0657e7e5bab1f8d665d341af7fab160185","sha256":"27ca2fa9087e5ca8d4970b1feb5ad0537ec71da9798692d42169ab5e0dd6caa6","sha512":"9dd5e5e5c456e91e1c843cd5bf7c93d771e4ea18b6ab93b739985a1fbba9f56cc4349edfa334d59e04d8731c46d1b54e6030a86b611b8f627f1b2e2eba81b4d0","ssdeep":"384:EwVl7aNkjFVfEO9O9jFp6FBnFyQj+GYgrQ2MUmItAF:lJjFV8O9sFoFBnFyQj+irwUmIw","tlshash":"54e244258d631b80701f4e7d17ebd74826248093d907cdb97acaa6488f8e6554bb3f8a","first_seen":"2026-07-27T03:56:42.585285Z","last_seen":"2026-07-27T05:30:59.82664Z","times_seen":6,"resource_available":false,"data":"QC13ZWJraXQta2V5ZnJhbWVzIG1ldGZvcm0tcmVzcG9uc2VPcGVuIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcgogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcgogICAgfQp9CgpAa2V5ZnJhbWVzIG1ldGZvcm0tcmVzcG9uc2VPcGVuIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcgogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcgogICAgfQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgbWV0Zm9ybS1yZXNwb25zZUNsb3NlIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXIKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGV5KDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGV5KDApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyCiAgICB9Cn0KCkBrZXlmcmFtZXMgbWV0Zm9ybS1yZXNwb25zZUNsb3NlIHsKICAgIGZyb20gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZXkoMSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXIKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGV5KDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGV5KDApOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyCiAgICB9Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBtZXRmb3JtLXpvb20tb3V0LXplcm8gewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkKICAgIH0KfQoKQGtleWZyYW1lcyBtZXRmb3JtLXpvb20tb3V0LXplcm8gewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkKICAgIH0KfQoKQC13ZWJraXQta2V5ZnJhbWVzIG1ldGZvcm0tem9vbS1pbi1mdWxsIHsKICAgIGZyb20gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkKICAgIH0KICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpCiAgICB9Cn0KCkBrZXlmcmFtZXMgbWV0Zm9ybS16b29tLWluLWZ1bGwgewogICAgZnJvbSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKQogICAgfQogICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKICAgIH0KfQoKLm1mLW1haW4tcmVzcG9uc2Utd3JhcFtkYXRhLXNob3c9IjEiXSAubWYtcmVzcG9uc2UtbXNnIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAuNXM7CiAgICBhbmltYXRpb24tZHVyYXRpb246IC41czsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IG1ldGZvcm0tcmVzcG9uc2VPcGVuOwogICAgYW5pbWF0aW9uLW5hbWU6IG1ldGZvcm0tcmVzcG9uc2VPcGVuCn0KCi5tZi1tYWluLXJlc3BvbnNlLXdyYXBbZGF0YS1zaG93PSIwIl0gLm1mLXJlc3BvbnNlLW1zZyB7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogLjVzOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuNXM7CiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBtZXRmb3JtLXJlc3BvbnNlQ2xvc2U7CiAgICBhbmltYXRpb24tbmFtZTogbWV0Zm9ybS1yZXNwb25zZUNsb3NlCn0KCi5tZi1tYWluLXJlc3BvbnNlLXdyYXAgLm1mLXJlc3BvbnNlLW1zZyB7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2MzYzJjMgp9CgoubWYtbWFpbi1yZXNwb25zZS13cmFwOm5vdCgubWZfcHJvX2FjdGl2YXRlZCkgLm1mLXJlc3BvbnNlLW1zZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5tZi1jbG9zZS10aGlzLWZvcm0gewogICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IC42czsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogLjZzOwogICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogbWV0Zm9ybS16b29tLW91dC16ZXJvOwogICAgYW5pbWF0aW9uLW5hbWU6IG1ldGZvcm0tem9vbS1vdXQtemVybwp9CgoubWYtY2xvc2UtdGhpcy1mb3JtPmgyIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAuNXM7CiAgICBhbmltYXRpb24tZHVyYXRpb246IC41czsKICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IG1ldGZvcm0tem9vbS1pbi1mdWxsOwogICAgYW5pbWF0aW9uLW5hbWU6IG1ldGZvcm0tem9vbS1pbi1mdWxsCn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi10aW1lLWlucHV0W3R5cGU9dGltZV06bm90KC52YWx1ZS1mb3VuZCk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGF0dHIocGxhY2Vob2xkZXIpOwogICAgcGFkZGluZy1yaWdodDogMnB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi10aW1lLWlucHV0W3R5cGU9dGltZV06Zm9jdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnICFpbXBvcnRhbnQKfQoKQHN1cHBvcnRzICgtd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZSkgewogICAgLm1mLWlucHV0LXdyYXBwZXIgLm1mLXRpbWUtaW5wdXQgewogICAgICAgIG1pbi13aWR0aDogMTAwJTsKICAgICAgICBtaW4taGVpZ2h0OiA0NXB4OwogICAgICAgIGhlaWdodDogNDVweCAhaW1wb3J0YW50CiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWNoZWNrYm94IC5tZi1pbnB1dC1sYWJlbCB7CiAgICBtYXJnaW4tYm90dG9tOiAtNXB4ICFpbXBvcnRhbnQKfQoKI2VsZW1lbnRvciAubWYtYnRuLXdyYXBlciBhLm1ldGZvcm0tYnRuIHsKICAgIGJhY2tncm91bmQ6ICMzMzdhYjc7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGhlaWdodDogMjAlOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgcGFkZGluZzogMTBweAp9CgoubWYtZm9ybS13cmFwcGVyIHNlY3Rpb24sCi5zaW5nbGUtbWV0Zm9ybS1mb3JtIHNlY3Rpb24gewogICAgcGFkZGluZy10b3A6IDA7CiAgICBwYWRkaW5nLWJvdHRvbTogMAp9CgoubWYtaW5wdXQtc3dpdGNoLWNvbnRyb2wgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5tZi1pbnB1dC1zd2l0Y2gtY29udHJvbD5pbnB1dFt0eXBlPWNoZWNrYm94XSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLm1mLWlucHV0LWNvbnRyb2wgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogLTE7CiAgICBvcGFjaXR5OiAwCn0KCi5tZi1pbnB1dC1zd2l0Y2ggLm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgICBjb250ZW50OiBhdHRyKGRhdGEtZGlzYWJsZSk7CiAgICB3aWR0aDogNTVweDsKICAgIGhlaWdodDogMjVweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZGVkZWQ7CiAgICBsZWZ0OiAwOwogICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGZvbnQtc2l6ZTogMTBweDsKICAgIHBhZGRpbmc6IDNweDsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjRzOwogICAgdHJhbnNpdGlvbjogYWxsIC40czsKICAgIGZsb2F0OiByaWdodDsKICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCn0KCi5tZXRmb3JtLWZvcm0tY29udGVudCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAwOwogICAgb3ZlcmZsb3cteDogY2xpcAp9CgoubWV0Zm9ybS1mb3JtLWNvbnRlbnQgLm1ldGZvcm0tZm9ybS1tYWluLXdyYXBwZXIgLmUtY29udGFpbmVyIHsKICAgIGlzb2xhdGlvbjogdW5zZXQKfQoKLm1mLXRleHQtZWRpdG9yIC5xbC1jb250YWluZXIucWwtc25vdyB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjCn0KCl86Oi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhLApfOmZ1dHVyZSwKOnJvb3QgLm1ldGZvcm0tZm9ybS1jb250ZW50IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDA7CiAgICBvdmVyZmxvdy14OiBpbmhlcml0Cn0KCi5tZi1tdWx0aXN0ZXAtY29udGFpbmVyIC5lbGVtZW50b3ItdG9wLXNlY3Rpb24gLmVsZW1lbnRvci1pbm5lci1zZWN0aW9uIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogaW5oZXJpdAp9CgoubWYtbXVsdGlzdGVwLWNvbnRhaW5lciAuZWxlbWVudG9yLXRvcC1zZWN0aW9uIC5lbGVtZW50b3ItaW5uZXItY29sdW1uIC5lbGVtZW50b3ItZWxlbWVudC1wb3B1bGF0ZWQgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQKfQoKLm1mLW11bHRpc3RlcC1jb250YWluZXIgLmVsZW1lbnRvci10b3Atc2VjdGlvbiAuZWxlbWVudG9yLWlubmVyLWNvbHVtbiAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgbWFyZ2luOiAxMHB4IDAKfQoKLm1mLW11bHRpc3RlcC1jb250YWluZXIgLmUtY29uIC5lLWNvbi1pbm5lciwKLm1mLW11bHRpc3RlcC1jb250YWluZXIgLmUtY29uIC5lLWNvbnRhaW5lci0tcm93LAoubWYtbXVsdGlzdGVwLWNvbnRhaW5lciAuZS1jb250YWluZXItLWNvbHVtbiAuZS1jb24taW5uZXIsCi5tZi1tdWx0aXN0ZXAtY29udGFpbmVyIC5lLWNvbnRhaW5lci0tY29sdW1uIC5lLWNvbnRhaW5lci0tcm93IHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogaW5oZXJpdAp9CgoubWYtcmVzcG9uc2UtbXNnLXdyYXAgewogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBoZWlnaHQgLjQ1cywgb3BhY2l0eSAuNDVzLCB2aXNpYmlsaXR5IC40NXM7CiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgLjQ1cywgb3BhY2l0eSAuNDVzLCB2aXNpYmlsaXR5IC40NXM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5tZi1yZXNwb25zZS1tc2ctd3JhcFtkYXRhLXNob3c9IjAiXSB7CiAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgIG9wYWNpdHk6IDA7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4KfQoKLm1mLXJlc3BvbnNlLW1zZy13cmFwW2RhdGEtc2hvdz0iMSJdIHsKICAgIGhlaWdodDogYXV0bzsKICAgIG9wYWNpdHk6IDE7CiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgbWFyZ2luLWJvdHRvbTogMjBweAp9CgoubWYtcmVzcG9uc2UtbXNnIHsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDE1cHggMzRweDsKICAgIGhlaWdodDogMTAwJQp9Cgoud2YtZXJyb3ItcmVzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGQ3ZGE7CiAgICBib3JkZXItY29sb3I6ICNmNWM2Y2IKfQoKLm1mLXN1Y2Nlc3MtaWNvbiwKLndmLWVycm9yLXJlcyAubWYtYWxlcnQtaWNvbiB7CiAgICBjb2xvcjogIzcyMWMyNDsKICAgIGZvbnQtc2l6ZTogMzBweDsKICAgIG1hcmdpbi1ib3R0b206IDVweAp9CgoubWYtc3VjY2Vzcy1pY29uIHsKICAgIGNvbG9yOiAjMTAxMDEwCn0KCi5tZi1yZXNwb25zZS1tc2cgcCB7CiAgICBmb250LXNpemU6IDE3cHg7CiAgICBsaW5lLWhlaWdodDogMjBweDsKICAgIGNvbG9yOiAjMTAxMDEwOwogICAgbWFyZ2luLWJvdHRvbTogMAp9Cgoud2YtZXJyb3ItcmVzIHAgewogICAgY29sb3I6ICM3MjFjMjQKfQoKLmN1c3RvbS1maWxlLWxhYmVsLAouY3VzdG9tLXNlbGVjdCwKLm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCAtd2Via2l0LWJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dCwgLXdlYmtpdC1ib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQKfQoKLm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMnB4OwogICAgbGVmdDogMnB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTRweDsKICAgIGhlaWdodDogMTRweDsKICAgIGNvbnRlbnQ6ICIiOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2FkYjViZDsKICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjRzOwogICAgdHJhbnNpdGlvbjogYWxsIC40czsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgoubWYtaW5wdXQtc3dpdGNoIGxhYmVsLm1mLWlucHV0LWNvbnRyb2wtbGFiZWwgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbjogMAp9CgoubWYtaW5wdXQtY29udHJvbDpjaGVja2Vkfi5tZi1pbnB1dC1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogICAgY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICMwMDdiZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogICAgY29udGVudDogYXR0cihkYXRhLWVuYWJsZSk7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAp9CgoubWYtaW5wdXQtc3dpdGNoIC5tZi1pbnB1dC1jb250cm9sOmNoZWNrZWR+Lm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKYm9keS50aGVtZS10d2VudHl0d2VudHlvbmUgLm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgIGxlZnQ6IDEycHgKfQoKYm9keS50aGVtZS10d2VudHl0d2VudHlvbmUgLm1mLWlucHV0LXN3aXRjaCAubWYtaW5wdXQtY29udHJvbDpjaGVja2Vkfi5tZi1pbnB1dC1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgICBsZWZ0OiBjYWxjKDU1cHggLSAoKDU1cHggLyAyKSAtIDdweCkgKyA4cHgpICFpbXBvcnRhbnQKfQoKLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0LWhlbHAgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IC45ZW07CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBvcGFjaXR5OiAuNzsKICAgIGNsZWFyOiBib3RoOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgoubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQgewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAxMnB4OwogICAgaGVpZ2h0OiBhdXRvOwogICAgYm9yZGVyLXdpZHRoOiAxcHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLWNvbG9yOiAjZWFlYWVhOwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgYmFja2dyb3VuZDogMCAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjJzIGxpbmVhcjsKICAgIHRyYW5zaXRpb246IGFsbCAuMnMgbGluZWFyOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgbGluZS1oZWlnaHQ6IDIxcHg7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Cn0KCi5tZi1mb3JtLXdyYXBwZXIgLm1ldGZvcm0tZm9ybS1jb250ZW50IC5tZXRmb3JtLWZvcm0tbWFpbi13cmFwcGVyIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dCB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmUKfQoKLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0OmZvY3VzLAoubWYtaW5wdXQtd3JhcHBlci5tZi1maWVsZC1lcnJvciAubWYtaW5wdXQsCi5tZi1pbnB1dC13cmFwcGVyLm1mLWZpZWxkLWVycm9yIC5tZi1pbnB1dDpmb2N1cyB7CiAgICBvdXRsaW5lOiAwCn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dDpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICM0Mjg1ZjQ3OAp9CgoubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiAjYzljMWMxOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc2l6ZTogMTRweAp9CgoubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICNjOWMxYzE7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zaXplOiAxNHB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogI2M5YzFjMTsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICNjOWMxYzE7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zaXplOiAxNHB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgY29sb3I6ICNjOWMxYzE7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zaXplOiAxNHB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogI2M5YzFjMTsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICNjOWMxYzE7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1zaXplOiAxNHB4Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci1mb3JtLWdyb3VwPi5hdHRyLWNvbnRyb2wtbGFiZWwsCiAgICAuYXR0ci1mb3JtLWdyb3VwPi5tZi1pbnB1dCwKICAgIC5tZi1pbnB1dC13cmFwcGVyPi5tZi1jYXB0Y2hhLWlucHV0LXdyYXBwZXIsCiAgICAubWYtaW5wdXQtd3JhcHBlcj4ubWYtY2hlY2tib3gsCiAgICAubWYtaW5wdXQtd3JhcHBlcj4ubWYtaW1hZ2Utc2VsZWN0LAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLWlucHV0LWxhYmVsLAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLWlucHV0Om5vdCgubWYtbGVmdC1wYXJlbnQpLAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLXBheW1lbnQtbWV0aG9kLAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLXJhZGlvLAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLXJlcGVhdGVyLWZpZWxkLWxhYmVsLAogICAgLm1mLWlucHV0LXdyYXBwZXI+Lm1mLXNpZ25hdHVyZSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWluLXdpZHRoOiAxMDAlCiAgICB9Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC1sYWJlbCwKLm1mLXJlcGVhdGVyLWZpZWxkLWxhYmVsIHsKICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICBjb2xvcjogIzAwMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxNnB4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dCwKLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0LWxhYmVsIHsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKfQoKZGl2Lm1mLWlucHV0LXdyYXBwZXI+dGV4dGFyZWEubWYtaW5wdXQgewogICAgcGFkZGluZzogMTVweAp9CgouaXJzLS1yb3VuZCAuaXJzLW1heCwKLmlycy0tcm91bmQgLmlycy1taW4gewogICAgZGlzcGxheTogbm9uZQp9CgouaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm11bHRpLW9wdGlvbi1pbnB1dC10eXBlIHsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKfQoKLm1mLWNoZWNrYm94LW9wdGlvbiBpbnB1dFt0eXBlPWNoZWNrYm94XSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLm1mLWNoZWNrYm94LW9wdGlvbjpub3QoLmRpc2FibGVkKSBsYWJlbCB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm1mLWNoZWNrYm94LW9wdGlvbiBpbnB1dFt0eXBlPWNoZWNrYm94XStzcGFuOjpiZWZvcmUgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgY29udGVudDogIlxmMGM4IjsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSIgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGJvcmRlcjogbm9uZTsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGNvbG9yOiAjNWY3YmZmOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIHdpZHRoOiAyNXB4OwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0b3A6IDJweAp9CgoubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9Y2hlY2tib3hdK3NwYW4gewogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgoubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrc3Bhbjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YSI7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXI6IG5vbmU7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBjb2xvcjogIzVmN2JmZgp9CgoubWYtcmFkaW8tb3B0aW9uIGlucHV0W3R5cGU9cmFkaW9dIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9CgoubWYtY2hlY2tib3gtb3B0aW9uLAoubWYtcmFkaW8tb3B0aW9uIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHgKfQoKLm1mLXJhZGlvLW9wdGlvbiBpbnB1dFt0eXBlPXJhZGlvXStzcGFuOjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTExIjsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSIgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGJvcmRlcjogbm9uZTsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGNvbG9yOiAjNWY3YmZmOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIHdpZHRoOiAyNXB4OwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0b3A6IDJweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgoubWYtcmFkaW8tb3B0aW9uIGlucHV0W3R5cGU9cmFkaW9dK3NwYW4gewogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgoubWYtcmFkaW8tb3B0aW9uIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrc3Bhbjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1OCI7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXI6IG5vbmU7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBjb2xvcjogIzVmN2JmZgp9CgoubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQtc2VsZWN0IHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudAp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX2NvbnRyb2wgewogICAgbWluLWhlaWdodDogMDsKICAgIHBhZGRpbmc6IDEycHg7CiAgICBib3JkZXItd2lkdGg6IDA7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IG5vbmUgIWltcG9ydGFudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYWVhZWE7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX2NvbnRyb2w6aG92ZXIgewogICAgYm9yZGVyOiAxcHggc29saWQgI2VhZWFlYQp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX2luZGljYXRvci1zZXBhcmF0b3IgewogICAgZGlzcGxheTogbm9uZQp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX3ZhbHVlLWNvbnRhaW5lciwKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X192YWx1ZS1jb250YWluZXIgaW5wdXQgewogICAgcGFkZGluZzogMAp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgY29sb3I6IGluaGVyaXQKfQoKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19pbmRpY2F0b3JzIHsKICAgIG1hcmdpbi1yaWdodDogMnB4Cn0KCi5tZi1pbnB1dC1tdWx0aXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX2luZGljYXRvcnMgewogICAgbWFyZ2luLXJpZ2h0OiAxNXB4Cn0KCi5tZi1pbnB1dC1tdWx0aXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX2Ryb3Bkb3duLWluZGljYXRvciwKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19pbmRpY2F0b3IgewogICAgcGFkZGluZzogMDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItd2lkdGg6IDVweCA0cHggMDsKICAgIGJvcmRlci1jb2xvcjogY3VycmVudENvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50Cn0KCi5tZi1pbnB1dC1tdWx0aXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX2NvbnRyb2wtLW1lbnUtaXMtb3BlbiAubWZfbXVsdGlzZWxlY3RfX2Ryb3Bkb3duLWluZGljYXRvciwKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19jb250cm9sLS1tZW51LWlzLW9wZW4gLm1mX3NlbGVjdF9faW5kaWNhdG9yIHsKICAgIGJvcmRlci13aWR0aDogMCA0cHggNXB4OwogICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCBjdXJyZW50Q29sb3IKfQoKLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fZHJvcGRvd24taW5kaWNhdG9yPnN2ZywKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19pbmRpY2F0b3I+c3ZnIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19tZW51IHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luOiAwOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5tZi1pbnB1dC1zZWxlY3QgLm1mX3NlbGVjdF9fbWVudT5kaXYgewogICAgb3ZlcmZsb3cteDogaGlkZGVuCn0KCi5tZi1pbnB1dC1zZWxlY3QgLm1mX3NlbGVjdF9fbWVudS1saXN0IHsKICAgIHBhZGRpbmc6IDAKfQoKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19vcHRpb24gewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyOiAxcHggc29saWQgI2VhZWFlYQp9CgoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX29wdGlvbi5tZl9zZWxlY3RfX29wdGlvbi0taXMtZm9jdXNlZCwKLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19vcHRpb24ubWZfc2VsZWN0X19vcHRpb24tLWlzLXNlbGVjdGVkLAoubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX29wdGlvbjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwCn0KCi5tZi1pbnB1dC1zZWxlY3QgLm1mX3NlbGVjdF9fY29udHJvbC5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgewogICAgYm9yZGVyLWNvbG9yOiAjNDI4NWY0Nzg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0Cn0KCi5tZi1pbnB1dC5tZi1pbnB1dC1zZWxlY3QgewogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhCn0KCi5tZi1pbnB1dC1zZWxlY3QgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRvcDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyMnB4KTsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICB0cmFuc2Zvcm06IG5vbmUKfQoKLm1mLWlucHV0LXdyYXBwZXIgc2VsZWN0Lm1mLWlucHV0LWRyb3Bkb3duIHsKICAgIGJvcmRlcjogbm9uZTsKICAgIHBhZGRpbmc6IDE1cHggMjVweDsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgIC1vLWFwcGVhcmFuY2U6IG5vbmU7CiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgICBhcHBlYXJhbmNlOiBub25lOwogICAgYm9yZGVyLXdpZHRoOiAxcHg7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLWNvbG9yOiAjZWFlYWVhCn0KCi5tZi1pbnB1dC13cmFwcGVyIHNlbGVjdC5tZi1pbnB1dC1kcm9wZG93biBvcHRpb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGNvbG9yOiAjMjIyOwogICAgZm9udC1zaXplOiAxNXB4Cn0KCi5tZi1pbnB1dC1zd2l0Y2gtY29udHJvbC5tZi1pbnB1dC1zd2l0Y2gubWYtaW5wdXQgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICB2ZXJ0aWNhbC1hbGlnbjogLXdlYmtpdC1iYXNlbGluZS1taWRkbGU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiAwCn0KCi5tZi1pbnB1dC13cmFwcGVyIC5yYW5nZS1zbGlkZXIgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDEwMCUKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgewogICAgd2lkdGg6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmNGY5Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwOjpiZWZvcmUsCi5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXI6OmJlZm9yZSwKLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2Utc2VsZWN0ZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzFmYjc4Nwp9CgoubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWZiNzg3OwogICAgYm9yZGVyOiAxcHggc29saWQgIzFmYjc4NzsKICAgIHRvcDogaW5oZXJpdDsKICAgIGJvdHRvbTogMThweDsKICAgIGxlZnQ6IC01MCU7CiAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkKfQoKLm1ldGZvcm0tYnRuIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0Mjg1ZjQ7CiAgICBib3JkZXI6IG5vbmU7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMTZweCA0MHB4OwogICAgZm9udC1zaXplOiAxNnB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDVweCA1cHggMCByZ2JhKDY2LCAxMzMsIDI0NCwgLjMpOwogICAgYm94LXNoYWRvdzogMCA1cHggNXB4IDAgcmdiYSg2NiwgMTMzLCAyNDQsIC4zKTsKICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjRzOwogICAgdHJhbnNpdGlvbjogYWxsIC40czsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUKfQoKLm1ldGZvcm0tYnRuOmZvY3VzLAoubWV0Zm9ybS1idG46aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzQyODVmNDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIG91dGxpbmU6IDAKfQoKYnV0dG9uLm1ldGZvcm0tYnRuLApidXR0b24ubWV0Zm9ybS1idG46bm90KC50b2dnbGUpIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0Mjg1ZjQKfQoKYnV0dG9uLm1ldGZvcm0tYnRuOmZvY3VzLApidXR0b24ubWV0Zm9ybS1idG46aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzQyODVmNAp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLm1mLWJ0bi0tbW9iaWxlLWp1c3RpZnkgLm1ldGZvcm0tYnRuIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAubWYtYnRuLS10YWJsZXQtanVzdGlmeSAubWV0Zm9ybS1idG4gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEwMjVweCkgewogICAgLm1mLWJ0bi0tanVzdGlmeSAubWV0Zm9ybS1idG4gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCi5tZXRmb3JtLXN1Ym1pdC1idG4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMAp9CgoubWV0Zm9ybS1zdWJtaXQtYnRuOjphZnRlciwKLm1ldGZvcm0tc3VibWl0LWJ0bjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgd2lkdGg6IDIycHg7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBtYXJnaW46IC0xMXB4IDAgMCAtMTFweDsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6IGN1cnJlbnRDb2xvcjsKICAgIGJvcmRlci13aWR0aDogMDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgLjNzIGVhc2U7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zcyBlYXNlCn0KCi5tZXRmb3JtLXN1Ym1pdC1idG5bZGlzYWJsZWRdOjphZnRlciwKLm1ldGZvcm0tc3VibWl0LWJ0bltkaXNhYmxlZF06OmJlZm9yZSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAuMTVzOwogICAgdHJhbnNpdGlvbi1kZWxheTogLjE1cwp9CgoubWV0Zm9ybS1zdWJtaXQtYnRuOjpiZWZvcmUgewogICAgYm9yZGVyLXdpZHRoOiAycHgKfQoKLm1ldGZvcm0tc3VibWl0LWJ0bltkaXNhYmxlZF06OmJlZm9yZSB7CiAgICBvcGFjaXR5OiAuMjUKfQoKLm1ldGZvcm0tc3VibWl0LWJ0bjo6YWZ0ZXIgewogICAgYm9yZGVyLXRvcC13aWR0aDogMnB4OwogICAgLXdlYmtpdC1hbmltYXRpb246IHN1Ym1pdHNwaW4gLjU1cyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IHN1Ym1pdFNwaW4gLjU1cyBsaW5lYXIgaW5maW5pdGUKfQoKLm1ldGZvcm0tc3VibWl0LWJ0bj5zcGFuIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzIGVhc2UgLjE1czsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjE1cyBlYXNlIC4xNXMKfQoKLm1ldGZvcm0tc3VibWl0LWJ0bltkaXNhYmxlZF0+c3BhbiB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwOwogICAgdHJhbnNpdGlvbi1kZWxheTogMAp9CgpALXdlYmtpdC1rZXlmcmFtZXMgc3VibWl0U3BpbiB7CiAgICB0byB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykKICAgIH0KfQoKQGtleWZyYW1lcyBzdWJtaXRTcGluIHsKICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKQogICAgfQp9CgoubWYtaW5wdXQtd3JhcHBlciAuaXRpIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5tZi1pbnB1dC13cmFwcGVyPi5pdGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDEwMCUKfQoKLm1mLWlucHV0LXdyYXBwZXIgLml0aSAubWYtaW5wdXQgewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudAp9CgoubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmNmY2Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5pdGkgLml0aV9fZmxhZy1jb250YWluZXIgewogICAgZGlzcGxheTogbm9uZQp9CgoubWYtaW5wdXQtd3JhcHBlciAuaXRpPi5pdGlfX2ZsYWctY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5mbGF0cGlja3ItY2FsZW5kYXIgewogICAgbWFyZ2luLXRvcDogOHB4Cn0KCi5mbGF0cGlja3ItbW9udGggewogICAgbWFyZ2luLXRvcDogM3B4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyPi5mbGF0cGlja3Itd3JhcHBlciB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouZmxhdHBpY2tyLXdyYXBwZXIgc2VsZWN0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouZmxhdHBpY2tyLWNhbGVuZGFyIC5mbGF0cGlja3ItdGltZSB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZS5lbGVtZW50b3ItZWxlbWVudC1lZGl0LW1vZGUgLmZsYXRwaWNrci1jYWxlbmRhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZS5lbGVtZW50b3ItZWxlbWVudC1lZGl0LW1vZGUgLmZsYXRwaWNrci1jYWxlbmRhciB7CiAgICB0b3A6IDEwMCUgIWltcG9ydGFudDsKICAgIGxlZnQ6IDAgIWltcG9ydGFudAp9CgoubWYtcmF0aW5ncyB7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm1mLXJhdGluZ3M+aW5wdXQgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5tZi1yYXRpbmdzPmxhYmVsIHsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgoubWYtcmF0aW5ncz5sYWJlbDpub3QoOmxhc3QtY2hpbGQpIHsKICAgIHBhZGRpbmctcmlnaHQ6IDVweAp9CgoubWYtcmF0aW5ncy5pcy1zZWxlY3RlZD5sYWJlbCwKLm1mLXJhdGluZ3M6bm90KC5pcy1zZWxlY3RlZCk6aG92ZXI+bGFiZWwgewogICAgY29sb3I6ICNmZmRiNzIKfQoKLm1mLXJhdGluZ3MuaXMtc2VsZWN0ZWQ6bm90KDpob3Zlcik+aW5wdXQ6Y2hlY2tlZCtsYWJlbH5sYWJlbCwKLm1mLXJhdGluZ3MuaXMtc2VsZWN0ZWQ+bGFiZWw6aG92ZXJ+bGFiZWwsCi5tZi1yYXRpbmdzOm5vdCguaXMtc2VsZWN0ZWQpLAoubWYtcmF0aW5nczpub3QoLmlzLXNlbGVjdGVkKT5sYWJlbDpob3Zlcn5sYWJlbCB7CiAgICBjb2xvcjogI2NjYwp9CgoubWYtaW5wdXQtZmlsZS11cGxvYWQgewogICAgd2lkdGg6IC4xcHg7CiAgICBoZWlnaHQ6IC4xcHg7CiAgICBvcGFjaXR5OiAwOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgcG9zaXRpb246IGFic29sdXRlCn0KCi5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCB7CiAgICBjb2xvcjogI2ZmZjsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIHBhZGRpbmc6IDVweCAxNXB4OwogICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94OwogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4Cn0KCi5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBpIHsKICAgIGZvbnQtc2l6ZTogMThweAp9CgoubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHsKICAgIG1heC13aWR0aDogMThweDsKICAgIGhlaWdodDogYXV0bzsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKfQoKLm1mLWZpbGUtbmFtZSBzcGFuIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTVweAp9CgoubWYtaW5wdXQtd3JhcHBlciAuZXJyb3IgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLm1mLWlucHV0LW11bHRpc2VsZWN0LAoubWYtaW5wdXQtc2VsZWN0IHsKICAgIHBhZGRpbmc6IDA7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm1mLWlucHV0Lm1mLWlucHV0LW11bHRpc2VsZWN0IHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQKfQoKLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fY29udHJvbCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWFlYWVhOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fY29udHJvbDpmb2N1cywKLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fY29udHJvbDpob3ZlciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWFlYWVhOwogICAgb3V0bGluZTogMDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmUKfQoKLm1mX211bHRpc2VsZWN0X19pbmRpY2F0b3Itc2VwYXJhdG9yIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLm1mX211bHRpc2VsZWN0X19vcHRpb24ubWZfbXVsdGlzZWxlY3RfX29wdGlvbi0taXMtZm9jdXNlZCwKLm1mX211bHRpc2VsZWN0X19vcHRpb246aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMAp9CgoubWZfbXVsdGlzZWxlY3RfX29wdGlvbi5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uLS1pcy1mb2N1c2VkIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKLm1mX211bHRpc2VsZWN0X19vcHRpb24gewogICAgYm9yZGVyOiAxcHggc29saWQgI2VhZWFlYTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBmb250LXNpemU6IDE1cHgKfQoKLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fbWVudSB7CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgoubWYtaW5wdXQtbXVsdGlzZWxlY3QgLm1mX211bHRpc2VsZWN0X19tZW51LWxpc3QgewogICAgcGFkZGluZzogMAp9CgoubWYtaW5wdXQtbXVsdGlzZWxlY3QgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogI2M5YzFjMQp9CgoubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYWVhZWE7CiAgICBjb2xvcjogI2M5YzFjMQp9CgoubWZfbXVsdGlzZWxlY3RfX2NvbnRyb2wgLm1mX211bHRpc2VsZWN0X192YWx1ZS1jb250YWluZXIgewogICAgcGFkZGluZzogOHB4IDEycHgKfQoKLm1mX211bHRpc2VsZWN0X19jb250cm9sIC5tZl9tdWx0aXNlbGVjdF9fdmFsdWUtY29udGFpbmVyPmRpdjpsYXN0LWNoaWxkIHsKICAgIGhlaWdodDogMjVweAp9CgoubWYtaW5wdXQtbXVsdGlzZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZSB7CiAgICBtYXJnaW46IDAgNXB4IDAgMAp9CgoubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUgewogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50Cn0KCi5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50Cn0KCi5tZi1pbnB1dC1tdWx0aXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX2lucHV0PmlucHV0IHsKICAgIG1pbi1oZWlnaHQ6IDAKfQoKLm1mLWlucHV0Lm1mLWlucHV0LXN1bW1hcnkgewogICAgcGFkZGluZzogMTBweCAxM3B4IDEzcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyLXdpZHRoOiAwOwogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDFweCAwIHRyYW5zcGFyZW50OwogICAgYm94LXNoYWRvdzogMCAwIDFweCAwIHRyYW5zcGFyZW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQKfQoKLm1mLWlucHV0Lm1mLWlucHV0LXN1bW1hcnk6aGFzKGxpKSB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxcHggMCBncmV5OwogICAgYm94LXNoYWRvdzogMCAwIDFweCAwIGdyZXk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmOWZmCn0KCi5tZi1lbnRyeS1kYXRhIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgd29yZC1icmVhazogYnJlYWstd29yZAp9CgoubWYtZW50cnktZGF0YT5saTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDAKfQoKLm1mLWVudHJ5LWRhdGE+bGk+c3Ryb25nIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogOHB4IDA7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLm1mLWVudHJ5LWRhdGE+bGk+c3BhbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMTJweDsKICAgIGhlaWdodDogYXV0bzsKICAgIGJvcmRlci13aWR0aDogMXB4OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci1jb2xvcjogI2VhZWFlYTsKICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgIGJhY2tncm91bmQ6IDAgMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZlZmU7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC4ycyBsaW5lYXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjJzIGxpbmVhcjsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAyMXB4OwogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtZmllbGQtZXJyb3IgLmVycm9yIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9CgouZy1yZWNhcHRjaGE+ZGl2IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDAKfQoKLmctcmVjYXB0Y2hhPmRpdjo6YWZ0ZXIsCi5nLXJlY2FwdGNoYT5kaXY6OmJlZm9yZSwKLmctcmVjYXB0Y2hhPmRpdj5kaXY6OmFmdGVyLAouZy1yZWNhcHRjaGE+ZGl2PmRpdjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItY29sb3I6ICNkM2QzZDM7CiAgICBib3JkZXItd2lkdGg6IDA7CiAgICB6LWluZGV4OiAwCn0KCi5nLXJlY2FwdGNoYT5kaXY6OmJlZm9yZSB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgYm90dG9tOiAycHg7CiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4Cn0KCi5nLXJlY2FwdGNoYT5kaXY6OmFmdGVyIHsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiAycHg7CiAgICBib3R0b206IDJweDsKICAgIGJvcmRlci1yaWdodC13aWR0aDogMXB4Cn0KCi5nLXJlY2FwdGNoYT5kaXY+ZGl2OjpiZWZvcmUgewogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAycHg7CiAgICBib3JkZXItdG9wLXdpZHRoOiAxcHgKfQoKLmctcmVjYXB0Y2hhPmRpdj5kaXY6OmFmdGVyIHsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMnB4OwogICAgYm90dG9tOiAycHg7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHgKfQoKLmctcmVjYXB0Y2hhKy5hdHRyLWFsZXJ0IHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmctcmVjYXB0Y2hhOmVtcHR5Ky5hdHRyLWFsZXJ0IHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQKfQoKLm1mLWNhcHRjaGEtaW5wdXQtd3JhcHBlci5tZi1jYXB0Y2hhLWJsb2NrPmkgewogICAgcGFkZGluZy1sZWZ0OiAyNXB4Cn0KCmltZy5tZi1pbnB1dC5tZi1jYXB0Y2hhLWltYWdlIHsKICAgIG1heC13aWR0aDogMjAwcHg7CiAgICBib3JkZXI6IG5vbmU7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IHVuc2V0OwogICAgYm94LXNpemluZzogdW5zZXQ7CiAgICBiYWNrZ3JvdW5kOiAwIDA7CiAgICBwYWRkaW5nOiAwOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrCn0KCi5tZi1jYXB0Y2hhLWJsb2NrPmltZy5tZi1pbnB1dC5tZi1jYXB0Y2hhLWltYWdlIHsKICAgIG1hcmdpbjogNXB4IDAgNXB4IDAKfQoKLm1mLWNhcHRjaGEtaW5saW5lPmltZy5tZi1pbnB1dC5tZi1jYXB0Y2hhLWltYWdlIHsKICAgIG1hcmdpbjogMCA1cHggMCAwCn0KCi5tZi1jYXB0Y2hhLWlucHV0LXdyYXBwZXIubWYtY2FwdGNoYS1pbmxpbmUgewogICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB3aWR0aDogMTAwJQp9CgoubWYtY2FwdGNoYS1pbnB1dC13cmFwcGVyLm1mLWNhcHRjaGEtaW5saW5lPmkgewogICAgbWFyZ2luLWxlZnQ6IDI1cHggIWltcG9ydGFudDsKICAgIC1tcy1mbGV4LW9yZGVyOiAxOwogICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjsKICAgIG9yZGVyOiAxCn0KCi5tZi1yZWZyZXNoLWNhcHRjaGE6OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMWUiOwogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLm1mLWVycm9yLW1lc3NhZ2UgewogICAgZGlzcGxheTogYmxvY2sKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiByZWQKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19zbGlkZXIgewogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogICAgYXBwZWFyYW5jZTogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDRweCBzb2xpZCAjMDAwOwogICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAxNXB4OwogICAgbWFyZ2luLWxlZnQ6IC03LjVweDsKICAgIG1hcmdpbi10b3A6IC0xMXB4OwogICAgb3V0bGluZTogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIGJveC1zaGFkb3cgLjNzIGVhc2Utb3V0OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAuM3MgZWFzZS1vdXQ7CiAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAuM3MgZWFzZS1vdXQ7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0LCBib3gtc2hhZG93IC4zcyBlYXNlLW91dDsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIGJveC1zaGFkb3cgLjNzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIC13ZWJraXQtYm94LXNoYWRvdyAuM3MgZWFzZS1vdXQ7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIC4zcyBlYXNlLW91dCwgYm94LXNoYWRvdyAuM3MgZWFzZS1vdXQsIC13ZWJraXQtdHJhbnNmb3JtIC4zcyBlYXNlLW91dDsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIGJveC1zaGFkb3cgLjNzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7CiAgICB3aWR0aDogMTVweAp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3NsaWRlcjpmb2N1cyB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDVweCByZ2JhKDYzLCA4MSwgMTgxLCAuMik7CiAgICBib3gtc2hhZG93OiAwIDAgMCA1cHggcmdiYSg2MywgODEsIDE4MSwgLjIpCn0KCi5pbnB1dC1yYW5nZS0tZGlzYWJsZWQgLmlucHV0LXJhbmdlX19zbGlkZXIgewogICAgYmFja2dyb3VuZDogI2NjYzsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICB0cmFuc2Zvcm06IG5vbmUKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19zbGlkZXItY29udGFpbmVyIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbGVmdCAuM3MgZWFzZS1vdXQ7CiAgICB0cmFuc2l0aW9uOiBsZWZ0IC4zcyBlYXNlLW91dAp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsIHsKICAgIGNvbG9yOiAjYWFhOwogICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbi1zZXJpZjsKICAgIGZvbnQtc2l6ZTogLjhyZW07CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXAKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC0tbWF4LAoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLS1taW4gewogICAgYm90dG9tOiAtMS40cmVtOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogbm9uZQp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLS1taW4gewogICAgbGVmdDogMAp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLS1tYXggewogICAgcmlnaHQ6IDAKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC0tdmFsdWUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm90dG9tOiAyMHB4Cn0KCi5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIHsKICAgIGxlZnQ6IC01MCU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogICAgd2lkdGg6IDM2cHg7CiAgICBoZWlnaHQ6IDIwcHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjb2xvcjogI2ZmZjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDNweAp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lcjo6YmVmb3JlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogLTNweDsKICAgIGxlZnQ6IDUwJTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiA2cHg7CiAgICBoZWlnaHQ6IDZweDsKICAgIG1hcmdpbi1sZWZ0OiAtM3B4OwogICAgY29udGVudDogIiI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKQp9CgoubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLS1tYXggLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgbGVmdDogNTAlCn0KCi5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fdHJhY2sgewogICAgYmFja2dyb3VuZDogI2YxZjRmOTsKICAgIGJvcmRlci1yYWRpdXM6IC4zcmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDhweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbGVmdCAuM3MgZWFzZS1vdXQsIHdpZHRoIC4zcyBlYXNlLW91dDsKICAgIHRyYW5zaXRpb246IGxlZnQgLjNzIGVhc2Utb3V0LCB3aWR0aCAuM3MgZWFzZS1vdXQKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlLS1kaXNhYmxlZCAuaW5wdXQtcmFuZ2VfX3RyYWNrIHsKICAgIGJhY2tncm91bmQ6ICNmMWY0ZjkKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYmFja2dyb3VuZCB7CiAgICBsZWZ0OiAwOwogICAgbWFyZ2luLXRvcDogLS4xNXJlbTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiA1MCUKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICMwMDAKfQoKLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlIHsKICAgIGhlaWdodDogMXJlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlCn0KCi5tZi1jb25kaXRpb24tLWhpZGRlbiwKW21mLWNvbmRpdGlvbi1oaWRkZW49dHJ1ZV0gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgdmlzaWJpbGl0eTogaGlkZGVuCn0="}},"time_used":94,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/2023/12/bg-hero-section.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.147Z","timestamp":1785128399147,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/2023/12/bg-hero-section.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/post-95fea.css?ver=1706574923\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\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\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: image/webp\r\ncontent-length: 3066\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 682a22754d092c5a9e0f1acac7fd1da5-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.014\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":3066,"size_decoded":3388,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"a4eda3fbadab61e7aafc89f30a05c4c2","sha1":"3886b2cbdf94bf8ebf4576d152405189b4ae9b36","sha256":"2176468dcd1586105921061ae125eec08010dfbd3cae37730bae0bf2140dffc7","sha512":"a709a2bc516bed260026e0de4ecf69683598eae865803e5d0827eb17ef4f2798b5b4191be28ac231d4598e8a9b518e672648e3554a6c2d733862b43f13029217","ssdeep":"","tlshash":"99513c3ab7a6a03ddb5e6bb99c4256f7704cd20a53fc214e1401c4211919dde7f8c1cc","first_seen":"2026-07-27T03:56:42.605489Z","last_seen":"2026-07-27T05:01:06.146868Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":46,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":46,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/post-665fea.css?ver=1706574923","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.815Z","timestamp":1785128398815,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/elementor/css/post-665fea.css?ver=1706574923 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 1300\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 20:43:03 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"3f31-67c3620e-306cf584a7889740;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 461815\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: df11e4fdd526b954d5164a2f4c8db2b8-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.019\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":16177,"size_decoded":1872,"mime_type":"text/css","magic":"ASCII text, with CRLF line terminators","md5":"5a01bf0782cd155d3d8db96e9958ac45","sha1":"b56102215a58dfead3ea0450eff23e44f27d1438","sha256":"7e8b7b25203411b50fccb8cfd9a6d2636da2cfd8ff45830a303fee5e6ce686bd","sha512":"39eed4ccf03b13f565f92df923875a348d9009acf81c31bb5179612e751c2f12236355fa45c8f263d3b661f833c8f71683850427d0493c1726007f46a6cc81e1","ssdeep":"192:uRMkxiVueXYa3m3PXvBC+nhdVf73TC8mkpcCJCr6CxI/Qxf/mk50oubdZ1VxVR:ui4iF22ubdZl","tlshash":"c3724644bd1362a6b02f26af1b83c78c6c3599d7c9bc2589f0e89407b7b4e11b7d1c96","first_seen":"2026-07-27T03:56:42.540491Z","last_seen":"2026-07-27T05:30:59.801691Z","times_seen":6,"resource_available":false,"data":"LmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNjgwZjY1ZCB7DQogICAgLS1kaXNwbGF5OiBmbGV4Ow0KICAgIC0tZmxleC1kaXJlY3Rpb246IHJvdzsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7DQogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogMTAwJTsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAxOw0KICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOw0KICAgIC0tZ2FwOiAwcHggMHB4Ow0KICAgIC0tYmFja2dyb3VuZC10cmFuc2l0aW9uOiAwLjNzOw0KICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4Ow0KICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsNCiAgICAtLXBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7DQogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTcyM2FjMiB7DQogICAgLS1kaXNwbGF5OiBmbGV4Ow0KICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7DQogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOw0KICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOw0KICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7DQogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7DQogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4Ow0KICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsNCiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Ow0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05NzIzYWMyLmUtY29uIHsNCiAgICAtLWZsZXgtZ3JvdzogMDsNCiAgICAtLWZsZXgtc2hyaW5rOiAwOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dCwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7DQogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLWJhciwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLmlycy0tcm91bmQgLmlycy1mcm9tLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLXRvLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsNCiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsNCiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsNCiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC13cmFwcGVyIHsNCiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgew0KICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsNCiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7DQogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnMgew0KICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtbXVsdGlzZWxlY3QgLm1mX211bHRpc2VsZWN0X19jb250cm9sIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDIwMTAxMDA7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC1zZWxlY3Q+Lm1mX3NlbGVjdF9fY29udHJvbCwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LW11bHRpc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fY29udHJvbCwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19vcHRpb24gew0KICAgIGJvcmRlci1zdHlsZTogc29saWQ7DQogICAgYm9yZGVyLXdpZHRoOiAycHggMnB4IDJweCAycHg7DQogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0OmhvdmVyLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7DQogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7DQogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsOmhvdmVyIHsNCiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dDpob3ZlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgew0KICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggew0KICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7DQogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6Zm9jdXMsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsNCiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsNCiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7DQogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgew0KICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggew0KICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLTFjZTZhZTUpOw0KICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7DQogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAuaW5wdXQtcmFuZ2UgLmlucHV0LXJhbmdlX190cmFjayB7DQogICAgYm9yZGVyLXJhZGl1czogNDBweDsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQgew0KICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgew0KICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LXNlbGVjdD4ubWZfc2VsZWN0X19jb250cm9sLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtbXVsdGlzZWxlY3QgLm1mX211bHRpc2VsZWN0X19jb250cm9sLA0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX29wdGlvbiwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7DQogICAgYm9yZGVyLXJhZGl1czogNDBweDsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0OjpwbGFjZWhvbGRlciwNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7DQogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsNCiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtd2VpZ2h0KTsNCiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsNCiAgICBjb2xvcjogI2M5YzFjMTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsNCiAgICBjb2xvcjogI2M5YzFjMTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7DQogICAgY29sb3I6ICNjOWMxYzE7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsNCiAgICBjb2xvcjogI2M5YzFjMTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsNCiAgICBjb2xvcjogI2M5YzFjMTsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgew0KICAgIGNvbG9yOiAjYzljMWMxOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7DQogICAgY29sb3I6ICNjOWMxYzE7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7DQogICAgY29sb3I6ICNjOWMxYzE7DQp9DQoNCi5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgew0KICAgIGNvbG9yOiAjYzljMWMxOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgew0KICAgIGNvbG9yOiAjYzljMWMxOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1lcnJvci1tZXNzYWdlIHsNCiAgICBjb2xvcjogI0ZGMDAwMDsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtY2VjOGZlNiB7DQogICAgLS1kaXNwbGF5OiBmbGV4Ow0KICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7DQogICAgLS1jb250YWluZXItd2lkZ2V0LWhlaWdodDogaW5pdGlhbDsNCiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOw0KICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOw0KICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7DQogICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwcHg7DQogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4Ow0KICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsNCiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMHB4Ow0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mMzE2ZGRiIC5tZi1idG4td3JhcGVyIHsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mMzE2ZGRiIC5tZXRmb3JtLWJ0biB7DQogICAgcGFkZGluZzogMTNweCAyMHB4IDEzcHggMjBweDsNCiAgICBjb2xvcjogI2ZmZmZmZjsNCiAgICBib3JkZXItc3R5bGU6IG5vbmU7DQogICAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDQwcHggNDBweDsNCn0NCg0KLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZjMxNmRkYiAubWV0Zm9ybS1idG46aG92ZXIgew0KICAgIGNvbG9yOiAjRkZGRkZGOw0KfQ0KDQouZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mMzE2ZGRiPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7DQogICAgbWFyZ2luOiAwcHggMHB4IDBweCAtMTg5cHg7DQp9DQoNCkBtZWRpYShtYXgtd2lkdGg6MTAyNHB4KSB7DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQgew0KICAgICAgICBwYWRkaW5nOiAxMHB4IDEwcHggMTBweCAxMHB4Ow0KICAgIH0NCiAgICAuZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCB7DQogICAgICAgIHBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDEwcHg7DQogICAgfQ0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsNCiAgICAgICAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMTBweDsNCiAgICB9DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfc2VsZWN0X19jb250cm9sLA0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19jb250cm9sIC5tZl9tdWx0aXNlbGVjdF9fdmFsdWUtY29udGFpbmVyLA0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mX211bHRpc2VsZWN0X19vcHRpb24sDQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsNCiAgICAgICAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMTBweDsNCiAgICB9DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQtd3JhcHBlciAucmFuZ2Utc2xpZGVyIHsNCiAgICAgICAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMTBweDsNCiAgICB9DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwNCiAgICAuZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03NmIxOWVlIC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIsDQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsNCiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsNCiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1saW5lLWhlaWdodCk7DQogICAgfQ0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWYzMTZkZGIgLm1ldGZvcm0tYnRuIHsNCiAgICAgICAgcGFkZGluZzogMTBweCAyMHB4IDEwcHggMjBweDsNCiAgICB9DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZjMxNmRkYj4uZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgew0KICAgICAgICBtYXJnaW46IDBweCAwcHggMHB4IC0xNTlweDsNCiAgICB9DQp9DQoNCkBtZWRpYShtYXgtd2lkdGg6NzY3cHgpIHsNCiAgICAuZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC02ODBmNjVkIHsNCiAgICAgICAgLS1nYXA6IDE1cHggMTVweDsNCiAgICB9DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTcyM2FjMiB7DQogICAgICAgIC0td2lkdGg6IDEwMCU7DQogICAgfQ0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksDQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzZiMTllZSAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLA0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc2YjE5ZWUgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7DQogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZSk7DQogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOw0KICAgIH0NCiAgICAuZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1jZWM4ZmU2IHsNCiAgICAgICAgLS13aWR0aDogNTAlOw0KICAgIH0NCiAgICAuZWxlbWVudG9yLTY2IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1mMzE2ZGRiPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7DQogICAgICAgIG1hcmdpbjogMHB4IDBweCAwcHggMHB4Ow0KICAgICAgICBwYWRkaW5nOiAwcHggMHB4IDBweCAwcHg7DQogICAgfQ0KfQ0KDQpAbWVkaWEobWluLXdpZHRoOjc2OHB4KSB7DQogICAgLmVsZW1lbnRvci02NiAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOTcyM2FjMiB7DQogICAgICAgIC0td2lkdGg6IDEwMCU7DQogICAgfQ0KICAgIC5lbGVtZW50b3ItNjYgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWNlYzhmZTYgew0KICAgICAgICAtLXdpZHRoOiA0MCU7DQogICAgfQ0KfQ=="}},"time_used":92,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":92,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment-ripple.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.868Z","timestamp":1785128398868,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment-ripple.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 1700\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 3f726abd6bb3ed3f10020679dcb93850-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":1700,"size_decoded":2022,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"e26374d46a2a6b5168ae8365678ca2f7","sha1":"25005c8af43623db7eba2ec18cba0e7e02ed163a","sha256":"fa278e68578c486f0e962686ee4666cf9c0e5bd1519e12b8158ceb7f7e8763fb","sha512":"374a86fed48cdf7749a7f630e643698e867136d44e293dac6a6d05fa0ead2b05e1d5f2ba4d0ac6661d72ca6c26ee7fd0536ec570be1901d86f02c92b580952a7","ssdeep":"","tlshash":"c531f8a62bf88d95d450303fcf27973cabe188951f88844c964e06b81dd1420efba274","first_seen":"2026-07-27T03:56:42.500171Z","last_seen":"2026-07-27T05:01:06.163494Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":94,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/code.jquery.com/jquery-3.6.4.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.201Z","timestamp":1785128399201,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /code.jquery.com/jquery-3.6.4.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: text/html\r\ncontent-length: 1626\r\nlast-modified: Tue, 22 Apr 2025 07:41:12 GMT\r\netag: \"119f-68074818-ac81b894658a37a5;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\nage: 1\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 98a24fba12e587c0db304e49a9e3042b-srv-edge3\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Bootstrap:3.3.7","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":4511,"size_decoded":1987,"mime_type":"text/html","magic":"HTML document, ASCII text, with very long lines (371)","md5":"b16e9097fc7d3af8ebfcfce7aba0a42d","sha1":"2af3c8408b8445fe81d9a7c8d7cc8e8a05bf80f5","sha256":"e7db95c97a5d45787cc3e40cbcb93b748fefc65bc14e162c746e37f979861729","sha512":"53a7a2c276fbc5159231c162eb863504448515f1a078832b81f1bffeedb1c82932810b66748fd4111d1b8fb866622a5cc63e79e497227b611c90886ba45d3f3b","ssdeep":"96:tr+ulojsBwJG8YqVcqHL/GSrrLc1VhrJuzeK:tyoasBwJG8nVjaSeVhrJgeK","tlshash":"0891f88f25f381452603c99037f9b61499554007f685eca8bdee9228cfc4b8a41e3bdc","first_seen":"2025-04-22T08:45:29.599713Z","last_seen":"2026-07-27T17:20:09.20559Z","times_seen":37827,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuLXVzIgogICAgcHJlZml4PSJjb250ZW50OiBodHRwOi8vcHVybC5vcmcvcnNzLzEuMC9tb2R1bGVzL2NvbnRlbnQvIGRjOiBodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIGZvYWY6IGh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvIG9nOiBodHRwOi8vb2dwLm1lL25zIyByZGZzOiBodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1zY2hlbWEjIHNpb2M6IGh0dHA6Ly9yZGZzLm9yZy9zaW9jL25zIyBzaW9jdDogaHR0cDovL3JkZnMub3JnL3Npb2MvdHlwZXMjIHNrb3M6IGh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDIvc2tvcy9jb3JlIyB4c2Q6IGh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIyI+Cgo8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgQGNoYXJzZXQgIlVURi04IjsKCiAgICAgICAgW25nXDpjbG9ha10sCiAgICAgICAgW25nLWNsb2FrXSwKICAgICAgICBbZGF0YS1uZy1jbG9ha10sCiAgICAgICAgW3gtbmctY2xvYWtdLAogICAgICAgIC5uZy1jbG9haywKICAgICAgICAueC1uZy1jbG9haywKICAgICAgICAubmctaGlkZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSkgewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBuZ1w6Zm9ybSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLm5nLWFuaW1hdGUtc2hpbSB7CiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5uZy1hbmNob3IgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPHRpdGxlPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iT29wcywgbG9va3MgbGlrZSB0aGUgcGFnZSBpcyBsb3N0LiI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMy43L2Nzcy9ib290c3RyYXAubWluLmNzcyI+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9RE0rU2FuczozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0iIgogICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLTlRNkgwUUVUUkYmYW1wO2N4PWMmYW1wO19zbGM9MSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGFzeW5jPSIiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICAgICAgKGZ1bmN0aW9uIChpLCBzLCBvLCBnLCByLCBhLCBtKSB7CiAgICAgICAgICAgIGlbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddID0gcjsgaVtyXSA9IGlbcl0gfHwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgKGlbcl0ucSA9IGlbcl0ucSB8fCBbXSkucHVzaChhcmd1bWVudHMpCiAgICAgICAgICAgIH0sIGlbcl0ubCA9IDEgKiBuZXcgRGF0ZSgpOyBhID0gcy5jcmVhdGVFbGVtZW50KG8pLAogICAgICAgICAgICAgICAgbSA9IHMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07IGEuYXN5bmMgPSAxOyBhLnNyYyA9IGc7IG0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgbSkKICAgICAgICB9KSh3aW5kb3csIGRvY3VtZW50LCAnc2NyaXB0JywgJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsICdnYScpOwoKICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTI2NTc1OTg5LTQ2JywgJ2F1dG8nKTsKICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOwoKICAgIDwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxpZnJhbWUgYWxsb3c9ImpvaW4tYWQtaW50ZXJlc3QtZ3JvdXAiIGRhdGEtdGFnZ2luZy1pZD0iRy05UTZIMFFFVFJGIiBkYXRhLWxvYWQtdGltZT0iMTc0NDcwOTQ2NDA5MyIgaGVpZ2h0PSIwIgogICAgICAgIHdpZHRoPSIwIgogICAgICAgIHNyYz0iaHR0cHM6Ly90ZC5kb3VibGVjbGljay5uZXQvdGQvZ2EvcnVsP3RpZD1HLTlRNkgwUUVUUkYmYW1wO2dhY2lkPTE2Njk1ODM0ODYuMTc0NDcwOTQ2MyZhbXA7Z3RtPTQ1amU1NGIwdjkxMjU5NTkxMTJ6YTIwMCZhbXA7ZG1hPTEmYW1wO2RtYV9jcHM9c3lwaGFtbyZhbXA7Z2NkPTEzbDNsUGwybDJsMSZhbXA7bnBhPTAmYW1wO3BzY2RsPW5vYXBpJmFtcDthaXA9MSZhbXA7ZmxlZGdlPTEmYW1wO2ZybT0wJmFtcDt0YWdfZXhwPTEwMjUwOTY4M34xMDI4MDMyNzl+MTAyODEzMTA5fjEwMjg4NzgwMH4xMDI5MjYwNjJ+MTAzMDIxODMwfjEwMzAyNzAxNn4xMDMwNTE5NTN+MTAzMDU1NDY1fjEwMzA3Nzk1MCZhbXA7ej0yMTA4NTA0Mzg5IgogICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lOyB2aXNpYmlsaXR5OiBoaWRkZW47Ij4KICAgIDwvaWZyYW1lPgogICAgPGRpdiBjbGFzcz0icGFnZS1ub3QtZm91bmQiPgogICAgICAgIDxpbWcgY2xhc3M9ImltYWdlIiBhbHQ9IlBhZ2UgTm90IEZvdW5kIiBzcmM9Ii9odGRvY3NfZXJyb3IvcGFnZV9ub3RfZm91bmQuc3ZnIiAvPgogICAgICAgIDxoMSBjbGFzcz0idGl0bGUiPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvaDE+CiAgICAgICAgPHAgY2xhc3M9InRleHQiPgogICAgICAgICAgICBTb3JyeSwgdGhlIHBhZ2UgeW91IGFyZSBsb29raW5nIGZvciBjb3VsZCBub3QgYmUgZm91bmQuIEl0J3MganVzdCBhbgogICAgICAgICAgICBhY2NpZGVudCB0aGF0IHdhcyBub3QgaW50ZW50aW9uYWwuCiAgICAgICAgPC9wPgogICAgPC9kaXY+Cgo8L2JvZHk+CjxzdHlsZT4KICAgIGJvZHkgewogICAgICAgIGNvbG9yOiAjMWQxZTIwOwogICAgICAgIGJhY2tncm91bmQ6ICNmNGY1ZmY7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LWZhbWlseTogIkRNIFNhbnMiLCAiUm9ib3RvIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICAgIH0KCiAgICAucGFnZS1ub3QtZm91bmQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwoKICAgICAgICBpbWcgewogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2UgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7CiAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICB9CgogICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIH0KCiAgICAgICAgLnRleHQgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1heC13aWR0aDogNjUwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgICAgIGNvbG9yOiAjNkQ3MDgxOwogICAgICAgIH0KCgogICAgfQo8L3N0eWxlPgoKPC9odG1sPgo="}},"time_used":35,"timings":{"blocked":1,"dns":0,"connect":0,"send":0,"wait":34,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/tab_img2.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.857Z","timestamp":1785128398857,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/tab_img2.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 540\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 9caf18561b676591351f955a8d4f214f-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":540,"size_decoded":861,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"7edd9d0808c53ea97ce9688d68d68d9d","sha1":"2d18049aed17e0d1e143a72343e957b1d4a82028","sha256":"6b7ef33e150f5bac2411caf5f90c1c45d9a67b5c10b3a1b3525c41acceed9e17","sha512":"477e9722aed9deecfe5838ac97f1c836863f6ec13fb4749642f51a6e73f59b142b860a675bfd5906e5c9eb3266eb0ced959a54b690dd702dc818bff9a1712c99","ssdeep":"","tlshash":"03f07e8ea3844e02e293013cc627bb286b3b23808200e293822806360ec3c40eee59e0","first_seen":"2026-07-27T03:56:42.483187Z","last_seen":"2026-07-27T05:01:06.132564Z","times_seen":3,"resource_available":false,"data":"UklGRhQCAABXRUJQVlA4WAoAAAAYAAAAEwAAFAAAQUxQSAUBAAABgGRt2/HmiZ1aI9vaAUaxndrm1LZt28aou+hQG0m/H0uICLJJGzO1p4CoZXcnELRFRDatHqHofjo9kkvRuLP1FAjAr/ZzaTOYdMmRXniLSks8G3q0e0lbQLyzyGKxFAKuSgqO3hEn9LEWh9nLSetB7xWbAT7e0lAWlEBZDXUUmJMpcrJoUUboRMtg22A0wz1n3Fmd+xpmuM2znKny2Xbq8Hr8APRecqcXhqnkUgMfKSvLp5ztFuqIXu9dzDswrPYvapapok6ijH9FB9kwL8ZiH/nmOJEl8ug5TvWdDaLVTqvFWWSJ2tGfRBvmpQSFs/S/6Kd303PcWBFo43R9HF5d7MeCbQAAVlA4ICYAAADQAgCdASoUABUAPlEkj0WjoiEUBAA4BQS0gAAe0dAAAP78qAAAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAABQAAAADoAQAAQAAABUAAAAAAAAA"}},"time_used":103,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":103,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/css/frontend-lite.mina2f8.css?ver=3.19.1","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.765Z","timestamp":1785128398765,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/elementor/assets/css/frontend-lite.mina2f8.css?ver=3.19.1 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 13664\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 20:42:49 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"218f1-67c3620e-338f546a34053727;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 461829\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: b38d291720071f0d4e295cbf74af8b94-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":137457,"size_decoded":14238,"mime_type":"text/css","magic":"ASCII text","md5":"7577f9ab342fe90e465b9f9662b9fae6","sha1":"1ea480a3357c582cf8681555439c177369c4bb94","sha256":"f7407398d464ab7643772d714e6b150249901c3b141acf75c59a9fef59aed554","sha512":"0318d9c439071bec0b9951e31b2d61117852b295bdc8745c02baba386fb92fbd7ab23d6b9528d858127a957e54e43d18a820729f2efc91821141f3d9069e5783","ssdeep":"1536:bPXi7bPvNZZ1LRfIuKiR+nMKTmBw9QoeiWxhgt:bPy7LNXH/KYw","tlshash":"fcd365523d631515961faa2f4a8b128c239040c3c94bfe95f58d9083dffdef53762aa2","first_seen":"2026-07-27T03:56:42.584262Z","last_seen":"2026-07-27T05:30:59.785154Z","times_seen":6,"resource_available":false,"data":"LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNy0wMi0yMDI0ICovCgouZGlhbG9nLXdpZGdldC1jb250ZW50IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1iZy1kZWZhdWx0KTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIGJveC1zaGFkb3c6IDJweCA4cHggMjNweCAzcHggcmdiYSgwLCAwLCAwLCAuMik7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5kaWFsb2ctbWVzc2FnZSB7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveAp9CgouZGlhbG9nLWNsb3NlLWJ1dHRvbiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IDE1cHg7CiAgICByaWdodDogMTVweDsKICAgIGNvbG9yOiB2YXIoLS1lLWEtY29sb3ItdHh0KTsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdHJhbnNpdGlvbjogdmFyKC0tZS1hLXRyYW5zaXRpb24taG92ZXIpCn0KCi5kaWFsb2ctY2xvc2UtYnV0dG9uOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1lLWEtY29sb3ItdHh0LWhvdmVyKQp9CgouZGlhbG9nLXByZXZlbnQtc2Nyb2xsIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBtYXgtaGVpZ2h0OiAxMDB2aAp9CgouZGlhbG9nLXR5cGUtbGlnaHRib3ggewogICAgcG9zaXRpb246IGZpeGVkOwogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuOCk7CiAgICB6LWluZGV4OiA5OTk5OwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB1c2VyLXNlbGVjdDogbm9uZQp9CgouZWxlbWVudG9yLWVkaXRvci1hY3RpdmUgLmVsZW1lbnRvci1wb3B1cC1tb2RhbCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLXdpZGdldC1jb250ZW50LAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLXdpZGdldC1jb250ZW50IHsKICAgIG1hcmdpbjogYXV0bzsKICAgIHdpZHRoOiA0MDBweDsKICAgIHBhZGRpbmc6IDIwcHgKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctaGVhZGVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWhlYWRlciB7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBmb250LXdlaWdodDogNTAwCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWhlYWRlcjphZnRlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1oZWFkZXI6YWZ0ZXIgewogICAgY29udGVudDogIiI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGJvcmRlci1ibG9jay1lbmQ6IHZhcigtLWUtYS1ib3JkZXIpOwogICAgcGFkZGluZy1ibG9jay1lbmQ6IDEwcHg7CiAgICBtYXJnaW4tYmxvY2stZW5kOiAxMHB4OwogICAgbWFyZ2luLWlubGluZS1zdGFydDogLTIwcHg7CiAgICBtYXJnaW4taW5saW5lLWVuZDogLTIwcHgKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctbWVzc2FnZSwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1tZXNzYWdlIHsKICAgIG1pbi1oZWlnaHQ6IDUwcHgKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciB7CiAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMHB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICBnYXA6IDE1cHgKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbiB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgbGluZS1oZWlnaHQ6IDEuMjsKICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgb3V0bGluZTogbm9uZTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWUtYS1ib3JkZXItcmFkaXVzKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1idG4tYmcpOwogICAgY29sb3I6IHZhcigtLWUtYS1idG4tY29sb3ItaW52ZXJ0KTsKICAgIHRyYW5zaXRpb246IHZhcigtLWUtYS10cmFuc2l0aW9uLWhvdmVyKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOmhvdmVyIHsKICAgIGJvcmRlcjogbm9uZQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjpob3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1idG4tYmctaG92ZXIpOwogICAgY29sb3I6IHZhcigtLWUtYS1idG4tY29sb3ItaW52ZXJ0KQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246YWN0aXZlLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjphY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1hY3RpdmUpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjpub3QoW2Rpc2FibGVkXSksCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOm5vdChbZGlzYWJsZWRdKSB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOmRpc2FibGVkLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjpkaXNhYmxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLWRpc2FibGVkKTsKICAgIGNvbG9yOiB2YXIoLS1lLWEtYnRuLWNvbG9yLWRpc2FibGVkKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246bm90KC5lbGVtZW50b3ItYnV0dG9uLXN0YXRlKSAuZWxlbWVudG9yLXN0YXRlLWljb24sCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOm5vdCguZWxlbWVudG9yLWJ1dHRvbi1zdGF0ZSkgLmVsZW1lbnRvci1zdGF0ZS1pY29uIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiB2YXIoLS1lLWEtY29sb3ItdHh0KQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLWNhbmNlbDpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWw6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQ6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQ6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWw6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWw6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dDpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0OmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWUtYS1iZy1ob3Zlcik7CiAgICBjb2xvcjogdmFyKC0tZS1hLWNvbG9yLXR4dC1ob3ZlcikKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWw6ZGlzYWJsZWQsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQ6ZGlzYWJsZWQsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWw6ZGlzYWJsZWQsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dDpkaXNhYmxlZCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiB2YXIoLS1lLWEtY29sb3ItdHh0LWRpc2FibGVkKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0LWJvcmRlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0LWJvcmRlciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1lLWEtY29sb3ItdHh0LW11dGVkKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1zdWNjZXNzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1zdWNjZXNzLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXN1Y2Nlc3MsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24tc3VjY2VzcyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLXN1Y2Nlc3MpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXN1Y2Nlc3M6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXN1Y2Nlc3M6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXN1Y2Nlc3M6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXN1Y2Nlc3M6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtc3VjY2Vzczpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1zdWNjZXNzOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXN1Y2Nlc3M6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24tc3VjY2Vzczpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLXN1Y2Nlc3MtaG92ZXIpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2ssCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctdGFrZV9vdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5LAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2ssCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy10YWtlX292ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLXByaW1hcnkpOwogICAgY29sb3I6IHZhcigtLWUtYS1idG4tY29sb3IpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2s6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2s6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctdGFrZV9vdmVyOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLXRha2Vfb3Zlcjpob3ZlciwKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeTpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeTpob3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLW9rOmZvY3VzLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2s6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy10YWtlX292ZXI6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy10YWtlX292ZXI6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeTpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5OmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1idG4tYmctcHJpbWFyeS1ob3Zlcik7CiAgICBjb2xvcjogdmFyKC0tZS1hLWJ0bi1jb2xvcikKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwuZGlhbG9nLXRha2Vfb3ZlciwKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1vay5kaWFsb2ctY2FuY2VsLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0LmRpYWxvZy1vaywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dC5kaWFsb2ctdGFrZV9vdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5LmRpYWxvZy1jYW5jZWwsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXByaW1hcnkuZS1idG4tdHh0LAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctY2FuY2VsLmRpYWxvZy10YWtlX292ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1vay5kaWFsb2ctY2FuY2VsLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQuZGlhbG9nLW9rLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQuZGlhbG9nLXRha2Vfb3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5LmRpYWxvZy1jYW5jZWwsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeS5lLWJ0bi10eHQgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBjb2xvcjogdmFyKC0tZS1hLWNvbG9yLXByaW1hcnktYm9sZCkKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwuZGlhbG9nLXRha2Vfb3Zlcjpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwuZGlhbG9nLXRha2Vfb3Zlcjpob3ZlciwKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1vay5kaWFsb2ctY2FuY2VsOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLW9rLmRpYWxvZy1jYW5jZWw6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQuZGlhbG9nLW9rOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0LmRpYWxvZy1vazpob3ZlciwKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dC5kaWFsb2ctdGFrZV9vdmVyOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1idG4tdHh0LmRpYWxvZy10YWtlX292ZXI6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXByaW1hcnkuZGlhbG9nLWNhbmNlbDpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeS5kaWFsb2ctY2FuY2VsOmhvdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5LmUtYnRuLXR4dDpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeS5lLWJ0bi10eHQ6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmRpYWxvZy1jYW5jZWwuZGlhbG9nLXRha2Vfb3Zlcjpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLWNhbmNlbC5kaWFsb2ctdGFrZV9vdmVyOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5kaWFsb2ctb2suZGlhbG9nLWNhbmNlbDpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZGlhbG9nLW9rLmRpYWxvZy1jYW5jZWw6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dC5kaWFsb2ctb2s6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dC5kaWFsb2ctb2s6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYnRuLXR4dC5kaWFsb2ctdGFrZV9vdmVyOmZvY3VzLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWJ0bi10eHQuZGlhbG9nLXRha2Vfb3Zlcjpob3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1wcmltYXJ5LmRpYWxvZy1jYW5jZWw6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtcHJpbWFyeS5kaWFsb2ctY2FuY2VsOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXByaW1hcnkuZS1idG4tdHh0OmZvY3VzLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXByaW1hcnkuZS1idG4tdHh0OmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWUtYS1iZy1wcmltYXJ5KQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1hY2NlbnQsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5nby1wcm8sCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYWNjZW50LAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5nby1wcm8gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1hY2NlbnQpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWFjY2VudDpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtYWNjZW50OmhvdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZ28tcHJvOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZ28tcHJvOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWFjY2VudDpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1hY2NlbnQ6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmdvLXBybzpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZ28tcHJvOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1idG4tYmctYWNjZW50LWhvdmVyKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1hY2NlbnQ6YWN0aXZlLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZ28tcHJvOmFjdGl2ZSwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1hY2NlbnQ6YWN0aXZlLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5nby1wcm86YWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWUtYS1idG4tYmctYWNjZW50LWFjdGl2ZSkKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtaW5mbywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24taW5mbywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1pbmZvLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLWluZm8gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1pbmZvKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1pbmZvOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1pbmZvOmhvdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1pbmZvOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1pbmZvOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWluZm86Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtaW5mbzpob3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1pbmZvOmZvY3VzLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLWluZm86aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1pbmZvLWhvdmVyKQp9CgouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS13YXJuaW5nLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi13YXJuaW5nLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXdhcm5pbmcsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24td2FybmluZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLXdhcm5pbmcpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXdhcm5pbmc6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLXdhcm5pbmc6aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXdhcm5pbmc6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXdhcm5pbmc6aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtd2FybmluZzpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS13YXJuaW5nOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLXdhcm5pbmc6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24td2FybmluZzpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lLWEtYnRuLWJnLXdhcm5pbmctaG92ZXIpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWRhbmdlciwKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmVsZW1lbnRvci1idXR0b24tZGFuZ2VyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWRhbmdlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1kYW5nZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1kYW5nZXIpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lLWRhbmdlcjpmb2N1cywKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtZGFuZ2VyOmhvdmVyLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1kYW5nZXI6Zm9jdXMsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLWRhbmdlcjpob3ZlciwKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZS1kYW5nZXI6Zm9jdXMsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uLmUtZGFuZ2VyOmhvdmVyLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbi5lbGVtZW50b3ItYnV0dG9uLWRhbmdlcjpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b24uZWxlbWVudG9yLWJ1dHRvbi1kYW5nZXI6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZS1hLWJ0bi1iZy1kYW5nZXItaG92ZXIpCn0KCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbiBpLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbiBpIHsKICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA1cHgKfQoKLmRpYWxvZy10eXBlLWFsZXJ0IC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOmZvY3VzLAouZGlhbG9nLXR5cGUtYWxlcnQgLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246aG92ZXIsCi5kaWFsb2ctdHlwZS1hbGVydCAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjp2aXNpdGVkLAouZGlhbG9nLXR5cGUtY29uZmlybSAuZGlhbG9nLWJ1dHRvbnMtd3JhcHBlciAuZGlhbG9nLWJ1dHRvbjpmb2N1cywKLmRpYWxvZy10eXBlLWNvbmZpcm0gLmRpYWxvZy1idXR0b25zLXdyYXBwZXIgLmRpYWxvZy1idXR0b246aG92ZXIsCi5kaWFsb2ctdHlwZS1jb25maXJtIC5kaWFsb2ctYnV0dG9ucy13cmFwcGVyIC5kaWFsb2ctYnV0dG9uOnZpc2l0ZWQgewogICAgY29sb3I6IGluaXRpYWwKfQoKLmZsYXRwaWNrci1jYWxlbmRhciB7CiAgICB3aWR0aDogMjgwcHgKfQoKLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggc3Bhbi5jdXItbW9udGggewogICAgZm9udC13ZWlnaHQ6IDMwMAp9CgouZmxhdHBpY2tyLWNhbGVuZGFyIC5kYXlDb250YWluZXIgewogICAgd2lkdGg6IDI4MHB4OwogICAgbWluLXdpZHRoOiAyODBweDsKICAgIG1heC13aWR0aDogMjgwcHgKfQoKLmZsYXRwaWNrci1jYWxlbmRhciAuZmxhdHBpY2tyLWRheXMgewogICAgd2lkdGg6IDI4MHB4Cn0KCi5mbGF0cGlja3ItY2FsZW5kYXIgLmZsYXRwaWNrci1kYXkgewogICAgbWF4LXdpZHRoOiAzN3B4OwogICAgaGVpZ2h0OiAzN3B4OwogICAgbGluZS1oZWlnaHQ6IDM3cHgKfQoKLmVsZW1lbnRvci1oaWRkZW4gewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXNjcmVlbi1vbmx5LAouc2NyZWVuLXJlYWRlci10ZXh0LAouc2NyZWVuLXJlYWRlci10ZXh0IHNwYW4sCi51aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAtMTAwMDBlbTsKICAgIHdpZHRoOiAxcHg7CiAgICBoZWlnaHQ6IDFweDsKICAgIG1hcmdpbjogLTFweDsKICAgIHBhZGRpbmc6IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICAgIGJvcmRlcjogMAp9CgouZWxlbWVudG9yLWNsZWFyZml4OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBjbGVhcjogYm90aDsKICAgIHdpZHRoOiAwOwogICAgaGVpZ2h0OiAwCn0KCi5lLWxvZ28td3JhcHBlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1lLWEtYmctbG9nbyk7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAuNzVlbTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGxpbmUtaGVpZ2h0OiAxCn0KCi5lLWxvZ28td3JhcHBlciBpIHsKICAgIGNvbG9yOiB2YXIoLS1lLWEtY29sb3ItbG9nbyk7CiAgICBmb250LXNpemU6IDFlbQp9CgouZWxlbWVudG9yICosCi5lbGVtZW50b3IgOmFmdGVyLAouZWxlbWVudG9yIDpiZWZvcmUgewogICAgYm94LXNpemluZzogYm9yZGVyLWJveAp9CgouZWxlbWVudG9yIGEgewogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZQp9CgouZWxlbWVudG9yIGhyIHsKICAgIG1hcmdpbjogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5lbGVtZW50b3IgaW1nIHsKICAgIGhlaWdodDogYXV0bzsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICBib3gtc2hhZG93OiBub25lCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQ6bm90KC5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yKTpub3QoLmVsZW1lbnRvci13aWRnZXQtdGhlbWUtcG9zdC1jb250ZW50KSBmaWd1cmUgewogICAgbWFyZ2luOiAwCn0KCi5lbGVtZW50b3IgZW1iZWQsCi5lbGVtZW50b3IgaWZyYW1lLAouZWxlbWVudG9yIG9iamVjdCwKLmVsZW1lbnRvciB2aWRlbyB7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbjogMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgYm9yZGVyOiBub25lCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLAouZWxlbWVudG9yIC5lbGVtZW50b3ItYmFja2dyb3VuZC1ob2xkZXIsCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWNvbnRhaW5lciB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB3aWR0aDogMTAwJTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgei1pbmRleDogMDsKICAgIGRpcmVjdGlvbjogbHRyCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWNvbnRhaW5lciB7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tY29udGFpbmVyLmVsZW1lbnRvci1sb2FkaW5nIHsKICAgIG9wYWNpdHk6IDAKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tZW1iZWQgewogICAgbWF4LXdpZHRoOiBub25lCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLAouZWxlbWVudG9yIC5lbGVtZW50b3ItYmFja2dyb3VuZC12aWRlby1lbWJlZCwKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8taG9zdGVkIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8gewogICAgbWF4LXdpZHRoOiBub25lCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1odG1sNS12aWRlbyB7CiAgICAtby1vYmplY3QtZml0OiBjb3ZlcjsKICAgIG9iamVjdC1maXQ6IGNvdmVyCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLW92ZXJsYXksCi5lbGVtZW50b3IgLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXNsaWRlc2hvdyB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB3aWR0aDogMTAwJTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGUKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtc2xpZGVzaG93IHsKICAgIHotaW5kZXg6IDAKfQoKLmVsZW1lbnRvciAuZWxlbWVudG9yLWJhY2tncm91bmQtc2xpZGVzaG93X19zbGlkZV9faW1hZ2UgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCU7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyCn0KCi5lLWNvbi1pbm5lcj4uZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWFic29sdXRlLAouZS1jb24+LmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hYnNvbHV0ZSwKLmVsZW1lbnRvci13aWRnZXQtd3JhcD4uZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWFic29sdXRlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZQp9CgouZS1jb24taW5uZXI+LmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1maXhlZCwKLmUtY29uPi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZml4ZWQsCi5lbGVtZW50b3Itd2lkZ2V0LXdyYXA+LmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1maXhlZCB7CiAgICBwb3NpdGlvbjogZml4ZWQKfQoKLmVsZW1lbnRvci13aWRnZXQtd3JhcCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtYXV0bywKLmVsZW1lbnRvci13aWRnZXQtd3JhcCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXdpZGdldF9fd2lkdGgtaW5pdGlhbCB7CiAgICBtYXgtd2lkdGg6IDEwMCUKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC13cmFwIC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3Itd2lkZ2V0LXRhYmxldF9fd2lkdGgtYXV0bywKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci13aWRnZXQtdGFibGV0X193aWR0aC1pbml0aWFsIHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci13aWRnZXQtbW9iaWxlX193aWR0aC1hdXRvLAogICAgLmVsZW1lbnRvci13aWRnZXQtd3JhcCAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXdpZGdldC1tb2JpbGVfX3dpZHRoLWluaXRpYWwgewogICAgICAgIG1heC13aWR0aDogMTAwJQogICAgfQp9CgouZWxlbWVudG9yLWVsZW1lbnQgewogICAgLS1mbGV4LWRpcmVjdGlvbjogaW5pdGlhbDsKICAgIC0tZmxleC13cmFwOiBpbml0aWFsOwogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGluaXRpYWw7CiAgICAtLWFsaWduLWl0ZW1zOiBpbml0aWFsOwogICAgLS1hbGlnbi1jb250ZW50OiBpbml0aWFsOwogICAgLS1nYXA6IGluaXRpYWw7CiAgICAtLWZsZXgtYmFzaXM6IGluaXRpYWw7CiAgICAtLWZsZXgtZ3JvdzogaW5pdGlhbDsKICAgIC0tZmxleC1zaHJpbms6IGluaXRpYWw7CiAgICAtLW9yZGVyOiBpbml0aWFsOwogICAgLS1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgZmxleC1iYXNpczogdmFyKC0tZmxleC1iYXNpcyk7CiAgICBmbGV4LWdyb3c6IHZhcigtLWZsZXgtZ3Jvdyk7CiAgICBmbGV4LXNocmluazogdmFyKC0tZmxleC1zaHJpbmspOwogICAgb3JkZXI6IHZhcigtLW9yZGVyKTsKICAgIGFsaWduLXNlbGY6IHZhcigtLWFsaWduLXNlbGYpCn0KCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYWJzb2x1dGUsCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZml4ZWQgewogICAgei1pbmRleDogMQp9CgouZWxlbWVudG9yLWVsZW1lbnQ6d2hlcmUoLmUtY29uLWZ1bGwsIC5lbGVtZW50b3Itd2lkZ2V0KSB7CiAgICBmbGV4LWRpcmVjdGlvbjogdmFyKC0tZmxleC1kaXJlY3Rpb24pOwogICAgZmxleC13cmFwOiB2YXIoLS1mbGV4LXdyYXApOwogICAganVzdGlmeS1jb250ZW50OiB2YXIoLS1qdXN0aWZ5LWNvbnRlbnQpOwogICAgYWxpZ24taXRlbXM6IHZhcigtLWFsaWduLWl0ZW1zKTsKICAgIGFsaWduLWNvbnRlbnQ6IHZhcigtLWFsaWduLWNvbnRlbnQpOwogICAgZ2FwOiB2YXIoLS1nYXApCn0KCi5lbGVtZW50b3ItaW52aXNpYmxlIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbgp9CgouZWxlbWVudG9yLWFsaWduLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24gewogICAgd2lkdGg6IGF1dG8KfQoKLmVsZW1lbnRvci1hbGlnbi1yaWdodCB7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9CgouZWxlbWVudG9yLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIHdpZHRoOiBhdXRvCn0KCi5lbGVtZW50b3ItYWxpZ24tbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Cn0KCi5lbGVtZW50b3ItYWxpZ24tbGVmdCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICB3aWR0aDogYXV0bwp9CgouZWxlbWVudG9yLWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1idXR0b24gewogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci1jdXN0b20tZW1iZWQtcGxheSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkgaSB7CiAgICBmb250LXNpemU6IDEwMHB4OwogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LXNoYWRvdzogMXB4IDAgNnB4IHJnYmEoMCwgMCwgMCwgLjMpCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkgc3ZnIHsKICAgIGhlaWdodDogMTAwcHg7CiAgICB3aWR0aDogMTAwcHg7CiAgICBmaWxsOiAjZmZmOwogICAgZmlsdGVyOiBkcm9wLXNoYWRvdygxcHggMCA2cHggcmdiYSgwLCAwLCAwLCAuMykpCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkgaSwKLmVsZW1lbnRvci1jdXN0b20tZW1iZWQtcGxheSBzdmcgewogICAgb3BhY2l0eTogLjg7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjVzCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkuZWxlbWVudG9yLXBsYXlpbmcgaSB7CiAgICBmb250LWZhbWlseTogZWljb25zCn0KCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkuZWxlbWVudG9yLXBsYXlpbmcgaTpiZWZvcmUgewogICAgY29udGVudDogIlxlOGZiIgp9CgouZWxlbWVudG9yLWN1c3RvbS1lbWJlZC1wbGF5LmVsZW1lbnRvci1wbGF5aW5nIGksCi5lbGVtZW50b3ItY3VzdG9tLWVtYmVkLXBsYXkuZWxlbWVudG9yLXBsYXlpbmcgc3ZnIHsKICAgIGFuaW1hdGlvbjogZWljb24tc3BpbiAycyBsaW5lYXIgaW5maW5pdGUKfQoKLmVsZW1lbnRvci10YWcgewogICAgZGlzcGxheTogaW5saW5lLWZsZXgKfQoKLmVsZW1lbnRvci1rZW4tYnVybnMgewogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMTBzOwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcgp9CgouZWxlbWVudG9yLWtlbi1idXJucy0tb3V0IHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4zKQp9CgouZWxlbWVudG9yLWtlbi1idXJucy0tYWN0aXZlIHsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDIwcwp9CgouZWxlbWVudG9yLWtlbi1idXJucy0tYWN0aXZlLmVsZW1lbnRvci1rZW4tYnVybnMtLW91dCB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpCn0KCi5lbGVtZW50b3Ita2VuLWJ1cm5zLS1hY3RpdmUuZWxlbWVudG9yLWtlbi1idXJucy0taW4gewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjMpCn0KCkBtZWRpYSAobWluLXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tY2VudGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZXNjcmVlbi1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tcmlnaHQgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tbGVmdCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci13aWRlc2NyZWVuLWFsaWduLWxlZnQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGVzY3JlZW4tYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWNlbnRlciB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLWxhcHRvcC1hbGlnbi1yaWdodCB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tbGVmdCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci1sYXB0b3AtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItbGFwdG9wLWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1jZW50ZXIgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXRfZXh0cmEtYWxpZ24tcmlnaHQgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWxlZnQgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0X2V4dHJhLWFsaWduLWxlZnQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldF9leHRyYS1hbGlnbi1qdXN0aWZ5IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWNlbnRlciB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1hbGlnbi1yaWdodCB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYWxpZ24tbGVmdCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdAogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1jZW50ZXIgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGVfZXh0cmEtYWxpZ24tcmlnaHQgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0CiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1yaWdodCAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlX2V4dHJhLWFsaWduLWxlZnQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZV9leHRyYS1hbGlnbi1qdXN0aWZ5IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tY2VudGVyIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWFsaWduLXJpZ2h0IHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1sZWZ0IHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0CiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKOnJvb3QgewogICAgLS1wYWdlLXRpdGxlLWRpc3BsYXk6IGJsb2NrCn0KCi5lbGVtZW50b3ItcGFnZS10aXRsZSwKaDEuZW50cnktdGl0bGUgewogICAgZGlzcGxheTogdmFyKC0tcGFnZS10aXRsZS1kaXNwbGF5KQp9CgpAa2V5ZnJhbWVzIGVpY29uLXNwaW4gewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpCiAgICB9CiAgICB0byB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKQogICAgfQp9CgouZWljb24tYW5pbWF0aW9uLXNwaW4gewogICAgYW5pbWF0aW9uOiBlaWNvbi1zcGluIDJzIGxpbmVhciBpbmZpbml0ZQp9CgouZWxlbWVudG9yLXNlY3Rpb24gewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3Itc2VjdGlvbiAuZWxlbWVudG9yLWNvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXNlY3Rpb24gLmVsZW1lbnRvci1jb250YWluZXIgewogICAgICAgIGZsZXgtd3JhcDogd3JhcAogICAgfQp9CgouZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24tYm94ZWQ+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMTQwcHgKfQoKLmVsZW1lbnRvci1zZWN0aW9uLmVsZW1lbnRvci1zZWN0aW9uLXN0cmV0Y2hlZCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24taXRlbXMtdG9wPi5lbGVtZW50b3ItY29udGFpbmVyIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3Itc2VjdGlvbi5lbGVtZW50b3Itc2VjdGlvbi1pdGVtcy1taWRkbGU+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24taXRlbXMtYm90dG9tPi5lbGVtZW50b3ItY29udGFpbmVyIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZAp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci1zZWN0aW9uLmVsZW1lbnRvci1zZWN0aW9uLWhlaWdodC1mdWxsIHsKICAgICAgICBoZWlnaHQ6IDEwMHZoCiAgICB9CiAgICAuZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24taGVpZ2h0LWZ1bGw+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgICAgIGhlaWdodDogMTAwJQogICAgfQp9CgouZWxlbWVudG9yLWJjLWZsZXgtd2lkZ2V0IC5lbGVtZW50b3Itc2VjdGlvbi1jb250ZW50LXRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLXdpZGdldC13cmFwIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3ItYmMtZmxleC13aWRnZXQgLmVsZW1lbnRvci1zZWN0aW9uLWNvbnRlbnQtbWlkZGxlPi5lbGVtZW50b3ItY29udGFpbmVyPi5lbGVtZW50b3ItY29sdW1uPi5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgewogICAgYWxpZ24taXRlbXM6IGNlbnRlcgp9CgouZWxlbWVudG9yLWJjLWZsZXgtd2lkZ2V0IC5lbGVtZW50b3Itc2VjdGlvbi1jb250ZW50LWJvdHRvbT4uZWxlbWVudG9yLWNvbnRhaW5lcj4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLXdpZGdldC13cmFwIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZAp9CgouZWxlbWVudG9yLXJvdyB7CiAgICB3aWR0aDogMTAwJTsKICAgIGRpc3BsYXk6IGZsZXgKfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXJvdyB7CiAgICAgICAgZmxleC13cmFwOiB3cmFwCiAgICB9Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCU7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3I6bm90KC5lbGVtZW50b3ItYmMtZmxleC13aWRnZXQpIC5lbGVtZW50b3Itd2lkZ2V0LXdyYXAgewogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLXdpZGdldC13cmFwPi5lbGVtZW50b3ItZWxlbWVudCB7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldC13cmFwLmUtc3dpcGVyLWNvbnRhaW5lciB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gKHZhcigtLWUtY29sdW1uLW1hcmdpbi1sZWZ0LCAwcHgpICsgdmFyKC0tZS1jb2x1bW4tbWFyZ2luLXJpZ2h0LCAwcHgpKSkKfQoKLmVsZW1lbnRvci13aWRnZXQgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5lbGVtZW50b3Itd2lkZ2V0Om5vdCg6bGFzdC1jaGlsZCkgewogICAgbWFyZ2luLWJvdHRvbTogMjBweAp9CgouZWxlbWVudG9yLXdpZGdldDpub3QoOmxhc3QtY2hpbGQpLmVsZW1lbnRvci1hYnNvbHV0ZSwKLmVsZW1lbnRvci13aWRnZXQ6bm90KDpsYXN0LWNoaWxkKS5lbGVtZW50b3Itd2lkZ2V0X193aWR0aC1hdXRvLAouZWxlbWVudG9yLXdpZGdldDpub3QoOmxhc3QtY2hpbGQpLmVsZW1lbnRvci13aWRnZXRfX3dpZHRoLWluaXRpYWwgewogICAgbWFyZ2luLWJvdHRvbTogMAp9CgouZWxlbWVudG9yLWNvbHVtbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBtaW4taGVpZ2h0OiAxcHg7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3ItY29sdW1uLXdyYXAgewogICAgd2lkdGg6IDEwMCU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3ItY29sdW1uLWdhcC1uYXJyb3c+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCB7CiAgICBwYWRkaW5nOiA1cHgKfQoKLmVsZW1lbnRvci1jb2x1bW4tZ2FwLWRlZmF1bHQ+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCB7CiAgICBwYWRkaW5nOiAxMHB4Cn0KCi5lbGVtZW50b3ItY29sdW1uLWdhcC1leHRlbmRlZD4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIHsKICAgIHBhZGRpbmc6IDE1cHgKfQoKLmVsZW1lbnRvci1jb2x1bW4tZ2FwLXdpZGU+LmVsZW1lbnRvci1jb2x1bW4+LmVsZW1lbnRvci1lbGVtZW50LXBvcHVsYXRlZCB7CiAgICBwYWRkaW5nOiAyMHB4Cn0KCi5lbGVtZW50b3ItY29sdW1uLWdhcC13aWRlcj4uZWxlbWVudG9yLWNvbHVtbj4uZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIHsKICAgIHBhZGRpbmc6IDMwcHgKfQoKLmVsZW1lbnRvci1pbm5lci1zZWN0aW9uIC5lbGVtZW50b3ItY29sdW1uLWdhcC1ubyAuZWxlbWVudG9yLWVsZW1lbnQtcG9wdWxhdGVkIHsKICAgIHBhZGRpbmc6IDAKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMTAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTAiXSB7CiAgICAgICAgd2lkdGg6IDEwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0xMSwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSIxMSJdIHsKICAgICAgICB3aWR0aDogMTEuMTExJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0xMiwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSIxMiJdIHsKICAgICAgICB3aWR0aDogMTIuNSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMTQsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTQiXSB7CiAgICAgICAgd2lkdGg6IDE0LjI4NSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMTYsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTYiXSB7CiAgICAgICAgd2lkdGg6IDE2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMjAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMjAiXSB7CiAgICAgICAgd2lkdGg6IDIwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0yNSwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSIyNSJdIHsKICAgICAgICB3aWR0aDogMjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItY29sLTMwLAogICAgLmVsZW1lbnRvci1jb2x1bW5bZGF0YS1jb2w9IjMwIl0gewogICAgICAgIHdpZHRoOiAzMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtMzMsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMzMiXSB7CiAgICAgICAgd2lkdGg6IDMzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtNDAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iNDAiXSB7CiAgICAgICAgd2lkdGg6IDQwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC01MCwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSI1MCJdIHsKICAgICAgICB3aWR0aDogNTAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItY29sLTYwLAogICAgLmVsZW1lbnRvci1jb2x1bW5bZGF0YS1jb2w9IjYwIl0gewogICAgICAgIHdpZHRoOiA2MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtNjYsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iNjYiXSB7CiAgICAgICAgd2lkdGg6IDY2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtNzAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iNzAiXSB7CiAgICAgICAgd2lkdGg6IDcwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC03NSwKICAgIC5lbGVtZW50b3ItY29sdW1uW2RhdGEtY29sPSI3NSJdIHsKICAgICAgICB3aWR0aDogNzUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItY29sLTgwLAogICAgLmVsZW1lbnRvci1jb2x1bW5bZGF0YS1jb2w9IjgwIl0gewogICAgICAgIHdpZHRoOiA4MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtODMsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iODMiXSB7CiAgICAgICAgd2lkdGg6IDgzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1jb2wtOTAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iOTAiXSB7CiAgICAgICAgd2lkdGg6IDkwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLWNvbC0xMDAsCiAgICAuZWxlbWVudG9yLWNvbHVtbltkYXRhLWNvbD0iMTAwIl0gewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjQ3OXB4KSB7CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMTAgewogICAgICAgIHdpZHRoOiAxMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0xMSB7CiAgICAgICAgd2lkdGg6IDExLjExMSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0xMiB7CiAgICAgICAgd2lkdGg6IDEyLjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMTQgewogICAgICAgIHdpZHRoOiAxNC4yODUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMTYgewogICAgICAgIHdpZHRoOiAxNi42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMjAgewogICAgICAgIHdpZHRoOiAyMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0yNSB7CiAgICAgICAgd2lkdGg6IDI1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXhzLTMwIHsKICAgICAgICB3aWR0aDogMzAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtMzMgewogICAgICAgIHdpZHRoOiAzMy4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtNDAgewogICAgICAgIHdpZHRoOiA0MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy01MCB7CiAgICAgICAgd2lkdGg6IDUwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXhzLTYwIHsKICAgICAgICB3aWR0aDogNjAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtNjYgewogICAgICAgIHdpZHRoOiA2Ni42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtNzAgewogICAgICAgIHdpZHRoOiA3MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy03NSB7CiAgICAgICAgd2lkdGg6IDc1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXhzLTgwIHsKICAgICAgICB3aWR0aDogODAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtODMgewogICAgICAgIHdpZHRoOiA4My4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3IteHMtOTAgewogICAgICAgIHdpZHRoOiA5MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci14cy0xMDAgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMTAgewogICAgICAgIHdpZHRoOiAxMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0xMSB7CiAgICAgICAgd2lkdGg6IDExLjExMSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0xMiB7CiAgICAgICAgd2lkdGg6IDEyLjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMTQgewogICAgICAgIHdpZHRoOiAxNC4yODUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMTYgewogICAgICAgIHdpZHRoOiAxNi42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMjAgewogICAgICAgIHdpZHRoOiAyMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0yNSB7CiAgICAgICAgd2lkdGg6IDI1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXNtLTMwIHsKICAgICAgICB3aWR0aDogMzAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tMzMgewogICAgICAgIHdpZHRoOiAzMy4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tNDAgewogICAgICAgIHdpZHRoOiA0MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS01MCB7CiAgICAgICAgd2lkdGg6IDUwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXNtLTYwIHsKICAgICAgICB3aWR0aDogNjAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tNjYgewogICAgICAgIHdpZHRoOiA2Ni42NjYlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tNzAgewogICAgICAgIHdpZHRoOiA3MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS03NSB7CiAgICAgICAgd2lkdGg6IDc1JQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLXNtLTgwIHsKICAgICAgICB3aWR0aDogODAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tODMgewogICAgICAgIHdpZHRoOiA4My4zMzMlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3Itc20tOTAgewogICAgICAgIHdpZHRoOiA5MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1zbS0xMDAgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0xMCB7CiAgICAgICAgd2lkdGg6IDEwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTExIHsKICAgICAgICB3aWR0aDogMTEuMTExJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTEyIHsKICAgICAgICB3aWR0aDogMTIuNSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0xNCB7CiAgICAgICAgd2lkdGg6IDE0LjI4NSUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0xNiB7CiAgICAgICAgd2lkdGg6IDE2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0yMCB7CiAgICAgICAgd2lkdGg6IDIwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTI1IHsKICAgICAgICB3aWR0aDogMjUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItbWQtMzAgewogICAgICAgIHdpZHRoOiAzMCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC0zMyB7CiAgICAgICAgd2lkdGg6IDMzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC00MCB7CiAgICAgICAgd2lkdGg6IDQwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTUwIHsKICAgICAgICB3aWR0aDogNTAlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItbWQtNjAgewogICAgICAgIHdpZHRoOiA2MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC02NiB7CiAgICAgICAgd2lkdGg6IDY2LjY2NiUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC03MCB7CiAgICAgICAgd2lkdGg6IDcwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTc1IHsKICAgICAgICB3aWR0aDogNzUlCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbi5lbGVtZW50b3ItbWQtODAgewogICAgICAgIHdpZHRoOiA4MCUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC04MyB7CiAgICAgICAgd2lkdGg6IDgzLjMzMyUKICAgIH0KICAgIC5lbGVtZW50b3ItY29sdW1uLmVsZW1lbnRvci1tZC05MCB7CiAgICAgICAgd2lkdGg6IDkwJQogICAgfQogICAgLmVsZW1lbnRvci1jb2x1bW4uZWxlbWVudG9yLW1kLTEwMCB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS13aWRlc2NyZWVuPi5lbGVtZW50b3ItY29udGFpbmVyPjpmaXJzdC1jaGlsZCB7CiAgICAgICAgb3JkZXI6IDEwCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDIpIHsKICAgICAgICBvcmRlcjogOQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS13aWRlc2NyZWVuPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNCkgewogICAgICAgIG9yZGVyOiA3CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDUpIHsKICAgICAgICBvcmRlcjogNgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS13aWRlc2NyZWVuPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNykgewogICAgICAgIG9yZGVyOiA0CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2Utd2lkZXNjcmVlbj4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDgpIHsKICAgICAgICBvcmRlcjogMwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLXdpZGVzY3JlZW4+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS13aWRlc2NyZWVuPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMTApIHsKICAgICAgICBvcmRlcjogMQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDoxMDI1cHgpIGFuZCAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpmaXJzdC1jaGlsZCB7CiAgICAgICAgb3JkZXI6IDEwCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMikgewogICAgICAgIG9yZGVyOiA5CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMykgewogICAgICAgIG9yZGVyOiA4CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNCkgewogICAgICAgIG9yZGVyOiA3CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNSkgewogICAgICAgIG9yZGVyOiA2CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNikgewogICAgICAgIG9yZGVyOiA1CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNykgewogICAgICAgIG9yZGVyOiA0CiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOCkgewogICAgICAgIG9yZGVyOiAzCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOSkgewogICAgICAgIG9yZGVyOiAyCiAgICB9CiAgICAuZWxlbWVudG9yLXJldmVyc2UtbGFwdG9wPi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMTApIHsKICAgICAgICBvcmRlcjogMQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDotMSkgYW5kIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIG9yZGVyOiAxCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEwMjVweCkgYW5kIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1sYXB0b3A+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDIpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDMpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDQpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDUpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDYpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDcpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDgpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDkpLAogICAgLmVsZW1lbnRvci1yZXZlcnNlLWxhcHRvcD4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgb3JkZXI6IDAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXRfZXh0cmE+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIG9yZGVyOiAxCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIG9yZGVyOiAxCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOi0xKSBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS10YWJsZXQ+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIG9yZGVyOiAxCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDotMSkgewogICAgLmVsZW1lbnRvci1yZXZlcnNlLXRhYmxldD4uZWxlbWVudG9yLWNvbnRhaW5lcj46Zmlyc3QtY2hpbGQsCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMiksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMyksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNCksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNSksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNiksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoNyksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOCksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoOSksCiAgICAuZWxlbWVudG9yLXJldmVyc2UtdGFibGV0Pi5lbGVtZW50b3ItY29udGFpbmVyPjpudGgtY2hpbGQoMTApIHsKICAgICAgICBvcmRlcjogMAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46Zmlyc3QtY2hpbGQgewogICAgICAgIG9yZGVyOiAxMAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDIpIHsKICAgICAgICBvcmRlcjogOQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDMpIHsKICAgICAgICBvcmRlcjogOAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDQpIHsKICAgICAgICBvcmRlcjogNwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDUpIHsKICAgICAgICBvcmRlcjogNgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDYpIHsKICAgICAgICBvcmRlcjogNQogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDcpIHsKICAgICAgICBvcmRlcjogNAogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDgpIHsKICAgICAgICBvcmRlcjogMwogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDkpIHsKICAgICAgICBvcmRlcjogMgogICAgfQogICAgLmVsZW1lbnRvci1yZXZlcnNlLW1vYmlsZV9leHRyYT4uZWxlbWVudG9yLWNvbnRhaW5lcj46bnRoLWNoaWxkKDEwKSB7CiAgICAgICAgb3JkZXI6IDEKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+OmZpcnN0LWNoaWxkIHsKICAgICAgICBvcmRlcjogMTAKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgyKSB7CiAgICAgICAgb3JkZXI6IDkKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgzKSB7CiAgICAgICAgb3JkZXI6IDgKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg0KSB7CiAgICAgICAgb3JkZXI6IDcKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg1KSB7CiAgICAgICAgb3JkZXI6IDYKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg2KSB7CiAgICAgICAgb3JkZXI6IDUKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg3KSB7CiAgICAgICAgb3JkZXI6IDQKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg4KSB7CiAgICAgICAgb3JkZXI6IDMKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCg5KSB7CiAgICAgICAgb3JkZXI6IDIKICAgIH0KICAgIC5lbGVtZW50b3ItcmV2ZXJzZS1tb2JpbGU+LmVsZW1lbnRvci1jb250YWluZXI+Om50aC1jaGlsZCgxMCkgewogICAgICAgIG9yZGVyOiAxCiAgICB9CiAgICAuZWxlbWVudG9yLWNvbHVtbiB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KfQoKdWwuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LXdyYXA6IHdyYXAKfQoKdWwuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtcy5lbGVtZW50b3ItaW5saW5lLWl0ZW1zIC5lbGVtZW50b3ItaW5saW5lLWl0ZW0gewogICAgd29yZC1icmVhazogYnJlYWstd29yZAp9CgouZWxlbWVudG9yLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtY29sdW1uLWdhcDogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKTsKICAgIGdyaWQtcm93LWdhcDogdmFyKC0tZ3JpZC1yb3ctZ2FwKQp9CgouZWxlbWVudG9yLWdyaWQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgbWluLXdpZHRoOiAwCn0KCi5lbGVtZW50b3ItZ3JpZC0wIC5lbGVtZW50b3ItZ3JpZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIHdvcmQtc3BhY2luZzogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKTsKICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQp9CgouZWxlbWVudG9yLWdyaWQtMCAuZWxlbWVudG9yLWdyaWQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZ3JpZC1yb3ctZ2FwKTsKICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQKfQoKLmVsZW1lbnRvci1ncmlkLTEgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTIgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTMgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTQgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTUgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTYgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTcgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDcsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTggLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDgsIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTkgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDksIDFmcikKfQoKLmVsZW1lbnRvci1ncmlkLTEwIC5lbGVtZW50b3ItZ3JpZCB7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMCwgMWZyKQp9CgouZWxlbWVudG9yLWdyaWQtMTEgLmVsZW1lbnRvci1ncmlkIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDExLCAxZnIpCn0KCi5lbGVtZW50b3ItZ3JpZC0xMiAuZWxlbWVudG9yLWdyaWQgewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTIsIDFmcikKfQoKQG1lZGlhIChtaW4td2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApOwogICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tMCAuZWxlbWVudG9yLWdyaWQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1ncmlkLXJvdy1nYXApOwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtd2lkZXNjcmVlbi0yIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tMyAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtd2lkZXNjcmVlbi01IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tNiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTcgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtd2lkZXNjcmVlbi04IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXdpZGVzY3JlZW4tOSAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDksIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTEwIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTAsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTExIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC13aWRlc2NyZWVuLTEyIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTIsIDFmcikKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3ItZ3JpZC1sYXB0b3AtMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhcigtLWdyaWQtY29sdW1uLWdhcCk7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogY2FsYygtMSAqIHZhcigtLWdyaWQtcm93LWdhcCkpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTAgLmVsZW1lbnRvci1ncmlkIC5lbGVtZW50b3ItZ3JpZC1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZ3JpZC1yb3ctZ2FwKTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTMgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTUgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTYgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg2LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTcgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTggLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTkgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg5LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbGFwdG9wLTEwIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTAsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1sYXB0b3AtMTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLWxhcHRvcC0xMiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEyLCAxZnIpCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0X2V4dHJhLTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApOwogICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0wIC5lbGVtZW50b3ItZ3JpZCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWdyaWQtcm93LWdhcCk7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZAogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0xIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0yIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0zIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS00IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS01IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS02IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS03IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS04IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS05IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldF9leHRyYS0xMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEwLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0X2V4dHJhLTExIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC10YWJsZXRfZXh0cmEtMTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMiwgMWZyKQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lbGVtZW50b3ItZ3JpZC10YWJsZXQtMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhcigtLWdyaWQtY29sdW1uLWdhcCk7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogY2FsYygtMSAqIHZhcigtLWdyaWQtcm93LWdhcCkpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTAgLmVsZW1lbnRvci1ncmlkIC5lbGVtZW50b3ItZ3JpZC1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZ3JpZC1yb3ctZ2FwKTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTMgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTUgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTYgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg2LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTcgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTggLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTkgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg5LCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtdGFibGV0LTEwIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTAsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC10YWJsZXQtMTEgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLXRhYmxldC0xMiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEyLCAxZnIpCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApOwogICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1ncmlkLXJvdy1nYXApKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS0wIC5lbGVtZW50b3ItZ3JpZCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWdyaWQtcm93LWdhcCk7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZAogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS0xIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS0yIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS0zIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS00IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS01IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS02IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS03IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS04IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS05IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOSwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZV9leHRyYS0xMCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEwLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlX2V4dHJhLTExIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGVfZXh0cmEtMTIgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMiwgMWZyKQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0wIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHdvcmQtc3BhY2luZzogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKTsKICAgICAgICBtYXJnaW4tYm90dG9tOiBjYWxjKC0xICogdmFyKC0tZ3JpZC1yb3ctZ2FwKSkKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtMCAuZWxlbWVudG9yLWdyaWQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1ncmlkLXJvdy1nYXApOwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtMSAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtMiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtMyAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtNCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtNSAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtNiAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtNyAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDcsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtOCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDgsIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtOSAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDksIDFmcikKICAgIH0KICAgIC5lbGVtZW50b3ItZ3JpZC1tb2JpbGUtMTAgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMCwgMWZyKQogICAgfQogICAgLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0xMSAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDExLCAxZnIpCiAgICB9CiAgICAuZWxlbWVudG9yLWdyaWQtbW9iaWxlLTEyIC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTIsIDFmcikKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6MTAyNXB4KSB7CiAgICAjZWxlbWVudG9yLWRldmljZS1tb2RlOmFmdGVyIHsKICAgICAgICBjb250ZW50OiAiZGVza3RvcCIKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6LTEpIHsKICAgICNlbGVtZW50b3ItZGV2aWNlLW1vZGU6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICJ3aWRlc2NyZWVuIgogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMSkgewogICAgI2VsZW1lbnRvci1kZXZpY2UtbW9kZTphZnRlciB7CiAgICAgICAgY29udGVudDogImxhcHRvcCI7CiAgICAgICAgY29udGVudDogInRhYmxldF9leHRyYSIKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAjZWxlbWVudG9yLWRldmljZS1tb2RlOmFmdGVyIHsKICAgICAgICBjb250ZW50OiAidGFibGV0IgogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMSkgewogICAgI2VsZW1lbnRvci1kZXZpY2UtbW9kZTphZnRlciB7CiAgICAgICAgY29udGVudDogIm1vYmlsZV9leHRyYSIKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgICNlbGVtZW50b3ItZGV2aWNlLW1vZGU6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICJtb2JpbGUiCiAgICB9Cn0KCi5lLWNvbiB7CiAgICAtLWJvcmRlci1yYWRpdXM6IDA7CiAgICAtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aDogMHB4OwogICAgLS1ib3JkZXItaW5saW5lLWVuZC13aWR0aDogMHB4OwogICAgLS1ib3JkZXItYmxvY2stZW5kLXdpZHRoOiAwcHg7CiAgICAtLWJvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6IDBweDsKICAgIC0tYm9yZGVyLXN0eWxlOiBpbml0aWFsOwogICAgLS1ib3JkZXItY29sb3I6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IDEwMCU7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiBpbml0aWFsOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMDsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBpbml0aWFsOwogICAgLS1jb250ZW50LXdpZHRoOiBtaW4oMTAwJSwgdmFyKC0tY29udGFpbmVyLW1heC13aWR0aCwgMTE0MHB4KSk7CiAgICAtLXdpZHRoOiAxMDAlOwogICAgLS1taW4taGVpZ2h0OiBpbml0aWFsOwogICAgLS1oZWlnaHQ6IGF1dG87CiAgICAtLXRleHQtYWxpZ246IGluaXRpYWw7CiAgICAtLW1hcmdpbi1ibG9jay1zdGFydDogMHB4OwogICAgLS1tYXJnaW4taW5saW5lLWVuZDogMHB4OwogICAgLS1tYXJnaW4tYmxvY2stZW5kOiAwcHg7CiAgICAtLW1hcmdpbi1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogdmFyKC0tY29udGFpbmVyLWRlZmF1bHQtcGFkZGluZy1ibG9jay1zdGFydCwgMTBweCk7CiAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogdmFyKC0tY29udGFpbmVyLWRlZmF1bHQtcGFkZGluZy1pbmxpbmUtZW5kLCAxMHB4KTsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IHZhcigtLWNvbnRhaW5lci1kZWZhdWx0LXBhZGRpbmctYmxvY2stZW5kLCAxMHB4KTsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLWNvbnRhaW5lci1kZWZhdWx0LXBhZGRpbmctaW5saW5lLXN0YXJ0LCAxMHB4KTsKICAgIC0tcG9zaXRpb246IHJlbGF0aXZlOwogICAgLS16LWluZGV4OiByZXZlcnQ7CiAgICAtLW92ZXJmbG93OiB2aXNpYmxlOwogICAgLS1nYXA6IHZhcigtLXdpZGdldHMtc3BhY2luZywgMjBweCk7CiAgICAtLW92ZXJsYXktbWl4LWJsZW5kLW1vZGU6IGluaXRpYWw7CiAgICAtLW92ZXJsYXktb3BhY2l0eTogMTsKICAgIC0tb3ZlcmxheS10cmFuc2l0aW9uOiAwLjNzOwogICAgLS1lLWNvbi1ncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOwogICAgLS1lLWNvbi1ncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCgyLCAxZnIpOwogICAgcG9zaXRpb246IHZhcigtLXBvc2l0aW9uKTsKICAgIHdpZHRoOiB2YXIoLS13aWR0aCk7CiAgICBtaW4td2lkdGg6IDA7CiAgICBtaW4taGVpZ2h0OiB2YXIoLS1taW4taGVpZ2h0KTsKICAgIGhlaWdodDogdmFyKC0taGVpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpOwogICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1iYy1tYXJnaW4tYmxvY2stc3RhcnQsIHZhcigtLW1hcmdpbi1ibG9jay1zdGFydCkpOwogICAgbWFyZ2luLWlubGluZS1lbmQ6IHZhcigtLWJjLW1hcmdpbi1pbmxpbmUtZW5kLCB2YXIoLS1tYXJnaW4taW5saW5lLWVuZCkpOwogICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tYmMtbWFyZ2luLWJsb2NrLWVuZCwgdmFyKC0tbWFyZ2luLWJsb2NrLWVuZCkpOwogICAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tYmMtbWFyZ2luLWlubGluZS1zdGFydCwgdmFyKC0tbWFyZ2luLWlubGluZS1zdGFydCkpOwogICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLWJjLXBhZGRpbmctaW5saW5lLXN0YXJ0LCB2YXIoLS1wYWRkaW5nLWlubGluZS1zdGFydCkpOwogICAgcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1iYy1wYWRkaW5nLWlubGluZS1lbmQsIHZhcigtLXBhZGRpbmctaW5saW5lLWVuZCkpOwogICAgei1pbmRleDogdmFyKC0tei1pbmRleCk7CiAgICBvdmVyZmxvdzogdmFyKC0tb3ZlcmZsb3cpOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb24sIC4zcyksIGJvcmRlciB2YXIoLS1ib3JkZXItdHJhbnNpdGlvbiwgLjNzKSwgYm94LXNoYWRvdyB2YXIoLS1ib3JkZXItdHJhbnNpdGlvbiwgLjNzKSwgdHJhbnNmb3JtIHZhcigtLWUtY29uLXRyYW5zZm9ybS10cmFuc2l0aW9uLWR1cmF0aW9uLCAuNHMpCn0KCi5lLWNvbi5lLWZsZXggewogICAgLS1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLS1mbGV4LWJhc2lzOiBhdXRvOwogICAgLS1mbGV4LWdyb3c6IDA7CiAgICAtLWZsZXgtc2hyaW5rOiAxOwogICAgZmxleDogdmFyKC0tZmxleC1ncm93KSB2YXIoLS1mbGV4LXNocmluaykgdmFyKC0tZmxleC1iYXNpcykKfQoKLmUtY29uLWZ1bGwsCi5lLWNvbj4uZS1jb24taW5uZXIgewogICAgdGV4dC1hbGlnbjogdmFyKC0tdGV4dC1hbGlnbik7CiAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1iYy1wYWRkaW5nLWJsb2NrLXN0YXJ0LCB2YXIoLS1wYWRkaW5nLWJsb2NrLXN0YXJ0KSk7CiAgICBwYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0tYmMtcGFkZGluZy1ibG9jay1lbmQsIHZhcigtLXBhZGRpbmctYmxvY2stZW5kKSkKfQoKLmUtY29uLWZ1bGwuZS1mbGV4LAouZS1jb24uZS1mbGV4Pi5lLWNvbi1pbm5lciB7CiAgICBmbGV4LWRpcmVjdGlvbjogdmFyKC0tZmxleC1kaXJlY3Rpb24pCn0KCi5lLWNvbiwKLmUtY29uPi5lLWNvbi1pbm5lciB7CiAgICBkaXNwbGF5OiB2YXIoLS1kaXNwbGF5KQp9CgouZS1jb24uZS1ncmlkIHsKICAgIC0tZ3JpZC1qdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0OwogICAgLS1ncmlkLWFsaWduLWNvbnRlbnQ6IHN0YXJ0OwogICAgLS1ncmlkLWF1dG8tZmxvdzogcm93Cn0KCi5lLWNvbi5lLWdyaWQsCi5lLWNvbi5lLWdyaWQ+LmUtY29uLWlubmVyIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tZS1jb24tZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zKTsKICAgIGdyaWQtdGVtcGxhdGUtcm93czogdmFyKC0tZS1jb24tZ3JpZC10ZW1wbGF0ZS1yb3dzKTsKICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tZ3JpZC1qdXN0aWZ5LWNvbnRlbnQpOwogICAgYWxpZ24tY29udGVudDogdmFyKC0tZ3JpZC1hbGlnbi1jb250ZW50KTsKICAgIGdyaWQtYXV0by1mbG93OiB2YXIoLS1ncmlkLWF1dG8tZmxvdyk7CiAgICBqdXN0aWZ5LWl0ZW1zOiB2YXIoLS1qdXN0aWZ5LWl0ZW1zKTsKICAgIGFsaWduLWl0ZW1zOiB2YXIoLS1hbGlnbi1pdGVtcykKfQoKLmUtY29uLWJveGVkLmUtZmxleCB7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IG5vcm1hbDsKICAgIGFsaWduLWl0ZW1zOiBub3JtYWw7CiAgICBhbGlnbi1jb250ZW50OiBub3JtYWwKfQoKLmUtY29uLWJveGVkLmUtZ3JpZCB7CiAgICBqdXN0aWZ5LWl0ZW1zOiBsZWdhY3k7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyCn0KCi5lLWNvbi1ib3hlZCB7CiAgICB0ZXh0LWFsaWduOiBpbml0aWFsOwogICAgZ2FwOiBpbml0aWFsCn0KCi5lLWNvbi5lLWZsZXg+LmUtY29uLWlubmVyIHsKICAgIGZsZXgtd3JhcDogdmFyKC0tZmxleC13cmFwKTsKICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tanVzdGlmeS1jb250ZW50KTsKICAgIGFsaWduLWl0ZW1zOiB2YXIoLS1hbGlnbi1pdGVtcyk7CiAgICBhbGlnbi1jb250ZW50OiB2YXIoLS1hbGlnbi1jb250ZW50KTsKICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICBmbGV4LWdyb3c6IDE7CiAgICBmbGV4LXNocmluazogMTsKICAgIGFsaWduLXNlbGY6IGF1dG8KfQoKLmUtY29uLmUtZ3JpZD4uZS1jb24taW5uZXIgewogICAganVzdGlmeS1pdGVtczogdmFyKC0tanVzdGlmeS1pdGVtcyk7CiAgICBhbGlnbi1pdGVtczogdmFyKC0tYWxpZ24taXRlbXMpCn0KCi5lLWNvbj4uZS1jb24taW5uZXIgewogICAgZ2FwOiB2YXIoLS1nYXApOwogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IHZhcigtLWNvbnRlbnQtd2lkdGgpOwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMDsKICAgIHBhZGRpbmctaW5saW5lLWVuZDogMDsKICAgIGhlaWdodDogMTAwJQp9Cgo6aXMoLmVsZW1lbnRvci1zZWN0aW9uLXdyYXAsIFtkYXRhLWVsZW1lbnRvci1pZF0pPi5lLWNvbiB7CiAgICAtLW1hcmdpbi1pbmxpbmUtZW5kOiBhdXRvOwogICAgLS1tYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvOwogICAgbWF4LXdpZHRoOiBtaW4oMTAwJSwgdmFyKC0td2lkdGgpKQp9CgouZS1jb24gLmVsZW1lbnRvci13aWRnZXQuZWxlbWVudG9yLXdpZGdldCB7CiAgICBtYXJnaW4tYmxvY2stZW5kOiAwCn0KCi5lLWNvbjpiZWZvcmUsCi5lLWNvbj4uZWxlbWVudG9yLWJhY2tncm91bmQtc2xpZGVzaG93OmJlZm9yZSwKLmUtY29uPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXI6YmVmb3JlLAo6aXMoLmUtY29uLCAuZS1jb24+LmUtY29uLWlubmVyKT4uZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tY29udGFpbmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiB2YXIoLS1iYWNrZ3JvdW5kLW92ZXJsYXkpOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBtaXgtYmxlbmQtbW9kZTogdmFyKC0tb3ZlcmxheS1taXgtYmxlbmQtbW9kZSk7CiAgICBvcGFjaXR5OiB2YXIoLS1vdmVybGF5LW9wYWNpdHkpOwogICAgdHJhbnNpdGlvbjogdmFyKC0tb3ZlcmxheS10cmFuc2l0aW9uLCAuM3MpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7CiAgICBib3JkZXItc3R5bGU6IHZhcigtLWJvcmRlci1zdHlsZSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aCk7CiAgICBib3JkZXItaW5saW5lLWVuZC13aWR0aDogdmFyKC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGgpOwogICAgYm9yZGVyLWJsb2NrLWVuZC13aWR0aDogdmFyKC0tYm9yZGVyLWJsb2NrLWVuZC13aWR0aCk7CiAgICBib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiB2YXIoLS1ib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoKTsKICAgIHRvcDogY2FsYygwcHggLSB2YXIoLS1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGgpKTsKICAgIGxlZnQ6IGNhbGMoMHB4IC0gdmFyKC0tYm9yZGVyLWlubGluZS1zdGFydC13aWR0aCkpOwogICAgd2lkdGg6IG1heCgxMDAlICsgdmFyKC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGgpICsgdmFyKC0tYm9yZGVyLWlubGluZS1zdGFydC13aWR0aCksIDEwMCUpOwogICAgaGVpZ2h0OiBtYXgoMTAwJSArIHZhcigtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aCkgKyB2YXIoLS1ib3JkZXItYmxvY2stZW5kLXdpZHRoKSwgMTAwJSkKfQoKLmUtY29uOmJlZm9yZSB7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLW92ZXJsYXktdHJhbnNpdGlvbiwgLjNzKSwgYm9yZGVyLXJhZGl1cyB2YXIoLS1ib3JkZXItdHJhbnNpdGlvbiwgLjNzKSwgb3BhY2l0eSB2YXIoLS1vdmVybGF5LXRyYW5zaXRpb24sIC4zcykKfQoKLmUtY29uPi5lbGVtZW50b3ItYmFja2dyb3VuZC1zbGlkZXNob3csCjppcyguZS1jb24sIC5lLWNvbj4uZS1jb24taW5uZXIpPi5lbGVtZW50b3ItYmFja2dyb3VuZC12aWRlby1jb250YWluZXIgewogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7CiAgICBib3JkZXItc3R5bGU6IHZhcigtLWJvcmRlci1zdHlsZSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItYmxvY2stc3RhcnQtd2lkdGg6IHZhcigtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aCk7CiAgICBib3JkZXItaW5saW5lLWVuZC13aWR0aDogdmFyKC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGgpOwogICAgYm9yZGVyLWJsb2NrLWVuZC13aWR0aDogdmFyKC0tYm9yZGVyLWJsb2NrLWVuZC13aWR0aCk7CiAgICBib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiB2YXIoLS1ib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoKTsKICAgIHRvcDogY2FsYygwcHggLSB2YXIoLS1ib3JkZXItYmxvY2stc3RhcnQtd2lkdGgpKTsKICAgIGxlZnQ6IGNhbGMoMHB4IC0gdmFyKC0tYm9yZGVyLWlubGluZS1zdGFydC13aWR0aCkpOwogICAgd2lkdGg6IG1heCgxMDAlICsgdmFyKC0tYm9yZGVyLWlubGluZS1lbmQtd2lkdGgpICsgdmFyKC0tYm9yZGVyLWlubGluZS1zdGFydC13aWR0aCksIDEwMCUpOwogICAgaGVpZ2h0OiBtYXgoMTAwJSArIHZhcigtLWJvcmRlci1ibG9jay1zdGFydC13aWR0aCkgKyB2YXIoLS1ib3JkZXItYmxvY2stZW5kLXdpZHRoKSwgMTAwJSkKfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIDppcyguZS1jb24sIC5lLWNvbj4uZS1jb24taW5uZXIpPi5lbGVtZW50b3ItYmFja2dyb3VuZC12aWRlby1jb250YWluZXIuZWxlbWVudG9yLWhpZGRlbi1waG9uZSB7CiAgICAgICAgZGlzcGxheTogbm9uZQogICAgfQp9Cgo6aXMoLmUtY29uLCAuZS1jb24+LmUtY29uLWlubmVyKT4uZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tY29udGFpbmVyOmJlZm9yZSB7CiAgICB6LWluZGV4OiAxCn0KCjppcyguZS1jb24sIC5lLWNvbj4uZS1jb24taW5uZXIpPi5lbGVtZW50b3ItYmFja2dyb3VuZC1zbGlkZXNob3c6YmVmb3JlIHsKICAgIHotaW5kZXg6IDIKfQoKLmUtY29uIC5lbGVtZW50b3Itd2lkZ2V0IHsKICAgIG1pbi13aWR0aDogMAp9CgouZS1jb24gLmVsZW1lbnRvci13aWRnZXQtZW1wdHksCi5lLWNvbiAuZWxlbWVudG9yLXdpZGdldC1nb29nbGVfbWFwcywKLmUtY29uIC5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvLAouZS1jb24gLmVsZW1lbnRvci13aWRnZXQuZS13aWRnZXQtc3dpcGVyIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5lLWNvbj4uZS1jb24taW5uZXI+LmVsZW1lbnRvci13aWRnZXQ+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyLAouZS1jb24+LmVsZW1lbnRvci13aWRnZXQ+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIHsKICAgIGhlaWdodDogMTAwJQp9CgouZS1jb24uZS1jb24+LmUtY29uLWlubmVyPi5lbGVtZW50b3Itd2lkZ2V0LAouZWxlbWVudG9yLmVsZW1lbnRvciAuZS1jb24+LmVsZW1lbnRvci13aWRnZXQgewogICAgbWF4LXdpZHRoOiAxMDAlCn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZS1jb24uZS1mbGV4IHsKICAgICAgICAtLXdpZHRoOiAxMDAlOwogICAgICAgIC0tZmxleC13cmFwOiB3cmFwCiAgICB9Cn0KCi5lLWNvbiB7CiAgICAtLWJjLW1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tbWFyZ2luLXRvcCk7CiAgICAtLWJjLW1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLW1hcmdpbi1ib3R0b20pOwogICAgLS1iYy1tYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1tYXJnaW4tbGVmdCk7CiAgICAtLWJjLW1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1tYXJnaW4tcmlnaHQpOwogICAgLS1iYy1wYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1wYWRkaW5nLXRvcCk7CiAgICAtLWJjLXBhZGRpbmctYmxvY2stZW5kOiB2YXIoLS1wYWRkaW5nLWJvdHRvbSk7CiAgICAtLWJjLXBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1wYWRkaW5nLWxlZnQpOwogICAgLS1iYy1wYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLXBhZGRpbmctcmlnaHQpCn0KCltkaXI9cnRsXSAuZS1jb24gewogICAgLS1iYy1tYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1tYXJnaW4tcmlnaHQpOwogICAgLS1iYy1tYXJnaW4taW5saW5lLWVuZDogdmFyKC0tbWFyZ2luLWxlZnQpOwogICAgLS1iYy1wYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0tcGFkZGluZy1yaWdodCk7CiAgICAtLWJjLXBhZGRpbmctaW5saW5lLWVuZDogdmFyKC0tcGFkZGluZy1sZWZ0KQp9CgouZWxlbWVudG9yLWZvcm0tZmllbGRzLXdyYXBwZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcAp9CgouZWxlbWVudG9yLWZvcm0tZmllbGRzLXdyYXBwZXIuZWxlbWVudG9yLWxhYmVscy1hYm92ZSAuZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3ItZmllbGQtc3ViZ3JvdXAsCi5lbGVtZW50b3ItZm9ybS1maWVsZHMtd3JhcHBlci5lbGVtZW50b3ItbGFiZWxzLWFib3ZlIC5lbGVtZW50b3ItZmllbGQtZ3JvdXA+LmVsZW1lbnRvci1zZWxlY3Qtd3JhcHBlciwKLmVsZW1lbnRvci1mb3JtLWZpZWxkcy13cmFwcGVyLmVsZW1lbnRvci1sYWJlbHMtYWJvdmUgLmVsZW1lbnRvci1maWVsZC1ncm91cD5pbnB1dCwKLmVsZW1lbnRvci1mb3JtLWZpZWxkcy13cmFwcGVyLmVsZW1lbnRvci1sYWJlbHMtYWJvdmUgLmVsZW1lbnRvci1maWVsZC1ncm91cD50ZXh0YXJlYSB7CiAgICBmbGV4LWJhc2lzOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlCn0KCi5lbGVtZW50b3ItZm9ybS1maWVsZHMtd3JhcHBlci5lbGVtZW50b3ItbGFiZWxzLWlubGluZT4uZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3Itc2VsZWN0LXdyYXBwZXIsCi5lbGVtZW50b3ItZm9ybS1maWVsZHMtd3JhcHBlci5lbGVtZW50b3ItbGFiZWxzLWlubGluZT4uZWxlbWVudG9yLWZpZWxkLWdyb3VwPmlucHV0IHsKICAgIGZsZXgtZ3JvdzogMQp9CgouZWxlbWVudG9yLWZpZWxkLWdyb3VwIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1maWVsZC1ncm91cC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQgewogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kCn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgYm9yZGVyOiAxcHggc29saWQgIzY5NzI3ZDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgY29sb3I6ICMxZjIxMjQ7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgZmxleC1ncm93OiAxCn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsOmZvY3VzIHsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIC4xKTsKICAgIG91dGxpbmU6IDAKfQoKLmVsZW1lbnRvci1maWVsZC1ncm91cCAuZWxlbWVudG9yLWZpZWxkLXRleHR1YWw6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IGluaGVyaXQ7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIG9wYWNpdHk6IC42Cn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAgLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsOjpwbGFjZWhvbGRlciB7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgb3BhY2l0eTogLjYKfQoKLmVsZW1lbnRvci1maWVsZC1ncm91cCAuZWxlbWVudG9yLXNlbGVjdC13cmFwcGVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLWZpZWxkLWdyb3VwIC5lbGVtZW50b3Itc2VsZWN0LXdyYXBwZXIgc2VsZWN0IHsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTsKICAgIGFwcGVhcmFuY2U6IG5vbmU7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgICBmb250LXN0eWxlOiBpbmhlcml0OwogICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQ7CiAgICBsZXR0ZXItc3BhY2luZzogaW5oZXJpdDsKICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogICAgZmxleC1iYXNpczogMTAwJTsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHgKfQoKLmVsZW1lbnRvci1maWVsZC1ncm91cCAuZWxlbWVudG9yLXNlbGVjdC13cmFwcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU5MmEiOwogICAgZm9udC1mYW1pbHk6IGVpY29uczsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgcmlnaHQ6IDEwcHg7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIHRleHQtc2hhZG93OiAwIDAgM3B4IHJnYmEoMCwgMCwgMCwgLjMpCn0KCi5lbGVtZW50b3ItZmllbGQtZ3JvdXAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc2VsZWN0LW11bHRpcGxlIC5lbGVtZW50b3Itc2VsZWN0LXdyYXBwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICIiCn0KCi5lbGVtZW50b3ItZmllbGQtc3ViZ3JvdXAgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcAp9CgouZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIC5lbGVtZW50b3ItZmllbGQtb3B0aW9uIGxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwLmVsZW1lbnRvci1zdWJncm91cC1pbmxpbmUgLmVsZW1lbnRvci1maWVsZC1vcHRpb24gewogICAgcGFkZGluZy1yaWdodDogMTBweAp9CgouZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwOm5vdCguZWxlbWVudG9yLXN1Ymdyb3VwLWlubGluZSkgLmVsZW1lbnRvci1maWVsZC1vcHRpb24gewogICAgZmxleC1iYXNpczogMTAwJQp9CgouZWxlbWVudG9yLWZpZWxkLXR5cGUtYWNjZXB0YW5jZSAuZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIC5lbGVtZW50b3ItZmllbGQtb3B0aW9uIGlucHV0LAouZWxlbWVudG9yLWZpZWxkLXR5cGUtYWNjZXB0YW5jZSAuZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIC5lbGVtZW50b3ItZmllbGQtb3B0aW9uIGxhYmVsLAouZWxlbWVudG9yLWZpZWxkLXR5cGUtY2hlY2tib3ggLmVsZW1lbnRvci1maWVsZC1zdWJncm91cCAuZWxlbWVudG9yLWZpZWxkLW9wdGlvbiBpbnB1dCwKLmVsZW1lbnRvci1maWVsZC10eXBlLWNoZWNrYm94IC5lbGVtZW50b3ItZmllbGQtc3ViZ3JvdXAgLmVsZW1lbnRvci1maWVsZC1vcHRpb24gbGFiZWwsCi5lbGVtZW50b3ItZmllbGQtdHlwZS1yYWRpbyAuZWxlbWVudG9yLWZpZWxkLXN1Ymdyb3VwIC5lbGVtZW50b3ItZmllbGQtb3B0aW9uIGlucHV0LAouZWxlbWVudG9yLWZpZWxkLXR5cGUtcmFkaW8gLmVsZW1lbnRvci1maWVsZC1zdWJncm91cCAuZWxlbWVudG9yLWZpZWxkLW9wdGlvbiBsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUKfQoKLmVsZW1lbnRvci1maWVsZC1sYWJlbCB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmVsZW1lbnRvci1tYXJrLXJlcXVpcmVkIC5lbGVtZW50b3ItZmllbGQtbGFiZWw6YWZ0ZXIgewogICAgY29udGVudDogIioiOwogICAgY29sb3I6IHJlZDsKICAgIHBhZGRpbmctbGVmdDogLjJlbQp9CgouZWxlbWVudG9yLWZpZWxkLXRleHR1YWwgewogICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIG1pbi1oZWlnaHQ6IDQwcHg7CiAgICBwYWRkaW5nOiA1cHggMTRweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweAp9CgouZWxlbWVudG9yLWZpZWxkLXRleHR1YWwuZWxlbWVudG9yLXNpemUteHMgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgbWluLWhlaWdodDogMzNweDsKICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4Cn0KCi5lbGVtZW50b3ItZmllbGQtdGV4dHVhbC5lbGVtZW50b3Itc2l6ZS1tZCB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBtaW4taGVpZ2h0OiA0N3B4OwogICAgcGFkZGluZzogNnB4IDE2cHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHgKfQoKLmVsZW1lbnRvci1maWVsZC10ZXh0dWFsLmVsZW1lbnRvci1zaXplLWxnIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIG1pbi1oZWlnaHQ6IDU5cHg7CiAgICBwYWRkaW5nOiA3cHggMjBweDsKICAgIGJvcmRlci1yYWRpdXM6IDVweAp9CgouZWxlbWVudG9yLWZpZWxkLXRleHR1YWwuZWxlbWVudG9yLXNpemUteGwgewogICAgZm9udC1zaXplOiAyMHB4OwogICAgbWluLWhlaWdodDogNzJweDsKICAgIHBhZGRpbmc6IDhweCAyNHB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4Cn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLXN0cmV0Y2ggLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdDpub3QoLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcikgLmVsZW1lbnRvci1idXR0b24gewogICAgZmxleC1iYXNpczogMTAwJQp9CgouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1zdHJldGNoIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIgewogICAgZmxleC1iYXNpczogNTAlOwogICAgZmxleC1ncm93OiAxCn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLXN0cmV0Y2ggLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uIHsKICAgIGZsZXgtYmFzaXM6IDEwMCUKfQoKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnMsCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0IHsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnMsCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLXN0YXJ0IC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWVuZCAuZS1mb3JtX19idXR0b25zLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1lbmQgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiwKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tZW5kIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1zdGFydCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBmbGV4LWJhc2lzOiBhdXRvCn0KCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciwKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tc3RhcnQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciB7CiAgICBmbGV4LWdyb3c6IDAKfQoKLmVsZW1lbnRvci1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24sCi5lbGVtZW50b3ItYnV0dG9uLWFsaWduLWVuZCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1zdGFydCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAouZWxlbWVudG9yLWJ1dHRvbi1hbGlnbi1zdGFydCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24gewogICAgZmxleC1iYXNpczogYXV0bwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLXN0cmV0Y2ggLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdDpub3QoLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcikgLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIGZsZXgtYmFzaXM6IDEwMCUKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1zdHJldGNoIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIgewogICAgICAgIGZsZXgtYmFzaXM6IDUwJTsKICAgICAgICBmbGV4LWdyb3c6IDEKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1zdHJldGNoIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiB7CiAgICAgICAgZmxleC1iYXNpczogMTAwJQogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zLAogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0IHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnMsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tc3RhcnQgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdCB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0CiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnMsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQKICAgIH0KICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdDpub3QoLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcikgLmVsZW1lbnRvci1idXR0b24sCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uLAogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLXN0YXJ0IC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tc3RhcnQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciB7CiAgICAgICAgZmxleC1ncm93OiAwCiAgICB9CiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tY2VudGVyIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiwKICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlciwKICAgIC5lbGVtZW50b3ItdGFibGV0LWJ1dHRvbi1hbGlnbi1lbmQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uLAogICAgLmVsZW1lbnRvci10YWJsZXQtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLXRhYmxldC1idXR0b24tYWxpZ24tc3RhcnQgLmUtZm9ybV9fYnV0dG9uc19fd3JhcHBlcl9fYnV0dG9uIHsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvCiAgICB9Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1zdHJldGNoIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICBmbGV4LWJhc2lzOiAxMDAlCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tc3RyZXRjaCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyIHsKICAgICAgICBmbGV4LWJhc2lzOiA1MCU7CiAgICAgICAgZmxleC1ncm93OiAxCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tc3RyZXRjaCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24gewogICAgICAgIGZsZXgtYmFzaXM6IDEwMCUKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmUtZm9ybV9fYnV0dG9ucywKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1jZW50ZXIgLmVsZW1lbnRvci1maWVsZC10eXBlLXN1Ym1pdCB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1zdGFydCAuZS1mb3JtX19idXR0b25zLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLXN0YXJ0IC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQgewogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWVuZCAuZS1mb3JtX19idXR0b25zLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWVuZCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0IHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCiAgICB9CiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItZmllbGQtdHlwZS1zdWJtaXQ6bm90KC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIpIC5lbGVtZW50b3ItYnV0dG9uLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWVuZCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiwKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1zdGFydCAuZWxlbWVudG9yLWZpZWxkLXR5cGUtc3VibWl0Om5vdCguZS1mb3JtX19idXR0b25zX193cmFwcGVyKSAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgZmxleC1iYXNpczogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWVuZCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIgewogICAgICAgIGZsZXgtZ3JvdzogMAogICAgfQogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLWNlbnRlciAuZS1mb3JtX19idXR0b25zX193cmFwcGVyX19idXR0b24sCiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXIsCiAgICAuZWxlbWVudG9yLW1vYmlsZS1idXR0b24tYWxpZ24tZW5kIC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiwKICAgIC5lbGVtZW50b3ItbW9iaWxlLWJ1dHRvbi1hbGlnbi1zdGFydCAuZS1mb3JtX19idXR0b25zX193cmFwcGVyLAogICAgLmVsZW1lbnRvci1tb2JpbGUtYnV0dG9uLWFsaWduLXN0YXJ0IC5lLWZvcm1fX2J1dHRvbnNfX3dyYXBwZXJfX2J1dHRvbiB7CiAgICAgICAgZmxleC1iYXNpczogYXV0bwogICAgfQp9CgouZWxlbWVudG9yLWVycm9yIC5lbGVtZW50b3ItZmllbGQgewogICAgYm9yZGVyLWNvbG9yOiAjZDk1MzRmCn0KCi5lbGVtZW50b3ItZXJyb3IgLmhlbHAtaW5saW5lIHsKICAgIGNvbG9yOiAjZDk1MzRmOwogICAgZm9udC1zaXplOiAuOWVtCn0KCi5lbGVtZW50b3ItbWVzc2FnZSB7CiAgICBtYXJnaW46IDEwcHggMDsKICAgIGZvbnQtc2l6ZTogMWVtOwogICAgbGluZS1oZWlnaHQ6IDEKfQoKLmVsZW1lbnRvci1tZXNzYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU5MGUiOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC1mYW1pbHk6IGVpY29uczsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgbWFyZ2luLXJpZ2h0OiA1cHgKfQoKLmVsZW1lbnRvci1tZXNzYWdlLmVsZW1lbnRvci1tZXNzYWdlLWRhbmdlciB7CiAgICBjb2xvcjogI2Q5NTM0Zgp9CgouZWxlbWVudG9yLW1lc3NhZ2UuZWxlbWVudG9yLW1lc3NhZ2UtZGFuZ2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU4N2YiCn0KCi5lbGVtZW50b3ItbWVzc2FnZS5mb3JtLW1lc3NhZ2Utc3VjY2VzcyB7CiAgICBjb2xvcjogIzVjYjg1Ywp9CgouZWxlbWVudG9yLWZvcm0gLmVsZW1lbnRvci1idXR0b24gewogICAgcGFkZGluZy10b3A6IDA7CiAgICBwYWRkaW5nLWJvdHRvbTogMDsKICAgIGJvcmRlcjogbm9uZQp9CgouZWxlbWVudG9yLWZvcm0gLmVsZW1lbnRvci1idXR0b24+c3BhbiB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLXhzIHsKICAgIG1pbi1oZWlnaHQ6IDMzcHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLXNtIHsKICAgIG1pbi1oZWlnaHQ6IDQwcHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLW1kIHsKICAgIG1pbi1oZWlnaHQ6IDQ3cHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLWxnIHsKICAgIG1pbi1oZWlnaHQ6IDU5cHgKfQoKLmVsZW1lbnRvci1mb3JtIC5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLXhsIHsKICAgIG1pbi1oZWlnaHQ6IDcycHgKfQoKLmVsZW1lbnRvci1lbGVtZW50IC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciB7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4zcywgYm9yZGVyIC4zcywgYm9yZGVyLXJhZGl1cyAuM3MsIGJveC1zaGFkb3cgLjNzLCB0cmFuc2Zvcm0gdmFyKC0tZS10cmFuc2Zvcm0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgLjRzKQp9CgouZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGJhY2tncm91bmQtY29sb3I6ICM2OTcyN2Q7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIGZpbGw6ICNmZmY7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjNzCn0KCi5lbGVtZW50b3ItYnV0dG9uOmZvY3VzLAouZWxlbWVudG9yLWJ1dHRvbjpob3ZlciwKLmVsZW1lbnRvci1idXR0b246dmlzaXRlZCB7CiAgICBjb2xvcjogI2ZmZgp9CgouZWxlbWVudG9yLWJ1dHRvbi1jb250ZW50LXdyYXBwZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCi5lbGVtZW50b3ItYnV0dG9uLWljb24gewogICAgZmxleC1ncm93OiAwOwogICAgb3JkZXI6IDUKfQoKLmVsZW1lbnRvci1idXR0b24taWNvbiBzdmcgewogICAgd2lkdGg6IDFlbTsKICAgIGhlaWdodDogYXV0bwp9CgouZWxlbWVudG9yLWJ1dHRvbi1pY29uIC5lLWZvbnQtaWNvbi1zdmcgewogICAgaGVpZ2h0OiAxZW0KfQoKLmVsZW1lbnRvci1idXR0b24tdGV4dCB7CiAgICBmbGV4LWdyb3c6IDE7CiAgICBvcmRlcjogMTA7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKfQoKLmVsZW1lbnRvci1idXR0b24uZWxlbWVudG9yLXNpemUteHMgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgcGFkZGluZzogMTBweCAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4Cn0KCi5lbGVtZW50b3ItYnV0dG9uLmVsZW1lbnRvci1zaXplLW1kIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIHBhZGRpbmc6IDE1cHggMzBweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouZWxlbWVudG9yLWJ1dHRvbi5lbGVtZW50b3Itc2l6ZS1sZyB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBwYWRkaW5nOiAyMHB4IDQwcHg7CiAgICBib3JkZXItcmFkaXVzOiA1cHgKfQoKLmVsZW1lbnRvci1idXR0b24uZWxlbWVudG9yLXNpemUteGwgewogICAgZm9udC1zaXplOiAyMHB4OwogICAgcGFkZGluZzogMjVweCA1MHB4OwogICAgYm9yZGVyLXJhZGl1czogNnB4Cn0KCi5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYWxpZ24taWNvbi1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgb3JkZXI6IDE1Cn0KCi5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYWxpZ24taWNvbi1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgb3JkZXI6IDUKfQoKLmVsZW1lbnRvci1idXR0b24gc3BhbiB7CiAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQKfQoKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1idXR0b24taW5mbyAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlCn0KCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYnV0dG9uLXN1Y2Nlc3MgLmVsZW1lbnRvci1idXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1Ywp9CgouZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWJ1dHRvbi13YXJuaW5nIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGUKfQoKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1idXR0b24tZGFuZ2VyIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOTUzNGYKfQoKLmVsZW1lbnRvci13aWRnZXQtYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uLWluZm8gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZQp9CgouZWxlbWVudG9yLXdpZGdldC1idXR0b24gLmVsZW1lbnRvci1idXR0b24gLmVsZW1lbnRvci1idXR0b24tc3VjY2VzcyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNiODVjCn0KCi5lbGVtZW50b3Itd2lkZ2V0LWJ1dHRvbiAuZWxlbWVudG9yLWJ1dHRvbiAuZWxlbWVudG9yLWJ1dHRvbi13YXJuaW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGUKfQoKLmVsZW1lbnRvci13aWRnZXQtYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmCn0KCi5lbGVtZW50b3ItdGFiLXRpdGxlIGEgewogICAgY29sb3I6IGluaGVyaXQKfQoKLmVsZW1lbnRvci12aWV3LXN0YWNrZWQgLmVsZW1lbnRvci1pY29uIHsKICAgIHBhZGRpbmc6IC41ZW07CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjk3MjdkOwogICAgY29sb3I6ICNmZmY7CiAgICBmaWxsOiAjZmZmCn0KCi5lbGVtZW50b3Itdmlldy1mcmFtZWQgLmVsZW1lbnRvci1pY29uIHsKICAgIHBhZGRpbmc6IC41ZW07CiAgICBjb2xvcjogIzY5NzI3ZDsKICAgIGJvcmRlcjogM3B4IHNvbGlkICM2OTcyN2Q7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouZWxlbWVudG9yLWljb24gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjNzOwogICAgY29sb3I6ICM2OTcyN2Q7CiAgICBmb250LXNpemU6IDUwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLmVsZW1lbnRvci1pY29uOmhvdmVyIHsKICAgIGNvbG9yOiAjNjk3MjdkCn0KCi5lbGVtZW50b3ItaWNvbiBpLAouZWxlbWVudG9yLWljb24gc3ZnIHsKICAgIHdpZHRoOiAxZW07CiAgICBoZWlnaHQ6IDFlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5lbGVtZW50b3ItaWNvbiBpOmJlZm9yZSwKLmVsZW1lbnRvci1pY29uIHN2ZzpiZWZvcmUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpCn0KCi5lbGVtZW50b3ItaWNvbiBpLmZhZCB7CiAgICB3aWR0aDogYXV0bwp9CgouZWxlbWVudG9yLXNoYXBlLWNpcmNsZSAuZWxlbWVudG9yLWljb24gewogICAgYm9yZGVyLXJhZGl1czogNTAlCn0KCi5lLXRyYW5zZm9ybSAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSh2YXIoLS1lLXRyYW5zZm9ybS1wZXJzcGVjdGl2ZSwgMCkpIHJvdGF0ZSh2YXIoLS1lLXRyYW5zZm9ybS1yb3RhdGVaLCAwKSkgcm90YXRlWCh2YXIoLS1lLXRyYW5zZm9ybS1yb3RhdGVYLCAwKSkgcm90YXRlWSh2YXIoLS1lLXRyYW5zZm9ybS1yb3RhdGVZLCAwKSkgdHJhbnNsYXRlKHZhcigtLWUtdHJhbnNmb3JtLXRyYW5zbGF0ZSwgMCkpIHRyYW5zbGF0ZVgodmFyKC0tZS10cmFuc2Zvcm0tdHJhbnNsYXRlWCwgMCkpIHRyYW5zbGF0ZVkodmFyKC0tZS10cmFuc2Zvcm0tdHJhbnNsYXRlWSwgMCkpIHNjYWxlWChjYWxjKHZhcigtLWUtdHJhbnNmb3JtLWZsaXBYLCAxKSAqIHZhcigtLWUtdHJhbnNmb3JtLXNjYWxlWCwgdmFyKC0tZS10cmFuc2Zvcm0tc2NhbGUsIDEpKSkpIHNjYWxlWShjYWxjKHZhcigtLWUtdHJhbnNmb3JtLWZsaXBZLCAxKSAqIHZhcigtLWUtdHJhbnNmb3JtLXNjYWxlWSwgdmFyKC0tZS10cmFuc2Zvcm0tc2NhbGUsIDEpKSkpIHNrZXdYKHZhcigtLWUtdHJhbnNmb3JtLXNrZXdYLCAwKSkgc2tld1kodmFyKC0tZS10cmFuc2Zvcm0tc2tld1ksIDApKTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHZhcigtLWUtdHJhbnNmb3JtLW9yaWdpbi15KSB2YXIoLS1lLXRyYW5zZm9ybS1vcmlnaW4teCkKfQoKLmUtY29uLmUtdHJhbnNmb3JtIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUodmFyKC0tZS1jb24tdHJhbnNmb3JtLXBlcnNwZWN0aXZlLCAwKSkgcm90YXRlKHZhcigtLWUtY29uLXRyYW5zZm9ybS1yb3RhdGVaLCAwKSkgcm90YXRlWCh2YXIoLS1lLWNvbi10cmFuc2Zvcm0tcm90YXRlWCwgMCkpIHJvdGF0ZVkodmFyKC0tZS1jb24tdHJhbnNmb3JtLXJvdGF0ZVksIDApKSB0cmFuc2xhdGUodmFyKC0tZS1jb24tdHJhbnNmb3JtLXRyYW5zbGF0ZSwgMCkpIHRyYW5zbGF0ZVgodmFyKC0tZS1jb24tdHJhbnNmb3JtLXRyYW5zbGF0ZVgsIDApKSB0cmFuc2xhdGVZKHZhcigtLWUtY29uLXRyYW5zZm9ybS10cmFuc2xhdGVZLCAwKSkgc2NhbGVYKGNhbGModmFyKC0tZS1jb24tdHJhbnNmb3JtLWZsaXBYLCAxKSAqIHZhcigtLWUtY29uLXRyYW5zZm9ybS1zY2FsZVgsIHZhcigtLWUtY29uLXRyYW5zZm9ybS1zY2FsZSwgMSkpKSkgc2NhbGVZKGNhbGModmFyKC0tZS1jb24tdHJhbnNmb3JtLWZsaXBZLCAxKSAqIHZhcigtLWUtY29uLXRyYW5zZm9ybS1zY2FsZVksIHZhcigtLWUtY29uLXRyYW5zZm9ybS1zY2FsZSwgMSkpKSkgc2tld1godmFyKC0tZS1jb24tdHJhbnNmb3JtLXNrZXdYLCAwKSkgc2tld1kodmFyKC0tZS1jb24tdHJhbnNmb3JtLXNrZXdZLCAwKSk7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB2YXIoLS1lLWNvbi10cmFuc2Zvcm0tb3JpZ2luLXkpIHZhcigtLWUtY29uLXRyYW5zZm9ybS1vcmlnaW4teCkKfQoKLmVsZW1lbnRvci1lbGVtZW50LAouZWxlbWVudG9yLWxpZ2h0Ym94IHsKICAgIC0tc3dpcGVyLXRoZW1lLWNvbG9yOiAjMDAwOwogICAgLS1zd2lwZXItbmF2aWdhdGlvbi1zaXplOiA0NHB4OwogICAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtc2l6ZTogNnB4OwogICAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaG9yaXpvbnRhbC1nYXA6IDZweAp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1zbGlkZSBmaWd1cmUsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyIC5zd2lwZXItc2xpZGUgZmlndXJlLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIC5zd2lwZXItc2xpZGUgZmlndXJlLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLnN3aXBlci1zbGlkZSBmaWd1cmUgewogICAgbGluZS1oZWlnaHQ6IDAKfQoKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3ItbGlnaHRib3gtY29udGVudC1zb3VyY2UsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyIC5lbGVtZW50b3ItbGlnaHRib3gtY29udGVudC1zb3VyY2UsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXIgLmVsZW1lbnRvci1saWdodGJveC1jb250ZW50LXNvdXJjZSwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5lbGVtZW50b3ItbGlnaHRib3gtY29udGVudC1zb3VyY2UgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgei1pbmRleDogMTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtc2l6ZTogMjVweDsKICAgIGNvbG9yOiBoc2xhKDAsIDAlLCA5My4zJSwgLjkpOwogICAgdG9wOiA1MCU7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkKfQoKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiBzdmcsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24gc3ZnLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24gc3ZnLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24gc3ZnLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiBzdmcsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIHN2ZywKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiBzdmcsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24gc3ZnIHsKICAgIGZpbGw6IGhzbGEoMCwgMCUsIDkzLjMlLCAuOSk7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiAxZW0KfQoKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYgewogICAgbGVmdDogMTBweAp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCB7CiAgICByaWdodDogMTBweAp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLnN3aXBlci1idXR0b24tZGlzYWJsZWQsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24uc3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLnN3aXBlci1idXR0b24tZGlzYWJsZWQsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi5zd2lwZXItYnV0dG9uLWRpc2FibGVkLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi5zd2lwZXItYnV0dG9uLWRpc2FibGVkLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi5zd2lwZXItYnV0dG9uLWRpc2FibGVkLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLnN3aXBlci1idXR0b24tZGlzYWJsZWQsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24uc3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCB7CiAgICBvcGFjaXR5OiAuMwp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1pbWFnZS1zdHJldGNoIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZS1pbWFnZSwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXIgLnN3aXBlci1pbWFnZS1zdHJldGNoIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZS1pbWFnZSwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuc3dpcGVyLWltYWdlLXN0cmV0Y2ggLnN3aXBlci1zbGlkZSAuc3dpcGVyLXNsaWRlLWltYWdlLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLnN3aXBlci1pbWFnZS1zdHJldGNoIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZS1pbWFnZSB7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbCwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXItY29udGFpbmVyIC5zd2lwZXItcGFnaW5hdGlvbi1jdXN0b20sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLWNvbnRhaW5lciAuc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLWNvbnRhaW5lcn4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXJ+LnN3aXBlci1wYWdpbmF0aW9uLWN1c3RvbSwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXItY29udGFpbmVyfi5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbiwKLmVsZW1lbnRvci1lbGVtZW50IC5zd2lwZXIgLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlciAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlciAuc3dpcGVyLXBhZ2luYXRpb24tY3VzdG9tLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlciAuc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwsCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5zd2lwZXItcGFnaW5hdGlvbi1jdXN0b20sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyfi5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuc3dpcGVyLWhvcml6b250YWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMsCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbCwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuc3dpcGVyLXBhZ2luYXRpb24tY3VzdG9tLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIC5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lcn4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyfi5zd2lwZXItcGFnaW5hdGlvbi1jdXN0b20sCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXJ+LnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbCwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5zd2lwZXItcGFnaW5hdGlvbi1jdXN0b20sCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlciAuc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24sCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlcn4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXJ+LnN3aXBlci1wYWdpbmF0aW9uLWN1c3RvbSwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyfi5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbiB7CiAgICBib3R0b206IDVweAp9CgouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIuc3dpcGVyLWN1YmUgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci1jb250YWluZXIuc3dpcGVyLWN1YmV+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWVsZW1lbnQgLnN3aXBlci5zd2lwZXItY3ViZSAuZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItZWxlbWVudCAuc3dpcGVyLnN3aXBlci1jdWJlfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lci5zd2lwZXItY3ViZSAuZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXIuc3dpcGVyLWN1YmV+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIuc3dpcGVyLWN1YmUgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIuc3dpcGVyLWN1YmV+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTUwJSwgMXB4KQp9CgouZWxlbWVudG9yLWVsZW1lbnQgOndoZXJlKC5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWwpfi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLAouZWxlbWVudG9yLWxpZ2h0Ym94IDp3aGVyZSguc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsKX4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyB7CiAgICBib3R0b206IDVweDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLWVsZW1lbnQgOndoZXJlKC5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWwpfi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQsCi5lbGVtZW50b3ItbGlnaHRib3ggOndoZXJlKC5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWwpfi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgbWFyZ2luOiAwIHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1ob3Jpem9udGFsLWdhcCwgNHB4KQp9CgouZWxlbWVudG9yLWVsZW1lbnQgOndoZXJlKC5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWwpfi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciwKLmVsZW1lbnRvci1saWdodGJveCA6d2hlcmUoLnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbCl+LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiA0cHg7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwCn0KCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItcGFnaW5hdGlvbi1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXIsCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItcGFnaW5hdGlvbi1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXItY29udGFpbmVyLAouZWxlbWVudG9yLWxpZ2h0Ym94LmVsZW1lbnRvci1wYWdpbmF0aW9uLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlciwKLmVsZW1lbnRvci1saWdodGJveC5lbGVtZW50b3ItcGFnaW5hdGlvbi1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXItY29udGFpbmVyIHsKICAgIHBhZGRpbmctYm90dG9tOiAzMHB4Cn0KCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItcGFnaW5hdGlvbi1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiwKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1wYWdpbmF0aW9uLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLAouZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXBhZ2luYXRpb24tcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiwKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1wYWdpbmF0aW9uLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLXBhZ2luYXRpb24tcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLXBhZ2luYXRpb24tcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24sCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLXBhZ2luYXRpb24tcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiwKLmVsZW1lbnRvci1saWdodGJveC5lbGVtZW50b3ItcGFnaW5hdGlvbi1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uIHsKICAgIHRvcDogY2FsYyg1MCUgLSAzMHB4IC8gMikKfQoKLmVsZW1lbnRvci1lbGVtZW50IC5lbGVtZW50b3Itc3dpcGVyLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouZWxlbWVudG9yLWVsZW1lbnQgLmVsZW1lbnRvci1tYWluLXN3aXBlciwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLW1haW4tc3dpcGVyIHsKICAgIHBvc2l0aW9uOiBzdGF0aWMKfQoKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLAouZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXItY29udGFpbmVyLAouZWxlbWVudG9yLWxpZ2h0Ym94LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLAouZWxlbWVudG9yLWxpZ2h0Ym94LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lciB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNjBweCkKfQoKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYsCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXItY29udGFpbmVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2LAouZWxlbWVudG9yLWxpZ2h0Ym94LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlcn4uZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICBsZWZ0OiAwCn0KCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlci1jb250YWluZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyfi5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAouZWxlbWVudG9yLWxpZ2h0Ym94LmVsZW1lbnRvci1hcnJvd3MtcG9zaXRpb24tb3V0c2lkZSAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1saWdodGJveC5lbGVtZW50b3ItYXJyb3dzLXBvc2l0aW9uLW91dHNpZGUgLnN3aXBlci1jb250YWluZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXIgLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItbGlnaHRib3guZWxlbWVudG9yLWFycm93cy1wb3NpdGlvbi1vdXRzaWRlIC5zd2lwZXJ+LmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQgewogICAgcmlnaHQ6IDAKfQoKLmVsZW1lbnRvci1saWdodGJveCB7CiAgICAtLWxpZ2h0Ym94LXVpLWNvbG9yOiBoc2xhKDAsIDAlLCA5My4zJSwgMC45KTsKICAgIC0tbGlnaHRib3gtdWktY29sb3ItaG92ZXI6ICNmZmY7CiAgICAtLWxpZ2h0Ym94LXRleHQtY29sb3I6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yKTsKICAgIC0tbGlnaHRib3gtaGVhZGVyLWljb25zLXNpemU6IDIwcHg7CiAgICAtLWxpZ2h0Ym94LW5hdmlnYXRpb24taWNvbnMtc2l6ZTogMjVweAp9CgouZWxlbWVudG9yLWxpZ2h0Ym94Om5vdCguZWxlbWVudG9yLXBvcHVwLW1vZGFsKSAuZGlhbG9nLWhlYWRlciwKLmVsZW1lbnRvci1saWdodGJveDpub3QoLmVsZW1lbnRvci1wb3B1cC1tb2RhbCkgLmRpYWxvZy1tZXNzYWdlIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5kaWFsb2ctaGVhZGVyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLXdpZGdldC1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCUKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLW1lc3NhZ2UgewogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuM3M7CiAgICBoZWlnaHQ6IDEwMCUKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLW1lc3NhZ2UuZGlhbG9nLWxpZ2h0Ym94LW1lc3NhZ2UgewogICAgcGFkZGluZzogMAp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5kaWFsb2ctbGlnaHRib3gtY2xvc2UtYnV0dG9uIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbGlnaHRib3gtaGVhZGVyLWljb25zLXNpemUpOwogICAgcmlnaHQ6IC43NWVtOwogICAgbWFyZ2luLXRvcDogMTNweDsKICAgIHBhZGRpbmc6IC4yNWVtOwogICAgei1pbmRleDogMjsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5kaWFsb2ctbGlnaHRib3gtY2xvc2UtYnV0dG9uIHN2ZyB7CiAgICBoZWlnaHQ6IDFlbTsKICAgIHdpZHRoOiAxZW0KfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLWxpZ2h0Ym94LWNsb3NlLWJ1dHRvbiwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24gewogICAgY29sb3I6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yKTsKICAgIHRyYW5zaXRpb246IGFsbCAuM3M7CiAgICBvcGFjaXR5OiAxCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmRpYWxvZy1saWdodGJveC1jbG9zZS1idXR0b24gc3ZnLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbiBzdmcgewogICAgZmlsbDogdmFyKC0tbGlnaHRib3gtdWktY29sb3IpCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmRpYWxvZy1saWdodGJveC1jbG9zZS1idXR0b246aG92ZXIsCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1saWdodGJveC11aS1jb2xvci1ob3ZlcikKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZGlhbG9nLWxpZ2h0Ym94LWNsb3NlLWJ1dHRvbjpob3ZlciBzdmcsCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uOmhvdmVyIHN2ZyB7CiAgICBmaWxsOiB2YXIoLS1saWdodGJveC11aS1jb2xvci1ob3ZlcikKfQoKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXItY29udGFpbmVyIHsKICAgIGhlaWdodDogMTAwJQp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItbGlnaHRib3gtaXRlbSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZzogNzBweDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBtYXJnaW46IGF1dG8KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1saWdodGJveC1pdGVtIHsKICAgICAgICBwYWRkaW5nOiA3MHB4IDAKICAgIH0KfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLWxpZ2h0Ym94LWltYWdlIHsKICAgIG1heC1oZWlnaHQ6IDEwMCU7CiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgIHVzZXItc2VsZWN0OiBub25lCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1saWdodGJveC1pbWFnZSwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLWxpZ2h0Ym94LWltYWdlOmhvdmVyIHsKICAgIG9wYWNpdHk6IDE7CiAgICBmaWx0ZXI6IG5vbmU7CiAgICBib3JkZXI6IG5vbmUKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLWxpZ2h0Ym94LWltYWdlIHsKICAgIGJveC1zaGFkb3c6IDAgMCAzMHB4IHJnYmEoMCwgMCwgMCwgLjMpLCAwIDAgOHB4IC01cHggcmdiYSgwLCAwLCAwLCAuMyk7CiAgICBib3JkZXItcmFkaXVzOiAycHgKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciB7CiAgICB3aWR0aDogMTAwJTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLWxhbmRzY2FwZSwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXBvcnRyYWl0LAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tc3F1YXJlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgbWFyZ2luOiBhdXRvCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1sYW5kc2NhcGUgaWZyYW1lLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tcG9ydHJhaXQgaWZyYW1lLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tc3F1YXJlIGlmcmFtZSB7CiAgICBib3JkZXI6IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1sYW5kc2NhcGUgaWZyYW1lLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tbGFuZHNjYXBlIHZpZGVvLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tcG9ydHJhaXQgaWZyYW1lLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tcG9ydHJhaXQgdmlkZW8sCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1zcXVhcmUgaWZyYW1lLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tc3F1YXJlIHZpZGVvIHsKICAgIGFzcGVjdC1yYXRpbzogdmFyKC0tdmlkZW8tYXNwZWN0LXJhdGlvLCAxLjc3Nzc3KQp9CgpAc3VwcG9ydHMgbm90IChhc3BlY3QtcmF0aW86MS8xKSB7CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tbGFuZHNjYXBlLAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXBvcnRyYWl0LAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXNxdWFyZSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgaGVpZ2h0OiAwOwogICAgICAgIHBhZGRpbmctYm90dG9tOiBjYWxjKDEwMCUgLyB2YXIoLS12aWRlby1hc3BlY3QtcmF0aW8sIDEuNzc3NzcpKQogICAgfQogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLWxhbmRzY2FwZSBpZnJhbWUsCiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tbGFuZHNjYXBlIHZpZGVvLAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXBvcnRyYWl0IGlmcmFtZSwKICAgIC5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1wb3J0cmFpdCB2aWRlbywKICAgIC5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1zcXVhcmUgaWZyYW1lLAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXNxdWFyZSB2aWRlbyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMAogICAgfQp9CgouZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tc3F1YXJlIGlmcmFtZSwKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLXNxdWFyZSB2aWRlbyB7CiAgICB3aWR0aDogbWluKDkwdmgsIDkwdncpOwogICAgaGVpZ2h0OiBtaW4oOTB2aCwgOTB2dykKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXZpZGVvLWNvbnRhaW5lciAuZWxlbWVudG9yLXZpZGVvLWxhbmRzY2FwZSBpZnJhbWUsCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1sYW5kc2NhcGUgdmlkZW8gewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtaGVpZ2h0OiA5MHZoCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1wb3J0cmFpdCBpZnJhbWUsCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgLmVsZW1lbnRvci12aWRlby1wb3J0cmFpdCB2aWRlbyB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBtYXgtd2lkdGg6IDkwdncKfQoKQG1lZGlhIChtaW4td2lkdGg6MTAyNXB4KSB7CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tbGFuZHNjYXBlIHsKICAgICAgICB3aWR0aDogODV2dzsKICAgICAgICBtYXgtaGVpZ2h0OiA4NXZoCiAgICB9CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tcG9ydHJhaXQgewogICAgICAgIGhlaWdodDogODV2aDsKICAgICAgICBtYXgtd2lkdGg6IDg1dncKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tbGFuZHNjYXBlIHsKICAgICAgICB3aWR0aDogOTV2dzsKICAgICAgICBtYXgtaGVpZ2h0OiA5NXZoCiAgICB9CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3ItdmlkZW8tY29udGFpbmVyIC5lbGVtZW50b3ItdmlkZW8tcG9ydHJhaXQgewogICAgICAgIGhlaWdodDogOTV2aDsKICAgICAgICBtYXgtd2lkdGg6IDk1dncKICAgIH0KfQoKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IHsKICAgIGxlZnQ6IDAKfQoKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyLWNvbnRhaW5lciAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1saWdodGJveCAuc3dpcGVyIC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0IHsKICAgIHJpZ2h0OiAwCn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLnN3aXBlci1jb250YWluZXIgLnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uLAouZWxlbWVudG9yLWxpZ2h0Ym94IC5zd2lwZXIgLnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uIHsKICAgIHdpZHRoOiAtbW96LW1heC1jb250ZW50OwogICAgd2lkdGg6IG1heC1jb250ZW50OwogICAgY29sb3I6ICNmZmYKfQoKLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b246Zm9jdXMgewogICAgb3V0bGluZS13aWR0aDogMXB4Cn0KCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLW5leHQsCi5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uLXByZXYgewogICAgaGVpZ2h0OiAxMDAlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB3aWR0aDogMTUlOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBmb250LXNpemU6IHZhcigtLWxpZ2h0Ym94LW5hdmlnYXRpb24taWNvbnMtc2l6ZSkKfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItbGlnaHRib3ggLmVsZW1lbnRvci1zd2lwZXItYnV0dG9uOmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lCiAgICB9CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1uZXh0LAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICAgICAgd2lkdGg6IDIwJQogICAgfQogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCBpLAogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiBpIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpCiAgICB9CiAgICAuZWxlbWVudG9yLWxpZ2h0Ym94IC5lbGVtZW50b3Itc3dpcGVyLWJ1dHRvbi1wcmV2IHsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydAogICAgfQogICAgLmVsZW1lbnRvci1saWdodGJveCAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAogICAgfQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fY291bnRlciB7CiAgICBjb2xvcjogY3VycmVudENvbG9yOwogICAgZm9udC1zaXplOiAuNzVlbTsKICAgIHdpZHRoOiAtbW96LW1heC1jb250ZW50OwogICAgd2lkdGg6IG1heC1jb250ZW50Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19mb290ZXIsCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMTVweCAyMHB4OwogICAgdHJhbnNpdGlvbjogLjNzCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19mb290ZXIgewogICAgY29sb3I6IHZhcigtLWxpZ2h0Ym94LXRleHQtY29sb3IpCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXIgewogICAgY29sb3I6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yKTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICBmb250LXNpemU6IHZhcigtLWxpZ2h0Ym94LWhlYWRlci1pY29ucy1zaXplKTsKICAgIHBhZGRpbmctbGVmdDogMWVtOwogICAgcGFkZGluZy1yaWdodDogMi42ZW07CiAgICB0b3A6IDA7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgei1pbmRleDogMTAKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX2hlYWRlcj5pLAouZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyPnN2ZyB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBwYWRkaW5nOiAuMjVlbTsKICAgIG1hcmdpbjogMCAuMzVlbQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyPmkgewogICAgZm9udC1zaXplOiBpbmhlcml0Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXI+aTpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tbGlnaHRib3gtdWktY29sb3ItaG92ZXIpCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXI+c3ZnIHsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgZmlsbDogdmFyKC0tbGlnaHRib3gtdWktY29sb3IpOwogICAgaGVpZ2h0OiAxZW07CiAgICB3aWR0aDogMWVtCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXI+c3ZnOmhvdmVyIHsKICAgIGZpbGw6IHZhcigtLWxpZ2h0Ym94LXVpLWNvbG9yLWhvdmVyKQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyIC5lbGVtZW50b3Itc2xpZGVzaG93X19jb3VudGVyIHsKICAgIG1hcmdpbi1yaWdodDogYXV0bwp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19faGVhZGVyIC5lbGVtZW50b3ItaWNvbi1zaGFyZSB7CiAgICB6LWluZGV4OiA1Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1tZW51IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgd2lkdGg6IDA7CiAgICBoZWlnaHQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLW1lbnUgLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIGEgewogICAgY29sb3I6ICMwYzBkMGUKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbWluLXdpZHRoOiAyMDBweDsKICAgIHJpZ2h0OiAyLjhlbTsKICAgIHRvcDogM2VtOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIHBhZGRpbmc6IDE0cHggMjBweDsKICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtLW9yaWdpbjogOTAlIDEwJTsKICAgIHRyYW5zaXRpb246IGFsbCAuMjVzIC4xczsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLCAwLCAwLCAuMykKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIGEgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGNvbG9yOiAjM2Y0NDRiOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDIuNTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjVzIC4xcwp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYTpob3ZlciB7CiAgICBjb2xvcjogIzAwMAp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSBpLAouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSBzdmcgewogICAgbWFyZ2luLXJpZ2h0OiAuNzVlbQp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSBpIHsKICAgIGZvbnQtc2l6ZTogMS4yNWVtCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyBhIHN2ZyB7CiAgICBoZWlnaHQ6IDEuMjVlbTsKICAgIHdpZHRoOiAxLjI1ZW0KfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiIjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxcHg7CiAgICByaWdodDogLjVlbTsKICAgIGJvcmRlcjogLjQ1ZW0gc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKSBzY2FsZVgoLjcpCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93X19mb290ZXIgewogICAgYm90dG9tOiAwOwogICAgei1pbmRleDogNTsKICAgIHBvc2l0aW9uOiBmaXhlZAp9CgouZWxlbWVudG9yLXNsaWRlc2hvd19fZGVzY3JpcHRpb24sCi5lbGVtZW50b3Itc2xpZGVzaG93X190aXRsZSB7CiAgICBtYXJnaW46IDAKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX3RpdGxlIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDAKfQoKLmVsZW1lbnRvci1zbGlkZXNob3dfX2Rlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTRweAp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tdWktaGlkZGVuIC5lbGVtZW50b3Itc2xpZGVzaG93X19mb290ZXIsCi5lbGVtZW50b3Itc2xpZGVzaG93LS11aS1oaWRkZW4gLmVsZW1lbnRvci1zbGlkZXNob3dfX2hlYWRlciB7CiAgICBvcGFjaXR5OiAwOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXVpLWhpZGRlbiAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1zbGlkZXNob3ctLXVpLWhpZGRlbiAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICBvcGFjaXR5OiAwCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1mdWxsc2NyZWVuLW1vZGUgLmVsZW1lbnRvci12aWRlby1jb250YWluZXIgewogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXpvb20tbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fZm9vdGVyLAouZWxlbWVudG9yLXNsaWRlc2hvdy0tem9vbS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19oZWFkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuNSkKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXpvb20tbW9kZSAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tbmV4dCwKLmVsZW1lbnRvci1zbGlkZXNob3ctLXpvb20tbW9kZSAuZWxlbWVudG9yLXN3aXBlci1idXR0b24tcHJldiB7CiAgICBvcGFjaXR5OiAwOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXNoYXJlLW1vZGUgLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLW1lbnUgewogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDB2dzsKICAgIGhlaWdodDogMTAwdmg7CiAgICBvcGFjaXR5OiAxOwogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuNSkKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXNoYXJlLW1vZGUgLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKfQoKLmVsZW1lbnRvci1zbGlkZXNob3ctLXNoYXJlLW1vZGUgLmVsZW1lbnRvci1zbGlkZXNob3dfX3NoYXJlLWxpbmtzLAouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgYSB7CiAgICBvcGFjaXR5OiAxCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZWljb24tdHdpdHRlciB7CiAgICBjb2xvcjogIzFkYTFmMgp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgLmVpY29uLWZhY2Vib29rIHsKICAgIGNvbG9yOiAjM2I1OTk4Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZWljb24tcGludGVyZXN0IHsKICAgIGNvbG9yOiAjYmQwODFjCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZWljb24tZG93bmxvYWQtYm9sZCB7CiAgICBjb2xvcjogIzlkYTVhZQp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgLmUtZWljb24tdHdpdHRlciB7CiAgICBmaWxsOiAjMWRhMWYyCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZS1laWNvbi1mYWNlYm9vayB7CiAgICBmaWxsOiAjM2I1OTk4Cn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5lbGVtZW50b3Itc2xpZGVzaG93X19zaGFyZS1saW5rcyAuZS1laWNvbi1waW50ZXJlc3QgewogICAgZmlsbDogI2JkMDgxYwp9CgouZWxlbWVudG9yLXNsaWRlc2hvdy0tc2hhcmUtbW9kZSAuZWxlbWVudG9yLXNsaWRlc2hvd19fc2hhcmUtbGlua3MgLmUtZWljb24tZG93bmxvYWQtYm9sZCB7CiAgICBmaWxsOiAjOWRhNWFlCn0KCi5lbGVtZW50b3Itc2xpZGVzaG93LS1zaGFyZS1tb2RlIC5laWNvbi1zaGFyZS1hcnJvdyB7CiAgICB6LWluZGV4OiAyCn0KCi5hbmltYXRlZCB7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDEuMjVzCn0KCi5hbmltYXRlZC5hbmltYXRlZC1zbG93IHsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMnMKfQoKLmFuaW1hdGVkLmFuaW1hdGVkLWZhc3QgewogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuNzVzCn0KCi5hbmltYXRlZC5pbmZpbml0ZSB7CiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZQp9CgouYW5pbWF0ZWQucmV2ZXJzZSB7CiAgICBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlOwogICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHMKfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSkgewogICAgLmFuaW1hdGVkIHsKICAgICAgICBhbmltYXRpb246IG5vbmUKICAgIH0KfQoKLmVsZW1lbnRvci1zaGFwZSB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgbGluZS1oZWlnaHQ6IDA7CiAgICBkaXJlY3Rpb246IGx0cgp9CgouZWxlbWVudG9yLXNoYXBlLXRvcCB7CiAgICB0b3A6IC0xcHgKfQoKLmVsZW1lbnRvci1zaGFwZS10b3A6bm90KFtkYXRhLW5lZ2F0aXZlPWZhbHNlXSkgc3ZnIHsKICAgIHotaW5kZXg6IC0xCn0KCi5lbGVtZW50b3Itc2hhcGUtYm90dG9tIHsKICAgIGJvdHRvbTogLTFweAp9CgouZWxlbWVudG9yLXNoYXBlLWJvdHRvbTpub3QoW2RhdGEtbmVnYXRpdmU9dHJ1ZV0pIHN2ZyB7CiAgICB6LWluZGV4OiAtMQp9CgouZWxlbWVudG9yLXNoYXBlW2RhdGEtbmVnYXRpdmU9ZmFsc2VdLmVsZW1lbnRvci1zaGFwZS1ib3R0b20sCi5lbGVtZW50b3Itc2hhcGVbZGF0YS1uZWdhdGl2ZT10cnVlXS5lbGVtZW50b3Itc2hhcGUtdG9wIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykKfQoKLmVsZW1lbnRvci1zaGFwZSBzdmcgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogY2FsYygxMDAlICsgMS4zcHgpOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpCn0KCi5lbGVtZW50b3Itc2hhcGUgLmVsZW1lbnRvci1zaGFwZS1maWxsIHsKICAgIGZpbGw6ICNmZmY7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMGRlZykKfQoKI3dwLWFkbWluLWJhci1lbGVtZW50b3JfZWRpdF9wYWdlPi5hYi1pdGVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU4MTMiOwogICAgZm9udC1mYW1pbHk6IGVpY29uczsKICAgIHRvcDogM3B4OwogICAgZm9udC1zaXplOiAxOHB4Cn0KCiN3cC1hZG1pbi1iYXItZWxlbWVudG9yX2VkaXRfcGFnZSAuYWItc3VibWVudSAuYWItaXRlbSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgd2lkdGg6IDIwMHB4Cn0KCiN3cC1hZG1pbi1iYXItZWxlbWVudG9yX2VkaXRfcGFnZSAuZWxlbWVudG9yLWVkaXQtbGluay10aXRsZSB7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgd2lkdGg6IDEwMCUKfQoKI3dwLWFkbWluLWJhci1lbGVtZW50b3JfZWRpdF9wYWdlIC5lbGVtZW50b3ItZWRpdC1saW5rLXR5cGUgewogICAgYmFja2dyb3VuZDogIzNmNDQ0YjsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGxpbmUtaGVpZ2h0OiA5cHg7CiAgICBtYXJnaW4tdG9wOiA2cHg7CiAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogM3B4Cn0KCiN3cC1hZG1pbi1iYXItZWxlbWVudG9yX2luc3BlY3Rvcj4uYWItaXRlbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzQ4IjsKICAgIHRvcDogMnB4Cn0KCiN3cGFkbWluYmFyICogewogICAgZm9udC1zdHlsZTogbm9ybWFsCn0KCi5wYWdlLXRlbXBsYXRlLWVsZW1lbnRvcl9jYW52YXMuZWxlbWVudG9yLXBhZ2U6YmVmb3JlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci1wb3N0X190aHVtYm5haWxfX2xpbmsgewogICAgdHJhbnNpdGlvbjogbm9uZQp9CgojbGVmdC1hcmVhIHVsLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMsCi5lbGVtZW50b3ItZWRpdC1hcmVhIC5lbGVtZW50b3ItZWxlbWVudCB1bC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zLAouZWxlbWVudG9yIC5lbGVtZW50b3ItZWxlbWVudCB1bC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW1zIHsKICAgIHBhZGRpbmc6IDAKfQoKLmUtLXVhLWFwcGxlV2Via2l0LnJ0bCB7CiAgICAtLWZsZXgtcmlnaHQ6IGZsZXgtc3RhcnQKfQoKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tcmlnaHQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXJpZ2h0IHsKICAgIC0tanVzdGlmeS1jb250ZW50OiB2YXIoLS1mbGV4LXJpZ2h0LCBmbGV4LWVuZCkKfQoKLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tY2VudGVyLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1jZW50ZXIgewogICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgp9CgouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWdyaWQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tanVzdGlmeSAuZWxlbWVudG9yLWdyaWQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1ncmlkLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLWNlbnRlciAuZWxlbWVudG9yLWdyaWQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1ncmlkIHsKICAgIHdpZHRoOiBhdXRvOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tanVzdGlmeS1jb250ZW50LCBzcGFjZS1iZXR3ZWVuKTsKICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC0uNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpOwogICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0uNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpCn0KCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItZ3JpZC1pdGVtLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWp1c3RpZnkgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tcmlnaHQgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tY2VudGVyIC5lbGVtZW50b3ItZ3JpZC1pdGVtLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXJpZ2h0IC5lbGVtZW50b3ItZ3JpZC1pdGVtIHsKICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC41ICogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKSk7CiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKQp9CgouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLAouZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWdyaWQsCi5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tbGVmdCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMAp9CgpAbWVkaWEgKG1heC13aWR0aDoxMDI0cHgpIHsKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtdGFibGV0LS1hbGlnbi1yaWdodCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXRhYmxldC1yaWdodCB7CiAgICAgICAgLS1qdXN0aWZ5LWNvbnRlbnQ6IHZhcigtLWZsZXgtcmlnaHQsIGZsZXgtZW5kKQogICAgfQogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy10YWJsZXQtLWFsaWduLWNlbnRlciwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXRhYmxldC1jZW50ZXIgewogICAgICAgIC0tanVzdGlmeS1jb250ZW50OiBjZW50ZXIKICAgIH0KICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tdGFibGV0LWNlbnRlciAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLXRhYmxldC1qdXN0aWZ5IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tdGFibGV0LXJpZ2h0IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tdGFibGV0LWNlbnRlciAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLXRhYmxldC1yaWdodCAuZWxlbWVudG9yLWdyaWQgewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tanVzdGlmeS1jb250ZW50LCBzcGFjZS1iZXR3ZWVuKTsKICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLS41ICogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKSkKICAgIH0KICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tdGFibGV0LWNlbnRlciAuZWxlbWVudG9yLWdyaWQtaXRlbSwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy0tYWxpZ24tdGFibGV0LWp1c3RpZnkgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLXRhYmxldC1yaWdodCAuZWxlbWVudG9yLWdyaWQtaXRlbSwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tdGFibGV0LWNlbnRlciAuZWxlbWVudG9yLWdyaWQtaXRlbSwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tdGFibGV0LXJpZ2h0IC5lbGVtZW50b3ItZ3JpZC1pdGVtIHsKICAgICAgICBtYXJnaW4tbGVmdDogY2FsYyguNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpOwogICAgICAgIG1hcmdpbi1yaWdodDogY2FsYyguNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtdGFibGV0LS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tdGFibGV0LWxlZnQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKICAgIH0KICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy10YWJsZXQtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLXRhYmxldC0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLWdyaWQtaXRlbSwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tdGFibGV0LWxlZnQgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi10YWJsZXQtbGVmdCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLW1vYmlsZS0tYWxpZ24tcmlnaHQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1tb2JpbGUtcmlnaHQgewogICAgICAgIC0tanVzdGlmeS1jb250ZW50OiB2YXIoLS1mbGV4LXJpZ2h0LCBmbGV4LWVuZCkKICAgIH0KICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtbW9iaWxlLS1hbGlnbi1jZW50ZXIsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1tb2JpbGUtY2VudGVyIHsKICAgICAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLW1vYmlsZS1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1tb2JpbGUtanVzdGlmeSAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLW1vYmlsZS1yaWdodCAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLW1vYmlsZS1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci13aWRnZXQtc29jaWFsLWljb25zLmUtZ3JpZC1hbGlnbi1tb2JpbGUtcmlnaHQgLmVsZW1lbnRvci1ncmlkIHsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHZhcigtLWp1c3RpZnktY29udGVudCwgc3BhY2UtYmV0d2Vlbik7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLS41ICogdmFyKC0tZ3JpZC1jb2x1bW4tZ2FwKSk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0uNSAqIHZhcigtLWdyaWQtY29sdW1uLWdhcCkpCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLW1vYmlsZS1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtLWFsaWduLW1vYmlsZS1qdXN0aWZ5IC5lbGVtZW50b3ItZ3JpZC1pdGVtLAogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLS1hbGlnbi1tb2JpbGUtcmlnaHQgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLW1vYmlsZS1jZW50ZXIgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLW1vYmlsZS1yaWdodCAuZWxlbWVudG9yLWdyaWQtaXRlbSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLjUgKiB2YXIoLS1ncmlkLWNvbHVtbi1nYXApKQogICAgfQogICAgLmUtLXVhLWFwcGxlV2Via2l0IC5lbGVtZW50b3ItZ3JpZC0wLmVsZW1lbnRvci1zaGFyZS1idXR0b25zLW1vYmlsZS0tYWxpZ24tbGVmdCAuZWxlbWVudG9yLWdyaWQsCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLW1vYmlsZS1sZWZ0IC5lbGVtZW50b3ItZ3JpZCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrCiAgICB9CiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXNoYXJlLWJ1dHRvbnMtbW9iaWxlLS1hbGlnbi1sZWZ0IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itc2hhcmUtYnV0dG9ucy1tb2JpbGUtLWFsaWduLWxlZnQgLmVsZW1lbnRvci1ncmlkLWl0ZW0sCiAgICAuZS0tdWEtYXBwbGVXZWJraXQgLmVsZW1lbnRvci1ncmlkLTAuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZS1ncmlkLWFsaWduLW1vYmlsZS1sZWZ0IC5lbGVtZW50b3ItZ3JpZCwKICAgIC5lLS11YS1hcHBsZVdlYmtpdCAuZWxlbWVudG9yLWdyaWQtMC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lLWdyaWQtYWxpZ24tbW9iaWxlLWxlZnQgLmVsZW1lbnRvci1ncmlkLWl0ZW0gewogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgICAgIG1hcmdpbi1yaWdodDogMAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmVsZW1lbnRvciAuZWxlbWVudG9yLWhpZGRlbi1tb2JpbGUsCiAgICAuZWxlbWVudG9yIC5lbGVtZW50b3ItaGlkZGVuLXBob25lIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOi0xKSBhbmQgKG1heC13aWR0aDotMSkgewogICAgLmVsZW1lbnRvciAuZWxlbWVudG9yLWhpZGRlbi1tb2JpbGVfZXh0cmEgewogICAgICAgIGRpc3BsYXk6IG5vbmUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvciAuZWxlbWVudG9yLWhpZGRlbi10YWJsZXQgewogICAgICAgIGRpc3BsYXk6IG5vbmUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6LTEpIGFuZCAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yIC5lbGVtZW50b3ItaGlkZGVuLWxhcHRvcCwKICAgIC5lbGVtZW50b3IgLmVsZW1lbnRvci1oaWRkZW4tdGFibGV0X2V4dHJhIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEwMjVweCkgYW5kIChtYXgtd2lkdGg6OTk5OTlweCkgewogICAgLmVsZW1lbnRvciAuZWxlbWVudG9yLWhpZGRlbi1kZXNrdG9wIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yIC5lbGVtZW50b3ItaGlkZGVuLXdpZGVzY3JlZW4gewogICAgICAgIGRpc3BsYXk6IG5vbmUKICAgIH0KfQoKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1wYXRoIHsKICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIHRleHQtYWxpZ246IHZhcigtLWFsaWdubWVudCwgbGVmdCkKfQoKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1wYXRoIHN2ZyB7CiAgICB3aWR0aDogdmFyKC0td2lkdGgpOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICB3b3JkLXNwYWNpbmc6IHZhcigtLXdvcmQtc3BhY2luZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1yb3RhdGUsIDApKSBzY2FsZVgodmFyKC0tc2NhbGUteCwgMSkpIHNjYWxlWSh2YXIoLS1zY2FsZS15LCAxKSkKfQoKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1wYXRoIHN2ZyBwYXRoIHsKICAgIHZlY3Rvci1lZmZlY3Q6IG5vbi1zY2FsaW5nLXN0cm9rZTsKICAgIGZpbGw6IHZhcigtLXBhdGgtZmlsbCwgdHJhbnNwYXJlbnQpOwogICAgc3Ryb2tlOiB2YXIoLS1zdHJva2UtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgIHN0cm9rZS13aWR0aDogdmFyKC0tc3Ryb2tlLXdpZHRoLCAxcHgpOwogICAgdHJhbnNpdGlvbjogdmFyKC0tc3Ryb2tlLXRyYW5zaXRpb24pIHN0cm9rZSwgdmFyKC0tc3Ryb2tlLXRyYW5zaXRpb24pIGZpbGwKfQoKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1wYXRoIHN2Zzpob3ZlciBwYXRoIHsKICAgIC0tcGF0aC1maWxsOiB2YXIoLS1wYXRoLWZpbGwtaG92ZXIpOwogICAgLS1zdHJva2UtY29sb3I6IHZhcigtLXN0cm9rZS1jb2xvci1ob3Zlcik7CiAgICAtLXN0cm9rZS13aWR0aDogdmFyKC0tc3Ryb2tlLXdpZHRoLWhvdmVyKQp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggc3ZnIHRleHQgewogICAgLS1maWxsOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIGZpbGw6IHZhcigtLWZpbGwpOwogICAgZGlyZWN0aW9uOiB2YXIoLS1kaXJlY3Rpb24sIGx0cik7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uKSBzdHJva2UsIHZhcigtLXRyYW5zaXRpb24pIHN0cm9rZS13aWR0aCwgdmFyKC0tdHJhbnNpdGlvbikgZmlsbAp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggc3ZnIHRleHQ6aG92ZXIgewogICAgLS1jb2xvcjogdmFyKC0tdGV4dC1jb2xvci1ob3ZlciwgdmFyKC0tdGV4dC1jb2xvcikpOwogICAgLS1maWxsOiB2YXIoLS1jb2xvcik7CiAgICBjb2xvcjogdmFyKC0tY29sb3IpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyB7CiAgICAtLW4tdGFicy1jb2xvci1hY2NlbnQtZmFsbGJhY2s6ICM2MWNlNzA7CiAgICAtLW4tdGFicy1jb2xvci1zZWNvbmRhcnktZmFsbGJhY2s6ICM1NDU5NWY7CiAgICAtLW4tdGFicy1kZWZhdWx0LXBhZGRpbmctYmxvY2s6IDE1cHg7CiAgICAtLW4tdGFicy1kZWZhdWx0LXBhZGRpbmctaW5saW5lOiAzNXB4OwogICAgLS1uLXRhYnMtYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAtLW4tdGFicy1kaXNwbGF5OiBmbGV4OwogICAgLS1uLXRhYnMtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAtLW4tdGFicy1nYXA6IDEwcHg7CiAgICAtLW4tdGFicy1oZWFkaW5nLWRpc3BsYXk6IGZsZXg7CiAgICAtLW4tdGFicy1oZWFkaW5nLWRpcmVjdGlvbjogcm93OwogICAgLS1uLXRhYnMtaGVhZGluZy1ncm93OiBpbml0aWFsOwogICAgLS1uLXRhYnMtaGVhZGluZy1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIC0tbi10YWJzLWhlYWRpbmctd2lkdGg6IGluaXRpYWw7CiAgICAtLW4tdGFicy1oZWFkaW5nLW92ZXJmbG93LXg6IGluaXRpYWw7CiAgICAtLW4tdGFicy1oZWFkaW5nLXdyYXA6IG5vd3JhcDsKICAgIC0tbi10YWJzLWJvcmRlci13aWR0aDogMXB4OwogICAgLS1uLXRhYnMtYm9yZGVyLWNvbG9yOiAjZDVkOGRjOwogICAgLS1uLXRhYnMtY29udGVudC1kaXNwbGF5OiBmbGV4OwogICAgLS1uLXRhYnMtdGl0bGUtY29sb3I6IHZhcigtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSwgdmFyKC0tbi10YWJzLWNvbG9yLXNlY29uZGFyeS1mYWxsYmFjaykpOwogICAgLS1uLXRhYnMtdGl0bGUtY29sb3ItaG92ZXI6ICNmZmY7CiAgICAtLW4tdGFicy10aXRsZS1jb2xvci1hY3RpdmU6ICNmZmY7CiAgICAtLW4tdGFicy10aXRsZS1iYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMmYzOwogICAgLS1uLXRhYnMtdGl0bGUtYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0tZS1nbG9iYWwtY29sb3ItYWNjZW50LCB2YXIoLS1uLXRhYnMtY29sb3ItYWNjZW50LWZhbGxiYWNrKSk7CiAgICAtLW4tdGFicy10aXRsZS1iYWNrZ3JvdW5kLWNvbG9yLWFjdGl2ZTogdmFyKC0tZS1nbG9iYWwtY29sb3ItYWNjZW50LCB2YXIoLS1uLXRhYnMtY29sb3ItYWNjZW50LWZhbGxiYWNrKSk7CiAgICAtLW4tdGFicy10aXRsZS13aWR0aDogaW5pdGlhbDsKICAgIC0tbi10YWJzLXRpdGxlLWhlaWdodDogaW5pdGlhbDsKICAgIC0tbi10YWJzLXRpdGxlLWZvbnQtc2l6ZTogMXJlbTsKICAgIC0tbi10YWJzLXRpdGxlLXdoaXRlLXNwYWNlOiBpbml0aWFsOwogICAgLS1uLXRhYnMtdGl0bGUtanVzdGlmeS1jb250ZW50LXRvZ2dsZTogaW5pdGlhbDsKICAgIC0tbi10YWJzLXRpdGxlLWFsaWduLWl0ZW1zLXRvZ2dsZTogY2VudGVyOwogICAgLS1uLXRhYnMtdGl0bGUtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAtLW4tdGFicy10aXRsZS1hbGlnbi1pdGVtczogY2VudGVyOwogICAgLS1uLXRhYnMtdGl0bGUtdGV4dC1hbGlnbjogY2VudGVyOwogICAgLS1uLXRhYnMtdGl0bGUtZGlyZWN0aW9uOiByb3c7CiAgICAtLW4tdGFicy10aXRsZS1nYXA6IDEwcHg7CiAgICAtLW4tdGFicy10aXRsZS1mbGV4LWdyb3c6IDA7CiAgICAtLW4tdGFicy10aXRsZS1mbGV4LWJhc2lzOiBjb250ZW50OwogICAgLS1uLXRhYnMtdGl0bGUtZmxleC1zaHJpbms6IGluaXRpYWw7CiAgICAtLW4tdGFicy10aXRsZS1vcmRlcjogaW5pdGlhbDsKICAgIC0tbi10YWJzLXRpdGxlLXBhZGRpbmctYmxvY2stc3RhcnQ6IHZhcigtLW4tdGFicy1kZWZhdWx0LXBhZGRpbmctYmxvY2spOwogICAgLS1uLXRhYnMtdGl0bGUtcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1uLXRhYnMtZGVmYXVsdC1wYWRkaW5nLWlubGluZSk7CiAgICAtLW4tdGFicy10aXRsZS1wYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0tbi10YWJzLWRlZmF1bHQtcGFkZGluZy1ibG9jayk7CiAgICAtLW4tdGFicy10aXRsZS1wYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0tbi10YWJzLWRlZmF1bHQtcGFkZGluZy1pbmxpbmUpOwogICAgLS1uLXRhYnMtdGl0bGUtYm9yZGVyLXJhZGl1czogaW5pdGlhbDsKICAgIC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLW4tdGFicy1pY29uLWNvbG9yOiB2YXIoLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnksIHZhcigtLW4tdGFicy1jb2xvci1zZWNvbmRhcnktZmFsbGJhY2spKTsKICAgIC0tbi10YWJzLWljb24tY29sb3ItaG92ZXI6IHZhcigtLW4tdGFicy10aXRsZS1jb2xvci1ob3Zlcik7CiAgICAtLW4tdGFicy1pY29uLWNvbG9yLWFjdGl2ZTogI2ZmZjsKICAgIC0tbi10YWJzLWljb24tZ2FwOiA1cHg7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWJzIHsKICAgIGRpc3BsYXk6IHZhcigtLW4tdGFicy1kaXNwbGF5KTsKICAgIGZsZXgtZGlyZWN0aW9uOiB2YXIoLS1uLXRhYnMtZGlyZWN0aW9uKTsKICAgIGdhcDogdmFyKC0tbi10YWJzLWdhcCk7CiAgICB0ZXh0LWFsaWduOiBzdGFydDsKICAgIG1pbi13aWR0aDogMAp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWJzLWhlYWRpbmcgewogICAgZGlzcGxheTogdmFyKC0tbi10YWJzLWhlYWRpbmctZGlzcGxheSk7CiAgICBmbGV4LWJhc2lzOiB2YXIoLS1uLXRhYnMtaGVhZGluZy13aWR0aCk7CiAgICBmbGV4LWRpcmVjdGlvbjogdmFyKC0tbi10YWJzLWhlYWRpbmctZGlyZWN0aW9uKTsKICAgIGZsZXgtc2hyaW5rOiAwOwogICAganVzdGlmeS1jb250ZW50OiB2YXIoLS1uLXRhYnMtaGVhZGluZy1qdXN0aWZ5LWNvbnRlbnQpOwogICAgZ2FwOiB2YXIoLS1uLXRhYnMtdGl0bGUtZ2FwKTsKICAgIG92ZXJmbG93LXg6IHZhcigtLW4tdGFicy1oZWFkaW5nLW92ZXJmbG93LXgpOwogICAgZmxleC13cmFwOiB2YXIoLS1uLXRhYnMtaGVhZGluZy13cmFwKTsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsKICAgIHNjcm9sbGJhci13aWR0aDogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWJzLWhlYWRpbmc6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFicy1oZWFkaW5nLmUtc2Nyb2xsIHsKICAgIGN1cnNvcjogZ3JhYmJpbmc7CiAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmcKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFicy1oZWFkaW5nLmUtc2Nyb2xsLWFjdGl2ZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFicy1oZWFkaW5nLmUtc2Nyb2xsLWFjdGl2ZTpiZWZvcmUgewogICAgY29udGVudDogIiI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBpbnNldC1ibG9jazogMDsKICAgIGluc2V0LWlubGluZTogLTEwMDB2dzsKICAgIHotaW5kZXg6IDIKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFicy1jb250ZW50IHsKICAgIGRpc3BsYXk6IHZhcigtLW4tdGFicy1jb250ZW50LWRpc3BsYXkpOwogICAgZmxleC1ncm93OiAxOwogICAgbWluLXdpZHRoOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYnMtY29udGVudD4uZS1jb246bm90KC5lLWFjdGl2ZSkgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWJzOm5vdCguZS1hY3RpdmF0ZWQpPi5lLW4tdGFicy1jb250ZW50Pi5lLWNvbjpmaXJzdC1jaGlsZCB7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZSB7CiAgICBhbGw6IHVuc2V0OwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogdmFyKC0tbi10YWJzLXRpdGxlLWFsaWduLWl0ZW1zLXRvZ2dsZSwgdmFyKC0tbi10YWJzLXRpdGxlLWFsaWduLWl0ZW1zKSk7CiAgICBmbGV4LWRpcmVjdGlvbjogdmFyKC0tbi10YWJzLXRpdGxlLWRpcmVjdGlvbik7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHZhcigtLW4tdGFicy10aXRsZS1qdXN0aWZ5LWNvbnRlbnQtdG9nZ2xlLCB2YXIoLS1uLXRhYnMtdGl0bGUtanVzdGlmeS1jb250ZW50KSk7CiAgICBnYXA6IHZhcigtLW4tdGFicy1pY29uLWdhcCk7CiAgICBib3JkZXItd2lkdGg6IHZhcigtLW4tdGFicy1ib3JkZXItd2lkdGgpOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgb3V0bGluZTogbm9uZTsKICAgIGZsZXgtZ3JvdzogdmFyKC0tbi10YWJzLXRpdGxlLWZsZXgtZ3Jvdyk7CiAgICBmbGV4LWJhc2lzOiB2YXIoLS1uLXRhYnMtdGl0bGUtZmxleC1iYXNpcyk7CiAgICBmbGV4LXNocmluazogdmFyKC0tbi10YWJzLXRpdGxlLWZsZXgtc2hyaW5rKTsKICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6IHZhcigtLW4tdGFicy10aXRsZS1wYWRkaW5nLWJsb2NrLXN0YXJ0KTsKICAgIHBhZGRpbmctaW5saW5lLWVuZDogdmFyKC0tbi10YWJzLXRpdGxlLXBhZGRpbmctaW5saW5lLWVuZCk7CiAgICBwYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0tbi10YWJzLXRpdGxlLXBhZGRpbmctYmxvY2stZW5kKTsKICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1uLXRhYnMtdGl0bGUtcGFkZGluZy1pbmxpbmUtc3RhcnQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbi10YWJzLXRpdGxlLWJvcmRlci1yYWRpdXMpOwogICAgaGVpZ2h0OiB2YXIoLS1uLXRhYnMtdGl0bGUtaGVpZ2h0KTsKICAgIHdpZHRoOiB2YXIoLS1uLXRhYnMtdGl0bGUtd2lkdGgpOwogICAgd2hpdGUtc3BhY2U6IHZhcigtLW4tdGFicy10aXRsZS13aGl0ZS1zcGFjZSk7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLW4tdGFicy10aXRsZS10cmFuc2l0aW9uKSwgY29sb3IgdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pLCBib3JkZXIgdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pLCBib3gtc2hhZG93IHZhcigtLW4tdGFicy10aXRsZS10cmFuc2l0aW9uKSwgdGV4dC1zaGFkb3cgdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pLCBzdHJva2UgdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pLCBzdHJva2Utd2lkdGggdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pLCAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoIHZhcigtLW4tdGFicy10aXRsZS10cmFuc2l0aW9uKSwgLXdlYmtpdC10ZXh0LXN0cm9rZS1jb2xvciB2YXIoLS1uLXRhYnMtdGl0bGUtdHJhbnNpdGlvbiksIHRyYW5zZm9ybSB2YXIoLS1uLXRhYnMtdGl0bGUtdHJhbnNpdGlvbikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlOmZvY3VzLXZpc2libGUgewogICAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZSBzcGFuIGksCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZSBzcGFuIHN2ZyB7CiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1uLXRhYnMtdGl0bGUtdHJhbnNpdGlvbiksIGZpbGwgdmFyKC0tbi10YWJzLXRpdGxlLXRyYW5zaXRpb24pCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZS10ZXh0IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1uLXRhYnMtdGl0bGUtZm9udC1zaXplKTsKICAgIHRleHQtYWxpZ246IHZhcigtLW4tdGFicy10aXRsZS10ZXh0LWFsaWduKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGUgLmUtbi10YWItaWNvbiB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBmbGV4LXNocmluazogMDsKICAgIG9yZGVyOiB2YXIoLS1uLXRhYnMtaWNvbi1vcmRlcik7CiAgICBvdmVyZmxvdzogaGlkZGVuCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZSAuZS1uLXRhYi1pY29uIGkgewogICAgZm9udC1zaXplOiB2YXIoLS1uLXRhYnMtaWNvbi1zaXplLCB2YXIoLS1uLXRhYnMtdGl0bGUtZm9udC1zaXplKSkKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlIC5lLW4tdGFiLWljb24gc3ZnIHsKICAgIHdpZHRoOiB2YXIoLS1uLXRhYnMtaWNvbi1zaXplLCB2YXIoLS1uLXRhYnMtdGl0bGUtZm9udC1zaXplKSk7CiAgICBoZWlnaHQ6IHZhcigtLW4tdGFicy1pY29uLXNpemUsIHZhcigtLW4tdGFicy10aXRsZS1mb250LXNpemUpKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGUgLmUtbi10YWItaWNvbjplbXB0eSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uLXRhYnMtdGl0bGUtYmFja2dyb3VuZC1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdLAouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV0gYSB7CiAgICBjb2xvcjogdmFyKC0tbi10YWJzLXRpdGxlLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV0gLmUtbi10YWItaWNvbiBpIHsKICAgIGNvbG9yOiB2YXIoLS1uLXRhYnMtaWNvbi1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdIC5lLW4tdGFiLWljb24gc3ZnIHsKICAgIGZpbGw6IHZhcigtLW4tdGFicy1pY29uLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV0gLmUtbi10YWItaWNvbiBpOmxhc3QtY2hpbGQsCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXSAuZS1uLXRhYi1pY29uIHN2ZzpsYXN0LWNoaWxkIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwdmgpOwogICAgaGVpZ2h0OiAwOwogICAgb3BhY2l0eTogMAp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD10cnVlXSwKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0gYSB7CiAgICBjb2xvcjogdmFyKC0tbi10YWJzLXRpdGxlLWNvbG9yLWFjdGl2ZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0gLmUtbi10YWItaWNvbiBpIHsKICAgIGNvbG9yOiB2YXIoLS1uLXRhYnMtaWNvbi1jb2xvci1hY3RpdmUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPXRydWVdIC5lLW4tdGFiLWljb24gc3ZnIHsKICAgIGZpbGw6IHZhcigtLW4tdGFicy1pY29uLWNvbG9yLWFjdGl2ZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0gLmUtbi10YWItaWNvbiBpOmZpcnN0LWNoaWxkLAouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD10cnVlXSAuZS1uLXRhYi1pY29uIHN2ZzpmaXJzdC1jaGlsZCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMHZoKTsKICAgIGhlaWdodDogMDsKICAgIG9wYWNpdHk6IDAKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV1bY2xhc3MqPWVsZW1lbnRvci1hbmltYXRpb24tXTphY3RpdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPXRydWVdW2NsYXNzKj1lbGVtZW50b3ItYW5pbWF0aW9uLV06Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPXRydWVdW2NsYXNzKj1lbGVtZW50b3ItYW5pbWF0aW9uLV06aG92ZXIgewogICAgdHJhbnNmb3JtOiBub25lOwogICAgYW5pbWF0aW9uOiBpbml0aWFsCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPWZhbHNlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIFtkYXRhLXRvdWNoLW1vZGU9ZmFsc2VdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyIGEgewogICAgY29sb3I6IHZhcigtLW4tdGFicy10aXRsZS1jb2xvci1ob3ZlcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIFtkYXRhLXRvdWNoLW1vZGU9ZmFsc2VdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyIC5lLW4tdGFiLWljb24gaSB7CiAgICBjb2xvcjogdmFyKC0tbi10YWJzLWljb24tY29sb3ItaG92ZXIpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPWZhbHNlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlciAuZS1uLXRhYi1pY29uIHN2ZyB7CiAgICBmaWxsOiB2YXIoLS1uLXRhYnMtaWNvbi1jb2xvci1ob3ZlcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIFtkYXRhLXRvdWNoLW1vZGU9dHJ1ZV0gLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV06aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPXRydWVdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyIGEgewogICAgY29sb3I6IHZhcigtLW4tdGFicy10aXRsZS1jb2xvci1hY3RpdmUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPXRydWVdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyIC5lLW4tdGFiLWljb24gaSB7CiAgICBjb2xvcjogdmFyKC0tbi10YWJzLWljb24tY29sb3ItYWN0aXZlKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgW2RhdGEtdG91Y2gtbW9kZT10cnVlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlciAuZS1uLXRhYi1pY29uIHN2ZyB7CiAgICBmaWxsOiB2YXIoLS1uLXRhYnMtaWNvbi1jb2xvci1hY3RpdmUpCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPXRydWVdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyIC5lLW4tdGFiLWljb24gaTpmaXJzdC1jaGlsZCwKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIFtkYXRhLXRvdWNoLW1vZGU9dHJ1ZV0gLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV06aG92ZXIgLmUtbi10YWItaWNvbiBzdmc6Zmlyc3QtY2hpbGQgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDB2aCk7CiAgICBoZWlnaHQ6IDA7CiAgICBvcGFjaXR5OiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicyBbZGF0YS10b3VjaC1tb2RlPXRydWVdIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdOmhvdmVyW2NsYXNzKj1lbGVtZW50b3ItYW5pbWF0aW9uLV06YWN0aXZlLAouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgW2RhdGEtdG91Y2gtbW9kZT10cnVlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlcltjbGFzcyo9ZWxlbWVudG9yLWFuaW1hdGlvbi1dOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgW2RhdGEtdG91Y2gtbW9kZT10cnVlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlcltjbGFzcyo9ZWxlbWVudG9yLWFuaW1hdGlvbi1dOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogbm9uZTsKICAgIGFuaW1hdGlvbjogaW5pdGlhbAp9CgouZWxlbWVudG9yLXdpZGdldC1uLXRhYnMgW2RhdGEtdG91Y2gtbW9kZT10cnVlXSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlciAuZS1uLXRhYi1pY29uIGk6bGFzdC1jaGlsZCwKLmVsZW1lbnRvci13aWRnZXQtbi10YWJzIFtkYXRhLXRvdWNoLW1vZGU9dHJ1ZV0gLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV06aG92ZXIgLmUtbi10YWItaWNvbiBzdmc6bGFzdC1jaGlsZCB7CiAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBvcGFjaXR5OiAxCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci13aWRnZXQtbi10YWJzPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lcj4uZS1uLXRhYnNbZGF0YS10b3VjaC1tb2RlPWZhbHNlXT4uZS1uLXRhYnMtaGVhZGluZyAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPWZhbHNlXTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uLXRhYnMtdGl0bGUtYmFja2dyb3VuZC1jb2xvci1ob3Zlcik7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5lbGVtZW50b3IgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci13aWRnZXQtbi10YWJzPi5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lcj4uZS1uLXRhYnM+LmUtbi10YWJzLWhlYWRpbmcgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD10cnVlXSwKLmVsZW1lbnRvciAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLXdpZGdldC1uLXRhYnM+LmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyPi5lLW4tdGFic1tkYXRhLXRvdWNoLW1vZGU9dHJ1ZV0+LmUtbi10YWJzLWhlYWRpbmcgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD1mYWxzZV06aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbi10YWJzLXRpdGxlLWJhY2tncm91bmQtY29sb3ItYWN0aXZlKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUKfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy1tb2JpbGUgewogICAgICAgIC0tbi10YWJzLWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIC0tbi10YWJzLWhlYWRpbmctZGlzcGxheTogY29udGVudHM7CiAgICAgICAgLS1uLXRhYnMtY29udGVudC1kaXNwbGF5OiBjb250ZW50cwogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLW1vYmlsZSAuZS1uLXRhYnMgewogICAgICAgIGdhcDogMAogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLW1vYmlsZSAuZS1uLXRhYnMtY29udGVudD4uZS1jb24gewogICAgICAgIG9yZGVyOiB2YXIoLS1uLXRhYnMtdGl0bGUtb3JkZXIpCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbW9iaWxlIC5lLW4tdGFiLXRpdGxlIHsKICAgICAgICBvcmRlcjogdmFyKC0tbi10YWJzLXRpdGxlLW9yZGVyKTsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLW1vYmlsZSAuZS1uLXRhYi10aXRsZTpub3QoOmZpcnN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1uLXRhYnMtdGl0bGUtZ2FwKQogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLW1vYmlsZSAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPXRydWVdIHsKICAgICAgICBtYXJnaW4tYmxvY2stZW5kOiB2YXIoLS1uLXRhYnMtZ2FwKQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDotMSkgewogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLW1vYmlsZV9leHRyYSB7CiAgICAgICAgLS1uLXRhYnMtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgLS1uLXRhYnMtaGVhZGluZy1kaXNwbGF5OiBjb250ZW50czsKICAgICAgICAtLW4tdGFicy1jb250ZW50LWRpc3BsYXk6IGNvbnRlbnRzCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbW9iaWxlX2V4dHJhIC5lLW4tdGFicyB7CiAgICAgICAgZ2FwOiAwCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbW9iaWxlX2V4dHJhIC5lLW4tdGFicy1jb250ZW50Pi5lLWNvbiB7CiAgICAgICAgb3JkZXI6IHZhcigtLW4tdGFicy10aXRsZS1vcmRlcikKICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy1tb2JpbGVfZXh0cmEgLmUtbi10YWItdGl0bGUgewogICAgICAgIG9yZGVyOiB2YXIoLS1uLXRhYnMtdGl0bGUtb3JkZXIpOwogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbW9iaWxlX2V4dHJhIC5lLW4tdGFiLXRpdGxlOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLW4tdGFicy10aXRsZS1nYXApCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbW9iaWxlX2V4dHJhIC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0gewogICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLW4tdGFicy1nYXApCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLXRhYmxldCB7CiAgICAgICAgLS1uLXRhYnMtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgLS1uLXRhYnMtaGVhZGluZy1kaXNwbGF5OiBjb250ZW50czsKICAgICAgICAtLW4tdGFicy1jb250ZW50LWRpc3BsYXk6IGNvbnRlbnRzCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtdGFibGV0IC5lLW4tdGFicyB7CiAgICAgICAgZ2FwOiAwCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtdGFibGV0IC5lLW4tdGFicy1jb250ZW50Pi5lLWNvbiB7CiAgICAgICAgb3JkZXI6IHZhcigtLW4tdGFicy10aXRsZS1vcmRlcikKICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy10YWJsZXQgLmUtbi10YWItdGl0bGUgewogICAgICAgIG9yZGVyOiB2YXIoLS1uLXRhYnMtdGl0bGUtb3JkZXIpOwogICAgICAgIHdpZHRoOiBhdXRvCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtdGFibGV0IC5lLW4tdGFiLXRpdGxlOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLW4tdGFicy10aXRsZS1nYXApCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtdGFibGV0IC5lLW4tdGFiLXRpdGxlW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0gewogICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLW4tdGFicy1nYXApCiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOi0xKSB7CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtdGFibGV0X2V4dHJhIHsKICAgICAgICAtLW4tdGFicy1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAtLW4tdGFicy1oZWFkaW5nLWRpc3BsYXk6IGNvbnRlbnRzOwogICAgICAgIC0tbi10YWJzLWNvbnRlbnQtZGlzcGxheTogY29udGVudHMKICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy10YWJsZXRfZXh0cmEgLmUtbi10YWJzIHsKICAgICAgICBnYXA6IDAKICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy10YWJsZXRfZXh0cmEgLmUtbi10YWJzLWNvbnRlbnQ+LmUtY29uIHsKICAgICAgICBvcmRlcjogdmFyKC0tbi10YWJzLXRpdGxlLW9yZGVyKQogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLXRhYmxldF9leHRyYSAuZS1uLXRhYi10aXRsZSB7CiAgICAgICAgb3JkZXI6IHZhcigtLW4tdGFicy10aXRsZS1vcmRlcik7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy10YWJsZXRfZXh0cmEgLmUtbi10YWItdGl0bGU6bm90KDpmaXJzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tbi10YWJzLXRpdGxlLWdhcCkKICAgIH0KICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy10YWJsZXRfZXh0cmEgLmUtbi10YWItdGl0bGVbYXJpYS1zZWxlY3RlZD10cnVlXSB7CiAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tbi10YWJzLWdhcCkKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6LTEpIHsKICAgIC5lbGVtZW50b3IuZWxlbWVudG9yIC5lbGVtZW50b3Itd2lkZ2V0LW4tdGFicy5lLW4tdGFicy1sYXB0b3AgewogICAgICAgIC0tbi10YWJzLWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIC0tbi10YWJzLWhlYWRpbmctZGlzcGxheTogY29udGVudHM7CiAgICAgICAgLS1uLXRhYnMtY29udGVudC1kaXNwbGF5OiBjb250ZW50cwogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLWxhcHRvcCAuZS1uLXRhYnMgewogICAgICAgIGdhcDogMAogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLWxhcHRvcCAuZS1uLXRhYnMtY29udGVudD4uZS1jb24gewogICAgICAgIG9yZGVyOiB2YXIoLS1uLXRhYnMtdGl0bGUtb3JkZXIpCiAgICB9CiAgICAuZWxlbWVudG9yLmVsZW1lbnRvciAuZWxlbWVudG9yLXdpZGdldC1uLXRhYnMuZS1uLXRhYnMtbGFwdG9wIC5lLW4tdGFiLXRpdGxlIHsKICAgICAgICBvcmRlcjogdmFyKC0tbi10YWJzLXRpdGxlLW9yZGVyKTsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLWxhcHRvcCAuZS1uLXRhYi10aXRsZTpub3QoOmZpcnN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1uLXRhYnMtdGl0bGUtZ2FwKQogICAgfQogICAgLmVsZW1lbnRvci5lbGVtZW50b3IgLmVsZW1lbnRvci13aWRnZXQtbi10YWJzLmUtbi10YWJzLWxhcHRvcCAuZS1uLXRhYi10aXRsZVthcmlhLXNlbGVjdGVkPXRydWVdIHsKICAgICAgICBtYXJnaW4tYmxvY2stZW5kOiB2YXIoLS1uLXRhYnMtZ2FwKQogICAgfQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiB7CiAgICAtLW4tYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZTogMjBweDsKICAgIC0tbi1hY2NvcmRpb24tdGl0bGUtZmxleC1ncm93OiBpbml0aWFsOwogICAgLS1uLWFjY29yZGlvbi10aXRsZS1qdXN0aWZ5LWNvbnRlbnQ6IGluaXRpYWw7CiAgICAtLW4tYWNjb3JkaW9uLXRpdGxlLWljb24tb3JkZXI6IC0xOwogICAgLS1uLWFjY29yZGlvbi1ib3JkZXItd2lkdGg6IDFweDsKICAgIC0tbi1hY2NvcmRpb24tYm9yZGVyLWNvbG9yOiAjZDVkOGRjOwogICAgLS1uLWFjY29yZGlvbi1ib3JkZXItc3R5bGU6IHNvbGlkOwogICAgLS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWZsZXgtZ3JvdzogaW5pdGlhbDsKICAgIC0tbi1hY2NvcmRpb24taXRlbS10aXRsZS1zcGFjZS1iZXR3ZWVuOiAwcHg7CiAgICAtLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtZGlzdGFuY2UtZnJvbS1jb250ZW50OiAwcHg7CiAgICAtLW4tYWNjb3JkaW9uLXBhZGRpbmc6IDEwcHg7CiAgICAtLW4tYWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6IDBweDsKICAgIC0tbi1hY2NvcmRpb24taWNvbi1zaXplOiAxNXB4OwogICAgLS1uLWFjY29yZGlvbi10aXRsZS1ub3JtYWwtY29sb3I6ICMxZjIxMjQ7CiAgICAtLW4tYWNjb3JkaW9uLXRpdGxlLWhvdmVyLWNvbG9yOiAjMWYyMTI0OwogICAgLS1uLWFjY29yZGlvbi10aXRsZS1hY3RpdmUtY29sb3I6ICMxZjIxMjQ7CiAgICAtLW4tYWNjb3JkaW9uLWljb24tbm9ybWFsLWNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi10aXRsZS1ub3JtYWwtY29sb3IpOwogICAgLS1uLWFjY29yZGlvbi1pY29uLWhvdmVyLWNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi10aXRsZS1ob3Zlci1jb2xvcik7CiAgICAtLW4tYWNjb3JkaW9uLWljb24tYWN0aXZlLWNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi10aXRsZS1hY3RpdmUtY29sb3IpOwogICAgLS1uLWFjY29yZGlvbi1pY29uLWdhcDogMCAxMHB4OwogICAgd2lkdGg6IDEwMCUKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24gZGV0YWlscz5zdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2VyIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tbi1hY2NvcmRpb24taXRlbS10aXRsZS1zcGFjZS1iZXR3ZWVuKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLAo6d2hlcmUoLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbT4uZS1jb24pIHsKICAgIGJvcmRlcjogdmFyKC0tbi1hY2NvcmRpb24tYm9yZGVyLXdpZHRoKSB2YXIoLS1uLWFjY29yZGlvbi1ib3JkZXItc3R5bGUpIHZhcigtLW4tYWNjb3JkaW9uLWJvcmRlci1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiB2YXIoLS1uLWFjY29yZGlvbi1wYWRkaW5nKTsKICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tbi1hY2NvcmRpb24tdGl0bGUtanVzdGlmeS1jb250ZW50KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLW4tYWNjb3JkaW9uLWJvcmRlci1yYWRpdXMpOwogICAgZmxleC1ncm93OiB2YXIoLS1uLW1lbnUtdGl0bGUtZmxleC1ncm93KTsKICAgIGdhcDogdmFyKC0tbi1hY2NvcmRpb24taWNvbi1nYXApOwogICAgY29sb3I6IHZhcigtLW4tYWNjb3JkaW9uLXRpdGxlLW5vcm1hbC1jb2xvcik7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgY3Vyc29yOiBwb2ludGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaGVhZGVyIHsKICAgIGRpc3BsYXk6IGZsZXgKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZS1oZWFkZXIgaDEsCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaGVhZGVyIGgyLAouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWhlYWRlciBoMywKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZS1oZWFkZXIgaDQsCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaGVhZGVyIGg1LAouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWhlYWRlciBoNiwKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZS1oZWFkZXIgcCB7CiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IDA7CiAgICBtYXJnaW4tYmxvY2stZW5kOiAwCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtdGV4dCB7CiAgICBmb250LXNpemU6IHZhcigtLW4tYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZSk7CiAgICBhbGlnbi1pdGVtczogY2VudGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBvcmRlcjogdmFyKC0tbi1hY2NvcmRpb24tdGl0bGUtaWNvbi1vcmRlcik7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogLW1vei1maXQtY29udGVudDsKICAgIHdpZHRoOiBmaXQtY29udGVudAp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWljb24gc3BhbiB7CiAgICBoZWlnaHQ6IHZhcigtLW4tYWNjb3JkaW9uLWljb24tc2l6ZSk7CiAgICB3aWR0aDogYXV0bwp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWljb24gc3Bhbj5pIHsKICAgIGNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLW5vcm1hbC1jb2xvcik7CiAgICBmb250LXNpemU6IHZhcigtLW4tYWNjb3JkaW9uLWljb24tc2l6ZSkKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZS1pY29uIHNwYW4+c3ZnIHsKICAgIGZpbGw6IHZhcigtLW4tYWNjb3JkaW9uLWljb24tbm9ybWFsLWNvbG9yKTsKICAgIGhlaWdodDogdmFyKC0tbi1hY2NvcmRpb24taWNvbi1zaXplKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlPnNwYW4gewogICAgY3Vyc29yOiBwb2ludGVyCn0KCi5lbGVtZW50b3Itd2lkZ2V0LW4tYWNjb3JkaW9uIC5lLW4tYWNjb3JkaW9uLWl0ZW1bb3Blbl0gLmUtbi1hY2NvcmRpb24taXRlbS10aXRsZSB7CiAgICBtYXJnaW4tYmxvY2stZW5kOiB2YXIoLS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWRpc3RhbmNlLWZyb20tY29udGVudCk7CiAgICBjb2xvcjogdmFyKC0tbi1hY2NvcmRpb24tdGl0bGUtYWN0aXZlLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtW29wZW5dIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiAuZS1vcGVuZWQgewogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtW29wZW5dIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiAuZS1jbG9zZWQgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtW29wZW5dIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiBzcGFuPmkgewogICAgY29sb3I6IHZhcigtLW4tYWNjb3JkaW9uLWljb24tYWN0aXZlLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtW29wZW5dIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiBzcGFuPnN2ZyB7CiAgICBmaWxsOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLWFjdGl2ZS1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbTpub3QoW29wZW5dKTpob3ZlciAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi10aXRsZS1ob3Zlci1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbTpub3QoW29wZW5dKTpob3ZlciAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWljb24gc3Bhbj5pIHsKICAgIGNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLWhvdmVyLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtOm5vdChbb3Blbl0pOmhvdmVyIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiBzcGFuPnN2ZyB7CiAgICBmaWxsOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLWhvdmVyLWNvbG9yKQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiAuZS1vcGVuZWQgewogICAgZGlzcGxheTogbm9uZQp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiAuZS1jbG9zZWQgewogICAgZGlzcGxheTogZmxleAp9CgouZWxlbWVudG9yLXdpZGdldC1uLWFjY29yZGlvbiAuZS1uLWFjY29yZGlvbi1pdGVtIC5lLW4tYWNjb3JkaW9uLWl0ZW0tdGl0bGUtaWNvbiBzcGFuPnN2ZyB7CiAgICBmaWxsOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLW5vcm1hbC1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbSAuZS1uLWFjY29yZGlvbi1pdGVtLXRpdGxlLWljb24gc3Bhbj5pIHsKICAgIGNvbG9yOiB2YXIoLS1uLWFjY29yZGlvbi1pY29uLW5vcm1hbC1jb2xvcikKfQoKLmVsZW1lbnRvci13aWRnZXQtbi1hY2NvcmRpb24gLmUtbi1hY2NvcmRpb24taXRlbT5zcGFuIHsKICAgIGN1cnNvcjogcG9pbnRlcgp9"}},"time_used":79,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":50,"receive":29,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.832Z","timestamp":1785128398832,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 2372\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"1cce-67c3620e-fdb6d442879fe280;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 96b60b1d1163961cab999c6b3f71ee9b-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":7374,"size_decoded":2960,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (1023)","md5":"166d26153e470e27c3333e5c10081599","sha1":"e10abb24b7acc407d62ea6058cd1a67b2a54d61c","sha256":"bc39b79174c882173cea4d45d4b18676a1a112504dfb1d1b57dee10e6ba749f4","sha512":"a62f0f32aac0e79744cc779b99ced874891bf06ccd2de27c855de643d8c84d36bb9589b683753e9230f564ac198d645aaa223159bb3f22302cd41b44f53e38d5","ssdeep":"192:ZeUlUgzy7P0gCCIqktmk9TGaWQ4xPUWLcXRgSRoFLFInmQxPkh72p+a:4qZ+7P0JjvFFwu1XREpqmUktSf","tlshash":"3ee101851be27c372593b4e996199e34732ec4132949ec82fd5cada85fc1d3087b8ab0","first_seen":"2025-07-04T20:26:13.188207Z","last_seen":"2026-07-27T05:01:06.128846Z","times_seen":4,"resource_available":true,"data":"LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNy0wMi0yMDI0ICovCigoKSA9PiB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgZSwgciwgXywgdCwgYSwgaSA9IHt9LAogICAgICAgIG4gPSB7fTsKCiAgICBmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKGUpIHsKICAgICAgICB2YXIgciA9IG5bZV07CiAgICAgICAgaWYgKHZvaWQgMCAhPT0gcikgcmV0dXJuIHIuZXhwb3J0czsKICAgICAgICB2YXIgXyA9IG5bZV0gPSB7CiAgICAgICAgICAgIGV4cG9ydHM6IHt9CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gaVtlXS5jYWxsKF8uZXhwb3J0cywgXywgXy5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSwgXy5leHBvcnRzCiAgICB9CiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBpLCBlID0gW10sIF9fd2VicGFja19yZXF1aXJlX18uTyA9IChyLCBfLCB0LCBhKSA9PiB7CiAgICAgICAgaWYgKCFfKSB7CiAgICAgICAgICAgIHZhciBpID0gMSAvIDA7CiAgICAgICAgICAgIGZvciAodSA9IDA7IHUgPCBlLmxlbmd0aDsgdSsrKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBbXywgdCwgYV0gPSBlW3VdLCBuID0gITAsIGMgPSAwOyBjIDwgXy5sZW5ndGg7IGMrKykoITEgJiBhIHx8IGkgPj0gYSkgJiYgT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5PKS5ldmVyeSgoZSA9PiBfX3dlYnBhY2tfcmVxdWlyZV9fLk9bZV0oX1tjXSkpKSA/IF8uc3BsaWNlKGMtLSwgMSkgOiAobiA9ICExLCBhIDwgaSAmJiAoaSA9IGEpKTsKICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgZS5zcGxpY2UodS0tLCAxKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHQoKTsKICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IG8gJiYgKHIgPSBvKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgfQogICAgICAgIGEgPSBhIHx8IDA7CiAgICAgICAgZm9yICh2YXIgdSA9IGUubGVuZ3RoOyB1ID4gMCAmJiBlW3UgLSAxXVsyXSA+IGE7IHUtLSkgZVt1XSA9IGVbdSAtIDFdOwogICAgICAgIGVbdV0gPSBbXywgdCwgYV0KICAgIH0sIF8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgPyBlID0+IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSA6IGUgPT4gZS5fX3Byb3RvX18sIF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICBpZiAoMSAmIHQgJiYgKGUgPSB0aGlzKGUpKSwgOCAmIHQpIHJldHVybiBlOwogICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlKSB7CiAgICAgICAgICAgIGlmICg0ICYgdCAmJiBlLl9fZXNNb2R1bGUpIHJldHVybiBlOwogICAgICAgICAgICBpZiAoMTYgJiB0ICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUudGhlbikgcmV0dXJuIGUKICAgICAgICB9CiAgICAgICAgdmFyIGEgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogICAgICAgIF9fd2VicGFja19yZXF1aXJlX18ucihhKTsKICAgICAgICB2YXIgaSA9IHt9OwogICAgICAgIHIgPSByIHx8IFtudWxsLCBfKHt9KSwgXyhbXSksIF8oXyldOwogICAgICAgIGZvciAodmFyIG4gPSAyICYgdCAmJiBlOwogICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgbiAmJiAhfnIuaW5kZXhPZihuKTsgbiA9IF8obikpIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG4pLmZvckVhY2goKHIgPT4gaVtyXSA9ICgpID0+IGVbcl0pKTsKICAgICAgICByZXR1cm4gaS5kZWZhdWx0ID0gKCkgPT4gZSwgX193ZWJwYWNrX3JlcXVpcmVfXy5kKGEsIGkpLCBhCiAgICB9LCBfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZSwgcikgPT4gewogICAgICAgIGZvciAodmFyIF8gaW4gcikgX193ZWJwYWNrX3JlcXVpcmVfXy5vKHIsIF8pICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSwgXykgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIF8sIHsKICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgIGdldDogcltfXQogICAgICAgIH0pCiAgICB9LCBfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fSwgX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gZSA9PiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgoKHIsIF8pID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fLmZbX10oZSwgciksIHIpKSwgW10pKSwgX193ZWJwYWNrX3JlcXVpcmVfXy51ID0gZSA9PiA3MjMgPT09IGUgPyAibGlnaHRib3guMWI2ZTA1ZTA2MDcwNDBlYjg5MjkuYnVuZGxlLm1pbi5qcyIgOiA0OCA9PT0gZSA/ICJ0ZXh0LXBhdGguYjUwYjNlNzQ0ODhhNGUzMDI2MTMuYnVuZGxlLm1pbi5qcyIgOiAyMDkgPT09IGUgPyAiYWNjb3JkaW9uLjg3OTk2NzU0NjBjNzNlYjQ4OTcyLmJ1bmRsZS5taW4uanMiIDogNzQ1ID09PSBlID8gImFsZXJ0LmNiYzJhMGZlZTc0ZWUzZWQwNDE5LmJ1bmRsZS5taW4uanMiIDogMTIwID09PSBlID8gImNvdW50ZXIuMDJjZWYyOWM1ODllNzQyZDRjOGMuYnVuZGxlLm1pbi5qcyIgOiAxOTIgPT09IGUgPyAicHJvZ3Jlc3MuY2E1NWQzM2JiMDZjZWU0ZTZmMDIuYnVuZGxlLm1pbi5qcyIgOiA1MjAgPT09IGUgPyAidGFicy5jMmFmNWJlN2Y5Y2IzY2RjZjNkNS5idW5kbGUubWluLmpzIiA6IDE4MSA9PT0gZSA/ICJ0b2dnbGUuMzE4ODE0NzdjNDVmZjVjZjlkNGQuYnVuZGxlLm1pbi5qcyIgOiA3OTEgPT09IGUgPyAidmlkZW8uZmVhNGY4ZGZkZjE3MjYyZjIzZTguYnVuZGxlLm1pbi5qcyIgOiAyNjggPT09IGUgPyAiaW1hZ2UtY2Fyb3VzZWwuNDQ1NWM2MzYyNDkyZDkwNjc1MTIuYnVuZGxlLm1pbi5qcyIgOiAzNTcgPT09IGUgPyAidGV4dC1lZGl0b3IuMmMzNWFhZmJlNWJmMGUxMjc5NTAuYnVuZGxlLm1pbi5qcyIgOiA1MiA9PT0gZSA/ICJ3cC1hdWRpby43NWYwY2VkMTQzZmViYjhjZDMxYS5idW5kbGUubWluLmpzIiA6IDQxMyA9PT0gZSA/ICJjb250YWluZXIuNWIxYTdkMDY5MDdmNmQ3Zjg1YjYuYnVuZGxlLm1pbi5qcyIgOiB2b2lkIDAsIF9fd2VicGFja19yZXF1aXJlX18uZyA9IGZ1bmN0aW9uKCkgewogICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZ2xvYmFsVGhpcykgcmV0dXJuIGdsb2JhbFRoaXM7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCkKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2Ygd2luZG93KSByZXR1cm4gd2luZG93CiAgICAgICAgfQogICAgfSgpLCBfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAoZSwgcikgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsIHIpLCB0ID0ge30sIGEgPSAiZWxlbWVudG9yOiIsIF9fd2VicGFja19yZXF1aXJlX18ubCA9IChlLCByLCBfLCBpKSA9PiB7CiAgICAgICAgaWYgKHRbZV0pIHRbZV0ucHVzaChyKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIG4sIGM7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IF8pCiAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLCB1ID0gMDsgdSA8IG8ubGVuZ3RoOyB1KyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9bdV07CiAgICAgICAgICAgICAgICAgICAgaWYgKGIuZ2V0QXR0cmlidXRlKCJzcmMiKSA9PSBlIHx8IGIuZ2V0QXR0cmlidXRlKCJkYXRhLXdlYnBhY2siKSA9PSBhICsgXykgewogICAgICAgICAgICAgICAgICAgICAgICBuID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIG4gfHwgKGMgPSAhMCwgKG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSkuY2hhcnNldCA9ICJ1dGYtOCIsIG4udGltZW91dCA9IDEyMCwgX193ZWJwYWNrX3JlcXVpcmVfXy5uYyAmJiBuLnNldEF0dHJpYnV0ZSgibm9uY2UiLCBfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKSwgbi5zZXRBdHRyaWJ1dGUoImRhdGEtd2VicGFjayIsIGEgKyBfKSwgbi5zcmMgPSBlKSwgdFtlXSA9IFtyXTsKICAgICAgICAgICAgdmFyIG9uU2NyaXB0Q29tcGxldGUgPSAociwgXykgPT4gewogICAgICAgICAgICAgICAgICAgIG4ub25lcnJvciA9IG4ub25sb2FkID0gbnVsbCwgY2xlYXJUaW1lb3V0KHApOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdFtlXTsKICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZXRlIHRbZV0sIG4ucGFyZW50Tm9kZSAmJiBuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobiksIGEgJiYgYS5mb3JFYWNoKChlID0+IGUoXykpKSwgcikgcmV0dXJuIHIoXykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRlLmJpbmQobnVsbCwgdm9pZCAwLCB7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogInRpbWVvdXQiLAogICAgICAgICAgICAgICAgICAgIHRhcmdldDogbgogICAgICAgICAgICAgICAgfSksIDEyZTQpOwogICAgICAgICAgICBuLm9uZXJyb3IgPSBvblNjcmlwdENvbXBsZXRlLmJpbmQobnVsbCwgbi5vbmVycm9yKSwgbi5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRlLmJpbmQobnVsbCwgbi5vbmxvYWQpLCBjICYmIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobikKICAgICAgICB9CiAgICB9LCBfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBlID0+IHsKICAgICAgICAidW5kZWZpbmVkIiAhPSB0eXBlb2YgU3ltYm9sICYmIFN5bWJvbC50b1N0cmluZ1RhZyAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7CiAgICAgICAgICAgIHZhbHVlOiAiTW9kdWxlIgogICAgICAgIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgIH0pCiAgICB9LCAoKCkgPT4gewogICAgICAgIHZhciBlOwogICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzICYmIChlID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgIiIpOwogICAgICAgIHZhciByID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50OwogICAgICAgIGlmICghZSAmJiByICYmIChyLmN1cnJlbnRTY3JpcHQgJiYgKGUgPSByLmN1cnJlbnRTY3JpcHQuc3JjKSwgIWUpKSB7CiAgICAgICAgICAgIHZhciBfID0gci5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7CiAgICAgICAgICAgIGlmIChfLmxlbmd0aCkKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBfLmxlbmd0aCAtIDE7IHQgPiAtMSAmJiAhZTspIGUgPSBfW3QtLV0uc3JjCiAgICAgICAgfQogICAgICAgIGlmICghZSkgdGhyb3cgbmV3IEVycm9yKCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlciIpOwogICAgICAgIGUgPSBlLnJlcGxhY2UoLyMuKiQvLCAiIikucmVwbGFjZSgvXD8uKiQvLCAiIikucmVwbGFjZSgvXC9bXlwvXSskLywgIi8iKSwgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gZQogICAgfSkoKSwgKCgpID0+IHsKICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgMTYyOiAwCiAgICAgICAgfTsKICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmYuaiA9IChyLCBfKSA9PiB7CiAgICAgICAgICAgIHZhciB0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsIHIpID8gZVtyXSA6IHZvaWQgMDsKICAgICAgICAgICAgaWYgKDAgIT09IHQpCiAgICAgICAgICAgICAgICBpZiAodCkgXy5wdXNoKHRbMl0pOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoMTYyICE9IHIpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gbmV3IFByb21pc2UoKChfLCBhKSA9PiB0ID0gZVtyXSA9IFtfLCBhXSkpOwogICAgICAgICAgICAgICAgXy5wdXNoKHRbMl0gPSBhKTsKICAgICAgICAgICAgICAgIHZhciBpID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KHIpLAogICAgICAgICAgICAgICAgICAgIG4gPSBuZXcgRXJyb3I7CiAgICAgICAgICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmwoaSwgKF8gPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSwgcikgJiYgKDAgIT09ICh0ID0gZVtyXSkgJiYgKGVbcl0gPSB2b2lkIDApLCB0KSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IF8gJiYgKCJsb2FkIiA9PT0gXy50eXBlID8gIm1pc3NpbmciIDogXy50eXBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBfICYmIF8udGFyZ2V0ICYmIF8udGFyZ2V0LnNyYzsKICAgICAgICAgICAgICAgICAgICAgICAgbi5tZXNzYWdlID0gIkxvYWRpbmcgY2h1bmsgIiArIHIgKyAiIGZhaWxlZC5cbigiICsgYSArICI6ICIgKyBpICsgIikiLCBuLm5hbWUgPSAiQ2h1bmtMb2FkRXJyb3IiLCBuLnR5cGUgPSBhLCBuLnJlcXVlc3QgPSBpLCB0WzFdKG4pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksICJjaHVuay0iICsgciwgcikKICAgICAgICAgICAgfSBlbHNlIGVbcl0gPSAwCiAgICAgICAgfSwgX193ZWJwYWNrX3JlcXVpcmVfXy5PLmogPSByID0+IDAgPT09IGVbcl07CiAgICAgICAgdmFyIHdlYnBhY2tKc29ucENhbGxiYWNrID0gKHIsIF8pID0+IHsKICAgICAgICAgICAgICAgIHZhciB0LCBhLCBbaSwgbiwgY10gPSBfLAogICAgICAgICAgICAgICAgICAgIG8gPSAwOwogICAgICAgICAgICAgICAgaWYgKGkuc29tZSgociA9PiAwICE9PSBlW3JdKSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gbikgX193ZWJwYWNrX3JlcXVpcmVfXy5vKG4sIHQpICYmIChfX3dlYnBhY2tfcmVxdWlyZV9fLm1bdF0gPSBuW3RdKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYykgdmFyIHUgPSBjKF9fd2VicGFja19yZXF1aXJlX18pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHIgJiYgcihfKTsgbyA8IGkubGVuZ3RoOyBvKyspIGEgPSBpW29dLCBfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSwgYSkgJiYgZVthXSAmJiBlW2FdWzBdKCksIGVbYV0gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uTyh1KQogICAgICAgICAgICB9LAogICAgICAgICAgICByID0gc2VsZi53ZWJwYWNrQ2h1bmtlbGVtZW50b3IgPSBzZWxmLndlYnBhY2tDaHVua2VsZW1lbnRvciB8fCBbXTsKICAgICAgICByLmZvckVhY2god2VicGFja0pzb25wQ2FsbGJhY2suYmluZChudWxsLCAwKSksIHIucHVzaCA9IHdlYnBhY2tKc29ucENhbGxiYWNrLmJpbmQobnVsbCwgci5wdXNoLmJpbmQocikpCiAgICB9KSgpCn0pKCk7"}},"time_used":103,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":103,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/themes/hello-elementor/theme.min5b0a.css?ver=2.9.0","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.782Z","timestamp":1785128398782,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/themes/hello-elementor/theme.min5b0a.css?ver=2.9.0 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 2442\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"3b8d-67c3620e-68ecb463ed015862;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 11c6113b6497a4b4ef39ddae0cc336b4-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":15245,"size_decoded":3014,"mime_type":"text/css","magic":"Unicode text, UTF-8 text","md5":"ccc1a31c4fe592a038b03aeb7f41e965","sha1":"e09294147f964b99d5dc0893458c867bbfb9ec0e","sha256":"5ae0276040dadc7f1e2138bd90b6d953a720667b1ac7489efb41c6b22af167f9","sha512":"5d280b46be9bf5dd39f77f234b7a2bfda4de0f39f2bbf9887d76db32520dd73cc39c06a22ec110a8706cc245eef23b0306f59aaeb2a974d8a0ca191ce2271967","ssdeep":"192:AjSdm5SRW2nleFFFIRYLFS+aMAlSVGE0YK+NJJfxe5AesngQFf9T0OthGGCKiM/R:zkUcFFFI9MzVK+NJigHXyUvBtG+","tlshash":"8c62415ee8f33864061b8006abe90a5d20b4814fc50fcef47addd34a5fce590ab62f59","first_seen":"2026-07-27T03:56:42.468195Z","last_seen":"2026-07-27T05:30:59.795575Z","times_seen":6,"resource_available":false,"data":"QGNoYXJzZXQgIlVURi04IjsKLmNvbW1lbnRzLWFyZWEgYSwKLnBhZ2UtY29udGVudCBhIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lCn0KCi5hbGlnbnJpZ2h0IHsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxcmVtCn0KCi5hbGlnbmxlZnQgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0KfQoKLmFsaWduY2VudGVyIHsKICAgIGNsZWFyOiBib3RoOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bwp9CgouYWxpZ253aWRlIHsKICAgIG1hcmdpbi1sZWZ0OiAtODBweDsKICAgIG1hcmdpbi1yaWdodDogLTgwcHgKfQoKLmFsaWduZnVsbCB7CiAgICBtYXJnaW4tbGVmdDogY2FsYyg1MCUgLSA1MHZ3KTsKICAgIG1hcmdpbi1yaWdodDogY2FsYyg1MCUgLSA1MHZ3KTsKICAgIG1heC13aWR0aDogMTAwdncKfQoKLmFsaWduZnVsbCwKLmFsaWduZnVsbCBpbWcgewogICAgd2lkdGg6IDEwMHZ3Cn0KCi53cC1jYXB0aW9uIHsKICAgIG1hcmdpbi1ibG9jay1lbmQ6IDEuMjVyZW07CiAgICBtYXgtd2lkdGg6IDEwMCUKfQoKLndwLWNhcHRpb24uYWxpZ25sZWZ0IHsKICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwCn0KCi53cC1jYXB0aW9uLmFsaWducmlnaHQgewogICAgbWFyZ2luOiA1cHggMCAyMHB4IDIwcHgKfQoKLndwLWNhcHRpb24gaW1nIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8KfQoKLndwLWNhcHRpb24tdGV4dCB7CiAgICBtYXJnaW46IDAKfQoKLmdhbGxlcnktY2FwdGlvbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogLjgxMjVyZW07CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogLjc1cmVtCn0KCi5wYWdpbmF0aW9uIHsKICAgIG1hcmdpbjogMjBweCBhdXRvCn0KCi5zdGlja3kgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogYmxvY2sKfQoKLmJ5cG9zdGF1dGhvciB7CiAgICBmb250LXNpemU6IGluaGVyaXQKfQoKLmhpZGUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5wb3N0LXBhc3N3b3JkLWZvcm0gcCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQKfQoKLnBvc3QtcGFzc3dvcmQtZm9ybSBbdHlwZT1zdWJtaXRdIHsKICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDNweAp9Cgouc2NyZWVuLXJlYWRlci10ZXh0IHsKICAgIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTsKICAgIGhlaWdodDogMXB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDFweDsKICAgIHdvcmQtd3JhcDogbm9ybWFsICFpbXBvcnRhbnQKfQoKLnNjcmVlbi1yZWFkZXItdGV4dDpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwogICAgY2xpcDogYXV0byAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1jbGlwLXBhdGg6IG5vbmU7CiAgICBjbGlwLXBhdGg6IG5vbmU7CiAgICBjb2xvcjogIzMzMzsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbGVmdDogNXB4OwogICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICAgIHBhZGRpbmc6IDE1cHggMjNweCAxNHB4OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgdG9wOiA1cHg7CiAgICB3aWR0aDogYXV0bzsKICAgIHotaW5kZXg6IDEwMDAwMAp9Cgouc2l0ZS1oZWFkZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6IDFyZW07CiAgICBwYWRkaW5nLWJsb2NrLWVuZDogMXJlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9Cgouc2l0ZS1oZWFkZXIgLnNpdGUtbmF2aWdhdGlvbiB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCn0KCi5zaXRlLWhlYWRlciAuc2l0ZS1icmFuZGluZyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCi5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4KfQoKLnNpdGUtaGVhZGVyIC5oZWFkZXItaW5uZXIgLmN1c3RvbS1sb2dvLWxpbmsgewogICAgZGlzcGxheTogYmxvY2sKfQoKLnNpdGUtaGVhZGVyIC5oZWFkZXItaW5uZXIgLnNpdGUtYnJhbmRpbmcgLnNpdGUtZGVzY3JpcHRpb24sCi5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyIC5zaXRlLWJyYW5kaW5nIC5zaXRlLXRpdGxlIHsKICAgIG1hcmdpbjogMAp9Cgouc2l0ZS1oZWFkZXIgLmhlYWRlci1pbm5lciAuc2l0ZS1icmFuZGluZy5zaG93LWxvZ28gLnNpdGUtdGl0bGUsCi5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyIC5zaXRlLWJyYW5kaW5nLnNob3ctdGl0bGUgLnNpdGUtbG9nbyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLnNpdGUtaGVhZGVyOm5vdCguaGVhZGVyLXN0YWNrZWQpIC5oZWFkZXItaW5uZXIgLnNpdGUtYnJhbmRpbmcgewogICAgbWF4LXdpZHRoOiAzMCUKfQoKLnNpdGUtaGVhZGVyOm5vdCguaGVhZGVyLXN0YWNrZWQpIC5oZWFkZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiB7CiAgICBtYXgtd2lkdGg6IDcwJQp9Cgouc2l0ZS1oZWFkZXIuaGVhZGVyLWludmVydGVkIC5oZWFkZXItaW5uZXIgewogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlCn0KCi5zaXRlLWhlYWRlci5oZWFkZXItaW52ZXJ0ZWQgLmhlYWRlci1pbm5lciAuc2l0ZS1icmFuZGluZyB7CiAgICB0ZXh0LWFsaWduOiByaWdodAp9Cgouc2l0ZS1oZWFkZXIuaGVhZGVyLWludmVydGVkIC5oZWFkZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0Cn0KCi5zaXRlLWhlYWRlci5oZWFkZXItc3RhY2tlZCAuaGVhZGVyLWlubmVyIHsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCkBtZWRpYSAobWF4LXdpZHRoOjU3NnB4KSB7CiAgICAuc2l0ZS1oZWFkZXIgLmhlYWRlci1pbm5lcjpub3QoLmhlYWRlci1zdGFja2VkKSAuc2l0ZS1icmFuZGluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA4MCUKICAgIH0KfQoKLnNpdGUtZm9vdGVyIHsKICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6IDFyZW07CiAgICBwYWRkaW5nLWJsb2NrLWVuZDogMXJlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9Cgouc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuCn0KCi5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyIC5jdXN0b20tbG9nby1saW5rIHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyIC5zaXRlLW5hdmlnYXRpb24gewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZAp9Cgouc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciAuc2l0ZS1icmFuZGluZyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyCn0KCi5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyIC5zaXRlLWJyYW5kaW5nIC5zaXRlLWRlc2NyaXB0aW9uLAouc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciAuc2l0ZS1icmFuZGluZyAuc2l0ZS10aXRsZSB7CiAgICBtYXJnaW46IDAKfQoKLnNpdGUtZm9vdGVyIC5mb290ZXItaW5uZXIgLnNpdGUtYnJhbmRpbmcuc2hvdy1sb2dvIC5zaXRlLXRpdGxlLAouc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciAuc2l0ZS1icmFuZGluZy5zaG93LXRpdGxlIC5zaXRlLWxvZ28gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyIC5jb3B5cmlnaHQgewogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kCn0KCi5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyIC5jb3B5cmlnaHQgcCB7CiAgICBtYXJnaW46IDAKfQoKLnNpdGUtZm9vdGVyLmZvb3Rlci1pbnZlcnRlZCAuZm9vdGVyLWlubmVyIHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZQp9Cgouc2l0ZS1mb290ZXIuZm9vdGVyLWludmVydGVkIC5mb290ZXItaW5uZXIgLnNpdGUtYnJhbmRpbmcgewogICAgdGV4dC1hbGlnbjogcmlnaHQKfQoKLnNpdGUtZm9vdGVyLmZvb3Rlci1pbnZlcnRlZCAuZm9vdGVyLWlubmVyIC5zaXRlLW5hdmlnYXRpb24gewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5zaXRlLWZvb3Rlci5mb290ZXItaGFzLWNvcHlyaWdodCAuZm9vdGVyLWlubmVyIC5zaXRlLW5hdmlnYXRpb24gewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIKfQoKLnNpdGUtZm9vdGVyLmZvb3Rlci1zdGFja2VkIC5mb290ZXItaW5uZXIgewogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLnNpdGUtZm9vdGVyLmZvb3Rlci1zdGFja2VkIC5mb290ZXItaW5uZXIgLnNpdGUtYnJhbmRpbmcgaDQuc2l0ZS10aXRsZSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLnNpdGUtZm9vdGVyLmZvb3Rlci1zdGFja2VkIC5mb290ZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiAubWVudSB7CiAgICBwYWRkaW5nOiAwCn0KCi5zaXRlLWZvb3Rlcjpub3QoLmZvb3Rlci1zdGFja2VkKSAuZm9vdGVyLWlubmVyIC5zaXRlLWJyYW5kaW5nIHsKICAgIG1heC13aWR0aDogMjAlCn0KCi5zaXRlLWZvb3Rlcjpub3QoLmZvb3Rlci1zdGFja2VkKSAuZm9vdGVyLWlubmVyIC5zaXRlLW5hdmlnYXRpb24gewogICAgbWF4LXdpZHRoOiA2MCUKfQoKLnNpdGUtZm9vdGVyOm5vdCguZm9vdGVyLXN0YWNrZWQpIC5mb290ZXItaW5uZXIgLmNvcHlyaWdodCB7CiAgICBtYXgtd2lkdGg6IDIwJQp9CgpAbWVkaWEgKG1heC13aWR0aDo1NzZweCkgewogICAgLnNpdGUtZm9vdGVyOm5vdCguZm9vdGVyLXN0YWNrZWQpIC5mb290ZXItaW5uZXIgLmNvcHlyaWdodCwKICAgIC5zaXRlLWZvb3Rlcjpub3QoLmZvb3Rlci1zdGFja2VkKSAuZm9vdGVyLWlubmVyIC5zaXRlLWJyYW5kaW5nLAogICAgLnNpdGUtZm9vdGVyOm5vdCguZm9vdGVyLXN0YWNrZWQpIC5mb290ZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogbm9uZQogICAgfQogICAgLnNpdGUtZm9vdGVyIC5mb290ZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiB1bC5tZW51IHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcgogICAgfQogICAgLnNpdGUtZm9vdGVyIC5mb290ZXItaW5uZXIgLnNpdGUtbmF2aWdhdGlvbiB1bC5tZW51IGxpIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKICAgIH0KfQoKLnBvc3QgLmVudHJ5LXRpdGxlIGEgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lCn0KCi5wb3N0IC53cC1wb3N0LWltYWdlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICAtby1vYmplY3QtZml0OiBjb3ZlcjsKICAgIG9iamVjdC1maXQ6IGNvdmVyCn0KCkBtZWRpYSAobWF4LXdpZHRoOjk5MXB4KSB7CiAgICAucG9zdCAud3AtcG9zdC1pbWFnZSB7CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHgKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NTc1cHgpIHsKICAgIC5wb3N0IC53cC1wb3N0LWltYWdlIHsKICAgICAgICBtYXgtaGVpZ2h0OiAzMDBweAogICAgfQp9CgojY29tbWVudHMgLmNvbW1lbnQtbGlzdCB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIGZvbnQtc2l6ZTogLjllbQp9CgojY29tbWVudHMgLmNvbW1lbnQsCiNjb21tZW50cyAucGluZ2JhY2sgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCiNjb21tZW50cyAuY29tbWVudCAuY29tbWVudC1ib2R5LAojY29tbWVudHMgLnBpbmdiYWNrIC5jb21tZW50LWJvZHkgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiAzMHB4OwogICAgcGFkZGluZy1ibG9jay1lbmQ6IDMwcHg7CiAgICBwYWRkaW5nLWlubGluZS1zdGFydDogNjBweDsKICAgIHBhZGRpbmctaW5saW5lLWVuZDogMDsKICAgIGJvcmRlci1ibG9jay1lbmQ6IDFweCBzb2xpZCAjY2NjCn0KCiNjb21tZW50cyAuY29tbWVudCAuYXZhdGFyLAojY29tbWVudHMgLnBpbmdiYWNrIC5hdmF0YXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAxMHB4Cn0KCmJvZHkucnRsICNjb21tZW50cyAuY29tbWVudCAuYXZhdGFyLApib2R5LnJ0bCAjY29tbWVudHMgLnBpbmdiYWNrIC5hdmF0YXIsCmh0bWxbZGlyPXJ0bF0gI2NvbW1lbnRzIC5jb21tZW50IC5hdmF0YXIsCmh0bWxbZGlyPXJ0bF0gI2NvbW1lbnRzIC5waW5nYmFjayAuYXZhdGFyIHsKICAgIGxlZnQ6IGF1dG87CiAgICByaWdodDogMAp9CgojY29tbWVudHMgLmNvbW1lbnQtbWV0YSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgbWFyZ2luLWJsb2NrLWVuZDogLjlyZW0KfQoKI2NvbW1lbnRzIC5jb21tZW50LW1ldGFkYXRhLAojY29tbWVudHMgLnJlcGx5IHsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGxpbmUtaGVpZ2h0OiAxCn0KCiNjb21tZW50cyAuY2hpbGRyZW4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAzMHB4Cn0KCiNjb21tZW50cyAuY2hpbGRyZW4gbGk6bGFzdC1jaGlsZCB7CiAgICBwYWRkaW5nLWJsb2NrLWVuZDogMAp9CgojY29tbWVudHMgb2wuY29tbWVudC1saXN0IC5jaGlsZHJlbjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC1zaXplOiAxZW07CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGluZS1oZWlnaHQ6IDEwMCU7CiAgICBjb250ZW50OiAi4oaqIjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNDVweDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogYXV0bwp9Cgpib2R5LnJ0bCAjY29tbWVudHMgb2wuY29tbWVudC1saXN0IC5jaGlsZHJlbjpiZWZvcmUsCmh0bWxbZGlyPXJ0bF0gI2NvbW1lbnRzIG9sLmNvbW1lbnQtbGlzdCAuY2hpbGRyZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICLihqkiOwogICAgbGVmdDogYXV0bzsKICAgIHJpZ2h0OiAwCn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAjY29tbWVudHMgLmNvbW1lbnQtYXV0aG9yLAogICAgI2NvbW1lbnRzIC5jb21tZW50LW1ldGFkYXRhIHsKICAgICAgICBsaW5lLWhlaWdodDogMQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgI2NvbW1lbnRzIC5jb21tZW50IC5jb21tZW50LWJvZHkgewogICAgICAgIHBhZGRpbmc6IDMwcHggMAogICAgfQogICAgI2NvbW1lbnRzIC5jaGlsZHJlbiB7CiAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDIwcHgKICAgIH0KICAgICNjb21tZW50cyAuY29tbWVudCAuYXZhdGFyIHsKICAgICAgICBwb3NpdGlvbjogaW5oZXJpdDsKICAgICAgICBmbG9hdDogbGVmdAogICAgfQogICAgYm9keS5ydGwgI2NvbW1lbnRzIC5jb21tZW50IC5hdmF0YXIsCiAgICBodG1sW2Rpcj1ydGxdICNjb21tZW50cyAuY29tbWVudCAuYXZhdGFyIHsKICAgICAgICBmbG9hdDogcmlnaHQKICAgIH0KfQoKLnNpdGUtaGVhZGVyLmhlYWRlci1pbnZlcnRlZCAuc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXIgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Cn0KCi5zaXRlLWhlYWRlci5oZWFkZXItc3RhY2tlZCAuc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXIgewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBtYXgtd2lkdGg6IDEwMCUKfQoKLnNpdGUtaGVhZGVyLm1lbnUtbGF5b3V0LWRyb3Bkb3duIC5zaXRlLW5hdmlnYXRpb24gewogICAgZGlzcGxheTogbm9uZQp9Cgouc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgZmxleC1ncm93OiAxOwogICAgbWF4LXdpZHRoOiAyMCU7CiAgICBwYWRkaW5nOiA4cHggMTVweAp9Cgouc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXIgLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMjJweDsKICAgIHBhZGRpbmc6IC4yNWVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyOiAwIHNvbGlkOwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDUpOwogICAgY29sb3I6ICM0OTRjNGYKfQoKLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUtaG9sZGVyLmVsZW1lbnRvci1hY3RpdmUgLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUgaTpiZWZvcmUgewogICAgY29udGVudDogIlxlODdmIgp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHsKICAgIGdyaWQtYXJlYTogbmF2LW1lbnU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGZsZXgtZ3JvdzogMQp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHVsLm1lbnUsCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSB1bCB7CiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwCn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwCn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBmbGV4Cn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSBhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogOHB4IDE1cHgKfQoKLnNpdGUtbmF2aWdhdGlvbiB1bC5tZW51IGxpLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gewogICAgcGFkZGluZy1pbmxpbmUtZW5kOiAxNXB4Cn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmFmdGVyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29udGVudDogIuKWviI7CiAgICBmb250LXNpemU6IDEuNWVtOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGNvbG9yOiAjNjY2OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDA7CiAgICB0b3A6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZQp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHVsLm1lbnUgbGkubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpmb2N1cy13aXRoaW4+dWwgewogICAgZGlzcGxheTogYmxvY2sKfQoKLnNpdGUtbmF2aWdhdGlvbiB1bC5tZW51IGxpIHVsIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBkaXNwbGF5OiBub25lOwogICAgbWluLXdpZHRoOiAxNTBweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDI7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAxMDAlCn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB1bCBsaSB7CiAgICBib3JkZXItYmxvY2stZW5kOiAjZWVlIDFweCBzb2xpZAp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHVsLm1lbnUgbGkgdWwgbGk6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItYmxvY2stZW5kOiBub25lCn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB1bCBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIGEgewogICAgZmxleC1ncm93OiAxCn0KCi5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB1bCBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmFmdGVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoLTkwZGVnKQp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHVsLm1lbnUgbGkgdWwgdWwgewogICAgbGVmdDogMTAwJTsKICAgIHRvcDogMAp9Cgouc2l0ZS1uYXZpZ2F0aW9uIHVsLm1lbnUgbGk6aG92ZXI+dWwgewogICAgZGlzcGxheTogYmxvY2sKfQoKZm9vdGVyIC5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB1bCB7CiAgICB0b3A6IGF1dG87CiAgICBib3R0b206IDEwMCUKfQoKZm9vdGVyIC5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBsaSB1bCB1bCB7CiAgICBib3R0b206IDAKfQoKZm9vdGVyIC5zaXRlLW5hdmlnYXRpb24gdWwubWVudSBhIHsKICAgIHBhZGRpbmc6IDVweCAxNXB4Cn0KCi5zaXRlLW5hdmlnYXRpb24tZHJvcGRvd24gewogICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAxMHB4OwogICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAuM3MsIHRyYW5zZm9ybSAuM3M7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3A7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgei1pbmRleDogMTAwMDA7CiAgICB3aWR0aDogMTAwJQp9Cgouc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXI6bm90KC5lbGVtZW50b3ItYWN0aXZlKSsuc2l0ZS1uYXZpZ2F0aW9uLWRyb3Bkb3duIHsKICAgIHRyYW5zZm9ybTogc2NhbGVZKDApOwogICAgbWF4LWhlaWdodDogMAp9Cgouc2l0ZS1uYXZpZ2F0aW9uLXRvZ2dsZS1ob2xkZXIuZWxlbWVudG9yLWFjdGl2ZSsuc2l0ZS1uYXZpZ2F0aW9uLWRyb3Bkb3duIHsKICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpOwogICAgbWF4LWhlaWdodDogMTAwdmgKfQoKLnNpdGUtbmF2aWdhdGlvbi1kcm9wZG93biB1bCB7CiAgICBwYWRkaW5nOiAwCn0KCi5zaXRlLW5hdmlnYXRpb24tZHJvcGRvd24gdWwubWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgICBiYWNrZ3JvdW5kOiAjZmZmCn0KCi5zaXRlLW5hdmlnYXRpb24tZHJvcGRvd24gdWwubWVudSBsaSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5zaXRlLW5hdmlnYXRpb24tZHJvcGRvd24gdWwubWVudSBsaSBhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogMjBweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBjb2xvcjogIzU1NTk1YzsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgLjEwMTk2MDc4NDMpCn0KCi5zaXRlLW5hdmlnYXRpb24tZHJvcGRvd24gdWwubWVudSBsaS5jdXJyZW50LW1lbnUtaXRlbSBhIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogIzU1NTk1Ywp9Cgouc2l0ZS1uYXZpZ2F0aW9uLWRyb3Bkb3duIHVsLm1lbnU+bGkgbGkgewogICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAuM3MsIHRyYW5zZm9ybSAuM3M7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3A7CiAgICB0cmFuc2Zvcm06IHNjYWxlWSgwKTsKICAgIG1heC1oZWlnaHQ6IDAKfQoKLnNpdGUtbmF2aWdhdGlvbi1kcm9wZG93biB1bC5tZW51IGxpLmVsZW1lbnRvci1hY3RpdmU+dWw+bGkgewogICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7CiAgICBtYXgtaGVpZ2h0OiAxMDB2aAp9CgpAbWVkaWEgKG1heC13aWR0aDo1NzZweCkgewogICAgLnNpdGUtaGVhZGVyLm1lbnUtZHJvcGRvd24tbW9iaWxlOm5vdCgubWVudS1sYXlvdXQtZHJvcGRvd24pIC5zaXRlLW5hdmlnYXRpb24gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLnNpdGUtaGVhZGVyLm1lbnUtZHJvcGRvd24tbW9iaWxlOm5vdCgubWVudS1sYXlvdXQtZHJvcGRvd24pIC5zaXRlLW5hdmlnYXRpb24tdG9nZ2xlLWhvbGRlciB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjU3NnB4KSBhbmQgKG1heC13aWR0aDo3NjdweCkgewogICAgLnNpdGUtaGVhZGVyLm1lbnUtZHJvcGRvd24tbW9iaWxlOm5vdCgubWVudS1sYXlvdXQtZHJvcGRvd24pIC5zaXRlLW5hdmlnYXRpb24gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgewogICAgLnNpdGUtaGVhZGVyLm1lbnUtZHJvcGRvd24tdGFibGV0Om5vdCgubWVudS1sYXlvdXQtZHJvcGRvd24pIC5zaXRlLW5hdmlnYXRpb24tdG9nZ2xlLWhvbGRlciB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjk5MnB4KSB7CiAgICAuc2l0ZS1oZWFkZXIubWVudS1kcm9wZG93bi10YWJsZXQ6bm90KC5tZW51LWxheW91dC1kcm9wZG93bikgLnNpdGUtbmF2aWdhdGlvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0KCi5zaXRlLWhlYWRlci5tZW51LWRyb3Bkb3duLW5vbmU6bm90KC5tZW51LWxheW91dC1kcm9wZG93bikgLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUtaG9sZGVyIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9CgoucGFnZS1oZWFkZXIgLmVudHJ5LXRpdGxlLAouc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciwKLnNpdGUtZm9vdGVyOm5vdCguZHluYW1pYy1mb290ZXIpLAouc2l0ZS1oZWFkZXIgLmhlYWRlci1pbm5lciwKLnNpdGUtaGVhZGVyOm5vdCguZHluYW1pYy1oZWFkZXIpLApib2R5Om5vdChbY2xhc3MqPWVsZW1lbnRvci1wYWdlLV0pIC5zaXRlLW1haW4gewogICAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bzsKICAgIG1hcmdpbi1pbmxpbmUtZW5kOiBhdXRvOwogICAgd2lkdGg6IDEwMCUKfQoKQG1lZGlhIChtYXgtd2lkdGg6NTc1cHgpIHsKICAgIC5wYWdlLWhlYWRlciAuZW50cnktdGl0bGUsCiAgICAuc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciwKICAgIC5zaXRlLWZvb3Rlcjpub3QoLmR5bmFtaWMtZm9vdGVyKSwKICAgIC5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyLAogICAgLnNpdGUtaGVhZGVyOm5vdCguZHluYW1pYy1oZWFkZXIpLAogICAgYm9keTpub3QoW2NsYXNzKj1lbGVtZW50b3ItcGFnZS1dKSAuc2l0ZS1tYWluIHsKICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMTBweDsKICAgICAgICBwYWRkaW5nLWlubGluZS1lbmQ6IDEwcHgKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NTc2cHgpIHsKICAgIC5wYWdlLWhlYWRlciAuZW50cnktdGl0bGUsCiAgICAuc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciwKICAgIC5zaXRlLWZvb3Rlcjpub3QoLmR5bmFtaWMtZm9vdGVyKSwKICAgIC5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyLAogICAgLnNpdGUtaGVhZGVyOm5vdCguZHluYW1pYy1oZWFkZXIpLAogICAgYm9keTpub3QoW2NsYXNzKj1lbGVtZW50b3ItcGFnZS1dKSAuc2l0ZS1tYWluIHsKICAgICAgICBtYXgtd2lkdGg6IDUwMHB4CiAgICB9CiAgICAuc2l0ZS1mb290ZXIuZm9vdGVyLWZ1bGwtd2lkdGggLmZvb3Rlci1pbm5lciwKICAgIC5zaXRlLWhlYWRlci5oZWFkZXItZnVsbC13aWR0aCAuaGVhZGVyLWlubmVyIHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5wYWdlLWhlYWRlciAuZW50cnktdGl0bGUsCiAgICAuc2l0ZS1mb290ZXIgLmZvb3Rlci1pbm5lciwKICAgIC5zaXRlLWZvb3Rlcjpub3QoLmR5bmFtaWMtZm9vdGVyKSwKICAgIC5zaXRlLWhlYWRlciAuaGVhZGVyLWlubmVyLAogICAgLnNpdGUtaGVhZGVyOm5vdCguZHluYW1pYy1oZWFkZXIpLAogICAgYm9keTpub3QoW2NsYXNzKj1lbGVtZW50b3ItcGFnZS1dKSAuc2l0ZS1tYWluIHsKICAgICAgICBtYXgtd2lkdGg6IDYwMHB4CiAgICB9CiAgICAuc2l0ZS1mb290ZXIuZm9vdGVyLWZ1bGwtd2lkdGgsCiAgICAuc2l0ZS1oZWFkZXIuaGVhZGVyLWZ1bGwtd2lkdGggewogICAgICAgIG1heC13aWR0aDogMTAwJQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgewogICAgLnBhZ2UtaGVhZGVyIC5lbnRyeS10aXRsZSwKICAgIC5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyLAogICAgLnNpdGUtZm9vdGVyOm5vdCguZHluYW1pYy1mb290ZXIpLAogICAgLnNpdGUtaGVhZGVyIC5oZWFkZXItaW5uZXIsCiAgICAuc2l0ZS1oZWFkZXI6bm90KC5keW5hbWljLWhlYWRlciksCiAgICBib2R5Om5vdChbY2xhc3MqPWVsZW1lbnRvci1wYWdlLV0pIC5zaXRlLW1haW4gewogICAgICAgIG1heC13aWR0aDogODAwcHgKICAgIH0KICAgIC5zaXRlLWZvb3Rlci5mb290ZXItZnVsbC13aWR0aCwKICAgIC5zaXRlLWhlYWRlci5oZWFkZXItZnVsbC13aWR0aCB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEyMDBweCkgewogICAgLnBhZ2UtaGVhZGVyIC5lbnRyeS10aXRsZSwKICAgIC5zaXRlLWZvb3RlciAuZm9vdGVyLWlubmVyLAogICAgLnNpdGUtZm9vdGVyOm5vdCguZHluYW1pYy1mb290ZXIpLAogICAgLnNpdGUtaGVhZGVyIC5oZWFkZXItaW5uZXIsCiAgICAuc2l0ZS1oZWFkZXI6bm90KC5keW5hbWljLWhlYWRlciksCiAgICBib2R5Om5vdChbY2xhc3MqPWVsZW1lbnRvci1wYWdlLV0pIC5zaXRlLW1haW4gewogICAgICAgIG1heC13aWR0aDogMTE0MHB4CiAgICB9CiAgICAuc2l0ZS1mb290ZXIuZm9vdGVyLWZ1bGwtd2lkdGgsCiAgICAuc2l0ZS1oZWFkZXIuaGVhZGVyLWZ1bGwtd2lkdGggewogICAgICAgIG1heC13aWR0aDogMTAwJQogICAgfQp9Cgouc2l0ZS1oZWFkZXIrLmVsZW1lbnRvciB7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gMzIwcHgpCn0="}},"time_used":94,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":94,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/code.jquery.com/jquery-3.6.4.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.807Z","timestamp":1785128398807,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /code.jquery.com/jquery-3.6.4.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/html\r\ncontent-length: 1626\r\nlast-modified: Tue, 22 Apr 2025 07:41:12 GMT\r\netag: \"119f-68074818-ac81b894658a37a5;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: f6e61d08985910673fd99495f3fbef1f-srv-edge3\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Bootstrap:3.3.7","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]}],"data":{"size":4511,"size_decoded":1979,"mime_type":"text/html","magic":"HTML document, ASCII text, with very long lines (371)","md5":"b16e9097fc7d3af8ebfcfce7aba0a42d","sha1":"2af3c8408b8445fe81d9a7c8d7cc8e8a05bf80f5","sha256":"e7db95c97a5d45787cc3e40cbcb93b748fefc65bc14e162c746e37f979861729","sha512":"53a7a2c276fbc5159231c162eb863504448515f1a078832b81f1bffeedb1c82932810b66748fd4111d1b8fb866622a5cc63e79e497227b611c90886ba45d3f3b","ssdeep":"96:tr+ulojsBwJG8YqVcqHL/GSrrLc1VhrJuzeK:tyoasBwJG8nVjaSeVhrJgeK","tlshash":"0891f88f25f381452603c99037f9b61499554007f685eca8bdee9228cfc4b8a41e3bdc","first_seen":"2025-04-22T08:45:29.599713Z","last_seen":"2026-07-27T17:20:09.20559Z","times_seen":37827,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuLXVzIgogICAgcHJlZml4PSJjb250ZW50OiBodHRwOi8vcHVybC5vcmcvcnNzLzEuMC9tb2R1bGVzL2NvbnRlbnQvIGRjOiBodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIGZvYWY6IGh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvIG9nOiBodHRwOi8vb2dwLm1lL25zIyByZGZzOiBodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1zY2hlbWEjIHNpb2M6IGh0dHA6Ly9yZGZzLm9yZy9zaW9jL25zIyBzaW9jdDogaHR0cDovL3JkZnMub3JnL3Npb2MvdHlwZXMjIHNrb3M6IGh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDIvc2tvcy9jb3JlIyB4c2Q6IGh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIyI+Cgo8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgQGNoYXJzZXQgIlVURi04IjsKCiAgICAgICAgW25nXDpjbG9ha10sCiAgICAgICAgW25nLWNsb2FrXSwKICAgICAgICBbZGF0YS1uZy1jbG9ha10sCiAgICAgICAgW3gtbmctY2xvYWtdLAogICAgICAgIC5uZy1jbG9haywKICAgICAgICAueC1uZy1jbG9haywKICAgICAgICAubmctaGlkZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSkgewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBuZ1w6Zm9ybSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLm5nLWFuaW1hdGUtc2hpbSB7CiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5uZy1hbmNob3IgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPHRpdGxlPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iT29wcywgbG9va3MgbGlrZSB0aGUgcGFnZSBpcyBsb3N0LiI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMy43L2Nzcy9ib290c3RyYXAubWluLmNzcyI+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9RE0rU2FuczozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0iIgogICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLTlRNkgwUUVUUkYmYW1wO2N4PWMmYW1wO19zbGM9MSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGFzeW5jPSIiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICAgICAgKGZ1bmN0aW9uIChpLCBzLCBvLCBnLCByLCBhLCBtKSB7CiAgICAgICAgICAgIGlbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddID0gcjsgaVtyXSA9IGlbcl0gfHwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgKGlbcl0ucSA9IGlbcl0ucSB8fCBbXSkucHVzaChhcmd1bWVudHMpCiAgICAgICAgICAgIH0sIGlbcl0ubCA9IDEgKiBuZXcgRGF0ZSgpOyBhID0gcy5jcmVhdGVFbGVtZW50KG8pLAogICAgICAgICAgICAgICAgbSA9IHMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07IGEuYXN5bmMgPSAxOyBhLnNyYyA9IGc7IG0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgbSkKICAgICAgICB9KSh3aW5kb3csIGRvY3VtZW50LCAnc2NyaXB0JywgJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsICdnYScpOwoKICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTI2NTc1OTg5LTQ2JywgJ2F1dG8nKTsKICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOwoKICAgIDwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxpZnJhbWUgYWxsb3c9ImpvaW4tYWQtaW50ZXJlc3QtZ3JvdXAiIGRhdGEtdGFnZ2luZy1pZD0iRy05UTZIMFFFVFJGIiBkYXRhLWxvYWQtdGltZT0iMTc0NDcwOTQ2NDA5MyIgaGVpZ2h0PSIwIgogICAgICAgIHdpZHRoPSIwIgogICAgICAgIHNyYz0iaHR0cHM6Ly90ZC5kb3VibGVjbGljay5uZXQvdGQvZ2EvcnVsP3RpZD1HLTlRNkgwUUVUUkYmYW1wO2dhY2lkPTE2Njk1ODM0ODYuMTc0NDcwOTQ2MyZhbXA7Z3RtPTQ1amU1NGIwdjkxMjU5NTkxMTJ6YTIwMCZhbXA7ZG1hPTEmYW1wO2RtYV9jcHM9c3lwaGFtbyZhbXA7Z2NkPTEzbDNsUGwybDJsMSZhbXA7bnBhPTAmYW1wO3BzY2RsPW5vYXBpJmFtcDthaXA9MSZhbXA7ZmxlZGdlPTEmYW1wO2ZybT0wJmFtcDt0YWdfZXhwPTEwMjUwOTY4M34xMDI4MDMyNzl+MTAyODEzMTA5fjEwMjg4NzgwMH4xMDI5MjYwNjJ+MTAzMDIxODMwfjEwMzAyNzAxNn4xMDMwNTE5NTN+MTAzMDU1NDY1fjEwMzA3Nzk1MCZhbXA7ej0yMTA4NTA0Mzg5IgogICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lOyB2aXNpYmlsaXR5OiBoaWRkZW47Ij4KICAgIDwvaWZyYW1lPgogICAgPGRpdiBjbGFzcz0icGFnZS1ub3QtZm91bmQiPgogICAgICAgIDxpbWcgY2xhc3M9ImltYWdlIiBhbHQ9IlBhZ2UgTm90IEZvdW5kIiBzcmM9Ii9odGRvY3NfZXJyb3IvcGFnZV9ub3RfZm91bmQuc3ZnIiAvPgogICAgICAgIDxoMSBjbGFzcz0idGl0bGUiPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvaDE+CiAgICAgICAgPHAgY2xhc3M9InRleHQiPgogICAgICAgICAgICBTb3JyeSwgdGhlIHBhZ2UgeW91IGFyZSBsb29raW5nIGZvciBjb3VsZCBub3QgYmUgZm91bmQuIEl0J3MganVzdCBhbgogICAgICAgICAgICBhY2NpZGVudCB0aGF0IHdhcyBub3QgaW50ZW50aW9uYWwuCiAgICAgICAgPC9wPgogICAgPC9kaXY+Cgo8L2JvZHk+CjxzdHlsZT4KICAgIGJvZHkgewogICAgICAgIGNvbG9yOiAjMWQxZTIwOwogICAgICAgIGJhY2tncm91bmQ6ICNmNGY1ZmY7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LWZhbWlseTogIkRNIFNhbnMiLCAiUm9ib3RvIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICAgIH0KCiAgICAucGFnZS1ub3QtZm91bmQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwoKICAgICAgICBpbWcgewogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2UgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7CiAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICB9CgogICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIH0KCiAgICAgICAgLnRleHQgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1heC13aWR0aDogNjUwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgICAgIGNvbG9yOiAjNkQ3MDgxOwogICAgICAgIH0KCgogICAgfQo8L3N0eWxlPgoKPC9odG1sPgo="}},"time_used":99,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":99,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/2023/12/design.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.853Z","timestamp":1785128398853,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/2023/12/design.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 1308\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 36cdfb9a17e5680b9887210b3d1295a0-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.019\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":1308,"size_decoded":1630,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"7174c8f3a68399e0ae00a4c361fa7b3a","sha1":"38859ec29a2005a7a21a2c32e722f58ab2b5ee7c","sha256":"131f87d3298f26aa89da647e9d63ace92c3f7eb0c6a59ab2ffe3d390082002f9","sha512":"5098a301fba540445f27eaad3b5766e4b0cc7d61596619590361e85c2f089336d51179abbb3e337b598e8c98ba3efce29c0e1c4f96938864227a35a2cd97ab4c","ssdeep":"","tlshash":"9921ea07d7b61cd2d4362a7f690e132c4a5c0cc4797cb8a399ae0f793e4dc60145664c","first_seen":"2026-07-27T03:56:42.562539Z","last_seen":"2026-07-27T05:01:06.156162Z","times_seen":3,"resource_available":false,"data":"UklGRhQFAABXRUJQVlA4WAoAAAAYAAAAiQAAHwAAQUxQSKsBAAABkFZtW94wkYCD4aQ4SRwUB62DzkHmoBKQEAfDQePgufcBJG8D/yOCgdtGirq8R83C3b1hOgz3qdvwfUCPG0VeZsCFYYpF0aqN1I+uBvTAbZA2Iti0Sjz7kR3wYVMG9n50LeBNEhqiGcC6/lYArUO0C1kAHfwvPq5/ORA2wAXxP9z71wJIEM+P0AZFJfnuy62QdBLQhYSEykF6zz333FI50AXkezneQ68PlafqAXkNJ7zH6L/v4cRb4bVTp5Ixr7cW2SMLUKNSnZrjj4PXcYbsLvHQBmxxQYP1dzFSLqYDP7QrSrNrKALEqzw0AFWPs45o0+LckgpDOpEKY7EnLanGkioHqjlVAvp7puWpZSA/juY0Q/YXeGgGHzOq6BqI/wGfLcCw5vLqRth/njjFx+gu89AGrCp1/+d1DLi8oY5KwXV8q/lNdbkB0CcotPXVcxZQyAYYK2PzAH/x1aQvhtfuR0XfCF/enaLtvvCTMED4JVkBg5AIY/yhCSvgDuRpiLDLDPhUV20jIGbAgOTHUBBYARPb1E+4GjBqHkV3zIAOP4qc7IBx6id8HXACAFZQOCCAAgAAUBIAnQEqigAgAD5RJI5FI6IhE5wGADgFBLYB2A6y1H/QNOh47xAe0PbL8j8v04v/2f3Ve4D+AewD7K/cA/TL/VdQDzAfp9+wHv/+gD0AP6L/efVA9QD0APNL/2X7MfAN+4H7d+191AH/zyQC5Lg4OB9XK8v6dioZcrdQC4cdh4bKeMaTYMWWV0KZb215SSEXSbWp1OZwP+U3NUAA/v88VMGf4/V7NmCuyQurxrPZtc9fywQ/7OInaO1HpVw3clBOBmsOGd4oy+cf2nfhf2LBb8/qnodMUpUvsy8BY+4ac6/2GzGeMuZ/DHncFvJdxEWmpVf9SigmZSZtJLG39i3gC//OS0s8mLhKjj2ez5tXjtcf+0CTxdq5p0BHwyANjAjXj//0AZHpK8FOG0zgonI/hZXImZn1xbHvDlu/+i6bYwr9U56Pu6HXDNKI+Apu+Gy48ofNEGcNa/+oLlIOvdONtCBcmaw9/1cePUlBPUXeDzuZHGJMvz//z6d//szFow9MR1oKpfkXan39CkeKF4Xd/yaLtTplfpZzGv5DQn/VRSKoOjofGibHUV2z6I6NMkA4rp977K3Xhq4V7ACN+iHqEGFL7IUyWre5rvGVP50EkGsr3HQR8qkZP4LcQg+XFl8O5DH7zfqCf8oWudE3lV3ZJE2i3J0JHlVngTzQYhOJ31hxstxylwevFjYZ3RuuMDHMJIgxRqo0nas5vAcnFAzatfsLWKHY9UY/SruSxK/CNlDv/p++ns8mG/4Q3E1S3h6jnmM9tQQD8pV/pM7aRFo5LPI6wJ3/2lIPHDf/zRZ//YkZjceC3EIPlxZWhetCkYVoH9rlrCpykoMp/0VPK4AAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAIoAAAADoAQAAQAAACAAAAAAAAAA"}},"time_used":109,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":109,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment-epaycore.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.877Z","timestamp":1785128398877,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment-epaycore.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 1236\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 1029c3a2d777119b29b0cc5bcaec78f2-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":1236,"size_decoded":1558,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"fdf727e04156c10bc0d08d6bdcda04ae","sha1":"524d651bce4757cf6a720fefc4b29d11686559ff","sha256":"35f0852a97e1a4316323bf848ed3df19b2c803bdc998c21b77be4a11910ed27e","sha512":"608ac5094fe135cb3900bbb7d9824ac50a3ac14ede84f5497d4b639d00273e67fff739a306a614529817dfae1ea50515c2ea6103fd04dfa64057a2b3f5fb9a53","ssdeep":"","tlshash":"a121d7a9f9900f69c9f7b93e8e87e38c4478ba0a2160ca476f00381d0f974417da94d0","first_seen":"2026-07-27T03:56:42.467312Z","last_seen":"2026-07-27T05:01:06.101429Z","times_seen":3,"resource_available":false,"data":"UklGRswEAABXRUJQVlA4WAoAAAAYAAAAmgAAMgAAQUxQSMsBAAABkKPtkyJ1g0PkfgSHG7hrCBfoC6AhB3CncQidSCfF9QA8fQX+7lJIddX0SkUEEcHAbSNFmWNsd+bwCSBaeHLFuzsyOodW93cXB2tTpCGm8eAvWPF1o0IUKq6Aic0COej5A2w8tQpBzDQEiX9KBoYhYHRLQBcE5UdJ9JP7AQLHQ1zUMw8OoYKjLWG+E7VYeljJ/+3CY6wDIeh8S5kJJ33gFJVO1OL9nJQptIEOI6dujAcqDYpajLLzptF+tUibwZnUoFGjobxZSVQGjG3CjcTfbtwGqx7FDRRVU8ijepNQSx+DkFaLMK+SKBMuFIIb3zi5gBrZ0IuRSY1ShFOBtmMBpMdWCYwJFyrBMVIpFCGmlkAT15pdWT4yy6HArhyEz5lwoNOVHApNQ3qpJcyhyn5bRaHeLGqclDdpKLecicgYUFlneJPn1WK0VcHWJrik+YFmTETOYoVanqGWSp+VOeNZlVKL9tP8Ys2YiLDdarmBoUvCJwrfR2q4ivYwjIlIuZ8qyxeHh5wZq6aZNOKD8fdTTZoI71Mo1BGoNCL42R1qQ/jmHTVvPOFAR817omRv15J9k0j2JSfZ969kfw0E+9ci2B8q0X45vktFsgAAVlA4IBgCAADwDwCdASqbADMAPlEmj0UjoiEU2gUAOAUEoIcAGZdILzD8Y+GnMd+kr8ztDf9p9FX+gdID9Yv8V/JfQA7AD9jOsA/if+x9gD9K/R8/Vr4DP2U/aX2af/kTeQt6D/blemvIp0ygSdhHxaBaz4JgvZXoSgJzWsr/n6oorPFo9BDxfiJsCahZFJQAAP4xSMRF3///dbv2t37W7/C4ABLSTKSkZ1e/4H8UGq7PA1NxeNyxfjFbNi9i/rnw7MSP0hwI0ztH/f/YgNkiH8JTQg7gBfAME9/9R2p7jQ61m71TsJDWVio8BKWbxVT/pH0r/n9/+RaQJEcQk6l8tdAA3YvT8cEess6p9ByS9jy06b7s08G+xPNI+zv91RVPmil2CGAA2T/eLDT0c/++vu9/49wvUanb3oYwbDqT1S+FJ7Dv+18ub+0/YhAYTX37XDYC4ZHXjC8UeZDMW4viL+eiywAm6qc8iP+Xq72h977W52on/6QReOVNRI9OI8/X7tiEuXTmie7fRov2M+eZonUNKl6Z3Qyl4GHwdK20Hga/ElyZ7Wm8g2tNi5KtqmVngsipvFqn4jgCaz0EMv/JbC3BlRoCI4XDdz3YqA+bv/JtPpILkW+DiYI/O2bH2HpD8notPlw6G1m5f95DRw6qen2RzV4LqcrjcQemmH4OPA4rHLR7Va46PRrFpPAAIbxKECjdRtvuJSvyhypQAAAAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAJsAAAADoAQAAQAAADMAAAAAAAAA"}},"time_used":85,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":85,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/2023/12/bg-unlock-the-world.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.148Z","timestamp":1785128399148,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/2023/12/bg-unlock-the-world.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/post-95fea.css?ver=1706574923\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\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\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: image/webp\r\ncontent-length: 3056\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 7ce1181083725858d311181d3bc57e28-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":3056,"size_decoded":3378,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"4acd548a3a91bed876bc75bf499d7d61","sha1":"b04d13637a5a56abe1756d96e08319d697a456b1","sha256":"e9de1af54fd5a50d179b0df1ad8888ce0d1bd43d64883cf1cd3c3ea38249dcb2","sha512":"b1a28a6bf7018aa2d3f806d6457d6ee09f006f881dcca1cf95e1dbb6742fb058f24813be25d5b4aba16e9f5c54b4702cee31c8c9d188f80b962b07105283c712","ssdeep":"","tlshash":"4951f82d96b62016e7bee3b8769453fb202d038f5138d6cf4246293e480310d9f7e8ad","first_seen":"2026-07-27T03:56:42.512293Z","last_seen":"2026-07-27T05:01:06.124989Z","times_seen":3,"resource_available":false,"data":"UklGRugLAABXRUJQVlA4WAoAAAAIAAAAPwYAiAIAVlA4IAgLAAAwHwGdASpABokCPlEmkEcjoaGhIDDYOHAKCWlu7mG8AxQWH/hPy119GAc/028sfPrfJ8S+yP8J//+b+gK//wACYheT/Tp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOm+Y6nyf6dOnTp06dOnTp06dOnRxwFK7b4zT6dOnTp06dOnTp06dOnTp036NNvNkGWF13Is4095P9OnRzbNFQ6ANf9FWZyXrPzL3GnvJ/p06dOnTp06dHHAUiG3k6yB5EyatLbBXuNPeT/Tp06dOnTp06dOm+sxU0bMwaJjoq7Xazp06dOjkR0RLcQAoo+Sm09OnTp06dOnTp06dOnTo41YCG3k60m7Tv+nKyFK5PPp06dOnTp06dOnTp06dOjkh7hlvphNPfyPKCHnMvcae6Dul1puKfc5NhLKabT06dOnTp06dOnTp06dN9ZNmwsh+4oIFKaGdnQtNJ06dOnTp06dOnTp06dOnaRrtHMbuODvp06dOnTfU/yIgnWZBSudvDqnAySgQD3k/06dOnTp06dOnR3IP56MGO5pDGiQIblzJD4nl7jT3k/06dOnTp06dOnTp06dOnTp06b6vWo36hRVnt/YV1Nk/KTaQlAPeT/Tp06dOnTp06b9IVCopR8HLF2J7WJq63CMkem0pVIENy5kh8Ty9xp7yf6dOnTp06dOnTp06dOnTp06dOoeShErGxAonukJk9DaQfKLpScqJrwHvJ/p06dOnTp06dHO0KuERtA7gurLizKqMSLQ8EnyS9FL3k/06dOnTp06dOnTp06dOnTp06dOnTp06b6t4mh1W4+VdwE+s8eAexzL3GnvJ/p06dOnTGhSXQ28M7gdtREivJ/p06dOnTp06dOnTp06dOnTp06dOnTp06dN9Su3GGWRtlrA+WDUY/06dOnTp06dOnTpvrdGvL3GnvJ/p06dOnTp06dOnTp06dOnTp06dOnTpvn3xFZr/Cr7fDzmXuNPeT/Tp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06ij/DzmXuNPeT/Tp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06O5Ca6CTD3k/06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnDxT5P9HcHswVZayBHBTYRlHMj/DzmXuNPeT/Tp06dOnTp06OXp0M77JTyu53JzL3GnvJ/p06dOnTp06dOnTp031PT39HKSsXLDLI3NJ/FlEPZg4bvL9kJZed6hAmNzlfL3GnvJ/p06dOnTp06dOjnaE/NcY2CxWcwfsjRPhq6OCe4095P9OnTp06dOnTp06dOnTfU9POdXnoAUiq6OvM6zfU8JueInEwxpM0b4i+QrTms6dOnTp06dOnTp06dOm+sxVHUIaxZWjAAUUfEaCy2dugeLMriCTp06dOnTp06dOnTp06dOnTpvq29XH/ZGGrNN2DzjWy1+gwrALZQ1inaFEZs8jb506dOnTp06dOnTp06dOm+ppALpPPhK+3rXod6QJbwsJqQXQ468POZe4095P9OnTp06dOnTp06OUIoe8mp7o/YZho61fA7QoU7KDTFbKr5e4095P9OnTp06dOnTfPaxmZWQHqPgusMS+dQis0g2zIIsTMcPUoB7yf6dOnTp06dOnTp06dOnTp06dOoeQCQ/OnUV0H0SthzP/h5zL3GnvJ/p06dOnTp06OVP5TF8dkTWQ1iBhkA4epQD3k/06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp03z2hQAM+N+oqvl7jT3k/06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp0cAAD+/sjN/VtoJiN9wGOhgADt1l1DTISuMYbOwr2EVz+VK/LBQDO2EVqbO/8Ga7vVZAkLXFq7OBRHKXi1X9Fecx12uG04BfMNHFBRP44XUruMGV8QbECY8CxYHeWO4OBsfEApfPEpEJwgqKodeCeizGC6Bajsecgdma8b5X35AgJvps4vr2Ay3WeI+F+8H8+8b4/gCik5a5n9Okl14u6QIxJXMOwvoVWhf9NAwIFpi7WBaJUzql2t/n9lhtNRvDAPUTooX+hMUCC7ZV03EWDSlyHSthpTWEUZq5BeVdZozDjGU4uMVwIEaBvFC0TsSWTrNX/Wadr4EGudxG3hwqOhtzRtMgAEnNScmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE7owHmsAAOUohUvq4IBUCRnVaTOE4RFrGVb5roEqWcD2AuLgka9awMgMcDMJCoWPyojCALrAlo5xlZBHPdFj4yPpAI08CrGODbAHr8MC8dRBBpV9zjgzb73gnmom/OAxBgUEF1e25KCqs3HfhBjgImJK42xslZQKx4XG/cwDRdD20RB/Zo5cUEcg+Rxwo9nH+BJzAVx9dmxmphAD5LQI0tWXIsJCb1I8ZpwIBJ441F5zcbY2SIBBX9assxUAAkRnXQAAAAAAAAARVhJRroAAABFeGlmAABJSSoACAAAAAYAEgEDAAEAAAABAAAAGgEFAAEAAABWAAAAGwEFAAEAAABeAAAAKAEDAAEAAAACAAAAEwIDAAEAAAABAAAAaYcEAAEAAABmAAAAAAAAAEgAAAABAAAASAAAAAEAAAAGAACQBwAEAAAAMDIxMAGRBwAEAAAAAQIDAACgBwAEAAAAMDEwMAGgAwABAAAA//8AAAKgBAABAAAAQAYAAAOgBAABAAAAiQIAAAAAAAA="}},"time_used":45,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":45,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/lib/swiper/v8/css/swiper.min94a4.css?ver=8.4.5","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.766Z","timestamp":1785128398766,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/elementor/assets/lib/swiper/v8/css/swiper.min94a4.css?ver=8.4.5 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 4369\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"49ec-67c3620e-364a1a03c3977fc7;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: e15cd7b3696d4f60d6e7b1cfe3c9cb68-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":18924,"size_decoded":4941,"mime_type":"text/css","magic":"ASCII text, with very long lines (2242)","md5":"1bc43474d6bb2e70ed716c5673c30868","sha1":"3fba6d1fec06213721d13d317676226676717cc5","sha256":"9e70b866b325754f8887a33db953e10824a2e802810ee3418485535cfeb4636d","sha512":"18b69e9a02d945eb2de069aef8352a32be89106779a34bcd15fe89ba0396b5d5806c489dffb44164466caaf1237ef248a02549f6d2af59014a9a249596af485d","ssdeep":"192:IbKmUJbiKnej2wq573kqicKY7JaJAXmxb/oJniIwf0/+Loq/4okl1HKHTpG+6YAL:IjUbeYxicKYA9hiC/QF8FisDSyD/O","tlshash":"6682039413721c53561a4e6a0b764774eaa444c30b47cc39b2c1ae88ffba4fc335faa5","first_seen":"2025-03-23T07:25:25.070595Z","last_seen":"2026-07-27T05:30:59.805741Z","times_seen":53,"resource_available":false,"data":"LyoqCiAqIFN3aXBlciA4LjQuNQogKiBNb3N0IG1vZGVybiBtb2JpbGUgdG91Y2ggc2xpZGVyIGFuZCBmcmFtZXdvcmsgd2l0aCBoYXJkd2FyZSBhY2NlbGVyYXRlZCB0cmFuc2l0aW9ucwogKiBodHRwczovL3N3aXBlcmpzLmNvbQogKgogKiBDb3B5cmlnaHQgMjAxNC0yMDIyIFZsYWRpbWlyIEtoYXJsYW1waWRpCiAqCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZQogKgogKiBSZWxlYXNlZCBvbjogTm92ZW1iZXIgMjEsIDIwMjIKICovCgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiBzd2lwZXItaWNvbnM7CiAgICBzcmM6IHVybCgnZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsIGQwOUdSZ0FCQUFBQUFBWmdBQkFBQUFBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCR1JsUk5BQUFHUkFBQUFCb0FBQUFjaTZxSGtVZEVSVVlBQUFXZ0FBQUFJd0FBQUNRQVlBQlhSMUJQVXdBQUJoUUFBQUF1QUFBQU51QVk3K3hIVTFWQ0FBQUZ4QUFBQUZBQUFBQm0yZlBjelU5VEx6SUFBQUhjQUFBQVNnQUFBR0JQOVY1UlkyMWhjQUFBQWtRQUFBQ0lBQUFCWXQ2RjBjQmpkblFnQUFBQ3pBQUFBQVFBQUFBRUFCRUJSR2RoYzNBQUFBV1lBQUFBQ0FBQUFBai8vd0FEWjJ4NVpnQUFBeXdBQUFETUFBQUQyTUh0cnlWb1pXRmtBQUFCYkFBQUFEQUFBQUEyRTIrZW9XaG9aV0VBQUFHY0FBQUFId0FBQUNRQzlnRHphRzEwZUFBQUFpZ0FBQUFaQUFBQXJnSmtBQkZzYjJOaEFBQUMwQUFBQUZvQUFBQmFGUUFVR0cxaGVIQUFBQUc4QUFBQUh3QUFBQ0FBY0FCQWJtRnRaUUFBQS9nQUFBRTVBQUFDWHZGZEJ3bHdiM04wQUFBRk5BQUFBR0lBQUFDRTVzNzRoWGphWTJCa1lHQUFZcGY1SHUvaitXMitNbkF6TVlEQXphWDZRakQ2LzQvL0J4ajVHQThBdVJ3TVlHa0FQeXdMMTNqYVkyQmtZR0E4OFA4QWd4NGorLzhmUURZZkExQUVCV2dEQUlCMkJPb0FlTnBqWUdSZ1lOQmg0R2RnWWdBQkVNbklBQkp6WU5BRENRQUFDV2dBc1FCNDJtTmdZZnpDT0lHQmxZR0IwWWN4allHQndSMUtmMldRWkdoaFlHQmlZR1ZtZ0FGR0JpUVFrT2Fhd3REQW9NQlF4WGpnL3dFR1BjWUREQTR3TlVBMkNDZ3dzQUFBTzRFTDZnQUFlTnBqMk0wZ3lBQUNxeGdHTldCa1oyRDQvd01BK3hrRGRnQUFBSGphWTJCZ1lHYUFZQmtHUmdZUWlBSHlHTUY4RmdZSElNM0R3TUhBQkdRck1PZ3lXRExFTTFUOS93OFVCZkVNZ0x6RS8vLy9QLzUvL2YvVi94dityNGVhQUFlTWJBeHdJVVltSU1IRWdLWUFZalVjc0RBd3NMS3hjM0J5Y2ZQdzhqRVFBL2daQkFTRmhFVkV4Y1FsSktXa1pXVGw1QlVVbFpSVlZOWFVOVFFaQmdNQUFNUitFK2dBRVFGRUFBQUFLZ0FxQUNvQU5BQStBRWdBVWdCY0FHWUFjQUI2QUlRQWpnQ1lBS0lBckFDMkFNQUF5Z0RVQU40QTZBRHlBUHdCQmdFUUFSb0JKQUV1QVRnQlFnRk1BVllCWUFGcUFYUUJmZ0dJQVpJQm5BR21BYklCemdIc0FBQjQydTJOTVE2Q1VBeUdXNTY4eDlBbmVZWWdtNE1KYmhLRmFFeElPQVZYOEFwZXdTdDRCaWM0QWZlQWlkM1ZPQml4RHhmUFlFemE1TytYZmkwNFlBRGdnaVVJVUxDdUVKSzhWaE80YlN2cGRua3RISTVRQ1l0ZGkyc2w4Wm5YYUhscVVyTkt6ZEtjVDhjamxxK3J3WlN2SVZjek5pZXpzZm5QL3V6bm1mUEZCTk9ETTJLN01UUTQ1WUVBWnFHUDgxQW1HR2NGM2lQcU9vcDByMVNQVGFUYlZrZlVlNEhYajk3d1lFK3lOd1dZeHdXdTR2MXVnV0hnbzNTMVhkWkVWcVdNN0VUMGNmbkxHeFdma2dSNDJvMlB2V3JETUJTRmovSUhMYUYwektqUmdkaVZNd1NjTlJBb1dVb0g3OFkyaWNCL3lJWTA5QW42QUgyQmR1L1VCK3l4b3BZc2hRaUV2bnZ1MGRVUmdEdDhRZUM4UER3N0ZwamkzZkVBNHovUEVKNllPQjVoS2g0ZGozRXZYaHhQcUgvU0tVWTNySjdzclo0RlpuaDFQTUF0UGh3UDZmbDJQTUpNUERnZVE0clk4WVQ2R3phbzBlQUVBNDA5RHVnZ21UbkZuT2NTQ2lFaUxNZ3hDaVRJNkNxNURaVWQzUW1wMTB2TzBMYUxUZDJjak40Zk91bWxjN2xVWWJTUWNaRmt1dFJHN2c2SktaS3kwUm1kTFk2ODBDRG5FSitVTWtwRkZlMVJON254ZFZwWHJDNGFUdG5hdXJPblllcmNaZzJZVm1MTi9kL2djemZFaW1yRS9mcy9iT3VxMjlabW44dGxvT1JhWGdaZ0dhNzh5TzkvY25YbTJCcGFHdnEyNUR2OVM0RTkrNVNJYzlQcXVwSktoWUZTU2w0NytRY3IxbVlOQUFBQWVOcHR3MGNLd2tBQUFNRFpKQThRN09VSnZrTHNQZlo2ekZWRVJQeThxSGgyWUVSKzNpL0JQODN2SUJMTHlTc29LaW1ycUtxcGEyaHA2K2pxNlJzWUdobWJtSnFaU3kwc3JheHRiTzNzSFJ5ZG5FTVU0dVI2eXg3SkpYdmVQN1dyRHljQUFBQUFBQUgvL3dBQ2VOcGpZR1JnWU9BQlloa2daZ0pDWmdaTkJrWUdMUVp0SUpzRkxNWUFBQXczQUxnQWVOb2xpekVLZ0RBUUJDY2hSYkMyc0ZFUjBZRDZxVlFpQkN2L0g5ZXpHSTZaNVhCQXc4Q0JLL201aVFRVmF1VmJYTG5Pck1adjJvTGRLRmE4UGp1cnUyaEp6R2FibU9TTHpOTXp2dXRwQjNONDJtTmdaR0JnNEdLUVl6QmhZTXhKTE1sajRHQmdBWW93L1AvUEFKSmhMTTZzU29XS2ZXQ0FBd0RBamdiUkFBQjQybU5nWUdCa0FJSWJDWm81SVBybVVuMGhHQTBBTzhFRlRRQUEnKTsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LXN0eWxlOiBub3JtYWwKfQoKOnJvb3QgewogICAgLS1zd2lwZXItdGhlbWUtY29sb3I6ICMwMDdhZmYKfQoKLnN3aXBlciB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIHotaW5kZXg6IDEKfQoKLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXIgewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbgp9Cgouc3dpcGVyLXdyYXBwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICB6LWluZGV4OiAxOwogICAgZGlzcGxheTogZmxleDsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Cn0KCi5zd2lwZXItYW5kcm9pZCAuc3dpcGVyLXNsaWRlLAouc3dpcGVyLXdyYXBwZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwcHgsIDAsIDApCn0KCi5zd2lwZXItcG9pbnRlci1ldmVudHMgewogICAgdG91Y2gtYWN0aW9uOiBwYW4teQp9Cgouc3dpcGVyLXBvaW50ZXItZXZlbnRzLnN3aXBlci12ZXJ0aWNhbCB7CiAgICB0b3VjaC1hY3Rpb246IHBhbi14Cn0KCi5zd2lwZXItc2xpZGUgewogICAgZmxleC1zaHJpbms6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybQp9Cgouc3dpcGVyLXNsaWRlLWludmlzaWJsZS1ibGFuayB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4KfQoKLnN3aXBlci1hdXRvaGVpZ2h0LAouc3dpcGVyLWF1dG9oZWlnaHQgLnN3aXBlci1zbGlkZSB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLnN3aXBlci1hdXRvaGVpZ2h0IC5zd2lwZXItd3JhcHBlciB7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgaGVpZ2h0Cn0KCi5zd2lwZXItYmFja2ZhY2UtaGlkZGVuIC5zd2lwZXItc2xpZGUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW4KfQoKLnN3aXBlci0zZCwKLnN3aXBlci0zZC5zd2lwZXItY3NzLW1vZGUgLnN3aXBlci13cmFwcGVyIHsKICAgIHBlcnNwZWN0aXZlOiAxMjAwcHgKfQoKLnN3aXBlci0zZCAuc3dpcGVyLWN1YmUtc2hhZG93LAouc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUsCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3csCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLAouc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLAouc3dpcGVyLTNkIC5zd2lwZXItd3JhcHBlciB7CiAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkCn0KCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3csCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLAouc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsCi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgei1pbmRleDogMTAKfQoKLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdyB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4xNSkKfQoKLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0IHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDAsIDAsIDAsIC41KSwgcmdiYSgwLCAwLCAwLCAwKSkKfQoKLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgLjUpLCByZ2JhKDAsIDAsIDAsIDApKQp9Cgouc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDAsIDAsIC41KSwgcmdiYSgwLCAwLCAwLCAwKSkKfQoKLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20gewogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAuNSksIHJnYmEoMCwgMCwgMCwgMCkpCn0KCi5zd2lwZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyIHsKICAgIG92ZXJmbG93OiBhdXRvOwogICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lCn0KCi5zd2lwZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5zd2lwZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyPi5zd2lwZXItc2xpZGUgewogICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0IHN0YXJ0Cn0KCi5zd2lwZXItaG9yaXpvbnRhbC5zd2lwZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyIHsKICAgIHNjcm9sbC1zbmFwLXR5cGU6IHggbWFuZGF0b3J5Cn0KCi5zd2lwZXItdmVydGljYWwuc3dpcGVyLWNzcy1tb2RlPi5zd2lwZXItd3JhcHBlciB7CiAgICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeQp9Cgouc3dpcGVyLWNlbnRlcmVkPi5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZmxleC1zaHJpbms6IDA7CiAgICBvcmRlcjogOTk5OQp9Cgouc3dpcGVyLWNlbnRlcmVkLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItd3JhcHBlcj4uc3dpcGVyLXNsaWRlOmZpcnN0LWNoaWxkIHsKICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKQp9Cgouc3dpcGVyLWNlbnRlcmVkLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHsKICAgIGhlaWdodDogMTAwJTsKICAgIG1pbi1oZWlnaHQ6IDFweDsKICAgIHdpZHRoOiB2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyKQp9Cgouc3dpcGVyLWNlbnRlcmVkLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXI+LnN3aXBlci1zbGlkZTpmaXJzdC1jaGlsZCB7CiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKQp9Cgouc3dpcGVyLWNlbnRlcmVkLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXdyYXBwZXI6OmJlZm9yZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1pbi13aWR0aDogMXB4OwogICAgaGVpZ2h0OiB2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyKQp9Cgouc3dpcGVyLWNlbnRlcmVkPi5zd2lwZXItd3JhcHBlcj4uc3dpcGVyLXNsaWRlIHsKICAgIHNjcm9sbC1zbmFwLWFsaWduOiBjZW50ZXIgY2VudGVyCn0KCi5zd2lwZXItdmlydHVhbCAuc3dpcGVyLXNsaWRlIHsKICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApCn0KCi5zd2lwZXItdmlydHVhbC5zd2lwZXItY3NzLW1vZGUgLnN3aXBlci13cmFwcGVyOjphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLXZpcnR1YWwuc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1ob3Jpem9udGFsIC5zd2lwZXItd3JhcHBlcjo6YWZ0ZXIgewogICAgaGVpZ2h0OiAxcHg7CiAgICB3aWR0aDogdmFyKC0tc3dpcGVyLXZpcnR1YWwtc2l6ZSkKfQoKLnN3aXBlci12aXJ0dWFsLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItdmVydGljYWwgLnN3aXBlci13cmFwcGVyOjphZnRlciB7CiAgICB3aWR0aDogMXB4OwogICAgaGVpZ2h0OiB2YXIoLS1zd2lwZXItdmlydHVhbC1zaXplKQp9Cgo6cm9vdCB7CiAgICAtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemU6IDQ0cHgKfQoKLnN3aXBlci1idXR0b24tbmV4dCwKLnN3aXBlci1idXR0b24tcHJldiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIHdpZHRoOiBjYWxjKHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpLyA0NCAqIDI3KTsKICAgIGhlaWdodDogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSk7CiAgICBtYXJnaW4tdG9wOiBjYWxjKDBweCAtICh2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaXplKS8gMikpOwogICAgei1pbmRleDogMTA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgY29sb3I6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKQp9Cgouc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24tZGlzYWJsZWQsCi5zd2lwZXItYnV0dG9uLXByZXYuc3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCB7CiAgICBvcGFjaXR5OiAuMzU7CiAgICBjdXJzb3I6IGF1dG87CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24taGlkZGVuLAouc3dpcGVyLWJ1dHRvbi1wcmV2LnN3aXBlci1idXR0b24taGlkZGVuIHsKICAgIG9wYWNpdHk6IDA7CiAgICBjdXJzb3I6IGF1dG87CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLW5hdmlnYXRpb24tZGlzYWJsZWQgLnN3aXBlci1idXR0b24tbmV4dCwKLnN3aXBlci1uYXZpZ2F0aW9uLWRpc2FibGVkIC5zd2lwZXItYnV0dG9uLXByZXYgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5zd2lwZXItYnV0dG9uLW5leHQ6YWZ0ZXIsCi5zd2lwZXItYnV0dG9uLXByZXY6YWZ0ZXIgewogICAgZm9udC1mYW1pbHk6IHN3aXBlci1pY29uczsKICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSk7CiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgbGV0dGVyLXNwYWNpbmc6IDA7CiAgICBmb250LXZhcmlhbnQ6IGluaXRpYWw7CiAgICBsaW5lLWhlaWdodDogMQp9Cgouc3dpcGVyLWJ1dHRvbi1wcmV2LAouc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0IHsKICAgIGxlZnQ6IDEwcHg7CiAgICByaWdodDogYXV0bwp9Cgouc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyLAouc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICdwcmV2Jwp9Cgouc3dpcGVyLWJ1dHRvbi1uZXh0LAouc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2IHsKICAgIHJpZ2h0OiAxMHB4OwogICAgbGVmdDogYXV0bwp9Cgouc3dpcGVyLWJ1dHRvbi1uZXh0OmFmdGVyLAouc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICduZXh0Jwp9Cgouc3dpcGVyLWJ1dHRvbi1sb2NrIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLnN3aXBlci1wYWdpbmF0aW9uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHRyYW5zaXRpb246IC4zcyBvcGFjaXR5OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgIHotaW5kZXg6IDEwCn0KCi5zd2lwZXItcGFnaW5hdGlvbi5zd2lwZXItcGFnaW5hdGlvbi1oaWRkZW4gewogICAgb3BhY2l0eTogMAp9Cgouc3dpcGVyLXBhZ2luYXRpb24tZGlzYWJsZWQ+LnN3aXBlci1wYWdpbmF0aW9uLAouc3dpcGVyLXBhZ2luYXRpb24uc3dpcGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cywKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbCwKLnN3aXBlci1wYWdpbmF0aW9uLWN1c3RvbSwKLnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uIHsKICAgIGJvdHRvbTogMTBweDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJQp9Cgouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBmb250LXNpemU6IDAKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjMzKTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9Cgouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1tYWluIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1wcmV2IHsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjY2KQp9Cgouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLXByZXYtcHJldiB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC4zMykKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1uZXh0IHsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjY2KQp9Cgouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLW5leHQtbmV4dCB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC4zMykKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7CiAgICB3aWR0aDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXdpZHRoLCB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtc2l6ZSwgOHB4KSk7CiAgICBoZWlnaHQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1oZWlnaHQsIHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1zaXplLCA4cHgpKTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1pbmFjdGl2ZS1jb2xvciwgIzAwMCk7CiAgICBvcGFjaXR5OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaW5hY3RpdmUtb3BhY2l0eSwgLjIpCn0KCmJ1dHRvbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgYm9yZGVyOiBub25lOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICBhcHBlYXJhbmNlOiBub25lCn0KCi5zd2lwZXItcGFnaW5hdGlvbi1jbGlja2FibGUgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldDpvbmx5LWNoaWxkIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9Cgouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZSB7CiAgICBvcGFjaXR5OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtb3BhY2l0eSwgMSk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1jb2xvciwgdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSkKfQoKLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMsCi5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgewogICAgcmlnaHQ6IDEwcHg7CiAgICB0b3A6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAtNTAlLCAwKQp9Cgouc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LAouc3dpcGVyLXZlcnRpY2FsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgbWFyZ2luOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtdmVydGljYWwtZ2FwLCA2cHgpIDA7CiAgICBkaXNwbGF5OiBibG9jawp9Cgouc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMsCi5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIHsKICAgIHRvcDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgd2lkdGg6IDhweAp9Cgouc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCwKLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB0cmFuc2l0aW9uOiAuMnMgdHJhbnNmb3JtLCAuMnMgdG9wCn0KCi5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LAouc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgbWFyZ2luOiAwIHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1ob3Jpem9udGFsLWdhcCwgNHB4KQp9Cgouc3dpcGVyLWhvcml6b250YWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljLAouc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyB7CiAgICBsZWZ0OiA1MCU7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwCn0KCi5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCwKLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7CiAgICB0cmFuc2l0aW9uOiAuMnMgdHJhbnNmb3JtLCAuMnMgbGVmdAp9Cgouc3dpcGVyLWhvcml6b250YWwuc3dpcGVyLXJ0bD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogICAgdHJhbnNpdGlvbjogLjJzIHRyYW5zZm9ybSwgLjJzIHJpZ2h0Cn0KCi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4yNSk7CiAgICBwb3NpdGlvbjogYWJzb2x1dGUKfQoKLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxsIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcAp9Cgouc3dpcGVyLXJ0bCAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLWZpbGwgewogICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wCn0KCi5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIsCi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLAouc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItb3Bwb3NpdGUsCi5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiA0cHg7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwCn0KCi5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItb3Bwb3NpdGUsCi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlLAouc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwsCi5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIHsKICAgIHdpZHRoOiA0cHg7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwCn0KCi5zd2lwZXItcGFnaW5hdGlvbi1sb2NrIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKLnN3aXBlci1zY3JvbGxiYXIgewogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIC1tcy10b3VjaC1hY3Rpb246IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4xKQp9Cgouc3dpcGVyLXNjcm9sbGJhci1kaXNhYmxlZD4uc3dpcGVyLXNjcm9sbGJhciwKLnN3aXBlci1zY3JvbGxiYXIuc3dpcGVyLXNjcm9sbGJhci1kaXNhYmxlZCB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItc2Nyb2xsYmFyLAouc3dpcGVyLXNjcm9sbGJhci5zd2lwZXItc2Nyb2xsYmFyLWhvcml6b250YWwgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMSU7CiAgICBib3R0b206IDNweDsKICAgIHotaW5kZXg6IDUwOwogICAgaGVpZ2h0OiA1cHg7CiAgICB3aWR0aDogOTglCn0KCi5zd2lwZXItc2Nyb2xsYmFyLnN3aXBlci1zY3JvbGxiYXItdmVydGljYWwsCi5zd2lwZXItdmVydGljYWw+LnN3aXBlci1zY3JvbGxiYXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDNweDsKICAgIHRvcDogMSU7CiAgICB6LWluZGV4OiA1MDsKICAgIHdpZHRoOiA1cHg7CiAgICBoZWlnaHQ6IDk4JQp9Cgouc3dpcGVyLXNjcm9sbGJhci1kcmFnIHsKICAgIGhlaWdodDogMTAwJTsKICAgIHdpZHRoOiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuNSk7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgbGVmdDogMDsKICAgIHRvcDogMAp9Cgouc3dpcGVyLXNjcm9sbGJhci1jdXJzb3ItZHJhZyB7CiAgICBjdXJzb3I6IG1vdmUKfQoKLnN3aXBlci1zY3JvbGxiYXItbG9jayB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5zd2lwZXItem9vbS1jb250YWluZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgdGV4dC1hbGlnbjogY2VudGVyCn0KCi5zd2lwZXItem9vbS1jb250YWluZXI+Y2FudmFzLAouc3dpcGVyLXpvb20tY29udGFpbmVyPmltZywKLnN3aXBlci16b29tLWNvbnRhaW5lcj5zdmcgewogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWF4LWhlaWdodDogMTAwJTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW4KfQoKLnN3aXBlci1zbGlkZS16b29tZWQgewogICAgY3Vyc29yOiBtb3ZlCn0KCi5zd2lwZXItbGF6eS1wcmVsb2FkZXIgewogICAgd2lkdGg6IDQycHg7CiAgICBoZWlnaHQ6IDQycHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiA1MCU7CiAgICB0b3A6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtMjFweDsKICAgIG1hcmdpbi10b3A6IC0yMXB4OwogICAgei1pbmRleDogMTA7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCU7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgYm9yZGVyOiA0cHggc29saWQgdmFyKC0tc3dpcGVyLXByZWxvYWRlci1jb2xvciwgdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSk7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudAp9Cgouc3dpcGVyLXdhdGNoLXByb2dyZXNzIC5zd2lwZXItc2xpZGUtdmlzaWJsZSAuc3dpcGVyLWxhenktcHJlbG9hZGVyLAouc3dpcGVyOm5vdCguc3dpcGVyLXdhdGNoLXByb2dyZXNzKSAuc3dpcGVyLWxhenktcHJlbG9hZGVyIHsKICAgIGFuaW1hdGlvbjogc3dpcGVyLXByZWxvYWRlci1zcGluIDFzIGluZmluaXRlIGxpbmVhcgp9Cgouc3dpcGVyLWxhenktcHJlbG9hZGVyLXdoaXRlIHsKICAgIC0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjogI2ZmZgp9Cgouc3dpcGVyLWxhenktcHJlbG9hZGVyLWJsYWNrIHsKICAgIC0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjogIzAwMAp9CgpAa2V5ZnJhbWVzIHN3aXBlci1wcmVsb2FkZXItc3BpbiB7CiAgICAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykKICAgIH0KICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykKICAgIH0KfQoKLnN3aXBlciAuc3dpcGVyLW5vdGlmaWNhdGlvbiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAwOwogICAgdG9wOiAwOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBvcGFjaXR5OiAwOwogICAgei1pbmRleDogLTEwMDAKfQoKLnN3aXBlci1mcmVlLW1vZGU+LnN3aXBlci13cmFwcGVyIHsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICAgIG1hcmdpbjogMCBhdXRvCn0KCi5zd2lwZXItZ3JpZD4uc3dpcGVyLXdyYXBwZXIgewogICAgZmxleC13cmFwOiB3cmFwCn0KCi5zd2lwZXItZ3JpZC1jb2x1bW4+LnN3aXBlci13cmFwcGVyIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4KfQoKLnN3aXBlci1mYWRlLnN3aXBlci1mcmVlLW1vZGUgLnN3aXBlci1zbGlkZSB7CiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQKfQoKLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Cn0KCi5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGUgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlLAouc3dpcGVyLWZhZGUgLnN3aXBlci1zbGlkZS1hY3RpdmUgLnN3aXBlci1zbGlkZS1hY3RpdmUgewogICAgcG9pbnRlci1ldmVudHM6IGF1dG8KfQoKLnN3aXBlci1jdWJlIHsKICAgIG92ZXJmbG93OiB2aXNpYmxlCn0KCi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlIHsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICB6LWluZGV4OiAxOwogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCUKfQoKLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZSB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLWN1YmUuc3dpcGVyLXJ0bCAuc3dpcGVyLXNsaWRlIHsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMAp9Cgouc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUsCi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSB7CiAgICBwb2ludGVyLWV2ZW50czogYXV0bwp9Cgouc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUsCi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLW5leHQsCi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLW5leHQrLnN3aXBlci1zbGlkZSwKLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtcHJldiB7CiAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgIHZpc2liaWxpdHk6IHZpc2libGUKfQoKLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwKLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsCi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwKLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCB7CiAgICB6LWluZGV4OiAwOwogICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW4KfQoKLnN3aXBlci1jdWJlIC5zd2lwZXItY3ViZS1zaGFkb3cgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIGJvdHRvbTogMHB4OwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvcGFjaXR5OiAuNjsKICAgIHotaW5kZXg6IDAKfQoKLnN3aXBlci1jdWJlIC5zd2lwZXItY3ViZS1zaGFkb3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgYmFja2dyb3VuZDogIzAwMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDA7CiAgICByaWdodDogMDsKICAgIGZpbHRlcjogYmx1cig1MHB4KQp9Cgouc3dpcGVyLWZsaXAgewogICAgb3ZlcmZsb3c6IHZpc2libGUKfQoKLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUgewogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgIHotaW5kZXg6IDEKfQoKLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZSB7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9Cgouc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1hY3RpdmUsCi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSB7CiAgICBwb2ludGVyLWV2ZW50czogYXV0bwp9Cgouc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLAouc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCwKLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LAouc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wIHsKICAgIHotaW5kZXg6IDA7CiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbgp9Cgouc3dpcGVyLWNyZWF0aXZlIC5zd2lwZXItc2xpZGUgewogICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBvcGFjaXR5LCBoZWlnaHQKfQoKLnN3aXBlci1jYXJkcyB7CiAgICBvdmVyZmxvdzogdmlzaWJsZQp9Cgouc3dpcGVyLWNhcmRzIC5zd2lwZXItc2xpZGUgewogICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTsKICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgb3ZlcmZsb3c6IGhpZGRlbgp9"}},"time_used":48,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":48,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.mina2f8.js?ver=3.19.1","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.789Z","timestamp":1785128398789,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.mina2f8.js?ver=3.19.1 HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 4268\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 20:43:17 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"579d-67c3620e-c2d3dbae7d6108d9;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 461801\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 171d01c8affc4931527f59234bfc4324-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":22429,"size_decoded":4856,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text","md5":"367bd7a1a69c01509da43a50349e8788","sha1":"18e7ac3fbf31ff1f4cee6f5811844090404f04a6","sha256":"cb734b189032cb314fc8d3d34c1314d64c7a7698acfcba00e52050fdae9adb93","sha512":"c5190f86721797f0adc75f0e7147b1f685b954ad79f1535487f75a54272d8bbc51f17ac22548cfd378e92a02c19ffcda2409d8bc80a3af1aa4ccd9231bb00fb0","ssdeep":"192:bP6z6AN8i4/5VTcJ7QlnV8fPj0Al/+vLxoUi1hoFWYWlZyVL9J79hFmDzULK+Qo5:OZexqpQlVEjjN+viUhu0LKymvv64e","tlshash":"8ea2963ef5104da300815b19646419c57f4ac103bfaeb42a79bc6f9a2f8e42d93bd63d","first_seen":"2023-07-01T15:13:09Z","last_seen":"2026-07-27T10:21:19.624341Z","times_seen":28,"resource_available":true,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMSBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KdmFyIGwsIGE7CmwgPSB0aGlzLCBhID0gZnVuY3Rpb24oKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgbCA9IHt9LAogICAgICAgIGEgPSB7fTsKICAgIHRyeSB7CiAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyAmJiAobCA9IHdpbmRvdyksICJ1bmRlZmluZWQiICE9IHR5cGVvZiBkb2N1bWVudCAmJiAoYSA9IGRvY3VtZW50KQogICAgfSBjYXRjaCAobCkge30KICAgIHZhciBlID0gKGwubmF2aWdhdG9yIHx8IHt9KS51c2VyQWdlbnQsCiAgICAgICAgciA9IHZvaWQgMCA9PT0gZSA/ICIiIDogZSwKICAgICAgICBuID0gbCwKICAgICAgICBvID0gYSwKICAgICAgICB1ID0gKG4uZG9jdW1lbnQsICEhby5kb2N1bWVudEVsZW1lbnQgJiYgISFvLmhlYWQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygby5hZGRFdmVudExpc3RlbmVyICYmIG8uY3JlYXRlRWxlbWVudCwgfnIuaW5kZXhPZigiTVNJRSIpIHx8IHIuaW5kZXhPZigiVHJpZGVudC8iKSwgIl9fX0ZPTlRfQVdFU09NRV9fXyIpLAogICAgICAgIHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiAicHJvZHVjdGlvbiIgPT09IHByb2Nlc3MuZW52Lk5PREVfRU5WCiAgICAgICAgICAgIH0gY2F0Y2ggKGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfSgpOwogICAgdmFyIGYgPSBuIHx8IHt9OwogICAgZlt1XSB8fCAoZlt1XSA9IHt9KSwgZlt1XS5zdHlsZXMgfHwgKGZbdV0uc3R5bGVzID0ge30pLCBmW3VdLmhvb2tzIHx8IChmW3VdLmhvb2tzID0ge30pLCBmW3VdLnNoaW1zIHx8IChmW3VdLnNoaW1zID0gW10pOwogICAgdmFyIGkgPSBmW3VdLAogICAgICAgIHMgPSBbCiAgICAgICAgICAgIFsiZ2xhc3MiLCBudWxsLCAiZ2xhc3MtbWFydGluaSJdLAogICAgICAgICAgICBbIm1lZXR1cCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJzdGFyLW8iLCAiZmFyIiwgInN0YXIiXSwKICAgICAgICAgICAgWyJyZW1vdmUiLCBudWxsLCAidGltZXMiXSwKICAgICAgICAgICAgWyJjbG9zZSIsIG51bGwsICJ0aW1lcyJdLAogICAgICAgICAgICBbImdlYXIiLCBudWxsLCAiY29nIl0sCiAgICAgICAgICAgIFsidHJhc2gtbyIsICJmYXIiLCAidHJhc2gtYWx0Il0sCiAgICAgICAgICAgIFsiZmlsZS1vIiwgImZhciIsICJmaWxlIl0sCiAgICAgICAgICAgIFsiY2xvY2stbyIsICJmYXIiLCAiY2xvY2siXSwKICAgICAgICAgICAgWyJhcnJvdy1jaXJjbGUtby1kb3duIiwgImZhciIsICJhcnJvdy1hbHQtY2lyY2xlLWRvd24iXSwKICAgICAgICAgICAgWyJhcnJvdy1jaXJjbGUtby11cCIsICJmYXIiLCAiYXJyb3ctYWx0LWNpcmNsZS11cCJdLAogICAgICAgICAgICBbInBsYXktY2lyY2xlLW8iLCAiZmFyIiwgInBsYXktY2lyY2xlIl0sCiAgICAgICAgICAgIFsicmVwZWF0IiwgbnVsbCwgInJlZG8iXSwKICAgICAgICAgICAgWyJyb3RhdGUtcmlnaHQiLCBudWxsLCAicmVkbyJdLAogICAgICAgICAgICBbInJlZnJlc2giLCBudWxsLCAic3luYyJdLAogICAgICAgICAgICBbImxpc3QtYWx0IiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImRlZGVudCIsIG51bGwsICJvdXRkZW50Il0sCiAgICAgICAgICAgIFsidmlkZW8tY2FtZXJhIiwgbnVsbCwgInZpZGVvIl0sCiAgICAgICAgICAgIFsicGljdHVyZS1vIiwgImZhciIsICJpbWFnZSJdLAogICAgICAgICAgICBbInBob3RvIiwgImZhciIsICJpbWFnZSJdLAogICAgICAgICAgICBbImltYWdlIiwgImZhciIsICJpbWFnZSJdLAogICAgICAgICAgICBbInBlbmNpbCIsIG51bGwsICJwZW5jaWwtYWx0Il0sCiAgICAgICAgICAgIFsibWFwLW1hcmtlciIsIG51bGwsICJtYXAtbWFya2VyLWFsdCJdLAogICAgICAgICAgICBbInBlbmNpbC1zcXVhcmUtbyIsICJmYXIiLCAiZWRpdCJdLAogICAgICAgICAgICBbInNoYXJlLXNxdWFyZS1vIiwgImZhciIsICJzaGFyZS1zcXVhcmUiXSwKICAgICAgICAgICAgWyJjaGVjay1zcXVhcmUtbyIsICJmYXIiLCAiY2hlY2stc3F1YXJlIl0sCiAgICAgICAgICAgIFsiYXJyb3dzIiwgbnVsbCwgImFycm93cy1hbHQiXSwKICAgICAgICAgICAgWyJ0aW1lcy1jaXJjbGUtbyIsICJmYXIiLCAidGltZXMtY2lyY2xlIl0sCiAgICAgICAgICAgIFsiY2hlY2stY2lyY2xlLW8iLCAiZmFyIiwgImNoZWNrLWNpcmNsZSJdLAogICAgICAgICAgICBbIm1haWwtZm9yd2FyZCIsIG51bGwsICJzaGFyZSJdLAogICAgICAgICAgICBbImV4cGFuZCIsIG51bGwsICJleHBhbmQtYWx0Il0sCiAgICAgICAgICAgIFsiY29tcHJlc3MiLCBudWxsLCAiY29tcHJlc3MtYWx0Il0sCiAgICAgICAgICAgIFsiZXllIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImV5ZS1zbGFzaCIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3YXJuaW5nIiwgbnVsbCwgImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIl0sCiAgICAgICAgICAgIFsiY2FsZW5kYXIiLCBudWxsLCAiY2FsZW5kYXItYWx0Il0sCiAgICAgICAgICAgIFsiYXJyb3dzLXYiLCBudWxsLCAiYXJyb3dzLWFsdC12Il0sCiAgICAgICAgICAgIFsiYXJyb3dzLWgiLCBudWxsLCAiYXJyb3dzLWFsdC1oIl0sCiAgICAgICAgICAgIFsiYmFyLWNoYXJ0IiwgImZhciIsICJjaGFydC1iYXIiXSwKICAgICAgICAgICAgWyJiYXItY2hhcnQtbyIsICJmYXIiLCAiY2hhcnQtYmFyIl0sCiAgICAgICAgICAgIFsidHdpdHRlci1zcXVhcmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZmFjZWJvb2stc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdlYXJzIiwgbnVsbCwgImNvZ3MiXSwKICAgICAgICAgICAgWyJ0aHVtYnMtby11cCIsICJmYXIiLCAidGh1bWJzLXVwIl0sCiAgICAgICAgICAgIFsidGh1bWJzLW8tZG93biIsICJmYXIiLCAidGh1bWJzLWRvd24iXSwKICAgICAgICAgICAgWyJoZWFydC1vIiwgImZhciIsICJoZWFydCJdLAogICAgICAgICAgICBbInNpZ24tb3V0IiwgbnVsbCwgInNpZ24tb3V0LWFsdCJdLAogICAgICAgICAgICBbImxpbmtlZGluLXNxdWFyZSIsICJmYWIiLCAibGlua2VkaW4iXSwKICAgICAgICAgICAgWyJ0aHVtYi10YWNrIiwgbnVsbCwgInRodW1idGFjayJdLAogICAgICAgICAgICBbImV4dGVybmFsLWxpbmsiLCBudWxsLCAiZXh0ZXJuYWwtbGluay1hbHQiXSwKICAgICAgICAgICAgWyJzaWduLWluIiwgbnVsbCwgInNpZ24taW4tYWx0Il0sCiAgICAgICAgICAgIFsiZ2l0aHViLXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsZW1vbi1vIiwgImZhciIsICJsZW1vbiJdLAogICAgICAgICAgICBbInNxdWFyZS1vIiwgImZhciIsICJzcXVhcmUiXSwKICAgICAgICAgICAgWyJib29rbWFyay1vIiwgImZhciIsICJib29rbWFyayJdLAogICAgICAgICAgICBbInR3aXR0ZXIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZmFjZWJvb2siLCAiZmFiIiwgImZhY2Vib29rLWYiXSwKICAgICAgICAgICAgWyJmYWNlYm9vay1mIiwgImZhYiIsICJmYWNlYm9vay1mIl0sCiAgICAgICAgICAgIFsiZ2l0aHViIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNyZWRpdC1jYXJkIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImZlZWQiLCBudWxsLCAicnNzIl0sCiAgICAgICAgICAgIFsiaGRkLW8iLCAiZmFyIiwgImhkZCJdLAogICAgICAgICAgICBbImhhbmQtby1yaWdodCIsICJmYXIiLCAiaGFuZC1wb2ludC1yaWdodCJdLAogICAgICAgICAgICBbImhhbmQtby1sZWZ0IiwgImZhciIsICJoYW5kLXBvaW50LWxlZnQiXSwKICAgICAgICAgICAgWyJoYW5kLW8tdXAiLCAiZmFyIiwgImhhbmQtcG9pbnQtdXAiXSwKICAgICAgICAgICAgWyJoYW5kLW8tZG93biIsICJmYXIiLCAiaGFuZC1wb2ludC1kb3duIl0sCiAgICAgICAgICAgIFsiYXJyb3dzLWFsdCIsIG51bGwsICJleHBhbmQtYXJyb3dzLWFsdCJdLAogICAgICAgICAgICBbImdyb3VwIiwgbnVsbCwgInVzZXJzIl0sCiAgICAgICAgICAgIFsiY2hhaW4iLCBudWxsLCAibGluayJdLAogICAgICAgICAgICBbInNjaXNzb3JzIiwgbnVsbCwgImN1dCJdLAogICAgICAgICAgICBbImZpbGVzLW8iLCAiZmFyIiwgImNvcHkiXSwKICAgICAgICAgICAgWyJmbG9wcHktbyIsICJmYXIiLCAic2F2ZSJdLAogICAgICAgICAgICBbIm5hdmljb24iLCBudWxsLCAiYmFycyJdLAogICAgICAgICAgICBbInJlb3JkZXIiLCBudWxsLCAiYmFycyJdLAogICAgICAgICAgICBbInBpbnRlcmVzdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwaW50ZXJlc3Qtc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdvb2dsZS1wbHVzLXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnb29nbGUtcGx1cyIsICJmYWIiLCAiZ29vZ2xlLXBsdXMtZyJdLAogICAgICAgICAgICBbIm1vbmV5IiwgImZhciIsICJtb25leS1iaWxsLWFsdCJdLAogICAgICAgICAgICBbInVuc29ydGVkIiwgbnVsbCwgInNvcnQiXSwKICAgICAgICAgICAgWyJzb3J0LWRlc2MiLCBudWxsLCAic29ydC1kb3duIl0sCiAgICAgICAgICAgIFsic29ydC1hc2MiLCBudWxsLCAic29ydC11cCJdLAogICAgICAgICAgICBbImxpbmtlZGluIiwgImZhYiIsICJsaW5rZWRpbi1pbiJdLAogICAgICAgICAgICBbInJvdGF0ZS1sZWZ0IiwgbnVsbCwgInVuZG8iXSwKICAgICAgICAgICAgWyJsZWdhbCIsIG51bGwsICJnYXZlbCJdLAogICAgICAgICAgICBbInRhY2hvbWV0ZXIiLCBudWxsLCAidGFjaG9tZXRlci1hbHQiXSwKICAgICAgICAgICAgWyJkYXNoYm9hcmQiLCBudWxsLCAidGFjaG9tZXRlci1hbHQiXSwKICAgICAgICAgICAgWyJjb21tZW50LW8iLCAiZmFyIiwgImNvbW1lbnQiXSwKICAgICAgICAgICAgWyJjb21tZW50cy1vIiwgImZhciIsICJjb21tZW50cyJdLAogICAgICAgICAgICBbImZsYXNoIiwgbnVsbCwgImJvbHQiXSwKICAgICAgICAgICAgWyJjbGlwYm9hcmQiLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsicGFzdGUiLCAiZmFyIiwgImNsaXBib2FyZCJdLAogICAgICAgICAgICBbImxpZ2h0YnVsYi1vIiwgImZhciIsICJsaWdodGJ1bGIiXSwKICAgICAgICAgICAgWyJleGNoYW5nZSIsIG51bGwsICJleGNoYW5nZS1hbHQiXSwKICAgICAgICAgICAgWyJjbG91ZC1kb3dubG9hZCIsIG51bGwsICJjbG91ZC1kb3dubG9hZC1hbHQiXSwKICAgICAgICAgICAgWyJjbG91ZC11cGxvYWQiLCBudWxsLCAiY2xvdWQtdXBsb2FkLWFsdCJdLAogICAgICAgICAgICBbImJlbGwtbyIsICJmYXIiLCAiYmVsbCJdLAogICAgICAgICAgICBbImN1dGxlcnkiLCBudWxsLCAidXRlbnNpbHMiXSwKICAgICAgICAgICAgWyJmaWxlLXRleHQtbyIsICJmYXIiLCAiZmlsZS1hbHQiXSwKICAgICAgICAgICAgWyJidWlsZGluZy1vIiwgImZhciIsICJidWlsZGluZyJdLAogICAgICAgICAgICBbImhvc3BpdGFsLW8iLCAiZmFyIiwgImhvc3BpdGFsIl0sCiAgICAgICAgICAgIFsidGFibGV0IiwgbnVsbCwgInRhYmxldC1hbHQiXSwKICAgICAgICAgICAgWyJtb2JpbGUiLCBudWxsLCAibW9iaWxlLWFsdCJdLAogICAgICAgICAgICBbIm1vYmlsZS1waG9uZSIsIG51bGwsICJtb2JpbGUtYWx0Il0sCiAgICAgICAgICAgIFsiY2lyY2xlLW8iLCAiZmFyIiwgImNpcmNsZSJdLAogICAgICAgICAgICBbIm1haWwtcmVwbHkiLCBudWxsLCAicmVwbHkiXSwKICAgICAgICAgICAgWyJnaXRodWItYWx0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZvbGRlci1vIiwgImZhciIsICJmb2xkZXIiXSwKICAgICAgICAgICAgWyJmb2xkZXItb3Blbi1vIiwgImZhciIsICJmb2xkZXItb3BlbiJdLAogICAgICAgICAgICBbInNtaWxlLW8iLCAiZmFyIiwgInNtaWxlIl0sCiAgICAgICAgICAgIFsiZnJvd24tbyIsICJmYXIiLCAiZnJvd24iXSwKICAgICAgICAgICAgWyJtZWgtbyIsICJmYXIiLCAibWVoIl0sCiAgICAgICAgICAgIFsia2V5Ym9hcmQtbyIsICJmYXIiLCAia2V5Ym9hcmQiXSwKICAgICAgICAgICAgWyJmbGFnLW8iLCAiZmFyIiwgImZsYWciXSwKICAgICAgICAgICAgWyJtYWlsLXJlcGx5LWFsbCIsIG51bGwsICJyZXBseS1hbGwiXSwKICAgICAgICAgICAgWyJzdGFyLWhhbGYtbyIsICJmYXIiLCAic3Rhci1oYWxmIl0sCiAgICAgICAgICAgIFsic3Rhci1oYWxmLWVtcHR5IiwgImZhciIsICJzdGFyLWhhbGYiXSwKICAgICAgICAgICAgWyJzdGFyLWhhbGYtZnVsbCIsICJmYXIiLCAic3Rhci1oYWxmIl0sCiAgICAgICAgICAgIFsiY29kZS1mb3JrIiwgbnVsbCwgImNvZGUtYnJhbmNoIl0sCiAgICAgICAgICAgIFsiY2hhaW4tYnJva2VuIiwgbnVsbCwgInVubGluayJdLAogICAgICAgICAgICBbInNoaWVsZCIsIG51bGwsICJzaGllbGQtYWx0Il0sCiAgICAgICAgICAgIFsiY2FsZW5kYXItbyIsICJmYXIiLCAiY2FsZW5kYXIiXSwKICAgICAgICAgICAgWyJtYXhjZG4iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiaHRtbDUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY3NzMyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0aWNrZXQiLCBudWxsLCAidGlja2V0LWFsdCJdLAogICAgICAgICAgICBbIm1pbnVzLXNxdWFyZS1vIiwgImZhciIsICJtaW51cy1zcXVhcmUiXSwKICAgICAgICAgICAgWyJsZXZlbC11cCIsIG51bGwsICJsZXZlbC11cC1hbHQiXSwKICAgICAgICAgICAgWyJsZXZlbC1kb3duIiwgbnVsbCwgImxldmVsLWRvd24tYWx0Il0sCiAgICAgICAgICAgIFsicGVuY2lsLXNxdWFyZSIsIG51bGwsICJwZW4tc3F1YXJlIl0sCiAgICAgICAgICAgIFsiZXh0ZXJuYWwtbGluay1zcXVhcmUiLCBudWxsLCAiZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0Il0sCiAgICAgICAgICAgIFsiY29tcGFzcyIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJjYXJldC1zcXVhcmUtby1kb3duIiwgImZhciIsICJjYXJldC1zcXVhcmUtZG93biJdLAogICAgICAgICAgICBbInRvZ2dsZS1kb3duIiwgImZhciIsICJjYXJldC1zcXVhcmUtZG93biJdLAogICAgICAgICAgICBbImNhcmV0LXNxdWFyZS1vLXVwIiwgImZhciIsICJjYXJldC1zcXVhcmUtdXAiXSwKICAgICAgICAgICAgWyJ0b2dnbGUtdXAiLCAiZmFyIiwgImNhcmV0LXNxdWFyZS11cCJdLAogICAgICAgICAgICBbImNhcmV0LXNxdWFyZS1vLXJpZ2h0IiwgImZhciIsICJjYXJldC1zcXVhcmUtcmlnaHQiXSwKICAgICAgICAgICAgWyJ0b2dnbGUtcmlnaHQiLCAiZmFyIiwgImNhcmV0LXNxdWFyZS1yaWdodCJdLAogICAgICAgICAgICBbImV1ciIsIG51bGwsICJldXJvLXNpZ24iXSwKICAgICAgICAgICAgWyJldXJvIiwgbnVsbCwgImV1cm8tc2lnbiJdLAogICAgICAgICAgICBbImdicCIsIG51bGwsICJwb3VuZC1zaWduIl0sCiAgICAgICAgICAgIFsidXNkIiwgbnVsbCwgImRvbGxhci1zaWduIl0sCiAgICAgICAgICAgIFsiZG9sbGFyIiwgbnVsbCwgImRvbGxhci1zaWduIl0sCiAgICAgICAgICAgIFsiaW5yIiwgbnVsbCwgInJ1cGVlLXNpZ24iXSwKICAgICAgICAgICAgWyJydXBlZSIsIG51bGwsICJydXBlZS1zaWduIl0sCiAgICAgICAgICAgIFsianB5IiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsiY255IiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsicm1iIiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsieWVuIiwgbnVsbCwgInllbi1zaWduIl0sCiAgICAgICAgICAgIFsicnViIiwgbnVsbCwgInJ1YmxlLXNpZ24iXSwKICAgICAgICAgICAgWyJydWJsZSIsIG51bGwsICJydWJsZS1zaWduIl0sCiAgICAgICAgICAgIFsicm91YmxlIiwgbnVsbCwgInJ1YmxlLXNpZ24iXSwKICAgICAgICAgICAgWyJrcnciLCBudWxsLCAid29uLXNpZ24iXSwKICAgICAgICAgICAgWyJ3b24iLCBudWxsLCAid29uLXNpZ24iXSwKICAgICAgICAgICAgWyJidGMiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYml0Y29pbiIsICJmYWIiLCAiYnRjIl0sCiAgICAgICAgICAgIFsiZmlsZS10ZXh0IiwgbnVsbCwgImZpbGUtYWx0Il0sCiAgICAgICAgICAgIFsic29ydC1hbHBoYS1hc2MiLCBudWxsLCAic29ydC1hbHBoYS1kb3duIl0sCiAgICAgICAgICAgIFsic29ydC1hbHBoYS1kZXNjIiwgbnVsbCwgInNvcnQtYWxwaGEtZG93bi1hbHQiXSwKICAgICAgICAgICAgWyJzb3J0LWFtb3VudC1hc2MiLCBudWxsLCAic29ydC1hbW91bnQtZG93biJdLAogICAgICAgICAgICBbInNvcnQtYW1vdW50LWRlc2MiLCBudWxsLCAic29ydC1hbW91bnQtZG93bi1hbHQiXSwKICAgICAgICAgICAgWyJzb3J0LW51bWVyaWMtYXNjIiwgbnVsbCwgInNvcnQtbnVtZXJpYy1kb3duIl0sCiAgICAgICAgICAgIFsic29ydC1udW1lcmljLWRlc2MiLCBudWxsLCAic29ydC1udW1lcmljLWRvd24tYWx0Il0sCiAgICAgICAgICAgIFsieW91dHViZS1zcXVhcmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsieW91dHViZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ4aW5nIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInhpbmctc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInlvdXR1YmUtcGxheSIsICJmYWIiLCAieW91dHViZSJdLAogICAgICAgICAgICBbImRyb3Bib3giLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RhY2stb3ZlcmZsb3ciLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiaW5zdGFncmFtIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZsaWNrciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJhZG4iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYml0YnVja2V0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImJpdGJ1Y2tldC1zcXVhcmUiLCAiZmFiIiwgImJpdGJ1Y2tldCJdLAogICAgICAgICAgICBbInR1bWJsciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0dW1ibHItc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImxvbmctYXJyb3ctZG93biIsIG51bGwsICJsb25nLWFycm93LWFsdC1kb3duIl0sCiAgICAgICAgICAgIFsibG9uZy1hcnJvdy11cCIsIG51bGwsICJsb25nLWFycm93LWFsdC11cCJdLAogICAgICAgICAgICBbImxvbmctYXJyb3ctbGVmdCIsIG51bGwsICJsb25nLWFycm93LWFsdC1sZWZ0Il0sCiAgICAgICAgICAgIFsibG9uZy1hcnJvdy1yaWdodCIsIG51bGwsICJsb25nLWFycm93LWFsdC1yaWdodCJdLAogICAgICAgICAgICBbImFwcGxlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndpbmRvd3MiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYW5kcm9pZCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsaW51eCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJkcmliYmJsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJza3lwZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJmb3Vyc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInRyZWxsbyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJncmF0aXBheSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnaXR0aXAiLCAiZmFiIiwgImdyYXRpcGF5Il0sCiAgICAgICAgICAgIFsic3VuLW8iLCAiZmFyIiwgInN1biJdLAogICAgICAgICAgICBbIm1vb24tbyIsICJmYXIiLCAibW9vbiJdLAogICAgICAgICAgICBbInZrIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndlaWJvIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJlbnJlbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwYWdlbGluZXMiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RhY2stZXhjaGFuZ2UiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYXJyb3ctY2lyY2xlLW8tcmlnaHQiLCAiZmFyIiwgImFycm93LWFsdC1jaXJjbGUtcmlnaHQiXSwKICAgICAgICAgICAgWyJhcnJvdy1jaXJjbGUtby1sZWZ0IiwgImZhciIsICJhcnJvdy1hbHQtY2lyY2xlLWxlZnQiXSwKICAgICAgICAgICAgWyJjYXJldC1zcXVhcmUtby1sZWZ0IiwgImZhciIsICJjYXJldC1zcXVhcmUtbGVmdCJdLAogICAgICAgICAgICBbInRvZ2dsZS1sZWZ0IiwgImZhciIsICJjYXJldC1zcXVhcmUtbGVmdCJdLAogICAgICAgICAgICBbImRvdC1jaXJjbGUtbyIsICJmYXIiLCAiZG90LWNpcmNsZSJdLAogICAgICAgICAgICBbInZpbWVvLXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0cnkiLCBudWxsLCAibGlyYS1zaWduIl0sCiAgICAgICAgICAgIFsidHVya2lzaC1saXJhIiwgbnVsbCwgImxpcmEtc2lnbiJdLAogICAgICAgICAgICBbInBsdXMtc3F1YXJlLW8iLCAiZmFyIiwgInBsdXMtc3F1YXJlIl0sCiAgICAgICAgICAgIFsic2xhY2siLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsid29yZHByZXNzIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm9wZW5pZCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJpbnN0aXR1dGlvbiIsIG51bGwsICJ1bml2ZXJzaXR5Il0sCiAgICAgICAgICAgIFsiYmFuayIsIG51bGwsICJ1bml2ZXJzaXR5Il0sCiAgICAgICAgICAgIFsibW9ydGFyLWJvYXJkIiwgbnVsbCwgImdyYWR1YXRpb24tY2FwIl0sCiAgICAgICAgICAgIFsieWFob28iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZ29vZ2xlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJlZGRpdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJyZWRkaXQtc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInN0dW1ibGV1cG9uLWNpcmNsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJzdHVtYmxldXBvbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJkZWxpY2lvdXMiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZGlnZyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwaWVkLXBpcGVyLXBwIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInBpZWQtcGlwZXItYWx0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImRydXBhbCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJqb29tbGEiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3Bvb24iLCBudWxsLCAidXRlbnNpbC1zcG9vbiJdLAogICAgICAgICAgICBbImJlaGFuY2UiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYmVoYW5jZS1zcXVhcmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RlYW0iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic3RlYW0tc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImF1dG9tb2JpbGUiLCBudWxsLCAiY2FyIl0sCiAgICAgICAgICAgIFsiZW52ZWxvcGUtbyIsICJmYXIiLCAiZW52ZWxvcGUiXSwKICAgICAgICAgICAgWyJzcG90aWZ5IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImRldmlhbnRhcnQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic291bmRjbG91ZCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJmaWxlLXBkZi1vIiwgImZhciIsICJmaWxlLXBkZiJdLAogICAgICAgICAgICBbImZpbGUtd29yZC1vIiwgImZhciIsICJmaWxlLXdvcmQiXSwKICAgICAgICAgICAgWyJmaWxlLWV4Y2VsLW8iLCAiZmFyIiwgImZpbGUtZXhjZWwiXSwKICAgICAgICAgICAgWyJmaWxlLXBvd2VycG9pbnQtbyIsICJmYXIiLCAiZmlsZS1wb3dlcnBvaW50Il0sCiAgICAgICAgICAgIFsiZmlsZS1pbWFnZS1vIiwgImZhciIsICJmaWxlLWltYWdlIl0sCiAgICAgICAgICAgIFsiZmlsZS1waG90by1vIiwgImZhciIsICJmaWxlLWltYWdlIl0sCiAgICAgICAgICAgIFsiZmlsZS1waWN0dXJlLW8iLCAiZmFyIiwgImZpbGUtaW1hZ2UiXSwKICAgICAgICAgICAgWyJmaWxlLWFyY2hpdmUtbyIsICJmYXIiLCAiZmlsZS1hcmNoaXZlIl0sCiAgICAgICAgICAgIFsiZmlsZS16aXAtbyIsICJmYXIiLCAiZmlsZS1hcmNoaXZlIl0sCiAgICAgICAgICAgIFsiZmlsZS1hdWRpby1vIiwgImZhciIsICJmaWxlLWF1ZGlvIl0sCiAgICAgICAgICAgIFsiZmlsZS1zb3VuZC1vIiwgImZhciIsICJmaWxlLWF1ZGlvIl0sCiAgICAgICAgICAgIFsiZmlsZS12aWRlby1vIiwgImZhciIsICJmaWxlLXZpZGVvIl0sCiAgICAgICAgICAgIFsiZmlsZS1tb3ZpZS1vIiwgImZhciIsICJmaWxlLXZpZGVvIl0sCiAgICAgICAgICAgIFsiZmlsZS1jb2RlLW8iLCAiZmFyIiwgImZpbGUtY29kZSJdLAogICAgICAgICAgICBbInZpbmUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY29kZXBlbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJqc2ZpZGRsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsaWZlLXJpbmciLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsibGlmZS1ib3V5IiwgImZhciIsICJsaWZlLXJpbmciXSwKICAgICAgICAgICAgWyJsaWZlLWJ1b3kiLCAiZmFyIiwgImxpZmUtcmluZyJdLAogICAgICAgICAgICBbImxpZmUtc2F2ZXIiLCAiZmFyIiwgImxpZmUtcmluZyJdLAogICAgICAgICAgICBbInN1cHBvcnQiLCAiZmFyIiwgImxpZmUtcmluZyJdLAogICAgICAgICAgICBbImNpcmNsZS1vLW5vdGNoIiwgbnVsbCwgImNpcmNsZS1ub3RjaCJdLAogICAgICAgICAgICBbInJlYmVsIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJhIiwgImZhYiIsICJyZWJlbCJdLAogICAgICAgICAgICBbInJlc2lzdGFuY2UiLCAiZmFiIiwgInJlYmVsIl0sCiAgICAgICAgICAgIFsiZW1waXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdlIiwgImZhYiIsICJlbXBpcmUiXSwKICAgICAgICAgICAgWyJnaXQtc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdpdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJoYWNrZXItbmV3cyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ5LWNvbWJpbmF0b3Itc3F1YXJlIiwgImZhYiIsICJoYWNrZXItbmV3cyJdLAogICAgICAgICAgICBbInljLXNxdWFyZSIsICJmYWIiLCAiaGFja2VyLW5ld3MiXSwKICAgICAgICAgICAgWyJ0ZW5jZW50LXdlaWJvIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInFxIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndlaXhpbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3ZWNoYXQiLCAiZmFiIiwgIndlaXhpbiJdLAogICAgICAgICAgICBbInNlbmQiLCBudWxsLCAicGFwZXItcGxhbmUiXSwKICAgICAgICAgICAgWyJwYXBlci1wbGFuZS1vIiwgImZhciIsICJwYXBlci1wbGFuZSJdLAogICAgICAgICAgICBbInNlbmQtbyIsICJmYXIiLCAicGFwZXItcGxhbmUiXSwKICAgICAgICAgICAgWyJjaXJjbGUtdGhpbiIsICJmYXIiLCAiY2lyY2xlIl0sCiAgICAgICAgICAgIFsiaGVhZGVyIiwgbnVsbCwgImhlYWRpbmciXSwKICAgICAgICAgICAgWyJzbGlkZXJzIiwgbnVsbCwgInNsaWRlcnMtaCJdLAogICAgICAgICAgICBbImZ1dGJvbC1vIiwgImZhciIsICJmdXRib2wiXSwKICAgICAgICAgICAgWyJzb2NjZXItYmFsbC1vIiwgImZhciIsICJmdXRib2wiXSwKICAgICAgICAgICAgWyJzbGlkZXNoYXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInR3aXRjaCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ5ZWxwIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm5ld3NwYXBlci1vIiwgImZhciIsICJuZXdzcGFwZXIiXSwKICAgICAgICAgICAgWyJwYXlwYWwiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZ29vZ2xlLXdhbGxldCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJjYy12aXNhIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNjLW1hc3RlcmNhcmQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY2MtZGlzY292ZXIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY2MtYW1leCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJjYy1wYXlwYWwiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiY2Mtc3RyaXBlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImJlbGwtc2xhc2gtbyIsICJmYXIiLCAiYmVsbC1zbGFzaCJdLAogICAgICAgICAgICBbInRyYXNoIiwgbnVsbCwgInRyYXNoLWFsdCJdLAogICAgICAgICAgICBbImNvcHlyaWdodCIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJleWVkcm9wcGVyIiwgbnVsbCwgImV5ZS1kcm9wcGVyIl0sCiAgICAgICAgICAgIFsiYXJlYS1jaGFydCIsIG51bGwsICJjaGFydC1hcmVhIl0sCiAgICAgICAgICAgIFsicGllLWNoYXJ0IiwgbnVsbCwgImNoYXJ0LXBpZSJdLAogICAgICAgICAgICBbImxpbmUtY2hhcnQiLCBudWxsLCAiY2hhcnQtbGluZSJdLAogICAgICAgICAgICBbImxhc3RmbSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJsYXN0Zm0tc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImlveGhvc3QiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYW5nZWxsaXN0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNjIiwgImZhciIsICJjbG9zZWQtY2FwdGlvbmluZyJdLAogICAgICAgICAgICBbImlscyIsIG51bGwsICJzaGVrZWwtc2lnbiJdLAogICAgICAgICAgICBbInNoZWtlbCIsIG51bGwsICJzaGVrZWwtc2lnbiJdLAogICAgICAgICAgICBbInNoZXFlbCIsIG51bGwsICJzaGVrZWwtc2lnbiJdLAogICAgICAgICAgICBbIm1lYW5wYXRoIiwgImZhYiIsICJmb250LWF3ZXNvbWUiXSwKICAgICAgICAgICAgWyJidXlzZWxsYWRzIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNvbm5lY3RkZXZlbG9wIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImRhc2hjdWJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZvcnVtYmVlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImxlYW5wdWIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic2VsbHN5IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNoaXJ0c2luYnVsayIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJzaW1wbHlidWlsdCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJza3lhdGxhcyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJkaWFtb25kIiwgImZhciIsICJnZW0iXSwKICAgICAgICAgICAgWyJpbnRlcnNleCIsIG51bGwsICJ0cmFuc2dlbmRlciJdLAogICAgICAgICAgICBbImZhY2Vib29rLW9mZmljaWFsIiwgImZhYiIsICJmYWNlYm9vayJdLAogICAgICAgICAgICBbInBpbnRlcmVzdC1wIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIndoYXRzYXBwIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImhvdGVsIiwgbnVsbCwgImJlZCJdLAogICAgICAgICAgICBbInZpYWNvaW4iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsibWVkaXVtIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInktY29tYmluYXRvciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ5YyIsICJmYWIiLCAieS1jb21iaW5hdG9yIl0sCiAgICAgICAgICAgIFsib3B0aW4tbW9uc3RlciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJvcGVuY2FydCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJleHBlZGl0ZWRzc2wiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYmF0dGVyeS00IiwgbnVsbCwgImJhdHRlcnktZnVsbCJdLAogICAgICAgICAgICBbImJhdHRlcnkiLCBudWxsLCAiYmF0dGVyeS1mdWxsIl0sCiAgICAgICAgICAgIFsiYmF0dGVyeS0zIiwgbnVsbCwgImJhdHRlcnktdGhyZWUtcXVhcnRlcnMiXSwKICAgICAgICAgICAgWyJiYXR0ZXJ5LTIiLCBudWxsLCAiYmF0dGVyeS1oYWxmIl0sCiAgICAgICAgICAgIFsiYmF0dGVyeS0xIiwgbnVsbCwgImJhdHRlcnktcXVhcnRlciJdLAogICAgICAgICAgICBbImJhdHRlcnktMCIsIG51bGwsICJiYXR0ZXJ5LWVtcHR5Il0sCiAgICAgICAgICAgIFsib2JqZWN0LWdyb3VwIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbIm9iamVjdC11bmdyb3VwIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbInN0aWNreS1ub3RlLW8iLCAiZmFyIiwgInN0aWNreS1ub3RlIl0sCiAgICAgICAgICAgIFsiY2MtamNiIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNjLWRpbmVycy1jbHViIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNsb25lIiwgImZhciIsIG51bGxdLAogICAgICAgICAgICBbImhvdXJnbGFzcy1vIiwgImZhciIsICJob3VyZ2xhc3MiXSwKICAgICAgICAgICAgWyJob3VyZ2xhc3MtMSIsIG51bGwsICJob3VyZ2xhc3Mtc3RhcnQiXSwKICAgICAgICAgICAgWyJob3VyZ2xhc3MtMiIsIG51bGwsICJob3VyZ2xhc3MtaGFsZiJdLAogICAgICAgICAgICBbImhvdXJnbGFzcy0zIiwgbnVsbCwgImhvdXJnbGFzcy1lbmQiXSwKICAgICAgICAgICAgWyJoYW5kLXJvY2stbyIsICJmYXIiLCAiaGFuZC1yb2NrIl0sCiAgICAgICAgICAgIFsiaGFuZC1ncmFiLW8iLCAiZmFyIiwgImhhbmQtcm9jayJdLAogICAgICAgICAgICBbImhhbmQtcGFwZXItbyIsICJmYXIiLCAiaGFuZC1wYXBlciJdLAogICAgICAgICAgICBbImhhbmQtc3RvcC1vIiwgImZhciIsICJoYW5kLXBhcGVyIl0sCiAgICAgICAgICAgIFsiaGFuZC1zY2lzc29ycy1vIiwgImZhciIsICJoYW5kLXNjaXNzb3JzIl0sCiAgICAgICAgICAgIFsiaGFuZC1saXphcmQtbyIsICJmYXIiLCAiaGFuZC1saXphcmQiXSwKICAgICAgICAgICAgWyJoYW5kLXNwb2NrLW8iLCAiZmFyIiwgImhhbmQtc3BvY2siXSwKICAgICAgICAgICAgWyJoYW5kLXBvaW50ZXItbyIsICJmYXIiLCAiaGFuZC1wb2ludGVyIl0sCiAgICAgICAgICAgIFsiaGFuZC1wZWFjZS1vIiwgImZhciIsICJoYW5kLXBlYWNlIl0sCiAgICAgICAgICAgIFsicmVnaXN0ZXJlZCIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJjcmVhdGl2ZS1jb21tb25zIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdnIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdnLWNpcmNsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ0cmlwYWR2aXNvciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJvZG5va2xhc3NuaWtpIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm9kbm9rbGFzc25pa2ktc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImdldC1wb2NrZXQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsid2lraXBlZGlhLXciLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic2FmYXJpIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNocm9tZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJmaXJlZm94IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm9wZXJhIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImludGVybmV0LWV4cGxvcmVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInRlbGV2aXNpb24iLCBudWxsLCAidHYiXSwKICAgICAgICAgICAgWyJjb250YW8iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiNTAwcHgiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiYW1hem9uIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNhbGVuZGFyLXBsdXMtbyIsICJmYXIiLCAiY2FsZW5kYXItcGx1cyJdLAogICAgICAgICAgICBbImNhbGVuZGFyLW1pbnVzLW8iLCAiZmFyIiwgImNhbGVuZGFyLW1pbnVzIl0sCiAgICAgICAgICAgIFsiY2FsZW5kYXItdGltZXMtbyIsICJmYXIiLCAiY2FsZW5kYXItdGltZXMiXSwKICAgICAgICAgICAgWyJjYWxlbmRhci1jaGVjay1vIiwgImZhciIsICJjYWxlbmRhci1jaGVjayJdLAogICAgICAgICAgICBbIm1hcC1vIiwgImZhciIsICJtYXAiXSwKICAgICAgICAgICAgWyJjb21tZW50aW5nIiwgbnVsbCwgImNvbW1lbnQtZG90cyJdLAogICAgICAgICAgICBbImNvbW1lbnRpbmctbyIsICJmYXIiLCAiY29tbWVudC1kb3RzIl0sCiAgICAgICAgICAgIFsiaG91enoiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsidmltZW8iLCAiZmFiIiwgInZpbWVvLXYiXSwKICAgICAgICAgICAgWyJibGFjay10aWUiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZm9udGljb25zIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInJlZGRpdC1hbGllbiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJlZGdlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNyZWRpdC1jYXJkLWFsdCIsIG51bGwsICJjcmVkaXQtY2FyZCJdLAogICAgICAgICAgICBbImNvZGllcGllIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbIm1vZHgiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZm9ydC1hd2Vzb21lIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInVzYiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwcm9kdWN0LWh1bnQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsibWl4Y2xvdWQiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsic2NyaWJkIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInBhdXNlLWNpcmNsZS1vIiwgImZhciIsICJwYXVzZS1jaXJjbGUiXSwKICAgICAgICAgICAgWyJzdG9wLWNpcmNsZS1vIiwgImZhciIsICJzdG9wLWNpcmNsZSJdLAogICAgICAgICAgICBbImJsdWV0b290aCIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJibHVldG9vdGgtYiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnaXRsYWIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsid3BiZWdpbm5lciIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3cGZvcm1zIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImVudmlyYSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3aGVlbGNoYWlyLWFsdCIsICJmYWIiLCAiYWNjZXNzaWJsZS1pY29uIl0sCiAgICAgICAgICAgIFsicXVlc3Rpb24tY2lyY2xlLW8iLCAiZmFyIiwgInF1ZXN0aW9uLWNpcmNsZSJdLAogICAgICAgICAgICBbInZvbHVtZS1jb250cm9sLXBob25lIiwgbnVsbCwgInBob25lLXZvbHVtZSJdLAogICAgICAgICAgICBbImFzbC1pbnRlcnByZXRpbmciLCBudWxsLCAiYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmciXSwKICAgICAgICAgICAgWyJkZWFmbmVzcyIsIG51bGwsICJkZWFmIl0sCiAgICAgICAgICAgIFsiaGFyZC1vZi1oZWFyaW5nIiwgbnVsbCwgImRlYWYiXSwKICAgICAgICAgICAgWyJnbGlkZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnbGlkZS1nIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNpZ25pbmciLCBudWxsLCAic2lnbi1sYW5ndWFnZSJdLAogICAgICAgICAgICBbInZpYWRlbyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ2aWFkZW8tc3F1YXJlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNuYXBjaGF0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNuYXBjaGF0LWdob3N0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInNuYXBjaGF0LXNxdWFyZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJwaWVkLXBpcGVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZpcnN0LW9yZGVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInlvYXN0IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbInRoZW1laXNsZSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJnb29nbGUtcGx1cy1vZmZpY2lhbCIsICJmYWIiLCAiZ29vZ2xlLXBsdXMiXSwKICAgICAgICAgICAgWyJnb29nbGUtcGx1cy1jaXJjbGUiLCAiZmFiIiwgImdvb2dsZS1wbHVzIl0sCiAgICAgICAgICAgIFsiZm9udC1hd2Vzb21lIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImZhIiwgImZhYiIsICJmb250LWF3ZXNvbWUiXSwKICAgICAgICAgICAgWyJoYW5kc2hha2UtbyIsICJmYXIiLCAiaGFuZHNoYWtlIl0sCiAgICAgICAgICAgIFsiZW52ZWxvcGUtb3Blbi1vIiwgImZhciIsICJlbnZlbG9wZS1vcGVuIl0sCiAgICAgICAgICAgIFsibGlub2RlIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImFkZHJlc3MtYm9vay1vIiwgImZhciIsICJhZGRyZXNzLWJvb2siXSwKICAgICAgICAgICAgWyJ2Y2FyZCIsIG51bGwsICJhZGRyZXNzLWNhcmQiXSwKICAgICAgICAgICAgWyJhZGRyZXNzLWNhcmQtbyIsICJmYXIiLCAiYWRkcmVzcy1jYXJkIl0sCiAgICAgICAgICAgIFsidmNhcmQtbyIsICJmYXIiLCAiYWRkcmVzcy1jYXJkIl0sCiAgICAgICAgICAgIFsidXNlci1jaXJjbGUtbyIsICJmYXIiLCAidXNlci1jaXJjbGUiXSwKICAgICAgICAgICAgWyJ1c2VyLW8iLCAiZmFyIiwgInVzZXIiXSwKICAgICAgICAgICAgWyJpZC1iYWRnZSIsICJmYXIiLCBudWxsXSwKICAgICAgICAgICAgWyJkcml2ZXJzLWxpY2Vuc2UiLCBudWxsLCAiaWQtY2FyZCJdLAogICAgICAgICAgICBbImlkLWNhcmQtbyIsICJmYXIiLCAiaWQtY2FyZCJdLAogICAgICAgICAgICBbImRyaXZlcnMtbGljZW5zZS1vIiwgImZhciIsICJpZC1jYXJkIl0sCiAgICAgICAgICAgIFsicXVvcmEiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZnJlZS1jb2RlLWNhbXAiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsidGVsZWdyYW0iLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsidGhlcm1vbWV0ZXItNCIsIG51bGwsICJ0aGVybW9tZXRlci1mdWxsIl0sCiAgICAgICAgICAgIFsidGhlcm1vbWV0ZXIiLCBudWxsLCAidGhlcm1vbWV0ZXItZnVsbCJdLAogICAgICAgICAgICBbInRoZXJtb21ldGVyLTMiLCBudWxsLCAidGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnMiXSwKICAgICAgICAgICAgWyJ0aGVybW9tZXRlci0yIiwgbnVsbCwgInRoZXJtb21ldGVyLWhhbGYiXSwKICAgICAgICAgICAgWyJ0aGVybW9tZXRlci0xIiwgbnVsbCwgInRoZXJtb21ldGVyLXF1YXJ0ZXIiXSwKICAgICAgICAgICAgWyJ0aGVybW9tZXRlci0wIiwgbnVsbCwgInRoZXJtb21ldGVyLWVtcHR5Il0sCiAgICAgICAgICAgIFsiYmF0aHR1YiIsIG51bGwsICJiYXRoIl0sCiAgICAgICAgICAgIFsiczE1IiwgbnVsbCwgImJhdGgiXSwKICAgICAgICAgICAgWyJ3aW5kb3ctbWF4aW1pemUiLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsid2luZG93LXJlc3RvcmUiLCAiZmFyIiwgbnVsbF0sCiAgICAgICAgICAgIFsidGltZXMtcmVjdGFuZ2xlIiwgbnVsbCwgIndpbmRvdy1jbG9zZSJdLAogICAgICAgICAgICBbIndpbmRvdy1jbG9zZS1vIiwgImZhciIsICJ3aW5kb3ctY2xvc2UiXSwKICAgICAgICAgICAgWyJ0aW1lcy1yZWN0YW5nbGUtbyIsICJmYXIiLCAid2luZG93LWNsb3NlIl0sCiAgICAgICAgICAgIFsiYmFuZGNhbXAiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsiZ3JhdiIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJldHN5IiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImltZGIiLCAiZmFiIiwgbnVsbF0sCiAgICAgICAgICAgIFsicmF2ZWxyeSIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJlZXJjYXN0IiwgImZhYiIsICJzZWxsY2FzdCJdLAogICAgICAgICAgICBbInNub3dmbGFrZS1vIiwgImZhciIsICJzbm93Zmxha2UiXSwKICAgICAgICAgICAgWyJzdXBlcnBvd2VycyIsICJmYWIiLCBudWxsXSwKICAgICAgICAgICAgWyJ3cGV4cGxvcmVyIiwgImZhYiIsIG51bGxdLAogICAgICAgICAgICBbImNhYiIsIG51bGwsICJ0YXhpIl0KICAgICAgICBdOwogICAgcmV0dXJuIGZ1bmN0aW9uKGwpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBsKCkKICAgICAgICB9IGNhdGNoIChsKSB7CiAgICAgICAgICAgIGlmICghdCkgdGhyb3cgbAogICAgICAgIH0KICAgIH0oZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGw7CiAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgaS5ob29rcy5hZGRTaGltcyA/IGkuaG9va3MuYWRkU2hpbXMocykgOiAobCA9IGkuc2hpbXMpLnB1c2guYXBwbHkobCwgcykKICAgIH0pLCBzCn0sICJvYmplY3QiID09IHR5cGVvZiBleHBvcnRzICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA9IGEoKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGEpIDogbFsiZm9udGF3ZXNvbWUtZnJlZS1zaGltcyJdID0gYSgpOw=="}},"time_used":88,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":88,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/themes/hello-elementor/assets/js/hello-frontend.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.816Z","timestamp":1785128398816,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/themes/hello-elementor/assets/js/hello-frontend.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 635\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"9ef-67c3620e-1e1c8cd4fe6ff2da;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 4c882ce8925cb8b1de170206bfa49c11-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":2543,"size_decoded":1221,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (410)","md5":"f84c03076112dbf6b5eff97b11a38188","sha1":"3394bec63bddd933513570fc21ef72f764e1e038","sha256":"6c40ba651502891d2444bcfe5c62e8abe1f6d57fd015b9a1960cf86ec806c5b5","sha512":"02181a6ccfbcf08f447eee69c3ed43d33ec1e025dcf0a666fd9c258fa8e8695b0e66c1ce814d5a817ab524f7dac13b516bcaceaef8adcb5023aaba1ac04eda68","ssdeep":"","tlshash":"2d519d0ab29259fa913f20637f0b991e7126809f74056a78356cb3cd4f54ca07bf2b75","first_seen":"2026-07-27T03:56:42.490535Z","last_seen":"2026-07-27T05:30:59.82332Z","times_seen":6,"resource_available":true,"data":"KCgpID0+IHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIGNsYXNzIGVsZW1lbnRvckhlbGxvVGhlbWVIYW5kbGVyIHsKICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgdGhpcy5pbml0U2V0dGluZ3MoKSwgdGhpcy5pbml0RWxlbWVudHMoKSwgdGhpcy5iaW5kRXZlbnRzKCkKICAgICAgICB9CiAgICAgICAgaW5pdFNldHRpbmdzKCkgewogICAgICAgICAgICB0aGlzLnNldHRpbmdzID0gewogICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiAiaGVhZGVyLnNpdGUtaGVhZGVyIiwKICAgICAgICAgICAgICAgICAgICBmb290ZXI6ICJmb290ZXIuc2l0ZS1mb290ZXIiLAogICAgICAgICAgICAgICAgICAgIG1lbnVUb2dnbGU6ICIuc2l0ZS1oZWFkZXIgLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUiLAogICAgICAgICAgICAgICAgICAgIG1lbnVUb2dnbGVIb2xkZXI6ICIuc2l0ZS1oZWFkZXIgLnNpdGUtbmF2aWdhdGlvbi10b2dnbGUtaG9sZGVyIiwKICAgICAgICAgICAgICAgICAgICBkcm9wZG93bk1lbnU6ICIuc2l0ZS1oZWFkZXIgLnNpdGUtbmF2aWdhdGlvbi1kcm9wZG93biIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpbml0RWxlbWVudHMoKSB7CiAgICAgICAgICAgIHRoaXMuZWxlbWVudHMgPSB7CiAgICAgICAgICAgICAgICAkd2luZG93OiBqUXVlcnkod2luZG93KSwKICAgICAgICAgICAgICAgICRkb2N1bWVudDogalF1ZXJ5KGRvY3VtZW50KSwKICAgICAgICAgICAgICAgICRoZWFkZXI6IGpRdWVyeSh0aGlzLnNldHRpbmdzLnNlbGVjdG9ycy5oZWFkZXIpLAogICAgICAgICAgICAgICAgJGZvb3RlcjogalF1ZXJ5KHRoaXMuc2V0dGluZ3Muc2VsZWN0b3JzLmZvb3RlciksCiAgICAgICAgICAgICAgICAkbWVudVRvZ2dsZTogalF1ZXJ5KHRoaXMuc2V0dGluZ3Muc2VsZWN0b3JzLm1lbnVUb2dnbGUpLAogICAgICAgICAgICAgICAgJG1lbnVUb2dnbGVIb2xkZXI6IGpRdWVyeSh0aGlzLnNldHRpbmdzLnNlbGVjdG9ycy5tZW51VG9nZ2xlSG9sZGVyKSwKICAgICAgICAgICAgICAgICRkcm9wZG93bk1lbnU6IGpRdWVyeSh0aGlzLnNldHRpbmdzLnNlbGVjdG9ycy5kcm9wZG93bk1lbnUpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kbWVudVRvZ2dsZS5vbigiY2xpY2siLCAoKCkgPT4gdGhpcy5oYW5kbGVNZW51VG9nZ2xlKCkpKS5vbigia2V5dXAiLCAoZSA9PiB7CiAgICAgICAgICAgICAgICAxMyAhPT0gZS5rZXlDb2RlICYmIDMyICE9PSBlLmtleUNvZGUgfHwgZS5jdXJyZW50VGFyZ2V0LmNsaWNrKCkKICAgICAgICAgICAgfSkpLCB0aGlzLmVsZW1lbnRzLiRkcm9wZG93bk1lbnUub24oImNsaWNrIiwgIi5tZW51LWl0ZW0taGFzLWNoaWxkcmVuID4gYSIsIHRoaXMuaGFuZGxlTWVudUNoaWxkcmVuKQogICAgICAgIH0KICAgICAgICBjbG9zZU1lbnVJdGVtcygpIHsKICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kbWVudVRvZ2dsZUhvbGRlci5yZW1vdmVDbGFzcygiZWxlbWVudG9yLWFjdGl2ZSIpLCB0aGlzLmVsZW1lbnRzLiR3aW5kb3cub2ZmKCJyZXNpemUiLCAoKCkgPT4gdGhpcy5jbG9zZU1lbnVJdGVtcygpKSkKICAgICAgICB9CiAgICAgICAgaGFuZGxlTWVudVRvZ2dsZSgpIHsKICAgICAgICAgICAgY29uc3QgZSA9ICF0aGlzLmVsZW1lbnRzLiRtZW51VG9nZ2xlSG9sZGVyLmhhc0NsYXNzKCJlbGVtZW50b3ItYWN0aXZlIik7CiAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJG1lbnVUb2dnbGUuYXR0cigiYXJpYS1leHBhbmRlZCIsIGUpLCB0aGlzLmVsZW1lbnRzLiRkcm9wZG93bk1lbnUuYXR0cigiYXJpYS1oaWRkZW4iLCAhZSksIHRoaXMuZWxlbWVudHMuJG1lbnVUb2dnbGVIb2xkZXIudG9nZ2xlQ2xhc3MoImVsZW1lbnRvci1hY3RpdmUiLCBlKSwgdGhpcy5lbGVtZW50cy4kZHJvcGRvd25NZW51LmZpbmQoIi5lbGVtZW50b3ItYWN0aXZlIikucmVtb3ZlQ2xhc3MoImVsZW1lbnRvci1hY3RpdmUiKSwgZSA/IHRoaXMuZWxlbWVudHMuJHdpbmRvdy5vbigicmVzaXplIiwgKCgpID0+IHRoaXMuY2xvc2VNZW51SXRlbXMoKSkpIDogdGhpcy5lbGVtZW50cy4kd2luZG93Lm9mZigicmVzaXplIiwgKCgpID0+IHRoaXMuY2xvc2VNZW51SXRlbXMoKSkpCiAgICAgICAgfQogICAgICAgIGhhbmRsZU1lbnVDaGlsZHJlbihlKSB7CiAgICAgICAgICAgIGNvbnN0IHQgPSBqUXVlcnkoZS5jdXJyZW50VGFyZ2V0KS5wYXJlbnQoImxpIik7CiAgICAgICAgICAgIHQuaGFzQ2xhc3MoImVsZW1lbnRvci1hY3RpdmUiKSA/IHQucmVtb3ZlQ2xhc3MoImVsZW1lbnRvci1hY3RpdmUiKSA6IHQuYWRkQ2xhc3MoImVsZW1lbnRvci1hY3RpdmUiKQogICAgICAgIH0KICAgIH0KICAgIGpRdWVyeSgoKCkgPT4gewogICAgICAgIG5ldyBlbGVtZW50b3JIZWxsb1RoZW1lSGFuZGxlcgogICAgfSkpCn0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWhlbGxvLWZyb250ZW5kLm1pbi5qcy5tYXA="}},"time_used":90,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":90,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/vendor/regenerator-runtime.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.823Z","timestamp":1785128398823,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-includes/js/dist/vendor/regenerator-runtime.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 2861\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 20:43:18 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"2bbb-67c3620e-bf16e3ed71c3b58d;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 461800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 6460bf1f27d08209c3647d1458ce7359-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.019\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":11195,"size_decoded":3449,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (658)","md5":"c294b19e3844545e75dac1706034baf7","sha1":"115025b3d4626dae8e5b61f5c5aa7e68aa56de68","sha256":"748e03bdccb80f74991934498360e2308d2601610334c89c10a8f7e7b8e53f14","sha512":"fc3e63085737165b84a1f5159baa0d46a971429664ad3cc9e346ff313f698b95c5c0941ea6f03b8594cda4ccb4fd7c33f205673c8f1e9caed0b65de227ec72e7","ssdeep":"192:qUhEbLnXG8NgStOggaq60Nl6LGkUyiAt+EOnjM9c9rdEQc+0+KiLyEqMULrQdb1r:qwEbLpX3D+c+0+KD5wrf6+cWKs1X","tlshash":"7832dd89baf7b0619303f138896f9408b235945f564ddd097e0ca6b0af91438d7b9fe8","first_seen":"2025-09-13T14:09:05.182292Z","last_seen":"2026-07-27T05:30:59.786787Z","times_seen":10,"resource_available":true,"data":"dmFyIHJ1bnRpbWUgPSBmdW5jdGlvbih0KSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgZSwgciA9IE9iamVjdC5wcm90b3R5cGUsCiAgICAgICAgbiA9IHIuaGFzT3duUHJvcGVydHksCiAgICAgICAgbyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB8fCBmdW5jdGlvbih0LCBlLCByKSB7CiAgICAgICAgICAgIHRbZV0gPSByLnZhbHVlCiAgICAgICAgfSwKICAgICAgICBpID0gKHcgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSkuaXRlcmF0b3IgfHwgIkBAaXRlcmF0b3IiLAogICAgICAgIGEgPSB3LmFzeW5jSXRlcmF0b3IgfHwgIkBAYXN5bmNJdGVyYXRvciIsCiAgICAgICAgYyA9IHcudG9TdHJpbmdUYWcgfHwgIkBAdG9TdHJpbmdUYWciOwoKICAgIGZ1bmN0aW9uIHUodCwgZSwgcikgewogICAgICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwgewogICAgICAgICAgICB2YWx1ZTogciwKICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIHdyaXRhYmxlOiAhMAogICAgICAgIH0pLCB0W2VdCiAgICB9CiAgICB0cnkgewogICAgICAgIHUoe30sICIiKQogICAgfSBjYXRjaCAocikgewogICAgICAgIHUgPSBmdW5jdGlvbih0LCBlLCByKSB7CiAgICAgICAgICAgIHJldHVybiB0W2VdID0gcgogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBoKHQsIHIsIG4sIGkpIHsKICAgICAgICB2YXIgYSwgYywgdSwgaDsKICAgICAgICByID0gciAmJiByLnByb3RvdHlwZSBpbnN0YW5jZW9mIHYgPyByIDogdiwgciA9IE9iamVjdC5jcmVhdGUoci5wcm90b3R5cGUpLCBpID0gbmV3IE8oaSB8fCBbXSk7CiAgICAgICAgcmV0dXJuIG8ociwgIl9pbnZva2UiLCB7CiAgICAgICAgICAgIHZhbHVlOiAoYSA9IHQsIGMgPSBuLCB1ID0gaSwgaCA9IGYsIGZ1bmN0aW9uKHQsIHIpIHsKICAgICAgICAgICAgICAgIGlmIChoID09PSBwKSB0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTsKICAgICAgICAgICAgICAgIGlmIChoID09PSB5KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJ0aHJvdyIgPT09IHQpIHRocm93IHI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmU6ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICh1Lm1ldGhvZCA9IHQsIHUuYXJnID0gcjs7KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB1LmRlbGVnYXRlOwogICAgICAgICAgICAgICAgICAgIGlmIChuICYmIChuID0gZnVuY3Rpb24gdChyLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4ubWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByLml0ZXJhdG9yW29dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IGUgPyAobi5kZWxlZ2F0ZSA9IG51bGwsICJ0aHJvdyIgPT09IG8gJiYgci5pdGVyYXRvci5yZXR1cm4gJiYgKG4ubWV0aG9kID0gInJldHVybiIsIG4uYXJnID0gZSwgdChyLCBuKSwgInRocm93IiA9PT0gbi5tZXRob2QpIHx8ICJyZXR1cm4iICE9PSBvICYmIChuLm1ldGhvZCA9ICJ0aHJvdyIsIG4uYXJnID0gbmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIiArIG8gKyAiJyBtZXRob2QiKSksIGcpIDogInRocm93IiA9PT0gKG8gPSBsKGksIHIuaXRlcmF0b3IsIG4uYXJnKSkudHlwZSA/IChuLm1ldGhvZCA9ICJ0aHJvdyIsIG4uYXJnID0gby5hcmcsIG4uZGVsZWdhdGUgPSBudWxsLCBnKSA6IChpID0gby5hcmcpID8gaS5kb25lID8gKG5bci5yZXN1bHROYW1lXSA9IGkudmFsdWUsIG4ubmV4dCA9IHIubmV4dExvYywgInJldHVybiIgIT09IG4ubWV0aG9kICYmIChuLm1ldGhvZCA9ICJuZXh0Iiwgbi5hcmcgPSBlKSwgbi5kZWxlZ2F0ZSA9IG51bGwsIGcpIDogaSA6IChuLm1ldGhvZCA9ICJ0aHJvdyIsIG4uYXJnID0gbmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSwgbi5kZWxlZ2F0ZSA9IG51bGwsIGcpCiAgICAgICAgICAgICAgICAgICAgICAgIH0obiwgdSksIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID09PSBnKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCJuZXh0IiA9PT0gdS5tZXRob2QpIHUuc2VudCA9IHUuX3NlbnQgPSB1LmFyZzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgidGhyb3ciID09PSB1Lm1ldGhvZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9PT0gZikgdGhyb3cgaCA9IHksIHUuYXJnOwogICAgICAgICAgICAgICAgICAgICAgICB1LmRpc3BhdGNoRXhjZXB0aW9uKHUuYXJnKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSAicmV0dXJuIiA9PT0gdS5tZXRob2QgJiYgdS5hYnJ1cHQoInJldHVybiIsIHUuYXJnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IHAsICJub3JtYWwiID09PSAobiA9IGwoYSwgYywgdSkpLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSB1LmRvbmUgPyB5IDogcywgbi5hcmcgIT09IGcpIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbi5hcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lOiB1LmRvbmUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSAidGhyb3ciID09PSBuLnR5cGUgJiYgKGggPSB5LCB1Lm1ldGhvZCA9ICJ0aHJvdyIsIHUuYXJnID0gbi5hcmcpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSksIHIKICAgIH0KCiAgICBmdW5jdGlvbiBsKHQsIGUsIHIpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogIm5vcm1hbCIsCiAgICAgICAgICAgICAgICBhcmc6IHQuY2FsbChlLCByKQogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogInRocm93IiwKICAgICAgICAgICAgICAgIGFyZzogdAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgdC53cmFwID0gaDsKICAgIHZhciBmID0gInN1c3BlbmRlZFN0YXJ0IiwKICAgICAgICBzID0gInN1c3BlbmRlZFlpZWxkIiwKICAgICAgICBwID0gImV4ZWN1dGluZyIsCiAgICAgICAgeSA9ICJjb21wbGV0ZWQiLAogICAgICAgIGcgPSB7fTsKCiAgICBmdW5jdGlvbiB2KCkge30KCiAgICBmdW5jdGlvbiBkKCkge30KCiAgICBmdW5jdGlvbiBtKCkge30KICAgIHZhciB3LCBiLCBMID0gKChiID0gKGIgPSAodSh3ID0ge30sIGksIChmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcwogICAgfSkpLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YpKSAmJiBiKGIoayhbXSkpKSkgJiYgYiAhPT0gciAmJiBuLmNhbGwoYiwgaSkgJiYgKHcgPSBiKSwgbS5wcm90b3R5cGUgPSB2LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodykpOwoKICAgIGZ1bmN0aW9uIHgodCkgewogICAgICAgIFsibmV4dCIsICJ0aHJvdyIsICJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHUodCwgZSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UoZSwgdCkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSkpCiAgICB9CgogICAgZnVuY3Rpb24gRSh0LCBlKSB7CiAgICAgICAgdmFyIHI7CiAgICAgICAgbyh0aGlzLCAiX2ludm9rZSIsIHsKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKG8sIGkpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBlKChmdW5jdGlvbihyLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24gcihvLCBpLCBhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidGhyb3ciICE9PSAobyA9IGwodFtvXSwgdCwgaSkpLnR5cGUpIHJldHVybiAoaSA9ICh1ID0gby5hcmcpLnZhbHVlKSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgaSAmJiBuLmNhbGwoaSwgIl9fYXdhaXQiKSA/IGUucmVzb2x2ZShpLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKCJuZXh0IiwgdCwgYSwgYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoInRocm93IiwgdCwgYSwgYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IGUucmVzb2x2ZShpKS50aGVuKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS52YWx1ZSA9IHQsIGEodSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByKCJ0aHJvdyIsIHQsIGEsIGMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKG8uYXJnKQogICAgICAgICAgICAgICAgICAgICAgICB9KG8sIGksIHIsIGEpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gciA9IHIgPyByLnRoZW4oYSwgYSkgOiBhKCkKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9CgogICAgZnVuY3Rpb24gaih0KSB7CiAgICAgICAgdmFyIGUgPSB7CiAgICAgICAgICAgIHRyeUxvYzogdFswXQogICAgICAgIH07CiAgICAgICAgMSBpbiB0ICYmIChlLmNhdGNoTG9jID0gdFsxXSksIDIgaW4gdCAmJiAoZS5maW5hbGx5TG9jID0gdFsyXSwgZS5hZnRlckxvYyA9IHRbM10pLCB0aGlzLnRyeUVudHJpZXMucHVzaChlKQogICAgfQoKICAgIGZ1bmN0aW9uIF8odCkgewogICAgICAgIHZhciBlID0gdC5jb21wbGV0aW9uIHx8IHt9OwogICAgICAgIGUudHlwZSA9ICJub3JtYWwiLCBkZWxldGUgZS5hcmcsIHQuY29tcGxldGlvbiA9IGUKICAgIH0KCiAgICBmdW5jdGlvbiBPKHQpIHsKICAgICAgICB0aGlzLnRyeUVudHJpZXMgPSBbewogICAgICAgICAgICB0cnlMb2M6ICJyb290IgogICAgICAgIH1dLCB0LmZvckVhY2goaiwgdGhpcyksIHRoaXMucmVzZXQoITApCiAgICB9CgogICAgZnVuY3Rpb24gayh0KSB7CiAgICAgICAgaWYgKHQgfHwgIiIgPT09IHQpIHsKICAgICAgICAgICAgdmFyIHIsIG8gPSB0W2ldOwogICAgICAgICAgICBpZiAobykgcmV0dXJuIG8uY2FsbCh0KTsKICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHQubmV4dCkgcmV0dXJuIHQ7CiAgICAgICAgICAgIGlmICghaXNOYU4odC5sZW5ndGgpKSByZXR1cm4gciA9IC0xLCAobyA9IGZ1bmN0aW9uIG8oKSB7CiAgICAgICAgICAgICAgICBmb3IgKDsgKytyIDwgdC5sZW5ndGg7KQogICAgICAgICAgICAgICAgICAgIGlmIChuLmNhbGwodCwgcikpIHJldHVybiBvLnZhbHVlID0gdFtyXSwgby5kb25lID0gITEsIG87CiAgICAgICAgICAgICAgICByZXR1cm4gby52YWx1ZSA9IGUsIG8uZG9uZSA9ICEwLCBvCiAgICAgICAgICAgIH0pLm5leHQgPSBvCiAgICAgICAgfQogICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IodHlwZW9mIHQgKyAiIGlzIG5vdCBpdGVyYWJsZSIpCiAgICB9CiAgICByZXR1cm4gbyhMLCAiY29uc3RydWN0b3IiLCB7CiAgICAgICAgdmFsdWU6IGQucHJvdG90eXBlID0gbSwKICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICB9KSwgbyhtLCAiY29uc3RydWN0b3IiLCB7CiAgICAgICAgdmFsdWU6IGQsCiAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgfSksIGQuZGlzcGxheU5hbWUgPSB1KG0sIGMsICJHZW5lcmF0b3JGdW5jdGlvbiIpLCB0LmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuICEhKHQgPSAiZnVuY3Rpb24iID09IHR5cGVvZiB0ICYmIHQuY29uc3RydWN0b3IpICYmICh0ID09PSBkIHx8ICJHZW5lcmF0b3JGdW5jdGlvbiIgPT09ICh0LmRpc3BsYXlOYW1lIHx8IHQubmFtZSkpCiAgICB9LCB0Lm1hcmsgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZih0LCBtKSA6ICh0Ll9fcHJvdG9fXyA9IG0sIHUodCwgYywgIkdlbmVyYXRvckZ1bmN0aW9uIikpLCB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTCksIHQKICAgIH0sIHQuYXdyYXAgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgX19hd2FpdDogdAogICAgICAgIH0KICAgIH0sIHgoRS5wcm90b3R5cGUpLCB1KEUucHJvdG90eXBlLCBhLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMKICAgIH0pKSwgdC5Bc3luY0l0ZXJhdG9yID0gRSwgdC5hc3luYyA9IGZ1bmN0aW9uKGUsIHIsIG4sIG8sIGkpIHsKICAgICAgICB2b2lkIDAgPT09IGkgJiYgKGkgPSBQcm9taXNlKTsKICAgICAgICB2YXIgYSA9IG5ldyBFKGgoZSwgciwgbiwgbyksIGkpOwogICAgICAgIHJldHVybiB0LmlzR2VuZXJhdG9yRnVuY3Rpb24ocikgPyBhIDogYS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdC5kb25lID8gdC52YWx1ZSA6IGEubmV4dCgpCiAgICAgICAgfSkpCiAgICB9LCB4KEwpLCB1KEwsIGMsICJHZW5lcmF0b3IiKSwgdShMLCBpLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMKICAgIH0pKSwgdShMLCAidG9TdHJpbmciLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuICJbb2JqZWN0IEdlbmVyYXRvcl0iCiAgICB9KSksIHQua2V5cyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICB2YXIgZSwgciA9IE9iamVjdCh0KSwKICAgICAgICAgICAgbiA9IFtdOwogICAgICAgIGZvciAoZSBpbiByKSBuLnB1c2goZSk7CiAgICAgICAgcmV0dXJuIG4ucmV2ZXJzZSgpLAogICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgZm9yICg7IG4ubGVuZ3RoOykgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5wb3AoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZSBpbiByKSByZXR1cm4gdC52YWx1ZSA9IGUsIHQuZG9uZSA9ICExLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdC5kb25lID0gITAsIHQKICAgICAgICAgICAgfQogICAgfSwgdC52YWx1ZXMgPSBrLCBPLnByb3RvdHlwZSA9IHsKICAgICAgICBjb25zdHJ1Y3RvcjogTywKICAgICAgICByZXNldDogZnVuY3Rpb24odCkgewogICAgICAgICAgICBpZiAodGhpcy5wcmV2ID0gMCwgdGhpcy5uZXh0ID0gMCwgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IGUsIHRoaXMuZG9uZSA9ICExLCB0aGlzLmRlbGVnYXRlID0gbnVsbCwgdGhpcy5tZXRob2QgPSAibmV4dCIsIHRoaXMuYXJnID0gZSwgdGhpcy50cnlFbnRyaWVzLmZvckVhY2goXyksICF0KQogICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiB0aGlzKSAidCIgPT09IHIuY2hhckF0KDApICYmIG4uY2FsbCh0aGlzLCByKSAmJiAhaXNOYU4oK3Iuc2xpY2UoMSkpICYmICh0aGlzW3JdID0gZSkKICAgICAgICB9LAogICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLmRvbmUgPSAhMDsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjsKICAgICAgICAgICAgaWYgKCJ0aHJvdyIgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnJ2YWwKICAgICAgICB9LAogICAgICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICh0aGlzLmRvbmUpIHRocm93IHQ7CiAgICAgICAgICAgIHZhciByID0gdGhpczsKCiAgICAgICAgICAgIGZ1bmN0aW9uIG8obiwgbykgewogICAgICAgICAgICAgICAgcmV0dXJuIGMudHlwZSA9ICJ0aHJvdyIsIGMuYXJnID0gdCwgci5uZXh0ID0gbiwgbyAmJiAoci5tZXRob2QgPSAibmV4dCIsIHIuYXJnID0gZSksICEhbwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgMCA8PSBpOyAtLWkpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy50cnlFbnRyaWVzW2ldLAogICAgICAgICAgICAgICAgICAgIGMgPSBhLmNvbXBsZXRpb247CiAgICAgICAgICAgICAgICBpZiAoInJvb3QiID09PSBhLnRyeUxvYykgcmV0dXJuIG8oImVuZCIpOwogICAgICAgICAgICAgICAgaWYgKGEudHJ5TG9jIDw9IHRoaXMucHJldikgewogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gbi5jYWxsKGEsICJjYXRjaExvYyIpLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gbi5jYWxsKGEsICJmaW5hbGx5TG9jIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHUgJiYgaCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgYS5jYXRjaExvYykgcmV0dXJuIG8oYS5jYXRjaExvYywgITApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgYS5maW5hbGx5TG9jKSByZXR1cm4gbyhhLmZpbmFsbHlMb2MpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBhLmNhdGNoTG9jKSByZXR1cm4gbyhhLmNhdGNoTG9jLCAhMCkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWgpIHRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGEuZmluYWxseUxvYykgcmV0dXJuIG8oYS5maW5hbGx5TG9jKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgYWJydXB0OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHIgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgMCA8PSByOyAtLXIpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy50cnlFbnRyaWVzW3JdOwogICAgICAgICAgICAgICAgaWYgKG8udHJ5TG9jIDw9IHRoaXMucHJldiAmJiBuLmNhbGwobywgImZpbmFsbHlMb2MiKSAmJiB0aGlzLnByZXYgPCBvLmZpbmFsbHlMb2MpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG87CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgYSA9IChpID0gaSAmJiAoImJyZWFrIiA9PT0gdCB8fCAiY29udGludWUiID09PSB0KSAmJiBpLnRyeUxvYyA8PSBlICYmIGUgPD0gaS5maW5hbGx5TG9jID8gbnVsbCA6IGkpID8gaS5jb21wbGV0aW9uIDoge307CiAgICAgICAgICAgIHJldHVybiBhLnR5cGUgPSB0LCBhLmFyZyA9IGUsIGkgPyAodGhpcy5tZXRob2QgPSAibmV4dCIsIHRoaXMubmV4dCA9IGkuZmluYWxseUxvYywgZykgOiB0aGlzLmNvbXBsZXRlKGEpCiAgICAgICAgfSwKICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICBpZiAoInRocm93IiA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZzsKICAgICAgICAgICAgcmV0dXJuICJicmVhayIgPT09IHQudHlwZSB8fCAiY29udGludWUiID09PSB0LnR5cGUgPyB0aGlzLm5leHQgPSB0LmFyZyA6ICJyZXR1cm4iID09PSB0LnR5cGUgPyAodGhpcy5ydmFsID0gdGhpcy5hcmcgPSB0LmFyZywgdGhpcy5tZXRob2QgPSAicmV0dXJuIiwgdGhpcy5uZXh0ID0gImVuZCIpIDogIm5vcm1hbCIgPT09IHQudHlwZSAmJiBlICYmICh0aGlzLm5leHQgPSBlKSwgZwogICAgICAgIH0sCiAgICAgICAgZmluaXNoOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgMCA8PSBlOyAtLWUpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy50cnlFbnRyaWVzW2VdOwogICAgICAgICAgICAgICAgaWYgKHIuZmluYWxseUxvYyA9PT0gdCkgcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLCByLmFmdGVyTG9jKSwgXyhyKSwgZwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBjYXRjaDogZnVuY3Rpb24odCkgewogICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IDAgPD0gZTsgLS1lKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgbiwgbyA9IHRoaXMudHJ5RW50cmllc1tlXTsKICAgICAgICAgICAgICAgIGlmIChvLnRyeUxvYyA9PT0gdCkgcmV0dXJuICJ0aHJvdyIgPT09IChyID0gby5jb21wbGV0aW9uKS50eXBlICYmIChuID0gci5hcmcsIF8obykpLCBuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKQogICAgICAgIH0sCiAgICAgICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24odCwgciwgbikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZSA9IHsKICAgICAgICAgICAgICAgIGl0ZXJhdG9yOiBrKHQpLAogICAgICAgICAgICAgICAgcmVzdWx0TmFtZTogciwKICAgICAgICAgICAgICAgIG5leHRMb2M6IG4KICAgICAgICAgICAgfSwgIm5leHQiID09PSB0aGlzLm1ldGhvZCAmJiAodGhpcy5hcmcgPSBlKSwgZwogICAgICAgIH0KICAgIH0sIHQKfSgib2JqZWN0IiA9PSB0eXBlb2YgbW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgOiB7fSk7CnRyeSB7CiAgICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lCn0gY2F0Y2ggKHQpIHsKICAgICJvYmplY3QiID09IHR5cGVvZiBnbG9iYWxUaGlzID8gZ2xvYmFsVGhpcy5yZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lIDogRnVuY3Rpb24oInIiLCAicmVnZW5lcmF0b3JSdW50aW1lID0gciIpKHJ1bnRpbWUpCn0="}},"time_used":84,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":84,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/vendor/react-dom.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.827Z","timestamp":1785128398827,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-includes/js/dist/vendor/react-dom.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 49113\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"4209c-67c3620e-968999438ca9fad4;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: a0563fb5aa688c86eacddd29ee55170c-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.020\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":270492,"size_decoded":49703,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (478)","md5":"dc2b81ee6bacc67f973178dbeb145ae8","sha1":"1aa12d5e9992f569c72fb5c85bafe649cb52d588","sha256":"565f4eb5bd4db38acdb1f488f55afc427440aa881719f97f2e49073c4df9d2d6","sha512":"ed9bffeb4a596baa91927496e856e37eaae2709985f5a446390ddbb77ab8a73ecae942cad8cc7e8773a4edb60614fa3daff2a45fd0384ff45a6a9edc9d5af19e","ssdeep":"1536:uyodIzCvwBBYWxwL4QZifagtZvKDEv7ucuUCgnNV1kEF3Ujqf3vL3MTJRXc1:uajXn2qZvXrd38c1","tlshash":"8f4452996ae226719213f13e0eafd8947339a80b074cdc523a0ce5645f5553c87bafec","first_seen":"2026-07-27T03:56:42.510275Z","last_seen":"2026-07-27T05:30:59.816769Z","times_seen":6,"resource_available":true,"data":"LyoqCiAqIEBsaWNlbnNlIFJlYWN0CiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcwogKgogKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovCiEgZnVuY3Rpb24oKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgZSwgbjsKICAgIGUgPSB0aGlzLCBuID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICBmb3IgKHZhciBuID0gImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PSIgKyBlLCB0ID0gMTsgdCA8IGFyZ3VtZW50cy5sZW5ndGg7IHQrKykgbiArPSAiJmFyZ3NbXT0iICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1t0XSk7CiAgICAgICAgICAgIHJldHVybiAiTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIgKyBlICsgIjsgdmlzaXQgIiArIG4gKyAiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByKGUsIG4pIHsKICAgICAgICAgICAgbChlLCBuKSwgbChlICsgIkNhcHR1cmUiLCBuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbChlLCBuKSB7CiAgICAgICAgICAgIGZvciAocmFbZV0gPSBuLCBlID0gMDsgZSA8IG4ubGVuZ3RoOyBlKyspIHRhLmFkZChuW2VdKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYShlLCBuLCB0LCByLCBsLCBhLCB1KSB7CiAgICAgICAgICAgIHRoaXMuYWNjZXB0c0Jvb2xlYW5zID0gMiA9PT0gbiB8fCAzID09PSBuIHx8IDQgPT09IG4sIHRoaXMuYXR0cmlidXRlTmFtZSA9IHIsIHRoaXMuYXR0cmlidXRlTmFtZXNwYWNlID0gbCwgdGhpcy5tdXN0VXNlUHJvcGVydHkgPSB0LCB0aGlzLnByb3BlcnR5TmFtZSA9IGUsIHRoaXMudHlwZSA9IG4sIHRoaXMuc2FuaXRpemVVUkwgPSBhLCB0aGlzLnJlbW92ZUVtcHR5U3RyaW5nID0gdQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdShlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHZhciBsID0gc2EuaGFzT3duUHJvcGVydHkobikgPyBzYVtuXSA6IG51bGw7CiAgICAgICAgICAgIChudWxsICE9PSBsID8gMCAhPT0gbC50eXBlIDogciB8fCAhKDIgPCBuLmxlbmd0aCkgfHwgIm8iICE9PSBuWzBdICYmICJPIiAhPT0gblswXSB8fCAibiIgIT09IG5bMV0gJiYgIk4iICE9PSBuWzFdKSAmJiAoZnVuY3Rpb24oZSwgbiwgdCwgcikgewogICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbiB8fCBmdW5jdGlvbihlLCBuLCB0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB0ICYmIDAgPT09IHQudHlwZSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzeW1ib2wiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhciAmJiAobnVsbCAhPT0gdCA/ICF0LmFjY2VwdHNCb29sZWFucyA6ICJkYXRhLSIgIT09IChlID0gZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsIDUpKSAmJiAiYXJpYS0iICE9PSBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KGUsIG4sIHQsIHIpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICBpZiAocikgcmV0dXJuICExOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHQpIHN3aXRjaCAodC50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIW47CiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEgPT09IG47CiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNOYU4obik7CiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNOYU4obikgfHwgMSA+IG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9KG4sIHQsIGwsIHIpICYmICh0ID0gbnVsbCksIHIgfHwgbnVsbCA9PT0gbCA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhIWFhLmNhbGwoaWEsIGUpIHx8ICFhYS5jYWxsKG9hLCBlKSAmJiAodWEudGVzdChlKSA/IGlhW2VdID0gITAgOiAob2FbZV0gPSAhMCwgITEpKQogICAgICAgICAgICB9KG4pICYmIChudWxsID09PSB0ID8gZS5yZW1vdmVBdHRyaWJ1dGUobikgOiBlLnNldEF0dHJpYnV0ZShuLCAiIiArIHQpKSA6IGwubXVzdFVzZVByb3BlcnR5ID8gZVtsLnByb3BlcnR5TmFtZV0gPSBudWxsID09PSB0ID8gMyAhPT0gbC50eXBlICYmICIiIDogdCA6IChuID0gbC5hdHRyaWJ1dGVOYW1lLCByID0gbC5hdHRyaWJ1dGVOYW1lc3BhY2UsIG51bGwgPT09IHQgPyBlLnJlbW92ZUF0dHJpYnV0ZShuKSA6ICh0ID0gMyA9PT0gKGwgPSBsLnR5cGUpIHx8IDQgPT09IGwgJiYgITAgPT09IHQgPyAiIiA6ICIiICsgdCwgciA/IGUuc2V0QXR0cmlidXRlTlMociwgbiwgdCkgOiBlLnNldEF0dHJpYnV0ZShuLCB0KSkpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbyhlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSBlIHx8ICJvYmplY3QiICE9IHR5cGVvZiBlID8gbnVsbCA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mKGUgPSBfYSAmJiBlW19hXSB8fCBlWyJAQGl0ZXJhdG9yIl0pID8gZSA6IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGkoZSwgbiwgdCkgewogICAgICAgICAgICBpZiAodm9pZCAwID09PSB6YSkgdHJ5IHsKICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCkKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgemEgPSAobiA9IGUuc3RhY2sudHJpbSgpLm1hdGNoKC9cbiggKihhdCApPykvKSkgJiYgblsxXSB8fCAiIgogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAiXG4iICsgemEgKyBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzKGUsIG4pIHsKICAgICAgICAgICAgaWYgKCFlIHx8IFRhKSByZXR1cm4gIiI7CiAgICAgICAgICAgIFRhID0gITA7CiAgICAgICAgICAgIHZhciB0ID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7CiAgICAgICAgICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gdm9pZCAwOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKG4pCiAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLCAicHJvcHMiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksICJvYmplY3QiID09IHR5cGVvZiBSZWZsZWN0ICYmIFJlZmxlY3QuY29uc3RydWN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZsZWN0LmNvbnN0cnVjdChuLCBbXSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZSwgW10sIG4pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY2FsbCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZS5jYWxsKG4ucHJvdG90eXBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICBpZiAobiAmJiByICYmICJzdHJpbmciID09IHR5cGVvZiBuLnN0YWNrKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IG4uc3RhY2suc3BsaXQoIlxuIiksIGEgPSByLnN0YWNrLnNwbGl0KCJcbiIpLCB1ID0gbC5sZW5ndGggLSAxLCBvID0gYS5sZW5ndGggLSAxOyAxIDw9IHUgJiYgMCA8PSBvICYmIGxbdV0gIT09IGFbb107KSBvLS07CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IDEgPD0gdSAmJiAwIDw9IG87IHUtLSwgby0tKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobFt1XSAhPT0gYVtvXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgIT09IHUgfHwgMSAhPT0gbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1LS0sIDAgPiAtLW8gfHwgbFt1XSAhPT0gYVtvXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAiXG4iICsgbFt1XS5yZXBsYWNlKCIgYXQgbmV3ICIsICIgYXQgIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5kaXNwbGF5TmFtZSAmJiBzLmluY2x1ZGVzKCI8YW5vbnltb3VzPiIpICYmIChzID0gcy5yZXBsYWNlKCI8YW5vbnltb3VzPiIsIGUuZGlzcGxheU5hbWUpKSwgcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoMSA8PSB1ICYmIDAgPD0gbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICBUYSA9ICExLCBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHQKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gKGUgPSBlID8gZS5kaXNwbGF5TmFtZSB8fCBlLm5hbWUgOiAiIikgPyBpKGUpIDogIiIKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgICAgICBzd2l0Y2ggKGUudGFnKSB7CiAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkoZS50eXBlKTsKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkoIkxhenkiKTsKICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkoIlN1c3BlbnNlIik7CiAgICAgICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgICAgICAgIHJldHVybiBpKCJTdXNwZW5zZUxpc3QiKTsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSBzKGUudHlwZSwgITEpOwogICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IHMoZS50eXBlLnJlbmRlciwgITEpOwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gcyhlLnR5cGUsICEwKTsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGYoZSkgewogICAgICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGUpIHJldHVybiBlLmRpc3BsYXlOYW1lIHx8IGUubmFtZSB8fCBudWxsOwogICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHJldHVybiBlOwogICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgaGE6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJGcmFnbWVudCI7CiAgICAgICAgICAgICAgICBjYXNlIG1hOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiUG9ydGFsIjsKICAgICAgICAgICAgICAgIGNhc2UgdmE6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJQcm9maWxlciI7CiAgICAgICAgICAgICAgICBjYXNlIGdhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiU3RyaWN0TW9kZSI7CiAgICAgICAgICAgICAgICBjYXNlIHdhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiU3VzcGVuc2UiOwogICAgICAgICAgICAgICAgY2FzZSBTYToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlN1c3BlbnNlTGlzdCIKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUpIHN3aXRjaCAoZS4kJHR5cGVvZikgewogICAgICAgICAgICAgICAgY2FzZSBiYToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUuZGlzcGxheU5hbWUgfHwgIkNvbnRleHQiKSArICIuQ29uc3VtZXIiOwogICAgICAgICAgICAgICAgY2FzZSB5YToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUuX2NvbnRleHQuZGlzcGxheU5hbWUgfHwgIkNvbnRleHQiKSArICIuUHJvdmlkZXIiOwogICAgICAgICAgICAgICAgY2FzZSBrYToKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUucmVuZGVyOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSA9IGUuZGlzcGxheU5hbWUpIHx8IChlID0gIiIgIT09IChlID0gbi5kaXNwbGF5TmFtZSB8fCBuLm5hbWUgfHwgIiIpID8gIkZvcndhcmRSZWYoIiArIGUgKyAiKSIgOiAiRm9yd2FyZFJlZiIpLCBlOwogICAgICAgICAgICAgICAgY2FzZSB4YToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gKG4gPSBlLmRpc3BsYXlOYW1lIHx8IG51bGwpID8gbiA6IGYoZS50eXBlKSB8fCAiTWVtbyI7CiAgICAgICAgICAgICAgICBjYXNlIEVhOgogICAgICAgICAgICAgICAgICAgIG4gPSBlLl9wYXlsb2FkLCBlID0gZS5faW5pdDsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZihlKG4pKQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGQoZSkgewogICAgICAgICAgICB2YXIgbiA9IGUudHlwZTsKICAgICAgICAgICAgc3dpdGNoIChlLnRhZykgewogICAgICAgICAgICAgICAgY2FzZSAyNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkNhY2hlIjsKICAgICAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG4uZGlzcGxheU5hbWUgfHwgIkNvbnRleHQiKSArICIuQ29uc3VtZXIiOwogICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG4uX2NvbnRleHQuZGlzcGxheU5hbWUgfHwgIkNvbnRleHQiKSArICIuUHJvdmlkZXIiOwogICAgICAgICAgICAgICAgY2FzZSAxODoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkRlaHlkcmF0ZWRGcmFnbWVudCI7CiAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gKGUgPSBuLnJlbmRlcikuZGlzcGxheU5hbWUgfHwgZS5uYW1lIHx8ICIiLCBuLmRpc3BsYXlOYW1lIHx8ICgiIiAhPT0gZSA/ICJGb3J3YXJkUmVmKCIgKyBlICsgIikiIDogIkZvcndhcmRSZWYiKTsKICAgICAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkZyYWdtZW50IjsKICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlBvcnRhbCI7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJSb290IjsKICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlRleHQiOwogICAgICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZihuKTsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA9PT0gZ2EgPyAiU3RyaWN0TW9kZSIgOiAiTW9kZSI7CiAgICAgICAgICAgICAgICBjYXNlIDIyOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiT2Zmc2NyZWVuIjsKICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJQcm9maWxlciI7CiAgICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiU2NvcGUiOwogICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlN1c3BlbnNlIjsKICAgICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJTdXNwZW5zZUxpc3QiOwogICAgICAgICAgICAgICAgY2FzZSAyNToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlRyYWNpbmdNYXJrZXIiOwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgY2FzZSAxNzoKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiBuKSByZXR1cm4gbi5kaXNwbGF5TmFtZSB8fCBuLm5hbWUgfHwgbnVsbDsKICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIG4pIHJldHVybiBuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHAoZSkgewogICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgY2FzZSAidW5kZWZpbmVkIjoKICAgICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLnR5cGU7CiAgICAgICAgICAgIHJldHVybiAoZSA9IGUubm9kZU5hbWUpICYmICJpbnB1dCIgPT09IGUudG9Mb3dlckNhc2UoKSAmJiAoImNoZWNrYm94IiA9PT0gbiB8fCAicmFkaW8iID09PSBuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaChlKSB7CiAgICAgICAgICAgIGUuX3ZhbHVlVHJhY2tlciB8fCAoZS5fdmFsdWVUcmFja2VyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBtKGUpID8gImNoZWNrZWQiIDogInZhbHVlIiwKICAgICAgICAgICAgICAgICAgICB0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgbiksCiAgICAgICAgICAgICAgICAgICAgciA9ICIiICsgZVtuXTsKICAgICAgICAgICAgICAgIGlmICghZS5oYXNPd25Qcm9wZXJ0eShuKSAmJiB2b2lkIDAgIT09IHQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdC5nZXQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdC5zZXQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHQuZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5zZXQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBuLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbC5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9ICIiICsgZSwgYS5jYWxsKHRoaXMsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdC5lbnVtZXJhYmxlCiAgICAgICAgICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAiIiArIGUKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFRyYWNraW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX3ZhbHVlVHJhY2tlciA9IG51bGwsIGRlbGV0ZSBlW25dCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0oZSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBnKGUpIHsKICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gITE7CiAgICAgICAgICAgIHZhciBuID0gZS5fdmFsdWVUcmFja2VyOwogICAgICAgICAgICBpZiAoIW4pIHJldHVybiAhMDsKICAgICAgICAgICAgdmFyIHQgPSBuLmdldFZhbHVlKCksCiAgICAgICAgICAgICAgICByID0gIiI7CiAgICAgICAgICAgIHJldHVybiBlICYmIChyID0gbShlKSA/IGUuY2hlY2tlZCA/ICJ0cnVlIiA6ICJmYWxzZSIgOiBlLnZhbHVlKSwgKGUgPSByKSAhPT0gdCAmJiAobi5zZXRWYWx1ZShlKSwgITApCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB2KGUpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gKGUgPSBlIHx8ICgidW5kZWZpbmVkIiAhPSB0eXBlb2YgZG9jdW1lbnQgPyBkb2N1bWVudCA6IHZvaWQgMCkpKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmFjdGl2ZUVsZW1lbnQgfHwgZS5ib2R5CiAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmJvZHkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geShlLCBuKSB7CiAgICAgICAgICAgIHZhciB0ID0gbi5jaGVja2VkOwogICAgICAgICAgICByZXR1cm4gTGEoe30sIG4sIHsKICAgICAgICAgICAgICAgIGRlZmF1bHRDaGVja2VkOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHZvaWQgMCwKICAgICAgICAgICAgICAgIHZhbHVlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBjaGVja2VkOiBudWxsICE9IHQgPyB0IDogZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkCiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBiKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBudWxsID09IG4uZGVmYXVsdFZhbHVlID8gIiIgOiBuLmRlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgIHIgPSBudWxsICE9IG4uY2hlY2tlZCA/IG4uY2hlY2tlZCA6IG4uZGVmYXVsdENoZWNrZWQ7CiAgICAgICAgICAgIHQgPSBwKG51bGwgIT0gbi52YWx1ZSA/IG4udmFsdWUgOiB0KSwgZS5fd3JhcHBlclN0YXRlID0gewogICAgICAgICAgICAgICAgaW5pdGlhbENoZWNrZWQ6IHIsCiAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWU6IHQsCiAgICAgICAgICAgICAgICBjb250cm9sbGVkOiAiY2hlY2tib3giID09PSBuLnR5cGUgfHwgInJhZGlvIiA9PT0gbi50eXBlID8gbnVsbCAhPSBuLmNoZWNrZWQgOiBudWxsICE9IG4udmFsdWUKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gayhlLCBuKSB7CiAgICAgICAgICAgIG51bGwgIT0gKG4gPSBuLmNoZWNrZWQpICYmIHUoZSwgImNoZWNrZWQiLCBuLCAhMSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHcoZSwgbikgewogICAgICAgICAgICBrKGUsIG4pOwogICAgICAgICAgICB2YXIgdCA9IHAobi52YWx1ZSksCiAgICAgICAgICAgICAgICByID0gbi50eXBlOwogICAgICAgICAgICBpZiAobnVsbCAhPSB0KSAibnVtYmVyIiA9PT0gciA/ICgwID09PSB0ICYmICIiID09PSBlLnZhbHVlIHx8IGUudmFsdWUgIT0gdCkgJiYgKGUudmFsdWUgPSAiIiArIHQpIDogZS52YWx1ZSAhPT0gIiIgKyB0ICYmIChlLnZhbHVlID0gIiIgKyB0KTsKICAgICAgICAgICAgZWxzZSBpZiAoInN1Ym1pdCIgPT09IHIgfHwgInJlc2V0IiA9PT0gcikgcmV0dXJuIHZvaWQgZS5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIik7CiAgICAgICAgICAgIG4uaGFzT3duUHJvcGVydHkoInZhbHVlIikgPyB4KGUsIG4udHlwZSwgdCkgOiBuLmhhc093blByb3BlcnR5KCJkZWZhdWx0VmFsdWUiKSAmJiB4KGUsIG4udHlwZSwgcChuLmRlZmF1bHRWYWx1ZSkpLCBudWxsID09IG4uY2hlY2tlZCAmJiBudWxsICE9IG4uZGVmYXVsdENoZWNrZWQgJiYgKGUuZGVmYXVsdENoZWNrZWQgPSAhIW4uZGVmYXVsdENoZWNrZWQpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBTKGUsIG4sIHQpIHsKICAgICAgICAgICAgaWYgKG4uaGFzT3duUHJvcGVydHkoInZhbHVlIikgfHwgbi5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdFZhbHVlIikpIHsKICAgICAgICAgICAgICAgIHZhciByID0gbi50eXBlOwogICAgICAgICAgICAgICAgaWYgKCEoInN1Ym1pdCIgIT09IHIgJiYgInJlc2V0IiAhPT0gciB8fCB2b2lkIDAgIT09IG4udmFsdWUgJiYgbnVsbCAhPT0gbi52YWx1ZSkpIHJldHVybjsKICAgICAgICAgICAgICAgIG4gPSAiIiArIGUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsIHQgfHwgbiA9PT0gZS52YWx1ZSB8fCAoZS52YWx1ZSA9IG4pLCBlLmRlZmF1bHRWYWx1ZSA9IG4KICAgICAgICAgICAgfQogICAgICAgICAgICAiIiAhPT0gKHQgPSBlLm5hbWUpICYmIChlLm5hbWUgPSAiIiksIGUuZGVmYXVsdENoZWNrZWQgPSAhIWUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCwgIiIgIT09IHQgJiYgKGUubmFtZSA9IHQpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB4KGUsIG4sIHQpIHsKICAgICAgICAgICAgIm51bWJlciIgPT09IG4gJiYgdihlLm93bmVyRG9jdW1lbnQpID09PSBlIHx8IChudWxsID09IHQgPyBlLmRlZmF1bHRWYWx1ZSA9ICIiICsgZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSA6IGUuZGVmYXVsdFZhbHVlICE9PSAiIiArIHQgJiYgKGUuZGVmYXVsdFZhbHVlID0gIiIgKyB0KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEUoZSwgbiwgdCwgcikgewogICAgICAgICAgICBpZiAoZSA9IGUub3B0aW9ucywgbikgewogICAgICAgICAgICAgICAgbiA9IHt9OwogICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCB0Lmxlbmd0aDsgbCsrKSBuWyIkIiArIHRbbF1dID0gITA7CiAgICAgICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgZS5sZW5ndGg7IHQrKykgbCA9IG4uaGFzT3duUHJvcGVydHkoIiQiICsgZVt0XS52YWx1ZSksIGVbdF0uc2VsZWN0ZWQgIT09IGwgJiYgKGVbdF0uc2VsZWN0ZWQgPSBsKSwgbCAmJiByICYmIChlW3RdLmRlZmF1bHRTZWxlY3RlZCA9ICEwKQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZm9yICh0ID0gIiIgKyBwKHQpLCBuID0gbnVsbCwgbCA9IDA7IGwgPCBlLmxlbmd0aDsgbCsrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVbbF0udmFsdWUgPT09IHQpIHJldHVybiBlW2xdLnNlbGVjdGVkID0gITAsIHZvaWQociAmJiAoZVtsXS5kZWZhdWx0U2VsZWN0ZWQgPSAhMCkpOwogICAgICAgICAgICAgICAgICAgIG51bGwgIT09IG4gfHwgZVtsXS5kaXNhYmxlZCB8fCAobiA9IGVbbF0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBudWxsICE9PSBuICYmIChuLnNlbGVjdGVkID0gITApCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEMoZSwgbikgewogICAgICAgICAgICBpZiAobnVsbCAhPSBuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSB0aHJvdyBFcnJvcih0KDkxKSk7CiAgICAgICAgICAgIHJldHVybiBMYSh7fSwgbiwgewogICAgICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCwKICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdm9pZCAwLAogICAgICAgICAgICAgICAgY2hpbGRyZW46ICIiICsgZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZQogICAgICAgICAgICB9KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geihlLCBuKSB7CiAgICAgICAgICAgIHZhciByID0gbi52YWx1ZTsKICAgICAgICAgICAgaWYgKG51bGwgPT0gcikgewogICAgICAgICAgICAgICAgaWYgKHIgPSBuLmNoaWxkcmVuLCBuID0gbi5kZWZhdWx0VmFsdWUsIG51bGwgIT0gcikgewogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG4pIHRocm93IEVycm9yKHQoOTIpKTsKICAgICAgICAgICAgICAgICAgICBpZiAoTWEocikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPCByLmxlbmd0aCkgdGhyb3cgRXJyb3IodCg5MykpOwogICAgICAgICAgICAgICAgICAgICAgICByID0gclswXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBuID0gcgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbnVsbCA9PSBuICYmIChuID0gIiIpLCByID0gbgogICAgICAgICAgICB9CiAgICAgICAgICAgIGUuX3dyYXBwZXJTdGF0ZSA9IHsKICAgICAgICAgICAgICAgIGluaXRpYWxWYWx1ZTogcChyKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBOKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBwKG4udmFsdWUpLAogICAgICAgICAgICAgICAgciA9IHAobi5kZWZhdWx0VmFsdWUpOwogICAgICAgICAgICBudWxsICE9IHQgJiYgKCh0ID0gIiIgKyB0KSAhPT0gZS52YWx1ZSAmJiAoZS52YWx1ZSA9IHQpLCBudWxsID09IG4uZGVmYXVsdFZhbHVlICYmIGUuZGVmYXVsdFZhbHVlICE9PSB0ICYmIChlLmRlZmF1bHRWYWx1ZSA9IHQpKSwgbnVsbCAhPSByICYmIChlLmRlZmF1bHRWYWx1ZSA9ICIiICsgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFAoZSwgbikgewogICAgICAgICAgICAobiA9IGUudGV4dENvbnRlbnQpID09PSBlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlICYmICIiICE9PSBuICYmIG51bGwgIT09IG4gJiYgKGUudmFsdWUgPSBuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gXyhlKSB7CiAgICAgICAgICAgIHN3aXRjaCAoZSkgewogICAgICAgICAgICAgICAgY2FzZSAic3ZnIjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjsKICAgICAgICAgICAgICAgIGNhc2UgIm1hdGgiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTChlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgfHwgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID09PSBlID8gXyhuKSA6ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgPT09IGUgJiYgImZvcmVpZ25PYmplY3QiID09PSBuID8gImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIDogZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVChlLCBuLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IG4gfHwgImJvb2xlYW4iID09IHR5cGVvZiBuIHx8ICIiID09PSBuID8gIiIgOiB0IHx8ICJudW1iZXIiICE9IHR5cGVvZiBuIHx8IDAgPT09IG4gfHwgRGEuaGFzT3duUHJvcGVydHkoZSkgJiYgRGFbZV0gPyAoIiIgKyBuKS50cmltKCkgOiBuICsgInB4IgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTShlLCBuKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgaW4gZSA9IGUuc3R5bGUsIG4pCiAgICAgICAgICAgICAgICBpZiAobi5oYXNPd25Qcm9wZXJ0eSh0KSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gMCA9PT0gdC5pbmRleE9mKCItLSIpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gVCh0LCBuW3RdLCByKTsKICAgICAgICAgICAgICAgICAgICAiZmxvYXQiID09PSB0ICYmICh0ID0gImNzc0Zsb2F0IiksIHIgPyBlLnNldFByb3BlcnR5KHQsIGwpIDogZVt0XSA9IGwKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEYoZSwgbikgewogICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgaWYgKElhW2VdICYmIChudWxsICE9IG4uY2hpbGRyZW4gfHwgbnVsbCAhPSBuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSkgdGhyb3cgRXJyb3IodCgxMzcsIGUpKTsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBuLmNoaWxkcmVuKSB0aHJvdyBFcnJvcih0KDYwKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiICE9IHR5cGVvZiBuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIHx8ICEoIl9faHRtbCIgaW4gbi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpIHRocm93IEVycm9yKHQoNjEpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gbi5zdHlsZSAmJiAib2JqZWN0IiAhPSB0eXBlb2Ygbi5zdHlsZSkgdGhyb3cgRXJyb3IodCg2MikpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFIoZSwgbikgewogICAgICAgICAgICBpZiAoLTEgPT09IGUuaW5kZXhPZigiLSIpKSByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIG4uaXM7CiAgICAgICAgICAgIHN3aXRjaCAoZSkgewogICAgICAgICAgICAgICAgY2FzZSAiYW5ub3RhdGlvbi14bWwiOgogICAgICAgICAgICAgICAgY2FzZSAiY29sb3ItcHJvZmlsZSI6CiAgICAgICAgICAgICAgICBjYXNlICJmb250LWZhY2UiOgogICAgICAgICAgICAgICAgY2FzZSAiZm9udC1mYWNlLXNyYyI6CiAgICAgICAgICAgICAgICBjYXNlICJmb250LWZhY2UtdXJpIjoKICAgICAgICAgICAgICAgIGNhc2UgImZvbnQtZmFjZS1mb3JtYXQiOgogICAgICAgICAgICAgICAgY2FzZSAiZm9udC1mYWNlLW5hbWUiOgogICAgICAgICAgICAgICAgY2FzZSAibWlzc2luZy1nbHlwaCI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRChlKSB7CiAgICAgICAgICAgIHJldHVybiAoZSA9IGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudCB8fCB3aW5kb3cpLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ICYmIChlID0gZS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCksIDMgPT09IGUubm9kZVR5cGUgPyBlLnBhcmVudE5vZGUgOiBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBPKGUpIHsKICAgICAgICAgICAgaWYgKGUgPSBtbihlKSkgewogICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIFZhKSB0aHJvdyBFcnJvcih0KDI4MCkpOwogICAgICAgICAgICAgICAgdmFyIG4gPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgIG4gJiYgKG4gPSBnbihuKSwgVmEoZS5zdGF0ZU5vZGUsIGUudHlwZSwgbikpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEkoZSkgewogICAgICAgICAgICBBYSA/IEJhID8gQmEucHVzaChlKSA6IEJhID0gW2VdIDogQWEgPSBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBVKCkgewogICAgICAgICAgICBpZiAoQWEpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gQWEsCiAgICAgICAgICAgICAgICAgICAgbiA9IEJhOwogICAgICAgICAgICAgICAgaWYgKEJhID0gQWEgPSBudWxsLCBPKGUpLCBuKQogICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCBuLmxlbmd0aDsgZSsrKSBPKG5bZV0pCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFYoZSwgbiwgdCkgewogICAgICAgICAgICBpZiAoUWEpIHJldHVybiBlKG4sIHQpOwogICAgICAgICAgICBRYSA9ICEwOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIFdhKGUsIG4sIHQpCiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICBRYSA9ICExLCAobnVsbCAhPT0gQWEgfHwgbnVsbCAhPT0gQmEpICYmIChIYSgpLCBVKCkpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEEoZSwgbikgewogICAgICAgICAgICB2YXIgciA9IGUuc3RhdGVOb2RlOwogICAgICAgICAgICBpZiAobnVsbCA9PT0gcikgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIHZhciBsID0gZ24ocik7CiAgICAgICAgICAgIGlmIChudWxsID09PSBsKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgciA9IGxbbl07CiAgICAgICAgICAgIGU6IHN3aXRjaCAobikgewogICAgICAgICAgICAgICAgY2FzZSAib25DbGljayI6CiAgICAgICAgICAgICAgICBjYXNlICJvbkNsaWNrQ2FwdHVyZSI6CiAgICAgICAgICAgICAgICBjYXNlICJvbkRvdWJsZUNsaWNrIjoKICAgICAgICAgICAgICAgIGNhc2UgIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjoKICAgICAgICAgICAgICAgIGNhc2UgIm9uTW91c2VEb3duIjoKICAgICAgICAgICAgICAgIGNhc2UgIm9uTW91c2VEb3duQ2FwdHVyZSI6CiAgICAgICAgICAgICAgICBjYXNlICJvbk1vdXNlTW92ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJvbk1vdXNlTW92ZUNhcHR1cmUiOgogICAgICAgICAgICAgICAgY2FzZSAib25Nb3VzZVVwIjoKICAgICAgICAgICAgICAgIGNhc2UgIm9uTW91c2VVcENhcHR1cmUiOgogICAgICAgICAgICAgICAgY2FzZSAib25Nb3VzZUVudGVyIjoKICAgICAgICAgICAgICAgICAgICAobCA9ICFsLmRpc2FibGVkKSB8fCAobCA9ICEoImJ1dHRvbiIgPT09IChlID0gZS50eXBlKSB8fCAiaW5wdXQiID09PSBlIHx8ICJzZWxlY3QiID09PSBlIHx8ICJ0ZXh0YXJlYSIgPT09IGUpKSwgZSA9ICFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGUgPSAhMQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChlKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgaWYgKHIgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgcikgdGhyb3cgRXJyb3IodCgyMzEsIG4sIHR5cGVvZiByKSk7CiAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBCKGUsIG4sIHQsIHIsIGwsIGEsIHUsIG8sIGkpIHsKICAgICAgICAgICAgR2EgPSAhMSwgWmEgPSBudWxsLCBYYS5hcHBseShudSwgYXJndW1lbnRzKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVyhlLCBuLCByLCBsLCBhLCB1LCBvLCBpLCBzKSB7CiAgICAgICAgICAgIGlmIChCLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIEdhKSB7CiAgICAgICAgICAgICAgICBpZiAoIUdhKSB0aHJvdyBFcnJvcih0KDE5OCkpOwogICAgICAgICAgICAgICAgdmFyIGMgPSBaYTsKICAgICAgICAgICAgICAgIEdhID0gITEsIFphID0gbnVsbCwgSmEgfHwgKEphID0gITAsIGV1ID0gYykKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSChlKSB7CiAgICAgICAgICAgIHZhciBuID0gZSwKICAgICAgICAgICAgICAgIHQgPSBlOwogICAgICAgICAgICBpZiAoZS5hbHRlcm5hdGUpCiAgICAgICAgICAgICAgICBmb3IgKDsgbi5yZXR1cm47KSBuID0gbi5yZXR1cm47CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZSA9IG47CiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgMCAhPSAoNDA5OCAmIChuID0gZSkuZmxhZ3MpICYmICh0ID0gbi5yZXR1cm4pLCBlID0gbi5yZXR1cm4KICAgICAgICAgICAgICAgIH0gd2hpbGUgKGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIDMgPT09IG4udGFnID8gdCA6IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFEoZSkgewogICAgICAgICAgICBpZiAoMTMgPT09IGUudGFnKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGUubWVtb2l6ZWRTdGF0ZTsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBuICYmIG51bGwgIT09IChlID0gZS5hbHRlcm5hdGUpICYmIChuID0gZS5tZW1vaXplZFN0YXRlKSwgbnVsbCAhPT0gbikgcmV0dXJuIG4uZGVoeWRyYXRlZAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBqKGUpIHsKICAgICAgICAgICAgaWYgKEgoZSkgIT09IGUpIHRocm93IEVycm9yKHQoMTg4KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uICQoZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gKGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGUuYWx0ZXJuYXRlOwogICAgICAgICAgICAgICAgaWYgKCFuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IChuID0gSChlKSkpIHRocm93IEVycm9yKHQoMTg4KSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gIT09IGUgPyBudWxsIDogZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IGUsIGwgPSBuOzspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHIucmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBhKSBicmVhazsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGEuYWx0ZXJuYXRlOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAobCA9IGEucmV0dXJuKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChhLmNoaWxkID09PSB1LmNoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IGEuY2hpbGQ7IHU7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9PT0gcikgcmV0dXJuIGooYSksIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9PT0gbCkgcmV0dXJuIGooYSksIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdS5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IodCgxODgpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoci5yZXR1cm4gIT09IGwucmV0dXJuKSByID0gYSwgbCA9IHU7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSAhMSwgaSA9IGEuY2hpbGQ7IGk7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgciA9IGEsIGwgPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgbCA9IGEsIHIgPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaS5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSB1LmNoaWxkOyBpOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAhMCwgciA9IHUsIGwgPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITAsIGwgPSB1LCByID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkuc2libGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvKSB0aHJvdyBFcnJvcih0KDE4OSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHIuYWx0ZXJuYXRlICE9PSBsKSB0aHJvdyBFcnJvcih0KDE5MCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoMyAhPT0gci50YWcpIHRocm93IEVycm9yKHQoMTg4KSk7CiAgICAgICAgICAgICAgICByZXR1cm4gci5zdGF0ZU5vZGUuY3VycmVudCA9PT0gciA/IGUgOiBuCiAgICAgICAgICAgIH0oZSkpID8gcShlKSA6IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHEoZSkgewogICAgICAgICAgICBpZiAoNSA9PT0gZS50YWcgfHwgNiA9PT0gZS50YWcpIHJldHVybiBlOwogICAgICAgICAgICBmb3IgKGUgPSBlLmNoaWxkOyBudWxsICE9PSBlOykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBxKGUpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IG4pIHJldHVybiBuOwogICAgICAgICAgICAgICAgZSA9IGUuc2libGluZwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBLKGUpIHsKICAgICAgICAgICAgc3dpdGNoIChlICYgLWUpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gODsKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE2OwogICAgICAgICAgICAgICAgY2FzZSAzMjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzI7CiAgICAgICAgICAgICAgICBjYXNlIDY0OgogICAgICAgICAgICAgICAgY2FzZSAxMjg6CiAgICAgICAgICAgICAgICBjYXNlIDI1NjoKICAgICAgICAgICAgICAgIGNhc2UgNTEyOgogICAgICAgICAgICAgICAgY2FzZSAxMDI0OgogICAgICAgICAgICAgICAgY2FzZSAyMDQ4OgogICAgICAgICAgICAgICAgY2FzZSA0MDk2OgogICAgICAgICAgICAgICAgY2FzZSA4MTkyOgogICAgICAgICAgICAgICAgY2FzZSAxNjM4NDoKICAgICAgICAgICAgICAgIGNhc2UgMzI3Njg6CiAgICAgICAgICAgICAgICBjYXNlIDY1NTM2OgogICAgICAgICAgICAgICAgY2FzZSAxMzEwNzI6CiAgICAgICAgICAgICAgICBjYXNlIDI2MjE0NDoKICAgICAgICAgICAgICAgIGNhc2UgNTI0Mjg4OgogICAgICAgICAgICAgICAgY2FzZSAxMDQ4NTc2OgogICAgICAgICAgICAgICAgY2FzZSAyMDk3MTUyOgogICAgICAgICAgICAgICAgICAgIHJldHVybiA0MTk0MjQwICYgZTsKICAgICAgICAgICAgICAgIGNhc2UgNDE5NDMwNDoKICAgICAgICAgICAgICAgIGNhc2UgODM4ODYwODoKICAgICAgICAgICAgICAgIGNhc2UgMTY3NzcyMTY6CiAgICAgICAgICAgICAgICBjYXNlIDMzNTU0NDMyOgogICAgICAgICAgICAgICAgY2FzZSA2NzEwODg2NDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTMwMDIzNDI0ICYgZTsKICAgICAgICAgICAgICAgIGNhc2UgMTM0MjE3NzI4OgogICAgICAgICAgICAgICAgICAgIHJldHVybiAxMzQyMTc3Mjg7CiAgICAgICAgICAgICAgICBjYXNlIDI2ODQzNTQ1NjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjY4NDM1NDU2OwogICAgICAgICAgICAgICAgY2FzZSA1MzY4NzA5MTI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDUzNjg3MDkxMjsKICAgICAgICAgICAgICAgIGNhc2UgMTA3Mzc0MTgyNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA3Mzc0MTgyNDsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWShlLCBuKSB7CiAgICAgICAgICAgIHZhciB0ID0gZS5wZW5kaW5nTGFuZXM7CiAgICAgICAgICAgIGlmICgwID09PSB0KSByZXR1cm4gMDsKICAgICAgICAgICAgdmFyIHIgPSAwLAogICAgICAgICAgICAgICAgbCA9IGUuc3VzcGVuZGVkTGFuZXMsCiAgICAgICAgICAgICAgICBhID0gZS5waW5nZWRMYW5lcywKICAgICAgICAgICAgICAgIHUgPSAyNjg0MzU0NTUgJiB0OwogICAgICAgICAgICBpZiAoMCAhPT0gdSkgewogICAgICAgICAgICAgICAgdmFyIG8gPSB1ICYgfmw7CiAgICAgICAgICAgICAgICAwICE9PSBvID8gciA9IEsobykgOiAwICE9IChhICY9IHUpICYmIChyID0gSyhhKSkKICAgICAgICAgICAgfSBlbHNlIDAgIT0gKHUgPSB0ICYgfmwpID8gciA9IEsodSkgOiAwICE9PSBhICYmIChyID0gSyhhKSk7CiAgICAgICAgICAgIGlmICgwID09PSByKSByZXR1cm4gMDsKICAgICAgICAgICAgaWYgKDAgIT09IG4gJiYgbiAhPT0gciAmJiAwID09IChuICYgbCkgJiYgKChsID0gciAmIC1yKSA+PSAoYSA9IG4gJiAtbikgfHwgMTYgPT09IGwgJiYgMCAhPSAoNDE5NDI0MCAmIGEpKSkgcmV0dXJuIG47CiAgICAgICAgICAgIGlmICgwICE9ICg0ICYgcikgJiYgKHIgfD0gMTYgJiB0KSwgMCAhPT0gKG4gPSBlLmVudGFuZ2xlZExhbmVzKSkKICAgICAgICAgICAgICAgIGZvciAoZSA9IGUuZW50YW5nbGVtZW50cywgbiAmPSByOyAwIDwgbjspIGwgPSAxIDw8ICh0ID0gMzEgLSB5dShuKSksIHIgfD0gZVt0XSwgbiAmPSB+bDsKICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFgoZSwgbikgewogICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiArIDI1MDsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICBjYXNlIDMyOgogICAgICAgICAgICAgICAgY2FzZSA2NDoKICAgICAgICAgICAgICAgIGNhc2UgMTI4OgogICAgICAgICAgICAgICAgY2FzZSAyNTY6CiAgICAgICAgICAgICAgICBjYXNlIDUxMjoKICAgICAgICAgICAgICAgIGNhc2UgMTAyNDoKICAgICAgICAgICAgICAgIGNhc2UgMjA0ODoKICAgICAgICAgICAgICAgIGNhc2UgNDA5NjoKICAgICAgICAgICAgICAgIGNhc2UgODE5MjoKICAgICAgICAgICAgICAgIGNhc2UgMTYzODQ6CiAgICAgICAgICAgICAgICBjYXNlIDMyNzY4OgogICAgICAgICAgICAgICAgY2FzZSA2NTUzNjoKICAgICAgICAgICAgICAgIGNhc2UgMTMxMDcyOgogICAgICAgICAgICAgICAgY2FzZSAyNjIxNDQ6CiAgICAgICAgICAgICAgICBjYXNlIDUyNDI4ODoKICAgICAgICAgICAgICAgIGNhc2UgMTA0ODU3NjoKICAgICAgICAgICAgICAgIGNhc2UgMjA5NzE1MjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiArIDVlMzsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEcoZSkgewogICAgICAgICAgICByZXR1cm4gMCAhPSAoZSA9IC0xMDczNzQxODI1ICYgZS5wZW5kaW5nTGFuZXMpID8gZSA6IDEwNzM3NDE4MjQgJiBlID8gMTA3Mzc0MTgyNCA6IDAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFooKSB7CiAgICAgICAgICAgIHZhciBlID0gd3U7CiAgICAgICAgICAgIHJldHVybiAwID09ICg0MTk0MjQwICYgKHd1IDw8PSAxKSkgJiYgKHd1ID0gNjQpLCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBKKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IFtdLCB0ID0gMDsgMzEgPiB0OyB0KyspIG4ucHVzaChlKTsKICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGVlKGUsIG4sIHQpIHsKICAgICAgICAgICAgZS5wZW5kaW5nTGFuZXMgfD0gbiwgNTM2ODcwOTEyICE9PSBuICYmIChlLnN1c3BlbmRlZExhbmVzID0gMCwgZS5waW5nZWRMYW5lcyA9IDApLCAoZSA9IGUuZXZlbnRUaW1lcylbbiA9IDMxIC0geXUobildID0gdAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbmUoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IGUuZW50YW5nbGVkTGFuZXMgfD0gbjsKICAgICAgICAgICAgZm9yIChlID0gZS5lbnRhbmdsZW1lbnRzOyB0OykgewogICAgICAgICAgICAgICAgdmFyIHIgPSAzMSAtIHl1KHQpLAogICAgICAgICAgICAgICAgICAgIGwgPSAxIDw8IHI7CiAgICAgICAgICAgICAgICBsICYgbiB8IGVbcl0gJiBuICYmIChlW3JdIHw9IG4pLCB0ICY9IH5sCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHRlKGUpIHsKICAgICAgICAgICAgcmV0dXJuIDEgPCAoZSAmPSAtZSkgPyA0IDwgZSA/IDAgIT0gKDI2ODQzNTQ1NSAmIGUpID8gMTYgOiA1MzY4NzA5MTIgOiA0IDogMQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcmUoZSwgbikgewogICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgImZvY3VzaW4iOgogICAgICAgICAgICAgICAgY2FzZSAiZm9jdXNvdXQiOgogICAgICAgICAgICAgICAgICAgIHp1ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgImRyYWdlbnRlciI6CiAgICAgICAgICAgICAgICBjYXNlICJkcmFnbGVhdmUiOgogICAgICAgICAgICAgICAgICAgIE51ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNlb3ZlciI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZW91dCI6CiAgICAgICAgICAgICAgICAgICAgUHUgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcm92ZXIiOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcm91dCI6CiAgICAgICAgICAgICAgICAgICAgX3UuZGVsZXRlKG4ucG9pbnRlcklkKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgImdvdHBvaW50ZXJjYXB0dXJlIjoKICAgICAgICAgICAgICAgIGNhc2UgImxvc3Rwb2ludGVyY2FwdHVyZSI6CiAgICAgICAgICAgICAgICAgICAgTHUuZGVsZXRlKG4ucG9pbnRlcklkKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBsZShlLCBuLCB0LCByLCBsLCBhKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSBlIHx8IGUubmF0aXZlRXZlbnQgIT09IGEgPyAoZSA9IHsKICAgICAgICAgICAgICAgIGJsb2NrZWRPbjogbiwKICAgICAgICAgICAgICAgIGRvbUV2ZW50TmFtZTogdCwKICAgICAgICAgICAgICAgIGV2ZW50U3lzdGVtRmxhZ3M6IHIsCiAgICAgICAgICAgICAgICBuYXRpdmVFdmVudDogYSwKICAgICAgICAgICAgICAgIHRhcmdldENvbnRhaW5lcnM6IFtsXQogICAgICAgICAgICB9LCBudWxsICE9PSBuICYmIG51bGwgIT09IChuID0gbW4obikpICYmIFlzKG4pLCBlKSA6IChlLmV2ZW50U3lzdGVtRmxhZ3MgfD0gciwgbiA9IGUudGFyZ2V0Q29udGFpbmVycywgbnVsbCAhPT0gbCAmJiAtMSA9PT0gbi5pbmRleE9mKGwpICYmIG4ucHVzaChsKSwgZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGFlKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBwbihlLnRhcmdldCk7CiAgICAgICAgICAgIGlmIChudWxsICE9PSBuKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IEgobik7CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gdCkKICAgICAgICAgICAgICAgICAgICBpZiAoMTMgPT09IChuID0gdC50YWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAobiA9IFEodCkpKSByZXR1cm4gZS5ibG9ja2VkT24gPSBuLCB2b2lkIFpzKGUucHJpb3JpdHksIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhzKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoMyA9PT0gbiAmJiB0LnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKSByZXR1cm4gdm9pZChlLmJsb2NrZWRPbiA9IDMgPT09IHQudGFnID8gdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyA6IG51bGwpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZS5ibG9ja2VkT24gPSBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB1ZShlKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSBlLmJsb2NrZWRPbikgcmV0dXJuICExOwogICAgICAgICAgICBmb3IgKHZhciBuID0gZS50YXJnZXRDb250YWluZXJzOyAwIDwgbi5sZW5ndGg7KSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IG1lKGUuZG9tRXZlbnROYW1lLCBlLmV2ZW50U3lzdGVtRmxhZ3MsIG5bMF0sIGUubmF0aXZlRXZlbnQpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHQpIHJldHVybiBudWxsICE9PSAobiA9IG1uKHQpKSAmJiBZcyhuKSwgZS5ibG9ja2VkT24gPSB0LCAhMTsKICAgICAgICAgICAgICAgIHZhciByID0gbmV3KHQgPSBlLm5hdGl2ZUV2ZW50KS5jb25zdHJ1Y3Rvcih0LnR5cGUsIHQpOwogICAgICAgICAgICAgICAgVWEgPSByLCB0LnRhcmdldC5kaXNwYXRjaEV2ZW50KHIpLCBVYSA9IG51bGwsIG4uc2hpZnQoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb2UoZSwgbiwgdCkgewogICAgICAgICAgICB1ZShlKSAmJiB0LmRlbGV0ZShuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaWUoKSB7CiAgICAgICAgICAgIEV1ID0gITEsIG51bGwgIT09IHp1ICYmIHVlKHp1KSAmJiAoenUgPSBudWxsKSwgbnVsbCAhPT0gTnUgJiYgdWUoTnUpICYmIChOdSA9IG51bGwpLCBudWxsICE9PSBQdSAmJiB1ZShQdSkgJiYgKFB1ID0gbnVsbCksIF91LmZvckVhY2gob2UpLCBMdS5mb3JFYWNoKG9lKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gc2UoZSwgbikgewogICAgICAgICAgICBlLmJsb2NrZWRPbiA9PT0gbiAmJiAoZS5ibG9ja2VkT24gPSBudWxsLCBFdSB8fCAoRXUgPSAhMCwgcnUobHUsIGllKSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjZShlKSB7CiAgICAgICAgICAgIGlmICgwIDwgQ3UubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBzZShDdVswXSwgZSk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMTsgbiA8IEN1Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBDdVtuXTsKICAgICAgICAgICAgICAgICAgICB0LmJsb2NrZWRPbiA9PT0gZSAmJiAodC5ibG9ja2VkT24gPSBudWxsKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAobnVsbCAhPT0genUgJiYgc2UoenUsIGUpLCBudWxsICE9PSBOdSAmJiBzZShOdSwgZSksIG51bGwgIT09IFB1ICYmIHNlKFB1LCBlKSwgbiA9IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2UobiwgZSkKICAgICAgICAgICAgICAgIH0sIF91LmZvckVhY2gobiksIEx1LmZvckVhY2gobiksIG4gPSAwOyBuIDwgVHUubGVuZ3RoOyBuKyspKHQgPSBUdVtuXSkuYmxvY2tlZE9uID09PSBlICYmICh0LmJsb2NrZWRPbiA9IG51bGwpOwogICAgICAgICAgICBmb3IgKDsgMCA8IFR1Lmxlbmd0aCAmJiBudWxsID09PSAobiA9IFR1WzBdKS5ibG9ja2VkT247KSBhZShuKSwgbnVsbCA9PT0gbi5ibG9ja2VkT24gJiYgVHUuc2hpZnQoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZmUoZSwgbiwgdCwgcikgewogICAgICAgICAgICB2YXIgbCA9IHh1LAogICAgICAgICAgICAgICAgYSA9IEZ1LnRyYW5zaXRpb247CiAgICAgICAgICAgIEZ1LnRyYW5zaXRpb24gPSBudWxsOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgeHUgPSAxLCBwZShlLCBuLCB0LCByKQogICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgeHUgPSBsLCBGdS50cmFuc2l0aW9uID0gYQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBkZShlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHZhciBsID0geHUsCiAgICAgICAgICAgICAgICBhID0gRnUudHJhbnNpdGlvbjsKICAgICAgICAgICAgRnUudHJhbnNpdGlvbiA9IG51bGw7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB4dSA9IDQsIHBlKGUsIG4sIHQsIHIpCiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICB4dSA9IGwsIEZ1LnRyYW5zaXRpb24gPSBhCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHBlKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgaWYgKFJ1KSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IG1lKGUsIG4sIHQsIHIpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGwpIEplKGUsIG4sIHIsIER1LCB0KSwgcmUoZSwgcik7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChmdW5jdGlvbihlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZm9jdXNpbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHp1ID0gbGUoenUsIGUsIG4sIHQsIHIsIGwpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRyYWdlbnRlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51ID0gbGUoTnUsIGUsIG4sIHQsIHIsIGwpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNlb3ZlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFB1ID0gbGUoUHUsIGUsIG4sIHQsIHIsIGwpLCAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBvaW50ZXJvdmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGwucG9pbnRlcklkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdS5zZXQoYSwgbGUoX3UuZ2V0KGEpIHx8IG51bGwsIGUsIG4sIHQsIHIsIGwpKSwgITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJnb3Rwb2ludGVyY2FwdHVyZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPSBsLnBvaW50ZXJJZCwgTHUuc2V0KGEsIGxlKEx1LmdldChhKSB8fCBudWxsLCBlLCBuLCB0LCByLCBsKSksICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgfShsLCBlLCBuLCB0LCByKSkgci5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlKGUsIHIpLCA0ICYgbiAmJiAtMSA8IE11LmluZGV4T2YoZSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbnVsbCAhPT0gbDspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBtbihsKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGEgJiYgS3MoYSksIG51bGwgPT09IChhID0gbWUoZSwgbiwgdCwgcikpICYmIEplKGUsIG4sIHIsIER1LCB0KSwgYSA9PT0gbCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGwgJiYgci5zdG9wUHJvcGFnYXRpb24oKQogICAgICAgICAgICAgICAgfSBlbHNlIEplKGUsIG4sIHIsIG51bGwsIHQpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG1lKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgaWYgKER1ID0gbnVsbCwgbnVsbCAhPT0gKGUgPSBwbihlID0gRChyKSkpKQogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IChuID0gSChlKSkpIGUgPSBudWxsOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoMTMgPT09ICh0ID0gbi50YWcpKSB7CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKGUgPSBRKG4pKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICBlID0gbnVsbAogICAgICAgICAgICB9IGVsc2UgaWYgKDMgPT09IHQpIHsKICAgICAgICAgICAgICAgIGlmIChuLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKSByZXR1cm4gMyA9PT0gbi50YWcgPyBuLnN0YXRlTm9kZS5jb250YWluZXJJbmZvIDogbnVsbDsKICAgICAgICAgICAgICAgIGUgPSBudWxsCiAgICAgICAgICAgIH0gZWxzZSBuICE9PSBlICYmIChlID0gbnVsbCk7CiAgICAgICAgICAgIHJldHVybiBEdSA9IGUsIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhlKGUpIHsKICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJjYW5jZWwiOgogICAgICAgICAgICAgICAgY2FzZSAiY2xpY2siOgogICAgICAgICAgICAgICAgY2FzZSAiY2xvc2UiOgogICAgICAgICAgICAgICAgY2FzZSAiY29udGV4dG1lbnUiOgogICAgICAgICAgICAgICAgY2FzZSAiY29weSI6CiAgICAgICAgICAgICAgICBjYXNlICJjdXQiOgogICAgICAgICAgICAgICAgY2FzZSAiYXV4Y2xpY2siOgogICAgICAgICAgICAgICAgY2FzZSAiZGJsY2xpY2siOgogICAgICAgICAgICAgICAgY2FzZSAiZHJhZ2VuZCI6CiAgICAgICAgICAgICAgICBjYXNlICJkcmFnc3RhcnQiOgogICAgICAgICAgICAgICAgY2FzZSAiZHJvcCI6CiAgICAgICAgICAgICAgICBjYXNlICJmb2N1c2luIjoKICAgICAgICAgICAgICAgIGNhc2UgImZvY3Vzb3V0IjoKICAgICAgICAgICAgICAgIGNhc2UgImlucHV0IjoKICAgICAgICAgICAgICAgIGNhc2UgImludmFsaWQiOgogICAgICAgICAgICAgICAgY2FzZSAia2V5ZG93biI6CiAgICAgICAgICAgICAgICBjYXNlICJrZXlwcmVzcyI6CiAgICAgICAgICAgICAgICBjYXNlICJrZXl1cCI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZWRvd24iOgogICAgICAgICAgICAgICAgY2FzZSAibW91c2V1cCI6CiAgICAgICAgICAgICAgICBjYXNlICJwYXN0ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJwYXVzZSI6CiAgICAgICAgICAgICAgICBjYXNlICJwbGF5IjoKICAgICAgICAgICAgICAgIGNhc2UgInBvaW50ZXJjYW5jZWwiOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcmRvd24iOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcnVwIjoKICAgICAgICAgICAgICAgIGNhc2UgInJhdGVjaGFuZ2UiOgogICAgICAgICAgICAgICAgY2FzZSAicmVzZXQiOgogICAgICAgICAgICAgICAgY2FzZSAicmVzaXplIjoKICAgICAgICAgICAgICAgIGNhc2UgInNlZWtlZCI6CiAgICAgICAgICAgICAgICBjYXNlICJzdWJtaXQiOgogICAgICAgICAgICAgICAgY2FzZSAidG91Y2hjYW5jZWwiOgogICAgICAgICAgICAgICAgY2FzZSAidG91Y2hlbmQiOgogICAgICAgICAgICAgICAgY2FzZSAidG91Y2hzdGFydCI6CiAgICAgICAgICAgICAgICBjYXNlICJ2b2x1bWVjaGFuZ2UiOgogICAgICAgICAgICAgICAgY2FzZSAiY2hhbmdlIjoKICAgICAgICAgICAgICAgIGNhc2UgInNlbGVjdGlvbmNoYW5nZSI6CiAgICAgICAgICAgICAgICBjYXNlICJ0ZXh0SW5wdXQiOgogICAgICAgICAgICAgICAgY2FzZSAiY29tcG9zaXRpb25zdGFydCI6CiAgICAgICAgICAgICAgICBjYXNlICJjb21wb3NpdGlvbmVuZCI6CiAgICAgICAgICAgICAgICBjYXNlICJjb21wb3NpdGlvbnVwZGF0ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJiZWZvcmVibHVyIjoKICAgICAgICAgICAgICAgIGNhc2UgImFmdGVyYmx1ciI6CiAgICAgICAgICAgICAgICBjYXNlICJiZWZvcmVpbnB1dCI6CiAgICAgICAgICAgICAgICBjYXNlICJibHVyIjoKICAgICAgICAgICAgICAgIGNhc2UgImZ1bGxzY3JlZW5jaGFuZ2UiOgogICAgICAgICAgICAgICAgY2FzZSAiZm9jdXMiOgogICAgICAgICAgICAgICAgY2FzZSAiaGFzaGNoYW5nZSI6CiAgICAgICAgICAgICAgICBjYXNlICJwb3BzdGF0ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJzZWxlY3QiOgogICAgICAgICAgICAgICAgY2FzZSAic2VsZWN0c3RhcnQiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgY2FzZSAiZHJhZyI6CiAgICAgICAgICAgICAgICBjYXNlICJkcmFnZW50ZXIiOgogICAgICAgICAgICAgICAgY2FzZSAiZHJhZ2V4aXQiOgogICAgICAgICAgICAgICAgY2FzZSAiZHJhZ2xlYXZlIjoKICAgICAgICAgICAgICAgIGNhc2UgImRyYWdvdmVyIjoKICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNlbW92ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZW91dCI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZW92ZXIiOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcm1vdmUiOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcm91dCI6CiAgICAgICAgICAgICAgICBjYXNlICJwb2ludGVyb3ZlciI6CiAgICAgICAgICAgICAgICBjYXNlICJzY3JvbGwiOgogICAgICAgICAgICAgICAgY2FzZSAidG9nZ2xlIjoKICAgICAgICAgICAgICAgIGNhc2UgInRvdWNobW92ZSI6CiAgICAgICAgICAgICAgICBjYXNlICJ3aGVlbCI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZWVudGVyIjoKICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNlbGVhdmUiOgogICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcmVudGVyIjoKICAgICAgICAgICAgICAgIGNhc2UgInBvaW50ZXJsZWF2ZSI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7CiAgICAgICAgICAgICAgICBjYXNlICJtZXNzYWdlIjoKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBmdToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGR1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgcHU6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbXU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTY7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaHU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNTM2ODcwOTEyOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE2CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTYKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ2UoKSB7CiAgICAgICAgICAgIGlmIChVdSkgcmV0dXJuIFV1OwogICAgICAgICAgICB2YXIgZSwgbiwgdCA9IEl1LAogICAgICAgICAgICAgICAgciA9IHQubGVuZ3RoLAogICAgICAgICAgICAgICAgbCA9ICJ2YWx1ZSIgaW4gT3UgPyBPdS52YWx1ZSA6IE91LnRleHRDb250ZW50LAogICAgICAgICAgICAgICAgYSA9IGwubGVuZ3RoOwogICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgciAmJiB0W2VdID09PSBsW2VdOyBlKyspOwogICAgICAgICAgICB2YXIgdSA9IHIgLSBlOwogICAgICAgICAgICBmb3IgKG4gPSAxOyBuIDw9IHUgJiYgdFtyIC0gbl0gPT09IGxbYSAtIG5dOyBuKyspOwogICAgICAgICAgICByZXR1cm4gVXUgPSBsLnNsaWNlKGUsIDEgPCBuID8gMSAtIG4gOiB2b2lkIDApCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB2ZShlKSB7CiAgICAgICAgICAgIHZhciBuID0gZS5rZXlDb2RlOwogICAgICAgICAgICByZXR1cm4gImNoYXJDb2RlIiBpbiBlID8gMCA9PT0gKGUgPSBlLmNoYXJDb2RlKSAmJiAxMyA9PT0gbiAmJiAoZSA9IDEzKSA6IGUgPSBuLCAxMCA9PT0gZSAmJiAoZSA9IDEzKSwgMzIgPD0gZSB8fCAxMyA9PT0gZSA/IGUgOiAwCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB5ZSgpIHsKICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBiZSgpIHsKICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBrZShlKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIG4obiwgdCwgciwgbCwgYSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdSBpbiB0aGlzLl9yZWFjdE5hbWUgPSBuLCB0aGlzLl90YXJnZXRJbnN0ID0gciwgdGhpcy50eXBlID0gdCwgdGhpcy5uYXRpdmVFdmVudCA9IGwsIHRoaXMudGFyZ2V0ID0gYSwgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbnVsbCwgZSkgZS5oYXNPd25Qcm9wZXJ0eSh1KSAmJiAobiA9IGVbdV0sIHRoaXNbdV0gPSBuID8gbihsKSA6IGxbdV0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gKG51bGwgIT0gbC5kZWZhdWx0UHJldmVudGVkID8gbC5kZWZhdWx0UHJldmVudGVkIDogITEgPT09IGwucmV0dXJuVmFsdWUpID8geWUgOiBiZSwgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGJlLCB0aGlzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIExhKG4ucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gITA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm5hdGl2ZUV2ZW50OwogICAgICAgICAgICAgICAgICAgIGUgJiYgKGUucHJldmVudERlZmF1bHQgPyBlLnByZXZlbnREZWZhdWx0KCkgOiAidW5rbm93biIgIT0gdHlwZW9mIGUucmV0dXJuVmFsdWUgJiYgKGUucmV0dXJuVmFsdWUgPSAhMSksIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0geWUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMubmF0aXZlRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgZSAmJiAoZS5zdG9wUHJvcGFnYXRpb24gPyBlLnN0b3BQcm9wYWdhdGlvbigpIDogInVua25vd24iICE9IHR5cGVvZiBlLmNhbmNlbEJ1YmJsZSAmJiAoZS5jYW5jZWxCdWJibGUgPSAhMCksIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSB5ZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwZXJzaXN0OiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgaXNQZXJzaXN0ZW50OiB5ZQogICAgICAgICAgICB9KSwgbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gd2UoZSkgewogICAgICAgICAgICB2YXIgbiA9IHRoaXMubmF0aXZlRXZlbnQ7CiAgICAgICAgICAgIHJldHVybiBuLmdldE1vZGlmaWVyU3RhdGUgPyBuLmdldE1vZGlmaWVyU3RhdGUoZSkgOiAhIShlID0gZW9bZV0pICYmICEhbltlXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gU2UoZSkgewogICAgICAgICAgICByZXR1cm4gd2UKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHhlKGUsIG4pIHsKICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJrZXl1cCI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xICE9PSBpby5pbmRleE9mKG4ua2V5Q29kZSk7CiAgICAgICAgICAgICAgICBjYXNlICJrZXlkb3duIjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjI5ICE9PSBuLmtleUNvZGU7CiAgICAgICAgICAgICAgICBjYXNlICJrZXlwcmVzcyI6CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZWRvd24iOgogICAgICAgICAgICAgICAgY2FzZSAiZm9jdXNvdXQiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEVlKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZihlID0gZS5kZXRhaWwpICYmICJkYXRhIiBpbiBlID8gZS5kYXRhIDogbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQ2UoZSkgewogICAgICAgICAgICB2YXIgbiA9IGUgJiYgZS5ub2RlTmFtZSAmJiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgIHJldHVybiAiaW5wdXQiID09PSBuID8gISF2b1tlLnR5cGVdIDogInRleHRhcmVhIiA9PT0gbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gemUoZSwgbiwgdCwgcikgewogICAgICAgICAgICBJKHIpLCAwIDwgKG4gPSBubihuLCAib25DaGFuZ2UiKSkubGVuZ3RoICYmICh0ID0gbmV3IEF1KCJvbkNoYW5nZSIsICJjaGFuZ2UiLCBudWxsLCB0LCByKSwgZS5wdXNoKHsKICAgICAgICAgICAgICAgIGV2ZW50OiB0LAogICAgICAgICAgICAgICAgbGlzdGVuZXJzOiBuCiAgICAgICAgICAgIH0pKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTmUoZSkgewogICAgICAgICAgICBLZShlLCAwKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUGUoZSkgewogICAgICAgICAgICBpZiAoZyhobihlKSkpIHJldHVybiBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBfZShlLCBuKSB7CiAgICAgICAgICAgIGlmICgiY2hhbmdlIiA9PT0gZSkgcmV0dXJuIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIExlKCkgewogICAgICAgICAgICB5byAmJiAoeW8uZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLCBUZSksIGJvID0geW8gPSBudWxsKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVGUoZSkgewogICAgICAgICAgICBpZiAoInZhbHVlIiA9PT0gZS5wcm9wZXJ0eU5hbWUgJiYgUGUoYm8pKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IFtdOwogICAgICAgICAgICAgICAgemUobiwgYm8sIGUsIEQoZSkpLCBWKE5lLCBuKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBNZShlLCBuLCB0KSB7CiAgICAgICAgICAgICJmb2N1c2luIiA9PT0gZSA/IChMZSgpLCBibyA9IHQsICh5byA9IG4pLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIiwgVGUpKSA6ICJmb2N1c291dCIgPT09IGUgJiYgTGUoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRmUoZSwgbikgewogICAgICAgICAgICBpZiAoInNlbGVjdGlvbmNoYW5nZSIgPT09IGUgfHwgImtleXVwIiA9PT0gZSB8fCAia2V5ZG93biIgPT09IGUpIHJldHVybiBQZShibykKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFJlKGUsIG4pIHsKICAgICAgICAgICAgaWYgKCJjbGljayIgPT09IGUpIHJldHVybiBQZShuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRGUoZSwgbikgewogICAgICAgICAgICBpZiAoImlucHV0IiA9PT0gZSB8fCAiY2hhbmdlIiA9PT0gZSkgcmV0dXJuIFBlKG4pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBPZShlLCBuKSB7CiAgICAgICAgICAgIGlmICh3byhlLCBuKSkgcmV0dXJuICEwOwogICAgICAgICAgICBpZiAoIm9iamVjdCIgIT0gdHlwZW9mIGUgfHwgbnVsbCA9PT0gZSB8fCAib2JqZWN0IiAhPSB0eXBlb2YgbiB8fCBudWxsID09PSBuKSByZXR1cm4gITE7CiAgICAgICAgICAgIHZhciB0ID0gT2JqZWN0LmtleXMoZSksCiAgICAgICAgICAgICAgICByID0gT2JqZWN0LmtleXMobik7CiAgICAgICAgICAgIGlmICh0Lmxlbmd0aCAhPT0gci5sZW5ndGgpIHJldHVybiAhMTsKICAgICAgICAgICAgZm9yIChyID0gMDsgciA8IHQubGVuZ3RoOyByKyspIHsKICAgICAgICAgICAgICAgIHZhciBsID0gdFtyXTsKICAgICAgICAgICAgICAgIGlmICghYWEuY2FsbChuLCBsKSB8fCAhd28oZVtsXSwgbltsXSkpIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSWUoZSkgewogICAgICAgICAgICBmb3IgKDsgZSAmJiBlLmZpcnN0Q2hpbGQ7KSBlID0gZS5maXJzdENoaWxkOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVWUoZSwgbikgewogICAgICAgICAgICB2YXIgdCwgciA9IEllKGUpOwogICAgICAgICAgICBmb3IgKGUgPSAwOyByOykgewogICAgICAgICAgICAgICAgaWYgKDMgPT09IHIubm9kZVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGUgKyByLnRleHRDb250ZW50Lmxlbmd0aCwgZSA8PSBuICYmIHQgPj0gbikgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogciwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBuIC0gZQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgZSA9IHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgcjspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIubmV4dFNpYmxpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLm5leHRTaWJsaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLnBhcmVudE5vZGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgciA9IHZvaWQgMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgciA9IEllKHIpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFZlKGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuICEoIWUgfHwgIW4pICYmIChlID09PSBuIHx8ICghZSB8fCAzICE9PSBlLm5vZGVUeXBlKSAmJiAobiAmJiAzID09PSBuLm5vZGVUeXBlID8gVmUoZSwgbi5wYXJlbnROb2RlKSA6ICJjb250YWlucyIgaW4gZSA/IGUuY29udGFpbnMobikgOiAhIWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgISEoMTYgJiBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG4pKSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBBZSgpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IHdpbmRvdywgbiA9IHYoKTsgbiBpbnN0YW5jZW9mIGUuSFRNTElGcmFtZUVsZW1lbnQ7KSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gInN0cmluZyIgPT0gdHlwZW9mIG4uY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgdCA9ICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIXQpIGJyZWFrOwogICAgICAgICAgICAgICAgbiA9IHYoKGUgPSBuLmNvbnRlbnRXaW5kb3cpLmRvY3VtZW50KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBCZShlKSB7CiAgICAgICAgICAgIHZhciBuID0gZSAmJiBlLm5vZGVOYW1lICYmIGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgcmV0dXJuIG4gJiYgKCJpbnB1dCIgPT09IG4gJiYgKCJ0ZXh0IiA9PT0gZS50eXBlIHx8ICJzZWFyY2giID09PSBlLnR5cGUgfHwgInRlbCIgPT09IGUudHlwZSB8fCAidXJsIiA9PT0gZS50eXBlIHx8ICJwYXNzd29yZCIgPT09IGUudHlwZSkgfHwgInRleHRhcmVhIiA9PT0gbiB8fCAidHJ1ZSIgPT09IGUuY29udGVudEVkaXRhYmxlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gV2UoZSkgewogICAgICAgICAgICB2YXIgbiA9IEFlKCksCiAgICAgICAgICAgICAgICB0ID0gZS5mb2N1c2VkRWxlbSwKICAgICAgICAgICAgICAgIHIgPSBlLnNlbGVjdGlvblJhbmdlOwogICAgICAgICAgICBpZiAobiAhPT0gdCAmJiB0ICYmIHQub3duZXJEb2N1bWVudCAmJiBWZSh0Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB0KSkgewogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHIgJiYgQmUodCkpCiAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSByLnN0YXJ0LCB2b2lkIDAgPT09IChlID0gci5lbmQpICYmIChlID0gbiksICJzZWxlY3Rpb25TdGFydCIgaW4gdCkgdC5zZWxlY3Rpb25TdGFydCA9IG4sIHQuc2VsZWN0aW9uRW5kID0gTWF0aC5taW4oZSwgdC52YWx1ZS5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChlID0gKG4gPSB0Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQpICYmIG4uZGVmYXVsdFZpZXcgfHwgd2luZG93KS5nZXRTZWxlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICBlID0gZS5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHQudGV4dENvbnRlbnQubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5taW4oci5zdGFydCwgbCk7CiAgICAgICAgICAgICAgICAgICAgciA9IHZvaWQgMCA9PT0gci5lbmQgPyBhIDogTWF0aC5taW4oci5lbmQsIGwpLCAhZS5leHRlbmQgJiYgYSA+IHIgJiYgKGwgPSByLCByID0gYSwgYSA9IGwpLCBsID0gVWUodCwgYSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBVZSh0LCByKTsKICAgICAgICAgICAgICAgICAgICBsICYmIHUgJiYgKDEgIT09IGUucmFuZ2VDb3VudCB8fCBlLmFuY2hvck5vZGUgIT09IGwubm9kZSB8fCBlLmFuY2hvck9mZnNldCAhPT0gbC5vZmZzZXQgfHwgZS5mb2N1c05vZGUgIT09IHUubm9kZSB8fCBlLmZvY3VzT2Zmc2V0ICE9PSB1Lm9mZnNldCkgJiYgKChuID0gbi5jcmVhdGVSYW5nZSgpKS5zZXRTdGFydChsLm5vZGUsIGwub2Zmc2V0KSwgZS5yZW1vdmVBbGxSYW5nZXMoKSwgYSA+IHIgPyAoZS5hZGRSYW5nZShuKSwgZS5leHRlbmQodS5ub2RlLCB1Lm9mZnNldCkpIDogKG4uc2V0RW5kKHUubm9kZSwgdS5vZmZzZXQpLCBlLmFkZFJhbmdlKG4pKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAobiA9IFtdLCBlID0gdDsgZSA9IGUucGFyZW50Tm9kZTspIDEgPT09IGUubm9kZVR5cGUgJiYgbi5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBlLAogICAgICAgICAgICAgICAgICAgIGxlZnQ6IGUuc2Nyb2xsTGVmdCwKICAgICAgICAgICAgICAgICAgICB0b3A6IGUuc2Nyb2xsVG9wCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGZvciAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgdC5mb2N1cyAmJiB0LmZvY3VzKCksIHQgPSAwOyB0IDwgbi5sZW5ndGg7IHQrKykoZSA9IG5bdF0pLmVsZW1lbnQuc2Nyb2xsTGVmdCA9IGUubGVmdCwgZS5lbGVtZW50LnNjcm9sbFRvcCA9IGUudG9wCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEhlKGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSB0LndpbmRvdyA9PT0gdCA/IHQuZG9jdW1lbnQgOiA5ID09PSB0Lm5vZGVUeXBlID8gdCA6IHQub3duZXJEb2N1bWVudDsKICAgICAgICAgICAgem8gfHwgbnVsbCA9PSB4byB8fCB4byAhPT0gdihyKSB8fCAociA9ICJzZWxlY3Rpb25TdGFydCIgaW4gKHIgPSB4bykgJiYgQmUocikgPyB7CiAgICAgICAgICAgICAgICBzdGFydDogci5zZWxlY3Rpb25TdGFydCwKICAgICAgICAgICAgICAgIGVuZDogci5zZWxlY3Rpb25FbmQKICAgICAgICAgICAgfSA6IHsKICAgICAgICAgICAgICAgIGFuY2hvck5vZGU6IChyID0gKHIub3duZXJEb2N1bWVudCAmJiByLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93KS5nZXRTZWxlY3Rpb24oKSkuYW5jaG9yTm9kZSwKICAgICAgICAgICAgICAgIGFuY2hvck9mZnNldDogci5hbmNob3JPZmZzZXQsCiAgICAgICAgICAgICAgICBmb2N1c05vZGU6IHIuZm9jdXNOb2RlLAogICAgICAgICAgICAgICAgZm9jdXNPZmZzZXQ6IHIuZm9jdXNPZmZzZXQKICAgICAgICAgICAgfSwgQ28gJiYgT2UoQ28sIHIpIHx8IChDbyA9IHIsIDAgPCAociA9IG5uKEVvLCAib25TZWxlY3QiKSkubGVuZ3RoICYmIChuID0gbmV3IEF1KCJvblNlbGVjdCIsICJzZWxlY3QiLCBudWxsLCBuLCB0KSwgZS5wdXNoKHsKICAgICAgICAgICAgICAgIGV2ZW50OiBuLAogICAgICAgICAgICAgICAgbGlzdGVuZXJzOiByCiAgICAgICAgICAgIH0pLCBuLnRhcmdldCA9IHhvKSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBRZShlLCBuKSB7CiAgICAgICAgICAgIHZhciB0ID0ge307CiAgICAgICAgICAgIHJldHVybiB0W2UudG9Mb3dlckNhc2UoKV0gPSBuLnRvTG93ZXJDYXNlKCksIHRbIldlYmtpdCIgKyBlXSA9ICJ3ZWJraXQiICsgbiwgdFsiTW96IiArIGVdID0gIm1veiIgKyBuLCB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBqZShlKSB7CiAgICAgICAgICAgIGlmIChQb1tlXSkgcmV0dXJuIFBvW2VdOwogICAgICAgICAgICBpZiAoIU5vW2VdKSByZXR1cm4gZTsKICAgICAgICAgICAgdmFyIG4sIHQgPSBOb1tlXTsKICAgICAgICAgICAgZm9yIChuIGluIHQpCiAgICAgICAgICAgICAgICBpZiAodC5oYXNPd25Qcm9wZXJ0eShuKSAmJiBuIGluIF9vKSByZXR1cm4gUG9bZV0gPSB0W25dOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gJGUoZSwgbikgewogICAgICAgICAgICBSby5zZXQoZSwgbiksIHIobiwgW2VdKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcWUoZSwgbiwgdCkgewogICAgICAgICAgICB2YXIgciA9IGUudHlwZSB8fCAidW5rbm93bi1ldmVudCI7CiAgICAgICAgICAgIGUuY3VycmVudFRhcmdldCA9IHQsIFcociwgbiwgdm9pZCAwLCBlKSwgZS5jdXJyZW50VGFyZ2V0ID0gbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gS2UoZSwgbikgewogICAgICAgICAgICBuID0gMCAhPSAoNCAmIG4pOwogICAgICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IGUubGVuZ3RoOyB0KyspIHsKICAgICAgICAgICAgICAgIHZhciByID0gZVt0XSwKICAgICAgICAgICAgICAgICAgICBsID0gci5ldmVudDsKICAgICAgICAgICAgICAgIHIgPSByLmxpc3RlbmVyczsKICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICBpZiAobikKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdSA9IHIubGVuZ3RoIC0gMTsgMCA8PSB1OyB1LS0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gclt1XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gby5pbnN0YW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gby5jdXJyZW50VGFyZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBvLmxpc3RlbmVyLCBpICE9PSBhICYmIGwuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFlKGwsIG8sIHMpLCBhID0gaQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IDA7IHUgPCByLmxlbmd0aDsgdSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSAobyA9IHJbdV0pLmluc3RhbmNlLCBzID0gby5jdXJyZW50VGFyZ2V0LCBvID0gby5saXN0ZW5lciwgaSAhPT0gYSAmJiBsLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWUobCwgbywgcyksIGEgPSBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKEphKSB0aHJvdyBlID0gZXUsIEphID0gITEsIGV1ID0gbnVsbCwgZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWWUoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IG5bR29dOwogICAgICAgICAgICB2b2lkIDAgPT09IHQgJiYgKHQgPSBuW0dvXSA9IG5ldyBTZXQpOwogICAgICAgICAgICB2YXIgciA9IGUgKyAiX19idWJibGUiOwogICAgICAgICAgICB0LmhhcyhyKSB8fCAoWmUobiwgZSwgMiwgITEpLCB0LmFkZChyKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFhlKGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSAwOwogICAgICAgICAgICBuICYmIChyIHw9IDQpLCBaZSh0LCBlLCByLCBuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gR2UoZSkgewogICAgICAgICAgICBpZiAoIWVbVW9dKSB7CiAgICAgICAgICAgICAgICBlW1VvXSA9ICEwLCB0YS5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgInNlbGVjdGlvbmNoYW5nZSIgIT09IG4gJiYgKElvLmhhcyhuKSB8fCBYZShuLCAhMSwgZSksIFhlKG4sICEwLCBlKSkKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIHZhciBuID0gOSA9PT0gZS5ub2RlVHlwZSA/IGUgOiBlLm93bmVyRG9jdW1lbnQ7CiAgICAgICAgICAgICAgICBudWxsID09PSBuIHx8IG5bVW9dIHx8IChuW1VvXSA9ICEwLCBYZSgic2VsZWN0aW9uY2hhbmdlIiwgITEsIG4pKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBaZShlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHN3aXRjaCAoaGUobikpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICBsID0gZmU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgbCA9IGRlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBsID0gcGUKICAgICAgICAgICAgfQogICAgICAgICAgICB0ID0gbC5iaW5kKG51bGwsIG4sIHQsIGUpLCBsID0gdm9pZCAwLCAhamEgfHwgInRvdWNoc3RhcnQiICE9PSBuICYmICJ0b3VjaG1vdmUiICE9PSBuICYmICJ3aGVlbCIgIT09IG4gfHwgKGwgPSAhMCksIHIgPyB2b2lkIDAgIT09IGwgPyBlLmFkZEV2ZW50TGlzdGVuZXIobiwgdCwgewogICAgICAgICAgICAgICAgY2FwdHVyZTogITAsCiAgICAgICAgICAgICAgICBwYXNzaXZlOiBsCiAgICAgICAgICAgIH0pIDogZS5hZGRFdmVudExpc3RlbmVyKG4sIHQsICEwKSA6IHZvaWQgMCAhPT0gbCA/IGUuYWRkRXZlbnRMaXN0ZW5lcihuLCB0LCB7CiAgICAgICAgICAgICAgICBwYXNzaXZlOiBsCiAgICAgICAgICAgIH0pIDogZS5hZGRFdmVudExpc3RlbmVyKG4sIHQsICExKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSmUoZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICB2YXIgYSA9IHI7CiAgICAgICAgICAgIGlmICgwID09ICgxICYgbikgJiYgMCA9PSAoMiAmIG4pICYmIG51bGwgIT09IHIpIGU6IGZvciAoOzspIHsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSByKSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIgdSA9IHIudGFnOwogICAgICAgICAgICAgICAgaWYgKDMgPT09IHUgfHwgNCA9PT0gdSkgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gci5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzsKICAgICAgICAgICAgICAgICAgICBpZiAobyA9PT0gbCB8fCA4ID09PSBvLm5vZGVUeXBlICYmIG8ucGFyZW50Tm9kZSA9PT0gbCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgaWYgKDQgPT09IHUpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IHIucmV0dXJuOyBudWxsICE9PSB1OykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB1LnRhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoMyA9PT0gaSB8fCA0ID09PSBpKSAmJiAoKGkgPSB1LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSA9PT0gbCB8fCA4ID09PSBpLm5vZGVUeXBlICYmIGkucGFyZW50Tm9kZSA9PT0gbCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB1LnJldHVybgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IG51bGwgIT09IG87KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSAodSA9IHBuKG8pKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoNSA9PT0gKGkgPSB1LnRhZykgfHwgNiA9PT0gaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGEgPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBvLnBhcmVudE5vZGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByID0gci5yZXR1cm4KICAgICAgICAgICAgfQogICAgICAgICAgICBWKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciByID0gYSwKICAgICAgICAgICAgICAgICAgICBsID0gRCh0KSwKICAgICAgICAgICAgICAgICAgICB1ID0gW107CiAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBSby5nZXQoZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IEF1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5cHJlc3MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSB2ZSh0KSkgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImtleWRvd24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5dXAiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0bzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImZvY3VzaW4iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAiZm9jdXMiLCBpID0gJHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmb2N1c291dCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9ICJibHVyIiwgaSA9ICR1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYmVmb3JlYmx1ciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhZnRlcmJsdXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAkdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNsaWNrIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMiA9PT0gdC5idXR0b24pIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhdXhjbGljayI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkYmxjbGljayI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJtb3VzZWRvd24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibW91c2Vtb3ZlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNldXAiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibW91c2VvdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibW91c2VvdmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNvbnRleHRtZW51IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gUXU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkcmFnIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRyYWdlbmQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZHJhZ2VudGVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRyYWdleGl0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRyYWdsZWF2ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkcmFnb3ZlciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkcmFnc3RhcnQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZHJvcCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGp1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG91Y2hjYW5jZWwiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG91Y2hlbmQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidG91Y2htb3ZlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRvdWNoc3RhcnQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBsbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTG86CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRvOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBNbzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcXU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEZvOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBhbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNjcm9sbCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFd1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAid2hlZWwiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNvcHkiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY3V0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBhc3RlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gWXU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJnb3Rwb2ludGVyY2FwdHVyZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsb3N0cG9pbnRlcmNhcHR1cmUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicG9pbnRlcmNhbmNlbCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwb2ludGVyZG93biI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwb2ludGVybW92ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwb2ludGVyb3V0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBvaW50ZXJvdmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBvaW50ZXJ1cCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHJvCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAwICE9ICg0ICYgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gIWMgJiYgInNjcm9sbCIgPT09IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYyA/IG51bGwgIT09IG8gPyBvICsgIkNhcHR1cmUiIDogbnVsbCA6IG87CiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCwgbSA9IHI7IG51bGwgIT09IG07KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IChwID0gbSkuc3RhdGVOb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDUgPT09IHAudGFnICYmIG51bGwgIT09IGggJiYgKHAgPSBoLCBudWxsICE9PSBkICYmIG51bGwgIT0gKGggPSBBKG0sIGQpKSAmJiBjLnB1c2goZW4obSwgaCwgcCkpKSwgZikgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gbS5yZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAwIDwgYy5sZW5ndGggJiYgKG8gPSBuZXcgaShvLCBzLCBudWxsLCB0LCBsKSwgdS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzOiBjCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgwID09ICg3ICYgbikpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9ICJtb3VzZW91dCIgPT09IGUgfHwgInBvaW50ZXJvdXQiID09PSBlLCAoIShvID0gIm1vdXNlb3ZlciIgPT09IGUgfHwgInBvaW50ZXJvdmVyIiA9PT0gZSkgfHwgdCA9PT0gVWEgfHwgIShzID0gdC5yZWxhdGVkVGFyZ2V0IHx8IHQuZnJvbUVsZW1lbnQpIHx8ICFwbihzKSAmJiAhc1tYb10pICYmIChpIHx8IG8pICYmIChvID0gbC53aW5kb3cgPT09IGwgPyBsIDogKG8gPSBsLm93bmVyRG9jdW1lbnQpID8gby5kZWZhdWx0VmlldyB8fCBvLnBhcmVudFdpbmRvdyA6IHdpbmRvdywgaSA/IChpID0gciwgbnVsbCAhPT0gKHMgPSAocyA9IHQucmVsYXRlZFRhcmdldCB8fCB0LnRvRWxlbWVudCkgPyBwbihzKSA6IG51bGwpICYmIChzICE9PSAoZiA9IEgocykpIHx8IDUgIT09IHMudGFnICYmIDYgIT09IHMudGFnKSAmJiAocyA9IG51bGwpKSA6IChpID0gbnVsbCwgcyA9IHIpLCBpICE9PSBzKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9IFF1LCBoID0gIm9uTW91c2VMZWF2ZSIsIGQgPSAib25Nb3VzZUVudGVyIiwgbSA9ICJtb3VzZSIsICJwb2ludGVyb3V0IiAhPT0gZSAmJiAicG9pbnRlcm92ZXIiICE9PSBlIHx8IChjID0gcm8sIGggPSAib25Qb2ludGVyTGVhdmUiLCBkID0gIm9uUG9pbnRlckVudGVyIiwgbSA9ICJwb2ludGVyIiksIGYgPSBudWxsID09IGkgPyBvIDogaG4oaSksIHAgPSBudWxsID09IHMgPyBvIDogaG4ocyksIChvID0gbmV3IGMoaCwgbSArICJsZWF2ZSIsIGksIHQsIGwpKS50YXJnZXQgPSBmLCBvLnJlbGF0ZWRUYXJnZXQgPSBwLCBoID0gbnVsbCwgcG4obCkgPT09IHIgJiYgKChjID0gbmV3IGMoZCwgbSArICJlbnRlciIsIHMsIHQsIGwpKS50YXJnZXQgPSBwLCBjLnJlbGF0ZWRUYXJnZXQgPSBmLCBoID0gYyksIGYgPSBoLCBpICYmIHMpIGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZCA9IHMsIG0gPSAwLCBwID0gYyA9IGk7IHA7IHAgPSB0bihwKSkgbSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwID0gMCwgaCA9IGQ7IGg7IGggPSB0bihoKSkgcCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IDAgPCBtIC0gcDspIGMgPSB0bihjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0tLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyAwIDwgcCAtIG07KSBkID0gdG4oZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09PSBkIHx8IG51bGwgIT09IGQgJiYgYyA9PT0gZC5hbHRlcm5hdGUpIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRuKGMpLCBkID0gdG4oZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gaSAmJiBybih1LCBvLCBpLCBjLCAhMSksIG51bGwgIT09IHMgJiYgbnVsbCAhPT0gZiAmJiBybih1LCBmLCBzLCBjLCAhMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCJzZWxlY3QiID09PSAoaSA9IChvID0gciA/IGhuKHIpIDogd2luZG93KS5ub2RlTmFtZSAmJiBvLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpIHx8ICJpbnB1dCIgPT09IGkgJiYgImZpbGUiID09PSBvLnR5cGUpIHZhciBnID0gX2U7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQ2UobykpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrbykgZyA9IERlOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBGZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ID0gTWUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UoaSA9IG8ubm9kZU5hbWUpICYmICJpbnB1dCIgPT09IGkudG9Mb3dlckNhc2UoKSAmJiAoImNoZWNrYm94IiA9PT0gby50eXBlIHx8ICJyYWRpbyIgPT09IG8udHlwZSkgJiYgKGcgPSBSZSk7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnICYmIChnID0gZyhlLCByKSkgPyB6ZSh1LCBnLCB0LCBsKSA6ICh2ICYmIHYoZSwgbywgciksICJmb2N1c291dCIgPT09IGUgJiYgKHYgPSBvLl93cmFwcGVyU3RhdGUpICYmIHYuY29udHJvbGxlZCAmJiAibnVtYmVyIiA9PT0gby50eXBlICYmIHgobywgIm51bWJlciIsIG8udmFsdWUpKSwgdiA9IHIgPyBobihyKSA6IHdpbmRvdywgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmb2N1c2luIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDZSh2KSB8fCAidHJ1ZSIgPT09IHYuY29udGVudEVkaXRhYmxlKSAmJiAoeG8gPSB2LCBFbyA9IHIsIENvID0gbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZm9jdXNvdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ28gPSBFbyA9IHhvID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJtb3VzZWRvd24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgem8gPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjb250ZXh0bWVudSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1vdXNldXAiOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkcmFnZW5kIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvID0gITEsIEhlKHUsIHQsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlbGVjdGlvbmNoYW5nZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU28pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJrZXlkb3duIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5dXAiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGUodSwgdCwgbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHNvKSBlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY29tcG9zaXRpb25zdGFydCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSAib25Db21wb3NpdGlvblN0YXJ0IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY29tcG9zaXRpb25lbmQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAib25Db21wb3NpdGlvbkVuZCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNvbXBvc2l0aW9udXBkYXRlIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gIm9uQ29tcG9zaXRpb25VcGRhdGUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBiID0gdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgZ28gPyB4ZShlLCB0KSAmJiAoYiA9ICJvbkNvbXBvc2l0aW9uRW5kIikgOiAia2V5ZG93biIgPT09IGUgJiYgMjI5ID09PSB0LmtleUNvZGUgJiYgKGIgPSAib25Db21wb3NpdGlvblN0YXJ0Iik7CiAgICAgICAgICAgICAgICAgICAgYiAmJiAocG8gJiYgImtvIiAhPT0gdC5sb2NhbGUgJiYgKGdvIHx8ICJvbkNvbXBvc2l0aW9uU3RhcnQiICE9PSBiID8gIm9uQ29tcG9zaXRpb25FbmQiID09PSBiICYmIGdvICYmICh5ID0gZ2UoKSkgOiAoSXUgPSAidmFsdWUiIGluIChPdSA9IGwpID8gT3UudmFsdWUgOiBPdS50ZXh0Q29udGVudCwgZ28gPSAhMCkpLCAwIDwgKHYgPSBubihyLCBiKSkubGVuZ3RoICYmIChiID0gbmV3IFh1KGIsIGUsIG51bGwsIHQsIGwpLCB1LnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBldmVudDogYiwKICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzOiB2CiAgICAgICAgICAgICAgICAgICAgfSksICh5IHx8IG51bGwgIT09ICh5ID0gRWUodCkpKSAmJiAoYi5kYXRhID0geSkpKSwgKHkgPSBmbyA/IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjb21wb3NpdGlvbmVuZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVlKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5cHJlc3MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAzMiAhPT0gbi53aGljaCA/IG51bGwgOiAoaG8gPSAhMCwgbW8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dElucHV0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUgPSBuLmRhdGEpID09PSBtbyAmJiBobyA/IG51bGwgOiBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfShlLCB0KSA6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdvKSByZXR1cm4gImNvbXBvc2l0aW9uZW5kIiA9PT0gZSB8fCAhc28gJiYgeGUoZSwgbikgPyAoZSA9IGdlKCksIFV1ID0gSXUgPSBPdSA9IG51bGwsIGdvID0gITEsIGUpIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwYXN0ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAia2V5cHJlc3MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG4uY3RybEtleSB8fCBuLmFsdEtleSB8fCBuLm1ldGFLZXkpIHx8IG4uY3RybEtleSAmJiBuLmFsdEtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5jaGFyICYmIDEgPCBuLmNoYXIubGVuZ3RoKSByZXR1cm4gbi5jaGFyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi53aGljaCkgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUobi53aGljaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjb21wb3NpdGlvbmVuZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvICYmICJrbyIgIT09IG4ubG9jYWxlID8gbnVsbCA6IG4uZGF0YQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfShlLCB0KSkgJiYgMCA8IChyID0gbm4ociwgIm9uQmVmb3JlSW5wdXQiKSkubGVuZ3RoICYmIChsID0gbmV3IEd1KCJvbkJlZm9yZUlucHV0IiwgImJlZm9yZWlucHV0IiwgbnVsbCwgdCwgbCksIHUucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBsLAogICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcnM6IHIKICAgICAgICAgICAgICAgICAgICB9KSwgbC5kYXRhID0geSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEtlKHUsIG4pCiAgICAgICAgICAgIH0pKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZW4oZSwgbiwgdCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgaW5zdGFuY2U6IGUsCiAgICAgICAgICAgICAgICBsaXN0ZW5lcjogbiwKICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQ6IHQKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbm4oZSwgbikgewogICAgICAgICAgICBmb3IgKHZhciB0ID0gbiArICJDYXB0dXJlIiwgciA9IFtdOyBudWxsICE9PSBlOykgewogICAgICAgICAgICAgICAgdmFyIGwgPSBlLAogICAgICAgICAgICAgICAgICAgIGEgPSBsLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgIDUgPT09IGwudGFnICYmIG51bGwgIT09IGEgJiYgKGwgPSBhLCBudWxsICE9IChhID0gQShlLCB0KSkgJiYgci51bnNoaWZ0KGVuKGUsIGEsIGwpKSwgbnVsbCAhPSAoYSA9IEEoZSwgbikpICYmIHIucHVzaChlbihlLCBhLCBsKSkpLCBlID0gZS5yZXR1cm4KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdG4oZSkgewogICAgICAgICAgICBpZiAobnVsbCA9PT0gZSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIGUgPSBlLnJldHVybgogICAgICAgICAgICB9IHdoaWxlIChlICYmIDUgIT09IGUudGFnKTsKICAgICAgICAgICAgcmV0dXJuIGUgfHwgbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcm4oZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICBmb3IgKHZhciBhID0gbi5fcmVhY3ROYW1lLCB1ID0gW107IG51bGwgIT09IHQgJiYgdCAhPT0gcjspIHsKICAgICAgICAgICAgICAgIHZhciBvID0gdCwKICAgICAgICAgICAgICAgICAgICBpID0gby5hbHRlcm5hdGUsCiAgICAgICAgICAgICAgICAgICAgcyA9IG8uc3RhdGVOb2RlOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGkgJiYgaSA9PT0gcikgYnJlYWs7CiAgICAgICAgICAgICAgICA1ID09PSBvLnRhZyAmJiBudWxsICE9PSBzICYmIChvID0gcywgbCA/IG51bGwgIT0gKGkgPSBBKHQsIGEpKSAmJiB1LnVuc2hpZnQoZW4odCwgaSwgbykpIDogbCB8fCBudWxsICE9IChpID0gQSh0LCBhKSkgJiYgdS5wdXNoKGVuKHQsIGksIG8pKSksIHQgPSB0LnJldHVybgogICAgICAgICAgICB9CiAgICAgICAgICAgIDAgIT09IHUubGVuZ3RoICYmIGUucHVzaCh7CiAgICAgICAgICAgICAgICBldmVudDogbiwKICAgICAgICAgICAgICAgIGxpc3RlbmVyczogdQogICAgICAgICAgICB9KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbG4oZSkgewogICAgICAgICAgICByZXR1cm4gKCJzdHJpbmciID09IHR5cGVvZiBlID8gZSA6ICIiICsgZSkucmVwbGFjZShWbywgIlxuIikucmVwbGFjZShBbywgIiIpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBhbihlLCBuLCByLCBsKSB7CiAgICAgICAgICAgIGlmIChuID0gbG4obiksIGxuKGUpICE9PSBuICYmIHIpIHRocm93IEVycm9yKHQoNDI1KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHVuKCkge30KCiAgICAgICAgZnVuY3Rpb24gb24oZSwgbikgewogICAgICAgICAgICByZXR1cm4gInRleHRhcmVhIiA9PT0gZSB8fCAibm9zY3JpcHQiID09PSBlIHx8ICJzdHJpbmciID09IHR5cGVvZiBuLmNoaWxkcmVuIHx8ICJudW1iZXIiID09IHR5cGVvZiBuLmNoaWxkcmVuIHx8ICJvYmplY3QiID09IHR5cGVvZiBuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIG51bGwgIT09IG4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgbnVsbCAhPSBuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gc24oZSkgewogICAgICAgICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRocm93IGUKICAgICAgICAgICAgfSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjbihlLCBuKSB7CiAgICAgICAgICAgIHZhciB0ID0gbiwKICAgICAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHQubmV4dFNpYmxpbmc7CiAgICAgICAgICAgICAgICBpZiAoZS5yZW1vdmVDaGlsZCh0KSwgbCAmJiA4ID09PSBsLm5vZGVUeXBlKQogICAgICAgICAgICAgICAgICAgIGlmICgiLyQiID09PSAodCA9IGwuZGF0YSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IHIpIHJldHVybiBlLnJlbW92ZUNoaWxkKGwpLCB2b2lkIGNlKG4pOwogICAgICAgICAgICAgICAgICAgICAgICByLS0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgIiQiICE9PSB0ICYmICIkPyIgIT09IHQgJiYgIiQhIiAhPT0gdCB8fCByKys7CiAgICAgICAgICAgICAgICB0ID0gbAogICAgICAgICAgICB9IHdoaWxlICh0KTsKICAgICAgICAgICAgY2UobikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZuKGUpIHsKICAgICAgICAgICAgZm9yICg7IG51bGwgIT0gZTsgZSA9IGUubmV4dFNpYmxpbmcpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gZS5ub2RlVHlwZTsKICAgICAgICAgICAgICAgIGlmICgxID09PSBuIHx8IDMgPT09IG4pIGJyZWFrOwogICAgICAgICAgICAgICAgaWYgKDggPT09IG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIiQiID09PSAobiA9IGUuZGF0YSkgfHwgIiQhIiA9PT0gbiB8fCAiJD8iID09PSBuKSBicmVhazsKICAgICAgICAgICAgICAgICAgICBpZiAoIi8kIiA9PT0gbikgcmV0dXJuIG51bGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZG4oZSkgewogICAgICAgICAgICBlID0gZS5wcmV2aW91c1NpYmxpbmc7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBlOykgewogICAgICAgICAgICAgICAgaWYgKDggPT09IGUubm9kZVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZGF0YTsKICAgICAgICAgICAgICAgICAgICBpZiAoIiQiID09PSB0IHx8ICIkISIgPT09IHQgfHwgIiQ/IiA9PT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gbikgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIG4tLQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSAiLyQiID09PSB0ICYmIG4rKwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZSA9IGUucHJldmlvdXNTaWJsaW5nCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHBuKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlW0tvXTsKICAgICAgICAgICAgaWYgKG4pIHJldHVybiBuOwogICAgICAgICAgICBmb3IgKHZhciB0ID0gZS5wYXJlbnROb2RlOyB0OykgewogICAgICAgICAgICAgICAgaWYgKG4gPSB0W1hvXSB8fCB0W0tvXSkgewogICAgICAgICAgICAgICAgICAgIGlmICh0ID0gbi5hbHRlcm5hdGUsIG51bGwgIT09IG4uY2hpbGQgfHwgbnVsbCAhPT0gdCAmJiBudWxsICE9PSB0LmNoaWxkKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSBkbihlKTsgbnVsbCAhPT0gZTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gZVtLb10pIHJldHVybiB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGRuKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdCA9IChlID0gdCkucGFyZW50Tm9kZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtbihlKSB7CiAgICAgICAgICAgIHJldHVybiAhKGUgPSBlW0tvXSB8fCBlW1hvXSkgfHwgNSAhPT0gZS50YWcgJiYgNiAhPT0gZS50YWcgJiYgMTMgIT09IGUudGFnICYmIDMgIT09IGUudGFnID8gbnVsbCA6IGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhuKGUpIHsKICAgICAgICAgICAgaWYgKDUgPT09IGUudGFnIHx8IDYgPT09IGUudGFnKSByZXR1cm4gZS5zdGF0ZU5vZGU7CiAgICAgICAgICAgIHRocm93IEVycm9yKHQoMzMpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ24oZSkgewogICAgICAgICAgICByZXR1cm4gZVtZb10gfHwgbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdm4oZSkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgY3VycmVudDogZQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB5bihlLCBuKSB7CiAgICAgICAgICAgIDAgPiBuaSB8fCAoZS5jdXJyZW50ID0gZWlbbmldLCBlaVtuaV0gPSBudWxsLCBuaS0tKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYm4oZSwgbiwgdCkgewogICAgICAgICAgICBuaSsrLCBlaVtuaV0gPSBlLmN1cnJlbnQsIGUuY3VycmVudCA9IG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGtuKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBlLnR5cGUuY29udGV4dFR5cGVzOwogICAgICAgICAgICBpZiAoIXQpIHJldHVybiB0aTsKICAgICAgICAgICAgdmFyIHIgPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgaWYgKHIgJiYgci5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0ID09PSBuKSByZXR1cm4gci5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dDsKICAgICAgICAgICAgdmFyIGwsIGEgPSB7fTsKICAgICAgICAgICAgZm9yIChsIGluIHQpIGFbbF0gPSBuW2xdOwogICAgICAgICAgICByZXR1cm4gciAmJiAoKGUgPSBlLnN0YXRlTm9kZSkuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dCA9IG4sIGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQgPSBhKSwgYQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gd24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSAoZSA9IGUuY2hpbGRDb250ZXh0VHlwZXMpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBTbihlLCBuLCByKSB7CiAgICAgICAgICAgIGlmIChyaS5jdXJyZW50ICE9PSB0aSkgdGhyb3cgRXJyb3IodCgxNjgpKTsKICAgICAgICAgICAgYm4ocmksIG4pLCBibihsaSwgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHhuKGUsIG4sIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgaWYgKG4gPSBuLmNoaWxkQ29udGV4dFR5cGVzLCAiZnVuY3Rpb24iICE9IHR5cGVvZiBsLmdldENoaWxkQ29udGV4dCkgcmV0dXJuIHI7CiAgICAgICAgICAgIGZvciAodmFyIGEgaW4gbCA9IGwuZ2V0Q2hpbGRDb250ZXh0KCkpCiAgICAgICAgICAgICAgICBpZiAoIShhIGluIG4pKSB0aHJvdyBFcnJvcih0KDEwOCwgZChlKSB8fCAiVW5rbm93biIsIGEpKTsKICAgICAgICAgICAgcmV0dXJuIExhKHt9LCByLCBsKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRW4oZSkgewogICAgICAgICAgICByZXR1cm4gZSA9IChlID0gZS5zdGF0ZU5vZGUpICYmIGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQgfHwgdGksIGFpID0gcmkuY3VycmVudCwgYm4ocmksIGUpLCBibihsaSwgbGkuY3VycmVudCksICEwCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBDbihlLCBuLCByKSB7CiAgICAgICAgICAgIHZhciBsID0gZS5zdGF0ZU5vZGU7CiAgICAgICAgICAgIGlmICghbCkgdGhyb3cgRXJyb3IodCgxNjkpKTsKICAgICAgICAgICAgciA/IChlID0geG4oZSwgbiwgYWkpLCBsLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0ID0gZSwgeW4obGkpLCB5bihyaSksIGJuKHJpLCBlKSkgOiB5bihsaSksIGJuKGxpLCByKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gem4oZSkgewogICAgICAgICAgICBudWxsID09PSB1aSA/IHVpID0gW2VdIDogdWkucHVzaChlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTm4oKSB7CiAgICAgICAgICAgIGlmICghaWkgJiYgbnVsbCAhPT0gdWkpIHsKICAgICAgICAgICAgICAgIGlpID0gITA7CiAgICAgICAgICAgICAgICB2YXIgZSA9IDAsCiAgICAgICAgICAgICAgICAgICAgbiA9IHh1OwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHVpOwogICAgICAgICAgICAgICAgICAgIGZvciAoeHUgPSAxOyBlIDwgdC5sZW5ndGg7IGUrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbZV07CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByKCEwKQogICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSByKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB1aSA9IG51bGwsIG9pID0gITEKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBudWxsICE9PSB1aSAmJiAodWkgPSB1aS5zbGljZShlICsgMSkpLCBhdShmdSwgTm4pLCBuCiAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgIHh1ID0gbiwgaWkgPSAhMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBQbihlLCBuKSB7CiAgICAgICAgICAgIHNpW2NpKytdID0gZGksIHNpW2NpKytdID0gZmksIGZpID0gZSwgZGkgPSBuCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBfbihlLCBuLCB0KSB7CiAgICAgICAgICAgIHBpW21pKytdID0gZ2ksIHBpW21pKytdID0gdmksIHBpW21pKytdID0gaGksIGhpID0gZTsKICAgICAgICAgICAgdmFyIHIgPSBnaTsKICAgICAgICAgICAgZSA9IHZpOwogICAgICAgICAgICB2YXIgbCA9IDMyIC0geXUocikgLSAxOwogICAgICAgICAgICByICY9IH4oMSA8PCBsKSwgdCArPSAxOwogICAgICAgICAgICB2YXIgYSA9IDMyIC0geXUobikgKyBsOwogICAgICAgICAgICBpZiAoMzAgPCBhKSB7CiAgICAgICAgICAgICAgICB2YXIgdSA9IGwgLSBsICUgNTsKICAgICAgICAgICAgICAgIGEgPSAociAmICgxIDw8IHUpIC0gMSkudG9TdHJpbmcoMzIpLCByID4+PSB1LCBsIC09IHUsIGdpID0gMSA8PCAzMiAtIHl1KG4pICsgbCB8IHQgPDwgbCB8IHIsIHZpID0gYSArIGUKICAgICAgICAgICAgfSBlbHNlIGdpID0gMSA8PCBhIHwgdCA8PCBsIHwgciwgdmkgPSBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBMbihlKSB7CiAgICAgICAgICAgIG51bGwgIT09IGUucmV0dXJuICYmIChQbihlLCAxKSwgX24oZSwgMSwgMCkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBUbihlKSB7CiAgICAgICAgICAgIGZvciAoOyBlID09PSBmaTspIGZpID0gc2lbLS1jaV0sIHNpW2NpXSA9IG51bGwsIGRpID0gc2lbLS1jaV0sIHNpW2NpXSA9IG51bGw7CiAgICAgICAgICAgIGZvciAoOyBlID09PSBoaTspIGhpID0gcGlbLS1taV0sIHBpW21pXSA9IG51bGwsIHZpID0gcGlbLS1taV0sIHBpW21pXSA9IG51bGwsIGdpID0gcGlbLS1taV0sIHBpW21pXSA9IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIE1uKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSAkcyg1LCBudWxsLCBudWxsLCAwKTsKICAgICAgICAgICAgdC5lbGVtZW50VHlwZSA9ICJERUxFVEVEIiwgdC5zdGF0ZU5vZGUgPSBuLCB0LnJldHVybiA9IGUsIG51bGwgPT09IChuID0gZS5kZWxldGlvbnMpID8gKGUuZGVsZXRpb25zID0gW3RdLCBlLmZsYWdzIHw9IDE2KSA6IG4ucHVzaCh0KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRm4oZSwgbikgewogICAgICAgICAgICBzd2l0Y2ggKGUudGFnKSB7CiAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnR5cGU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IChuID0gMSAhPT0gbi5ub2RlVHlwZSB8fCB0LnRvTG93ZXJDYXNlKCkgIT09IG4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA/IG51bGwgOiBuKSAmJiAoZS5zdGF0ZU5vZGUgPSBuLCB5aSA9IGUsIGJpID0gZm4obi5maXJzdENoaWxkKSwgITApOwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSAobiA9ICIiID09PSBlLnBlbmRpbmdQcm9wcyB8fCAzICE9PSBuLm5vZGVUeXBlID8gbnVsbCA6IG4pICYmIChlLnN0YXRlTm9kZSA9IG4sIHlpID0gZSwgYmkgPSBudWxsLCAhMCk7CiAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSAobiA9IDggIT09IG4ubm9kZVR5cGUgPyBudWxsIDogbikgJiYgKHQgPSBudWxsICE9PSBoaSA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGdpLAogICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogdmkKICAgICAgICAgICAgICAgICAgICB9IDogbnVsbCwgZS5tZW1vaXplZFN0YXRlID0gewogICAgICAgICAgICAgICAgICAgICAgICBkZWh5ZHJhdGVkOiBuLAogICAgICAgICAgICAgICAgICAgICAgICB0cmVlQ29udGV4dDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlMYW5lOiAxMDczNzQxODI0CiAgICAgICAgICAgICAgICAgICAgfSwgKHQgPSAkcygxOCwgbnVsbCwgbnVsbCwgMCkpLnN0YXRlTm9kZSA9IG4sIHQucmV0dXJuID0gZSwgZS5jaGlsZCA9IHQsIHlpID0gZSwgYmkgPSBudWxsLCAhMCk7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBSbihlKSB7CiAgICAgICAgICAgIHJldHVybiAwICE9ICgxICYgZS5tb2RlKSAmJiAwID09ICgxMjggJiBlLmZsYWdzKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRG4oZSkgewogICAgICAgICAgICBpZiAoa2kpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gYmk7CiAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gbjsKICAgICAgICAgICAgICAgICAgICBpZiAoIUZuKGUsIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSbihlKSkgdGhyb3cgRXJyb3IodCg0MTgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGZuKHIubmV4dFNpYmxpbmcpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHlpOwogICAgICAgICAgICAgICAgICAgICAgICBuICYmIEZuKGUsIG4pID8gTW4obCwgcikgOiAoZS5mbGFncyA9IC00MDk3ICYgZS5mbGFncyB8IDIsIGtpID0gITEsIHlpID0gZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChSbihlKSkgdGhyb3cgRXJyb3IodCg0MTgpKTsKICAgICAgICAgICAgICAgICAgICBlLmZsYWdzID0gLTQwOTcgJiBlLmZsYWdzIHwgMiwga2kgPSAhMSwgeWkgPSBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIE9uKGUpIHsKICAgICAgICAgICAgZm9yIChlID0gZS5yZXR1cm47IG51bGwgIT09IGUgJiYgNSAhPT0gZS50YWcgJiYgMyAhPT0gZS50YWcgJiYgMTMgIT09IGUudGFnOykgZSA9IGUucmV0dXJuOwogICAgICAgICAgICB5aSA9IGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEluKGUpIHsKICAgICAgICAgICAgaWYgKGUgIT09IHlpKSByZXR1cm4gITE7CiAgICAgICAgICAgIGlmICgha2kpIHJldHVybiBPbihlKSwga2kgPSAhMCwgITE7CiAgICAgICAgICAgIHZhciBuOwogICAgICAgICAgICBpZiAoKG4gPSAzICE9PSBlLnRhZykgJiYgIShuID0gNSAhPT0gZS50YWcpICYmIChuID0gImhlYWQiICE9PSAobiA9IGUudHlwZSkgJiYgImJvZHkiICE9PSBuICYmICFvbihlLnR5cGUsIGUubWVtb2l6ZWRQcm9wcykpLCBuICYmIChuID0gYmkpKSB7CiAgICAgICAgICAgICAgICBpZiAoUm4oZSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSBiaTsgZTspIGUgPSBmbihlLm5leHRTaWJsaW5nKTsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDQxOCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKDsgbjspIE1uKGUsIG4pLCBuID0gZm4obi5uZXh0U2libGluZykKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoT24oZSksIDEzID09PSBlLnRhZykgewogICAgICAgICAgICAgICAgaWYgKCEoZSA9IG51bGwgIT09IChlID0gZS5tZW1vaXplZFN0YXRlKSA/IGUuZGVoeWRyYXRlZCA6IG51bGwpKSB0aHJvdyBFcnJvcih0KDMxNykpOwogICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IGUubmV4dFNpYmxpbmcsIG4gPSAwOyBlOykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoOCA9PT0gZS5ub2RlVHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmRhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIi8kIiA9PT0gcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpID0gZm4oZS5uZXh0U2libGluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi0tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgIiQiICE9PSByICYmICIkISIgIT09IHIgJiYgIiQ/IiAhPT0gciB8fCBuKysKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5uZXh0U2libGluZwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBiaSA9IG51bGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGJpID0geWkgPyBmbihlLnN0YXRlTm9kZS5uZXh0U2libGluZykgOiBudWxsOwogICAgICAgICAgICByZXR1cm4gITAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFVuKCkgewogICAgICAgICAgICBiaSA9IHlpID0gbnVsbCwga2kgPSAhMQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVm4oZSkgewogICAgICAgICAgICBudWxsID09PSB3aSA/IHdpID0gW2VdIDogd2kucHVzaChlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQW4oZSwgbikgewogICAgICAgICAgICBpZiAoZSAmJiBlLmRlZmF1bHRQcm9wcykgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCBpbiBuID0gTGEoe30sIG4pLCBlID0gZS5kZWZhdWx0UHJvcHMpIHZvaWQgMCA9PT0gblt0XSAmJiAoblt0XSA9IGVbdF0pOwogICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQm4oKSB7CiAgICAgICAgICAgIHppID0gQ2kgPSBFaSA9IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFduKGUsIG4pIHsKICAgICAgICAgICAgbiA9IHhpLmN1cnJlbnQsIHluKHhpKSwgZS5fY3VycmVudFZhbHVlID0gbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSG4oZSwgbiwgdCkgewogICAgICAgICAgICBmb3IgKDsgbnVsbCAhPT0gZTspIHsKICAgICAgICAgICAgICAgIHZhciByID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgICAgICBpZiAoKGUuY2hpbGRMYW5lcyAmIG4pICE9PSBuID8gKGUuY2hpbGRMYW5lcyB8PSBuLCBudWxsICE9PSByICYmIChyLmNoaWxkTGFuZXMgfD0gbikpIDogbnVsbCAhPT0gciAmJiAoci5jaGlsZExhbmVzICYgbikgIT09IG4gJiYgKHIuY2hpbGRMYW5lcyB8PSBuKSwgZSA9PT0gdCkgYnJlYWs7CiAgICAgICAgICAgICAgICBlID0gZS5yZXR1cm4KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUW4oZSwgbikgewogICAgICAgICAgICBFaSA9IGUsIHppID0gQ2kgPSBudWxsLCBudWxsICE9PSAoZSA9IGUuZGVwZW5kZW5jaWVzKSAmJiBudWxsICE9PSBlLmZpcnN0Q29udGV4dCAmJiAoMCAhPSAoZS5sYW5lcyAmIG4pICYmICh0cyA9ICEwKSwgZS5maXJzdENvbnRleHQgPSBudWxsKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gam4oZSkgewogICAgICAgICAgICB2YXIgbiA9IGUuX2N1cnJlbnRWYWx1ZTsKICAgICAgICAgICAgaWYgKHppICE9PSBlKQogICAgICAgICAgICAgICAgaWYgKGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9pemVkVmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IG51bGwKICAgICAgICAgICAgICAgICAgICB9LCBudWxsID09PSBDaSkgewogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBFaSkgdGhyb3cgRXJyb3IodCgzMDgpKTsKICAgICAgICAgICAgICAgICAgICBDaSA9IGUsIEVpLmRlcGVuZGVuY2llcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgbGFuZXM6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0Q29udGV4dDogZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBDaSA9IENpLm5leHQgPSBlOwogICAgICAgICAgICByZXR1cm4gbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gJG4oZSkgewogICAgICAgICAgICBudWxsID09PSBOaSA/IE5pID0gW2VdIDogTmkucHVzaChlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcW4oZSwgbiwgdCwgcikgewogICAgICAgICAgICB2YXIgbCA9IG4uaW50ZXJsZWF2ZWQ7CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSBsID8gKHQubmV4dCA9IHQsICRuKG4pKSA6ICh0Lm5leHQgPSBsLm5leHQsIGwubmV4dCA9IHQpLCBuLmludGVybGVhdmVkID0gdCwgS24oZSwgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEtuKGUsIG4pIHsKICAgICAgICAgICAgZS5sYW5lcyB8PSBuOwogICAgICAgICAgICB2YXIgdCA9IGUuYWx0ZXJuYXRlOwogICAgICAgICAgICBmb3IgKG51bGwgIT09IHQgJiYgKHQubGFuZXMgfD0gbiksIHQgPSBlLCBlID0gZS5yZXR1cm47IG51bGwgIT09IGU7KSBlLmNoaWxkTGFuZXMgfD0gbiwgbnVsbCAhPT0gKHQgPSBlLmFsdGVybmF0ZSkgJiYgKHQuY2hpbGRMYW5lcyB8PSBuKSwgdCA9IGUsIGUgPSBlLnJldHVybjsKICAgICAgICAgICAgcmV0dXJuIDMgPT09IHQudGFnID8gdC5zdGF0ZU5vZGUgOiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBZbihlKSB7CiAgICAgICAgICAgIGUudXBkYXRlUXVldWUgPSB7CiAgICAgICAgICAgICAgICBiYXNlU3RhdGU6IGUubWVtb2l6ZWRTdGF0ZSwKICAgICAgICAgICAgICAgIGZpcnN0QmFzZVVwZGF0ZTogbnVsbCwKICAgICAgICAgICAgICAgIGxhc3RCYXNlVXBkYXRlOiBudWxsLAogICAgICAgICAgICAgICAgc2hhcmVkOiB7CiAgICAgICAgICAgICAgICAgICAgcGVuZGluZzogbnVsbCwKICAgICAgICAgICAgICAgICAgICBpbnRlcmxlYXZlZDogbnVsbCwKICAgICAgICAgICAgICAgICAgICBsYW5lczogMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVmZmVjdHM6IG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWG4oZSwgbikgewogICAgICAgICAgICBlID0gZS51cGRhdGVRdWV1ZSwgbi51cGRhdGVRdWV1ZSA9PT0gZSAmJiAobi51cGRhdGVRdWV1ZSA9IHsKICAgICAgICAgICAgICAgIGJhc2VTdGF0ZTogZS5iYXNlU3RhdGUsCiAgICAgICAgICAgICAgICBmaXJzdEJhc2VVcGRhdGU6IGUuZmlyc3RCYXNlVXBkYXRlLAogICAgICAgICAgICAgICAgbGFzdEJhc2VVcGRhdGU6IGUubGFzdEJhc2VVcGRhdGUsCiAgICAgICAgICAgICAgICBzaGFyZWQ6IGUuc2hhcmVkLAogICAgICAgICAgICAgICAgZWZmZWN0czogZS5lZmZlY3RzCiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBHbihlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBldmVudFRpbWU6IGUsCiAgICAgICAgICAgICAgICBsYW5lOiBuLAogICAgICAgICAgICAgICAgdGFnOiAwLAogICAgICAgICAgICAgICAgcGF5bG9hZDogbnVsbCwKICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBudWxsLAogICAgICAgICAgICAgICAgbmV4dDogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBabihlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gZS51cGRhdGVRdWV1ZTsKICAgICAgICAgICAgaWYgKG51bGwgPT09IHIpIHJldHVybiBudWxsOwogICAgICAgICAgICBpZiAociA9IHIuc2hhcmVkLCAwICE9ICgyICYgYnMpKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHIucGVuZGluZzsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBsID8gbi5uZXh0ID0gbiA6IChuLm5leHQgPSBsLm5leHQsIGwubmV4dCA9IG4pLCByLnBlbmRpbmcgPSBuLCBQaShlLCB0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSAobCA9IHIuaW50ZXJsZWF2ZWQpID8gKG4ubmV4dCA9IG4sICRuKHIpKSA6IChuLm5leHQgPSBsLm5leHQsIGwubmV4dCA9IG4pLCByLmludGVybGVhdmVkID0gbiwgS24oZSwgdCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEpuKGUsIG4sIHQpIHsKICAgICAgICAgICAgaWYgKG51bGwgIT09IChuID0gbi51cGRhdGVRdWV1ZSkgJiYgKG4gPSBuLnNoYXJlZCwgMCAhPSAoNDE5NDI0MCAmIHQpKSkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuLmxhbmVzOwogICAgICAgICAgICAgICAgdCB8PSByICY9IGUucGVuZGluZ0xhbmVzLCBuLmxhbmVzID0gdCwgbmUoZSwgdCkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZXQoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IGUudXBkYXRlUXVldWUsCiAgICAgICAgICAgICAgICByID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgIGlmIChudWxsICE9PSByICYmIHQgPT09IChyID0gci51cGRhdGVRdWV1ZSkpIHsKICAgICAgICAgICAgICAgIHZhciBsID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICBhID0gbnVsbDsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAodCA9IHQuZmlyc3RCYXNlVXBkYXRlKSkgewogICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFRpbWU6IHQuZXZlbnRUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZTogdC5sYW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiB0LnRhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IHQucGF5bG9hZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiB0LmNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSBhID8gbCA9IGEgPSB1IDogYSA9IGEubmV4dCA9IHUsIHQgPSB0Lm5leHQKICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSB0KTsKICAgICAgICAgICAgICAgICAgICBudWxsID09PSBhID8gbCA9IGEgPSBuIDogYSA9IGEubmV4dCA9IG4KICAgICAgICAgICAgICAgIH0gZWxzZSBsID0gYSA9IG47CiAgICAgICAgICAgICAgICByZXR1cm4gdCA9IHsKICAgICAgICAgICAgICAgICAgICBiYXNlU3RhdGU6IHIuYmFzZVN0YXRlLAogICAgICAgICAgICAgICAgICAgIGZpcnN0QmFzZVVwZGF0ZTogbCwKICAgICAgICAgICAgICAgICAgICBsYXN0QmFzZVVwZGF0ZTogYSwKICAgICAgICAgICAgICAgICAgICBzaGFyZWQ6IHIuc2hhcmVkLAogICAgICAgICAgICAgICAgICAgIGVmZmVjdHM6IHIuZWZmZWN0cwogICAgICAgICAgICAgICAgfSwgdm9pZChlLnVwZGF0ZVF1ZXVlID0gdCkKICAgICAgICAgICAgfQogICAgICAgICAgICBudWxsID09PSAoZSA9IHQubGFzdEJhc2VVcGRhdGUpID8gdC5maXJzdEJhc2VVcGRhdGUgPSBuIDogZS5uZXh0ID0gbiwgdC5sYXN0QmFzZVVwZGF0ZSA9IG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG50KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSBlLnVwZGF0ZVF1ZXVlOwogICAgICAgICAgICBfaSA9ICExOwogICAgICAgICAgICB2YXIgYSA9IGwuZmlyc3RCYXNlVXBkYXRlLAogICAgICAgICAgICAgICAgdSA9IGwubGFzdEJhc2VVcGRhdGUsCiAgICAgICAgICAgICAgICBvID0gbC5zaGFyZWQucGVuZGluZzsKICAgICAgICAgICAgaWYgKG51bGwgIT09IG8pIHsKICAgICAgICAgICAgICAgIGwuc2hhcmVkLnBlbmRpbmcgPSBudWxsOwogICAgICAgICAgICAgICAgdmFyIGkgPSBvLAogICAgICAgICAgICAgICAgICAgIHMgPSBpLm5leHQ7CiAgICAgICAgICAgICAgICBpLm5leHQgPSBudWxsLCBudWxsID09PSB1ID8gYSA9IHMgOiB1Lm5leHQgPSBzLCB1ID0gaTsKICAgICAgICAgICAgICAgIHZhciBjID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgICAgICBudWxsICE9PSBjICYmIChvID0gKGMgPSBjLnVwZGF0ZVF1ZXVlKS5sYXN0QmFzZVVwZGF0ZSkgIT09IHUgJiYgKG51bGwgPT09IG8gPyBjLmZpcnN0QmFzZVVwZGF0ZSA9IHMgOiBvLm5leHQgPSBzLCBjLmxhc3RCYXNlVXBkYXRlID0gaSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobnVsbCAhPT0gYSkgewogICAgICAgICAgICAgICAgdmFyIGYgPSBsLmJhc2VTdGF0ZTsKICAgICAgICAgICAgICAgIGZvciAodSA9IDAsIGMgPSBzID0gaSA9IG51bGwsIG8gPSBhOzspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IG8ubGFuZSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG8uZXZlbnRUaW1lOwogICAgICAgICAgICAgICAgICAgIGlmICgociAmIGQpID09PSBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGMgJiYgKGMgPSBjLm5leHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFRpbWU6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5lOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBvLnRhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IG8ucGF5bG9hZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBvLmNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkID0gbiwgcCA9IHQsIGgudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YobSA9IGgucGF5bG9hZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBtLmNhbGwocCwgZiwgZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmZsYWdzID0gLTY1NTM3ICYgbS5mbGFncyB8IDEyODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IChkID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YobSA9IGgucGF5bG9hZCkgPyBtLmNhbGwocCwgZiwgZCkgOiBtKSkgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IExhKHt9LCBmLCBkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBvLmNhbGxiYWNrICYmIDAgIT09IG8ubGFuZSAmJiAoZS5mbGFncyB8PSA2NCwgbnVsbCA9PT0gKGQgPSBsLmVmZmVjdHMpID8gbC5lZmZlY3RzID0gW29dIDogZC5wdXNoKG8pKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBwID0gewogICAgICAgICAgICAgICAgICAgICAgICBldmVudFRpbWU6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmU6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogby50YWcsCiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IG8ucGF5bG9hZCwKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IG8uY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IG51bGwKICAgICAgICAgICAgICAgICAgICB9LCBudWxsID09PSBjID8gKHMgPSBjID0gcCwgaSA9IGYpIDogYyA9IGMubmV4dCA9IHAsIHUgfD0gZDsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gKG8gPSBvLm5leHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSAobyA9IGwuc2hhcmVkLnBlbmRpbmcpKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IChkID0gbykubmV4dCwgZC5uZXh0ID0gbnVsbCwgbC5sYXN0QmFzZVVwZGF0ZSA9IGQsIGwuc2hhcmVkLnBlbmRpbmcgPSBudWxsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGMgJiYgKGkgPSBmKSwgbC5iYXNlU3RhdGUgPSBpLCBsLmZpcnN0QmFzZVVwZGF0ZSA9IHMsIGwubGFzdEJhc2VVcGRhdGUgPSBjLCBudWxsICE9PSAobiA9IGwuc2hhcmVkLmludGVybGVhdmVkKSkgewogICAgICAgICAgICAgICAgICAgIGwgPSBuOwogICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgdSB8PSBsLmxhbmUsIGwgPSBsLm5leHQKICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChsICE9PSBuKQogICAgICAgICAgICAgICAgfSBlbHNlIG51bGwgPT09IGEgJiYgKGwuc2hhcmVkLmxhbmVzID0gMCk7CiAgICAgICAgICAgICAgICBOcyB8PSB1LCBlLmxhbmVzID0gdSwgZS5tZW1vaXplZFN0YXRlID0gZgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB0dChlLCBuLCByKSB7CiAgICAgICAgICAgIGlmIChlID0gbi5lZmZlY3RzLCBuLmVmZmVjdHMgPSBudWxsLCBudWxsICE9PSBlKQogICAgICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGUubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGVbbl0sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBsLmNhbGxiYWNrOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLmNhbGxiYWNrID0gbnVsbCwgbCA9IHIsICJmdW5jdGlvbiIgIT0gdHlwZW9mIGEpIHRocm93IEVycm9yKHQoMTkxLCBhKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2FsbChsKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJ0KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgdCA9IG51bGwgPT0gKHQgPSB0KHIsIG4gPSBlLm1lbW9pemVkU3RhdGUpKSA/IG4gOiBMYSh7fSwgbiwgdCksIGUubWVtb2l6ZWRTdGF0ZSA9IHQsIDAgPT09IGUubGFuZXMgJiYgKGUudXBkYXRlUXVldWUuYmFzZVN0YXRlID0gdCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGx0KGUsIG4sIHQsIHIsIGwsIGEsIHUpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mKGUgPSBlLnN0YXRlTm9kZSkuc2hvdWxkQ29tcG9uZW50VXBkYXRlID8gZS5zaG91bGRDb21wb25lbnRVcGRhdGUociwgYSwgdSkgOiAhKG4ucHJvdG90eXBlICYmIG4ucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ICYmIE9lKHQsIHIpICYmIE9lKGwsIGEpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYXQoZSwgbiwgdCkgewogICAgICAgICAgICB2YXIgciA9ICExLAogICAgICAgICAgICAgICAgbCA9IHRpLAogICAgICAgICAgICAgICAgYSA9IG4uY29udGV4dFR5cGU7CiAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgYSAmJiBudWxsICE9PSBhID8gYSA9IGpuKGEpIDogKGwgPSB3bihuKSA/IGFpIDogcmkuY3VycmVudCwgYSA9IChyID0gbnVsbCAhPSAociA9IG4uY29udGV4dFR5cGVzKSkgPyBrbihlLCBsKSA6IHRpKSwgbiA9IG5ldyBuKHQsIGEpLCBlLm1lbW9pemVkU3RhdGUgPSBudWxsICE9PSBuLnN0YXRlICYmIHZvaWQgMCAhPT0gbi5zdGF0ZSA/IG4uc3RhdGUgOiBudWxsLCBuLnVwZGF0ZXIgPSBUaSwgZS5zdGF0ZU5vZGUgPSBuLCBuLl9yZWFjdEludGVybmFscyA9IGUsIHIgJiYgKChlID0gZS5zdGF0ZU5vZGUpLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQgPSBsLCBlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0ID0gYSksIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHV0KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgZSA9IG4uc3RhdGUsICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4uY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAmJiBuLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHModCwgciksICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4uVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgJiYgbi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyh0LCByKSwgbi5zdGF0ZSAhPT0gZSAmJiBUaS5lbnF1ZXVlUmVwbGFjZVN0YXRlKG4sIG4uc3RhdGUsIG51bGwpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvdChlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHZhciBsID0gZS5zdGF0ZU5vZGU7CiAgICAgICAgICAgIGwucHJvcHMgPSB0LCBsLnN0YXRlID0gZS5tZW1vaXplZFN0YXRlLCBsLnJlZnMgPSBMaSwgWW4oZSk7CiAgICAgICAgICAgIHZhciBhID0gbi5jb250ZXh0VHlwZTsKICAgICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIGEgJiYgbnVsbCAhPT0gYSA/IGwuY29udGV4dCA9IGpuKGEpIDogKGEgPSB3bihuKSA/IGFpIDogcmkuY3VycmVudCwgbC5jb250ZXh0ID0ga24oZSwgYSkpLCBsLnN0YXRlID0gZS5tZW1vaXplZFN0YXRlLCAiZnVuY3Rpb24iID09IHR5cGVvZihhID0gbi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpICYmIChydChlLCBuLCBhLCB0KSwgbC5zdGF0ZSA9IGUubWVtb2l6ZWRTdGF0ZSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIHx8ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGwuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgfHwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgbC5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIGwuY29tcG9uZW50V2lsbE1vdW50IHx8IChuID0gbC5zdGF0ZSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbC5jb21wb25lbnRXaWxsTW91bnQgJiYgbC5jb21wb25lbnRXaWxsTW91bnQoKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbC5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50ICYmIGwuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLCBuICE9PSBsLnN0YXRlICYmIFRpLmVucXVldWVSZXBsYWNlU3RhdGUobCwgbC5zdGF0ZSwgbnVsbCksIG50KGUsIHQsIGwsIHIpLCBsLnN0YXRlID0gZS5tZW1vaXplZFN0YXRlKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbC5jb21wb25lbnREaWRNb3VudCAmJiAoZS5mbGFncyB8PSA0MTk0MzA4KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaXQoZSwgbiwgcikgewogICAgICAgICAgICBpZiAobnVsbCAhPT0gKGUgPSByLnJlZikgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgZSAmJiAib2JqZWN0IiAhPSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgaWYgKHIuX293bmVyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSByLl9vd25lcikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSAhPT0gci50YWcpIHRocm93IEVycm9yKHQoMzA5KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gci5zdGF0ZU5vZGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCFsKSB0aHJvdyBFcnJvcih0KDE0NywgZSkpOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gbCwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9ICIiICsgZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gbiAmJiBudWxsICE9PSBuLnJlZiAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBuLnJlZiAmJiBuLnJlZi5fc3RyaW5nUmVmID09PSB1ID8gbi5yZWYgOiAobiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhLnJlZnM7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPT09IExpICYmIChuID0gYS5yZWZzID0ge30pLCBudWxsID09PSBlID8gZGVsZXRlIG5bdV0gOiBuW3VdID0gZQogICAgICAgICAgICAgICAgICAgIH0sIG4uX3N0cmluZ1JlZiA9IHUsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIGUpIHRocm93IEVycm9yKHQoMjg0KSk7CiAgICAgICAgICAgICAgICBpZiAoIXIuX293bmVyKSB0aHJvdyBFcnJvcih0KDI5MCwgZSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHN0KGUsIG4pIHsKICAgICAgICAgICAgdGhyb3cgZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKSwgRXJyb3IodCgzMSwgIltvYmplY3QgT2JqZWN0XSIgPT09IGUgPyAib2JqZWN0IHdpdGgga2V5cyB7IiArIE9iamVjdC5rZXlzKG4pLmpvaW4oIiwgIikgKyAifSIgOiBlKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGN0KGUpIHsKICAgICAgICAgICAgcmV0dXJuICgwLCBlLl9pbml0KShlLl9wYXlsb2FkKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZnQoZSkgewogICAgICAgICAgICBmdW5jdGlvbiBuKG4sIHQpIHsKICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmRlbGV0aW9uczsKICAgICAgICAgICAgICAgICAgICBudWxsID09PSByID8gKG4uZGVsZXRpb25zID0gW3RdLCBuLmZsYWdzIHw9IDE2KSA6IHIucHVzaCh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiByKHQsIHIpIHsKICAgICAgICAgICAgICAgIGlmICghZSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICBmb3IgKDsgbnVsbCAhPT0gcjspIG4odCwgciksIHIgPSByLnNpYmxpbmc7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBsKGUsIG4pIHsKICAgICAgICAgICAgICAgIGZvciAoZSA9IG5ldyBNYXA7IG51bGwgIT09IG47KSBudWxsICE9PSBuLmtleSA/IGUuc2V0KG4ua2V5LCBuKSA6IGUuc2V0KG4uaW5kZXgsIG4pLCBuID0gbi5zaWJsaW5nOwogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gYShlLCBuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGUgPSBSbChlLCBuKSkuaW5kZXggPSAwLCBlLnNpYmxpbmcgPSBudWxsLCBlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHUobiwgdCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIG4uaW5kZXggPSByLCBlID8gbnVsbCAhPT0gKHIgPSBuLmFsdGVybmF0ZSkgPyAociA9IHIuaW5kZXgpIDwgdCA/IChuLmZsYWdzIHw9IDIsIHQpIDogciA6IChuLmZsYWdzIHw9IDIsIHQpIDogKG4uZmxhZ3MgfD0gMTA0ODU3NiwgdCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gaShuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBudWxsID09PSBuLmFsdGVybmF0ZSAmJiAobi5mbGFncyB8PSAyKSwgbgogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBzKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBuIHx8IDYgIT09IG4udGFnID8gKChuID0gVWwodCwgZS5tb2RlLCByKSkucmV0dXJuID0gZSwgbikgOiAoKG4gPSBhKG4sIHQpKS5yZXR1cm4gPSBlLCBuKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBjKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgICAgIHZhciBsID0gdC50eXBlOwogICAgICAgICAgICAgICAgcmV0dXJuIGwgPT09IGhhID8gZChlLCBuLCB0LnByb3BzLmNoaWxkcmVuLCByLCB0LmtleSkgOiBudWxsICE9PSBuICYmIChuLmVsZW1lbnRUeXBlID09PSBsIHx8ICJvYmplY3QiID09IHR5cGVvZiBsICYmIG51bGwgIT09IGwgJiYgbC4kJHR5cGVvZiA9PT0gRWEgJiYgY3QobCkgPT09IG4udHlwZSkgPyAoKHIgPSBhKG4sIHQucHJvcHMpKS5yZWYgPSBpdChlLCBuLCB0KSwgci5yZXR1cm4gPSBlLCByKSA6ICgociA9IERsKHQudHlwZSwgdC5rZXksIHQucHJvcHMsIG51bGwsIGUubW9kZSwgcikpLnJlZiA9IGl0KGUsIG4sIHQpLCByLnJldHVybiA9IGUsIHIpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSwgbiwgdCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IG4gfHwgNCAhPT0gbi50YWcgfHwgbi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyAhPT0gdC5jb250YWluZXJJbmZvIHx8IG4uc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uICE9PSB0LmltcGxlbWVudGF0aW9uID8gKChuID0gVmwodCwgZS5tb2RlLCByKSkucmV0dXJuID0gZSwgbikgOiAoKG4gPSBhKG4sIHQuY2hpbGRyZW4gfHwgW10pKS5yZXR1cm4gPSBlLCBuKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBkKGUsIG4sIHQsIHIsIGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBuIHx8IDcgIT09IG4udGFnID8gKChuID0gT2wodCwgZS5tb2RlLCByLCBsKSkucmV0dXJuID0gZSwgbikgOiAoKG4gPSBhKG4sIHQpKS5yZXR1cm4gPSBlLCBuKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBwKGUsIG4sIHQpIHsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgbiAmJiAiIiAhPT0gbiB8fCAibnVtYmVyIiA9PSB0eXBlb2YgbikgcmV0dXJuIChuID0gVWwoIiIgKyBuLCBlLm1vZGUsIHQpKS5yZXR1cm4gPSBlLCBuOwogICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBuICYmIG51bGwgIT09IG4pIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG4uJCR0eXBlb2YpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBwYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodCA9IERsKG4udHlwZSwgbi5rZXksIG4ucHJvcHMsIG51bGwsIGUubW9kZSwgdCkpLnJlZiA9IGl0KGUsIG51bGwsIG4pLCB0LnJldHVybiA9IGUsIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbWE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG4gPSBWbChuLCBlLm1vZGUsIHQpKS5yZXR1cm4gPSBlLCBuOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAoZSwgKDAsIG4uX2luaXQpKG4uX3BheWxvYWQpLCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoTWEobikgfHwgbyhuKSkgcmV0dXJuIChuID0gT2wobiwgZS5tb2RlLCB0LCBudWxsKSkucmV0dXJuID0gZSwgbjsKICAgICAgICAgICAgICAgICAgICBzdChlLCBuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gbShlLCBuLCB0LCByKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IG51bGwgIT09IG4gPyBuLmtleSA6IG51bGw7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgIiIgIT09IHQgfHwgIm51bWJlciIgPT0gdHlwZW9mIHQpIHJldHVybiBudWxsICE9PSBsID8gbnVsbCA6IHMoZSwgbiwgIiIgKyB0LCByKTsKICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiBudWxsICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LiQkdHlwZW9mKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgcGE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5rZXkgPT09IGwgPyBjKGUsIG4sIHQsIHIpIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBtYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmtleSA9PT0gbCA/IGYoZSwgbiwgdCwgcikgOiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0oZSwgbiwgKGwgPSB0Ll9pbml0KSh0Ll9wYXlsb2FkKSwgcikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKE1hKHQpIHx8IG8odCkpIHJldHVybiBudWxsICE9PSBsID8gbnVsbCA6IGQoZSwgbiwgdCwgciwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgc3QoZSwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGgoZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiByICYmICIiICE9PSByIHx8ICJudW1iZXIiID09IHR5cGVvZiByKSByZXR1cm4gcyhuLCBlID0gZS5nZXQodCkgfHwgbnVsbCwgIiIgKyByLCBsKTsKICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgciAmJiBudWxsICE9PSByKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyLiQkdHlwZW9mKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgcGE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyhuLCBlID0gZS5nZXQobnVsbCA9PT0gci5rZXkgPyB0IDogci5rZXkpIHx8IG51bGwsIHIsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG1hOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYobiwgZSA9IGUuZ2V0KG51bGwgPT09IHIua2V5ID8gdCA6IHIua2V5KSB8fCBudWxsLCByLCBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoKGUsIG4sIHQsICgwLCByLl9pbml0KShyLl9wYXlsb2FkKSwgbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKE1hKHIpIHx8IG8ocikpIHJldHVybiBkKG4sIGUgPSBlLmdldCh0KSB8fCBudWxsLCByLCBsLCBudWxsKTsKICAgICAgICAgICAgICAgICAgICBzdChuLCByKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZyh0LCBhLCBvLCBpKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gbnVsbCwgYyA9IG51bGwsIGYgPSBhLCBkID0gYSA9IDAsIGcgPSBudWxsOyBudWxsICE9PSBmICYmIGQgPCBvLmxlbmd0aDsgZCsrKSB7CiAgICAgICAgICAgICAgICAgICAgZi5pbmRleCA+IGQgPyAoZyA9IGYsIGYgPSBudWxsKSA6IGcgPSBmLnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBtKHQsIGYsIG9bZF0sIGkpOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGYgJiYgKGYgPSBnKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZSAmJiBmICYmIG51bGwgPT09IHYuYWx0ZXJuYXRlICYmIG4odCwgZiksIGEgPSB1KHYsIGEsIGQpLCBudWxsID09PSBjID8gcyA9IHYgOiBjLnNpYmxpbmcgPSB2LCBjID0gdiwgZiA9IGcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChkID09PSBvLmxlbmd0aCkgcmV0dXJuIHIodCwgZiksIGtpICYmIFBuKHQsIGQpLCBzOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGYpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZCA8IG8ubGVuZ3RoOyBkKyspIG51bGwgIT09IChmID0gcCh0LCBvW2RdLCBpKSkgJiYgKGEgPSB1KGYsIGEsIGQpLCBudWxsID09PSBjID8gcyA9IGYgOiBjLnNpYmxpbmcgPSBmLCBjID0gZik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtpICYmIFBuKHQsIGQpLCBzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKGYgPSBsKHQsIGYpOyBkIDwgby5sZW5ndGg7IGQrKykgbnVsbCAhPT0gKGcgPSBoKGYsIHQsIGQsIG9bZF0sIGkpKSAmJiAoZSAmJiBudWxsICE9PSBnLmFsdGVybmF0ZSAmJiBmLmRlbGV0ZShudWxsID09PSBnLmtleSA/IGQgOiBnLmtleSksIGEgPSB1KGcsIGEsIGQpLCBudWxsID09PSBjID8gcyA9IGcgOiBjLnNpYmxpbmcgPSBnLCBjID0gZyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBmLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbih0LCBlKQogICAgICAgICAgICAgICAgfSkpLCBraSAmJiBQbih0LCBkKSwgcwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB2KGEsIGksIHMsIGMpIHsKICAgICAgICAgICAgICAgIHZhciBmID0gbyhzKTsKICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiBmKSB0aHJvdyBFcnJvcih0KDE1MCkpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gKHMgPSBmLmNhbGwocykpKSB0aHJvdyBFcnJvcih0KDE1MSkpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgZCA9IGYgPSBudWxsLCBnID0gaSwgdiA9IGkgPSAwLCB5ID0gbnVsbCwgYiA9IHMubmV4dCgpOyBudWxsICE9PSBnICYmICFiLmRvbmU7IHYrKywgYiA9IHMubmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgZy5pbmRleCA+IHYgPyAoeSA9IGcsIGcgPSBudWxsKSA6IHkgPSBnLnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBtKGEsIGcsIGIudmFsdWUsIGMpOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGcgJiYgKGcgPSB5KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZSAmJiBnICYmIG51bGwgPT09IGsuYWx0ZXJuYXRlICYmIG4oYSwgZyksIGkgPSB1KGssIGksIHYpLCBudWxsID09PSBkID8gZiA9IGsgOiBkLnNpYmxpbmcgPSBrLCBkID0gaywgZyA9IHkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChiLmRvbmUpIHJldHVybiByKGEsIGcpLCBraSAmJiBQbihhLCB2KSwgZjsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBnKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7ICFiLmRvbmU7IHYrKywgYiA9IHMubmV4dCgpKSBudWxsICE9PSAoYiA9IHAoYSwgYi52YWx1ZSwgYykpICYmIChpID0gdShiLCBpLCB2KSwgbnVsbCA9PT0gZCA/IGYgPSBiIDogZC5zaWJsaW5nID0gYiwgZCA9IGIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBraSAmJiBQbihhLCB2KSwgZgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChnID0gbChhLCBnKTsgIWIuZG9uZTsgdisrLCBiID0gcy5uZXh0KCkpIG51bGwgIT09IChiID0gaChnLCBhLCB2LCBiLnZhbHVlLCBjKSkgJiYgKGUgJiYgbnVsbCAhPT0gYi5hbHRlcm5hdGUgJiYgZy5kZWxldGUobnVsbCA9PT0gYi5rZXkgPyB2IDogYi5rZXkpLCBpID0gdShiLCBpLCB2KSwgbnVsbCA9PT0gZCA/IGYgPSBiIDogZC5zaWJsaW5nID0gYiwgZCA9IGIpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZy5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4oYSwgZSkKICAgICAgICAgICAgICAgIH0pKSwga2kgJiYgUG4oYSwgdiksIGYKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gZSh0LCBsLCB1LCBzKSB7CiAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHUgJiYgbnVsbCAhPT0gdSAmJiB1LnR5cGUgPT09IGhhICYmIG51bGwgPT09IHUua2V5ICYmICh1ID0gdS5wcm9wcy5jaGlsZHJlbiksICJvYmplY3QiID09IHR5cGVvZiB1ICYmIG51bGwgIT09IHUpIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHUuJCR0eXBlb2YpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBwYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gdS5rZXksIGYgPSBsOyBudWxsICE9PSBmOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZi5rZXkgPT09IGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYyA9IHUudHlwZSkgPT09IGhhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDcgPT09IGYudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIodCwgZi5zaWJsaW5nKSwgKGwgPSBhKGYsIHUucHJvcHMuY2hpbGRyZW4pKS5yZXR1cm4gPSB0LCB0ID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZi5lbGVtZW50VHlwZSA9PT0gYyB8fCAib2JqZWN0IiA9PSB0eXBlb2YgYyAmJiBudWxsICE9PSBjICYmIGMuJCR0eXBlb2YgPT09IEVhICYmIGN0KGMpID09PSBmLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKHQsIGYuc2libGluZyksIChsID0gYShmLCB1LnByb3BzKSkucmVmID0gaXQodCwgZiwgdSksIGwucmV0dXJuID0gdCwgdCA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcih0LCBmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbih0LCBmKSwgZiA9IGYuc2libGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LnR5cGUgPT09IGhhID8gKChsID0gT2wodS5wcm9wcy5jaGlsZHJlbiwgdC5tb2RlLCBzLCB1LmtleSkpLnJldHVybiA9IHQsIHQgPSBsKSA6ICgocyA9IERsKHUudHlwZSwgdS5rZXksIHUucHJvcHMsIG51bGwsIHQubW9kZSwgcykpLnJlZiA9IGl0KHQsIGwsIHUpLCBzLnJldHVybiA9IHQsIHQgPSBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbWE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmID0gdS5rZXk7IG51bGwgIT09IGw7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLmtleSA9PT0gZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQgPT09IGwudGFnICYmIGwuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8gPT09IHUuY29udGFpbmVySW5mbyAmJiBsLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiA9PT0gdS5pbXBsZW1lbnRhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIodCwgbC5zaWJsaW5nKSwgKGwgPSBhKGwsIHUuY2hpbGRyZW4gfHwgW10pKS5yZXR1cm4gPSB0LCB0ID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKHQsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKHQsIGwpLCBsID0gbC5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShsID0gVmwodSwgdC5tb2RlLCBzKSkucmV0dXJuID0gdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSh0LCBsLCAoZiA9IHUuX2luaXQpKHUuX3BheWxvYWQpLCBzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoTWEodSkpIHJldHVybiBnKHQsIGwsIHUsIHMpOwogICAgICAgICAgICAgICAgICAgIGlmIChvKHUpKSByZXR1cm4gdih0LCBsLCB1LCBzKTsKICAgICAgICAgICAgICAgICAgICBzdCh0LCB1KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiB1ICYmICIiICE9PSB1IHx8ICJudW1iZXIiID09IHR5cGVvZiB1ID8gKHUgPSAiIiArIHUsIG51bGwgIT09IGwgJiYgNiA9PT0gbC50YWcgPyAocih0LCBsLnNpYmxpbmcpLCAobCA9IGEobCwgdSkpLnJldHVybiA9IHQsIHQgPSBsKSA6IChyKHQsIGwpLCAobCA9IFVsKHUsIHQubW9kZSwgcykpLnJldHVybiA9IHQsIHQgPSBsKSwgaSh0KSkgOiByKHQsIGwpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGR0KGUpIHsKICAgICAgICAgICAgaWYgKGUgPT09IFJpKSB0aHJvdyBFcnJvcih0KDE3NCkpOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcHQoZSwgbikgewogICAgICAgICAgICBzd2l0Y2ggKGJuKElpLCBuKSwgYm4oT2ksIGUpLCBibihEaSwgUmkpLCBlID0gbi5ub2RlVHlwZSkgewogICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgICBuID0gKG4gPSBuLmRvY3VtZW50RWxlbWVudCkgPyBuLm5hbWVzcGFjZVVSSSA6IEwobnVsbCwgIiIpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBuID0gTChuID0gKGUgPSA4ID09PSBlID8gbi5wYXJlbnROb2RlIDogbikubmFtZXNwYWNlVVJJIHx8IG51bGwsIGUgPSBlLnRhZ05hbWUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgeW4oRGkpLCBibihEaSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG10KGUpIHsKICAgICAgICAgICAgeW4oRGkpLCB5bihPaSksIHluKElpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaHQoZSkgewogICAgICAgICAgICBkdChJaS5jdXJyZW50KTsKICAgICAgICAgICAgdmFyIG4gPSBkdChEaS5jdXJyZW50KSwKICAgICAgICAgICAgICAgIHQgPSBMKG4sIGUudHlwZSk7CiAgICAgICAgICAgIG4gIT09IHQgJiYgKGJuKE9pLCBlKSwgYm4oRGksIHQpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ3QoZSkgewogICAgICAgICAgICBPaS5jdXJyZW50ID09PSBlICYmICh5bihEaSksIHluKE9pKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHZ0KGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IGU7IG51bGwgIT09IG47KSB7CiAgICAgICAgICAgICAgICBpZiAoMTMgPT09IG4udGFnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuLm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHQgJiYgKG51bGwgPT09ICh0ID0gdC5kZWh5ZHJhdGVkKSB8fCAiJD8iID09PSB0LmRhdGEgfHwgIiQhIiA9PT0gdC5kYXRhKSkgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoMTkgPT09IG4udGFnICYmIHZvaWQgMCAhPT0gbi5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT0gKDEyOCAmIG4uZmxhZ3MpKSByZXR1cm4gbgogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudWxsICE9PSBuLmNoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgbi5jaGlsZC5yZXR1cm4gPSBuLCBuID0gbi5jaGlsZDsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG4gPT09IGUpIGJyZWFrOwogICAgICAgICAgICAgICAgZm9yICg7IG51bGwgPT09IG4uc2libGluZzspIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gbi5yZXR1cm4gfHwgbi5yZXR1cm4gPT09IGUpIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgIG4gPSBuLnJldHVybgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbi5zaWJsaW5nLnJldHVybiA9IG4ucmV0dXJuLCBuID0gbi5zaWJsaW5nCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHl0KCkgewogICAgICAgICAgICBmb3IgKHZhciBlID0gMDsgZSA8IFZpLmxlbmd0aDsgZSsrKSBWaVtlXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeSA9IG51bGw7CiAgICAgICAgICAgIFZpLmxlbmd0aCA9IDAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGJ0KCkgewogICAgICAgICAgICB0aHJvdyBFcnJvcih0KDMyMSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBrdChlLCBuKSB7CiAgICAgICAgICAgIGlmIChudWxsID09PSBuKSByZXR1cm4gITE7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgbi5sZW5ndGggJiYgdCA8IGUubGVuZ3RoOyB0KyspCiAgICAgICAgICAgICAgICBpZiAoIXdvKGVbdF0sIG5bdF0pKSByZXR1cm4gITE7CiAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gd3QoZSwgbiwgciwgbCwgYSwgdSkgewogICAgICAgICAgICBpZiAoV2kgPSB1LCBIaSA9IG4sIG4ubWVtb2l6ZWRTdGF0ZSA9IG51bGwsIG4udXBkYXRlUXVldWUgPSBudWxsLCBuLmxhbmVzID0gMCwgQWkuY3VycmVudCA9IG51bGwgPT09IGUgfHwgbnVsbCA9PT0gZS5tZW1vaXplZFN0YXRlID8gR2kgOiBaaSwgZSA9IHIobCwgYSksIHFpKSB7CiAgICAgICAgICAgICAgICB1ID0gMDsKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICBpZiAocWkgPSAhMSwgS2kgPSAwLCAyNSA8PSB1KSB0aHJvdyBFcnJvcih0KDMwMSkpOwogICAgICAgICAgICAgICAgICAgIHUgKz0gMSwgamkgPSBRaSA9IG51bGwsIG4udXBkYXRlUXVldWUgPSBudWxsLCBBaS5jdXJyZW50ID0gSmksIGUgPSByKGwsIGEpCiAgICAgICAgICAgICAgICB9IHdoaWxlIChxaSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoQWkuY3VycmVudCA9IFhpLCBuID0gbnVsbCAhPT0gUWkgJiYgbnVsbCAhPT0gUWkubmV4dCwgV2kgPSAwLCBqaSA9IFFpID0gSGkgPSBudWxsLCAkaSA9ICExLCBuKSB0aHJvdyBFcnJvcih0KDMwMCkpOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gU3QoKSB7CiAgICAgICAgICAgIHZhciBlID0gMCAhPT0gS2k7CiAgICAgICAgICAgIHJldHVybiBLaSA9IDAsIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHh0KCkgewogICAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgICAgIG1lbW9pemVkU3RhdGU6IG51bGwsCiAgICAgICAgICAgICAgICBiYXNlU3RhdGU6IG51bGwsCiAgICAgICAgICAgICAgICBiYXNlUXVldWU6IG51bGwsCiAgICAgICAgICAgICAgICBxdWV1ZTogbnVsbCwKICAgICAgICAgICAgICAgIG5leHQ6IG51bGwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGppID8gSGkubWVtb2l6ZWRTdGF0ZSA9IGppID0gZSA6IGppID0gamkubmV4dCA9IGUsIGppCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBFdCgpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT09IFFpKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IEhpLmFsdGVybmF0ZTsKICAgICAgICAgICAgICAgIGUgPSBudWxsICE9PSBlID8gZS5tZW1vaXplZFN0YXRlIDogbnVsbAogICAgICAgICAgICB9IGVsc2UgZSA9IFFpLm5leHQ7CiAgICAgICAgICAgIHZhciBuID0gbnVsbCA9PT0gamkgPyBIaS5tZW1vaXplZFN0YXRlIDogamkubmV4dDsKICAgICAgICAgICAgaWYgKG51bGwgIT09IG4pIGppID0gbiwgUWkgPSBlOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBlKSB0aHJvdyBFcnJvcih0KDMxMCkpOwogICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICBtZW1vaXplZFN0YXRlOiAoUWkgPSBlKS5tZW1vaXplZFN0YXRlLAogICAgICAgICAgICAgICAgICAgIGJhc2VTdGF0ZTogUWkuYmFzZVN0YXRlLAogICAgICAgICAgICAgICAgICAgIGJhc2VRdWV1ZTogUWkuYmFzZVF1ZXVlLAogICAgICAgICAgICAgICAgICAgIHF1ZXVlOiBRaS5xdWV1ZSwKICAgICAgICAgICAgICAgICAgICBuZXh0OiBudWxsCiAgICAgICAgICAgICAgICB9LCBudWxsID09PSBqaSA/IEhpLm1lbW9pemVkU3RhdGUgPSBqaSA9IGUgOiBqaSA9IGppLm5leHQgPSBlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGppCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBDdChlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBuID8gbihlKSA6IG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHp0KGUsIG4sIHIpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT09IChyID0gKG4gPSBFdCgpKS5xdWV1ZSkpIHRocm93IEVycm9yKHQoMzExKSk7CiAgICAgICAgICAgIHIubGFzdFJlbmRlcmVkUmVkdWNlciA9IGU7CiAgICAgICAgICAgIHZhciBsID0gUWksCiAgICAgICAgICAgICAgICBhID0gbC5iYXNlUXVldWUsCiAgICAgICAgICAgICAgICB1ID0gci5wZW5kaW5nOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gdSkgewogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGEubmV4dDsKICAgICAgICAgICAgICAgICAgICBhLm5leHQgPSB1Lm5leHQsIHUubmV4dCA9IG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGwuYmFzZVF1ZXVlID0gYSA9IHUsIHIucGVuZGluZyA9IG51bGwKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobnVsbCAhPT0gYSkgewogICAgICAgICAgICAgICAgdSA9IGEubmV4dCwgbCA9IGwuYmFzZVN0YXRlOwogICAgICAgICAgICAgICAgdmFyIGkgPSBvID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICBzID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICBjID0gdTsKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGMubGFuZTsKICAgICAgICAgICAgICAgICAgICBpZiAoKFdpICYgZikgPT09IGYpIG51bGwgIT09IHMgJiYgKHMgPSBzLm5leHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogYy5hY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0VhZ2VyU3RhdGU6IGMuaGFzRWFnZXJTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgZWFnZXJTdGF0ZTogYy5lYWdlclN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBudWxsCiAgICAgICAgICAgICAgICAgICAgfSksIGwgPSBjLmhhc0VhZ2VyU3RhdGUgPyBjLmVhZ2VyU3RhdGUgOiBlKGwsIGMuYWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5lOiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBjLmFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0VhZ2VyU3RhdGU6IGMuaGFzRWFnZXJTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhZ2VyU3RhdGU6IGMuZWFnZXJTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gcyA/IChpID0gcyA9IGQsIG8gPSBsKSA6IHMgPSBzLm5leHQgPSBkLCBIaS5sYW5lcyB8PSBmLCBOcyB8PSBmCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGMgPSBjLm5leHQKICAgICAgICAgICAgICAgIH0gd2hpbGUgKG51bGwgIT09IGMgJiYgYyAhPT0gdSk7CiAgICAgICAgICAgICAgICBudWxsID09PSBzID8gbyA9IGwgOiBzLm5leHQgPSBpLCB3byhsLCBuLm1lbW9pemVkU3RhdGUpIHx8ICh0cyA9ICEwKSwgbi5tZW1vaXplZFN0YXRlID0gbCwgbi5iYXNlU3RhdGUgPSBvLCBuLmJhc2VRdWV1ZSA9IHMsIHIubGFzdFJlbmRlcmVkU3RhdGUgPSBsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG51bGwgIT09IChlID0gci5pbnRlcmxlYXZlZCkpIHsKICAgICAgICAgICAgICAgIGEgPSBlOwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIHUgPSBhLmxhbmUsIEhpLmxhbmVzIHw9IHUsIE5zIHw9IHUsIGEgPSBhLm5leHQKICAgICAgICAgICAgICAgIH0gd2hpbGUgKGEgIT09IGUpCiAgICAgICAgICAgIH0gZWxzZSBudWxsID09PSBhICYmIChyLmxhbmVzID0gMCk7CiAgICAgICAgICAgIHJldHVybiBbbi5tZW1vaXplZFN0YXRlLCByLmRpc3BhdGNoXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTnQoZSwgbiwgcikgewogICAgICAgICAgICBpZiAobnVsbCA9PT0gKHIgPSAobiA9IEV0KCkpLnF1ZXVlKSkgdGhyb3cgRXJyb3IodCgzMTEpKTsKICAgICAgICAgICAgci5sYXN0UmVuZGVyZWRSZWR1Y2VyID0gZTsKICAgICAgICAgICAgdmFyIGwgPSByLmRpc3BhdGNoLAogICAgICAgICAgICAgICAgYSA9IHIucGVuZGluZywKICAgICAgICAgICAgICAgIHUgPSBuLm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgIGlmIChudWxsICE9PSBhKSB7CiAgICAgICAgICAgICAgICByLnBlbmRpbmcgPSBudWxsOwogICAgICAgICAgICAgICAgdmFyIG8gPSBhID0gYS5uZXh0OwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIHUgPSBlKHUsIG8uYWN0aW9uKSwgbyA9IG8ubmV4dAogICAgICAgICAgICAgICAgfSB3aGlsZSAobyAhPT0gYSk7CiAgICAgICAgICAgICAgICB3byh1LCBuLm1lbW9pemVkU3RhdGUpIHx8ICh0cyA9ICEwKSwgbi5tZW1vaXplZFN0YXRlID0gdSwgbnVsbCA9PT0gbi5iYXNlUXVldWUgJiYgKG4uYmFzZVN0YXRlID0gdSksIHIubGFzdFJlbmRlcmVkU3RhdGUgPSB1CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFt1LCBsXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUHQoZSwgbiwgdCkge30KCiAgICAgICAgZnVuY3Rpb24gX3QoZSwgbiwgcikgewogICAgICAgICAgICByID0gSGk7CiAgICAgICAgICAgIHZhciBsID0gRXQoKSwKICAgICAgICAgICAgICAgIGEgPSBuKCksCiAgICAgICAgICAgICAgICB1ID0gIXdvKGwubWVtb2l6ZWRTdGF0ZSwgYSk7CiAgICAgICAgICAgIGlmICh1ICYmIChsLm1lbW9pemVkU3RhdGUgPSBhLCB0cyA9ICEwKSwgbCA9IGwucXVldWUsIEJ0KE10LmJpbmQobnVsbCwgciwgbCwgZSksIFtlXSksIGwuZ2V0U25hcHNob3QgIT09IG4gfHwgdSB8fCBudWxsICE9PSBqaSAmJiAxICYgamkubWVtb2l6ZWRTdGF0ZS50YWcpIHsKICAgICAgICAgICAgICAgIGlmIChyLmZsYWdzIHw9IDIwNDgsIE90KDksIFR0LmJpbmQobnVsbCwgciwgbCwgYSwgbiksIHZvaWQgMCwgbnVsbCksIG51bGwgPT09IGtzKSB0aHJvdyBFcnJvcih0KDM0OSkpOwogICAgICAgICAgICAgICAgMCAhPSAoMzAgJiBXaSkgfHwgTHQociwgbiwgYSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTHQoZSwgbiwgdCkgewogICAgICAgICAgICBlLmZsYWdzIHw9IDE2Mzg0LCBlID0gewogICAgICAgICAgICAgICAgZ2V0U25hcHNob3Q6IG4sCiAgICAgICAgICAgICAgICB2YWx1ZTogdAogICAgICAgICAgICB9LCBudWxsID09PSAobiA9IEhpLnVwZGF0ZVF1ZXVlKSA/IChuID0gewogICAgICAgICAgICAgICAgbGFzdEVmZmVjdDogbnVsbCwKICAgICAgICAgICAgICAgIHN0b3JlczogbnVsbAogICAgICAgICAgICB9LCBIaS51cGRhdGVRdWV1ZSA9IG4sIG4uc3RvcmVzID0gW2VdKSA6IG51bGwgPT09ICh0ID0gbi5zdG9yZXMpID8gbi5zdG9yZXMgPSBbZV0gOiB0LnB1c2goZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFR0KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgbi52YWx1ZSA9IHQsIG4uZ2V0U25hcHNob3QgPSByLCBGdChuKSAmJiBSdChlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTXQoZSwgbiwgdCkgewogICAgICAgICAgICByZXR1cm4gdCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBGdChuKSAmJiBSdChlKQogICAgICAgICAgICB9KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEZ0KGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLmdldFNuYXBzaG90OwogICAgICAgICAgICBlID0gZS52YWx1ZTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciB0ID0gbigpOwogICAgICAgICAgICAgICAgcmV0dXJuICF3byhlLCB0KQogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUnQoZSkgewogICAgICAgICAgICB2YXIgbiA9IEtuKGUsIDEpOwogICAgICAgICAgICBudWxsICE9PSBuICYmIGFsKG4sIGUsIDEsIC0xKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRHQoZSkgewogICAgICAgICAgICB2YXIgbiA9IHh0KCk7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlICYmIChlID0gZSgpKSwgbi5tZW1vaXplZFN0YXRlID0gbi5iYXNlU3RhdGUgPSBlLCBlID0gewogICAgICAgICAgICAgICAgcGVuZGluZzogbnVsbCwKICAgICAgICAgICAgICAgIGludGVybGVhdmVkOiBudWxsLAogICAgICAgICAgICAgICAgbGFuZXM6IDAsCiAgICAgICAgICAgICAgICBkaXNwYXRjaDogbnVsbCwKICAgICAgICAgICAgICAgIGxhc3RSZW5kZXJlZFJlZHVjZXI6IEN0LAogICAgICAgICAgICAgICAgbGFzdFJlbmRlcmVkU3RhdGU6IGUKICAgICAgICAgICAgfSwgbi5xdWV1ZSA9IGUsIGUgPSBlLmRpc3BhdGNoID0gSnQuYmluZChudWxsLCBIaSwgZSksIFtuLm1lbW9pemVkU3RhdGUsIGVdCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBPdChlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHJldHVybiBlID0gewogICAgICAgICAgICAgICAgdGFnOiBlLAogICAgICAgICAgICAgICAgY3JlYXRlOiBuLAogICAgICAgICAgICAgICAgZGVzdHJveTogdCwKICAgICAgICAgICAgICAgIGRlcHM6IHIsCiAgICAgICAgICAgICAgICBuZXh0OiBudWxsCiAgICAgICAgICAgIH0sIG51bGwgPT09IChuID0gSGkudXBkYXRlUXVldWUpID8gKG4gPSB7CiAgICAgICAgICAgICAgICBsYXN0RWZmZWN0OiBudWxsLAogICAgICAgICAgICAgICAgc3RvcmVzOiBudWxsCiAgICAgICAgICAgIH0sIEhpLnVwZGF0ZVF1ZXVlID0gbiwgbi5sYXN0RWZmZWN0ID0gZS5uZXh0ID0gZSkgOiBudWxsID09PSAodCA9IG4ubGFzdEVmZmVjdCkgPyBuLmxhc3RFZmZlY3QgPSBlLm5leHQgPSBlIDogKHIgPSB0Lm5leHQsIHQubmV4dCA9IGUsIGUubmV4dCA9IHIsIG4ubGFzdEVmZmVjdCA9IGUpLCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBJdChlKSB7CiAgICAgICAgICAgIHJldHVybiBFdCgpLm1lbW9pemVkU3RhdGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFV0KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSB4dCgpOwogICAgICAgICAgICBIaS5mbGFncyB8PSBlLCBsLm1lbW9pemVkU3RhdGUgPSBPdCgxIHwgbiwgdCwgdm9pZCAwLCB2b2lkIDAgPT09IHIgPyBudWxsIDogcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFZ0KGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSBFdCgpOwogICAgICAgICAgICByID0gdm9pZCAwID09PSByID8gbnVsbCA6IHI7CiAgICAgICAgICAgIHZhciBhID0gdm9pZCAwOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gUWkpIHsKICAgICAgICAgICAgICAgIHZhciB1ID0gUWkubWVtb2l6ZWRTdGF0ZTsKICAgICAgICAgICAgICAgIGlmIChhID0gdS5kZXN0cm95LCBudWxsICE9PSByICYmIGt0KHIsIHUuZGVwcykpIHJldHVybiB2b2lkKGwubWVtb2l6ZWRTdGF0ZSA9IE90KG4sIHQsIGEsIHIpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIEhpLmZsYWdzIHw9IGUsIGwubWVtb2l6ZWRTdGF0ZSA9IE90KDEgfCBuLCB0LCBhLCByKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQXQoZSwgbikgewogICAgICAgICAgICByZXR1cm4gVXQoODM5MDY1NiwgOCwgZSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEJ0KGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIFZ0KDIwNDgsIDgsIGUsIG4pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBXdChlLCBuKSB7CiAgICAgICAgICAgIHJldHVybiBWdCg0LCAyLCBlLCBuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSHQoZSwgbikgewogICAgICAgICAgICByZXR1cm4gVnQoNCwgNCwgZSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFF0KGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4gPyAoZSA9IGUoKSwgbihlKSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuKG51bGwpCiAgICAgICAgICAgIH0pIDogbnVsbCAhPSBuID8gKGUgPSBlKCksIG4uY3VycmVudCA9IGUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbi5jdXJyZW50ID0gbnVsbAogICAgICAgICAgICB9KSA6IHZvaWQgMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24ganQoZSwgbiwgdCkgewogICAgICAgICAgICByZXR1cm4gdCA9IG51bGwgIT0gdCA/IHQuY29uY2F0KFtlXSkgOiBudWxsLCBWdCg0LCA0LCBRdC5iaW5kKG51bGwsIG4sIGUpLCB0KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gJHQoZSwgbikge30KCiAgICAgICAgZnVuY3Rpb24gcXQoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IEV0KCk7CiAgICAgICAgICAgIG4gPSB2b2lkIDAgPT09IG4gPyBudWxsIDogbjsKICAgICAgICAgICAgdmFyIHIgPSB0Lm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgIHJldHVybiBudWxsICE9PSByICYmIG51bGwgIT09IG4gJiYga3QobiwgclsxXSkgPyByWzBdIDogKHQubWVtb2l6ZWRTdGF0ZSA9IFtlLCBuXSwgZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEt0KGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBFdCgpOwogICAgICAgICAgICBuID0gdm9pZCAwID09PSBuID8gbnVsbCA6IG47CiAgICAgICAgICAgIHZhciByID0gdC5tZW1vaXplZFN0YXRlOwogICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gciAmJiBudWxsICE9PSBuICYmIGt0KG4sIHJbMV0pID8gclswXSA6IChlID0gZSgpLCB0Lm1lbW9pemVkU3RhdGUgPSBbZSwgbl0sIGUpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBZdChlLCBuLCB0KSB7CiAgICAgICAgICAgIHJldHVybiAwID09ICgyMSAmIFdpKSA/IChlLmJhc2VTdGF0ZSAmJiAoZS5iYXNlU3RhdGUgPSAhMSwgdHMgPSAhMCksIGUubWVtb2l6ZWRTdGF0ZSA9IHQpIDogKHdvKHQsIG4pIHx8ICh0ID0gWigpLCBIaS5sYW5lcyB8PSB0LCBOcyB8PSB0LCBlLmJhc2VTdGF0ZSA9ICEwKSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFh0KGUsIG4sIHQpIHsKICAgICAgICAgICAgeHUgPSAwICE9PSAodCA9IHh1KSAmJiA0ID4gdCA/IHQgOiA0LCBlKCEwKTsKICAgICAgICAgICAgdmFyIHIgPSBCaS50cmFuc2l0aW9uOwogICAgICAgICAgICBCaS50cmFuc2l0aW9uID0ge307CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBlKCExKSwgbigpCiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICB4dSA9IHQsIEJpLnRyYW5zaXRpb24gPSByCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEd0KCkgewogICAgICAgICAgICByZXR1cm4gRXQoKS5tZW1vaXplZFN0YXRlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBadChlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gbGwoZSk7CiAgICAgICAgICAgIHQgPSB7CiAgICAgICAgICAgICAgICBsYW5lOiByLAogICAgICAgICAgICAgICAgYWN0aW9uOiB0LAogICAgICAgICAgICAgICAgaGFzRWFnZXJTdGF0ZTogITEsCiAgICAgICAgICAgICAgICBlYWdlclN0YXRlOiBudWxsLAogICAgICAgICAgICAgICAgbmV4dDogbnVsbAogICAgICAgICAgICB9LCBlcihlKSA/IG5yKG4sIHQpIDogbnVsbCAhPT0gKHQgPSBxbihlLCBuLCB0LCByKSkgJiYgKGFsKHQsIGUsIHIsIHJsKCkpLCB0cih0LCBuLCByKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEp0KGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBsbChlKSwKICAgICAgICAgICAgICAgIGwgPSB7CiAgICAgICAgICAgICAgICAgICAgbGFuZTogciwKICAgICAgICAgICAgICAgICAgICBhY3Rpb246IHQsCiAgICAgICAgICAgICAgICAgICAgaGFzRWFnZXJTdGF0ZTogITEsCiAgICAgICAgICAgICAgICAgICAgZWFnZXJTdGF0ZTogbnVsbCwKICAgICAgICAgICAgICAgICAgICBuZXh0OiBudWxsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoZXIoZSkpIG5yKG4sIGwpOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBhID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgICAgICBpZiAoMCA9PT0gZS5sYW5lcyAmJiAobnVsbCA9PT0gYSB8fCAwID09PSBhLmxhbmVzKSAmJiBudWxsICE9PSAoYSA9IG4ubGFzdFJlbmRlcmVkUmVkdWNlcikpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBuLmxhc3RSZW5kZXJlZFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gYSh1LCB0KTsKICAgICAgICAgICAgICAgICAgICBpZiAobC5oYXNFYWdlclN0YXRlID0gITAsIGwuZWFnZXJTdGF0ZSA9IG8sIHdvKG8sIHUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gbi5pbnRlcmxlYXZlZDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGkgPyAobC5uZXh0ID0gbCwgJG4obikpIDogKGwubmV4dCA9IGkubmV4dCwgaS5uZXh0ID0gbCksIHZvaWQobi5pbnRlcmxlYXZlZCA9IGwpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgIG51bGwgIT09ICh0ID0gcW4oZSwgbiwgbCwgcikpICYmIChhbCh0LCBlLCByLCBsID0gcmwoKSksIHRyKHQsIG4sIHIpKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBlcihlKSB7CiAgICAgICAgICAgIHZhciBuID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgIHJldHVybiBlID09PSBIaSB8fCBudWxsICE9PSBuICYmIG4gPT09IEhpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBucihlLCBuKSB7CiAgICAgICAgICAgIHFpID0gJGkgPSAhMDsKICAgICAgICAgICAgdmFyIHQgPSBlLnBlbmRpbmc7CiAgICAgICAgICAgIG51bGwgPT09IHQgPyBuLm5leHQgPSBuIDogKG4ubmV4dCA9IHQubmV4dCwgdC5uZXh0ID0gbiksIGUucGVuZGluZyA9IG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHRyKGUsIG4sIHQpIHsKICAgICAgICAgICAgaWYgKDAgIT0gKDQxOTQyNDAgJiB0KSkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBuLmxhbmVzOwogICAgICAgICAgICAgICAgdCB8PSByICY9IGUucGVuZGluZ0xhbmVzLCBuLmxhbmVzID0gdCwgbmUoZSwgdCkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcnIoZSwgbikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAiIiwKICAgICAgICAgICAgICAgICAgICByID0gbjsKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICB0ICs9IGMociksIHIgPSByLnJldHVybgogICAgICAgICAgICAgICAgfSB3aGlsZSAocik7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHQKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgbCA9ICJcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6ICIgKyBlLm1lc3NhZ2UgKyAiXG4iICsgZS5zdGFjawogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgICAgIHNvdXJjZTogbiwKICAgICAgICAgICAgICAgIHN0YWNrOiBsLAogICAgICAgICAgICAgICAgZGlnZXN0OiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGxyKGUsIG4sIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgc291cmNlOiBudWxsLAogICAgICAgICAgICAgICAgc3RhY2s6IG51bGwgIT0gdCA/IHQgOiBudWxsLAogICAgICAgICAgICAgICAgZGlnZXN0OiBudWxsICE9IG4gPyBuIDogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBhcihlLCBuKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKG4udmFsdWUpCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRocm93IGUKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB1cihlLCBuLCB0KSB7CiAgICAgICAgICAgICh0ID0gR24oLTEsIHQpKS50YWcgPSAzLCB0LnBheWxvYWQgPSB7CiAgICAgICAgICAgICAgICBlbGVtZW50OiBudWxsCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHZhciByID0gbi52YWx1ZTsKICAgICAgICAgICAgcmV0dXJuIHQuY2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIERzIHx8IChEcyA9ICEwLCBPcyA9IHIpLCBhcigwLCBuKQogICAgICAgICAgICB9LCB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvcihlLCBuLCB0KSB7CiAgICAgICAgICAgICh0ID0gR24oLTEsIHQpKS50YWcgPSAzOwogICAgICAgICAgICB2YXIgciA9IGUudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7CiAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiByKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IG4udmFsdWU7CiAgICAgICAgICAgICAgICB0LnBheWxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihsKQogICAgICAgICAgICAgICAgfSwgdC5jYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGFyKDAsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGEgPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGEgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgYS5jb21wb25lbnREaWRDYXRjaCAmJiAodC5jYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYXIoMCwgbiksICJmdW5jdGlvbiIgIT0gdHlwZW9mIHIgJiYgKG51bGwgPT09IElzID8gSXMgPSBuZXcgU2V0KFt0aGlzXSkgOiBJcy5hZGQodGhpcykpOwogICAgICAgICAgICAgICAgdmFyIGUgPSBuLnN0YWNrOwogICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnREaWRDYXRjaChuLnZhbHVlLCB7CiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50U3RhY2s6IG51bGwgIT09IGUgPyBlIDogIiIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pLCB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBpcihlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gZS5waW5nQ2FjaGU7CiAgICAgICAgICAgIGlmIChudWxsID09PSByKSB7CiAgICAgICAgICAgICAgICByID0gZS5waW5nQ2FjaGUgPSBuZXcgZXM7CiAgICAgICAgICAgICAgICB2YXIgbCA9IG5ldyBTZXQ7CiAgICAgICAgICAgICAgICByLnNldChuLCBsKQogICAgICAgICAgICB9IGVsc2Ugdm9pZCAwID09PSAobCA9IHIuZ2V0KG4pKSAmJiAobCA9IG5ldyBTZXQsIHIuc2V0KG4sIGwpKTsKICAgICAgICAgICAgbC5oYXModCkgfHwgKGwuYWRkKHQpLCBlID0gTmwuYmluZChudWxsLCBlLCBuLCB0KSwgbi50aGVuKGUsIGUpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gc3IoZSkgewogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICB2YXIgbjsKICAgICAgICAgICAgICAgIGlmICgobiA9IDEzID09PSBlLnRhZykgJiYgKG4gPSBudWxsID09PSAobiA9IGUubWVtb2l6ZWRTdGF0ZSkgfHwgbnVsbCAhPT0gbi5kZWh5ZHJhdGVkKSwgbikgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICBlID0gZS5yZXR1cm4KICAgICAgICAgICAgfSB3aGlsZSAobnVsbCAhPT0gZSk7CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjcihlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHJldHVybiAwID09ICgxICYgZS5tb2RlKSA/IChlID09PSBuID8gZS5mbGFncyB8PSA2NTUzNiA6IChlLmZsYWdzIHw9IDEyOCwgdC5mbGFncyB8PSAxMzEwNzIsIHQuZmxhZ3MgJj0gLTUyODA1LCAxID09PSB0LnRhZyAmJiAobnVsbCA9PT0gdC5hbHRlcm5hdGUgPyB0LnRhZyA9IDE3IDogKChuID0gR24oLTEsIDEpKS50YWcgPSAyLCBabih0LCBuLCAxKSkpLCB0LmxhbmVzIHw9IDEpLCBlKSA6IChlLmZsYWdzIHw9IDY1NTM2LCBlLmxhbmVzID0gbCwgZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZyKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgbi5jaGlsZCA9IG51bGwgPT09IGUgPyBGaShuLCBudWxsLCB0LCByKSA6IE1pKG4sIGUuY2hpbGQsIHQsIHIpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBkcihlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHQgPSB0LnJlbmRlcjsKICAgICAgICAgICAgdmFyIGEgPSBuLnJlZjsKICAgICAgICAgICAgcmV0dXJuIFFuKG4sIGwpLCByID0gd3QoZSwgbiwgdCwgciwgYSwgbCksIHQgPSBTdCgpLCBudWxsID09PSBlIHx8IHRzID8gKGtpICYmIHQgJiYgTG4obiksIG4uZmxhZ3MgfD0gMSwgZnIoZSwgbiwgciwgbCksIG4uY2hpbGQpIDogKG4udXBkYXRlUXVldWUgPSBlLnVwZGF0ZVF1ZXVlLCBuLmZsYWdzICY9IC0yMDUzLCBlLmxhbmVzICY9IH5sLCBMcihlLCBuLCBsKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHByKGUsIG4sIHQsIHIsIGwpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT09IGUpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gdC50eXBlOwogICAgICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgIT0gdHlwZW9mIGEgfHwgRmwoYSkgfHwgdm9pZCAwICE9PSBhLmRlZmF1bHRQcm9wcyB8fCBudWxsICE9PSB0LmNvbXBhcmUgfHwgdm9pZCAwICE9PSB0LmRlZmF1bHRQcm9wcyA/ICgoZSA9IERsKHQudHlwZSwgbnVsbCwgciwgbiwgbi5tb2RlLCBsKSkucmVmID0gbi5yZWYsIGUucmV0dXJuID0gbiwgbi5jaGlsZCA9IGUpIDogKG4udGFnID0gMTUsIG4udHlwZSA9IGEsIG1yKGUsIG4sIGEsIHIsIGwpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhID0gZS5jaGlsZCwgMCA9PSAoZS5sYW5lcyAmIGwpKSB7CiAgICAgICAgICAgICAgICB2YXIgdSA9IGEubWVtb2l6ZWRQcm9wczsKICAgICAgICAgICAgICAgIGlmICgodCA9IG51bGwgIT09ICh0ID0gdC5jb21wYXJlKSA/IHQgOiBPZSkodSwgcikgJiYgZS5yZWYgPT09IG4ucmVmKSByZXR1cm4gTHIoZSwgbiwgbCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbi5mbGFncyB8PSAxLCAoZSA9IFJsKGEsIHIpKS5yZWYgPSBuLnJlZiwgZS5yZXR1cm4gPSBuLCBuLmNoaWxkID0gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbXIoZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICBpZiAobnVsbCAhPT0gZSkgewogICAgICAgICAgICAgICAgdmFyIGEgPSBlLm1lbW9pemVkUHJvcHM7CiAgICAgICAgICAgICAgICBpZiAoT2UoYSwgcikgJiYgZS5yZWYgPT09IG4ucmVmKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRzID0gITEsIG4ucGVuZGluZ1Byb3BzID0gciA9IGEsIDAgPT0gKGUubGFuZXMgJiBsKSkgcmV0dXJuIG4ubGFuZXMgPSBlLmxhbmVzLCBMcihlLCBuLCBsKTsKICAgICAgICAgICAgICAgICAgICAwICE9ICgxMzEwNzIgJiBlLmZsYWdzKSAmJiAodHMgPSAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdnIoZSwgbiwgdCwgciwgbCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhyKGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuLnBlbmRpbmdQcm9wcywKICAgICAgICAgICAgICAgIGwgPSByLmNoaWxkcmVuLAogICAgICAgICAgICAgICAgYSA9IG51bGwgIT09IGUgPyBlLm1lbW9pemVkU3RhdGUgOiBudWxsOwogICAgICAgICAgICBpZiAoImhpZGRlbiIgPT09IHIubW9kZSkKICAgICAgICAgICAgICAgIGlmICgwID09ICgxICYgbi5tb2RlKSkgbi5tZW1vaXplZFN0YXRlID0gewogICAgICAgICAgICAgICAgICAgIGJhc2VMYW5lczogMCwKICAgICAgICAgICAgICAgICAgICBjYWNoZVBvb2w6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnM6IG51bGwKICAgICAgICAgICAgICAgIH0sIGJuKEVzLCB4cyksIHhzIHw9IHQ7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSAoMTA3Mzc0MTgyNCAmIHQpKSByZXR1cm4gZSA9IG51bGwgIT09IGEgPyBhLmJhc2VMYW5lcyB8IHQgOiB0LCBuLmxhbmVzID0gbi5jaGlsZExhbmVzID0gMTA3Mzc0MTgyNCwgbi5tZW1vaXplZFN0YXRlID0gewogICAgICAgICAgICAgICAgICAgICAgICBiYXNlTGFuZXM6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlUG9vbDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnM6IG51bGwKICAgICAgICAgICAgICAgICAgICB9LCBuLnVwZGF0ZVF1ZXVlID0gbnVsbCwgYm4oRXMsIHhzKSwgeHMgfD0gZSwgbnVsbDsKICAgICAgICAgICAgICAgICAgICBuLm1lbW9pemVkU3RhdGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VMYW5lczogMCwKICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVQb29sOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uczogbnVsbAogICAgICAgICAgICAgICAgICAgIH0sIHIgPSBudWxsICE9PSBhID8gYS5iYXNlTGFuZXMgOiB0LCBibihFcywgeHMpLCB4cyB8PSByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgbnVsbCAhPT0gYSA/IChyID0gYS5iYXNlTGFuZXMgfCB0LCBuLm1lbW9pemVkU3RhdGUgPSBudWxsKSA6IHIgPSB0LCBibihFcywgeHMpLCB4cyB8PSByOwogICAgICAgICAgICByZXR1cm4gZnIoZSwgbiwgbCwgdCksIG4uY2hpbGQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGdyKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBuLnJlZjsKICAgICAgICAgICAgKG51bGwgPT09IGUgJiYgbnVsbCAhPT0gdCB8fCBudWxsICE9PSBlICYmIGUucmVmICE9PSB0KSAmJiAobi5mbGFncyB8PSA1MTIsIG4uZmxhZ3MgfD0gMjA5NzE1MikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHZyKGUsIG4sIHQsIHIsIGwpIHsKICAgICAgICAgICAgdmFyIGEgPSB3bih0KSA/IGFpIDogcmkuY3VycmVudDsKICAgICAgICAgICAgcmV0dXJuIGEgPSBrbihuLCBhKSwgUW4obiwgbCksIHQgPSB3dChlLCBuLCB0LCByLCBhLCBsKSwgciA9IFN0KCksIG51bGwgPT09IGUgfHwgdHMgPyAoa2kgJiYgciAmJiBMbihuKSwgbi5mbGFncyB8PSAxLCBmcihlLCBuLCB0LCBsKSwgbi5jaGlsZCkgOiAobi51cGRhdGVRdWV1ZSA9IGUudXBkYXRlUXVldWUsIG4uZmxhZ3MgJj0gLTIwNTMsIGUubGFuZXMgJj0gfmwsIExyKGUsIG4sIGwpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geXIoZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICBpZiAod24odCkpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gITA7CiAgICAgICAgICAgICAgICBFbihuKQogICAgICAgICAgICB9IGVsc2UgYSA9ICExOwogICAgICAgICAgICBpZiAoUW4obiwgbCksIG51bGwgPT09IG4uc3RhdGVOb2RlKSBfcihlLCBuKSwgYXQobiwgdCwgciksIG90KG4sIHQsIHIsIGwpLCByID0gITA7CiAgICAgICAgICAgIGVsc2UgaWYgKG51bGwgPT09IGUpIHsKICAgICAgICAgICAgICAgIHZhciB1ID0gbi5zdGF0ZU5vZGUsCiAgICAgICAgICAgICAgICAgICAgbyA9IG4ubWVtb2l6ZWRQcm9wczsKICAgICAgICAgICAgICAgIHUucHJvcHMgPSBvOwogICAgICAgICAgICAgICAgdmFyIGkgPSB1LmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgcyA9IHQuY29udGV4dFR5cGU7CiAgICAgICAgICAgICAgICBzID0gIm9iamVjdCIgPT0gdHlwZW9mIHMgJiYgbnVsbCAhPT0gcyA/IGpuKHMpIDoga24obiwgcyA9IHduKHQpID8gYWkgOiByaS5jdXJyZW50KTsKICAgICAgICAgICAgICAgIHZhciBjID0gdC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsCiAgICAgICAgICAgICAgICAgICAgZiA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGMgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTsKICAgICAgICAgICAgICAgIGYgfHwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB1LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgfHwgKG8gIT09IHIgfHwgaSAhPT0gcykgJiYgdXQobiwgdSwgciwgcyksIF9pID0gITE7CiAgICAgICAgICAgICAgICB2YXIgZCA9IG4ubWVtb2l6ZWRTdGF0ZTsKICAgICAgICAgICAgICAgIHUuc3RhdGUgPSBkLCBudChuLCByLCB1LCBsKSwgaSA9IG4ubWVtb2l6ZWRTdGF0ZSwgbyAhPT0gciB8fCBkICE9PSBpIHx8IGxpLmN1cnJlbnQgfHwgX2kgPyAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgYyAmJiAocnQobiwgdCwgYywgciksIGkgPSBuLm1lbW9pemVkU3RhdGUpLCAobyA9IF9pIHx8IGx0KG4sIHQsIG8sIHIsIGQsIGksIHMpKSA/IChmIHx8ICJmdW5jdGlvbiIgIT0gdHlwZW9mIHUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB1LmNvbXBvbmVudFdpbGxNb3VudCB8fCAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5jb21wb25lbnRXaWxsTW91bnQgJiYgdS5jb21wb25lbnRXaWxsTW91bnQoKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50ICYmIHUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5jb21wb25lbnREaWRNb3VudCAmJiAobi5mbGFncyB8PSA0MTk0MzA4KSkgOiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5jb21wb25lbnREaWRNb3VudCAmJiAobi5mbGFncyB8PSA0MTk0MzA4KSwgbi5tZW1vaXplZFByb3BzID0gciwgbi5tZW1vaXplZFN0YXRlID0gaSksIHUucHJvcHMgPSByLCB1LnN0YXRlID0gaSwgdS5jb250ZXh0ID0gcywgciA9IG8pIDogKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHUuY29tcG9uZW50RGlkTW91bnQgJiYgKG4uZmxhZ3MgfD0gNDE5NDMwOCksIHIgPSAhMSkKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHUgPSBuLnN0YXRlTm9kZSwgWG4oZSwgbiksIG8gPSBuLm1lbW9pemVkUHJvcHMsIHMgPSBuLnR5cGUgPT09IG4uZWxlbWVudFR5cGUgPyBvIDogQW4obi50eXBlLCBvKSwgdS5wcm9wcyA9IHMsIGYgPSBuLnBlbmRpbmdQcm9wcywgZCA9IHUuY29udGV4dCwgaSA9ICJvYmplY3QiID09IHR5cGVvZihpID0gdC5jb250ZXh0VHlwZSkgJiYgbnVsbCAhPT0gaSA/IGpuKGkpIDoga24obiwgaSA9IHduKHQpID8gYWkgOiByaS5jdXJyZW50KTsKICAgICAgICAgICAgICAgIHZhciBwID0gdC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7CiAgICAgICAgICAgICAgICAoYyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHAgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSkgfHwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB1LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgfHwgKG8gIT09IGYgfHwgZCAhPT0gaSkgJiYgdXQobiwgdSwgciwgaSksIF9pID0gITEsIGQgPSBuLm1lbW9pemVkU3RhdGUsIHUuc3RhdGUgPSBkLCBudChuLCByLCB1LCBsKTsKICAgICAgICAgICAgICAgIHZhciBtID0gbi5tZW1vaXplZFN0YXRlOwogICAgICAgICAgICAgICAgbyAhPT0gZiB8fCBkICE9PSBtIHx8IGxpLmN1cnJlbnQgfHwgX2kgPyAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgcCAmJiAocnQobiwgdCwgcCwgciksIG0gPSBuLm1lbW9pemVkU3RhdGUpLCAocyA9IF9pIHx8IGx0KG4sIHQsIHMsIHIsIGQsIG0sIGkpIHx8ICExKSA/IChjIHx8ICJmdW5jdGlvbiIgIT0gdHlwZW9mIHUuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5jb21wb25lbnRXaWxsVXBkYXRlIHx8ICgiZnVuY3Rpb24iID09IHR5cGVvZiB1LmNvbXBvbmVudFdpbGxVcGRhdGUgJiYgdS5jb21wb25lbnRXaWxsVXBkYXRlKHIsIG0sIGkpLCAiZnVuY3Rpb24iID09IHR5cGVvZiB1LlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlICYmIHUuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUociwgbSwgaSkpLCAiZnVuY3Rpb24iID09IHR5cGVvZiB1LmNvbXBvbmVudERpZFVwZGF0ZSAmJiAobi5mbGFncyB8PSA0KSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSAmJiAobi5mbGFncyB8PSAxMDI0KSkgOiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5jb21wb25lbnREaWRVcGRhdGUgfHwgbyA9PT0gZS5tZW1vaXplZFByb3BzICYmIGQgPT09IGUubWVtb2l6ZWRTdGF0ZSB8fCAobi5mbGFncyB8PSA0KSwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSB8fCBvID09PSBlLm1lbW9pemVkUHJvcHMgJiYgZCA9PT0gZS5tZW1vaXplZFN0YXRlIHx8IChuLmZsYWdzIHw9IDEwMjQpLCBuLm1lbW9pemVkUHJvcHMgPSByLCBuLm1lbW9pemVkU3RhdGUgPSBtKSwgdS5wcm9wcyA9IHIsIHUuc3RhdGUgPSBtLCB1LmNvbnRleHQgPSBpLCByID0gcykgOiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5jb21wb25lbnREaWRVcGRhdGUgfHwgbyA9PT0gZS5tZW1vaXplZFByb3BzICYmIGQgPT09IGUubWVtb2l6ZWRTdGF0ZSB8fCAobi5mbGFncyB8PSA0KSwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSB8fCBvID09PSBlLm1lbW9pemVkUHJvcHMgJiYgZCA9PT0gZS5tZW1vaXplZFN0YXRlIHx8IChuLmZsYWdzIHw9IDEwMjQpLCByID0gITEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGJyKGUsIG4sIHQsIHIsIGEsIGwpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBicihlLCBuLCB0LCByLCBsLCBhKSB7CiAgICAgICAgICAgIGdyKGUsIG4pOwogICAgICAgICAgICB2YXIgdSA9IDAgIT0gKDEyOCAmIG4uZmxhZ3MpOwogICAgICAgICAgICBpZiAoIXIgJiYgIXUpIHJldHVybiBsICYmIENuKG4sIHQsICExKSwgTHIoZSwgbiwgYSk7CiAgICAgICAgICAgIHIgPSBuLnN0YXRlTm9kZSwgbnMuY3VycmVudCA9IG47CiAgICAgICAgICAgIHZhciBvID0gdSAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0LmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciA/IG51bGwgOiByLnJlbmRlcigpOwogICAgICAgICAgICByZXR1cm4gbi5mbGFncyB8PSAxLCBudWxsICE9PSBlICYmIHUgPyAobi5jaGlsZCA9IE1pKG4sIGUuY2hpbGQsIG51bGwsIGEpLCBuLmNoaWxkID0gTWkobiwgbnVsbCwgbywgYSkpIDogZnIoZSwgbiwgbywgYSksIG4ubWVtb2l6ZWRTdGF0ZSA9IHIuc3RhdGUsIGwgJiYgQ24obiwgdCwgITApLCBuLmNoaWxkCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBrcihlKSB7CiAgICAgICAgICAgIHZhciBuID0gZS5zdGF0ZU5vZGU7CiAgICAgICAgICAgIG4ucGVuZGluZ0NvbnRleHQgPyBTbigwLCBuLnBlbmRpbmdDb250ZXh0LCBuLnBlbmRpbmdDb250ZXh0ICE9PSBuLmNvbnRleHQpIDogbi5jb250ZXh0ICYmIFNuKDAsIG4uY29udGV4dCwgITEpLCBwdChlLCBuLmNvbnRhaW5lckluZm8pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB3cihlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHJldHVybiBVbigpLCBWbihsKSwgbi5mbGFncyB8PSAyNTYsIGZyKGUsIG4sIHQsIHIpLCBuLmNoaWxkCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBTcihlKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBiYXNlTGFuZXM6IGUsCiAgICAgICAgICAgICAgICBjYWNoZVBvb2w6IG51bGwsCiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uczogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB4cihlLCBuLCByKSB7CiAgICAgICAgICAgIHZhciBsLCBhID0gbi5wZW5kaW5nUHJvcHMsCiAgICAgICAgICAgICAgICB1ID0gVWkuY3VycmVudCwKICAgICAgICAgICAgICAgIG8gPSAhMSwKICAgICAgICAgICAgICAgIGkgPSAwICE9ICgxMjggJiBuLmZsYWdzKTsKICAgICAgICAgICAgaWYgKChsID0gaSkgfHwgKGwgPSAobnVsbCA9PT0gZSB8fCBudWxsICE9PSBlLm1lbW9pemVkU3RhdGUpICYmIDAgIT0gKDIgJiB1KSksIGwgPyAobyA9ICEwLCBuLmZsYWdzICY9IC0xMjkpIDogbnVsbCAhPT0gZSAmJiBudWxsID09PSBlLm1lbW9pemVkU3RhdGUgfHwgKHUgfD0gMSksIGJuKFVpLCAxICYgdSksIG51bGwgPT09IGUpIHJldHVybiBEbihuKSwgbnVsbCAhPT0gKGUgPSBuLm1lbW9pemVkU3RhdGUpICYmIG51bGwgIT09IChlID0gZS5kZWh5ZHJhdGVkKSA/ICgwID09ICgxICYgbi5tb2RlKSA/IG4ubGFuZXMgPSAxIDogIiQhIiA9PT0gZS5kYXRhID8gbi5sYW5lcyA9IDggOiBuLmxhbmVzID0gMTA3Mzc0MTgyNCwgbnVsbCkgOiAoaSA9IGEuY2hpbGRyZW4sIGUgPSBhLmZhbGxiYWNrLCBvID8gKGEgPSBuLm1vZGUsIG8gPSBuLmNoaWxkLCBpID0gewogICAgICAgICAgICAgICAgbW9kZTogImhpZGRlbiIsCiAgICAgICAgICAgICAgICBjaGlsZHJlbjogaQogICAgICAgICAgICB9LCAwID09ICgxICYgYSkgJiYgbnVsbCAhPT0gbyA/IChvLmNoaWxkTGFuZXMgPSAwLCBvLnBlbmRpbmdQcm9wcyA9IGkpIDogbyA9IElsKGksIGEsIDAsIG51bGwpLCBlID0gT2woZSwgYSwgciwgbnVsbCksIG8ucmV0dXJuID0gbiwgZS5yZXR1cm4gPSBuLCBvLnNpYmxpbmcgPSBlLCBuLmNoaWxkID0gbywgbi5jaGlsZC5tZW1vaXplZFN0YXRlID0gU3IociksIG4ubWVtb2l6ZWRTdGF0ZSA9IHJzLCBlKSA6IEVyKG4sIGkpKTsKICAgICAgICAgICAgaWYgKG51bGwgIT09ICh1ID0gZS5tZW1vaXplZFN0YXRlKSAmJiBudWxsICE9PSAobCA9IHUuZGVoeWRyYXRlZCkpIHJldHVybiBmdW5jdGlvbihlLCBuLCByLCBsLCBhLCB1LCBvKSB7CiAgICAgICAgICAgICAgICBpZiAocikgcmV0dXJuIDI1NiAmIG4uZmxhZ3MgPyAobi5mbGFncyAmPSAtMjU3LCBDcihlLCBuLCBvLCBsID0gbHIoRXJyb3IodCg0MjIpKSkpKSA6IG51bGwgIT09IG4ubWVtb2l6ZWRTdGF0ZSA/IChuLmNoaWxkID0gZS5jaGlsZCwgbi5mbGFncyB8PSAxMjgsIG51bGwpIDogKHUgPSBsLmZhbGxiYWNrLCBhID0gbi5tb2RlLCBsID0gSWwoewogICAgICAgICAgICAgICAgICAgIG1vZGU6ICJ2aXNpYmxlIiwKICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbC5jaGlsZHJlbgogICAgICAgICAgICAgICAgfSwgYSwgMCwgbnVsbCksICh1ID0gT2wodSwgYSwgbywgbnVsbCkpLmZsYWdzIHw9IDIsIGwucmV0dXJuID0gbiwgdS5yZXR1cm4gPSBuLCBsLnNpYmxpbmcgPSB1LCBuLmNoaWxkID0gbCwgMCAhPSAoMSAmIG4ubW9kZSkgJiYgTWkobiwgZS5jaGlsZCwgbnVsbCwgbyksIG4uY2hpbGQubWVtb2l6ZWRTdGF0ZSA9IFNyKG8pLCBuLm1lbW9pemVkU3RhdGUgPSBycywgdSk7CiAgICAgICAgICAgICAgICBpZiAoMCA9PSAoMSAmIG4ubW9kZSkpIHJldHVybiBDcihlLCBuLCBvLCBudWxsKTsKICAgICAgICAgICAgICAgIGlmICgiJCEiID09PSBhLmRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGEubmV4dFNpYmxpbmcgJiYgYS5uZXh0U2libGluZy5kYXRhc2V0KSB2YXIgaSA9IGwuZGdzdDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCA9IGksIENyKGUsIG4sIG8sIGwgPSBscih1ID0gRXJyb3IodCg0MTkpKSwgbCwgdm9pZCAwKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpID0gMCAhPSAobyAmIGUuY2hpbGRMYW5lcyksIHRzIHx8IGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKGwgPSBrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvICYgLW8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI1NjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTEyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDI0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDQ4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0MDk2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MTkyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjM4NDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzI3Njg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY1NTM2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzEwNzI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI2MjE0NDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTI0Mjg4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDQ4NTc2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDk3MTUyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0MTk0MzA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mzg4NjA4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjc3NzIxNjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzM1NTQ0MzI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY3MTA4ODY0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAzMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTM2ODcwOTEyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAyNjg0MzU0NTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgMCAhPT0gKGEgPSAwICE9IChhICYgKGwuc3VzcGVuZGVkTGFuZXMgfCBvKSkgPyAwIDogYSkgJiYgYSAhPT0gdS5yZXRyeUxhbmUgJiYgKHUucmV0cnlMYW5lID0gYSwgS24oZSwgYSksIGFsKGwsIGUsIGEsIC0xKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZsKCksIENyKGUsIG4sIG8sIGwgPSBscihFcnJvcih0KDQyMSkpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAiJD8iID09PSBhLmRhdGEgPyAobi5mbGFncyB8PSAxMjgsIG4uY2hpbGQgPSBlLmNoaWxkLCBuID0gX2wuYmluZChudWxsLCBlKSwgYS5fcmVhY3RSZXRyeSA9IG4sIG51bGwpIDogKGUgPSB1LnRyZWVDb250ZXh0LCBiaSA9IGZuKGEubmV4dFNpYmxpbmcpLCB5aSA9IG4sIGtpID0gITAsIHdpID0gbnVsbCwgbnVsbCAhPT0gZSAmJiAocGlbbWkrK10gPSBnaSwgcGlbbWkrK10gPSB2aSwgcGlbbWkrK10gPSBoaSwgZ2kgPSBlLmlkLCB2aSA9IGUub3ZlcmZsb3csIGhpID0gbiksIChuID0gRXIobiwgbC5jaGlsZHJlbikpLmZsYWdzIHw9IDQwOTYsIG4pCiAgICAgICAgICAgIH0oZSwgbiwgaSwgYSwgbCwgdSwgcik7CiAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICBvID0gYS5mYWxsYmFjaywgaSA9IG4ubW9kZSwgbCA9ICh1ID0gZS5jaGlsZCkuc2libGluZzsKICAgICAgICAgICAgICAgIHZhciBzID0gewogICAgICAgICAgICAgICAgICAgIG1vZGU6ICJoaWRkZW4iLAogICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBhLmNoaWxkcmVuCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIDAgPT0gKDEgJiBpKSAmJiBuLmNoaWxkICE9PSB1ID8gKChhID0gbi5jaGlsZCkuY2hpbGRMYW5lcyA9IDAsIGEucGVuZGluZ1Byb3BzID0gcywgbi5kZWxldGlvbnMgPSBudWxsKSA6IChhID0gUmwodSwgcykpLnN1YnRyZWVGbGFncyA9IDE0NjgwMDY0ICYgdS5zdWJ0cmVlRmxhZ3MsIG51bGwgIT09IGwgPyBvID0gUmwobCwgbykgOiAobyA9IE9sKG8sIGksIHIsIG51bGwpKS5mbGFncyB8PSAyLCBvLnJldHVybiA9IG4sIGEucmV0dXJuID0gbiwgYS5zaWJsaW5nID0gbywgbi5jaGlsZCA9IGEsIGEgPSBvLCBvID0gbi5jaGlsZCwgaSA9IG51bGwgPT09IChpID0gZS5jaGlsZC5tZW1vaXplZFN0YXRlKSA/IFNyKHIpIDogewogICAgICAgICAgICAgICAgICAgIGJhc2VMYW5lczogaS5iYXNlTGFuZXMgfCByLAogICAgICAgICAgICAgICAgICAgIGNhY2hlUG9vbDogbnVsbCwKICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uczogaS50cmFuc2l0aW9ucwogICAgICAgICAgICAgICAgfSwgby5tZW1vaXplZFN0YXRlID0gaSwgby5jaGlsZExhbmVzID0gZS5jaGlsZExhbmVzICYgfnIsIG4ubWVtb2l6ZWRTdGF0ZSA9IHJzLCBhCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUgPSAobyA9IGUuY2hpbGQpLnNpYmxpbmcsIGEgPSBSbChvLCB7CiAgICAgICAgICAgICAgICBtb2RlOiAidmlzaWJsZSIsCiAgICAgICAgICAgICAgICBjaGlsZHJlbjogYS5jaGlsZHJlbgogICAgICAgICAgICB9KSwgMCA9PSAoMSAmIG4ubW9kZSkgJiYgKGEubGFuZXMgPSByKSwgYS5yZXR1cm4gPSBuLCBhLnNpYmxpbmcgPSBudWxsLCBudWxsICE9PSBlICYmIChudWxsID09PSAociA9IG4uZGVsZXRpb25zKSA/IChuLmRlbGV0aW9ucyA9IFtlXSwgbi5mbGFncyB8PSAxNikgOiByLnB1c2goZSkpLCBuLmNoaWxkID0gYSwgbi5tZW1vaXplZFN0YXRlID0gbnVsbCwgYQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRXIoZSwgbiwgdCkgewogICAgICAgICAgICByZXR1cm4gKG4gPSBJbCh7CiAgICAgICAgICAgICAgICBtb2RlOiAidmlzaWJsZSIsCiAgICAgICAgICAgICAgICBjaGlsZHJlbjogbgogICAgICAgICAgICB9LCBlLm1vZGUsIDAsIG51bGwpKS5yZXR1cm4gPSBlLCBlLmNoaWxkID0gbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQ3IoZSwgbiwgdCwgcikgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gciAmJiBWbihyKSwgTWkobiwgZS5jaGlsZCwgbnVsbCwgdCksIChlID0gRXIobiwgbi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4pKS5mbGFncyB8PSAyLCBuLm1lbW9pemVkU3RhdGUgPSBudWxsLCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB6cihlLCBuLCB0KSB7CiAgICAgICAgICAgIGUubGFuZXMgfD0gbjsKICAgICAgICAgICAgdmFyIHIgPSBlLmFsdGVybmF0ZTsKICAgICAgICAgICAgbnVsbCAhPT0gciAmJiAoci5sYW5lcyB8PSBuKSwgSG4oZS5yZXR1cm4sIG4sIHQpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBOcihlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHZhciBhID0gZS5tZW1vaXplZFN0YXRlOwogICAgICAgICAgICBudWxsID09PSBhID8gZS5tZW1vaXplZFN0YXRlID0gewogICAgICAgICAgICAgICAgaXNCYWNrd2FyZHM6IG4sCiAgICAgICAgICAgICAgICByZW5kZXJpbmc6IG51bGwsCiAgICAgICAgICAgICAgICByZW5kZXJpbmdTdGFydFRpbWU6IDAsCiAgICAgICAgICAgICAgICBsYXN0OiByLAogICAgICAgICAgICAgICAgdGFpbDogdCwKICAgICAgICAgICAgICAgIHRhaWxNb2RlOiBsCiAgICAgICAgICAgIH0gOiAoYS5pc0JhY2t3YXJkcyA9IG4sIGEucmVuZGVyaW5nID0gbnVsbCwgYS5yZW5kZXJpbmdTdGFydFRpbWUgPSAwLCBhLmxhc3QgPSByLCBhLnRhaWwgPSB0LCBhLnRhaWxNb2RlID0gbCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFByKGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBuLnBlbmRpbmdQcm9wcywKICAgICAgICAgICAgICAgIGwgPSByLnJldmVhbE9yZGVyLAogICAgICAgICAgICAgICAgYSA9IHIudGFpbDsKICAgICAgICAgICAgaWYgKGZyKGUsIG4sIHIuY2hpbGRyZW4sIHQpLCAwICE9ICgyICYgKHIgPSBVaS5jdXJyZW50KSkpIHIgPSAxICYgciB8IDIsIG4uZmxhZ3MgfD0gMTI4OwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBlICYmIDAgIT0gKDEyOCAmIGUuZmxhZ3MpKSBlOiBmb3IgKGUgPSBuLmNoaWxkOyBudWxsICE9PSBlOykgewogICAgICAgICAgICAgICAgICAgIGlmICgxMyA9PT0gZS50YWcpIG51bGwgIT09IGUubWVtb2l6ZWRTdGF0ZSAmJiB6cihlLCB0LCBuKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgxOSA9PT0gZS50YWcpIHpyKGUsIHQsIG4pOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG51bGwgIT09IGUuY2hpbGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5jaGlsZC5yZXR1cm4gPSBlLCBlID0gZS5jaGlsZDsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT09IG4pIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IG51bGwgPT09IGUuc2libGluZzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGUucmV0dXJuIHx8IGUucmV0dXJuID09PSBuKSBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5yZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZS5zaWJsaW5nLnJldHVybiA9IGUucmV0dXJuLCBlID0gZS5zaWJsaW5nCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByICY9IDEKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYm4oVWksIHIpLCAwID09ICgxICYgbi5tb2RlKSkgbi5tZW1vaXplZFN0YXRlID0gbnVsbDsKICAgICAgICAgICAgZWxzZSBzd2l0Y2ggKGwpIHsKICAgICAgICAgICAgICAgIGNhc2UgImZvcndhcmRzIjoKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSBuLmNoaWxkLCBsID0gbnVsbDsgbnVsbCAhPT0gdDspIG51bGwgIT09IChlID0gdC5hbHRlcm5hdGUpICYmIG51bGwgPT09IHZ0KGUpICYmIChsID0gdCksIHQgPSB0LnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gKHQgPSBsKSA/IChsID0gbi5jaGlsZCwgbi5jaGlsZCA9IG51bGwpIDogKGwgPSB0LnNpYmxpbmcsIHQuc2libGluZyA9IG51bGwpLCBOcihuLCAhMSwgbCwgdCwgYSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJiYWNrd2FyZHMiOgogICAgICAgICAgICAgICAgICAgIGZvciAodCA9IG51bGwsIGwgPSBuLmNoaWxkLCBuLmNoaWxkID0gbnVsbDsgbnVsbCAhPT0gbDspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IChlID0gbC5hbHRlcm5hdGUpICYmIG51bGwgPT09IHZ0KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmNoaWxkID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGwuc2libGluZywgbC5zaWJsaW5nID0gdCwgdCA9IGwsIGwgPSBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIE5yKG4sICEwLCB0LCBudWxsLCBhKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInRvZ2V0aGVyIjoKICAgICAgICAgICAgICAgICAgICBOcihuLCAhMSwgbnVsbCwgbnVsbCwgdm9pZCAwKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgbi5tZW1vaXplZFN0YXRlID0gbnVsbAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuLmNoaWxkCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBfcihlLCBuKSB7CiAgICAgICAgICAgIDAgPT0gKDEgJiBuLm1vZGUpICYmIG51bGwgIT09IGUgJiYgKGUuYWx0ZXJuYXRlID0gbnVsbCwgbi5hbHRlcm5hdGUgPSBudWxsLCBuLmZsYWdzIHw9IDIpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBMcihlLCBuLCByKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSBlICYmIChuLmRlcGVuZGVuY2llcyA9IGUuZGVwZW5kZW5jaWVzKSwgTnMgfD0gbi5sYW5lcywgMCA9PSAociAmIG4uY2hpbGRMYW5lcykpIHJldHVybiBudWxsOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gZSAmJiBuLmNoaWxkICE9PSBlLmNoaWxkKSB0aHJvdyBFcnJvcih0KDE1MykpOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gbi5jaGlsZCkgewogICAgICAgICAgICAgICAgZm9yIChyID0gUmwoZSA9IG4uY2hpbGQsIGUucGVuZGluZ1Byb3BzKSwgbi5jaGlsZCA9IHIsIHIucmV0dXJuID0gbjsgbnVsbCAhPT0gZS5zaWJsaW5nOykgZSA9IGUuc2libGluZywgKHIgPSByLnNpYmxpbmcgPSBSbChlLCBlLnBlbmRpbmdQcm9wcykpLnJldHVybiA9IG47CiAgICAgICAgICAgICAgICByLnNpYmxpbmcgPSBudWxsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG4uY2hpbGQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFRyKGUsIG4pIHsKICAgICAgICAgICAgaWYgKCFraSkgc3dpdGNoIChlLnRhaWxNb2RlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJoaWRkZW4iOgogICAgICAgICAgICAgICAgICAgIG4gPSBlLnRhaWw7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IG51bGw7IG51bGwgIT09IG47KSBudWxsICE9PSBuLmFsdGVybmF0ZSAmJiAodCA9IG4pLCBuID0gbi5zaWJsaW5nOwogICAgICAgICAgICAgICAgICAgIG51bGwgPT09IHQgPyBlLnRhaWwgPSBudWxsIDogdC5zaWJsaW5nID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgImNvbGxhcHNlZCI6CiAgICAgICAgICAgICAgICAgICAgdCA9IGUudGFpbDsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gbnVsbDsgbnVsbCAhPT0gdDspIG51bGwgIT09IHQuYWx0ZXJuYXRlICYmIChyID0gdCksIHQgPSB0LnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gciA/IG4gfHwgbnVsbCA9PT0gZS50YWlsID8gZS50YWlsID0gbnVsbCA6IGUudGFpbC5zaWJsaW5nID0gbnVsbCA6IHIuc2libGluZyA9IG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTXIoZSkgewogICAgICAgICAgICB2YXIgbiA9IG51bGwgIT09IGUuYWx0ZXJuYXRlICYmIGUuYWx0ZXJuYXRlLmNoaWxkID09PSBlLmNoaWxkLAogICAgICAgICAgICAgICAgdCA9IDAsCiAgICAgICAgICAgICAgICByID0gMDsKICAgICAgICAgICAgaWYgKG4pCiAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gZS5jaGlsZDsgbnVsbCAhPT0gbDspIHQgfD0gbC5sYW5lcyB8IGwuY2hpbGRMYW5lcywgciB8PSAxNDY4MDA2NCAmIGwuc3VidHJlZUZsYWdzLCByIHw9IDE0NjgwMDY0ICYgbC5mbGFncywgbC5yZXR1cm4gPSBlLCBsID0gbC5zaWJsaW5nOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBmb3IgKGwgPSBlLmNoaWxkOyBudWxsICE9PSBsOykgdCB8PSBsLmxhbmVzIHwgbC5jaGlsZExhbmVzLCByIHw9IGwuc3VidHJlZUZsYWdzLCByIHw9IGwuZmxhZ3MsIGwucmV0dXJuID0gZSwgbCA9IGwuc2libGluZzsKICAgICAgICAgICAgcmV0dXJuIGUuc3VidHJlZUZsYWdzIHw9IHIsIGUuY2hpbGRMYW5lcyA9IHQsIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEZyKGUsIG4sIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSBuLnBlbmRpbmdQcm9wczsKICAgICAgICAgICAgc3dpdGNoIChUbihuKSwgbi50YWcpIHsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiBNcihuKSwgbnVsbDsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIGNhc2UgMTc6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHduKG4udHlwZSkgJiYgKHluKGxpKSwgeW4ocmkpKSwgTXIobiksIG51bGw7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwgPSBuLnN0YXRlTm9kZSwgbXQoKSwgeW4obGkpLCB5bihyaSksIHl0KCksIGwucGVuZGluZ0NvbnRleHQgJiYgKGwuY29udGV4dCA9IGwucGVuZGluZ0NvbnRleHQsIGwucGVuZGluZ0NvbnRleHQgPSBudWxsKSwgbnVsbCAhPT0gZSAmJiBudWxsICE9PSBlLmNoaWxkIHx8IChJbihuKSA/IG4uZmxhZ3MgfD0gNCA6IG51bGwgPT09IGUgfHwgZS5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCAmJiAwID09ICgyNTYgJiBuLmZsYWdzKSB8fCAobi5mbGFncyB8PSAxMDI0LCBudWxsICE9PSB3aSAmJiAoc2wod2kpLCB3aSA9IG51bGwpKSksIGFzKGUsIG4pLCBNcihuKSwgbnVsbDsKICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICBndChuKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGR0KElpLmN1cnJlbnQpOwogICAgICAgICAgICAgICAgICAgIGlmIChyID0gbi50eXBlLCBudWxsICE9PSBlICYmIG51bGwgIT0gbi5zdGF0ZU5vZGUpIHVzKGUsIG4sIHIsIGwsIGEpLCBlLnJlZiAhPT0gbi5yZWYgJiYgKG4uZmxhZ3MgfD0gNTEyLCBuLmZsYWdzIHw9IDIwOTcxNTIpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBuLnN0YXRlTm9kZSkgdGhyb3cgRXJyb3IodCgxNjYpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNcihuKSwgbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlID0gZHQoRGkuY3VycmVudCksIEluKG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbi5zdGF0ZU5vZGUsIHIgPSBuLnR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4ubWVtb2l6ZWRQcm9wczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobFtLb10gPSBuLCBsW1lvXSA9IG8sIGUgPSAwICE9ICgxICYgbi5tb2RlKSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRpYWxvZyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllKCJjYW5jZWwiLCBsKSwgWWUoImNsb3NlIiwgbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImlmcmFtZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlbWJlZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllKCJsb2FkIiwgbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInZpZGVvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhdWRpbyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IDA7IGEgPCBPby5sZW5ndGg7IGErKykgWWUoT29bYV0sIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzb3VyY2UiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZZSgiZXJyb3IiLCBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW1nIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJpbWFnZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGluayI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllKCJlcnJvciIsIGwpLCBZZSgibG9hZCIsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkZXRhaWxzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWWUoInRvZ2dsZSIsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJpbnB1dCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIobCwgbyksIFllKCJpbnZhbGlkIiwgbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlbGVjdCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuX3dyYXBwZXJTdGF0ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhc011bHRpcGxlOiAhIW8ubXVsdGlwbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgWWUoImludmFsaWQiLCBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dGFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6KGwsIG8pLCBZZSgiaW52YWxpZCIsIGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIEYociwgbyksIGEgPSBudWxsLCBvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gb1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkcmVuIiA9PT0gaSA/ICJzdHJpbmciID09IHR5cGVvZiBzID8gbC50ZXh0Q29udGVudCAhPT0gcyAmJiAoITAgIT09IG8uc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nICYmIGFuKGwudGV4dENvbnRlbnQsIHMsIGUpLCBhID0gWyJjaGlsZHJlbiIsIHNdKSA6ICJudW1iZXIiID09IHR5cGVvZiBzICYmIGwudGV4dENvbnRlbnQgIT09ICIiICsgcyAmJiAoITAgIT09IG8uc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nICYmIGFuKGwudGV4dENvbnRlbnQsIHMsIGUpLCBhID0gWyJjaGlsZHJlbiIsICIiICsgc10pIDogcmEuaGFzT3duUHJvcGVydHkoaSkgJiYgbnVsbCAhPSBzICYmICJvblNjcm9sbCIgPT09IGkgJiYgWWUoInNjcm9sbCIsIGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoKGwpLCBTKGwsIG8sICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dGFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoKGwpLCBQKGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzZWxlY3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm9wdGlvbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIG8ub25DbGljayAmJiAobC5vbmNsaWNrID0gdW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYSwgbi51cGRhdGVRdWV1ZSA9IGwsIG51bGwgIT09IGwgJiYgKG4uZmxhZ3MgfD0gNCkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSA5ID09PSBhLm5vZGVUeXBlID8gYSA6IGEub3duZXJEb2N1bWVudCwgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID09PSBlICYmIChlID0gXyhyKSksICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiA9PT0gZSA/ICJzY3JpcHQiID09PSByID8gKChlID0gaS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MID0gIjxzY3JpcHQ+PFwvc2NyaXB0PiIsIGUgPSBlLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCkpIDogInN0cmluZyIgPT0gdHlwZW9mIGwuaXMgPyBlID0gaS5jcmVhdGVFbGVtZW50KHIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpczogbC5pcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiAoZSA9IGkuY3JlYXRlRWxlbWVudChyKSwgInNlbGVjdCIgPT09IHIgJiYgKGkgPSBlLCBsLm11bHRpcGxlID8gaS5tdWx0aXBsZSA9ICEwIDogbC5zaXplICYmIChpLnNpemUgPSBsLnNpemUpKSkgOiBlID0gaS5jcmVhdGVFbGVtZW50TlMoZSwgciksIGVbS29dID0gbiwgZVtZb10gPSBsLCBscyhlLCBuLCAhMSwgITEpLCBuLnN0YXRlTm9kZSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpID0gUihyLCBsKSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkaWFsb2ciOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWWUoImNhbmNlbCIsIGUpLCBZZSgiY2xvc2UiLCBlKSwgYSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaWZyYW1lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW1iZWQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWWUoImxvYWQiLCBlKSwgYSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidmlkZW8iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJhdWRpbyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSAwOyBhIDwgT28ubGVuZ3RoOyBhKyspIFllKE9vW2FdLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNvdXJjZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZZSgiZXJyb3IiLCBlKSwgYSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW1nIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW1hZ2UiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsaW5rIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllKCJlcnJvciIsIGUpLCBZZSgibG9hZCIsIGUpLCBhID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkZXRhaWxzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllKCJ0b2dnbGUiLCBlKSwgYSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYihlLCBsKSwgYSA9IHkoZSwgbCksIFllKCJpbnZhbGlkIiwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAib3B0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlbGVjdCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl93cmFwcGVyU3RhdGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzTXVsdGlwbGU6ICEhbC5tdWx0aXBsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYSA9IExhKHt9LCBsLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIFllKCJpbnZhbGlkIiwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dGFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeihlLCBsKSwgYSA9IEMoZSwgbCksIFllKCJpbnZhbGlkIiwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvIGluIEYociwgYSksIHMgPSBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5oYXNPd25Qcm9wZXJ0eShvKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBzW29dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlIiA9PT0gbyA/IE0oZSwgYykgOiAiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiID09PSBvID8gbnVsbCAhPSAoYyA9IGMgPyBjLl9faHRtbCA6IHZvaWQgMCkgJiYgRmEoZSwgYykgOiAiY2hpbGRyZW4iID09PSBvID8gInN0cmluZyIgPT0gdHlwZW9mIGMgPyAoInRleHRhcmVhIiAhPT0gciB8fCAiIiAhPT0gYykgJiYgUmEoZSwgYykgOiAibnVtYmVyIiA9PSB0eXBlb2YgYyAmJiBSYShlLCAiIiArIGMpIDogInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIgIT09IG8gJiYgInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIgIT09IG8gJiYgImF1dG9Gb2N1cyIgIT09IG8gJiYgKHJhLmhhc093blByb3BlcnR5KG8pID8gbnVsbCAhPSBjICYmICJvblNjcm9sbCIgPT09IG8gJiYgWWUoInNjcm9sbCIsIGUpIDogbnVsbCAhPSBjICYmIHUoZSwgbywgYywgaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaChlKSwgUyhlLCBsLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dGFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaChlKSwgUChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJvcHRpb24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBsLnZhbHVlICYmIGUuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICIiICsgcChsLnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2VsZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubXVsdGlwbGUgPSAhIWwubXVsdGlwbGUsIG51bGwgIT0gKG8gPSBsLnZhbHVlKSA/IEUoZSwgISFsLm11bHRpcGxlLCBvLCAhMSkgOiBudWxsICE9IGwuZGVmYXVsdFZhbHVlICYmIEUoZSwgISFsLm11bHRpcGxlLCBsLmRlZmF1bHRWYWx1ZSwgITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBhLm9uQ2xpY2sgJiYgKGUub25jbGljayA9IHVuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYnV0dG9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzZWxlY3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0ZXh0YXJlYSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gISFsLmF1dG9Gb2N1czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImltZyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCAmJiAobi5mbGFncyB8PSA0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IG4ucmVmICYmIChuLmZsYWdzIHw9IDUxMiwgbi5mbGFncyB8PSAyMDk3MTUyKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXIobiksIG51bGw7CiAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgbnVsbCAhPSBuLnN0YXRlTm9kZSkgb3MoZSwgbiwgZS5tZW1vaXplZFByb3BzLCBsKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBsICYmIG51bGwgPT09IG4uc3RhdGVOb2RlKSB0aHJvdyBFcnJvcih0KDE2NikpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGR0KElpLmN1cnJlbnQpLCBkdChEaS5jdXJyZW50KSwgSW4obikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbi5zdGF0ZU5vZGUsIHIgPSBuLm1lbW9pemVkUHJvcHMsIGxbS29dID0gbiwgKG8gPSBsLm5vZGVWYWx1ZSAhPT0gcikgJiYgbnVsbCAhPT0gKGUgPSB5aSkpIHN3aXRjaCAoZS50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuKGwubm9kZVZhbHVlLCByLCAwICE9ICgxICYgZS5tb2RlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITAgIT09IGUubWVtb2l6ZWRQcm9wcy5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgJiYgYW4obC5ub2RlVmFsdWUsIHIsIDAgIT0gKDEgJiBlLm1vZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyAmJiAobi5mbGFncyB8PSA0KQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UobCA9ICg5ID09PSByLm5vZGVUeXBlID8gciA6IHIub3duZXJEb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUobCkpW0tvXSA9IG4sIG4uc3RhdGVOb2RlID0gbAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXIobiksIG51bGw7CiAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgIGlmICh5bihVaSksIGwgPSBuLm1lbW9pemVkU3RhdGUsIG51bGwgPT09IGUgfHwgbnVsbCAhPT0gZS5tZW1vaXplZFN0YXRlICYmIG51bGwgIT09IGUubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChraSAmJiBudWxsICE9PSBiaSAmJiAwICE9ICgxICYgbi5tb2RlKSAmJiAwID09ICgxMjggJiBuLmZsYWdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gYmk7IG87KSBvID0gZm4oby5uZXh0U2libGluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbigpLCBuLmZsYWdzIHw9IDk4NTYwLCBvID0gITEKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvID0gSW4obiksIG51bGwgIT09IGwgJiYgbnVsbCAhPT0gbC5kZWh5ZHJhdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykgdGhyb3cgRXJyb3IodCgzMTgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShvID0gbnVsbCAhPT0gKG8gPSBuLm1lbW9pemVkU3RhdGUpID8gby5kZWh5ZHJhdGVkIDogbnVsbCkpIHRocm93IEVycm9yKHQoMzE3KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb1tLb10gPSBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgVW4oKSwgMCA9PSAoMTI4ICYgbi5mbGFncykgJiYgKG4ubWVtb2l6ZWRTdGF0ZSA9IG51bGwpLCBuLmZsYWdzIHw9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNcihuKSwgbyA9ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBudWxsICE9PSB3aSAmJiAoc2wod2kpLCB3aSA9IG51bGwpLCBvID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbykgcmV0dXJuIDY1NTM2ICYgbi5mbGFncyA/IG4gOiBudWxsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAwICE9ICgxMjggJiBuLmZsYWdzKSA/IChuLmxhbmVzID0gciwgbikgOiAoKGwgPSBudWxsICE9PSBsKSAhPSAobnVsbCAhPT0gZSAmJiBudWxsICE9PSBlLm1lbW9pemVkU3RhdGUpICYmIGwgJiYgKG4uY2hpbGQuZmxhZ3MgfD0gODE5MiwgMCAhPSAoMSAmIG4ubW9kZSkgJiYgKG51bGwgPT09IGUgfHwgMCAhPSAoMSAmIFVpLmN1cnJlbnQpID8gMCA9PT0gQ3MgJiYgKENzID0gMykgOiB2bCgpKSksIG51bGwgIT09IG4udXBkYXRlUXVldWUgJiYgKG4uZmxhZ3MgfD0gNCksIE1yKG4pLCBudWxsKTsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbXQoKSwgYXMoZSwgbiksIG51bGwgPT09IGUgJiYgR2Uobi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksIE1yKG4pLCBudWxsOwogICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gV24obi50eXBlLl9jb250ZXh0KSwgTXIobiksIG51bGw7CiAgICAgICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgICAgICAgIGlmICh5bihVaSksIG51bGwgPT09IChvID0gbi5tZW1vaXplZFN0YXRlKSkgcmV0dXJuIE1yKG4pLCBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmIChsID0gMCAhPSAoMTI4ICYgbi5mbGFncyksIG51bGwgPT09IChpID0gby5yZW5kZXJpbmcpKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkgVHIobywgITEpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBDcyB8fCBudWxsICE9PSBlICYmIDAgIT0gKDEyOCAmIGUuZmxhZ3MpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IG4uY2hpbGQ7IG51bGwgIT09IGU7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAoaSA9IHZ0KGUpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuLmZsYWdzIHw9IDEyOCwgVHIobywgITEpLCBudWxsICE9PSAobCA9IGkudXBkYXRlUXVldWUpICYmIChuLnVwZGF0ZVF1ZXVlID0gbCwgbi5mbGFncyB8PSA0KSwgbi5zdWJ0cmVlRmxhZ3MgPSAwLCBsID0gciwgciA9IG4uY2hpbGQ7IG51bGwgIT09IHI7KSBlID0gbCwgKG8gPSByKS5mbGFncyAmPSAxNDY4MDA2NiwgbnVsbCA9PT0gKGkgPSBvLmFsdGVybmF0ZSkgPyAoby5jaGlsZExhbmVzID0gMCwgby5sYW5lcyA9IGUsIG8uY2hpbGQgPSBudWxsLCBvLnN1YnRyZWVGbGFncyA9IDAsIG8ubWVtb2l6ZWRQcm9wcyA9IG51bGwsIG8ubWVtb2l6ZWRTdGF0ZSA9IG51bGwsIG8udXBkYXRlUXVldWUgPSBudWxsLCBvLmRlcGVuZGVuY2llcyA9IG51bGwsIG8uc3RhdGVOb2RlID0gbnVsbCkgOiAoby5jaGlsZExhbmVzID0gaS5jaGlsZExhbmVzLCBvLmxhbmVzID0gaS5sYW5lcywgby5jaGlsZCA9IGkuY2hpbGQsIG8uc3VidHJlZUZsYWdzID0gMCwgby5kZWxldGlvbnMgPSBudWxsLCBvLm1lbW9pemVkUHJvcHMgPSBpLm1lbW9pemVkUHJvcHMsIG8ubWVtb2l6ZWRTdGF0ZSA9IGkubWVtb2l6ZWRTdGF0ZSwgby51cGRhdGVRdWV1ZSA9IGkudXBkYXRlUXVldWUsIG8udHlwZSA9IGkudHlwZSwgZSA9IGkuZGVwZW5kZW5jaWVzLCBvLmRlcGVuZGVuY2llcyA9IG51bGwgPT09IGUgPyBudWxsIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmVzOiBlLmxhbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0Q29udGV4dDogZS5maXJzdENvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCByID0gci5zaWJsaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJuKFVpLCAxICYgVWkuY3VycmVudCB8IDIpLCBuLmNoaWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUuc2libGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IG8udGFpbCAmJiBzdSgpID4gRnMgJiYgKG4uZmxhZ3MgfD0gMTI4LCBsID0gITAsIFRyKG8sICExKSwgbi5sYW5lcyA9IDQxOTQzMDQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IChlID0gdnQoaSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uZmxhZ3MgfD0gMTI4LCBsID0gITAsIG51bGwgIT09IChyID0gZS51cGRhdGVRdWV1ZSkgJiYgKG4udXBkYXRlUXVldWUgPSByLCBuLmZsYWdzIHw9IDQpLCBUcihvLCAhMCksIG51bGwgPT09IG8udGFpbCAmJiAiaGlkZGVuIiA9PT0gby50YWlsTW9kZSAmJiAhaS5hbHRlcm5hdGUgJiYgIWtpKSByZXR1cm4gTXIobiksIG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAyICogc3UoKSAtIG8ucmVuZGVyaW5nU3RhcnRUaW1lID4gRnMgJiYgMTA3Mzc0MTgyNCAhPT0gciAmJiAobi5mbGFncyB8PSAxMjgsIGwgPSAhMCwgVHIobywgITEpLCBuLmxhbmVzID0gNDE5NDMwNCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uaXNCYWNrd2FyZHMgPyAoaS5zaWJsaW5nID0gbi5jaGlsZCwgbi5jaGlsZCA9IGkpIDogKG51bGwgIT09IChyID0gby5sYXN0KSA/IHIuc2libGluZyA9IGkgOiBuLmNoaWxkID0gaSwgby5sYXN0ID0gaSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IG8udGFpbCA/IChuID0gby50YWlsLCBvLnJlbmRlcmluZyA9IG4sIG8udGFpbCA9IG4uc2libGluZywgby5yZW5kZXJpbmdTdGFydFRpbWUgPSBzdSgpLCBuLnNpYmxpbmcgPSBudWxsLCByID0gVWkuY3VycmVudCwgYm4oVWksIGwgPyAxICYgciB8IDIgOiAxICYgciksIG4pIDogKE1yKG4pLCBudWxsKTsKICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICBjYXNlIDIzOgogICAgICAgICAgICAgICAgICAgIHJldHVybiB4cyA9IEVzLmN1cnJlbnQsIHluKEVzKSwgbCA9IG51bGwgIT09IG4ubWVtb2l6ZWRTdGF0ZSwgbnVsbCAhPT0gZSAmJiBudWxsICE9PSBlLm1lbW9pemVkU3RhdGUgIT09IGwgJiYgKG4uZmxhZ3MgfD0gODE5MiksIGwgJiYgMCAhPSAoMSAmIG4ubW9kZSkgPyAwICE9ICgxMDczNzQxODI0ICYgeHMpICYmIChNcihuKSwgNiAmIG4uc3VidHJlZUZsYWdzICYmIChuLmZsYWdzIHw9IDgxOTIpKSA6IE1yKG4pLCBudWxsOwogICAgICAgICAgICAgICAgY2FzZSAyNDoKICAgICAgICAgICAgICAgIGNhc2UgMjU6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgfQogICAgICAgICAgICB0aHJvdyBFcnJvcih0KDE1Niwgbi50YWcpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUnIoZSwgbiwgcikgewogICAgICAgICAgICBzd2l0Y2ggKFRuKG4pLCBuLnRhZykgewogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgIHJldHVybiB3bihuLnR5cGUpICYmICh5bihsaSksIHluKHJpKSksIDY1NTM2ICYgKGUgPSBuLmZsYWdzKSA/IChuLmZsYWdzID0gLTY1NTM3ICYgZSB8IDEyOCwgbikgOiBudWxsOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBtdCgpLCB5bihsaSksIHluKHJpKSwgeXQoKSwgMCAhPSAoNjU1MzYgJiAoZSA9IG4uZmxhZ3MpKSAmJiAwID09ICgxMjggJiBlKSA/IChuLmZsYWdzID0gLTY1NTM3ICYgZSB8IDEyOCwgbikgOiBudWxsOwogICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgIHJldHVybiBndChuKSwgbnVsbDsKICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgaWYgKHluKFVpKSwgbnVsbCAhPT0gKGUgPSBuLm1lbW9pemVkU3RhdGUpICYmIG51bGwgIT09IGUuZGVoeWRyYXRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gbi5hbHRlcm5hdGUpIHRocm93IEVycm9yKHQoMzQwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFVuKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDY1NTM2ICYgKGUgPSBuLmZsYWdzKSA/IChuLmZsYWdzID0gLTY1NTM3ICYgZSB8IDEyOCwgbikgOiBudWxsOwogICAgICAgICAgICAgICAgY2FzZSAxOToKICAgICAgICAgICAgICAgICAgICByZXR1cm4geW4oVWkpLCBudWxsOwogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiBtdCgpLCBudWxsOwogICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gV24obi50eXBlLl9jb250ZXh0KSwgbnVsbDsKICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICBjYXNlIDIzOgogICAgICAgICAgICAgICAgICAgIHJldHVybiB4cyA9IEVzLmN1cnJlbnQsIHluKEVzKSwgbnVsbDsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRHIoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IGUucmVmOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gdCkKICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiB0KSB0cnkgewogICAgICAgICAgICAgICAgICAgIHQobnVsbCkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICB6bChlLCBuLCB0KQogICAgICAgICAgICAgICAgfSBlbHNlIHQuY3VycmVudCA9IG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIE9yKGUsIG4sIHQpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHQoKQogICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICB6bChlLCBuLCB0KQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBJcihlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gbi51cGRhdGVRdWV1ZTsKICAgICAgICAgICAgaWYgKG51bGwgIT09IChyID0gbnVsbCAhPT0gciA/IHIubGFzdEVmZmVjdCA6IG51bGwpKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHIgPSByLm5leHQ7CiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChsLnRhZyAmIGUpID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gbC5kZXN0cm95OwogICAgICAgICAgICAgICAgICAgICAgICBsLmRlc3Ryb3kgPSB2b2lkIDAsIHZvaWQgMCAhPT0gYSAmJiBPcihuLCB0LCBhKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsID0gbC5uZXh0CiAgICAgICAgICAgICAgICB9IHdoaWxlIChsICE9PSByKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBVcihlLCBuKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAobiA9IG51bGwgIT09IChuID0gbi51cGRhdGVRdWV1ZSkgPyBuLmxhc3RFZmZlY3QgOiBudWxsKSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBuID0gbi5uZXh0OwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIGlmICgodC50YWcgJiBlKSA9PT0gZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuY3JlYXRlOwogICAgICAgICAgICAgICAgICAgICAgICB0LmRlc3Ryb3kgPSByKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdCA9IHQubmV4dAogICAgICAgICAgICAgICAgfSB3aGlsZSAodCAhPT0gbikKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVnIoZSkgewogICAgICAgICAgICB2YXIgbiA9IGUucmVmOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gbikgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgIGUudGFnLCBlID0gdCwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiA/IG4oZSkgOiBuLmN1cnJlbnQgPSBlCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEFyKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLmFsdGVybmF0ZTsKICAgICAgICAgICAgbnVsbCAhPT0gbiAmJiAoZS5hbHRlcm5hdGUgPSBudWxsLCBBcihuKSksIGUuY2hpbGQgPSBudWxsLCBlLmRlbGV0aW9ucyA9IG51bGwsIGUuc2libGluZyA9IG51bGwsIDUgPT09IGUudGFnICYmIG51bGwgIT09IChuID0gZS5zdGF0ZU5vZGUpICYmIChkZWxldGUgbltLb10sIGRlbGV0ZSBuW1lvXSwgZGVsZXRlIG5bR29dLCBkZWxldGUgbltab10sIGRlbGV0ZSBuW0pvXSksIGUuc3RhdGVOb2RlID0gbnVsbCwgZS5yZXR1cm4gPSBudWxsLCBlLmRlcGVuZGVuY2llcyA9IG51bGwsIGUubWVtb2l6ZWRQcm9wcyA9IG51bGwsIGUubWVtb2l6ZWRTdGF0ZSA9IG51bGwsIGUucGVuZGluZ1Byb3BzID0gbnVsbCwgZS5zdGF0ZU5vZGUgPSBudWxsLCBlLnVwZGF0ZVF1ZXVlID0gbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQnIoZSkgewogICAgICAgICAgICByZXR1cm4gNSA9PT0gZS50YWcgfHwgMyA9PT0gZS50YWcgfHwgNCA9PT0gZS50YWcKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFdyKGUpIHsKICAgICAgICAgICAgZTogZm9yICg7OykgewogICAgICAgICAgICAgICAgZm9yICg7IG51bGwgPT09IGUuc2libGluZzspIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gZS5yZXR1cm4gfHwgQnIoZS5yZXR1cm4pKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICBlID0gZS5yZXR1cm4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAoZS5zaWJsaW5nLnJldHVybiA9IGUucmV0dXJuLCBlID0gZS5zaWJsaW5nOyA1ICE9PSBlLnRhZyAmJiA2ICE9PSBlLnRhZyAmJiAxOCAhPT0gZS50YWc7KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKDIgJiBlLmZsYWdzKSBjb250aW51ZSBlOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBlLmNoaWxkIHx8IDQgPT09IGUudGFnKSBjb250aW51ZSBlOwogICAgICAgICAgICAgICAgICAgIGUuY2hpbGQucmV0dXJuID0gZSwgZSA9IGUuY2hpbGQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghKDIgJiBlLmZsYWdzKSkgcmV0dXJuIGUuc3RhdGVOb2RlCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEhyKGUsIG4sIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBlLnRhZzsKICAgICAgICAgICAgaWYgKDUgPT09IHIgfHwgNiA9PT0gcikgZSA9IGUuc3RhdGVOb2RlLCBuID8gOCA9PT0gdC5ub2RlVHlwZSA/IHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSwgbikgOiB0Lmluc2VydEJlZm9yZShlLCBuKSA6ICg4ID09PSB0Lm5vZGVUeXBlID8gKG4gPSB0LnBhcmVudE5vZGUpLmluc2VydEJlZm9yZShlLCB0KSA6IChuID0gdCkuYXBwZW5kQ2hpbGQoZSksIG51bGwgIT0gKHQgPSB0Ll9yZWFjdFJvb3RDb250YWluZXIpIHx8IG51bGwgIT09IG4ub25jbGljayB8fCAobi5vbmNsaWNrID0gdW4pKTsKICAgICAgICAgICAgZWxzZSBpZiAoNCAhPT0gciAmJiBudWxsICE9PSAoZSA9IGUuY2hpbGQpKQogICAgICAgICAgICAgICAgZm9yIChIcihlLCBuLCB0KSwgZSA9IGUuc2libGluZzsgbnVsbCAhPT0gZTspIEhyKGUsIG4sIHQpLCBlID0gZS5zaWJsaW5nCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBRcihlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gZS50YWc7CiAgICAgICAgICAgIGlmICg1ID09PSByIHx8IDYgPT09IHIpIGUgPSBlLnN0YXRlTm9kZSwgbiA/IHQuaW5zZXJ0QmVmb3JlKGUsIG4pIDogdC5hcHBlbmRDaGlsZChlKTsKICAgICAgICAgICAgZWxzZSBpZiAoNCAhPT0gciAmJiBudWxsICE9PSAoZSA9IGUuY2hpbGQpKQogICAgICAgICAgICAgICAgZm9yIChRcihlLCBuLCB0KSwgZSA9IGUuc2libGluZzsgbnVsbCAhPT0gZTspIFFyKGUsIG4sIHQpLCBlID0gZS5zaWJsaW5nCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBqcihlLCBuLCB0KSB7CiAgICAgICAgICAgIGZvciAodCA9IHQuY2hpbGQ7IG51bGwgIT09IHQ7KSAkcihlLCBuLCB0KSwgdCA9IHQuc2libGluZwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gJHIoZSwgbiwgdCkgewogICAgICAgICAgICBpZiAodnUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdnUub25Db21taXRGaWJlclVubW91bnQpIHRyeSB7CiAgICAgICAgICAgICAgICB2dS5vbkNvbW1pdEZpYmVyVW5tb3VudChndSwgdCkKICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgc3dpdGNoICh0LnRhZykgewogICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgIHNzIHx8IERyKHQsIG4pOwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgIHZhciByID0gcHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBtczsKICAgICAgICAgICAgICAgICAgICBwcyA9IG51bGwsIGpyKGUsIG4sIHQpLCBtcyA9IGwsIG51bGwgIT09IChwcyA9IHIpICYmIChtcyA/IChlID0gcHMsIHQgPSB0LnN0YXRlTm9kZSwgOCA9PT0gZS5ub2RlVHlwZSA/IGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSA6IGUucmVtb3ZlQ2hpbGQodCkpIDogcHMucmVtb3ZlQ2hpbGQodC5zdGF0ZU5vZGUpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMTg6CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gcHMgJiYgKG1zID8gKGUgPSBwcywgdCA9IHQuc3RhdGVOb2RlLCA4ID09PSBlLm5vZGVUeXBlID8gY24oZS5wYXJlbnROb2RlLCB0KSA6IDEgPT09IGUubm9kZVR5cGUgJiYgY24oZSwgdCksIGNlKGUpKSA6IGNuKHBzLCB0LnN0YXRlTm9kZSkpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgIHIgPSBwcywgbCA9IG1zLCBwcyA9IHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sIG1zID0gITAsIGpyKGUsIG4sIHQpLCBwcyA9IHIsIG1zID0gbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICBpZiAoIXNzICYmIG51bGwgIT09IChyID0gdC51cGRhdGVRdWV1ZSkgJiYgbnVsbCAhPT0gKHIgPSByLmxhc3RFZmZlY3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByID0gci5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGEuZGVzdHJveTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhLnRhZywgdm9pZCAwICE9PSB1ICYmICgwICE9ICgyICYgYSkgfHwgMCAhPSAoNCAmIGEpKSAmJiBPcih0LCBuLCB1KSwgbCA9IGwubmV4dAogICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChsICE9PSByKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBqcihlLCBuLCB0KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICBpZiAoIXNzICYmIChEcih0LCBuKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YociA9IHQuc3RhdGVOb2RlKS5jb21wb25lbnRXaWxsVW5tb3VudCkpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIucHJvcHMgPSB0Lm1lbW9pemVkUHJvcHMsIHIuc3RhdGUgPSB0Lm1lbW9pemVkU3RhdGUsIHIuY29tcG9uZW50V2lsbFVubW91bnQoKQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgemwodCwgbiwgZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAganIoZSwgbiwgdCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgICAgICAgIGpyKGUsIG4sIHQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAyMjoKICAgICAgICAgICAgICAgICAgICAxICYgdC5tb2RlID8gKHNzID0gKHIgPSBzcykgfHwgbnVsbCAhPT0gdC5tZW1vaXplZFN0YXRlLCBqcihlLCBuLCB0KSwgc3MgPSByKSA6IGpyKGUsIG4sIHQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBqcihlLCBuLCB0KQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBxcihlKSB7CiAgICAgICAgICAgIHZhciBuID0gZS51cGRhdGVRdWV1ZTsKICAgICAgICAgICAgaWYgKG51bGwgIT09IG4pIHsKICAgICAgICAgICAgICAgIGUudXBkYXRlUXVldWUgPSBudWxsOwogICAgICAgICAgICAgICAgdmFyIHQgPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgIG51bGwgPT09IHQgJiYgKHQgPSBlLnN0YXRlTm9kZSA9IG5ldyBjcyksIG4uZm9yRWFjaCgoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gTGwuYmluZChudWxsLCBlLCBuKTsKICAgICAgICAgICAgICAgICAgICB0LmhhcyhuKSB8fCAodC5hZGQobiksIG4udGhlbihyLCByKSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBLcihlLCBuLCByKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAociA9IG4uZGVsZXRpb25zKSkKICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgci5sZW5ndGg7IGwrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gcltsXTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvOwogICAgICAgICAgICAgICAgICAgICAgICBlOiBmb3IgKDsgbnVsbCAhPT0gaTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaS50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzID0gaS5zdGF0ZU5vZGUsIG1zID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHMgPSBpLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLCBtcyA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaS5yZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gcHMpIHRocm93IEVycm9yKHQoMTYwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRyKHUsIG8sIGEpLCBwcyA9IG51bGwsIG1zID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gYS5hbHRlcm5hdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IHMgJiYgKHMucmV0dXJuID0gbnVsbCksIGEucmV0dXJuID0gbnVsbAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgemwoYSwgbiwgZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgxMjg1NCAmIG4uc3VidHJlZUZsYWdzKQogICAgICAgICAgICAgICAgZm9yIChuID0gbi5jaGlsZDsgbnVsbCAhPT0gbjspIFlyKG4sIGUpLCBuID0gbi5zaWJsaW5nCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBZcihlLCBuLCByKSB7CiAgICAgICAgICAgIHZhciBsID0gZS5hbHRlcm5hdGU7CiAgICAgICAgICAgIHN3aXRjaCAociA9IGUuZmxhZ3MsIGUudGFnKSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgaWYgKEtyKG4sIGUpLCBYcihlKSwgNCAmIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElyKDMsIGUsIGUucmV0dXJuKSwgVXIoMywgZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElyKDUsIGUsIGUucmV0dXJuKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6bChlLCBlLnJldHVybiwgbikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICBLcihuLCBlKSwgWHIoZSksIDUxMiAmIHIgJiYgbnVsbCAhPT0gbCAmJiBEcihsLCBsLnJldHVybik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgaWYgKEtyKG4sIGUpLCBYcihlKSwgNTEyICYgciAmJiBudWxsICE9PSBsICYmIERyKGwsIGwucmV0dXJuKSwgMzIgJiBlLmZsYWdzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZS5zdGF0ZU5vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYShhLCAiIikKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKDQgJiByICYmIG51bGwgIT0gKGEgPSBlLnN0YXRlTm9kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLm1lbW9pemVkUHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbnVsbCAhPT0gbCA/IGwubWVtb2l6ZWRQcm9wcyA6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZS50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUudXBkYXRlUXVldWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnVwZGF0ZVF1ZXVlID0gbnVsbCwgbnVsbCAhPT0gYykgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIgPT09IHMgJiYgInJhZGlvIiA9PT0gby50eXBlICYmIG51bGwgIT0gby5uYW1lICYmIGsoYSwgbyksIFIocywgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IFIocywgbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYy5sZW5ndGg7IGkgKz0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gY1tpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGNbaSArIDFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZSIgPT09IGQgPyBNKGEsIHApIDogImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiA9PT0gZCA/IEZhKGEsIHApIDogImNoaWxkcmVuIiA9PT0gZCA/IFJhKGEsIHApIDogdShhLCBkLCBwLCBmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3KGEsIG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0ZXh0YXJlYSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4oYSwgbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlbGVjdCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gYS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGUgPSAhIW8ubXVsdGlwbGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gby52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBoID8gRShhLCAhIW8ubXVsdGlwbGUsIGgsICExKSA6IG0gIT09ICEhby5tdWx0aXBsZSAmJiAobnVsbCAhPSBvLmRlZmF1bHRWYWx1ZSA/IEUoYSwgISFvLm11bHRpcGxlLCBvLmRlZmF1bHRWYWx1ZSwgITApIDogRShhLCAhIW8ubXVsdGlwbGUsIG8ubXVsdGlwbGUgPyBbXSA6ICIiLCAhMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW1lvXSA9IG8KICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgICAgaWYgKEtyKG4sIGUpLCBYcihlKSwgNCAmIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGUuc3RhdGVOb2RlKSB0aHJvdyBFcnJvcih0KDE2MikpOwogICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5zdGF0ZU5vZGUsIG8gPSBlLm1lbW9pemVkUHJvcHM7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLm5vZGVWYWx1ZSA9IG8KICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgaWYgKEtyKG4sIGUpLCBYcihlKSwgNCAmIHIgJiYgbnVsbCAhPT0gbCAmJiBsLm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKSB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBjZShuLmNvbnRhaW5lckluZm8pCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICB6bChlLCBlLnJldHVybiwgbikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIEtyKG4sIGUpLCBYcihlKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgS3IobiwgZSksIFhyKGUpLCA4MTkyICYgKGEgPSBlLmNoaWxkKS5mbGFncyAmJiAobyA9IG51bGwgIT09IGEubWVtb2l6ZWRTdGF0ZSwgYS5zdGF0ZU5vZGUuaXNIaWRkZW4gPSBvLCAhbyB8fCBudWxsICE9PSBhLmFsdGVybmF0ZSAmJiBudWxsICE9PSBhLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlIHx8IChNcyA9IHN1KCkpKSwgNCAmIHIgJiYgcXIoZSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDIyOgogICAgICAgICAgICAgICAgICAgIGlmIChkID0gbnVsbCAhPT0gbCAmJiBudWxsICE9PSBsLm1lbW9pemVkU3RhdGUsIDEgJiBlLm1vZGUgPyAoc3MgPSAoZiA9IHNzKSB8fCBkLCBLcihuLCBlKSwgc3MgPSBmKSA6IEtyKG4sIGUpLCBYcihlKSwgODE5MiAmIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBudWxsICE9PSBlLm1lbW9pemVkU3RhdGUsIChlLnN0YXRlTm9kZS5pc0hpZGRlbiA9IGYpICYmICFkICYmIDAgIT0gKDEgJiBlLm1vZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmcyA9IGUsIGQgPSBlLmNoaWxkOyBudWxsICE9PSBkOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocCA9IGZzID0gZDsgbnVsbCAhPT0gZnM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaCA9IChtID0gZnMpLmNoaWxkLCBtLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElyKDQsIG0sIG0ucmV0dXJuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcihtLCBtLnJldHVybik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBtLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgZy5jb21wb25lbnRXaWxsVW5tb3VudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbSwgbiA9IG0ucmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHIsIGcucHJvcHMgPSBsLm1lbW9pemVkUHJvcHMsIGcuc3RhdGUgPSBsLm1lbW9pemVkU3RhdGUsIGcuY29tcG9uZW50V2lsbFVubW91bnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6bChyLCBuLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyKG0sIG0ucmV0dXJuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IG0ubWVtb2l6ZWRTdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbChwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gaCA/IChoLnJldHVybiA9IG0sIGZzID0gaCkgOiBlbChwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZC5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGU6IGZvciAoZCA9IG51bGwsIHAgPSBlOzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICg1ID09PSBwLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHAuc3RhdGVOb2RlLCBmID8gImZ1bmN0aW9uIiA9PSB0eXBlb2YobyA9IGEuc3R5bGUpLnNldFByb3BlcnR5ID8gby5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsICJub25lIiwgImltcG9ydGFudCIpIDogby5kaXNwbGF5ID0gIm5vbmUiIDogKHMgPSBwLnN0YXRlTm9kZSwgaSA9IG51bGwgIT0gKGMgPSBwLm1lbW9pemVkUHJvcHMuc3R5bGUpICYmIGMuaGFzT3duUHJvcGVydHkoImRpc3BsYXkiKSA/IGMuZGlzcGxheSA6IG51bGwsIHMuc3R5bGUuZGlzcGxheSA9IFQoImRpc3BsYXkiLCBpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKDYgPT09IHAudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGQpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuc3RhdGVOb2RlLm5vZGVWYWx1ZSA9IGYgPyAiIiA6IHAubWVtb2l6ZWRQcm9wcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemwoZSwgZS5yZXR1cm4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoMjIgIT09IHAudGFnICYmIDIzICE9PSBwLnRhZyB8fCBudWxsID09PSBwLm1lbW9pemVkU3RhdGUgfHwgcCA9PT0gZSkgJiYgbnVsbCAhPT0gcC5jaGlsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuY2hpbGQucmV0dXJuID0gcCwgcCA9IHAuY2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwID09PSBlKSBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG51bGwgPT09IHAuc2libGluZzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gcC5yZXR1cm4gfHwgcC5yZXR1cm4gPT09IGUpIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9PT0gcCAmJiAoZCA9IG51bGwpLCBwID0gcC5yZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPT09IHAgJiYgKGQgPSBudWxsKSwgcC5zaWJsaW5nLnJldHVybiA9IHAucmV0dXJuLCBwID0gcC5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgICAgICAgIEtyKG4sIGUpLCBYcihlKSwgNCAmIHIgJiYgcXIoZSk7CiAgICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBYcihlKSB7CiAgICAgICAgICAgIHZhciBuID0gZS5mbGFnczsKICAgICAgICAgICAgaWYgKDIgJiBuKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IGUucmV0dXJuOyBudWxsICE9PSByOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEJyKHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLnJldHVybgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHQoMTYwKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChsLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGwuc3RhdGVOb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIgJiBsLmZsYWdzICYmIChSYShhLCAiIiksIGwuZmxhZ3MgJj0gLTMzKSwgUXIoZSwgV3IoZSksIGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBsLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgSHIoZSwgV3IoZSksIHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDE2MSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2F0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICB6bChlLCBlLnJldHVybiwgbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUuZmxhZ3MgJj0gLTMKICAgICAgICAgICAgfQogICAgICAgICAgICA0MDk2ICYgbiAmJiAoZS5mbGFncyAmPSAtNDA5NykKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEdyKGUsIG4sIHQpIHsKICAgICAgICAgICAgZnMgPSBlLCBacihlLCBuLCB0KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWnIoZSwgbiwgdCkgewogICAgICAgICAgICBmb3IgKHZhciByID0gMCAhPSAoMSAmIGUubW9kZSk7IG51bGwgIT09IGZzOykgewogICAgICAgICAgICAgICAgdmFyIGwgPSBmcywKICAgICAgICAgICAgICAgICAgICBhID0gbC5jaGlsZDsKICAgICAgICAgICAgICAgIGlmICgyMiA9PT0gbC50YWcgJiYgcikgewogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gbnVsbCAhPT0gbC5tZW1vaXplZFN0YXRlIHx8IGlzOwogICAgICAgICAgICAgICAgICAgIGlmICghdSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGwuYWx0ZXJuYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG51bGwgIT09IG8gJiYgbnVsbCAhPT0gby5tZW1vaXplZFN0YXRlIHx8IHNzOwogICAgICAgICAgICAgICAgICAgICAgICBvID0gaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gc3M7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcyA9IHUsIChzcyA9IGkpICYmICFzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmcyA9IGw7IG51bGwgIT09IGZzOykgaSA9ICh1ID0gZnMpLmNoaWxkLCAyMiA9PT0gdS50YWcgJiYgbnVsbCAhPT0gdS5tZW1vaXplZFN0YXRlID8gbmwobCkgOiBudWxsICE9PSBpID8gKGkucmV0dXJuID0gdSwgZnMgPSBpKSA6IG5sKGwpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbnVsbCAhPT0gYTspIGZzID0gYSwgWnIoYSwgbiwgdCksIGEgPSBhLnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIGZzID0gbCwgaXMgPSBvLCBzcyA9IHMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgSnIoZSwgbiwgdCkKICAgICAgICAgICAgICAgIH0gZWxzZSAwICE9ICg4NzcyICYgbC5zdWJ0cmVlRmxhZ3MpICYmIG51bGwgIT09IGEgPyAoYS5yZXR1cm4gPSBsLCBmcyA9IGEpIDogSnIoZSwgbiwgdCkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSnIoZSwgbiwgcikgewogICAgICAgICAgICBmb3IgKDsgbnVsbCAhPT0gZnM7KSB7CiAgICAgICAgICAgICAgICBpZiAoMCAhPSAoODc3MiAmIChuID0gZnMpLmZsYWdzKSkgewogICAgICAgICAgICAgICAgICAgIHIgPSBuLmFsdGVybmF0ZTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPSAoODc3MiAmIG4uZmxhZ3MpKSBzd2l0Y2ggKG4udGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcyB8fCBVcig1LCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG4uc3RhdGVOb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICg0ICYgbi5mbGFncyAmJiAhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSByKSBsLmNvbXBvbmVudERpZE1vdW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuLmVsZW1lbnRUeXBlID09PSBuLnR5cGUgPyByLm1lbW9pemVkUHJvcHMgOiBBbihuLnR5cGUsIHIubWVtb2l6ZWRQcm9wcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmNvbXBvbmVudERpZFVwZGF0ZShhLCByLm1lbW9pemVkU3RhdGUsIGwuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IG4udXBkYXRlUXVldWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gdSAmJiB0dChuLCB1LCBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG4udXBkYXRlUXVldWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBudWxsLCBudWxsICE9PSBuLmNoaWxkKSBzd2l0Y2ggKG4uY2hpbGQudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4uY2hpbGQuc3RhdGVOb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHQobiwgbywgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gciAmJiA0ICYgbi5mbGFncykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBuLm1lbW9pemVkUHJvcHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobi50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJidXR0b24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2VsZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRleHRhcmVhIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmF1dG9Gb2N1cyAmJiByLmZvY3VzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJpbWciOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuc3JjICYmIChyLnNyYyA9IHMuc3JjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE3OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IG4ubWVtb2l6ZWRTdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IG4uYWx0ZXJuYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBjLm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZi5kZWh5ZHJhdGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGQgJiYgY2UoZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IodCgxNjMpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHNzIHx8IDUxMiAmIG4uZmxhZ3MgJiYgVnIobikKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHpsKG4sIG4ucmV0dXJuLCBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChuID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgZnMgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKHIgPSBuLnNpYmxpbmcpKSB7CiAgICAgICAgICAgICAgICAgICAgci5yZXR1cm4gPSBuLnJldHVybiwgZnMgPSByOwogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmcyA9IG4ucmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGVsKGUpIHsKICAgICAgICAgICAgZm9yICg7IG51bGwgIT09IGZzOykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBmczsKICAgICAgICAgICAgICAgIGlmIChuID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgZnMgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgdCA9IG4uc2libGluZzsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgdC5yZXR1cm4gPSBuLnJldHVybiwgZnMgPSB0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmcyA9IG4ucmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG5sKGUpIHsKICAgICAgICAgICAgZm9yICg7IG51bGwgIT09IGZzOykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBmczsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG4ucmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcig0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsKG4sIHQsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiByLmNvbXBvbmVudERpZE1vdW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBuLnJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmNvbXBvbmVudERpZE1vdW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsKG4sIGwsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuLnJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVnIobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6bChuLCBhLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gbi5yZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZyKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemwobiwgdSwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgemwobiwgbi5yZXR1cm4sIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobiA9PT0gZSkgewogICAgICAgICAgICAgICAgICAgIGZzID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIG8gPSBuLnNpYmxpbmc7CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gbykgewogICAgICAgICAgICAgICAgICAgIG8ucmV0dXJuID0gbi5yZXR1cm4sIGZzID0gbzsKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZnMgPSBuLnJldHVybgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB0bCgpIHsKICAgICAgICAgICAgRnMgPSBzdSgpICsgNTAwCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBybCgpIHsKICAgICAgICAgICAgcmV0dXJuIDAgIT0gKDYgJiBicykgPyBzdSgpIDogLTEgIT09IEhzID8gSHMgOiBIcyA9IHN1KCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGxsKGUpIHsKICAgICAgICAgICAgcmV0dXJuIDAgPT0gKDEgJiBlLm1vZGUpID8gMSA6IDAgIT0gKDIgJiBicykgJiYgMCAhPT0gU3MgPyBTcyAmIC1TcyA6IG51bGwgIT09IFNpLnRyYW5zaXRpb24gPyAoMCA9PT0gUXMgJiYgKFFzID0gWigpKSwgUXMpIDogMCAhPT0gKGUgPSB4dSkgPyBlIDogZSA9IHZvaWQgMCA9PT0gKGUgPSB3aW5kb3cuZXZlbnQpID8gMTYgOiBoZShlLnR5cGUpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBhbChlLCBuLCByLCBsKSB7CiAgICAgICAgICAgIGlmICg1MCA8IEJzKSB0aHJvdyBCcyA9IDAsIFdzID0gbnVsbCwgRXJyb3IodCgxODUpKTsKICAgICAgICAgICAgZWUoZSwgciwgbCksIDAgIT0gKDIgJiBicykgJiYgZSA9PT0ga3MgfHwgKGUgPT09IGtzICYmICgwID09ICgyICYgYnMpICYmIChQcyB8PSByKSwgNCA9PT0gQ3MgJiYgY2woZSwgU3MpKSwgdWwoZSwgbCksIDEgPT09IHIgJiYgMCA9PT0gYnMgJiYgMCA9PSAoMSAmIG4ubW9kZSkgJiYgKHRsKCksIG9pICYmIE5uKCkpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdWwoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IGUuY2FsbGJhY2tOb2RlOwogICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBlLnN1c3BlbmRlZExhbmVzLCByID0gZS5waW5nZWRMYW5lcywgbCA9IGUuZXhwaXJhdGlvblRpbWVzLCBhID0gZS5wZW5kaW5nTGFuZXM7IDAgPCBhOykgewogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gMzEgLSB5dShhKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDEgPDwgdSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGxbdV07IC0gMSA9PT0gaSA/IDAgIT0gKG8gJiB0KSAmJiAwID09IChvICYgcikgfHwgKGxbdV0gPSBYKG8sIG4pKSA6IGkgPD0gbiAmJiAoZS5leHBpcmVkTGFuZXMgfD0gbyksIGEgJj0gfm8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfShlLCBuKTsKICAgICAgICAgICAgdmFyIHIgPSBZKGUsIGUgPT09IGtzID8gU3MgOiAwKTsKICAgICAgICAgICAgaWYgKDAgPT09IHIpIG51bGwgIT09IHQgJiYgdXUodCksIGUuY2FsbGJhY2tOb2RlID0gbnVsbCwgZS5jYWxsYmFja1ByaW9yaXR5ID0gMDsKICAgICAgICAgICAgZWxzZSBpZiAobiA9IHIgJiAtciwgZS5jYWxsYmFja1ByaW9yaXR5ICE9PSBuKSB7CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0ICYmIHV1KHQpLCAxID09PSBuKSAwID09PSBlLnRhZyA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBvaSA9ICEwLCB6bihlKQogICAgICAgICAgICAgICAgfShmbC5iaW5kKG51bGwsIGUpKSA6IHpuKGZsLmJpbmQobnVsbCwgZSkpLCAkbygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgMCA9PSAoNiAmIGJzKSAmJiBObigpCiAgICAgICAgICAgICAgICB9KSksIHQgPSBudWxsOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0ZShyKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZnU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGR1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gcHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1MzY4NzA5MTI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gaHUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdCA9IFRsKHQsIG9sLmJpbmQobnVsbCwgZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlLmNhbGxiYWNrUHJpb3JpdHkgPSBuLCBlLmNhbGxiYWNrTm9kZSA9IHQKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb2woZSwgbikgewogICAgICAgICAgICBpZiAoSHMgPSAtMSwgUXMgPSAwLCAwICE9ICg2ICYgYnMpKSB0aHJvdyBFcnJvcih0KDMyNykpOwogICAgICAgICAgICB2YXIgciA9IGUuY2FsbGJhY2tOb2RlOwogICAgICAgICAgICBpZiAoRWwoKSAmJiBlLmNhbGxiYWNrTm9kZSAhPT0gcikgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIHZhciBsID0gWShlLCBlID09PSBrcyA/IFNzIDogMCk7CiAgICAgICAgICAgIGlmICgwID09PSBsKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgaWYgKDAgIT0gKDMwICYgbCkgfHwgMCAhPSAobCAmIGUuZXhwaXJlZExhbmVzKSB8fCBuKSBuID0geWwoZSwgbCk7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbiA9IGw7CiAgICAgICAgICAgICAgICB2YXIgYSA9IGJzOwogICAgICAgICAgICAgICAgYnMgfD0gMjsKICAgICAgICAgICAgICAgIHZhciB1ID0gZ2woKTsKICAgICAgICAgICAgICAgIGZvciAoa3MgPT09IGUgJiYgU3MgPT09IG4gfHwgKFJzID0gbnVsbCwgdGwoKSwgbWwoZSwgbikpOzspIHRyeSB7CiAgICAgICAgICAgICAgICAgICAga2woKTsKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfSBjYXRjaCAobikgewogICAgICAgICAgICAgICAgICAgIGhsKGUsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBCbigpLCBncy5jdXJyZW50ID0gdSwgYnMgPSBhLCBudWxsICE9PSB3cyA/IG4gPSAwIDogKGtzID0gbnVsbCwgU3MgPSAwLCBuID0gQ3MpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKDAgIT09IG4pIHsKICAgICAgICAgICAgICAgIGlmICgyID09PSBuICYmIDAgIT09IChhID0gRyhlKSkgJiYgKGwgPSBhLCBuID0gaWwoZSwgYSkpLCAxID09PSBuKSB0aHJvdyByID0genMsIG1sKGUsIDApLCBjbChlLCBsKSwgdWwoZSwgc3UoKSksIHI7CiAgICAgICAgICAgICAgICBpZiAoNiA9PT0gbikgY2woZSwgbCk7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGUuY3VycmVudC5hbHRlcm5hdGUsIDAgPT0gKDMwICYgbCkgJiYgISBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gZTs7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDE2Mzg0ICYgbi5mbGFncykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG4udXBkYXRlUXVldWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB0ICYmIG51bGwgIT09ICh0ID0gdC5zdG9yZXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IDA7IHIgPCB0Lmxlbmd0aDsgcisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB0W3JdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbC5nZXRTbmFwc2hvdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbC52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdvKGEoKSwgbCkpIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IG4uY2hpbGQsIDE2Mzg0ICYgbi5zdWJ0cmVlRmxhZ3MgJiYgbnVsbCAhPT0gdCkgdC5yZXR1cm4gPSBuLCBuID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT09IGUpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbnVsbCA9PT0gbi5zaWJsaW5nOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IG4ucmV0dXJuIHx8IG4ucmV0dXJuID09PSBlKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi5yZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnNpYmxpbmcucmV0dXJuID0gbi5yZXR1cm4sIG4gPSBuLnNpYmxpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICAgICAgfShhKSAmJiAoMiA9PT0gKG4gPSB5bChlLCBsKSkgJiYgMCAhPT0gKHUgPSBHKGUpKSAmJiAobCA9IHUsIG4gPSBpbChlLCB1KSksIDEgPT09IG4pKSB0aHJvdyByID0genMsIG1sKGUsIDApLCBjbChlLCBsKSwgdWwoZSwgc3UoKSksIHI7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlLmZpbmlzaGVkV29yayA9IGEsIGUuZmluaXNoZWRMYW5lcyA9IGwsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDM0NSkpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhsKGUsIFRzLCBScyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsKGUsIGwpLCAoMTMwMDIzNDI0ICYgbCkgPT09IGwgJiYgMTAgPCAobiA9IE1zICsgNTAwIC0gc3UoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gWShlLCAwKSkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoYSA9IGUuc3VzcGVuZGVkTGFuZXMpICYgbCkgIT09IGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmwoKSwgZS5waW5nZWRMYW5lcyB8PSBlLnN1c3BlbmRlZExhbmVzICYgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50aW1lb3V0SGFuZGxlID0gSG8oeGwuYmluZChudWxsLCBlLCBUcywgUnMpLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeGwoZSwgVHMsIFJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2woZSwgbCksICg0MTk0MjQwICYgbCkgPT09IGwpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gZS5ldmVudFRpbWVzLCBhID0gLTE7IDAgPCBsOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gMzEgLSB5dShsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gMSA8PCBvLCAobyA9IG5bb10pID4gYSAmJiAoYSA9IG8pLCBsICY9IH51CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IGEsIDEwIDwgKGwgPSAoMTIwID4gKGwgPSBzdSgpIC0gbCkgPyAxMjAgOiA0ODAgPiBsID8gNDgwIDogMTA4MCA+IGwgPyAxMDgwIDogMTkyMCA+IGwgPyAxOTIwIDogM2UzID4gbCA/IDNlMyA6IDQzMjAgPiBsID8gNDMyMCA6IDE5NjAgKiBocyhsIC8gMTk2MCkpIC0gbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRpbWVvdXRIYW5kbGUgPSBIbyh4bC5iaW5kKG51bGwsIGUsIFRzLCBScyksIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bChlLCBUcywgUnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDMyOSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB1bChlLCBzdSgpKSwgZS5jYWxsYmFja05vZGUgPT09IHIgPyBvbC5iaW5kKG51bGwsIGUpIDogbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaWwoZSwgbikgewogICAgICAgICAgICB2YXIgdCA9IExzOwogICAgICAgICAgICByZXR1cm4gZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkICYmIChtbChlLCBuKS5mbGFncyB8PSAyNTYpLCAyICE9PSAoZSA9IHlsKGUsIG4pKSAmJiAobiA9IFRzLCBUcyA9IHQsIG51bGwgIT09IG4gJiYgc2wobikpLCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzbChlKSB7CiAgICAgICAgICAgIG51bGwgPT09IFRzID8gVHMgPSBlIDogVHMucHVzaC5hcHBseShUcywgZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGNsKGUsIG4pIHsKICAgICAgICAgICAgZm9yIChuICY9IH5fcywgbiAmPSB+UHMsIGUuc3VzcGVuZGVkTGFuZXMgfD0gbiwgZS5waW5nZWRMYW5lcyAmPSB+biwgZSA9IGUuZXhwaXJhdGlvblRpbWVzOyAwIDwgbjspIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gMzEgLSB5dShuKSwKICAgICAgICAgICAgICAgICAgICByID0gMSA8PCB0OwogICAgICAgICAgICAgICAgZVt0XSA9IC0xLCBuICY9IH5yCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZsKGUpIHsKICAgICAgICAgICAgaWYgKDAgIT0gKDYgJiBicykpIHRocm93IEVycm9yKHQoMzI3KSk7CiAgICAgICAgICAgIEVsKCk7CiAgICAgICAgICAgIHZhciBuID0gWShlLCAwKTsKICAgICAgICAgICAgaWYgKDAgPT0gKDEgJiBuKSkgcmV0dXJuIHVsKGUsIHN1KCkpLCBudWxsOwogICAgICAgICAgICB2YXIgciA9IHlsKGUsIG4pOwogICAgICAgICAgICBpZiAoMCAhPT0gZS50YWcgJiYgMiA9PT0gcikgewogICAgICAgICAgICAgICAgdmFyIGwgPSBHKGUpOwogICAgICAgICAgICAgICAgMCAhPT0gbCAmJiAobiA9IGwsIHIgPSBpbChlLCBsKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoMSA9PT0gcikgdGhyb3cgciA9IHpzLCBtbChlLCAwKSwgY2woZSwgbiksIHVsKGUsIHN1KCkpLCByOwogICAgICAgICAgICBpZiAoNiA9PT0gcikgdGhyb3cgRXJyb3IodCgzNDUpKTsKICAgICAgICAgICAgcmV0dXJuIGUuZmluaXNoZWRXb3JrID0gZS5jdXJyZW50LmFsdGVybmF0ZSwgZS5maW5pc2hlZExhbmVzID0gbiwgeGwoZSwgVHMsIFJzKSwgdWwoZSwgc3UoKSksIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGRsKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBiczsKICAgICAgICAgICAgYnMgfD0gMTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBlKG4pCiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAwID09PSAoYnMgPSB0KSAmJiAodGwoKSwgb2kgJiYgTm4oKSkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcGwoZSkgewogICAgICAgICAgICBudWxsICE9PSBWcyAmJiAwID09PSBWcy50YWcgJiYgMCA9PSAoNiAmIGJzKSAmJiBFbCgpOwogICAgICAgICAgICB2YXIgbiA9IGJzOwogICAgICAgICAgICBicyB8PSAxOwogICAgICAgICAgICB2YXIgdCA9IHlzLnRyYW5zaXRpb24sCiAgICAgICAgICAgICAgICByID0geHU7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBpZiAoeXMudHJhbnNpdGlvbiA9IG51bGwsIHh1ID0gMSwgZSkgcmV0dXJuIGUoKQogICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgeHUgPSByLCB5cy50cmFuc2l0aW9uID0gdCwgMCA9PSAoNiAmIChicyA9IG4pKSAmJiBObigpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG1sKGUsIG4pIHsKICAgICAgICAgICAgZS5maW5pc2hlZFdvcmsgPSBudWxsLCBlLmZpbmlzaGVkTGFuZXMgPSAwOwogICAgICAgICAgICB2YXIgdCA9IGUudGltZW91dEhhbmRsZTsKICAgICAgICAgICAgaWYgKC0xICE9PSB0ICYmIChlLnRpbWVvdXRIYW5kbGUgPSAtMSwgUW8odCkpLCBudWxsICE9PSB3cykKICAgICAgICAgICAgICAgIGZvciAodCA9IHdzLnJldHVybjsgbnVsbCAhPT0gdDspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQ7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChUbihyKSwgci50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSAociA9IHIudHlwZS5jaGlsZENvbnRleHRUeXBlcykgJiYgKHluKGxpKSwgeW4ocmkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdCgpLCB5bihsaSksIHluKHJpKSwgeXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBndChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5bihVaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFduKHIudHlwZS5fY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzID0gRXMuY3VycmVudCwgeW4oRXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQgPSB0LnJldHVybgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoa3MgPSBlLCB3cyA9IGUgPSBSbChlLmN1cnJlbnQsIG51bGwpLCBTcyA9IHhzID0gbiwgQ3MgPSAwLCB6cyA9IG51bGwsIF9zID0gUHMgPSBOcyA9IDAsIFRzID0gTHMgPSBudWxsLCBudWxsICE9PSBOaSkgewogICAgICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IE5pLmxlbmd0aDsgbisrKQogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAociA9ICh0ID0gTmlbbl0pLmludGVybGVhdmVkKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmludGVybGVhdmVkID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSByLm5leHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5wZW5kaW5nOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBhLm5leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLm5leHQgPSBsLCByLm5leHQgPSB1CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdC5wZW5kaW5nID0gcgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIE5pID0gbnVsbAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBobChlLCBuKSB7CiAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgIHZhciByID0gd3M7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGlmIChCbigpLCBBaS5jdXJyZW50ID0gWGksICRpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSBIaS5tZW1vaXplZFN0YXRlOyBudWxsICE9PSBsOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBsLnF1ZXVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gYSAmJiAoYS5wZW5kaW5nID0gbnVsbCksIGwgPSBsLm5leHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkaSA9ICExCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChXaSA9IDAsIGppID0gUWkgPSBIaSA9IG51bGwsIHFpID0gITEsIEtpID0gMCwgdnMuY3VycmVudCA9IG51bGwsIG51bGwgPT09IHIgfHwgbnVsbCA9PT0gci5yZXR1cm4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ3MgPSAxLCB6cyA9IG4sIHdzID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gci5yZXR1cm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IFNzLCBpLmZsYWdzIHw9IDMyNzY4LCBudWxsICE9PSBzICYmICJvYmplY3QiID09IHR5cGVvZiBzICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIHMudGhlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmLnRhZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09ICgxICYgZi5tb2RlKSAmJiAoMCA9PT0gZCB8fCAxMSA9PT0gZCB8fCAxNSA9PT0gZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGYuYWx0ZXJuYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPyAoZi51cGRhdGVRdWV1ZSA9IHAudXBkYXRlUXVldWUsIGYubWVtb2l6ZWRTdGF0ZSA9IHAubWVtb2l6ZWRTdGF0ZSwgZi5sYW5lcyA9IHAubGFuZXMpIDogKGYudXBkYXRlUXVldWUgPSBudWxsLCBmLm1lbW9pemVkU3RhdGUgPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBzcihvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5mbGFncyAmPSAtMjU3LCBjcihtLCBvLCBpLCAwLCBuKSwgMSAmIG0ubW9kZSAmJiBpcih1LCBjLCBuKSwgcyA9IGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSAobiA9IG0pLnVwZGF0ZVF1ZXVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gbmV3IFNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5hZGQocyksIG4udXBkYXRlUXVldWUgPSBnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGguYWRkKHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09ICgxICYgbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcih1LCBjLCBuKSwgdmwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gRXJyb3IodCg0MjYpKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtpICYmIDEgJiBpLm1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ID0gc3Iobyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gdikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT0gKDY1NTM2ICYgdi5mbGFncykgJiYgKHYuZmxhZ3MgfD0gMjU2KSwgY3IodiwgbywgaSwgMCwgbiksIFZuKHJyKHMsIGkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMgPSBycihzLCBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgNCAhPT0gQ3MgJiYgKENzID0gMiksCiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IExzID8gTHMgPSBbdV0gOiBMcy5wdXNoKHUpLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gbztkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHUudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LmZsYWdzIHw9IDY1NTM2LCBuICY9IC1uLCB1LmxhbmVzIHw9IG4sIGV0KHUsIHVyKDAsIHMsIG4pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHUudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB1LnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT0gKDEyOCAmIHUuZmxhZ3MpICYmICgiZnVuY3Rpb24iID09IHR5cGVvZiB5LmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciB8fCBudWxsICE9PSBiICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIGIuY29tcG9uZW50RGlkQ2F0Y2ggJiYgKG51bGwgPT09IElzIHx8ICFJcy5oYXMoYikpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5mbGFncyB8PSA2NTUzNiwgbiAmPSAtbiwgdS5sYW5lcyB8PSBuLCBldCh1LCBvcih1LCBpLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB1LnJldHVybgogICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSB1KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBTbChyKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgIG4gPSBlLCB3cyA9PT0gciAmJiBudWxsICE9PSByICYmICh3cyA9IHIgPSByLnJldHVybik7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGdsKCkgewogICAgICAgICAgICB2YXIgZSA9IGdzLmN1cnJlbnQ7CiAgICAgICAgICAgIHJldHVybiBncy5jdXJyZW50ID0gWGksIG51bGwgPT09IGUgPyBYaSA6IGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHZsKCkgewogICAgICAgICAgICAwICE9PSBDcyAmJiAzICE9PSBDcyAmJiAyICE9PSBDcyB8fCAoQ3MgPSA0KSwgbnVsbCA9PT0ga3MgfHwgMCA9PSAoMjY4NDM1NDU1ICYgTnMpICYmIDAgPT0gKDI2ODQzNTQ1NSAmIFBzKSB8fCBjbChrcywgU3MpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB5bChlLCBuKSB7CiAgICAgICAgICAgIHZhciByID0gYnM7CiAgICAgICAgICAgIGJzIHw9IDI7CiAgICAgICAgICAgIHZhciBsID0gZ2woKTsKICAgICAgICAgICAgZm9yIChrcyA9PT0gZSAmJiBTcyA9PT0gbiB8fCAoUnMgPSBudWxsLCBtbChlLCBuKSk7OykgdHJ5IHsKICAgICAgICAgICAgICAgIGJsKCk7CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICBobChlLCBuKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChCbigpLCBicyA9IHIsIGdzLmN1cnJlbnQgPSBsLCBudWxsICE9PSB3cykgdGhyb3cgRXJyb3IodCgyNjEpKTsKICAgICAgICAgICAgcmV0dXJuIGtzID0gbnVsbCwgU3MgPSAwLCBDcwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYmwoKSB7CiAgICAgICAgICAgIGZvciAoOyBudWxsICE9PSB3czspIHdsKHdzKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24ga2woKSB7CiAgICAgICAgICAgIGZvciAoOyBudWxsICE9PSB3cyAmJiAhb3UoKTspIHdsKHdzKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gd2woZSkgewogICAgICAgICAgICB2YXIgbiA9IGpzKGUuYWx0ZXJuYXRlLCBlLCB4cyk7CiAgICAgICAgICAgIGUubWVtb2l6ZWRQcm9wcyA9IGUucGVuZGluZ1Byb3BzLCBudWxsID09PSBuID8gU2woZSkgOiB3cyA9IG4sIHZzLmN1cnJlbnQgPSBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBTbChlKSB7CiAgICAgICAgICAgIHZhciBuID0gZTsKICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgdmFyIHQgPSBuLmFsdGVybmF0ZTsKICAgICAgICAgICAgICAgIGlmIChlID0gbi5yZXR1cm4sIDAgPT0gKDMyNzY4ICYgbi5mbGFncykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKHQgPSBGcih0LCBuLCB4cykpKSByZXR1cm4gdm9pZCh3cyA9IHQpCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAodCA9IFJyKHQsIG4pKSkgcmV0dXJuIHQuZmxhZ3MgJj0gMzI3NjcsIHZvaWQod3MgPSB0KTsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gZSkgcmV0dXJuIENzID0gNiwgdm9pZCh3cyA9IG51bGwpOwogICAgICAgICAgICAgICAgICAgIGUuZmxhZ3MgfD0gMzI3NjgsIGUuc3VidHJlZUZsYWdzID0gMCwgZS5kZWxldGlvbnMgPSBudWxsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKG4gPSBuLnNpYmxpbmcpKSByZXR1cm4gdm9pZCh3cyA9IG4pOwogICAgICAgICAgICAgICAgd3MgPSBuID0gZQogICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSBuKTsKICAgICAgICAgICAgMCA9PT0gQ3MgJiYgKENzID0gNSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHhsKGUsIG4sIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSB4dSwKICAgICAgICAgICAgICAgIGEgPSB5cy50cmFuc2l0aW9uOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgeXMudHJhbnNpdGlvbiA9IG51bGwsIHh1ID0gMSwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlLCBuLCByLCBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAobnVsbCAhPT0gVnMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPSAoNiAmIGJzKSkgdGhyb3cgRXJyb3IodCgzMjcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUuZmluaXNoZWRXb3JrOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuZmluaXNoZWRMYW5lczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IHIpIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5maW5pc2hlZFdvcmsgPSBudWxsLCBlLmZpbmlzaGVkTGFuZXMgPSAwLCByID09PSBlLmN1cnJlbnQpIHRocm93IEVycm9yKHQoMTc3KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuY2FsbGJhY2tOb2RlID0gbnVsbCwgZS5jYWxsYmFja1ByaW9yaXR5ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSByLmxhbmVzIHwgci5jaGlsZExhbmVzOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5wZW5kaW5nTGFuZXMgJiB+bjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnBlbmRpbmdMYW5lcyA9IG4sIGUuc3VzcGVuZGVkTGFuZXMgPSAwLCBlLnBpbmdlZExhbmVzID0gMCwgZS5leHBpcmVkTGFuZXMgJj0gbiwgZS5tdXRhYmxlUmVhZExhbmVzICY9IG4sIGUuZW50YW5nbGVkTGFuZXMgJj0gbiwgbiA9IGUuZW50YW5nbGVtZW50czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUuZXZlbnRUaW1lczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSBlLmV4cGlyYXRpb25UaW1lczsgMCA8IHQ7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gMzEgLSB5dSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAxIDw8IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5bbF0gPSAwLCByW2xdID0gLTEsIGVbbF0gPSAtMSwgdCAmPSB+YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgdSksIGUgPT09IGtzICYmICh3cyA9IGtzID0gbnVsbCwgU3MgPSAwKSwgMCA9PSAoMjA2NCAmIHIuc3VidHJlZUZsYWdzKSAmJiAwID09ICgyMDY0ICYgci5mbGFncykgfHwgVXMgfHwgKFVzID0gITAsIFRsKHB1LCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVsKCksIG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSksIHUgPSAwICE9ICgxNTk5MCAmIHIuZmxhZ3MpLCAwICE9ICgxNTk5MCAmIHIuc3VidHJlZUZsYWdzKSB8fCB1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0geXMudHJhbnNpdGlvbiwgeXMudHJhbnNpdGlvbiA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHh1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeHUgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBiczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJzIHw9IDQsIHZzLmN1cnJlbnQgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEJvID0gUnUsIEJlKGUgPSBBZSgpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzZWxlY3Rpb25TdGFydCIgaW4gZSkgdmFyIHIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGUuc2VsZWN0aW9uU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBlLnNlbGVjdGlvbkVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gKHIgPSAociA9IGUub3duZXJEb2N1bWVudCkgJiYgci5kZWZhdWx0VmlldyB8fCB3aW5kb3cpLmdldFNlbGVjdGlvbiAmJiByLmdldFNlbGVjdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsICYmIDAgIT09IGwucmFuZ2VDb3VudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbC5hbmNob3JOb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGwuYW5jaG9yT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGwuZm9jdXNOb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbC5mb2N1c09mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIubm9kZVR5cGUsIHUubm9kZVR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG07IGQgIT09IHIgfHwgMCAhPT0gYSAmJiAzICE9PSBkLm5vZGVUeXBlIHx8IChpID0gbyArIGEpLCBkICE9PSB1IHx8IDAgIT09IGwgJiYgMyAhPT0gZC5ub2RlVHlwZSB8fCAocyA9IG8gKyBsKSwgMyA9PT0gZC5ub2RlVHlwZSAmJiAobyArPSBkLm5vZGVWYWx1ZS5sZW5ndGgpLCBudWxsICE9PSAobSA9IGQuZmlyc3RDaGlsZCk7KSBwID0gZCwgZCA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQgPT09IGUpIGJyZWFrIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPT09IHIgJiYgKytjID09PSBhICYmIChpID0gbyksIHAgPT09IHUgJiYgKytmID09PSBsICYmIChzID0gbyksIG51bGwgIT09IChtID0gZC5uZXh0U2libGluZykpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAoZCA9IHApLnBhcmVudE5vZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IC0xID09PSBpIHx8IC0xID09PSBzID8gbnVsbCA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgciA9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByIHx8IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFdvID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzZWRFbGVtOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBSdSA9ICExLCBmcyA9IG47IG51bGwgIT09IGZzOykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlID0gKG4gPSBmcykuY2hpbGQsIDAgIT0gKDEwMjggJiBuLnN1YnRyZWVGbGFncykgJiYgbnVsbCAhPT0gZSkgZS5yZXR1cm4gPSBuLCBmcyA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG51bGwgIT09IGZzOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IG4uYWx0ZXJuYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT0gKDEwMjQgJiBuLmZsYWdzKSkgc3dpdGNoIChuLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBoLm1lbW9pemVkUHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGgubWVtb2l6ZWRTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gbi5zdGF0ZU5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHkuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUobi5lbGVtZW50VHlwZSA9PT0gbi50eXBlID8gZyA6IEFuKG4udHlwZSwgZyksIHYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeS5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSA9IGIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gbi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9PT0gay5ub2RlVHlwZSA/IGsudGV4dENvbnRlbnQgPSAiIiA6IDkgPT09IGsubm9kZVR5cGUgJiYgay5kb2N1bWVudEVsZW1lbnQgJiYgay5yZW1vdmVDaGlsZChrLmRvY3VtZW50RWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHQoMTYzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemwobiwgbi5yZXR1cm4sIGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IChlID0gbi5zaWJsaW5nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yZXR1cm4gPSBuLnJldHVybiwgZnMgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcyA9IG4ucmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZHMsIGRzID0gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHIpLCBZcihyLCBlKSwgV2UoV28pLCBSdSA9ICEhQm8sIFdvID0gQm8gPSBudWxsLCBlLmN1cnJlbnQgPSByLCBHcihyLCBlLCBhKSwgaXUoKSwgYnMgPSBpLCB4dSA9IG8sIHlzLnRyYW5zaXRpb24gPSB1CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBlLmN1cnJlbnQgPSByOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoVXMgJiYgKFVzID0gITEsIFZzID0gZSwgQXMgPSBhKSwgMCA9PT0gKHUgPSBlLnBlbmRpbmdMYW5lcykgJiYgKElzID0gbnVsbCksIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodnUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdnUub25Db21taXRGaWJlclJvb3QpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1Lm9uQ29tbWl0RmliZXJSb290KGd1LCBlLCB2b2lkIDAsIDEyOCA9PSAoMTI4ICYgZS5jdXJyZW50LmZsYWdzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShyLnN0YXRlTm9kZSksIHVsKGUsIHN1KCkpLCBudWxsICE9PSBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gZS5vblJlY292ZXJhYmxlRXJyb3IsIHIgPSAwOyByIDwgbi5sZW5ndGg7IHIrKykgYSA9IG5bcl0sIGwoYS52YWx1ZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFN0YWNrOiBhLnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdDogYS5kaWdlc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoRHMpIHRocm93IERzID0gITEsIGUgPSBPcywgT3MgPSBudWxsLCBlOwogICAgICAgICAgICAgICAgICAgICAgICAwICE9ICgxICYgQXMpICYmIDAgIT09IGUudGFnICYmIEVsKCksIDAgIT0gKDEgJiAodSA9IGUucGVuZGluZ0xhbmVzKSkgPyBlID09PSBXcyA/IEJzKysgOiAoQnMgPSAwLCBXcyA9IGUpIDogQnMgPSAwLCBObigpCiAgICAgICAgICAgICAgICAgICAgfShlLCBuLCByLCBsKQogICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgeXMudHJhbnNpdGlvbiA9IGEsIHh1ID0gbAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBFbCgpIHsKICAgICAgICAgICAgaWYgKG51bGwgIT09IFZzKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRlKEFzKSwKICAgICAgICAgICAgICAgICAgICBuID0geXMudHJhbnNpdGlvbiwKICAgICAgICAgICAgICAgICAgICByID0geHU7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGlmICh5cy50cmFuc2l0aW9uID0gbnVsbCwgeHUgPSAxNiA+IGUgPyAxNiA6IGUsIG51bGwgPT09IFZzKSB2YXIgbCA9ICExOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA9IFZzLCBWcyA9IG51bGwsIEFzID0gMCwgMCAhPSAoNiAmIGJzKSkgdGhyb3cgRXJyb3IodCgzMzEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBiczsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChicyB8PSA0LCBmcyA9IGUuY3VycmVudDsgbnVsbCAhPT0gZnM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGZzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB1LmNoaWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT0gKDE2ICYgZnMuZmxhZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB1LmRlbGV0aW9uczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IGkubGVuZ3RoOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gaVtzXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZnMgPSBjOyBudWxsICE9PSBmczspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGZzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZi50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXIoOCwgZiwgdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBmLmNoaWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBkKSBkLnJldHVybiA9IGYsIGZzID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBudWxsICE9PSBmczspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gKGYgPSBmcykuc2libGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gZi5yZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXIoZiksIGYgPT09IGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5yZXR1cm4gPSBtLCBmcyA9IHA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzID0gbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB1LmFsdGVybmF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gaC5jaGlsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5jaGlsZCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IGcuc2libGluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5zaWJsaW5nID0gbnVsbCwgZyA9IHYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSBnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzID0gdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9ICgyMDY0ICYgdS5zdWJ0cmVlRmxhZ3MpICYmIG51bGwgIT09IG8pIG8ucmV0dXJuID0gdSwgZnMgPSBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBlOiBmb3IgKDsgbnVsbCAhPT0gZnM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT0gKDIwNDggJiAodSA9IGZzKS5mbGFncykpIHN3aXRjaCAodS50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXIoOSwgdSwgdS5yZXR1cm4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gdS5zaWJsaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkucmV0dXJuID0gdS5yZXR1cm4sIGZzID0geTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcyA9IHUucmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBlLmN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZnMgPSBiOyBudWxsICE9PSBmczspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gKG8gPSBmcykuY2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPSAoMjA2NCAmIG8uc3VidHJlZUZsYWdzKSAmJiBudWxsICE9PSBrKSBrLnJldHVybiA9IG8sIGZzID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZTogZm9yIChvID0gYjsgbnVsbCAhPT0gZnM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT0gKDIwNDggJiAoaSA9IGZzKS5mbGFncykpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaS50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVyKDksIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsKGksIGkucmV0dXJuLCBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSBpLnNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdy5yZXR1cm4gPSBpLnJldHVybiwgZnMgPSB3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzID0gaS5yZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnMgPSBhLCBObigpLCB2dSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB2dS5vblBvc3RDb21taXRGaWJlclJvb3QpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dS5vblBvc3RDb21taXRGaWJlclJvb3QoZ3UsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAhMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbAogICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICB4dSA9IHIsIHlzLnRyYW5zaXRpb24gPSBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBDbChlLCBuLCB0KSB7CiAgICAgICAgICAgIGUgPSBabihlLCBuID0gdXIoMCwgbiA9IHJyKHQsIG4pLCAxKSwgMSksIG4gPSBybCgpLCBudWxsICE9PSBlICYmIChlZShlLCAxLCBuKSwgdWwoZSwgbikpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB6bChlLCBuLCB0KSB7CiAgICAgICAgICAgIGlmICgzID09PSBlLnRhZykgQ2woZSwgZSwgdCk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAoOyBudWxsICE9PSBuOykgewogICAgICAgICAgICAgICAgICAgIGlmICgzID09PSBuLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICBDbChuLCBlLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IG4udGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbi5zdGF0ZU5vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiBuLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIHx8ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHIuY29tcG9uZW50RGlkQ2F0Y2ggJiYgKG51bGwgPT09IElzIHx8ICFJcy5oYXMocikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gWm4obiwgZSA9IG9yKG4sIGUgPSBycih0LCBlKSwgMSksIDEpLCBlID0gcmwoKSwgbnVsbCAhPT0gbiAmJiAoZWUobiwgMSwgZSksIHVsKG4sIGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbiA9IG4ucmV0dXJuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBObChlLCBuLCB0KSB7CiAgICAgICAgICAgIHZhciByID0gZS5waW5nQ2FjaGU7CiAgICAgICAgICAgIG51bGwgIT09IHIgJiYgci5kZWxldGUobiksIG4gPSBybCgpLCBlLnBpbmdlZExhbmVzIHw9IGUuc3VzcGVuZGVkTGFuZXMgJiB0LCBrcyA9PT0gZSAmJiAoU3MgJiB0KSA9PT0gdCAmJiAoNCA9PT0gQ3MgfHwgMyA9PT0gQ3MgJiYgKDEzMDAyMzQyNCAmIFNzKSA9PT0gU3MgJiYgNTAwID4gc3UoKSAtIE1zID8gbWwoZSwgMCkgOiBfcyB8PSB0KSwgdWwoZSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFBsKGUsIG4pIHsKICAgICAgICAgICAgMCA9PT0gbiAmJiAoMCA9PSAoMSAmIGUubW9kZSkgPyBuID0gMSA6IChuID0gU3UsIDAgPT0gKDEzMDAyMzQyNCAmIChTdSA8PD0gMSkpICYmIChTdSA9IDQxOTQzMDQpKSk7CiAgICAgICAgICAgIHZhciB0ID0gcmwoKTsKICAgICAgICAgICAgbnVsbCAhPT0gKGUgPSBLbihlLCBuKSkgJiYgKGVlKGUsIG4sIHQpLCB1bChlLCB0KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIF9sKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLm1lbW9pemVkU3RhdGUsCiAgICAgICAgICAgICAgICB0ID0gMDsKICAgICAgICAgICAgbnVsbCAhPT0gbiAmJiAodCA9IG4ucmV0cnlMYW5lKSwgUGwoZSwgdCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIExsKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHIgPSAwOwogICAgICAgICAgICBzd2l0Y2ggKGUudGFnKSB7CiAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgIHZhciBsID0gZS5zdGF0ZU5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gYSAmJiAociA9IGEucmV0cnlMYW5lKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgICAgICAgbCA9IGUuc3RhdGVOb2RlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDMxNCkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbnVsbCAhPT0gbCAmJiBsLmRlbGV0ZShuKSwgUGwoZSwgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFRsKGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIGF1KGUsIG4pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBNbChlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHRoaXMudGFnID0gZSwgdGhpcy5rZXkgPSB0LCB0aGlzLnNpYmxpbmcgPSB0aGlzLmNoaWxkID0gdGhpcy5yZXR1cm4gPSB0aGlzLnN0YXRlTm9kZSA9IHRoaXMudHlwZSA9IHRoaXMuZWxlbWVudFR5cGUgPSBudWxsLCB0aGlzLmluZGV4ID0gMCwgdGhpcy5yZWYgPSBudWxsLCB0aGlzLnBlbmRpbmdQcm9wcyA9IG4sIHRoaXMuZGVwZW5kZW5jaWVzID0gdGhpcy5tZW1vaXplZFN0YXRlID0gdGhpcy51cGRhdGVRdWV1ZSA9IHRoaXMubWVtb2l6ZWRQcm9wcyA9IG51bGwsIHRoaXMubW9kZSA9IHIsIHRoaXMuc3VidHJlZUZsYWdzID0gdGhpcy5mbGFncyA9IDAsIHRoaXMuZGVsZXRpb25zID0gbnVsbCwgdGhpcy5jaGlsZExhbmVzID0gdGhpcy5sYW5lcyA9IDAsIHRoaXMuYWx0ZXJuYXRlID0gbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRmwoZSkgewogICAgICAgICAgICByZXR1cm4gISghKGUgPSBlLnByb3RvdHlwZSkgfHwgIWUuaXNSZWFjdENvbXBvbmVudCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFJsKGUsIG4pIHsKICAgICAgICAgICAgdmFyIHQgPSBlLmFsdGVybmF0ZTsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IHQgPyAoKHQgPSAkcyhlLnRhZywgbiwgZS5rZXksIGUubW9kZSkpLmVsZW1lbnRUeXBlID0gZS5lbGVtZW50VHlwZSwgdC50eXBlID0gZS50eXBlLCB0LnN0YXRlTm9kZSA9IGUuc3RhdGVOb2RlLCB0LmFsdGVybmF0ZSA9IGUsIGUuYWx0ZXJuYXRlID0gdCkgOiAodC5wZW5kaW5nUHJvcHMgPSBuLCB0LnR5cGUgPSBlLnR5cGUsIHQuZmxhZ3MgPSAwLCB0LnN1YnRyZWVGbGFncyA9IDAsIHQuZGVsZXRpb25zID0gbnVsbCksIHQuZmxhZ3MgPSAxNDY4MDA2NCAmIGUuZmxhZ3MsIHQuY2hpbGRMYW5lcyA9IGUuY2hpbGRMYW5lcywgdC5sYW5lcyA9IGUubGFuZXMsIHQuY2hpbGQgPSBlLmNoaWxkLCB0Lm1lbW9pemVkUHJvcHMgPSBlLm1lbW9pemVkUHJvcHMsIHQubWVtb2l6ZWRTdGF0ZSA9IGUubWVtb2l6ZWRTdGF0ZSwgdC51cGRhdGVRdWV1ZSA9IGUudXBkYXRlUXVldWUsIG4gPSBlLmRlcGVuZGVuY2llcywgdC5kZXBlbmRlbmNpZXMgPSBudWxsID09PSBuID8gbnVsbCA6IHsKICAgICAgICAgICAgICAgIGxhbmVzOiBuLmxhbmVzLAogICAgICAgICAgICAgICAgZmlyc3RDb250ZXh0OiBuLmZpcnN0Q29udGV4dAogICAgICAgICAgICB9LCB0LnNpYmxpbmcgPSBlLnNpYmxpbmcsIHQuaW5kZXggPSBlLmluZGV4LCB0LnJlZiA9IGUucmVmLCB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBEbChlLCBuLCByLCBsLCBhLCB1KSB7CiAgICAgICAgICAgIHZhciBvID0gMjsKICAgICAgICAgICAgaWYgKGwgPSBlLCAiZnVuY3Rpb24iID09IHR5cGVvZiBlKSBGbChlKSAmJiAobyA9IDEpOwogICAgICAgICAgICBlbHNlIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgbyA9IDU7CiAgICAgICAgICAgIGVsc2UgZTogc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjYXNlIGhhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBPbChyLmNoaWxkcmVuLCBhLCB1LCBuKTsKICAgICAgICAgICAgICAgIGNhc2UgZ2E6CiAgICAgICAgICAgICAgICAgICAgbyA9IDgsIGEgfD0gODsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgdmE6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlID0gJHMoMTIsIHIsIG4sIDIgfCBhKSkuZWxlbWVudFR5cGUgPSB2YSwgZS5sYW5lcyA9IHUsIGU7CiAgICAgICAgICAgICAgICBjYXNlIHdhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSA9ICRzKDEzLCByLCBuLCBhKSkuZWxlbWVudFR5cGUgPSB3YSwgZS5sYW5lcyA9IHUsIGU7CiAgICAgICAgICAgICAgICBjYXNlIFNhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSA9ICRzKDE5LCByLCBuLCBhKSkuZWxlbWVudFR5cGUgPSBTYSwgZS5sYW5lcyA9IHUsIGU7CiAgICAgICAgICAgICAgICBjYXNlIENhOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBJbChyLCBhLCB1LCBuKTsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHN3aXRjaCAoZS4kJHR5cGVvZikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHlhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBiYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSA5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBrYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAxMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgeGE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDE2LCBsID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IodCgxMzAsIG51bGwgPT0gZSA/IGUgOiB0eXBlb2YgZSwgIiIpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAobiA9ICRzKG8sIHIsIG4sIGEpKS5lbGVtZW50VHlwZSA9IGUsIG4udHlwZSA9IGwsIG4ubGFuZXMgPSB1LCBuCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBPbChlLCBuLCB0LCByKSB7CiAgICAgICAgICAgIHJldHVybiAoZSA9ICRzKDcsIGUsIHIsIG4pKS5sYW5lcyA9IHQsIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIElsKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgcmV0dXJuIChlID0gJHMoMjIsIGUsIHIsIG4pKS5lbGVtZW50VHlwZSA9IENhLCBlLmxhbmVzID0gdCwgZS5zdGF0ZU5vZGUgPSB7CiAgICAgICAgICAgICAgICBpc0hpZGRlbjogITEKICAgICAgICAgICAgfSwgZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVWwoZSwgbiwgdCkgewogICAgICAgICAgICByZXR1cm4gKGUgPSAkcyg2LCBlLCBudWxsLCBuKSkubGFuZXMgPSB0LCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBWbChlLCBuLCB0KSB7CiAgICAgICAgICAgIHJldHVybiAobiA9ICRzKDQsIG51bGwgIT09IGUuY2hpbGRyZW4gPyBlLmNoaWxkcmVuIDogW10sIGUua2V5LCBuKSkubGFuZXMgPSB0LCBuLnN0YXRlTm9kZSA9IHsKICAgICAgICAgICAgICAgIGNvbnRhaW5lckluZm86IGUuY29udGFpbmVySW5mbywKICAgICAgICAgICAgICAgIHBlbmRpbmdDaGlsZHJlbjogbnVsbCwKICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uOiBlLmltcGxlbWVudGF0aW9uCiAgICAgICAgICAgIH0sIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEFsKGUsIG4sIHQsIHIsIGwpIHsKICAgICAgICAgICAgdGhpcy50YWcgPSBuLCB0aGlzLmNvbnRhaW5lckluZm8gPSBlLCB0aGlzLmZpbmlzaGVkV29yayA9IHRoaXMucGluZ0NhY2hlID0gdGhpcy5jdXJyZW50ID0gdGhpcy5wZW5kaW5nQ2hpbGRyZW4gPSBudWxsLCB0aGlzLnRpbWVvdXRIYW5kbGUgPSAtMSwgdGhpcy5jYWxsYmFja05vZGUgPSB0aGlzLnBlbmRpbmdDb250ZXh0ID0gdGhpcy5jb250ZXh0ID0gbnVsbCwgdGhpcy5jYWxsYmFja1ByaW9yaXR5ID0gMCwgdGhpcy5ldmVudFRpbWVzID0gSigwKSwgdGhpcy5leHBpcmF0aW9uVGltZXMgPSBKKC0xKSwgdGhpcy5lbnRhbmdsZWRMYW5lcyA9IHRoaXMuZmluaXNoZWRMYW5lcyA9IHRoaXMubXV0YWJsZVJlYWRMYW5lcyA9IHRoaXMuZXhwaXJlZExhbmVzID0gdGhpcy5waW5nZWRMYW5lcyA9IHRoaXMuc3VzcGVuZGVkTGFuZXMgPSB0aGlzLnBlbmRpbmdMYW5lcyA9IDAsIHRoaXMuZW50YW5nbGVtZW50cyA9IEooMCksIHRoaXMuaWRlbnRpZmllclByZWZpeCA9IHIsIHRoaXMub25SZWNvdmVyYWJsZUVycm9yID0gbCwgdGhpcy5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhID0gbnVsbAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQmwoZSwgbiwgdCwgciwgbCwgYSwgdSwgbywgaSwgcykgewogICAgICAgICAgICByZXR1cm4gZSA9IG5ldyBBbChlLCBuLCB0LCBvLCBpKSwgMSA9PT0gbiA/IChuID0gMSwgITAgPT09IGEgJiYgKG4gfD0gOCkpIDogbiA9IDAsIGEgPSAkcygzLCBudWxsLCBudWxsLCBuKSwgZS5jdXJyZW50ID0gYSwgYS5zdGF0ZU5vZGUgPSBlLCBhLm1lbW9pemVkU3RhdGUgPSB7CiAgICAgICAgICAgICAgICBlbGVtZW50OiByLAogICAgICAgICAgICAgICAgaXNEZWh5ZHJhdGVkOiB0LAogICAgICAgICAgICAgICAgY2FjaGU6IG51bGwsCiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uczogbnVsbCwKICAgICAgICAgICAgICAgIHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6IG51bGwKICAgICAgICAgICAgfSwgWW4oYSksIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFdsKGUpIHsKICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gdGk7CiAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgIGlmIChIKGUgPSBlLl9yZWFjdEludGVybmFscykgIT09IGUgfHwgMSAhPT0gZS50YWcpIHRocm93IEVycm9yKHQoMTcwKSk7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGU7ZG8gewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobi50YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4uc3RhdGVOb2RlLmNvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod24obi50eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4gPSBuLnJldHVybgogICAgICAgICAgICAgICAgfSB3aGlsZSAobnVsbCAhPT0gbik7CiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0KDE3MSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKDEgPT09IGUudGFnKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IGUudHlwZTsKICAgICAgICAgICAgICAgIGlmICh3bihyKSkgcmV0dXJuIHhuKGUsIHIsIG4pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEhsKGUsIG4sIHQsIHIsIGwsIGEsIHUsIG8sIGksIHMpIHsKICAgICAgICAgICAgcmV0dXJuIChlID0gQmwodCwgciwgITAsIGUsIDAsIGEsIDAsIG8sIGkpKS5jb250ZXh0ID0gV2wobnVsbCksIHQgPSBlLmN1cnJlbnQsIChhID0gR24ociA9IHJsKCksIGwgPSBsbCh0KSkpLmNhbGxiYWNrID0gbnVsbCAhPSBuID8gbiA6IG51bGwsIFpuKHQsIGEsIGwpLCBlLmN1cnJlbnQubGFuZXMgPSBsLCBlZShlLCBsLCByKSwgdWwoZSwgciksIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFFsKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgdmFyIGwgPSBuLmN1cnJlbnQsCiAgICAgICAgICAgICAgICBhID0gcmwoKSwKICAgICAgICAgICAgICAgIHUgPSBsbChsKTsKICAgICAgICAgICAgcmV0dXJuIHQgPSBXbCh0KSwgbnVsbCA9PT0gbi5jb250ZXh0ID8gbi5jb250ZXh0ID0gdCA6IG4ucGVuZGluZ0NvbnRleHQgPSB0LCAobiA9IEduKGEsIHUpKS5wYXlsb2FkID0gewogICAgICAgICAgICAgICAgZWxlbWVudDogZQogICAgICAgICAgICB9LCBudWxsICE9PSAociA9IHZvaWQgMCA9PT0gciA/IG51bGwgOiByKSAmJiAobi5jYWxsYmFjayA9IHIpLCBudWxsICE9PSAoZSA9IFpuKGwsIG4sIHUpKSAmJiAoYWwoZSwgbCwgdSwgYSksIEpuKGUsIGwsIHUpKSwgdQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gamwoZSkgewogICAgICAgICAgICByZXR1cm4gKGUgPSBlLmN1cnJlbnQpLmNoaWxkID8gKGUuY2hpbGQudGFnLCBlLmNoaWxkLnN0YXRlTm9kZSkgOiBudWxsCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiAkbChlLCBuKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAoZSA9IGUubWVtb2l6ZWRTdGF0ZSkgJiYgbnVsbCAhPT0gZS5kZWh5ZHJhdGVkKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUucmV0cnlMYW5lOwogICAgICAgICAgICAgICAgZS5yZXRyeUxhbmUgPSAwICE9PSB0ICYmIHQgPCBuID8gdCA6IG4KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcWwoZSwgbikgewogICAgICAgICAgICAkbChlLCBuKSwgKGUgPSBlLmFsdGVybmF0ZSkgJiYgJGwoZSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEtsKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IChlID0gJChlKSkgPyBudWxsIDogZS5zdGF0ZU5vZGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFlsKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFhsKGUpIHsKICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxSb290ID0gZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gR2woZSkgewogICAgICAgICAgICB0aGlzLl9pbnRlcm5hbFJvb3QgPSBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBabChlKSB7CiAgICAgICAgICAgIHJldHVybiAhKCFlIHx8IDEgIT09IGUubm9kZVR5cGUgJiYgOSAhPT0gZS5ub2RlVHlwZSAmJiAxMSAhPT0gZS5ub2RlVHlwZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEpsKGUpIHsKICAgICAgICAgICAgcmV0dXJuICEoIWUgfHwgMSAhPT0gZS5ub2RlVHlwZSAmJiA5ICE9PSBlLm5vZGVUeXBlICYmIDExICE9PSBlLm5vZGVUeXBlICYmICg4ICE9PSBlLm5vZGVUeXBlIHx8ICIgcmVhY3QtbW91bnQtcG9pbnQtdW5zdGFibGUgIiAhPT0gZS5ub2RlVmFsdWUpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZWEoKSB7fQoKICAgICAgICBmdW5jdGlvbiBuYShlLCBuLCB0LCByLCBsKSB7CiAgICAgICAgICAgIHZhciBhID0gdC5fcmVhY3RSb290Q29udGFpbmVyOwogICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAgdmFyIHUgPSBhOwogICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGw7CiAgICAgICAgICAgICAgICAgICAgbCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGpsKHUpOwogICAgICAgICAgICAgICAgICAgICAgICBvLmNhbGwoZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBRbChuLCB1LCBlLCBsKQogICAgICAgICAgICB9IGVsc2UgdSA9IGZ1bmN0aW9uKGUsIG4sIHQsIHIsIGwpIHsKICAgICAgICAgICAgICAgIGlmIChsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSByOwogICAgICAgICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGpsKHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5jYWxsKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBIbChuLCByLCBlLCAwLCBudWxsLCAhMSwgMCwgIiIsIGVhKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5fcmVhY3RSb290Q29udGFpbmVyID0gdSwgZVtYb10gPSB1LmN1cnJlbnQsIEdlKDggPT09IGUubm9kZVR5cGUgPyBlLnBhcmVudE5vZGUgOiBlKSwgcGwoKSwgdQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICg7IGwgPSBlLmxhc3RDaGlsZDspIGUucmVtb3ZlQ2hpbGQobCk7CiAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gcjsKICAgICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gamwoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uY2FsbChlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBpID0gQmwoZSwgMCwgITEsIG51bGwsIDAsICExLCAwLCAiIiwgZWEpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUuX3JlYWN0Um9vdENvbnRhaW5lciA9IGksIGVbWG9dID0gaS5jdXJyZW50LCBHZSg4ID09PSBlLm5vZGVUeXBlID8gZS5wYXJlbnROb2RlIDogZSksIHBsKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBRbChuLCBpLCB0LCByKQogICAgICAgICAgICAgICAgfSkpLCBpCiAgICAgICAgICAgIH0odCwgbiwgZSwgbCwgcik7CiAgICAgICAgICAgIHJldHVybiBqbCh1KQogICAgICAgIH0KICAgICAgICB2YXIgdGEgPSBuZXcgU2V0LAogICAgICAgICAgICByYSA9IHt9LAogICAgICAgICAgICBsYSA9ICEoInVuZGVmaW5lZCIgPT0gdHlwZW9mIHdpbmRvdyB8fCB2b2lkIDAgPT09IHdpbmRvdy5kb2N1bWVudCB8fCB2b2lkIDAgPT09IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSwKICAgICAgICAgICAgYWEgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LAogICAgICAgICAgICB1YSA9IC9eWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRdWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRcLS4wLTlcdTAwQjdcdTAzMDAtXHUwMzZGXHUyMDNGLVx1MjA0MF0qJC8sCiAgICAgICAgICAgIG9hID0ge30sCiAgICAgICAgICAgIGlhID0ge30sCiAgICAgICAgICAgIHNhID0ge307CiAgICAgICAgImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZSIuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHNhW2VdID0gbmV3IGEoZSwgMCwgITEsIGUsIG51bGwsICExLCAhMSkKICAgICAgICB9KSksIFsKICAgICAgICAgICAgWyJhY2NlcHRDaGFyc2V0IiwgImFjY2VwdC1jaGFyc2V0Il0sCiAgICAgICAgICAgIFsiY2xhc3NOYW1lIiwgImNsYXNzIl0sCiAgICAgICAgICAgIFsiaHRtbEZvciIsICJmb3IiXSwKICAgICAgICAgICAgWyJodHRwRXF1aXYiLCAiaHR0cC1lcXVpdiJdCiAgICAgICAgXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBuID0gZVswXTsKICAgICAgICAgICAgc2Fbbl0gPSBuZXcgYShuLCAxLCAhMSwgZVsxXSwgbnVsbCwgITEsICExKQogICAgICAgIH0pKSwgWyJjb250ZW50RWRpdGFibGUiLCAiZHJhZ2dhYmxlIiwgInNwZWxsQ2hlY2siLCAidmFsdWUiXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHNhW2VdID0gbmV3IGEoZSwgMiwgITEsIGUudG9Mb3dlckNhc2UoKSwgbnVsbCwgITEsICExKQogICAgICAgIH0pKSwgWyJhdXRvUmV2ZXJzZSIsICJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwgImZvY3VzYWJsZSIsICJwcmVzZXJ2ZUFscGhhIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBzYVtlXSA9IG5ldyBhKGUsIDIsICExLCBlLCBudWxsLCAhMSwgITEpCiAgICAgICAgfSkpLCAiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGRpc2FibGVSZW1vdGVQbGF5YmFjayBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZSIuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHNhW2VdID0gbmV3IGEoZSwgMywgITEsIGUudG9Mb3dlckNhc2UoKSwgbnVsbCwgITEsICExKQogICAgICAgIH0pKSwgWyJjaGVja2VkIiwgIm11bHRpcGxlIiwgIm11dGVkIiwgInNlbGVjdGVkIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBzYVtlXSA9IG5ldyBhKGUsIDMsICEwLCBlLCBudWxsLCAhMSwgITEpCiAgICAgICAgfSkpLCBbImNhcHR1cmUiLCAiZG93bmxvYWQiXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHNhW2VdID0gbmV3IGEoZSwgNCwgITEsIGUsIG51bGwsICExLCAhMSkKICAgICAgICB9KSksIFsiY29scyIsICJyb3dzIiwgInNpemUiLCAic3BhbiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgc2FbZV0gPSBuZXcgYShlLCA2LCAhMSwgZSwgbnVsbCwgITEsICExKQogICAgICAgIH0pKSwgWyJyb3dTcGFuIiwgInN0YXJ0Il0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBzYVtlXSA9IG5ldyBhKGUsIDUsICExLCBlLnRvTG93ZXJDYXNlKCksIG51bGwsICExLCAhMSkKICAgICAgICB9KSk7CiAgICAgICAgdmFyIGNhID0gL1tcLTpdKFthLXpdKS9nLAogICAgICAgICAgICBmYSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlWzFdLnRvVXBwZXJDYXNlKCkKICAgICAgICAgICAgfTsKICAgICAgICAiYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgbiA9IGUucmVwbGFjZShjYSwgZmEpOwogICAgICAgICAgICBzYVtuXSA9IG5ldyBhKG4sIDEsICExLCBlLCBudWxsLCAhMSwgITEpCiAgICAgICAgfSkpLCAieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlIi5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLnJlcGxhY2UoY2EsIGZhKTsKICAgICAgICAgICAgc2Fbbl0gPSBuZXcgYShuLCAxLCAhMSwgZSwgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCAhMSwgITEpCiAgICAgICAgfSkpLCBbInhtbDpiYXNlIiwgInhtbDpsYW5nIiwgInhtbDpzcGFjZSJdLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLnJlcGxhY2UoY2EsIGZhKTsKICAgICAgICAgICAgc2Fbbl0gPSBuZXcgYShuLCAxLCAhMSwgZSwgImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICExLCAhMSkKICAgICAgICB9KSksIFsidGFiSW5kZXgiLCAiY3Jvc3NPcmlnaW4iXS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHNhW2VdID0gbmV3IGEoZSwgMSwgITEsIGUudG9Mb3dlckNhc2UoKSwgbnVsbCwgITEsICExKQogICAgICAgIH0pKSwgc2EueGxpbmtIcmVmID0gbmV3IGEoInhsaW5rSHJlZiIsIDEsICExLCAieGxpbms6aHJlZiIsICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwgITAsICExKSwgWyJzcmMiLCAiaHJlZiIsICJhY3Rpb24iLCAiZm9ybUFjdGlvbiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgc2FbZV0gPSBuZXcgYShlLCAxLCAhMSwgZS50b0xvd2VyQ2FzZSgpLCBudWxsLCAhMCwgITApCiAgICAgICAgfSkpOwogICAgICAgIHZhciBkYSA9IG4uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsCiAgICAgICAgICAgIHBhID0gU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpLAogICAgICAgICAgICBtYSA9IFN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpLAogICAgICAgICAgICBoYSA9IFN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IiksCiAgICAgICAgICAgIGdhID0gU3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSwKICAgICAgICAgICAgdmEgPSBTeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpLAogICAgICAgICAgICB5YSA9IFN5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIiksCiAgICAgICAgICAgIGJhID0gU3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLAogICAgICAgICAgICBrYSA9IFN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIiksCiAgICAgICAgICAgIHdhID0gU3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKSwKICAgICAgICAgICAgU2EgPSBTeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZV9saXN0IiksCiAgICAgICAgICAgIHhhID0gU3ltYm9sLmZvcigicmVhY3QubWVtbyIpLAogICAgICAgICAgICBFYSA9IFN5bWJvbC5mb3IoInJlYWN0LmxhenkiKTsKICAgICAgICBTeW1ib2wuZm9yKCJyZWFjdC5zY29wZSIpLCBTeW1ib2wuZm9yKCJyZWFjdC5kZWJ1Z190cmFjZV9tb2RlIik7CiAgICAgICAgdmFyIENhID0gU3ltYm9sLmZvcigicmVhY3Qub2Zmc2NyZWVuIik7CiAgICAgICAgU3ltYm9sLmZvcigicmVhY3QubGVnYWN5X2hpZGRlbiIpLCBTeW1ib2wuZm9yKCJyZWFjdC5jYWNoZSIpLCBTeW1ib2wuZm9yKCJyZWFjdC50cmFjaW5nX21hcmtlciIpOwogICAgICAgIHZhciB6YSwgTmEsIFBhLCBfYSA9IFN5bWJvbC5pdGVyYXRvciwKICAgICAgICAgICAgTGEgPSBPYmplY3QuYXNzaWduLAogICAgICAgICAgICBUYSA9ICExLAogICAgICAgICAgICBNYSA9IEFycmF5LmlzQXJyYXksCiAgICAgICAgICAgIEZhID0gKFBhID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgaWYgKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgIT09IGUubmFtZXNwYWNlVVJJIHx8ICJpbm5lckhUTUwiIGluIGUpIGUuaW5uZXJIVE1MID0gbjsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGZvciAoKE5hID0gTmEgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTCA9ICI8c3ZnPiIgKyBuLnZhbHVlT2YoKS50b1N0cmluZygpICsgIjwvc3ZnPiIsIG4gPSBOYS5maXJzdENoaWxkOyBlLmZpcnN0Q2hpbGQ7KSBlLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IG4uZmlyc3RDaGlsZDspIGUuYXBwZW5kQ2hpbGQobi5maXJzdENoaWxkKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCAidW5kZWZpbmVkIiAhPSB0eXBlb2YgTVNBcHAgJiYgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24gPyBmdW5jdGlvbihlLCBuLCB0LCByKSB7CiAgICAgICAgICAgICAgICBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhKGUsIG4pCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSA6IFBhKSwKICAgICAgICAgICAgUmEgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5maXJzdENoaWxkOwogICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIHQgPT09IGUubGFzdENoaWxkICYmIDMgPT09IHQubm9kZVR5cGUpIHJldHVybiB2b2lkKHQubm9kZVZhbHVlID0gbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUudGV4dENvbnRlbnQgPSBuCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIERhID0gewogICAgICAgICAgICAgICAgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ICEwLAogICAgICAgICAgICAgICAgYXNwZWN0UmF0aW86ICEwLAogICAgICAgICAgICAgICAgYm9yZGVySW1hZ2VPdXRzZXQ6ICEwLAogICAgICAgICAgICAgICAgYm9yZGVySW1hZ2VTbGljZTogITAsCiAgICAgICAgICAgICAgICBib3JkZXJJbWFnZVdpZHRoOiAhMCwKICAgICAgICAgICAgICAgIGJveEZsZXg6ICEwLAogICAgICAgICAgICAgICAgYm94RmxleEdyb3VwOiAhMCwKICAgICAgICAgICAgICAgIGJveE9yZGluYWxHcm91cDogITAsCiAgICAgICAgICAgICAgICBjb2x1bW5Db3VudDogITAsCiAgICAgICAgICAgICAgICBjb2x1bW5zOiAhMCwKICAgICAgICAgICAgICAgIGZsZXg6ICEwLAogICAgICAgICAgICAgICAgZmxleEdyb3c6ICEwLAogICAgICAgICAgICAgICAgZmxleFBvc2l0aXZlOiAhMCwKICAgICAgICAgICAgICAgIGZsZXhTaHJpbms6ICEwLAogICAgICAgICAgICAgICAgZmxleE5lZ2F0aXZlOiAhMCwKICAgICAgICAgICAgICAgIGZsZXhPcmRlcjogITAsCiAgICAgICAgICAgICAgICBncmlkQXJlYTogITAsCiAgICAgICAgICAgICAgICBncmlkUm93OiAhMCwKICAgICAgICAgICAgICAgIGdyaWRSb3dFbmQ6ICEwLAogICAgICAgICAgICAgICAgZ3JpZFJvd1NwYW46ICEwLAogICAgICAgICAgICAgICAgZ3JpZFJvd1N0YXJ0OiAhMCwKICAgICAgICAgICAgICAgIGdyaWRDb2x1bW46ICEwLAogICAgICAgICAgICAgICAgZ3JpZENvbHVtbkVuZDogITAsCiAgICAgICAgICAgICAgICBncmlkQ29sdW1uU3BhbjogITAsCiAgICAgICAgICAgICAgICBncmlkQ29sdW1uU3RhcnQ6ICEwLAogICAgICAgICAgICAgICAgZm9udFdlaWdodDogITAsCiAgICAgICAgICAgICAgICBsaW5lQ2xhbXA6ICEwLAogICAgICAgICAgICAgICAgbGluZUhlaWdodDogITAsCiAgICAgICAgICAgICAgICBvcGFjaXR5OiAhMCwKICAgICAgICAgICAgICAgIG9yZGVyOiAhMCwKICAgICAgICAgICAgICAgIG9ycGhhbnM6ICEwLAogICAgICAgICAgICAgICAgdGFiU2l6ZTogITAsCiAgICAgICAgICAgICAgICB3aWRvd3M6ICEwLAogICAgICAgICAgICAgICAgekluZGV4OiAhMCwKICAgICAgICAgICAgICAgIHpvb206ICEwLAogICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6ICEwLAogICAgICAgICAgICAgICAgZmxvb2RPcGFjaXR5OiAhMCwKICAgICAgICAgICAgICAgIHN0b3BPcGFjaXR5OiAhMCwKICAgICAgICAgICAgICAgIHN0cm9rZURhc2hhcnJheTogITAsCiAgICAgICAgICAgICAgICBzdHJva2VEYXNob2Zmc2V0OiAhMCwKICAgICAgICAgICAgICAgIHN0cm9rZU1pdGVybGltaXQ6ICEwLAogICAgICAgICAgICAgICAgc3Ryb2tlT3BhY2l0eTogITAsCiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogITAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgT2EgPSBbIldlYmtpdCIsICJtcyIsICJNb3oiLCAiTyJdOwogICAgICAgIE9iamVjdC5rZXlzKERhKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIE9hLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgIG4gPSBuICsgZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGUuc3Vic3RyaW5nKDEpLCBEYVtuXSA9IERhW2VdCiAgICAgICAgICAgIH0pKQogICAgICAgIH0pKTsKICAgICAgICB2YXIgSWEgPSBMYSh7CiAgICAgICAgICAgICAgICBtZW51aXRlbTogITAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgYXJlYTogITAsCiAgICAgICAgICAgICAgICBiYXNlOiAhMCwKICAgICAgICAgICAgICAgIGJyOiAhMCwKICAgICAgICAgICAgICAgIGNvbDogITAsCiAgICAgICAgICAgICAgICBlbWJlZDogITAsCiAgICAgICAgICAgICAgICBocjogITAsCiAgICAgICAgICAgICAgICBpbWc6ICEwLAogICAgICAgICAgICAgICAgaW5wdXQ6ICEwLAogICAgICAgICAgICAgICAga2V5Z2VuOiAhMCwKICAgICAgICAgICAgICAgIGxpbms6ICEwLAogICAgICAgICAgICAgICAgbWV0YTogITAsCiAgICAgICAgICAgICAgICBwYXJhbTogITAsCiAgICAgICAgICAgICAgICBzb3VyY2U6ICEwLAogICAgICAgICAgICAgICAgdHJhY2s6ICEwLAogICAgICAgICAgICAgICAgd2JyOiAhMAogICAgICAgICAgICB9KSwKICAgICAgICAgICAgVWEgPSBudWxsLAogICAgICAgICAgICBWYSA9IG51bGwsCiAgICAgICAgICAgIEFhID0gbnVsbCwKICAgICAgICAgICAgQmEgPSBudWxsLAogICAgICAgICAgICBXYSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBlKG4pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEhhID0gZnVuY3Rpb24oKSB7fSwKICAgICAgICAgICAgUWEgPSAhMSwKICAgICAgICAgICAgamEgPSAhMTsKICAgICAgICBpZiAobGEpIHRyeSB7CiAgICAgICAgICAgIHZhciAkYSA9IHt9OwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoJGEsICJwYXNzaXZlIiwgewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBqYSA9ICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsICRhLCAkYSksIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IiwgJGEsICRhKQogICAgICAgIH0gY2F0Y2ggKFBhKSB7CiAgICAgICAgICAgIGphID0gITEKICAgICAgICB9CiAgICAgICAgdmFyIHFhLCBLYSwgWWEsIFhhID0gZnVuY3Rpb24oZSwgbiwgdCwgciwgbCwgYSwgdSwgbywgaSkgewogICAgICAgICAgICAgICAgdmFyIHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDMpOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBuLmFwcGx5KHQsIHMpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkVycm9yKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEdhID0gITEsCiAgICAgICAgICAgIFphID0gbnVsbCwKICAgICAgICAgICAgSmEgPSAhMSwKICAgICAgICAgICAgZXUgPSBudWxsLAogICAgICAgICAgICBudSA9IHsKICAgICAgICAgICAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBHYSA9ICEwLCBaYSA9IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdHUgPSBuLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlNjaGVkdWxlciwKICAgICAgICAgICAgcnUgPSB0dS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLAogICAgICAgICAgICBsdSA9IHR1LnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LAogICAgICAgICAgICBhdSA9IHJ1LAogICAgICAgICAgICB1dSA9IHR1LnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLAogICAgICAgICAgICBvdSA9IHR1LnVuc3RhYmxlX3Nob3VsZFlpZWxkLAogICAgICAgICAgICBpdSA9IHR1LnVuc3RhYmxlX3JlcXVlc3RQYWludCwKICAgICAgICAgICAgc3UgPSB0dS51bnN0YWJsZV9ub3csCiAgICAgICAgICAgIGN1ID0gdHUudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsCiAgICAgICAgICAgIGZ1ID0gdHUudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksCiAgICAgICAgICAgIGR1ID0gdHUudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksCiAgICAgICAgICAgIHB1ID0gbHUsCiAgICAgICAgICAgIG11ID0gdHUudW5zdGFibGVfTG93UHJpb3JpdHksCiAgICAgICAgICAgIGh1ID0gdHUudW5zdGFibGVfSWRsZVByaW9yaXR5LAogICAgICAgICAgICBndSA9IG51bGwsCiAgICAgICAgICAgIHZ1ID0gbnVsbCwKICAgICAgICAgICAgeXUgPSBNYXRoLmNsejMyID8gTWF0aC5jbHozMiA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAwID09IChlID4+Pj0gMCkgPyAzMiA6IDMxIC0gKGJ1KGUpIC8ga3UgfCAwKSB8IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYnUgPSBNYXRoLmxvZywKICAgICAgICAgICAga3UgPSBNYXRoLkxOMiwKICAgICAgICAgICAgd3UgPSA2NCwKICAgICAgICAgICAgU3UgPSA0MTk0MzA0LAogICAgICAgICAgICB4dSA9IDAsCiAgICAgICAgICAgIEV1ID0gITEsCiAgICAgICAgICAgIEN1ID0gW10sCiAgICAgICAgICAgIHp1ID0gbnVsbCwKICAgICAgICAgICAgTnUgPSBudWxsLAogICAgICAgICAgICBQdSA9IG51bGwsCiAgICAgICAgICAgIF91ID0gbmV3IE1hcCwKICAgICAgICAgICAgTHUgPSBuZXcgTWFwLAogICAgICAgICAgICBUdSA9IFtdLAogICAgICAgICAgICBNdSA9ICJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXQgc3VibWl0Ii5zcGxpdCgiICIpLAogICAgICAgICAgICBGdSA9IGRhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLAogICAgICAgICAgICBSdSA9ICEwLAogICAgICAgICAgICBEdSA9IG51bGwsCiAgICAgICAgICAgIE91ID0gbnVsbCwKICAgICAgICAgICAgSXUgPSBudWxsLAogICAgICAgICAgICBVdSA9IG51bGwsCiAgICAgICAgICAgIFZ1ID0gewogICAgICAgICAgICAgICAgZXZlbnRQaGFzZTogMCwKICAgICAgICAgICAgICAgIGJ1YmJsZXM6IDAsCiAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiAwLAogICAgICAgICAgICAgICAgdGltZVN0YW1wOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudGltZVN0YW1wIHx8IERhdGUubm93KCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkZWZhdWx0UHJldmVudGVkOiAwLAogICAgICAgICAgICAgICAgaXNUcnVzdGVkOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEF1ID0ga2UoVnUpLAogICAgICAgICAgICBCdSA9IExhKHt9LCBWdSwgewogICAgICAgICAgICAgICAgdmlldzogMCwKICAgICAgICAgICAgICAgIGRldGFpbDogMAogICAgICAgICAgICB9KSwKICAgICAgICAgICAgV3UgPSBrZShCdSksCiAgICAgICAgICAgIEh1ID0gTGEoe30sIEJ1LCB7CiAgICAgICAgICAgICAgICBzY3JlZW5YOiAwLAogICAgICAgICAgICAgICAgc2NyZWVuWTogMCwKICAgICAgICAgICAgICAgIGNsaWVudFg6IDAsCiAgICAgICAgICAgICAgICBjbGllbnRZOiAwLAogICAgICAgICAgICAgICAgcGFnZVg6IDAsCiAgICAgICAgICAgICAgICBwYWdlWTogMCwKICAgICAgICAgICAgICAgIGN0cmxLZXk6IDAsCiAgICAgICAgICAgICAgICBzaGlmdEtleTogMCwKICAgICAgICAgICAgICAgIGFsdEtleTogMCwKICAgICAgICAgICAgICAgIG1ldGFLZXk6IDAsCiAgICAgICAgICAgICAgICBnZXRNb2RpZmllclN0YXRlOiBTZSwKICAgICAgICAgICAgICAgIGJ1dHRvbjogMCwKICAgICAgICAgICAgICAgIGJ1dHRvbnM6IDAsCiAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZS5yZWxhdGVkVGFyZ2V0ID8gZS5mcm9tRWxlbWVudCA9PT0gZS5zcmNFbGVtZW50ID8gZS50b0VsZW1lbnQgOiBlLmZyb21FbGVtZW50IDogZS5yZWxhdGVkVGFyZ2V0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbW92ZW1lbnRYOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtb3ZlbWVudFgiIGluIGUgPyBlLm1vdmVtZW50WCA6IChlICE9PSBZYSAmJiAoWWEgJiYgIm1vdXNlbW92ZSIgPT09IGUudHlwZSA/IChxYSA9IGUuc2NyZWVuWCAtIFlhLnNjcmVlblgsIEthID0gZS5zY3JlZW5ZIC0gWWEuc2NyZWVuWSkgOiBLYSA9IHFhID0gMCwgWWEgPSBlKSwgcWEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbW92ZW1lbnRZOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtb3ZlbWVudFkiIGluIGUgPyBlLm1vdmVtZW50WSA6IEthCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBRdSA9IGtlKEh1KSwKICAgICAgICAgICAganUgPSBrZShMYSh7fSwgSHUsIHsKICAgICAgICAgICAgICAgIGRhdGFUcmFuc2ZlcjogMAogICAgICAgICAgICB9KSksCiAgICAgICAgICAgICR1ID0ga2UoTGEoe30sIEJ1LCB7CiAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiAwCiAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgcXUgPSBrZShMYSh7fSwgVnUsIHsKICAgICAgICAgICAgICAgIGFuaW1hdGlvbk5hbWU6IDAsCiAgICAgICAgICAgICAgICBlbGFwc2VkVGltZTogMCwKICAgICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnQ6IDAKICAgICAgICAgICAgfSkpLAogICAgICAgICAgICBLdSA9IExhKHt9LCBWdSwgewogICAgICAgICAgICAgICAgY2xpcGJvYXJkRGF0YTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiY2xpcGJvYXJkRGF0YSIgaW4gZSA/IGUuY2xpcGJvYXJkRGF0YSA6IHdpbmRvdy5jbGlwYm9hcmREYXRhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBZdSA9IGtlKEt1KSwKICAgICAgICAgICAgWHUgPSBrZShMYSh7fSwgVnUsIHsKICAgICAgICAgICAgICAgIGRhdGE6IDAKICAgICAgICAgICAgfSkpLAogICAgICAgICAgICBHdSA9IFh1LAogICAgICAgICAgICBadSA9IHsKICAgICAgICAgICAgICAgIEVzYzogIkVzY2FwZSIsCiAgICAgICAgICAgICAgICBTcGFjZWJhcjogIiAiLAogICAgICAgICAgICAgICAgTGVmdDogIkFycm93TGVmdCIsCiAgICAgICAgICAgICAgICBVcDogIkFycm93VXAiLAogICAgICAgICAgICAgICAgUmlnaHQ6ICJBcnJvd1JpZ2h0IiwKICAgICAgICAgICAgICAgIERvd246ICJBcnJvd0Rvd24iLAogICAgICAgICAgICAgICAgRGVsOiAiRGVsZXRlIiwKICAgICAgICAgICAgICAgIFdpbjogIk9TIiwKICAgICAgICAgICAgICAgIE1lbnU6ICJDb250ZXh0TWVudSIsCiAgICAgICAgICAgICAgICBBcHBzOiAiQ29udGV4dE1lbnUiLAogICAgICAgICAgICAgICAgU2Nyb2xsOiAiU2Nyb2xsTG9jayIsCiAgICAgICAgICAgICAgICBNb3pQcmludGFibGVLZXk6ICJVbmlkZW50aWZpZWQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEp1ID0gewogICAgICAgICAgICAgICAgODogIkJhY2tzcGFjZSIsCiAgICAgICAgICAgICAgICA5OiAiVGFiIiwKICAgICAgICAgICAgICAgIDEyOiAiQ2xlYXIiLAogICAgICAgICAgICAgICAgMTM6ICJFbnRlciIsCiAgICAgICAgICAgICAgICAxNjogIlNoaWZ0IiwKICAgICAgICAgICAgICAgIDE3OiAiQ29udHJvbCIsCiAgICAgICAgICAgICAgICAxODogIkFsdCIsCiAgICAgICAgICAgICAgICAxOTogIlBhdXNlIiwKICAgICAgICAgICAgICAgIDIwOiAiQ2Fwc0xvY2siLAogICAgICAgICAgICAgICAgMjc6ICJFc2NhcGUiLAogICAgICAgICAgICAgICAgMzI6ICIgIiwKICAgICAgICAgICAgICAgIDMzOiAiUGFnZVVwIiwKICAgICAgICAgICAgICAgIDM0OiAiUGFnZURvd24iLAogICAgICAgICAgICAgICAgMzU6ICJFbmQiLAogICAgICAgICAgICAgICAgMzY6ICJIb21lIiwKICAgICAgICAgICAgICAgIDM3OiAiQXJyb3dMZWZ0IiwKICAgICAgICAgICAgICAgIDM4OiAiQXJyb3dVcCIsCiAgICAgICAgICAgICAgICAzOTogIkFycm93UmlnaHQiLAogICAgICAgICAgICAgICAgNDA6ICJBcnJvd0Rvd24iLAogICAgICAgICAgICAgICAgNDU6ICJJbnNlcnQiLAogICAgICAgICAgICAgICAgNDY6ICJEZWxldGUiLAogICAgICAgICAgICAgICAgMTEyOiAiRjEiLAogICAgICAgICAgICAgICAgMTEzOiAiRjIiLAogICAgICAgICAgICAgICAgMTE0OiAiRjMiLAogICAgICAgICAgICAgICAgMTE1OiAiRjQiLAogICAgICAgICAgICAgICAgMTE2OiAiRjUiLAogICAgICAgICAgICAgICAgMTE3OiAiRjYiLAogICAgICAgICAgICAgICAgMTE4OiAiRjciLAogICAgICAgICAgICAgICAgMTE5OiAiRjgiLAogICAgICAgICAgICAgICAgMTIwOiAiRjkiLAogICAgICAgICAgICAgICAgMTIxOiAiRjEwIiwKICAgICAgICAgICAgICAgIDEyMjogIkYxMSIsCiAgICAgICAgICAgICAgICAxMjM6ICJGMTIiLAogICAgICAgICAgICAgICAgMTQ0OiAiTnVtTG9jayIsCiAgICAgICAgICAgICAgICAxNDU6ICJTY3JvbGxMb2NrIiwKICAgICAgICAgICAgICAgIDIyNDogIk1ldGEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVvID0gewogICAgICAgICAgICAgICAgQWx0OiAiYWx0S2V5IiwKICAgICAgICAgICAgICAgIENvbnRyb2w6ICJjdHJsS2V5IiwKICAgICAgICAgICAgICAgIE1ldGE6ICJtZXRhS2V5IiwKICAgICAgICAgICAgICAgIFNoaWZ0OiAic2hpZnRLZXkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG5vID0gTGEoe30sIEJ1LCB7CiAgICAgICAgICAgICAgICBrZXk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBadVtlLmtleV0gfHwgZS5rZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiVW5pZGVudGlmaWVkIiAhPT0gbikgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJrZXlwcmVzcyIgPT09IGUudHlwZSA/IDEzID09PSAoZSA9IHZlKGUpKSA/ICJFbnRlciIgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpIDogImtleWRvd24iID09PSBlLnR5cGUgfHwgImtleXVwIiA9PT0gZS50eXBlID8gSnVbZS5rZXlDb2RlXSB8fCAiVW5pZGVudGlmaWVkIiA6ICIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY29kZTogMCwKICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAwLAogICAgICAgICAgICAgICAgY3RybEtleTogMCwKICAgICAgICAgICAgICAgIHNoaWZ0S2V5OiAwLAogICAgICAgICAgICAgICAgYWx0S2V5OiAwLAogICAgICAgICAgICAgICAgbWV0YUtleTogMCwKICAgICAgICAgICAgICAgIHJlcGVhdDogMCwKICAgICAgICAgICAgICAgIGxvY2FsZTogMCwKICAgICAgICAgICAgICAgIGdldE1vZGlmaWVyU3RhdGU6IFNlLAogICAgICAgICAgICAgICAgY2hhckNvZGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImtleXByZXNzIiA9PT0gZS50eXBlID8gdmUoZSkgOiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAga2V5Q29kZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAia2V5ZG93biIgPT09IGUudHlwZSB8fCAia2V5dXAiID09PSBlLnR5cGUgPyBlLmtleUNvZGUgOiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgd2hpY2g6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImtleXByZXNzIiA9PT0gZS50eXBlID8gdmUoZSkgOiAia2V5ZG93biIgPT09IGUudHlwZSB8fCAia2V5dXAiID09PSBlLnR5cGUgPyBlLmtleUNvZGUgOiAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICB0byA9IGtlKG5vKSwKICAgICAgICAgICAgcm8gPSBrZShMYSh7fSwgSHUsIHsKICAgICAgICAgICAgICAgIHBvaW50ZXJJZDogMCwKICAgICAgICAgICAgICAgIHdpZHRoOiAwLAogICAgICAgICAgICAgICAgaGVpZ2h0OiAwLAogICAgICAgICAgICAgICAgcHJlc3N1cmU6IDAsCiAgICAgICAgICAgICAgICB0YW5nZW50aWFsUHJlc3N1cmU6IDAsCiAgICAgICAgICAgICAgICB0aWx0WDogMCwKICAgICAgICAgICAgICAgIHRpbHRZOiAwLAogICAgICAgICAgICAgICAgdHdpc3Q6IDAsCiAgICAgICAgICAgICAgICBwb2ludGVyVHlwZTogMCwKICAgICAgICAgICAgICAgIGlzUHJpbWFyeTogMAogICAgICAgICAgICB9KSksCiAgICAgICAgICAgIGxvID0ga2UoTGEoe30sIEJ1LCB7CiAgICAgICAgICAgICAgICB0b3VjaGVzOiAwLAogICAgICAgICAgICAgICAgdGFyZ2V0VG91Y2hlczogMCwKICAgICAgICAgICAgICAgIGNoYW5nZWRUb3VjaGVzOiAwLAogICAgICAgICAgICAgICAgYWx0S2V5OiAwLAogICAgICAgICAgICAgICAgbWV0YUtleTogMCwKICAgICAgICAgICAgICAgIGN0cmxLZXk6IDAsCiAgICAgICAgICAgICAgICBzaGlmdEtleTogMCwKICAgICAgICAgICAgICAgIGdldE1vZGlmaWVyU3RhdGU6IFNlCiAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgYW8gPSBrZShMYSh7fSwgVnUsIHsKICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZTogMCwKICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lOiAwLAogICAgICAgICAgICAgICAgcHNldWRvRWxlbWVudDogMAogICAgICAgICAgICB9KSksCiAgICAgICAgICAgIHVvID0gTGEoe30sIEh1LCB7CiAgICAgICAgICAgICAgICBkZWx0YVg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImRlbHRhWCIgaW4gZSA/IGUuZGVsdGFYIDogIndoZWVsRGVsdGFYIiBpbiBlID8gLWUud2hlZWxEZWx0YVggOiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVsdGFZOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJkZWx0YVkiIGluIGUgPyBlLmRlbHRhWSA6ICJ3aGVlbERlbHRhWSIgaW4gZSA/IC1lLndoZWVsRGVsdGFZIDogIndoZWVsRGVsdGEiIGluIGUgPyAtZS53aGVlbERlbHRhIDogMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlbHRhWjogMCwKICAgICAgICAgICAgICAgIGRlbHRhTW9kZTogMAogICAgICAgICAgICB9KSwKICAgICAgICAgICAgb28gPSBrZSh1byksCiAgICAgICAgICAgIGlvID0gWzksIDEzLCAyNywgMzJdLAogICAgICAgICAgICBzbyA9IGxhICYmICJDb21wb3NpdGlvbkV2ZW50IiBpbiB3aW5kb3csCiAgICAgICAgICAgIGNvID0gbnVsbDsKICAgICAgICBsYSAmJiAiZG9jdW1lbnRNb2RlIiBpbiBkb2N1bWVudCAmJiAoY28gPSBkb2N1bWVudC5kb2N1bWVudE1vZGUpOwogICAgICAgIHZhciBmbyA9IGxhICYmICJUZXh0RXZlbnQiIGluIHdpbmRvdyAmJiAhY28sCiAgICAgICAgICAgIHBvID0gbGEgJiYgKCFzbyB8fCBjbyAmJiA4IDwgY28gJiYgMTEgPj0gY28pLAogICAgICAgICAgICBtbyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLAogICAgICAgICAgICBobyA9ICExLAogICAgICAgICAgICBnbyA9ICExLAogICAgICAgICAgICB2byA9IHsKICAgICAgICAgICAgICAgIGNvbG9yOiAhMCwKICAgICAgICAgICAgICAgIGRhdGU6ICEwLAogICAgICAgICAgICAgICAgZGF0ZXRpbWU6ICEwLAogICAgICAgICAgICAgICAgImRhdGV0aW1lLWxvY2FsIjogITAsCiAgICAgICAgICAgICAgICBlbWFpbDogITAsCiAgICAgICAgICAgICAgICBtb250aDogITAsCiAgICAgICAgICAgICAgICBudW1iZXI6ICEwLAogICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICEwLAogICAgICAgICAgICAgICAgcmFuZ2U6ICEwLAogICAgICAgICAgICAgICAgc2VhcmNoOiAhMCwKICAgICAgICAgICAgICAgIHRlbDogITAsCiAgICAgICAgICAgICAgICB0ZXh0OiAhMCwKICAgICAgICAgICAgICAgIHRpbWU6ICEwLAogICAgICAgICAgICAgICAgdXJsOiAhMCwKICAgICAgICAgICAgICAgIHdlZWs6ICEwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHlvID0gbnVsbCwKICAgICAgICAgICAgYm8gPSBudWxsLAogICAgICAgICAgICBrbyA9ICExOwogICAgICAgIGxhICYmIChrbyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKCFsYSkgcmV0dXJuICExOwogICAgICAgICAgICB2YXIgbiA9IChlID0gIm9uIiArIGUpIGluIGRvY3VtZW50OwogICAgICAgICAgICByZXR1cm4gbiB8fCAoKG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc2V0QXR0cmlidXRlKGUsICJyZXR1cm47IiksIG4gPSAiZnVuY3Rpb24iID09IHR5cGVvZiBuW2VdKSwgbgogICAgICAgIH0oImlucHV0IikgJiYgKCFkb2N1bWVudC5kb2N1bWVudE1vZGUgfHwgOSA8IGRvY3VtZW50LmRvY3VtZW50TW9kZSkpOwogICAgICAgIHZhciB3byA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIE9iamVjdC5pcyA/IE9iamVjdC5pcyA6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBlID09PSBuICYmICgwICE9PSBlIHx8IDEgLyBlID09IDEgLyBuKSB8fCBlICE9IGUgJiYgbiAhPSBuCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNvID0gbGEgJiYgImRvY3VtZW50TW9kZSIgaW4gZG9jdW1lbnQgJiYgMTEgPj0gZG9jdW1lbnQuZG9jdW1lbnRNb2RlLAogICAgICAgICAgICB4byA9IG51bGwsCiAgICAgICAgICAgIEVvID0gbnVsbCwKICAgICAgICAgICAgQ28gPSBudWxsLAogICAgICAgICAgICB6byA9ICExLAogICAgICAgICAgICBObyA9IHsKICAgICAgICAgICAgICAgIGFuaW1hdGlvbmVuZDogUWUoIkFuaW1hdGlvbiIsICJBbmltYXRpb25FbmQiKSwKICAgICAgICAgICAgICAgIGFuaW1hdGlvbml0ZXJhdGlvbjogUWUoIkFuaW1hdGlvbiIsICJBbmltYXRpb25JdGVyYXRpb24iKSwKICAgICAgICAgICAgICAgIGFuaW1hdGlvbnN0YXJ0OiBRZSgiQW5pbWF0aW9uIiwgIkFuaW1hdGlvblN0YXJ0IiksCiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uZW5kOiBRZSgiVHJhbnNpdGlvbiIsICJUcmFuc2l0aW9uRW5kIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG8gPSB7fSwKICAgICAgICAgICAgX28gPSB7fTsKICAgICAgICBsYSAmJiAoX28gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwgIkFuaW1hdGlvbkV2ZW50IiBpbiB3aW5kb3cgfHwgKGRlbGV0ZSBOby5hbmltYXRpb25lbmQuYW5pbWF0aW9uLCBkZWxldGUgTm8uYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbiwgZGVsZXRlIE5vLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksICJUcmFuc2l0aW9uRXZlbnQiIGluIHdpbmRvdyB8fCBkZWxldGUgTm8udHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTsKICAgICAgICB2YXIgTG8gPSBqZSgiYW5pbWF0aW9uZW5kIiksCiAgICAgICAgICAgIFRvID0gamUoImFuaW1hdGlvbml0ZXJhdGlvbiIpLAogICAgICAgICAgICBNbyA9IGplKCJhbmltYXRpb25zdGFydCIpLAogICAgICAgICAgICBGbyA9IGplKCJ0cmFuc2l0aW9uZW5kIiksCiAgICAgICAgICAgIFJvID0gbmV3IE1hcCwKICAgICAgICAgICAgRG8gPSAiYWJvcnQgYXV4Q2xpY2sgY2FuY2VsIGNhblBsYXkgY2FuUGxheVRocm91Z2ggY2xpY2sgY2xvc2UgY29udGV4dE1lbnUgY29weSBjdXQgZHJhZyBkcmFnRW5kIGRyYWdFbnRlciBkcmFnRXhpdCBkcmFnTGVhdmUgZHJhZ092ZXIgZHJhZ1N0YXJ0IGRyb3AgZHVyYXRpb25DaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgZ290UG9pbnRlckNhcHR1cmUgaW5wdXQgaW52YWxpZCBrZXlEb3duIGtleVByZXNzIGtleVVwIGxvYWQgbG9hZGVkRGF0YSBsb2FkZWRNZXRhZGF0YSBsb2FkU3RhcnQgbG9zdFBvaW50ZXJDYXB0dXJlIG1vdXNlRG93biBtb3VzZU1vdmUgbW91c2VPdXQgbW91c2VPdmVyIG1vdXNlVXAgcGFzdGUgcGF1c2UgcGxheSBwbGF5aW5nIHBvaW50ZXJDYW5jZWwgcG9pbnRlckRvd24gcG9pbnRlck1vdmUgcG9pbnRlck91dCBwb2ludGVyT3ZlciBwb2ludGVyVXAgcHJvZ3Jlc3MgcmF0ZUNoYW5nZSByZXNldCByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1lVXBkYXRlIHRvdWNoQ2FuY2VsIHRvdWNoRW5kIHRvdWNoU3RhcnQgdm9sdW1lQ2hhbmdlIHNjcm9sbCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWwiLnNwbGl0KCIgIik7CiAgICAgICAgISBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IDA7IGUgPCBEby5sZW5ndGg7IGUrKykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBEb1tlXTsKICAgICAgICAgICAgICAgICRlKG4udG9Mb3dlckNhc2UoKSwgIm9uIiArIChuID0gblswXS50b1VwcGVyQ2FzZSgpICsgbi5zbGljZSgxKSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGUoTG8sICJvbkFuaW1hdGlvbkVuZCIpLCAkZShUbywgIm9uQW5pbWF0aW9uSXRlcmF0aW9uIiksICRlKE1vLCAib25BbmltYXRpb25TdGFydCIpLCAkZSgiZGJsY2xpY2siLCAib25Eb3VibGVDbGljayIpLCAkZSgiZm9jdXNpbiIsICJvbkZvY3VzIiksICRlKCJmb2N1c291dCIsICJvbkJsdXIiKSwgJGUoRm8sICJvblRyYW5zaXRpb25FbmQiKQogICAgICAgIH0oKSwgbCgib25Nb3VzZUVudGVyIiwgWyJtb3VzZW91dCIsICJtb3VzZW92ZXIiXSksIGwoIm9uTW91c2VMZWF2ZSIsIFsibW91c2VvdXQiLCAibW91c2VvdmVyIl0pLCBsKCJvblBvaW50ZXJFbnRlciIsIFsicG9pbnRlcm91dCIsICJwb2ludGVyb3ZlciJdKSwgbCgib25Qb2ludGVyTGVhdmUiLCBbInBvaW50ZXJvdXQiLCAicG9pbnRlcm92ZXIiXSksIHIoIm9uQ2hhbmdlIiwgImNoYW5nZSBjbGljayBmb2N1c2luIGZvY3Vzb3V0IGlucHV0IGtleWRvd24ga2V5dXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKSwgcigib25TZWxlY3QiLCAiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKSwgcigib25CZWZvcmVJbnB1dCIsIFsiY29tcG9zaXRpb25lbmQiLCAia2V5cHJlc3MiLCAidGV4dElucHV0IiwgInBhc3RlIl0pLCByKCJvbkNvbXBvc2l0aW9uRW5kIiwgImNvbXBvc2l0aW9uZW5kIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duIi5zcGxpdCgiICIpKSwgcigib25Db21wb3NpdGlvblN0YXJ0IiwgImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpLCByKCJvbkNvbXBvc2l0aW9uVXBkYXRlIiwgImNvbXBvc2l0aW9udXBkYXRlIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duIi5zcGxpdCgiICIpKTsKICAgICAgICB2YXIgT28gPSAiYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmciLnNwbGl0KCIgIiksCiAgICAgICAgICAgIElvID0gbmV3IFNldCgiY2FuY2VsIGNsb3NlIGludmFsaWQgbG9hZCBzY3JvbGwgdG9nZ2xlIi5zcGxpdCgiICIpLmNvbmNhdChPbykpLAogICAgICAgICAgICBVbyA9ICJfcmVhY3RMaXN0ZW5pbmciICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksCiAgICAgICAgICAgIFZvID0gL1xyXG4/L2csCiAgICAgICAgICAgIEFvID0gL1x1MDAwMHxcdUZGRkQvZywKICAgICAgICAgICAgQm8gPSBudWxsLAogICAgICAgICAgICBXbyA9IG51bGwsCiAgICAgICAgICAgIEhvID0gImZ1bmN0aW9uIiA9PSB0eXBlb2Ygc2V0VGltZW91dCA/IHNldFRpbWVvdXQgOiB2b2lkIDAsCiAgICAgICAgICAgIFFvID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgY2xlYXJUaW1lb3V0ID8gY2xlYXJUaW1lb3V0IDogdm9pZCAwLAogICAgICAgICAgICBqbyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFByb21pc2UgPyBQcm9taXNlIDogdm9pZCAwLAogICAgICAgICAgICAkbyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHF1ZXVlTWljcm90YXNrID8gcXVldWVNaWNyb3Rhc2sgOiB2b2lkIDAgIT09IGpvID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpvLnJlc29sdmUobnVsbCkudGhlbihlKS5jYXRjaChzbikKICAgICAgICAgICAgfSA6IEhvLAogICAgICAgICAgICBxbyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLAogICAgICAgICAgICBLbyA9ICJfX3JlYWN0RmliZXIkIiArIHFvLAogICAgICAgICAgICBZbyA9ICJfX3JlYWN0UHJvcHMkIiArIHFvLAogICAgICAgICAgICBYbyA9ICJfX3JlYWN0Q29udGFpbmVyJCIgKyBxbywKICAgICAgICAgICAgR28gPSAiX19yZWFjdEV2ZW50cyQiICsgcW8sCiAgICAgICAgICAgIFpvID0gIl9fcmVhY3RMaXN0ZW5lcnMkIiArIHFvLAogICAgICAgICAgICBKbyA9ICJfX3JlYWN0SGFuZGxlcyQiICsgcW8sCiAgICAgICAgICAgIGVpID0gW10sCiAgICAgICAgICAgIG5pID0gLTEsCiAgICAgICAgICAgIHRpID0ge30sCiAgICAgICAgICAgIHJpID0gdm4odGkpLAogICAgICAgICAgICBsaSA9IHZuKCExKSwKICAgICAgICAgICAgYWkgPSB0aSwKICAgICAgICAgICAgdWkgPSBudWxsLAogICAgICAgICAgICBvaSA9ICExLAogICAgICAgICAgICBpaSA9ICExLAogICAgICAgICAgICBzaSA9IFtdLAogICAgICAgICAgICBjaSA9IDAsCiAgICAgICAgICAgIGZpID0gbnVsbCwKICAgICAgICAgICAgZGkgPSAwLAogICAgICAgICAgICBwaSA9IFtdLAogICAgICAgICAgICBtaSA9IDAsCiAgICAgICAgICAgIGhpID0gbnVsbCwKICAgICAgICAgICAgZ2kgPSAxLAogICAgICAgICAgICB2aSA9ICIiLAogICAgICAgICAgICB5aSA9IG51bGwsCiAgICAgICAgICAgIGJpID0gbnVsbCwKICAgICAgICAgICAga2kgPSAhMSwKICAgICAgICAgICAgd2kgPSBudWxsLAogICAgICAgICAgICBTaSA9IGRhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLAogICAgICAgICAgICB4aSA9IHZuKG51bGwpLAogICAgICAgICAgICBFaSA9IG51bGwsCiAgICAgICAgICAgIENpID0gbnVsbCwKICAgICAgICAgICAgemkgPSBudWxsLAogICAgICAgICAgICBOaSA9IG51bGwsCiAgICAgICAgICAgIFBpID0gS24sCiAgICAgICAgICAgIF9pID0gITEsCiAgICAgICAgICAgIExpID0gKG5ldyBuLkNvbXBvbmVudCkucmVmcywKICAgICAgICAgICAgVGkgPSB7CiAgICAgICAgICAgICAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gISEoZSA9IGUuX3JlYWN0SW50ZXJuYWxzKSAmJiBIKGUpID09PSBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbihlLCBuLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZSA9IGUuX3JlYWN0SW50ZXJuYWxzOwogICAgICAgICAgICAgICAgICAgIHZhciByID0gcmwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGxsKGUpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gR24ociwgbCk7CiAgICAgICAgICAgICAgICAgICAgYS5wYXlsb2FkID0gbiwgbnVsbCAhPSB0ICYmIChhLmNhbGxiYWNrID0gdCksIG51bGwgIT09IChuID0gWm4oZSwgYSwgbCkpICYmIChhbChuLCBlLCBsLCByKSwgSm4obiwgZSwgbCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24oZSwgbiwgdCkgewogICAgICAgICAgICAgICAgICAgIGUgPSBlLl9yZWFjdEludGVybmFsczsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHJsKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsbChlKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IEduKHIsIGwpOwogICAgICAgICAgICAgICAgICAgIGEudGFnID0gMSwgYS5wYXlsb2FkID0gbiwgbnVsbCAhPSB0ICYmIChhLmNhbGxiYWNrID0gdCksIG51bGwgIT09IChuID0gWm4oZSwgYSwgbCkpICYmIChhbChuLCBlLCBsLCByKSwgSm4obiwgZSwgbCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgZSA9IGUuX3JlYWN0SW50ZXJuYWxzOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gcmwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGxsKGUpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gR24odCwgcik7CiAgICAgICAgICAgICAgICAgICAgbC50YWcgPSAyLCBudWxsICE9IG4gJiYgKGwuY2FsbGJhY2sgPSBuKSwgbnVsbCAhPT0gKG4gPSBabihlLCBsLCByKSkgJiYgKGFsKG4sIGUsIHIsIHQpLCBKbihuLCBlLCByKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWkgPSBmdCghMCksCiAgICAgICAgICAgIEZpID0gZnQoITEpLAogICAgICAgICAgICBSaSA9IHt9LAogICAgICAgICAgICBEaSA9IHZuKFJpKSwKICAgICAgICAgICAgT2kgPSB2bihSaSksCiAgICAgICAgICAgIElpID0gdm4oUmkpLAogICAgICAgICAgICBVaSA9IHZuKDApLAogICAgICAgICAgICBWaSA9IFtdLAogICAgICAgICAgICBBaSA9IGRhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsCiAgICAgICAgICAgIEJpID0gZGEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsCiAgICAgICAgICAgIFdpID0gMCwKICAgICAgICAgICAgSGkgPSBudWxsLAogICAgICAgICAgICBRaSA9IG51bGwsCiAgICAgICAgICAgIGppID0gbnVsbCwKICAgICAgICAgICAgJGkgPSAhMSwKICAgICAgICAgICAgcWkgPSAhMSwKICAgICAgICAgICAgS2kgPSAwLAogICAgICAgICAgICBZaSA9IDAsCiAgICAgICAgICAgIFhpID0gewogICAgICAgICAgICAgICAgcmVhZENvbnRleHQ6IGpuLAogICAgICAgICAgICAgICAgdXNlQ2FsbGJhY2s6IGJ0LAogICAgICAgICAgICAgICAgdXNlQ29udGV4dDogYnQsCiAgICAgICAgICAgICAgICB1c2VFZmZlY3Q6IGJ0LAogICAgICAgICAgICAgICAgdXNlSW1wZXJhdGl2ZUhhbmRsZTogYnQsCiAgICAgICAgICAgICAgICB1c2VJbnNlcnRpb25FZmZlY3Q6IGJ0LAogICAgICAgICAgICAgICAgdXNlTGF5b3V0RWZmZWN0OiBidCwKICAgICAgICAgICAgICAgIHVzZU1lbW86IGJ0LAogICAgICAgICAgICAgICAgdXNlUmVkdWNlcjogYnQsCiAgICAgICAgICAgICAgICB1c2VSZWY6IGJ0LAogICAgICAgICAgICAgICAgdXNlU3RhdGU6IGJ0LAogICAgICAgICAgICAgICAgdXNlRGVidWdWYWx1ZTogYnQsCiAgICAgICAgICAgICAgICB1c2VEZWZlcnJlZFZhbHVlOiBidCwKICAgICAgICAgICAgICAgIHVzZVRyYW5zaXRpb246IGJ0LAogICAgICAgICAgICAgICAgdXNlTXV0YWJsZVNvdXJjZTogYnQsCiAgICAgICAgICAgICAgICB1c2VTeW5jRXh0ZXJuYWxTdG9yZTogYnQsCiAgICAgICAgICAgICAgICB1c2VJZDogYnQsCiAgICAgICAgICAgICAgICB1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEdpID0gewogICAgICAgICAgICAgICAgcmVhZENvbnRleHQ6IGpuLAogICAgICAgICAgICAgICAgdXNlQ2FsbGJhY2s6IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geHQoKS5tZW1vaXplZFN0YXRlID0gW2UsIHZvaWQgMCA9PT0gbiA/IG51bGwgOiBuXSwgZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZUNvbnRleHQ6IGpuLAogICAgICAgICAgICAgICAgdXNlRWZmZWN0OiBBdCwKICAgICAgICAgICAgICAgIHVzZUltcGVyYXRpdmVIYW5kbGU6IGZ1bmN0aW9uKGUsIG4sIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IG51bGwgIT0gdCA/IHQuY29uY2F0KFtlXSkgOiBudWxsLCBVdCg0MTk0MzA4LCA0LCBRdC5iaW5kKG51bGwsIG4sIGUpLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZUxheW91dEVmZmVjdDogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBVdCg0MTk0MzA4LCA0LCBlLCBuKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZUluc2VydGlvbkVmZmVjdDogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBVdCg0LCAyLCBlLCBuKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZU1lbW86IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHh0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPSB2b2lkIDAgPT09IG4gPyBudWxsIDogbiwgZSA9IGUoKSwgdC5tZW1vaXplZFN0YXRlID0gW2UsIG5dLCBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlUmVkdWNlcjogZnVuY3Rpb24oZSwgbiwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0geHQoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA9IHZvaWQgMCAhPT0gdCA/IHQobikgOiBuLCByLm1lbW9pemVkU3RhdGUgPSByLmJhc2VTdGF0ZSA9IG4sIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmc6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybGVhdmVkOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBsYW5lczogMCwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2g6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZW5kZXJlZFJlZHVjZXI6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZW5kZXJlZFN0YXRlOiBuCiAgICAgICAgICAgICAgICAgICAgfSwgci5xdWV1ZSA9IGUsIGUgPSBlLmRpc3BhdGNoID0gWnQuYmluZChudWxsLCBIaSwgZSksIFtyLm1lbW9pemVkU3RhdGUsIGVdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlUmVmOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGUKICAgICAgICAgICAgICAgICAgICB9LCB4dCgpLm1lbW9pemVkU3RhdGUgPSBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlU3RhdGU6IER0LAogICAgICAgICAgICAgICAgdXNlRGVidWdWYWx1ZTogJHQsCiAgICAgICAgICAgICAgICB1c2VEZWZlcnJlZFZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHh0KCkubWVtb2l6ZWRTdGF0ZSA9IGUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1c2VUcmFuc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IER0KCExKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbMF07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSBYdC5iaW5kKG51bGwsIGVbMV0pLCB4dCgpLm1lbW9pemVkU3RhdGUgPSBlLCBbbiwgZV0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1c2VNdXRhYmxlU291cmNlOiBmdW5jdGlvbihlLCBuLCB0KSB7fSwKICAgICAgICAgICAgICAgIHVzZVN5bmNFeHRlcm5hbFN0b3JlOiBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBIaSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHh0KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGtpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHIpIHRocm93IEVycm9yKHQoNDA3KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByKCkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IG4oKSwgbnVsbCA9PT0ga3MpIHRocm93IEVycm9yKHQoMzQ5KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIDAgIT0gKDMwICYgV2kpIHx8IEx0KGwsIG4sIHIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGEubWVtb2l6ZWRTdGF0ZSA9IHI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByLAogICAgICAgICAgICAgICAgICAgICAgICBnZXRTbmFwc2hvdDogbgogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucXVldWUgPSB1LCBBdChNdC5iaW5kKG51bGwsIGwsIHUsIGUpLCBbZV0pLCBsLmZsYWdzIHw9IDIwNDgsIE90KDksIFR0LmJpbmQobnVsbCwgbCwgdSwgciwgbiksIHZvaWQgMCwgbnVsbCksIHIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1c2VJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB4dCgpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0ga3MuaWRlbnRpZmllclByZWZpeDsKICAgICAgICAgICAgICAgICAgICBpZiAoa2kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB2aTsKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICI6IiArIG4gKyAiUiIgKyAodCA9IChnaSAmIH4oMSA8PCAzMiAtIHl1KGdpKSAtIDEpKS50b1N0cmluZygzMikgKyB0KSwgMCA8ICh0ID0gS2krKykgJiYgKG4gKz0gIkgiICsgdC50b1N0cmluZygzMikpLCBuICs9ICI6IgogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuID0gIjoiICsgbiArICJyIiArICh0ID0gWWkrKykudG9TdHJpbmcoMzIpICsgIjoiOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm1lbW9pemVkU3RhdGUgPSBuCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICBaaSA9IHsKICAgICAgICAgICAgICAgIHJlYWRDb250ZXh0OiBqbiwKICAgICAgICAgICAgICAgIHVzZUNhbGxiYWNrOiBxdCwKICAgICAgICAgICAgICAgIHVzZUNvbnRleHQ6IGpuLAogICAgICAgICAgICAgICAgdXNlRWZmZWN0OiBCdCwKICAgICAgICAgICAgICAgIHVzZUltcGVyYXRpdmVIYW5kbGU6IGp0LAogICAgICAgICAgICAgICAgdXNlSW5zZXJ0aW9uRWZmZWN0OiBXdCwKICAgICAgICAgICAgICAgIHVzZUxheW91dEVmZmVjdDogSHQsCiAgICAgICAgICAgICAgICB1c2VNZW1vOiBLdCwKICAgICAgICAgICAgICAgIHVzZVJlZHVjZXI6IHp0LAogICAgICAgICAgICAgICAgdXNlUmVmOiBJdCwKICAgICAgICAgICAgICAgIHVzZVN0YXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHp0KEN0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZURlYnVnVmFsdWU6ICR0LAogICAgICAgICAgICAgICAgdXNlRGVmZXJyZWRWYWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBZdChFdCgpLCBRaS5tZW1vaXplZFN0YXRlLCBlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZVRyYW5zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbenQoQ3QpWzBdLCBFdCgpLm1lbW9pemVkU3RhdGVdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlTXV0YWJsZVNvdXJjZTogUHQsCiAgICAgICAgICAgICAgICB1c2VTeW5jRXh0ZXJuYWxTdG9yZTogX3QsCiAgICAgICAgICAgICAgICB1c2VJZDogR3QsCiAgICAgICAgICAgICAgICB1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEppID0gewogICAgICAgICAgICAgICAgcmVhZENvbnRleHQ6IGpuLAogICAgICAgICAgICAgICAgdXNlQ2FsbGJhY2s6IHF0LAogICAgICAgICAgICAgICAgdXNlQ29udGV4dDogam4sCiAgICAgICAgICAgICAgICB1c2VFZmZlY3Q6IEJ0LAogICAgICAgICAgICAgICAgdXNlSW1wZXJhdGl2ZUhhbmRsZToganQsCiAgICAgICAgICAgICAgICB1c2VJbnNlcnRpb25FZmZlY3Q6IFd0LAogICAgICAgICAgICAgICAgdXNlTGF5b3V0RWZmZWN0OiBIdCwKICAgICAgICAgICAgICAgIHVzZU1lbW86IEt0LAogICAgICAgICAgICAgICAgdXNlUmVkdWNlcjogTnQsCiAgICAgICAgICAgICAgICB1c2VSZWY6IEl0LAogICAgICAgICAgICAgICAgdXNlU3RhdGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnQoQ3QpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlRGVidWdWYWx1ZTogJHQsCiAgICAgICAgICAgICAgICB1c2VEZWZlcnJlZFZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBFdCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBRaSA/IG4ubWVtb2l6ZWRTdGF0ZSA9IGUgOiBZdChuLCBRaS5tZW1vaXplZFN0YXRlLCBlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVzZVRyYW5zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbTnQoQ3QpWzBdLCBFdCgpLm1lbW9pemVkU3RhdGVdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXNlTXV0YWJsZVNvdXJjZTogUHQsCiAgICAgICAgICAgICAgICB1c2VTeW5jRXh0ZXJuYWxTdG9yZTogX3QsCiAgICAgICAgICAgICAgICB1c2VJZDogR3QsCiAgICAgICAgICAgICAgICB1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVzID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgV2Vha01hcCA/IFdlYWtNYXAgOiBNYXAsCiAgICAgICAgICAgIG5zID0gZGEuUmVhY3RDdXJyZW50T3duZXIsCiAgICAgICAgICAgIHRzID0gITEsCiAgICAgICAgICAgIHJzID0gewogICAgICAgICAgICAgICAgZGVoeWRyYXRlZDogbnVsbCwKICAgICAgICAgICAgICAgIHRyZWVDb250ZXh0OiBudWxsLAogICAgICAgICAgICAgICAgcmV0cnlMYW5lOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxzID0gZnVuY3Rpb24oZSwgbiwgdCwgcikgewogICAgICAgICAgICAgICAgZm9yICh0ID0gbi5jaGlsZDsgbnVsbCAhPT0gdDspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoNSA9PT0gdC50YWcgfHwgNiA9PT0gdC50YWcpIGUuYXBwZW5kQ2hpbGQodC5zdGF0ZU5vZGUpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKDQgIT09IHQudGFnICYmIG51bGwgIT09IHQuY2hpbGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5jaGlsZC5yZXR1cm4gPSB0LCB0ID0gdC5jaGlsZDsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPT09IG4pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGZvciAoOyBudWxsID09PSB0LnNpYmxpbmc7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB0LnJldHVybiB8fCB0LnJldHVybiA9PT0gbikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdC5yZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5zaWJsaW5nLnJldHVybiA9IHQucmV0dXJuLCB0ID0gdC5zaWJsaW5nCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFzID0gZnVuY3Rpb24oZSwgbikge30sCiAgICAgICAgICAgIHVzID0gZnVuY3Rpb24oZSwgbiwgdCwgciwgbCkgewogICAgICAgICAgICAgICAgdmFyIGEgPSBlLm1lbW9pemVkUHJvcHM7CiAgICAgICAgICAgICAgICBpZiAoYSAhPT0gcikgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZSA9IG4uc3RhdGVOb2RlLCBkdChEaS5jdXJyZW50KSwgbCA9IG51bGwsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHkoZSwgYSksIHIgPSB5KGUsIHIpLCBsID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2VsZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBMYSh7fSwgYSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCByID0gTGEoe30sIHIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRleHRhcmVhIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBDKGUsIGEpLCByID0gQyhlLCByKSwgbCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iICE9IHR5cGVvZiBhLm9uQ2xpY2sgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygci5vbkNsaWNrICYmIChlLm9uY2xpY2sgPSB1bikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHU7CiAgICAgICAgICAgICAgICAgICAgZm9yIChzIGluIEYodCwgciksIHQgPSBudWxsLCBhKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIuaGFzT3duUHJvcGVydHkocykgJiYgYS5oYXNPd25Qcm9wZXJ0eShzKSAmJiBudWxsICE9IGFbc10pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0eWxlIiA9PT0gcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gYVtzXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgaW4gbykgby5oYXNPd25Qcm9wZXJ0eSh1KSAmJiAodCB8fCAodCA9IHt9KSwgdFt1XSA9ICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICJkYW5nZXJvdXNseVNldElubmVySFRNTCIgIT09IHMgJiYgImNoaWxkcmVuIiAhPT0gcyAmJiAic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiAhPT0gcyAmJiAic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiAhPT0gcyAmJiAiYXV0b0ZvY3VzIiAhPT0gcyAmJiAocmEuaGFzT3duUHJvcGVydHkocykgPyBsIHx8IChsID0gW10pIDogKGwgPSBsIHx8IFtdKS5wdXNoKHMsIG51bGwpKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHMgaW4gcikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHJbc107CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID0gbnVsbCAhPSBhID8gYVtzXSA6IHZvaWQgMCwgci5oYXNPd25Qcm9wZXJ0eShzKSAmJiBpICE9PSBvICYmIChudWxsICE9IGkgfHwgbnVsbCAhPSBvKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3R5bGUiID09PSBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSBpbiBvKSAhby5oYXNPd25Qcm9wZXJ0eSh1KSB8fCBpICYmIGkuaGFzT3duUHJvcGVydHkodSkgfHwgKHQgfHwgKHQgPSB7fSksIHRbdV0gPSAiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSBpbiBpKSBpLmhhc093blByb3BlcnR5KHUpICYmIG9bdV0gIT09IGlbdV0gJiYgKHQgfHwgKHQgPSB7fSksIHRbdV0gPSBpW3VdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0IHx8IChsIHx8IChsID0gW10pLCBsLnB1c2gocywgdCkpLCB0ID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiID09PSBzID8gKGkgPSBpID8gaS5fX2h0bWwgOiB2b2lkIDAsIG8gPSBvID8gby5fX2h0bWwgOiB2b2lkIDAsIG51bGwgIT0gaSAmJiBvICE9PSBpICYmIChsID0gbCB8fCBbXSkucHVzaChzLCBpKSkgOiAiY2hpbGRyZW4iID09PSBzID8gInN0cmluZyIgIT0gdHlwZW9mIGkgJiYgIm51bWJlciIgIT0gdHlwZW9mIGkgfHwgKGwgPSBsIHx8IFtdKS5wdXNoKHMsICIiICsgaSkgOiAic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiAhPT0gcyAmJiAic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiAhPT0gcyAmJiAocmEuaGFzT3duUHJvcGVydHkocykgPyAobnVsbCAhPSBpICYmICJvblNjcm9sbCIgPT09IHMgJiYgWWUoInNjcm9sbCIsIGUpLCBsIHx8IG8gPT09IGkgfHwgKGwgPSBbXSkpIDogKGwgPSBsIHx8IFtdKS5wdXNoKHMsIGkpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0ICYmIChsID0gbCB8fCBbXSkucHVzaCgic3R5bGUiLCB0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGw7CiAgICAgICAgICAgICAgICAgICAgKG4udXBkYXRlUXVldWUgPSBzKSAmJiAobi5mbGFncyB8PSA0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBvcyA9IGZ1bmN0aW9uKGUsIG4sIHQsIHIpIHsKICAgICAgICAgICAgICAgIHQgIT09IHIgJiYgKG4uZmxhZ3MgfD0gNCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaXMgPSAhMSwKICAgICAgICAgICAgc3MgPSAhMSwKICAgICAgICAgICAgY3MgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBXZWFrU2V0ID8gV2Vha1NldCA6IFNldCwKICAgICAgICAgICAgZnMgPSBudWxsLAogICAgICAgICAgICBkcyA9ICExLAogICAgICAgICAgICBwcyA9IG51bGwsCiAgICAgICAgICAgIG1zID0gITEsCiAgICAgICAgICAgIGhzID0gTWF0aC5jZWlsLAogICAgICAgICAgICBncyA9IGRhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsCiAgICAgICAgICAgIHZzID0gZGEuUmVhY3RDdXJyZW50T3duZXIsCiAgICAgICAgICAgIHlzID0gZGEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsCiAgICAgICAgICAgIGJzID0gMCwKICAgICAgICAgICAga3MgPSBudWxsLAogICAgICAgICAgICB3cyA9IG51bGwsCiAgICAgICAgICAgIFNzID0gMCwKICAgICAgICAgICAgeHMgPSAwLAogICAgICAgICAgICBFcyA9IHZuKDApLAogICAgICAgICAgICBDcyA9IDAsCiAgICAgICAgICAgIHpzID0gbnVsbCwKICAgICAgICAgICAgTnMgPSAwLAogICAgICAgICAgICBQcyA9IDAsCiAgICAgICAgICAgIF9zID0gMCwKICAgICAgICAgICAgTHMgPSBudWxsLAogICAgICAgICAgICBUcyA9IG51bGwsCiAgICAgICAgICAgIE1zID0gMCwKICAgICAgICAgICAgRnMgPSAxIC8gMCwKICAgICAgICAgICAgUnMgPSBudWxsLAogICAgICAgICAgICBEcyA9ICExLAogICAgICAgICAgICBPcyA9IG51bGwsCiAgICAgICAgICAgIElzID0gbnVsbCwKICAgICAgICAgICAgVXMgPSAhMSwKICAgICAgICAgICAgVnMgPSBudWxsLAogICAgICAgICAgICBBcyA9IDAsCiAgICAgICAgICAgIEJzID0gMCwKICAgICAgICAgICAgV3MgPSBudWxsLAogICAgICAgICAgICBIcyA9IC0xLAogICAgICAgICAgICBRcyA9IDAsCiAgICAgICAgICAgIGpzID0gZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGUpCiAgICAgICAgICAgICAgICAgICAgaWYgKGUubWVtb2l6ZWRQcm9wcyAhPT0gbi5wZW5kaW5nUHJvcHMgfHwgbGkuY3VycmVudCkgdHMgPSAhMDsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT0gKGUubGFuZXMgJiByKSAmJiAwID09ICgxMjggJiBuLmZsYWdzKSkgcmV0dXJuIHRzID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlLCBuLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuLnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcihuKSwgVW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodChuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3bihuLnR5cGUpICYmIEVuKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0KG4sIG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4udHlwZS5fY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbi5tZW1vaXplZFByb3BzLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm4oeGksIHIuX2N1cnJlbnRWYWx1ZSksIHIuX2N1cnJlbnRWYWx1ZSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAociA9IG4ubWVtb2l6ZWRTdGF0ZSkpIHJldHVybiBudWxsICE9PSByLmRlaHlkcmF0ZWQgPyAoYm4oVWksIDEgJiBVaS5jdXJyZW50KSwgbi5mbGFncyB8PSAxMjgsIG51bGwpIDogMCAhPSAodCAmIG4uY2hpbGQuY2hpbGRMYW5lcykgPyB4cihlLCBuLCB0KSA6IChibihVaSwgMSAmIFVpLmN1cnJlbnQpLCBudWxsICE9PSAoZSA9IExyKGUsIG4sIHQpKSA/IGUuc2libGluZyA6IG51bGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm4oVWksIDEgJiBVaS5jdXJyZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSAwICE9ICh0ICYgbi5jaGlsZExhbmVzKSwgMCAhPSAoMTI4ICYgZS5mbGFncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgcmV0dXJuIFByKGUsIG4sIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uZmxhZ3MgfD0gMTI4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gKGwgPSBuLm1lbW9pemVkU3RhdGUpICYmIChsLnJlbmRlcmluZyA9IG51bGwsIGwudGFpbCA9IG51bGwsIGwubGFzdEVmZmVjdCA9IG51bGwpLCBibihVaSwgVWkuY3VycmVudCksIHIpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5sYW5lcyA9IDAsIGhyKGUsIG4sIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMcihlLCBuLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCBuLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgdHMgPSAwICE9ICgxMzEwNzIgJiBlLmZsYWdzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgdHMgPSAhMSwga2kgJiYgMCAhPSAoMTA0ODU3NiAmIG4uZmxhZ3MpICYmIF9uKG4sIGRpLCBuLmluZGV4KTsKICAgICAgICAgICAgICAgIHN3aXRjaCAobi5sYW5lcyA9IDAsIG4udGFnKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG4udHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgX3IoZSwgbiksIGUgPSBuLnBlbmRpbmdQcm9wczsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBrbihuLCByaS5jdXJyZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgUW4obiwgciksIGEgPSB3dChudWxsLCBuLCBsLCBlLCBhLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBTdCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5mbGFncyB8PSAxLCAib2JqZWN0IiA9PSB0eXBlb2YgYSAmJiBudWxsICE9PSBhICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIGEucmVuZGVyICYmIHZvaWQgMCA9PT0gYS4kJHR5cGVvZiA/IChuLnRhZyA9IDEsIG4ubWVtb2l6ZWRTdGF0ZSA9IG51bGwsIG4udXBkYXRlUXVldWUgPSBudWxsLCB3bihsKSA/ICh1ID0gITAsIEVuKG4pKSA6IHUgPSAhMSwgbi5tZW1vaXplZFN0YXRlID0gbnVsbCAhPT0gYS5zdGF0ZSAmJiB2b2lkIDAgIT09IGEuc3RhdGUgPyBhLnN0YXRlIDogbnVsbCwgWW4obiksIGEudXBkYXRlciA9IFRpLCBuLnN0YXRlTm9kZSA9IGEsIGEuX3JlYWN0SW50ZXJuYWxzID0gbiwgb3QobiwgbCwgZSwgciksIG4gPSBicihudWxsLCBuLCBsLCAhMCwgdSwgcikpIDogKG4udGFnID0gMCwga2kgJiYgdSAmJiBMbihuKSwgZnIobnVsbCwgbiwgYSwgciksIG4gPSBuLmNoaWxkKSwgbjsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE2OgogICAgICAgICAgICAgICAgICAgICAgICBsID0gbi5lbGVtZW50VHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfcihlLCBuKSwgZSA9IG4ucGVuZGluZ1Byb3BzLCBsID0gKGEgPSBsLl9pbml0KShsLl9wYXlsb2FkKSwgbi50eXBlID0gbCwgYSA9IG4udGFnID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiBlKSByZXR1cm4gRmwoZSkgPyAxIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZSA9IGUuJCR0eXBlb2YpID09PSBrYSkgcmV0dXJuIDExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA9PT0geGEpIHJldHVybiAxNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShsKSwgZSA9IEFuKGwsIGUpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdnIobnVsbCwgbiwgbCwgZSwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0geXIobnVsbCwgbiwgbCwgZSwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGRyKG51bGwsIG4sIGwsIGUsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBwcihudWxsLCBuLCBsLCBBbihsLnR5cGUsIGUpLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IodCgzMDYsIGwsICIiKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsID0gbi50eXBlLCBhID0gbi5wZW5kaW5nUHJvcHMsIHZyKGUsIG4sIGwsIGEgPSBuLmVsZW1lbnRUeXBlID09PSBsID8gYSA6IEFuKGwsIGEpLCByKTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsID0gbi50eXBlLCBhID0gbi5wZW5kaW5nUHJvcHMsIHlyKGUsIG4sIGwsIGEgPSBuLmVsZW1lbnRUeXBlID09PSBsID8gYSA6IEFuKGwsIGEpLCByKTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrcihuKSwgbnVsbCA9PT0gZSkgdGhyb3cgRXJyb3IodCgzODcpKTtsID0gbi5wZW5kaW5nUHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gKHUgPSBuLm1lbW9pemVkU3RhdGUpLmVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYbihlLCBuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG50KG4sIGwsIG51bGwsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuLm1lbW9pemVkU3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9IG8uZWxlbWVudCwgdS5pc0RlaHlkcmF0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RlaHlkcmF0ZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGU6IG8uY2FjaGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOiBvLnBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uczogby50cmFuc2l0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZSA9IHUsIG4ubWVtb2l6ZWRTdGF0ZSA9IHUsIDI1NiAmIG4uZmxhZ3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHdyKGUsIG4sIGwsIHIsIGEgPSBycihFcnJvcih0KDQyMykpLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgIT09IGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHdyKGUsIG4sIGwsIHIsIGEgPSBycihFcnJvcih0KDQyNCkpLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChiaSA9IGZuKG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8uZmlyc3RDaGlsZCksIHlpID0gbiwga2kgPSAhMCwgd2kgPSBudWxsLCByID0gRmkobiwgbnVsbCwgbCwgciksIG4uY2hpbGQgPSByOyByOykgci5mbGFncyA9IC0zICYgci5mbGFncyB8IDQwOTYsIHIgPSByLnNpYmxpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVuKCksIGwgPT09IGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IExyKGUsIG4sIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyKGUsIG4sIGwsIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi5jaGlsZAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGh0KG4pLCBudWxsID09PSBlICYmIERuKG4pLCBsID0gbi50eXBlLCBhID0gbi5wZW5kaW5nUHJvcHMsIHUgPSBudWxsICE9PSBlID8gZS5tZW1vaXplZFByb3BzIDogbnVsbCwgbyA9IGEuY2hpbGRyZW4sIG9uKGwsIGEpID8gbyA9IG51bGwgOiBudWxsICE9PSB1ICYmIG9uKGwsIHUpICYmIChuLmZsYWdzIHw9IDMyKSwgZ3IoZSwgbiksIGZyKGUsIG4sIG8sIHIpLCBuLmNoaWxkOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGUgJiYgRG4obiksIG51bGw7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhyKGUsIG4sIHIpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB0KG4sIG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLCBsID0gbi5wZW5kaW5nUHJvcHMsIG51bGwgPT09IGUgPyBuLmNoaWxkID0gTWkobiwgbnVsbCwgbCwgcikgOiBmcihlLCBuLCBsLCByKSwgbi5jaGlsZDsKICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCA9IG4udHlwZSwgYSA9IG4ucGVuZGluZ1Byb3BzLCBkcihlLCBuLCBsLCBhID0gbi5lbGVtZW50VHlwZSA9PT0gbCA/IGEgOiBBbihsLCBhKSwgcik7CiAgICAgICAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnIoZSwgbiwgbi5wZW5kaW5nUHJvcHMsIHIpLCBuLmNoaWxkOwogICAgICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnIoZSwgbiwgbi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sIHIpLCBuLmNoaWxkOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICAgICAgICAgIGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gbi50eXBlLl9jb250ZXh0LCBhID0gbi5wZW5kaW5nUHJvcHMsIHUgPSBuLm1lbW9pemVkUHJvcHMsIG8gPSBhLnZhbHVlLCBibih4aSwgbC5fY3VycmVudFZhbHVlKSwgbC5fY3VycmVudFZhbHVlID0gbywgbnVsbCAhPT0gdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod28odS52YWx1ZSwgbykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUuY2hpbGRyZW4gPT09IGEuY2hpbGRyZW4gJiYgIWxpLmN1cnJlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBMcihlLCBuLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG51bGwgIT09ICh1ID0gbi5jaGlsZCkgJiYgKHUucmV0dXJuID0gbik7IG51bGwgIT09IHU7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHUuZGVwZW5kZW5jaWVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdS5jaGlsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gaS5maXJzdENvbnRleHQ7IG51bGwgIT09IHM7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLmNvbnRleHQgPT09IGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSB1LnRhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzID0gR24oLTEsIHIgJiAtcikpLnRhZyA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB1LnVwZGF0ZVF1ZXVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gKGMgPSBjLnNoYXJlZCkucGVuZGluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZiA/IHMubmV4dCA9IHMgOiAocy5uZXh0ID0gZi5uZXh0LCBmLm5leHQgPSBzKSwgYy5wZW5kaW5nID0gcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUubGFuZXMgfD0gciwgbnVsbCAhPT0gKHMgPSB1LmFsdGVybmF0ZSkgJiYgKHMubGFuZXMgfD0gciksIEhuKHUucmV0dXJuLCByLCBuKSwgaS5sYW5lcyB8PSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcy5uZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgxMCA9PT0gdS50YWcpIG8gPSB1LnR5cGUgPT09IG4udHlwZSA/IG51bGwgOiB1LmNoaWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoMTggPT09IHUudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IChvID0gdS5yZXR1cm4pKSB0aHJvdyBFcnJvcih0KDM0MSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ubGFuZXMgfD0gciwgbnVsbCAhPT0gKGkgPSBvLmFsdGVybmF0ZSkgJiYgKGkubGFuZXMgfD0gciksIEhuKG8sIHIsIG4pLCBvID0gdS5zaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgbyA9IHUuY2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gbykgby5yZXR1cm4gPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IHU7IG51bGwgIT09IG87KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvID09PSBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09ICh1ID0gby5zaWJsaW5nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5yZXR1cm4gPSBvLnJldHVybiwgbyA9IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBvLnJldHVybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyKGUsIG4sIGEuY2hpbGRyZW4sIHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4uY2hpbGQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhID0gbi50eXBlLCBsID0gbi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sIFFuKG4sIHIpLCBsID0gbChhID0gam4oYSkpLCBuLmZsYWdzIHw9IDEsIGZyKGUsIG4sIGwsIHIpLCBuLmNoaWxkOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhID0gQW4obCA9IG4udHlwZSwgbi5wZW5kaW5nUHJvcHMpLCBwcihlLCBuLCBsLCBhID0gQW4obC50eXBlLCBhKSwgcik7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1yKGUsIG4sIG4udHlwZSwgbi5wZW5kaW5nUHJvcHMsIHIpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTc6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsID0gbi50eXBlLCBhID0gbi5wZW5kaW5nUHJvcHMsIGEgPSBuLmVsZW1lbnRUeXBlID09PSBsID8gYSA6IEFuKGwsIGEpLCBfcihlLCBuKSwgbi50YWcgPSAxLCB3bihsKSA/IChlID0gITAsIEVuKG4pKSA6IGUgPSAhMSwgUW4obiwgciksIGF0KG4sIGwsIGEpLCBvdChuLCBsLCBhLCByKSwgYnIobnVsbCwgbiwgbCwgITAsIGUsIHIpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcihlLCBuLCByKTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDIyOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHIoZSwgbiwgcikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHQoMTU2LCBuLnRhZykpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICRzID0gZnVuY3Rpb24oZSwgbiwgdCwgcikgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNbChlLCBuLCB0LCByKQogICAgICAgICAgICB9LAogICAgICAgICAgICBxcyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHJlcG9ydEVycm9yID8gcmVwb3J0RXJyb3IgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpCiAgICAgICAgICAgIH07CiAgICAgICAgR2wucHJvdG90eXBlLnJlbmRlciA9IFhsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBuID0gdGhpcy5faW50ZXJuYWxSb290OwogICAgICAgICAgICBpZiAobnVsbCA9PT0gbikgdGhyb3cgRXJyb3IodCg0MDkpKTsKICAgICAgICAgICAgUWwoZSwgbiwgbnVsbCwgbnVsbCkKICAgICAgICB9LCBHbC5wcm90b3R5cGUudW5tb3VudCA9IFhsLnByb3RvdHlwZS51bm1vdW50ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5faW50ZXJuYWxSb290OwogICAgICAgICAgICBpZiAobnVsbCAhPT0gZSkgewogICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxSb290ID0gbnVsbDsKICAgICAgICAgICAgICAgIHZhciBuID0gZS5jb250YWluZXJJbmZvOwogICAgICAgICAgICAgICAgcGwoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIFFsKG51bGwsIGUsIG51bGwsIG51bGwpCiAgICAgICAgICAgICAgICB9KSksIG5bWG9dID0gbnVsbAogICAgICAgICAgICB9CiAgICAgICAgfSwgR2wucHJvdG90eXBlLnVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBHcygpOwogICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICBibG9ja2VkT246IG51bGwsCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBlLAogICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiBuCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDA7IHQgPCBUdS5sZW5ndGggJiYgMCAhPT0gbiAmJiBuIDwgVHVbdF0ucHJpb3JpdHk7IHQrKyk7CiAgICAgICAgICAgICAgICBUdS5zcGxpY2UodCwgMCwgZSksIDAgPT09IHQgJiYgYWUoZSkKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgdmFyIEtzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgc3dpdGNoIChlLnRhZykgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLnN0YXRlTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBLKG4ucGVuZGluZ0xhbmVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgIT09IHQgJiYgKG5lKG4sIDEgfCB0KSwgdWwobiwgc3UoKSksIDAgPT0gKDYgJiBicykgJiYgKHRsKCksIE5uKCkpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgIHBsKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gS24oZSwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gcmwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbChuLCBlLCAxLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHFsKGUsIDEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFlzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKDEzID09PSBlLnRhZykgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gS24oZSwgMTM0MjE3NzI4KTsKICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBuICYmIGFsKG4sIGUsIDEzNDIxNzcyOCwgcmwoKSksIHFsKGUsIDEzNDIxNzcyOCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgWHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoMTMgPT09IGUudGFnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBsbChlKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IEtuKGUsIG4pOwogICAgICAgICAgICAgICAgICAgIG51bGwgIT09IHQgJiYgYWwodCwgZSwgbiwgcmwoKSksIHFsKGUsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEdzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geHUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgWnMgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHh1OwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geHUgPSBlLCBuKCkKICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgeHUgPSB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgVmEgPSBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKG4pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJpbnB1dCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3KGUsIHIpLCBuID0gci5uYW1lLCAicmFkaW8iID09PSByLnR5cGUgJiYgbnVsbCAhPSBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBlOyByLnBhcmVudE5vZGU7KSByID0gci5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gci5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIgKyBKU09OLnN0cmluZ2lmeSgiIiArIG4pICsgJ11bdHlwZT0icmFkaW8iXScpLCBuID0gMDsgbiA8IHIubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHJbbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgIT09IGUgJiYgbC5mb3JtID09PSBlLmZvcm0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBnbihsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhKSB0aHJvdyBFcnJvcih0KDkwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcobCksIHcobCwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAidGV4dGFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICBOKGUsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJzZWxlY3QiOgogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IChuID0gci52YWx1ZSkgJiYgRShlLCAhIXIubXVsdGlwbGUsIG4sICExKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBmdW5jdGlvbihlLCBuLCB0KSB7CiAgICAgICAgICAgICAgICBXYSA9IGUsIEhhID0gdAogICAgICAgICAgICB9KGRsLCAwLCBwbCk7CiAgICAgICAgdmFyIEpzID0gewogICAgICAgICAgICB1c2luZ0NsaWVudEVudHJ5UG9pbnQ6ICExLAogICAgICAgICAgICBFdmVudHM6IFttbiwgaG4sIGduLCBJLCBVLCBkbF0KICAgICAgICB9OwogICAgICAgICEgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoZSA9IHsKICAgICAgICAgICAgICAgICAgICBidW5kbGVUeXBlOiBlLmJ1bmRsZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogZS52ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyUGFja2FnZU5hbWU6IGUucmVuZGVyZXJQYWNrYWdlTmFtZSwKICAgICAgICAgICAgICAgICAgICByZW5kZXJlckNvbmZpZzogZS5yZW5kZXJlckNvbmZpZywKICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUhvb2tTdGF0ZTogbnVsbCwKICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGg6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVIb29rU3RhdGVSZW5hbWVQYXRoOiBudWxsLAogICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlUHJvcHM6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGg6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVQcm9wc1JlbmFtZVBhdGg6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JIYW5kbGVyOiBudWxsLAogICAgICAgICAgICAgICAgICAgIHNldFN1c3BlbnNlSGFuZGxlcjogbnVsbCwKICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZVVwZGF0ZTogbnVsbCwKICAgICAgICAgICAgICAgICAgICBjdXJyZW50RGlzcGF0Y2hlclJlZjogZGEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlciwKICAgICAgICAgICAgICAgICAgICBmaW5kSG9zdEluc3RhbmNlQnlGaWJlcjogS2wsCiAgICAgICAgICAgICAgICAgICAgZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6IGUuZmluZEZpYmVyQnlIb3N0SW5zdGFuY2UgfHwgWWwsCiAgICAgICAgICAgICAgICAgICAgZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOiBudWxsLAogICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlUmVmcmVzaDogbnVsbCwKICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZVJvb3Q6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgc2V0UmVmcmVzaEhhbmRsZXI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgZ2V0Q3VycmVudEZpYmVyOiBudWxsLAogICAgICAgICAgICAgICAgICAgIHJlY29uY2lsZXJWZXJzaW9uOiAiMTguMi4wIgogICAgICAgICAgICAgICAgfSwgInVuZGVmaW5lZCIgPT0gdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXykgZSA9ICExOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBuID0gX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fOwogICAgICAgICAgICAgICAgaWYgKG4uaXNEaXNhYmxlZCB8fCAhbi5zdXBwb3J0c0ZpYmVyKSBlID0gITA7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBndSA9IG4uaW5qZWN0KGUpLCB2dSA9IG4KICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgIGUgPSAhIW4uY2hlY2tEQ0UKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0oewogICAgICAgICAgICBmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTogcG4sCiAgICAgICAgICAgIGJ1bmRsZVR5cGU6IDAsCiAgICAgICAgICAgIHZlcnNpb246ICIxOC4yLjAtbmV4dC05ZTNiNzcyYjgtMjAyMjA2MDgiLAogICAgICAgICAgICByZW5kZXJlclBhY2thZ2VOYW1lOiAicmVhY3QtZG9tIgogICAgICAgIH0pLCBlLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEID0gSnMsIGUuY3JlYXRlUG9ydGFsID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICB2YXIgciA9IDIgPCBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogbnVsbDsKICAgICAgICAgICAgaWYgKCFabChuKSkgdGhyb3cgRXJyb3IodCgyMDApKTsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIG4sIHQpIHsKICAgICAgICAgICAgICAgIHZhciByID0gMyA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbM10gPyBhcmd1bWVudHNbM10gOiBudWxsOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAkJHR5cGVvZjogbWEsCiAgICAgICAgICAgICAgICAgICAga2V5OiBudWxsID09IHIgPyBudWxsIDogIiIgKyByLAogICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBlLAogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckluZm86IG4sCiAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb246IHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfShlLCBuLCBudWxsLCByKQogICAgICAgIH0sIGUuY3JlYXRlUm9vdCA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgaWYgKCFabChlKSkgdGhyb3cgRXJyb3IodCgyOTkpKTsKICAgICAgICAgICAgdmFyIHIgPSAhMSwKICAgICAgICAgICAgICAgIGwgPSAiIiwKICAgICAgICAgICAgICAgIGEgPSBxczsKICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gbiAmJiAoITAgPT09IG4udW5zdGFibGVfc3RyaWN0TW9kZSAmJiAociA9ICEwKSwgdm9pZCAwICE9PSBuLmlkZW50aWZpZXJQcmVmaXggJiYgKGwgPSBuLmlkZW50aWZpZXJQcmVmaXgpLCB2b2lkIDAgIT09IG4ub25SZWNvdmVyYWJsZUVycm9yICYmIChhID0gbi5vblJlY292ZXJhYmxlRXJyb3IpKSwgbiA9IEJsKGUsIDEsICExLCBudWxsLCAwLCByLCAwLCBsLCBhKSwgZVtYb10gPSBuLmN1cnJlbnQsIEdlKDggPT09IGUubm9kZVR5cGUgPyBlLnBhcmVudE5vZGUgOiBlKSwgbmV3IFhsKG4pCiAgICAgICAgfSwgZS5maW5kRE9NTm9kZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIGlmICgxID09PSBlLm5vZGVUeXBlKSByZXR1cm4gZTsKICAgICAgICAgICAgdmFyIG4gPSBlLl9yZWFjdEludGVybmFsczsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gbikgewogICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGUucmVuZGVyKSB0aHJvdyBFcnJvcih0KDE4OCkpOwogICAgICAgICAgICAgICAgdGhyb3cgZSA9IE9iamVjdC5rZXlzKGUpLmpvaW4oIiwiKSwgRXJyb3IodCgyNjgsIGUpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlID0gbnVsbCA9PT0gKGUgPSAkKG4pKSA/IG51bGwgOiBlLnN0YXRlTm9kZQogICAgICAgIH0sIGUuZmx1c2hTeW5jID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gcGwoZSkKICAgICAgICB9LCBlLmh5ZHJhdGUgPSBmdW5jdGlvbihlLCBuLCByKSB7CiAgICAgICAgICAgIGlmICghSmwobikpIHRocm93IEVycm9yKHQoMjAwKSk7CiAgICAgICAgICAgIHJldHVybiBuYShudWxsLCBlLCBuLCAhMCwgcikKICAgICAgICB9LCBlLmh5ZHJhdGVSb290ID0gZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICBpZiAoIVpsKGUpKSB0aHJvdyBFcnJvcih0KDQwNSkpOwogICAgICAgICAgICB2YXIgbCA9IG51bGwgIT0gciAmJiByLmh5ZHJhdGVkU291cmNlcyB8fCBudWxsLAogICAgICAgICAgICAgICAgYSA9ICExLAogICAgICAgICAgICAgICAgdSA9ICIiLAogICAgICAgICAgICAgICAgbyA9IHFzOwogICAgICAgICAgICBpZiAobnVsbCAhPSByICYmICghMCA9PT0gci51bnN0YWJsZV9zdHJpY3RNb2RlICYmIChhID0gITApLCB2b2lkIDAgIT09IHIuaWRlbnRpZmllclByZWZpeCAmJiAodSA9IHIuaWRlbnRpZmllclByZWZpeCksIHZvaWQgMCAhPT0gci5vblJlY292ZXJhYmxlRXJyb3IgJiYgKG8gPSByLm9uUmVjb3ZlcmFibGVFcnJvcikpLCBuID0gSGwobiwgbnVsbCwgZSwgMSwgbnVsbCAhPSByID8gciA6IG51bGwsIGEsIDAsIHUsIG8pLCBlW1hvXSA9IG4uY3VycmVudCwgR2UoZSksIGwpCiAgICAgICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgbC5sZW5ndGg7IGUrKykgYSA9IChhID0gKHIgPSBsW2VdKS5fZ2V0VmVyc2lvbikoci5fc291cmNlKSwgbnVsbCA9PSBuLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEgPyBuLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEgPSBbciwgYV0gOiBuLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEucHVzaChyLCBhKTsKICAgICAgICAgICAgcmV0dXJuIG5ldyBHbChuKQogICAgICAgIH0sIGUucmVuZGVyID0gZnVuY3Rpb24oZSwgbiwgcikgewogICAgICAgICAgICBpZiAoIUpsKG4pKSB0aHJvdyBFcnJvcih0KDIwMCkpOwogICAgICAgICAgICByZXR1cm4gbmEobnVsbCwgZSwgbiwgITEsIHIpCiAgICAgICAgfSwgZS51bm1vdW50Q29tcG9uZW50QXROb2RlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIUpsKGUpKSB0aHJvdyBFcnJvcih0KDQwKSk7CiAgICAgICAgICAgIHJldHVybiAhIWUuX3JlYWN0Um9vdENvbnRhaW5lciAmJiAocGwoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbmEobnVsbCwgbnVsbCwgZSwgITEsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBlLl9yZWFjdFJvb3RDb250YWluZXIgPSBudWxsLCBlW1hvXSA9IG51bGwKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSksICEwKQogICAgICAgIH0sIGUudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMgPSBkbCwgZS51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciA9IGZ1bmN0aW9uKGUsIG4sIHIsIGwpIHsKICAgICAgICAgICAgaWYgKCFKbChyKSkgdGhyb3cgRXJyb3IodCgyMDApKTsKICAgICAgICAgICAgaWYgKG51bGwgPT0gZSB8fCB2b2lkIDAgPT09IGUuX3JlYWN0SW50ZXJuYWxzKSB0aHJvdyBFcnJvcih0KDM4KSk7CiAgICAgICAgICAgIHJldHVybiBuYShlLCBuLCByLCAhMSwgbCkKICAgICAgICB9LCBlLnZlcnNpb24gPSAiMTguMi4wLW5leHQtOWUzYjc3MmI4LTIwMjIwNjA4IgogICAgfSwgIm9iamVjdCIgPT0gdHlwZW9mIGV4cG9ydHMgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG1vZHVsZSA/IG4oZXhwb3J0cywgcmVxdWlyZSgicmVhY3QiKSkgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImV4cG9ydHMiLCAicmVhY3QiXSwgbikgOiBuKChlID0gZSB8fCBzZWxmKS5SZWFjdERPTSA9IHt9LCBlLlJlYWN0KQp9KCk7"}},"time_used":108,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":106,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/escape-html.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.828Z","timestamp":1785128398828,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-includes/js/dist/escape-html.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 562\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 20:43:01 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"770-67c3620e-65b15799bffa9468;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 461817\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: e26719441839913ae8743987109e3fa4-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":1904,"size_decoded":1148,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text","md5":"5ec2bbb9a4910365e6c7e5a65dda24bf","sha1":"db3fd154bdd8d78a024f46288fdaabc39dabcaa6","sha256":"5fa2bf49e7bbf739ed2d809b9acb5bbcd8cf753093f7486bec5759378673c69e","sha512":"d9816ac682e1e5cd61f9f8e44e24f610edb4dd4995173e72e50857738a16426d69cdb09db2e33e1cd7afe0eb44b50e5847e5a4f4ec88504695a19bf4379efd3e","ssdeep":"","tlshash":"09416b8dbcf270505207f079845f8419b23d869b18ad1f50be4c61b26f3247d42b5bde","first_seen":"2026-07-27T03:56:42.49176Z","last_seen":"2026-07-27T05:01:06.10647Z","times_seen":3,"resource_available":true,"data":"LyohIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCAqLyAhIGZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwogICAgdmFyIGUgPSB7CiAgICAgICAgICAgIGQ6IGZ1bmN0aW9uKG4sIHQpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gdCkgZS5vKHQsIHIpICYmICFlLm8obiwgcikgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIHIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICBnZXQ6IHRbcl0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG86IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwgbikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBTeW1ib2wudG9TdHJpbmdUYWcgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFN5bWJvbC50b1N0cmluZ1RhZywgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAiTW9kdWxlIgogICAgICAgICAgICAgICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIG4gPSB7fTsKICAgIGUucihuKSwgZS5kKG4sIHsKICAgICAgICBlc2NhcGVBbXBlcnNhbmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0sCiAgICAgICAgZXNjYXBlQXR0cmlidXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGMKICAgICAgICB9LAogICAgICAgIGVzY2FwZUVkaXRhYmxlSFRNTDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgfSwKICAgICAgICBlc2NhcGVIVE1MOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICB9LAogICAgICAgIGVzY2FwZUxlc3NUaGFuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICB9LAogICAgICAgIGVzY2FwZVF1b3RhdGlvbk1hcms6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdQogICAgICAgIH0sCiAgICAgICAgaXNWYWxpZEF0dHJpYnV0ZU5hbWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZgogICAgICAgIH0KICAgIH0pOwogICAgY29uc3QgdCA9IC9bXHUwMDdGLVx1MDA5RiAiJz4vPSJcdUZERDAtXHVGREVGXS87CgogICAgZnVuY3Rpb24gcihlKSB7CiAgICAgICAgcmV0dXJuIGUucmVwbGFjZSgvJig/IShbYS16MC05XSt8I1swLTldK3wjeFthLWYwLTldKyk7KS9naSwgIiZhbXA7IikKICAgIH0KCiAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICByZXR1cm4gZS5yZXBsYWNlKC8iL2csICImcXVvdDsiKQogICAgfQoKICAgIGZ1bmN0aW9uIG8oZSkgewogICAgICAgIHJldHVybiBlLnJlcGxhY2UoLzwvZywgIiZsdDsiKQogICAgfQoKICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlLnJlcGxhY2UoLz4vZywgIiZndDsiKQogICAgICAgIH0odShyKGUpKSkKICAgIH0KCiAgICBmdW5jdGlvbiBpKGUpIHsKICAgICAgICByZXR1cm4gbyhyKGUpKQogICAgfQoKICAgIGZ1bmN0aW9uIGEoZSkgewogICAgICAgIHJldHVybiBvKGUucmVwbGFjZSgvJi9nLCAiJmFtcDsiKSkKICAgIH0KCiAgICBmdW5jdGlvbiBmKGUpIHsKICAgICAgICByZXR1cm4gIXQudGVzdChlKQogICAgfSh3aW5kb3cud3AgPSB3aW5kb3cud3AgfHwge30pLmVzY2FwZUh0bWwgPSBuCn0oKTs="}},"time_used":102,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":102,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/jquery/ui/core.min3f14.js?ver=1.13.2","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.835Z","timestamp":1785128398835,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-includes/js/jquery/ui/core.min3f14.js?ver=1.13.2 HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 7735\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"83f7-67c3620e-a098aa36ba63cc8;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: bfcb5d032e65bdb9bd0b2c451cf08abb-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":33783,"size_decoded":8322,"mime_type":"application/x-javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (1005)","md5":"e4e8257fe9cfc06e18f707b383fd50c0","sha1":"9238d42f5923a8aad6c139a3c03a0f8c878a63e9","sha256":"7ad8695538b51ac6ae56a87b8261f2d2e3f89d1b654626db93b54c5f57d3798a","sha512":"402f763a9e76e6a2c4f1197f69bdfc50c1a0b8f16b0f91cb637c684c1b0a160c880ec959d7b857f8886601bf90862cb669cc02ee1d7b65cf0f1bdb055211bfc1","ssdeep":"384:CrkpFRdCeNLzKjluPjhC0tc0+hq3fWWsx+aWJ43bv7K39AUb4s3iVpmnoC/jMbtx:BGjyd2Px+Xr9Tb4sMMoC/jw","tlshash":"a1e2650d67e12525d697f03a5c2f8949f232a09f2749ac4cbd5c82e44f1a83882f7fb5","first_seen":"2023-11-16T04:44:13Z","last_seen":"2026-07-27T05:30:59.785775Z","times_seen":11,"resource_available":true,"data":"LyohIGpRdWVyeSBVSSAtIHYxLjEzLjIgLSAyMDIyLTA3LTE0CiAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICogSW5jbHVkZXM6IHdpZGdldC5qcywgcG9zaXRpb24uanMsIGRhdGEuanMsIGRpc2FibGUtc2VsZWN0aW9uLmpzLCBlZmZlY3QuanMsIGVmZmVjdHMvZWZmZWN0LWJsaW5kLmpzLCBlZmZlY3RzL2VmZmVjdC1ib3VuY2UuanMsIGVmZmVjdHMvZWZmZWN0LWNsaXAuanMsIGVmZmVjdHMvZWZmZWN0LWRyb3AuanMsIGVmZmVjdHMvZWZmZWN0LWV4cGxvZGUuanMsIGVmZmVjdHMvZWZmZWN0LWZhZGUuanMsIGVmZmVjdHMvZWZmZWN0LWZvbGQuanMsIGVmZmVjdHMvZWZmZWN0LWhpZ2hsaWdodC5qcywgZWZmZWN0cy9lZmZlY3QtcHVmZi5qcywgZWZmZWN0cy9lZmZlY3QtcHVsc2F0ZS5qcywgZWZmZWN0cy9lZmZlY3Qtc2NhbGUuanMsIGVmZmVjdHMvZWZmZWN0LXNoYWtlLmpzLCBlZmZlY3RzL2VmZmVjdC1zaXplLmpzLCBlZmZlY3RzL2VmZmVjdC1zbGlkZS5qcywgZWZmZWN0cy9lZmZlY3QtdHJhbnNmZXIuanMsIGZvY3VzYWJsZS5qcywgZm9ybS1yZXNldC1taXhpbi5qcywganF1ZXJ5LXBhdGNoLmpzLCBrZXljb2RlLmpzLCBsYWJlbHMuanMsIHNjcm9sbC1wYXJlbnQuanMsIHRhYmJhYmxlLmpzLCB1bmlxdWUtaWQuanMsIHdpZGdldHMvYWNjb3JkaW9uLmpzLCB3aWRnZXRzL2F1dG9jb21wbGV0ZS5qcywgd2lkZ2V0cy9idXR0b24uanMsIHdpZGdldHMvY2hlY2tib3hyYWRpby5qcywgd2lkZ2V0cy9jb250cm9sZ3JvdXAuanMsIHdpZGdldHMvZGF0ZXBpY2tlci5qcywgd2lkZ2V0cy9kaWFsb2cuanMsIHdpZGdldHMvZHJhZ2dhYmxlLmpzLCB3aWRnZXRzL2Ryb3BwYWJsZS5qcywgd2lkZ2V0cy9tZW51LmpzLCB3aWRnZXRzL21vdXNlLmpzLCB3aWRnZXRzL3Byb2dyZXNzYmFyLmpzLCB3aWRnZXRzL3Jlc2l6YWJsZS5qcywgd2lkZ2V0cy9zZWxlY3RhYmxlLmpzLCB3aWRnZXRzL3NlbGVjdG1lbnUuanMsIHdpZGdldHMvc2xpZGVyLmpzLCB3aWRnZXRzL3NvcnRhYmxlLmpzLCB3aWRnZXRzL3NwaW5uZXIuanMsIHdpZGdldHMvdGFicy5qcywgd2lkZ2V0cy90b29sdGlwLmpzCiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVQgKi8KISBmdW5jdGlvbih0KSB7CiAgICAidXNlIHN0cmljdCI7CiAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImpxdWVyeSJdLCB0KSA6IHQoalF1ZXJ5KQp9KGZ1bmN0aW9uKHgpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciB0LCBlLCBpLCBuLCBXLCBDLCBvLCBzLCByLCBsLCBhLCBoLCB1OwoKICAgIGZ1bmN0aW9uIEUodCwgZSwgaSkgewogICAgICAgIHJldHVybiBbcGFyc2VGbG9hdCh0WzBdKSAqIChhLnRlc3QodFswXSkgPyBlIC8gMTAwIDogMSksIHBhcnNlRmxvYXQodFsxXSkgKiAoYS50ZXN0KHRbMV0pID8gaSAvIDEwMCA6IDEpXQogICAgfQoKICAgIGZ1bmN0aW9uIEwodCwgZSkgewogICAgICAgIHJldHVybiBwYXJzZUludCh4LmNzcyh0LCBlKSwgMTApIHx8IDAKICAgIH0KCiAgICBmdW5jdGlvbiBOKHQpIHsKICAgICAgICByZXR1cm4gbnVsbCAhPSB0ICYmIHQgPT09IHQud2luZG93CiAgICB9CiAgICB4LnVpID0geC51aSB8fCB7fSwgeC51aS52ZXJzaW9uID0gIjEuMTMuMiIsCiAgICAgICAgLyohCiAgICAgICAgICogalF1ZXJ5IFVJIDpkYXRhIDEuMTMuMgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICAgICAgICAgKgogICAgICAgICAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAgICAgICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICAgICAgICAgKi8KICAgICAgICB4LmV4dGVuZCh4LmV4cHIucHNldWRvcywgewogICAgICAgICAgICBkYXRhOiB4LmV4cHIuY3JlYXRlUHNldWRvID8geC5leHByLmNyZWF0ZVBzZXVkbyhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIXguZGF0YSh0LCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSA6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhIXguZGF0YSh0LCBpWzNdKQogICAgICAgICAgICB9CiAgICAgICAgfSksCiAgICAgICAgLyohCiAgICAgICAgICogalF1ZXJ5IFVJIERpc2FibGUgU2VsZWN0aW9uIDEuMTMuMgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICAgICAgICAgKgogICAgICAgICAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAgICAgICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICAgICAgICAgKi8KICAgICAgICB4LmZuLmV4dGVuZCh7CiAgICAgICAgICAgIGRpc2FibGVTZWxlY3Rpb246ICh0ID0gIm9uc2VsZWN0c3RhcnQiIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpID8gInNlbGVjdHN0YXJ0IiA6ICJtb3VzZWRvd24iLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9uKHQgKyAiLnVpLWRpc2FibGVTZWxlY3Rpb24iLCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSwKICAgICAgICAgICAgZW5hYmxlU2VsZWN0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9mZigiLnVpLWRpc2FibGVTZWxlY3Rpb24iKQogICAgICAgICAgICB9CiAgICAgICAgfSksCiAgICAgICAgLyohCiAgICAgICAgICogalF1ZXJ5IFVJIEZvY3VzYWJsZSAxLjEzLjIKICAgICAgICAgKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAgICAgICAgICoKICAgICAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICAgICAgICAgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAgICAgICAgICovCiAgICAgICAgeC51aS5mb2N1c2FibGUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZhciBpLCBuLCBvLCBzID0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICByZXR1cm4gImFyZWEiID09PSBzID8gKG8gPSAoaSA9IHQucGFyZW50Tm9kZSkubmFtZSwgISghdC5ocmVmIHx8ICFvIHx8ICJtYXAiICE9PSBpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpICYmIDAgPCAoaSA9IHgoImltZ1t1c2VtYXA9JyMiICsgbyArICInXSIpKS5sZW5ndGggJiYgaS5pcygiOnZpc2libGUiKSkgOiAoL14oaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QpJC8udGVzdChzKSA/IChuID0gIXQuZGlzYWJsZWQpICYmIChvID0geCh0KS5jbG9zZXN0KCJmaWVsZHNldCIpWzBdKSAmJiAobiA9ICFvLmRpc2FibGVkKSA6IG4gPSAiYSIgPT09IHMgJiYgdC5ocmVmIHx8IGUsIG4gJiYgeCh0KS5pcygiOnZpc2libGUiKSAmJiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHQuY3NzKCJ2aXNpYmlsaXR5Iik7CiAgICAgICAgICAgICAgICBmb3IgKDsKICAgICAgICAgICAgICAgICAgICAiaW5oZXJpdCIgPT09IGU7KSB0ID0gdC5wYXJlbnQoKSwgZSA9IHQuY3NzKCJ2aXNpYmlsaXR5Iik7CiAgICAgICAgICAgICAgICByZXR1cm4gInZpc2libGUiID09PSBlCiAgICAgICAgICAgIH0oeCh0KSkpCiAgICAgICAgfSwgeC5leHRlbmQoeC5leHByLnBzZXVkb3MsIHsKICAgICAgICAgICAgZm9jdXNhYmxlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4geC51aS5mb2N1c2FibGUodCwgbnVsbCAhPSB4LmF0dHIodCwgInRhYmluZGV4IikpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgeC5mbi5fZm9ybSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHRoaXNbMF0uZm9ybSA/IHRoaXMuY2xvc2VzdCgiZm9ybSIpIDogeCh0aGlzWzBdLmZvcm0pCiAgICAgICAgfSwKICAgICAgICAvKiEKICAgICAgICAgKiBqUXVlcnkgVUkgRm9ybSBSZXNldCBNaXhpbiAxLjEzLjIKICAgICAgICAgKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAgICAgICAgICoKICAgICAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICAgICAgICAgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAgICAgICAgICovCiAgICAgICAgeC51aS5mb3JtUmVzZXRNaXhpbiA9IHsKICAgICAgICAgICAgX2Zvcm1SZXNldEhhbmRsZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB4KHRoaXMpOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZGF0YSgidWktZm9ybS1yZXNldC1pbnN0YW5jZXMiKTsKICAgICAgICAgICAgICAgICAgICB4LmVhY2godCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9iaW5kRm9ybVJlc2V0SGFuZGxlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZWxlbWVudC5fZm9ybSgpLCB0aGlzLmZvcm0ubGVuZ3RoICYmICgodCA9IHRoaXMuZm9ybS5kYXRhKCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlcyIpIHx8IFtdKS5sZW5ndGggfHwgdGhpcy5mb3JtLm9uKCJyZXNldC51aS1mb3JtLXJlc2V0IiwgdGhpcy5fZm9ybVJlc2V0SGFuZGxlciksIHQucHVzaCh0aGlzKSwgdGhpcy5mb3JtLmRhdGEoInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzIiwgdCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91bmJpbmRGb3JtUmVzZXRIYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgdGhpcy5mb3JtLmxlbmd0aCAmJiAoKHQgPSB0aGlzLmZvcm0uZGF0YSgidWktZm9ybS1yZXNldC1pbnN0YW5jZXMiKSkuc3BsaWNlKHguaW5BcnJheSh0aGlzLCB0KSwgMSksIHQubGVuZ3RoID8gdGhpcy5mb3JtLmRhdGEoInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzIiwgdCkgOiB0aGlzLmZvcm0ucmVtb3ZlRGF0YSgidWktZm9ybS1yZXNldC1pbnN0YW5jZXMiKS5vZmYoInJlc2V0LnVpLWZvcm0tcmVzZXQiKSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHgudWkuaWUgPSAhIS9tc2llIFtcdy5dKy8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpLAogICAgICAgIC8qIQogICAgICAgICAqIGpRdWVyeSBVSSBTdXBwb3J0IGZvciBqUXVlcnkgY29yZSAxLjgueCBhbmQgbmV3ZXIgMS4xMy4yCiAgICAgICAgICogaHR0cDovL2pxdWVyeXVpLmNvbQogICAgICAgICAqCiAgICAgICAgICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICAgICAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCiAgICAgICAgICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogICAgICAgICAqCiAgICAgICAgICovCiAgICAgICAgeC5leHByLnBzZXVkb3MgfHwgKHguZXhwci5wc2V1ZG9zID0geC5leHByWyI6Il0pLCB4LnVuaXF1ZVNvcnQgfHwgKHgudW5pcXVlU29ydCA9IHgudW5pcXVlKSwgeC5lc2NhcGVTZWxlY3RvciB8fCAoZSA9IC8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFteXHg4MC1cdUZGRkZcdy1dL2csIGkgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHJldHVybiBlID8gIlwwIiA9PT0gdCA/ICLvv70iIDogdC5zbGljZSgwLCAtMSkgKyAiXFwiICsgdC5jaGFyQ29kZUF0KHQubGVuZ3RoIC0gMSkudG9TdHJpbmcoMTYpICsgIiAiIDogIlxcIiArIHQKICAgICAgICB9LCB4LmVzY2FwZVNlbGVjdG9yID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gKHQgKyAiIikucmVwbGFjZShlLCBpKQogICAgICAgIH0pLCB4LmZuLmV2ZW4gJiYgeC5mbi5vZGQgfHwgeC5mbi5leHRlbmQoewogICAgICAgICAgICBldmVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJSAyID09IDAKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9kZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICUgMiA9PSAxCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSksCiAgICAgICAgLyohCiAgICAgICAgICogalF1ZXJ5IFVJIEtleWNvZGUgMS4xMy4yCiAgICAgICAgICogaHR0cDovL2pxdWVyeXVpLmNvbQogICAgICAgICAqCiAgICAgICAgICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICAgICAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCiAgICAgICAgICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogICAgICAgICAqLwogICAgICAgIHgudWkua2V5Q29kZSA9IHsKICAgICAgICAgICAgQkFDS1NQQUNFOiA4LAogICAgICAgICAgICBDT01NQTogMTg4LAogICAgICAgICAgICBERUxFVEU6IDQ2LAogICAgICAgICAgICBET1dOOiA0MCwKICAgICAgICAgICAgRU5EOiAzNSwKICAgICAgICAgICAgRU5URVI6IDEzLAogICAgICAgICAgICBFU0NBUEU6IDI3LAogICAgICAgICAgICBIT01FOiAzNiwKICAgICAgICAgICAgTEVGVDogMzcsCiAgICAgICAgICAgIFBBR0VfRE9XTjogMzQsCiAgICAgICAgICAgIFBBR0VfVVA6IDMzLAogICAgICAgICAgICBQRVJJT0Q6IDE5MCwKICAgICAgICAgICAgUklHSFQ6IDM5LAogICAgICAgICAgICBTUEFDRTogMzIsCiAgICAgICAgICAgIFRBQjogOSwKICAgICAgICAgICAgVVA6IDM4CiAgICAgICAgfSwKICAgICAgICAvKiEKICAgICAgICAgKiBqUXVlcnkgVUkgTGFiZWxzIDEuMTMuMgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICAgICAgICAgKgogICAgICAgICAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAgICAgICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogICAgICAgICAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICAgICAgICAgKi8KICAgICAgICB4LmZuLmxhYmVscyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCwgZSwgaTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoID8gdGhpc1swXS5sYWJlbHMgJiYgdGhpc1swXS5sYWJlbHMubGVuZ3RoID8gdGhpcy5wdXNoU3RhY2sodGhpc1swXS5sYWJlbHMpIDogKGUgPSB0aGlzLmVxKDApLnBhcmVudHMoImxhYmVsIiksICh0ID0gdGhpcy5hdHRyKCJpZCIpKSAmJiAoaSA9IChpID0gdGhpcy5lcSgwKS5wYXJlbnRzKCkubGFzdCgpKS5hZGQoKGkubGVuZ3RoID8gaSA6IHRoaXMpLnNpYmxpbmdzKCkpLCB0ID0gImxhYmVsW2Zvcj0nIiArIHguZXNjYXBlU2VsZWN0b3IodCkgKyAiJ10iLCBlID0gZS5hZGQoaS5maW5kKHQpLmFkZEJhY2sodCkpKSwgdGhpcy5wdXNoU3RhY2soZSkpIDogdGhpcy5wdXNoU3RhY2soW10pCiAgICAgICAgfSwgeC51aS5wbHVnaW4gPSB7CiAgICAgICAgICAgIGFkZDogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgdmFyIG4sIG8gPSB4LnVpW3RdLnByb3RvdHlwZTsKICAgICAgICAgICAgICAgIGZvciAobiBpbiBpKSBvLnBsdWdpbnNbbl0gPSBvLnBsdWdpbnNbbl0gfHwgW10sIG8ucGx1Z2luc1tuXS5wdXNoKFtlLCBpW25dXSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY2FsbDogZnVuY3Rpb24odCwgZSwgaSwgbikgewogICAgICAgICAgICAgICAgdmFyIG8sIHMgPSB0LnBsdWdpbnNbZV07CiAgICAgICAgICAgICAgICBpZiAocyAmJiAobiB8fCB0LmVsZW1lbnRbMF0ucGFyZW50Tm9kZSAmJiAxMSAhPT0gdC5lbGVtZW50WzBdLnBhcmVudE5vZGUubm9kZVR5cGUpKQogICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDA7IG8gPCBzLmxlbmd0aDsgbysrKSB0Lm9wdGlvbnNbc1tvXVswXV0gJiYgc1tvXVsxXS5hcHBseSh0LmVsZW1lbnQsIGkpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIC8qIQogICAgICAgICAqIGpRdWVyeSBVSSBQb3NpdGlvbiAxLjEzLjIKICAgICAgICAgKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAgICAgICAgICoKICAgICAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICAgICAgICAgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAgICAgICAgICoKICAgICAgICAgKiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9wb3NpdGlvbi8KICAgICAgICAgKi8KICAgICAgICBXID0gTWF0aC5tYXgsIEMgPSBNYXRoLmFicywgbyA9IC9sZWZ0fGNlbnRlcnxyaWdodC8sIHMgPSAvdG9wfGNlbnRlcnxib3R0b20vLCByID0gL1tcK1wtXVxkKyhcLltcZF0rKT8lPy8sIGwgPSAvXlx3Ky8sIGEgPSAvJSQvLCBoID0geC5mbi5wb3NpdGlvbiwgeC5wb3NpdGlvbiA9IHsKICAgICAgICAgICAgc2Nyb2xsYmFyV2lkdGg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQsIGUsIGk7CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBuID8gbiA6IChpID0gKGUgPSB4KCI8ZGl2IHN0eWxlPSdkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjIwMHB4O2hlaWdodDoyMDBweDtvdmVyZmxvdzpoaWRkZW47Jz48ZGl2IHN0eWxlPSdoZWlnaHQ6MzAwcHg7d2lkdGg6YXV0bzsnPjwvZGl2PjwvZGl2PiIpKS5jaGlsZHJlbigpWzBdLCB4KCJib2R5IikuYXBwZW5kKGUpLCB0ID0gaS5vZmZzZXRXaWR0aCwgZS5jc3MoIm92ZXJmbG93IiwgInNjcm9sbCIpLCB0ID09PSAoaSA9IGkub2Zmc2V0V2lkdGgpICYmIChpID0gZVswXS5jbGllbnRXaWR0aCksIGUucmVtb3ZlKCksIG4gPSB0IC0gaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0U2Nyb2xsSW5mbzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0LmlzV2luZG93IHx8IHQuaXNEb2N1bWVudCA/ICIiIDogdC5lbGVtZW50LmNzcygib3ZlcmZsb3cteCIpLAogICAgICAgICAgICAgICAgICAgIGkgPSB0LmlzV2luZG93IHx8IHQuaXNEb2N1bWVudCA/ICIiIDogdC5lbGVtZW50LmNzcygib3ZlcmZsb3cteSIpLAogICAgICAgICAgICAgICAgICAgIGUgPSAic2Nyb2xsIiA9PT0gZSB8fCAiYXV0byIgPT09IGUgJiYgdC53aWR0aCA8IHQuZWxlbWVudFswXS5zY3JvbGxXaWR0aDsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICJzY3JvbGwiID09PSBpIHx8ICJhdXRvIiA9PT0gaSAmJiB0LmhlaWdodCA8IHQuZWxlbWVudFswXS5zY3JvbGxIZWlnaHQgPyB4LnBvc2l0aW9uLnNjcm9sbGJhcldpZHRoKCkgOiAwLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogZSA/IHgucG9zaXRpb24uc2Nyb2xsYmFyV2lkdGgoKSA6IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0V2l0aGluSW5mbzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB4KHQgfHwgd2luZG93KSwKICAgICAgICAgICAgICAgICAgICBpID0gTihlWzBdKSwKICAgICAgICAgICAgICAgICAgICBuID0gISFlWzBdICYmIDkgPT09IGVbMF0ubm9kZVR5cGU7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgaXNXaW5kb3c6IGksCiAgICAgICAgICAgICAgICAgICAgaXNEb2N1bWVudDogbiwKICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6ICFpICYmICFuID8geCh0KS5vZmZzZXQoKSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzY3JvbGxMZWZ0OiBlLnNjcm9sbExlZnQoKSwKICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IGUuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGUub3V0ZXJXaWR0aCgpLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogZS5vdXRlckhlaWdodCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB4LmZuLnBvc2l0aW9uID0gZnVuY3Rpb24oZikgewogICAgICAgICAgICB2YXIgYywgZCwgcCwgZywgbSwgdiwgeSwgdywgYiwgXywgdCwgZTsKICAgICAgICAgICAgcmV0dXJuIGYgJiYgZi5vZiA/ICh2ID0gInN0cmluZyIgPT0gdHlwZW9mKGYgPSB4LmV4dGVuZCh7fSwgZikpLm9mID8geChkb2N1bWVudCkuZmluZChmLm9mKSA6IHgoZi5vZiksIHkgPSB4LnBvc2l0aW9uLmdldFdpdGhpbkluZm8oZi53aXRoaW4pLCB3ID0geC5wb3NpdGlvbi5nZXRTY3JvbGxJbmZvKHkpLCBiID0gKGYuY29sbGlzaW9uIHx8ICJmbGlwIikuc3BsaXQoIiAiKSwgXyA9IHt9LCBlID0gOSA9PT0gKGUgPSAodCA9IHYpWzBdKS5ub2RlVHlwZSA/IHsKICAgICAgICAgICAgICAgIHdpZHRoOiB0LndpZHRoKCksCiAgICAgICAgICAgICAgICBoZWlnaHQ6IHQuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICBvZmZzZXQ6IHsKICAgICAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgbGVmdDogMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IDogTihlKSA/IHsKICAgICAgICAgICAgICAgIHdpZHRoOiB0LndpZHRoKCksCiAgICAgICAgICAgICAgICBoZWlnaHQ6IHQuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICBvZmZzZXQ6IHsKICAgICAgICAgICAgICAgICAgICB0b3A6IHQuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICAgICAgbGVmdDogdC5zY3JvbGxMZWZ0KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSA6IGUucHJldmVudERlZmF1bHQgPyB7CiAgICAgICAgICAgICAgICB3aWR0aDogMCwKICAgICAgICAgICAgICAgIGhlaWdodDogMCwKICAgICAgICAgICAgICAgIG9mZnNldDogewogICAgICAgICAgICAgICAgICAgIHRvcDogZS5wYWdlWSwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiBlLnBhZ2VYCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICB3aWR0aDogdC5vdXRlcldpZHRoKCksCiAgICAgICAgICAgICAgICBoZWlnaHQ6IHQub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgICAgICAgIG9mZnNldDogdC5vZmZzZXQoKQogICAgICAgICAgICB9LCB2WzBdLnByZXZlbnREZWZhdWx0ICYmIChmLmF0ID0gImxlZnQgdG9wIiksIGQgPSBlLndpZHRoLCBwID0gZS5oZWlnaHQsIG0gPSB4LmV4dGVuZCh7fSwgZyA9IGUub2Zmc2V0KSwgeC5lYWNoKFsibXkiLCAiYXQiXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgZSwgaSA9IChmW3RoaXNdIHx8ICIiKS5zcGxpdCgiICIpOwogICAgICAgICAgICAgICAgKGkgPSAxID09PSBpLmxlbmd0aCA/IG8udGVzdChpWzBdKSA/IGkuY29uY2F0KFsiY2VudGVyIl0pIDogcy50ZXN0KGlbMF0pID8gWyJjZW50ZXIiXS5jb25jYXQoaSkgOiBbImNlbnRlciIsICJjZW50ZXIiXSA6IGkpWzBdID0gby50ZXN0KGlbMF0pID8gaVswXSA6ICJjZW50ZXIiLCBpWzFdID0gcy50ZXN0KGlbMV0pID8gaVsxXSA6ICJjZW50ZXIiLCB0ID0gci5leGVjKGlbMF0pLCBlID0gci5leGVjKGlbMV0pLCBfW3RoaXNdID0gW3QgPyB0WzBdIDogMCwgZSA/IGVbMF0gOiAwXSwgZlt0aGlzXSA9IFtsLmV4ZWMoaVswXSlbMF0sIGwuZXhlYyhpWzFdKVswXV0KICAgICAgICAgICAgfSksIDEgPT09IGIubGVuZ3RoICYmIChiWzFdID0gYlswXSksICJyaWdodCIgPT09IGYuYXRbMF0gPyBtLmxlZnQgKz0gZCA6ICJjZW50ZXIiID09PSBmLmF0WzBdICYmIChtLmxlZnQgKz0gZCAvIDIpLCAiYm90dG9tIiA9PT0gZi5hdFsxXSA/IG0udG9wICs9IHAgOiAiY2VudGVyIiA9PT0gZi5hdFsxXSAmJiAobS50b3AgKz0gcCAvIDIpLCBjID0gRShfLmF0LCBkLCBwKSwgbS5sZWZ0ICs9IGNbMF0sIG0udG9wICs9IGNbMV0sIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBpLCB0LCByID0geCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBsID0gci5vdXRlcldpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgYSA9IHIub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICBlID0gTCh0aGlzLCAibWFyZ2luTGVmdCIpLAogICAgICAgICAgICAgICAgICAgIG4gPSBMKHRoaXMsICJtYXJnaW5Ub3AiKSwKICAgICAgICAgICAgICAgICAgICBvID0gbCArIGUgKyBMKHRoaXMsICJtYXJnaW5SaWdodCIpICsgdy53aWR0aCwKICAgICAgICAgICAgICAgICAgICBzID0gYSArIG4gKyBMKHRoaXMsICJtYXJnaW5Cb3R0b20iKSArIHcuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgIGggPSB4LmV4dGVuZCh7fSwgbSksCiAgICAgICAgICAgICAgICAgICAgdSA9IEUoXy5teSwgci5vdXRlcldpZHRoKCksIHIub3V0ZXJIZWlnaHQoKSk7CiAgICAgICAgICAgICAgICAicmlnaHQiID09PSBmLm15WzBdID8gaC5sZWZ0IC09IGwgOiAiY2VudGVyIiA9PT0gZi5teVswXSAmJiAoaC5sZWZ0IC09IGwgLyAyKSwgImJvdHRvbSIgPT09IGYubXlbMV0gPyBoLnRvcCAtPSBhIDogImNlbnRlciIgPT09IGYubXlbMV0gJiYgKGgudG9wIC09IGEgLyAyKSwgaC5sZWZ0ICs9IHVbMF0sIGgudG9wICs9IHVbMV0sIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogZSwKICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IG4KICAgICAgICAgICAgICAgIH0sIHguZWFjaChbImxlZnQiLCAidG9wIl0sIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB4LnVpLnBvc2l0aW9uW2JbdF1dICYmIHgudWkucG9zaXRpb25bYlt0XV1bZV0oaCwgewogICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRXaWR0aDogZCwKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0SGVpZ2h0OiBwLAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtV2lkdGg6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1IZWlnaHQ6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxpc2lvblBvc2l0aW9uOiBpLAogICAgICAgICAgICAgICAgICAgICAgICBjb2xsaXNpb25XaWR0aDogbywKICAgICAgICAgICAgICAgICAgICAgICAgY29sbGlzaW9uSGVpZ2h0OiBzLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IFtjWzBdICsgdVswXSwgY1sxXSArIHVbMV1dLAogICAgICAgICAgICAgICAgICAgICAgICBteTogZi5teSwKICAgICAgICAgICAgICAgICAgICAgICAgYXQ6IGYuYXQsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbjogeSwKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbTogcgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSwgZi51c2luZyAmJiAodCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGcubGVmdCAtIGgubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUgKyBkIC0gbCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGcudG9wIC0gaC50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuICsgcCAtIGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGcubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGcudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGgubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGgudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWw6IGkgPCAwID8gImxlZnQiIDogMCA8IGUgPyAicmlnaHQiIDogImNlbnRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogbyA8IDAgPyAidG9wIiA6IDAgPCBuID8gImJvdHRvbSIgOiAibWlkZGxlIgogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGQgPCBsICYmIEMoZSArIGkpIDwgZCAmJiAocy5ob3Jpem9udGFsID0gImNlbnRlciIpLCBwIDwgYSAmJiBDKG4gKyBvKSA8IHAgJiYgKHMudmVydGljYWwgPSAibWlkZGxlIiksIFcoQyhlKSwgQyhpKSkgPiBXKEMobiksIEMobykpID8gcy5pbXBvcnRhbnQgPSAiaG9yaXpvbnRhbCIgOiBzLmltcG9ydGFudCA9ICJ2ZXJ0aWNhbCIsIGYudXNpbmcuY2FsbCh0aGlzLCB0LCBzKQogICAgICAgICAgICAgICAgfSksIHIub2Zmc2V0KHguZXh0ZW5kKGgsIHsKICAgICAgICAgICAgICAgICAgICB1c2luZzogdAogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0pKSA6IGguYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgIH0sIHgudWkucG9zaXRpb24gPSB7CiAgICAgICAgICAgIGZpdDogewogICAgICAgICAgICAgICAgbGVmdDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpLCBuID0gZS53aXRoaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLmlzV2luZG93ID8gbi5zY3JvbGxMZWZ0IDogbi5vZmZzZXQubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4ud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmxlZnQgLSBlLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpbkxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvIC0gcywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHMgKyBlLmNvbGxpc2lvbldpZHRoIC0gbiAtIG87CiAgICAgICAgICAgICAgICAgICAgZS5jb2xsaXNpb25XaWR0aCA+IG4gPyAwIDwgciAmJiBsIDw9IDAgPyAoaSA9IHQubGVmdCArIHIgKyBlLmNvbGxpc2lvbldpZHRoIC0gbiAtIG8sIHQubGVmdCArPSByIC0gaSkgOiB0LmxlZnQgPSAhKDAgPCBsICYmIHIgPD0gMCkgJiYgbCA8IHIgPyBvICsgbiAtIGUuY29sbGlzaW9uV2lkdGggOiBvIDogMCA8IHIgPyB0LmxlZnQgKz0gciA6IDAgPCBsID8gdC5sZWZ0IC09IGwgOiB0LmxlZnQgPSBXKHQubGVmdCAtIHMsIHQubGVmdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b3A6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgbiA9IGUud2l0aGluLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gbi5pc1dpbmRvdyA/IG4uc2Nyb2xsVG9wIDogbi5vZmZzZXQudG9wLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZS53aXRoaW4uaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC50b3AgLSBlLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpblRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4gLSBzLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gcyArIGUuY29sbGlzaW9uSGVpZ2h0IC0gbyAtIG47CiAgICAgICAgICAgICAgICAgICAgZS5jb2xsaXNpb25IZWlnaHQgPiBvID8gMCA8IHIgJiYgbCA8PSAwID8gKGkgPSB0LnRvcCArIHIgKyBlLmNvbGxpc2lvbkhlaWdodCAtIG8gLSBuLCB0LnRvcCArPSByIC0gaSkgOiB0LnRvcCA9ICEoMCA8IGwgJiYgciA8PSAwKSAmJiBsIDwgciA/IG4gKyBvIC0gZS5jb2xsaXNpb25IZWlnaHQgOiBuIDogMCA8IHIgPyB0LnRvcCArPSByIDogMCA8IGwgPyB0LnRvcCAtPSBsIDogdC50b3AgPSBXKHQudG9wIC0gcywgdC50b3ApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZsaXA6IHsKICAgICAgICAgICAgICAgIGxlZnQ6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUud2l0aGluLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gaS5vZmZzZXQubGVmdCArIGkuc2Nyb2xsTGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGkud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpLmlzV2luZG93ID8gaS5zY3JvbGxMZWZ0IDogaS5vZmZzZXQubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQubGVmdCAtIGUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHMgLSBpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gcyArIGUuY29sbGlzaW9uV2lkdGggLSBvIC0gaSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9ICJsZWZ0IiA9PT0gZS5teVswXSA/IC1lLmVsZW1XaWR0aCA6ICJyaWdodCIgPT09IGUubXlbMF0gPyBlLmVsZW1XaWR0aCA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAibGVmdCIgPT09IGUuYXRbMF0gPyBlLnRhcmdldFdpZHRoIDogInJpZ2h0IiA9PT0gZS5hdFswXSA/IC1lLnRhcmdldFdpZHRoIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IC0yICogZS5vZmZzZXRbMF07CiAgICAgICAgICAgICAgICAgICAgciA8IDAgPyAoKG8gPSB0LmxlZnQgKyBsICsgYSArIGggKyBlLmNvbGxpc2lvbldpZHRoIC0gbyAtIG4pIDwgMCB8fCBvIDwgQyhyKSkgJiYgKHQubGVmdCArPSBsICsgYSArIGgpIDogMCA8IHMgJiYgKDAgPCAobiA9IHQubGVmdCAtIGUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCArIGwgKyBhICsgaCAtIGkpIHx8IEMobikgPCBzKSAmJiAodC5sZWZ0ICs9IGwgKyBhICsgaCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b3A6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUud2l0aGluLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gaS5vZmZzZXQudG9wICsgaS5zY3JvbGxUb3AsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkuaXNXaW5kb3cgPyBpLnNjcm9sbFRvcCA6IGkub2Zmc2V0LnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQudG9wIC0gZS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5Ub3AsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBzIC0gaSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHMgKyBlLmNvbGxpc2lvbkhlaWdodCAtIG8gLSBpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gInRvcCIgPT09IGUubXlbMV0gPyAtZS5lbGVtSGVpZ2h0IDogImJvdHRvbSIgPT09IGUubXlbMV0gPyBlLmVsZW1IZWlnaHQgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gInRvcCIgPT09IGUuYXRbMV0gPyBlLnRhcmdldEhlaWdodCA6ICJib3R0b20iID09PSBlLmF0WzFdID8gLWUudGFyZ2V0SGVpZ2h0IDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IC0yICogZS5vZmZzZXRbMV07CiAgICAgICAgICAgICAgICAgICAgciA8IDAgPyAoKG8gPSB0LnRvcCArIGwgKyBhICsgaCArIGUuY29sbGlzaW9uSGVpZ2h0IC0gbyAtIG4pIDwgMCB8fCBvIDwgQyhyKSkgJiYgKHQudG9wICs9IGwgKyBhICsgaCkgOiAwIDwgcyAmJiAoMCA8IChuID0gdC50b3AgLSBlLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpblRvcCArIGwgKyBhICsgaCAtIGkpIHx8IEMobikgPCBzKSAmJiAodC50b3AgKz0gbCArIGEgKyBoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBmbGlwZml0OiB7CiAgICAgICAgICAgICAgICBsZWZ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB4LnVpLnBvc2l0aW9uLmZsaXAubGVmdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCB4LnVpLnBvc2l0aW9uLmZpdC5sZWZ0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHgudWkucG9zaXRpb24uZmxpcC50b3AuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgeC51aS5wb3NpdGlvbi5maXQudG9wLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHgudWkuc2FmZUFjdGl2ZUVsZW1lbnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaSA9IGUuYWN0aXZlRWxlbWVudAogICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICBpID0gZS5ib2R5CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGkgPSAoaSA9IGkgfHwgZS5ib2R5KS5ub2RlTmFtZSA/IGkgOiBlLmJvZHkKICAgICAgICB9LCB4LnVpLnNhZmVCbHVyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB0ICYmICJib2R5IiAhPT0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICYmIHgodCkudHJpZ2dlcigiYmx1ciIpCiAgICAgICAgfSwKICAgICAgICAvKiEKICAgICAgICAgKiBqUXVlcnkgVUkgU2Nyb2xsIFBhcmVudCAxLjEzLjIKICAgICAgICAgKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAgICAgICAgICoKICAgICAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICAgICAgICAgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAgICAgICAgICovCiAgICAgICAgeC5mbi5zY3JvbGxQYXJlbnQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5jc3MoInBvc2l0aW9uIiksCiAgICAgICAgICAgICAgICBpID0gImFic29sdXRlIiA9PT0gZSwKICAgICAgICAgICAgICAgIG4gPSB0ID8gLyhhdXRvfHNjcm9sbHxoaWRkZW4pLyA6IC8oYXV0b3xzY3JvbGwpLywKICAgICAgICAgICAgICAgIHQgPSB0aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB4KHRoaXMpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAoIWkgfHwgInN0YXRpYyIgIT09IHQuY3NzKCJwb3NpdGlvbiIpKSAmJiBuLnRlc3QodC5jc3MoIm92ZXJmbG93IikgKyB0LmNzcygib3ZlcmZsb3cteSIpICsgdC5jc3MoIm92ZXJmbG93LXgiKSkKICAgICAgICAgICAgICAgIH0pLmVxKDApOwogICAgICAgICAgICByZXR1cm4gImZpeGVkIiAhPT0gZSAmJiB0Lmxlbmd0aCA/IHQgOiB4KHRoaXNbMF0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCkKICAgICAgICB9LAogICAgICAgIC8qIQogICAgICAgICAqIGpRdWVyeSBVSSBUYWJiYWJsZSAxLjEzLjIKICAgICAgICAgKiBodHRwOi8vanF1ZXJ5dWkuY29tCiAgICAgICAgICoKICAgICAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICAgICAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICAgICAgICAgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAgICAgICAgICovCiAgICAgICAgeC5leHRlbmQoeC5leHByLnBzZXVkb3MsIHsKICAgICAgICAgICAgdGFiYmFibGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0geC5hdHRyKHQsICJ0YWJpbmRleCIpLAogICAgICAgICAgICAgICAgICAgIGkgPSBudWxsICE9IGU7CiAgICAgICAgICAgICAgICByZXR1cm4gKCFpIHx8IDAgPD0gZSkgJiYgeC51aS5mb2N1c2FibGUodCwgaSkKICAgICAgICAgICAgfQogICAgICAgIH0pLAogICAgICAgIC8qIQogICAgICAgICAqIGpRdWVyeSBVSSBVbmlxdWUgSUQgMS4xMy4yCiAgICAgICAgICogaHR0cDovL2pxdWVyeXVpLmNvbQogICAgICAgICAqCiAgICAgICAgICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICAgICAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCiAgICAgICAgICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogICAgICAgICAqLwogICAgICAgIHguZm4uZXh0ZW5kKHsKICAgICAgICAgICAgdW5pcXVlSWQ6ICh1ID0gMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaWQgfHwgKHRoaXMuaWQgPSAidWktaWQtIiArICsrdSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pLAogICAgICAgICAgICByZW1vdmVVbmlxdWVJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIC9edWktaWQtXGQrJC8udGVzdCh0aGlzLmlkKSAmJiB4KHRoaXMpLnJlbW92ZUF0dHIoImlkIikKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIC8qIQogICAgICogalF1ZXJ5IFVJIFdpZGdldCAxLjEzLjIKICAgICAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICAgICAqCiAgICAgKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycwogICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogICAgICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogICAgICovCiAgICB2YXIgZiwgYyA9IDAsCiAgICAgICAgZCA9IEFycmF5LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICBwID0gQXJyYXkucHJvdG90eXBlLnNsaWNlOwogICAgeC5jbGVhbkRhdGEgPSAoZiA9IHguY2xlYW5EYXRhLCBmdW5jdGlvbih0KSB7CiAgICAgICAgZm9yICh2YXIgZSwgaSwgbiA9IDA7IG51bGwgIT0gKGkgPSB0W25dKTsgbisrKShlID0geC5fZGF0YShpLCAiZXZlbnRzIikpICYmIGUucmVtb3ZlICYmIHgoaSkudHJpZ2dlckhhbmRsZXIoInJlbW92ZSIpOwogICAgICAgIGYodCkKICAgIH0pLCB4LndpZGdldCA9IGZ1bmN0aW9uKHQsIGksIGUpIHsKICAgICAgICB2YXIgbiwgbywgcywgciA9IHt9LAogICAgICAgICAgICBsID0gdC5zcGxpdCgiLiIpWzBdLAogICAgICAgICAgICBhID0gbCArICItIiArICh0ID0gdC5zcGxpdCgiLiIpWzFdKTsKICAgICAgICByZXR1cm4gZSB8fCAoZSA9IGksIGkgPSB4LldpZGdldCksIEFycmF5LmlzQXJyYXkoZSkgJiYgKGUgPSB4LmV4dGVuZC5hcHBseShudWxsLCBbe31dLmNvbmNhdChlKSkpLCB4LmV4cHIucHNldWRvc1thLnRvTG93ZXJDYXNlKCldID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gISF4LmRhdGEodCwgYSkKICAgICAgICB9LCB4W2xdID0geFtsXSB8fCB7fSwgbiA9IHhbbF1bdF0sIG8gPSB4W2xdW3RdID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICBpZiAoIXRoaXMgfHwgIXRoaXMuX2NyZWF0ZVdpZGdldCkgcmV0dXJuIG5ldyBvKHQsIGUpOwogICAgICAgICAgICBhcmd1bWVudHMubGVuZ3RoICYmIHRoaXMuX2NyZWF0ZVdpZGdldCh0LCBlKQogICAgICAgIH0sIHguZXh0ZW5kKG8sIG4sIHsKICAgICAgICAgICAgdmVyc2lvbjogZS52ZXJzaW9uLAogICAgICAgICAgICBfcHJvdG86IHguZXh0ZW5kKHt9LCBlKSwKICAgICAgICAgICAgX2NoaWxkQ29uc3RydWN0b3JzOiBbXQogICAgICAgIH0pLCAocyA9IG5ldyBpKS5vcHRpb25zID0geC53aWRnZXQuZXh0ZW5kKHt9LCBzLm9wdGlvbnMpLCB4LmVhY2goZSwgZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICBmdW5jdGlvbiBvKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkucHJvdG90eXBlW2VdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gcyh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaS5wcm90b3R5cGVbZV0uYXBwbHkodGhpcywgdCkKICAgICAgICAgICAgfQogICAgICAgICAgICByW2VdID0gImZ1bmN0aW9uIiAhPSB0eXBlb2YgbiA/IG4gOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBlID0gdGhpcy5fc3VwZXIsCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuX3N1cGVyQXBwbHk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VwZXIgPSBvLCB0aGlzLl9zdXBlckFwcGx5ID0gcywgdCA9IG4uYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdGhpcy5fc3VwZXIgPSBlLCB0aGlzLl9zdXBlckFwcGx5ID0gaSwgdAogICAgICAgICAgICB9CiAgICAgICAgfSksIG8ucHJvdG90eXBlID0geC53aWRnZXQuZXh0ZW5kKHMsIHsKICAgICAgICAgICAgd2lkZ2V0RXZlbnRQcmVmaXg6IG4gJiYgcy53aWRnZXRFdmVudFByZWZpeCB8fCB0CiAgICAgICAgfSwgciwgewogICAgICAgICAgICBjb25zdHJ1Y3RvcjogbywKICAgICAgICAgICAgbmFtZXNwYWNlOiBsLAogICAgICAgICAgICB3aWRnZXROYW1lOiB0LAogICAgICAgICAgICB3aWRnZXRGdWxsTmFtZTogYQogICAgICAgIH0pLCBuID8gKHguZWFjaChuLl9jaGlsZENvbnN0cnVjdG9ycywgZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgaSA9IGUucHJvdG90eXBlOwogICAgICAgICAgICB4LndpZGdldChpLm5hbWVzcGFjZSArICIuIiArIGkud2lkZ2V0TmFtZSwgbywgZS5fcHJvdG8pCiAgICAgICAgfSksIGRlbGV0ZSBuLl9jaGlsZENvbnN0cnVjdG9ycykgOiBpLl9jaGlsZENvbnN0cnVjdG9ycy5wdXNoKG8pLCB4LndpZGdldC5icmlkZ2UodCwgbyksIG8KICAgIH0sIHgud2lkZ2V0LmV4dGVuZCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICBmb3IgKHZhciBlLCBpLCBuID0gcC5jYWxsKGFyZ3VtZW50cywgMSksIG8gPSAwLCBzID0gbi5sZW5ndGg7IG8gPCBzOyBvKyspCiAgICAgICAgICAgIGZvciAoZSBpbiBuW29dKSBpID0gbltvXVtlXSwgZC5jYWxsKG5bb10sIGUpICYmIHZvaWQgMCAhPT0gaSAmJiAoeC5pc1BsYWluT2JqZWN0KGkpID8gdFtlXSA9IHguaXNQbGFpbk9iamVjdCh0W2VdKSA/IHgud2lkZ2V0LmV4dGVuZCh7fSwgdFtlXSwgaSkgOiB4LndpZGdldC5leHRlbmQoe30sIGkpIDogdFtlXSA9IGkpOwogICAgICAgIHJldHVybiB0CiAgICB9LCB4LndpZGdldC5icmlkZ2UgPSBmdW5jdGlvbihzLCBlKSB7CiAgICAgICAgdmFyIHIgPSBlLnByb3RvdHlwZS53aWRnZXRGdWxsTmFtZSB8fCBzOwogICAgICAgIHguZm5bc10gPSBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgIHZhciB0ID0gInN0cmluZyIgPT0gdHlwZW9mIGksCiAgICAgICAgICAgICAgICBuID0gcC5jYWxsKGFyZ3VtZW50cywgMSksCiAgICAgICAgICAgICAgICBvID0gdGhpczsKICAgICAgICAgICAgcmV0dXJuIHQgPyB0aGlzLmxlbmd0aCB8fCAiaW5zdGFuY2UiICE9PSBpID8gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQsIGUgPSB4LmRhdGEodGhpcywgcik7CiAgICAgICAgICAgICAgICByZXR1cm4gImluc3RhbmNlIiA9PT0gaSA/IChvID0gZSwgITEpIDogZSA/ICJmdW5jdGlvbiIgIT0gdHlwZW9mIGVbaV0gfHwgIl8iID09PSBpLmNoYXJBdCgwKSA/IHguZXJyb3IoIm5vIHN1Y2ggbWV0aG9kICciICsgaSArICInIGZvciAiICsgcyArICIgd2lkZ2V0IGluc3RhbmNlIikgOiAodCA9IGVbaV0uYXBwbHkoZSwgbikpICE9PSBlICYmIHZvaWQgMCAhPT0gdCA/IChvID0gdCAmJiB0LmpxdWVyeSA/IG8ucHVzaFN0YWNrKHQuZ2V0KCkpIDogdCwgITEpIDogdm9pZCAwIDogeC5lcnJvcigiY2Fubm90IGNhbGwgbWV0aG9kcyBvbiAiICsgcyArICIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247IGF0dGVtcHRlZCB0byBjYWxsIG1ldGhvZCAnIiArIGkgKyAiJyIpCiAgICAgICAgICAgIH0pIDogbyA9IHZvaWQgMCA6IChuLmxlbmd0aCAmJiAoaSA9IHgud2lkZ2V0LmV4dGVuZC5hcHBseShudWxsLCBbaV0uY29uY2F0KG4pKSksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0geC5kYXRhKHRoaXMsIHIpOwogICAgICAgICAgICAgICAgdCA/ICh0Lm9wdGlvbihpIHx8IHt9KSwgdC5faW5pdCAmJiB0Ll9pbml0KCkpIDogeC5kYXRhKHRoaXMsIHIsIG5ldyBlKGksIHRoaXMpKQogICAgICAgICAgICB9KSksIG8KICAgICAgICB9CiAgICB9LCB4LldpZGdldCA9IGZ1bmN0aW9uKCkge30sIHguV2lkZ2V0Ll9jaGlsZENvbnN0cnVjdG9ycyA9IFtdLCB4LldpZGdldC5wcm90b3R5cGUgPSB7CiAgICAgICAgd2lkZ2V0TmFtZTogIndpZGdldCIsCiAgICAgICAgd2lkZ2V0RXZlbnRQcmVmaXg6ICIiLAogICAgICAgIGRlZmF1bHRFbGVtZW50OiAiPGRpdj4iLAogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgY2xhc3Nlczoge30sCiAgICAgICAgICAgIGRpc2FibGVkOiAhMSwKICAgICAgICAgICAgY3JlYXRlOiBudWxsCiAgICAgICAgfSwKICAgICAgICBfY3JlYXRlV2lkZ2V0OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIGUgPSB4KGUgfHwgdGhpcy5kZWZhdWx0RWxlbWVudCB8fCB0aGlzKVswXSwgdGhpcy5lbGVtZW50ID0geChlKSwgdGhpcy51dWlkID0gYysrLCB0aGlzLmV2ZW50TmFtZXNwYWNlID0gIi4iICsgdGhpcy53aWRnZXROYW1lICsgdGhpcy51dWlkLCB0aGlzLmJpbmRpbmdzID0geCgpLCB0aGlzLmhvdmVyYWJsZSA9IHgoKSwgdGhpcy5mb2N1c2FibGUgPSB4KCksIHRoaXMuY2xhc3Nlc0VsZW1lbnRMb29rdXAgPSB7fSwgZSAhPT0gdGhpcyAmJiAoeC5kYXRhKGUsIHRoaXMud2lkZ2V0RnVsbE5hbWUsIHRoaXMpLCB0aGlzLl9vbighMCwgdGhpcy5lbGVtZW50LCB7CiAgICAgICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0LnRhcmdldCA9PT0gZSAmJiB0aGlzLmRlc3Ryb3koKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgdGhpcy5kb2N1bWVudCA9IHgoZS5zdHlsZSA/IGUub3duZXJEb2N1bWVudCA6IGUuZG9jdW1lbnQgfHwgZSksIHRoaXMud2luZG93ID0geCh0aGlzLmRvY3VtZW50WzBdLmRlZmF1bHRWaWV3IHx8IHRoaXMuZG9jdW1lbnRbMF0ucGFyZW50V2luZG93KSksIHRoaXMub3B0aW9ucyA9IHgud2lkZ2V0LmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zLCB0aGlzLl9nZXRDcmVhdGVPcHRpb25zKCksIHQpLCB0aGlzLl9jcmVhdGUoKSwgdGhpcy5vcHRpb25zLmRpc2FibGVkICYmIHRoaXMuX3NldE9wdGlvbkRpc2FibGVkKHRoaXMub3B0aW9ucy5kaXNhYmxlZCksIHRoaXMuX3RyaWdnZXIoImNyZWF0ZSIsIG51bGwsIHRoaXMuX2dldENyZWF0ZUV2ZW50RGF0YSgpKSwgdGhpcy5faW5pdCgpCiAgICAgICAgfSwKICAgICAgICBfZ2V0Q3JlYXRlT3B0aW9uczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB7fQogICAgICAgIH0sCiAgICAgICAgX2dldENyZWF0ZUV2ZW50RGF0YTogeC5ub29wLAogICAgICAgIF9jcmVhdGU6IHgubm9vcCwKICAgICAgICBfaW5pdDogeC5ub29wLAogICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3koKSwgeC5lYWNoKHRoaXMuY2xhc3Nlc0VsZW1lbnRMb29rdXAsIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIGkuX3JlbW92ZUNsYXNzKGUsIHQpCiAgICAgICAgICAgIH0pLCB0aGlzLmVsZW1lbnQub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSksIHRoaXMud2lkZ2V0KCkub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKSwgdGhpcy5iaW5kaW5ncy5vZmYodGhpcy5ldmVudE5hbWVzcGFjZSkKICAgICAgICB9LAogICAgICAgIF9kZXN0cm95OiB4Lm5vb3AsCiAgICAgICAgd2lkZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudAogICAgICAgIH0sCiAgICAgICAgb3B0aW9uOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZhciBpLCBuLCBvLCBzID0gdDsKICAgICAgICAgICAgaWYgKDAgPT09IGFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiB4LndpZGdldC5leHRlbmQoe30sIHRoaXMub3B0aW9ucyk7CiAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkKICAgICAgICAgICAgICAgIGlmIChzID0ge30sIHQgPSAoaSA9IHQuc3BsaXQoIi4iKSkuc2hpZnQoKSwgaS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSBzW3RdID0geC53aWRnZXQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnNbdF0pLCBvID0gMDsgbyA8IGkubGVuZ3RoIC0gMTsgbysrKSBuW2lbb11dID0gbltpW29dXSB8fCB7fSwgbiA9IG5baVtvXV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBpLnBvcCgpLCAxID09PSBhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdm9pZCAwID09PSBuW3RdID8gbnVsbCA6IG5bdF07CiAgICAgICAgICAgICAgICAgICAgblt0XSA9IGUKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiB2b2lkIDAgPT09IHRoaXMub3B0aW9uc1t0XSA/IG51bGwgOiB0aGlzLm9wdGlvbnNbdF07CiAgICAgICAgICAgICAgICAgICAgc1t0XSA9IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NldE9wdGlvbnMocyksIHRoaXMKICAgICAgICB9LAogICAgICAgIF9zZXRPcHRpb25zOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGUgaW4gdCkgdGhpcy5fc2V0T3B0aW9uKGUsIHRbZV0pOwogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgX3NldE9wdGlvbjogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICByZXR1cm4gImNsYXNzZXMiID09PSB0ICYmIHRoaXMuX3NldE9wdGlvbkNsYXNzZXMoZSksIHRoaXMub3B0aW9uc1t0XSA9IGUsICJkaXNhYmxlZCIgPT09IHQgJiYgdGhpcy5fc2V0T3B0aW9uRGlzYWJsZWQoZSksIHRoaXMKICAgICAgICB9LAogICAgICAgIF9zZXRPcHRpb25DbGFzc2VzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlLCBpLCBuOwogICAgICAgICAgICBmb3IgKGUgaW4gdCkgbiA9IHRoaXMuY2xhc3Nlc0VsZW1lbnRMb29rdXBbZV0sIHRbZV0gIT09IHRoaXMub3B0aW9ucy5jbGFzc2VzW2VdICYmIG4gJiYgbi5sZW5ndGggJiYgKGkgPSB4KG4uZ2V0KCkpLCB0aGlzLl9yZW1vdmVDbGFzcyhuLCBlKSwgaS5hZGRDbGFzcyh0aGlzLl9jbGFzc2VzKHsKICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGksCiAgICAgICAgICAgICAgICBrZXlzOiBlLAogICAgICAgICAgICAgICAgY2xhc3NlczogdCwKICAgICAgICAgICAgICAgIGFkZDogITAKICAgICAgICAgICAgfSkpKQogICAgICAgIH0sCiAgICAgICAgX3NldE9wdGlvbkRpc2FibGVkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUNsYXNzKHRoaXMud2lkZ2V0KCksIHRoaXMud2lkZ2V0RnVsbE5hbWUgKyAiLWRpc2FibGVkIiwgbnVsbCwgISF0KSwgdCAmJiAodGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5ob3ZlcmFibGUsIG51bGwsICJ1aS1zdGF0ZS1ob3ZlciIpLCB0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmZvY3VzYWJsZSwgbnVsbCwgInVpLXN0YXRlLWZvY3VzIikpCiAgICAgICAgfSwKICAgICAgICBlbmFibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7CiAgICAgICAgICAgICAgICBkaXNhYmxlZDogITEKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGRpc2FibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7CiAgICAgICAgICAgICAgICBkaXNhYmxlZDogITAKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIF9jbGFzc2VzOiBmdW5jdGlvbihvKSB7CiAgICAgICAgICAgIHZhciBzID0gW10sCiAgICAgICAgICAgICAgICByID0gdGhpczsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHQodCwgZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSwgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSBpID0gci5jbGFzc2VzRWxlbWVudExvb2t1cFt0W25dXSB8fCB4KCksIGkgPSBvLmFkZCA/IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IFtdOwogICAgICAgICAgICAgICAgICAgIG8uZWxlbWVudC5lYWNoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgeC5tYXAoci5jbGFzc2VzRWxlbWVudExvb2t1cCwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkuc29tZShmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pcyhlKQogICAgICAgICAgICAgICAgICAgICAgICB9KSB8fCBpLnB1c2goZSkKICAgICAgICAgICAgICAgICAgICB9KSwgci5fb24oeChpKSwgewogICAgICAgICAgICAgICAgICAgICAgICByZW1vdmU6ICJfdW50cmFja0NsYXNzZXNFbGVtZW50IgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KCksIHgoeC51bmlxdWVTb3J0KGkuZ2V0KCkuY29uY2F0KG8uZWxlbWVudC5nZXQoKSkpKSkgOiB4KGkubm90KG8uZWxlbWVudCkuZ2V0KCkpLCByLmNsYXNzZXNFbGVtZW50TG9va3VwW3Rbbl1dID0gaSwgcy5wdXNoKHRbbl0pLCBlICYmIG8uY2xhc3Nlc1t0W25dXSAmJiBzLnB1c2goby5jbGFzc2VzW3Rbbl1dKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAobyA9IHguZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudCwKICAgICAgICAgICAgICAgIGNsYXNzZXM6IHRoaXMub3B0aW9ucy5jbGFzc2VzIHx8IHt9CiAgICAgICAgICAgIH0sIG8pKS5rZXlzICYmIHQoby5rZXlzLm1hdGNoKC9cUysvZykgfHwgW10sICEwKSwgby5leHRyYSAmJiB0KG8uZXh0cmEubWF0Y2goL1xTKy9nKSB8fCBbXSksIHMuam9pbigiICIpCiAgICAgICAgfSwKICAgICAgICBfdW50cmFja0NsYXNzZXNFbGVtZW50OiBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgeC5lYWNoKG4uY2xhc3Nlc0VsZW1lbnRMb29rdXAsIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIC0xICE9PSB4LmluQXJyYXkoaS50YXJnZXQsIGUpICYmIChuLmNsYXNzZXNFbGVtZW50TG9va3VwW3RdID0geChlLm5vdChpLnRhcmdldCkuZ2V0KCkpKQogICAgICAgICAgICB9KSwgdGhpcy5fb2ZmKHgoaS50YXJnZXQpKQogICAgICAgIH0sCiAgICAgICAgX3JlbW92ZUNsYXNzOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90b2dnbGVDbGFzcyh0LCBlLCBpLCAhMSkKICAgICAgICB9LAogICAgICAgIF9hZGRDbGFzczogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9nZ2xlQ2xhc3ModCwgZSwgaSwgITApCiAgICAgICAgfSwKICAgICAgICBfdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKHQsIGUsIGksIG4pIHsKICAgICAgICAgICAgdmFyIG8gPSAic3RyaW5nIiA9PSB0eXBlb2YgdCB8fCBudWxsID09PSB0LAogICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICBleHRyYTogbyA/IGUgOiBpLAogICAgICAgICAgICAgICAgICAgIGtleXM6IG8gPyB0IDogZSwKICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBvID8gdGhpcy5lbGVtZW50IDogdCwKICAgICAgICAgICAgICAgICAgICBhZGQ6IG4gPSAiYm9vbGVhbiIgPT0gdHlwZW9mIG4gPyBuIDogaQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIGUuZWxlbWVudC50b2dnbGVDbGFzcyh0aGlzLl9jbGFzc2VzKGUpLCBuKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgX29uOiBmdW5jdGlvbihvLCBzLCB0KSB7CiAgICAgICAgICAgIHZhciByLCBsID0gdGhpczsKICAgICAgICAgICAgImJvb2xlYW4iICE9IHR5cGVvZiBvICYmICh0ID0gcywgcyA9IG8sIG8gPSAhMSksIHQgPyAocyA9IHIgPSB4KHMpLCB0aGlzLmJpbmRpbmdzID0gdGhpcy5iaW5kaW5ncy5hZGQocykpIDogKHQgPSBzLCBzID0gdGhpcy5lbGVtZW50LCByID0gdGhpcy53aWRnZXQoKSksIHguZWFjaCh0LCBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChvIHx8ICEwICE9PSBsLm9wdGlvbnMuZGlzYWJsZWQgJiYgIXgodGhpcykuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIikpIHJldHVybiAoInN0cmluZyIgPT0gdHlwZW9mIGUgPyBsW2VdIDogZSkuYXBwbHkobCwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgInN0cmluZyIgIT0gdHlwZW9mIGUgJiYgKGkuZ3VpZCA9IGUuZ3VpZCA9IGUuZ3VpZCB8fCBpLmd1aWQgfHwgeC5ndWlkKyspOwogICAgICAgICAgICAgICAgdmFyIHQgPSB0Lm1hdGNoKC9eKFtcdzotXSopXHMqKC4qKSQvKSwKICAgICAgICAgICAgICAgICAgICBuID0gdFsxXSArIGwuZXZlbnROYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgdCA9IHRbMl07CiAgICAgICAgICAgICAgICB0ID8gci5vbihuLCB0LCBpKSA6IHMub24obiwgaSkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIF9vZmY6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgZSA9IChlIHx8ICIiKS5zcGxpdCgiICIpLmpvaW4odGhpcy5ldmVudE5hbWVzcGFjZSArICIgIikgKyB0aGlzLmV2ZW50TmFtZXNwYWNlLCB0Lm9mZihlKSwgdGhpcy5iaW5kaW5ncyA9IHgodGhpcy5iaW5kaW5ncy5ub3QodCkuZ2V0KCkpLCB0aGlzLmZvY3VzYWJsZSA9IHgodGhpcy5mb2N1c2FibGUubm90KHQpLmdldCgpKSwgdGhpcy5ob3ZlcmFibGUgPSB4KHRoaXMuaG92ZXJhYmxlLm5vdCh0KS5nZXQoKSkKICAgICAgICB9LAogICAgICAgIF9kZWxheTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICgic3RyaW5nIiA9PSB0eXBlb2YgdCA/IGlbdF0gOiB0KS5hcHBseShpLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0sIGUgfHwgMCkKICAgICAgICB9LAogICAgICAgIF9ob3ZlcmFibGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdGhpcy5ob3ZlcmFibGUgPSB0aGlzLmhvdmVyYWJsZS5hZGQodCksIHRoaXMuX29uKHQsIHsKICAgICAgICAgICAgICAgIG1vdXNlZW50ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRDbGFzcyh4KHQuY3VycmVudFRhcmdldCksIG51bGwsICJ1aS1zdGF0ZS1ob3ZlciIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbW91c2VsZWF2ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUNsYXNzKHgodC5jdXJyZW50VGFyZ2V0KSwgbnVsbCwgInVpLXN0YXRlLWhvdmVyIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIF9mb2N1c2FibGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdGhpcy5mb2N1c2FibGUgPSB0aGlzLmZvY3VzYWJsZS5hZGQodCksIHRoaXMuX29uKHQsIHsKICAgICAgICAgICAgICAgIGZvY3VzaW46IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRDbGFzcyh4KHQuY3VycmVudFRhcmdldCksIG51bGwsICJ1aS1zdGF0ZS1mb2N1cyIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZm9jdXNvdXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVDbGFzcyh4KHQuY3VycmVudFRhcmdldCksIG51bGwsICJ1aS1zdGF0ZS1mb2N1cyIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBfdHJpZ2dlcjogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICB2YXIgbiwgbywgcyA9IHRoaXMub3B0aW9uc1t0XTsKICAgICAgICAgICAgaWYgKGkgPSBpIHx8IHt9LCAoZSA9IHguRXZlbnQoZSkpLnR5cGUgPSAodCA9PT0gdGhpcy53aWRnZXRFdmVudFByZWZpeCA/IHQgOiB0aGlzLndpZGdldEV2ZW50UHJlZml4ICsgdCkudG9Mb3dlckNhc2UoKSwgZS50YXJnZXQgPSB0aGlzLmVsZW1lbnRbMF0sIG8gPSBlLm9yaWdpbmFsRXZlbnQpCiAgICAgICAgICAgICAgICBmb3IgKG4gaW4gbykgbiBpbiBlIHx8IChlW25dID0gb1tuXSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQudHJpZ2dlcihlLCBpKSwgISgiZnVuY3Rpb24iID09IHR5cGVvZiBzICYmICExID09PSBzLmFwcGx5KHRoaXMuZWxlbWVudFswXSwgW2VdLmNvbmNhdChpKSkgfHwgZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgICB9CiAgICB9LCB4LmVhY2goewogICAgICAgIHNob3c6ICJmYWRlSW4iLAogICAgICAgIGhpZGU6ICJmYWRlT3V0IgogICAgfSwgZnVuY3Rpb24ocywgcikgewogICAgICAgIHguV2lkZ2V0LnByb3RvdHlwZVsiXyIgKyBzXSA9IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgdmFyIG4sIG8gPSAodCA9ICJzdHJpbmciID09IHR5cGVvZiB0ID8gewogICAgICAgICAgICAgICAgZWZmZWN0OiB0CiAgICAgICAgICAgIH0gOiB0KSA/ICEwICE9PSB0ICYmICJudW1iZXIiICE9IHR5cGVvZiB0ICYmIHQuZWZmZWN0IHx8IHIgOiBzOwogICAgICAgICAgICAibnVtYmVyIiA9PSB0eXBlb2YodCA9IHQgfHwge30pID8gdCA9IHsKICAgICAgICAgICAgICAgIGR1cmF0aW9uOiB0CiAgICAgICAgICAgIH06ICEwID09PSB0ICYmICh0ID0ge30pLCBuID0gIXguaXNFbXB0eU9iamVjdCh0KSwgdC5jb21wbGV0ZSA9IGksIHQuZGVsYXkgJiYgZS5kZWxheSh0LmRlbGF5KSwgbiAmJiB4LmVmZmVjdHMgJiYgeC5lZmZlY3RzLmVmZmVjdFtvXSA/IGVbc10odCkgOiBvICE9PSBzICYmIGVbb10gPyBlW29dKHQuZHVyYXRpb24sIHQuZWFzaW5nLCBpKSA6IGUucXVldWUoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgeCh0aGlzKVtzXSgpLCBpICYmIGkuY2FsbChlWzBdKSwgdCgpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSkKfSk7"}},"time_used":101,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":101,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.141Z","timestamp":1785128399141,"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/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.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://circuittradetech.com\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: 50316\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 04:26:34 GMT\r\nexpires: Fri, 23 Jul 2027 04:26:34 GMT\r\ncache-control: public, max-age=31536000\r\nage: 347605\r\nlast-modified: Wed, 10 Sep 2025 16:23:20 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":50316,"size_decoded":51129,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 50316, version 1.0","md5":"97b33529e13b04b2205144e28a17a1d6","sha1":"9eaf3fe571af16f72a84dbadc1fce0128dff4486","sha256":"1dd49afc07fb2231b2ff686cbf007725fb2742271bb1f28ebd98f22a0d817343","sha512":"ce731a26fac8fd5583137450138d71fc36a9a0c4b79257a5af74be21cc2773b6e3a1ead61055411ec1c2cc857b8b0e6cbc94971f5f0b51820b458d9146af89bf","ssdeep":"768:etWz8e4bJ7xYqUBOYPc1NmWL7TDGrAZrIzcbWomWEjoyW6Md/AE1wBje34U:eZdhUQN5ToAZrIz7uEjR7udw5e34U","tlshash":"a33301e2882ca65cfe1ba7f8c422cc65e3336044f63d461d5766ff6ee470605e83a016","first_seen":"2025-09-12T00:12:40.161531Z","last_seen":"2026-07-27T17:31:42.777395Z","times_seen":23056,"resource_available":false,"data":"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"}},"time_used":119,"timings":{"blocked":54,"dns":0,"connect":0,"send":0,"wait":19,"receive":46,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/images/cleardot.gif","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.152.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.878Z","timestamp":1785128399878,"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":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /images/cleardot.gif HTTP/1.1\r\nHost: www.google.com\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, i\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\ncontent-type: image/gif\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 43\r\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\npragma: no-cache\r\nexpires: Fri, 01 Jan 1990 00:00:00 GMT\r\ncache-control: no-cache, no-store, must-revalidate\r\nlast-modified: Tue, 22 Oct 2019 18:30:00 GMT\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\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":43,"size_decoded":717,"mime_type":"image/gif","magic":"GIF image data, version 89a, 1 x 1","md5":"fc94fb0c3ed8a8f909dbc7630a0987ff","sha1":"56d45f8a17f5078a20af9962c992ca4678450765","sha256":"2dfe28cbdb83f01c940de6a88ab86200154fd772d568035ac568664e52068363","sha512":"c87bf81fd70cf6434ca3a6c05ad6e9bd3f1d96f77dddad8d45ee043b126b2cb07a5cf23b4137b9d8462cd8a9adf2b463ab6de2b38c93db72d2d511ca60e3b57e","ssdeep":"","tlshash":"cb900003cac8c022c2a2c0300a0c03002bbaa8300228030ec0bc30fcec2a3a38c02000","first_seen":"2023-04-05T02:54:04Z","last_seen":"2026-07-27T18:21:18.303448Z","times_seen":80771,"resource_available":true,"data":"R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="}},"time_used":71,"timings":{"blocked":0,"dns":32,"connect":22,"send":0,"wait":17,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/code.jquery.com/jquery-latest.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.796Z","timestamp":1785128398796,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /code.jquery.com/jquery-latest.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/html\r\ncontent-length: 1626\r\nlast-modified: Tue, 22 Apr 2025 07:41:12 GMT\r\netag: \"119f-68074818-ac81b894658a37a5;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\nage: 112\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 3d761ee7e95461a6617bd76ab1040180-srv-edge3\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Bootstrap:3.3.7","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":4511,"size_decoded":1989,"mime_type":"text/html","magic":"HTML document, ASCII text, with very long lines (371)","md5":"b16e9097fc7d3af8ebfcfce7aba0a42d","sha1":"2af3c8408b8445fe81d9a7c8d7cc8e8a05bf80f5","sha256":"e7db95c97a5d45787cc3e40cbcb93b748fefc65bc14e162c746e37f979861729","sha512":"53a7a2c276fbc5159231c162eb863504448515f1a078832b81f1bffeedb1c82932810b66748fd4111d1b8fb866622a5cc63e79e497227b611c90886ba45d3f3b","ssdeep":"96:tr+ulojsBwJG8YqVcqHL/GSrrLc1VhrJuzeK:tyoasBwJG8nVjaSeVhrJgeK","tlshash":"0891f88f25f381452603c99037f9b61499554007f685eca8bdee9228cfc4b8a41e3bdc","first_seen":"2025-04-22T08:45:29.599713Z","last_seen":"2026-07-27T17:20:09.20559Z","times_seen":37827,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuLXVzIgogICAgcHJlZml4PSJjb250ZW50OiBodHRwOi8vcHVybC5vcmcvcnNzLzEuMC9tb2R1bGVzL2NvbnRlbnQvIGRjOiBodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIGZvYWY6IGh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvIG9nOiBodHRwOi8vb2dwLm1lL25zIyByZGZzOiBodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1zY2hlbWEjIHNpb2M6IGh0dHA6Ly9yZGZzLm9yZy9zaW9jL25zIyBzaW9jdDogaHR0cDovL3JkZnMub3JnL3Npb2MvdHlwZXMjIHNrb3M6IGh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDIvc2tvcy9jb3JlIyB4c2Q6IGh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIyI+Cgo8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgQGNoYXJzZXQgIlVURi04IjsKCiAgICAgICAgW25nXDpjbG9ha10sCiAgICAgICAgW25nLWNsb2FrXSwKICAgICAgICBbZGF0YS1uZy1jbG9ha10sCiAgICAgICAgW3gtbmctY2xvYWtdLAogICAgICAgIC5uZy1jbG9haywKICAgICAgICAueC1uZy1jbG9haywKICAgICAgICAubmctaGlkZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSkgewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBuZ1w6Zm9ybSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLm5nLWFuaW1hdGUtc2hpbSB7CiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5uZy1hbmNob3IgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPHRpdGxlPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iT29wcywgbG9va3MgbGlrZSB0aGUgcGFnZSBpcyBsb3N0LiI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMy43L2Nzcy9ib290c3RyYXAubWluLmNzcyI+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9RE0rU2FuczozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0iIgogICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLTlRNkgwUUVUUkYmYW1wO2N4PWMmYW1wO19zbGM9MSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGFzeW5jPSIiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICAgICAgKGZ1bmN0aW9uIChpLCBzLCBvLCBnLCByLCBhLCBtKSB7CiAgICAgICAgICAgIGlbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddID0gcjsgaVtyXSA9IGlbcl0gfHwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgKGlbcl0ucSA9IGlbcl0ucSB8fCBbXSkucHVzaChhcmd1bWVudHMpCiAgICAgICAgICAgIH0sIGlbcl0ubCA9IDEgKiBuZXcgRGF0ZSgpOyBhID0gcy5jcmVhdGVFbGVtZW50KG8pLAogICAgICAgICAgICAgICAgbSA9IHMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07IGEuYXN5bmMgPSAxOyBhLnNyYyA9IGc7IG0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgbSkKICAgICAgICB9KSh3aW5kb3csIGRvY3VtZW50LCAnc2NyaXB0JywgJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsICdnYScpOwoKICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTI2NTc1OTg5LTQ2JywgJ2F1dG8nKTsKICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOwoKICAgIDwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxpZnJhbWUgYWxsb3c9ImpvaW4tYWQtaW50ZXJlc3QtZ3JvdXAiIGRhdGEtdGFnZ2luZy1pZD0iRy05UTZIMFFFVFJGIiBkYXRhLWxvYWQtdGltZT0iMTc0NDcwOTQ2NDA5MyIgaGVpZ2h0PSIwIgogICAgICAgIHdpZHRoPSIwIgogICAgICAgIHNyYz0iaHR0cHM6Ly90ZC5kb3VibGVjbGljay5uZXQvdGQvZ2EvcnVsP3RpZD1HLTlRNkgwUUVUUkYmYW1wO2dhY2lkPTE2Njk1ODM0ODYuMTc0NDcwOTQ2MyZhbXA7Z3RtPTQ1amU1NGIwdjkxMjU5NTkxMTJ6YTIwMCZhbXA7ZG1hPTEmYW1wO2RtYV9jcHM9c3lwaGFtbyZhbXA7Z2NkPTEzbDNsUGwybDJsMSZhbXA7bnBhPTAmYW1wO3BzY2RsPW5vYXBpJmFtcDthaXA9MSZhbXA7ZmxlZGdlPTEmYW1wO2ZybT0wJmFtcDt0YWdfZXhwPTEwMjUwOTY4M34xMDI4MDMyNzl+MTAyODEzMTA5fjEwMjg4NzgwMH4xMDI5MjYwNjJ+MTAzMDIxODMwfjEwMzAyNzAxNn4xMDMwNTE5NTN+MTAzMDU1NDY1fjEwMzA3Nzk1MCZhbXA7ej0yMTA4NTA0Mzg5IgogICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lOyB2aXNpYmlsaXR5OiBoaWRkZW47Ij4KICAgIDwvaWZyYW1lPgogICAgPGRpdiBjbGFzcz0icGFnZS1ub3QtZm91bmQiPgogICAgICAgIDxpbWcgY2xhc3M9ImltYWdlIiBhbHQ9IlBhZ2UgTm90IEZvdW5kIiBzcmM9Ii9odGRvY3NfZXJyb3IvcGFnZV9ub3RfZm91bmQuc3ZnIiAvPgogICAgICAgIDxoMSBjbGFzcz0idGl0bGUiPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvaDE+CiAgICAgICAgPHAgY2xhc3M9InRleHQiPgogICAgICAgICAgICBTb3JyeSwgdGhlIHBhZ2UgeW91IGFyZSBsb29raW5nIGZvciBjb3VsZCBub3QgYmUgZm91bmQuIEl0J3MganVzdCBhbgogICAgICAgICAgICBhY2NpZGVudCB0aGF0IHdhcyBub3QgaW50ZW50aW9uYWwuCiAgICAgICAgPC9wPgogICAgPC9kaXY+Cgo8L2JvZHk+CjxzdHlsZT4KICAgIGJvZHkgewogICAgICAgIGNvbG9yOiAjMWQxZTIwOwogICAgICAgIGJhY2tncm91bmQ6ICNmNGY1ZmY7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LWZhbWlseTogIkRNIFNhbnMiLCAiUm9ib3RvIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICAgIH0KCiAgICAucGFnZS1ub3QtZm91bmQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwoKICAgICAgICBpbWcgewogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2UgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7CiAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICB9CgogICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIH0KCiAgICAgICAgLnRleHQgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1heC13aWR0aDogNjUwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgICAgIGNvbG9yOiAjNkQ3MDgxOwogICAgICAgIH0KCgogICAgfQo8L3N0eWxlPgoKPC9odG1sPgo="}},"time_used":111,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":110,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/js/frontend.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.836Z","timestamp":1785128398836,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/elementor/assets/js/frontend.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 13698\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:46 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"128d5-67c3620e-887f2ab23dd79126;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457452\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 6aa81b6f9c1a98e188d7fc16bbb5a476-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.019\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":75989,"size_decoded":14288,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (469)","md5":"07fa8e4d5bcbf264f56ef115842535b8","sha1":"b05169b0721c0ac7b550ee75206251d12715c15a","sha256":"48483786b22538384302ec2a430031ad435d4ecf1079ff2503216e9fedf1aca2","sha512":"50a0539d212534271f690a424952724441163827b1a7dce12937eba3bc9885cb34a2a08cae0f8ee68dc9ab474ee94069baee66dd3756167e4155239e54d9195e","ssdeep":"1536:rteUfpUpEvBa+qytbn9zu6yI7Telf2sZoNgscCTUFLiMbz9QnCL6dflwTr+6fRj7:hK8+","tlshash":"9c73830a76f25475410bb43b2a2bd419b335448f680abe1d3e1c52a49f68e78a7f1ff4","first_seen":"2025-07-04T20:26:13.164291Z","last_seen":"2026-07-27T05:01:06.13555Z","times_seen":4,"resource_available":false,"data":"LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNy0wMi0yMDI0ICovCiJ1c2Ugc3RyaWN0IjsKKHNlbGYud2VicGFja0NodW5rZWxlbWVudG9yID0gc2VsZi53ZWJwYWNrQ2h1bmtlbGVtZW50b3IgfHwgW10pLnB1c2goWwogICAgWzgxOV0sIHsKICAgICAgICA5MjIwOiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICB2YXIgbyA9IG4oMzIwMyk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG8obig4MTM1KSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyksIHRoaXMuZG9jdW1lbnRzID0ge30sIHRoaXMuaW5pdERvY3VtZW50Q2xhc3NlcygpLCB0aGlzLmF0dGFjaERvY3VtZW50c0NsYXNzZXMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ6ICIuZWxlbWVudG9yIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkZG9jdW1lbnRzOiBqUXVlcnkoZS5kb2N1bWVudCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpbml0RG9jdW1lbnRDbGFzc2VzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGFzc2VzID0gewogICAgICAgICAgICAgICAgICAgICAgICBiYXNlOiBpLmRlZmF1bHQKICAgICAgICAgICAgICAgICAgICB9LCBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5kb0FjdGlvbigiZWxlbWVudG9yL2Zyb250ZW5kL2RvY3VtZW50cy1tYW5hZ2VyL2luaXQtY2xhc3NlcyIsIHRoaXMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhZGREb2N1bWVudENsYXNzKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xhc3Nlc1tlXSA9IHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGF0dGFjaERvY3VtZW50c0NsYXNzZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kZG9jdW1lbnRzLmVhY2goKChlLCB0KSA9PiB0aGlzLmF0dGFjaERvY3VtZW50Q2xhc3MoalF1ZXJ5KHQpKSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhdHRhY2hEb2N1bWVudENsYXNzKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LmVsZW1lbnRvcklkLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5lbGVtZW50b3JUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5kb2N1bWVudENsYXNzZXNbb10gfHwgdGhpcy5kb2N1bWVudENsYXNzZXMuYmFzZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50c1tuXSA9IG5ldyBpKHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBuCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgOTgwNDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgdmFyIG8gPSBuKDMyMDMpLAogICAgICAgICAgICAgICAgaSA9IG8obig2Mzk3KSksCiAgICAgICAgICAgICAgICBzID0gbyhuKDg3MDQpKSwKICAgICAgICAgICAgICAgIHIgPSBvKG4oNDk4NSkpLAogICAgICAgICAgICAgICAgYSA9IG8obig3NTM3KSksCiAgICAgICAgICAgICAgICBsID0gbyhuKDM1NSkpLAogICAgICAgICAgICAgICAgZCA9IG8obigyODA0KSksCiAgICAgICAgICAgICAgICBjID0gbyhuKDMzODQpKTsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgY29uc3QgbyA9IHt9OwogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50c0hhbmRsZXJzID0gewogICAgICAgICAgICAgICAgICAgICJhY2NvcmRpb24uZGVmYXVsdCI6ICgpID0+IG4uZSgyMDkpLnRoZW4obi5iaW5kKG4sIDg0NzApKSwKICAgICAgICAgICAgICAgICAgICAiYWxlcnQuZGVmYXVsdCI6ICgpID0+IG4uZSg3NDUpLnRoZW4obi5iaW5kKG4sIDkyNjkpKSwKICAgICAgICAgICAgICAgICAgICAiY291bnRlci5kZWZhdWx0IjogKCkgPT4gbi5lKDEyMCkudGhlbihuLmJpbmQobiwgNzg4NCkpLAogICAgICAgICAgICAgICAgICAgICJwcm9ncmVzcy5kZWZhdWx0IjogKCkgPT4gbi5lKDE5MikudGhlbihuLmJpbmQobiwgMTM1MSkpLAogICAgICAgICAgICAgICAgICAgICJ0YWJzLmRlZmF1bHQiOiAoKSA9PiBuLmUoNTIwKS50aGVuKG4uYmluZChuLCA5NDU5KSksCiAgICAgICAgICAgICAgICAgICAgInRvZ2dsZS5kZWZhdWx0IjogKCkgPT4gbi5lKDE4MSkudGhlbihuLmJpbmQobiwgMikpLAogICAgICAgICAgICAgICAgICAgICJ2aWRlby5kZWZhdWx0IjogKCkgPT4gbi5lKDc5MSkudGhlbihuLmJpbmQobiwgNTM2MykpLAogICAgICAgICAgICAgICAgICAgICJpbWFnZS1jYXJvdXNlbC5kZWZhdWx0IjogKCkgPT4gbi5lKDI2OCkudGhlbihuLmJpbmQobiwgNTkxNCkpLAogICAgICAgICAgICAgICAgICAgICJ0ZXh0LWVkaXRvci5kZWZhdWx0IjogKCkgPT4gbi5lKDM1NykudGhlbihuLmJpbmQobiwgMTMyNykpLAogICAgICAgICAgICAgICAgICAgICJ3cC13aWRnZXQtbWVkaWFfYXVkaW8uZGVmYXVsdCI6ICgpID0+IG4uZSg1MikudGhlbihuLmJpbmQobiwgNzYwMikpCiAgICAgICAgICAgICAgICB9LCBlbGVtZW50b3JGcm9udGVuZENvbmZpZy5leHBlcmltZW50YWxGZWF0dXJlc1sibmVzdGVkLWVsZW1lbnRzIl0gJiYgKHRoaXMuZWxlbWVudHNIYW5kbGVyc1sibmVzdGVkLXRhYnMuZGVmYXVsdCJdID0gKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihuLmJpbmQobiwgNzMyMykpKSwgZWxlbWVudG9yRnJvbnRlbmRDb25maWcuZXhwZXJpbWVudGFsRmVhdHVyZXNbIm5lc3RlZC1lbGVtZW50cyJdICYmICh0aGlzLmVsZW1lbnRzSGFuZGxlcnNbIm5lc3RlZC1hY2NvcmRpb24uZGVmYXVsdCJdID0gKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihuLmJpbmQobiwgMzIpKSk7CiAgICAgICAgICAgICAgICBjb25zdCBhZGRFbGVtZW50c0hhbmRsZXJzID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzSGFuZGxlcnMuc2VjdGlvbiA9IFtkLmRlZmF1bHQsIC4uLnMuZGVmYXVsdCwgbC5kZWZhdWx0LCBjLmRlZmF1bHRdLCB0aGlzLmVsZW1lbnRzSGFuZGxlcnMuY29udGFpbmVyID0gWy4uLnMuZGVmYXVsdF0sIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiB0aGlzLmVsZW1lbnRzSGFuZGxlcnMuY29udGFpbmVyLnB1c2goLi4uci5kZWZhdWx0KSwgdGhpcy5lbGVtZW50c0hhbmRsZXJzLmNvbHVtbiA9IGEuZGVmYXVsdCwgZS5lYWNoKHRoaXMuZWxlbWVudHNIYW5kbGVycywgKChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gZS5zcGxpdCgiLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IG5bMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gblsxXSB8fCBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2hIYW5kbGVyKGUsIHQsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaXNDbGFzc0hhbmRsZXIgPSBlID0+IGUucHJvdG90eXBlID8gLmdldFVuaXF1ZUhhbmRsZXJJRDsKICAgICAgICAgICAgICAgIHRoaXMuYWRkSGFuZGxlciA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gbi4kZWxlbWVudC5kYXRhKCJtb2RlbC1jaWQiKTsKICAgICAgICAgICAgICAgICAgICBsZXQgczsKICAgICAgICAgICAgICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5wcm90b3R5cGUuZ2V0Q29uc3RydWN0b3JJRCgpLCBvW2ldIHx8IChvW2ldID0ge30pOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gb1tpXVtzXTsKICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiBlLm9uRGVzdHJveSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBuZXcgdChuKTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5kb0FjdGlvbihgZnJvbnRlbmQvZWxlbWVudF9oYW5kbGVyX3JlYWR5LyR7bi5lbGVtZW50TmFtZX1gLCBuLiRlbGVtZW50LCBlKSwgaSAmJiAob1tpXVtzXSA9IHIpCiAgICAgICAgICAgICAgICB9LCB0aGlzLmF0dGFjaEhhbmRsZXIgPSAoZSwgbiwgbykgPT4gewogICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkobikgfHwgKG4gPSBbbl0pLCBuLmZvckVhY2goKG4gPT4gZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgbyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogImRlZmF1bHQiOwogICAgICAgICAgICAgICAgICAgICAgICBvID0gbyA/ICIuIiArIG8gOiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IGUgKyBvOwogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5ob29rcy5hZGRBY3Rpb24oYGZyb250ZW5kL2VsZW1lbnRfcmVhZHkvJHtpfWAsIChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0NsYXNzSGFuZGxlcihuKSkgdC5hZGRIYW5kbGVyKG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50TmFtZTogaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IG4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW8pIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIGluc3RhbmNlb2YgUHJvbWlzZSA/IG8udGhlbigobiA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmFkZEhhbmRsZXIobywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50TmFtZTogaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiB0LmFkZEhhbmRsZXIobywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudE5hbWU6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfShlLCBuLCBvKSkpCiAgICAgICAgICAgICAgICB9LCB0aGlzLmdldEhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZWxlbWVudHNIYW5kbGVyc1tlXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNDbGFzc0hhbmRsZXIodCkgPyB0IDogbmV3IFByb21pc2UoKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0KCkudGhlbigodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZShuKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sIHRoaXMuZ2V0SGFuZGxlcnMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckRldlRvb2xzLmRlcHJlY2F0aW9uLmRlcHJlY2F0ZWQoImdldEhhbmRsZXJzIiwgIjMuMS4wIiwgImVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzSGFuZGxlci5nZXRIYW5kbGVyIiksIGUgPyB0aGlzLmdldEhhbmRsZXIoZSkgOiB0aGlzLmVsZW1lbnRzSGFuZGxlcnMKICAgICAgICAgICAgICAgIH0sIHRoaXMucnVuUmVhZHlUcmlnZ2VyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50b3JGcm9udGVuZC5jb25maWcuaXNfc3RhdGljKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGpRdWVyeSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4uYXR0cigiZGF0YS1lbGVtZW50X3R5cGUiKTsKICAgICAgICAgICAgICAgICAgICBpZiAobyAmJiAoZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuZG9BY3Rpb24oImZyb250ZW5kL2VsZW1lbnRfcmVhZHkvZ2xvYmFsIiwgbiwgZSksIGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmRvQWN0aW9uKGBmcm9udGVuZC9lbGVtZW50X3JlYWR5LyR7b31gLCBuLCBlKSwgIndpZGdldCIgPT09IG8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBuLmF0dHIoImRhdGEtd2lkZ2V0X3R5cGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuZG9BY3Rpb24oYGZyb250ZW5kL2VsZW1lbnRfcmVhZHkvJHt0fWAsIG4sIGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgdGhpcy5pbml0ID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmFkZEFjdGlvbigiZnJvbnRlbmQvZWxlbWVudF9yZWFkeS9nbG9iYWwiLCBpLmRlZmF1bHQpLCBhZGRFbGVtZW50c0hhbmRsZXJzKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNTY1NDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgdmFyIG8gPSBuKDMyMDMpOwogICAgICAgICAgICBuKDU5KTsKICAgICAgICAgICAgdmFyIGkgPSBvKG4oOTIyMCkpLAogICAgICAgICAgICAgICAgcyA9IG8obig1MTA3KSksCiAgICAgICAgICAgICAgICByID0gbyhuKDMzMDgpKSwKICAgICAgICAgICAgICAgIGEgPSBvKG4oMTYwNCkpLAogICAgICAgICAgICAgICAgbCA9IG8obigxOTExKSksCiAgICAgICAgICAgICAgICBkID0gbyhuKDQ3NzMpKSwKICAgICAgICAgICAgICAgIGMgPSBvKG4oMjA2NCkpLAogICAgICAgICAgICAgICAgdSA9IG8obig4NjI4KSksCiAgICAgICAgICAgICAgICBoID0gbyhuKDg2NDYpKSwKICAgICAgICAgICAgICAgIG0gPSBvKG4oNjg2NikpLAogICAgICAgICAgICAgICAgZyA9IG8obig0Mzc1KSksCiAgICAgICAgICAgICAgICBwID0gbyhuKDY0MDQpKSwKICAgICAgICAgICAgICAgIGYgPSBvKG4oNjA0NikpLAogICAgICAgICAgICAgICAgdiA9IG8obigxMzIyKSksCiAgICAgICAgICAgICAgICBiID0gbig2MDI4KTsKICAgICAgICAgICAgY29uc3QgXyA9IG4oOTQ2OSksCiAgICAgICAgICAgICAgICB5ID0gbig5ODA0KSwKICAgICAgICAgICAgICAgIHcgPSBuKDMzNDYpOwogICAgICAgICAgICBjbGFzcyBGcm9udGVuZCBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpLCB0aGlzLmNvbmZpZyA9IGVsZW1lbnRvckZyb250ZW5kQ29uZmlnLCB0aGlzLmNvbmZpZy5sZWdhY3lNb2RlID0gewogICAgICAgICAgICAgICAgICAgICAgICBnZXQgZWxlbWVudFdyYXBwZXJzKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiB3aW5kb3cudG9wLmVsZW1lbnRvckRldlRvb2xzLmRlcHJlY2F0aW9uLmRlcHJlY2F0ZWQoImVsZW1lbnRvckZyb250ZW5kLmNvbmZpZy5sZWdhY3lNb2RlLmVsZW1lbnRXcmFwcGVycyIsICIzLjEuMCIpLCAhMQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5wb3B1bGF0ZUFjdGl2ZUJyZWFrcG9pbnRzQ29uZmlnKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldCBNb2R1bGUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNFZGl0TW9kZSgpICYmIHBhcmVudC5lbGVtZW50b3JEZXZUb29scy5kZXByZWNhdGlvbi5kZXByZWNhdGVkKCJlbGVtZW50b3JGcm9udGVuZC5Nb2R1bGUiLCAiMi41LjAiLCAiZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC5oYW5kbGVycy5CYXNlIiksIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNldHRpbmdzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yOiAiLmVsZW1lbnRvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pbkJhcjogIiN3cGFkbWluYmFyIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgJHdpbmRvdzogalF1ZXJ5KHdpbmRvdyksCiAgICAgICAgICAgICAgICAgICAgICAgICRkb2N1bWVudDogalF1ZXJ5KGRvY3VtZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWQ6IGpRdWVyeShkb2N1bWVudC5oZWFkKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGJvZHk6IGpRdWVyeShkb2N1bWVudC5ib2R5KSwKICAgICAgICAgICAgICAgICAgICAgICAgJGRldmljZU1vZGU6IGpRdWVyeSgiPHNwYW4+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICJlbGVtZW50b3ItZGV2aWNlLW1vZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJlbGVtZW50b3Itc2NyZWVuLW9ubHkiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS4kYm9keS5hcHBlbmQoZS4kZGV2aWNlTW9kZSksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kd2luZG93Lm9uKCJyZXNpemUiLCAoKCkgPT4gdGhpcy5zZXREZXZpY2VNb2RlRGF0YSgpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEVsZW1lbnRzKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtcyh0aGlzLmVsZW1lbnRzLCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0UGFnZVNldHRpbmdzKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5pc0VkaXRNb2RlKCkgPyBlbGVtZW50b3Iuc2V0dGluZ3MucGFnZS5tb2RlbC5hdHRyaWJ1dGVzIDogdGhpcy5jb25maWcuc2V0dGluZ3MucGFnZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtcyh0LCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0R2VuZXJhbFNldHRpbmdzKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0VkaXRNb2RlKCkgJiYgcGFyZW50LmVsZW1lbnRvckRldlRvb2xzLmRlcHJlY2F0aW9uLmRlcHJlY2F0ZWQoImdldEdlbmVyYWxTZXR0aW5ncygpIiwgIjMuMC4wIiwgImdldEtpdFNldHRpbmdzKCkgYW5kIHJlbW92ZSB0aGUgYGVsZW1lbnRvcl9gIHByZWZpeCIpLCB0aGlzLmdldEtpdFNldHRpbmdzKGBlbGVtZW50b3JfJHtlfWApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRLaXRTZXR0aW5ncyhlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbXModGhpcy5jb25maWcua2l0LCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0Q3VycmVudERldmljZU1vZGUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50cy4kZGV2aWNlTW9kZVswXSwgIjphZnRlciIpLmNvbnRlbnQucmVwbGFjZSgvIi9nLCAiIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERldmljZVNldHRpbmcoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIGlmICgid2lkZXNjcmVlbiIgPT09IGUpIHJldHVybiB0aGlzLmdldFdpZGVzY3JlZW5TZXR0aW5nKHQsIG4pOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSBlbGVtZW50b3JGcm9udGVuZC5icmVha3BvaW50cy5nZXRBY3RpdmVCcmVha3BvaW50c0xpc3QoewogICAgICAgICAgICAgICAgICAgICAgICBsYXJnZVRvU21hbGw6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICB3aXRoRGVza3RvcDogITAKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IG8uaW5kZXhPZihlKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgaSA+IDA7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0W24gKyAiXyIgKyBvW2ldXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgfHwgMCA9PT0gZSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGktLQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFtuXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0V2lkZXNjcmVlblNldHRpbmcoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0ICsgIl93aWRlc2NyZWVuIjsKICAgICAgICAgICAgICAgICAgICBsZXQgbzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyA9IGVbbl0gPyBlW25dIDogZVt0XSwgbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0Q3VycmVudERldmljZVNldHRpbmcoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERldmljZVNldHRpbmcoZWxlbWVudG9yRnJvbnRlbmQuZ2V0Q3VycmVudERldmljZU1vZGUoKSwgZSwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzRWRpdE1vZGUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmVudmlyb25tZW50TW9kZS5lZGl0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc1dQUHJldmlld01vZGUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmVudmlyb25tZW50TW9kZS53cFByZXZpZXcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXREaWFsb2dzTWFuYWdlcigpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERpYWxvZ3NNYW5hZ2VyID0gKCkgPT4gKGUgfHwgKGUgPSBuZXcgRGlhbG9nc01hbmFnZXIuSW5zdGFuY2UpLCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5pdE9uUmVhZHlDb21wb25lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHlvdXR1YmU6IG5ldyBhLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHZpbWVvOiBuZXcgbC5kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICBiYXNlVmlkZW9Mb2FkZXI6IG5ldyBkLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcnM6IG5ldyB3LAogICAgICAgICAgICAgICAgICAgICAgICBnZXQgbGlnaHRib3goKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaC5kZWZhdWx0LmdldExpZ2h0Ym94KCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsQWN0aW9uczogbmV3IGMuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgc3dpcGVyOiB1LmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiByLmRlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0c0xvYWRlcjogbmV3IG0uZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlSFRNTDogYi5lc2NhcGVIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICBldmVudHM6IHAuZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbHM6IG5ldyB2LmRlZmF1bHQKICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLm1vZHVsZXMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmV0Y2hFbGVtZW50OiBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLnRvb2xzLlN0cmV0Y2hFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICBNYXNvbnJ5OiBlbGVtZW50b3JNb2R1bGVzLnV0aWxzLk1hc29ucnkKICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmVsZW1lbnRzSGFuZGxlci5pbml0KCksIHRoaXMuaXNFZGl0TW9kZSgpID8gZWxlbWVudG9yLm9uY2UoImRvY3VtZW50OmxvYWRlZCIsICgoKSA9PiB0aGlzLm9uRG9jdW1lbnRMb2FkZWQoKSkpIDogdGhpcy5vbkRvY3VtZW50TG9hZGVkKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXRPblJlYWR5RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy4kd3BBZG1pbkJhciA9IHRoaXMuZWxlbWVudHMuJGRvY3VtZW50LmZpbmQodGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzLmFkbWluQmFyIikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhZGRVc2VyQWdlbnRDbGFzc2VzKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2UsIHRdIG9mIE9iamVjdC5lbnRyaWVzKHIuZGVmYXVsdCkpIHQgJiYgdGhpcy5lbGVtZW50cy4kYm9keS5hZGRDbGFzcygiZS0tdWEtIiArIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXREZXZpY2VNb2RlRGF0YSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLiRib2R5LmF0dHIoImRhdGEtZWxlbWVudG9yLWRldmljZS1tb2RlIiwgdGhpcy5nZXRDdXJyZW50RGV2aWNlTW9kZSgpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWRkTGlzdGVuZXJPbmNlKGUsIHQsIG4sIG8pIHsKICAgICAgICAgICAgICAgICAgICBpZiAobyB8fCAobyA9IHRoaXMuZWxlbWVudHMuJHdpbmRvdyksIHRoaXMuaXNFZGl0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW1vdmVMaXN0ZW5lcnMoZSwgdCwgbyksIG8gaW5zdGFuY2VvZiBqUXVlcnkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSB0ICsgIi4iICsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ub24oaSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIG8ub24odCwgbiwgZSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBvLm9uKHQsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lcnMoZSwgdCwgbiwgbykgewogICAgICAgICAgICAgICAgICAgIGlmIChvIHx8IChvID0gdGhpcy5lbGVtZW50cy4kd2luZG93KSwgbyBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gdCArICIuIiArIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIG8ub2ZmKGksIG4pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIG8ub2ZmKHQsIG4sIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZWJvdW5jZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IG47CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBhcmd1bWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gIW47CiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChuKSwgbiA9IHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBudWxsLCBlLmFwcGx5KG8sIGkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0KSwgcyAmJiBlLmFwcGx5KG8sIGkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2F5cG9pbnQoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIG4gPSBqUXVlcnkuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAiMTAwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJPbmNlOiAhMAogICAgICAgICAgICAgICAgICAgIH0sIG4pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmVsZW1lbnRvcldheXBvaW50KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZWxlbWVudCB8fCB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuYXBwbHkoZSwgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4udHJpZ2dlck9uY2UgJiYgdGhpcy5kZXN0cm95ICYmIHRoaXMuZGVzdHJveSgpLCBvCiAgICAgICAgICAgICAgICAgICAgfSksIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBtdXRlTWlncmF0aW9uVHJhY2VzKCkgewogICAgICAgICAgICAgICAgICAgIGpRdWVyeS5taWdyYXRlTXV0ZSA9ICEwLCBqUXVlcnkubWlncmF0ZVRyYWNlID0gITEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluaXRNb2R1bGVzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlczogZi5kZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC50cmlnZ2VyKCJlbGVtZW50b3IvbW9kdWxlcy9pbml0OmJlZm9yZSIpLCBlbGVtZW50b3JGcm9udGVuZC50cmlnZ2VyKCJlbGVtZW50b3IvbW9kdWxlcy9pbml0L2JlZm9yZSIpLCBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IFt0LCBuXSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9kdWxlc0hhbmRsZXJzW3RdID0gbmV3IG4KICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBvcHVsYXRlQWN0aXZlQnJlYWtwb2ludHNDb25maWcoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50cyA9IHt9LCBPYmplY3QuZW50cmllcyh0aGlzLmNvbmZpZy5yZXNwb25zaXZlLmJyZWFrcG9pbnRzKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IFt0LCBuXSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNfZW5hYmxlZCAmJiAodGhpcy5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50c1t0XSA9IG4pCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpbml0KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaG9va3MgPSBuZXcgXywgdGhpcy5icmVha3BvaW50cyA9IG5ldyBnLmRlZmF1bHQodGhpcy5jb25maWcucmVzcG9uc2l2ZSksIHRoaXMuc3RvcmFnZSA9IG5ldyBzLmRlZmF1bHQsIHRoaXMuZWxlbWVudHNIYW5kbGVyID0gbmV3IHkoalF1ZXJ5KSwgdGhpcy5tb2R1bGVzSGFuZGxlcnMgPSB7fSwgdGhpcy5hZGRVc2VyQWdlbnRDbGFzc2VzKCksIHRoaXMuc2V0RGV2aWNlTW9kZURhdGEoKSwgdGhpcy5pbml0RGlhbG9nc01hbmFnZXIoKSwgdGhpcy5pc0VkaXRNb2RlKCkgJiYgdGhpcy5tdXRlTWlncmF0aW9uVHJhY2VzKCksIHAuZGVmYXVsdC5kaXNwYXRjaCh0aGlzLmVsZW1lbnRzLiR3aW5kb3csICJlbGVtZW50b3IvZnJvbnRlbmQvaW5pdCIpLCB0aGlzLmluaXRNb2R1bGVzKCksIHRoaXMuaW5pdE9uUmVhZHlFbGVtZW50cygpLCB0aGlzLmluaXRPblJlYWR5Q29tcG9uZW50cygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkRvY3VtZW50TG9hZGVkKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRzTWFuYWdlciA9IG5ldyBpLmRlZmF1bHQsIHRoaXMudHJpZ2dlcigiY29tcG9uZW50czppbml0IiksIG5ldyBoLmRlZmF1bHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB3aW5kb3cuZWxlbWVudG9yRnJvbnRlbmQgPSBuZXcgRnJvbnRlbmQsIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSB8fCBqUXVlcnkoKCgpID0+IGVsZW1lbnRvckZyb250ZW5kLmluaXQoKSkpCiAgICAgICAgfSwKICAgICAgICA0MDU4OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgQmFja2dyb3VuZFNsaWRlc2hvdyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuU3dpcGVyQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpcGVyQ29udGFpbmVyOiBgZWxlbWVudG9yLWJhY2tncm91bmQtc2xpZGVzaG93ICR7ZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLnN3aXBlckNsYXNzfWAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2lwZXJXcmFwcGVyOiAic3dpcGVyLXdyYXBwZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpcGVyU2xpZGU6ICJlbGVtZW50b3ItYmFja2dyb3VuZC1zbGlkZXNob3dfX3NsaWRlIHN3aXBlci1zbGlkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2lwZXJQcmVsb2FkZXI6ICJzd2lwZXItbGF6eS1wcmVsb2FkZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVCYWNrZ3JvdW5kOiAiZWxlbWVudG9yLWJhY2tncm91bmQtc2xpZGVzaG93X19zbGlkZV9faW1hZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAga2VuQnVybnM6ICJlbGVtZW50b3Ita2VuLWJ1cm5zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlbkJ1cm5zQWN0aXZlOiAiZWxlbWVudG9yLWtlbi1idXJucy0tYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlbkJ1cm5zSW46ICJlbGVtZW50b3Ita2VuLWJ1cm5zLS1pbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZW5CdXJuc091dDogImVsZW1lbnRvci1rZW4tYnVybnMtLW91dCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFN3aXBlck9wdGlvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFiQ3Vyc29yOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJHcm91cDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A6ICJ5ZXMiID09PSBlLmJhY2tncm91bmRfc2xpZGVzaG93X2xvb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZDogZS5iYWNrZ3JvdW5kX3NsaWRlc2hvd190cmFuc2l0aW9uX2R1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogZS5iYWNrZ3JvdW5kX3NsaWRlc2hvd19zbGlkZV9kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wT25MYXN0U2xpZGU6ICFlLmJhY2tncm91bmRfc2xpZGVzaG93X2xvb3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVFbGVtZW50b3JCcmVha3BvaW50czogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlQ2hhbmdlOiAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuYmFja2dyb3VuZF9zbGlkZXNob3dfa2VuX2J1cm5zICYmIHRoaXMuaGFuZGxlS2VuQnVybnMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKCJ5ZXMiID09PSBlLmJhY2tncm91bmRfc2xpZGVzaG93X2xvb3AgJiYgKHQubG9vcGVkU2xpZGVzID0gdGhpcy5nZXRTbGlkZXNDb3VudCgpKSwgZS5iYWNrZ3JvdW5kX3NsaWRlc2hvd19zbGlkZV90cmFuc2l0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImZhZGUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5lZmZlY3QgPSAiZmFkZSIsIHQuZmFkZUVmZmVjdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9zc0ZhZGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNsaWRlX2Rvd24iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hdXRvcGxheS5yZXZlcnNlRGlyZWN0aW9uID0gITAsIHQuZGlyZWN0aW9uID0gInZlcnRpY2FsIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzbGlkZV91cCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmRpcmVjdGlvbiA9ICJ2ZXJ0aWNhbCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ5ZXMiID09PSBlLmJhY2tncm91bmRfc2xpZGVzaG93X2xhenlsb2FkICYmICh0LmxhenkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRQcmV2TmV4dDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRQcmV2TmV4dEFtb3VudDogMQogICAgICAgICAgICAgICAgICAgIH0pLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBidWlsZFN3aXBlckVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFNldHRpbmdzKCJjbGFzc2VzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gInNsaWRlX2xlZnQiID09PSB0LmJhY2tncm91bmRfc2xpZGVzaG93X3NsaWRlX3RyYW5zaXRpb24gPyAibHRyIiA6ICJydGwiLAogICAgICAgICAgICAgICAgICAgICAgICBvID0galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLnN3aXBlckNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcjogbgogICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGpRdWVyeSgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogZS5zd2lwZXJXcmFwcGVyCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5iYWNrZ3JvdW5kX3NsaWRlc2hvd19rZW5fYnVybnMsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAieWVzIiA9PT0gdC5iYWNrZ3JvdW5kX3NsaWRlc2hvd19sYXp5bG9hZDsKICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGUuc2xpZGVCYWNrZ3JvdW5kOwogICAgICAgICAgICAgICAgICAgIGlmIChzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgKz0gIiAiICsgZS5rZW5CdXJuczsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9ICJpbiIgPT09IHQuYmFja2dyb3VuZF9zbGlkZXNob3dfa2VuX2J1cm5zX3pvb21fZGlyZWN0aW9uID8gImtlbkJ1cm5zSW4iIDogImtlbkJ1cm5zT3V0IjsKICAgICAgICAgICAgICAgICAgICAgICAgYSArPSAiICIgKyBlW25dCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHIgJiYgKGEgKz0gIiBzd2lwZXItbGF6eSIpLCB0aGlzLmVsZW1lbnRzLiRzbGlkZXMgPSBqUXVlcnkoKSwgdC5iYWNrZ3JvdW5kX3NsaWRlc2hvd19nYWxsZXJ5LmZvckVhY2goKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLnN3aXBlclNsaWRlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgbzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBqUXVlcnkoIjxkaXY+IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLnN3aXBlclByZWxvYWRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0galF1ZXJ5KCI8ZGl2PiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS1iYWNrZ3JvdW5kIjogdC51cmwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvLmFwcGVuZChuKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgbyA9IGpRdWVyeSgiPGRpdj4iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFja2dyb3VuZC1pbWFnZTogdXJsKCInICsgdC51cmwgKyAnIik7JwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5hcHBlbmQobyksIGkuYXBwZW5kKG4pLCB0aGlzLmVsZW1lbnRzLiRzbGlkZXMgPSB0aGlzLmVsZW1lbnRzLiRzbGlkZXMuYWRkKG4pCiAgICAgICAgICAgICAgICAgICAgfSkpLCBvLmFwcGVuZChpKSwgdGhpcy4kZWxlbWVudC5wcmVwZW5kKG8pLCB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kU2xpZGVTaG93Q29udGFpbmVyID0gbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXN5bmMgaW5pdFNsaWRlcigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA+PSB0aGlzLmdldFNsaWRlc0NvdW50KCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLnN3aXBlcjsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN3aXBlciA9IGF3YWl0IG5ldyB0KHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRTbGlkZVNob3dDb250YWluZXIsIHRoaXMuZ2V0U3dpcGVyT3B0aW9ucygpKSwgdGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFNsaWRlU2hvd0NvbnRhaW5lci5kYXRhKCJzd2lwZXIiLCB0aGlzLnN3aXBlciksIGUuYmFja2dyb3VuZF9zbGlkZXNob3dfa2VuX2J1cm5zICYmIHRoaXMuaGFuZGxlS2VuQnVybnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWN0aXZhdGUoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZFN3aXBlckVsZW1lbnRzKCksIHRoaXMuaW5pdFNsaWRlcigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZWFjdGl2YXRlKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyICYmICh0aGlzLnN3aXBlci5kZXN0cm95KCksIHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRTbGlkZVNob3dDb250YWluZXIucmVtb3ZlKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBydW4oKSB7CiAgICAgICAgICAgICAgICAgICAgInNsaWRlc2hvdyIgPT09IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJiYWNrZ3JvdW5kX2JhY2tncm91bmQiKSA/IHRoaXMuYWN0aXZhdGUoKSA6IHRoaXMuZGVhY3RpdmF0ZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KCksIHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJiYWNrZ3JvdW5kX3NsaWRlc2hvd19nYWxsZXJ5IikgJiYgdGhpcy5ydW4oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25EZXN0cm95KCkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyLm9uRGVzdHJveSgpLCB0aGlzLmRlYWN0aXZhdGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25FbGVtZW50Q2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICAgICAiYmFja2dyb3VuZF9iYWNrZ3JvdW5kIiA9PT0gZSAmJiB0aGlzLnJ1bigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gQmFja2dyb3VuZFNsaWRlc2hvdwogICAgICAgIH0sCiAgICAgICAgOTUwMTogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIEJhY2tncm91bmRWaWRlbyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kVmlkZW9Db250YWluZXI6ICIuZWxlbWVudG9yLWJhY2tncm91bmQtdmlkZW8tY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRWaWRlb0VtYmVkOiAiLmVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWVtYmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRWaWRlb0hvc3RlZDogIi5lbGVtZW50b3ItYmFja2dyb3VuZC12aWRlby1ob3N0ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmRWaWRlb0NvbnRhaW5lcjogdGhpcy4kZWxlbWVudC5maW5kKGUuYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LiRiYWNrZ3JvdW5kVmlkZW9FbWJlZCA9IHQuJGJhY2tncm91bmRWaWRlb0NvbnRhaW5lci5jaGlsZHJlbihlLmJhY2tncm91bmRWaWRlb0VtYmVkKSwgdC4kYmFja2dyb3VuZFZpZGVvSG9zdGVkID0gdC4kYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyLmNoaWxkcmVuKGUuYmFja2dyb3VuZFZpZGVvSG9zdGVkKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FsY1ZpZGVvc1NpemUoZSkgewogICAgICAgICAgICAgICAgICAgIGxldCB0ID0gIjE2OjkiOwogICAgICAgICAgICAgICAgICAgICJ2aW1lbyIgPT09IHRoaXMudmlkZW9UeXBlICYmICh0ID0gZVswXS53aWR0aCArICI6IiArIGVbMF0uaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyLm91dGVyV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRWaWRlb0NvbnRhaW5lci5vdXRlckhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5zcGxpdCgiOiIpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gaVswXSAvIGlbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuIC8gbyA+IHM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHIgPyBuIDogbyAqIHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogciA/IG4gLyBzIDogbwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNoYW5nZVZpZGVvU2l6ZSgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoImhvc3RlZCIgIT09IHRoaXMudmlkZW9UeXBlICYmICF0aGlzLnBsYXllcikgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGxldCBlOwogICAgICAgICAgICAgICAgICAgIGlmICgieW91dHViZSIgPT09IHRoaXMudmlkZW9UeXBlID8gZSA9IGpRdWVyeSh0aGlzLnBsYXllci5nZXRJZnJhbWUoKSkgOiAidmltZW8iID09PSB0aGlzLnZpZGVvVHlwZSA/IGUgPSBqUXVlcnkodGhpcy5wbGF5ZXIuZWxlbWVudCkgOiAiaG9zdGVkIiA9PT0gdGhpcy52aWRlb1R5cGUgJiYgKGUgPSB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQpLCAhZSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmNhbGNWaWRlb3NTaXplKGUpOwogICAgICAgICAgICAgICAgICAgIGUud2lkdGgodC53aWR0aCkuaGVpZ2h0KHQuaGVpZ2h0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhcnRWaWRlb0xvb3AoZSkgewogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wbGF5ZXIuZ2V0SWZyYW1lKCkuY29udGVudFdpbmRvdykgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5iYWNrZ3JvdW5kX3ZpZGVvX3N0YXJ0IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmJhY2tncm91bmRfdmlkZW9fZW5kOwogICAgICAgICAgICAgICAgICAgIGlmICghdC5iYWNrZ3JvdW5kX3BsYXlfb25jZSB8fCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBsYXllci5zZWVrVG8obiksIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VmlkZW9Mb29wKCExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDFlMyAqIChvIC0gbiArIDEpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMucGxheWVyLnN0b3BWaWRlbygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwcmVwYXJlVmltZW9WaWRlbyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyLm91dGVyV2lkdGgoKS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A6ICFuLmJhY2tncm91bmRfcGxheV9vbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRlZDogITAKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBuLmJhY2tncm91bmRfcHJpdmFjeV9tb2RlICYmIChvLmRudCA9ICEwKSwgdGhpcy5wbGF5ZXIgPSBuZXcgZS5QbGF5ZXIodGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyLCBvKSwgdGhpcy5oYW5kbGVWaW1lb1N0YXJ0RW5kVGltZXMobiksIHRoaXMucGxheWVyLnJlYWR5KCkudGhlbigoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkodGhpcy5wbGF5ZXIuZWxlbWVudCkuYWRkQ2xhc3MoImVsZW1lbnRvci1iYWNrZ3JvdW5kLXZpZGVvLWVtYmVkIiksIHRoaXMuY2hhbmdlVmlkZW9TaXplKCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRsZVZpbWVvU3RhcnRFbmRUaW1lcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5iYWNrZ3JvdW5kX3ZpZGVvX3N0YXJ0ICYmIHRoaXMucGxheWVyLm9uKCJwbGF5IiwgKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAwID09PSB0LnNlY29uZHMgJiYgdGhpcy5wbGF5ZXIuc2V0Q3VycmVudFRpbWUoZS5iYWNrZ3JvdW5kX3ZpZGVvX3N0YXJ0KQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5wbGF5ZXIub24oInRpbWV1cGRhdGUiLCAodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuYmFja2dyb3VuZF92aWRlb19lbmQgJiYgZS5iYWNrZ3JvdW5kX3ZpZGVvX2VuZCA8IHQuc2Vjb25kcyAmJiAoZS5iYWNrZ3JvdW5kX3BsYXlfb25jZSA/IHRoaXMucGxheWVyLnBhdXNlKCkgOiB0aGlzLnBsYXllci5zZXRDdXJyZW50VGltZShlLmJhY2tncm91bmRfdmlkZW9fc3RhcnQpKSwgdGhpcy5wbGF5ZXIuZ2V0RHVyYXRpb24oKS50aGVuKChuID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuYmFja2dyb3VuZF92aWRlb19zdGFydCAmJiAhZS5iYWNrZ3JvdW5kX3ZpZGVvX2VuZCAmJiB0LnNlY29uZHMgPiBuIC0gLjUgJiYgdGhpcy5wbGF5ZXIuc2V0Q3VycmVudFRpbWUoZS5iYWNrZ3JvdW5kX3ZpZGVvX3N0YXJ0KQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHByZXBhcmVZVFZpZGVvKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvQ29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKTsKICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGUuUGxheWVyU3RhdGUuUExBWUlORzsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2hyb21lICYmIChpID0gZS5QbGF5ZXJTdGF0ZS5VTlNUQVJURUQpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSWQ6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZWFkeTogKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLm11dGUoKSwgdGhpcy5jaGFuZ2VWaWRlb1NpemUoKSwgdGhpcy5zdGFydFZpZGVvTG9vcCghMCksIHRoaXMucGxheWVyLnBsYXlWaWRlbygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdGF0ZUNoYW5nZTogdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5yZW1vdmVDbGFzcygiZWxlbWVudG9yLWludmlzaWJsZSBlbGVtZW50b3ItbG9hZGluZyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZS5QbGF5ZXJTdGF0ZS5FTkRFRDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIHRoaXMucGxheWVyLnNlZWtUbyAmJiB0aGlzLnBsYXllci5zZWVrVG8oby5iYWNrZ3JvdW5kX3ZpZGVvX3N0YXJ0IHx8IDApLCBvLmJhY2tncm91bmRfcGxheV9vbmNlICYmIHRoaXMucGxheWVyLmRlc3Ryb3koKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyVmFyczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbHM6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5c2lubGluZTogMQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBvLmJhY2tncm91bmRfcHJpdmFjeV9tb2RlICYmIChzLmhvc3QgPSAiaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20iLCBzLm9yaWdpbiA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSksIG4uYWRkQ2xhc3MoImVsZW1lbnRvci1sb2FkaW5nIGVsZW1lbnRvci1pbnZpc2libGUiKSwgdGhpcy5wbGF5ZXIgPSBuZXcgZS5QbGF5ZXIodGhpcy5lbGVtZW50cy4kYmFja2dyb3VuZFZpZGVvRW1iZWRbMF0sIHMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhY3RpdmF0ZSgpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgZSwgdCA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJiYWNrZ3JvdW5kX3ZpZGVvX2xpbmsiKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImJhY2tncm91bmRfcGxheV9vbmNlIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKC0xICE9PSB0LmluZGV4T2YoInZpbWVvLmNvbSIpID8gKHRoaXMudmlkZW9UeXBlID0gInZpbWVvIiwgdGhpcy5hcGlQcm92aWRlciA9IGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLnZpbWVvKSA6IHQubWF0Y2goL14oPzpodHRwcz86XC9cLyk/KD86d3d3XC4pPyg/Om1cLik/KD86eW91dHVcLmJlXC98eW91dHViZVwuY29tKS8pICYmICh0aGlzLnZpZGVvVHlwZSA9ICJ5b3V0dWJlIiwgdGhpcy5hcGlQcm92aWRlciA9IGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLnlvdXR1YmUpLCB0aGlzLmFwaVByb3ZpZGVyKSBlID0gdGhpcy5hcGlQcm92aWRlci5nZXRWaWRlb0lERnJvbVVSTCh0KSwgdGhpcy5hcGlQcm92aWRlci5vbkFwaVJlYWR5KChuID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgInlvdXR1YmUiID09PSB0aGlzLnZpZGVvVHlwZSAmJiB0aGlzLnByZXBhcmVZVFZpZGVvKG4sIGUpLCAidmltZW8iID09PSB0aGlzLnZpZGVvVHlwZSAmJiB0aGlzLnByZXBhcmVWaW1lb1ZpZGVvKG4sIHQpCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZGVvVHlwZSA9ICJob3N0ZWQiOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoImJhY2tncm91bmRfdmlkZW9fc3RhcnQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmdldEVsZW1lbnRTZXR0aW5ncygiYmFja2dyb3VuZF92aWRlb19lbmQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgKGUgfHwgbykgJiYgKHQgKz0gIiN0PSIgKyAoZSB8fCAwKSArIChvID8gIiwiICsgbyA6ICIiKSksIHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRWaWRlb0hvc3RlZC5hdHRyKCJzcmMiLCB0KS5vbmUoImNhbnBsYXkiLCB0aGlzLmNoYW5nZVZpZGVvU2l6ZS5iaW5kKHRoaXMpKSwgbiAmJiB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQub24oImVuZGVkIiwgKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGJhY2tncm91bmRWaWRlb0hvc3RlZC5oaWRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiR3aW5kb3cub24oInJlc2l6ZSBlbGVtZW50b3IvYmctdmlkZW8vcmVjYWxjIiwgdGhpcy5jaGFuZ2VWaWRlb1NpemUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZWFjdGl2YXRlKCkgewogICAgICAgICAgICAgICAgICAgICJ5b3V0dWJlIiA9PT0gdGhpcy52aWRlb1R5cGUgJiYgdGhpcy5wbGF5ZXIuZ2V0SWZyYW1lKCkgfHwgInZpbWVvIiA9PT0gdGhpcy52aWRlb1R5cGUgPyB0aGlzLnBsYXllci5kZXN0cm95KCkgOiB0aGlzLmVsZW1lbnRzLiRiYWNrZ3JvdW5kVmlkZW9Ib3N0ZWQucmVtb3ZlQXR0cigic3JjIikub2ZmKCJlbmRlZCIpLCBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kd2luZG93Lm9mZigicmVzaXplIiwgdGhpcy5jaGFuZ2VWaWRlb1NpemUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBydW4oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICAgICAgKGUuYmFja2dyb3VuZF9wbGF5X29uX21vYmlsZSB8fCAibW9iaWxlIiAhPT0gZWxlbWVudG9yRnJvbnRlbmQuZ2V0Q3VycmVudERldmljZU1vZGUoKSkgJiYgKCJ2aWRlbyIgPT09IGUuYmFja2dyb3VuZF9iYWNrZ3JvdW5kICYmIGUuYmFja2dyb3VuZF92aWRlb19saW5rID8gdGhpcy5hY3RpdmF0ZSgpIDogdGhpcy5kZWFjdGl2YXRlKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cyksIHRoaXMuY2hhbmdlVmlkZW9TaXplID0gdGhpcy5jaGFuZ2VWaWRlb1NpemUuYmluZCh0aGlzKSwgdGhpcy5ydW4oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25FbGVtZW50Q2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICAgICAiYmFja2dyb3VuZF9iYWNrZ3JvdW5kIiA9PT0gZSAmJiB0aGlzLnJ1bigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gQmFja2dyb3VuZFZpZGVvCiAgICAgICAgfSwKICAgICAgICA4NzA0OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICB2YXIgbyA9IG4oMzIwMyk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IG8obig0MDU4KSksCiAgICAgICAgICAgICAgICBzID0gbyhuKDk1MDEpKSwKICAgICAgICAgICAgICAgIHIgPSBbaS5kZWZhdWx0LCBzLmRlZmF1bHRdOwogICAgICAgICAgICB0LmRlZmF1bHQgPSByCiAgICAgICAgfSwKICAgICAgICA3NTM3OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICB2YXIgbyA9IG4oMzIwMyk7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB2YXIgaSA9IFtvKG4oNDA1OCkpLmRlZmF1bHRdOwogICAgICAgICAgICB0LmRlZmF1bHQgPSBpCiAgICAgICAgfSwKICAgICAgICA0OTg1OiAoZSwgdCwgbikgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIG8gPSBbKCkgPT4gbi5lKDQxMykudGhlbihuLmJpbmQobiwgMjkyOSkpLCAoKSA9PiBuLmUoNDEzKS50aGVuKG4uYmluZChuLCAzNDMpKSwgKCkgPT4gbi5lKDQxMykudGhlbihuLmJpbmQobiwgODA3MykpXTsKICAgICAgICAgICAgdC5kZWZhdWx0ID0gbwogICAgICAgIH0sCiAgICAgICAgNjM5NzogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIEdsb2JhbEhhbmRsZXIgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgZ2V0V2lkZ2V0VHlwZSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImdsb2JhbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFuaW1hdGUoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldEFuaW1hdGlvbigpOwogICAgICAgICAgICAgICAgICAgIGlmICgibm9uZSIgPT09IHQpIHJldHVybiB2b2lkIGUucmVtb3ZlQ2xhc3MoImVsZW1lbnRvci1pbnZpc2libGUiKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4uX2FuaW1hdGlvbl9kZWxheSB8fCBuLmFuaW1hdGlvbl9kZWxheSB8fCAwOwogICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlQ2xhc3ModCksIHRoaXMuY3VycmVudEFuaW1hdGlvbiAmJiBlLnJlbW92ZUNsYXNzKHRoaXMuY3VycmVudEFuaW1hdGlvbiksIHRoaXMuY3VycmVudEFuaW1hdGlvbiA9IHQsIHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVDbGFzcygiZWxlbWVudG9yLWludmlzaWJsZSIpLmFkZENsYXNzKCJhbmltYXRlZCAiICsgdCkKICAgICAgICAgICAgICAgICAgICB9KSwgbykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEFuaW1hdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDdXJyZW50RGV2aWNlU2V0dGluZygiYW5pbWF0aW9uIikgfHwgdGhpcy5nZXRDdXJyZW50RGV2aWNlU2V0dGluZygiX2FuaW1hdGlvbiIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cGVyLm9uSW5pdCguLi5hcmd1bWVudHMpLCB0aGlzLmdldEFuaW1hdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBlbGVtZW50b3JNb2R1bGVzLnV0aWxzLlNjcm9sbC5zY3JvbGxPYnNlcnZlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5pc0luVmlld3BvcnQgJiYgKHRoaXMuYW5pbWF0ZSgpLCBlLnVub2JzZXJ2ZSh0aGlzLiRlbGVtZW50WzBdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUub2JzZXJ2ZSh0aGlzLiRlbGVtZW50WzBdKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uRWxlbWVudENoYW5nZShlKSB7CiAgICAgICAgICAgICAgICAgICAgL15fP2FuaW1hdGlvbi8udGVzdChlKSAmJiB0aGlzLmFuaW1hdGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IGUgPT4gewogICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmFkZEhhbmRsZXIoR2xvYmFsSGFuZGxlciwgewogICAgICAgICAgICAgICAgICAgICRlbGVtZW50OiBlCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAzNTU6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBIYW5kbGVzUG9zaXRpb24gZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLmZyb250ZW5kLmhhbmRsZXJzLkJhc2UgewogICAgICAgICAgICAgICAgaXNBY3RpdmUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNGaXJzdFNlY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnRbMF0gPT09IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5lbGVtZW50b3ItZWRpdC1tb2RlIC5lbGVtZW50b3ItdG9wLXNlY3Rpb24iKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNPdmVyZmxvd0hpZGRlbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImhpZGRlbiIgPT09IHRoaXMuJGVsZW1lbnQuY3NzKCJvdmVyZmxvdyIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRPZmZzZXQoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJib2R5IiA9PT0gZWxlbWVudG9yLmNvbmZpZy5kb2N1bWVudC5jb250YWluZXIpIHJldHVybiB0aGlzLiRlbGVtZW50Lm9mZnNldCgpLnRvcDsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0galF1ZXJ5KGVsZW1lbnRvci5jb25maWcuZG9jdW1lbnQuY29udGFpbmVyKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kZWxlbWVudC5vZmZzZXQoKS50b3AgLSBlLm9mZnNldCgpLnRvcAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0SGFuZGxlc1Bvc2l0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBlbGVtZW50b3IuZG9jdW1lbnRzLmdldEN1cnJlbnQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUuY29udGFpbmVyLmlzRWRpdGFibGUoKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSAiZWxlbWVudG9yLXNlY3Rpb24tLWhhbmRsZXMtaW5zaWRlIjsKICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudG9yLnNldHRpbmdzLnBhZ2UubW9kZWwuYXR0cmlidXRlcy5zY3JvbGxfc25hcCkgcmV0dXJuIHZvaWQgdGhpcy4kZWxlbWVudC5hZGRDbGFzcyh0KTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdGhpcy5pc092ZXJmbG93SGlkZGVuKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFuICYmICF0aGlzLmlzRmlyc3RTZWN0aW9uKCkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gbiA/IDAgOiB0aGlzLmdldE9mZnNldCgpOwogICAgICAgICAgICAgICAgICAgIGlmIChvIDwgMjUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5hZGRDbGFzcyh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuJGVsZW1lbnQuZmluZCgiPiAuZWxlbWVudG9yLWVsZW1lbnQtb3ZlcmxheSA+IC5lbGVtZW50b3ItZWRpdG9yLXNlY3Rpb24tc2V0dGluZ3MiKTsKICAgICAgICAgICAgICAgICAgICAgICAgbyA8IC01ID8gZS5jc3MoInRvcCIsIC1vKSA6IGUuY3NzKCJ0b3AiLCAiIikKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUoKSAmJiAodGhpcy5zZXRIYW5kbGVzUG9zaXRpb24oKSwgdGhpcy4kZWxlbWVudC5vbigibW91c2VlbnRlciIsIHRoaXMuc2V0SGFuZGxlc1Bvc2l0aW9uLmJpbmQodGhpcykpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IEhhbmRsZXNQb3NpdGlvbgogICAgICAgIH0sCiAgICAgICAgMzM4NDogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIFNoYXBlcyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuZnJvbnRlbmQuaGFuZGxlcnMuQmFzZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICI+IC5lbGVtZW50b3Itc2hhcGUtJXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN2Z1VSTDogZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLnVybHMuYXNzZXRzICsgInNoYXBlcy8iCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0RGVmYXVsdEVsZW1lbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLiR0b3BDb250YWluZXIgPSB0aGlzLiRlbGVtZW50LmZpbmQodC5jb250YWluZXIucmVwbGFjZSgiJXMiLCAidG9wIikpLCBlLiRib3R0b21Db250YWluZXIgPSB0aGlzLiRlbGVtZW50LmZpbmQodC5jb250YWluZXIucmVwbGFjZSgiJXMiLCAiYm90dG9tIikpLCBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc0FjdGl2ZSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRTdmdVUkwoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGxldCBuID0gdGhpcy5nZXRTZXR0aW5ncygic3ZnVVJMIikgKyB0ICsgIi5zdmciOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50b3IuY29uZmlnLmFkZGl0aW9uYWxfc2hhcGVzICYmIGUgaW4gZWxlbWVudG9yLmNvbmZpZy5hZGRpdGlvbmFsX3NoYXBlcyAmJiAobiA9IGVsZW1lbnRvci5jb25maWcuYWRkaXRpb25hbF9zaGFwZXNbZV0sIC0xIDwgdC5pbmRleE9mKCItbmVnYXRpdmUiKSAmJiAobiA9IG4ucmVwbGFjZSgiLnN2ZyIsICItbmVnYXRpdmUuc3ZnIikpKSwgbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnVpbGRTVkcoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSAic2hhcGVfZGl2aWRlcl8iICsgZSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKHQpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5lbGVtZW50c1siJCIgKyBlICsgIkNvbnRhaW5lciJdOwogICAgICAgICAgICAgICAgICAgIGlmIChvLmF0dHIoImRhdGEtc2hhcGUiLCBuKSwgIW4pIHJldHVybiB2b2lkIG8uZW1wdHkoKTsKICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IG47CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50U2V0dGluZ3ModCArICJfbmVnYXRpdmUiKSAmJiAoaSArPSAiLW5lZ2F0aXZlIik7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuZ2V0U3ZnVVJMKG4sIGkpOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeS5nZXQocywgKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBvLmVtcHR5KCkuYXBwZW5kKGUuY2hpbGROb2Rlc1swXSkKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuc2V0TmVnYXRpdmUoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldE5lZ2F0aXZlKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzWyIkIiArIGUgKyAiQ29udGFpbmVyIl0uYXR0cigiZGF0YS1uZWdhdGl2ZSIsICEhdGhpcy5nZXRFbGVtZW50U2V0dGluZ3MoInNoYXBlX2RpdmlkZXJfIiArIGUgKyAiX25lZ2F0aXZlIikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSh0aGlzLmdldFNldHRpbmdzKCkpICYmIChzdXBlci5vbkluaXQoLi4uYXJndW1lbnRzKSwgWyJ0b3AiLCAiYm90dG9tIl0uZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RWxlbWVudFNldHRpbmdzKCJzaGFwZV9kaXZpZGVyXyIgKyBlKSAmJiB0aGlzLmJ1aWxkU1ZHKGUpCiAgICAgICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb25FbGVtZW50Q2hhbmdlKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5tYXRjaCgvXnNoYXBlX2RpdmlkZXJfKHRvcHxib3R0b20pJC8pOwogICAgICAgICAgICAgICAgICAgIGlmICh0KSByZXR1cm4gdm9pZCB0aGlzLmJ1aWxkU1ZHKHRbMV0pOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBlLm1hdGNoKC9ec2hhcGVfZGl2aWRlcl8odG9wfGJvdHRvbSlfbmVnYXRpdmUkLyk7CiAgICAgICAgICAgICAgICAgICAgbiAmJiAodGhpcy5idWlsZFNWRyhuWzFdKSwgdGhpcy5zZXROZWdhdGl2ZShuWzFdKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBTaGFwZXMKICAgICAgICB9LAogICAgICAgIDI4MDQ6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBTdHJldGNoZWRTZWN0aW9uIGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5mcm9udGVuZC5oYW5kbGVycy5TdHJldGNoZWRFbGVtZW50IHsKICAgICAgICAgICAgICAgIGdldFN0cmV0Y2hlZENsYXNzKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZWxlbWVudG9yLXNlY3Rpb24tc3RyZXRjaGVkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0U3RyZXRjaFNldHRpbmdOYW1lKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyZXRjaF9zZWN0aW9uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0U3RyZXRjaEFjdGl2ZVZhbHVlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAic2VjdGlvbi1zdHJldGNoZWQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gU3RyZXRjaGVkU2VjdGlvbgogICAgICAgIH0sCiAgICAgICAgMzM0NjogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgdmFyIG8gPSBuKDYwMjgpOwogICAgICAgICAgICBlLmV4cG9ydHMgPSBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5nczogKCkgPT4gKHsKICAgICAgICAgICAgICAgICAgICBzY3JvbGxEdXJhdGlvbjogNTAwLAogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogJ2FbaHJlZio9IiMiXScsCiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHM6ICIuZWxlbWVudG9yLWVsZW1lbnQsIC5lbGVtZW50b3ItbWVudS1hbmNob3IiLAogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxhYmxlOiAoMCwgby5pc1Njcm9sbFNuYXBBY3RpdmUpKCkgPyAiYm9keSIgOiAiaHRtbCwgYm9keSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkc2Nyb2xsYWJsZTogalF1ZXJ5KHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycyIpLnNjcm9sbGFibGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGJpbmRFdmVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJGRvY3VtZW50Lm9uKCJjbGljayIsIHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycy5saW5rcyIpLCB0aGlzLmhhbmRsZUFuY2hvckxpbmtzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhhbmRsZUFuY2hvckxpbmtzKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IGUuY3VycmVudFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGxvY2F0aW9uLnBhdGhuYW1lID09PSBuLnBhdGhuYW1lOwogICAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gbi5ob3N0bmFtZSAmJiBpICYmICEobi5oYXNoLmxlbmd0aCA8IDIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0galF1ZXJ5KG4uaGFzaCkuZmlsdGVyKHRoaXMuZ2V0U2V0dGluZ3MoInNlbGVjdG9ycy50YXJnZXRzIikpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0Lm9mZnNldCgpLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHMuJHdwQWRtaW5CYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGpRdWVyeSgiLmVsZW1lbnRvci1zZWN0aW9uLmVsZW1lbnRvci1zdGlja3ktLWFjdGl2ZTp2aXNpYmxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmxlbmd0aCA+IDAgJiYgKHMgLT0gci5oZWlnaHQoKSksIGEubGVuZ3RoID4gMCAmJiAocyAtPSBNYXRoLm1heC5hcHBseShudWxsLCBhLm1hcCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeSh0aGlzKS5vdXRlckhlaWdodCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuZ2V0KCkpKSwgZS5wcmV2ZW50RGVmYXVsdCgpLCBzID0gZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuYXBwbHlGaWx0ZXJzKCJmcm9udGVuZC9oYW5kbGVycy9tZW51X2FuY2hvci9zY3JvbGxfdG9wX2Rpc3RhbmNlIiwgcyksICgwLCBvLmlzU2Nyb2xsU25hcEFjdGl2ZSkoKSAmJiBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kYm9keS5jc3MoInNjcm9sbC1zbmFwLXR5cGUiLCAibm9uZSIpLCB0aGlzLmVsZW1lbnRzLiRzY3JvbGxhYmxlLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5nZXRTZXR0aW5ncygic2Nyb2xsRHVyYXRpb24iKSwgImxpbmVhciIsICgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIG8uaXNTY3JvbGxTbmFwQWN0aXZlKSgpICYmIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRib2R5LmNzcygic2Nyb2xsLXNuYXAtdHlwZSIsICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25Jbml0KCkgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZS5wcm90b3R5cGUub25Jbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIDY4NjY6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBBc3NldHNMb2FkZXIgewogICAgICAgICAgICAgICAgZ2V0U2NyaXB0RWxlbWVudChlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnNyYyA9IGUsIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFN0eWxlRWxlbWVudChlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5yZWwgPSAic3R5bGVzaGVldCIsIHQuaHJlZiA9IGUsIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxvYWQoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBBc3NldHNMb2FkZXIuYXNzZXRzW2VdW3RdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmxvYWRlciB8fCAobi5sb2FkZXIgPSBuZXcgUHJvbWlzZSgodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSAic3R5bGUiID09PSBlID8gdGhpcy5nZXRTdHlsZUVsZW1lbnQobi5zcmMpIDogdGhpcy5nZXRTY3JpcHRFbGVtZW50KG4uc3JjKTsKICAgICAgICAgICAgICAgICAgICAgICAgby5vbmxvYWQgPSAoKSA9PiB0KCEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9ICJoZWFkIiA9PT0gbi5wYXJlbnQgPyBuLnBhcmVudCA6ICJib2R5IjsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRbaV0uYXBwZW5kQ2hpbGQobykKICAgICAgICAgICAgICAgICAgICB9KSkpLCBuLmxvYWRlcgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IEFzc2V0c0xvYWRlcjsKICAgICAgICAgICAgY29uc3QgbiA9IGVsZW1lbnRvckZyb250ZW5kQ29uZmlnLmVudmlyb25tZW50TW9kZS5pc1NjcmlwdERlYnVnID8gIiIgOiAiLm1pbiIsCiAgICAgICAgICAgICAgICBvID0gZWxlbWVudG9yRnJvbnRlbmRDb25maWcuZXhwZXJpbWVudGFsRmVhdHVyZXMuZV9zd2lwZXJfbGF0ZXN0ID8gYCR7ZWxlbWVudG9yRnJvbnRlbmRDb25maWcudXJscy5hc3NldHN9bGliL3N3aXBlci92OC9zd2lwZXIke259LmpzP3Zlcj04LjQuNWAgOiBgJHtlbGVtZW50b3JGcm9udGVuZENvbmZpZy51cmxzLmFzc2V0c31saWIvc3dpcGVyL3N3aXBlciR7bn0uanM/dmVyPTUuMy42YDsKICAgICAgICAgICAgQXNzZXRzTG9hZGVyLmFzc2V0cyA9IHsKICAgICAgICAgICAgICAgIHNjcmlwdDogewogICAgICAgICAgICAgICAgICAgIGRpYWxvZzogewogICAgICAgICAgICAgICAgICAgICAgICBzcmM6IGAke2VsZW1lbnRvckZyb250ZW5kQ29uZmlnLnVybHMuYXNzZXRzfWxpYi9kaWFsb2cvZGlhbG9nJHtufS5qcz92ZXI9NC45LjBgCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAic2hhcmUtbGluayI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBgJHtlbGVtZW50b3JGcm9udGVuZENvbmZpZy51cmxzLmFzc2V0c31saWIvc2hhcmUtbGluay9zaGFyZS1saW5rJHtufS5qcz92ZXI9JHtlbGVtZW50b3JGcm9udGVuZENvbmZpZy52ZXJzaW9ufWAKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHN3aXBlcjogewogICAgICAgICAgICAgICAgICAgICAgICBzcmM6IG8KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3R5bGU6IHt9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDEzMjI6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICB0LmRlZmF1bHQgPSBjbGFzcyBDb250cm9scyB7CiAgICAgICAgICAgICAgICBnZXRDb250cm9sVmFsdWUoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIGxldCBvOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBvID0gIm9iamVjdCIgPT0gdHlwZW9mIGVbdF0gJiYgbiA/IGVbdF1bbl0gOiBlW3RdLCBvCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRSZXNwb25zaXZlQ29udHJvbFZhbHVlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogIiI7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IChhcmd1bWVudHMubGVuZ3RoID4gMyAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1szXSA/IGFyZ3VtZW50c1szXSA6IG51bGwpIHx8IGVsZW1lbnRvckZyb250ZW5kLmdldEN1cnJlbnREZXZpY2VNb2RlKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLmdldENvbnRyb2xWYWx1ZShlLCB0LCBuKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIndpZGVzY3JlZW4iID09PSBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSB0aGlzLmdldENvbnRyb2xWYWx1ZShlLCBgJHt0fV93aWRlc2NyZWVuYCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvIHx8IDAgPT09IG8gPyBvIDogaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gZWxlbWVudG9yRnJvbnRlbmQuYnJlYWtwb2ludHMuZ2V0QWN0aXZlQnJlYWtwb2ludHNMaXN0KHsKICAgICAgICAgICAgICAgICAgICAgICAgd2l0aERlc2t0b3A6ICEwCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSBvLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gcy5pbmRleE9mKG8pLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gIiI7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGEgPD0gcy5sZW5ndGg7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZGVza3RvcCIgPT09IHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gYCR7dH1fJHtyfWAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdGhpcy5nZXRDb250cm9sVmFsdWUoZSwgbywgbik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkIHx8IDAgPT09IGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhKyssIHIgPSBzW2FdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDg2NDY6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBMaWdodGJveE1hbmFnZXIgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLlZpZXdNb2R1bGUgewogICAgICAgICAgICAgICAgc3RhdGljIGdldExpZ2h0Ym94KCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBuZXcgUHJvbWlzZSgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmUoNzIzKS50aGVuKG4udC5iaW5kKG4sIDM4OTYsIDIzKSkudGhlbigodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKG5ldyBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGVsZW1lbnRvckZyb250ZW5kLnV0aWxzLmFzc2V0c0xvYWRlci5sb2FkKCJzY3JpcHQiLCAiZGlhbG9nIiksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlbGVtZW50b3JGcm9udGVuZC51dGlscy5hc3NldHNMb2FkZXIubG9hZCgic2NyaXB0IiwgInNoYXJlLWxpbmsiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2UsIHQsIG9dKS50aGVuKCgoKSA9PiBlKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiAiYSwgW2RhdGEtZWxlbWVudG9yLWxpZ2h0Ym94XSIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlZmF1bHRFbGVtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAkbGlua3M6IGpRdWVyeSh0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMubGlua3MiKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc0xpZ2h0Ym94TGluayhlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJhIiA9PT0gZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgJiYgKGUuaGFzQXR0cmlidXRlKCJkb3dubG9hZCIpIHx8ICEvXlteP10rXC4ocG5nfGpwZT9nfGdpZnxzdmd8d2VicCkoXD8uKik/JC9pLnRlc3QoZS5ocmVmKSkgJiYgIWUuZGF0YXNldC5lbGVtZW50b3JMaWdodGJveFZpZGVvKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGVsZW1lbnRvckZyb250ZW5kLmdldEtpdFNldHRpbmdzKCJnbG9iYWxfaW1hZ2VfbGlnaHRib3giKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUuZGF0YXNldC5lbGVtZW50b3JPcGVuTGlnaHRib3g7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ5ZXMiID09PSBuIHx8IHQgJiYgIm5vIiAhPT0gbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXN5bmMgb25MaW5rQ2xpY2soZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlLmN1cnJlbnRUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBqUXVlcnkoZS50YXJnZXQpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZWxlbWVudG9yRnJvbnRlbmQuaXNFZGl0TW9kZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbyAmJiBlbGVtZW50b3IuJHByZXZpZXdDb250ZW50cy5maW5kKCJib2R5IikuaGFzQ2xhc3MoImVsZW1lbnRvci1lZGl0b3JfX3VpLXN0YXRlX19jb2xvci1waWNrZXIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9ICEhbi5jbG9zZXN0KCIuZWxlbWVudG9yLWVkaXQtYXJlYSIpLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNMaWdodGJveExpbmsodCkpIHJldHVybiB2b2lkKG8gJiYgcyAmJiBlLnByZXZlbnREZWZhdWx0KCkpOwogICAgICAgICAgICAgICAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KCksIG8gJiYgIWVsZW1lbnRvci5nZXRQcmVmZXJlbmNlcygibGlnaHRib3hfaW5fZWRpdG9yIikpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAoaSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICh0aGlzLmlzT3B0aW1pemVkQXNzZXRzTG9hZGluZygpID8gYXdhaXQgTGlnaHRib3hNYW5hZ2VyLmdldExpZ2h0Ym94KCkgOiBlbGVtZW50b3JGcm9udGVuZC51dGlscy5saWdodGJveCkuY3JlYXRlTGlnaHRib3godCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzT3B0aW1pemVkQXNzZXRzTG9hZGluZygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLmV4cGVyaW1lbnRhbEZlYXR1cmVzLmVfb3B0aW1pemVkX2Fzc2V0c19sb2FkaW5nCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBiaW5kRXZlbnRzKCkgewogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmVsZW1lbnRzLiRkb2N1bWVudC5vbigiY2xpY2siLCB0aGlzLmdldFNldHRpbmdzKCJzZWxlY3RvcnMubGlua3MiKSwgKGUgPT4gdGhpcy5vbkxpbmtDbGljayhlKSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvbkluaXQoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIub25Jbml0KC4uLmFyZ3VtZW50cyksIHRoaXMuaXNPcHRpbWl6ZWRBc3NldHNMb2FkaW5nKCkgJiYgIWVsZW1lbnRvckZyb250ZW5kLmlzRWRpdE1vZGUoKSAmJiB0aGlzLmVsZW1lbnRzLiRsaW5rcy5lYWNoKCgoZSwgdCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0xpZ2h0Ym94TGluayh0KSkgcmV0dXJuIExpZ2h0Ym94TWFuYWdlci5nZXRMaWdodGJveCgpLCAhMQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IExpZ2h0Ym94TWFuYWdlcgogICAgICAgIH0sCiAgICAgICAgODYyODogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IGNsYXNzIFN3aXBlciB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnID0gdCwgdGhpcy5jb25maWcuYnJlYWtwb2ludHMgJiYgKHRoaXMuY29uZmlnID0gdGhpcy5hZGp1c3RDb25maWcodCkpLCBlIGluc3RhbmNlb2YgalF1ZXJ5ICYmIChlID0gZVswXSksIGUuY2xvc2VzdCgiLmVsZW1lbnRvci13aWRnZXQtd3JhcCIpID8gLmNsYXNzTGlzdC5hZGQoImUtc3dpcGVyLWNvbnRhaW5lciIpLCBlLmNsb3Nlc3QoIi5lbGVtZW50b3Itd2lkZ2V0IikgPyAuY2xhc3NMaXN0LmFkZCgiZS13aWRnZXQtc3dpcGVyIiksIG5ldyBQcm9taXNlKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50b3JGcm9udGVuZC5jb25maWcuZXhwZXJpbWVudGFsRmVhdHVyZXMuZV9vcHRpbWl6ZWRfYXNzZXRzX2xvYWRpbmcpIHJldHVybiB0KHRoaXMuY3JlYXRlU3dpcGVySW5zdGFuY2UoZSwgdGhpcy5jb25maWcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQudXRpbHMuYXNzZXRzTG9hZGVyLmxvYWQoInNjcmlwdCIsICJzd2lwZXIiKS50aGVuKCgoKSA9PiB0KHRoaXMuY3JlYXRlU3dpcGVySW5zdGFuY2UoZSwgdGhpcy5jb25maWcpKSkpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjcmVhdGVTd2lwZXJJbnN0YW5jZShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHdpbmRvdy5Td2lwZXI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ucHJvdG90eXBlLmFkanVzdENvbmZpZyA9IHRoaXMuYWRqdXN0Q29uZmlnLCBuZXcgbihlLCB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWRqdXN0Q29uZmlnKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWUuaGFuZGxlRWxlbWVudG9yQnJlYWtwb2ludHMpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlbGVtZW50b3JGcm9udGVuZC5jb25maWcucmVzcG9uc2l2ZS5hY3RpdmVCcmVha3BvaW50cywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVsZW1lbnRvckZyb250ZW5kLmJyZWFrcG9pbnRzLmdldEJyZWFrcG9pbnRWYWx1ZXMoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZS5icmVha3BvaW50cykuZm9yRWFjaCgobyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBwYXJzZUludChvKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSB0Lm1vYmlsZS52YWx1ZSB8fCBpICsgMSA9PT0gdC5tb2JpbGUudmFsdWUpIHMgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdC53aWRlc2NyZWVuIHx8IGkgIT09IHQud2lkZXNjcmVlbi52YWx1ZSAmJiBpICsgMSAhPT0gdC53aWRlc2NyZWVuLnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gbi5maW5kSW5kZXgoKGUgPT4gaSA9PT0gZSB8fCBpICsgMSA9PT0gZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG5bZSAtIDFdCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBzID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5icmVha3BvaW50c1tzXSA9IGUuYnJlYWtwb2ludHNbb10sIGUuYnJlYWtwb2ludHNbb10gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiBlLnNsaWRlc1BlclZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJHcm91cDogZS5zbGlkZXNQZXJHcm91cCA/IGUuc2xpZGVzUGVyR3JvdXAgOiAxCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgMjA2NDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDAsIG4oNTcxOSk7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5WaWV3TW9kdWxlIHsKICAgICAgICAgICAgICAgIGdldERlZmF1bHRTZXR0aW5ncygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiAnYVtocmVmXj0iJTIzZWxlbWVudG9yLWFjdGlvbiJdLCBhW2hyZWZePSIjZWxlbWVudG9yLWFjdGlvbiJdJwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmluZEV2ZW50cygpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50b3JGcm9udGVuZC5lbGVtZW50cy4kZG9jdW1lbnQub24oImNsaWNrIiwgdGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzLmxpbmtzIiksIHRoaXMucnVuTGlua0FjdGlvbi5iaW5kKHRoaXMpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5pdEFjdGlvbnMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zID0gewogICAgICAgICAgICAgICAgICAgICAgICBsaWdodGJveDogYXN5bmMgZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gYXdhaXQgZWxlbWVudG9yRnJvbnRlbmQudXRpbHMubGlnaHRib3g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnNsaWRlc2hvdyA/IHQub3BlblNsaWRlc2hvdyhlLnNsaWRlc2hvdywgZS51cmwpIDogKGUuaWQgJiYgKGUudHlwZSA9ICJpbWFnZSIpLCB0LnNob3dNb2RhbChlKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFkZEFjdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25zW2VdID0gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcnVuQWN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gKGUgPSBkZWNvZGVVUklDb21wb25lbnQoZSkpLm1hdGNoKC9hY3Rpb249KC4rPykmLyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0KSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuYWN0aW9uc1t0WzFdXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIW4pIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBsZXQgbyA9IHt9OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBlLm1hdGNoKC9zZXR0aW5ncz0oLispLyk7CiAgICAgICAgICAgICAgICAgICAgaSAmJiAobyA9IEpTT04ucGFyc2UoYXRvYihpWzFdKSkpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gbmV3IEFycmF5KHMgPiAxID8gcyAtIDEgOiAwKSwgYSA9IDE7IGEgPCBzOyBhKyspIHJbYSAtIDFdID0gYXJndW1lbnRzW2FdOwogICAgICAgICAgICAgICAgICAgIG4obywgLi4ucikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJ1bkxpbmtBY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKSwgdGhpcy5ydW5BY3Rpb24oalF1ZXJ5KGUuY3VycmVudFRhcmdldCkuYXR0cigiaHJlZiIpLCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcnVuSGFzaEFjdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2F0aW9uLmhhc2gpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2RhdGEtZS1hY3Rpb24taGFzaD0iJHtsb2NhdGlvbi5oYXNofSJdLCBhW2hyZWYqPSIke2xvY2F0aW9uLmhhc2h9Il1gKTsKICAgICAgICAgICAgICAgICAgICBlICYmIHRoaXMucnVuQWN0aW9uKGUuZ2V0QXR0cmlidXRlKCJkYXRhLWUtYWN0aW9uLWhhc2giKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNyZWF0ZUFjdGlvbkhhc2goZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoYCNlbGVtZW50b3ItYWN0aW9uOmFjdGlvbj0ke2V9JnNldHRpbmdzPSR7YnRvYShKU09OLnN0cmluZ2lmeSh0KSl9YCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uSW5pdCgpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlci5vbkluaXQoKSwgdGhpcy5pbml0QWN0aW9ucygpLCBlbGVtZW50b3JGcm9udGVuZC5vbigiY29tcG9uZW50czppbml0IiwgdGhpcy5ydW5IYXNoQWN0aW9uLmJpbmQodGhpcykpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDYwMjg6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5pc1Njcm9sbFNuYXBBY3RpdmUgPSB0LmVzY2FwZUhUTUwgPSB2b2lkIDA7CiAgICAgICAgICAgIHQuZXNjYXBlSFRNTCA9IGUgPT4gewogICAgICAgICAgICAgICAgY29uc3QgdCA9IHsKICAgICAgICAgICAgICAgICAgICAiJiI6ICImYW1wOyIsCiAgICAgICAgICAgICAgICAgICAgIjwiOiAiJmx0OyIsCiAgICAgICAgICAgICAgICAgICAgIj4iOiAiJmd0OyIsCiAgICAgICAgICAgICAgICAgICAgIiciOiAiJiMzOTsiLAogICAgICAgICAgICAgICAgICAgICciJzogIiZxdW90OyIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gZS5yZXBsYWNlKC9bJjw+JyJdL2csIChlID0+IHRbZV0gfHwgZSkpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHQuaXNTY3JvbGxTbmFwQWN0aXZlID0gKCkgPT4gInllcyIgPT09IChlbGVtZW50b3JGcm9udGVuZC5pc0VkaXRNb2RlKCkgPyBlbGVtZW50b3Iuc2V0dGluZ3MucGFnZS5tb2RlbC5hdHRyaWJ1dGVzID8gLnNjcm9sbF9zbmFwIDogZWxlbWVudG9yRnJvbnRlbmQuY29uZmlnLnNldHRpbmdzLnBhZ2UgPyAuc2Nyb2xsX3NuYXApCiAgICAgICAgfSwKICAgICAgICA0NzczOiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgQmFzZUxvYWRlciBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuVmlld01vZHVsZSB7CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNJbnNlcnRlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RTY3JpcHQ6ICJzY3JpcHQ6Zmlyc3QiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZWZhdWx0RWxlbWVudHMoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpcnN0U2NyaXB0OiBqUXVlcnkodGhpcy5nZXRTZXR0aW5ncygic2VsZWN0b3JzLmZpcnN0U2NyaXB0IikpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5zZXJ0QVBJKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuJGZpcnN0U2NyaXB0LmJlZm9yZShqUXVlcnkoIjxzY3JpcHQ+IiwgewogICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0QXBpVVJMKCkKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuc2V0U2V0dGluZ3MoImlzSW5zZXJ0ZWQiLCAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFZpZGVvSURGcm9tVVJMKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5tYXRjaCh0aGlzLmdldFVSTFJlZ2V4KCkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIHRbMV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9uQXBpUmVhZHkoZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2V0dGluZ3MoImlzSW5zZXJ0ZWQiKSB8fCB0aGlzLmluc2VydEFQSSgpLCB0aGlzLmlzQXBpTG9hZGVkKCkgPyBlKHRoaXMuZ2V0QXBpT2JqZWN0KCkpIDogc2V0VGltZW91dCgoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQXBpUmVhZHkoZSkKICAgICAgICAgICAgICAgICAgICB9KSwgMzUwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QXV0b3BsYXlVUkwoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnJlcGxhY2UoIiZhdXRvcGxheT0wIiwgIiIpICsgIiZhdXRvcGxheT0xIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZGVmYXVsdCA9IEJhc2VMb2FkZXIKICAgICAgICB9LAogICAgICAgIDE5MTE6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgIHZhciBvID0gbigzMjAzKTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIHZhciBpID0gbyhuKDQ3NzMpKTsKICAgICAgICAgICAgY2xhc3MgVmltZW9Mb2FkZXIgZXh0ZW5kcyBpLmRlZmF1bHQgewogICAgICAgICAgICAgICAgZ2V0QXBpVVJMKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL2FwaS9wbGF5ZXIuanMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRVUkxSZWdleCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gL14oPzpodHRwcz86XC9cLyk/KD86d3d3fHBsYXllclwuKT8oPzp2aW1lb1wuY29tXC8pPyg/OnZpZGVvXC98ZXh0ZXJuYWxcLyk/KFxkKykoW14uPyYjIic+XT8pLwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNBcGlMb2FkZWQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5WaW1lbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QXBpT2JqZWN0KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaW1lbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QXV0b3BsYXlVUkwoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSAoZSA9IHN1cGVyLmdldEF1dG9wbGF5VVJMKGUpKS5tYXRjaCgvI3Q9W14mXSovKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5yZXBsYWNlKHRbMF0sICIiKSArIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBWaW1lb0xvYWRlcgogICAgICAgIH0sCiAgICAgICAgMTYwNDogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgdmFyIG8gPSBuKDMyMDMpOwogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgdmFyIGkgPSBvKG4oNDc3MykpOwogICAgICAgICAgICBjbGFzcyBZb3V0dWJlTG9hZGVyIGV4dGVuZHMgaS5kZWZhdWx0IHsKICAgICAgICAgICAgICAgIGdldEFwaVVSTCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2lmcmFtZV9hcGkiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRVUkxSZWdleCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gL14oPzpodHRwcz86XC9cLyk/KD86d3d3XC4pPyg/Om1cLik/KD86eW91dHVcLmJlXC98eW91dHViZVwuY29tXC8oPzooPzp3YXRjaCk/XD8oPzouKiYpP3ZpPz18KD86ZW1iZWR8dnx2aXx1c2VyKVwvKSkoW14/JiInPl0rKS8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzQXBpTG9hZGVkKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuWVQgJiYgWVQubG9hZGVkCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRBcGlPYmplY3QoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFlUCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gWW91dHViZUxvYWRlcgogICAgICAgIH0sCiAgICAgICAgNTk6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgIG4ucCA9IGVsZW1lbnRvckZyb250ZW5kQ29uZmlnLnVybHMuYXNzZXRzICsgImpzLyIKICAgICAgICB9LAogICAgICAgIDQzNzU6IChlLCB0KSA9PiB7CiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAiX19lc01vZHVsZSIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAhMAogICAgICAgICAgICB9KSwgdC5kZWZhdWx0ID0gdm9pZCAwOwogICAgICAgICAgICBjbGFzcyBCcmVha3BvaW50cyBleHRlbmRzIGVsZW1lbnRvck1vZHVsZXMuTW9kdWxlIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGUpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLCB0aGlzLnJlc3BvbnNpdmVDb25maWcgPSBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRBY3RpdmVCcmVha3BvaW50c0xpc3QoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IHt9OwogICAgICAgICAgICAgICAgICAgIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhcmdlVG9TbWFsbDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZXNrdG9wOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uZQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IE9iamVjdC5rZXlzKHRoaXMucmVzcG9uc2l2ZUNvbmZpZy5hY3RpdmVCcmVha3BvaW50cyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUud2l0aERlc2t0b3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IC0xID09PSB0LmluZGV4T2YoIndpZGVzY3JlZW4iKSA/IHQubGVuZ3RoIDogdC5sZW5ndGggLSAxOwogICAgICAgICAgICAgICAgICAgICAgICB0LnNwbGljZShlLCAwLCAiZGVza3RvcCIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmxhcmdlVG9TbWFsbCAmJiB0LnJldmVyc2UoKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0QnJlYWtwb2ludFZhbHVlcygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUJyZWFrcG9pbnRzOiBlCiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMucmVzcG9uc2l2ZUNvbmZpZywgdCA9IFtdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGUpLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0LnB1c2goZS52YWx1ZSkKICAgICAgICAgICAgICAgICAgICB9KSksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldERlc2t0b3BQcmV2aW91c0RldmljZUtleSgpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgZSA9ICIiOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQnJlYWtwb2ludHM6IHQKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5yZXNwb25zaXZlQ29uZmlnLCBuID0gT2JqZWN0LmtleXModCksIG8gPSBuLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9ICJtaW4iID09PSB0W25bbyAtIDFdXS5kaXJlY3Rpb24gPyBuW28gLSAyXSA6IG5bbyAtIDFdLCBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZXNrdG9wTWluUG9pbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVCcmVha3BvaW50czogZQogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLnJlc3BvbnNpdmVDb25maWc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbdGhpcy5nZXREZXNrdG9wUHJldmlvdXNEZXZpY2VLZXkoKV0udmFsdWUgKyAxCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXREZXZpY2VNaW5CcmVha3BvaW50KGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoImRlc2t0b3AiID09PSBlKSByZXR1cm4gdGhpcy5nZXREZXNrdG9wTWluUG9pbnQoKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUJyZWFrcG9pbnRzOiB0CiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMucmVzcG9uc2l2ZUNvbmZpZywgbiA9IE9iamVjdC5rZXlzKHQpOwogICAgICAgICAgICAgICAgICAgIGxldCBvOwogICAgICAgICAgICAgICAgICAgIGlmIChuWzBdID09PSBlKSBvID0gMzIwOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJ3aWRlc2NyZWVuIiA9PT0gZSkgbyA9IHRbZV0gPyB0W2VdLnZhbHVlIDogdGhpcy5yZXNwb25zaXZlQ29uZmlnLmJyZWFrcG9pbnRzLndpZGVzY3JlZW47CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBuLmluZGV4T2YoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0W25baSAtIDFdXS52YWx1ZSArIDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldEFjdGl2ZU1hdGNoUmVnZXgoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAodGhpcy5nZXRBY3RpdmVCcmVha3BvaW50c0xpc3QoKS5tYXAoKGUgPT4gIl8iICsgZSkpLmpvaW4oInwiKSArICIkIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBCcmVha3BvaW50cwogICAgICAgIH0sCiAgICAgICAgNjQwNDogKGUsIHQpID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB0LkV2ZW50cyA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgRXZlbnRzIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBkaXNwYXRjaChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1szXSA/IGFyZ3VtZW50c1szXSA6IG51bGw7CiAgICAgICAgICAgICAgICAgICAgZSA9IGUgaW5zdGFuY2VvZiBqUXVlcnkgPyBlWzBdIDogZSwgbyAmJiBlLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KG8sIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiBuCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiBuCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5FdmVudHMgPSBFdmVudHM7CiAgICAgICAgICAgIHZhciBuID0gRXZlbnRzOwogICAgICAgICAgICB0LmRlZmF1bHQgPSBuCiAgICAgICAgfSwKICAgICAgICA5NDY5OiBlID0+IHsKICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdCA9IEFycmF5LnByb3RvdHlwZS5zbGljZSwKICAgICAgICAgICAgICAgICAgICBuID0gewogICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyczoge30KICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9yZW1vdmVIb29rKGUsIHQsIG8sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcywgciwgYTsKICAgICAgICAgICAgICAgICAgICBpZiAobltlXVt0XSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IG5bZV1bdF0sIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gcy5sZW5ndGg7IGEtLTspKHIgPSBzW2FdKS5jYWxsYmFjayA9PT0gbyAmJiByLmNvbnRleHQgPT09IGkgJiYgcy5zcGxpY2UoYSwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gcy5sZW5ndGg7IGEtLTspIHNbYV0uY2FsbGJhY2sgPT09IG8gJiYgcy5zcGxpY2UoYSwgMSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBuW2VdW3RdID0gW10KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBfYWRkSG9vayhlLCB0LCBvLCBpLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogcwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbltlXVt0XTsKICAgICAgICAgICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoalF1ZXJ5LmVhY2goYSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhbGxiYWNrID09PSBvKSByZXR1cm4gbCA9ICEwLCAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBsKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGEucHVzaChyKSwgYSA9IGZ1bmN0aW9uIF9ob29rSW5zZXJ0U29ydChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0LCBuLCBvLCBpID0gMSwgcyA9IGUubGVuZ3RoOyBpIDwgczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gZVtpXSwgbiA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvID0gZVtuIC0gMV0pICYmIG8ucHJpb3JpdHkgPiB0LnByaW9yaXR5OykgZVtuXSA9IGVbbiAtIDFdLCAtLW47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtuXSA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0oYSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYSA9IFtyXTsKICAgICAgICAgICAgICAgICAgICBuW2VdW3RdID0gYQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9ydW5Ib29rKGUsIHQsIG8pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgcywgciA9IG5bZV1bdF07CiAgICAgICAgICAgICAgICAgICAgaWYgKCFyKSByZXR1cm4gImZpbHRlcnMiID09PSBlICYmIG9bMF07CiAgICAgICAgICAgICAgICAgICAgaWYgKHMgPSByLmxlbmd0aCwgImZpbHRlcnMiID09PSBlKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSBvWzBdID0gcltpXS5jYWxsYmFjay5hcHBseShyW2ldLmNvbnRleHQsIG8pOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykgcltpXS5jYWxsYmFjay5hcHBseShyW2ldLmNvbnRleHQsIG8pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZmlsdGVycyIgIT09IGUgfHwgb1swXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRmlsdGVyOiBmdW5jdGlvbiByZW1vdmVGaWx0ZXIodCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgX3JlbW92ZUhvb2soImZpbHRlcnMiLCB0LCBuKSwgZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXBwbHlGaWx0ZXJzOiBmdW5jdGlvbiBhcHBseUZpbHRlcnMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5jYWxsKGFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIG8gPyBfcnVuSG9vaygiZmlsdGVycyIsIG8sIG4pIDogZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYWRkRmlsdGVyOiBmdW5jdGlvbiBhZGRGaWx0ZXIodCwgbiwgbywgaSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiAmJiBfYWRkSG9vaygiZmlsdGVycyIsIHQsIG4sIG8gPSBwYXJzZUludChvIHx8IDEwLCAxMCksIGkpLCBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZW1vdmVBY3Rpb246IGZ1bmN0aW9uIHJlbW92ZUFjdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiBfcmVtb3ZlSG9vaygiYWN0aW9ucyIsIHQsIG4pLCBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkb0FjdGlvbjogZnVuY3Rpb24gZG9BY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5jYWxsKGFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIG8gJiYgX3J1bkhvb2soImFjdGlvbnMiLCBvLCBuKSwgZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYWRkQWN0aW9uOiBmdW5jdGlvbiBhZGRBY3Rpb24odCwgbiwgbywgaSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiAmJiBfYWRkSG9vaygiYWN0aW9ucyIsIHQsIG4sIG8gPSBwYXJzZUludChvIHx8IDEwLCAxMCksIGkpLCBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgZQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAzMzA4OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY29uc3QgbWF0Y2hVc2VyQWdlbnQgPSBlID0+IG4uaW5kZXhPZihlKSA+PSAwLAogICAgICAgICAgICAgICAgbiA9IG5hdmlnYXRvci51c2VyQWdlbnQsCiAgICAgICAgICAgICAgICBvID0gISF3aW5kb3cub3ByICYmICEhb3ByLmFkZG9ucyB8fCAhIXdpbmRvdy5vcGVyYSB8fCBtYXRjaFVzZXJBZ2VudCgiIE9QUi8iKSwKICAgICAgICAgICAgICAgIGkgPSBtYXRjaFVzZXJBZ2VudCgiRmlyZWZveCIpLAogICAgICAgICAgICAgICAgcyA9IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobikgfHwgL2NvbnN0cnVjdG9yL2kudGVzdCh3aW5kb3cuSFRNTEVsZW1lbnQpIHx8ICJbb2JqZWN0IFNhZmFyaVJlbW90ZU5vdGlmaWNhdGlvbl0iID09PSAoIXdpbmRvdy5zYWZhcmkgfHwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHNhZmFyaSAmJiBzYWZhcmkucHVzaE5vdGlmaWNhdGlvbikudG9TdHJpbmcoKSwKICAgICAgICAgICAgICAgIHIgPSAvVHJpZGVudHxNU0lFLy50ZXN0KG4pICYmICEhZG9jdW1lbnQuZG9jdW1lbnRNb2RlLAogICAgICAgICAgICAgICAgYSA9ICFyICYmICEhd2luZG93LlN0eWxlTWVkaWEgfHwgbWF0Y2hVc2VyQWdlbnQoIkVkZyIpLAogICAgICAgICAgICAgICAgbCA9ICEhd2luZG93LmNocm9tZSAmJiBtYXRjaFVzZXJBZ2VudCgiQ2hyb21lIikgJiYgIShhIHx8IG8pLAogICAgICAgICAgICAgICAgZCA9IG1hdGNoVXNlckFnZW50KCJDaHJvbWUiKSAmJiAhIXdpbmRvdy5DU1MsCiAgICAgICAgICAgICAgICBjID0gbWF0Y2hVc2VyQWdlbnQoIkFwcGxlV2ViS2l0IikgJiYgIWQ7CiAgICAgICAgICAgIHZhciB1ID0gewogICAgICAgICAgICAgICAgaXNUb3VjaERldmljZTogIm9udG91Y2hzdGFydCIgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDAgfHwgbmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHMgPiAwLAogICAgICAgICAgICAgICAgYXBwbGVXZWJraXQ6IGMsCiAgICAgICAgICAgICAgICBibGluazogZCwKICAgICAgICAgICAgICAgIGNocm9tZTogbCwKICAgICAgICAgICAgICAgIGVkZ2U6IGEsCiAgICAgICAgICAgICAgICBmaXJlZm94OiBpLAogICAgICAgICAgICAgICAgaWU6IHIsCiAgICAgICAgICAgICAgICBtYWM6IG1hdGNoVXNlckFnZW50KCJNYWNpbnRvc2giKSwKICAgICAgICAgICAgICAgIG9wZXJhOiBvLAogICAgICAgICAgICAgICAgc2FmYXJpOiBzLAogICAgICAgICAgICAgICAgd2Via2l0OiBtYXRjaFVzZXJBZ2VudCgiQXBwbGVXZWJLaXQiKQogICAgICAgICAgICB9OwogICAgICAgICAgICB0LmRlZmF1bHQgPSB1CiAgICAgICAgfSwKICAgICAgICA1MTA3OiAoZSwgdCkgPT4gewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgIl9fZXNNb2R1bGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogITAKICAgICAgICAgICAgfSksIHQuZGVmYXVsdCA9IHZvaWQgMDsKICAgICAgICAgICAgY2xhc3MgX2RlZmF1bHQgZXh0ZW5kcyBlbGVtZW50b3JNb2R1bGVzLk1vZHVsZSB7CiAgICAgICAgICAgICAgICBnZXQoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGxldCBuOwogICAgICAgICAgICAgICAgICAgIHQgPSB0IHx8IHt9OwogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnNlc3Npb24gPyBzZXNzaW9uU3RvcmFnZSA6IGxvY2FsU3RvcmFnZQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPyB2b2lkIDAgOiB7fQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsZXQgbyA9IG4uZ2V0SXRlbSgiZWxlbWVudG9yIik7CiAgICAgICAgICAgICAgICAgICAgbyA9IG8gPyBKU09OLnBhcnNlKG8pIDoge30sIG8uX19leHBpcmF0aW9uIHx8IChvLl9fZXhwaXJhdGlvbiA9IHt9KTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gby5fX2V4cGlyYXRpb247CiAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBlID8gaVtlXSAmJiAocyA9IFtlXSkgOiBzID0gT2JqZWN0LmtleXMoaSk7CiAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSAhMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoaVtlXSkgPCBuZXcgRGF0ZSAmJiAoZGVsZXRlIG9bZV0sIGRlbGV0ZSBpW2VdLCByID0gITApCiAgICAgICAgICAgICAgICAgICAgfSkpLCByICYmIHRoaXMuc2F2ZShvLCB0LnNlc3Npb24pLCBlID8gb1tlXSA6IG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldChlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgbiA9IG4gfHwge307CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IHRoaXMuZ2V0KG51bGwsIG4pOwogICAgICAgICAgICAgICAgICAgIGlmIChvW2VdID0gdCwgbi5saWZldGltZUluU2Vjb25kcykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gbmV3IERhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2V0VGltZSh0LmdldFRpbWUoKSArIDFlMyAqIG4ubGlmZXRpbWVJblNlY29uZHMpLCBvLl9fZXhwaXJhdGlvbltlXSA9IHQuZ2V0VGltZSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZShvLCBuLnNlc3Npb24pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzYXZlKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgbjsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBuID0gdCA/IHNlc3Npb25TdG9yYWdlIDogbG9jYWxTdG9yYWdlCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbi5zZXRJdGVtKCJlbGVtZW50b3IiLCBKU09OLnN0cmluZ2lmeShlKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LmRlZmF1bHQgPSBfZGVmYXVsdAogICAgICAgIH0sCiAgICAgICAgNjA0NjogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pLCB0LmRlZmF1bHQgPSB2b2lkIDA7CiAgICAgICAgICAgIGNsYXNzIF9kZWZhdWx0IGV4dGVuZHMgZWxlbWVudG9yTW9kdWxlcy5Nb2R1bGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoKSwgZWxlbWVudG9yRnJvbnRlbmQuZWxlbWVudHNIYW5kbGVyLmF0dGFjaEhhbmRsZXIoInRleHQtcGF0aCIsICgoKSA9PiBuLmUoNDgpLnRoZW4obi5iaW5kKG4sIDY0NjgpKSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5kZWZhdWx0ID0gX2RlZmF1bHQKICAgICAgICB9LAogICAgICAgIDE4NTU6IChlLCB0LCBuKSA9PiB7CiAgICAgICAgICAgIHZhciBvID0gbig1NTE2KSwKICAgICAgICAgICAgICAgIGkgPSBUeXBlRXJyb3I7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGlmIChvKHQsIGUpKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgIHRocm93IGkoIkluY29ycmVjdCBpbnZvY2F0aW9uIikKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgMzYyMTogZSA9PiB7CiAgICAgICAgICAgIGUuZXhwb3J0cyA9IHsKICAgICAgICAgICAgICAgIEluZGV4U2l6ZUVycm9yOiB7CiAgICAgICAgICAgICAgICAgICAgczogIklOREVYX1NJWkVfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiAxLAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBET01TdHJpbmdTaXplRXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiRE9NU1RSSU5HX1NJWkVfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiAyLAogICAgICAgICAgICAgICAgICAgIG06IDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiSElFUkFSQ0hZX1JFUVVFU1RfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiAzLAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBXcm9uZ0RvY3VtZW50RXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiV1JPTkdfRE9DVU1FTlRfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiA0LAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiSU5WQUxJRF9DSEFSQUNURVJfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiA1LAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBOb0RhdGFBbGxvd2VkRXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiTk9fREFUQV9BTExPV0VEX0VSUiIsCiAgICAgICAgICAgICAgICAgICAgYzogNiwKICAgICAgICAgICAgICAgICAgICBtOiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiA3LAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBOb3RGb3VuZEVycm9yOiB7CiAgICAgICAgICAgICAgICAgICAgczogIk5PVF9GT1VORF9FUlIiLAogICAgICAgICAgICAgICAgICAgIGM6IDgsCiAgICAgICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIE5vdFN1cHBvcnRlZEVycm9yOiB7CiAgICAgICAgICAgICAgICAgICAgczogIk5PVF9TVVBQT1JURURfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiA5LAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBJblVzZUF0dHJpYnV0ZUVycm9yOiB7CiAgICAgICAgICAgICAgICAgICAgczogIklOVVNFX0FUVFJJQlVURV9FUlIiLAogICAgICAgICAgICAgICAgICAgIGM6IDEwLAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBJbnZhbGlkU3RhdGVFcnJvcjogewogICAgICAgICAgICAgICAgICAgIHM6ICJJTlZBTElEX1NUQVRFX0VSUiIsCiAgICAgICAgICAgICAgICAgICAgYzogMTEsCiAgICAgICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFN5bnRheEVycm9yOiB7CiAgICAgICAgICAgICAgICAgICAgczogIlNZTlRBWF9FUlIiLAogICAgICAgICAgICAgICAgICAgIGM6IDEyLAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiAxMywKICAgICAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgTmFtZXNwYWNlRXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiTkFNRVNQQUNFX0VSUiIsCiAgICAgICAgICAgICAgICAgICAgYzogMTQsCiAgICAgICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEludmFsaWRBY2Nlc3NFcnJvcjogewogICAgICAgICAgICAgICAgICAgIHM6ICJJTlZBTElEX0FDQ0VTU19FUlIiLAogICAgICAgICAgICAgICAgICAgIGM6IDE1LAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBWYWxpZGF0aW9uRXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiVkFMSURBVElPTl9FUlIiLAogICAgICAgICAgICAgICAgICAgIGM6IDE2LAogICAgICAgICAgICAgICAgICAgIG06IDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBUeXBlTWlzbWF0Y2hFcnJvcjogewogICAgICAgICAgICAgICAgICAgIHM6ICJUWVBFX01JU01BVENIX0VSUiIsCiAgICAgICAgICAgICAgICAgICAgYzogMTcsCiAgICAgICAgICAgICAgICAgICAgbTogMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFNlY3VyaXR5RXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiU0VDVVJJVFlfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiAxOCwKICAgICAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgTmV0d29ya0Vycm9yOiB7CiAgICAgICAgICAgICAgICAgICAgczogIk5FVFdPUktfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiAxOSwKICAgICAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQWJvcnRFcnJvcjogewogICAgICAgICAgICAgICAgICAgIHM6ICJBQk9SVF9FUlIiLAogICAgICAgICAgICAgICAgICAgIGM6IDIwLAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBVUkxNaXNtYXRjaEVycm9yOiB7CiAgICAgICAgICAgICAgICAgICAgczogIlVSTF9NSVNNQVRDSF9FUlIiLAogICAgICAgICAgICAgICAgICAgIGM6IDIxLAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBRdW90YUV4Y2VlZGVkRXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiUVVPVEFfRVhDRUVERURfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiAyMiwKICAgICAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgVGltZW91dEVycm9yOiB7CiAgICAgICAgICAgICAgICAgICAgczogIlRJTUVPVVRfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiAyMywKICAgICAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgSW52YWxpZE5vZGVUeXBlRXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiSU5WQUxJRF9OT0RFX1RZUEVfRVJSIiwKICAgICAgICAgICAgICAgICAgICBjOiAyNCwKICAgICAgICAgICAgICAgICAgICBtOiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgRGF0YUNsb25lRXJyb3I6IHsKICAgICAgICAgICAgICAgICAgICBzOiAiREFUQV9DTE9ORV9FUlIiLAogICAgICAgICAgICAgICAgICAgIGM6IDI1LAogICAgICAgICAgICAgICAgICAgIG06IDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNTcxOTogKGUsIHQsIG4pID0+IHsKICAgICAgICAgICAgdmFyIG8gPSBuKDE2OTUpLAogICAgICAgICAgICAgICAgaSA9IG4oMjA4NiksCiAgICAgICAgICAgICAgICBzID0gbig1NjMpLAogICAgICAgICAgICAgICAgciA9IG4oNTczNiksCiAgICAgICAgICAgICAgICBhID0gbig3ODI2KS5mLAogICAgICAgICAgICAgICAgbCA9IG4oOTYwNiksCiAgICAgICAgICAgICAgICBkID0gbigxODU1KSwKICAgICAgICAgICAgICAgIGMgPSBuKDUwNzApLAogICAgICAgICAgICAgICAgdSA9IG4oMTg3OSksCiAgICAgICAgICAgICAgICBoID0gbigzNjIxKSwKICAgICAgICAgICAgICAgIG0gPSBuKDc5KSwKICAgICAgICAgICAgICAgIGcgPSBuKDUyODMpLAogICAgICAgICAgICAgICAgcCA9IG4oMzI5NiksCiAgICAgICAgICAgICAgICBmID0gIkRPTUV4Y2VwdGlvbiIsCiAgICAgICAgICAgICAgICB2ID0gcygiRXJyb3IiKSwKICAgICAgICAgICAgICAgIGIgPSBzKGYpLAogICAgICAgICAgICAgICAgXyA9IGZ1bmN0aW9uIERPTUV4Y2VwdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBkKHRoaXMsIHkpOwogICAgICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHUoZSA8IDEgPyB2b2lkIDAgOiBhcmd1bWVudHNbMF0pLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdShlIDwgMiA/IHZvaWQgMCA6IGFyZ3VtZW50c1sxXSwgIkVycm9yIiksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuZXcgYih0LCBuKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHYodCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkubmFtZSA9IGYsIGEobywgInN0YWNrIiwgcigxLCBtKGkuc3RhY2ssIDEpKSksIGMobywgdGhpcywgXyksIG8KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB5ID0gXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgIHcgPSAic3RhY2siIGluIHYoZiksCiAgICAgICAgICAgICAgICBrID0gInN0YWNrIiBpbiBuZXcgYigxLCAyKSwKICAgICAgICAgICAgICAgIFMgPSBiICYmIGcgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLCBmKSwKICAgICAgICAgICAgICAgIEUgPSAhKCFTIHx8IFMud3JpdGFibGUgJiYgUy5jb25maWd1cmFibGUpLAogICAgICAgICAgICAgICAgTSA9IHcgJiYgIUUgJiYgIWs7CiAgICAgICAgICAgIG8oewogICAgICAgICAgICAgICAgZ2xvYmFsOiAhMCwKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiAhMCwKICAgICAgICAgICAgICAgIGZvcmNlZDogcCB8fCBNCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIERPTUV4Y2VwdGlvbjogTSA/IF8gOiBiCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgQyA9IHMoZiksCiAgICAgICAgICAgICAgICBBID0gQy5wcm90b3R5cGU7CiAgICAgICAgICAgIGlmIChBLmNvbnN0cnVjdG9yICE9PSBDKQogICAgICAgICAgICAgICAgZm9yICh2YXIgRCBpbiBwIHx8IGEoQSwgImNvbnN0cnVjdG9yIiwgcigxLCBDKSksIGgpCiAgICAgICAgICAgICAgICAgICAgaWYgKGwoaCwgRCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyICQgPSBoW0RdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9ICQuczsKICAgICAgICAgICAgICAgICAgICAgICAgbChDLCBSKSB8fCBhKEMsIFIsIHIoNiwgJC5jKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwKICAgIGUgPT4gewogICAgICAgIGUuTygwLCBbMzU0XSwgKCgpID0+IHsKICAgICAgICAgICAgcmV0dXJuIHQgPSA1NjU0LCBlKGUucyA9IHQpOwogICAgICAgICAgICB2YXIgdAogICAgICAgIH0pKTsKICAgICAgICBlLk8oKQogICAgfQpdKTs="}},"time_used":124,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":101,"receive":23,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/paid.svg","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.863Z","timestamp":1785128398863,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/paid.svg HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/svg+xml\r\ncontent-length: 716\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:46 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"777-67c3620e-7095a31960d079f9;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457452\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 742b3e10fca1b38fd992121b7dfdc4ef-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.019\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":1911,"size_decoded":1291,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"6daa56885bfe552d608fdb14c9b3bac2","sha1":"3409ea011ec2ca82aec3ecfd7ed76cc86df09005","sha256":"97410c75f595f603cd68b93a84aaab3a22bba874a758ad765e126adb67934fa4","sha512":"6bdd77706300467d4bc19e40ff63e022a735dd6a5c18d4d84d91b0d5b160757fd7e2418f6645cbdd3030695cd5a03b4eeaf6693cdccd33863f32a1acfa4be0e1","ssdeep":"","tlshash":"eb418cbb0371c9b5957dd24d5f6c05027ab4a8d39229c0c0765f2427cb4a8ece90e6cd","first_seen":"2026-07-27T03:56:42.469279Z","last_seen":"2026-07-27T05:01:06.136317Z","times_seen":3,"resource_available":false,"data":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iX9Ch0LvQvtC5XzIiIGRhdGEtbmFtZT0i0KHQu9C+0LkgMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0xLCAuY2xzLTIgewogICAgICAgIHN0cm9rZS13aWR0aDogMHB4OwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6ICMzODkwZmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIj4KICAgIDxnPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTIiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIi8+CiAgICAgIDxnIGlkPSJEODJfQnVzaW5lc3NfY29tbWVyY2VfZmluYW5jZV9tb25leSIgZGF0YS1uYW1lPSJEODIsIEJ1c2luZXNzLCBjb21tZXJjZSwgZmluYW5jZSwgbW9uZXkiPgogICAgICAgIDxnPgogICAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTMuOSw0MmMwLTQuMy0uNS04LjMtMS40LTExLjMtLjgtMi43LTEuOS00LjMtMi45LTQuM3MtMi4xLDEuNi0yLjksNC4zYy0uOSwzLTEuNCw3LTEuNCwxMS4zcy41LDguMywxLjQsMTEuM2MuOCwyLjcsMS45LDQuMywyLjksNC4zczIuMS0xLjYsMi45LTQuM2MuOS0zLDEuNC03LDEuNC0xMS4zWiIvPgogICAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNjUuNywyNi40aC0xNGMyLjIsMi43LDMuNCw5LjMsMy40LDE1LjZzLTEuMSwxMi45LTMuNCwxNS42aDE0Yy4zLTMuNiwzLjMtNi42LDYuOS02Ljl2LTE3LjRjLTMuNi0uMy02LjYtMy4zLTYuOS02LjlaTTYzLjMsNDUuMWMtMS43LDAtMy4xLTEuNC0zLjEtMy4xczEuNC0zLjEsMy4xLTMuMSwzLjEsMS40LDMuMSwzLjEtMS40LDMuMS0zLjEsMy4xWiIvPgogICAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTEuNCw3MnYtNC40aC0zLjh2NC40YzAsLjMtLjMuNi0uNi42aC0xLjJsMy43LDQuNiwzLjctNC42aC0xLjJjLS4zLDAtLjYtLjMtLjYtLjZaIi8+CiAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik02My4zLDQwLjFjLTEsMC0xLjkuOC0xLjksMS45cy44LDEuOSwxLjksMS45LDEuOS0uOCwxLjktMS45LS45LTEuOS0xLjktMS45WiIvPgogICAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMzUuOCw0MC4xYy0xLDAtMS45LjgtMS45LDEuOXMuOCwxLjksMS45LDEuOSwxLjktLjgsMS45LTEuOS0uOS0xLjktMS45LTEuOVoiLz4KICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxLjQsMjEuNHY0MS4zaDU2LjNWMjEuNEgyMS40Wk03My45LDUxLjNjMCwuMy0uMy42LS42LjYtMy41LDAtNi4zLDIuOC02LjMsNi4zLDAsLjMtLjMuNi0uNi42aC0zMy43Yy0uMywwLS42LS4zLS42LS42LDAtMy41LTIuOC02LjMtNi4zLTYuMy0uMywwLS42LS4zLS42LS42di0xOC42YzAtLjMuMy0uNi42LS42LDMuNSwwLDYuMy0yLjgsNi4zLTYuMywwLS4zLjMtLjYuNi0uNmgzMy43Yy4zLDAsLjYuMy42LjYsMCwzLjUsMi44LDYuMyw2LjMsNi4zLjMsMCwuNi4zLjYuNnYxOC42aDBaIi8+CiAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00Ny4zLDI2LjRoLTE0Yy0uMywzLjYtMy4zLDYuNi02LjksNi45djE3LjVjMy42LjIsNi42LDMuMiw2LjksNi44aDE0Yy0yLjItMi43LTMuNC05LjMtMy40LTE1LjZzMS4xLTEyLjksMy40LTE1LjZaTTM1LjgsNDUuMWMtMS43LDAtMy4xLTEuNC0zLjEtMy4xczEuNC0zLjEsMy4xLTMuMSwzLjEsMS40LDMuMSwzLjEtMS40LDMuMS0zLjEsMy4xWiIvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+"}},"time_used":99,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":99,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.144Z","timestamp":1785128399144,"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/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.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://circuittradetech.com\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: 50316\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 04:26:34 GMT\r\nexpires: Fri, 23 Jul 2027 04:26:34 GMT\r\ncache-control: public, max-age=31536000\r\nage: 347605\r\nlast-modified: Wed, 10 Sep 2025 16:23:20 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":50316,"size_decoded":51129,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 50316, version 1.0","md5":"97b33529e13b04b2205144e28a17a1d6","sha1":"9eaf3fe571af16f72a84dbadc1fce0128dff4486","sha256":"1dd49afc07fb2231b2ff686cbf007725fb2742271bb1f28ebd98f22a0d817343","sha512":"ce731a26fac8fd5583137450138d71fc36a9a0c4b79257a5af74be21cc2773b6e3a1ead61055411ec1c2cc857b8b0e6cbc94971f5f0b51820b458d9146af89bf","ssdeep":"768:etWz8e4bJ7xYqUBOYPc1NmWL7TDGrAZrIzcbWomWEjoyW6Md/AE1wBje34U:eZdhUQN5ToAZrIz7uEjR7udw5e34U","tlshash":"a33301e2882ca65cfe1ba7f8c422cc65e3336044f63d461d5766ff6ee470605e83a016","first_seen":"2025-09-12T00:12:40.161531Z","last_seen":"2026-07-27T17:31:42.777395Z","times_seen":23056,"resource_available":false,"data":"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"}},"time_used":122,"timings":{"blocked":53,"dns":0,"connect":0,"send":0,"wait":35,"receive":34,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/code.jquery.com/jquery-3.6.4.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.157Z","timestamp":1785128399157,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /code.jquery.com/jquery-3.6.4.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: text/html\r\ncontent-length: 1626\r\nlast-modified: Tue, 22 Apr 2025 07:41:12 GMT\r\netag: \"119f-68074818-ac81b894658a37a5;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\nage: 1\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 2d7e61a6affa8d145bfaa932a9dad95c-srv-edge3\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Bootstrap:3.3.7","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]}],"data":{"size":4511,"size_decoded":1987,"mime_type":"text/html","magic":"HTML document, ASCII text, with very long lines (371)","md5":"b16e9097fc7d3af8ebfcfce7aba0a42d","sha1":"2af3c8408b8445fe81d9a7c8d7cc8e8a05bf80f5","sha256":"e7db95c97a5d45787cc3e40cbcb93b748fefc65bc14e162c746e37f979861729","sha512":"53a7a2c276fbc5159231c162eb863504448515f1a078832b81f1bffeedb1c82932810b66748fd4111d1b8fb866622a5cc63e79e497227b611c90886ba45d3f3b","ssdeep":"96:tr+ulojsBwJG8YqVcqHL/GSrrLc1VhrJuzeK:tyoasBwJG8nVjaSeVhrJgeK","tlshash":"0891f88f25f381452603c99037f9b61499554007f685eca8bdee9228cfc4b8a41e3bdc","first_seen":"2025-04-22T08:45:29.599713Z","last_seen":"2026-07-27T17:20:09.20559Z","times_seen":37827,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuLXVzIgogICAgcHJlZml4PSJjb250ZW50OiBodHRwOi8vcHVybC5vcmcvcnNzLzEuMC9tb2R1bGVzL2NvbnRlbnQvIGRjOiBodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIGZvYWY6IGh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvIG9nOiBodHRwOi8vb2dwLm1lL25zIyByZGZzOiBodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1zY2hlbWEjIHNpb2M6IGh0dHA6Ly9yZGZzLm9yZy9zaW9jL25zIyBzaW9jdDogaHR0cDovL3JkZnMub3JnL3Npb2MvdHlwZXMjIHNrb3M6IGh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDIvc2tvcy9jb3JlIyB4c2Q6IGh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIyI+Cgo8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgQGNoYXJzZXQgIlVURi04IjsKCiAgICAgICAgW25nXDpjbG9ha10sCiAgICAgICAgW25nLWNsb2FrXSwKICAgICAgICBbZGF0YS1uZy1jbG9ha10sCiAgICAgICAgW3gtbmctY2xvYWtdLAogICAgICAgIC5uZy1jbG9haywKICAgICAgICAueC1uZy1jbG9haywKICAgICAgICAubmctaGlkZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSkgewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBuZ1w6Zm9ybSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLm5nLWFuaW1hdGUtc2hpbSB7CiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5uZy1hbmNob3IgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPHRpdGxlPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iT29wcywgbG9va3MgbGlrZSB0aGUgcGFnZSBpcyBsb3N0LiI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMy43L2Nzcy9ib290c3RyYXAubWluLmNzcyI+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9RE0rU2FuczozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0iIgogICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLTlRNkgwUUVUUkYmYW1wO2N4PWMmYW1wO19zbGM9MSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGFzeW5jPSIiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICAgICAgKGZ1bmN0aW9uIChpLCBzLCBvLCBnLCByLCBhLCBtKSB7CiAgICAgICAgICAgIGlbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddID0gcjsgaVtyXSA9IGlbcl0gfHwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgKGlbcl0ucSA9IGlbcl0ucSB8fCBbXSkucHVzaChhcmd1bWVudHMpCiAgICAgICAgICAgIH0sIGlbcl0ubCA9IDEgKiBuZXcgRGF0ZSgpOyBhID0gcy5jcmVhdGVFbGVtZW50KG8pLAogICAgICAgICAgICAgICAgbSA9IHMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07IGEuYXN5bmMgPSAxOyBhLnNyYyA9IGc7IG0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgbSkKICAgICAgICB9KSh3aW5kb3csIGRvY3VtZW50LCAnc2NyaXB0JywgJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsICdnYScpOwoKICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTI2NTc1OTg5LTQ2JywgJ2F1dG8nKTsKICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOwoKICAgIDwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxpZnJhbWUgYWxsb3c9ImpvaW4tYWQtaW50ZXJlc3QtZ3JvdXAiIGRhdGEtdGFnZ2luZy1pZD0iRy05UTZIMFFFVFJGIiBkYXRhLWxvYWQtdGltZT0iMTc0NDcwOTQ2NDA5MyIgaGVpZ2h0PSIwIgogICAgICAgIHdpZHRoPSIwIgogICAgICAgIHNyYz0iaHR0cHM6Ly90ZC5kb3VibGVjbGljay5uZXQvdGQvZ2EvcnVsP3RpZD1HLTlRNkgwUUVUUkYmYW1wO2dhY2lkPTE2Njk1ODM0ODYuMTc0NDcwOTQ2MyZhbXA7Z3RtPTQ1amU1NGIwdjkxMjU5NTkxMTJ6YTIwMCZhbXA7ZG1hPTEmYW1wO2RtYV9jcHM9c3lwaGFtbyZhbXA7Z2NkPTEzbDNsUGwybDJsMSZhbXA7bnBhPTAmYW1wO3BzY2RsPW5vYXBpJmFtcDthaXA9MSZhbXA7ZmxlZGdlPTEmYW1wO2ZybT0wJmFtcDt0YWdfZXhwPTEwMjUwOTY4M34xMDI4MDMyNzl+MTAyODEzMTA5fjEwMjg4NzgwMH4xMDI5MjYwNjJ+MTAzMDIxODMwfjEwMzAyNzAxNn4xMDMwNTE5NTN+MTAzMDU1NDY1fjEwMzA3Nzk1MCZhbXA7ej0yMTA4NTA0Mzg5IgogICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lOyB2aXNpYmlsaXR5OiBoaWRkZW47Ij4KICAgIDwvaWZyYW1lPgogICAgPGRpdiBjbGFzcz0icGFnZS1ub3QtZm91bmQiPgogICAgICAgIDxpbWcgY2xhc3M9ImltYWdlIiBhbHQ9IlBhZ2UgTm90IEZvdW5kIiBzcmM9Ii9odGRvY3NfZXJyb3IvcGFnZV9ub3RfZm91bmQuc3ZnIiAvPgogICAgICAgIDxoMSBjbGFzcz0idGl0bGUiPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvaDE+CiAgICAgICAgPHAgY2xhc3M9InRleHQiPgogICAgICAgICAgICBTb3JyeSwgdGhlIHBhZ2UgeW91IGFyZSBsb29raW5nIGZvciBjb3VsZCBub3QgYmUgZm91bmQuIEl0J3MganVzdCBhbgogICAgICAgICAgICBhY2NpZGVudCB0aGF0IHdhcyBub3QgaW50ZW50aW9uYWwuCiAgICAgICAgPC9wPgogICAgPC9kaXY+Cgo8L2JvZHk+CjxzdHlsZT4KICAgIGJvZHkgewogICAgICAgIGNvbG9yOiAjMWQxZTIwOwogICAgICAgIGJhY2tncm91bmQ6ICNmNGY1ZmY7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LWZhbWlseTogIkRNIFNhbnMiLCAiUm9ib3RvIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICAgIH0KCiAgICAucGFnZS1ub3QtZm91bmQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwoKICAgICAgICBpbWcgewogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2UgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7CiAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICB9CgogICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIH0KCiAgICAgICAgLnRleHQgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1heC13aWR0aDogNjUwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgICAgIGNvbG9yOiAjNkQ3MDgxOwogICAgICAgIH0KCgogICAgfQo8L3N0eWxlPgoKPC9odG1sPgo="}},"time_used":30,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":30,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"static.getbutton.io/widget-send-button/js/init.js","fqdn":"static.getbutton.io","domain":"getbutton.io","tld":"io"},"ip":{"addr":"104.26.14.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.303Z","timestamp":1785128399303,"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":"getbutton.io","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Tue, 16 Jun 2026 00:45:37 GMT","end":"Mon, 14 Sep 2026 01:45:33 GMT"},"fingerprint":{"sha1":"DC:2F:40:2C:2E:8F:A1:FE:B6:A3:D2:1B:01:7E:28:02:66:38:0E:86","sha256":"E1:C6:2E:FD:25:F8:44:CA:B3:2C:26:9B:A5:CB:26:9B:6D:77:7B:CF:2A:52:29:CD:23:39:99:E7:89:F4:41:57"}}},"request":{"raw":"GET /widget-send-button/js/init.js HTTP/1.1\r\nHost: static.getbutton.io\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://circuittradetech.com/\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 302 \r\ndate: Mon, 27 Jul 2026 05:00:02 GMT\r\ncontent-type: text/html\r\nlocation: https://static.getbutton.io/widget/bundle.js\r\nserver: cloudflare\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-cache-status: BYPASS\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=xEb8YSrYyIFi4GCXe6wEOVd2d8AK%2BrEPOeXkPHfdygt73KOhIIu8FWoM52P7GXdrJJzw99nN7FOQ6Gzae3xENExSZzy7ZnWgjhCiqjp%2F9ydiXh2TV5kFlPc2yo2fR0AxlNb7RfE%3D\"}]}\r\ncf-ray: a2191403884a56ab-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"302","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":0,"size_decoded":0,"mime_type":"application/javascript; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T18:39:14.176312Z","times_seen":17567823,"resource_available":true,"data":null}},"time_used":3409,"timings":{"blocked":0,"dns":39,"connect":1,"send":0,"wait":235,"receive":0,"ssl":3134},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_68x28dp.png","fqdn":"www.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":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.876Z","timestamp":1785128399876,"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 /images/branding/googlelogo/1x/googlelogo_color_68x28dp.png HTTP/1.1\r\nHost: www.gstatic.com\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, i\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\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 1597\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:18 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:18 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Fri, 30 Jun 2023 18:58:00 GMT\r\ncontent-type: image/png\r\nvary: Origin\r\nage: 402581\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":1597,"size_decoded":2271,"mime_type":"image/png","magic":"PNG image data, 68 x 28, 8-bit/color RGBA, non-interlaced","md5":"c4a931d597decd2553aac6634b766cf2","sha1":"6ec84fb4a2745b4b71520241be77db1fd1013830","sha256":"f56402b127698db4b4dc611a97a6f081d04c4691c60522c5912d189e37c94a9e","sha512":"4932e0f7f38085a7c52539bdd5c7f470740e560a4471bea30d12ef9e3efe77f6bbfac28d26c62a245c43d98ebf74c824b2b414843080a27edf1563a5f874ac84","ssdeep":"","tlshash":"7c310afff39e8cec419e764069ba5965a362cd68233e928f14499592e4d007710f5f41","first_seen":"2023-04-05T08:27:37Z","last_seen":"2026-07-27T17:47:56.568825Z","times_seen":18171,"resource_available":false,"data":"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"}},"time_used":15,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":15,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.google.com/translate_a/element.js?cb=googleTranslateElementInit","fqdn":"translate.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.178.78","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.757Z","timestamp":1785128398757,"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":"*.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:35 GMT","end":"Mon, 21 Sep 2026 08:37:34 GMT"},"fingerprint":{"sha1":"2F:20:3B:91:88:65:20:CD:06:9D:0C:58:4D:17:6F:FC:9D:EC:41:83","sha256":"0C:7B:D3:23:E9:5B:D6:6B:F2:5C:71:91:4D:41:CE:E6:D7:1F:A2:F2:63:BA:25:70:1D:00:F3:C0:72:21:51:6D"}}},"request":{"raw":"GET /translate_a/element.js?cb=googleTranslateElementInit HTTP/1.1\r\nHost: translate.google.com\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://circuittradetech.com/\r\nSec-Fetch-Dest: script\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/javascript; charset=utf-8\r\nvary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site\r\ncache-control: no-cache, no-store, max-age=0, must-revalidate\r\npragma: no-cache\r\nexpires: Mon, 01 Jan 1990 00:00:00 GMT\r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\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":null,"data":{"size":2820,"size_decoded":1539,"mime_type":"text/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (1655)","md5":"e9082be6171df6b447c3269f371005e9","sha1":"15544af6a3e50b8881f0ff3fd6b56800f72fa577","sha256":"2bd2af083a8d177bdf904e5a6c6d77ba70bdcddac525a8d972a6652da3f0d01b","sha512":"2ba063672912ca0c438dcbe54845b9bdd195a10364be838f6821781576362cb30dab791b2a50bfacae899694c1609957ea01b7cb1a223d2af2859430b1795f56","ssdeep":"","tlshash":"795112965872e0dac8436c29cfef913961444037ac15ece5be9cd903ffb060ea64d9d8","first_seen":"2026-07-27T04:05:06.206505Z","last_seen":"2026-07-27T05:00:36.651493Z","times_seen":18,"resource_available":true,"data":"CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgIGlmKCF3aW5kb3dbJ19EdW1wRXhjZXB0aW9uJ10pIHsKICAgICAgICBjb25zdCBfRHVtcEV4Y2VwdGlvbiA9IHdpbmRvd1snX0R1bXBFeGNlcHRpb24nXSB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICB0aHJvdyBlOwogICAgICAgIH07CiAgICAgICAgd2luZG93WydfRHVtcEV4Y2VwdGlvbiddID0gX0R1bXBFeGNlcHRpb247CiAgICAgIH0KCiAgICAgIHZhciBfZ2V0Q2FsbGJhY2tGdW5jdGlvbiA9IGZ1bmN0aW9uKG5hbWUpIHsKICAgICAgICB2YXIgc2VnbWVudHMgPSBuYW1lLnNwbGl0KCcuJyk7CiAgICAgICAgdmFyIHcgPSB3aW5kb3c7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgaWYgKCEodyA9IHdbc2VnbWVudHNbaV1dKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHc7CiAgICAgIH07CgogICAgICB2YXIgX2xvYWRDc3MgPSBmdW5jdGlvbih1cmwpIHsKICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsKICAgICAgICBsaW5rLnR5cGUgPSAndGV4dC9jc3MnOwogICAgICAgIGxpbmsucmVsID0gJ3N0eWxlc2hlZXQnOwogICAgICAgIGxpbmsuY2hhcnNldCA9ICdVVEYtOCc7CiAgICAgICAgbGluay5ocmVmID0gdXJsOwogICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7CiAgICAgIH07CgogICAgICB2YXIgX2xvYWRKcyA9IGZ1bmN0aW9uKHVybCkgewogICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogICAgICAgIHNjcmlwdC5jaGFyc2V0ID0gJ1VURi04JzsKICAgICAgICBzY3JpcHQuc3JjID0gdXJsOwogICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAgICAgfTsKCiAgICAgIC8vIENyZWF0ZSBhIGZ1bmN0aW9uIHNvIHZhcmlhYmxlcyBkbyBub3QgbGVhayBpbnRvIHRoZSBnbG9iYWwgc2NvcGUKICAgICAgdmFyIGluaXRQcm90b0Zsb3cgPSBmdW5jdGlvbigpIHsKICB2YXIgY29uZmlnUHJvdG8gPSBKU09OLnBhcnNlKCdceDViXHgyMm5vXHgyMixceDIyZ29vZ2xlVHJhbnNsYXRlRWxlbWVudEluaXRceDIyLFx4NWIwLDEsMCxceDViXHgyMmVzX2VuXHgyMixceDIyZW5femhceDIyLFx4MjJlbl9kZVx4MjIsXHgyMmVuX2phXHgyMixceDIyZW5fZXNceDIyLFx4MjJkZV9lblx4MjJceDVkLG51bGwsXHg1YjAsMywxMDAsXHg1Ylx4MjJlbl9oaVx4MjIsXHgyMmhpX2VuXHgyMixceDIyZW5fZXNceDIyLFx4MjJlc19lblx4MjIsXHgyMmVuX2RlXHgyMixceDIyZGVfZW5ceDIyLFx4MjJlbl96aFx4MjIsXHgyMmVuX2phXHgyMixceDIyZW5fYXJceDIyLFx4MjJlbl9pZFx4MjJceDVkXHg1ZCwwLDEsMFx4NWQsXHgyMlx4MjIsXHgyMlx4MjIsXHgyMnByb2RceDIyLFx4MjJJTkZPXHgyMixudWxsLFx4MjI0OTU4NjguMzU5Nzk2OTk1MFx4MjIsXHgyMnRyYW5zbGF0ZS5nb29nbGVhcGlzLmNvbVx4MjIsXHgyMnRyYW5zbGF0ZS1wYS5nb29nbGVhcGlzLmNvbVx4MjIsbnVsbCxceDIydHJhbnNsYXRlLmdvb2dsZWFwaXMuY29tXHgyMixceDIyaHR0cHM6XC9cL3d3dy5nc3RhdGljLmNvbVwvX1wvdHJhbnNsYXRlX2h0dHBcL19cL3NzXC9rXFx1MDAzZHRyYW5zbGF0ZV9odHRwLnRyLkI3RGloOUp5am53LkwuRjQuT1wvYW1cXHUwMDNkQklBQUJ3XC9kXFx1MDAzZDBcL3JzXFx1MDAzZEFOOFNQZnBDMDR2cnJ6UVhnc19UQ001RXRydXdmUHpOdFFcL21cXHUwMDNkZWxfbWFpbl9jc3NceDIyLFx4MjJ0cmFuc2xhdGUtcGEuZ29vZ2xlYXBpcy5jb21cL3YxXC9zdXBwb3J0ZWRMYW5ndWFnZXNceDIyLFx4MjJ0cmFuc2xhdGUuZ29vZ2xlLmNvbVx4MjIsMCxudWxsLG51bGwsbnVsbCxceDIyaHR0cHM6XC9cL3RyYW5zbGF0ZS5nb29nbGVhcGlzLmNvbVwvX1wvdHJhbnNsYXRlX2h0dHBcL19cL2pzXC9rXFx1MDAzZHRyYW5zbGF0ZV9odHRwLnRyLm5vLnNjcm5ZNlEyX3l3Lk9cL2FtXFx1MDAzZEJJQUFCd1wvZFxcdTAwM2QxXC9lZFxcdTAwM2QxXC9yc1xcdTAwM2RBTjhTUGZxMUtsVUZxZWlGdkJNdWRkdXpHdGIzOVFXWHV3XC9tXFx1MDAzZGVsX21haW5ceDIyLFx4MjJURV8yMDI2MDcyMlx4MjJceDVkJyk7IHdpbmRvd1snZ29vZ2xlJ10gPSB3aW5kb3dbJ2dvb2dsZSddIHx8IHt9OyB3aW5kb3dbJ2dvb2dsZSddWyd0cmFuc2xhdGUnXSA9IHdpbmRvd1snZ29vZ2xlJ11bJ3RyYW5zbGF0ZSddIHx8IHt9OyB3aW5kb3dbJ2dvb2dsZSddWyd0cmFuc2xhdGUnXVsnX3Byb3RvQ29uZmlnJ10gPSBjb25maWdQcm90bztfbG9hZENzcygnaHR0cHM6XC9cL3d3dy5nc3RhdGljLmNvbVwvX1wvdHJhbnNsYXRlX2h0dHBcL19cL3NzXC9rXHgzZHRyYW5zbGF0ZV9odHRwLnRyLkI3RGloOUp5am53LkwuRjQuT1wvYW1ceDNkQklBQUJ3XC9kXHgzZDBcL3JzXHgzZEFOOFNQZnBDMDR2cnJ6UVhnc19UQ001RXRydXdmUHpOdFFcL21ceDNkZWxfbWFpbl9jc3MnKTsgX2xvYWRKcygnaHR0cHM6XC9cL3RyYW5zbGF0ZS5nb29nbGVhcGlzLmNvbVwvX1wvdHJhbnNsYXRlX2h0dHBcL19cL2pzXC9rXHgzZHRyYW5zbGF0ZV9odHRwLnRyLm5vLnNjcm5ZNlEyX3l3Lk9cL2FtXHgzZEJJQUFCd1wvZFx4M2QxXC9lZFx4M2QxXC9yc1x4M2RBTjhTUGZxMUtsVUZxZWlGdkJNdWRkdXpHdGIzOVFXWHV3XC9tXHgzZGVsX21haW4nKTsKICAgICAgfTsKCiAgICAgIGluaXRQcm90b0Zsb3coKTsKICAgIH0pKCk7CiAg"}},"time_used":88,"timings":{"blocked":-1,"dns":2,"connect":15,"send":0,"wait":37,"receive":0,"ssl":34},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.143Z","timestamp":1785128399143,"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/worksans/v24/QGYsz_wNahGAdqQ43Rh_fKDp.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://circuittradetech.com\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: 50316\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 04:26:34 GMT\r\nexpires: Fri, 23 Jul 2027 04:26:34 GMT\r\ncache-control: public, max-age=31536000\r\nage: 347605\r\nlast-modified: Wed, 10 Sep 2025 16:23:20 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":50316,"size_decoded":51129,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 50316, version 1.0","md5":"97b33529e13b04b2205144e28a17a1d6","sha1":"9eaf3fe571af16f72a84dbadc1fce0128dff4486","sha256":"1dd49afc07fb2231b2ff686cbf007725fb2742271bb1f28ebd98f22a0d817343","sha512":"ce731a26fac8fd5583137450138d71fc36a9a0c4b79257a5af74be21cc2773b6e3a1ead61055411ec1c2cc857b8b0e6cbc94971f5f0b51820b458d9146af89bf","ssdeep":"768:etWz8e4bJ7xYqUBOYPc1NmWL7TDGrAZrIzcbWomWEjoyW6Md/AE1wBje34U:eZdhUQN5ToAZrIz7uEjR7udw5e34U","tlshash":"a33301e2882ca65cfe1ba7f8c422cc65e3336044f63d461d5766ff6ee470605e83a016","first_seen":"2025-09-12T00:12:40.161531Z","last_seen":"2026-07-27T17:31:42.777395Z","times_seen":23056,"resource_available":false,"data":"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"}},"time_used":119,"timings":{"blocked":53,"dns":0,"connect":0,"send":0,"wait":28,"receive":38,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/2023/12/bg-create-your-proton-wallet.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.164Z","timestamp":1785128399164,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/2023/12/bg-create-your-proton-wallet.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/post-95fea.css?ver=1706574923\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\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\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: image/webp\r\ncontent-length: 2886\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 3f371ef80538bd2c61b98656c8510bf1-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":2886,"size_decoded":3208,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"14342a1b9b46164c87c86fa782655ded","sha1":"5df7e74b26b070a840ae5a2fd839641f86d703f8","sha256":"5bd5790a8439ae7b9052c654ca6c4389e768ca3d92de4feea2849520e6aef19c","sha512":"97717fc197a8c7c996edec68e9e58fdb9dd4d08de062b256d3cf62dbeb0557799d9dd134eea59be102ca7a993e2b0e5ac6213faf6f73d672d0f4a436fdf8f44f","ssdeep":"","tlshash":"e251f948827345fdc270293c64e62b9df9e538c56e68806d23e982be5bc33239539cf0","first_seen":"2026-07-27T03:56:42.606698Z","last_seen":"2026-07-27T05:01:06.126938Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":47,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":47,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/vendor/react.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.826Z","timestamp":1785128398826,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-includes/js/dist/vendor/react.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 4735\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:46 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"5118-67c3620e-d6d7f517191ac3e7;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457452\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: faadf14be1d7af4a09c0ec4f2cfb8b5c-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":20760,"size_decoded":5323,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text","md5":"d1ac981b533da21d8dd0bbddab4c4ea6","sha1":"1b22173e0a2e7dc804ea65197c96a478efe1191c","sha256":"de89a10d5366dbb89e64dfc3a578f3510faf14225adc0a91e68dd1e7d23a2c84","sha512":"af4b8d6ca81fe48b6f1229c0759d10bab30b6b2afdf11e7a5f9031e4cd09c15659a98c4004a9f11a2e0af18e24c5f00eec9f386ce2049bd6d073ad8ec9ce225c","ssdeep":"192:nqK9+9ZeDrG9COQlleS6eYgy+ISCgAvqvs0kCU4Cv3ty4KrYOM6Qoyi0Mb+RDI6K:nqK9qYEQ7ShaM6mHQSYTxzP","tlshash":"09922e58b9f230309613f03a8a5fe8587236a54f1a4ced10390c96a16f5a57cd3bafdd","first_seen":"2026-07-27T03:56:42.494648Z","last_seen":"2026-07-27T05:30:59.816064Z","times_seen":6,"resource_available":true,"data":"LyoqCiAqIEBsaWNlbnNlIFJlYWN0CiAqIHJlYWN0LnByb2R1Y3Rpb24ubWluLmpzCiAqCiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLgogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGUKICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi8KISBmdW5jdGlvbigpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBlLCB0OwogICAgZSA9IHRoaXMsIHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgZnVuY3Rpb24gdChlLCB0LCBuKSB7CiAgICAgICAgICAgIHRoaXMucHJvcHMgPSBlLCB0aGlzLmNvbnRleHQgPSB0LCB0aGlzLnJlZnMgPSBMLCB0aGlzLnVwZGF0ZXIgPSBuIHx8IFQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG4oKSB7fQoKICAgICAgICBmdW5jdGlvbiByKGUsIHQsIG4pIHsKICAgICAgICAgICAgdGhpcy5wcm9wcyA9IGUsIHRoaXMuY29udGV4dCA9IHQsIHRoaXMucmVmcyA9IEwsIHRoaXMudXBkYXRlciA9IG4gfHwgVAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbyhlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBvID0ge30sCiAgICAgICAgICAgICAgICB1ID0gbnVsbCwKICAgICAgICAgICAgICAgIGEgPSBudWxsOwogICAgICAgICAgICBpZiAobnVsbCAhPSB0KQogICAgICAgICAgICAgICAgZm9yIChyIGluIHZvaWQgMCAhPT0gdC5yZWYgJiYgKGEgPSB0LnJlZiksIHZvaWQgMCAhPT0gdC5rZXkgJiYgKHUgPSAiIiArIHQua2V5KSwgdCkgRC5jYWxsKHQsIHIpICYmICFWLmhhc093blByb3BlcnR5KHIpICYmIChvW3JdID0gdFtyXSk7CiAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7CiAgICAgICAgICAgIGlmICgxID09PSBpKSBvLmNoaWxkcmVuID0gbjsKICAgICAgICAgICAgZWxzZSBpZiAoMSA8IGkpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSBBcnJheShpKSwgYyA9IDA7IGMgPCBpOyBjKyspIGxbY10gPSBhcmd1bWVudHNbYyArIDJdOwogICAgICAgICAgICAgICAgby5jaGlsZHJlbiA9IGwKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZSAmJiBlLmRlZmF1bHRQcm9wcykKICAgICAgICAgICAgICAgIGZvciAociBpbiBpID0gZS5kZWZhdWx0UHJvcHMpIHZvaWQgMCA9PT0gb1tyXSAmJiAob1tyXSA9IGlbcl0pOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgJCR0eXBlb2Y6IGcsCiAgICAgICAgICAgICAgICB0eXBlOiBlLAogICAgICAgICAgICAgICAga2V5OiB1LAogICAgICAgICAgICAgICAgcmVmOiBhLAogICAgICAgICAgICAgICAgcHJvcHM6IG8sCiAgICAgICAgICAgICAgICBfb3duZXI6IFUuY3VycmVudAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiBlICYmIG51bGwgIT09IGUgJiYgZS4kJHR5cGVvZiA9PT0gZwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYShlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBudWxsICE9PSBlICYmIG51bGwgIT0gZS5rZXkgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHsKICAgICAgICAgICAgICAgICAgICAiPSI6ICI9MCIsCiAgICAgICAgICAgICAgICAgICAgIjoiOiAiPTIiCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuICIkIiArIGUucmVwbGFjZSgvWz06XS9nLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0W2VdCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSgiIiArIGUua2V5KSA6IHQudG9TdHJpbmcoMzYpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBpKGUsIHQsIG4sIHIsIG8pIHsKICAgICAgICAgICAgdmFyIGwgPSB0eXBlb2YgZTsKICAgICAgICAgICAgInVuZGVmaW5lZCIgIT09IGwgJiYgImJvb2xlYW4iICE9PSBsIHx8IChlID0gbnVsbCk7CiAgICAgICAgICAgIHZhciBjID0gITE7CiAgICAgICAgICAgIGlmIChudWxsID09PSBlKSBjID0gITA7CiAgICAgICAgICAgIGVsc2Ugc3dpdGNoIChsKSB7CiAgICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICAgICAgICBjID0gITA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS4kJHR5cGVvZikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGc6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgazoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAhMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYykgcmV0dXJuIG8gPSBvKGMgPSBlKSwgZSA9ICIiID09PSByID8gIi4iICsgYShjLCAwKSA6IHIsIE0obykgPyAobiA9ICIiLCBudWxsICE9IGUgJiYgKG4gPSBlLnJlcGxhY2UocSwgIiQmLyIpICsgIi8iKSwgaShvLCB0LCBuLCAiIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0pKSkgOiBudWxsICE9IG8gJiYgKHUobykgJiYgKG8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICQkdHlwZW9mOiBnLAogICAgICAgICAgICAgICAgICAgIHR5cGU6IGUudHlwZSwKICAgICAgICAgICAgICAgICAgICBrZXk6IHQsCiAgICAgICAgICAgICAgICAgICAgcmVmOiBlLnJlZiwKICAgICAgICAgICAgICAgICAgICBwcm9wczogZS5wcm9wcywKICAgICAgICAgICAgICAgICAgICBfb3duZXI6IGUuX293bmVyCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0obywgbiArICghby5rZXkgfHwgYyAmJiBjLmtleSA9PT0gby5rZXkgPyAiIiA6ICgiIiArIG8ua2V5KS5yZXBsYWNlKHEsICIkJi8iKSArICIvIikgKyBlKSksIHQucHVzaChvKSksIDE7CiAgICAgICAgICAgIGlmIChjID0gMCwgciA9ICIiID09PSByID8gIi4iIDogciArICI6IiwgTShlKSkKICAgICAgICAgICAgICAgIGZvciAodmFyIGYgPSAwOyBmIDwgZS5sZW5ndGg7IGYrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gciArIGEobCA9IGVbZl0sIGYpOwogICAgICAgICAgICAgICAgICAgIGMgKz0gaShsLCB0LCBuLCBzLCBvKQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gZSB8fCAib2JqZWN0IiAhPSB0eXBlb2YgZSA/IG51bGwgOiAiZnVuY3Rpb24iID09IHR5cGVvZihlID0gaiAmJiBlW2pdIHx8IGVbIkBAaXRlcmF0b3IiXSkgPyBlIDogbnVsbAogICAgICAgICAgICAgICAgICAgIH0oZSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIHMpCiAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gcy5jYWxsKGUpLCBmID0gMDsgIShsID0gZS5uZXh0KCkpLmRvbmU7KSBjICs9IGkobCA9IGwudmFsdWUsIHQsIG4sIHMgPSByICsgYShsLCBmKyspLCBvKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJvYmplY3QiID09PSBsKSB0aHJvdyB0ID0gU3RyaW5nKGUpLCBFcnJvcigiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAiICsgKCJbb2JqZWN0IE9iamVjdF0iID09PSB0ID8gIm9iamVjdCB3aXRoIGtleXMgeyIgKyBPYmplY3Qua2V5cyhlKS5qb2luKCIsICIpICsgIn0iIDogdCkgKyAiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLiIpOwogICAgICAgICAgICByZXR1cm4gYwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbChlLCB0LCBuKSB7CiAgICAgICAgICAgIGlmIChudWxsID09IGUpIHJldHVybiBlOwogICAgICAgICAgICB2YXIgciA9IFtdLAogICAgICAgICAgICAgICAgbyA9IDA7CiAgICAgICAgICAgIHJldHVybiBpKGUsIHIsICIiLCAiIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0LmNhbGwobiwgZSwgbysrKQogICAgICAgICAgICB9KSksIHIKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgICAgICBpZiAoLTEgPT09IGUuX3N0YXR1cykgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLl9yZXN1bHQ7CiAgICAgICAgICAgICAgICAodCA9IHQoKSkudGhlbigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIDAgIT09IGUuX3N0YXR1cyAmJiAtMSAhPT0gZS5fc3RhdHVzIHx8IChlLl9zdGF0dXMgPSAxLCBlLl9yZXN1bHQgPSB0KQogICAgICAgICAgICAgICAgfSksIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgMCAhPT0gZS5fc3RhdHVzICYmIC0xICE9PSBlLl9zdGF0dXMgfHwgKGUuX3N0YXR1cyA9IDIsIGUuX3Jlc3VsdCA9IHQpCiAgICAgICAgICAgICAgICB9KSksIC0xID09PSBlLl9zdGF0dXMgJiYgKGUuX3N0YXR1cyA9IDAsIGUuX3Jlc3VsdCA9IHQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKDEgPT09IGUuX3N0YXR1cykgcmV0dXJuIGUuX3Jlc3VsdC5kZWZhdWx0OwogICAgICAgICAgICB0aHJvdyBlLl9yZXN1bHQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGYoZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IGUubGVuZ3RoOwogICAgICAgICAgICBlLnB1c2godCk7CiAgICAgICAgICAgIGU6IGZvciAoOyAwIDwgbjspIHsKICAgICAgICAgICAgICAgIHZhciByID0gbiAtIDEgPj4+IDEsCiAgICAgICAgICAgICAgICAgICAgbyA9IGVbcl07CiAgICAgICAgICAgICAgICBpZiAoISgwIDwgeShvLCB0KSkpIGJyZWFrIGU7CiAgICAgICAgICAgICAgICBlW3JdID0gdCwgZVtuXSA9IG8sIG4gPSByCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHMoZSkgewogICAgICAgICAgICByZXR1cm4gMCA9PT0gZS5sZW5ndGggPyBudWxsIDogZVswXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcChlKSB7CiAgICAgICAgICAgIGlmICgwID09PSBlLmxlbmd0aCkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIHZhciB0ID0gZVswXSwKICAgICAgICAgICAgICAgIG4gPSBlLnBvcCgpOwogICAgICAgICAgICBpZiAobiAhPT0gdCkgewogICAgICAgICAgICAgICAgZVswXSA9IG47CiAgICAgICAgICAgICAgICBlOiBmb3IgKHZhciByID0gMCwgbyA9IGUubGVuZ3RoLCB1ID0gbyA+Pj4gMTsgciA8IHU7KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAyICogKHIgKyAxKSAtIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlW2FdLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gYSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlW2xdOwogICAgICAgICAgICAgICAgICAgIGlmICgwID4geShpLCBuKSkgbCA8IG8gJiYgMCA+IHkoYywgaSkgPyAoZVtyXSA9IGMsIGVbbF0gPSBuLCByID0gbCkgOiAoZVtyXSA9IGksIGVbYV0gPSBuLCByID0gYSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGwgPCBvICYmIDAgPiB5KGMsIG4pKSkgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgZVtyXSA9IGMsIGVbbF0gPSBuLCByID0gbAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geShlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gZS5zb3J0SW5kZXggLSB0LnNvcnRJbmRleDsKICAgICAgICAgICAgcmV0dXJuIDAgIT09IG4gPyBuIDogZS5pZCAtIHQuaWQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGQoZSkgewogICAgICAgICAgICBmb3IgKHZhciB0ID0gcyhHKTsgbnVsbCAhPT0gdDspIHsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB0LmNhbGxiYWNrKSBwKEcpOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEodC5zdGFydFRpbWUgPD0gZSkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIHAoRyksIHQuc29ydEluZGV4ID0gdC5leHBpcmF0aW9uVGltZSwgZihZLCB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdCA9IHMoRykKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYihlKSB7CiAgICAgICAgICAgIGlmIChlZSA9ICExLCBkKGUpLCAhWikKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBzKFkpKSBaID0gITAsIF8odik7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHMoRyk7CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gdCAmJiBoKGIsIHQuc3RhcnRUaW1lIC0gZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHYoZSwgdCkgewogICAgICAgICAgICBaID0gITEsIGVlICYmIChlZSA9ICExLCBuZShhZSksIGFlID0gLTEpLCBYID0gITA7CiAgICAgICAgICAgIHZhciBuID0gUTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGZvciAoZCh0KSwgSyA9IHMoWSk7IG51bGwgIT09IEsgJiYgKCEoSy5leHBpcmF0aW9uVGltZSA+IHQpIHx8IGUgJiYgIW0oKSk7KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBLLmNhbGxiYWNrOwogICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEsuY2FsbGJhY2sgPSBudWxsLCBRID0gSy5wcmlvcml0eUxldmVsOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIoSy5leHBpcmF0aW9uVGltZSA8PSB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHooKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbyA/IEsuY2FsbGJhY2sgPSBvIDogSyA9PT0gcyhZKSAmJiBwKFkpLCBkKHQpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHAoWSk7CiAgICAgICAgICAgICAgICAgICAgSyA9IHMoWSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBLKSB2YXIgdSA9ICEwOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBzKEcpOwogICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGEgJiYgaChiLCBhLnN0YXJ0VGltZSAtIHQpLCB1ID0gITEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB1CiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICBLID0gbnVsbCwgUSA9IG4sIFggPSAhMQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtKCkgewogICAgICAgICAgICByZXR1cm4gISh6KCkgLSBsZSA8IGllKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gXyhlKSB7CiAgICAgICAgICAgIHVlID0gZSwgb2UgfHwgKG9lID0gITAsIGZlKCkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBoKGUsIHQpIHsKICAgICAgICAgICAgYWUgPSB0ZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBlKHooKSkKICAgICAgICAgICAgfSksIHQpCiAgICAgICAgfQogICAgICAgIHZhciBnID0gU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpLAogICAgICAgICAgICBrID0gU3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksCiAgICAgICAgICAgIHcgPSBTeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLAogICAgICAgICAgICBTID0gU3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSwKICAgICAgICAgICAgeCA9IFN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksCiAgICAgICAgICAgIEMgPSBTeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpLAogICAgICAgICAgICBFID0gU3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLAogICAgICAgICAgICBSID0gU3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSwKICAgICAgICAgICAgUCA9IFN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIiksCiAgICAgICAgICAgICQgPSBTeW1ib2wuZm9yKCJyZWFjdC5tZW1vIiksCiAgICAgICAgICAgIEkgPSBTeW1ib2wuZm9yKCJyZWFjdC5sYXp5IiksCiAgICAgICAgICAgIGogPSBTeW1ib2wuaXRlcmF0b3IsCiAgICAgICAgICAgIFQgPSB7CiAgICAgICAgICAgICAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uKGUsIHQsIG4pIHt9LAogICAgICAgICAgICAgICAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24oZSwgdCwgbiwgcikge30sCiAgICAgICAgICAgICAgICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHt9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE8gPSBPYmplY3QuYXNzaWduLAogICAgICAgICAgICBMID0ge307CiAgICAgICAgdC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9LCB0LnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgaWYgKCJvYmplY3QiICE9IHR5cGVvZiBlICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPSBlKSB0aHJvdyBFcnJvcigic2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuIik7CiAgICAgICAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcywgZSwgdCwgInNldFN0YXRlIikKICAgICAgICB9LCB0LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLCBlLCAiZm9yY2VVcGRhdGUiKQogICAgICAgIH0sIG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGU7CiAgICAgICAgdmFyIEYgPSByLnByb3RvdHlwZSA9IG5ldyBuOwogICAgICAgIEYuY29uc3RydWN0b3IgPSByLCBPKEYsIHQucHJvdG90eXBlKSwgRi5pc1B1cmVSZWFjdENvbXBvbmVudCA9ICEwOwogICAgICAgIHZhciBNID0gQXJyYXkuaXNBcnJheSwKICAgICAgICAgICAgRCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksCiAgICAgICAgICAgIFUgPSB7CiAgICAgICAgICAgICAgICBjdXJyZW50OiBudWxsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFYgPSB7CiAgICAgICAgICAgICAgICBrZXk6ICEwLAogICAgICAgICAgICAgICAgcmVmOiAhMCwKICAgICAgICAgICAgICAgIF9fc2VsZjogITAsCiAgICAgICAgICAgICAgICBfX3NvdXJjZTogITAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcSA9IC9cLysvZywKICAgICAgICAgICAgQSA9IHsKICAgICAgICAgICAgICAgIGN1cnJlbnQ6IG51bGwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTiA9IHsKICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IG51bGwKICAgICAgICAgICAgfTsKICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHBlcmZvcm1hbmNlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIHBlcmZvcm1hbmNlLm5vdykgdmFyIEIgPSBwZXJmb3JtYW5jZSwKICAgICAgICAgICAgeiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEIubm93KCkKICAgICAgICAgICAgfTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIEggPSBEYXRlLAogICAgICAgICAgICAgICAgVyA9IEgubm93KCk7CiAgICAgICAgICAgIHogPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBILm5vdygpIC0gVwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBZID0gW10sCiAgICAgICAgICAgIEcgPSBbXSwKICAgICAgICAgICAgSiA9IDEsCiAgICAgICAgICAgIEsgPSBudWxsLAogICAgICAgICAgICBRID0gMywKICAgICAgICAgICAgWCA9ICExLAogICAgICAgICAgICBaID0gITEsCiAgICAgICAgICAgIGVlID0gITEsCiAgICAgICAgICAgIHRlID0gImZ1bmN0aW9uIiA9PSB0eXBlb2Ygc2V0VGltZW91dCA/IHNldFRpbWVvdXQgOiBudWxsLAogICAgICAgICAgICBuZSA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGNsZWFyVGltZW91dCA/IGNsZWFyVGltZW91dCA6IG51bGwsCiAgICAgICAgICAgIHJlID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHNldEltbWVkaWF0ZSA/IHNldEltbWVkaWF0ZSA6IG51bGw7CiAgICAgICAgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG5hdmlnYXRvciAmJiB2b2lkIDAgIT09IG5hdmlnYXRvci5zY2hlZHVsaW5nICYmIHZvaWQgMCAhPT0gbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcgJiYgbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcuYmluZChuYXZpZ2F0b3Iuc2NoZWR1bGluZyk7CiAgICAgICAgdmFyIG9lID0gITEsCiAgICAgICAgICAgIHVlID0gbnVsbCwKICAgICAgICAgICAgYWUgPSAtMSwKICAgICAgICAgICAgaWUgPSA1LAogICAgICAgICAgICBsZSA9IC0xLAogICAgICAgICAgICBjZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHVlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB6KCk7CiAgICAgICAgICAgICAgICAgICAgbGUgPSBlOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gITA7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHVlKCEwLCBlKQogICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPyBmZSgpIDogKG9lID0gITEsIHVlID0gbnVsbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2Ugb2UgPSAhMQogICAgICAgICAgICB9OwogICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiByZSkgdmFyIGZlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJlKGNlKQogICAgICAgIH07CiAgICAgICAgZWxzZSBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIE1lc3NhZ2VDaGFubmVsKSB7CiAgICAgICAgICAgIHZhciBzZSA9IChGID0gbmV3IE1lc3NhZ2VDaGFubmVsKS5wb3J0MjsKICAgICAgICAgICAgRi5wb3J0MS5vbm1lc3NhZ2UgPSBjZSwgZmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHNlLnBvc3RNZXNzYWdlKG51bGwpCiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgZmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGUoY2UsIDApCiAgICAgICAgfTsKICAgICAgICBGID0gewogICAgICAgICAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyOiBBLAogICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lcjogVSwKICAgICAgICAgICAgUmVhY3RDdXJyZW50QmF0Y2hDb25maWc6IE4sCiAgICAgICAgICAgIFNjaGVkdWxlcjogewogICAgICAgICAgICAgICAgX19wcm90b19fOiBudWxsLAogICAgICAgICAgICAgICAgdW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHk6IDEsCiAgICAgICAgICAgICAgICB1bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eTogMiwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX05vcm1hbFByaW9yaXR5OiAzLAogICAgICAgICAgICAgICAgdW5zdGFibGVfSWRsZVByaW9yaXR5OiA1LAogICAgICAgICAgICAgICAgdW5zdGFibGVfTG93UHJpb3JpdHk6IDQsCiAgICAgICAgICAgICAgICB1bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBuID0gUTsKICAgICAgICAgICAgICAgICAgICBRID0gZTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCgpCiAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgUSA9IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfbmV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoUSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gUQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFE7CiAgICAgICAgICAgICAgICAgICAgUSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUoKQogICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFEgPSBuCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHooKTsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG4gPSAib2JqZWN0IiA9PSB0eXBlb2YgbiAmJiBudWxsICE9PSBuICYmICJudW1iZXIiID09IHR5cGVvZihuID0gbi5kZWxheSkgJiYgMCA8IG4gPyByICsgbiA6IHIsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMjUwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAxMDczNzQxODIzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAxZTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSA1ZTMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBKKyssCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eUxldmVsOiBlLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyYXRpb25UaW1lOiBvID0gbiArIG8sCiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRJbmRleDogLTEKICAgICAgICAgICAgICAgICAgICB9LCBuID4gciA/IChlLnNvcnRJbmRleCA9IG4sIGYoRywgZSksIG51bGwgPT09IHMoWSkgJiYgZSA9PT0gcyhHKSAmJiAoZWUgPyAobmUoYWUpLCBhZSA9IC0xKSA6IGVlID0gITAsIGgoYiwgbiAtIHIpKSkgOiAoZS5zb3J0SW5kZXggPSBvLCBmKFksIGUpLCBaIHx8IFggfHwgKFogPSAhMCwgXyh2KSkpLCBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfY2FuY2VsQ2FsbGJhY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLmNhbGxiYWNrID0gbnVsbAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX3dyYXBDYWxsYmFjazogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gUTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gUTsKICAgICAgICAgICAgICAgICAgICAgICAgUSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRID0gbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX3Nob3VsZFlpZWxkOiBtLAogICAgICAgICAgICAgICAgdW5zdGFibGVfcmVxdWVzdFBhaW50OiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfY29udGludWVFeGVjdXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIFogfHwgWCB8fCAoWiA9ICEwLCBfKHYpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzKFkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0IHVuc3RhYmxlX25vdygpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gegogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgMCA+IGUgfHwgMTI1IDwgZSA/IGNvbnNvbGUuZXJyb3IoImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZCIpIDogaWUgPSAwIDwgZSA/IE1hdGguZmxvb3IoMWUzIC8gZSkgOiA1CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5zdGFibGVfUHJvZmlsaW5nOiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICB9LCBlLkNoaWxkcmVuID0gewogICAgICAgICAgICBtYXA6IGwsCiAgICAgICAgICAgIGZvckVhY2g6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGwoZSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHQuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgfSksIG4pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNvdW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gbChlLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdCsrCiAgICAgICAgICAgICAgICB9KSksIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdG9BcnJheTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGwoZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfSkpIHx8IFtdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9ubHk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmICghdShlKSkgdGhyb3cgRXJyb3IoIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfQogICAgICAgIH0sIGUuQ29tcG9uZW50ID0gdCwgZS5GcmFnbWVudCA9IHcsIGUuUHJvZmlsZXIgPSB4LCBlLlB1cmVDb21wb25lbnQgPSByLCBlLlN0cmljdE1vZGUgPSBTLCBlLlN1c3BlbnNlID0gUCwgZS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCA9IEYsIGUuY2xvbmVFbGVtZW50ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICBpZiAobnVsbCA9PSBlKSB0aHJvdyBFcnJvcigiUmVhY3QuY2xvbmVFbGVtZW50KC4uLik6IFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgUmVhY3QgZWxlbWVudCwgYnV0IHlvdSBwYXNzZWQgIiArIGUgKyAiLiIpOwogICAgICAgICAgICB2YXIgciA9IE8oe30sIGUucHJvcHMpLAogICAgICAgICAgICAgICAgbyA9IGUua2V5LAogICAgICAgICAgICAgICAgdSA9IGUucmVmLAogICAgICAgICAgICAgICAgYSA9IGUuX293bmVyOwogICAgICAgICAgICBpZiAobnVsbCAhPSB0KSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSB0LnJlZiAmJiAodSA9IHQucmVmLCBhID0gVS5jdXJyZW50KSwgdm9pZCAwICE9PSB0LmtleSAmJiAobyA9ICIiICsgdC5rZXkpLCBlLnR5cGUgJiYgZS50eXBlLmRlZmF1bHRQcm9wcykgdmFyIGkgPSBlLnR5cGUuZGVmYXVsdFByb3BzOwogICAgICAgICAgICAgICAgZm9yIChsIGluIHQpIEQuY2FsbCh0LCBsKSAmJiAhVi5oYXNPd25Qcm9wZXJ0eShsKSAmJiAocltsXSA9IHZvaWQgMCA9PT0gdFtsXSAmJiB2b2lkIDAgIT09IGkgPyBpW2xdIDogdFtsXSkKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyOwogICAgICAgICAgICBpZiAoMSA9PT0gbCkgci5jaGlsZHJlbiA9IG47CiAgICAgICAgICAgIGVsc2UgaWYgKDEgPCBsKSB7CiAgICAgICAgICAgICAgICBpID0gQXJyYXkobCk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGw7IGMrKykgaVtjXSA9IGFyZ3VtZW50c1tjICsgMl07CiAgICAgICAgICAgICAgICByLmNoaWxkcmVuID0gaQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAkJHR5cGVvZjogZywKICAgICAgICAgICAgICAgIHR5cGU6IGUudHlwZSwKICAgICAgICAgICAgICAgIGtleTogbywKICAgICAgICAgICAgICAgIHJlZjogdSwKICAgICAgICAgICAgICAgIHByb3BzOiByLAogICAgICAgICAgICAgICAgX293bmVyOiBhCiAgICAgICAgICAgIH0KICAgICAgICB9LCBlLmNyZWF0ZUNvbnRleHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAoZSA9IHsKICAgICAgICAgICAgICAgICQkdHlwZW9mOiBFLAogICAgICAgICAgICAgICAgX2N1cnJlbnRWYWx1ZTogZSwKICAgICAgICAgICAgICAgIF9jdXJyZW50VmFsdWUyOiBlLAogICAgICAgICAgICAgICAgX3RocmVhZENvdW50OiAwLAogICAgICAgICAgICAgICAgUHJvdmlkZXI6IG51bGwsCiAgICAgICAgICAgICAgICBDb25zdW1lcjogbnVsbCwKICAgICAgICAgICAgICAgIF9kZWZhdWx0VmFsdWU6IG51bGwsCiAgICAgICAgICAgICAgICBfZ2xvYmFsTmFtZTogbnVsbAogICAgICAgICAgICB9KS5Qcm92aWRlciA9IHsKICAgICAgICAgICAgICAgICQkdHlwZW9mOiBDLAogICAgICAgICAgICAgICAgX2NvbnRleHQ6IGUKICAgICAgICAgICAgfSwgZS5Db25zdW1lciA9IGUKICAgICAgICB9LCBlLmNyZWF0ZUVsZW1lbnQgPSBvLCBlLmNyZWF0ZUZhY3RvcnkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gby5iaW5kKG51bGwsIGUpOwogICAgICAgICAgICByZXR1cm4gdC50eXBlID0gZSwgdAogICAgICAgIH0sIGUuY3JlYXRlUmVmID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBjdXJyZW50OiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICB9LCBlLmZvcndhcmRSZWYgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAkJHR5cGVvZjogUiwKICAgICAgICAgICAgICAgIHJlbmRlcjogZQogICAgICAgICAgICB9CiAgICAgICAgfSwgZS5pc1ZhbGlkRWxlbWVudCA9IHUsIGUubGF6eSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICQkdHlwZW9mOiBJLAogICAgICAgICAgICAgICAgX3BheWxvYWQ6IHsKICAgICAgICAgICAgICAgICAgICBfc3RhdHVzOiAtMSwKICAgICAgICAgICAgICAgICAgICBfcmVzdWx0OiBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX2luaXQ6IGMKICAgICAgICAgICAgfQogICAgICAgIH0sIGUubWVtbyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICQkdHlwZW9mOiAkLAogICAgICAgICAgICAgICAgdHlwZTogZSwKICAgICAgICAgICAgICAgIGNvbXBhcmU6IHZvaWQgMCA9PT0gdCA/IG51bGwgOiB0CiAgICAgICAgICAgIH0KICAgICAgICB9LCBlLnN0YXJ0VHJhbnNpdGlvbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdCA9IE4udHJhbnNpdGlvbiwgTi50cmFuc2l0aW9uID0ge307CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBlKCkKICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgIE4udHJhbnNpdGlvbiA9IHQKICAgICAgICAgICAgfQogICAgICAgIH0sIGUudW5zdGFibGVfYWN0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0aHJvdyBFcnJvcigiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC4iKQogICAgICAgIH0sIGUudXNlQ2FsbGJhY2sgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlQ2FsbGJhY2soZSwgdCkKICAgICAgICB9LCBlLnVzZUNvbnRleHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlQ29udGV4dChlKQogICAgICAgIH0sIGUudXNlRGVidWdWYWx1ZSA9IGZ1bmN0aW9uKGUsIHQpIHt9LCBlLnVzZURlZmVycmVkVmFsdWUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShlKQogICAgICAgIH0sIGUudXNlRWZmZWN0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gQS5jdXJyZW50LnVzZUVmZmVjdChlLCB0KQogICAgICAgIH0sIGUudXNlSWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VJZCgpCiAgICAgICAgfSwgZS51c2VJbXBlcmF0aXZlSGFuZGxlID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gQS5jdXJyZW50LnVzZUltcGVyYXRpdmVIYW5kbGUoZSwgdCwgbikKICAgICAgICB9LCBlLnVzZUluc2VydGlvbkVmZmVjdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VJbnNlcnRpb25FZmZlY3QoZSwgdCkKICAgICAgICB9LCBlLnVzZUxheW91dEVmZmVjdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VMYXlvdXRFZmZlY3QoZSwgdCkKICAgICAgICB9LCBlLnVzZU1lbW8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlTWVtbyhlLCB0KQogICAgICAgIH0sIGUudXNlUmVkdWNlciA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VSZWR1Y2VyKGUsIHQsIG4pCiAgICAgICAgfSwgZS51c2VSZWYgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlUmVmKGUpCiAgICAgICAgfSwgZS51c2VTdGF0ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VTdGF0ZShlKQogICAgICAgIH0sIGUudXNlU3luY0V4dGVybmFsU3RvcmUgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiBBLmN1cnJlbnQudXNlU3luY0V4dGVybmFsU3RvcmUoZSwgdCwgbikKICAgICAgICB9LCBlLnVzZVRyYW5zaXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIEEuY3VycmVudC51c2VUcmFuc2l0aW9uKCkKICAgICAgICB9LCBlLnZlcnNpb24gPSAiMTguMi4wIgogICAgfSwgIm9iamVjdCIgPT0gdHlwZW9mIGV4cG9ydHMgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG1vZHVsZSA/IHQoZXhwb3J0cykgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImV4cG9ydHMiXSwgdCkgOiB0KChlID0gZSB8fCBzZWxmKS5SZWFjdCA9IHt9KQp9KCk7"}},"time_used":104,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":104,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment-usdtbep20.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.874Z","timestamp":1785128398874,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment-usdtbep20.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 2268\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 4b5f2622f6581ea1a2037d83e1533326-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":2268,"size_decoded":2590,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"f3474ffb3c76b8f8c611a8d3d9492656","sha1":"c9301c8c12e1a485c747a08f0427c7a567f8f832","sha256":"5bf8b0c360573668456277f6ff26c21b03628af94e2f8214221ffe6b89cbf079","sha512":"d0d75d2c56ead8cd96f02fb0e2b0280e772a7b27fefc61520c8a27b6aaeb3db8828e0fbeed697f4a875e44cbea4dd4f74dbffe4ef661c9dd3d503abd81e3ed6e","ssdeep":"","tlshash":"c0412b77e9bb6e78c056a13fadf40f706822350046925a66e3c083db151c0e34a588c5","first_seen":"2026-07-27T03:56:42.495587Z","last_seen":"2026-07-27T05:01:06.152213Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":85,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":85,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/theme/proton/assets/images/planimg-bg.html","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.152Z","timestamp":1785128399152,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /theme/proton/assets/images/planimg-bg.html HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/k99/assets/css2/custom.css\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: text/html\r\ncontent-length: 1626\r\nlast-modified: Tue, 22 Apr 2025 07:41:12 GMT\r\netag: \"119f-68074818-ac81b894658a37a5;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: c022744bd2993489a971aa11eea12fa3-srv-edge3\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Bootstrap:3.3.7","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]}],"data":{"size":4511,"size_decoded":1979,"mime_type":"text/html","magic":"HTML document, ASCII text, with very long lines (371)","md5":"b16e9097fc7d3af8ebfcfce7aba0a42d","sha1":"2af3c8408b8445fe81d9a7c8d7cc8e8a05bf80f5","sha256":"e7db95c97a5d45787cc3e40cbcb93b748fefc65bc14e162c746e37f979861729","sha512":"53a7a2c276fbc5159231c162eb863504448515f1a078832b81f1bffeedb1c82932810b66748fd4111d1b8fb866622a5cc63e79e497227b611c90886ba45d3f3b","ssdeep":"96:tr+ulojsBwJG8YqVcqHL/GSrrLc1VhrJuzeK:tyoasBwJG8nVjaSeVhrJgeK","tlshash":"0891f88f25f381452603c99037f9b61499554007f685eca8bdee9228cfc4b8a41e3bdc","first_seen":"2025-04-22T08:45:29.599713Z","last_seen":"2026-07-27T17:20:09.20559Z","times_seen":37827,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuLXVzIgogICAgcHJlZml4PSJjb250ZW50OiBodHRwOi8vcHVybC5vcmcvcnNzLzEuMC9tb2R1bGVzL2NvbnRlbnQvIGRjOiBodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIGZvYWY6IGh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvIG9nOiBodHRwOi8vb2dwLm1lL25zIyByZGZzOiBodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1zY2hlbWEjIHNpb2M6IGh0dHA6Ly9yZGZzLm9yZy9zaW9jL25zIyBzaW9jdDogaHR0cDovL3JkZnMub3JnL3Npb2MvdHlwZXMjIHNrb3M6IGh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDIvc2tvcy9jb3JlIyB4c2Q6IGh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIyI+Cgo8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgQGNoYXJzZXQgIlVURi04IjsKCiAgICAgICAgW25nXDpjbG9ha10sCiAgICAgICAgW25nLWNsb2FrXSwKICAgICAgICBbZGF0YS1uZy1jbG9ha10sCiAgICAgICAgW3gtbmctY2xvYWtdLAogICAgICAgIC5uZy1jbG9haywKICAgICAgICAueC1uZy1jbG9haywKICAgICAgICAubmctaGlkZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSkgewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBuZ1w6Zm9ybSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLm5nLWFuaW1hdGUtc2hpbSB7CiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5uZy1hbmNob3IgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPHRpdGxlPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iT29wcywgbG9va3MgbGlrZSB0aGUgcGFnZSBpcyBsb3N0LiI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMy43L2Nzcy9ib290c3RyYXAubWluLmNzcyI+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9RE0rU2FuczozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0iIgogICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLTlRNkgwUUVUUkYmYW1wO2N4PWMmYW1wO19zbGM9MSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGFzeW5jPSIiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICAgICAgKGZ1bmN0aW9uIChpLCBzLCBvLCBnLCByLCBhLCBtKSB7CiAgICAgICAgICAgIGlbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddID0gcjsgaVtyXSA9IGlbcl0gfHwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgKGlbcl0ucSA9IGlbcl0ucSB8fCBbXSkucHVzaChhcmd1bWVudHMpCiAgICAgICAgICAgIH0sIGlbcl0ubCA9IDEgKiBuZXcgRGF0ZSgpOyBhID0gcy5jcmVhdGVFbGVtZW50KG8pLAogICAgICAgICAgICAgICAgbSA9IHMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07IGEuYXN5bmMgPSAxOyBhLnNyYyA9IGc7IG0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgbSkKICAgICAgICB9KSh3aW5kb3csIGRvY3VtZW50LCAnc2NyaXB0JywgJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsICdnYScpOwoKICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTI2NTc1OTg5LTQ2JywgJ2F1dG8nKTsKICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOwoKICAgIDwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxpZnJhbWUgYWxsb3c9ImpvaW4tYWQtaW50ZXJlc3QtZ3JvdXAiIGRhdGEtdGFnZ2luZy1pZD0iRy05UTZIMFFFVFJGIiBkYXRhLWxvYWQtdGltZT0iMTc0NDcwOTQ2NDA5MyIgaGVpZ2h0PSIwIgogICAgICAgIHdpZHRoPSIwIgogICAgICAgIHNyYz0iaHR0cHM6Ly90ZC5kb3VibGVjbGljay5uZXQvdGQvZ2EvcnVsP3RpZD1HLTlRNkgwUUVUUkYmYW1wO2dhY2lkPTE2Njk1ODM0ODYuMTc0NDcwOTQ2MyZhbXA7Z3RtPTQ1amU1NGIwdjkxMjU5NTkxMTJ6YTIwMCZhbXA7ZG1hPTEmYW1wO2RtYV9jcHM9c3lwaGFtbyZhbXA7Z2NkPTEzbDNsUGwybDJsMSZhbXA7bnBhPTAmYW1wO3BzY2RsPW5vYXBpJmFtcDthaXA9MSZhbXA7ZmxlZGdlPTEmYW1wO2ZybT0wJmFtcDt0YWdfZXhwPTEwMjUwOTY4M34xMDI4MDMyNzl+MTAyODEzMTA5fjEwMjg4NzgwMH4xMDI5MjYwNjJ+MTAzMDIxODMwfjEwMzAyNzAxNn4xMDMwNTE5NTN+MTAzMDU1NDY1fjEwMzA3Nzk1MCZhbXA7ej0yMTA4NTA0Mzg5IgogICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lOyB2aXNpYmlsaXR5OiBoaWRkZW47Ij4KICAgIDwvaWZyYW1lPgogICAgPGRpdiBjbGFzcz0icGFnZS1ub3QtZm91bmQiPgogICAgICAgIDxpbWcgY2xhc3M9ImltYWdlIiBhbHQ9IlBhZ2UgTm90IEZvdW5kIiBzcmM9Ii9odGRvY3NfZXJyb3IvcGFnZV9ub3RfZm91bmQuc3ZnIiAvPgogICAgICAgIDxoMSBjbGFzcz0idGl0bGUiPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvaDE+CiAgICAgICAgPHAgY2xhc3M9InRleHQiPgogICAgICAgICAgICBTb3JyeSwgdGhlIHBhZ2UgeW91IGFyZSBsb29raW5nIGZvciBjb3VsZCBub3QgYmUgZm91bmQuIEl0J3MganVzdCBhbgogICAgICAgICAgICBhY2NpZGVudCB0aGF0IHdhcyBub3QgaW50ZW50aW9uYWwuCiAgICAgICAgPC9wPgogICAgPC9kaXY+Cgo8L2JvZHk+CjxzdHlsZT4KICAgIGJvZHkgewogICAgICAgIGNvbG9yOiAjMWQxZTIwOwogICAgICAgIGJhY2tncm91bmQ6ICNmNGY1ZmY7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LWZhbWlseTogIkRNIFNhbnMiLCAiUm9ib3RvIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICAgIH0KCiAgICAucGFnZS1ub3QtZm91bmQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwoKICAgICAgICBpbWcgewogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2UgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7CiAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICB9CgogICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIH0KCiAgICAgICAgLnRleHQgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1heC13aWR0aDogNjUwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgICAgIGNvbG9yOiAjNkQ3MDgxOwogICAgICAgIH0KCgogICAgfQo8L3N0eWxlPgoKPC9odG1sPgo="}},"time_used":50,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":47,"receive":3,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/post-75fea.css?ver=1706574923","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.777Z","timestamp":1785128398777,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/elementor/css/post-75fea.css?ver=1706574923 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 1125\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"2e2b-67c3620e-27c0e4929a62fac2;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: e8a5ee9f2c09dfb08361a92f06ae3f17-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":11819,"size_decoded":1697,"mime_type":"text/css","magic":"ASCII text","md5":"111565a2287e69bf12c8b4ba64f407ef","sha1":"fdde0d97d3c5bacd16bacc90737b562bec2cdcd3","sha256":"c206759a3b0b2c56e7a2b1ae7fcfb84c6319d41364c96ab5247d5a6820781275","sha512":"5a5059e78ee09c30bd9e8bc45981386a8059419b1663867cdab6aef30b8347b8c1a4f7dc0edd890315741a1c652c3667c309f8b70da5be1c6d470d8d759df946","ssdeep":"192:tRqSfwL2GgLqcfVnfnxQ63Ik6b6o6tvK6Vf6VYH6CTvcFvvyGCYyVYvdMD20mFaN:tRqOwL2Geq0VfnxQ4IkarQvK+ZaCTvEa","tlshash":"8a3210813e931678b00f201fd697a29d266008cbca3c7a9df5ed194bef74e94b3d1949","first_seen":"2026-07-27T03:56:42.577741Z","last_seen":"2026-07-27T05:30:59.806905Z","times_seen":6,"resource_available":false,"data":"LmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWdhcDogMjRweCAyNHB4OwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDMwcHg7CiAgICAtLXBhZGRpbmctYmxvY2stZW5kOiA0MHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkOm5vdCguZWxlbWVudG9yLW1vdGlvbi1lZmZlY3RzLWVsZW1lbnQtdHlwZS1iYWNrZ3JvdW5kKSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtY29udGFpbmVyPi5lbGVtZW50b3ItbW90aW9uLWVmZmVjdHMtbGF5ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzFBMjEyRjsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkLAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTc3OThhOWQ6OmJlZm9yZSB7CiAgICAtLWJvcmRlci10cmFuc2l0aW9uOiAwLjNzOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTMwZjU0ZjYgaW1nIHsKICAgIHdpZHRoOiAyMiU7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTY5NWQ5ZiB7CiAgICAtLWRpc3BsYXk6IGZsZXg7CiAgICAtLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtd2lkdGg6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtaGVpZ2h0OiAxMDAlOwogICAgLS1jb250YWluZXItd2lkZ2V0LWZsZXgtZ3JvdzogMTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLS1nYXA6IDBweCAwcHg7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC1hYjc3MGNhIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgLS1iYWNrZ3JvdW5kLXRyYW5zaXRpb246IDAuM3M7CiAgICAtLXBhZGRpbmctYmxvY2stc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDBweDsKICAgIC0tcGFkZGluZy1pbmxpbmUtZW5kOiAwcHg7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtYWI3NzBjYS5lLWNvbiB7CiAgICAtLWZsZXgtZ3JvdzogMDsKICAgIC0tZmxleC1zaHJpbms6IDA7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuaGZlLW5hdi1tZW51X190b2dnbGUgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0gewogICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgcGFkZGluZy1yaWdodDogMTBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5tZW51LWl0ZW0gYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoIDEwcHggKyAyMHB4KTsKICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLm1lbnUtaXRlbSB1bCB1bCBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIHBhZGRpbmctbGVmdDogY2FsYyggMTBweCArIDQwcHgpOwogICAgcGFkZGluZy1yaWdodDogMTBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5oZmUtbmF2LW1lbnVfX2xheW91dC12ZXJ0aWNhbCAubWVudS1pdGVtIHVsIHVsIHVsIGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgcGFkZGluZy1sZWZ0OiBjYWxjKCAxMHB4ICsgNjBweCk7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4Owp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIC5tZW51LWl0ZW0gdWwgdWwgdWwgdWwgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoIDEwcHggKyA4MHB4KTsKICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5tZW51LWl0ZW0gYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLXRvcDogMHB4OwogICAgcGFkZGluZy1ib3R0b206IDBweDsKfQoKYm9keTpub3QoLnJ0bCkgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgbWFyZ2luLXJpZ2h0OiA2MHB4Owp9Cgpib2R5LnJ0bCAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICBtYXJnaW4tbGVmdDogNjBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdjpub3QoLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwpIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgbWFyZ2luLWJvdHRvbTogNjBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgZm9udC1zaXplOiAyNnB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGxpbmUtaGVpZ2h0OiAzNnB4Owp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuc3ViLW1lbnUgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuc3ViLW1lbnUgYS5oZmUtc3ViLW1lbnUtaXRlbTpob3ZlciwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5tZW51LWl0ZW0uY3VycmVudC1tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0uaGlnaGxpZ2h0ZWQsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbTpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAubWVudS1pdGVtLmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5tZW51LWl0ZW0uY3VycmVudC1tZW51LWFuY2VzdG9yIGEuaGZlLW1lbnUtaXRlbSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuc3ViLW1lbnUgYS5oZmUtc3ViLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5lbGVtZW50b3ItbWVudS10b2dnbGUsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24gbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLnN1Yi1tZW51LAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgbmF2LmhmZS1kcm9wZG93biwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24gLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duIC5tZW51LWl0ZW0gYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMUEyMTJGOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuZWxlbWVudG9yLW1lbnUtdG9nZ2xlOmhvdmVyLAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgbmF2LmhmZS1kcm9wZG93biBsaSBhLmhmZS1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgbmF2LmhmZS1kcm9wZG93bi1leHBhbmRpYmxlIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgdWwuc3ViLW1lbnUgewogICAgd2lkdGg6IDIyMHB4Owp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24gbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBwYWRkaW5nLXRvcDogMTVweDsKICAgIHBhZGRpbmctYm90dG9tOiAxNXB4Owp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgLnN1Yi1tZW51IGxpLm1lbnUtaXRlbTpub3QoOmxhc3QtY2hpbGQpLAouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgbmF2LmhmZS1kcm9wZG93biBsaS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSwKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBub25lOwp9CgouZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgZGl2LmhmZS1uYXYtbWVudS1pY29uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItMWNlNmFlNSk7Cn0KCi5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBkaXYuaGZlLW5hdi1tZW51LWljb24gc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1KTsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zOTEzMTZlIHsKICAgIC0tZGlzcGxheTogZmxleDsKICAgIC0tZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC0tY29udGFpbmVyLXdpZGdldC13aWR0aDogMTAwJTsKICAgIC0tY29udGFpbmVyLXdpZGdldC1oZWlnaHQ6IGluaXRpYWw7CiAgICAtLWNvbnRhaW5lci13aWRnZXQtZmxleC1ncm93OiAwOwogICAgLS1jb250YWluZXItd2lkZ2V0LWFsaWduLXNlbGY6IGluaXRpYWw7CiAgICAtLWJhY2tncm91bmQtdHJhbnNpdGlvbjogMC4zczsKICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWJsb2NrLWVuZDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMHB4OwogICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wNDdhZmU2IC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYWxpZ24taWNvbi1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKfQoKLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0wNDdhZmU2IC5lbGVtZW50b3ItYnV0dG9uIC5lbGVtZW50b3ItYWxpZ24taWNvbi1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKfQoKQG1lZGlhKG1pbi13aWR0aDo3NjhweCkgewogICAgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkIHsKICAgICAgICAtLWNvbnRlbnQtd2lkdGg6IDEzMjBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtZTY5NWQ5ZiB7CiAgICAgICAgLS1jb250ZW50LXdpZHRoOiAxMzIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWFiNzcwY2EgewogICAgICAgIC0td2lkdGg6IDgxLjI1JTsKICAgIH0KICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzkxMzE2ZSB7CiAgICAgICAgLS13aWR0aDogNTAlOwogICAgfQp9CgpAbWVkaWEobWF4LXdpZHRoOjEwMjRweCkgewogICAgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkIHsKICAgICAgICAtLWdhcDogMjBweCAyMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1zdGFydDogMjBweDsKICAgICAgICAtLXBhZGRpbmctYmxvY2stZW5kOiAyMHB4OwogICAgICAgIC0tcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDIwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1lbmQ6IDIwcHg7CiAgICB9CiAgICAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTMwZjU0ZjYgaW1nIHsKICAgICAgICB3aWR0aDogMjUlOwogICAgfQogICAgYm9keTpub3QoLnJ0bCkgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3LmhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQgLmhmZS1uYXYtbWVudV9fbGF5b3V0LWhvcml6b250YWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7CiAgICB9CiAgICBib2R5IC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXYuaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgLmhmZS1uYXYtbWVudT5saS5tZW51LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4OwogICAgfQogICAgYm9keTpub3QoLnJ0bCkgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1yaWdodDogMzBweDsKICAgIH0KICAgIGJvZHkucnRsIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyAuaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCAuaGZlLW5hdi1tZW51PmxpLm1lbnUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tbGVmdDogMzBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBuYXY6bm90KC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsKSAuaGZlLW5hdi1tZW51PmxpLm1lbnUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQogICAgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IGEuaGZlLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgICB9Cn0KCkBtZWRpYShtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtNzc5OGE5ZCB7CiAgICAgICAgLS1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAxMHB4OwogICAgICAgIC0tcGFkZGluZy1ibG9jay1lbmQ6IDEwcHg7CiAgICAgICAgLS1wYWRkaW5nLWlubGluZS1zdGFydDogMTBweDsKICAgICAgICAtLXBhZGRpbmctaW5saW5lLWVuZDogMTBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtMzBmNTRmNiBpbWcgewogICAgICAgIHdpZHRoOiA0NSU7CiAgICB9CiAgICAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LWFiNzcwY2EgewogICAgICAgIC0td2lkdGg6IDUwJTsKICAgIH0KICAgIGJvZHk6bm90KC5ydGwpIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNy5oZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlIC5oZmUtbmF2LW1lbnVfX2xheW91dC1ob3Jpem9udGFsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1yaWdodDogMHB4OwogICAgfQogICAgYm9keSAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgbmF2LmhmZS1uYXYtbWVudV9fbGF5b3V0LXZlcnRpY2FsIC5oZmUtbmF2LW1lbnU+bGkubWVudS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsKICAgIH0KICAgIC5lbGVtZW50b3ItNyAuZWxlbWVudG9yLWVsZW1lbnQuZWxlbWVudG9yLWVsZW1lbnQtOWNmYzBjNyBhLmhmZS1tZW51LWl0ZW0sCiAgICAuZWxlbWVudG9yLTcgLmVsZW1lbnRvci1lbGVtZW50LmVsZW1lbnRvci1lbGVtZW50LTljZmMwYzcgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgfQogICAgLmVsZW1lbnRvci03IC5lbGVtZW50b3ItZWxlbWVudC5lbGVtZW50b3ItZWxlbWVudC0zOTEzMTZlIHsKICAgICAgICAtLXdpZHRoOiA1MCU7CiAgICB9Cn0="}},"time_used":98,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":98,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment-ethereum.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.867Z","timestamp":1785128398867,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment-ethereum.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 1210\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 3e1e93ad4e1b38a86dd39ad4000c06ee-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":1210,"size_decoded":1532,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"525b9e757ac01967800d92436657caae","sha1":"60d06cfa471d4b1826336fd077e905192b857e27","sha256":"2f68d0440d8362f2845011304c181c2fb4e649a6faed05823391441a50efdc64","sha512":"ac0614a05ce5fa8af33c0a0d513d13e82ec528b14446cf45adcd15b5aa4b5fe0111c274bda069573258b56e41a8777a6293fbcb75778f80aa1bfd0a92cf5c647","ssdeep":"","tlshash":"ae21062422224709ec28e83fbc3b8b49d41369281904ce6aba2258ed0efa4f1a7204c0","first_seen":"2026-07-27T03:56:42.600988Z","last_seen":"2026-07-27T05:01:06.141396Z","times_seen":3,"resource_available":false,"data":"UklGRrIEAABXRUJQVlA4WAoAAAAYAAAAkwAAMgAAQUxQSIACAAABoIPtnyJJ+Z271GGRu1vh7u7QaH6eIZXiFO4y4W1YOGTXeGSFuzTuUrjLF3TV7Dz9PNPRBRExAfRT9dB1JsyY0UcuvqiHbPzLb5v1jwfg/t5xLMBJPWNO0/p4Xr+4kuwVvWKbP3N/bd8nHqP41JSRWaCV4MgxcT5DnjcyB1GSBbYYDws/H+arxaPyECQ5SBoPtzP0baOK4CR5qMeD/Xe4//YZ5sgABCvVZGtFGAwg2NbSCHgjWYgDiNLSCHgjGWALKUGlAL6GpXKJpurG1GeYZJxWcuStUs4bio2RarKNkSM7UE22MaogSRYwSuQj7S06sYpJrywcSTFsQX6pLXGkHEWnkHOOopOHIDlIskzSdWLN5NYUaohbyEMteQiSHFDpyJZJEKTYaqA2kkkQpNiK4KQBBC0FjtQAmi3UdGXK4a8N987xU3KGspciOEkBgmQBU1GuDGAlVZQrJbBSA04eghTASwlsJ047ZvrSb0s/uJln7pnbAthCeQNYSRGc5CBqKTTKV5AkaSk0ylvgSC0FrCI4KUElC0mdmLr2kY2X3PJv67+JjbZae6OKiXwy2oK2N0AlBfCyFGt5qFuWYq0jKRsDVLKAUQV1N7TRV79eMnP3p+HZfWa4P96YU3KFSlLTchVgpAiVFHKNVQ2+pZBrrNQUoo4EjCqIkgffER33P68cMOXcc6cc8iZ/7qohqwi4LSRpiwBYB7VkACPJJWicpARHZuQSNE6SbA3Bg5eDWvLgpQhHdkW3w/8TGy4Z/A8XaAyPavZrwPcJeGxqf9COv5P9YRP1CK3OnaNeMeXB1oT6hdb/HD41fUOH/PffoeoduvYq9ZCZM/vIGF+XXC8FVlA4IEoBAADQCgCdASqUADMAPlEkjUSjoiEXOjzoOAUEsoBqCRvvjP0AP1m61DycgYZUhTx2PDKeI7zny1+h7zb7OVmbj7HDrm3p1fmTT4FjDk2Kt89X8NWAePdt4EoEOu6x8f8EwAD+yL//2Dv//Qd//6Dv9Uz/Vf4+/bCTzK/9/QQMO3afOM7iO+d/6sOn9+R3lM4GfX3L/2Mt+qqyy66ZI5oI8vg2fN6a6sG4D4ZzPVOT7pnJpO1BGXAvOmVvQwiG/SH8dhZrnpQ2WDpw9WMNKOEmSD8E8KSU1gf5zfKZ0TlTrxWejXvA39Y2obVZfOOezPvG2R6K+yn1tF/z1FMZueUohu0MK3z6Rwxf89OLsHzmRKNBz/VXH6DgoPOVpBw/etBQGZBKPg1iTe8TQIoThPoTqlmC3A+I0xFzygAbMlL6sc2bsuvZDscPvO0gAABFWElGugAAAEV4aWYAAElJKgAIAAAABgASAQMAAQAAAAEAAAAaAQUAAQAAAFYAAAAbAQUAAQAAAF4AAAAoAQMAAQAAAAIAAAATAgMAAQAAAAEAAABphwQAAQAAAGYAAAAAAAAASAAAAAEAAABIAAAAAQAAAAYAAJAHAAQAAAAwMjEwAZEHAAQAAAABAgMAAKAHAAQAAAAwMTAwAaADAAEAAAD//wAAAqAEAAEAAACUAAAAA6AEAAEAAAAzAAAAAAAAAA=="}},"time_used":95,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/_/translate_http/_/js/k=translate_http.tr.no.scrnY6Q2_yw.O/am=BIAABw/d=1/ed=1/rs=AN8SPfq1KlUFqeiFvBMudduzGtb39QWXuw/m=el_main","fqdn":"translate.googleapis.com","domain":"translate.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":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.105Z","timestamp":1785128399105,"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 /_/translate_http/_/js/k=translate_http.tr.no.scrnY6Q2_yw.O/am=BIAABw/d=1/ed=1/rs=AN8SPfq1KlUFqeiFvBMudduzGtb39QWXuw/m=el_main HTTP/1.1\r\nHost: translate.googleapis.com\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://circuittradetech.com/\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\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/rosetta\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"rosetta\"\r\nreport-to: {\"group\":\"rosetta\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/rosetta\"}]}\r\ncontent-length: 92699\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 17:28:11 GMT\r\nexpires: Thu, 22 Jul 2027 17:28:11 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 21 Jul 2026 20:35:41 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding\r\nage: 387108\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":null,"data":{"size":266390,"size_decoded":93559,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (2543)","md5":"eee9a1207007c5ca4881ae1d2d28501c","sha1":"055b95815ec1c7e235a4cd1b81986d5d91189286","sha256":"10db7fa38c6dbe779e1409808ec38f25074b935da180aa0f225307cc79e1bcd4","sha512":"0d0e9b5d67d5b34cbd057ef33fcfb4719221ed6139a1ab0796edd0018d992cf6c14a9e7bec89c99d8d91831b7a3602575c9c03e64dcf381ba15f0587cde57194","ssdeep":"3072:8D4U6KKZgtBOjsNxt45eITHt28KRu9gKavNuBDHK0QppB0/I:8QcMsb0muBzg","tlshash":"d944e9d8b2a174669363f4a5413f000fb13b68a9f8484dacb28dd8e26df4959417bf7c","first_seen":"2026-07-22T19:32:39.227777Z","last_seen":"2026-07-27T17:47:56.699565Z","times_seen":316,"resource_available":true,"data":"InVzZSBzdHJpY3QiO3RoaXMuZGVmYXVsdF90cj10aGlzLmRlZmF1bHRfdHJ8fHt9OyhmdW5jdGlvbihfKXt2YXIgd2luZG93PXRoaXM7CnRyeXsKXy5fRl90b2dnbGVzX2luaXRpYWxpemU9ZnVuY3Rpb24oYSl7KHR5cGVvZiBnbG9iYWxUaGlzIT09InVuZGVmaW5lZCI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZiE9PSJ1bmRlZmluZWQiP3NlbGY6dGhpcykuX0ZfdG9nZ2xlc19kZWZhdWx0X3RyPWF8fFtdfTsoMCxfLl9GX3RvZ2dsZXNfaW5pdGlhbGl6ZSkoWzB4NzAwODAwNCwgMHgwLCBdKTsKLyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KLyoKCiBDb3B5cmlnaHQgR29vZ2xlIExMQwogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KLyoKCiBDb3B5cmlnaHQgMjAwNSwgMjAwNyBCb2IgSXBwb2xpdG8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAoqLwp2YXIgYWEsY2EsZmEsamEscmEseGEsQmEsRGEsRmEsR2EsSWEsWWEsYmIsZmIsZ2IsamIsa2IsbmIscGIscWIsc2IsdWIsdmIsQWIsQmIsRmIsSWIsSmIsTWIsTmIsT2IsUWIsU2IseixSYixVYixZYixaYixhYyxiYzthYT1mdW5jdGlvbihhLGIpe2lmKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsYWEpO2Vsc2V7dmFyIGM9RXJyb3IoKS5zdGFjaztjJiYodGhpcy5zdGFjaz1jKX1hJiYodGhpcy5tZXNzYWdlPVN0cmluZyhhKSk7YiE9PXZvaWQgMCYmKHRoaXMuY2F1c2U9Yil9O2NhPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIlcyIpO2Zvcih2YXIgYz0iIixkPWEubGVuZ3RoLTEsZT0wO2U8ZDtlKyspYys9YVtlXSsoZTxiLmxlbmd0aD9iW2VdOiIlcyIpO2FhLmNhbGwodGhpcyxjK2FbZF0pfTtmYT1mdW5jdGlvbihhKXtpZihfLmRhKWEoXy5kYSk7ZWxzZXt2YXIgYjsoKGI9ZWEpIT1udWxsP2I6ZWE9W10pLnB1c2goYSl9fTsKamE9ZnVuY3Rpb24oKXshXy5kYSYmXy5oYSYmXy5pYSgpO3JldHVybiBfLmRhfTtfLmlhPWZ1bmN0aW9uKCl7Xy5kYT1fLmhhKCk7dmFyIGE7KGE9ZWEpPT1udWxsfHxhLmZvckVhY2goZmEpO2VhPXZvaWQgMH07Xy5sYT1mdW5jdGlvbihhKXtfLmRhJiZrYShhKX07Xy5tYT1mdW5jdGlvbigpe18uZGEmJl8uZGEubWQoKX07Xy5vYT1mdW5jdGlvbihhLGIpe2IuaGFzT3duUHJvcGVydHkoImRpc3BsYXlOYW1lIil8fChiLmRpc3BsYXlOYW1lPWEudG9TdHJpbmcoKSk7YltuYV09YX07Xy5wYT1mdW5jdGlvbihhKXthJiZ0eXBlb2YgYS5kaXNwb3NlPT0iZnVuY3Rpb24iJiZhLmRpc3Bvc2UoKX07cmE9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz1hcmd1bWVudHMubGVuZ3RoO2I8YzsrK2Ipe3ZhciBkPWFyZ3VtZW50c1tiXTtfLnFhKGQpP3JhLmFwcGx5KG51bGwsZCk6Xy5wYShkKX19O18udT1mdW5jdGlvbigpe3RoaXMucWE9dGhpcy5xYTt0aGlzLlc9dGhpcy5XfTsKXy50YT1mdW5jdGlvbihhLGIpe3JldHVybiBzYShhLGIpPj0wfTtfLnVhPWZ1bmN0aW9uKGEsYil7Xy50YShhLGIpfHxhLnB1c2goYil9O18udmE9ZnVuY3Rpb24oYSxiKXtiPXNhKGEsYik7dmFyIGM7KGM9Yj49MCkmJkFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhLGIsMSk7cmV0dXJuIGN9O18ud2E9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sZW5ndGg7aWYoYj4wKXtmb3IodmFyIGM9QXJyYXkoYiksZD0wO2Q8YjtkKyspY1tkXT1hW2RdO3JldHVybiBjfXJldHVybltdfTt4YT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihfLnFhKGQpKXt2YXIgZT1hLmxlbmd0aHx8MCxmPWQubGVuZ3RofHwwO2EubGVuZ3RoPWUrZjtmb3IodmFyIGc9MDtnPGY7ZysrKWFbZStnXT1kW2ddfWVsc2UgYS5wdXNoKGQpfX07CkJhPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9MCxkPXt9O2M8YS5sZW5ndGg7KXt2YXIgZT1hW2MrK10sZj1fLnlhKGUpPyJvIisoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsemEpJiZlW3phXXx8KGVbemFdPSsrQWEpKToodHlwZW9mIGUpLmNoYXJBdCgwKStlO09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGYpfHwoZFtmXT0hMCxhW2IrK109ZSl9YS5sZW5ndGg9Yn07Xy5DYT1mdW5jdGlvbihhLGIpe3RoaXMud2lkdGg9YTt0aGlzLmhlaWdodD1ifTtEYT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBhKWlmKGIuY2FsbCh2b2lkIDAsYVtjXSxjLGEpKXJldHVybiEwO3JldHVybiExfTsKRmE9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZCxlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7ZD1hcmd1bWVudHNbZV07Zm9yKGMgaW4gZClhW2NdPWRbY107Zm9yKHZhciBmPTA7ZjxFYS5sZW5ndGg7ZisrKWM9RWFbZl0sT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsYykmJihhW2NdPWRbY10pfX07R2E9ZnVuY3Rpb24oYSl7cmV0dXJue3ZhbHVlT2Y6YX0udmFsdWVPZigpfTtJYT1mdW5jdGlvbigpe3ZhciBhPW51bGw7aWYoIUhhKXJldHVybiBhO3RyeXt2YXIgYj1mdW5jdGlvbihjKXtyZXR1cm4gY307YT1IYS5jcmVhdGVQb2xpY3koImdvb2cjaHRtbCIse2NyZWF0ZUhUTUw6YixjcmVhdGVTY3JpcHQ6YixjcmVhdGVTY3JpcHRVUkw6Yn0pfWNhdGNoKGMpe31yZXR1cm4gYX07Xy5LYT1mdW5jdGlvbigpe0phPT09dm9pZCAwJiYoSmE9SWEoKSk7cmV0dXJuIEphfTsKXy5NYT1mdW5jdGlvbihhKXt2YXIgYj1fLkthKCk7YT1iP2IuY3JlYXRlU2NyaXB0VVJMKGEpOmE7cmV0dXJuIG5ldyBfLkxhKGEpfTtfLk5hPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLkxhKXJldHVybiBhLmc7dGhyb3cgRXJyb3IoInQiKTt9O18uT2E9ZnVuY3Rpb24oYSxiKXtiPWI9PT12b2lkIDA/ZG9jdW1lbnQ6Yjt2YXIgYyxkO2I9KGQ9KGM9YikucXVlcnlTZWxlY3Rvcik9PW51bGw/dm9pZCAwOmQuY2FsbChjLGErIltub25jZV0iKTtyZXR1cm4gYj09bnVsbD8iIjpiLm5vbmNlfHxiLmdldEF0dHJpYnV0ZSgibm9uY2UiKXx8IiJ9O18uUWE9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5LYSgpO2E9Yj9iLmNyZWF0ZVNjcmlwdChhKTphO3JldHVybiBuZXcgXy5QYShhKX07Xy5SYT1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5QYSlyZXR1cm4gYS5nO3Rocm93IEVycm9yKCJ0Iik7fTsKXy5TYT1mdW5jdGlvbihhLGIpe2Euc3JjPV8uTmEoYik7KGI9Xy5PYSgic2NyaXB0IixhLm93bmVyRG9jdW1lbnQpKSYmYS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixiKX07Xy5UYT1mdW5jdGlvbigpe3ZhciBhPV8udi5uYXZpZ2F0b3I7cmV0dXJuIGEmJihhPWEudXNlckFnZW50KT9hOiIifTtfLnc9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uVGEoKS5pbmRleE9mKGEpIT0tMX07Xy5XYT1mdW5jdGlvbigpe3JldHVybiBfLlVhPyEhXy5WYSYmXy5WYS5icmFuZHMubGVuZ3RoPjA6ITF9O18uWGE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5XYSgpPyExOl8udygiT3BlcmEiKX07WWE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5VYT8hIV8uVmEmJiEhXy5WYS5wbGF0Zm9ybTohMX07Xy5aYT1mdW5jdGlvbigpe3JldHVybiBfLncoImlQaG9uZSIpJiYhXy53KCJpUG9kIikmJiFfLncoImlQYWQiKX07Xy4kYT1mdW5jdGlvbigpe3JldHVybiBfLlphKCl8fF8udygiaVBhZCIpfHxfLncoImlQb2QiKX07Cl8uYWI9ZnVuY3Rpb24oKXtyZXR1cm4gWWEoKT9fLlZhLnBsYXRmb3JtPT09Im1hY09TIjpfLncoIk1hY2ludG9zaCIpfTtiYj1mdW5jdGlvbigpe3RoaXMuaWQ9ImIifTtfLmRiPWZ1bmN0aW9uKGEsYil7Y2IuY2FsbCh0aGlzLGE/YS50eXBlOiIiKTt0aGlzLnJlbGF0ZWRUYXJnZXQ9dGhpcy5jdXJyZW50VGFyZ2V0PXRoaXMudGFyZ2V0PW51bGw7dGhpcy5idXR0b249dGhpcy5zY3JlZW5ZPXRoaXMuc2NyZWVuWD10aGlzLmNsaWVudFk9dGhpcy5jbGllbnRYPXRoaXMub2Zmc2V0WT10aGlzLm9mZnNldFg9MDt0aGlzLmtleT0iIjt0aGlzLmNoYXJDb2RlPXRoaXMua2V5Q29kZT0wO3RoaXMubWV0YUtleT10aGlzLnNoaWZ0S2V5PXRoaXMuYWx0S2V5PXRoaXMuY3RybEtleT0hMTt0aGlzLnN0YXRlPW51bGw7dGhpcy5wb2ludGVySWQ9MDt0aGlzLnBvaW50ZXJUeXBlPSIiO3RoaXMudGltZVN0YW1wPTA7dGhpcy5nPW51bGw7YSYmdGhpcy5pbml0KGEsYil9OwpmYj1mdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMubGlzdGVuZXI9YTt0aGlzLnByb3h5PW51bGw7dGhpcy5zcmM9Yjt0aGlzLnR5cGU9Yzt0aGlzLmNhcHR1cmU9ISFkO3RoaXMuVmM9ZTt0aGlzLmtleT0rK2ViO3RoaXMub2M9dGhpcy5IYz0hMX07Z2I9ZnVuY3Rpb24oYSl7dGhpcy5zcmM9YTt0aGlzLmc9e307dGhpcy5oPTB9O18uaGI9ZnVuY3Rpb24oKXtfLnUuY2FsbCh0aGlzKTt0aGlzLlFhPW5ldyBnYih0aGlzKTt0aGlzLldnPXRoaXM7dGhpcy5mZD1udWxsfTtqYj1mdW5jdGlvbihhKXtfLmhiLmNhbGwodGhpcyk7dGhpcy5nPWF8fHdpbmRvdzt0aGlzLmg9Xy54KHRoaXMuZywicmVzaXplIix0aGlzLmwsITEsdGhpcyk7dGhpcy5qPV8uaWIodGhpcy5nfHx3aW5kb3cpfTsKa2I9ZnVuY3Rpb24oYSl7Xy5oYi5jYWxsKHRoaXMpO3RoaXMuaD1hP2EuZy5kZWZhdWx0Vmlldzp3aW5kb3c7dGhpcy5vPXRoaXMuaC5kZXZpY2VQaXhlbFJhdGlvPj0xLjU/MjoxO3RoaXMuaj0oMCxfLnkpKHRoaXMuQSx0aGlzKTt0aGlzLmw9bnVsbDsodGhpcy5nPXRoaXMuaC5tYXRjaE1lZGlhP3RoaXMuaC5tYXRjaE1lZGlhKCIobWluLXJlc29sdXRpb246IDEuNWRwcHgpLCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpIik6bnVsbCkmJnR5cGVvZiB0aGlzLmcuYWRkTGlzdGVuZXIhPT0iZnVuY3Rpb24iJiZ0eXBlb2YgdGhpcy5nLmFkZEV2ZW50TGlzdGVuZXIhPT0iZnVuY3Rpb24iJiYodGhpcy5nPW51bGwpfTsKbmI9ZnVuY3Rpb24oYSxiKXtfLnUuY2FsbCh0aGlzKTt0aGlzLm89YTtpZihiKXtpZih0aGlzLmwpdGhyb3cgRXJyb3IoIngiKTt0aGlzLmw9Yjt0aGlzLmg9Xy5sYihiKTt0aGlzLmc9bmV3IGpiKF8ubWIoYikpO3RoaXMuZy5uZCh0aGlzLm8uaCgpKTt0aGlzLmo9bmV3IGtiKHRoaXMuaCk7dGhpcy5qLnN0YXJ0KCl9fTtwYj1mdW5jdGlvbihhKXthPWEuSGQuY2hhckNvZGVBdChhLkJiKyspO3JldHVybiBvYlthXX07cWI9ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPTA7ZG97dmFyIGQ9cGIoYSk7Ynw9KGQmMzEpPDxjO2MrPTV9d2hpbGUoZCYzMik7cmV0dXJuIGI8MD9iKzQyOTQ5NjcyOTY6Yn07Xy5yYj1mdW5jdGlvbihhKXtfLnYuc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGE7fSwwKX07c2I9ZnVuY3Rpb24oYSxiKXt0aGlzLmc9YTt0aGlzLmg9Yn07CnViPWZ1bmN0aW9uKGEsYil7Xy51LmNhbGwodGhpcyk7dGhpcy5sPWE7dGhpcy5BPWI7dGhpcy5qPXRiP251bGw6W107dGhpcy5oPXRiP251bGw6W107dGhpcy5vPXRiP251bGw6W107dGhpcy5CPSExfTt2Yj1mdW5jdGlvbigpe3RoaXMuTz10aGlzLnFhPW51bGx9O0FiPWZ1bmN0aW9uKCl7Zm9yKHZhciBhO2E9d2IucmVtb3ZlKCk7KXt0cnl7YS5nLmNhbGwoYS5zY29wZSl9Y2F0Y2goYil7Xy5yYihiKX14Yih5YixhKX16Yj0hMX07QmI9ZnVuY3Rpb24oKXt0aGlzLkI9W107dGhpcy5vPXRoaXMuaD0hMTt0aGlzLmw9dm9pZCAwO3RoaXMuRz10aGlzLlc9dGhpcy5EPSExO3RoaXMuQz0wO3RoaXMuaj1udWxsO3RoaXMuQT0wfTtfLkNiPWZ1bmN0aW9uKGEpe3JldHVybiBhP2RlY29kZVVSSShhKTphfTsKXy5FYj1mdW5jdGlvbihhLGIpe2lmKGEpe2E9YS5zcGxpdCgiJiIpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLmluZGV4T2YoIj0iKSxlPW51bGw7aWYoZD49MCl7dmFyIGY9YVtjXS5zdWJzdHJpbmcoMCxkKTtlPWFbY10uc3Vic3RyaW5nKGQrMSl9ZWxzZSBmPWFbY107YihmLGU/Xy5EYihlKToiIil9fX07RmI9ZnVuY3Rpb24oYSxiLGMpe2lmKEFycmF5LmlzQXJyYXkoYikpZm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspRmIoYSxTdHJpbmcoYltkXSksYyk7ZWxzZSBiIT1udWxsJiZjLnB1c2goYSsoYj09PSIiPyIiOiI9IitfLkdiKGIpKSl9O18uSGI9ZnVuY3Rpb24oYSl7Xy51LmNhbGwodGhpcyk7dGhpcy5oPWE7dGhpcy5nPXt9fTtJYj1mdW5jdGlvbigpe307SmI9ZnVuY3Rpb24oKXt9O18uTGI9ZnVuY3Rpb24oYSl7YT1fLktiKGEpO3JldHVybiBfLk1hKGEpfTsKXy5LYj1mdW5jdGlvbihhKXtyZXR1cm4gYT09PW51bGw/Im51bGwiOmE9PT12b2lkIDA/InVuZGVmaW5lZCI6YX07TWI9dHlwZW9mIE9iamVjdC5jcmVhdGU9PSJmdW5jdGlvbiI/T2JqZWN0LmNyZWF0ZTpmdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbigpe307Yi5wcm90b3R5cGU9YTtyZXR1cm4gbmV3IGJ9O05iPXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz09ImZ1bmN0aW9uIj9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PUFycmF5LnByb3RvdHlwZXx8YT09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYTthW2JdPWMudmFsdWU7cmV0dXJuIGF9OwpPYj1mdW5jdGlvbihhKXthPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoImEiKTt9O18uUGI9T2IodGhpcyk7UWI9IkludDggVWludDggVWludDhDbGFtcGVkIEludDE2IFVpbnQxNiBJbnQzMiBVaW50MzIgRmxvYXQzMiBGbG9hdDY0Ii5zcGxpdCgiICIpO18uUGIuQmlnSW50NjRBcnJheSYmKFFiLnB1c2goIkJpZ0ludDY0IiksUWIucHVzaCgiQmlnVWludDY0IikpO1NiPWZ1bmN0aW9uKGEsYil7aWYoYilmb3IodmFyIGM9MDtjPFFiLmxlbmd0aDtjKyspUmIoUWJbY10rIkFycmF5LnByb3RvdHlwZS4iK2EsYil9Owp6PWZ1bmN0aW9uKGEsYil7YiYmUmIoYSxiKX07UmI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLlBiO2E9YS5zcGxpdCgiLiIpO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGgtMTtkKyspe3ZhciBlPWFbZF07aWYoIShlIGluIGMpKXJldHVybjtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmYiE9bnVsbCYmTmIoYyxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfTsKXy5UYj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtmdW5jdGlvbiBjKCl7fW5ldyBjO1JlZmxlY3QuY29uc3RydWN0KGMsW10sZnVuY3Rpb24oKXt9KTtyZXR1cm4gbmV3IGMgaW5zdGFuY2VvZiBjfWlmKHR5cGVvZiBSZWZsZWN0IT0idW5kZWZpbmVkIiYmUmVmbGVjdC5jb25zdHJ1Y3Qpe2lmKGEoKSlyZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3Q7dmFyIGI9UmVmbGVjdC5jb25zdHJ1Y3Q7cmV0dXJuIGZ1bmN0aW9uKGMsZCxlKXtjPWIoYyxkKTtlJiZSZWZsZWN0LnNldFByb3RvdHlwZU9mKGMsZS5wcm90b3R5cGUpO3JldHVybiBjfX1yZXR1cm4gZnVuY3Rpb24oYyxkLGUpe2U9PT12b2lkIDAmJihlPWMpO2U9TWIoZS5wcm90b3R5cGV8fE9iamVjdC5wcm90b3R5cGUpO3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChjLGUsZCl8fGV9fSgpOwppZih0eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mPT0iZnVuY3Rpb24iKVViPU9iamVjdC5zZXRQcm90b3R5cGVPZjtlbHNle3ZhciBWYjthOnt2YXIgV2I9e2E6ITB9LFhiPXt9O3RyeXtYYi5fX3Byb3RvX189V2I7VmI9WGIuYTticmVhayBhfWNhdGNoKGEpe31WYj0hMX1VYj1WYj9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoImJgIithKTtyZXR1cm4gYX06bnVsbH1ZYj1VYjsKXy5CPWZ1bmN0aW9uKGEsYil7YS5wcm90b3R5cGU9TWIoYi5wcm90b3R5cGUpO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7aWYoWWIpWWIoYSxiKTtlbHNlIGZvcih2YXIgYyBpbiBiKWlmKGMhPSJwcm90b3R5cGUiKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGIsYyk7ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYyxkKX1lbHNlIGFbY109YltjXTthLmVhPWIucHJvdG90eXBlfTtaYj1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX07Cl8uQz1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgU3ltYm9sIT0idW5kZWZpbmVkIiYmU3ltYm9sLml0ZXJhdG9yJiZhW1N5bWJvbC5pdGVyYXRvcl07aWYoYilyZXR1cm4gYi5jYWxsKGEpO2lmKHR5cGVvZiBhLmxlbmd0aD09Im51bWJlciIpcmV0dXJue25leHQ6WmIoYSl9O3Rocm93IEVycm9yKCJjYCIrU3RyaW5nKGEpKTt9O18uJGI9ZnVuY3Rpb24oYSl7aWYoIShhIGluc3RhbmNlb2YgQXJyYXkpKXthPV8uQyhhKTtmb3IodmFyIGIsYz1bXTshKGI9YS5uZXh0KCkpLmRvbmU7KWMucHVzaChiLnZhbHVlKTthPWN9cmV0dXJuIGF9O2FjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGIpfTsKYmM9dHlwZW9mIE9iamVjdC5hc3NpZ249PSJmdW5jdGlvbiI/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihhLGIpe2lmKGE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiZCIpO2E9T2JqZWN0KGEpO2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihkKWZvcih2YXIgZSBpbiBkKWFjKGQsZSkmJihhW2VdPWRbZV0pfXJldHVybiBhfTt6KCJPYmplY3QuYXNzaWduIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8YmN9KTtfLmNjPWZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZWAiK2EpO307Xy5GPWZ1bmN0aW9uKCl7dGhpcy5HPSExO3RoaXMuQT1udWxsO3RoaXMuaj12b2lkIDA7dGhpcy5nPTE7dGhpcy5vPXRoaXMuQz0wO3RoaXMuVz10aGlzLmw9bnVsbH07Xy5GLnByb3RvdHlwZS5JPWZ1bmN0aW9uKGEpe3RoaXMuaj1hfTsKXy5GLnByb3RvdHlwZS5nZXROZXh0QWRkcmVzc0pzYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmd9O18uRi5wcm90b3R5cGUuZ2V0WWllbGRSZXN1bHRKc2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTtfLkYucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihhKXt0aGlzLmw9e3JldHVybjphfTt0aGlzLmc9dGhpcy5vfTtfLkYucHJvdG90eXBlWyJyZXR1cm4iXT1fLkYucHJvdG90eXBlLnJldHVybjtfLkYucHJvdG90eXBlLlI9ZnVuY3Rpb24oYSl7dGhpcy5sPXt4YTphfTt0aGlzLmc9dGhpcy5vfTtfLkYucHJvdG90eXBlLmp1bXBUaHJvdWdoRmluYWxseUJsb2Nrcz1fLkYucHJvdG90eXBlLlI7Xy5GLnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEsYil7dGhpcy5nPWI7cmV0dXJue3ZhbHVlOmF9fTtfLkYucHJvdG90eXBlLnlpZWxkPV8uRi5wcm90b3R5cGUuaDsKXy5GLnByb3RvdHlwZS5UPWZ1bmN0aW9uKGEsYil7YT1fLkMoYSk7dmFyIGM9YS5uZXh0KCk7Xy5jYyhjKTtpZihjLmRvbmUpdGhpcy5qPWMudmFsdWUsdGhpcy5nPWI7ZWxzZSByZXR1cm4gdGhpcy5BPWEsdGhpcy5oKGMudmFsdWUsYil9O18uRi5wcm90b3R5cGUueWllbGRBbGw9Xy5GLnByb3RvdHlwZS5UO18uRi5wcm90b3R5cGUueGE9ZnVuY3Rpb24oYSl7dGhpcy5nPWF9O18uRi5wcm90b3R5cGUuanVtcFRvPV8uRi5wcm90b3R5cGUueGE7Xy5GLnByb3RvdHlwZS5CPWZ1bmN0aW9uKCl7dGhpcy5nPTB9O18uRi5wcm90b3R5cGUuanVtcFRvRW5kPV8uRi5wcm90b3R5cGUuQjtfLkYucHJvdG90eXBlLkY9ZnVuY3Rpb24oYSxiKXt0aGlzLkM9YTtiIT12b2lkIDAmJih0aGlzLm89Yil9O18uRi5wcm90b3R5cGUuc2V0Q2F0Y2hGaW5hbGx5QmxvY2tzPV8uRi5wcm90b3R5cGUuRjtfLkYucHJvdG90eXBlLlA9ZnVuY3Rpb24oYSl7dGhpcy5DPTA7dGhpcy5vPWF8fDB9OwpfLkYucHJvdG90eXBlLnNldEZpbmFsbHlCbG9jaz1fLkYucHJvdG90eXBlLlA7Xy5GLnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYil7dGhpcy5nPWE7dGhpcy5DPWJ8fDB9O18uRi5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1fLkYucHJvdG90eXBlLks7Xy5GLnByb3RvdHlwZS5EPWZ1bmN0aW9uKGEpe3RoaXMuQz1hfHwwO2E9dGhpcy5sLmJmO3RoaXMubD1udWxsO3JldHVybiBhfTtfLkYucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1fLkYucHJvdG90eXBlLkQ7Xy5GLnByb3RvdHlwZS5MPWZ1bmN0aW9uKGEsYixjKXtjP3RoaXMuV1tjXT10aGlzLmw6dGhpcy5XPVt0aGlzLmxdO3RoaXMuQz1hfHwwO3RoaXMubz1ifHwwfTtfLkYucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPV8uRi5wcm90b3R5cGUuTDsKXy5GLnByb3RvdHlwZS5xYT1mdW5jdGlvbihhLGIpe2I9dGhpcy5XLnNwbGljZShifHwwKVswXTsoYj10aGlzLmw9dGhpcy5sfHxiKT9iLkNmP3RoaXMuZz10aGlzLkN8fHRoaXMubzpiLnhhIT12b2lkIDAmJnRoaXMubzxiLnhhPyh0aGlzLmc9Yi54YSx0aGlzLmw9bnVsbCk6dGhpcy5nPXRoaXMubzp0aGlzLmc9YX07Xy5GLnByb3RvdHlwZS5sZWF2ZUZpbmFsbHlCbG9jaz1fLkYucHJvdG90eXBlLnFhO18uRi5wcm90b3R5cGUuTz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IGRjKGEpfTtfLkYucHJvdG90eXBlLmZvckluPV8uRi5wcm90b3R5cGUuTzt2YXIgZGM9ZnVuY3Rpb24oYSl7dGhpcy5qPWE7dGhpcy5nPVtdO2Zvcih2YXIgYiBpbiBhKXRoaXMuZy5wdXNoKGIpO3RoaXMuZy5yZXZlcnNlKCl9O2RjLnByb3RvdHlwZS5oPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmcubGVuZ3RoPjA7KXt2YXIgYT10aGlzLmcucG9wKCk7aWYoYSBpbiB0aGlzLmopcmV0dXJuIGF9cmV0dXJuIG51bGx9OwpkYy5wcm90b3R5cGUuZ2V0TmV4dD1kYy5wcm90b3R5cGUuaDtfLmVjPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPU51bWJlcih0aGlzKSxiPVtdLGM9YTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWJbYy1hXT1hcmd1bWVudHNbY107cmV0dXJuIGJ9O3ooImdsb2JhbFRoaXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxfLlBifSk7eigiUmVmbGVjdCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTp7fX0pO3ooIlJlZmxlY3QuY29uc3RydWN0IixmdW5jdGlvbigpe3JldHVybiBfLlRifSk7eigiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpZYj9mdW5jdGlvbihiLGMpe3RyeXtyZXR1cm4gWWIoYixjKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19Om51bGx9KTsKeigiU3ltYm9sIixmdW5jdGlvbihhKXtpZihhKXJldHVybiBhO3ZhciBiPWZ1bmN0aW9uKGYsZyl7dGhpcy5nPWY7TmIodGhpcywiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Z30pfTtiLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmd9O3ZhciBjPSJqc2NvbXBfc3ltYm9sXyIrKE1hdGgucmFuZG9tKCkqMUU5Pj4+MCkrIl8iLGQ9MCxlPWZ1bmN0aW9uKGYpe2lmKHRoaXMgaW5zdGFuY2VvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImciKTtyZXR1cm4gbmV3IGIoYysoZnx8IiIpKyJfIitkKyssZil9O3JldHVybiBlfSk7eigiU3ltYm9sLml0ZXJhdG9yIixmdW5jdGlvbihhKXtpZihhKXJldHVybiBhO2E9U3ltYm9sKCJoIik7TmIoQXJyYXkucHJvdG90eXBlLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBmYyhaYih0aGlzKSl9fSk7cmV0dXJuIGF9KTsKdmFyIGZjPWZ1bmN0aW9uKGEpe2E9e25leHQ6YX07YVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3JldHVybiBhfTsKeigiUHJvbWlzZSIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe3RoaXMuZz1udWxsfWZ1bmN0aW9uIGMoZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBlP2c6bmV3IGUoZnVuY3Rpb24oaCl7aChnKX0pfWlmKGEpcmV0dXJuIGE7Yi5wcm90b3R5cGUuaD1mdW5jdGlvbihnKXtpZih0aGlzLmc9PW51bGwpe3RoaXMuZz1bXTt2YXIgaD10aGlzO3RoaXMuaihmdW5jdGlvbigpe2gubygpfSl9dGhpcy5nLnB1c2goZyl9O3ZhciBkPV8uUGIuc2V0VGltZW91dDtiLnByb3RvdHlwZS5qPWZ1bmN0aW9uKGcpe2QoZywwKX07Yi5wcm90b3R5cGUubz1mdW5jdGlvbigpe2Zvcig7dGhpcy5nJiZ0aGlzLmcubGVuZ3RoOyl7dmFyIGc9dGhpcy5nO3RoaXMuZz1bXTtmb3IodmFyIGg9MDtoPGcubGVuZ3RoOysraCl7dmFyIGs9Z1toXTtnW2hdPW51bGw7dHJ5e2soKX1jYXRjaChsKXt0aGlzLmwobCl9fX10aGlzLmc9bnVsbH07Yi5wcm90b3R5cGUubD1mdW5jdGlvbihnKXt0aGlzLmooZnVuY3Rpb24oKXt0aHJvdyBnOwp9KX07dmFyIGU9ZnVuY3Rpb24oZyl7dGhpcy5nPTA7dGhpcy5qPXZvaWQgMDt0aGlzLmg9W107dGhpcy5CPSExO3ZhciBoPXRoaXMubCgpO3RyeXtnKGgucmVzb2x2ZSxoLnJlamVjdCl9Y2F0Y2goayl7aC5yZWplY3Qoayl9fTtlLnByb3RvdHlwZS5sPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhsKXtyZXR1cm4gZnVuY3Rpb24obil7a3x8KGs9ITAsbC5jYWxsKGgsbikpfX12YXIgaD10aGlzLGs9ITE7cmV0dXJue3Jlc29sdmU6Zyh0aGlzLkkpLHJlamVjdDpnKHRoaXMubyl9fTtlLnByb3RvdHlwZS5JPWZ1bmN0aW9uKGcpe2lmKGc9PT10aGlzKXRoaXMubyhuZXcgVHlwZUVycm9yKCJpIikpO2Vsc2UgaWYoZyBpbnN0YW5jZW9mIGUpdGhpcy5LKGcpO2Vsc2V7YTpzd2l0Y2godHlwZW9mIGcpe2Nhc2UgIm9iamVjdCI6dmFyIGg9ZyE9bnVsbDticmVhayBhO2Nhc2UgImZ1bmN0aW9uIjpoPSEwO2JyZWFrIGE7ZGVmYXVsdDpoPSExfWg/dGhpcy5HKGcpOnRoaXMuQShnKX19O2UucHJvdG90eXBlLkc9CmZ1bmN0aW9uKGcpe3ZhciBoPXZvaWQgMDt0cnl7aD1nLnRoZW59Y2F0Y2goayl7dGhpcy5vKGspO3JldHVybn10eXBlb2YgaD09ImZ1bmN0aW9uIj90aGlzLkwoaCxnKTp0aGlzLkEoZyl9O2UucHJvdG90eXBlLm89ZnVuY3Rpb24oZyl7dGhpcy5DKDIsZyl9O2UucHJvdG90eXBlLkE9ZnVuY3Rpb24oZyl7dGhpcy5DKDEsZyl9O2UucHJvdG90eXBlLkM9ZnVuY3Rpb24oZyxoKXtpZih0aGlzLmchPTApdGhyb3cgRXJyb3IoImpgIitnKyJgIitoKyJgIit0aGlzLmcpO3RoaXMuZz1nO3RoaXMuaj1oO3RoaXMuZz09PTImJnRoaXMuVygpO3RoaXMuRCgpfTtlLnByb3RvdHlwZS5XPWZ1bmN0aW9uKCl7dmFyIGc9dGhpcztkKGZ1bmN0aW9uKCl7aWYoZy5GKCkpe3ZhciBoPV8uUGIuY29uc29sZTt0eXBlb2YgaCE9PSJ1bmRlZmluZWQiJiZoLmVycm9yKGcuail9fSwxKX07ZS5wcm90b3R5cGUuRj1mdW5jdGlvbigpe2lmKHRoaXMuQilyZXR1cm4hMTt2YXIgZz1fLlBiLkN1c3RvbUV2ZW50LApoPV8uUGIuRXZlbnQsaz1fLlBiLmRpc3BhdGNoRXZlbnQ7aWYodHlwZW9mIGs9PT0idW5kZWZpbmVkIilyZXR1cm4hMDt0eXBlb2YgZz09PSJmdW5jdGlvbiI/Zz1uZXcgZygidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOnR5cGVvZiBoPT09ImZ1bmN0aW9uIj9nPW5ldyBoKCJ1bmhhbmRsZWRyZWplY3Rpb24iLHtjYW5jZWxhYmxlOiEwfSk6KGc9Xy5QYi5kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKSxnLmluaXRDdXN0b21FdmVudCgidW5oYW5kbGVkcmVqZWN0aW9uIiwhMSwhMCxnKSk7Zy5wcm9taXNlPXRoaXM7Zy5yZWFzb249dGhpcy5qO3JldHVybiBrKGcpfTtlLnByb3RvdHlwZS5EPWZ1bmN0aW9uKCl7aWYodGhpcy5oIT1udWxsKXtmb3IodmFyIGc9MDtnPHRoaXMuaC5sZW5ndGg7KytnKWYuaCh0aGlzLmhbZ10pO3RoaXMuaD1udWxsfX07dmFyIGY9bmV3IGI7ZS5wcm90b3R5cGUuSz1mdW5jdGlvbihnKXt2YXIgaD10aGlzLmwoKTtnLkljKGgucmVzb2x2ZSwKaC5yZWplY3QpfTtlLnByb3RvdHlwZS5MPWZ1bmN0aW9uKGcsaCl7dmFyIGs9dGhpcy5sKCk7dHJ5e2cuY2FsbChoLGsucmVzb2x2ZSxrLnJlamVjdCl9Y2F0Y2gobCl7ay5yZWplY3QobCl9fTtlLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGcsaCl7ZnVuY3Rpb24gayhwLHIpe3JldHVybiB0eXBlb2YgcD09ImZ1bmN0aW9uIj9mdW5jdGlvbih0KXt0cnl7bChwKHQpKX1jYXRjaChBKXtuKEEpfX06cn12YXIgbCxuLHE9bmV3IGUoZnVuY3Rpb24ocCxyKXtsPXA7bj1yfSk7dGhpcy5JYyhrKGcsbCksayhoLG4pKTtyZXR1cm4gcX07ZS5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZyl9O2UucHJvdG90eXBlLkljPWZ1bmN0aW9uKGcsaCl7ZnVuY3Rpb24gaygpe3N3aXRjaChsLmcpe2Nhc2UgMTpnKGwuaik7YnJlYWs7Y2FzZSAyOmgobC5qKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJrYCIrbC5nKTt9fXZhciBsPXRoaXM7dGhpcy5oPT0KbnVsbD9mLmgoayk6dGhpcy5oLnB1c2goayk7dGhpcy5CPSEwfTtlLnJlc29sdmU9YztlLnJlamVjdD1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IGUoZnVuY3Rpb24oaCxrKXtrKGcpfSl9O2UucmFjZT1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IGUoZnVuY3Rpb24oaCxrKXtmb3IodmFyIGw9Xy5DKGcpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKWMobi52YWx1ZSkuSWMoaCxrKX0pfTtlLmFsbD1mdW5jdGlvbihnKXt2YXIgaD1fLkMoZyksaz1oLm5leHQoKTtyZXR1cm4gay5kb25lP2MoW10pOm5ldyBlKGZ1bmN0aW9uKGwsbil7ZnVuY3Rpb24gcSh0KXtyZXR1cm4gZnVuY3Rpb24oQSl7cFt0XT1BO3ItLTtyPT0wJiZsKHApfX12YXIgcD1bXSxyPTA7ZG8gcC5wdXNoKHZvaWQgMCkscisrLGMoay52YWx1ZSkuSWMocShwLmxlbmd0aC0xKSxuKSxrPWgubmV4dCgpO3doaWxlKCFrLmRvbmUpfSl9O3JldHVybiBlfSk7CnZhciBoYz1mdW5jdGlvbihhLGIsYyl7aWYoYT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJsYCIrYyk7aWYoYiBpbnN0YW5jZW9mIFJlZ0V4cCl0aHJvdyBuZXcgVHlwZUVycm9yKCJtYCIrYyk7cmV0dXJuIGErIiJ9O3ooIlN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3ZhciBkPWhjKHRoaXMsYiwic3RhcnRzV2l0aCIpLGU9ZC5sZW5ndGgsZj1iLmxlbmd0aDtjPU1hdGgubWF4KDAsTWF0aC5taW4oY3wwLGQubGVuZ3RoKSk7Zm9yKHZhciBnPTA7ZzxmJiZjPGU7KWlmKGRbYysrXSE9YltnKytdKXJldHVybiExO3JldHVybiBnPj1mfX0pO3ooIk9iamVjdC5zZXRQcm90b3R5cGVPZiIsZnVuY3Rpb24oYSl7cmV0dXJuIGF8fFlifSk7eigiU3ltYm9sLmRpc3Bvc2UiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6U3ltYm9sKCJuIil9KTsKeigiV2Vha01hcCIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe31mdW5jdGlvbiBjKGspe3ZhciBsPXR5cGVvZiBrO3JldHVybiBsPT09Im9iamVjdCImJmshPT1udWxsfHxsPT09ImZ1bmN0aW9uIn1mdW5jdGlvbiBkKGspe2lmKCFhYyhrLGYpKXt2YXIgbD1uZXcgYjtOYihrLGYse3ZhbHVlOmx9KX19ZnVuY3Rpb24gZShrKXt2YXIgbD1PYmplY3Rba107bCYmKE9iamVjdFtrXT1mdW5jdGlvbihuKXtpZihuIGluc3RhbmNlb2YgYilyZXR1cm4gbjtPYmplY3QuaXNFeHRlbnNpYmxlKG4pJiZkKG4pO3JldHVybiBsKG4pfSl9aWYoZnVuY3Rpb24oKXtpZighYXx8IU9iamVjdC5zZWFsKXJldHVybiExO3RyeXt2YXIgaz1PYmplY3Quc2VhbCh7fSksbD1PYmplY3Quc2VhbCh7fSksbj1uZXcgYShbW2ssMl0sW2wsM11dKTtpZihuLmdldChrKSE9Mnx8bi5nZXQobCkhPTMpcmV0dXJuITE7bi5kZWxldGUoayk7bi5zZXQobCw0KTtyZXR1cm4hbi5oYXMoaykmJm4uZ2V0KGwpPT00fWNhdGNoKHEpe3JldHVybiExfX0oKSlyZXR1cm4gYTsKdmFyIGY9IiRqc2NvbXBfaGlkZGVuXyIrTWF0aC5yYW5kb20oKTtlKCJmcmVlemUiKTtlKCJwcmV2ZW50RXh0ZW5zaW9ucyIpO2UoInNlYWwiKTt2YXIgZz0wLGg9ZnVuY3Rpb24oayl7dGhpcy5nPShnKz1NYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKCk7aWYoayl7az1fLkMoayk7Zm9yKHZhciBsOyEobD1rLm5leHQoKSkuZG9uZTspbD1sLnZhbHVlLHRoaXMuc2V0KGxbMF0sbFsxXSl9fTtoLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oayxsKXtpZighYyhrKSl0aHJvdyBFcnJvcigibyIpO2Qoayk7aWYoIWFjKGssZikpdGhyb3cgRXJyb3IoInBgIitrKTtrW2ZdW3RoaXMuZ109bDtyZXR1cm4gdGhpc307aC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGspe3JldHVybiBjKGspJiZhYyhrLGYpP2tbZl1bdGhpcy5nXTp2b2lkIDB9O2gucHJvdG90eXBlLmhhcz1mdW5jdGlvbihrKXtyZXR1cm4gYyhrKSYmYWMoayxmKSYmYWMoa1tmXSx0aGlzLmcpfTtoLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oayl7cmV0dXJuIGMoaykmJgphYyhrLGYpJiZhYyhrW2ZdLHRoaXMuZyk/ZGVsZXRlIGtbZl1bdGhpcy5nXTohMX07cmV0dXJuIGh9KTsKeigiTWFwIixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHx0eXBlb2YgYSE9ImZ1bmN0aW9uInx8IWEucHJvdG90eXBlLmVudHJpZXN8fHR5cGVvZiBPYmplY3Quc2VhbCE9ImZ1bmN0aW9uIilyZXR1cm4hMTt0cnl7dmFyIGg9T2JqZWN0LnNlYWwoe3g6NH0pLGs9bmV3IGEoXy5DKFtbaCwicyJdXSkpO2lmKGsuZ2V0KGgpIT0icyJ8fGsuc2l6ZSE9MXx8ay5nZXQoe3g6NH0pfHxrLnNldCh7eDo0fSwidCIpIT1rfHxrLnNpemUhPTIpcmV0dXJuITE7dmFyIGw9ay5lbnRyaWVzKCksbj1sLm5leHQoKTtpZihuLmRvbmV8fG4udmFsdWVbMF0hPWh8fG4udmFsdWVbMV0hPSJzIilyZXR1cm4hMTtuPWwubmV4dCgpO3JldHVybiBuLmRvbmV8fG4udmFsdWVbMF0ueCE9NHx8bi52YWx1ZVsxXSE9InQifHwhbC5uZXh0KCkuZG9uZT8hMTohMH1jYXRjaChxKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7dmFyIGI9bmV3IFdlYWtNYXAsYz1mdW5jdGlvbihoKXt0aGlzWzBdPXt9O3RoaXNbMV09CmYoKTt0aGlzLnNpemU9MDtpZihoKXtoPV8uQyhoKTtmb3IodmFyIGs7IShrPWgubmV4dCgpKS5kb25lOylrPWsudmFsdWUsdGhpcy5zZXQoa1swXSxrWzFdKX19O2MucHJvdG90eXBlLnNldD1mdW5jdGlvbihoLGspe2g9aD09PTA/MDpoO3ZhciBsPWQodGhpcyxoKTtsLmxpc3R8fChsLmxpc3Q9dGhpc1swXVtsLmlkXT1bXSk7bC5lbnRyeT9sLmVudHJ5LnZhbHVlPWs6KGwuZW50cnk9e25leHQ6dGhpc1sxXSxiYjp0aGlzWzFdLmJiLGhlYWQ6dGhpc1sxXSxrZXk6aCx2YWx1ZTprfSxsLmxpc3QucHVzaChsLmVudHJ5KSx0aGlzWzFdLmJiLm5leHQ9bC5lbnRyeSx0aGlzWzFdLmJiPWwuZW50cnksdGhpcy5zaXplKyspO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oaCl7aD1kKHRoaXMsaCk7cmV0dXJuIGguZW50cnkmJmgubGlzdD8oaC5saXN0LnNwbGljZShoLmluZGV4LDEpLGgubGlzdC5sZW5ndGh8fGRlbGV0ZSB0aGlzWzBdW2guaWRdLGguZW50cnkuYmIubmV4dD0KaC5lbnRyeS5uZXh0LGguZW50cnkubmV4dC5iYj1oLmVudHJ5LmJiLGguZW50cnkuaGVhZD1udWxsLHRoaXMuc2l6ZS0tLCEwKTohMX07Yy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzWzBdPXt9O3RoaXNbMV09dGhpc1sxXS5iYj1mKCk7dGhpcy5zaXplPTB9O2MucHJvdG90eXBlLmhhcz1mdW5jdGlvbihoKXtyZXR1cm4hIWQodGhpcyxoKS5lbnRyeX07Yy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGgpe3JldHVybihoPWQodGhpcyxoKS5lbnRyeSkmJmgudmFsdWV9O2MucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGgpe3JldHVybltoLmtleSxoLnZhbHVlXX0pfTtjLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtyZXR1cm4gaC5rZXl9KX07Yy5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtyZXR1cm4gaC52YWx1ZX0pfTtjLnByb3RvdHlwZS5mb3JFYWNoPQpmdW5jdGlvbihoLGspe2Zvcih2YXIgbD10aGlzLmVudHJpZXMoKSxuOyEobj1sLm5leHQoKSkuZG9uZTspbj1uLnZhbHVlLGguY2FsbChrLG5bMV0sblswXSx0aGlzKX07Yy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1jLnByb3RvdHlwZS5lbnRyaWVzO3ZhciBkPWZ1bmN0aW9uKGgsayl7dmFyIGw9ayYmdHlwZW9mIGs7bD09Im9iamVjdCJ8fGw9PSJmdW5jdGlvbiI/Yi5oYXMoayk/bD1iLmdldChrKToobD0iIisgKytnLGIuc2V0KGssbCkpOmw9InBfIitrO3ZhciBuPWhbMF1bbF07aWYobiYmYWMoaFswXSxsKSlmb3IoaD0wO2g8bi5sZW5ndGg7aCsrKXt2YXIgcT1uW2hdO2lmKGshPT1rJiZxLmtleSE9PXEua2V5fHxrPT09cS5rZXkpcmV0dXJue2lkOmwsbGlzdDpuLGluZGV4OmgsZW50cnk6cX19cmV0dXJue2lkOmwsbGlzdDpuLGluZGV4Oi0xLGVudHJ5OnZvaWQgMH19LGU9ZnVuY3Rpb24oaCxrKXt2YXIgbD1oWzFdO3JldHVybiBmYyhmdW5jdGlvbigpe2lmKGwpe2Zvcig7bC5oZWFkIT0KaFsxXTspbD1sLmJiO2Zvcig7bC5uZXh0IT1sLmhlYWQ7KXJldHVybiBsPWwubmV4dCx7ZG9uZTohMSx2YWx1ZTprKGwpfTtsPW51bGx9cmV0dXJue2RvbmU6ITAsdmFsdWU6dm9pZCAwfX0pfSxmPWZ1bmN0aW9uKCl7dmFyIGg9e307cmV0dXJuIGguYmI9aC5uZXh0PWguaGVhZD1ofSxnPTA7cmV0dXJuIGN9KTsKeigiU2V0IixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHx0eXBlb2YgYSE9ImZ1bmN0aW9uInx8IWEucHJvdG90eXBlLmVudHJpZXN8fHR5cGVvZiBPYmplY3Quc2VhbCE9ImZ1bmN0aW9uIilyZXR1cm4hMTt0cnl7dmFyIGM9T2JqZWN0LnNlYWwoe3g6NH0pLGQ9bmV3IGEoXy5DKFtjXSkpO2lmKCFkLmhhcyhjKXx8ZC5zaXplIT0xfHxkLmFkZChjKSE9ZHx8ZC5zaXplIT0xfHxkLmFkZCh7eDo0fSkhPWR8fGQuc2l6ZSE9MilyZXR1cm4hMTt2YXIgZT1kLmVudHJpZXMoKSxmPWUubmV4dCgpO2lmKGYuZG9uZXx8Zi52YWx1ZVswXSE9Y3x8Zi52YWx1ZVsxXSE9YylyZXR1cm4hMTtmPWUubmV4dCgpO3JldHVybiBmLmRvbmV8fGYudmFsdWVbMF09PWN8fGYudmFsdWVbMF0ueCE9NHx8Zi52YWx1ZVsxXSE9Zi52YWx1ZVswXT8hMTplLm5leHQoKS5kb25lfWNhdGNoKGcpe3JldHVybiExfX0oKSlyZXR1cm4gYTt2YXIgYj1mdW5jdGlvbihjKXt0aGlzLmc9bmV3IE1hcDtpZihjKXtjPQpfLkMoYyk7Zm9yKHZhciBkOyEoZD1jLm5leHQoKSkuZG9uZTspdGhpcy5hZGQoZC52YWx1ZSl9dGhpcy5zaXplPXRoaXMuZy5zaXplfTtiLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYyl7Yz1jPT09MD8wOmM7dGhpcy5nLnNldChjLGMpO3RoaXMuc2l6ZT10aGlzLmcuc2l6ZTtyZXR1cm4gdGhpc307Yi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGMpe2M9dGhpcy5nLmRlbGV0ZShjKTt0aGlzLnNpemU9dGhpcy5nLnNpemU7cmV0dXJuIGN9O2IucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5nLmNsZWFyKCk7dGhpcy5zaXplPTB9O2IucHJvdG90eXBlLmhhcz1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5nLmhhcyhjKX07Yi5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcuZW50cmllcygpfTtiLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLnZhbHVlcygpfTtiLnByb3RvdHlwZS5rZXlzPWIucHJvdG90eXBlLnZhbHVlczsKYi5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1iLnByb3RvdHlwZS52YWx1ZXM7Yi5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihjLGQpe3ZhciBlPXRoaXM7dGhpcy5nLmZvckVhY2goZnVuY3Rpb24oZil7cmV0dXJuIGMuY2FsbChkLGYsZixlKX0pfTtyZXR1cm4gYn0pO3ZhciBpYz1mdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiBTdHJpbmcmJihhKz0iIik7dmFyIGM9MCxkPSExLGU9e25leHQ6ZnVuY3Rpb24oKXtpZighZCYmYzxhLmxlbmd0aCl7dmFyIGY9YysrO3JldHVybnt2YWx1ZTpiKGYsYVtmXSksZG9uZTohMX19ZD0hMDtyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9fX07ZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBlfTt6KCJBcnJheS5wcm90b3R5cGUuZW50cmllcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybiBpYyh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuW2IsY119KX19KTsKeigiQXJyYXkucHJvdG90eXBlLmtleXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm4gaWModGhpcyxmdW5jdGlvbihiKXtyZXR1cm4gYn0pfX0pO3ooIlN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGgiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD1oYyh0aGlzLGIsImVuZHNXaXRoIik7Yz09PXZvaWQgMCYmKGM9ZC5sZW5ndGgpO2M9TWF0aC5tYXgoMCxNYXRoLm1pbihjfDAsZC5sZW5ndGgpKTtmb3IodmFyIGU9Yi5sZW5ndGg7ZT4wJiZjPjA7KWlmKGRbLS1jXSE9YlstLWVdKXJldHVybiExO3JldHVybiBlPD0wfX0pO3ooIk51bWJlci5pc0Zpbml0ZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm4gdHlwZW9mIGIhPT0ibnVtYmVyIj8hMTohaXNOYU4oYikmJmIhPT1JbmZpbml0eSYmYiE9PS1JbmZpbml0eX19KTsKeigiQXJyYXkucHJvdG90eXBlLmZpbmQiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXthOnt2YXIgZD10aGlzO2QgaW5zdGFuY2VvZiBTdHJpbmcmJihkPVN0cmluZyhkKSk7Zm9yKHZhciBlPWQubGVuZ3RoLGY9MDtmPGU7ZisrKXt2YXIgZz1kW2ZdO2lmKGIuY2FsbChjLGcsZixkKSl7Yj1nO2JyZWFrIGF9fWI9dm9pZCAwfXJldHVybiBifX0pO3ooIk9iamVjdC5lbnRyaWVzIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3ZhciBjPVtdLGQ7Zm9yKGQgaW4gYilhYyhiLGQpJiZjLnB1c2goW2QsYltkXV0pO3JldHVybiBjfX0pOwp6KCJBcnJheS5mcm9tIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyxkKXtjPWMhPW51bGw/YzpmdW5jdGlvbihoKXtyZXR1cm4gaH07dmFyIGU9W10sZj10eXBlb2YgU3ltYm9sIT0idW5kZWZpbmVkIiYmU3ltYm9sLml0ZXJhdG9yJiZiW1N5bWJvbC5pdGVyYXRvcl07aWYodHlwZW9mIGY9PSJmdW5jdGlvbiIpe2I9Zi5jYWxsKGIpO2Zvcih2YXIgZz0wOyEoZj1iLm5leHQoKSkuZG9uZTspZS5wdXNoKGMuY2FsbChkLGYudmFsdWUsZysrKSl9ZWxzZSBmb3IoZj1iLmxlbmd0aCxnPTA7ZzxmO2crKyllLnB1c2goYy5jYWxsKGQsYltnXSxnKSk7cmV0dXJuIGV9fSk7eigiQXJyYXkucHJvdG90eXBlLnZhbHVlcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybiBpYyh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGN9KX19KTsKeigiT2JqZWN0LnZhbHVlcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXt2YXIgYz1bXSxkO2ZvcihkIGluIGIpYWMoYixkKSYmYy5wdXNoKGJbZF0pO3JldHVybiBjfX0pO3ooIk9iamVjdC5pcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybiBiPT09Yz9iIT09MHx8MS9iPT09MS9jOmIhPT1iJiZjIT09Y319KTt6KCJBcnJheS5wcm90b3R5cGUuaW5jbHVkZXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzO2QgaW5zdGFuY2VvZiBTdHJpbmcmJihkPVN0cmluZyhkKSk7dmFyIGU9ZC5sZW5ndGg7Yz1jfHwwO2ZvcihjPDAmJihjPU1hdGgubWF4KGMrZSwwKSk7YzxlO2MrKyl7dmFyIGY9ZFtjXTtpZihmPT09Ynx8T2JqZWN0LmlzKGYsYikpcmV0dXJuITB9cmV0dXJuITF9fSk7CnooIlN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4gaGModGhpcyxiLCJpbmNsdWRlcyIpLmluZGV4T2YoYixjfHwwKSE9PS0xfX0pO3ooIk51bWJlci5NQVhfU0FGRV9JTlRFR0VSIixmdW5jdGlvbigpe3JldHVybiA5MDA3MTk5MjU0NzQwOTkxfSk7eigiTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIiLGZ1bmN0aW9uKCl7cmV0dXJuLTkwMDcxOTkyNTQ3NDA5OTF9KTt6KCJOdW1iZXIuaXNJbnRlZ2VyIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUoYik/Yj09PU1hdGguZmxvb3IoYik6ITF9fSk7eigiTnVtYmVyLmlzU2FmZUludGVnZXIiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoYikmJk1hdGguYWJzKGIpPD1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUn19KTsKeigiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybltdfX0pO3ooIk1hdGgudHJ1bmMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7Yj1OdW1iZXIoYik7aWYoaXNOYU4oYil8fGI9PT1JbmZpbml0eXx8Yj09PS1JbmZpbml0eXx8Yj09PTApcmV0dXJuIGI7dmFyIGM9TWF0aC5mbG9vcihNYXRoLmFicyhiKSk7cmV0dXJuIGI8MD8tYzpjfX0pO3ooIk51bWJlci5pc05hTiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm4gdHlwZW9mIGI9PT0ibnVtYmVyIiYmaXNOYU4oYil9fSk7CnooIlN0cmluZy5wcm90b3R5cGUucmVwbGFjZUFsbCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe2lmKGIgaW5zdGFuY2VvZiBSZWdFeHAmJiFiLmdsb2JhbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJxIik7cmV0dXJuIGIgaW5zdGFuY2VvZiBSZWdFeHA/dGhpcy5yZXBsYWNlKGIsYyk6dGhpcy5yZXBsYWNlKG5ldyBSZWdFeHAoU3RyaW5nKGIpLnJlcGxhY2UoLyhbLSgpXFtcXXt9Kz8qLiRcXnwsOiM8IVxcXSkvZywiXFwkMSIpLnJlcGxhY2UoL1x4MDgvZywiXFx4MDgiKSwiZyIpLGMpfX0pOwp6KCJBcnJheS5wcm90b3R5cGUuZmxhdCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtiPWI9PT12b2lkIDA/MTpiO3ZhciBjPVtdO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodGhpcyxmdW5jdGlvbihkKXtBcnJheS5pc0FycmF5KGQpJiZiPjA/KGQ9QXJyYXkucHJvdG90eXBlLmZsYXQuY2FsbChkLGItMSksYy5wdXNoLmFwcGx5KGMsZCkpOmMucHVzaChkKX0pO3JldHVybiBjfX0pO3ooIlByb21pc2UucHJvdG90eXBlLmZpbmFsbHkiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbihjKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGIoKSkudGhlbihmdW5jdGlvbigpe3JldHVybiBjfSl9LGZ1bmN0aW9uKGMpe3JldHVybiBQcm9taXNlLnJlc29sdmUoYigpKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgYzt9KX0pfX0pOwp6KCJBcnJheS5wcm90b3R5cGUuZmlsbCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMsZCl7dmFyIGU9dGhpcy5sZW5ndGh8fDA7YzwwJiYoYz1NYXRoLm1heCgwLGUrYykpO2lmKGQ9PW51bGx8fGQ+ZSlkPWU7ZD1OdW1iZXIoZCk7ZDwwJiYoZD1NYXRoLm1heCgwLGUrZCkpO2ZvcihjPU51bWJlcihjfHwwKTtjPGQ7YysrKXRoaXNbY109YjtyZXR1cm4gdGhpc319KTtTYigiZmlsbCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpBcnJheS5wcm90b3R5cGUuZmlsbH0pO18uX0R1bXBFeGNlcHRpb249d2luZG93Ll9EdW1wRXhjZXB0aW9ufHxmdW5jdGlvbihhKXt0aHJvdyBhO307d2luZG93Ll9EdW1wRXhjZXB0aW9uPV8uX0R1bXBFeGNlcHRpb247dmFyIGpjLGxjLG1jLG5jLHphLEFhLHBjLHFjO2pjPWpjfHx7fTtfLnY9dGhpc3x8c2VsZjtsYz1mdW5jdGlvbihhLGIpe3ZhciBjPV8ua2MoIldJWl9nbG9iYWxfZGF0YS5veE4zbmIiKTthPWMmJmNbYV07cmV0dXJuIGEhPW51bGw/YTpifTttYz1fLnYuX0ZfdG9nZ2xlc19kZWZhdWx0X3RyfHxbXTtuYz1mdW5jdGlvbigpe307bmMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O18ua2M9ZnVuY3Rpb24oYSxiKXthPWEuc3BsaXQoIi4iKTtiPWJ8fF8udjtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihiPWJbYVtjXV0sYj09bnVsbClyZXR1cm4gbnVsbDtyZXR1cm4gYn07Xy5vYz1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4gYiE9Im9iamVjdCI/YjphP0FycmF5LmlzQXJyYXkoYSk/ImFycmF5IjpiOiJudWxsIn07Xy5xYT1mdW5jdGlvbihhKXt2YXIgYj1fLm9jKGEpO3JldHVybiBiPT0iYXJyYXkifHxiPT0ib2JqZWN0IiYmdHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIn07Cl8ueWE9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE7cmV0dXJuIGI9PSJvYmplY3QiJiZhIT1udWxsfHxiPT0iZnVuY3Rpb24ifTt6YT0iY2xvc3VyZV91aWRfIisoTWF0aC5yYW5kb20oKSoxRTk+Pj4wKTtBYT0wO3BjPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5jYWxsLmFwcGx5KGEuYmluZCxhcmd1bWVudHMpfTtxYz1mdW5jdGlvbihhLGIsYyl7aWYoIWEpdGhyb3cgRXJyb3IoKTtpZihhcmd1bWVudHMubGVuZ3RoPjIpe3ZhciBkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGUsZCk7cmV0dXJuIGEuYXBwbHkoYixlKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYixhcmd1bWVudHMpfX07Cl8ueT1mdW5jdGlvbihhLGIsYyl7Xy55PUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kJiZGdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIikhPS0xP3BjOnFjO3JldHVybiBfLnkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtfLnJjPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Zm9yKHZhciBjPV8udixkO2EubGVuZ3RoJiYoZD1hLnNoaWZ0KCkpOylhLmxlbmd0aHx8Yj09PXZvaWQgMD9jW2RdJiZjW2RdIT09T2JqZWN0LnByb3RvdHlwZVtkXT9jPWNbZF06Yz1jW2RdPXt9OmNbZF09Yn07Cl8uRz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5lYT1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuTWs9ZnVuY3Rpb24oZCxlLGYpe2Zvcih2YXIgZz1BcnJheShhcmd1bWVudHMubGVuZ3RoLTIpLGg9MjtoPGFyZ3VtZW50cy5sZW5ndGg7aCsrKWdbaC0yXT1hcmd1bWVudHNbaF07cmV0dXJuIGIucHJvdG90eXBlW2VdLmFwcGx5KGQsZyl9fTtfLkcoYWEsRXJyb3IpO2FhLnByb3RvdHlwZS5uYW1lPSJDdXN0b21FcnJvciI7dmFyIHNjO18uRyhjYSxhYSk7Y2EucHJvdG90eXBlLm5hbWU9IkFzc2VydGlvbkVycm9yIjt2YXIgZWE7dmFyIHRjPWZ1bmN0aW9uKGEsYil7dGhpcy5oPWE7dGhpcy5nPWJ8fG51bGx9O3RjLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmh9O3ZhciB1Yz1uZXcgdGMoIm43M3F3ZiIsIm43M3F3ZiIpO3ZhciBuYT1TeW1ib2woInMiKTtfLnUucHJvdG90eXBlLnFhPSExO18udS5wcm90b3R5cGUucWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xYX07Xy51LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5xYXx8KHRoaXMucWE9ITAsdGhpcy5NKCkpfTtfLnUucHJvdG90eXBlW1N5bWJvbC5kaXNwb3NlXT1mdW5jdGlvbigpe3RoaXMuZGlzcG9zZSgpfTtfLnUucHJvdG90eXBlLk09ZnVuY3Rpb24oKXtpZih0aGlzLlcpZm9yKDt0aGlzLlcubGVuZ3RoOyl0aGlzLlcuc2hpZnQoKSgpfTt2YXIgc2Esd2M7c2E9QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsdm9pZCAwKX06ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYT09PSJzdHJpbmciKXJldHVybiB0eXBlb2YgYiE9PSJzdHJpbmcifHxiLmxlbmd0aCE9MT8tMTphLmluZGV4T2YoYiwwKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihjIGluIGEmJmFbY109PT1iKXJldHVybiBjO3JldHVybi0xfTtfLnZjPUFycmF5LnByb3RvdHlwZS5mb3JFYWNoP2Z1bmN0aW9uKGEsYil7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLGIsdm9pZCAwKX06ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YS5sZW5ndGgsZD10eXBlb2YgYT09PSJzdHJpbmciP2Euc3BsaXQoIiIpOmEsZT0wO2U8YztlKyspZSBpbiBkJiZiLmNhbGwodm9pZCAwLGRbZV0sZSxhKX07CndjPUFycmF5LnByb3RvdHlwZS5yZWR1Y2U/ZnVuY3Rpb24oYSxiLGMpe0FycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jOygwLF8udmMpKGEsZnVuY3Rpb24oZSxmKXtkPWIuY2FsbCh2b2lkIDAsZCxlLGYsYSl9KX07Xy54Yz1BcnJheS5wcm90b3R5cGUuc29tZT9mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYix2b2lkIDApfTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPXR5cGVvZiBhPT09InN0cmluZyI/YS5zcGxpdCgiIik6YSxlPTA7ZTxjO2UrKylpZihlIGluIGQmJmIuY2FsbCh2b2lkIDAsZFtlXSxlLGEpKXJldHVybiEwO3JldHVybiExfTtfLnljPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PWI/ITA6YSYmYj9hLndpZHRoPT1iLndpZHRoJiZhLmhlaWdodD09Yi5oZWlnaHQ6ITF9O18uQ2EucHJvdG90eXBlLmFzcGVjdFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGgvdGhpcy5oZWlnaHR9O18uQ2EucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLkNhLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMud2lkdGg9TWF0aC5mbG9vcih0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmZsb29yKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Xy5DYS5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGgucm91bmQodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O3ZhciBFYTtFYT0iY29uc3RydWN0b3IgaGFzT3duUHJvcGVydHkgaXNQcm90b3R5cGVPZiBwcm9wZXJ0eUlzRW51bWVyYWJsZSB0b0xvY2FsZVN0cmluZyB0b1N0cmluZyB2YWx1ZU9mIi5zcGxpdCgiICIpO18uemM9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCBpbiBhKWIuY2FsbChjLGFbZF0sZCxhKX07Xy5BYz1TdHJpbmcucHJvdG90eXBlLnRyaW0/ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHJpbSgpfTpmdW5jdGlvbihhKXtyZXR1cm4vXltcc1x4YTBdKihbXHNcU10qPylbXHNceGEwXSokLy5leGVjKGEpWzFdfTt2YXIgQmM9Z2xvYmFsVGhpcy50cnVzdGVkVHlwZXMsSGE9QmMsSmE7Xy5MYT1mdW5jdGlvbihhKXt0aGlzLmc9YX07Xy5MYS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nKyIifTtfLkNjPUdhKGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBVUkw9PT0iZnVuY3Rpb24ifSk7Xy5EYz1mdW5jdGlvbihhKXt0aGlzLmc9YX07Xy5EYy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nKyIifTtfLkVjPUdhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLkRjKEJjP0JjLmVtcHR5SFRNTDoiIil9KTtfLlBhPWZ1bmN0aW9uKGEpe3RoaXMuZz1hfTtfLlBhLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcrIiJ9O18uR2I9ZnVuY3Rpb24oYSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoYSkpfTtfLkRiPWZ1bmN0aW9uKGEpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYS5yZXBsYWNlKC9cKy9nLCIgIikpfTt2YXIgRmM9ISEobWNbMF0+PjI1JjEpLEdjPSEhKG1jWzBdPj4yMCYxKSxIYz0hIShtY1swXT4+MjcmMSksSWM9ISEobWNbMF0mODE5MiksSmM9ISEobWNbMF0+PjE5JjEpLEtjPSEhKG1jWzBdPj4xNyYxKSxMYz0hIShtY1swXT4+MTgmMSk7dmFyIHRiLE5jLE9jO18uVWE9RmM/SGM6bGMoNjEwNDAxMzAxLCExKTtfLk1jPUZjP0djfHwhSWM6bGMoNzQ4NDAyMTQ3LCEwKTt0Yj1GYz9KYzpsYyg5MTk0NDQ4MjQsITEpO05jPUZjP0tjOmxjKDkyODg3NTM5OCwhMSk7T2M9RmM/TGM6bGMoNjgzNzQ5MjAxLCExKTt2YXIgUGM7UGM9Xy52Lm5hdmlnYXRvcjtfLlZhPVBjP1BjLnVzZXJBZ2VudERhdGF8fG51bGw6bnVsbDtfLlFjPWZ1bmN0aW9uKGEpe18uUWNbIiAiXShhKTtyZXR1cm4gYX07Xy5RY1siICJdPWZ1bmN0aW9uKCl7fTt2YXIgZWQ7Xy5SYz1fLlhhKCk7Xy5TYz1fLldhKCk/ITE6Xy53KCJUcmlkZW50Iil8fF8udygiTVNJRSIpO18uVGM9Xy53KCJFZGdlIik7Xy5VYz1fLncoIkdlY2tvIikmJiEoXy5UYSgpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigid2Via2l0IikhPS0xJiYhXy53KCJFZGdlIikpJiYhKF8udygiVHJpZGVudCIpfHxfLncoIk1TSUUiKSkmJiFfLncoIkVkZ2UiKTtfLlZjPV8uVGEoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIndlYmtpdCIpIT0tMSYmIV8udygiRWRnZSIpO18uV2M9Xy5WYyYmXy53KCJNb2JpbGUiKTtfLlljPV8uYWIoKTtfLlpjPVlhKCk/Xy5WYS5wbGF0Zm9ybT09PSJXaW5kb3dzIjpfLncoIldpbmRvd3MiKTtfLiRjPVlhKCk/Xy5WYS5wbGF0Zm9ybT09PSJBbmRyb2lkIjpfLncoIkFuZHJvaWQiKTtfLmFkPV8uWmEoKTtfLmJkPV8udygiaVBhZCIpO18uY2Q9Xy53KCJpUG9kIik7Xy5kZD1fLiRhKCk7CmE6e3ZhciBmZD0iIixnZD1mdW5jdGlvbigpe3ZhciBhPV8uVGEoKTtpZihfLlVjKXJldHVybi9ydjooW15cKTtdKykoXCl8OykvLmV4ZWMoYSk7aWYoXy5UYylyZXR1cm4vRWRnZVwvKFtcZFwuXSspLy5leGVjKGEpO2lmKF8uU2MpcmV0dXJuL1xiKD86TVNJRXxydilbOiBdKFteXCk7XSspKFwpfDspLy5leGVjKGEpO2lmKF8uVmMpcmV0dXJuL1dlYktpdFwvKFxTKykvLmV4ZWMoYSk7aWYoXy5SYylyZXR1cm4vKD86VmVyc2lvbilbIFwvXT8oXFMrKS8uZXhlYyhhKX0oKTtnZCYmKGZkPWdkP2dkWzFdOiIiKTtpZihfLlNjKXt2YXIgaGQsaWQ9Xy52LmRvY3VtZW50O2hkPWlkP2lkLmRvY3VtZW50TW9kZTp2b2lkIDA7aWYoaGQhPW51bGwmJmhkPnBhcnNlRmxvYXQoZmQpKXtlZD1TdHJpbmcoaGQpO2JyZWFrIGF9fWVkPWZkfV8uamQ9ZWQ7dmFyIGtkPSJBUlRJQ0xFIFNFQ1RJT04gTkFWIEFTSURFIEgxIEgyIEgzIEg0IEg1IEg2IEhFQURFUiBGT09URVIgQUREUkVTUyBQIEhSIFBSRSBCTE9DS1FVT1RFIE9MIFVMIExIIExJIERMIERUIEREIEZJR1VSRSBGSUdDQVBUSU9OIE1BSU4gRElWIEVNIFNUUk9ORyBTTUFMTCBTIENJVEUgUSBERk4gQUJCUiBSVUJZIFJCIFJUIFJUQyBSUCBEQVRBIFRJTUUgQ09ERSBWQVIgU0FNUCBLQkQgU1VCIFNVUCBJIEIgVSBNQVJLIEJESSBCRE8gU1BBTiBCUiBXQlIgTk9CUiBJTlMgREVMIFBJQ1RVUkUgUEFSQU0gVFJBQ0sgTUFQIFRBQkxFIENBUFRJT04gQ09MR1JPVVAgQ09MIFRCT0RZIFRIRUFEIFRGT09UIFRSIFREIFRIIFNFTEVDVCBEQVRBTElTVCBPUFRHUk9VUCBPUFRJT04gT1VUUFVUIFBST0dSRVNTIE1FVEVSIEZJRUxEU0VUIExFR0VORCBERVRBSUxTIFNVTU1BUlkgTUVOVSBESUFMT0cgU0xPVCBDQU5WQVMgRk9OVCBDRU5URVIgQUNST05ZTSBCQVNFRk9OVCBCSUcgRElSIEhHUk9VUCBTVFJJS0UgVFQiLnNwbGl0KCIgIiksCmxkPVtbIkEiLG5ldyBNYXAoW1siaHJlZiIse3VhOjd9XV0pXSxbIkFSRUEiLG5ldyBNYXAoW1siaHJlZiIse3VhOjd9XV0pXSxbIkxJTksiLG5ldyBNYXAoW1siaHJlZiIse3VhOjUsY29uZGl0aW9uczpuZXcgTWFwKFtbInJlbCIsbmV3IFNldCgiYWx0ZXJuYXRlIGF1dGhvciBib29rbWFyayBjYW5vbmljYWwgY2l0ZSBoZWxwIGljb24gbGljZW5zZSBuZXh0IHByZWZldGNoIGRucy1wcmVmZXRjaCBwcmVyZW5kZXIgcHJlY29ubmVjdCBwcmVsb2FkIHByZXYgc2VhcmNoIHN1YnJlc291cmNlIi5zcGxpdCgiICIpKV1dKX1dXSldLFsiU09VUkNFIixuZXcgTWFwKFtbInNyYyIse3VhOjV9XSxbInNyY3NldCIse3VhOjZ9XV0pXSxbIklNRyIsbmV3IE1hcChbWyJzcmMiLHt1YTo1fV0sWyJzcmNzZXQiLHt1YTo2fV1dKV0sWyJWSURFTyIsbmV3IE1hcChbWyJzcmMiLHt1YTo1fV1dKV0sWyJBVURJTyIsbmV3IE1hcChbWyJzcmMiLHt1YTo1fV1dKV1dLG1kPSJ0aXRsZSBhcmlhLWF0b21pYyBhcmlhLWF1dG9jb21wbGV0ZSBhcmlhLWJ1c3kgYXJpYS1jaGVja2VkIGFyaWEtY3VycmVudCBhcmlhLWRpc2FibGVkIGFyaWEtZHJvcGVmZmVjdCBhcmlhLWV4cGFuZGVkIGFyaWEtaGFzcG9wdXAgYXJpYS1oaWRkZW4gYXJpYS1pbnZhbGlkIGFyaWEtbGFiZWwgYXJpYS1sZXZlbCBhcmlhLWxpdmUgYXJpYS1tdWx0aWxpbmUgYXJpYS1tdWx0aXNlbGVjdGFibGUgYXJpYS1vcmllbnRhdGlvbiBhcmlhLXBvc2luc2V0IGFyaWEtcHJlc3NlZCBhcmlhLXJlYWRvbmx5IGFyaWEtcmVsZXZhbnQgYXJpYS1yZXF1aXJlZCBhcmlhLXNlbGVjdGVkIGFyaWEtc2V0c2l6ZSBhcmlhLXNvcnQgYXJpYS12YWx1ZW1heCBhcmlhLXZhbHVlbWluIGFyaWEtdmFsdWVub3cgYXJpYS12YWx1ZXRleHQgYWx0IGFsaWduIGF1dG9jYXBpdGFsaXplIGF1dG9jb21wbGV0ZSBhdXRvY29ycmVjdCBhdXRvZm9jdXMgYXV0b3BsYXkgYmdjb2xvciBib3JkZXIgY2VsbHBhZGRpbmcgY2VsbHNwYWNpbmcgY2hlY2tlZCBjaXRlIGNvbG9yIGNvbHMgY29sc3BhbiBjb250cm9scyBjb250cm9sc2xpc3QgY29vcmRzIGNyb3Nzb3JpZ2luIGRhdGV0aW1lIGRpc2FibGVkIGRvd25sb2FkIGRyYWdnYWJsZSBlbmN0eXBlIGZhY2UgZm9ybWVuY3R5cGUgZnJhbWVib3JkZXIgaGVpZ2h0IGhyZWZsYW5nIGhpZGRlbiBpbmVydCBpc21hcCBsYWJlbCBsYW5nIGxvb3AgbWF4IG1heGxlbmd0aCBtZWRpYSBtaW5sZW5ndGggbWluIG11bHRpcGxlIG11dGVkIG5vbmNlIG9wZW4gcGxheXNpbmxpbmUgcGxhY2Vob2xkZXIgcHJlbG9hZCByZWwgcmVxdWlyZWQgcmV2ZXJzZWQgcm9sZSByb3dzIHJvd3NwYW4gc2VsZWN0ZWQgc2hhcGUgc2l6ZSBzaXplcyBzbG90IHNwYW4gc3BlbGxjaGVjayBzdGFydCBzdGVwIHN1bW1hcnkgdHJhbnNsYXRlIHR5cGUgdXNlbWFwIHZhbGlnbiB2YWx1ZSB3aWR0aCB3cmFwIGl0ZW1zY29wZSBpdGVtdHlwZSBpdGVtaWQgaXRlbXByb3AgaXRlbXJlZiIuc3BsaXQoIiAiKSwKbmQ9W1siZGlyIix7dWE6Myxjb25kaXRpb25zOkdhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNYXAoW1siZGlyIixuZXcgU2V0KFsiYXV0byIsImx0ciIsInJ0bCJdKV1dKX0pfV0sWyJhc3luYyIse3VhOjMsY29uZGl0aW9uczpHYShmdW5jdGlvbigpe3JldHVybiBuZXcgTWFwKFtbImFzeW5jIixuZXcgU2V0KFsiYXN5bmMiXSldXSl9KX1dLFsibG9hZGluZyIse3VhOjMsY29uZGl0aW9uczpHYShmdW5jdGlvbigpe3JldHVybiBuZXcgTWFwKFtbImxvYWRpbmciLG5ldyBTZXQoWyJlYWdlciIsImxhenkiXSldXSl9KX1dLFsicG9zdGVyIix7dWE6NX1dLFsidGFyZ2V0Iix7dWE6Myxjb25kaXRpb25zOkdhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNYXAoW1sidGFyZ2V0IixuZXcgU2V0KFsiX3NlbGYiLCJfYmxhbmsiXSldXSl9KX1dXSxvZD1uZXcgZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW5ldyBTZXQoWyJkYXRhLSIsImFyaWEtIl0pLGU9bmV3IE1hcChsZCk7dGhpcy5qPWE7dGhpcy5nPQplO3RoaXMubD1iO3RoaXMubz1jO3RoaXMuaD1kfShuZXcgU2V0KEdhKGZ1bmN0aW9uKCl7cmV0dXJuIGtkLmNvbmNhdCgiU1RZTEUgVElUTEUgSU5QVVQgVEVYVEFSRUEgQlVUVE9OIExBQkVMIi5zcGxpdCgiICIpKX0pKSxuZXcgU2V0KEdhKGZ1bmN0aW9uKCl7cmV0dXJuIG1kLmNvbmNhdChbImNsYXNzIiwiaWQiLCJ0YWJpbmRleCIsImNvbnRlbnRlZGl0YWJsZSIsIm5hbWUiXSl9KSksbmV3IE1hcChHYShmdW5jdGlvbigpe3JldHVybiBuZC5jb25jYXQoW1sic3R5bGUiLHt1YToxfV1dKX0pKSk7dmFyIHBkPWZ1bmN0aW9uKCl7dGhpcy5nPW9kfTtwZC5wcm90b3R5cGUuY3JlYXRlVGV4dE5vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGEpfTtfLnFkPUdhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBwZH0pO3ZhciB2ZCx1ZCx4ZDtfLmxiPWZ1bmN0aW9uKGEpe3JldHVybiBhP25ldyBfLnJkKF8uc2QoYSkpOnNjfHwoc2M9bmV3IF8ucmQpfTtfLnRkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiPT09InN0cmluZyI/YS5nZXRFbGVtZW50QnlJZChiKTpifTt2ZD1mdW5jdGlvbihhLGIpe18uemMoYixmdW5jdGlvbihjLGQpe2Q9PSJzdHlsZSI/YS5zdHlsZS5jc3NUZXh0PWM6ZD09ImNsYXNzIj9hLmNsYXNzTmFtZT1jOmQ9PSJmb3IiP2EuaHRtbEZvcj1jOnVkLmhhc093blByb3BlcnR5KGQpP2Euc2V0QXR0cmlidXRlKHVkW2RdLGMpOmQubGFzdEluZGV4T2YoImFyaWEtIiwwKT09MHx8ZC5sYXN0SW5kZXhPZigiZGF0YS0iLDApPT0wP2Euc2V0QXR0cmlidXRlKGQsYyk6YVtkXT1jfSl9Owp1ZD17Y2VsbHBhZGRpbmc6ImNlbGxQYWRkaW5nIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNvbHNwYW46ImNvbFNwYW4iLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsaGVpZ2h0OiJoZWlnaHQiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixub25jZToibm9uY2UiLHJvbGU6InJvbGUiLHJvd3NwYW46InJvd1NwYW4iLHR5cGU6InR5cGUiLHVzZW1hcDoidXNlTWFwIix2YWxpZ246InZBbGlnbiIsd2lkdGg6IndpZHRoIn07Xy5pYj1mdW5jdGlvbihhKXthPWEuZG9jdW1lbnQ7YT1hLmNvbXBhdE1vZGU9PSJDU1MxQ29tcGF0Ij9hLmRvY3VtZW50RWxlbWVudDphLmJvZHk7cmV0dXJuIG5ldyBfLkNhKGEuY2xpZW50V2lkdGgsYS5jbGllbnRIZWlnaHQpfTtfLm1iPWZ1bmN0aW9uKGEpe3JldHVybiBhP2EuZGVmYXVsdFZpZXc6d2luZG93fTsKXy55ZD1mdW5jdGlvbihhLGIpe3ZhciBjPWJbMV0sZD1fLndkKGEsU3RyaW5nKGJbMF0pKTtjJiYodHlwZW9mIGM9PT0ic3RyaW5nIj9kLmNsYXNzTmFtZT1jOkFycmF5LmlzQXJyYXkoYyk/ZC5jbGFzc05hbWU9Yy5qb2luKCIgIik6dmQoZCxjKSk7Yi5sZW5ndGg+MiYmeGQoYSxkLGIsMik7cmV0dXJuIGR9Owp4ZD1mdW5jdGlvbihhLGIsYyxkKXtmdW5jdGlvbiBlKGgpe2gmJmIuYXBwZW5kQ2hpbGQodHlwZW9mIGg9PT0ic3RyaW5nIj9hLmNyZWF0ZVRleHROb2RlKGgpOmgpfWZvcig7ZDxjLmxlbmd0aDtkKyspe3ZhciBmPWNbZF07aWYoIV8ucWEoZil8fF8ueWEoZikmJmYubm9kZVR5cGU+MCllKGYpO2Vsc2V7YTp7aWYoZiYmdHlwZW9mIGYubGVuZ3RoPT0ibnVtYmVyIil7aWYoXy55YShmKSl7dmFyIGc9dHlwZW9mIGYuaXRlbT09ImZ1bmN0aW9uInx8dHlwZW9mIGYuaXRlbT09InN0cmluZyI7YnJlYWsgYX1pZih0eXBlb2YgZj09PSJmdW5jdGlvbiIpe2c9dHlwZW9mIGYuaXRlbT09ImZ1bmN0aW9uIjticmVhayBhfX1nPSExfV8udmMoZz9fLndhKGYpOmYsZSl9fX07Xy53ZD1mdW5jdGlvbihhLGIpe2I9U3RyaW5nKGIpO2EuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24veGh0bWwreG1sIiYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gYS5jcmVhdGVFbGVtZW50KGIpfTsKXy56ZD1mdW5jdGlvbihhKXtmb3IodmFyIGI7Yj1hLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYil9O18uQWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEucGFyZW50Tm9kZT9hLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk6bnVsbH07Xy5CZD1mdW5jdGlvbihhLGIpe2lmKCFhfHwhYilyZXR1cm4hMTtpZihhLmNvbnRhaW5zJiZiLm5vZGVUeXBlPT0xKXJldHVybiBhPT1ifHxhLmNvbnRhaW5zKGIpO2lmKHR5cGVvZiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIT0idW5kZWZpbmVkIilyZXR1cm4gYT09Ynx8ISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNik7Zm9yKDtiJiZhIT1iOyliPWIucGFyZW50Tm9kZTtyZXR1cm4gYj09YX07Xy5zZD1mdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlwZT09OT9hOmEub3duZXJEb2N1bWVudHx8YS5kb2N1bWVudH07Cl8uQ2Q9ZnVuY3Rpb24oYSxiKXtpZigidGV4dENvbnRlbnQiaW4gYSlhLnRleHRDb250ZW50PWI7ZWxzZSBpZihhLm5vZGVUeXBlPT0zKWEuZGF0YT1TdHJpbmcoYik7ZWxzZSBpZihhLmZpcnN0Q2hpbGQmJmEuZmlyc3RDaGlsZC5ub2RlVHlwZT09Myl7Zm9yKDthLmxhc3RDaGlsZCE9YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEubGFzdENoaWxkKTthLmZpcnN0Q2hpbGQuZGF0YT1TdHJpbmcoYil9ZWxzZSBfLnpkKGEpLGEuYXBwZW5kQ2hpbGQoXy5zZChhKS5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoYikpKX07Xy5yZD1mdW5jdGlvbihhKXt0aGlzLmc9YXx8Xy52LmRvY3VtZW50fHxkb2N1bWVudH07Xy5tPV8ucmQucHJvdG90eXBlO18ubS5IPWZ1bmN0aW9uKGEpe3JldHVybiBfLnRkKHRoaXMuZyxhKX07Xy5tLmRqPV8ucmQucHJvdG90eXBlLkg7Xy5tLmdldEVsZW1lbnRzQnlUYWdOYW1lPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGJ8fHRoaXMuZykuZ2V0RWxlbWVudHNCeVRhZ05hbWUoU3RyaW5nKGEpKX07Cl8ubS5TPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy55ZCh0aGlzLmcsYXJndW1lbnRzKX07Xy5tLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ud2QodGhpcy5nLGEpfTtfLm0uY3JlYXRlVGV4dE5vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZy5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoYSkpfTtfLm0uYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24oYSxiKXthLmFwcGVuZENoaWxkKGIpfTtfLm0uYXBwZW5kPWZ1bmN0aW9uKGEsYil7eGQoXy5zZChhKSxhLGFyZ3VtZW50cywxKX07Xy5tLmNhbkhhdmVDaGlsZHJlbj1mdW5jdGlvbihhKXtpZihhLm5vZGVUeXBlIT0xKXJldHVybiExO3N3aXRjaChhLnRhZ05hbWUpe2Nhc2UgIkFQUExFVCI6Y2FzZSAiQVJFQSI6Y2FzZSAiQkFTRSI6Y2FzZSAiQlIiOmNhc2UgIkNPTCI6Y2FzZSAiQ09NTUFORCI6Y2FzZSAiRU1CRUQiOmNhc2UgIkZSQU1FIjpjYXNlICJIUiI6Y2FzZSAiSU1HIjpjYXNlICJJTlBVVCI6Y2FzZSAiSUZSQU1FIjpjYXNlICJJU0lOREVYIjpjYXNlICJLRVlHRU4iOmNhc2UgIkxJTksiOmNhc2UgIk5PRlJBTUVTIjpjYXNlICJOT1NDUklQVCI6Y2FzZSAiTUVUQSI6Y2FzZSAiT0JKRUNUIjpjYXNlICJQQVJBTSI6Y2FzZSAiU0NSSVBUIjpjYXNlICJTT1VSQ0UiOmNhc2UgIlNUWUxFIjpjYXNlICJUUkFDSyI6Y2FzZSAiV0JSIjpyZXR1cm4hMX1yZXR1cm4hMH07Cl8ubS5pZT1fLnpkO18ubS5yZW1vdmVOb2RlPV8uQWQ7Xy5tLmNvbnRhaW5zPV8uQmQ7Xy5tLlNiPV8uQ2Q7YmIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWR9O3ZhciBjYj1mdW5jdGlvbihhLGIpe3RoaXMudHlwZT1hIGluc3RhbmNlb2YgYmI/U3RyaW5nKGEpOmE7dGhpcy5jdXJyZW50VGFyZ2V0PXRoaXMudGFyZ2V0PWI7dGhpcy5kZWZhdWx0UHJldmVudGVkPXRoaXMuaD0hMX07Y2IucHJvdG90eXBlLnN0b3BQcm9wYWdhdGlvbj1mdW5jdGlvbigpe3RoaXMuaD0hMH07Y2IucHJvdG90eXBlLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfTt2YXIgRGQ9ZnVuY3Rpb24oKXtpZighXy52LmFkZEV2ZW50TGlzdGVuZXJ8fCFPYmplY3QuZGVmaW5lUHJvcGVydHkpcmV0dXJuITE7dmFyIGE9ITEsYj1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXthPSEwfX0pO3RyeXt2YXIgYz1mdW5jdGlvbigpe307Xy52LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLGMsYik7Xy52LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLGMsYil9Y2F0Y2goZCl7fXJldHVybiBhfSgpO18uRyhfLmRiLGNiKTsKXy5kYi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMudHlwZT1hLnR5cGUsZD1hLmNoYW5nZWRUb3VjaGVzJiZhLmNoYW5nZWRUb3VjaGVzLmxlbmd0aD9hLmNoYW5nZWRUb3VjaGVzWzBdOm51bGw7dGhpcy50YXJnZXQ9YS50YXJnZXR8fGEuc3JjRWxlbWVudDt0aGlzLmN1cnJlbnRUYXJnZXQ9YjtiPWEucmVsYXRlZFRhcmdldDtifHwoYz09Im1vdXNlb3ZlciI/Yj1hLmZyb21FbGVtZW50OmM9PSJtb3VzZW91dCImJihiPWEudG9FbGVtZW50KSk7dGhpcy5yZWxhdGVkVGFyZ2V0PWI7ZD8odGhpcy5jbGllbnRYPWQuY2xpZW50WCE9PXZvaWQgMD9kLmNsaWVudFg6ZC5wYWdlWCx0aGlzLmNsaWVudFk9ZC5jbGllbnRZIT09dm9pZCAwP2QuY2xpZW50WTpkLnBhZ2VZLHRoaXMuc2NyZWVuWD1kLnNjcmVlblh8fDAsdGhpcy5zY3JlZW5ZPWQuc2NyZWVuWXx8MCk6KHRoaXMub2Zmc2V0WD1fLlZjfHxhLm9mZnNldFghPT12b2lkIDA/YS5vZmZzZXRYOmEubGF5ZXJYLAp0aGlzLm9mZnNldFk9Xy5WY3x8YS5vZmZzZXRZIT09dm9pZCAwP2Eub2Zmc2V0WTphLmxheWVyWSx0aGlzLmNsaWVudFg9YS5jbGllbnRYIT09dm9pZCAwP2EuY2xpZW50WDphLnBhZ2VYLHRoaXMuY2xpZW50WT1hLmNsaWVudFkhPT12b2lkIDA/YS5jbGllbnRZOmEucGFnZVksdGhpcy5zY3JlZW5YPWEuc2NyZWVuWHx8MCx0aGlzLnNjcmVlblk9YS5zY3JlZW5ZfHwwKTt0aGlzLmJ1dHRvbj1hLmJ1dHRvbjt0aGlzLmtleUNvZGU9YS5rZXlDb2RlfHwwO3RoaXMua2V5PWEua2V5fHwiIjt0aGlzLmNoYXJDb2RlPWEuY2hhckNvZGV8fChjPT0ia2V5cHJlc3MiP2Eua2V5Q29kZTowKTt0aGlzLmN0cmxLZXk9YS5jdHJsS2V5O3RoaXMuYWx0S2V5PWEuYWx0S2V5O3RoaXMuc2hpZnRLZXk9YS5zaGlmdEtleTt0aGlzLm1ldGFLZXk9YS5tZXRhS2V5O3RoaXMucG9pbnRlcklkPWEucG9pbnRlcklkfHwwO3RoaXMucG9pbnRlclR5cGU9YS5wb2ludGVyVHlwZTt0aGlzLnN0YXRlPWEuc3RhdGU7CnRoaXMudGltZVN0YW1wPWEudGltZVN0YW1wO3RoaXMuZz1hO2EuZGVmYXVsdFByZXZlbnRlZCYmXy5kYi5lYS5wcmV2ZW50RGVmYXVsdC5jYWxsKHRoaXMpfTtfLmRiLnByb3RvdHlwZS5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXtfLmRiLmVhLnN0b3BQcm9wYWdhdGlvbi5jYWxsKHRoaXMpO3RoaXMuZy5zdG9wUHJvcGFnYXRpb24/dGhpcy5nLnN0b3BQcm9wYWdhdGlvbigpOnRoaXMuZy5jYW5jZWxCdWJibGU9ITB9O18uZGIucHJvdG90eXBlLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7Xy5kYi5lYS5wcmV2ZW50RGVmYXVsdC5jYWxsKHRoaXMpO3ZhciBhPXRoaXMuZzthLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExfTt2YXIgRWQ9ImNsb3N1cmVfbGlzdGVuYWJsZV8iKyhNYXRoLnJhbmRvbSgpKjFFNnwwKSxGZD1mdW5jdGlvbihhKXtyZXR1cm4hKCFhfHwhYVtFZF0pfTt2YXIgZWI9MDt2YXIgR2Q9ZnVuY3Rpb24oYSl7YS5vYz0hMDthLmxpc3RlbmVyPW51bGw7YS5wcm94eT1udWxsO2Euc3JjPW51bGw7YS5WYz1udWxsfTtnYi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YS50b1N0cmluZygpO2E9dGhpcy5nW2ZdO2F8fChhPXRoaXMuZ1tmXT1bXSx0aGlzLmgrKyk7dmFyIGc9SGQoYSxiLGQsZSk7Zz4tMT8oYj1hW2ddLGN8fChiLkhjPSExKSk6KGI9bmV3IGZiKGIsdGhpcy5zcmMsZiwhIWQsZSksYi5IYz1jLGEucHVzaChiKSk7cmV0dXJuIGJ9O2diLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLnRvU3RyaW5nKCk7aWYoIShhIGluIHRoaXMuZykpcmV0dXJuITE7dmFyIGU9dGhpcy5nW2FdO2I9SGQoZSxiLGMsZCk7cmV0dXJuIGI+LTE/KEdkKGVbYl0pLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChlLGIsMSksZS5sZW5ndGg9PTAmJihkZWxldGUgdGhpcy5nW2FdLHRoaXMuaC0tKSwhMCk6ITF9Owp2YXIgSWQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnR5cGU7YyBpbiBhLmcmJl8udmEoYS5nW2NdLGIpJiYoR2QoYiksYS5nW2NdLmxlbmd0aD09MCYmKGRlbGV0ZSBhLmdbY10sYS5oLS0pKX07Z2IucHJvdG90eXBlLmpjPWZ1bmN0aW9uKGEsYixjLGQpe2E9dGhpcy5nW2EudG9TdHJpbmcoKV07dmFyIGU9LTE7YSYmKGU9SGQoYSxiLGMsZCkpO3JldHVybiBlPi0xP2FbZV06bnVsbH07Z2IucHJvdG90eXBlLmhhc0xpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dmFyIGM9YSE9PXZvaWQgMCxkPWM/YS50b1N0cmluZygpOiIiLGU9YiE9PXZvaWQgMDtyZXR1cm4gRGEodGhpcy5nLGZ1bmN0aW9uKGYpe2Zvcih2YXIgZz0wO2c8Zi5sZW5ndGg7KytnKWlmKCEoYyYmZltnXS50eXBlIT1kfHxlJiZmW2ddLmNhcHR1cmUhPWIpKXJldHVybiEwO3JldHVybiExfSl9Owp2YXIgSGQ9ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDsrK2Upe3ZhciBmPWFbZV07aWYoIWYub2MmJmYubGlzdGVuZXI9PWImJmYuY2FwdHVyZT09ISFjJiZmLlZjPT1kKXJldHVybiBlfXJldHVybi0xfTt2YXIgSmQsS2QsTWQsUGQsUmQsU2QsVGQsUWQsV2QsT2Q7SmQ9ImNsb3N1cmVfbG1fIisoTWF0aC5yYW5kb20oKSoxRTZ8MCk7S2Q9e307TWQ9MDtfLng9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihkJiZkLm9uY2UpcmV0dXJuIF8uTmQoYSxiLGMsZCxlKTtpZihBcnJheS5pc0FycmF5KGIpKXtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKylfLngoYSxiW2ZdLGMsZCxlKTtyZXR1cm4gbnVsbH1jPU9kKGMpO3JldHVybiBGZChhKT9hLk4oYixjLF8ueWEoZCk/ISFkLmNhcHR1cmU6ISFkLGUpOlBkKGEsYixjLCExLGQsZSl9OwpQZD1mdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoIWIpdGhyb3cgRXJyb3IoInYiKTt2YXIgZz1fLnlhKGUpPyEhZS5jYXB0dXJlOiEhZSxoPVFkKGEpO2h8fChhW0pkXT1oPW5ldyBnYihhKSk7Yz1oLmFkZChiLGMsZCxnLGYpO2lmKGMucHJveHkpcmV0dXJuIGM7ZD1SZCgpO2MucHJveHk9ZDtkLnNyYz1hO2QubGlzdGVuZXI9YztpZihhLmFkZEV2ZW50TGlzdGVuZXIpRGR8fChlPWcpLGU9PT12b2lkIDAmJihlPSExKSxhLmFkZEV2ZW50TGlzdGVuZXIoYi50b1N0cmluZygpLGQsZSk7ZWxzZSBpZihhLmF0dGFjaEV2ZW50KWEuYXR0YWNoRXZlbnQoU2QoYi50b1N0cmluZygpKSxkKTtlbHNlIGlmKGEuYWRkTGlzdGVuZXImJmEucmVtb3ZlTGlzdGVuZXIpYS5hZGRMaXN0ZW5lcihkKTtlbHNlIHRocm93IEVycm9yKCJ3Iik7TWQrKztyZXR1cm4gY307UmQ9ZnVuY3Rpb24oKXt2YXIgYT1UZCxiPWZ1bmN0aW9uKGMpe3JldHVybiBhLmNhbGwoYi5zcmMsYi5saXN0ZW5lcixjKX07cmV0dXJuIGJ9OwpfLk5kPWZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspXy5OZChhLGJbZl0sYyxkLGUpO3JldHVybiBudWxsfWM9T2QoYyk7cmV0dXJuIEZkKGEpP2EuYWUoYixjLF8ueWEoZCk/ISFkLmNhcHR1cmU6ISFkLGUpOlBkKGEsYixjLCEwLGQsZSl9O18uVWQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihBcnJheS5pc0FycmF5KGIpKWZvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKV8uVWQoYSxiW2ZdLGMsZCxlKTtlbHNlIGQ9Xy55YShkKT8hIWQuY2FwdHVyZTohIWQsYz1PZChjKSxGZChhKT9hLnljKGIsYyxkLGUpOmEmJihhPVFkKGEpKSYmKGI9YS5qYyhiLGMsZCxlKSkmJl8uVmQoYil9OwpfLlZkPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT09Im51bWJlciImJmEmJiFhLm9jKXt2YXIgYj1hLnNyYztpZihGZChiKSlJZChiLlFhLGEpO2Vsc2V7dmFyIGM9YS50eXBlLGQ9YS5wcm94eTtiLnJlbW92ZUV2ZW50TGlzdGVuZXI/Yi5yZW1vdmVFdmVudExpc3RlbmVyKGMsZCxhLmNhcHR1cmUpOmIuZGV0YWNoRXZlbnQ/Yi5kZXRhY2hFdmVudChTZChjKSxkKTpiLmFkZExpc3RlbmVyJiZiLnJlbW92ZUxpc3RlbmVyJiZiLnJlbW92ZUxpc3RlbmVyKGQpO01kLS07KGM9UWQoYikpPyhJZChjLGEpLGMuaD09MCYmKGMuc3JjPW51bGwsYltKZF09bnVsbCkpOkdkKGEpfX19O1NkPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluIEtkP0tkW2FdOktkW2FdPSJvbiIrYX07VGQ9ZnVuY3Rpb24oYSxiKXtpZihhLm9jKWE9ITA7ZWxzZXtiPW5ldyBfLmRiKGIsdGhpcyk7dmFyIGM9YS5saXN0ZW5lcixkPWEuVmN8fGEuc3JjO2EuSGMmJl8uVmQoYSk7YT1jLmNhbGwoZCxiKX1yZXR1cm4gYX07ClFkPWZ1bmN0aW9uKGEpe2E9YVtKZF07cmV0dXJuIGEgaW5zdGFuY2VvZiBnYj9hOm51bGx9O1dkPSJfX2Nsb3N1cmVfZXZlbnRzX2ZuXyIrKE1hdGgucmFuZG9tKCkqMUU5Pj4+MCk7T2Q9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PT0iZnVuY3Rpb24iKXJldHVybiBhO2FbV2RdfHwoYVtXZF09ZnVuY3Rpb24oYil7cmV0dXJuIGEuaGFuZGxlRXZlbnQoYil9KTtyZXR1cm4gYVtXZF19O18uRyhfLmhiLF8udSk7Xy5oYi5wcm90b3R5cGVbRWRdPSEwO18ubT1fLmhiLnByb3RvdHlwZTtfLm0ubmQ9ZnVuY3Rpb24oYSl7dGhpcy5mZD1hfTtfLm0uYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhLGIsYyxkKXtfLngodGhpcyxhLGIsYyxkKX07Xy5tLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5VZCh0aGlzLGEsYixjLGQpfTsKXy5tLmRpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz10aGlzLmZkO2lmKGMpZm9yKGI9W107YztjPWMuZmQpYi5wdXNoKGMpO2M9dGhpcy5XZzt2YXIgZD1hLnR5cGV8fGE7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilhPW5ldyBjYihhLGMpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGNiKWEudGFyZ2V0PWEudGFyZ2V0fHxjO2Vsc2V7dmFyIGU9YTthPW5ldyBjYihkLGMpO0ZhKGEsZSl9ZT0hMDt2YXIgZjtpZihiKWZvcihmPWIubGVuZ3RoLTE7IWEuaCYmZj49MDtmLS0pe3ZhciBnPWEuY3VycmVudFRhcmdldD1iW2ZdO2U9WGQoZyxkLCEwLGEpJiZlfWEuaHx8KGc9YS5jdXJyZW50VGFyZ2V0PWMsZT1YZChnLGQsITAsYSkmJmUsYS5ofHwoZT1YZChnLGQsITEsYSkmJmUpKTtpZihiKWZvcihmPTA7IWEuaCYmZjxiLmxlbmd0aDtmKyspZz1hLmN1cnJlbnRUYXJnZXQ9YltmXSxlPVhkKGcsZCwhMSxhKSYmZTtyZXR1cm4gZX07Cl8ubS5NPWZ1bmN0aW9uKCl7Xy5oYi5lYS5NLmNhbGwodGhpcyk7aWYodGhpcy5RYSl7dmFyIGE9dGhpcy5RYSxiPTAsYztmb3IoYyBpbiBhLmcpe2Zvcih2YXIgZD1hLmdbY10sZT0wO2U8ZC5sZW5ndGg7ZSsrKSsrYixHZChkW2VdKTtkZWxldGUgYS5nW2NdO2EuaC0tfX10aGlzLmZkPW51bGx9O18ubS5OPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLlFhLmFkZChTdHJpbmcoYSksYiwhMSxjLGQpfTtfLm0uYWU9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuUWEuYWRkKFN0cmluZyhhKSxiLCEwLGMsZCl9O18ubS55Yz1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5RYS5yZW1vdmUoU3RyaW5nKGEpLGIsYyxkKX07CnZhciBYZD1mdW5jdGlvbihhLGIsYyxkKXtiPWEuUWEuZ1tTdHJpbmcoYildO2lmKCFiKXJldHVybiEwO2I9Yi5jb25jYXQoKTtmb3IodmFyIGU9ITAsZj0wO2Y8Yi5sZW5ndGg7KytmKXt2YXIgZz1iW2ZdO2lmKGcmJiFnLm9jJiZnLmNhcHR1cmU9PWMpe3ZhciBoPWcubGlzdGVuZXIsaz1nLlZjfHxnLnNyYztnLkhjJiZJZChhLlFhLGcpO2U9aC5jYWxsKGssZCkhPT0hMSYmZX19cmV0dXJuIGUmJiFkLmRlZmF1bHRQcmV2ZW50ZWR9O18uaGIucHJvdG90eXBlLmpjPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLlFhLmpjKFN0cmluZyhhKSxiLGMsZCl9O18uaGIucHJvdG90eXBlLmhhc0xpc3RlbmVyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuUWEuaGFzTGlzdGVuZXIoYSE9PXZvaWQgMD9TdHJpbmcoYSk6dm9pZCAwLGIpfTtfLkcoamIsXy5oYik7amIucHJvdG90eXBlLk09ZnVuY3Rpb24oKXtqYi5lYS5NLmNhbGwodGhpcyk7dGhpcy5oJiYoXy5WZCh0aGlzLmgpLHRoaXMuaD1udWxsKTt0aGlzLmo9dGhpcy5nPW51bGx9O2piLnByb3RvdHlwZS5sPWZ1bmN0aW9uKCl7dmFyIGE9Xy5pYih0aGlzLmd8fHdpbmRvdyk7Xy55YyhhLHRoaXMuail8fCh0aGlzLmo9YSx0aGlzLmRpc3BhdGNoRXZlbnQoInJlc2l6ZSIpKX07Xy5HKGtiLF8uaGIpO2tiLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5nJiYodHlwZW9mIHRoaXMuZy5hZGRFdmVudExpc3RlbmVyPT09ImZ1bmN0aW9uIj8odGhpcy5nLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy5qKSx0aGlzLmw9ZnVuY3Rpb24oKXthLmcucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixhLmopfSk6KHRoaXMuZy5hZGRMaXN0ZW5lcih0aGlzLmopLHRoaXMubD1mdW5jdGlvbigpe2EuZy5yZW1vdmVMaXN0ZW5lcihhLmopfSkpfTtrYi5wcm90b3R5cGUuQT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaC5kZXZpY2VQaXhlbFJhdGlvPj0xLjU/MjoxO3RoaXMubyE9YSYmKHRoaXMubz1hLHRoaXMuZGlzcGF0Y2hFdmVudCgiYSIpKX07a2IucHJvdG90eXBlLk09ZnVuY3Rpb24oKXt0aGlzLmwmJnRoaXMubCgpO2tiLmVhLk0uY2FsbCh0aGlzKX07Xy5HKG5iLF8udSk7bmIucHJvdG90eXBlLk09ZnVuY3Rpb24oKXt0aGlzLmg9dGhpcy5sPW51bGw7dGhpcy5nJiYodGhpcy5nLmRpc3Bvc2UoKSx0aGlzLmc9bnVsbCk7Xy5wYSh0aGlzLmopO3RoaXMuaj1udWxsfTtfLm9hKHVjLG5iKTt2YXIgb2I9bmV3IFVpbnQ4QXJyYXkoMTIzKSxZZD0hMTt2YXIgWmQ9W107bmM9bmN8fHt9O3ZhciAkZD1mdW5jdGlvbigpe18udS5jYWxsKHRoaXMpfTtfLkcoJGQsXy51KTskZC5wcm90b3R5cGUuaW5pdGlhbGl6ZT1mdW5jdGlvbigpe307c2IucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oYSl7dGhpcy5nJiYodGhpcy5nLmNhbGwodGhpcy5ofHxudWxsLGEpLHRoaXMuZz10aGlzLmg9bnVsbCl9O3NiLnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbigpe3RoaXMuaD10aGlzLmc9bnVsbH07bmMuR2U9c2I7Xy5HKHViLF8udSk7dWIucHJvdG90eXBlLkM9JGQ7dWIucHJvdG90eXBlLmc9bnVsbDt1Yi5wcm90b3R5cGUuUmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5BfTt2YXIgYWU9ZnVuY3Rpb24oYSxiLGMpe2Euanx8KGEuaj1bXSk7YS5qLnB1c2gobmV3IG5jLkdlKGIsYykpfSxiZT1mdW5jdGlvbihhLGIpe2EuaHx8KGEuaD1bXSk7YS5oLnB1c2gobmV3IG5jLkdlKGIsdm9pZCAwKSl9O3ViLnByb3RvdHlwZS5tZD1mdW5jdGlvbigpe3RoaXMuZz1uZXcgJGR9O3ViLnByb3RvdHlwZS5vbkxvYWQ9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHRoaXMuQztiLmluaXRpYWxpemUoYSgpKTt0aGlzLmc9YjtpZih0aGlzLm8mJihiPWNlKHRoaXMubyxhKCkpKSlyZXR1cm4gYjtpZih0aGlzLmomJihhPWNlKHRoaXMuaixhKCkpKSlyZXR1cm4gYTt0aGlzLmgmJih0aGlzLmgubGVuZ3RoPTApO3JldHVybiBudWxsfTsKdWIucHJvdG90eXBlLmZlPWZ1bmN0aW9uKGEpe3RoaXMuaCYmKGE9Y2UodGhpcy5oLGEpKSYmXy5yYihFcnJvcigieWAiK2EpKTt0aGlzLm8mJih0aGlzLm8ubGVuZ3RoPTApO3RoaXMuaiYmKHRoaXMuai5sZW5ndGg9MCl9O3ZhciBjZT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDxhLmxlbmd0aDtkKyspdHJ5e2FbZF0uZXhlY3V0ZShiKX1jYXRjaChlKXtfLnJiKGUpLGMucHVzaChlKX1hLmxlbmd0aD0wO3JldHVybiBjLmxlbmd0aD9jOm51bGx9O3ViLnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7dWIuZWEuTS5jYWxsKHRoaXMpO18ucGEodGhpcy5nKX07bmMuRmU9dWI7dmFyIGRlPXtFUlJPUjoiZXJyb3IiLElETEU6ImlkbGUiLGxnOiJhY3RpdmUiLElnOiJ1c2VySWRsZSIsSGc6InVzZXJBY3RpdmUifTtfLm09dmIucHJvdG90eXBlO18ubS5YZj1mdW5jdGlvbigpe307Xy5tLnFlPWZ1bmN0aW9uKCl7fTtfLm0uamU9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiQSIpO307Xy5tLmtmPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucWF9O18ubS5zZT1mdW5jdGlvbihhKXt0aGlzLnFhPWF9O18ubS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiExfTtfLm0uRGY9ZnVuY3Rpb24oKXtyZXR1cm4hMX07dmFyIGVlPXR5cGVvZiBBc3luY0NvbnRleHQhPT0idW5kZWZpbmVkIiYmdHlwZW9mIEFzeW5jQ29udGV4dC5TbmFwc2hvdD09PSJmdW5jdGlvbiI/ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJkFzeW5jQ29udGV4dC5TbmFwc2hvdC53cmFwKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gYX07dmFyIGZlPWZ1bmN0aW9uKGEsYil7dGhpcy5sPWE7dGhpcy5qPWI7dGhpcy5oPTA7dGhpcy5nPW51bGx9O2ZlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmg+MCl7dGhpcy5oLS07dmFyIGE9dGhpcy5nO3RoaXMuZz1hLm5leHQ7YS5uZXh0PW51bGx9ZWxzZSBhPXRoaXMubCgpO3JldHVybiBhfTt2YXIgeGI9ZnVuY3Rpb24oYSxiKXthLmooYik7YS5oPDEwMCYmKGEuaCsrLGIubmV4dD1hLmcsYS5nPWIpfTt2YXIgZ2U9ZnVuY3Rpb24oKXt0aGlzLmg9dGhpcy5nPW51bGx9O2dlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz15Yi5nZXQoKTtjLnNldChhLGIpO3RoaXMuaD90aGlzLmgubmV4dD1jOnRoaXMuZz1jO3RoaXMuaD1jfTtnZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbDt0aGlzLmcmJihhPXRoaXMuZyx0aGlzLmc9dGhpcy5nLm5leHQsdGhpcy5nfHwodGhpcy5oPW51bGwpLGEubmV4dD1udWxsKTtyZXR1cm4gYX07dmFyIHliPW5ldyBmZShmdW5jdGlvbigpe3JldHVybiBuZXcgaGV9LGZ1bmN0aW9uKGEpe3JldHVybiBhLnJlc2V0KCl9KSxoZT1mdW5jdGlvbigpe3RoaXMubmV4dD10aGlzLnNjb3BlPXRoaXMuZz1udWxsfTtoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5nPWE7dGhpcy5zY29wZT1iO3RoaXMubmV4dD1udWxsfTsKaGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5uZXh0PXRoaXMuc2NvcGU9dGhpcy5nPW51bGx9O3ZhciBpZSx6Yj0hMSx3Yj1uZXcgZ2Usa2U9ZnVuY3Rpb24oYSxiKXtpZXx8amUoKTt6Ynx8KGllKCksemI9ITApO3diLmFkZChhLGIpfSxqZT1mdW5jdGlvbigpe3ZhciBhPVByb21pc2UucmVzb2x2ZSh2b2lkIDApO2llPWZ1bmN0aW9uKCl7YS50aGVuKEFiKX19O18ubGU9ZnVuY3Rpb24oKXt9O3ZhciBtZT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4hMTt0cnl7cmV0dXJuISFhLiRnb29nX1RoZW5hYmxlfWNhdGNoKGIpe3JldHVybiExfX07dmFyIHBlLEFlLHllLHdlO18ub2U9ZnVuY3Rpb24oYSl7dGhpcy5nPTA7dGhpcy5CPXZvaWQgMDt0aGlzLmw9dGhpcy5oPXRoaXMuaj1udWxsO3RoaXMubz10aGlzLkE9ITE7aWYoYSE9Xy5sZSl0cnl7dmFyIGI9dGhpczthLmNhbGwodm9pZCAwLGZ1bmN0aW9uKGMpe18ubmUoYiwyLGMpfSxmdW5jdGlvbihjKXtfLm5lKGIsMyxjKX0pfWNhdGNoKGMpe18ubmUodGhpcywzLGMpfX07cGU9ZnVuY3Rpb24oKXt0aGlzLm5leHQ9dGhpcy5qPXRoaXMuaD10aGlzLmw9dGhpcy5nPW51bGw7dGhpcy5vPSExfTtwZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmo9dGhpcy5oPXRoaXMubD10aGlzLmc9bnVsbDt0aGlzLm89ITF9O3ZhciBxZT1uZXcgZmUoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHBlfSxmdW5jdGlvbihhKXthLnJlc2V0KCl9KSxyZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9cWUuZ2V0KCk7ZC5sPWE7ZC5oPWI7ZC5qPWM7cmV0dXJuIGR9OwpfLm9lLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gc2UodGhpcyxlZSh0eXBlb2YgYT09PSJmdW5jdGlvbiI/YTpudWxsKSxlZSh0eXBlb2YgYj09PSJmdW5jdGlvbiI/YjpudWxsKSxjKX07Xy5vZS5wcm90b3R5cGUuJGdvb2dfVGhlbmFibGU9ITA7Xy5vZS5wcm90b3R5cGUuQz1mdW5jdGlvbihhLGIpe3JldHVybiBzZSh0aGlzLG51bGwsZWUoYSksYil9O18ub2UucHJvdG90eXBlLmNhdGNoPV8ub2UucHJvdG90eXBlLkM7Xy5vZS5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKGEpe2lmKHRoaXMuZz09MCl7dmFyIGI9bmV3IHVlKGEpO2tlKGZ1bmN0aW9uKCl7dmUodGhpcyxiKX0sdGhpcyl9fTsKdmFyIHZlPWZ1bmN0aW9uKGEsYil7aWYoYS5nPT0wKWlmKGEuail7dmFyIGM9YS5qO2lmKGMuaCl7Zm9yKHZhciBkPTAsZT1udWxsLGY9bnVsbCxnPWMuaDtnJiYoZy5vfHwoZCsrLGcuZz09YSYmKGU9ZyksIShlJiZkPjEpKSk7Zz1nLm5leHQpZXx8KGY9Zyk7ZSYmKGMuZz09MCYmZD09MT92ZShjLGIpOihmPyhkPWYsZC5uZXh0PT1jLmwmJihjLmw9ZCksZC5uZXh0PWQubmV4dC5uZXh0KTp3ZShjKSx4ZShjLGUsMyxiKSkpfWEuaj1udWxsfWVsc2UgXy5uZShhLDMsYil9LHplPWZ1bmN0aW9uKGEsYil7YS5ofHxhLmchPTImJmEuZyE9M3x8eWUoYSk7YS5sP2EubC5uZXh0PWI6YS5oPWI7YS5sPWJ9LHNlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXJlKG51bGwsbnVsbCxudWxsKTtlLmc9bmV3IF8ub2UoZnVuY3Rpb24oZixnKXtlLmw9Yj9mdW5jdGlvbihoKXt0cnl7dmFyIGs9Yi5jYWxsKGQsaCk7ZihrKX1jYXRjaChsKXtnKGwpfX06ZjtlLmg9Yz9mdW5jdGlvbihoKXt0cnl7dmFyIGs9CmMuY2FsbChkLGgpO2s9PT12b2lkIDAmJmggaW5zdGFuY2VvZiB1ZT9nKGgpOmYoayl9Y2F0Y2gobCl7ZyhsKX19Omd9KTtlLmcuaj1hO3plKGEsZSk7cmV0dXJuIGUuZ307Xy5vZS5wcm90b3R5cGUuRj1mdW5jdGlvbihhKXt0aGlzLmc9MDtfLm5lKHRoaXMsMixhKX07Xy5vZS5wcm90b3R5cGUuRz1mdW5jdGlvbihhKXt0aGlzLmc9MDtfLm5lKHRoaXMsMyxhKX07Cl8ubmU9ZnVuY3Rpb24oYSxiLGMpe2lmKGEuZz09MCl7YT09PWMmJihiPTMsYz1uZXcgVHlwZUVycm9yKCJCIikpO2EuZz0xO2E6e3ZhciBkPWMsZT1hLkYsZj1hLkc7aWYoZCBpbnN0YW5jZW9mIF8ub2Upe3plKGQscmUoZXx8Xy5sZSxmfHxudWxsLGEpKTt2YXIgZz0hMH1lbHNlIGlmKG1lKGQpKWQudGhlbihlLGYsYSksZz0hMDtlbHNle2lmKF8ueWEoZCkpdHJ5e3ZhciBoPWQudGhlbjtpZih0eXBlb2YgaD09PSJmdW5jdGlvbiIpe0FlKGQsaCxlLGYsYSk7Zz0hMDticmVhayBhfX1jYXRjaChrKXtmLmNhbGwoYSxrKTtnPSEwO2JyZWFrIGF9Zz0hMX19Z3x8KGEuQj1jLGEuZz1iLGEuaj1udWxsLHllKGEpLGIhPTN8fGMgaW5zdGFuY2VvZiB1ZXx8QmUoYSxjKSl9fTtBZT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSExLGc9ZnVuY3Rpb24oayl7Znx8KGY9ITAsYy5jYWxsKGUsaykpfSxoPWZ1bmN0aW9uKGspe2Z8fChmPSEwLGQuY2FsbChlLGspKX07dHJ5e2IuY2FsbChhLGcsaCl9Y2F0Y2goayl7aChrKX19Owp5ZT1mdW5jdGlvbihhKXthLkF8fChhLkE9ITAsa2UoYS5ELGEpKX07d2U9ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbDthLmgmJihiPWEuaCxhLmg9Yi5uZXh0LGIubmV4dD1udWxsKTthLmh8fChhLmw9bnVsbCk7cmV0dXJuIGJ9O18ub2UucHJvdG90eXBlLkQ9ZnVuY3Rpb24oKXtmb3IodmFyIGE7YT13ZSh0aGlzKTspeGUodGhpcyxhLHRoaXMuZyx0aGlzLkIpO3RoaXMuQT0hMX07CnZhciB4ZT1mdW5jdGlvbihhLGIsYyxkKXtpZihjPT0zJiZiLmgmJiFiLm8pZm9yKDthJiZhLm87YT1hLmopYS5vPSExO2lmKGIuZyliLmcuaj1udWxsLENlKGIsYyxkKTtlbHNlIHRyeXtiLm8/Yi5sLmNhbGwoYi5qKTpDZShiLGMsZCl9Y2F0Y2goZSl7RmUuY2FsbChudWxsLGUpfXhiKHFlLGIpfSxDZT1mdW5jdGlvbihhLGIsYyl7Yj09Mj9hLmwuY2FsbChhLmosYyk6YS5oJiZhLmguY2FsbChhLmosYyl9LEJlPWZ1bmN0aW9uKGEsYil7YS5vPSEwO2tlKGZ1bmN0aW9uKCl7YS5vJiZGZS5jYWxsKG51bGwsYil9KX0sRmU9Xy5yYix1ZT1mdW5jdGlvbihhKXthYS5jYWxsKHRoaXMsYSl9O18uRyh1ZSxhYSk7dWUucHJvdG90eXBlLm5hbWU9ImNhbmNlbCI7QmIucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihhKXtpZih0aGlzLmgpdGhpcy5sIGluc3RhbmNlb2YgQmImJnRoaXMubC5jYW5jZWwoKTtlbHNle2lmKHRoaXMuail7dmFyIGI9dGhpcy5qO2RlbGV0ZSB0aGlzLmo7YT9iLmNhbmNlbChhKTooYi5BLS0sYi5BPD0wJiZiLmNhbmNlbCgpKX10aGlzLkc9ITA7dGhpcy5ofHx0aGlzLkYobmV3IEdlKHRoaXMpKX19O0JiLnByb3RvdHlwZS5JPWZ1bmN0aW9uKGEsYil7dGhpcy5EPSExO0hlKHRoaXMsYSxiKX07dmFyIEhlPWZ1bmN0aW9uKGEsYixjKXthLmg9ITA7YS5sPWM7YS5vPSFiO0llKGEpfSxLZT1mdW5jdGlvbihhKXtpZihhLmgpe2lmKCFhLkcpdGhyb3cgbmV3IEplKGEpO2EuRz0hMX19O0JiLnByb3RvdHlwZS5nPWZ1bmN0aW9uKGEpe0tlKHRoaXMpO0hlKHRoaXMsITAsYSl9O0JiLnByb3RvdHlwZS5GPWZ1bmN0aW9uKGEpe0tlKHRoaXMpO0hlKHRoaXMsITEsYSl9Owp2YXIgTWU9ZnVuY3Rpb24oYSxiLGMpe0xlKGEsYixudWxsLGMpfSxOZT1mdW5jdGlvbihhLGIsYyl7TGUoYSxudWxsLGIsYyl9LExlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuaDtlfHwoYj09PWM/Yj1jPWVlKGIpOihiPWVlKGIpLGM9ZWUoYykpKTthLkIucHVzaChbYixjLGRdKTtlJiZJZShhKX07QmIucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1uZXcgXy5vZShmdW5jdGlvbihnLGgpe2U9ZztkPWh9KTtMZSh0aGlzLGUsZnVuY3Rpb24oZyl7ZyBpbnN0YW5jZW9mIEdlP2YuY2FuY2VsKCk6ZChnKTtyZXR1cm4gT2V9LHRoaXMpO3JldHVybiBmLnRoZW4oYSxiLGMpfTtCYi5wcm90b3R5cGUuJGdvb2dfVGhlbmFibGU9ITA7dmFyIFBlPWZ1bmN0aW9uKGEsYil7YiBpbnN0YW5jZW9mIEJiP01lKGEsKDAsXy55KShiLkssYikpOk1lKGEsZnVuY3Rpb24oKXtyZXR1cm4gYn0pfTsKQmIucHJvdG90eXBlLks9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEJiO0xlKHRoaXMsYi5nLGIuRixiKTthJiYoYi5qPXRoaXMsdGhpcy5BKyspO3JldHVybiBifTsKdmFyIFFlPWZ1bmN0aW9uKGEpe3JldHVybiBfLnhjKGEuQixmdW5jdGlvbihiKXtyZXR1cm4gdHlwZW9mIGJbMV09PT0iZnVuY3Rpb24ifSl9LE9lPXt9LEllPWZ1bmN0aW9uKGEpe2lmKGEuQyYmYS5oJiZRZShhKSl7dmFyIGI9YS5DLGM9UmVbYl07YyYmKF8udi5jbGVhclRpbWVvdXQoYy5nKSxkZWxldGUgUmVbYl0pO2EuQz0wfWEuaiYmKGEuai5BLS0sZGVsZXRlIGEuaik7Yj1hLmw7Zm9yKHZhciBkPWM9ITE7YS5CLmxlbmd0aCYmIWEuRDspe3ZhciBlPWEuQi5zaGlmdCgpLGY9ZVswXSxnPWVbMV07ZT1lWzJdO2lmKGY9YS5vP2c6Zil0cnl7dmFyIGg9Zi5jYWxsKGV8fG51bGwsYik7aD09PU9lJiYoaD12b2lkIDApO2ghPT12b2lkIDAmJihhLm89YS5vJiYoaD09Ynx8aCBpbnN0YW5jZW9mIEVycm9yKSxhLmw9Yj1oKTtpZihtZShiKXx8dHlwZW9mIF8udi5Qcm9taXNlPT09ImZ1bmN0aW9uIiYmYiBpbnN0YW5jZW9mIF8udi5Qcm9taXNlKWQ9ITAsYS5EPSEwfWNhdGNoKGspe2I9CmssYS5vPSEwLFFlKGEpfHwoYz0hMCl9fWEubD1iO2QmJihoPSgwLF8ueSkoYS5JLGEsITApLGQ9KDAsXy55KShhLkksYSwhMSksYiBpbnN0YW5jZW9mIEJiPyhMZShiLGgsZCksYi5XPSEwKTpiLnRoZW4oaCxkKSk7YyYmKGI9bmV3IFNlKGIpLFJlW2IuZ109YixhLkM9Yi5nKX0sSmU9ZnVuY3Rpb24oKXthYS5jYWxsKHRoaXMpfTtfLkcoSmUsYWEpO0plLnByb3RvdHlwZS5tZXNzYWdlPSJEZWZlcnJlZCBoYXMgYWxyZWFkeSBmaXJlZCI7SmUucHJvdG90eXBlLm5hbWU9IkFscmVhZHlDYWxsZWRFcnJvciI7dmFyIEdlPWZ1bmN0aW9uKCl7YWEuY2FsbCh0aGlzKX07Xy5HKEdlLGFhKTtHZS5wcm90b3R5cGUubWVzc2FnZT0iRGVmZXJyZWQgd2FzIGNhbmNlbGVkIjtHZS5wcm90b3R5cGUubmFtZT0iQ2FuY2VsZWRFcnJvciI7dmFyIFNlPWZ1bmN0aW9uKGEpe3RoaXMuZz1fLnYuc2V0VGltZW91dCgoMCxfLnkpKHRoaXMudGhyb3dFcnJvcix0aGlzKSwwKTt0aGlzLmg9YX07ClNlLnByb3RvdHlwZS50aHJvd0Vycm9yPWZ1bmN0aW9uKCl7ZGVsZXRlIFJlW3RoaXMuZ107dGhyb3cgdGhpcy5oO307dmFyIFJlPXt9O3ZhciBUZT1mdW5jdGlvbihhLGIsYyxkLGUpe2M9RXJyb3IuY2FsbCh0aGlzKTt0aGlzLm1lc3NhZ2U9Yy5tZXNzYWdlOyJzdGFjayJpbiBjJiYodGhpcy5zdGFjaz1jLnN0YWNrKTt0aGlzLm5hbWU9Ik1vZHVsZUxvYWRGYWlsdXJlIjt0aGlzLnR5cGU9YTt0aGlzLnN0YXR1cz1iO3RoaXMudXJsPWQ7dGhpcy5jYXVzZT1lO3RoaXMubWVzc2FnZT10aGlzLnRvU3RyaW5nKCl9O18uQihUZSxFcnJvcik7VGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFVlKHRoaXMpKyIgKCIrKHRoaXMuc3RhdHVzIT12b2lkIDA/dGhpcy5zdGF0dXM6Ij8iKSsiKSJ9Owp2YXIgVWU9ZnVuY3Rpb24oYSl7c3dpdGNoKGEudHlwZSl7Y2FzZSBUZS5nLkplOnJldHVybiJVbmF1dGhvcml6ZWQiO2Nhc2UgVGUuZy5CZTpyZXR1cm4iQ29uc2VjdXRpdmUgbG9hZCBmYWlsdXJlcyI7Y2FzZSBUZS5nLlRJTUVPVVQ6cmV0dXJuIlRpbWVkIG91dCI7Y2FzZSBUZS5nLkhlOnJldHVybiJPdXQgb2YgZGF0ZSBtb2R1bGUgaWQiO2Nhc2UgVGUuZy50ZDpyZXR1cm4iSW5pdCBlcnJvciI7ZGVmYXVsdDpyZXR1cm4iVW5rbm93biBmYWlsdXJlIHR5cGUgIithLnR5cGV9fTtuYy5GYT1UZTtuYy5GYS5nPXtKZTowLEJlOjEsVElNRU9VVDoyLEhlOjMsdGQ6NH07dmFyIFZlPWZ1bmN0aW9uKCl7dmIuY2FsbCh0aGlzKTt0aGlzLkk9bnVsbDt0aGlzLmc9bmV3IE1hcDt0aGlzLm89bmV3IFNldDt0aGlzLkE9W107dGhpcy5DPW5ldyBTZXQ7dGhpcy5qPVtdO3RoaXMuQj1uZXcgU2V0O3RoaXMuaD1OYz9uZXcgTWFwOnt9O3RoaXMuSz1uZXcgTWFwO3RoaXMubD10aGlzLkQ9bmV3IG5jLkZlKFtdLCIiKTt0aGlzLkw9bnVsbDt0aGlzLkY9bmV3IEJiO3RoaXMuUj10aGlzLlQ9dGhpcy5QPXRoaXMuVz0hMX07Xy5HKFZlLHZiKTt2YXIgV2U9ZnVuY3Rpb24oYSxiKXthYS5jYWxsKHRoaXMsIkVycm9yIGxvYWRpbmcgIithKyI6ICIrYil9O18uRyhXZSxhYSk7VmUucHJvdG90eXBlLlhmPWZ1bmN0aW9uKGEpe3RoaXMuVz1hfTsKVmUucHJvdG90eXBlLnFlPWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YgVmUpKXRoaXMucWUoYSxiKTtlbHNlIGlmKHR5cGVvZiBhPT09InN0cmluZyIpe2lmKGEuc3RhcnRzV2l0aCgiZCQiKSl7YT1hLnN1YnN0cmluZygyKTtmb3IodmFyIGM9W10sZD0wLGU9YS5pbmRleE9mKCIvIiksZj0wLGc9ITEsaD0wOzspe3ZhciBrPWc/YS5zdWJzdHJpbmcoZik6YS5zdWJzdHJpbmcoZixlKTtpZihrLmxlbmd0aD09PTApZCsrLGY9InN5IitkLnRvU3RyaW5nKDM2KSxrPVtdO2Vsc2V7dmFyIGw9ay5pbmRleE9mKCI6Iik7aWYobDwwKWY9ayxrPVtdO2Vsc2UgaWYobD09PWsubGVuZ3RoLTEpZj1rLnN1YnN0cmluZygwLGwpLGs9QXJyYXkoY1toLTFdKTtlbHNle2Y9ay5zdWJzdHJpbmcoMCxsKTtrPWsuc3Vic3RyaW5nKGwrMSkuc3BsaXQoIiwiKTtsPWg7Zm9yKHZhciBuPTA7bjxrLmxlbmd0aDtuKyspbC09a1tuXS5sZW5ndGg9PT0wPzE6TnVtYmVyKGtbbl0pLGtbbl09Y1tsXX1sPQowO2lmKGYubGVuZ3RoPT09MClsPTE7ZWxzZSBpZihmLmNoYXJBdCgwKT09PSIrInx8Zi5jaGFyQXQoMCk9PT0iLSIpbD1OdW1iZXIoZik7bCE9PTAmJihkKz1sLGY9InN5IitkLnRvU3RyaW5nKDM2KSl9Yy5wdXNoKGYpO1hlKHRoaXMsZixrKTtpZihnKWJyZWFrO2Y9ZSsxO2U9YS5pbmRleE9mKCIvIixmKTtlPT09LTEmJihnPSEwKTtoKyt9dGhpcy5JPWN9ZWxzZSBpZihhLnN0YXJ0c1dpdGgoInAkIikpWWUodGhpcyxhKTtlbHNle2E9YS5zcGxpdCgiLyIpO2M9W107Zm9yKGQ9MDtkPGEubGVuZ3RoO2QrKyl7aD1hW2RdLnNwbGl0KCI6Iik7ZT1oWzBdO2c9W107aWYoaFsxXSlmb3IoZz1oWzFdLnNwbGl0KCIsIiksaD0wO2g8Zy5sZW5ndGg7aCsrKWdbaF09Y1twYXJzZUludChnW2hdLDM2KV07Yy5wdXNoKGUpO1hlKHRoaXMsZSxnKX10aGlzLkk9Y31pZihiJiZiLmxlbmd0aCl7YT1fLkMoYik7Zm9yKGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKXRoaXMuby5hZGQoYy52YWx1ZSk7CnRoaXMuTD1iW2IubGVuZ3RoLTFdfWVsc2UgdGhpcy5GLmh8fHRoaXMuRi5nKCk7T2JqZWN0LmZyZWV6ZSh0aGlzLkkpO1plKHRoaXMpfX07CnZhciBZZT1mdW5jdGlvbihhLGIpe2lmKCFZZCl7Zm9yKHZhciBjPTA7Yzw2NDtjKyspb2JbIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8iLmNoYXJDb2RlQXQoYyldPWM7WWQ9ITB9dmFyIGQ9e0hkOmIsQmI6Mn07cWIoZCk7dmFyIGU9cWIoZCksZj1xYihkKSsxO2I9QXJyYXkoZSk7Yz1BcnJheShlKTt2YXIgZz1BcnJheShlKTtmPUFycmF5KGYpO3ZhciBoPTAsaz0wLGw9ZC5IZCxuPWQuQmI7ZC5CYj1kLkhkLmluZGV4T2YoInwiLGQuQmIpKzE7Zm9yKHZhciBxPTA7cTxlO3ErKyl7dmFyIHA9cWIoZCkscj1wJjIsdD1wJjE7cD4+Pj0yO3Q/KGgrPXA+Pj4xXi0ocCYxKSxwPSJzeSIraC50b1N0cmluZygzNikpOih0PW4sbis9cCxwPWwuc3Vic3RyaW5nKHQsbikpO2JbcV09cDtyJiYoZltrKytdPXApfWZba109IiI7ZC5CYisrO2s9ZSYtMjtoPWUmMTtmb3IobD0wO2w8aztsKz0yKW49cGIoZCksZ1tsXT1uJjcsZ1tsKwoxXT1uPj4+MyY3O2gmJihoPXBiKGQpLGdba109aCY3KTtkLkJiKys7Zm9yKGs9MDtrPGU7aysrKWdba109PT03JiYoZ1trXT1xYihkKSk7ZC5CYisrO2ZvcihoPWs9MDtoPGU7aCsrKXtsPWdbaF07bj1sPT09MD9aZDpBcnJheShsKTtjW2hdPW47cT1rO2ZvcihyPTA7cjxsO3IrKylxLT1xYihkKSxuW3JdPWZbcV07ZltrXT09PWJbaF0mJmsrK31mb3IoZD0wO2Q8Yi5sZW5ndGg7ZCsrKVhlKGEsYltkXSxjW2RdKTthLkk9Yn07VmUucHJvdG90eXBlLmplPWZ1bmN0aW9uKGEsYil7aWYodGhpcy5oIGluc3RhbmNlb2YgTWFwKXt2YXIgYz10aGlzLmguZ2V0KGEpO2MmJihjLmRlbGV0ZShiKSxjLnNpemU9PT0wJiZ0aGlzLmguZGVsZXRlKGEpKX1lbHNlIGlmKHRoaXMuaFthXSl7ZGVsZXRlIHRoaXMuaFthXVtiXTtmb3IoYyBpbiB0aGlzLmhbYV0pcmV0dXJuO2RlbGV0ZSB0aGlzLmhbYV19fTtWZS5wcm90b3R5cGUuc2U9ZnVuY3Rpb24oYSl7VmUuZWEuc2UuY2FsbCh0aGlzLGEpO1plKHRoaXMpfTsKVmUucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuby5zaXplPjB9O1ZlLnByb3RvdHlwZS5EZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkIuc2l6ZT4wfTsKdmFyIGFmPWZ1bmN0aW9uKGEpe3ZhciBiPWEuUCxjPWEuaXNBY3RpdmUoKTtjIT1iJiYoJGUoYSxjP2RlLmxnOmRlLklETEUpLGEuUD1jKTtiPWEuRGYoKTtiIT1hLlQmJigkZShhLGI/ZGUuSGc6ZGUuSWcpLGEuVD1iKX0sWGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZy5nZXQoYik7ZD9kLmw9YzphLmcuc2V0KGIsbmV3IG5jLkZlKGMsYikpfSxkZj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT17fTtiPV8uQyhuZXcgU2V0KGIpKTtmb3IodmFyIGY9Yi5uZXh0KCk7IWYuZG9uZTtmPWIubmV4dCgpKXtmPWYudmFsdWU7dmFyIGc9YS5nLmdldChmKTtpZighZyl0aHJvdyBFcnJvcigiQ2AiK2YpO3ZhciBoPW5ldyBCYjtlW2ZdPWg7Zy5nP2guZyhhLnFhKTooYmYoYSxmLGcsISFjLGgpLGNmKGEsZil8fGQucHVzaChmKSl9ZC5sZW5ndGg+MCYmKGEuby5zaXplPT09MD9hLkcoZCk6KGEuai5wdXNoKGQpLGFmKGEpKSk7cmV0dXJuIGV9LGJmPWZ1bmN0aW9uKGEsYixjLGQsZSl7YWUoYywKZS5nLGUpO2JlKGMsZnVuY3Rpb24oZil7ZS5GKG5ldyBXZShiLGYpKX0pO2NmKGEsYik/ZCYmKGEuQi5hZGQoYiksYWYoYSkpOmQmJmEuQi5hZGQoYil9OwpWZS5wcm90b3R5cGUuRz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcztiPWI9PT12b2lkIDA/MDpiO3ZhciBlPWVmKHRoaXMsYSk7dGhpcy5vPW5ldyBTZXQoZSk7dGhpcy5BPXRoaXMuVz9hOl8ud2EoZSk7YWYodGhpcyk7aWYoZS5sZW5ndGghPT0wKXthPV8uQyhlKTtmb3IodmFyIGY9YS5uZXh0KCk7IWYuZG9uZTtmPWEubmV4dCgpKXRoaXMuQy5hZGQoZi52YWx1ZSk7YT10aGlzLk87aWYoIWEpdGhyb3cgRXJyb3IoIkQiKTtpZigodGhpcy5oIGluc3RhbmNlb2YgTWFwP3RoaXMuaC5zaXplPjA6T2JqZWN0LmtleXModGhpcy5oKS5sZW5ndGg+MCkmJiFhLkkpdGhyb3cgRXJyb3IoIkUiKTtmZihhLF8ud2EoZSksdGhpcy5nLHtqaDp0aGlzLmgsZmU6ZnVuY3Rpb24oZyxoLGspe3JldHVybiBnZihkLGQuQSxlLGchPW51bGw/Zzp2b2lkIDAsaCxiLCEhayl9LEZpOigwLF8ueSkodGhpcy5sYSx0aGlzKSxtaDohIWN9KX19Owp2YXIgaGY9ZnVuY3Rpb24oYSl7dGhpcy5oPWE7dGhpcy5qPW5ldyBTZXQ7dGhpcy5nPVtdfSxqZj1mdW5jdGlvbihhLGIpe2lmKCFhLmouaGFzKGIpJiYoYS5qLmFkZChiKSwhYS5oLkMuaGFzKGIpKSl7dmFyIGM9YS5oLmcuZ2V0KGIpO2lmKGMmJiFjLmcpe2M9Yy5sO2Zvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKWpmKGEsY1tkXSk7YS5nLnB1c2goYil9fX0sZWY9ZnVuY3Rpb24oYSxiKXtiPWIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBhLmcuZ2V0KGUpLmc/KF8udi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIEVycm9yKCJGYCIrZSl9LDApLCExKTohMH0pO2lmKE9jKXt2YXIgYz1uZXcgaGYoYSk7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspamYoYyxiW2RdKTtjPWMuZ31lbHNle2M9W107Zm9yKGQ9MDtkPGIubGVuZ3RoO2QrKyljPWMuY29uY2F0KGtmKGEsYltkXSkpO0JhKGMpfXJldHVybiFhLlcmJmMubGVuZ3RoPjE/KGI9Yy5zaGlmdCgpLGEuaj1jLm1hcChmdW5jdGlvbihlKXtyZXR1cm5bZV19KS5jb25jYXQoYS5qKSwKW2JdKTpjfSxrZj1mdW5jdGlvbihhLGIpe2lmKE9jKXJldHVybiBhPW5ldyBoZihhKSxqZihhLGIpLGEuZzt2YXIgYz1bXTthLkMuaGFzKGIpfHxjLnB1c2goYik7Yj1bYl07Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspZm9yKHZhciBlPWEuZy5nZXQoYltkXSkubCxmPWUubGVuZ3RoLTE7Zj49MDtmLS0pe3ZhciBnPWVbZl07YS5nLmdldChnKS5nfHxhLkMuaGFzKGcpfHwoYy5wdXNoKGcpLGIucHVzaChnKSl9Yy5yZXZlcnNlKCk7QmEoYyk7cmV0dXJuIGN9LFplPWZ1bmN0aW9uKGEpe2lmKGEubD09YS5EKXthLmw9bnVsbDt2YXIgYj1hLkQub25Mb2FkKCgwLF8ueSkoYS5rZixhKSk7YiYmYi5sZW5ndGgmJmxmKGEsbmV3IG5jLkZhKG5jLkZhLmcudGQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsYlswXSkpO2FmKGEpfX07ClZlLnByb3RvdHlwZS5tZD1mdW5jdGlvbigpe2lmKHRoaXMubCl7dmFyIGE9dGhpcy5sLlJhKCksYj1bXTtpZih0aGlzLmggaW5zdGFuY2VvZiBNYXApe3ZhciBjPXRoaXMuaC5nZXQoYSk7aWYoYyl7Yz1fLkMoQXJyYXkuZnJvbShjKSk7Zm9yKHZhciBkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7ZD1kLnZhbHVlO3ZhciBlPXRoaXMuZy5nZXQoZCk7ZSYmIWUuZyYmKHRoaXMuamUoYSxkKSxiLnB1c2goZCkpfWRmKHRoaXMsYil9fWVsc2UgaWYodGhpcy5oW2FdKXtjPV8uQyhPYmplY3Qua2V5cyh0aGlzLmhbYV0pKTtmb3IoZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpZD1kLnZhbHVlLChlPXRoaXMuZy5nZXQoZCkpJiYhZS5nJiYodGhpcy5qZShhLGQpLGIucHVzaChkKSk7ZGYodGhpcyxiKX10aGlzLnFiKCl8fCgoYj10aGlzLmcuZ2V0KGEpLm9uTG9hZCgoMCxfLnkpKHRoaXMua2YsdGhpcykpKSYmYi5sZW5ndGgmJmxmKHRoaXMsbmV3IG5jLkZhKG5jLkZhLmcudGQsCnZvaWQgMCx2b2lkIDAsdm9pZCAwLGJbMF0pKSx0aGlzLkIuZGVsZXRlKGEpLHRoaXMuby5kZWxldGUoYSksdGhpcy5vLnNpemUhPT0wfHxtZih0aGlzKSx0aGlzLkwmJmE9PXRoaXMuTCYmKHRoaXMuRi5ofHx0aGlzLkYuZygpKSxhZih0aGlzKSx0aGlzLmw9bnVsbCl9fTt2YXIgY2Y9ZnVuY3Rpb24oYSxiKXtpZihhLm8uaGFzKGIpKXJldHVybiEwO2Zvcih2YXIgYz0wO2M8YS5qLmxlbmd0aDtjKyspaWYoXy50YShhLmpbY10sYikpcmV0dXJuITA7cmV0dXJuITF9O1ZlLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGRmKHRoaXMsW2FdLGIpW2FdfTsKdmFyIGthPWZ1bmN0aW9uKGEpe3ZhciBiPV8uZGE7Yi5sJiZiLmwuUmEoKT09PSJzeW50aGV0aWNfbW9kdWxlX292ZXJoZWFkIiYmKGIubWQoKSxiLmcuZGVsZXRlKCJzeW50aGV0aWNfbW9kdWxlX292ZXJoZWFkIikpO3ZhciBjPWIuZy5nZXQoYSk7YyYmbmYoYixjLmx8fFtdLGZ1bmN0aW9uKGQpe2QubWQoKTtiLm8uZGVsZXRlKGQuUmEoKSl9LGZ1bmN0aW9uKGQpe3JldHVybiFkLmd9LG5ldyBTZXQpO2IubD1iLmcuZ2V0KGEpO2IubCYmKGIubC5CPSEwKX0sZ2Y9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9KGc9PT12b2lkIDA/MDpnKT8wOihmPT09dm9pZCAwPzA6ZikrMTtmPV8ud2EoYyk7YS5BPWI7Yz1fLkMoYyk7Zm9yKGc9Yy5uZXh0KCk7IWcuZG9uZTtnPWMubmV4dCgpKWEuQy5kZWxldGUoZy52YWx1ZSk7aWYoZD09NDAxKWxmKGEsbmV3IG5jLkZhKG5jLkZhLmcuSmUsZCkpLGEuai5sZW5ndGg9MDtlbHNlIGlmKGQ9PTQxMClvZihhLG5ldyBuYy5GYShuYy5GYS5nLkhlLApkKSksbWYoYSk7ZWxzZSBpZihoPj0zKW9mKGEsbmV3IG5jLkZhKG5jLkZhLmcuQmUsZCxmLGUpKSxtZihhKTtlbHNle3ZhciBrPWQ9PTgwMDF8fCExOyhkPU1hdGgucG93KGgsMikqNUUzKT9fLnYuc2V0VGltZW91dChmdW5jdGlvbigpe2EuRyhiLGgsayl9LGQpOmEuRyhiLGgsayl9fTtWZS5wcm90b3R5cGUubGE9ZnVuY3Rpb24oKXtvZih0aGlzLG5ldyBuYy5GYShuYy5GYS5nLlRJTUVPVVQpKTttZih0aGlzKX07CnZhciBvZj1mdW5jdGlvbihhLGIpe2EuQS5sZW5ndGg+MT9hLmo9YS5BLm1hcChmdW5jdGlvbihjKXtyZXR1cm5bY119KS5jb25jYXQoYS5qKTpsZihhLGIpfSxsZj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuQTthLm8uY2xlYXIoKTtmb3IodmFyIGQ9W10sZT0wO2U8YS5qLmxlbmd0aDtlKyspe3ZhciBmPWEualtlXS5maWx0ZXIoZnVuY3Rpb24oayl7dmFyIGw9a2YodGhpcyxrKTtyZXR1cm4gXy54YyhjLGZ1bmN0aW9uKG4pe3JldHVybiBfLnRhKGwsbil9KX0sYSk7eGEoZCxmKX1mb3IoZT0wO2U8Yy5sZW5ndGg7ZSsrKV8udWEoZCxjW2VdKTtmb3IoZT0wO2U8ZC5sZW5ndGg7ZSsrKXtmb3IoZj0wO2Y8YS5qLmxlbmd0aDtmKyspXy52YShhLmpbZl0sZFtlXSk7YS5CLmRlbGV0ZShkW2VdKX1pZihlPWEuSy5nZXQoZGUuRVJST1IpKWZvcihmPTA7ZjxlLmxlbmd0aDtmKyspZm9yKHZhciBnPWVbZl0saD0wO2g8ZC5sZW5ndGg7aCsrKWcoZGUuRVJST1IsZFtoXSxiKTtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKShlPQphLmcuZ2V0KGNbZF0pKSYmZS5mZShiKTthLkEubGVuZ3RoPTA7YWYoYSl9LG1mPWZ1bmN0aW9uKGEpe2Zvcig7YS5qLmxlbmd0aDspe3ZhciBiPWEuai5zaGlmdCgpLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4hdGhpcy5nLmdldChjKS5nfSxhKTtpZihiLmxlbmd0aD4wKXthLkcoYik7cmV0dXJufX1hZihhKX0sJGU9ZnVuY3Rpb24oYSxiKXthPWEuSy5nZXQoYik7Zm9yKHZhciBjPTA7YSYmYzxhLmxlbmd0aDtjKyspYVtjXShiKX0sbmY9ZnVuY3Rpb24oYSxiLGMsZCxlKXtiPV8uQyhiKTtmb3IodmFyIGY9Yi5uZXh0KCk7IWYuZG9uZTtmPWIubmV4dCgpKXtmPWYudmFsdWU7dmFyIGc9YS5nLmdldChmKTshZS5oYXMoZikmJmQoZykmJihlLmFkZChmKSxuZihhLGcubHx8W10sYyxkLGUpLGMoZykpfX07ClZlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7cmEoQXJyYXkuZnJvbSh0aGlzLmcudmFsdWVzKCkpLHRoaXMuRCk7dGhpcy5nLmNsZWFyKCk7dGhpcy5vLmNsZWFyKCk7dGhpcy5BPVtdO3RoaXMuQi5jbGVhcigpO3RoaXMuaj1bXTt0aGlzLksuY2xlYXIoKTt0aGlzLlI9ITB9O1ZlLnByb3RvdHlwZS5xYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJ9O18uaGE9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFZlfTt2YXIgcGY9W10scWY9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihkKXtkJiZ3YyhkLGZ1bmN0aW9uKGUsZil7ZVtmLmlkXT0hMDtyZXR1cm4gZX0sYy5KaSl9dmFyIGM9e0ppOnt9LGluZGV4OnBmLmxlbmd0aCxWbDphfTtiKGEubGQpO2IoYS5qbSk7cGYucHVzaChjKTthLmxkJiZfLnZjKGEubGQsZnVuY3Rpb24oZCl7dmFyIGU9ZC5pZDtlIGluc3RhbmNlb2YgdGMmJmQubW9kdWxlJiYoZS5nPWQubW9kdWxlKX0pfTtxZih7bGQ6W3tpZDp1YyxMYjpuYixtdWx0aXBsZTohMH1dfSk7Xy5yZj1SZWdFeHAoIl4oPzooW146Lz8jLl0rKTopPyg/Oi8vKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JCIpO3ZhciBzZj17fTt2YXIgdGY9bmV3IHRjKCJNcEp3WmMiLCJNcEp3WmMiKTtfLnVmPW5ldyB0YygiVVVKcVZlIiwiVVVKcVZlIik7dmFyIHZmPW5ldyBiYix3Zj1mdW5jdGlvbihhLGIsYyl7Y2IuY2FsbCh0aGlzLGEsYik7dGhpcy5ub2RlPWI7dGhpcy5raW5kPWN9O18uQih3ZixjYik7Xy54Zj1SZWdFeHAoIl4oYXJ8Y2tifGR2fGhlfGl3fGZhfG5xb3xwc3xzZHx1Z3x1cnx5aXwuKlstX10oQWRsbXxBcmFifEhlYnJ8Tmtvb3xSb2hnfFRoYWEpKSg/IS4qWy1fXShMYXRufEN5cmwpKCR8LXxfKSkoJHwtfF8pIiwiaSIpO18ueWY9ZnVuY3Rpb24oYSxiKXtifHxfLmxiKCk7dGhpcy5oPWF8fG51bGx9O18ueWYucHJvdG90eXBlLmthPWZ1bmN0aW9uKGEsYil7YT1hKGJ8fHt9LHRoaXMuaD90aGlzLmguZ2V0RGF0YSgpOnt9KTt0aGlzLmcobnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgXy56ZiYmYSBpbnN0YW5jZW9mIF8uemY/YS5aYjpudWxsKTtyZXR1cm4gU3RyaW5nKGEpfTtfLnlmLnByb3RvdHlwZS5nPWZ1bmN0aW9uKCl7fTt2YXIgQWY9ZnVuY3Rpb24oYSl7dGhpcy5nPWE7dGhpcy5oPXRoaXMuZy5nKF8udWYpfTtBZi5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbigpe3RoaXMuZy5xYigpfHwodGhpcy5oPXRoaXMuZy5nKF8udWYpKTtyZXR1cm4gdGhpcy5oP3RoaXMuaC5qKCk6e319O3ZhciBCZj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgQWYoYSk7Xy55Zi5jYWxsKHRoaXMsYixhLmdldCh1YykuaCk7dGhpcy5qPW5ldyBfLmhiO3RoaXMubD1ifTtfLkIoQmYsXy55Zik7QmYucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sLmdldERhdGEoKX07QmYucHJvdG90eXBlLmc9ZnVuY3Rpb24oYSxiKXtfLnlmLnByb3RvdHlwZS5nLmNhbGwodGhpcyxhLGIpO3RoaXMuai5kaXNwYXRjaEV2ZW50KG5ldyB3Zih2ZixhLGIpKX07Xy5vYSh0ZixCZik7cWYoe2xkOlt7aWQ6dGYsTGI6QmYsbXVsdGlwbGU6ITB9XX0pO3ZhciBDZj1mdW5jdGlvbihhLGIpe3RoaXMuZGVmYXVsdFZhbHVlPWE7dGhpcy50eXBlPWI7dGhpcy52YWx1ZT1hfTtDZi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9O0NmLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSl7dGhpcy52YWx1ZT1hfTt2YXIgRGY9ZnVuY3Rpb24oYSl7Q2YuY2FsbCh0aGlzLGEsImIiKX07Xy5CKERmLENmKTtEZi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9O3ZhciBFZj1mdW5jdGlvbigpe3RoaXMuZz17fTt0aGlzLmo9IiI7dGhpcy5oPXt9fTtFZi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmorRmYodGhpcyk7dmFyIGI9dGhpcy5oO3ZhciBjPVtdLGQ7Zm9yKGQgaW4gYilGYihkLGJbZF0sYyk7Yj1jLmpvaW4oIiYiKTtjPSIiO2IhPSIiJiYoYz0iPyIrYik7cmV0dXJuIGErY307CnZhciBIZj1mdW5jdGlvbihhKXthPUdmKGEsIm1kIik7cmV0dXJuISFhJiZhIT09IjAifSxGZj1mdW5jdGlvbihhKXt2YXIgYj1bXSxjPWZ1bmN0aW9uKGQpe2EuZ1tkXSE9PXZvaWQgMCYmYi5wdXNoKGQrIj0iK2EuZ1tkXSl9O0hmKGEpPyhjKCJtZCIpLGMoImsiKSxjKCJjayIpLGMoImFtIiksYygicnMiKSxjKCJnc3Ntb2R1bGVzZXRwcm90byIpLGMoInNsayIpLGMoImR0aSIpLGMoImRid2giKSk6KGMoInNkY2giKSxjKCJrIiksYygiY2siKSxjKCJhbSIpLGMoImFtYyIpLGMoInJ0IiksImQiaW4gYS5nfHxJZihhLCJkIiwiMCIpLGMoImQiKSxjKCJleG0iKSxjKCJleGNtIiksKGEuZy5leGNtfHxhLmcuZXhtKSYmYi5wdXNoKCJlZD0xIiksYygiaW0iKSxjKCJkZyIpLGMoInNtIiksR2YoYSwiYnIiKSE9IjEiJiZHZihhLCJiciIpIT0iMCJ8fGMoImJyIiksYygiYnItZCIpLEdmKGEsInJiIik9PSIxIiYmYygicmIiKSxHZihhLCJ6cyIpIT09IjAiJiZjKCJ6cyIpLEpmKGEpIT09IiImJgpjKCJ3dCIpLGMoImdzc21vZHVsZXNldHByb3RvIiksYygidWpnIiksYygic3AiKSxjKCJpY2hjIiksYygicnMiKSxjKCJjYiIpLGMoImNjYiIpLGMoImVlIiksYygic2xrIiksYygiZHRpIiksYygiZGJ3aCIpLGMoImljIiksYygibSIpKTtyZXR1cm4gYi5qb2luKCIvIil9LEdmPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZ1tiXT9hLmdbYl06bnVsbH0sSWY9ZnVuY3Rpb24oYSxiLGMpe2M/YS5nW2JdPWM6ZGVsZXRlIGEuZ1tiXX0sSmY9ZnVuY3Rpb24oYSl7c3dpdGNoKEdmKGEsInd0Iikpe2Nhc2UgIjAiOnJldHVybiIwIjtjYXNlICIxIjpyZXR1cm4iMSI7Y2FzZSAiMiI6cmV0dXJuIjIiO2RlZmF1bHQ6cmV0dXJuIiJ9fSxNZj1mdW5jdGlvbihhKXt2YXIgYj1iPT09dm9pZCAwPyEwOmI7dmFyIGM9S2YoYSksZD1uZXcgRWYsZT1jLm1hdGNoKF8ucmYpWzVdO18uemMoTGYsZnVuY3Rpb24oZyl7dmFyIGg9ZS5tYXRjaCgiLyIrZysiPShbXi9dKykiKTtoJiZJZihkLGcsaFsxXSl9KTsKdmFyIGY9IiI7Zj1hLmluZGV4T2YoIl8vc3MvIikhPS0xPyJfL3NzLyI6Il8vanMvIjtkLmo9YS5zdWJzdHIoMCxhLmluZGV4T2YoZikrZi5sZW5ndGgpO2lmKCFiKXJldHVybiBkOyhhPWMubWF0Y2goXy5yZilbNl18fG51bGwpJiZfLkViKGEsZnVuY3Rpb24oZyxoKXtkLmhbZ109aH0pO3JldHVybiBkfSxLZj1mdW5jdGlvbihhKXtyZXR1cm4gYS5zdGFydHNXaXRoKCJodHRwczovL3ViZXJwcm94eS1wZW4tcmVkaXJlY3QuY29ycC5nb29nbGUuY29tL3ViZXJwcm94eS9wZW4/dXJsPSIpP2Euc3Vic3RyKDY1KTphfSxMZj17Wmo6ImsiLHFqOiJjayIsVGo6Im0iLERqOiJleG0iLEJqOiJleGNtIixlajoiYW0iLGZqOiJhbWMiLFJqOiJtbSIsWWo6InJ0IixNajoiZCIsQ2o6ImVkIixqazoic3YiLHNqOiJkZW9iIixtajoiY2IiLG9qOiJjY2IiLG5qOiJjYmkiLGdrOiJycyIsYWs6InNkY2giLE5qOiJpbSIsdGo6ImRnIix6ajoiYnIiLHlqOiJici1kIixBajoicmIiLEJrOiJ6cyIsQWs6Ind0IiwKRWo6ImVlIixpazoic20iLFNqOiJtZCIsSmo6Imdzc21vZHVsZXNldHByb3RvIix5azoidWpnIix4azoic3AiLExqOiJpY2hjIixmazoic2xrIix2ajoiZHRpIix1ajoiZGJ3aCIsT2o6ImljIn0sTmY9UmVnRXhwKCJeW2EtekEtWjAtOS1fKl0rJCIpO18uRyhfLkhiLF8udSk7dmFyIE9mPVtdO18uSGIucHJvdG90eXBlLk49ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIFBmKHRoaXMsYSxiLGMsZCl9O3ZhciBQZj1mdW5jdGlvbihhLGIsYyxkLGUsZil7QXJyYXkuaXNBcnJheShjKXx8KGMmJihPZlswXT1jLnRvU3RyaW5nKCkpLGM9T2YpO2Zvcih2YXIgZz0wO2c8Yy5sZW5ndGg7ZysrKXt2YXIgaD1fLngoYixjW2ddLGR8fGEuaGFuZGxlRXZlbnQsZXx8ITEsZnx8YS5ofHxhKTtpZighaClicmVhazthLmdbaC5rZXldPWh9cmV0dXJuIGF9O18uSGIucHJvdG90eXBlLmFlPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBRZih0aGlzLGEsYixjLGQpfTsKdmFyIFFmPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZihBcnJheS5pc0FycmF5KGMpKWZvcih2YXIgZz0wO2c8Yy5sZW5ndGg7ZysrKVFmKGEsYixjW2ddLGQsZSxmKTtlbHNle2I9Xy5OZChiLGMsZHx8YS5oYW5kbGVFdmVudCxlLGZ8fGEuaHx8YSk7aWYoIWIpcmV0dXJuIGE7YS5nW2Iua2V5XT1ifXJldHVybiBhfTtfLkhiLnByb3RvdHlwZS55Yz1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKEFycmF5LmlzQXJyYXkoYikpZm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspdGhpcy55YyhhLGJbZl0sYyxkLGUpO2Vsc2UgYz1jfHx0aGlzLmhhbmRsZUV2ZW50LGQ9Xy55YShkKT8hIWQuY2FwdHVyZTohIWQsZT1lfHx0aGlzLmh8fHRoaXMsYz1PZChjKSxkPSEhZCxiPUZkKGEpP2EuamMoYixjLGQsZSk6YT8oYT1RZChhKSk/YS5qYyhiLGMsZCxlKTpudWxsOm51bGwsYiYmKF8uVmQoYiksZGVsZXRlIHRoaXMuZ1tiLmtleV0pO3JldHVybiB0aGlzfTsKXy5SZj1mdW5jdGlvbihhKXtfLnpjKGEuZyxmdW5jdGlvbihiLGMpe3RoaXMuZy5oYXNPd25Qcm9wZXJ0eShjKSYmXy5WZChiKX0sYSk7YS5nPXt9fTtfLkhiLnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7Xy5IYi5lYS5NLmNhbGwodGhpcyk7Xy5SZih0aGlzKX07Xy5IYi5wcm90b3R5cGUuaGFuZGxlRXZlbnQ9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiTiIpO307dmFyIFNmLFRmPWZ1bmN0aW9uKCl7fTtfLkcoVGYsSWIpO1RmLnByb3RvdHlwZS5nPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdH07U2Y9bmV3IFRmO18uRyhKYixJYik7SmIucHJvdG90eXBlLmc9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoIndpdGhDcmVkZW50aWFscyJpbiBhKXJldHVybiBhO2lmKHR5cGVvZiBYRG9tYWluUmVxdWVzdCE9InVuZGVmaW5lZCIpcmV0dXJuIG5ldyBVZjt0aHJvdyBFcnJvcigiTyIpO307dmFyIFVmPWZ1bmN0aW9uKCl7dGhpcy5nPW5ldyBYRG9tYWluUmVxdWVzdDt0aGlzLnJlYWR5U3RhdGU9MDt0aGlzLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO3RoaXMucmVzcG9uc2VUeXBlPXRoaXMucmVzcG9uc2VUZXh0PSIiO3RoaXMuc3RhdHVzPS0xO3RoaXMuc3RhdHVzVGV4dD0iIjt0aGlzLmcub25sb2FkPSgwLF8ueSkodGhpcy5QaCx0aGlzKTt0aGlzLmcub25lcnJvcj0oMCxfLnkpKHRoaXMuRGUsdGhpcyk7dGhpcy5nLm9ucHJvZ3Jlc3M9KDAsXy55KSh0aGlzLlNoLHRoaXMpO3RoaXMuZy5vbnRpbWVvdXQ9KDAsXy55KSh0aGlzLldoLHRoaXMpfTtfLm09VWYucHJvdG90eXBlOwpfLm0ub3Blbj1mdW5jdGlvbihhLGIsYyl7aWYoYyE9bnVsbCYmIWMpdGhyb3cgRXJyb3IoIlAiKTt0aGlzLmcub3BlbihhLGIpfTtfLm0uc2VuZD1mdW5jdGlvbihhKXtpZihhKWlmKHR5cGVvZiBhPT0ic3RyaW5nIil0aGlzLmcuc2VuZChhKTtlbHNlIHRocm93IEVycm9yKCJRIik7ZWxzZSB0aGlzLmcuc2VuZCgpfTtfLm0uYWJvcnQ9ZnVuY3Rpb24oKXt0aGlzLmcuYWJvcnQoKX07Xy5tLnNldFJlcXVlc3RIZWFkZXI9ZnVuY3Rpb24oKXt9O18ubS5nZXRSZXNwb25zZUhlYWRlcj1mdW5jdGlvbihhKXtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpPT0iY29udGVudC10eXBlIj90aGlzLmcuY29udGVudFR5cGU6IiJ9O18ubS5QaD1mdW5jdGlvbigpe3RoaXMuc3RhdHVzPTIwMDt0aGlzLnJlc3BvbnNlVGV4dD10aGlzLmcucmVzcG9uc2VUZXh0O1ZmKHRoaXMsNCl9O18ubS5EZT1mdW5jdGlvbigpe3RoaXMuc3RhdHVzPTUwMDt0aGlzLnJlc3BvbnNlVGV4dD0iIjtWZih0aGlzLDQpfTsKXy5tLldoPWZ1bmN0aW9uKCl7dGhpcy5EZSgpfTtfLm0uU2g9ZnVuY3Rpb24oKXt0aGlzLnN0YXR1cz0yMDA7VmYodGhpcywxKX07dmFyIFZmPWZ1bmN0aW9uKGEsYil7YS5yZWFkeVN0YXRlPWI7aWYoYS5vbnJlYWR5c3RhdGVjaGFuZ2UpYS5vbnJlYWR5c3RhdGVjaGFuZ2UoKX07VWYucHJvdG90eXBlLmdldEFsbFJlc3BvbnNlSGVhZGVycz1mdW5jdGlvbigpe3JldHVybiJjb250ZW50LXR5cGU6ICIrdGhpcy5nLmNvbnRlbnRUeXBlfTt2YXIgWGYsWWY7Xy5XZj1mdW5jdGlvbihhKXtfLmhiLmNhbGwodGhpcyk7dGhpcy5oZWFkZXJzPW5ldyBNYXA7dGhpcy5LPWF8fG51bGw7dGhpcy5oPSExO3RoaXMuZz1udWxsO3RoaXMuQT0iIjt0aGlzLmo9dGhpcy5GPXRoaXMubz10aGlzLkQ9ITE7dGhpcy5CPTA7dGhpcy5sPW51bGw7dGhpcy5JPSIiO3RoaXMuQz0hMX07Xy5HKF8uV2YsXy5oYik7WGY9L15odHRwcz8kL2k7WWY9WyJQT1NUIiwiUFVUIl07Xy5aZj1bXTtfLldmLnByb3RvdHlwZS5MPWZ1bmN0aW9uKCl7dGhpcy5kaXNwb3NlKCk7Xy52YShfLlpmLHRoaXMpfTsKXy5XZi5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbihhLGIsYyxkKXtpZih0aGlzLmcpdGhyb3cgRXJyb3IoIlNgIit0aGlzLkErImAiK2EpO2I9Yj9iLnRvVXBwZXJDYXNlKCk6IkdFVCI7dGhpcy5BPWE7dGhpcy5EPSExO3RoaXMuaD0hMDt0aGlzLmc9dGhpcy5LP3RoaXMuSy5nKCk6U2YuZygpO3RoaXMuZy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZWUoKDAsXy55KSh0aGlzLkcsdGhpcykpO3RyeXt0aGlzLkY9ITAsdGhpcy5nLm9wZW4oYixTdHJpbmcoYSksITApLHRoaXMuRj0hMX1jYXRjaChnKXskZih0aGlzKTtyZXR1cm59YT1jfHwiIjtjPW5ldyBNYXAodGhpcy5oZWFkZXJzKTtpZihkKWlmKE9iamVjdC5nZXRQcm90b3R5cGVPZihkKT09PU9iamVjdC5wcm90b3R5cGUpZm9yKHZhciBlIGluIGQpYy5zZXQoZSxkW2VdKTtlbHNlIGlmKHR5cGVvZiBkLmtleXM9PT0iZnVuY3Rpb24iJiZ0eXBlb2YgZC5nZXQ9PT0iZnVuY3Rpb24iKXtlPV8uQyhkLmtleXMoKSk7Zm9yKHZhciBmPWUubmV4dCgpOyFmLmRvbmU7Zj0KZS5uZXh0KCkpZj1mLnZhbHVlLGMuc2V0KGYsZC5nZXQoZikpfWVsc2UgdGhyb3cgRXJyb3IoIlRgIitTdHJpbmcoZCkpO2Q9QXJyYXkuZnJvbShjLmtleXMoKSkuZmluZChmdW5jdGlvbihnKXtyZXR1cm4iY29udGVudC10eXBlIj09Zy50b0xvd2VyQ2FzZSgpfSk7ZT1fLnYuRm9ybURhdGEmJmEgaW5zdGFuY2VvZiBfLnYuRm9ybURhdGE7IV8udGEoWWYsYil8fGR8fGV8fGMuc2V0KCJDb250ZW50LVR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpO2I9Xy5DKGMpO2ZvcihkPWIubmV4dCgpOyFkLmRvbmU7ZD1iLm5leHQoKSljPV8uQyhkLnZhbHVlKSxkPWMubmV4dCgpLnZhbHVlLGM9Yy5uZXh0KCkudmFsdWUsdGhpcy5nLnNldFJlcXVlc3RIZWFkZXIoZCxjKTt0aGlzLkkmJih0aGlzLmcucmVzcG9uc2VUeXBlPXRoaXMuSSk7IndpdGhDcmVkZW50aWFscyJpbiB0aGlzLmcmJnRoaXMuZy53aXRoQ3JlZGVudGlhbHMhPT10aGlzLkMmJgoodGhpcy5nLndpdGhDcmVkZW50aWFscz10aGlzLkMpO3RyeXt0aGlzLmwmJihjbGVhclRpbWVvdXQodGhpcy5sKSx0aGlzLmw9bnVsbCksdGhpcy5CPjAmJih0aGlzLmw9c2V0VGltZW91dCh0aGlzLlIuYmluZCh0aGlzKSx0aGlzLkIpKSx0aGlzLm89ITAsdGhpcy5nLnNlbmQoYSksdGhpcy5vPSExfWNhdGNoKGcpeyRmKHRoaXMpfX07Xy5XZi5wcm90b3R5cGUuUj1mdW5jdGlvbigpe3R5cGVvZiBqYyE9InVuZGVmaW5lZCImJnRoaXMuZyYmKHRoaXMuZGlzcGF0Y2hFdmVudCgidGltZW91dCIpLHRoaXMuYWJvcnQoOCkpfTt2YXIgJGY9ZnVuY3Rpb24oYSl7YS5oPSExO2EuZyYmKGEuaj0hMCxhLmcuYWJvcnQoKSxhLmo9ITEpO2RnKGEpO2VnKGEpfSxkZz1mdW5jdGlvbihhKXthLkR8fChhLkQ9ITAsYS5kaXNwYXRjaEV2ZW50KCJjb21wbGV0ZSIpLGEuZGlzcGF0Y2hFdmVudCgiZXJyb3IiKSl9OwpfLldmLnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbigpe3RoaXMuZyYmdGhpcy5oJiYodGhpcy5oPSExLHRoaXMuaj0hMCx0aGlzLmcuYWJvcnQoKSx0aGlzLmo9ITEsdGhpcy5kaXNwYXRjaEV2ZW50KCJjb21wbGV0ZSIpLHRoaXMuZGlzcGF0Y2hFdmVudCgiYWJvcnQiKSxlZyh0aGlzKSl9O18uV2YucHJvdG90eXBlLk09ZnVuY3Rpb24oKXt0aGlzLmcmJih0aGlzLmgmJih0aGlzLmg9ITEsdGhpcy5qPSEwLHRoaXMuZy5hYm9ydCgpLHRoaXMuaj0hMSksZWcodGhpcywhMCkpO18uV2YuZWEuTS5jYWxsKHRoaXMpfTtfLldmLnByb3RvdHlwZS5HPWZ1bmN0aW9uKCl7dGhpcy5xYigpfHwodGhpcy5GfHx0aGlzLm98fHRoaXMuaj9mZyh0aGlzKTp0aGlzLk8oKSl9O18uV2YucHJvdG90eXBlLk89ZnVuY3Rpb24oKXtmZyh0aGlzKX07CnZhciBmZz1mdW5jdGlvbihhKXtpZihhLmgmJnR5cGVvZiBqYyE9InVuZGVmaW5lZCIpaWYoYS5vJiYoYS5nP2EuZy5yZWFkeVN0YXRlOjApPT00KXNldFRpbWVvdXQoYS5HLmJpbmQoYSksMCk7ZWxzZSBpZihhLmRpc3BhdGNoRXZlbnQoInJlYWR5c3RhdGVjaGFuZ2UiKSwoYS5nP2EuZy5yZWFkeVN0YXRlOjApPT00KXthLmg9ITE7dHJ5e18uZ2coYSk/KGEuZGlzcGF0Y2hFdmVudCgiY29tcGxldGUiKSxhLmRpc3BhdGNoRXZlbnQoInN1Y2Nlc3MiKSk6ZGcoYSl9ZmluYWxseXtlZyhhKX19fSxlZz1mdW5jdGlvbihhLGIpe2lmKGEuZyl7YS5sJiYoY2xlYXJUaW1lb3V0KGEubCksYS5sPW51bGwpO3ZhciBjPWEuZzthLmc9bnVsbDtifHxhLmRpc3BhdGNoRXZlbnQoInJlYWR5Iik7dHJ5e2Mub25yZWFkeXN0YXRlY2hhbmdlPW51bGx9Y2F0Y2goZCl7fX19O18uV2YucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmd9OwpfLmdnPWZ1bmN0aW9uKGEpe3ZhciBiPV8uaGcoYSk7YTpzd2l0Y2goYil7Y2FzZSAyMDA6Y2FzZSAyMDE6Y2FzZSAyMDI6Y2FzZSAyMDQ6Y2FzZSAyMDY6Y2FzZSAzMDQ6Y2FzZSAxMjIzOnZhciBjPSEwO2JyZWFrIGE7ZGVmYXVsdDpjPSExfWlmKCFjKXtpZihiPWI9PT0wKWE9U3RyaW5nKGEuQSkubWF0Y2goXy5yZilbMV18fG51bGwsIWEmJl8udi5zZWxmJiZfLnYuc2VsZi5sb2NhdGlvbiYmKGE9Xy52LnNlbGYubG9jYXRpb24ucHJvdG9jb2wuc2xpY2UoMCwtMSkpLGI9IVhmLnRlc3QoYT9hLnRvTG93ZXJDYXNlKCk6IiIpO2M9Yn1yZXR1cm4gY307Xy5oZz1mdW5jdGlvbihhKXt0cnl7cmV0dXJuKGEuZz9hLmcucmVhZHlTdGF0ZTowKT4yP2EuZy5zdGF0dXM6LTF9Y2F0Y2goYil7cmV0dXJuLTF9fTtfLmlnPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYS5nP2EuZy5yZXNwb25zZVRleHQ6IiJ9Y2F0Y2goYil7cmV0dXJuIiJ9fTt2YXIga2c9ZnVuY3Rpb24oYSl7Xy51LmNhbGwodGhpcyk7dGhpcy5GPWE7dGhpcy5CPU1mKGEpO3RoaXMubD10aGlzLm89bnVsbDt0aGlzLkk9ITA7dGhpcy5oPW5ldyBfLkhiKHRoaXMpO3RoaXMuRz1bXTt0aGlzLkE9bmV3IFNldDt0aGlzLmc9W107dGhpcy5LPW5ldyBqZzt0aGlzLmo9W107dGhpcy5DPSExO2E9KDAsXy55KSh0aGlzLkQsdGhpcyk7c2YudmVyc2lvbj1hfTtfLkIoa2csXy51KTsKdmFyIGxnPWZ1bmN0aW9uKGEsYil7YS5nLmxlbmd0aCYmUGUoYixhLmdbYS5nLmxlbmd0aC0xXSk7YS5nLnB1c2goYik7TWUoYixmdW5jdGlvbigpe18udmEodGhpcy5nLGIpfSxhKX0sZmY9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZD09PXZvaWQgMD97fTpkO3ZhciBmPWUuamg7ZD1lLm1oO3ZhciBnPWUuZmU7ZT1lLkZpO2I9bWcoYSxiLGMsZixkKTtuZyhhLGIsZyxlLGQpfSxtZz1mdW5jdGlvbihhLGIsYyxkLGUpe2Q9ZD09PXZvaWQgMD9OYz9uZXcgTWFwOnt9OmQ7dmFyIGY9W107b2coYSxiLGMsZCxlPT09dm9pZCAwPyExOmUsZnVuY3Rpb24oZyl7Zi5wdXNoKGcuUmEoKSl9KTtyZXR1cm4gZn0sb2c9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7Zz1nPT09dm9pZCAwP3t9Omc7Yj1fLkMoYik7Zm9yKHZhciBoPWIubmV4dCgpOyFoLmRvbmU7aD1iLm5leHQoKSl7dmFyIGs9aC52YWx1ZTtoPWMuZ2V0KGspOyFlJiYoYS5BLmhhcyhrKXx8aC5nKXx8Z1trXXx8KGdba109ITAsaz1kIGluc3RhbmNlb2YKTWFwPyhrPWQuZ2V0KGspKT9BcnJheS5mcm9tKGspOltdOmRba10/T2JqZWN0LmtleXMoZFtrXSk6W10sb2coYSxoLmwuY29uY2F0KGspLGMsZCxlLGYsZyksZihoKSl9fSxuZz1mdW5jdGlvbihhLGIsYyxkLGUpe2U9ZT09PXZvaWQgMD8hMTplO3ZhciBmPVtdLGc9bmV3IEJiO2I9W2JdO2Zvcih2YXIgaD1mdW5jdGlvbihxLHApe2Zvcih2YXIgcj1bXSx0PTAsQT1NYXRoLmZsb29yKHEubGVuZ3RoL3ApKzEsRD0wO0Q8cDtEKyspe3ZhciBFPShEKzEpKkE7ci5wdXNoKHEuc2xpY2UodCxFKSk7dD1FfXJldHVybiByfSxrPWIuc2hpZnQoKTtrOyl7dmFyIGw9cGcoYSxrLCEhZSwhMCk7aWYobC5sZW5ndGg8PTJFMyl7aWYoaz1yZyhhLGssZSkpZi5wdXNoKGspLFBlKGcsay5nKX1lbHNlIGI9aChrLE1hdGguY2VpbChsLmxlbmd0aC8yRTMpKS5jb25jYXQoYik7az1iLnNoaWZ0KCl9dmFyIG49bmV3IEJiO2xnKGEsbik7TWUobixmdW5jdGlvbigpe3JldHVybiBzZyhhLGYsYyxkKX0pO05lKG4sCmZ1bmN0aW9uKCl7dmFyIHE9bmV3IHRnO3Euaj0hMDtxLmg9LTE7c2codGhpcyxbcV0sYyxkKX0sYSk7TWUoZyxmdW5jdGlvbigpe3JldHVybiBuLmcoKX0pO2cuZygpfSxyZz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9cGcoYSxiLCEoYz09PXZvaWQgMHx8IWMpKTthLkcucHVzaChkKTtiPV8uQyhiKTtmb3IoYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYS5BLmFkZChjLnZhbHVlKTtpZihhLkMpYT1fLndkKGRvY3VtZW50LCJTQ1JJUFQiKSxfLlNhKGEsXy5MYihkKSksYS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLGEuYXN5bmM9ITEsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtlbHNle3ZhciBlPW5ldyB0ZyxmPW5ldyBfLldmKGEuai5sZW5ndGg+MD9uZXcgSmI6dm9pZCAwKTthLmguTihmLCJzdWNjZXNzIiwoMCxfLnkpKGUuQixlLGYpKTthLmguTihmLCJlcnJvciIsKDAsXy55KShlLkEsZSxmKSk7YS5oLk4oZiwidGltZW91dCIsKDAsXy55KShlLkMsZSkpO1BmKGEuaCwKZiwicmVhZHkiLGYuZGlzcG9zZSwhMSxmKTtmLkI9M0U0O3VnKGEuSyxmdW5jdGlvbigpe2Yuc2VuZChkKTtyZXR1cm4gZS5nfSk7cmV0dXJuIGV9cmV0dXJuIG51bGx9LHNnPWZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZT0hMSxmLGc9ITEsaD0wO2g8Yi5sZW5ndGg7aCsrKXt2YXIgaz1iW2hdO2lmKCFmJiZrLmope2U9ITA7Zj1rLmg7YnJlYWt9ZWxzZSBrLmwmJihnPSEwKX1oPV8ud2EoYS5nKTsoZXx8ZykmJmYhPS0xJiYoYS5nLmxlbmd0aD0wKTtpZihlKWMmJmMoZik7ZWxzZSBpZihnKWQmJmQoKTtlbHNlIGZvcihhPTA7YTxiLmxlbmd0aDthKyspZD1iW2FdLHZnKGQubyxkLkNhKXx8YyYmYyg4MDAxKTsoZXx8ZykmJmYhPS0xJiZfLnZjKGgsZnVuY3Rpb24obCl7bC5jYW5jZWwoKX0pfTtrZy5wcm90b3R5cGUuTT1mdW5jdGlvbigpe3RoaXMuaC5kaXNwb3NlKCk7ZGVsZXRlIHNmLnZlcnNpb247Xy51LnByb3RvdHlwZS5NLmNhbGwodGhpcyl9OwprZy5wcm90b3R5cGUuRD1mdW5jdGlvbigpe3JldHVybiBHZih0aGlzLkIsImsiKX07CnZhciBwZz1mdW5jdGlvbihhLGIsYyxkKXtkPWQ9PT12b2lkIDA/ITE6ZDt2YXIgZT1fLkNiKGEuRi5tYXRjaChfLnJmKVszXXx8bnVsbCk7aWYoYS5qLmxlbmd0aD4wJiYhXy50YShhLmosZSkmJmUhPW51bGwmJndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSE9ZSl0aHJvdyBFcnJvcigiV2AiK2UpO3ZhciBmPWEuQjtlPW5ldyBFZjtlLmc9T2JqZWN0LmFzc2lnbih7fSxmLmcpO2Uuaj1mLmo7ZS5oPU9iamVjdC5hc3NpZ24oe30sZi5oKTtkZWxldGUgZS5nLm07ZGVsZXRlIGUuZy5leG07ZGVsZXRlIGUuZy5lZDtpZihiKXtmPV8uQyhiKTtmb3IodmFyIGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKWlmKGc9Zy52YWx1ZSwhTmYudGVzdChnKSl0aHJvdyBFcnJvcigiTWAiK2cpO31JZihlLCJtIixiLmpvaW4oIiwiKSk7YS5vJiYoSWYoZSwiY2siLGEubyksYS5sJiZJZihlLCJycyIsYS5sKSk7SWYoZSwiZCIsIjAiKTtjJiYoZS5oLnp4PU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoKMjE0NzQ4MzY0OCkudG9TdHJpbmcoMzYpK01hdGguYWJzKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoyMTQ3NDgzNjQ4KV5EYXRlLm5vdygpKS50b1N0cmluZygzNikpO2E9ZS50b1N0cmluZygpO2QmJmEubGFzdEluZGV4T2YoIi8iLDApPT0wJiYoZT1kb2N1bWVudC5sb2NhdGlvbi5ocmVmLm1hdGNoKF8ucmYpLGQ9ZVsxXSxiPWVbMl0sYz1lWzNdLGU9ZVs0XSxmPSIiLGQmJihmKz1kKyI6IiksYyYmKGYrPSIvLyIsYiYmKGYrPWIrIkAiKSxmKz1jLGUmJihmKz0iOiIrZSkpLGE9ZithKTtyZXR1cm4gYX0sdmc9ZnVuY3Rpb24oYSxiKXt2YXIgYz0iIjtpZihhLmxlbmd0aD4xJiZhLmNoYXJBdChhLmxlbmd0aC0xKT09PSJcbiIpe3ZhciBkPWEubGFzdEluZGV4T2YoIlxuIixhLmxlbmd0aC0yKTtkPj0wJiYoYz1hLnN1YnN0cmluZyhkKzEsYS5sZW5ndGgtMSkpfWQ9Yy5sZW5ndGgtMTE7aWYoZD49MCYmYy5pbmRleE9mKCJHb29nbGUgSW5jLiIsZCk9PWR8fGMubGFzdEluZGV4T2YoIi8vIyBzb3VyY2VNYXBwaW5nVVJMPSIsCjApPT0wKXRyeXtjPXdpbmRvdzthPWErIlxyXG4vLyMgc291cmNlVVJMPSIrYjthPV8uS2IoYSk7dmFyIGU9Xy5RYShhKTt2YXIgZj1fLlJhKGUpO2MuZXZhbChmKT09PWYmJmMuZXZhbChmLnRvU3RyaW5nKCkpfWNhdGNoKGcpe3JldHVybiExfWVsc2UgcmV0dXJuITE7cmV0dXJuITB9LHdnPWZ1bmN0aW9uKGEpe3ZhciBiPV8uQ2IoYS5tYXRjaChfLnJmKVs1XXx8bnVsbCl8fCIiO2I9Xy5DYihLZihiKS5tYXRjaChfLnJmKVs1XXx8bnVsbCk7cmV0dXJuKGI9PT1udWxsPzA6UmVnRXhwKCIoL18vanMvKXwoL18vc3MvKSIsImciKS50ZXN0KGIpJiYvXC9rPS8udGVzdChiKSk/YTpudWxsfSx0Zz1mdW5jdGlvbigpe3RoaXMuZz1uZXcgQmI7dGhpcy5DYT10aGlzLm89IiI7dGhpcy5qPSExO3RoaXMuaD0wO3RoaXMubD0hMX07dGcucHJvdG90eXBlLkI9ZnVuY3Rpb24oYSl7dGhpcy5vPV8uaWcoYSk7dGhpcy5DYT1TdHJpbmcoYS5BKTt0aGlzLmcuZygpfTsKdGcucHJvdG90eXBlLkE9ZnVuY3Rpb24oYSl7dGhpcy5qPSEwO3RoaXMuaD1fLmhnKGEpO3RoaXMuZy5nKCl9O3RnLnByb3RvdHlwZS5DPWZ1bmN0aW9uKCl7dGhpcy5sPSEwO3RoaXMuZy5nKCl9O3ZhciBqZz1mdW5jdGlvbigpe3RoaXMuZz0wO3RoaXMuaD1bXX0sdWc9ZnVuY3Rpb24oYSxiKXthLmgucHVzaChiKTt4ZyhhKX0seGc9ZnVuY3Rpb24oYSl7Zm9yKDthLmc8NSYmYS5oLmxlbmd0aDspeWcoYSxhLmguc2hpZnQoKSl9LHlnPWZ1bmN0aW9uKGEsYil7YS5nKys7TWUoYigpLGZ1bmN0aW9uKCl7dGhpcy5nLS07eGcodGhpcyl9LGEpfTt2YXIgemc9bmV3IERmKCExKSxBZz1kb2N1bWVudC5sb2NhdGlvbi5ocmVmOwpxZih7ZmxhZ3M6e2RtbDp6Z30saW5pdGlhbGl6ZTpmdW5jdGlvbihhKXt2YXIgYj16Zy5nZXQoKSxjPSIiLGQ9IiI7d2luZG93JiZ3aW5kb3cuX0ZfY3NzUm93S2V5JiYoYz13aW5kb3cuX0ZfY3NzUm93S2V5LHdpbmRvdy5fRl9jb21iaW5lZFNpZ25hdHVyZSYmKGQ9d2luZG93Ll9GX2NvbWJpbmVkU2lnbmF0dXJlKSk7aWYoYyYmdHlwZW9mIHdpbmRvdy5fRl9pbnN0YWxsQ3NzIT09ImZ1bmN0aW9uIil0aHJvdyBFcnJvcigiVSIpO3ZhciBlLGY9Xy52Ll9GX2pzVXJsO2YmJihlPXdnKGYpKTshZSYmKGY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJhc2UtanMiKSkmJihlPWYuc3JjP2Yuc3JjOmYuZ2V0QXR0cmlidXRlKCJocmVmIiksZT13ZyhlKSk7ZXx8KGU9d2coQWcpKTtlfHwoZT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IiksZT13ZyhlW2UubGVuZ3RoLTFdLnNyYykpO2lmKCFlKXRocm93IEVycm9yKCJWIik7ZT1uZXcga2coZSk7YyYmKGUubz1jKTsKZCYmKGUubD1kKTtlLkM9YjtiPWphKCk7Yi5PPWU7Yi5YZighMCk7Yj1qYSgpO2Iuc2UoYSk7YS5qKGIpfX0pOwpfLl9Nb2R1bGVNYW5hZ2VyX2luaXRpYWxpemU9ZnVuY3Rpb24oYSxiKXtpZighXy5kYSl7aWYoIV8uaGEpcmV0dXJuO18uaWEoKX1fLmRhLnFlKGEsYil9OwpfLl9Nb2R1bGVNYW5hZ2VyX2luaXRpYWxpemUoJ2IvbjczcXdmL1VVSnFWZS9NcEp3WmMvZWxfY29uZi9lbF9tYWluX2Nzcy9zeTEvc3kyOjYvc3kzOjcvc3k0OjYvZWxfbWFpbjo1LDgsOS9jb3JzcHJveHkvd2Vic2l0ZV9lcnJvci9uYXZpZ2F0aW9udWk6Ny9waGlzaGluZ19wcm90ZWN0aW9uOjgvX3N0YW06OScsWydzeTEnLCdzeTInLCdzeTMnLCdzeTQnLCdlbF9tYWluX2NzcycsJ2VsX21haW4nXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBHZyxIZyxJZyxYZyxjaCxpaCxqaCxsaCxtaCxvaCxzaCx1aCx0aCxBaCxCaCxGaCxEaCxFaCxEZztfLkVnPWZ1bmN0aW9uKGEpe2lmKERnLnRlc3QoYSkpcmV0dXJuIGF9O18uRmc9ZnVuY3Rpb24oYSxiKXthLl9fY2xvc3VyZV9fZXJyb3JfX2NvbnRleHRfXzk4NDM4Mnx8KGEuX19jbG9zdXJlX19lcnJvcl9fY29udGV4dF9fOTg0MzgyPXt9KTthLl9fY2xvc3VyZV9fZXJyb3JfX2NvbnRleHRfXzk4NDM4Mi5zZXZlcml0eT1ifTtHZz1mdW5jdGlvbihhKXtpZighXy5VYXx8IV8uVmEpcmV0dXJuITE7Zm9yKHZhciBiPTA7YjxfLlZhLmJyYW5kcy5sZW5ndGg7YisrKXt2YXIgYz1fLlZhLmJyYW5kc1tiXS5icmFuZDtpZihjJiZjLmluZGV4T2YoYSkhPS0xKXJldHVybiEwfXJldHVybiExfTtIZz1mdW5jdGlvbigpe3JldHVybiBfLncoIkZpcmVmb3giKXx8Xy53KCJGeGlPUyIpfTsKSWc9ZnVuY3Rpb24oKXtyZXR1cm4gXy5XYSgpP0dnKCJDaHJvbWl1bSIpOihfLncoIkNocm9tZSIpfHxfLncoIkNyaU9TIikpJiYhKF8uV2EoKT8wOl8udygiRWRnZSIpKXx8Xy53KCJTaWxrIil9O18uSmc9ZnVuY3Rpb24oKXtyZXR1cm4gXy53KCJTYWZhcmkiKSYmIShJZygpfHwoXy5XYSgpPzA6Xy53KCJDb2FzdCIpKXx8Xy5YYSgpfHwoXy5XYSgpPzA6Xy53KCJFZGdlIikpfHwoXy5XYSgpP0dnKCJNaWNyb3NvZnQgRWRnZSIpOl8udygiRWRnLyIpKXx8KF8uV2EoKT9HZygiT3BlcmEiKTpfLncoIk9QUiIpKXx8SGcoKXx8Xy53KCJTaWxrIil8fF8udygiQW5kcm9pZCIpKX07Xy5LZz1mdW5jdGlvbigpe3JldHVybiBfLncoIkFuZHJvaWQiKSYmIShJZygpfHxIZygpfHxfLlhhKCl8fF8udygiU2lsayIpKX07Cl8uTWc9ZnVuY3Rpb24oYSxiKXtpZihhIT1udWxsKXt2YXIgYzt2YXIgZD0oYz1MZykhPW51bGw/YzpMZz17fTtjPWRbYV18fDA7Yz49Ynx8KGRbYV09YysxLGE9RXJyb3IoKSxfLkZnKGEsImluY2lkZW50IiksXy5yYihhKSl9fTtfLk5nPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdHlwZW9mIFN5bWJvbD09PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2woKT09PSJzeW1ib2wiPyhjPT09dm9pZCAwPzA6YykmJlN5bWJvbC5mb3ImJmE/U3ltYm9sLmZvcihhKTphIT1udWxsP1N5bWJvbChhKTpTeW1ib2woKTpifTtfLlJnPWZ1bmN0aW9uKGEsYil7Xy5PZ3x8Xy5IIGluIGF8fFBnKGEsUWcpO2FbXy5IXXw9Yn07Xy5TZz1mdW5jdGlvbihhLGIpe18uT2d8fF8uSCBpbiBhfHxQZyhhLFFnKTthW18uSF09Yn07Xy5UZz1mdW5jdGlvbihhKXtfLlJnKGEsMzQpO3JldHVybiBhfTtfLlVnPWZ1bmN0aW9uKGEpe18uUmcoYSw4MTkyKTtyZXR1cm4gYX07Cl8uV2c9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PXZvaWQgMD9hLmchPT1fLlZnJiYhISgyJihhLkpbXy5IXXwwKSk6ISEoMiZiKSYmYS5nIT09Xy5WZ307WGc9ZnVuY3Rpb24oYSl7YS5UbD0hMDtyZXR1cm4gYX07Xy5iaD1mdW5jdGlvbihhKXt2YXIgYj1hO2lmKFlnKGIpKXtpZighL15ccyooPzotP1sxLTldXGQqfDApP1xzKiQvLnRlc3QoYikpdGhyb3cgRXJyb3IoU3RyaW5nKGIpKTt9ZWxzZSBpZihaZyhiKSYmIU51bWJlci5pc1NhZmVJbnRlZ2VyKGIpKXRocm93IEVycm9yKFN0cmluZyhiKSk7cmV0dXJuICRnP0JpZ0ludChhKTphPWFoKGEpP2E/IjEiOiIwIjpZZyhhKT9hLnRyaW0oKXx8IjAiOlN0cmluZyhhKX07CmNoPWZ1bmN0aW9uKGEsYil7aWYoYS5sZW5ndGg+Yi5sZW5ndGgpcmV0dXJuITE7aWYoYS5sZW5ndGg8Yi5sZW5ndGh8fGE9PT1iKXJldHVybiEwO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9YltjXTtpZihkPmUpcmV0dXJuITE7aWYoZDxlKXJldHVybiEwfX07Xy5oaD1mdW5jdGlvbihhLGIsYyxkKXtpZihhIT1udWxsJiZhW2RoXT09PWVoKXJldHVybiBhO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBjP2QmMj9iW18uZmhdfHwoYltfLmZoXT1fLmdoKGIpKTpuZXcgYjp2b2lkIDA7Yz1hW18uSF18MDtkPWN8ZCYzMnxkJjI7ZCE9PWMmJl8uU2coYSxkKTtyZXR1cm4gbmV3IGIoYSl9O18uZ2g9ZnVuY3Rpb24oYSl7YT1uZXcgYTtfLlRnKGEuSik7cmV0dXJuIGF9O2loPWZ1bmN0aW9uKGEpe3JldHVybiBhfTtqaD1mdW5jdGlvbihhKXtyZXR1cm4gYX07CmxoPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXthPV8uaGgoYSxkLGMsZik7ZSYmKGE9Xy5raChhKSk7cmV0dXJuIGF9O21oPWZ1bmN0aW9uKGEpe3JldHVyblthLHRoaXMuZ2V0KGEpXX07b2g9ZnVuY3Rpb24oYSxiKXtiPDEwMHx8Xy5NZyhuaCwxKX07CnNoPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWQhPT12b2lkIDA7ZD0hIWQ7dmFyIGY9Xy5waChfLnFoKSxnOyFlJiZfLk9nJiZmJiYoZz1hW2ZdKSYmZy5UayhvaCk7Zj1bXTt2YXIgaD1hLmxlbmd0aDtnPTQyOTQ5NjcyOTU7dmFyIGs9ITEsbD0hIShiJjY0KSxuPWw/YiYxMjg/MDotMTp2b2lkIDA7aWYoIShiJjEpKXt2YXIgcT1oJiZhW2gtMV07cSE9bnVsbCYmdHlwZW9mIHE9PT0ib2JqZWN0IiYmcS5jb25zdHJ1Y3Rvcj09PU9iamVjdD8oaC0tLGc9aCk6cT12b2lkIDA7aWYobCYmIShiJjEyOCkmJiFlKXtrPSEwO3ZhciBwO2c9KChwPXJoKSE9bnVsbD9wOmloKShnLW4sbixhLHEsdm9pZCAwKStufX1iPXZvaWQgMDtmb3IoZT0wO2U8aDtlKyspaWYocD1hW2VdLHAhPW51bGwmJihwPWMocCxkKSkhPW51bGwpaWYobCYmZT49Zyl7dmFyIHI9ZS1uLHQ9dm9pZCAwOygodD1iKSE9bnVsbD90OmI9e30pW3JdPXB9ZWxzZSBmW2VdPXA7aWYocSlmb3IodmFyIEEgaW4gcSlhPXFbQV0sYSE9Cm51bGwmJihhPWMoYSxkKSkhPW51bGwmJihoPStBLGU9dm9pZCAwLGwmJiFOdW1iZXIuaXNOYU4oaCkmJihlPWgrbik8Zz9mW2VdPWE6KGg9dm9pZCAwLCgoaD1iKSE9bnVsbD9oOmI9e30pW0FdPWEpKTtiJiYoaz9mLnB1c2goYik6ZltnXT1iKTtyZXR1cm4gZn07dWg9ZnVuY3Rpb24oYSl7YVswXT10aChhWzBdKTthWzFdPXRoKGFbMV0pO3JldHVybiBhfTsKdGg9ZnVuY3Rpb24oYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNGaW5pdGUoYSk/YToiIithO2Nhc2UgImJpZ2ludCI6cmV0dXJuKDAsXy52aCkoYSk/TnVtYmVyKGEpOiIiK2E7Y2FzZSAiYm9vbGVhbiI6cmV0dXJuIGE/MTowO2Nhc2UgIm9iamVjdCI6aWYoQXJyYXkuaXNBcnJheShhKSl7dmFyIGI9YVtfLkhdfDA7cmV0dXJuIGEubGVuZ3RoPT09MCYmYiYxP3ZvaWQgMDpzaChhLGIsdGgpfWlmKGEhPW51bGwmJmFbZGhdPT09ZWgpcmV0dXJuIF8ud2goYSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIF8ueGgmJmEgaW5zdGFuY2VvZiBfLnhoKXJldHVybiBhLmcoKTtpZihhIGluc3RhbmNlb2YgXy55aClyZXR1cm4gYT1hLnNpemUhPT0wP18uemgoYSx1aCk6dm9pZCAwLGE7cmV0dXJufXJldHVybiBhfTtfLndoPWZ1bmN0aW9uKGEpe2E9YS5KO3JldHVybiBzaChhLGFbXy5IXXwwLHRoKX07Cl8uST1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEFoKGEsYixjLDIwNDgpfTsKQWg9ZnVuY3Rpb24oYSxiLGMsZCl7ZD1kPT09dm9pZCAwPzA6ZDtpZihhPT1udWxsKXt2YXIgZT0zMjtjPyhhPVtjXSxlfD0xMjgpOmE9W107YiYmKGU9ZSYtMTY3NjA4MzN8KGImMTAyMyk8PDE0KX1lbHNle2lmKCFBcnJheS5pc0FycmF5KGEpKXRocm93IEVycm9yKCJiYSIpO2U9YVtfLkhdfDA7aWYoXy5NYyYmMSZlKXRocm93IEVycm9yKCJjYSIpOzIwNDgmZSYmISgyJmUpJiZCaCgpO2lmKGUmMjU2KXRocm93IEVycm9yKCJkYSIpO2lmKGUmNjQpcmV0dXJuKGV8ZCkhPT1lJiZfLlNnKGEsZXxkKSxhO2lmKGMmJihlfD0xMjgsYyE9PWFbMF0pKXRocm93IEVycm9yKCJlYSIpO2E6e2M9YTtlfD02NDt2YXIgZj1jLmxlbmd0aDtpZihmKXt2YXIgZz1mLTEsaD1jW2ddO2lmKGghPW51bGwmJnR5cGVvZiBoPT09Im9iamVjdCImJmguY29uc3RydWN0b3I9PT1PYmplY3Qpe2I9ZSYxMjg/MDotMTtnLT1iO2lmKGc+PTEwMjQpdGhyb3cgRXJyb3IoImdhIik7Zm9yKHZhciBrIGluIGgpZj0raywKZjxnJiYoY1tmK2JdPWhba10sZGVsZXRlIGhba10pO2U9ZSYtMTY3NjA4MzN8KGcmMTAyMyk8PDE0O2JyZWFrIGF9fWlmKGIpe2s9TWF0aC5tYXgoYixmLShlJjEyOD8wOi0xKSk7aWYoaz4xMDI0KXRocm93IEVycm9yKCJoYSIpO2U9ZSYtMTY3NjA4MzN8KGsmMTAyMyk8PDE0fX19Xy5TZyhhLGV8NjR8ZCk7cmV0dXJuIGF9O0JoPWZ1bmN0aW9uKCl7aWYoXy5NYyl0aHJvdyBFcnJvcigiZmEiKTtfLk1nKENoLDUpfTsKRmg9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYSE9PSJvYmplY3QiKXJldHVybiBhO2lmKEFycmF5LmlzQXJyYXkoYSkpe3ZhciBjPWFbXy5IXXwwO3JldHVybiBhLmxlbmd0aD09PTAmJmMmMT92b2lkIDA6RGgoYSxjLGIpfWlmKGEhPW51bGwmJmFbZGhdPT09ZWgpcmV0dXJuIEVoKGEpO2lmKGEgaW5zdGFuY2VvZiBfLnloKXtiPWEuS2I7aWYoYiYyKXJldHVybiBhO2lmKCFhLnNpemUpcmV0dXJuO2M9Xy5UZyhfLnpoKGEpKTtpZihhLkdiKWZvcihhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBkPWNbYV0sZT1kWzFdO2U9PW51bGx8fHR5cGVvZiBlIT09Im9iamVjdCI/ZT12b2lkIDA6ZSE9bnVsbCYmZVtkaF09PT1laD9lPUVoKGUpOkFycmF5LmlzQXJyYXkoZSk/ZT1EaChlLGVbXy5IXXwwLCEhKGImMzIpKTplPXZvaWQgMDtkWzFdPWV9cmV0dXJuIGN9aWYoImZ1bmN0aW9uIj09dHlwZW9mIF8ueGgmJmEgaW5zdGFuY2VvZiBfLnhoKXJldHVybiBhfTsKRGg9ZnVuY3Rpb24oYSxiLGMpe2lmKGImMilyZXR1cm4gYTshY3x8NDA5NiZifHwxNiZiP2E9Xy5HaChhLGIsITEsYyYmIShiJjE2KSk6KF8uUmcoYSwzNCksYiY0JiZPYmplY3QuZnJlZXplKGEpKTtyZXR1cm4gYX07Xy5IaD1mdW5jdGlvbihhLGIsYyl7YT1uZXcgYS5jb25zdHJ1Y3RvcihiKTtjJiYoYS5nPV8uVmcpO2EuaD1fLlZnO3JldHVybiBhfTtFaD1mdW5jdGlvbihhKXt2YXIgYj1hLkosYz1iW18uSF18MDtyZXR1cm4gXy5XZyhhLGMpP2E6Xy5JaChhLGIsYyk/Xy5IaChhLGIpOl8uR2goYixjKX07Xy5HaD1mdW5jdGlvbihhLGIsYyxkKXtkIT1udWxsfHwoZD0hISgzNCZiKSk7YT1zaChhLGIsRmgsZCk7ZD0zMjtjJiYoZHw9Mik7Yj1iJjE2NzY5MjE3fGQ7Xy5TZyhhLGIpO3JldHVybiBhfTsKXy5raD1mdW5jdGlvbihhKXt2YXIgYj1hLkosYz1iW18uSF18MDtyZXR1cm4gXy5XZyhhLGMpP18uSWgoYSxiLGMpP18uSGgoYSxiLCEwKTpuZXcgYS5jb25zdHJ1Y3RvcihfLkdoKGIsYywhMSkpOmF9O18uSWg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjJjI/ITA6YyYzMiYmIShjJjQwOTYpPyhfLlNnKGIsY3wyKSxhLmc9Xy5WZywhMCk6ITF9O18ucGg9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9O0RnPS9eXHMqKD8hamF2YXNjcmlwdDopKD86W1x3Ky4tXSs6fFteOi8/I10qKD86Wy8/I118JCkpL2k7Xy5KaD1IZygpO18uS2g9Xy5aYSgpfHxfLncoImlQb2QiKTtfLkxoPV8udygiaVBhZCIpO18uTWg9Xy5LZygpO18uTmg9SWcoKTtfLk9oPV8uSmcoKSYmIV8uJGEoKTtfLlBoPSFfLlNjJiZ0eXBlb2YgYnRvYT09PSJmdW5jdGlvbiI7dmFyIExnPXZvaWQgMDt2YXIgUWgsbmgsQ2gsZGg7Xy5PZz10eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbCgpPT09InN5bWJvbCI7UWg9Xy5OZygiamFzIix2b2lkIDAsITApO18uZmg9Xy5OZyh2b2lkIDAsIjBkaSIpO18ucWg9Xy5OZyh2b2lkIDAsU3ltYm9sKCkpO18uUmg9Xy5OZyh2b2lkIDAsIjB1YiIpO25oPV8uTmcodm9pZCAwLCIwdWJzIik7Q2g9Xy5OZyh2b2lkIDAsIjBhY3RrIik7ZGg9Xy5OZygibV9tIiwiWGwiLCEwKTtfLlNoPV8uTmcoKTt2YXIgUWcsUGcsVWg7UWc9e2VpOnt2YWx1ZTowLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExfX07UGc9T2JqZWN0LmRlZmluZVByb3BlcnRpZXM7Xy5IPV8uT2c/UWg6ImVpIjtVaD1bXTtfLlNnKFVoLDcpO18uVGg9T2JqZWN0LmZyZWV6ZShVaCk7dmFyIGVoLFZoO2VoPXt9O18uVmc9e307Vmg9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZz1hO3RoaXMuaD1iO3RoaXMuaj1jfTtWaC5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZy5uZXh0KCk7YS5kb25lfHwoYS52YWx1ZT10aGlzLmguY2FsbCh0aGlzLmosYS52YWx1ZSkpO3JldHVybiBhfTtWaC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtfLldoPU9iamVjdC5mcmVlemUoe30pO18uWGg9T2JqZWN0LmZyZWV6ZSh7fSk7dmFyIFpnPVhnKGZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09PSJudW1iZXIifSksWWc9WGcoZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyJ9KSxhaD1YZyhmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PT0iYm9vbGVhbiJ9KTt2YXIgJGc9dHlwZW9mIF8udi5CaWdJbnQ9PT0iZnVuY3Rpb24iJiZ0eXBlb2YgXy52LkJpZ0ludCgwKT09PSJiaWdpbnQiO3ZhciAkaCxZaCxhaSxaaDtfLnZoPVhnKGZ1bmN0aW9uKGEpe3JldHVybiAkZz9hPj1ZaCYmYTw9Wmg6YVswXT09PSItIj9jaChhLCRoKTpjaChhLGFpKX0pOyRoPU51bWJlci5NSU5fU0FGRV9JTlRFR0VSLnRvU3RyaW5nKCk7WWg9JGc/QmlnSW50KE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKTp2b2lkIDA7YWk9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIudG9TdHJpbmcoKTtaaD0kZz9CaWdJbnQoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpOnZvaWQgMDtfLmJpPXR5cGVvZiBCaWdJbnQ9PT0iZnVuY3Rpb24iP0JpZ0ludC5hc0ludE46dm9pZCAwO18uY2k9TnVtYmVyLmlzU2FmZUludGVnZXI7Xy5kaT1OdW1iZXIuaXNGaW5pdGU7Xy5laT1NYXRoLnRydW5jO3ZhciBmaT1mdW5jdGlvbigpe3RyeXt2YXIgYT1mdW5jdGlvbigpe3JldHVybigwLF8uVGIpKE1hcCxbXSx0aGlzLmNvbnN0cnVjdG9yKX07Xy5CKGEsTWFwKTtfLlFjKG5ldyBhKTtyZXR1cm4hMX1jYXRjaChiKXtyZXR1cm4hMH19KCksZ2k9ZnVuY3Rpb24oKXt0aGlzLmc9bmV3IE1hcH0saGksaWk7Xy5tPWdpLnByb3RvdHlwZTtfLm0uZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmcuZ2V0KGEpfTtfLm0uc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5nLnNldChhLGIpO3RoaXMuc2l6ZT10aGlzLmcuc2l6ZTtyZXR1cm4gdGhpc307Xy5tLmRlbGV0ZT1mdW5jdGlvbihhKXthPXRoaXMuZy5kZWxldGUoYSk7dGhpcy5zaXplPXRoaXMuZy5zaXplO3JldHVybiBhfTtfLm0uY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmcuY2xlYXIoKTt0aGlzLnNpemU9dGhpcy5nLnNpemV9O18ubS5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZy5oYXMoYSl9O18ubS5lbnRyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZy5lbnRyaWVzKCl9OwpfLm0ua2V5cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcua2V5cygpfTtfLm0udmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZy52YWx1ZXMoKX07Xy5tLmZvckVhY2g9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5nLmZvckVhY2goYSxiKX07Z2kucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbnRyaWVzKCl9O2hpPWZ1bmN0aW9uKCl7aWYoZmkpcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihnaS5wcm90b3R5cGUsTWFwLnByb3RvdHlwZSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZ2kucHJvdG90eXBlLHtzaXplOnt2YWx1ZTowLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwfX0pLGdpO3ZhciBhPWZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5UYikoTWFwLFtdLHRoaXMuY29uc3RydWN0b3IpfTtfLkIoYSxNYXApO3JldHVybiBhfSgpOwpfLnloPWZ1bmN0aW9uKGEsYixjLGQpe2M9Yz09PXZvaWQgMD9qaDpjO2Q9ZD09PXZvaWQgMD9qaDpkO3ZhciBlPWhpLmNhbGwodGhpcyl8fHRoaXM7ZS5LYj1hW18uSF18MDtlLkdiPWI7ZS5hZD1jO2Uua2c9ZS5HYj9saDpkO2Zvcih2YXIgZj0wO2Y8YS5sZW5ndGg7ZisrKXt2YXIgZz1hW2ZdLGg9YyhnWzBdLCExLCEwKSxrPWdbMV07Yj9rPT09dm9pZCAwJiYoaz1udWxsKTprPWQoZ1sxXSwhMSwhMCx2b2lkIDAsdm9pZCAwLGUuS2IpO2hpLnByb3RvdHlwZS5zZXQuY2FsbChlLGgsayl9cmV0dXJuIGV9O18uQihfLnloLGhpKTtpaT1mdW5jdGlvbihhKXtpZihhLktiJjIpdGhyb3cgRXJyb3IoImFhIik7fTtfLnpoPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uVWcoQXJyYXkuZnJvbShoaS5wcm90b3R5cGUuZW50cmllcy5jYWxsKGEpLGIpKX07Xy5tPV8ueWgucHJvdG90eXBlO18ubS5jbGVhcj1mdW5jdGlvbigpe2lpKHRoaXMpO2hpLnByb3RvdHlwZS5jbGVhci5jYWxsKHRoaXMpfTsKXy5tLmRlbGV0ZT1mdW5jdGlvbihhKXtpaSh0aGlzKTtyZXR1cm4gaGkucHJvdG90eXBlLmRlbGV0ZS5jYWxsKHRoaXMsdGhpcy5hZChhLCEwLCExKSl9O18ubS5lbnRyaWVzPWZ1bmN0aW9uKCl7aWYodGhpcy5HYil7dmFyIGE9aGkucHJvdG90eXBlLmtleXMuY2FsbCh0aGlzKTthPW5ldyBWaChhLG1oLHRoaXMpfWVsc2UgYT1oaS5wcm90b3R5cGUuZW50cmllcy5jYWxsKHRoaXMpO3JldHVybiBhfTtfLm0udmFsdWVzPWZ1bmN0aW9uKCl7aWYodGhpcy5HYil7dmFyIGE9aGkucHJvdG90eXBlLmtleXMuY2FsbCh0aGlzKTthPW5ldyBWaChhLF8ueWgucHJvdG90eXBlLmdldCx0aGlzKX1lbHNlIGE9aGkucHJvdG90eXBlLnZhbHVlcy5jYWxsKHRoaXMpO3JldHVybiBhfTsKXy5tLmZvckVhY2g9ZnVuY3Rpb24oYSxiKXt0aGlzLkdiP2hpLnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodGhpcyxmdW5jdGlvbihjLGQsZSl7YS5jYWxsKGIsZS5nZXQoZCksZCxlKX0pOmhpLnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodGhpcyxhLGIpfTtfLm0uc2V0PWZ1bmN0aW9uKGEsYil7aWkodGhpcyk7YT10aGlzLmFkKGEsITAsITEpO3JldHVybiBhPT1udWxsP3RoaXM6Yj09bnVsbD8oaGkucHJvdG90eXBlLmRlbGV0ZS5jYWxsKHRoaXMsYSksdGhpcyk6aGkucHJvdG90eXBlLnNldC5jYWxsKHRoaXMsYSx0aGlzLmtnKGIsITAsITAsdGhpcy5HYiwhMSx0aGlzLktiKSl9O18ubS5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGhpLnByb3RvdHlwZS5oYXMuY2FsbCh0aGlzLHRoaXMuYWQoYSwhMSwhMSkpfTsKXy5tLmdldD1mdW5jdGlvbihhKXthPXRoaXMuYWQoYSwhMSwhMSk7dmFyIGI9aGkucHJvdG90eXBlLmdldC5jYWxsKHRoaXMsYSk7aWYoYiE9PXZvaWQgMCl7dmFyIGM9dGhpcy5HYjtyZXR1cm4gYz8oYz10aGlzLmtnKGIsITEsITAsYyx0aGlzLk5rLHRoaXMuS2IpLGMhPT1iJiZoaS5wcm90b3R5cGUuc2V0LmNhbGwodGhpcyxhLGMpLGMpOmJ9fTtfLnloLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfTtfLnloLnByb3RvdHlwZS50b0pTT049dm9pZCAwO3ZhciByaDtfLmppPV8uYmgoMCk7Xy5KPWZ1bmN0aW9uKGEsYixjKXt0aGlzLko9Xy5JKGEsYixjKX07Xy5KLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gXy53aCh0aGlzKX07Xy5KLnByb3RvdHlwZVtkaF09ZWg7Xy5KLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkoudG9TdHJpbmcoKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBMaSxNaSxOaSxPaSxSaSxQaSxRaSxTaSxVaSxXaSxYaTtfLmtpPWZ1bmN0aW9uKGEpe3ZhciBiPV8uZWMuYXBwbHkoMSxhcmd1bWVudHMpO2lmKGIubGVuZ3RoPT09MClyZXR1cm4gXy5NYShhWzBdKTtmb3IodmFyIGM9YVswXSxkPTA7ZDxiLmxlbmd0aDtkKyspYys9ZW5jb2RlVVJJQ29tcG9uZW50KGJbZF0pK2FbZCsxXTtyZXR1cm4gXy5NYShjKX07Xy5saT1mdW5jdGlvbihhKXtfLlJnKGEsMzIpO3JldHVybiBhfTtfLm1pPWZ1bmN0aW9uKGEpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhKX07Xy5uaT1mdW5jdGlvbihhKXtpZih0eXBlb2YgYSE9PSJib29sZWFuIil0aHJvdyBFcnJvcigiJGAiK18ub2MoYSkrImAiK2EpO3JldHVybiBhfTtfLm9pPWZ1bmN0aW9uKGEpe2lmKGE9PW51bGx8fHR5cGVvZiBhPT09ImJvb2xlYW4iKXJldHVybiBhO2lmKHR5cGVvZiBhPT09Im51bWJlciIpcmV0dXJuISFhfTsKXy5waT1mdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbHx8dHlwZW9mIGE9PT0ic3RyaW5nIj9hOnZvaWQgMH07Xy5xaT1mdW5jdGlvbihhKXtpZihhLmchPT1fLlZnKXJldHVybiExO3ZhciBiPWEuSjtiPV8uR2goYixiW18uSF18MCk7Xy5SZyhiLDIwNDgpO2EuSj1iO2EuZz12b2lkIDA7YS5oPXZvaWQgMDtyZXR1cm4hMH07Xy5yaT1mdW5jdGlvbihhKXtpZighXy5xaShhKSYmXy5XZyhhLGEuSltfLkhdfDApKXRocm93IEVycm9yKCk7fTtfLnNpPWZ1bmN0aW9uKGEsYil7Yj09PXZvaWQgMCYmKGI9YVtfLkhdfDApO2ImMzImJiEoYiY0MDk2KSYmXy5TZyhhLGJ8NDA5Nil9OwpfLnRpPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YysoZT8wOi0xKSxnPWEubGVuZ3RoLTE7aWYoZz49MSsoZT8wOi0xKSYmZj49Zyl7dmFyIGg9YVtnXTtpZihoIT1udWxsJiZ0eXBlb2YgaD09PSJvYmplY3QiJiZoLmNvbnN0cnVjdG9yPT09T2JqZWN0KXJldHVybiBoW2NdPWQsYn1pZihmPD1nKXJldHVybiBhW2ZdPWQsYjtpZihkIT09dm9pZCAwKXt2YXIgaztnPSgoaz1iKSE9bnVsbD9rOmI9YVtfLkhdfDApPj4xNCYxMDIzfHw1MzY4NzA5MTI7Yz49Zz9kIT1udWxsJiYoZj17fSxhW2crKGU/MDotMSldPShmW2NdPWQsZikpOmFbZl09ZH1yZXR1cm4gYn07Xy5CaT1mdW5jdGlvbihhLGIpe2E9Xy51aShhLGIsdm9pZCAwKTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hOl8uVGh9O18uQ2k9ZnVuY3Rpb24oYSxiKXsyJmImJihhfD0yKTtyZXR1cm4gYXwxfTtfLkRpPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9KDImYj9hfDI6YSYtMykmLTI3M307Cl8uRWk9ZnVuY3Rpb24oYSl7cmV0dXJuISEoMiZhKSYmISEoNCZhKXx8ISEoMjU2JmEpfTtfLkZpPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7dmFyIGs9YjtmPT09MXx8KGYhPT00PzA6MiZifHwhKDE2JmIpJiYzMiZkKT9fLkVpKGIpfHwoYnw9IWEubGVuZ3RofHxnJiYhKDQwOTYmYil8fDMyJmQmJiEoNDA5NiZifHwxNiZiKT8yOjI1NixiIT09ayYmXy5TZyhhLGIpLE9iamVjdC5mcmVlemUoYSkpOihmPT09MiYmXy5FaShiKSYmKGE9Xy5taShhKSxrPTAsYj1fLkRpKGIsZCksZD1fLnRpKGMsZCxlLGEpKSxfLkVpKGIpfHwoaHx8KGJ8PTE2KSxiIT09ayYmXy5TZyhhLGIpKSk7MiZifHwhKDQwOTYmYnx8MTYmYil8fF8uc2koYyxkKTtyZXR1cm4gYX07Xy5HaT1mdW5jdGlvbihhLGIsYyxkKXtfLnJpKGEpO3ZhciBlPWEuSjtfLnRpKGUsZVtfLkhdfDAsYiwoZD09PSIwIj9OdW1iZXIoYyk9PT0wOmM9PT1kKT92b2lkIDA6Yyk7cmV0dXJuIGF9OwpfLkhpPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ITE7ZD1fLnVpKGEsZCxlLGZ1bmN0aW9uKGcpe3ZhciBoPV8uaGgoZyxjLCExLGIpO2Y9aCE9PWcmJmghPW51bGw7cmV0dXJuIGh9KTtpZihkIT1udWxsKXJldHVybiBmJiYhXy5XZyhkKSYmXy5zaShhLGIpLGR9OwpfLklpPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7dmFyIGs9Xy5XZyhhLGMpO2Y9az8xOmY7Zz0hIWd8fGY9PT0zO2s9aCYmIWs7KGY9PT0yfHxrKSYmXy5xaShhKSYmKGI9YS5KLGM9YltfLkhdfDApO2E9Xy5CaShiLGUpO3ZhciBsPWE9PT1fLlRoPzc6YVtfLkhdfDAsbj1fLkNpKGwsYyk7aWYoaD0hKDQmbikpe3ZhciBxPWEscD1jLHI9ISEoMiZuKTtyJiYocHw9Mik7Zm9yKHZhciB0PSFyLEE9ITAsRD0wLEU9MDtEPHEubGVuZ3RoO0QrKyl7dmFyIGJhPV8uaGgocVtEXSxkLCExLHApO2lmKGJhIGluc3RhbmNlb2YgZCl7aWYoIXIpe3ZhciBaPV8uV2coYmEpO3QmJih0PSFaKTtBJiYoQT1aKX1xW0UrK109YmF9fUU8RCYmKHEubGVuZ3RoPUUpO258PTQ7bj1BP24mLTQwOTc6bnw0MDk2O249dD9ufDg6biYtOX1uIT09bCYmKF8uU2coYSxuKSwyJm4mJk9iamVjdC5mcmVlemUoYSkpO2lmKGsmJiEoOCZufHwhYS5sZW5ndGgmJihmPT09MXx8KGYhPT00PzA6MiZufHwhKDE2Jm4pJiYKMzImYykpKSl7Xy5FaShuKSYmKGE9Xy5taShhKSxuPV8uRGkobixjKSxjPV8udGkoYixjLGUsYSkpO2Q9YTtrPW47Zm9yKGw9MDtsPGQubGVuZ3RoO2wrKylxPWRbbF0sbj1fLmtoKHEpLHEhPT1uJiYoZFtsXT1uKTtrfD04O249az1kLmxlbmd0aD9rfDQwOTY6ayYtNDA5NztfLlNnKGEsbil9cmV0dXJuIGE9Xy5GaShhLG4sYixjLGUsZixoLGcpfTtfLkppPWZ1bmN0aW9uKGEpe2E9PW51bGwmJihhPXZvaWQgMCk7cmV0dXJuIGF9O18uS2k9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2I9SlNPTi5wYXJzZShiKTtpZighQXJyYXkuaXNBcnJheShiKSl0aHJvdyBFcnJvcigiaWFgIitfLm9jKGIpKyJgIitiKTtfLlRnKGIpO3JldHVybiBuZXcgYShiKX19O0xpPWZ1bmN0aW9uKGEpe2lmKGEuRyl0aHJvdyBuZXcgVHlwZUVycm9yKCJmIik7YS5HPSEwfTtNaT1mdW5jdGlvbihhLGIpe2EubD17YmY6YixDZjohMH07YS5nPWEuQ3x8YS5vfTsKTmk9ZnVuY3Rpb24oYSxiKXthLnJhdz1iO09iamVjdC5mcmVlemUmJihPYmplY3QuZnJlZXplKGEpLE9iamVjdC5mcmVlemUoYikpO3JldHVybiBhfTtfLks9ZnVuY3Rpb24oYSl7cmV0dXJuIE5pKGEsYSl9O09pPWZ1bmN0aW9uKGEpe3RoaXMuZz1uZXcgXy5GO3RoaXMuaD1hfTtSaT1mdW5jdGlvbihhLGIpe0xpKGEuZyk7dmFyIGM9YS5nLkE7aWYoYylyZXR1cm4gUGkoYSwicmV0dXJuImluIGM/Y1sicmV0dXJuIl06ZnVuY3Rpb24oZCl7cmV0dXJue3ZhbHVlOmQsZG9uZTohMH19LGIsYS5nLnJldHVybik7YS5nLnJldHVybihiKTtyZXR1cm4gUWkoYSl9O1BpPWZ1bmN0aW9uKGEsYixjLGQpe3RyeXt2YXIgZT1iLmNhbGwoYS5nLkEsYyk7Xy5jYyhlKTtpZighZS5kb25lKXJldHVybiBhLmcuRz0hMSxlO3ZhciBmPWUudmFsdWV9Y2F0Y2goZyl7cmV0dXJuIGEuZy5BPW51bGwsTWkoYS5nLGcpLFFpKGEpfWEuZy5BPW51bGw7ZC5jYWxsKGEuZyxmKTtyZXR1cm4gUWkoYSl9OwpRaT1mdW5jdGlvbihhKXtmb3IoO2EuZy5nOyl0cnl7dmFyIGI9YS5oKGEuZyk7aWYoYilyZXR1cm4gYS5nLkc9ITEse3ZhbHVlOmIudmFsdWUsZG9uZTohMX19Y2F0Y2goYyl7YS5nLmo9dm9pZCAwLE1pKGEuZyxjKX1hLmcuRz0hMTtpZihhLmcubCl7Yj1hLmcubDthLmcubD1udWxsO2lmKGIuQ2YpdGhyb3cgYi5iZjtyZXR1cm57dmFsdWU6Yi5yZXR1cm4sZG9uZTohMH19cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX07ClNpPWZ1bmN0aW9uKGEpe3RoaXMubmV4dD1mdW5jdGlvbihiKXtMaShhLmcpO2EuZy5BP2I9UGkoYSxhLmcuQS5uZXh0LGIsYS5nLkkpOihhLmcuSShiKSxiPVFpKGEpKTtyZXR1cm4gYn07dGhpcy50aHJvdz1mdW5jdGlvbihiKXtMaShhLmcpO2EuZy5BP2I9UGkoYSxhLmcuQVsidGhyb3ciXSxiLGEuZy5JKTooTWkoYS5nLGIpLGI9UWkoYSkpO3JldHVybiBifTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gUmkoYSxiKX07dGhpc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fTtVaT1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQpe3JldHVybiBhLm5leHQoZCl9ZnVuY3Rpb24gYyhkKXtyZXR1cm4gYS50aHJvdyhkKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBmKGcpe2cuZG9uZT9kKGcudmFsdWUpOlByb21pc2UucmVzb2x2ZShnLnZhbHVlKS50aGVuKGIsYykudGhlbihmLGUpfWYoYS5uZXh0KCkpfSl9O18uVmk9ZnVuY3Rpb24oYSl7cmV0dXJuIFVpKG5ldyBTaShuZXcgT2koYSkpKX07CldpPWZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSkucmVwbGFjZSgvXC0oW2Etel0pL2csZnVuY3Rpb24oYixjKXtyZXR1cm4gYy50b1VwcGVyQ2FzZSgpfSl9O1hpPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoUmVnRXhwKCIoXnxbXFxzXSspKFthLXpdKSIsImciKSxmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGMrZC50b1VwcGVyQ2FzZSgpfSl9O18uWWk9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIF8ub2UpcmV0dXJuIGE7dmFyIGI9bmV3IF8ub2UoXy5sZSk7Xy5uZShiLDIsYSk7cmV0dXJuIGJ9OwpfLnVpPWZ1bmN0aW9uKGEsYixjLGQpe2lmKGI9PT0tMSlyZXR1cm4gbnVsbDt2YXIgZT1iKyhjPzA6LTEpLGY9YS5sZW5ndGgtMTtpZighKGY8MSsoYz8wOi0xKSkpe2lmKGU+PWYpe3ZhciBnPWFbZl07aWYoZyE9bnVsbCYmdHlwZW9mIGc9PT0ib2JqZWN0IiYmZy5jb25zdHJ1Y3Rvcj09PU9iamVjdCl7Yz1nW2JdO3ZhciBoPSEwfWVsc2UgaWYoZT09PWYpYz1nO2Vsc2UgcmV0dXJufWVsc2UgYz1hW2VdO2lmKGQmJmMhPW51bGwpe2Q9ZChjKTtpZihkPT1udWxsKXJldHVybiBkO2lmKCFPYmplY3QuaXMoZCxjKSlyZXR1cm4gaD9nW2JdPWQ6YVtlXT1kLGR9cmV0dXJuIGN9fTtfLlppPWZ1bmN0aW9uKGEsYixjLGQsZSl7Yj1fLnVpKGEuSixiLGMsZSk7aWYoYiE9PW51bGx8fGQmJmEuaCE9PV8uVmcpcmV0dXJuIGJ9O18uJGk9ZnVuY3Rpb24oYSxiLGMpe18ucmkoYSk7dmFyIGQ9YS5KO18udGkoZCxkW18uSF18MCxiLGMpO3JldHVybiBhfTsKXy5haj1mdW5jdGlvbihhKXtyZXR1cm4gYT09PV8uV2g/Mjo0fTtfLmJqPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuSixmPWVbXy5IXXwwO2I9Xy5IaShlLGYsYixjLGQpO2lmKGI9PW51bGwpcmV0dXJuIGI7Zj1lW18uSF18MDtpZighXy5XZyhhLGYpKXt2YXIgZz1fLmtoKGIpO2chPT1iJiYoXy5xaShhKSYmKGU9YS5KLGY9ZVtfLkhdfDApLGI9ZyxmPV8udGkoZSxmLGMsYixkKSxfLnNpKGUsZikpfXJldHVybiBifTtfLmNqPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLko7cmV0dXJuIF8uSWkoYSxkLGRbXy5IXXwwLGIsYyxfLmFqKCksITEsITApfTtfLkw9ZnVuY3Rpb24oYSxiLGMpe2M9Xy5KaShjKTtfLiRpKGEsYixjKTtjJiYhXy5XZyhjKSYmXy5zaShhLkopO3JldHVybiBhfTtfLk09ZnVuY3Rpb24oYSxiKXt2YXIgYz1jPT09dm9pZCAwPyExOmM7YT1fLm9pKF8uWmkoYSxiKSk7cmV0dXJuIGEhPW51bGw/YTpjfTsKXy5OPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yz09PXZvaWQgMD8iIjpjO3ZhciBkO3JldHVybihkPV8ucGkoXy5aaShhLGIpKSkhPW51bGw/ZDpjfTtfLmRqPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yz09PXZvaWQgMD8wOmM7YT1fLlppKGEsYik7YT1hPT1udWxsP2E6KDAsXy5kaSkoYSk/YXwwOnZvaWQgMDtyZXR1cm4gYSE9bnVsbD9hOmN9O18uZWo9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLkdpKGEsYixjPT1udWxsP2M6Xy5uaShjKSwhMSl9O18uZmo9ZnVuY3Rpb24oYSxiKXtpZihiPT1udWxsfHxiPT0iIilyZXR1cm4gbmV3IGE7Yj1KU09OLnBhcnNlKGIpO2lmKCFBcnJheS5pc0FycmF5KGIpKXRocm93IEVycm9yKCJqYSIpO3JldHVybiBuZXcgYShfLmxpKGIpKX07dmFyIGlqLGdqLGpqO18uaGo9ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiPT09InN0cmluZyIpZ2ooYSxjLGIpO2Vsc2UgZm9yKHZhciBkIGluIGIpZ2ooYSxiW2RdLGQpfTtpaj0vXi0tLisvO2dqPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1qaltjXTtpZighZCl7dmFyIGU9V2koYyk7ZD1lO2Euc3R5bGVbZV09PT12b2lkIDAmJihlPShfLlZjPyJXZWJraXQiOl8uVWM/Ik1veiI6bnVsbCkrWGkoZSksYS5zdHlsZVtlXSE9PXZvaWQgMCYmKGQ9ZSkpO2pqW2NdPWR9KGM9ZCkmJihpai50ZXN0KGMpP2Euc3R5bGUuc2V0UHJvcGVydHkoYyxiKTphLnN0eWxlW2NdPWIpfTtqaj17fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGxqLG9qLHBqLHFqLHRqLHVqLHZqLHdqLHhqLHlqLEFqLENqLERqLEVqLEZqLEdqLEhqLElqLEtqLE5qLE9qLFhqLFlqLGJrLG5qLG1qLGNrLGVrLHJqLHNqLHpqLG5rO18ua2o9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIF8uRGMpcmV0dXJuIGEuZzt0aHJvdyBFcnJvcigidCIpO307bGo9ZnVuY3Rpb24oYSl7dmFyIGI9YS5KLGM9YltfLkhdfDA7cmV0dXJuIF8uSWgoYSxiLGMpP18uSGgoYSxiLCEwKTpuZXcgYS5jb25zdHJ1Y3RvcihfLkdoKGIsYywhMSkpfTsKb2o9ZnVuY3Rpb24oYSxiKXtiPT09dm9pZCAwJiYoYj0wKTtpZighbWope21qPXt9O2Zvcih2YXIgYz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLnNwbGl0KCIiKSxkPVsiKy89IiwiKy8iLCItXz0iLCItXy4iLCItXyJdLGU9MDtlPDU7ZSsrKXt2YXIgZj1jLmNvbmNhdChkW2VdLnNwbGl0KCIiKSk7bmpbZV09Zjtmb3IodmFyIGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIGg9ZltnXTttaltoXT09PXZvaWQgMCYmKG1qW2hdPWcpfX19Yj1ualtiXTtjPUFycmF5KE1hdGguZmxvb3IoYS5sZW5ndGgvMykpO2Q9Yls2NF18fCIiO2ZvcihlPWY9MDtmPGEubGVuZ3RoLTI7Zis9Myl7dmFyIGs9YVtmXSxsPWFbZisxXTtoPWFbZisyXTtnPWJbaz4+Ml07az1iWyhrJjMpPDw0fGw+PjRdO2w9YlsobCYxNSk8PDJ8aD4+Nl07aD1iW2gmNjNdO2NbZSsrXT1nK2srbCtofWc9MDtoPWQ7c3dpdGNoKGEubGVuZ3RoLWYpe2Nhc2UgMjpnPQphW2YrMV0saD1iWyhnJjE1KTw8Ml18fGQ7Y2FzZSAxOmE9YVtmXSxjW2VdPWJbYT4+Ml0rYlsoYSYzKTw8NHxnPj40XStoK2R9cmV0dXJuIGMuam9pbigiIil9O3BqPWZ1bmN0aW9uKGEpe2E9RXJyb3IoYSk7Xy5GZyhhLCJ3YXJuaW5nIik7cmV0dXJuIGF9O3FqPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBCaWdJbnQ9PT0iZnVuY3Rpb24ifTt0aj1mdW5jdGlvbihhKXt2YXIgYj1hPj4+MDtyaj1iO3NqPShhLWIpLzQyOTQ5NjcyOTY+Pj4wfTt1aj1mdW5jdGlvbihhLGIpe2I9fmI7YT9hPX5hKzE6Yis9MTtyZXR1cm5bYSxiXX07dmo9ZnVuY3Rpb24oYSl7aWYoYTwwKXt0aigtYSk7dmFyIGI9Xy5DKHVqKHJqLHNqKSk7YT1iLm5leHQoKS52YWx1ZTtiPWIubmV4dCgpLnZhbHVlO3JqPWE+Pj4wO3NqPWI+Pj4wfWVsc2UgdGooYSl9O3dqPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO3JldHVybiIwMDAwMDAwIi5zbGljZShhLmxlbmd0aCkrYX07CnhqPWZ1bmN0aW9uKGEsYil7Yj4+Pj0wO2E+Pj49MDtpZihiPD0yMDk3MTUxKXZhciBjPSIiKyg0Mjk0OTY3Mjk2KmIrYSk7ZWxzZSBxaigpP2M9IiIrKEJpZ0ludChiKTw8QmlnSW50KDMyKXxCaWdJbnQoYSkpOihjPShhPj4+MjR8Yjw8OCkmMTY3NzcyMTUsYj1iPj4xNiY2NTUzNSxhPShhJjE2Nzc3MjE1KStjKjY3NzcyMTYrYio2NzEwNjU2LGMrPWIqODE0NzQ5NyxiKj0yLGE+PTFFNyYmKGMrPWEvMUU3Pj4+MCxhJT0xRTcpLGM+PTFFNyYmKGIrPWMvMUU3Pj4+MCxjJT0xRTcpLGM9Yit3aihjKSt3aihhKSk7cmV0dXJuIGN9O3lqPWZ1bmN0aW9uKCl7dmFyIGE9cmosYj1zajtiJjIxNDc0ODM2NDg/cWooKT9hPSIiKyhCaWdJbnQoYnwwKTw8QmlnSW50KDMyKXxCaWdJbnQoYT4+PjApKTooYj1fLkModWooYSxiKSksYT1iLm5leHQoKS52YWx1ZSxiPWIubmV4dCgpLnZhbHVlLGE9Ii0iK3hqKGEsYikpOmE9eGooYSxiKTtyZXR1cm4gYX07CkFqPWZ1bmN0aW9uKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSAiYmlnaW50IjpyZXR1cm4hMDtjYXNlICJudW1iZXIiOnJldHVybigwLF8uZGkpKGEpO2Nhc2UgInN0cmluZyI6cmV0dXJuIHpqLnRlc3QoYSk7ZGVmYXVsdDpyZXR1cm4hMX19O18uQmo9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGEhPT0ibnVtYmVyIil0aHJvdyBwaigiaW50MzIiKTtpZighKDAsXy5kaSkoYSkpdGhyb3cgcGooImludDMyIik7cmV0dXJuIGF8MH07Q2o9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4gYTtpZih0eXBlb2YgYT09PSJzdHJpbmciJiZhKWE9K2E7ZWxzZSBpZih0eXBlb2YgYSE9PSJudW1iZXIiKXJldHVybjtyZXR1cm4oMCxfLmRpKShhKT9hfDA6dm9pZCAwfTsKRGo9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sZW5ndGg7aWYoYVswXT09PSItIj9iPDIwfHxiPT09MjAmJmE8PSItOTIyMzM3MjAzNjg1NDc3NTgwOCI6YjwxOXx8Yj09PTE5JiZhPD0iOTIyMzM3MjAzNjg1NDc3NTgwNyIpcmV0dXJuIGE7aWYoYS5sZW5ndGg8MTYpdmooTnVtYmVyKGEpKTtlbHNlIGlmKHFqKCkpYT1CaWdJbnQoYSkscmo9TnVtYmVyKGEmQmlnSW50KDQyOTQ5NjcyOTUpKT4+PjAsc2o9TnVtYmVyKGE+PkJpZ0ludCgzMikmQmlnSW50KDQyOTQ5NjcyOTUpKTtlbHNle2I9KyhhWzBdPT09Ii0iKTtzaj1yaj0wO2Zvcih2YXIgYz1hLmxlbmd0aCxkPWIsZT0oYy1iKSU2K2I7ZTw9YztkPWUsZSs9NilkPU51bWJlcihhLnNsaWNlKGQsZSkpLHNqKj0xRTYscmo9cmoqMUU2K2Qscmo+PTQyOTQ5NjcyOTYmJihzais9TWF0aC50cnVuYyhyai80Mjk0OTY3Mjk2KSxzaj4+Pj0wLHJqPj4+PTApO2ImJihiPV8uQyh1aihyaixzaikpLGE9Yi5uZXh0KCkudmFsdWUsYj1iLm5leHQoKS52YWx1ZSwKcmo9YSxzaj1iKX1yZXR1cm4geWooKX07RWo9ZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5laSkoTnVtYmVyKGEpKTtpZigoMCxfLmNpKShiKSlyZXR1cm4gXy5iaChiKTtiPWEuaW5kZXhPZigiLiIpO2IhPT0tMSYmKGE9YS5zdWJzdHJpbmcoMCxiKSk7cmV0dXJuIHFqKCk/Xy5iaCgoMCxfLmJpKSg2NCxCaWdJbnQoYSkpKTpfLmJoKERqKGEpKX07Rmo9ZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5laSkoTnVtYmVyKGEpKTtpZigoMCxfLmNpKShiKSlyZXR1cm4gU3RyaW5nKGIpO2I9YS5pbmRleE9mKCIuIik7YiE9PS0xJiYoYT1hLnN1YnN0cmluZygwLGIpKTtyZXR1cm4gRGooYSl9OwpHaj1mdW5jdGlvbihhKXthPSgwLF8uZWkpKGEpO2lmKCEoMCxfLmNpKShhKSl7dmooYSk7dmFyIGI9cmosYz1zajtpZihhPWMmMjE0NzQ4MzY0OCliPX5iKzE+Pj4wLGM9fmM+Pj4wLGI9PTAmJihjPWMrMT4+PjApO3ZhciBkPWMqNDI5NDk2NzI5NisoYj4+PjApO2I9TnVtYmVyLmlzU2FmZUludGVnZXIoZCk/ZDp4aihiLGMpO2E9dHlwZW9mIGI9PT0ibnVtYmVyIj9hPy1iOmI6YT8iLSIrYjpifXJldHVybiBhfTtIaj1mdW5jdGlvbihhKXthPSgwLF8uZWkpKGEpOygwLF8uY2kpKGEpP2E9U3RyaW5nKGEpOih2aihhKSxhPXlqKCkpO3JldHVybiBhfTtJaj1mdW5jdGlvbihhKXtyZXR1cm4oMCxfLmNpKShhKT9fLmJoKEdqKGEpKTpfLmJoKEhqKGEpKX07Cl8uSmo9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwO2IhPW51bGx8fChiPTEwMjQpO2lmKCFBaihhKSl0aHJvdyBwaigiaW50NjQiKTt2YXIgYz10eXBlb2YgYTtzd2l0Y2goYil7Y2FzZSA1MTI6c3dpdGNoKGMpe2Nhc2UgInN0cmluZyI6cmV0dXJuIEZqKGEpO2Nhc2UgImJpZ2ludCI6cmV0dXJuIFN0cmluZygoMCxfLmJpKSg2NCxhKSk7ZGVmYXVsdDpyZXR1cm4gSGooYSl9Y2FzZSAxMDI0OnN3aXRjaChjKXtjYXNlICJzdHJpbmciOnJldHVybiBFaihhKTtjYXNlICJiaWdpbnQiOnJldHVybiBfLmJoKCgwLF8uYmkpKDY0LGEpKTtkZWZhdWx0OnJldHVybiBJaihhKX1jYXNlIDA6c3dpdGNoKGMpe2Nhc2UgInN0cmluZyI6cmV0dXJuIEZqKGEpO2Nhc2UgImJpZ2ludCI6cmV0dXJuIF8uYmgoKDAsXy5iaSkoNjQsYSkpO2RlZmF1bHQ6cmV0dXJuIEdqKGEpfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVua25vd24gZm9ybWF0IHJlcXVlc3RlZCB0eXBlIGZvciBpbnQ2NCIpO319OwpLaj1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtpZihhPT1udWxsKXJldHVybiBhO2lmKGI9PT0iYmlnaW50IilyZXR1cm4gXy5iaCgoMCxfLmJpKSg2NCxhKSk7aWYoQWooYSkpcmV0dXJuIGI9PT0ic3RyaW5nIj9FaihhKTpJaihhKX07Xy5Maj1mdW5jdGlvbihhKXtpZihhIT1udWxsJiZ0eXBlb2YgYSE9PSJzdHJpbmciKXRocm93IEVycm9yKCk7cmV0dXJuIGF9O18uTWo9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBfLmZqKGEsYil9fTsKTmo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7ZVswXT0xNzMyNTg0MTkzO2VbMV09NDAyMzIzMzQxNztlWzJdPTI1NjIzODMxMDI7ZVszXT0yNzE3MzM4Nzg7ZVs0XT0zMjg1Mzc3NTIwO249bD0wfWZ1bmN0aW9uIGIocSl7Zm9yKHZhciBwPWcscj0wO3I8NjQ7cis9NClwW3IvNF09cVtyXTw8MjR8cVtyKzFdPDwxNnxxW3IrMl08PDh8cVtyKzNdO2ZvcihyPTE2O3I8ODA7cisrKXE9cFtyLTNdXnBbci04XV5wW3ItMTRdXnBbci0xNl0scFtyXT0ocTw8MXxxPj4+MzEpJjQyOTQ5NjcyOTU7cT1lWzBdO3ZhciB0PWVbMV0sQT1lWzJdLEQ9ZVszXSxFPWVbNF07Zm9yKHI9MDtyPDgwO3IrKyl7aWYocjw0MClpZihyPDIwKXt2YXIgYmE9RF50JihBXkQpO3ZhciBaPTE1MTg1MDAyNDl9ZWxzZSBiYT10XkFeRCxaPTE4NTk3NzUzOTM7ZWxzZSByPDYwPyhiYT10JkF8RCYodHxBKSxaPTI0MDA5NTk3MDgpOihiYT10XkFeRCxaPTMzOTU0Njk3ODIpO2JhPSgocTw8NXxxPj4+MjcpJjQyOTQ5NjcyOTUpKwpiYStFK1orcFtyXSY0Mjk0OTY3Mjk1O0U9RDtEPUE7QT0odDw8MzB8dD4+PjIpJjQyOTQ5NjcyOTU7dD1xO3E9YmF9ZVswXT1lWzBdK3EmNDI5NDk2NzI5NTtlWzFdPWVbMV0rdCY0Mjk0OTY3Mjk1O2VbMl09ZVsyXStBJjQyOTQ5NjcyOTU7ZVszXT1lWzNdK0QmNDI5NDk2NzI5NTtlWzRdPWVbNF0rRSY0Mjk0OTY3Mjk1fWZ1bmN0aW9uIGMocSxwKXtpZih0eXBlb2YgcT09PSJzdHJpbmciKXtxPXVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChxKSk7Zm9yKHZhciByPVtdLHQ9MCxBPXEubGVuZ3RoO3Q8QTsrK3Qpci5wdXNoKHEuY2hhckNvZGVBdCh0KSk7cT1yfXB8fChwPXEubGVuZ3RoKTtyPTA7aWYobD09MClmb3IoO3IrNjQ8cDspYihxLnNsaWNlKHIscis2NCkpLHIrPTY0LG4rPTY0O2Zvcig7cjxwOylpZihmW2wrK109cVtyKytdLG4rKyxsPT02NClmb3IobD0wLGIoZik7cis2NDxwOyliKHEuc2xpY2UocixyKzY0KSkscis9NjQsbis9NjR9ZnVuY3Rpb24gZCgpe3ZhciBxPVtdLApwPW4qODtsPDU2P2MoaCw1Ni1sKTpjKGgsNjQtKGwtNTYpKTtmb3IodmFyIHI9NjM7cj49NTY7ci0tKWZbcl09cCYyNTUscD4+Pj04O2IoZik7Zm9yKHI9cD0wO3I8NTtyKyspZm9yKHZhciB0PTI0O3Q+PTA7dC09OClxW3ArK109ZVtyXT4+dCYyNTU7cmV0dXJuIHF9Zm9yKHZhciBlPVtdLGY9W10sZz1bXSxoPVsxMjhdLGs9MTtrPDY0OysrayloW2tdPTA7dmFyIGwsbjthKCk7cmV0dXJue3Jlc2V0OmEsdXBkYXRlOmMsZGlnZXN0OmQsZmg6ZnVuY3Rpb24oKXtmb3IodmFyIHE9ZCgpLHA9IiIscj0wO3I8cS5sZW5ndGg7cisrKXArPSIwMTIzNDU2Nzg5QUJDREVGIi5jaGFyQXQoTWF0aC5mbG9vcihxW3JdLzE2KSkrIjAxMjM0NTY3ODlBQkNERUYiLmNoYXJBdChxW3JdJTE2KTtyZXR1cm4gcH19fTtPaj1mdW5jdGlvbigpe3RoaXMuZz1kb2N1bWVudHx8e2Nvb2tpZToiIn19OwpYaj1mdW5jdGlvbihhLGIpe2I9Yj09PXZvaWQgMD9QajpiO2lmKCFRail7dmFyIGM7YT0oYz1hLm5hdmlnYXRvcik9PW51bGw/dm9pZCAwOmMudXNlckFnZW50RGF0YTtpZighYXx8dHlwZW9mIGEuZ2V0SGlnaEVudHJvcHlWYWx1ZXMhPT0iZnVuY3Rpb24ifHxhLmJyYW5kcyYmdHlwZW9mIGEuYnJhbmRzLm1hcCE9PSJmdW5jdGlvbiIpcmV0dXJuIFByb21pc2UucmVqZWN0KEVycm9yKCJvYSIpKTtSaigoYS5icmFuZHN8fFtdKS5tYXAoZnVuY3Rpb24oZSl7dmFyIGY9bmV3IFNqO2Y9Xy5UaihmLDEsZS5icmFuZCk7cmV0dXJuIF8uVGooZiwyLGUudmVyc2lvbil9KSk7dHlwZW9mIGEubW9iaWxlPT09ImJvb2xlYW4iJiZfLlVqKFZqLDIsYS5tb2JpbGUpO1FqPWEuZ2V0SGlnaEVudHJvcHlWYWx1ZXMoYil9dmFyIGQ9bmV3IFNldChiKTtyZXR1cm4gUWoudGhlbihmdW5jdGlvbihlKXt2YXIgZj1saihWaik7ZC5oYXMoInBsYXRmb3JtIikmJl8uVGooZiwzLGUucGxhdGZvcm0pO2QuaGFzKCJwbGF0Zm9ybVZlcnNpb24iKSYmCl8uVGooZiw0LGUucGxhdGZvcm1WZXJzaW9uKTtkLmhhcygiYXJjaGl0ZWN0dXJlIikmJl8uVGooZiw1LGUuYXJjaGl0ZWN0dXJlKTtkLmhhcygibW9kZWwiKSYmXy5UaihmLDYsZS5tb2RlbCk7ZC5oYXMoInVhRnVsbFZlcnNpb24iKSYmXy5UaihmLDcsZS51YUZ1bGxWZXJzaW9uKTtyZXR1cm4gXy5XaihmKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIF8uV2ooVmopfSl9O1lqPWZ1bmN0aW9uKGEpe3RoaXMuZz10aGlzLmg9dGhpcy5qPWF9O18uWmo9ZnVuY3Rpb24oYSxiKXt2YXIgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ9Yy5zbGljZSgpO2QucHVzaC5hcHBseShkLGFyZ3VtZW50cyk7cmV0dXJuIGEuYXBwbHkodGhpcyxkKX19O18uYWs9ZnVuY3Rpb24oYSxiKXthLnFhP2IoKTooYS5XfHwoYS5XPVtdKSxhLlcucHVzaChiKSl9O2JrPXtabDohMH07Xy5Xaj1mdW5jdGlvbihhKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoXy53aChhKSl9Owpuaj17fTttaj1udWxsO2NrPXt9O18ueGg9ZnVuY3Rpb24oYSxiKXtpZihiIT09Y2spdGhyb3cgRXJyb3IoIloiKTt0aGlzLm89YTtpZihhIT1udWxsJiZhLmxlbmd0aD09PTApdGhyb3cgRXJyb3IoIlkiKTt9O18ueGgucHJvdG90eXBlLmc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm87aWYoYT09bnVsbClhPSIiO2Vsc2UgaWYodHlwZW9mIGEhPT0ic3RyaW5nIil7aWYoXy5QaCl7Zm9yKHZhciBiPSIiLGM9MCxkPWEubGVuZ3RoLTEwMjQwO2M8ZDspYis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEuc3ViYXJyYXkoYyxjKz0xMDI0MCkpO2IrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxjP2Euc3ViYXJyYXkoYyk6YSk7YT1idG9hKGIpfWVsc2UgYT1vaihhKTthPXRoaXMubz1hfXJldHVybiBhfTtfLmRrPV8uTmcodm9pZCAwLCIxb2EiKTtlaz17fTtyaj0wO3NqPTA7emo9L14tPyhbMS05XVswLTldKnwwKShcLlswLTldKyk/JC87Cl8uZms9ZnVuY3Rpb24oYSxiLGMpe18ucmkoYSk7dmFyIGQ9YS5KLGU9ZFtfLkhdfDA7aWYoYz09bnVsbClyZXR1cm4gXy50aShkLGUsYiksYTtmb3IodmFyIGY9Yz09PV8uVGg/NzpjW18uSF18MCxnPWYsaD1fLkVpKGYpLGs9aHx8T2JqZWN0LmlzRnJvemVuKGMpLGw9ITAsbj0hMCxxPTA7cTxjLmxlbmd0aDtxKyspe3ZhciBwPWNbcV07aHx8KHA9Xy5XZyhwKSxsJiYobD0hcCksbiYmKG49cCkpfWh8fChmPWw/MTM6NSxmPW4/ZiYtNDA5NzpmfDQwOTYpO2smJmY9PT1nfHwoYz1fLm1pKGMpLGc9MCxmPV8uRGkoZixlKSk7ZiE9PWcmJl8uU2coYyxmKTtlPV8udGkoZCxlLGIsYyk7MiZmfHwhKDQwOTYmZnx8MTYmZil8fF8uc2koZCxlKTtyZXR1cm4gYX07Xy5naz1mdW5jdGlvbihhLGIsYyl7Yz1jPT09dm9pZCAwPzA6YzthPUNqKF8uWmkoYSxiKSk7cmV0dXJuIGEhPW51bGw/YTpjfTsKXy5oaz1mdW5jdGlvbihhLGIsYyl7Yz1jPT09dm9pZCAwP18uamk6YzthPV8uWmkoYSxiLHZvaWQgMCx2b2lkIDAsS2opO3JldHVybiBhIT1udWxsP2E6Y307Xy5Vaj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uJGkoYSxiLGM9PW51bGw/YzpfLm5pKGMpKX07Xy5paz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uJGkoYSxiLGM9PW51bGw/YzpfLkJqKGMpKX07Xy5qaz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uJGkoYSxiLGM9PW51bGw/YzpfLkpqKGMpKX07Xy5Uaj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uJGkoYSxiLF8uTGooYykpfTtfLmtrPWZ1bmN0aW9uKGEsYixjKXtpZihjIT1udWxsKXtpZighKDAsXy5kaSkoYykpdGhyb3cgcGooImVudW0iKTtjfD0wfXJldHVybiBfLiRpKGEsYixjKX07Cm5rPWZ1bmN0aW9uKCl7dmFyIGE9bGssYj1tazt0aGlzLmc9MTc1MjM3Mzc1O3RoaXMuTGI9Yjt0aGlzLmg9Xy5iajt0aGlzLmRlZmF1bHRWYWx1ZT12b2lkIDA7dGhpcy5qPWEuV2whPW51bGw/ZWs6dm9pZCAwfTtuay5wcm90b3R5cGUucmVnaXN0ZXI9ZnVuY3Rpb24oKXtfLlFjKHRoaXMpfTt2YXIgb2s9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKG9rLF8uSik7dmFyIHBrPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiIiO2lmKC9eYWJvdXQ6KD86Ymxhbmt8c3JjZG9jKSQvLnRlc3QoYSkpcmV0dXJuIHdpbmRvdy5vcmlnaW58fCIiO2EuaW5kZXhPZigiYmxvYjoiKT09PTAmJihhPWEuc3Vic3RyaW5nKDUpKTthPWEuc3BsaXQoIiMiKVswXS5zcGxpdCgiPyIpWzBdO2E9YS50b0xvd2VyQ2FzZSgpO2EuaW5kZXhPZigiLy8iKT09MCYmKGE9d2luZG93LmxvY2F0aW9uLnByb3RvY29sK2EpOy9eW1x3XC1dKjpcL1wvLy50ZXN0KGEpfHwoYT13aW5kb3cubG9jYXRpb24uaHJlZik7dmFyIGI9YS5zdWJzdHJpbmcoYS5pbmRleE9mKCI6Ly8iKSszKSxjPWIuaW5kZXhPZigiLyIpO2MhPS0xJiYoYj1iLnN1YnN0cmluZygwLGMpKTtjPWEuc3Vic3RyaW5nKDAsYS5pbmRleE9mKCI6Ly8iKSk7aWYoIWMpdGhyb3cgRXJyb3IoImthYCIrYSk7aWYoYyE9PSJodHRwIiYmYyE9PSJodHRwcyImJmMhPT0iY2hyb21lLWV4dGVuc2lvbiImJmMhPT0ibW96LWV4dGVuc2lvbiImJgpjIT09ImZpbGUiJiZjIT09ImFuZHJvaWQtYXBwIiYmYyE9PSJjaHJvbWUtc2VhcmNoIiYmYyE9PSJjaHJvbWUtdW50cnVzdGVkIiYmYyE9PSJjaHJvbWUiJiZjIT09ImFwcCImJmMhPT0iZGV2dG9vbHMiKXRocm93IEVycm9yKCJsYWAiK2MpO2E9IiI7dmFyIGQ9Yi5pbmRleE9mKCI6Iik7aWYoZCE9LTEpe3ZhciBlPWIuc3Vic3RyaW5nKGQrMSk7Yj1iLnN1YnN0cmluZygwLGQpO2lmKGM9PT0iaHR0cCImJmUhPT0iODAifHxjPT09Imh0dHBzIiYmZSE9PSI0NDMiKWE9IjoiK2V9cmV0dXJuIGMrIjovLyIrYithfTt2YXIgcms9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVN0cmluZyhfLnYubG9jYXRpb24uaHJlZik7cmV0dXJuIGQmJmEmJmI/W2IscWsocGsoZCksYSxjfHxudWxsKV0uam9pbigiICIpOm51bGx9LHFrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPVtdO2lmKChBcnJheS5pc0FycmF5KGMpPzI6MSk9PTEpcmV0dXJuIGU9W2IsYV0sXy52YyhkLGZ1bmN0aW9uKGgpe2UucHVzaChoKX0pLHNrKGUuam9pbigiICIpKTt2YXIgZj1bXSxnPVtdO18udmMoYyxmdW5jdGlvbihoKXtnLnB1c2goaC5rZXkpO2YucHVzaChoLnZhbHVlKX0pO2M9TWF0aC5mbG9vcigobmV3IERhdGUpLmdldFRpbWUoKS8xRTMpO2U9Zi5sZW5ndGg9PTA/W2MsYixhXTpbZi5qb2luKCI6IiksYyxiLGFdO18udmMoZCxmdW5jdGlvbihoKXtlLnB1c2goaCl9KTthPXNrKGUuam9pbigiICIpKTthPVtjLGFdO2cubGVuZ3RoPT0wfHxhLnB1c2goZy5qb2luKCIiKSk7cmV0dXJuIGEuam9pbigiXyIpfSxzaz1mdW5jdGlvbihhKXt2YXIgYj0KTmooKTtiLnVwZGF0ZShhKTtyZXR1cm4gYi5maCgpLnRvTG93ZXJDYXNlKCl9O18ubT1Pai5wcm90b3R5cGU7Xy5tLnNldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ITE7aWYodHlwZW9mIGM9PT0ib2JqZWN0Iil7dmFyIGU9Yy5zYW1lU2l0ZTtkPWMuc2VjdXJlfHwhMTt2YXIgZj1jLmRvbWFpbnx8dm9pZCAwO3ZhciBnPWMucGF0aHx8dm9pZCAwO3ZhciBoPWMuQml9aWYoL1s7PVxzXS8udGVzdChhKSl0aHJvdyBFcnJvcigibWFgIithKTtpZigvWztcclxuXS8udGVzdChiKSl0aHJvdyBFcnJvcigibmFgIitiKTtoPT09dm9pZCAwJiYoaD0tMSk7dGhpcy5nLmNvb2tpZT1hKyI9IitiKyhmPyI7ZG9tYWluPSIrZjoiIikrKGc/IjtwYXRoPSIrZzoiIikrKGg8MD8iIjpoPT0wPyI7ZXhwaXJlcz0iKyhuZXcgRGF0ZSgxOTcwLDEsMSkpLnRvVVRDU3RyaW5nKCk6IjtleHBpcmVzPSIrKG5ldyBEYXRlKERhdGUubm93KCkraCoxRTMpKS50b1VUQ1N0cmluZygpKSsoZD8iO3NlY3VyZSI6IiIpKyhlIT1udWxsPyI7c2FtZXNpdGU9IitlOiIiKX07Cl8ubS5nZXQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YSsiPSIsZD0odGhpcy5nLmNvb2tpZXx8IiIpLnNwbGl0KCI7IiksZT0wLGY7ZTxkLmxlbmd0aDtlKyspe2Y9Xy5BYyhkW2VdKTtpZihmLmxhc3RJbmRleE9mKGMsMCk9PTApcmV0dXJuIGYuc2xpY2UoYy5sZW5ndGgpO2lmKGY9PWEpcmV0dXJuIiJ9cmV0dXJuIGJ9O18ubS5yZW1vdmU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuZ2V0KGEpIT09dm9pZCAwO3RoaXMuc2V0KGEsIiIse0JpOjAscGF0aDpiLGRvbWFpbjpjfSk7cmV0dXJuIGR9O18ubS5PYz1mdW5jdGlvbigpe3JldHVybiB0ayh0aGlzKS5rZXlzfTtfLm0uaWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGsodGhpcykudmFsdWVzfTtfLm0uY2xlYXI9ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGsodGhpcykua2V5cyxiPWEubGVuZ3RoLTE7Yj49MDtiLS0pdGhpcy5yZW1vdmUoYVtiXSl9Owp2YXIgdGs9ZnVuY3Rpb24oYSl7YT0oYS5nLmNvb2tpZXx8IiIpLnNwbGl0KCI7Iik7Zm9yKHZhciBiPVtdLGM9W10sZCxlLGY9MDtmPGEubGVuZ3RoO2YrKyllPV8uQWMoYVtmXSksZD1lLmluZGV4T2YoIj0iKSxkPT0tMT8oYi5wdXNoKCIiKSxjLnB1c2goZSkpOihiLnB1c2goZS5zdWJzdHJpbmcoMCxkKSksYy5wdXNoKGUuc3Vic3RyaW5nKGQrMSkpKTtyZXR1cm57a2V5czpiLHZhbHVlczpjfX07dmFyIHVrPWZ1bmN0aW9uKGEsYixjLGQpeyhhPV8udlthXSl8fHR5cGVvZiBkb2N1bWVudD09PSJ1bmRlZmluZWQifHwoYT0obmV3IE9qKS5nZXQoYikpO3JldHVybiBhP3JrKGEsYyxkKTpudWxsfSx2az1mdW5jdGlvbihhKXt2YXIgYj1wayhfLnY9PW51bGw/dm9pZCAwOl8udi5sb2NhdGlvbi5ocmVmKSxjPVtdLGQ7KGQ9Xy52Ll9fU0FQSVNJRHx8Xy52Ll9fQVBJU0lEfHxfLnYuX18zUFNBUElTSUR8fF8udi5fXzFQU0FQSVNJRHx8Xy52Ll9fT1ZFUlJJREVfU0lEKT9kPSEwOih0eXBlb2YgZG9jdW1lbnQhPT0idW5kZWZpbmVkIiYmKGQ9bmV3IE9qLGQ9ZC5nZXQoIlNBUElTSUQiKXx8ZC5nZXQoIkFQSVNJRCIpfHxkLmdldCgiX19TZWN1cmUtM1BBUElTSUQiKXx8ZC5nZXQoIl9fU2VjdXJlLTFQQVBJU0lEIikpLGQ9ISFkKTtkJiYoZD0oYj1iLmluZGV4T2YoImh0dHBzOiIpPT0wfHxiLmluZGV4T2YoImNocm9tZS1leHRlbnNpb246Iik9PTB8fGIuaW5kZXhPZigiY2hyb21lLXVudHJ1c3RlZDovL25ldy10YWItcGFnZSIpPT0KMHx8Yi5pbmRleE9mKCJtb3otZXh0ZW5zaW9uOiIpPT0wKT9fLnYuX19TQVBJU0lEOl8udi5fX0FQSVNJRCxkfHx0eXBlb2YgZG9jdW1lbnQ9PT0idW5kZWZpbmVkInx8KGQ9bmV3IE9qLGQ9ZC5nZXQoYj8iU0FQSVNJRCI6IkFQSVNJRCIpfHxkLmdldCgiX19TZWN1cmUtM1BBUElTSUQiKSksKGQ9ZD9yayhkLGI/IlNBUElTSURIQVNIIjoiQVBJU0lESEFTSCIsYSk6bnVsbCkmJmMucHVzaChkKSxiJiYoKGI9dWsoIl9fMVBTQVBJU0lEIiwiX19TZWN1cmUtMVBBUElTSUQiLCJTQVBJU0lEMVBIQVNIIixhKSkmJmMucHVzaChiKSwoYT11aygiX18zUFNBUElTSUQiLCJfX1NlY3VyZS0zUEFQSVNJRCIsIlNBUElTSUQzUEhBU0giLGEpKSYmYy5wdXNoKGEpKSk7cmV0dXJuIGMubGVuZ3RoPT0wP251bGw6Yy5qb2luKCIgIil9O3ZhciB3az1mdW5jdGlvbigpe30seGs9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU7cmV0dXJuIF8uVmkoZnVuY3Rpb24oZil7c3dpdGNoKGYuZyl7Y2FzZSAxOnJldHVybiBiPW5ldyBDb21wcmVzc2lvblN0cmVhbSgiZ3ppcCIpLGM9KG5ldyBSZXNwb25zZShiLnJlYWRhYmxlKSkuYXJyYXlCdWZmZXIoKSxkPWIud3JpdGFibGUuZ2V0V3JpdGVyKCksZi5oKGQud3JpdGUoKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGEpKSwyKTtjYXNlIDI6cmV0dXJuIGYuaChkLmNsb3NlKCksMyk7Y2FzZSAzOnJldHVybiBlPVVpbnQ4QXJyYXksZi5oKGMsNCk7Y2FzZSA0OnJldHVybiBmLnJldHVybihuZXcgZShmLmopKX19KX07d2sucHJvdG90eXBlLlRhPWZ1bmN0aW9uKGEpe3JldHVybiBhPDEwMjQ/ITE6dHlwZW9mIENvbXByZXNzaW9uU3RyZWFtIT09InVuZGVmaW5lZCJ9O3ZhciB5az1mdW5jdGlvbihhLGIpe3RoaXMuaD1hO3RoaXMubz1iO3RoaXMuZz0hMTt0aGlzLmo9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX07dGhpcy5sPXRoaXMuaigpfSx6az1mdW5jdGlvbihhLGIpe2EuaD1iO2EudGltZXImJmEuZz8oYS5zdG9wKCksYS5zdGFydCgpKTphLnRpbWVyJiZhLnN0b3AoKX07eWsucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmc9ITA7dGhpcy50aW1lcnx8KHRoaXMudGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe2EudGljaygpfSx0aGlzLmgpLHRoaXMubD10aGlzLmooKSl9O3lrLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5nPSExO3RoaXMudGltZXImJihjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy50aW1lcj12b2lkIDApfTsKeWsucHJvdG90eXBlLnRpY2s9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2lmKHRoaXMuZyl7dmFyIGI9TWF0aC5tYXgodGhpcy5qKCktdGhpcy5sLDApO2I8dGhpcy5oKi44P3RoaXMudGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe2EudGljaygpfSx0aGlzLmgtYik6KHRoaXMudGltZXImJihjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy50aW1lcj12b2lkIDApLHRoaXMubygpLHRoaXMuZyYmKHRoaXMuc3RvcCgpLHRoaXMuc3RhcnQoKSkpfWVsc2UgdGhpcy50aW1lcj12b2lkIDB9O3ZhciBBaz1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoQWssXy5KKTt2YXIgQms9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKEJrLF8uSik7dmFyIENrPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihDayxfLkopO0NrLnByb3RvdHlwZS5QZD1mdW5jdGlvbigpe3JldHVybiBfLmRqKHRoaXMsMSl9O3ZhciBTaj1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoU2osXy5KKTt2YXIgRGs9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKERrLF8uSik7dmFyIFJqPWZ1bmN0aW9uKGEpe18uZmsoVmosMSxhKX0sRWs9Xy5NaihEayk7dmFyIEZrPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihGayxfLkopO3ZhciBQaj1bInBsYXRmb3JtIiwicGxhdGZvcm1WZXJzaW9uIiwiYXJjaGl0ZWN0dXJlIiwibW9kZWwiLCJ1YUZ1bGxWZXJzaW9uIl0sVmo9bmV3IERrLFFqPW51bGw7dmFyIEdrPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihHayxfLkopO3ZhciBIaz1mdW5jdGlvbihhKXtyZXR1cm4gXy5rayhhLDEsMSl9O3ZhciBJaz1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoSWssXy5KKTtJay5wcm90b3R5cGUuTWE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5OKHRoaXMsMil9O0lrLnByb3RvdHlwZS5jYj1mdW5jdGlvbihhKXtfLlRqKHRoaXMsMixhKX07dmFyIEprPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSw0KX07Xy5CKEprLF8uSik7Xy5Laz1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEsMzcpfTtfLkIoXy5LayxfLkopO18uS2sucHJvdG90eXBlLmNiPWZ1bmN0aW9uKGEpe18ucmkodGhpcyk7dmFyIGI9dGhpcy5KLGM9Xy5JaSh0aGlzLGIsYltfLkhdfDAsSWssMywyLCEwKTtpZih0eXBlb2YgYSE9PSJudW1iZXIifHxhPDB8fGE+Yy5sZW5ndGgpdGhyb3cgRXJyb3IoKTthIT12b2lkIDA/Yy5zcGxpY2UoYSwxLHZvaWQgMCk6Yy5wdXNoKHZvaWQgMCk7dmFyIGQ9YT1jPT09Xy5UaD83OmNbXy5IXXwwLGU9Xy5XZygpO2U/KGEmPS05LGMubGVuZ3RoPT09MSYmKGEmPS00MDk3KSk6YXw9NDA5NjthIT09ZCYmXy5TZyhjLGEpO2V8fF8uc2koYil9O18uTGs9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5UaihhLDgsYil9O3ZhciBNaz1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEsMTkpfTtfLkIoTWssXy5KKTtNay5wcm90b3R5cGUudmM9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ua2sodGhpcywyLGEpfTt2YXIgT2s9ZnVuY3Rpb24oYSxiKXt0aGlzLmFiPWI9Yj09PXZvaWQgMD8hMTpiO3RoaXMuaj10aGlzLmxvY2FsZT1udWxsO3RoaXMuaD0wO3RoaXMubD0hMTt0aGlzLmc9bmV3IE1rO051bWJlci5pc0ludGVnZXIoYSkmJnRoaXMuZy52YyhhKTtifHwodGhpcy5sb2NhbGU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgibGFuZyIpKTtOayh0aGlzLG5ldyBHayl9O09rLnByb3RvdHlwZS52Yz1mdW5jdGlvbihhKXt0aGlzLmcudmMoYSk7cmV0dXJuIHRoaXN9Owp2YXIgTms9ZnVuY3Rpb24oYSxiKXtfLkwoYS5nLDEsYik7Xy5kaihiLDEpfHxIayhiKTthLmFifHwoYj1QayhhKSxfLk4oYiw1KXx8Xy5UaihiLDUsYS5sb2NhbGUpKTthLmomJihiPVBrKGEpLF8uYmooYixEayw5KXx8Xy5MKGIsOSxhLmopKX0sUWs9ZnVuY3Rpb24oYSxiKXthLmg9Yn0sUms9ZnVuY3Rpb24oYSl7dmFyIGI9Yj09PXZvaWQgMD9QajpiO3ZhciBjPWEuYWI/dm9pZCAwOl8ubWIoKTtjP1hqKGMsYikudGhlbihmdW5jdGlvbihkKXthLmo9RWsoZCE9bnVsbD9kOiJbXSIpO2Q9UGsoYSk7Xy5MKGQsOSxhLmopO3JldHVybiEwfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pOlByb21pc2UucmVzb2x2ZSghMSl9LFBrPWZ1bmN0aW9uKGEpe3ZhciBiPV8uYmooYS5nLEdrLDEpO2J8fChiPW5ldyBHayxOayhhLGIpKTthPWI7Yj1fLmJqKGEsRmssMTEpO2J8fChiPW5ldyBGayxfLkwoYSwxMSxiKSk7cmV0dXJuIGJ9LFNrPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe2M9Yz09PQp2b2lkIDA/MDpjO2Q9ZD09PXZvaWQgMD8wOmQ7ZT1lPT09dm9pZCAwP251bGw6ZTtmPWY9PT12b2lkIDA/MDpmO2c9Zz09PXZvaWQgMD8wOmc7aWYoIWEuYWIpe3ZhciBoPVBrKGEpO3ZhciBrPW5ldyBDaztrPV8ua2soaywxLGEuaCk7az1fLlVqKGssMixhLmwpO2Q9Xy5payhrLDMsZD4wP2Q6dm9pZCAwKTtkPV8uaWsoZCw0LGY+MD9mOnZvaWQgMCk7ZD1fLmlrKGQsNSxnPjA/Zzp2b2lkIDApO2Y9ZC5KO2c9ZltfLkhdfDA7ZD1fLldnKGQsZyk/ZDpfLkloKGQsZixnKT9fLkhoKGQsZik6bmV3IGQuY29uc3RydWN0b3IoXy5HaChmLGcsITApKTtfLkwoaCwxMCxkKX1hPWxqKGEuZyk7aD1EYXRlLm5vdygpLnRvU3RyaW5nKCk7YT1fLiRpKGEsNCxoPT1udWxsP2g6Xy5KaihoKSk7Yj1fLmZrKGEsMyxiLnNsaWNlKCkpO2UmJihhPW5ldyBBayxlPV8uaWsoYSwxMyxlKSxhPW5ldyBCayxlPV8uTChhLDIsZSksYT1uZXcgSmssZT1fLkwoYSwxLGUpLGU9Xy5rayhlLDIsOSksXy5MKGIsMTgsCmUpKTtjJiZfLmprKGIsMTQsYyk7cmV0dXJuIGJ9O1lqLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuZz10aGlzLmg9dGhpcy5qfTtZai5wcm90b3R5cGUuTWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ofTt2YXIgbGs9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhLDgpfTtfLkIobGssXy5KKTt2YXIgVGs9Xy5Naihsayk7dmFyIG1rPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihtayxfLkopO3ZhciBVaztVaz1uZXcgbms7dmFyIFlrPWZ1bmN0aW9uKGEpe18udS5jYWxsKHRoaXMpO3ZhciBiPXRoaXM7dGhpcy5nPVtdO3RoaXMubGE9IiI7dGhpcy5LPXRoaXMuTD0hMTt0aGlzLnJhPXRoaXMuST0tMTt0aGlzLlI9ITE7dGhpcy5EPXRoaXMuZXhwZXJpbWVudElkcz1udWxsO3RoaXMuQT10aGlzLmw9MDt0aGlzLkM9bnVsbDt0aGlzLkY9dGhpcy5HPTA7dGhpcy53YT0xO3RoaXMud2M9MDt0aGlzLk9iPWEuT2I7dGhpcy50Yj1hLnRifHxmdW5jdGlvbigpe307dGhpcy5qPW5ldyBPayhhLk9iLGEuYWIpO3RoaXMuemE9YS56YXx8bnVsbDt0aGlzLkNiPWEuQ2J8fG51bGw7dGhpcy5CPWEuYWp8fG51bGw7dGhpcy5tYj1hLm1ifHxudWxsO3RoaXMuY2M9YS5jY3x8ITE7dGhpcy53aXRoQ3JlZGVudGlhbHM9IWEuTWM7dGhpcy5hYj1hLmFifHwhMTt0aGlzLlQ9IXRoaXMuYWImJiEhXy5tYigpJiYhIV8ubWIoKS5uYXZpZ2F0b3ImJl8ubWIoKS5uYXZpZ2F0b3Iuc2VuZEJlYWNvbiE9PXZvaWQgMDt0aGlzLlA9dHlwZW9mIFVSTFNlYXJjaFBhcmFtcyE9PQoidW5kZWZpbmVkIiYmISEobmV3IFVSTChWaygpKSkuc2VhcmNoUGFyYW1zJiYhIShuZXcgVVJMKFZrKCkpKS5zZWFyY2hQYXJhbXMuc2V0O3ZhciBjPUhrKG5ldyBHayk7TmsodGhpcy5qLGMpO3RoaXMubz1uZXcgWWooMUU0KTthPVdrKHRoaXMsYS5PZSk7dGhpcy5oPW5ldyB5ayh0aGlzLm8uTWEoKSxhKTt0aGlzLk89bmV3IHlrKDZFNSxhKTt0aGlzLmNjfHx0aGlzLk8uc3RhcnQoKTtpZighdGhpcy5hYil7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsZnVuY3Rpb24oKXtpZihkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0iaGlkZGVuIil7WGsoYik7dmFyIGY7KGY9Yi5DKT09bnVsbHx8Zi5mbHVzaCgpfX0pO3ZhciBkLGU7KGQ9Xy5tYigpKT09bnVsbHx8KGU9ZC5hZGRFdmVudExpc3RlbmVyKT09bnVsbHx8ZS5jYWxsKGQsInBhZ2VoaWRlIixmdW5jdGlvbigpe1hrKGIpO3ZhciBmOyhmPWIuQyk9PW51bGx8fGYuZmx1c2goKX0pfX0sWmssYmwsCiRrO18uQihZayxfLnUpO3ZhciBXaz1mdW5jdGlvbihhLGIpe2lmKCFhLlApcmV0dXJuIGZ1bmN0aW9uKCl7fTt2YXIgYz1mdW5jdGlvbigpe2EuZmx1c2goKX07cmV0dXJuIGI/ZnVuY3Rpb24oKXtiKCkudGhlbihjKX06Y307WWsucHJvdG90eXBlLk09ZnVuY3Rpb24oKXtYayh0aGlzKTt0aGlzLmguc3RvcCgpO3RoaXMuTy5zdG9wKCk7Xy51LnByb3RvdHlwZS5NLmNhbGwodGhpcyl9O1prPWZ1bmN0aW9uKGEpe2EuQnx8KGEuQj1WaygpKTt0cnl7cmV0dXJuKG5ldyBVUkwoYS5CKSkudG9TdHJpbmcoKX1jYXRjaChiKXtyZXR1cm4obmV3IFVSTChhLkIsXy5tYigpLmxvY2F0aW9uLm9yaWdpbikpLnRvU3RyaW5nKCl9fTtfLmFsPWZ1bmN0aW9uKGEsYil7aWYoYiBpbnN0YW5jZW9mIF8uS2spYS5sb2coYik7ZWxzZSB0cnl7dmFyIGM9Xy5MayhuZXcgXy5LayxfLldqKGIpKTthLmxvZyhjKX1jYXRjaChkKXskayhhLDQsMSl9fTsKYmw9ZnVuY3Rpb24oYSxiKXthLm89bmV3IFlqKGI8MT8xOmIpO3prKGEuaCxhLm8uTWEoKSl9OyRrPWZ1bmN0aW9uKGEsYixjKXthLkMmJmEuQy5TbChiLGMpfTsKWWsucHJvdG90eXBlLmxvZz1mdW5jdGlvbihhKXskayh0aGlzLDIsMSk7aWYodGhpcy5QKXthPWxqKGEpO3ZhciBiPXRoaXMud2ErKztiPWE9Xy5qayhhLDIxLGIpO3ZhciBjPV8uWmkoYiwxKTt2YXIgZD1kPT09dm9pZCAwPyExOmQ7dmFyIGU9dHlwZW9mIGM7ZD1jPT1udWxsP2M6ZT09PSJiaWdpbnQiP1N0cmluZygoMCxfLmJpKSg2NCxjKSk6QWooYyk/ZT09PSJzdHJpbmciP0ZqKGMpOmQ/SGooYyk6R2ooYyk6dm9pZCAwO2Q9PW51bGwmJihkPURhdGUubm93KCksZD1OdW1iZXIuaXNGaW5pdGUoZCk/ZC50b1N0cmluZygpOiIwIixfLiRpKGIsMSxkPT1udWxsP2Q6Xy5KaihkKSkpO2Q9Xy5aaShiLDE1LHZvaWQgMCx2b2lkIDAsS2opO2QhPW51bGwmJih0eXBlb2YgZD09PSJiaWdpbnQiPygwLF8udmgpKGQpP2Q9TnVtYmVyKGQpOihkPSgwLF8uYmkpKDY0LGQpLGQ9KDAsXy52aCkoZCk/TnVtYmVyKGQpOlN0cmluZyhkKSk6ZD1BaihkKT90eXBlb2YgZD09PSJudW1iZXIiP0dqKGQpOgpGaihkKTp2b2lkIDApO2QhPW51bGx8fF8uamsoYiwxNSwobmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCkqNjApO3RoaXMuZXhwZXJpbWVudElkcyYmKGQ9bGoodGhpcy5leHBlcmltZW50SWRzKSxfLkwoYiwxNixkKSk7JGsodGhpcywxLDEpO2I9dGhpcy5nLmxlbmd0aC0xRTMrMTtiPjAmJih0aGlzLmcuc3BsaWNlKDAsYiksdGhpcy5sKz1iLCRrKHRoaXMsMyxiKSk7dGhpcy5nLnB1c2goYSk7dGhpcy5jY3x8dGhpcy5oLmd8fHRoaXMuaC5zdGFydCgpfX07CllrLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXM7aWYodGhpcy5nLmxlbmd0aD09PTApYSYmYSgpO2Vsc2V7dmFyIGQ9RGF0ZS5ub3coKTtpZih0aGlzLnJhPmQmJnRoaXMuSTxkKWImJmIoInRocm90dGxlZCIpO2Vsc2V7dGhpcy56YSYmKHR5cGVvZiB0aGlzLnphLlBkPT09ImZ1bmN0aW9uIj9Rayh0aGlzLmosdGhpcy56YS5QZCgpKTp0aGlzLmouaD0wKTt2YXIgZT10aGlzLmcubGVuZ3RoLGY9U2sodGhpcy5qLHRoaXMuZyx0aGlzLmwsdGhpcy5BLHRoaXMuQ2IsdGhpcy5HLHRoaXMuRiksZz10aGlzLnRiKCk7aWYoZyYmdGhpcy5sYT09PWcpYiYmYigic3RhbGUtYXV0aC10b2tlbiIpO2Vsc2V7dGhpcy5nPVtdO3RoaXMuaC5nJiZ0aGlzLmguc3RvcCgpO3RoaXMubD0wO2Q9Xy5XaihmKTt2YXIgaDt0aGlzLkQmJnRoaXMuRC5UYShkLmxlbmd0aCkmJihoPXhrKGQpKTt2YXIgaz1jbCh0aGlzLGQsZyksbD1mdW5jdGlvbihwKXtjLm8ucmVzZXQoKTt6ayhjLmgsCmMuby5NYSgpKTtpZihwKXt2YXIgcj1udWxsO3RyeXt2YXIgdD1KU09OLnN0cmluZ2lmeShKU09OLnBhcnNlKHAucmVwbGFjZSgiKV19J1xuIiwiIikpKTtyPVRrKHQpfWNhdGNoKEUpe31pZihyKXtwPU51bWJlcihfLmhrKHIsMSxfLmJoKCItMSIpKSk7cD4wJiYoYy5JPURhdGUubm93KCksYy5yYT1jLkkrcCk7cD1Vay5nO3Q9Xy5waChfLnFoKTt2YXIgQTtfLk9nJiZ0JiYoKEE9ci5KW3RdKT09bnVsbD92b2lkIDA6QVtwXSkhPW51bGwmJl8uTWcoXy5SaCwzKTthOntBPVVrLmc7dmFyIEQ9RD09PXZvaWQgMD8hMTpEO2lmKF8ucGgoXy5TaCkmJl8ucGgoXy5xaCkmJnZvaWQgMD09PV8uU2gpe3A9ci5KO3Q9cFtfLnFoXTtpZighdClicmVhayBhO2lmKHQ9dC5ibSl0cnl7dChwLEEsYmspO2JyZWFrIGF9Y2F0Y2goRSl7Xy5yYihFKX19RCYmKEQ9ci5KLChwPV8ucGgoXy5xaCkpJiZwIGluIEQmJihEPURbcF0pJiZkZWxldGUgRFtBXSl9RD1Vay5MYj9Vay5oKHIsVWsuTGIsVWsuZyxVay5qKToKVWsuaChyLFVrLmcsbnVsbCxVay5qKTtpZihEPUQ9PT1udWxsP3ZvaWQgMDpEKUQ9Xy5nayhELDEsLTEpLEQhPT0tMSYmKGMuUnx8YmwoYyxEKSl9fWEmJmEoKTtjLkE9MH0sbj1mdW5jdGlvbihwLHIpe3ZhciB0PV8uY2ooZixfLktrLDMpO3ZhciBBPU51bWJlcihfLmhrKGYsMTQpKSxEPWMubztELmc9TWF0aC5taW4oM0U1LEQuZyoyKTtELmg9TWF0aC5taW4oM0U1LEQuZytNYXRoLnJvdW5kKC4xKihNYXRoLnJhbmRvbSgpLS41KSoyKkQuZykpO3prKGMuaCxjLm8uTWEoKSk7cD09PTQwMSYmZyYmKGMubGE9Zyk7QSYmKGMubCs9QSk7cj09PXZvaWQgMCYmKHI9NTAwPD1wJiZwPDYwMHx8cD09PTQwMXx8cD09PTApO3ImJihjLmc9dC5jb25jYXQoYy5nKSxjLmNjfHxjLmguZ3x8Yy5oLnN0YXJ0KCkpOyRrKGMsNywxKTtiJiZiKCJuZXQtc2VuZC1mYWlsZWQiLHApOysrYy5BfSxxPWZ1bmN0aW9uKCl7Yy56YSYmYy56YS5zZW5kKGssbCxuKX07aD9oLnRoZW4oZnVuY3Rpb24ocCl7JGsoYywKNSxlKTtrLm5lWyJDb250ZW50LUVuY29kaW5nIl09Imd6aXAiO2submVbIkNvbnRlbnQtVHlwZSJdPSJhcHBsaWNhdGlvbi9iaW5hcnkiO2suYm9keT1wO2suWmc9MjtxKCl9LGZ1bmN0aW9uKCl7JGsoYyw2LGUpO3EoKX0pOnEoKX19fX07CnZhciBjbD1mdW5jdGlvbihhLGIsYyl7Yz1jPT09dm9pZCAwP251bGw6Yzt2YXIgZD1kPT09dm9pZCAwP2Eud2l0aENyZWRlbnRpYWxzOmQ7dmFyIGU9e30sZj1uZXcgVVJMKFprKGEpKTtjJiYoZS5BdXRob3JpemF0aW9uPWMpO2EubWImJihlWyJYLUdvb2ctQXV0aFVzZXIiXT1hLm1iLGYuc2VhcmNoUGFyYW1zLnNldCgiYXV0aHVzZXIiLGEubWIpKTtyZXR1cm57dXJsOmYudG9TdHJpbmcoKSxib2R5OmIsWmc6MSxuZTplLExpOiJQT1NUIix3aXRoQ3JlZGVudGlhbHM6ZCx3YzphLndjfX0sWGs9ZnVuY3Rpb24oYSl7YS5qLmw9ITA7YS5MJiYoYS5qLmg9MyxkbChhKSk7YS5LJiYoYS5qLmg9MixlbChhKSk7YS5mbHVzaCgpO2Euai5sPSExfSxkbD1mdW5jdGlvbihhKXtmbChhLDMyLDEwLGZ1bmN0aW9uKGIsYyl7Yj1uZXcgVVJMKGIpO2Iuc2VhcmNoUGFyYW1zLnNldCgiZm9ybWF0IiwianNvbiIpO3ZhciBkPSExO3RyeXtkPV8ubWIoKS5uYXZpZ2F0b3Iuc2VuZEJlYWNvbihiLnRvU3RyaW5nKCksCl8uV2ooYykpfWNhdGNoKGUpe31kfHwoYS5UPSExKTtyZXR1cm4gZH0pfSxlbD1mdW5jdGlvbihhKXtmbChhLDYsNSxmdW5jdGlvbihiLGMpe2I9bmV3IFVSTChiKTtiLnNlYXJjaFBhcmFtcy5zZXQoImZvcm1hdCIsImJhc2U2NGpzb24iKTt2YXIgZD1iLnNlYXJjaFBhcmFtcyxlPWQuc2V0O2M9Xy5XaihjKTtmb3IodmFyIGY9W10sZz0wLGg9MDtoPGMubGVuZ3RoO2grKyl7dmFyIGs9Yy5jaGFyQ29kZUF0KGgpO2s+MjU1JiYoZltnKytdPWsmMjU1LGs+Pj04KTtmW2crK109a31jPW9qKGYsMyk7ZS5jYWxsKGQsInAiLGMpO2I9Yi50b1N0cmluZygpO2lmKGIubGVuZ3RoPjE1MzYwKXJldHVybiExOyhuZXcgSW1hZ2UpLnNyYz1iO3JldHVybiEwfSl9LGZsPWZ1bmN0aW9uKGEsYixjLGQpe2lmKGEuZy5sZW5ndGghPT0wKXt2YXIgZT1uZXcgVVJMKFprKGEpKTtlLnNlYXJjaFBhcmFtcy5kZWxldGUoImZvcm1hdCIpO3ZhciBmPWEudGIoKTtmJiZlLnNlYXJjaFBhcmFtcy5zZXQoImF1dGgiLApmKTtlLnNlYXJjaFBhcmFtcy5zZXQoImF1dGh1c2VyIixhLm1ifHwiMCIpO2ZvcihmPTA7ZjxjJiZhLmcubGVuZ3RoOysrZil7dmFyIGc9YS5nLnNsaWNlKDAsYiksaD1TayhhLmosZyxhLmwsYS5BLGEuQ2IsYS5HLGEuRik7aWYoIWQoZS50b1N0cmluZygpLGgpKXsrK2EuQTticmVha31hLmw9MDthLkE9MDthLkc9MDthLkY9MDthLmc9YS5nLnNsaWNlKGcubGVuZ3RoKX1hLmguZyYmYS5oLnN0b3AoKX19LFZrPWZ1bmN0aW9uKCl7cmV0dXJuImh0dHBzOi8vcGxheS5nb29nbGUuY29tL2xvZz9mb3JtYXQ9anNvbiZoYXNmYXN0PXRydWUifTt2YXIgZ2w9ZnVuY3Rpb24oKXt0aGlzLlZnPXR5cGVvZiBBYm9ydENvbnRyb2xsZXIhPT0idW5kZWZpbmVkIn07CmdsLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLGUsZixnLGgsayxsLG4scSxwLHI7cmV0dXJuIF8uVmkoZnVuY3Rpb24odCl7c3dpdGNoKHQuZyl7Y2FzZSAxOnJldHVybiBmPShlPWQuVmc/bmV3IEFib3J0Q29udHJvbGxlcjp2b2lkIDApJiZhLndjPjA/c2V0VGltZW91dChmdW5jdGlvbigpe2UuYWJvcnQoKX0sYS53Yyk6dm9pZCAwLHQuRigyLDMpLGc9T2JqZWN0LmFzc2lnbih7fSx7bWV0aG9kOmEuTGksaGVhZGVyczpPYmplY3QuYXNzaWduKHt9LGEubmUpfSxhLmJvZHkmJntib2R5OmEuYm9keX0sYS53aXRoQ3JlZGVudGlhbHMmJntjcmVkZW50aWFsczoiaW5jbHVkZSJ9LHtzaWduYWw6YS53YyYmZT9lLnNpZ25hbDpudWxsfSksdC5oKGZldGNoKGEudXJsLGcpLDUpO2Nhc2UgNTpoPXQuajtpZihoLnN0YXR1cyE9PTIwMCl7KGs9Yyk9PW51bGx8fGsoaC5zdGF0dXMpO3QueGEoMyk7YnJlYWt9aWYoKGw9Yik9PW51bGwpe3QueGEoNyk7YnJlYWt9cmV0dXJuIHQuaChoLnRleHQoKSwKOCk7Y2FzZSA4OmwodC5qKTtjYXNlIDc6Y2FzZSAzOnQuTCgpO2NsZWFyVGltZW91dChmKTt0LnFhKDApO2JyZWFrO2Nhc2UgMjpuPXQuRCgpO3N3aXRjaCgocT1uKT09bnVsbD92b2lkIDA6cS5uYW1lKXtjYXNlICJBYm9ydEVycm9yIjoocD1jKT09bnVsbHx8cCg0MDgpO2JyZWFrO2RlZmF1bHQ6KHI9Yyk9PW51bGx8fHIoNDAwKX10LnhhKDMpfX0pfTtnbC5wcm90b3R5cGUuUGQ9ZnVuY3Rpb24oKXtyZXR1cm4gNH07Xy5obD1mdW5jdGlvbihhLGIpe2I9Yj09PXZvaWQgMD8iMCI6YjtfLnUuY2FsbCh0aGlzKTt0aGlzLk9iPWE7dGhpcy5tYj1iO3RoaXMuQT0iaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vbG9nP2Zvcm1hdD1qc29uJmhhc2Zhc3Q9dHJ1ZSI7dGhpcy5nPXRoaXMuQ2I9dGhpcy56YT10aGlzLmg9bnVsbDt0aGlzLmw9dGhpcy5vPSExO3RoaXMuaj1udWxsfTtfLkIoXy5obCxfLnUpO18uaWw9ZnVuY3Rpb24oYSxiKXthLnRiPWI7cmV0dXJuIGF9O18uamw9ZnVuY3Rpb24oYSl7YS5vPSEwO3JldHVybiBhfTtfLmhsLnByb3RvdHlwZS5NYz1mdW5jdGlvbigpe3RoaXMuQj0hMDtyZXR1cm4gdGhpc307Cl8ua2w9ZnVuY3Rpb24oYSl7YS56YXx8KGEuemE9bmV3IGdsKTt2YXIgYj1uZXcgWWsoe09iOmEuT2IsdGI6YS50Yj9hLnRiOnZrLG1iOmEubWIsYWo6YS5BLGFiOiExLGNjOiExLE1jOmEuQixPZTphLk9lLHphOmEuemF9KTtfLmFrKGEsXy5aaihfLnBhLGIpKTtpZihhLmgpe3ZhciBjPWEuaCxkPVBrKGIuaik7Xy5UaihkLDcsYyl9Yi5EPW5ldyB3azthLkNiJiYoYi5DYj1hLkNiKTthLmcmJigoZD1hLmcpPyhiLmV4cGVyaW1lbnRJZHN8fChiLmV4cGVyaW1lbnRJZHM9bmV3IG9rKSxjPWIuZXhwZXJpbWVudElkcyxkPV8uV2ooZCksXy5UaihjLDQsZCkpOmIuZXhwZXJpbWVudElkcyYmXy4kaShiLmV4cGVyaW1lbnRJZHMsNCkpO2EubyYmKGIuTD1hLm8mJmIuVCk7YS5sJiYoYi5LPWEubCk7YS5qJiYoYz1hLmosYi5SPSEwLGJsKGIsYykpO1JrKGIuaik7YS56YS52YyYmYS56YS52YyhhLk9iKTthLnphLlFpJiZhLnphLlFpKGIpO3JldHVybiBifTtfLmxsPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihfLmxsLF8uSik7Xy5tPV8ubGwucHJvdG90eXBlO18ubS5KYT1mdW5jdGlvbigpe3JldHVybiBfLk4odGhpcywxNil9O18ubS5OYT1mdW5jdGlvbihhKXtyZXR1cm4gXy5Uaih0aGlzLDE2LGEpfTtfLm0ub2E9ZnVuY3Rpb24oKXtyZXR1cm4gXy5OKHRoaXMsMSl9O18ubS5uYT1mdW5jdGlvbihhKXtyZXR1cm4gXy5Uaih0aGlzLDEsYSl9O18ubS5PZD1mdW5jdGlvbigpe3JldHVybiBfLmRqKHRoaXMsNTMpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5tbD1mdW5jdGlvbihhKXt2YXIgYj1fLkthKCk7YT1iP2IuY3JlYXRlSFRNTChhKTphO3JldHVybiBuZXcgXy5EYyhhKX07Xy5ubD1mdW5jdGlvbihhLGIpe2I9Xy5FZyhiKTtiIT09dm9pZCAwJiYoYS5ocmVmPWIpfTtfLm9sPXt9O18ucGw9ZnVuY3Rpb24oYSl7dGhpcy5nPWF9O18ucGwucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ307Xy5xbD17fTtfLnpmPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoIksiKTt9O18uemYucHJvdG90eXBlLkpkPW51bGw7Xy56Zi5wcm90b3R5cGUubWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50fTtfLnpmLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRlbnR9O18uemYucHJvdG90eXBlLlRiPWZ1bmN0aW9uKCl7aWYodGhpcy5aYiE9PV8ucWwpdGhyb3cgRXJyb3IoIkwiKTtyZXR1cm4gXy5tbCh0aGlzLnRvU3RyaW5nKCkpfTt2YXIgcmw9ZnVuY3Rpb24oKXtfLnpmLmNhbGwodGhpcyl9OwpfLkcocmwsXy56Zik7cmwucHJvdG90eXBlLlpiPV8ucWw7dmFyIHNsPWZ1bmN0aW9uKCl7Xy56Zi5jYWxsKHRoaXMpfTtfLkcoc2wsXy56Zik7c2wucHJvdG90eXBlLlpiPV8ub2w7c2wucHJvdG90eXBlLkpkPTE7c2wucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF8ucGwodGhpcy50b1N0cmluZygpKX07Xy50bD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGMpe3RoaXMuY29udGVudD1jfWIucHJvdG90eXBlPWEucHJvdG90eXBlO3JldHVybiBmdW5jdGlvbihjLGQpe2M9bmV3IGIoU3RyaW5nKGMpKTtkIT09dm9pZCAwJiYoYy5KZD1kKTtyZXR1cm4gY319KHJsKTtfLnVsPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYyl7dGhpcy5jb250ZW50PWN9Yi5wcm90b3R5cGU9YS5wcm90b3R5cGU7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBuZXcgYihTdHJpbmcoYykpfX0oc2wpO18udmw9UmVnRXhwLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgic3RpY2t5Iik7Xy53bD1uZXcgUmVnRXhwKChfLnZsPyIiOiJeIikrIig/OiF8Lz8oW2EtekEtWl1bYS16QS1aMC05Oi1dKikpIixfLnZsPyJneSI6ImciKTtfLnhsPWZ1bmN0aW9uKCl7Xy56Zi5jYWxsKHRoaXMpfTtfLkIoXy54bCxybCk7Cl8ueGwucHJvdG90eXBlLm1hPWZ1bmN0aW9uKCl7aWYodGhpcy5jb250ZW50IT09dm9pZCAwKXJldHVybiB0aGlzLmNvbnRlbnQ7Zm9yKHZhciBhPSIiLGI9Xy5DKHRoaXMuVSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYSs9Yy52YWx1ZTtyZXR1cm4gYX07Xy54bC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYSgpfTtfLnlsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3RoaXMuY29udGVudD0iIn1hLnByb3RvdHlwZT1fLnhsLnByb3RvdHlwZTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGF9fSgpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmxhKCJlbF9tYWluX2NzcyIpOwoKXy5tYSgpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmxhKCJlbF9tYWluIik7Ci8qCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyIHpsPWZ1bmN0aW9uKGEsYil7dGhpcy54PWEhPT12b2lkIDA/YTowO3RoaXMueT1iIT09dm9pZCAwP2I6MH0sQWw9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fSxkO2ZvcihkIGluIGEpY1tkXT1iLmNhbGwodm9pZCAwLGFbZF0sZCxhKTtyZXR1cm4gY30sQmw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmNyZWF0ZVJhbmdlKCk7Yy5zZWxlY3ROb2RlKGIuYm9keSk7YT1fLm1sKGEpO3JldHVybiBjLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChfLmtqKGEpKX0sQ2w9ZnVuY3Rpb24oYSl7YT1hLm5vZGVOYW1lO3JldHVybiB0eXBlb2YgYT09PSJzdHJpbmciP2E6IkZPUk0ifSxEbD1mdW5jdGlvbihhKXthPWEubm9kZVR5cGU7cmV0dXJuIGE9PT0xfHx0eXBlb2YgYSE9PSJudW1iZXIifSxFbD1mdW5jdGlvbihhLGIsYyl7YS5zZXRBdHRyaWJ1dGUoYixjKX0sRmw9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uTWEoYSl9LEdsPWZ1bmN0aW9uKGEsYixjLGQpe18ucmkoYSk7dmFyIGU9YS5KLGY9ZVtfLkhdfAowO2lmKGM9PW51bGwpcmV0dXJuIF8udGkoZSxmLGIpLGE7dmFyIGc9Yz09PV8uVGg/NzpjW18uSF18MCxoPWcsaz1fLkVpKGcpLGw9a3x8T2JqZWN0LmlzRnJvemVuKGMpO2t8fChnPTApO2x8fChjPV8ubWkoYyksaD0wLGc9Xy5EaShnLGYpLGw9ITEpO2d8PTU7az00Jmc/NTEyJmc/NTEyOjEwMjQmZz8xMDI0OjA6dm9pZCAwO2s9ayE9bnVsbD9rOjEwMjQ7Z3w9aztmb3IodmFyIG49MDtuPGMubGVuZ3RoO24rKyl7dmFyIHE9Y1tuXSxwPWQocSxrKTtPYmplY3QuaXMocSxwKXx8KGwmJihjPV8ubWkoYyksaD0wLGc9Xy5EaShnLGYpLGw9ITEpLGNbbl09cCl9ZyE9PWgmJihsJiYoYz1fLm1pKGMpLGc9Xy5EaShnLGYpKSxfLlNnKGMsZykpO18udGkoZSxmLGIsYyk7cmV0dXJuIGF9LEhsPWZ1bmN0aW9uKGEpe2lmKF8uT2cpe3ZhciBiO3JldHVybihiPWFbXy5ka10pIT1udWxsP2I6YVtfLmRrXT1uZXcgTWFwfWlmKF8uZGsgaW4gYSlyZXR1cm4gYVtfLmRrXTtiPW5ldyBNYXA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsCl8uZGsse3ZhbHVlOmJ9KTtyZXR1cm4gYn0sSWw9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5nZXQoZCk7aWYoZSE9bnVsbClyZXR1cm4gZTtmb3IodmFyIGY9ZT0wO2Y8ZC5sZW5ndGg7ZisrKXt2YXIgZz1kW2ZdO18udWkoYixnKSE9bnVsbCYmKGUhPT0wJiYoYz1fLnRpKGIsYyxlKSksZT1nKX1hLnNldChkLGUpO3JldHVybiBlfSxKbD1mdW5jdGlvbihhKXt2YXIgYj17fSxjO2ZvcihjIGluIGEpYltjXT1hW2NdO3JldHVybiBifSxLbD1mdW5jdGlvbihhLGIpe3JldHVybiBhPGI/LTE6YT5iPzE6MH0sTGw9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wO2E9KDAsXy5BYykoU3RyaW5nKGEpKS5zcGxpdCgiLiIpO2I9KDAsXy5BYykoU3RyaW5nKGIpKS5zcGxpdCgiLiIpO2Zvcih2YXIgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCksZT0wO2M9PTAmJmU8ZDtlKyspe3ZhciBmPWFbZV18fCIiLGc9YltlXXx8IiI7ZG97Zj0vKFxkKikoXEQqKSguKikvLmV4ZWMoZil8fFsiIiwiIiwiIiwKIiJdO2c9LyhcZCopKFxEKikoLiopLy5leGVjKGcpfHxbIiIsIiIsIiIsIiJdO2lmKGZbMF0ubGVuZ3RoPT0wJiZnWzBdLmxlbmd0aD09MClicmVhaztjPUtsKGZbMV0ubGVuZ3RoPT0wPzA6cGFyc2VJbnQoZlsxXSwxMCksZ1sxXS5sZW5ndGg9PTA/MDpwYXJzZUludChnWzFdLDEwKSl8fEtsKGZbMl0ubGVuZ3RoPT0wLGdbMl0ubGVuZ3RoPT0wKXx8S2woZlsyXSxnWzJdKTtmPWZbM107Zz1nWzNdfXdoaWxlKGM9PTApfXJldHVybiBjfSxNbD1mdW5jdGlvbihhKXtpZigvXihzY3JpcHR8c3R5bGUpJC9pLnRlc3QoYS50YWdOYW1lKSl0aHJvdyBFcnJvcigidCIpO30sTmw9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIF8ucGwpcmV0dXJuIGEuZzt0aHJvdyBFcnJvcigidCIpO30sT2w9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLAoiJmFwb3M7Iil9LFBsPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy5EYz9hOl8ubWwoT2woU3RyaW5nKGEpKSl9LFFsPWZ1bmN0aW9uKGEpe3ZhciBiPXtub25jZTpfLk9hKCJzY3JpcHQiLGRvY3VtZW50KX07YT1fLlJhKGEpLnRvU3RyaW5nKCk7dmFyIGM9IjxzY3JpcHQiO2lmKGI9PW51bGw/MDpiLmlkKWMrPScgaWQ9IicrT2woYi5pZCkrJyInO2lmKGI9PW51bGw/MDpiLm5vbmNlKWMrPScgbm9uY2U9IicrT2woYi5ub25jZSkrJyInO2lmKGI9PW51bGw/MDpiLnR5cGUpYys9JyB0eXBlPSInK09sKGIudHlwZSkrJyInO2lmKGI9PW51bGw/MDpiLmRlZmVyKWMrPSIgZGVmZXIiO3JldHVybiBfLm1sKGMrKCI+IithKyJceDNjL3NjcmlwdD4iKSl9LFJsPWZ1bmN0aW9uKGEpe3ZhciBiPVBsKCIiKTtyZXR1cm4gXy5tbChhLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gXy5raihQbChjKSl9KS5qb2luKF8ua2ooYikudG9TdHJpbmcoKSkpfSxTbD1mdW5jdGlvbihhKXtyZXR1cm4gUmwoYSl9LApWbD1mdW5jdGlvbihhKXtmb3IodmFyIGI9IiIsYz1PYmplY3Qua2V5cyhhKSxkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF0sZj1hW2VdO2lmKCFUbC50ZXN0KGUpKXRocm93IEVycm9yKCJ0Iik7aWYoZiE9PXZvaWQgMCYmZiE9PW51bGwpe2lmKC9eb24uL2kudGVzdChlKSl0aHJvdyBFcnJvcigidCIpO1VsLmluZGV4T2YoZS50b0xvd2VyQ2FzZSgpKSE9PS0xJiYoZj1fLkVnKFN0cmluZyhmKSl8fCJhYm91dDppbnZhbGlkI3pDbG9zdXJleiIpO2Y9ZSsnPSInK1BsKFN0cmluZyhmKSkrJyInO2IrPSIgIitmfX1yZXR1cm4gYn0sWWw9ZnVuY3Rpb24oYSl7dmFyIGI9e307aWYoIVRsLnRlc3QoImJvZHkiKSl0aHJvdyBFcnJvcigidCIpO2lmKFdsLmluZGV4T2YoIkJPRFkiKSE9PS0xKXRocm93IEVycm9yKCJ0Iik7dmFyIGM9Ijxib2R5IjtiJiYoYys9VmwoYikpO0FycmF5LmlzQXJyYXkoYSl8fChhPWE9PT12b2lkIDA/W106W2FdKTtYbC5pbmRleE9mKCJCT0RZIikhPT0tMT8KYys9Ij4iOihhPVNsKGEubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkIGluc3RhbmNlb2YgXy5EYz9kOlBsKFN0cmluZyhkKSl9KSksYys9Ij4iK2EudG9TdHJpbmcoKSsiPC9ib2R5PiIpO3JldHVybiBfLm1sKGMpfSxabD1mdW5jdGlvbihhKXt0aGlzLmg9dGhpcy5CPXRoaXMubD0iIjt0aGlzLkM9bnVsbDt0aGlzLkE9dGhpcy5qPSIiO3RoaXMubz0hMTt2YXIgYjthIGluc3RhbmNlb2YgWmw/KHRoaXMubz1hLm8sJGwodGhpcyxhLmwpLHRoaXMuQj1hLkIsYW0odGhpcyxhLmgpLGJtKHRoaXMsYS5DKSxjbSh0aGlzLGEuaiksZG0odGhpcyxlbShhLmcpKSx0aGlzLkE9YS5BKTphJiYoYj1TdHJpbmcoYSkubWF0Y2goXy5yZikpPyh0aGlzLm89ITEsJGwodGhpcyxiWzFdfHwiIiwhMCksdGhpcy5CPWZtKGJbMl18fCIiKSxhbSh0aGlzLGJbM118fCIiLCEwKSxibSh0aGlzLGJbNF0pLGNtKHRoaXMsYls1XXx8IiIsITApLGRtKHRoaXMsYls2XXx8IiIsITApLHRoaXMuQT1mbShiWzddfHwiIikpOgoodGhpcy5vPSExLHRoaXMuZz1uZXcgZ20obnVsbCx0aGlzLm8pKX0saG09ZnVuY3Rpb24oYSl7cmV0dXJuIF8ueWEoYSk/YS5UYiYmKGE9YS5UYigpLGEgaW5zdGFuY2VvZiBfLkRjKT9hOlBsKCJ6U295eiIpOlBsKFN0cmluZyhhKSl9LGltPWZ1bmN0aW9uKGEsYil7YiYmYi5oP2IuaChhKTooYj1obShiKSxhLmlubmVySFRNTD1fLmtqKGIpKX0sa209ZnVuY3Rpb24oYSxiKXthOmlmKGI9YShifHxqbSx2b2lkIDApLGE9Xy5sYigpLGImJmIuZz9hPWIuZygpOihhPWEuY3JlYXRlRWxlbWVudCgiRElWIiksYj1obShiKSxhLmlubmVySFRNTD1fLmtqKGIpKSxhLmNoaWxkTm9kZXMubGVuZ3RoPT0xJiYoYj1hLmZpcnN0Q2hpbGQsYi5ub2RlVHlwZT09MSkpe2E9YjticmVhayBhfXJldHVybiBhfSxtbT1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpO2E9bG0oYSxiKTtiPWIuYm9keTtiLmFwcGVuZENoaWxkKGEpO2I9KG5ldyBYTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyhiKTsKYj1iLnNsaWNlKGIuaW5kZXhPZigiPiIpKzEsYi5sYXN0SW5kZXhPZigiPC8iKSk7cmV0dXJuIF8ubWwoYil9LG5tPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT09InN0cmluZyIpdGhyb3cgRXJyb3IoKTtyZXR1cm4gYX0sb209ZnVuY3Rpb24oYSxiLGMpe2lmKGIpcmV0dXJuIG5tKGEpO3ZhciBkO3JldHVybihkPV8ucGkoYSkpIT1udWxsP2Q6Yz8iIjp2b2lkIDB9LHJtPWZ1bmN0aW9uKCl7cmV0dXJuIHBtfHwocG09bmV3IF8ueWgoXy5UZyhbXSksdm9pZCAwLHZvaWQgMCx2b2lkIDAscW0pKX0sc209ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5KLGY9ZVtfLkhdfDA7Yz1fLldnKGEsZik/MTpjO2Q9ISFkfHxjPT09MztjPT09MiYmXy5xaShhKSYmKGU9YS5KLGY9ZVtfLkhdfDApO2E9Xy5CaShlLGIpO3ZhciBnPWE9PT1fLlRoPzc6YVtfLkhdfDAsaD1fLkNpKGcsZik7dmFyIGs9NCZoPyExOiEwO2lmKGspezQmaCYmKGE9Xy5taShhKSxnPTAsaD1fLkRpKGgsZiksZj1fLnRpKGUsCmYsYixhKSk7Zm9yKHZhciBsPTAsbj0wO2w8YS5sZW5ndGg7bCsrKXt2YXIgcT1fLnBpKGFbbF0pO3EhPW51bGwmJihhW24rK109cSl9bjxsJiYoYS5sZW5ndGg9bik7aD0oaHw0KSYtNTEzO2gmPS0xMDI1O2gmPS00MDk3fWghPT1nJiYoXy5TZyhhLGgpLDImaCYmT2JqZWN0LmZyZWV6ZShhKSk7cmV0dXJuIGE9Xy5GaShhLGgsZSxmLGIsYyxrLGQpfSx1bT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT10bTshZCYmXy5xaShhKSYmKGI9YS5KLGM9YltfLkhdfDApO3ZhciBmPV8udWkoYiwxKTthPSExO2lmKGY9PW51bGwpe2lmKGQpcmV0dXJuIHJtKCk7Zj1bXX1lbHNlIGlmKGYuY29uc3RydWN0b3I9PT1fLnloKWlmKGYuS2ImMiYmIWQpZj1fLnpoKGYpO2Vsc2UgcmV0dXJuIGY7ZWxzZSBBcnJheS5pc0FycmF5KGYpP2E9ISEoKGZbXy5IXXwwKSYyKTpmPVtdO2lmKGQpe2lmKCFmLmxlbmd0aClyZXR1cm4gcm0oKTthfHwoYT0hMCxfLlRnKGYpKX1lbHNlIGlmKGEpe2E9ITE7Xy5VZyhmKTsKZD1fLm1pKGYpO2ZvcihmPTA7ZjxkLmxlbmd0aDtmKyspe3ZhciBnPWRbZl09Xy5taShkW2ZdKTtBcnJheS5pc0FycmF5KGdbMV0pJiYoZ1sxXT1fLlRnKGdbMV0pKX1mPV8uVWcoZCl9IWEmJmMmMzImJl8ubGkoZik7ZT1uZXcgXy55aChmLGUsb20sdm9pZCAwKTtjPV8udGkoYixjLDEsZSk7YXx8Xy5zaShiLGMpO3JldHVybiBlfSx2bT1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLnRvcD1hO3RoaXMucmlnaHQ9Yjt0aGlzLmJvdHRvbT1jO3RoaXMubGVmdD1kfSx3bT1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLmxlZnQ9YTt0aGlzLnRvcD1iO3RoaXMud2lkdGg9Yzt0aGlzLmhlaWdodD1kfSx4bT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXSxkPWEubGVuZ3RoLGU9MCxmPVtdLGcsaCxrPTA7azxkOyl7c3dpdGNoKGUpe2Nhc2UgMDp2YXIgbD1hLmluZGV4T2YoIjwiLGspO2lmKGw8MCl7aWYoYy5sZW5ndGg9PT0wKXJldHVybiBhO2MucHVzaChhLnN1YnN0cmluZyhrKSk7az1kfWVsc2UgYy5wdXNoKGEuc3Vic3RyaW5nKGssCmwpKSxoPWwsaz1sKzEsXy52bD8oXy53bC5sYXN0SW5kZXg9ayxsPV8ud2wuZXhlYyhhKSk6KF8ud2wubGFzdEluZGV4PTAsbD1fLndsLmV4ZWMoYS5zdWJzdHJpbmcoaykpKSxsPyhmPVsiPCIsbFswXV0sZz1sWzFdLGU9MSxrKz1sWzBdLmxlbmd0aCk6Yy5wdXNoKCI8Iik7YnJlYWs7Y2FzZSAxOmw9YS5jaGFyQXQoaysrKTtzd2l0Y2gobCl7Y2FzZSAiJyI6Y2FzZSAnIic6dmFyIG49YS5pbmRleE9mKGwsayk7bjwwP2s9ZDooZi5wdXNoKGwsYS5zdWJzdHJpbmcoayxuKzEpKSxrPW4rMSk7YnJlYWs7Y2FzZSAiPiI6Zi5wdXNoKGwpO2MucHVzaChiKGYuam9pbigiIiksZykpO2U9MDtmPVtdO2g9Zz1udWxsO2JyZWFrO2RlZmF1bHQ6Zi5wdXNoKGwpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoKTt9ZT09PTEmJms+PWQmJihrPWgrMSxjLnB1c2goIjwiKSxlPTAsZj1bXSxoPWc9bnVsbCl9cmV0dXJuIGMuam9pbigiIil9LERtPWZ1bmN0aW9uKCl7dmFyIGE9eW0oXy5qbChfLmlsKHptKCksCmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KS5NYygpKSksYj1BbSgpLm1hcChmdW5jdGlvbihjKXt2YXIgZDthOnt2YXIgZT1jLm87aWYoZT09bnVsbCljPW51bGw7ZWxzZSBpZih0eXBlb2YgZT09PSJudW1iZXIiKWM9ZTtlbHNle2lmKHR5cGVvZiBlPT09InN0cmluZyIpe3ZhciBmPU51bWJlcihlKTtpZighaXNOYU4oZikmJihmIT09MHx8ZS50cmltKCkubGVuZ3RoIT09MCkpe2M9ZjticmVhayBhfX10aHJvdyBCbShjLCJudW1iZXIiKTt9fXJldHVybihkPWMpIT1udWxsP2Q6MH0pLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gYz4wfSk7Yi5sZW5ndGg+MCYmKGI9Q20oYiksYS5nPWIpO3JldHVybiBfLmtsKGEpfSxFbT1mdW5jdGlvbihhKXtyZXR1cm4idHJhbnNsYXRlOiIrYX0sS209ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEZtO2I9Xy5UaihiLDEsYS5uYW1lKTt2YXIgYz1HbShhLnN0YXJ0VGltZSk7Yj1fLkwoYiwyLGMpO2E9SG0oYS5kdXJhdGlvbik7YT1fLkwoYiwzLGEpO2I9bmV3IEltOwpyZXR1cm4gSm0oYSw1LGIpfSxHbT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgTG07Yi5zZXRTZWNvbmRzKE1hdGguZmxvb3IoYS8xRTMpKTthPU1hdGgucm91bmQoYSUxRTMqMUU2KTtfLkdpKGIsMixhPT1udWxsP2E6Xy5CaihhKSwwKTtyZXR1cm4gYn0sSG09ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IE1tO2Iuc2V0U2Vjb25kcyhNYXRoLmZsb29yKGEvMUUzKSk7YT1NYXRoLnJvdW5kKGElMUUzKjFFNik7Xy5HaShiLDIsYT09bnVsbD9hOl8uQmooYSksMCk7cmV0dXJuIGJ9LE5tPWZ1bmN0aW9uKGEpe3JldHVybiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2UubWFyayYmKGE9cGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZShhLCJtYXJrIiksYS5sZW5ndGg9PTEpP2FbMF06bnVsbH0sT209ZnVuY3Rpb24oYSxiKXtyZXR1cm4gcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm1lYXN1cmU/cGVyZm9ybWFuY2UubWVhc3VyZShhLGIpfHxudWxsOm51bGx9LFJtPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0KQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtkLnNwbGljZSgwLDIpO2Q9ImwiK2EudG9TdHJpbmcoMTYpKyJpIitiLnRvU3RyaW5nKDE2KSsoZC5sZW5ndGg/Ii0iK2Quam9pbigiXyIpOiIiKTtQbT9QbS5wdXNoKGQpOlFtKGQpfSxWbT1mdW5jdGlvbigpe3ZhciBhPVNtfHwoU209VG0oJ1tudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIihmdW5jdGlvbigpe1wndXNlIHN0cmljdFwnO3ZhciBmXFx1MDAzZHR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllc1xcdTAwM2RcXHUwMDNkXFwiZnVuY3Rpb25cXCI/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYyxiKXtpZihhXFx1MDAzZFxcdTAwM2RBcnJheS5wcm90b3R5cGV8fGFcXHUwMDNkXFx1MDAzZE9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtjXVxcdTAwM2RiLnZhbHVlO3JldHVybiBhfTtmdW5jdGlvbiBnKGEpe2FcXHUwMDNkW1xcIm9iamVjdFxcIlxcdTAwM2RcXHUwMDNkdHlwZW9mIGdsb2JhbFRoaXNcXHUwMDI2XFx1MDAyNmdsb2JhbFRoaXMsYSxcXCJvYmplY3RcXCJcXHUwMDNkXFx1MDAzZHR5cGVvZiB3aW5kb3dcXHUwMDI2XFx1MDAyNndpbmRvdyxcXCJvYmplY3RcXCJcXHUwMDNkXFx1MDAzZHR5cGVvZiBzZWxmXFx1MDAyNlxcdTAwMjZzZWxmLFxcIm9iamVjdFxcIlxcdTAwM2RcXHUwMDNkdHlwZW9mIGdsb2JhbFxcdTAwMjZcXHUwMDI2Z2xvYmFsXTtmb3IodmFyIGNcXHUwMDNkMDtjXFx1MDAzY2EubGVuZ3RoOysrYyl7dmFyIGJcXHUwMDNkYVtjXTtpZihiXFx1MDAyNlxcdTAwMjZiLk1hdGhcXHUwMDNkXFx1MDAzZE1hdGgpcmV0dXJuIGJ9dGhyb3cgRXJyb3IoXFwiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdFxcIik7fXZhciBoXFx1MDAzZGcodGhpcyk7XFxuZnVuY3Rpb24gayhhLGMpe2lmKGMpYTp7dmFyIGJcXHUwMDNkaDthXFx1MDAzZGEuc3BsaXQoXFwiLlxcIik7Zm9yKHZhciBkXFx1MDAzZDA7ZFxcdTAwM2NhLmxlbmd0aC0xO2QrKyl7dmFyIGVcXHUwMDNkYVtkXTtpZighKGUgaW4gYikpYnJlYWsgYTtiXFx1MDAzZGJbZV19YVxcdTAwM2RhW2EubGVuZ3RoLTFdO2RcXHUwMDNkYlthXTtjXFx1MDAzZGMoZCk7YyFcXHUwMDNkZFxcdTAwMjZcXHUwMDI2YyFcXHUwMDNkbnVsbFxcdTAwMjZcXHUwMDI2ZihiLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpjfSl9fWsoXFwiZ2xvYmFsVGhpc1xcIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8aH0pOy8qXFxuXFxuIENvcHlyaWdodCBHb29nbGUgTExDXFxuIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXFxuKi9cXG52YXIgbFxcdTAwM2RnbG9iYWxUaGlzLnRydXN0ZWRUeXBlcyxtO2Z1bmN0aW9uIG4oKXt2YXIgYVxcdTAwM2RudWxsO2lmKCFsKXJldHVybiBhO3RyeXt2YXIgY1xcdTAwM2RmdW5jdGlvbihiKXtyZXR1cm4gYn07YVxcdTAwM2RsLmNyZWF0ZVBvbGljeShcXCJnb29nI2h0bWxcXCIse2NyZWF0ZUhUTUw6YyxjcmVhdGVTY3JpcHQ6YyxjcmVhdGVTY3JpcHRVUkw6Y30pfWNhdGNoKGIpe31yZXR1cm4gYX07ZnVuY3Rpb24gcChhKXt0aGlzLmdcXHUwMDNkYX1wLnByb3RvdHlwZS50b1N0cmluZ1xcdTAwM2RmdW5jdGlvbigpe3JldHVybiB0aGlzLmcrXFwiXFwifTtmdW5jdGlvbiBxKGEpe21cXHUwMDNkXFx1MDAzZFxcdTAwM2R2b2lkIDBcXHUwMDI2XFx1MDAyNihtXFx1MDAzZG4oKSk7YVxcdTAwM2RtP20uY3JlYXRlU2NyaXB0VVJMKGEpOmE7cmV0dXJuIG5ldyBwKGEpfTtpZighZnVuY3Rpb24oKXtpZihzZWxmLm9yaWdpbilyZXR1cm4gc2VsZi5vcmlnaW5cXHUwMDNkXFx1MDAzZFxcdTAwM2RcXCJudWxsXFwiO2lmKGxvY2F0aW9uLmhvc3QhXFx1MDAzZFxcdTAwM2RcXCJcXCIpcmV0dXJuITE7dHJ5e3JldHVybiB3aW5kb3cucGFyZW50LmVzY2FwZShcXCJcXCIpLCExfWNhdGNoKGEpe3JldHVybiEwfX0oKSl0aHJvdyBFcnJvcihcXCJzYW5kYm94aW5nIGVycm9yXFwiKTtcXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcXCJtZXNzYWdlXFwiLGZ1bmN0aW9uKGEpe3ZhciBjXFx1MDAzZGEucG9ydHNbMF07YVxcdTAwM2RhLmRhdGE7dmFyIGJcXHUwMDNkYS5jYWxsYmFja05hbWUuc3BsaXQoXFwiLlxcIiksZFxcdTAwM2R3aW5kb3c7YlswXVxcdTAwM2RcXHUwMDNkXFx1MDAzZFxcIndpbmRvd1xcIlxcdTAwMjZcXHUwMDI2Yi5zaGlmdCgpO2Zvcih2YXIgZVxcdTAwM2QwO2VcXHUwMDNjYi5sZW5ndGgtMTtlKyspZFtiW2VdXVxcdTAwM2R7fSxkXFx1MDAzZGRbYltlXV07ZFtiW2IubGVuZ3RoLTFdXVxcdTAwM2RmdW5jdGlvbihyKXtjLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHIpKX07YlxcdTAwM2Rkb2N1bWVudC5jcmVhdGVFbGVtZW50KFxcInNjcmlwdFxcIik7YVxcdTAwM2RxKGEudXJsKTtpZihhIGluc3RhbmNlb2YgcClhXFx1MDAzZGEuZztlbHNlIHRocm93IEVycm9yKFxcIlxcIik7Yi5zcmNcXHUwMDNkYTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGIpfSwhMCk7fSkuY2FsbCh0aGlzKTtcXG4iXScpKTsKaWYoIWEpcmV0dXJuIG51bGw7YT1fLnBpKF8uWmkoYSw2LHZvaWQgMCxVbSkpO3ZhciBiO2E9PT1udWxsfHxhPT09dm9pZCAwP2I9bnVsbDpiPV8uUWEoYSk7cmV0dXJuIGJ9LFdtPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2E9Xy5DKGEpO2Zvcih2YXIgYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpYz1jLnZhbHVlLGJbYy5sYW5ndWFnZV09Yy5uYW1lO3JldHVybiBifSxYbT1mdW5jdGlvbigpe30sWW09ZnVuY3Rpb24oYSxiKXtfLmhiLmNhbGwodGhpcyk7dGhpcy5sPW5ldyBfLkhiKHRoaXMpO3RoaXMuUWIoYXx8bnVsbCk7YiYmKHRoaXMuVWI9Yil9LGJuPWZ1bmN0aW9uKGEpe18uaGIuY2FsbCh0aGlzKTt0aGlzLmc9YTt0aGlzLmg9Xy54KHRoaXMuZywiZm9jdXMiLHRoaXMsITApO3RoaXMuaj1fLngodGhpcy5nLCJibHVyIix0aGlzLCEwKX0sY249ZnVuY3Rpb24oKXt9LGRuPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmVsZW1lbnQ9YTt0aGlzLmo9Yjt0aGlzLmw9Y30sZW49ZnVuY3Rpb24oYSwKYil7dGhpcy5nPWEgaW5zdGFuY2VvZiB6bD9hOm5ldyB6bChhLGIpfSxmbj1mdW5jdGlvbihhLGIpe3RoaXMubz1ifHx2b2lkIDA7WW0uY2FsbCh0aGlzLGEpfSxPPWZ1bmN0aW9uKGEsYixjKXt0aGlzLkc9Y3x8KGE/Xy5sYihnbihhKSk6Xy5sYigpKTtmbi5jYWxsKHRoaXMsdGhpcy5HLlMoIkRJViIse3N0eWxlOiJwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5Om5vbmU7In0pKTt0aGlzLnJhPW5ldyB6bCgxLDEpO3RoaXMuQT1uZXcgU2V0O3RoaXMuQz1udWxsO2EmJnRoaXMuYXR0YWNoKGEpO2IhPW51bGwmJnRoaXMuS2EoYil9LGhuPWZ1bmN0aW9uKGEpe2E9YS5jbGFzc05hbWU7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyImJmEubWF0Y2goL1xTKy9nKXx8W119LGtuPWZ1bmN0aW9uKGEsYil7dmFyIGM9aG4oYSksZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksZT1jLmxlbmd0aCtkLmxlbmd0aDtqbihjLGQpO2EuY2xhc3NOYW1lPWMuam9pbigiICIpOwpyZXR1cm4gYy5sZW5ndGg9PWV9LG1uPWZ1bmN0aW9uKGEsYil7dmFyIGM9aG4oYSksZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksZT1sbihjLGQpO2EuY2xhc3NOYW1lPWUuam9pbigiICIpO3JldHVybiBlLmxlbmd0aD09Yy5sZW5ndGgtZC5sZW5ndGh9LGpuPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspXy50YShhLGJbY10pfHxhLnB1c2goYltjXSl9LGxuPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiFfLnRhKGIsYyl9KX0sbm49ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy50YShobihhKSxiKX0sb249ZnVuY3Rpb24oYSxiLGMpe2M/a24oYSxiKTptbihhLGIpfSx0bj1mdW5jdGlvbihhKXtyZXR1cm4gcG4obmV3IHFuLHNtKGEsMSxfLmFqKCkpLm1hcChmdW5jdGlvbihiLGMpe3ZhciBkPW5ldyBybjtiPXNuKGQsMSxiKTtpZihzbShhLDIsXy5haigpKS5sZW5ndGg+Yyl7ZD1zbShhLDIsCjMsITApO2lmKHR5cGVvZiBjIT09Im51bWJlciJ8fGM8MHx8Yz49ZC5sZW5ndGgpdGhyb3cgRXJyb3IoKTtzbihiLDMsZFtjXSl9cmV0dXJuIGJ9KSl9LHVuPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBybjtiPXNuKGIsMSxhWzBdKTthLmxlbmd0aD09PTMmJnNuKGIsMyxhWzJdKTtyZXR1cm4gYn0sdm49ZnVuY3Rpb24oYSl7cmV0dXJuIF8uY2ooYSxybiwxKS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIF8uTihiLDMpP1tfLk4oYiwxKSwyMDAsXy5OKGIsMyldOltfLk4oYiwxKSwyMDBdfSl9LHduPWZ1bmN0aW9uKCl7fSx4bj1mdW5jdGlvbihhKXtfLmhiLmNhbGwodGhpcyk7dGhpcy5oPWF8fF8ubGIoKTt0aGlzLmxhPW51bGw7dGhpcy5qYj0hMTt0aGlzLkM9bnVsbDt0aGlzLk89dm9pZCAwO3RoaXMuUj10aGlzLkY9dGhpcy5LPW51bGw7dGhpcy53YT0hMX0seW49ZnVuY3Rpb24oYSl7dmFyIGI9Xy5sYigpLGM9Yi5nLGQ9Yi5jcmVhdGVFbGVtZW50KCJTVFlMRSIpLGU9Xy5PYSgic3R5bGUiLApjKTtlJiZkLnNldEF0dHJpYnV0ZSgibm9uY2UiLGUpO2QudHlwZT0idGV4dC9jc3MiO2I9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiSEVBRCIpWzBdO2Quc3R5bGVTaGVldD9kLnN0eWxlU2hlZXQuY3NzVGV4dD1hOmQuYXBwZW5kQ2hpbGQoYy5jcmVhdGVUZXh0Tm9kZShhKSk7Yi5hcHBlbmRDaGlsZChkKTtyZXR1cm4gZH0sQ249ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gT2JqZWN0LnByb3RvdHlwZSl7Xy56Yz1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnIGluIGQpZFtnXSE9PU9iamVjdC5wcm90b3R5cGVbZ10mJmUuY2FsbChmLGRbZ10sZyxkKX07YnJlYWt9dmFyIGI9RGF0ZS5ub3coKSxjPXpuKEFuKTtjJiZ0eXBlb2YgYz09ImZ1bmN0aW9uIiYmKEJuPT0xP2MoKTpmdW5jdGlvbiBlKCl7dmFyIGY9ZG9jdW1lbnQucmVhZHlTdGF0ZTtfLm9jKGYpPT0idW5kZWZpbmVkInx8Zj09ImNvbXBsZXRlInx8Zj09ImludGVyYWN0aXZlInx8RGF0ZS5ub3coKS1iPj0yRTQ/YygpOndpbmRvdy5zZXRUaW1lb3V0KGUsCjUwMCl9KCkpfTtfLm09emwucHJvdG90eXBlO18ubS5lcXVhbHM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiB6bCYmKHRoaXM9PWE/ITA6dGhpcyYmYT90aGlzLng9PWEueCYmdGhpcy55PT1hLnk6ITEpfTtfLm0uY2VpbD1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmNlaWwodGhpcy54KTt0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSk7cmV0dXJuIHRoaXN9O18ubS5mbG9vcj1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PU1hdGguZmxvb3IodGhpcy55KTtyZXR1cm4gdGhpc307Xy5tLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy54PU1hdGgucm91bmQodGhpcy54KTt0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpO3JldHVybiB0aGlzfTsKXy5tLnRyYW5zbGF0ZT1mdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiB6bD8odGhpcy54Kz1hLngsdGhpcy55Kz1hLnkpOih0aGlzLngrPU51bWJlcihhKSx0eXBlb2YgYj09PSJudW1iZXIiJiYodGhpcy55Kz1iKSk7cmV0dXJuIHRoaXN9Owp2YXIgRG49ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyB6bChhLngsYS55KX0sRW49WyJkYXRhOiIsImh0dHA6IiwiaHR0cHM6IiwibWFpbHRvOiIsImZ0cDoiXSxGbj1mdW5jdGlvbihhKXt2YXIgYj0xO2E9YS5zcGxpdCgiOiIpO2Zvcih2YXIgYz1bXTtiPjAmJmEubGVuZ3RoOyljLnB1c2goYS5zaGlmdCgpKSxiLS07YS5sZW5ndGgmJmMucHVzaChhLmpvaW4oIjoiKSk7cmV0dXJuIGN9LEduPWZ1bmN0aW9uKGEsYixjKXtjPWEuZy5nZXQoYyk7cmV0dXJuKGM9PW51bGw/MDpjLmhhcyhiKSk/Yy5nZXQoYik6YS5sLmhhcyhiKT97dWE6MX06KGM9YS5vLmdldChiKSk/YzphLmgmJltdLmNvbmNhdChfLiRiKGEuaCkpLnNvbWUoZnVuY3Rpb24oZCl7cmV0dXJuIGIuaW5kZXhPZihkKT09PTB9KT97dWE6MX06e3VhOjB9fSxIbj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Q2woYik7Yz1jLmNyZWF0ZUVsZW1lbnQoZCk7Yj1iLmF0dHJpYnV0ZXM7Zm9yKHZhciBlPV8uQyhiKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj0KZS5uZXh0KCkpe3ZhciBnPWYudmFsdWU7Zj1nLm5hbWU7Zz1nLnZhbHVlO3ZhciBoPUduKGEuZyxmLGQpLGs7YTp7aWYoaz1oLmNvbmRpdGlvbnMpe2s9Xy5DKGspO2Zvcih2YXIgbD1rLm5leHQoKTshbC5kb25lO2w9ay5uZXh0KCkpe3ZhciBuPV8uQyhsLnZhbHVlKTtsPW4ubmV4dCgpLnZhbHVlO249bi5uZXh0KCkudmFsdWU7dmFyIHE9dm9pZCAwO2lmKChsPShxPWIuZ2V0TmFtZWRJdGVtKGwpKT09bnVsbD92b2lkIDA6cS52YWx1ZSkmJiFuLmhhcyhsKSl7az0hMTticmVhayBhfX19az0hMH1pZihrKXN3aXRjaChoLnVhKXtjYXNlIDE6RWwoYyxmLGcpO2JyZWFrO2Nhc2UgMjp0aHJvdyBFcnJvcigpO2Nhc2UgMzpFbChjLGYsZy50b0xvd2VyQ2FzZSgpKTticmVhaztjYXNlIDQ6RWwoYyxmLGcpO2JyZWFrO2Nhc2UgNTpFbChjLGYsZyk7YnJlYWs7Y2FzZSA2OkVsKGMsZixnKTticmVhaztjYXNlIDc6YTppZihoPXZvaWQgMCxrPWcsXy5DYyl7dHJ5e2g9bmV3IFVSTChrKX1jYXRjaChwKXtoPQoiaHR0cHM6IjticmVhayBhfWg9aC5wcm90b2NvbH1lbHNlIGI6e2g9aztrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTt0cnl7ay5ocmVmPWh9Y2F0Y2gocCl7aD12b2lkIDA7YnJlYWsgYn1oPWsucHJvdG9jb2w7aD1oPT09IjoifHxoPT09IiI/Imh0dHBzOiI6aH1nPWghPT12b2lkIDAmJkVuLmluZGV4T2YoaC50b0xvd2VyQ2FzZSgpKSE9PS0xP2c6ImFib3V0OmludmFsaWQjekNsb3N1cmV6IjtFbChjLGYsZyl9fXJldHVybiBjfSxsbT1mdW5jdGlvbihhLGIpe3ZhciBjPV8ucWQ7YT1CbChhLGIpO2E9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihhLDUsZnVuY3Rpb24oaCl7aWYoaC5ub2RlVHlwZT09PTMpaD0xO2Vsc2UgaWYoRGwoaCkpaWYoaD1DbChoKSxoPT09bnVsbCloPTI7ZWxzZXt2YXIgaz1jLmc7aD1oIT09IkZPUk0iJiYoay5qLmhhcyhoKXx8ay5nLmhhcyhoKSk/MToyfWVsc2UgaD0yO3JldHVybiBofSk7Zm9yKHZhciBkPWEubmV4dE5vZGUoKSxlPWIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLApmPWU7ZCE9PW51bGw7KXt2YXIgZz12b2lkIDA7aWYoZC5ub2RlVHlwZT09PTMpZz1jLmNyZWF0ZVRleHROb2RlKGQuZGF0YSk7ZWxzZSBpZihEbChkKSlnPUhuKGMsZCxiKTtlbHNlIHRocm93IEVycm9yKCJ0Iik7Zi5hcHBlbmRDaGlsZChnKTtpZihkPWEuZmlyc3RDaGlsZCgpKWY9ZztlbHNlIGZvcig7IShkPWEubmV4dFNpYmxpbmcoKSkmJihkPWEucGFyZW50Tm9kZSgpKTspZj1mLnBhcmVudE5vZGV9cmV0dXJuIGV9LEluPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGI9YiYmYiE9IioiP1N0cmluZyhiKS50b1VwcGVyQ2FzZSgpOiIiKT9hLnF1ZXJ5U2VsZWN0b3JBbGwoYik6YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpfSxKbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5zY3JvbGxpbmdFbGVtZW50P2Euc2Nyb2xsaW5nRWxlbWVudDpfLlZjfHxhLmNvbXBhdE1vZGUhPSJDU1MxQ29tcGF0Ij9hLmJvZHl8fGEuZG9jdW1lbnRFbGVtZW50OmEuZG9jdW1lbnRFbGVtZW50fSxLbj1mdW5jdGlvbihhKXt2YXIgYj0KSm4oYSk7YT1hLmRlZmF1bHRWaWV3O3JldHVybiBuZXcgemwoKGE9PW51bGw/dm9pZCAwOmEucGFnZVhPZmZzZXQpfHxiLnNjcm9sbExlZnQsKGE9PW51bGw/dm9pZCAwOmEucGFnZVlPZmZzZXQpfHxiLnNjcm9sbFRvcCl9LExuPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2E9KGEuZyYmKGEuZz9hLmcucmVhZHlTdGF0ZTowKT49Mj9hLmcuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCl8fCIiOiIiKS5zcGxpdCgiXHJcbiIpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKCEvXltcc1x4YTBdKiQvLnRlc3QoYVtjXSkpe3ZhciBkPUZuKGFbY10pLGU9ZFswXTtkPWRbMV07aWYodHlwZW9mIGQ9PT0ic3RyaW5nIil7ZD1kLnRyaW0oKTt2YXIgZj1iW2VdfHxbXTtiW2VdPWY7Zi5wdXNoKGQpfX1yZXR1cm4gQWwoYixmdW5jdGlvbihnKXtyZXR1cm4gZy5qb2luKCIsICIpfSl9LE1uPVs0LDUsNl0sSm09ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU1uO2M9Xy5KaShjKTthOnt2YXIgZT1jO18ucmkoYSk7CnZhciBmPWEuSixnPWZbXy5IXXwwO2lmKGU9PW51bGwpe3ZhciBoPUhsKGYpO2lmKElsKGgsZixnLGQpPT09YiloLnNldChkLDApO2Vsc2UgYnJlYWsgYX1lbHNle2g9SGwoZik7dmFyIGs9SWwoaCxmLGcsZCk7ayE9PWImJihrJiYoZz1fLnRpKGYsZyxrKSksaC5zZXQoZCxiKSl9Xy50aShmLGcsYixlKX1jJiYhXy5XZyhjKSYmXy5zaShhLkopO3JldHVybiBhfSxMbT1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoTG0sXy5KKTtMbS5wcm90b3R5cGUuZ2V0U2Vjb25kcz1mdW5jdGlvbigpe3JldHVybiBfLmhrKHRoaXMsMSl9O0xtLnByb3RvdHlwZS5zZXRTZWNvbmRzPWZ1bmN0aW9uKGEpe3JldHVybiBfLkdpKHRoaXMsMSxhPT1udWxsP2E6Xy5KaihhKSwiMCIpfTt2YXIgTW09ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKE1tLF8uSik7TW0ucHJvdG90eXBlLmdldFNlY29uZHM9ZnVuY3Rpb24oKXtyZXR1cm4gXy5oayh0aGlzLDEpfTsKTW0ucHJvdG90eXBlLnNldFNlY29uZHM9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uR2kodGhpcywxLGE9PW51bGw/YTpfLkpqKGEpLCIwIil9O3ZhciBObj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5LaztyZXR1cm4gXy5payhiLDExLGEpfSx6bT1mdW5jdGlvbigpe3ZhciBhPW5ldyBfLmhsKDE4NzEsIjAiKTthLkE9Imh0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZWFwaXMuY29tL2VsZW1lbnQvbG9nP2Zvcm1hdD1qc29uJmhhc2Zhc3Q9dHJ1ZSI7cmV0dXJuIGF9LHltPWZ1bmN0aW9uKGEpe2EuaD1PbjtyZXR1cm4gYX0sSW09ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKEltLF8uSik7dmFyIFBuPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihQbixfLkopO3ZhciBGbT1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoRm0sXy5KKTt2YXIgUW49ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKFFuLF8uSik7dmFyIFJuPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9OwpfLkIoUm4sXy5KKTt2YXIgU249ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKFNuLF8uSik7dmFyIFRuPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihUbixfLkopOwp2YXIgVW49ZnVuY3Rpb24oYSl7Xy5yaShhKTthPWEuSjt2YXIgYj1hW18uSF18MCxjPV8udWkoYSwxMTIpLGQ9dm9pZCAwPT09Xy5YaCxlPV8uaGgoYyxUbiwhZCxiKTshZHx8ZT8oZT1fLmtoKGUpLGMhPT1lJiYoYj1fLnRpKGEsYiwxMTIsZSksXy5zaShhLGIpKSxhPWUpOmE9dm9pZCAwO3JldHVybiBhfSxWbj1mdW5jdGlvbihhLGIpe2EuVSE9PXZvaWQgMD9hLlUucHVzaChiKTphLmNvbnRlbnQrPWI7cmV0dXJuIGF9LFduPWZ1bmN0aW9uKGEsYil7YS5VIT09dm9pZCAwP2EuVS5wdXNoKGIpOmIgaW5zdGFuY2VvZiBfLnhsP2IuY29udGVudCE9PXZvaWQgMD9hLmNvbnRlbnQrPWIubWEoKTooYS5VPVthLmNvbnRlbnQsYl0sYS5jb250ZW50PXZvaWQgMCk6YS5jb250ZW50Kz1iO3JldHVybiBhfSxYbj1mdW5jdGlvbihhKXt2YXIgYjthPV8uQygoYj1hLlUpIT1udWxsP2I6W10pO2ZvcihiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSlpZihiPWIudmFsdWUsYiBpbnN0YW5jZW9mCl8ueGwmJlhuKGIpKXJldHVybiEwO3JldHVybiExfSxabj1mdW5jdGlvbihhLGIpe2I9WW4oYnx8e30sYS5oP2EuaC5nZXREYXRhKCk6e30pO2EuZyhudWxsLGIuWmIpO3JldHVybiBiLmooKX0sJG49e30sYW89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IHpsKGEueC1iLngsYS55LWIueSl9LGJvPS8mL2csY289LzwvZyxlbz0vPi9nLGZvPS8iL2csZ289LycvZyxobz0vXHgwMC9nLGlvPS9bXHgwMCY8PiInXS8sam89ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXHhhMHxbIFx0XSsvZywiICIpfSxrbz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9bXHNceGEwXSskLywiIil9LGxvPWZ1bmN0aW9uKGEpe2lvLnRlc3QoYSkmJihhLmluZGV4T2YoIiYiKSE9LTEmJihhPWEucmVwbGFjZShibywiJmFtcDsiKSksYS5pbmRleE9mKCI8IikhPS0xJiYoYT1hLnJlcGxhY2UoY28sIiZsdDsiKSksYS5pbmRleE9mKCI+IikhPS0xJiYoYT1hLnJlcGxhY2UoZW8sIiZndDsiKSksYS5pbmRleE9mKCciJykhPQotMSYmKGE9YS5yZXBsYWNlKGZvLCImcXVvdDsiKSksYS5pbmRleE9mKCInIikhPS0xJiYoYT1hLnJlcGxhY2UoZ28sIiYjMzk7IikpLGEuaW5kZXhPZigiXHgwMCIpIT0tMSYmKGE9YS5yZXBsYWNlKGhvLCImIzA7IikpKTtyZXR1cm4gYX0sbW89ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvJihbXjtdKyk7L2csZnVuY3Rpb24oYixjKXtzd2l0Y2goYyl7Y2FzZSAiYW1wIjpyZXR1cm4iJiI7Y2FzZSAibHQiOnJldHVybiI8IjtjYXNlICJndCI6cmV0dXJuIj4iO2Nhc2UgInF1b3QiOnJldHVybiciJztkZWZhdWx0OnJldHVybiBjLmNoYXJBdCgwKSE9IiMifHwoYz1OdW1iZXIoIjAiK2Muc2xpY2UoMSkpLGlzTmFOKGMpKT9iOlN0cmluZy5mcm9tQ2hhckNvZGUoYyl9fSl9LG5vPS8mKFteO1xzPCZdKyk7Py9nLG9vPWZ1bmN0aW9uKGEpe3ZhciBiPXsiJmFtcDsiOiImIiwiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZxdW90OyI6JyInfTt2YXIgYz1fLnYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CnJldHVybiBhLnJlcGxhY2Uobm8sZnVuY3Rpb24oZCxlKXt2YXIgZj1iW2RdO2lmKGYpcmV0dXJuIGY7ZS5jaGFyQXQoMCk9PSIjIiYmKGU9TnVtYmVyKCIwIitlLnNsaWNlKDEpKSxpc05hTihlKXx8KGY9U3RyaW5nLmZyb21DaGFyQ29kZShlKSkpO2Z8fChmPV8ubWwoZCsiICIpLGMubm9kZVR5cGU9PT0xJiZNbChjKSxjLmlubmVySFRNTD1fLmtqKGYpLGY9Yy5maXJzdENoaWxkLm5vZGVWYWx1ZS5zbGljZSgwLC0xKSk7cmV0dXJuIGJbZF09Zn0pfSxwbz1mdW5jdGlvbihhKXtyZXR1cm4gYS5pbmRleE9mKCImIikhPS0xPyJkb2N1bWVudCJpbiBfLnY/b28oYSk6bW8oYSk6YX0scm89ZnVuY3Rpb24oYSl7dmFyIGI9cW87cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCI3LjAiKT9iWyI3LjAiXTpiWyI3LjAiXT1hKCI3LjAiKX0scW89e30sc289ZnVuY3Rpb24oKXtyZXR1cm4gcm8oZnVuY3Rpb24oKXtyZXR1cm4gTGwoXy5qZCwiNy4wIik+PTB9KX0sClRsPS9eW2Etel1bYS16XGQtXSokL2ksV2w9IkFQUExFVCBCQVNFIEVNQkVEIElGUkFNRSBMSU5LIE1BVEggTUVUQSBPQkpFQ1QgU0NSSVBUIFNUWUxFIFNWRyBURU1QTEFURSIuc3BsaXQoIiAiKSxYbD0iQVJFQSBCUiBDT0wgQ09NTUFORCBIUiBJTUcgSU5QVVQgS0VZR0VOIFBBUkFNIFNPVVJDRSBUUkFDSyBXQlIiLnNwbGl0KCIgIiksVWw9WyJhY3Rpb24iLCJmb3JtYWN0aW9uIiwiaHJlZiJdLHRvPWZ1bmN0aW9uKCl7dGhpcy5nPW5ldyBNYXB9Owp0by5wcm90b3R5cGUuZm9ybWF0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz1QbCgiX3NhZmV2YWx1ZXNfZm9ybWF0X21hcmtlcl86IikudG9TdHJpbmcoKTthPVBsKGEpLnRvU3RyaW5nKCkucmVwbGFjZShuZXcgUmVnRXhwKCJcXHsiK2MrIltcXHcmIztdK1xcfSIsImciKSxmdW5jdGlvbihkKXt2YXIgZTtpZihlPWIuZy5nZXQoZCkpe2Q9IiI7c3dpdGNoKGUudHlwZSl7Y2FzZSAiaHRtbCI6ZD1lLnhmO2JyZWFrO2Nhc2UgInN0YXJ0VGFnIjpkPSI8IitlLnRhZ05hbWUrZS5hdHRyaWJ1dGVzKyI+IjticmVhaztjYXNlICJlbmRUYWciOmQ9IjwvIitlLnRhZ05hbWUrIj4ifWU9ZH1lbHNlIGU9ZDtyZXR1cm4gZX0pO3JldHVybiBfLm1sKGEpfTt0by5wcm90b3R5cGUudGV4dD1mdW5jdGlvbihhKXtyZXR1cm4gdW8odGhpcyx7dHlwZToiaHRtbCIseGY6UGwoYSkudG9TdHJpbmcoKX0pfTsKdmFyIHVvPWZ1bmN0aW9uKGEsYil7dmFyIGM9Intfc2FmZXZhbHVlc19mb3JtYXRfbWFya2VyXzoiK2EuZy5zaXplKyJfIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSsifSI7YS5nLnNldChQbChjKS50b1N0cmluZygpLGIpO3JldHVybiBjfSxnbj1mdW5jdGlvbihhKXtyZXR1cm4gXy50ZChkb2N1bWVudCxhKX0sdm89ZnVuY3Rpb24oYSl7dmFyIGI9YXx8ZG9jdW1lbnQ7Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lP2E9Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJWSXBnSmQteUFXTkViLW5WTWZjZC1mbWNtUyIpWzBdOihiPWRvY3VtZW50LGE9KGF8fGIpLnF1ZXJ5U2VsZWN0b3IoIi5WSXBnSmQteUFXTkViLW5WTWZjZC1mbWNtUyIpKTtyZXR1cm4gYXx8bnVsbH0sd289ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLnlkKGRvY3VtZW50LGFyZ3VtZW50cyl9LHhvPWZ1bmN0aW9uKGEsYil7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsCmIubmV4dFNpYmxpbmcpfSx5bz1mdW5jdGlvbihhKXtyZXR1cm4gXy55YShhKSYmYS5ub2RlVHlwZT09MX0sem89ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnR9LEFvPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYS5jb250ZW50V2luZG93fHwoYS5jb250ZW50RG9jdW1lbnQ/Xy5tYihhLmNvbnRlbnREb2N1bWVudCk6bnVsbCl9Y2F0Y2goYil7fXJldHVybiBudWxsfSxCbz17U0NSSVBUOjEsU1RZTEU6MSxIRUFEOjEsSUZSQU1FOjEsT0JKRUNUOjF9LENvPXtJTUc6IiAiLEJSOiJcbiJ9LERvPWZ1bmN0aW9uKGEsYixjKXtpZighKGEubm9kZU5hbWUgaW4gQm8pKWlmKGEubm9kZVR5cGU9PTMpYz9iLnB1c2goU3RyaW5nKGEubm9kZVZhbHVlKS5yZXBsYWNlKC8oXHJcbnxccnxcbikvZywiIikpOmIucHVzaChhLm5vZGVWYWx1ZSk7ZWxzZSBpZihhLm5vZGVOYW1lIGluIENvKWIucHVzaChDb1thLm5vZGVOYW1lXSk7ZWxzZSBmb3IoYT0KYS5maXJzdENoaWxkO2E7KURvKGEsYixjKSxhPWEubmV4dFNpYmxpbmd9LEVvPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO0RvKGEsYiwhMCk7YT1iLmpvaW4oIiIpO2E9YS5yZXBsYWNlKC8gXHhBRCAvZywiICIpLnJlcGxhY2UoL1x4QUQvZywiIik7YT1hLnJlcGxhY2UoL1x1MjAwQi9nLCIiKTthPWEucmVwbGFjZSgvICsvZywiICIpO2EhPSIgIiYmKGE9YS5yZXBsYWNlKC9eXHMqLywiIikpO3JldHVybiBhfSxGbz1mdW5jdGlvbihhLGIsYyl7dGhpcy5wcm9taXNlPWE7dGhpcy5yZXNvbHZlPWI7dGhpcy5yZWplY3Q9Y30sR289ZnVuY3Rpb24oKXt2YXIgYSxiLGM9bmV3IF8ub2UoZnVuY3Rpb24oZCxlKXthPWQ7Yj1lfSk7cmV0dXJuIG5ldyBGbyhjLGEsYil9LEhvPWZ1bmN0aW9uKGEpe2lmKGEuaWImJnR5cGVvZiBhLmliPT0iZnVuY3Rpb24iKXJldHVybiBhLmliKCk7aWYodHlwZW9mIE1hcCE9PSJ1bmRlZmluZWQiJiZhIGluc3RhbmNlb2YgTWFwfHx0eXBlb2YgU2V0IT09InVuZGVmaW5lZCImJgphIGluc3RhbmNlb2YgU2V0KXJldHVybiBBcnJheS5mcm9tKGEudmFsdWVzKCkpO2lmKHR5cGVvZiBhPT09InN0cmluZyIpcmV0dXJuIGEuc3BsaXQoIiIpO2lmKF8ucWEoYSkpe2Zvcih2YXIgYj1bXSxjPWEubGVuZ3RoLGQ9MDtkPGM7ZCsrKWIucHVzaChhW2RdKTtyZXR1cm4gYn1iPVtdO2M9MDtmb3IoZCBpbiBhKWJbYysrXT1hW2RdO3JldHVybiBifSxJbz1mdW5jdGlvbihhKXtpZihhLk9jJiZ0eXBlb2YgYS5PYz09ImZ1bmN0aW9uIilyZXR1cm4gYS5PYygpO2lmKCFhLmlifHx0eXBlb2YgYS5pYiE9ImZ1bmN0aW9uIil7aWYodHlwZW9mIE1hcCE9PSJ1bmRlZmluZWQiJiZhIGluc3RhbmNlb2YgTWFwKXJldHVybiBBcnJheS5mcm9tKGEua2V5cygpKTtpZighKHR5cGVvZiBTZXQhPT0idW5kZWZpbmVkIiYmYSBpbnN0YW5jZW9mIFNldCkpe2lmKF8ucWEoYSl8fHR5cGVvZiBhPT09InN0cmluZyIpe3ZhciBiPVtdO2E9YS5sZW5ndGg7Zm9yKHZhciBjPTA7YzxhO2MrKyliLnB1c2goYyk7CnJldHVybiBifWI9W107Yz0wO2Zvcih2YXIgZCBpbiBhKWJbYysrXT1kO3JldHVybiBifX19LEpvPWZ1bmN0aW9uKGEsYixjKXtpZihhLmZvckVhY2gmJnR5cGVvZiBhLmZvckVhY2g9PSJmdW5jdGlvbiIpYS5mb3JFYWNoKGIsYyk7ZWxzZSBpZihfLnFhKGEpfHx0eXBlb2YgYT09PSJzdHJpbmciKUFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSxiLGMpO2Vsc2UgZm9yKHZhciBkPUlvKGEpLGU9SG8oYSksZj1lLmxlbmd0aCxnPTA7ZzxmO2crKyliLmNhbGwoYyxlW2ddLGQmJmRbZ10sYSl9LGdtPWZ1bmN0aW9uKGEsYil7dGhpcy5oPXRoaXMuZz1udWxsO3RoaXMuaj1hfHxudWxsO3RoaXMubD0hIWJ9LEtvPWZ1bmN0aW9uKGEpe2EuZ3x8KGEuZz1uZXcgTWFwLGEuaD0wLGEuaiYmXy5FYihhLmosZnVuY3Rpb24oYixjKXthLmFkZChfLkRiKGIpLGMpfSkpfTsKZ20ucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIpe0tvKHRoaXMpO3RoaXMuaj1udWxsO2E9TG8odGhpcyxhKTt2YXIgYz10aGlzLmcuZ2V0KGEpO2N8fHRoaXMuZy5zZXQoYSxjPVtdKTtjLnB1c2goYik7dGhpcy5oKz0xO3JldHVybiB0aGlzfTtnbS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGEpe0tvKHRoaXMpO2E9TG8odGhpcyxhKTtyZXR1cm4gdGhpcy5nLmhhcyhhKT8odGhpcy5qPW51bGwsdGhpcy5oLT10aGlzLmcuZ2V0KGEpLmxlbmd0aCx0aGlzLmcuZGVsZXRlKGEpKTohMX07Z20ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5nPXRoaXMuaj1udWxsO3RoaXMuaD0wfTt2YXIgTW89ZnVuY3Rpb24oYSxiKXtLbyhhKTtiPUxvKGEsYik7cmV0dXJuIGEuZy5oYXMoYil9O18ubT1nbS5wcm90b3R5cGU7Cl8ubS5mb3JFYWNoPWZ1bmN0aW9uKGEsYil7S28odGhpcyk7dGhpcy5nLmZvckVhY2goZnVuY3Rpb24oYyxkKXtjLmZvckVhY2goZnVuY3Rpb24oZSl7YS5jYWxsKGIsZSxkLHRoaXMpfSx0aGlzKX0sdGhpcyl9O18ubS5PYz1mdW5jdGlvbigpe0tvKHRoaXMpO2Zvcih2YXIgYT1BcnJheS5mcm9tKHRoaXMuZy52YWx1ZXMoKSksYj1BcnJheS5mcm9tKHRoaXMuZy5rZXlzKCkpLGM9W10sZD0wO2Q8Yi5sZW5ndGg7ZCsrKWZvcih2YXIgZT1hW2RdLGY9MDtmPGUubGVuZ3RoO2YrKyljLnB1c2goYltkXSk7cmV0dXJuIGN9O18ubS5pYj1mdW5jdGlvbihhKXtLbyh0aGlzKTt2YXIgYj1bXTtpZih0eXBlb2YgYT09PSJzdHJpbmciKU1vKHRoaXMsYSkmJihiPWIuY29uY2F0KHRoaXMuZy5nZXQoTG8odGhpcyxhKSkpKTtlbHNle2E9QXJyYXkuZnJvbSh0aGlzLmcudmFsdWVzKCkpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWI9Yi5jb25jYXQoYVtjXSl9cmV0dXJuIGJ9OwpfLm0uc2V0PWZ1bmN0aW9uKGEsYil7S28odGhpcyk7dGhpcy5qPW51bGw7YT1Mbyh0aGlzLGEpO01vKHRoaXMsYSkmJih0aGlzLmgtPXRoaXMuZy5nZXQoYSkubGVuZ3RoKTt0aGlzLmcuc2V0KGEsW2JdKTt0aGlzLmgrPTE7cmV0dXJuIHRoaXN9O18ubS5nZXQ9ZnVuY3Rpb24oYSxiKXtpZighYSlyZXR1cm4gYjthPXRoaXMuaWIoYSk7cmV0dXJuIGEubGVuZ3RoPjA/U3RyaW5nKGFbMF0pOmJ9O3ZhciBObz1mdW5jdGlvbihhLGIsYyl7YS5yZW1vdmUoYik7Yy5sZW5ndGg+MCYmKGEuaj1udWxsLGEuZy5zZXQoTG8oYSxiKSxfLndhKGMpKSxhLmgrPWMubGVuZ3RoKX07CmdtLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2lmKHRoaXMuailyZXR1cm4gdGhpcy5qO2lmKCF0aGlzLmcpcmV0dXJuIiI7Zm9yKHZhciBhPVtdLGI9QXJyYXkuZnJvbSh0aGlzLmcua2V5cygpKSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY10sZT1fLkdiKGQpO2Q9dGhpcy5pYihkKTtmb3IodmFyIGY9MDtmPGQubGVuZ3RoO2YrKyl7dmFyIGc9ZTtkW2ZdIT09IiImJihnKz0iPSIrXy5HYihkW2ZdKSk7YS5wdXNoKGcpfX1yZXR1cm4gdGhpcy5qPWEuam9pbigiJiIpfTsKdmFyIGVtPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBnbTtiLmo9YS5qO2EuZyYmKGIuZz1uZXcgTWFwKGEuZyksYi5oPWEuaCk7cmV0dXJuIGJ9LExvPWZ1bmN0aW9uKGEsYil7Yj1TdHJpbmcoYik7YS5sJiYoYj1iLnRvTG93ZXJDYXNlKCkpO3JldHVybiBifSxPbz1mdW5jdGlvbihhLGIpe2ImJiFhLmwmJihLbyhhKSxhLmo9bnVsbCxhLmcuZm9yRWFjaChmdW5jdGlvbihjLGQpe3ZhciBlPWQudG9Mb3dlckNhc2UoKTtkIT1lJiYodGhpcy5yZW1vdmUoZCksTm8odGhpcyxlLGMpKX0sYSkpO2EubD1ifTtnbS5wcm90b3R5cGUuZXh0ZW5kPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspSm8oYXJndW1lbnRzW2JdLGZ1bmN0aW9uKGMsZCl7dGhpcy5hZGQoZCxjKX0sdGhpcyl9Owp2YXIgUG89L1sjXC9cP0BdL2csUW89L1sjXD9dL2csUm89L1sjXD86XS9nLFNvPS8jL2csZm09ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT9iP2RlY29kZVVSSShhLnJlcGxhY2UoLyUyNS9nLCIlMjUyNSIpKTpkZWNvZGVVUklDb21wb25lbnQoYSk6IiJ9LFRvPS9bI1w/QF0vZyxVbz1mdW5jdGlvbihhKXthPWEuY2hhckNvZGVBdCgwKTtyZXR1cm4iJSIrKGE+PjQmMTUpLnRvU3RyaW5nKDE2KSsoYSYxNSkudG9TdHJpbmcoMTYpfSxWbz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyI/KGE9ZW5jb2RlVVJJKGEpLnJlcGxhY2UoYixVbyksYyYmKGE9YS5yZXBsYWNlKC8lMjUoWzAtOWEtZkEtRl17Mn0pL2csIiUkMSIpKSxhKTpudWxsfTsKWmwucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGE9W10sYj10aGlzLmw7YiYmYS5wdXNoKFZvKGIsUG8sITApLCI6Iik7dmFyIGM9dGhpcy5oO2lmKGN8fGI9PSJmaWxlIilhLnB1c2goIi8vIiksKGI9dGhpcy5CKSYmYS5wdXNoKFZvKGIsUG8sITApLCJAIiksYS5wdXNoKF8uR2IoYykucmVwbGFjZSgvJTI1KFswLTlhLWZBLUZdezJ9KS9nLCIlJDEiKSksYz10aGlzLkMsYyE9bnVsbCYmYS5wdXNoKCI6IixTdHJpbmcoYykpO2lmKGM9dGhpcy5qKXRoaXMuaCYmYy5jaGFyQXQoMCkhPSIvIiYmYS5wdXNoKCIvIiksYS5wdXNoKFZvKGMsYy5jaGFyQXQoMCk9PSIvIj9RbzpSbywhMCkpOyhjPXRoaXMuZy50b1N0cmluZygpKSYmYS5wdXNoKCI/IixjKTsoYz10aGlzLkEpJiZhLnB1c2goIiMiLFZvKGMsU28pKTtyZXR1cm4gYS5qb2luKCIiKX07ClpsLnByb3RvdHlwZS5yZXNvbHZlPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBabCh0aGlzKSxjPSEhYS5sO2M/JGwoYixhLmwpOmM9ISFhLkI7Yz9iLkI9YS5COmM9ISFhLmg7Yz9hbShiLGEuaCk6Yz1hLkMhPW51bGw7dmFyIGQ9YS5qO2lmKGMpYm0oYixhLkMpO2Vsc2UgaWYoYz0hIWEuail7aWYoZC5jaGFyQXQoMCkhPSIvIilpZih0aGlzLmgmJiF0aGlzLmopZD0iLyIrZDtlbHNle3ZhciBlPWIuai5sYXN0SW5kZXhPZigiLyIpO2UhPS0xJiYoZD1iLmouc2xpY2UoMCxlKzEpK2QpfWU9ZDtpZihlPT0iLi4ifHxlPT0iLiIpZD0iIjtlbHNlIGlmKGUuaW5kZXhPZigiLi8iKSE9LTF8fGUuaW5kZXhPZigiLy4iKSE9LTEpe2Q9ZS5sYXN0SW5kZXhPZigiLyIsMCk9PTA7ZT1lLnNwbGl0KCIvIik7Zm9yKHZhciBmPVtdLGc9MDtnPGUubGVuZ3RoOyl7dmFyIGg9ZVtnKytdO2g9PSIuIj9kJiZnPT1lLmxlbmd0aCYmZi5wdXNoKCIiKTpoPT0iLi4iPygoZi5sZW5ndGg+MXx8Zi5sZW5ndGg9PQoxJiZmWzBdIT0iIikmJmYucG9wKCksZCYmZz09ZS5sZW5ndGgmJmYucHVzaCgiIikpOihmLnB1c2goaCksZD0hMCl9ZD1mLmpvaW4oIi8iKX1lbHNlIGQ9ZX1jP2NtKGIsZCk6Yz1hLmcudG9TdHJpbmcoKSE9PSIiO2M/ZG0oYixlbShhLmcpKTpjPSEhYS5BO2MmJihiLkE9YS5BKTtyZXR1cm4gYn07CnZhciAkbD1mdW5jdGlvbihhLGIsYyl7YS5sPWM/Zm0oYiwhMCk6YjthLmwmJihhLmw9YS5sLnJlcGxhY2UoLzokLywiIikpO3JldHVybiBhfSxhbT1mdW5jdGlvbihhLGIsYyl7YS5oPWM/Zm0oYiwhMCk6YjtyZXR1cm4gYX0sYm09ZnVuY3Rpb24oYSxiKXtpZihiKXtiPU51bWJlcihiKTtpZihpc05hTihiKXx8YjwwKXRocm93IEVycm9yKCJIYCIrYik7YS5DPWJ9ZWxzZSBhLkM9bnVsbH0sY209ZnVuY3Rpb24oYSxiLGMpe2Euaj1jP2ZtKGIsITApOmI7cmV0dXJuIGF9LGRtPWZ1bmN0aW9uKGEsYixjKXtiIGluc3RhbmNlb2YgZ20/KGEuZz1iLE9vKGEuZyxhLm8pKTooY3x8KGI9Vm8oYixUbykpLGEuZz1uZXcgZ20oYixhLm8pKX0sV289ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBabD9uZXcgWmwoYSk6bmV3IFpsKGEpfSxYbz1mdW5jdGlvbihhKXt2YXIgYj1JbyhhKTtpZih0eXBlb2YgYj09InVuZGVmaW5lZCIpdGhyb3cgRXJyb3IoIkoiKTt2YXIgYz1uZXcgZ20obnVsbCk7CmE9SG8oYSk7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF0sZj1hW2RdO0FycmF5LmlzQXJyYXkoZik/Tm8oYyxlLGYpOmMuYWRkKGUsZil9cmV0dXJuIGN9LFlvPXt9LFpvPXt9LCRvPXt9LGFwPXt9LGptPXt9LHFtPXt9LHBtLFVtPXt9LGJwPWZ1bmN0aW9uKGEsYixjKXthPWEuSjtyZXR1cm4gXy5IaShhLGFbXy5IXXwwLGIsYyl8fGJbXy5maF18fChiW18uZmhdPV8uZ2goYikpfSxzbj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uR2koYSxiLF8uTGooYyksIiIpfTtfLm09dm0ucHJvdG90eXBlO18ubS5jb250YWlucz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcyYmYT9hIGluc3RhbmNlb2Ygdm0/YS5sZWZ0Pj10aGlzLmxlZnQmJmEucmlnaHQ8PXRoaXMucmlnaHQmJmEudG9wPj10aGlzLnRvcCYmYS5ib3R0b208PXRoaXMuYm90dG9tOmEueD49dGhpcy5sZWZ0JiZhLng8PXRoaXMucmlnaHQmJmEueT49dGhpcy50b3AmJmEueTw9dGhpcy5ib3R0b206ITF9OwpfLm0uY2VpbD1mdW5jdGlvbigpe3RoaXMudG9wPU1hdGguY2VpbCh0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLmNlaWwodGhpcy5yaWdodCk7dGhpcy5ib3R0b209TWF0aC5jZWlsKHRoaXMuYm90dG9tKTt0aGlzLmxlZnQ9TWF0aC5jZWlsKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9O18ubS5mbG9vcj1mdW5jdGlvbigpe3RoaXMudG9wPU1hdGguZmxvb3IodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5mbG9vcih0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLmZsb29yKHRoaXMuYm90dG9tKTt0aGlzLmxlZnQ9TWF0aC5mbG9vcih0aGlzLmxlZnQpO3JldHVybiB0aGlzfTtfLm0ucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLnJvdW5kKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGgucm91bmQodGhpcy5yaWdodCk7dGhpcy5ib3R0b209TWF0aC5yb3VuZCh0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGgucm91bmQodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307Cl8ubS50cmFuc2xhdGU9ZnVuY3Rpb24oYSxiKXthIGluc3RhbmNlb2Ygemw/KHRoaXMubGVmdCs9YS54LHRoaXMucmlnaHQrPWEueCx0aGlzLnRvcCs9YS55LHRoaXMuYm90dG9tKz1hLnkpOih0aGlzLmxlZnQrPWEsdGhpcy5yaWdodCs9YSx0eXBlb2YgYj09PSJudW1iZXIiJiYodGhpcy50b3ArPWIsdGhpcy5ib3R0b20rPWIpKTtyZXR1cm4gdGhpc307Xy5tPXdtLnByb3RvdHlwZTtfLm0uY29udGFpbnM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiB6bD9hLng+PXRoaXMubGVmdCYmYS54PD10aGlzLmxlZnQrdGhpcy53aWR0aCYmYS55Pj10aGlzLnRvcCYmYS55PD10aGlzLnRvcCt0aGlzLmhlaWdodDp0aGlzLmxlZnQ8PWEubGVmdCYmdGhpcy5sZWZ0K3RoaXMud2lkdGg+PWEubGVmdCthLndpZHRoJiZ0aGlzLnRvcDw9YS50b3AmJnRoaXMudG9wK3RoaXMuaGVpZ2h0Pj1hLnRvcCthLmhlaWdodH07Cl8ubS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGguY2VpbCh0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLmNlaWwodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5jZWlsKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Xy5tLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGguZmxvb3IodGhpcy5sZWZ0KTt0aGlzLnRvcD1NYXRoLmZsb29yKHRoaXMudG9wKTt0aGlzLndpZHRoPU1hdGguZmxvb3IodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5mbG9vcih0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O18ubS5yb3VuZD1mdW5jdGlvbigpe3RoaXMubGVmdD1NYXRoLnJvdW5kKHRoaXMubGVmdCk7dGhpcy50b3A9TWF0aC5yb3VuZCh0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLnJvdW5kKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGgucm91bmQodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTsKXy5tLnRyYW5zbGF0ZT1mdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiB6bD8odGhpcy5sZWZ0Kz1hLngsdGhpcy50b3ArPWEueSk6KHRoaXMubGVmdCs9YSx0eXBlb2YgYj09PSJudW1iZXIiJiYodGhpcy50b3ArPWIpKTtyZXR1cm4gdGhpc307CnZhciBjcD1mdW5jdGlvbihhLGIpe2E6e3ZhciBjPV8uc2QoYSk7aWYoYy5kZWZhdWx0VmlldyYmYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoYz1jLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKSkpe2M9Y1tiXXx8Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHwiIjticmVhayBhfWM9IiJ9cmV0dXJuIGN8fChhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZVtiXTpudWxsKXx8YS5zdHlsZSYmYS5zdHlsZVtiXX0sZHA9ZnVuY3Rpb24oYSl7dHlwZW9mIGE9PSJudW1iZXIiJiYoYSs9InB4Iik7cmV0dXJuIGF9LGVwPWZ1bmN0aW9uKGEsYil7aWYoYiBpbnN0YW5jZW9mIHpsKXt2YXIgYz1iLng7Yj1iLnl9ZWxzZSBjPWIsYj12b2lkIDA7YS5zdHlsZS5sZWZ0PWRwKGMpO2Euc3R5bGUudG9wPWRwKGIpfSxmcD1mdW5jdGlvbihhKXt0cnl7cmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goYil7cmV0dXJue2xlZnQ6MCx0b3A6MCxyaWdodDowLApib3R0b206MH19fSxncD1mdW5jdGlvbihhKXt2YXIgYj1fLnNkKGEpLGM9Y3AoYSwicG9zaXRpb24iKSxkPWM9PSJmaXhlZCJ8fGM9PSJhYnNvbHV0ZSI7Zm9yKGE9YS5wYXJlbnROb2RlO2EmJmEhPWI7YT1hLnBhcmVudE5vZGUpaWYoYS5ub2RlVHlwZT09MTEmJmEuaG9zdCYmKGE9YS5ob3N0KSxjPWNwKGEsInBvc2l0aW9uIiksZD1kJiZjPT0ic3RhdGljIiYmYSE9Yi5kb2N1bWVudEVsZW1lbnQmJmEhPWIuYm9keSwhZCYmKGEuc2Nyb2xsV2lkdGg+YS5jbGllbnRXaWR0aHx8YS5zY3JvbGxIZWlnaHQ+YS5jbGllbnRIZWlnaHR8fGM9PSJmaXhlZCJ8fGM9PSJhYnNvbHV0ZSJ8fGM9PSJyZWxhdGl2ZSIpKXJldHVybiBhO3JldHVybiBudWxsfSxocD1mdW5jdGlvbihhKXt2YXIgYj1fLnNkKGEpLGM9bmV3IHpsKDAsMCk7aWYoYT09KGI/Xy5zZChiKTpkb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50KXJldHVybiBjO2E9ZnAoYSk7Yj1fLmxiKGIpO2I9S24oYi5nKTtjLng9YS5sZWZ0K2IueDsKYy55PWEudG9wK2IueTtyZXR1cm4gY30saXA9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPW5ldyB2bSgwLEluZmluaXR5LEluZmluaXR5LDApLGM9Xy5sYihhKSxkPWMuZy5ib2R5LGU9Yy5nLmRvY3VtZW50RWxlbWVudCxmPUpuKGMuZyk7YT1ncChhKTspaWYoKCFfLlZjfHxhLmNsaWVudEhlaWdodCE9MHx8YSE9ZCkmJmEhPWQmJmEhPWUmJmNwKGEsIm92ZXJmbG93IikhPSJ2aXNpYmxlIil7dmFyIGc9aHAoYSksaD1uZXcgemwoYS5jbGllbnRMZWZ0LGEuY2xpZW50VG9wKTtnLngrPWgueDtnLnkrPWgueTtiLnRvcD1NYXRoLm1heChiLnRvcCxnLnkpO2IucmlnaHQ9TWF0aC5taW4oYi5yaWdodCxnLngrYS5jbGllbnRXaWR0aCk7Yi5ib3R0b209TWF0aC5taW4oYi5ib3R0b20sZy55K2EuY2xpZW50SGVpZ2h0KTtiLmxlZnQ9TWF0aC5tYXgoYi5sZWZ0LGcueCl9ZD1mLnNjcm9sbExlZnQ7Zj1mLnNjcm9sbFRvcDtiLmxlZnQ9TWF0aC5tYXgoYi5sZWZ0LGQpO2IudG9wPU1hdGgubWF4KGIudG9wLApmKTtjPV8uaWIoYy5nLmRlZmF1bHRWaWV3fHx3aW5kb3cpO2IucmlnaHQ9TWF0aC5taW4oYi5yaWdodCxkK2Mud2lkdGgpO2IuYm90dG9tPU1hdGgubWluKGIuYm90dG9tLGYrYy5oZWlnaHQpO3JldHVybiBiLnRvcD49MCYmYi5sZWZ0Pj0wJiZiLmJvdHRvbT5iLnRvcCYmYi5yaWdodD5iLmxlZnQ/YjpudWxsfSxqcD1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyB6bCgwLDApLGQ9Xy5tYihfLnNkKGEpKTthOnt0cnl7Xy5RYyhkLnBhcmVudCk7dmFyIGU9ITA7YnJlYWsgYX1jYXRjaChmKXt9ZT0hMX1pZighZSlyZXR1cm4gYztkbyBkPT1iP2U9aHAoYSk6KGU9ZnAoYSksZT1uZXcgemwoZS5sZWZ0LGUudG9wKSksYy54Kz1lLngsYy55Kz1lLnk7d2hpbGUoZCYmZCE9YiYmZCE9ZC5wYXJlbnQmJihhPWQuZnJhbWVFbGVtZW50KSYmKGQ9ZC5wYXJlbnQpKTtyZXR1cm4gY30sbHA9ZnVuY3Rpb24oYSl7dmFyIGI9a3A7aWYoY3AoYSwiZGlzcGxheSIpIT0ibm9uZSIpcmV0dXJuIGIoYSk7dmFyIGM9CmEuc3R5bGUsZD1jLmRpc3BsYXksZT1jLnZpc2liaWxpdHksZj1jLnBvc2l0aW9uO2MudmlzaWJpbGl0eT0iaGlkZGVuIjtjLnBvc2l0aW9uPSJhYnNvbHV0ZSI7Yy5kaXNwbGF5PSJpbmxpbmUiO2E9YihhKTtjLmRpc3BsYXk9ZDtjLnBvc2l0aW9uPWY7Yy52aXNpYmlsaXR5PWU7cmV0dXJuIGF9LGtwPWZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0V2lkdGgsYz1hLm9mZnNldEhlaWdodCxkPV8uVmMmJiFiJiYhYztyZXR1cm4oYj09PXZvaWQgMHx8ZCkmJmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0PyhhPWZwKGEpLG5ldyBfLkNhKGEucmlnaHQtYS5sZWZ0LGEuYm90dG9tLWEudG9wKSk6bmV3IF8uQ2EoYixjKX0sbXA9ZnVuY3Rpb24oYSxiKXthLnN0eWxlLmRpc3BsYXk9Yj8iIjoibm9uZSJ9LG5wPWZ1bmN0aW9uKGEsYil7Yj1fLmxiKGIpO3ZhciBjPUluKGIuZywiSEVBRCIpWzBdO2lmKCFjKXt2YXIgZD1JbihiLmcsIkJPRFkiKVswXTtjPWIuUygiSEVBRCIpO2QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYywKZCl9ZD1iLlMoIlNUWUxFIik7dmFyIGU9Xy5PYSgic3R5bGUiLGRvY3VtZW50KTtlJiZkLnNldEF0dHJpYnV0ZSgibm9uY2UiLGUpO2E9TmwoYSk7Xy52LnRydXN0ZWRUeXBlcz9fLkNkKGQsYSk6ZC5pbm5lckhUTUw9YTtiLmFwcGVuZENoaWxkKGMsZCl9LG9wPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5DYShhLm9mZnNldFdpZHRoLGEub2Zmc2V0SGVpZ2h0KX0scHA9ZnVuY3Rpb24oYSxiLGMpe2E9YS5zdHlsZTtfLlVjP2EuTW96Qm94U2l6aW5nPWM6Xy5WYz9hLldlYmtpdEJveFNpemluZz1jOmEuYm94U2l6aW5nPWM7YS53aWR0aD1NYXRoLm1heChiLndpZHRoLDApKyJweCI7YS5oZWlnaHQ9TWF0aC5tYXgoYi5oZWlnaHQsMCkrInB4In0scXA9ZnVuY3Rpb24oYSxiKXtwcChhLGIsImNvbnRlbnQtYm94Iil9LHJwPWZ1bmN0aW9uKGEpe2lmKGEhPW51bGwpc3dpdGNoKGEuSmQpe2Nhc2UgMTpyZXR1cm4gMTtjYXNlIC0xOnJldHVybi0xO2Nhc2UgMDpyZXR1cm4gMH1yZXR1cm4gbnVsbH0sCnNwPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy54bD9YbihhKT8hMDohIWEubWEoKTphIGluc3RhbmNlb2YgXy56Zj8hIWEubWEoKTohIWF9LHRwPS88L2csdXA9ZnVuY3Rpb24oYSxiKXthPWEucmVwbGFjZSgvPFwvL2csIjxcXC8iKS5yZXBsYWNlKC9cXVxdPi9nLCJdXVxcPiIpO3JldHVybiBiP2EucmVwbGFjZSgvey9nLCIgXFx7IikucmVwbGFjZSgvfS9nLCIgXFx9IikucmVwbGFjZSgvXC9cKi9nLCIvICoiKS5yZXBsYWNlKC9cXCQvLCJcXCAiKTphfSx2cD1mdW5jdGlvbihhKXthPVN0cmluZyhhKTtmb3IodmFyIGI9ZnVuY3Rpb24oZCxlLGYpe2Zvcih2YXIgZz1NYXRoLm1pbihlLmxlbmd0aC1mLGQubGVuZ3RoKSxoPTA7aDxnO2grKyl7dmFyIGs9ZVtmK2hdO2lmKGRbaF0hPT0oIkEiPD1rJiZrPD0iWiI/ay50b0xvd2VyQ2FzZSgpOmspKXJldHVybiExfXJldHVybiEwfSxjPTA7KGM9YS5pbmRleE9mKCI8IixjKSkhPS0xOyl7aWYoYigiXHgzYy9zY3JpcHQiLAphLGMpfHxiKCJceDNjIS0tIixhLGMpKXJldHVybiJ6U295eiI7Yys9MX1yZXR1cm4gYX0sd3A9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYSE9bnVsbCYmYS5aYj09PWJ9LHhwPWZ1bmN0aW9uKGEpe3JldHVybiB3cChhLCRvKT9hLm1hKCk6YSBpbnN0YW5jZW9mIF8uTGE/Xy5OYShhKS50b1N0cmluZygpOiJhYm91dDppbnZhbGlkI3pTb3l6In0senA9ZnVuY3Rpb24oKXt2YXIgYTt3cCgiIixhcCk/YT0iIi5tYSgpOmE9eXAudGVzdCgiIik/IiI6InpTb3l6Ijt3cChhLGFwKSYmKGE9YS5tYSgpKTtyZXR1cm4oYSYmIWEuc3RhcnRzV2l0aCgiICIpPyIgIjoiIikrYX0sQXA9ZnVuY3Rpb24oYSl7cmV0dXJuIHdwKGEsXy5vbCk/dXAoYS5tYSgpLCExKTphPT1udWxsPyIiOmEgaW5zdGFuY2VvZiBfLnBsP3VwKE5sKGEpLCExKTp1cChTdHJpbmcoYSksITApfSxCcD17Ilx4MDAiOiImIzA7IiwiXHQiOiImIzk7IiwiXG4iOiImIzEwOyIsIlx2IjoiJiMxMTsiLCJcZiI6IiYjMTI7IiwiXHIiOiImIzEzOyIsCiIgIjoiJiMzMjsiLCciJzoiJnF1b3Q7IiwiJiI6IiZhbXA7IiwiJyI6IiYjMzk7IiwiLSI6IiYjNDU7IiwiLyI6IiYjNDc7IiwiPCI6IiZsdDsiLCI9IjoiJiM2MTsiLCI+IjoiJmd0OyIsImAiOiImIzk2OyIsIlx1MDA4NSI6IiYjMTMzOyIsIlx1MDBhMCI6IiYjMTYwOyIsIlx1MjAyOCI6IiYjODIzMjsiLCJcdTIwMjkiOiImIzgyMzM7In0sQ3A9ZnVuY3Rpb24oYSl7cmV0dXJuIEJwW2FdfSxEcD17Ilx4MDAiOiJcXHgwMCIsIlxiIjoiXFx4MDgiLCJcdCI6IlxcdCIsIlxuIjoiXFxuIiwiXHYiOiJcXHgwYiIsIlxmIjoiXFxmIiwiXHIiOiJcXHIiLCciJzoiXFx4MjIiLCQ6IlxceDI0IiwiJiI6IlxceDI2IiwiJyI6IlxceDI3IiwiKCI6IlxceDI4IiwiKSI6IlxceDI5IiwiKiI6IlxceDJhIiwiKyI6IlxceDJiIiwiLCI6IlxceDJjIiwiLSI6IlxceDJkIiwiLiI6IlxceDJlIiwiLyI6IlxcLyIsIjoiOiJcXHgzYSIsIjwiOiJcXHgzYyIsIj0iOiJcXHgzZCIsIj4iOiJcXHgzZSIsIj8iOiJcXHgzZiIsCiJbIjoiXFx4NWIiLCJcXCI6IlxcXFwiLCJdIjoiXFx4NWQiLCJeIjoiXFx4NWUiLCJ7IjoiXFx4N2IiLCJ8IjoiXFx4N2MiLCJ9IjoiXFx4N2QiLCJcdTAwODUiOiJcXHg4NSIsIlx1MjAyOCI6IlxcdTIwMjgiLCJcdTIwMjkiOiJcXHUyMDI5In0sRXA9ZnVuY3Rpb24oYSl7cmV0dXJuIERwW2FdfSxGcD17Ilx4MDAiOiJcXDAgIiwiXGIiOiJcXDggIiwiXHQiOiJcXDkgIiwiXG4iOiJcXGEgIiwiXHYiOiJcXGIgIiwiXGYiOiJcXGMgIiwiXHIiOiJcXGQgIiwnIic6IlxcMjIgIiwiJiI6IlxcMjYgIiwiJyI6IlxcMjcgIiwiKCI6IlxcMjggIiwiKSI6IlxcMjkgIiwiKiI6IlxcMmEgIiwiLyI6IlxcMmYgIiwiOiI6IlxcM2EgIiwiOyI6IlxcM2IgIiwiPCI6IlxcM2MgIiwiPSI6IlxcM2QgIiwiPiI6IlxcM2UgIiwiQCI6IlxcNDAgIiwiXFwiOiJcXDVjICIsInsiOiJcXDdiICIsIn0iOiJcXDdkICIsIlx1MDA4NSI6IlxcODUgIiwiXHUwMGEwIjoiXFxhMCAiLCJcdTIwMjgiOiJcXDIwMjggIiwKIlx1MjAyOSI6IlxcMjAyOSAifSxHcD1mdW5jdGlvbihhKXtyZXR1cm4gRnBbYV19LEhwPXsiXHgwMCI6IiUwMCIsIlx1MDAwMSI6IiUwMSIsIlx1MDAwMiI6IiUwMiIsIlx1MDAwMyI6IiUwMyIsIlx1MDAwNCI6IiUwNCIsIlx1MDAwNSI6IiUwNSIsIlx1MDAwNiI6IiUwNiIsIlx1MDAwNyI6IiUwNyIsIlxiIjoiJTA4IiwiXHQiOiIlMDkiLCJcbiI6IiUwQSIsIlx2IjoiJTBCIiwiXGYiOiIlMEMiLCJcciI6IiUwRCIsIlx1MDAwZSI6IiUwRSIsIlx1MDAwZiI6IiUwRiIsIlx1MDAxMCI6IiUxMCIsIlx1MDAxMSI6IiUxMSIsIlx1MDAxMiI6IiUxMiIsIlx1MDAxMyI6IiUxMyIsIlx1MDAxNCI6IiUxNCIsIlx1MDAxNSI6IiUxNSIsIlx1MDAxNiI6IiUxNiIsIlx1MDAxNyI6IiUxNyIsIlx1MDAxOCI6IiUxOCIsIlx1MDAxOSI6IiUxOSIsIlx1MDAxYSI6IiUxQSIsIlx1MDAxYiI6IiUxQiIsIlx1MDAxYyI6IiUxQyIsIlx1MDAxZCI6IiUxRCIsIlx1MDAxZSI6IiUxRSIsIlx1MDAxZiI6IiUxRiIsCiIgIjoiJTIwIiwnIic6IiUyMiIsIiciOiIlMjciLCIoIjoiJTI4IiwiKSI6IiUyOSIsIjwiOiIlM0MiLCI+IjoiJTNFIiwiXFwiOiIlNUMiLCJ7IjoiJTdCIiwifSI6IiU3RCIsIlx1MDA3ZiI6IiU3RiIsIlx1MDA4NSI6IiVDMiU4NSIsIlx1MDBhMCI6IiVDMiVBMCIsIlx1MjAyOCI6IiVFMiU4MCVBOCIsIlx1MjAyOSI6IiVFMiU4MCVBOSIsIlx1ZmYwMSI6IiVFRiVCQyU4MSIsIlx1ZmYwMyI6IiVFRiVCQyU4MyIsIlx1ZmYwNCI6IiVFRiVCQyU4NCIsIlx1ZmYwNiI6IiVFRiVCQyU4NiIsIlx1ZmYwNyI6IiVFRiVCQyU4NyIsIlx1ZmYwOCI6IiVFRiVCQyU4OCIsIlx1ZmYwOSI6IiVFRiVCQyU4OSIsIlx1ZmYwYSI6IiVFRiVCQyU4QSIsIlx1ZmYwYiI6IiVFRiVCQyU4QiIsIlx1ZmYwYyI6IiVFRiVCQyU4QyIsIlx1ZmYwZiI6IiVFRiVCQyU4RiIsIlx1ZmYxYSI6IiVFRiVCQyU5QSIsIlx1ZmYxYiI6IiVFRiVCQyU5QiIsIlx1ZmYxZCI6IiVFRiVCQyU5RCIsIlx1ZmYxZiI6IiVFRiVCQyU5RiIsCiJcdWZmMjAiOiIlRUYlQkMlQTAiLCJcdWZmM2IiOiIlRUYlQkMlQkIiLCJcdWZmM2QiOiIlRUYlQkMlQkQifSxJcD1mdW5jdGlvbihhKXtyZXR1cm4gSHBbYV19LEpwPS9bXHgwMFx4MjJceDI2XHgyN1x4M2NceDNlXS9nLEtwPWZ1bmN0aW9uKGEpe3JldHVybiB3cChhLF8ucWwpP2E6YSBpbnN0YW5jZW9mIF8uRGM/KDAsXy50bCkoXy5raihhKS50b1N0cmluZygpKTooMCxfLnRsKShTdHJpbmcoU3RyaW5nKGEpKS5yZXBsYWNlKEpwLENwKSxycChhKSl9LExwPS9bXHgwMFx4MjJceDI3XHgzY1x4M2VdL2csTXA9ZnVuY3Rpb24oYSl7cmV0dXJuIHhtKFN0cmluZyhhKSxmdW5jdGlvbigpe3JldHVybiIifSkucmVwbGFjZSh0cCwiJmx0OyIpfSxQPWZ1bmN0aW9uKGEpe3dwKGEsXy5xbCk/KGE9TXAoYS5tYSgpKSxhPVN0cmluZyhhKS5yZXBsYWNlKExwLENwKSk6YT1TdHJpbmcoYSkucmVwbGFjZShKcCxDcCk7cmV0dXJuIGF9LE5wPS9bXHgwMFx4MDktXHgwZCBceDIyXHgyNlx4MjdceDJkXC9ceDNjLVx4M2VgXHg4NVx4YTBcdTIwMjhcdTIwMjldL2csCk9wPS9bXHgwMFx4MDktXHgwZCBceDIyXHgyN1x4MmRcL1x4M2MtXHgzZWBceDg1XHhhMFx1MjAyOFx1MjAyOV0vZyxQcD0vW1x4MDBceDA4LVx4MGRceDIyXHgyNlx4MjdcL1x4M2MtXHgzZVx4NWItXHg1ZFx4N2JceDdkXHg4NVx1MjAyOFx1MjAyOV0vZyxRcD1mdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiIgbnVsbCAiO2lmKHdwKGEsWW8pKXJldHVybiBhLm1hKCk7aWYoYSBpbnN0YW5jZW9mIF8uUGEpcmV0dXJuIF8uUmEoYSkudG9TdHJpbmcoKTtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgImJvb2xlYW4iOmNhc2UgIm51bWJlciI6cmV0dXJuIiAiK2ErIiAiO2RlZmF1bHQ6cmV0dXJuIiciK1N0cmluZyhTdHJpbmcoYSkpLnJlcGxhY2UoUHAsRXApKyInIn19LFJwPS9bXHgwMFx4MDgtXHgwZFx4MjJceDI2LVx4MmFcL1x4M2EtXHgzZUBcXFx4N2JceDdkXHg4NVx4YTBcdTIwMjhcdTIwMjldL2csU3A9L1tceDAwLSBceDIyXHgyNy1ceDI5XHgzY1x4M2VcXFx4N2JceDdkXHg3Zlx4ODVceGEwXHUyMDI4XHUyMDI5XHVmZjAxXHVmZjAzXHVmZjA0XHVmZjA2LVx1ZmYwY1x1ZmYwZlx1ZmYxYVx1ZmYxYlx1ZmYxZFx1ZmYxZlx1ZmYyMFx1ZmYzYlx1ZmYzZF0vZywKVHA9L14oPyFqYXZhc2NyaXB0OikoPzpbYS16MC05Ky4tXSs6fFteJjpcLz8jXSooPzpbXC8/I118JCkpL2ksVXA9ZnVuY3Rpb24oYSl7d3AoYSxabyl8fHdwKGEsJG8pP2E9U3RyaW5nKGEpLnJlcGxhY2UoU3AsSXApOmEgaW5zdGFuY2VvZiBfLkxhPyhhPV8uTmEoYSkudG9TdHJpbmcoKSxhPVN0cmluZyhhKS5yZXBsYWNlKFNwLElwKSk6KGE9U3RyaW5nKGEpLGE9VHAudGVzdChhKT9hLnJlcGxhY2UoU3AsSXApOiJhYm91dDppbnZhbGlkI3pTb3l6Iik7cmV0dXJuIGF9LFZwPS9eW14mOlwvPyNdKig/OltcLz8jXXwkKXxeaHR0cHM/OnxeZmlsZXN5c3RlbTpodHRwcz86fF5mdHA6fF5kYXRhOmltYWdlXC9bYS16MC05Ky1dKztiYXNlNjQsW2EtejAtOStcL10rPSokfF5ibG9iOi9pLFdwPWZ1bmN0aW9uKGEpe3dwKGEsWm8pfHx3cChhLCRvKT9hPVN0cmluZyhhKS5yZXBsYWNlKFNwLElwKTphIGluc3RhbmNlb2YgXy5MYT8oYT1fLk5hKGEpLnRvU3RyaW5nKCksYT1TdHJpbmcoYSkucmVwbGFjZShTcCwKSXApKTooYT1TdHJpbmcoYSksYT1WcC50ZXN0KGEpP2EucmVwbGFjZShTcCxJcCk6ImFib3V0OmludmFsaWQjelNveXoiKTtyZXR1cm4gYX0seXA9L14oPyFvbnxzcmN8KD86YWN0aW9ufGFyY2hpdmV8YmFja2dyb3VuZHxjaXRlfGNsYXNzaWR8Y29kZWJhc2V8Y29udGVudHxkYXRhfGRzeW5jfGhyZWZ8aHR0cC1lcXVpdnxsb25nZGVzY3xzdHlsZXx1c2VtYXApXHMqJCkoPzpbYS16MC05XyQ6LV0qKSQvaSxYcD0vXlthLXpBLVowLTkrXC9fLV0rPXswLDJ9JC8sWXA9ZnVuY3Rpb24oYSl7YT1TdHJpbmcoYSk7cmV0dXJuIFhwLnRlc3QoYSk/YToielNveXoifSxacD1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoWnAsXy5KKTt2YXIgQ209ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IFpwO3JldHVybiBHbChiLDMsYSxfLkJqKX07dmFyICRwPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQigkcCxfLkopOyRwLnByb3RvdHlwZS5KYT1mdW5jdGlvbigpe3JldHVybiBfLk4odGhpcywyKX07JHAucHJvdG90eXBlLk5hPWZ1bmN0aW9uKGEpe3JldHVybiBzbih0aGlzLDIsYSl9OyRwLnByb3RvdHlwZS5vYT1mdW5jdGlvbigpe3JldHVybiBfLk4odGhpcywzKX07JHAucHJvdG90eXBlLm5hPWZ1bmN0aW9uKGEpe3JldHVybiBzbih0aGlzLDMsYSl9O3ZhciBhcT1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIoYXEsXy5KKTt2YXIgYnE9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKGJxLF8uSik7dmFyIGNxPV8uTWooYnEpO3ZhciBkcT1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYX19LGVxPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aC0yO2MrPTMpe3ZhciBkPWIuY2hhckF0KGMrMik7ZD1kPj0iYSI/ZC5jaGFyQ29kZUF0KDApLTg3Ok51bWJlcihkKTtkPWIuY2hhckF0KGMrMSk9PSIrIj9hPj4+ZDphPDxkO2E9Yi5jaGFyQXQoYyk9PSIrIj9hK2QmNDI5NDk2NzI5NTphXmR9cmV0dXJuIGF9LGdxPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1mcS5zcGxpdCgiLiIpLGM9TnVtYmVyKGJbMF0pfHwwLGQ9W10sZT0wLGY9MDtmPGEubGVuZ3RoO2YrKyl7dmFyIGc9YS5jaGFyQ29kZUF0KGYpO2c8MTI4P2RbZSsrXT1nOihnPDIwNDg/ZFtlKytdPWc+PjZ8MTkyOigoZyY2NDUxMik9PTU1Mjk2JiZmKzE8YS5sZW5ndGgmJihhLmNoYXJDb2RlQXQoZisxKSY2NDUxMik9PTU2MzIwPyhnPTY1NTM2KygoZyYxMDIzKTw8MTApKyhhLmNoYXJDb2RlQXQoKytmKSYxMDIzKSxkW2UrK109Cmc+PjE4fDI0MCxkW2UrK109Zz4+MTImNjN8MTI4KTpkW2UrK109Zz4+MTJ8MjI0LGRbZSsrXT1nPj42JjYzfDEyOCksZFtlKytdPWcmNjN8MTI4KX1hPWM7Zm9yKGU9MDtlPGQubGVuZ3RoO2UrKylhKz1kW2VdLGE9ZXEoYSwiKy1hXis2Iik7YT1lcShhLCIrLTNeK2IrLWYiKTthXj1OdW1iZXIoYlsxXSl8fDA7YTwwJiYoYT0oYSYyMTQ3NDgzNjQ3KSsyMTQ3NDgzNjQ4KTtiPWElMUU2O3JldHVybiBiLnRvU3RyaW5nKCkrIi4iKyhiXmMpfSxocT1mdW5jdGlvbigpe3ZhciBhPWRxKFN0cmluZy5mcm9tQ2hhckNvZGUoMTE2KSksYj1kcShTdHJpbmcuZnJvbUNoYXJDb2RlKDEwNykpO2E9W2EoKSxhKCldO2FbMV09YigpO3JldHVybiBhLmpvaW4oIiIpfTt2YXIgaXE9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKGlxLF8uSik7dmFyIGpxPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihqcSxfLkopO3ZhciBrcT1fLk1qKGpxKTt2YXIgbHE9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKGxxLF8uSik7dmFyIE9uPSIiLG1xPSJwcm9kIixucT0iIixvcT0iZW4iLEFuPSIiLHBxPW5ldyBqcSxxcT0hMSxycT1uZXcgRGF0ZSxzcT17fSxCbj0wLHRxPSJ0ZSIsZnE9IiIsdXE9IiIsdnE9Imh0dHBzOi8vIix3cT0iIix4cT0iIix5cT0iIix6cT0iIixBcT0iIixCcT0iIixDcT0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9pbWFnZXMvY2xlYXJkb3QuZ2lmIixEcT0iaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL2dvb2dsZWxvZ28vMXgvZ29vZ2xlbG9nb19jb2xvcl82OHgyOGRwLnBuZyIsRXE9Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2ltYWdlcy9icmFuZGluZy9wcm9kdWN0LzF4L3RyYW5zbGF0ZV8yNGRwLnBuZyIsRnE9Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2ltYWdlcy9icmFuZGluZy9nb29nbGVsb2dvLzF4L2dvb2dsZWxvZ29fY29sb3JfNDJ4MTZkcC5wbmciLEdxPSJodHRwczovL3RyYW5zbGF0ZS5nb29nbGUuY29tIixIcT0iIixJcT0iIixKcT0iIixLcT0KZnVuY3Rpb24oKXtIcT0iLy8iK0JxKyIvdHJhbnNsYXRlX3N1Z2dlc3Rpb24/Y2xpZW50PSIrdHE7SXE9Ii8vIit1cSsiL3RyYW5zbGF0ZV92b3Rpbmc/Y2xpZW50PSIrdHE7SnE9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc3VwcG9ydC90cmFuc2xhdGUiKyhvcT09ImVuIj8iIjoiI2dvb2d0cmFucy9lbi8iK29xKX0sTHE9ZnVuY3Rpb24oYSl7T249d2luZG93Lmdvb2dsZSYmd2luZG93Lmdvb2dsZS50cmFuc2xhdGUmJndpbmRvdy5nb29nbGUudHJhbnNsYXRlLnZ8fCIiO21xPWEuX2NlbnZ8fCJwcm9kIjtucT1hLlVnfHwiIjtvcT1hLl9jbHx8ImVuIjtBbj1hLl9jdWM7cHE9YS5fY2VmP2txKGEuX2NlZik6bmV3IGpxO3FxPWEuX2NuYWQ7cnE9YS5fY2VzdHx8bmV3IERhdGU7c3E9YS5fY25hbHx8e307Qm49YS5fY2FtPT0ibGliIj8xOjA7dHE9KGEuX2NhY3x8InRlIikrKEJuPT0xPyJfbGliIjoiIik7ZnE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0KdmFyIGM9U3RyaW5nLmZyb21DaGFyQ29kZSgxMDcpLGQ9YihTdHJpbmcuZnJvbUNoYXJDb2RlKDExNikpO2M9YihjKTtkPVtkKCksZCgpXTtkWzFdPWMoKTtyZXR1cm4gYVsiX2MiK2Quam9pbihjKCkpXXx8IiJ9KCk7dXE9YS5fcGFofHwiIjt2cT1hLl9wYXN8fCJodHRwczovLyI7d3E9YS5fcGJpfHwiIjt4cT1hLl9wY2l8fCIiO3lxPWEuX3BsbGF8fCIiO3pxPWEuX3BsaXx8IiI7QXE9YS5fcHN8fCIiO0JxPWEuX3B1aHx8IiI7Q3E9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vaW1hZ2VzL2NsZWFyZG90LmdpZiI7RHE9Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2ltYWdlcy9icmFuZGluZy9nb29nbGVsb2dvLzF4L2dvb2dsZWxvZ29fY29sb3JfNjh4MjhkcC5wbmciO0VxPSJodHRwczovL3d3dy5nc3RhdGljLmNvbS9pbWFnZXMvYnJhbmRpbmcvcHJvZHVjdC8xeC90cmFuc2xhdGVfMjRkcC5wbmciO0ZxPSJodHRwczovL3d3dy5nc3RhdGljLmNvbS9pbWFnZXMvYnJhbmRpbmcvZ29vZ2xlbG9nby8xeC9nb29nbGVsb2dvX2NvbG9yXzQyeDE2ZHAucG5nIjsKR3E9Imh0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZS5jb20iO0txKCl9O3dpbmRvdy5nb29nbGUmJndpbmRvdy5nb29nbGUudHJhbnNsYXRlJiZ3aW5kb3cuZ29vZ2xlLnRyYW5zbGF0ZS5fY29uc3Q/THEod2luZG93Lmdvb2dsZS50cmFuc2xhdGUuX2NvbnN0KTpMcSh7X2NhYzoiIixfY2FtOiIiLF9jZWY6IiIsX2Nlc3Q6bmV3IERhdGUsX2NlbnY6IiIsVWc6IiIsX2NnYWs6IiIsX2NqbGM6IiIsX2NsOiIiLF9jbGw6IiIsX2N1YzoiIixfY25hZDohMSxfY25hbDp7fSxDazoiIixfcGFoOiIiLF9wYXM6IiIsX3BiaToiIixfcGNpOiIiLF9waGY6IiIsX3BsaToiIixfcGxsYToiIixfcG1pOiIiLF9wczoiIixfcHRhOiIiLF9wdWg6IiJ9KTt2YXIgTXE9ZnVuY3Rpb24oYSxiKXt0aGlzLmc9YTt0aGlzLm89Yn0sQm09ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFR5cGVFcnJvcigicWFgIitiKyJgIithLmcrImAiK2EubysiYCIrdHlwZW9mIGEubyl9O01xLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMubztpZihhPT1udWxsKWE9bnVsbDtlbHNlIGlmKHR5cGVvZiBhIT09InN0cmluZyIpdGhyb3cgQm0odGhpcywic3RyaW5nIik7aWYoYT09PW51bGwpdGhyb3cgRXJyb3IoInBhYCIrdGhpcy5nKTtyZXR1cm4gYX07CnZhciBBbT1mdW5jdGlvbigpe3ZhciBhPWE9PT12b2lkIDA/d2luZG93OmE7YT1hPT09dm9pZCAwP3dpbmRvdzphO2E9YT09PXZvaWQgMD93aW5kb3c6YTthPWEuV0laX2dsb2JhbF9kYXRhO2E9bmV3IE1xKCJ4V3V1R2MiLGEmJiJ4V3V1R2MiaW4gYT9hLnhXdXVHYzpudWxsKTt2YXIgYj1bXSxjPU5xKGEpO3JldHVybiBjPT09bnVsbD9PcShhLGIpOmN9LE5xPWZ1bmN0aW9uKGEpe3ZhciBiPWEubztpZihiPT1udWxsKXJldHVybiBudWxsO0FycmF5LmlzQXJyYXkoYil8fCh0eXBlb2YgYiE9PSJzdHJpbmciP2I9W2JdOihiPWIudHJpbSgpLGI9Yj09IiI/W106Yi5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy50cmltKCl9KSkpO3JldHVybiBPcShhLGIpfSxPcT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZysiWyI7cmV0dXJuIEFycmF5LmZyb20oYixmdW5jdGlvbihkLGUpe3JldHVybiBuZXcgTXEoYytlKyJdIixkKX0pfTsKTXEucHJvdG90eXBlLm9iamVjdD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLm87aWYoYj09bnVsbCl7aWYoYT09PXZvaWQgMCl0aHJvdyBFcnJvcigicGFgIit0aGlzLmcpO3JldHVybiBhfWlmKHR5cGVvZiBiPT09Im9iamVjdCImJmIuY29uc3RydWN0b3I9PT1PYmplY3Qpe2E9e307dmFyIGM9dGhpcy5nKyIuIixkO2ZvcihkIGluIGIpYVtkXT1uZXcgTXEoYytkLGJbZF0pO3JldHVybiBhfXRocm93IEJtKHRoaXMsIm9iamVjdCIpO307dmFyIFBxPWZ1bmN0aW9uKCl7dmFyIGE7dGhpcy5nPWE9YT09PXZvaWQgMD9EbSgpOmF9O1BxLnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24oYSl7Xy5hbCh0aGlzLmcsYSl9O3ZhciBRcT1uZXcgUHE7dmFyIFJxPUVtKCJpbml0aWFsaXplZCIpLFNxPUVtKCJpbml0aWF0ZWQiKSxUcT1FbSgicmVzdG9yZWQiKSxVcT1FbSgicGFnZV9sb2FkX3RvX2luaXRpYWxpemVkIiksVnE9RW0oImluaXRpYWxpemF0aW9uX3RvX3RyYW5zbGF0aW9uX3RyaWdnZXJlZCIpO3ZhciBXcT1mdW5jdGlvbihhKXt2YXIgYj0ieGIiO2lmKGEueGImJmEuaGFzT3duUHJvcGVydHkoYikpcmV0dXJuIGEueGI7Yj1uZXcgYTtyZXR1cm4gYS54Yj1ifTsvKgoKTWF0aC51dWlkLmpzICh2MS40KQpodHRwOi8vd3d3LmJyb29mYS5jb20KbWFpbHRvOnJvYmVydEBicm9vZmEuY29tCkNvcHlyaWdodCAoYykgMjAxMCBSb2JlcnQgS2llZmZlcgpEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlcy4KKi8KdmFyIFhxPSIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIuc3BsaXQoIiIpO2Zvcih2YXIgWXEsWnE9QXJyYXkoMzYpLCRxPTAsYXIsYnI9MDticjwzNjticisrKWJyPT04fHxicj09MTN8fGJyPT0xOHx8YnI9PTIzP1pxW2JyXT0iLSI6YnI9PTE0P1pxW2JyXT0iNCI6KCRxPD0yJiYoJHE9MzM1NTQ0MzIrTWF0aC5yYW5kb20oKSoxNjc3NzIxNnwwKSxhcj0kcSYxNSwkcT4+PTQsWnFbYnJdPVhxW2JyPT0xOT9hciYzfDg6YXJdKTtZcT1acS5qb2luKCIiKTsKdmFyIGNyPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmc9YT1hPT09dm9pZCAwP1lxOmE7dGhpcy5FYj1iPT09dm9pZCAwPyIiOmI7dGhpcy5GYj1jPT09dm9pZCAwPyIiOmN9LGdyPWZ1bmN0aW9uKGEpe3ZhciBiPWRyKGEsNyk7ZXIoYSxiKTtmcihiLDcpfSxocj1mdW5jdGlvbihhLGIpe3ZhciBjPWIubGI9PT12b2lkIDA/MDpiLmxiO3ZhciBkPWIuTWY9PT12b2lkIDA/MDpiLk1mO3ZhciBlPWIuZ2c9PT12b2lkIDA/MDpiLmdnO3ZhciBmPWIuTGY9PT12b2lkIDA/MDpiLkxmO2I9ZHIoYSw4KTtlcihhLGIpO2E9bmV3IFJuO2M9Xy5payhhLDEsYyk7ZD1fLmlrKGMsMyxkKTtlPV8uaWsoZCwyLGUpO2U9Xy5payhlLDQsZik7Zj1VbihiKTtfLkwoZiw2LGUpO01hdGgucmFuZG9tKCk+PS4wMDV8fChiPV8uTGsoTm4oOCksXy5XaihiKSksUXEubG9nKGIpKX0sZHI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgXy5sbDtjPV8uVGooYyw1MCxvcSk7dmFyIGQ9bmV3IFRuO2I9Xy5rayhkLDEsYik7CmI9Xy5UaihiLDIsdHEpO2E9Xy5UaihiLDMsYS5nKTtyZXR1cm4gXy5MKGMsMTEyLGEpfSxmcj1mdW5jdGlvbihhLGIpe2E9Xy5MayhObihiKSxfLldqKGEpKTtRcS5sb2coYSl9LGVyPWZ1bmN0aW9uKGEsYil7Yi5OYShhLkViKTtiLm5hKGEuRmIpfTt2YXIgaXI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXt9LGM9MDtjPGEubGVuZ3RoOysrYyliW2FbY11dPSEwO3JldHVybiBifSxqcj1mdW5jdGlvbihhKXt0aGlzLmg9YT9bYV06W107dGhpcy5nPVswXTt0aGlzLmo9ITF9O2pyLnByb3RvdHlwZS5wYXNzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTtqci5wcm90b3R5cGUucmVnaXN0ZXI9ZnVuY3Rpb24oYSl7aWYodGhpcy5qKXJldHVybiBhfHxmdW5jdGlvbigpe307dGhpcy5nLnB1c2goMCk7dmFyIGI9dGhpcy5nLmxlbmd0aC0xO3JldHVybigwLF8ueSkoZnVuY3Rpb24oKXt0aGlzLmdbYl0rKzthJiZhLmFwcGx5KG51bGwsYXJndW1lbnRzKTtrcih0aGlzKX0sdGhpcyl9Owpqci5wcm90b3R5cGUuZGVsYXk9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaj9hOigwLF8ueSkoZnVuY3Rpb24oKXtpZih0aGlzLmopYS5hcHBseShudWxsLGFyZ3VtZW50cyk7ZWxzZXt2YXIgYj1hcmd1bWVudHM7dGhpcy5oLnB1c2goZnVuY3Rpb24oKXthLmFwcGx5KG51bGwsYil9KX19LHRoaXMpfTtqci5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKCl7dGhpcy5nWzBdPTE7a3IodGhpcyl9Owp2YXIga3I9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmcubGVuZ3RoOysrYilpZihhLmdbYl09PTApcmV0dXJuO2Euaj0hMDtmb3IoYj0wO2I8YS5oLmxlbmd0aDsrK2Ipe3ZhciBjPWEuaFtiXTthLmhbYl09bnVsbDtjLmNhbGwoKX1hLmg9W107YS5nPVtdfSxscj1mdW5jdGlvbihhKXt0aGlzLmo9YTt0aGlzLmg9dGhpcy5nPSExfSxtcj1mdW5jdGlvbihhLGIpe3JldHVybigwLF8ueSkoZnVuY3Rpb24oKXtiJiZiLmFwcGx5KG51bGwsYXJndW1lbnRzKTt0aGlzLmg/dGhpcy5nfHwodGhpcy5qLmNhbGwoKSx0aGlzLmc9ITApOnRoaXMuZz0hMH0sYSl9O2xyLnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLmh8fCh0aGlzLmg9ITAsdGhpcy5nJiZ0aGlzLmouY2FsbCgpKX07dmFyIG5yPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmc9Yjt0aGlzLkI9YTt0aGlzLkE9Y3x8MDt0aGlzLmo9dGhpcy5oPSExfSxvcj1mdW5jdGlvbihhKXthLmh8fGEubygpfTsKbnIucHJvdG90eXBlLm89ZnVuY3Rpb24oKXsodGhpcy5oPSh0aGlzLmo9ISF0aGlzLkIuY2FsbCgpKXx8LS10aGlzLkE8PTApPyh0aGlzLmcuY2FsbChudWxsLHRoaXMuaiksdGhpcy5sPTApOnRoaXMubD13aW5kb3cuc2V0VGltZW91dCgoMCxfLnkpKHRoaXMubyx0aGlzKSwzMCl9O25yLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oKXt0aGlzLmwmJndpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5sKTt0aGlzLmg9ITA7dGhpcy5nLmNhbGwobnVsbCx0aGlzLmopfTsKdmFyIHByPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7YS5kaXNwYXRjaEV2ZW50KGIpfX0scXI9ZnVuY3Rpb24oYSl7YT1fLkFjKGEpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiXyIsIi0iKTtpZihhPT0iemgtY24iKXJldHVybiJ6aC1DTiI7aWYoYT09InpoLXR3IilyZXR1cm4iemgtVFciO3ZhciBiPWEuaW5kZXhPZigiLSIpO2E9Yj49MD9hLnN1YnN0cmluZygwLGIpOmE7cmV0dXJuIGE9PSJ6aCI/InpoLUNOIjphfSxycj1mdW5jdGlvbihhKXt2YXIgYj1bXSxjO2ZvcihjIGluIGEpaWYoYVtjXSE9PU9iamVjdC5wcm90b3R5cGVbY10pe3ZhciBkPV8uR2IoYyk7aWYoXy5vYyhhW2NdKT09ImFycmF5Iilmb3IodmFyIGU9MDtlPGFbY10ubGVuZ3RoOysrZSliLnB1c2goZCsiPSIrXy5HYihhW2NdW2VdKSk7ZWxzZSBiLnB1c2goZCsiPSIrXy5HYihhW2NdKSl9cmV0dXJuIGIuam9pbigiJiIpfSxRbT1mdW5jdGlvbihhLGIpe2I9Ynx8e307Yi5uY2E9YTtiLmNsaWVudD10cTsKT24mJihiLmxvZ2xkPSJ2IitPbik7dmFyIGM9bmV3IEltYWdlO2Muc3JjPSIvLyIrQnErIi9nZW4yMDQ/IitycihiKTtjLm9ubG9hZD1mdW5jdGlvbigpe2Mub25sb2FkPW51bGx9fSx0cj1mdW5jdGlvbihhLGIpe2lmKChfLlNjfHxfLlJjKSYmd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lIT1kb2N1bWVudC5kb21haW4pe3NyPXNyP3NyKzE6MTt2YXIgYz0iZiIrc3IrIl8iK0RhdGUubm93KCkudG9TdHJpbmcoMzYpO3dpbmRvd1tjXT1mdW5jdGlvbigpe3dpbmRvd1tjXT12b2lkIDA7YS5zcmM9IiMiO2ImJndpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YigpfSwwKX07YS5zcmM9ImphdmFzY3JpcHQ6dm9pZChkb2N1bWVudC53cml0ZShcIjxzY3JpcHQ+ZG9jdW1lbnQuZG9tYWluPSciK2RvY3VtZW50LmRvbWFpbisiJztwYXJlbnRbJyIrYysiJ10oKTtceDNjL3NjcmlwdD5cIikpIn1lbHNlIGImJmIoKX0sc3IsdXI9ZnVuY3Rpb24oKXt2YXIgYT17fTt0cnl7Zm9yKHZhciBiIGluIE9iamVjdC5wcm90b3R5cGUpe3ZhciBjPQpPYmplY3QucHJvdG90eXBlW2JdO2RlbGV0ZSBPYmplY3QucHJvdG90eXBlW2JdO2FbYl09Y319Y2F0Y2goZCl7cmV0dXJue319cmV0dXJuIGF9LHZyPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBhKU9iamVjdC5wcm90b3R5cGVbYl09YVtiXX0sd3I9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpaWYoYVtiXSE9PU9iamVjdC5wcm90b3R5cGVbYl0pcmV0dXJuITE7cmV0dXJuITB9LHhyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPSJhdXRvIiYmYSE9InpoLUNOIiYmYT09Yn0seXI9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cubG9jYXRpb24uaGFzaC5tYXRjaCgvZ29vZ2xlXC50cmFuc2xhdGVcLmVsZW1lbnRcLnNwPShbXiZdKykvKTtyZXR1cm4gYSYmYVsxXT9hWzFdOm51bGx9O3ZhciBQbT1udWxsLHpyPW51bGwsQXI9ZnVuY3Rpb24oKXt9O0FyLnByb3RvdHlwZS5hdHRhY2g9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCBpbiBjKWNbZF0hPT1PYmplY3QucHJvdG90eXBlW2RdJiYoYltkXT10eXBlb2YgY1tkXT09PSJmdW5jdGlvbiI/Y1tkXTpfLlpqKFJtLGEsTnVtYmVyKGNbZF0pKSl9O3ZhciBDcj1mdW5jdGlvbigpe1BtJiZCcigpO1BtPVtdO3pyPV8ueCh3aW5kb3csInBhZ2VoaWRlIixmdW5jdGlvbigpe0JyKCl9KX0sQnI9ZnVuY3Rpb24oKXt6ciYmKF8uVmQoenIpLHpyPW51bGwpO1BtJiZQbS5sZW5ndGgmJlFtKFBtLmpvaW4oIiIpKTtQbT1udWxsfSxEcj1uZXcgQXI7dmFyIEVyPWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihFcixfLkopO3ZhciBUbT1fLktpKEVyKTt2YXIgU207dmFyIEZyPWZ1bmN0aW9uKGEpe3RoaXMudXJsPWE7dGhpcy50aW1lb3V0PS0xO3RoaXMuaj10aGlzLmg9ImNhbGxiYWNrIjt0aGlzLmc9dGhpcy53Yj1udWxsfSxKcj1mdW5jdGlvbihhLGIpe2I9Yj09PXZvaWQgMD97fTpiO2EuZz1HbygpO3ZhciBjPW5ldyBabChhLnVybCksZD1uZXcgTWFwO2EuaiYmZC5zZXQoYS5qLGEuaCk7Yy5nLmV4dGVuZChYbyhiKSxkKTtHcihhKS50aGVuKGZ1bmN0aW9uKCl7SHIoYSxjLnRvU3RyaW5nKCkpfSkudGhlbihmdW5jdGlvbigpe3JldHVybiBhLmcucHJvbWlzZX0pLnRoZW4oZnVuY3Rpb24oKXtJcihhKX0sZnVuY3Rpb24oKXtJcihhKX0pO2EudGltZW91dD4wJiYoYS5sPXNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmcucmVqZWN0KEVycm9yKCJyYSIpKX0sYS50aW1lb3V0KSk7cmV0dXJuIGEuZy5wcm9taXNlfSxIcj1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBNZXNzYWdlQ2hhbm5lbDthLndiLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2Uoe3VybDpiLApjYWxsYmFja05hbWU6YS5ofSwiKiIsW2MucG9ydDJdKTtjLnBvcnQxLm9ubWVzc2FnZT1mdW5jdGlvbihkKXt2YXIgZT17fTthLmwhPT12b2lkIDAmJihjbGVhclRpbWVvdXQoYS5sKSxhLmw9dm9pZCAwKTtkLmRhdGE9PT12b2lkIDAmJmEuZy5yZWplY3QoRXJyb3IoInNhIikpO3R5cGVvZiBkLmRhdGEhPT0ic3RyaW5nIiYmYS5nLnJlamVjdChFcnJvcigidGEiKSk7dHJ5e2U9SlNPTi5wYXJzZShkLmRhdGEpfWNhdGNoKGYpe2EuZy5yZWplY3QoRXJyb3IoInVhYCIrZi5tZXNzYWdlKSl9YS5nLnJlc29sdmUoZSl9fSxHcj1mdW5jdGlvbihhKXt2YXIgYj1HbygpLGM9Xy53ZChkb2N1bWVudCwiSUZSQU1FIik7aWYoIWMuc2FuZGJveCl0aHJvdyBFcnJvcigidmEiKTtjLnNhbmRib3gudmFsdWU9ImFsbG93LXNjcmlwdHMiO2Muc3R5bGUuZGlzcGxheT0ibm9uZSI7YS53Yj1jO2E9Vm0oKTthPVNsKFtfLm1sKCI8IURPQ1RZUEUgaHRtbD4iKSxZbChRbChhKSldKTtjLnNyY2RvYz1fLmtqKGEpOwphPUZsKCJkYXRhOnRleHQvaHRtbDtjaGFyc2V0PVVURi04O2Jhc2U2NCwiK2J0b2EoXy5raihhKS50b1N0cmluZygpKSk7Yy5zcmM9Xy5OYShhKS50b1N0cmluZygpO2MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZnVuY3Rpb24oKXtyZXR1cm4gYi5yZXNvbHZlKGMpfSwhMSk7Yy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZnVuY3Rpb24oZCl7Yi5yZWplY3QoZCBpbnN0YW5jZW9mIEVycm9yP2Q6RXJyb3IoU3RyaW5nKGQpKSl9LCExKTtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoYyk7cmV0dXJuIGIucHJvbWlzZX0sSXI9ZnVuY3Rpb24oYSl7YS53YiE9PW51bGwmJihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoYS53YiksYS53Yj1udWxsKX07dmFyIEtyPWZ1bmN0aW9uKGEsYil7Xy51LmNhbGwodGhpcyk7dGhpcy5nPW5ldyBabChhKTtpZihiKWZvcih2YXIgYyBpbiBiKWJbY10hPT1PYmplY3QucHJvdG90eXBlW2NdJiZ0aGlzLmcuZy5zZXQoYyxiW2NdKX07Xy5CKEtyLF8udSk7S3IucHJvdG90eXBlLlRhPWZ1bmN0aW9uKCl7cmV0dXJuITB9O0tyLnByb3RvdHlwZS5TYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLlRhKCl9O0tyLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKCl7cmV0dXJuIF8uWWkobnVsbCl9O0tyLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oKXt9O3ZhciBMcj1mdW5jdGlvbihhLGIsYyl7S3IuY2FsbCh0aGlzLGEsYik7YT10aGlzLmg9bmV3IEZyKHRoaXMuZyk7YS5oPSJjYWxsYmFjayI7YS5qPWM9PT12b2lkIDA/ImNhbGxiYWNrIjpjfTtfLkIoTHIsS3IpO0xyLnByb3RvdHlwZS5UYT1mdW5jdGlvbigpe3JldHVybiEwfTsKTHIucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIEpyKHRoaXMuaCxhKX07THIucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihhKXthLmNhbmNlbCgpfTt2YXIgTXI9ZnVuY3Rpb24oYSxiKXtLci5jYWxsKHRoaXMsYSxiKTt0aGlzLmg9e307dGhpcy5qPTB9O18uQihNcixLcik7TXIucHJvdG90eXBlLlRhPWZ1bmN0aW9uKCl7cmV0dXJuITB9OwpNci5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dXIoKSxkPSsrdGhpcy5qLGU9e30sZj17fTsicSJpbiBhJiYoZi5xPWEucSxkZWxldGUgYS5xKTtlLmhhPW5ldyBfLldmO3RoaXMuZy5oLmVuZHNXaXRoKCIuY29ycC5nb29nbGUuY29tIikmJihlLmhhLkM9ITApO3ZhciBnPW5ldyBfLm9lKGZ1bmN0aW9uKGgsayl7Xy54KGUuaGEsImNvbXBsZXRlIixmdW5jdGlvbigpe2lmKCFlLlJlKXtpZihfLmdnKGUuaGEpKXt2YXIgbD1fLmlnKGUuaGEpO05yKGIsZCk7cmV0dXJuIGgobCl9Yi54aSgpO2w9Xy5pZyhlLmhhKTtOcihiLGQpO3JldHVybiBrKGwpfX0pO18ueChlLmhhLCJ0aW1lb3V0IixmdW5jdGlvbigpe2lmKCFlLlJlKXJldHVybiBiLnppKCksTnIoYixkKSxrKCl9KX0pO2UuaGEuc2VuZCh0aGlzLmcudG9TdHJpbmcoKSsiJiIrcnIoYSksIlBPU1QiLHJyKGYpLHsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0pOwp0aGlzLmhbZF09ZTt2cihjKTtyZXR1cm4gZ307TXIucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmhbYV07YiYmKGIuUmU9ITAsTnIodGhpcyxhKSl9O3ZhciBOcj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuaFtiXTtjJiYoYy5oYSYmKGMuaGEuZGlzcG9zZSgpLGMuaGE9bnVsbCksZGVsZXRlIGEuaFtiXSl9O01yLnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7S3IucHJvdG90eXBlLk0uY2FsbCh0aGlzKTtmb3IodmFyIGEgaW4gdGhpcy5oKXRoaXMuY2FuY2VsKGEpfTtEci5hdHRhY2goMTcxNzAsTXIucHJvdG90eXBlLHt6aToxLHhpOjJ9KTt2YXIgT3I9ZnVuY3Rpb24oYSxiLGMpe0tyLmNhbGwodGhpcyxhLGMpO3RoaXMuaD1iLnByb3h5SXNTdXBwb3J0ZWQ7dGhpcy5qPWZ1bmN0aW9uKGQsZSxmKXtyZXR1cm4gXy5ZaShiLnByb3h5U2VuZChkLGUsZikpfTt0aGlzLmw9Yi5wcm94eUNhbmNlbH07Xy5CKE9yLEtyKTtPci5wcm90b3R5cGUuVGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oKCl9OwpPci5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmoodGhpcy5nLnRvU3RyaW5nKCksYSxiKX07T3IucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihhKXt0aGlzLmwoYSl9O3ZhciBQcj1mdW5jdGlvbihhLGIpe18udS5jYWxsKHRoaXMpO3RoaXMuaD1hO3RoaXMuZz1iP2I6bnVsbH07Xy5CKFByLF8udSk7UHIucHJvdG90eXBlLk09ZnVuY3Rpb24oKXtfLnUucHJvdG90eXBlLk0uY2FsbCh0aGlzKX07dmFyIFJyPWZ1bmN0aW9uKGEsYixjLGQpe18udS5jYWxsKHRoaXMpO3ZhciBlO2I/ZT17Y2xpZW50OmJ9OmU9e2Fubm86MyxjbGllbnQ6dHEsZm9ybWF0OiJodG1sIix2OiIxLjAifTtjJiYoZS5zcD1jKTtlLmtleT1hO09uJiYoZS5sb2dsZD0idiIrT24pO3RoaXMuZz1udWxsO3RoaXMuaD17SGY6MzAwfTthPXRoaXMuQT1uZXcgUHIoZSxkKTtiPXZxK3lxO3RoaXMubz1hLmc/bmV3IE9yKGIsYS5nLHtjbGllbnQ6dHF9KTpuZXcgTHIoYix7Y2xpZW50OnRxfSk7YT10aGlzLkE7aWYoYS5nKXtpZighYS5nKXRocm93IEVycm9yKCJ3YSIpO2E9W3t2YTpuZXcgT3IodnErdXErIi90cmFuc2xhdGVfYS90IixhLmcsYS5oKSxjZToxOTAwLElmOjQyOTQ5NjcyOTUsR2Y6LTEsV2Y6MCxLZDohMX1dfWVsc2UgYT1be3ZhOm5ldyBNcih2cSt1cSsiL3RyYW5zbGF0ZV9hL3QiLGEuaCksY2U6MzA3MjAsSWY6NDI5NDk2NzI5NSxHZjotMSxXZjowLEtkOiExfV07dGhpcy5CPW5ldyBRcihhKTt0aGlzLmo9CiExO2ZvcihiPTA7YjxhLmxlbmd0aDsrK2IpdGhpcy5qPXRoaXMuanx8YVtiXS52YS5UYSgpO3RoaXMuanx8dGhpcy5uaSgpfTtfLkIoUnIsXy51KTtSci5wcm90b3R5cGUuaW5pdGlhbGl6ZT1mdW5jdGlvbihhKXt0aGlzLkN8fCh0aGlzLkM9ITAsdGhpcy5CLnN0YXJ0KCgwLF8ueSkoZnVuY3Rpb24oYil7YiYmKHRoaXMuZz1iLHRoaXMuaC52YT1iLnZhKTthKCl9LHRoaXMpKSl9O1JyLnByb3RvdHlwZS5UYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmp9O1JyLnByb3RvdHlwZS5TYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmchPT1udWxsJiZ0aGlzLmcudmEhPT1udWxsJiZ0aGlzLmcudmEuU2EoKX07CnZhciBTcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9e3E6Yy5zdWJzdHJpbmcoMCxhLmguSGYpLHNsOiJhdXRvIix0bDoiZW4ifTtyZXR1cm4gbmV3IF8ub2UoZnVuY3Rpb24oZSxmKXthLmgudmEuc2VuZChkLGIpLnRoZW4oZnVuY3Rpb24oZyl7dHJ5e3ZhciBoPUpTT04ucGFyc2UoZyk7ZShoJiZoWzFdfHxudWxsKX1jYXRjaChrKXtlKG51bGwpfX0sZnVuY3Rpb24oZyl7cmV0dXJuIGYoZ3x8bnVsbCl9KX0pfTsKUnIucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe3ZhciBrPXRoaXMsbD17cTpiLHNsOmMsdGw6ZH07bC50Yz1lO2YmJihsLmN0dD0xKTtnJiYobC5kb209MSk7aCYmKGwuc3I9MSk7bFtocSgpXT1ncShiLmpvaW4oIiIpKTtyZXR1cm4gbmV3IF8ub2UoZnVuY3Rpb24obixxKXtrLmcudmEuc2VuZChsLGEpLnRoZW4oZnVuY3Rpb24ocCl7aWYocCl7aWYodHlwZW9mIHAhPT0ib2JqZWN0Iil0cnl7cD1KU09OLnBhcnNlKHApfWNhdGNoKEEpe2subWkoKTtxKCk7cmV0dXJufWlmKF8ub2MocCkhPSJhcnJheSIpdmFyIHI9W1twLDIwMF1dO2Vsc2UgaWYocC5sZW5ndGg9PTImJl8ub2MocFswXSkhPSJhcnJheSImJl8ub2MocFsxXSkhPSJhcnJheSIpcj1bW3BbMF0sMjAwLHBbMV1dLFtwWzFdLDIwMCxwWzFdXV07ZWxzZXtyPVtdO2Zvcih2YXIgdD0wO3Q8cC5sZW5ndGg7Kyt0KXJbdF09Xy5vYyhwW3RdKSE9ImFycmF5Ij9bcFt0XSwyMDBdOltwW3RdWzBdLAoyMDAscFt0XVsxXV19bihyKX1lbHNlIHEoKX0pfSl9O3ZhciBUcj1mdW5jdGlvbihhLGIpe2IgaW5zdGFuY2VvZiBfLm9lP2IudGhlbihmdW5jdGlvbihjKXthLmcudmEuY2FuY2VsKGMpfSk6YS5nLnZhLmNhbmNlbChiKX07UnIucHJvdG90eXBlLmw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLktkP3RoaXMuZy5jZS0obmV3IFpsKHRoaXMuZy52YS5nKSkudG9TdHJpbmcoKS5sZW5ndGg6dGhpcy5nLmNlfTtSci5wcm90b3R5cGUuTT1mdW5jdGlvbigpe18udS5wcm90b3R5cGUuTS5jYWxsKHRoaXMpO3RoaXMuZyYmKHRoaXMuZy52YS5kaXNwb3NlKCksdGhpcy5nLnZhPW51bGwpO3RoaXMuaC52YT1udWxsO3RoaXMuby5kaXNwb3NlKCk7dGhpcy5vPW51bGx9O0RyLmF0dGFjaCg3MzYxLFJyLnByb3RvdHlwZSx7bmk6ZnVuY3Rpb24oKXtRbSgidGVfYXUiKX19KTtEci5hdHRhY2goNDc1MDQsUnIucHJvdG90eXBlLHttaTpmdW5jdGlvbigpe1FtKCJ0ZV9hZmJyIil9fSk7CnZhciBRcj1mdW5jdGlvbihhKXt0aGlzLmg9YX07UXIucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEpe3RoaXMuZz1hO3RoaXMuaj0wO1VyKHRoaXMpfTt2YXIgVXI9ZnVuY3Rpb24oYSl7aWYoYS5qPj1hLmgubGVuZ3RoKWEuZyhudWxsKTtlbHNle3ZhciBiPWEuaFthLmorK107Yi5JaT9vcihuZXcgbnIoKDAsXy55KShiLnZhLlNhLGIudmEpLCgwLF8ueSkoZnVuY3Rpb24oYyl7Yz90aGlzLmcoYik6VXIodGhpcyl9LGEpLGIuSWkpKTpiLnZhLlNhKCk/YS5nKGIpOlVyKGEpfX07dmFyIFZyPWlyKCJBIEFCQlIgQUNST05ZTSBCIEJBU0VGT05UIEJETyBCSUcgQ0lURSBERk4gRU0gRk9OVCBJIElOUFVUIE5PQlIgTEFCRUwgUSBSVCBTIFNNQUxMIFNQQU4gU1RSSUtFIFNUUk9ORyBTVUIgU1VQIFRFWFRBUkVBIFRUIFUgVkFSIi5zcGxpdCgiICIpKSxXcj1pcigiQVBQTEVUIEFSRUEgQkFTRSBGUkFNRSBGUkFNRVNFVCBIUiBMSU5LIE1FVEEgTk9GUkFNRVMgTk9TQ1JJUFQgSU5QVVQgVEVYVEFSRUEgVElUTEUiLnNwbGl0KCIgIikpLFhyPWlyKCJCUiBDT0RFIElNRyBLQkQgTUFQIE9CSkVDVCBQQVJBTSBSUCBTQ1JJUFQgU1RZTEUgV0JSIHN2ZyIuc3BsaXQoIiAiKSksWXI9aXIoWyJzdWJtaXQiLCJidXR0b24iXSk7WG0ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gWnJ9O3ZhciBacj17ZG9uZTohMCx2YWx1ZTp2b2lkIDB9O1htLnByb3RvdHlwZS5vPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3ZhciBhcz1mdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMuaD0hIWI7dGhpcy5ub2RlPW51bGw7dGhpcy5nPTA7dGhpcy5qPSExO3RoaXMubD0hYzthJiYkcih0aGlzLGEsZCk7dGhpcy5kZXB0aD1lIT12b2lkIDA/ZTp0aGlzLmd8fDA7dGhpcy5oJiYodGhpcy5kZXB0aCo9LTEpfTtfLkcoYXMsWG0pO3ZhciAkcj1mdW5jdGlvbihhLGIsYyxkKXtpZihhLm5vZGU9YilhLmc9dHlwZW9mIGM9PT0ibnVtYmVyIj9jOmEubm9kZS5ub2RlVHlwZSE9MT8wOmEuaD8tMToxO3R5cGVvZiBkPT09Im51bWJlciImJihhLmRlcHRoPWQpfSxicz1mdW5jdGlvbihhKXt2YXIgYj1hLmg/LTE6MTthLmc9PWImJihhLmc9YiotMSxhLmRlcHRoKz1hLmcqKGEuaD8tMToxKSl9Owphcy5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe2lmKHRoaXMuail7aWYoIXRoaXMubm9kZXx8dGhpcy5sJiZ0aGlzLmRlcHRoPT0wKXJldHVybiBacjt2YXIgYT10aGlzLm5vZGU7dmFyIGI9dGhpcy5oPy0xOjE7aWYodGhpcy5nPT1iKXt2YXIgYz10aGlzLmg/YS5sYXN0Q2hpbGQ6YS5maXJzdENoaWxkO2M/JHIodGhpcyxjKTokcih0aGlzLGEsYiotMSl9ZWxzZShjPXRoaXMuaD9hLnByZXZpb3VzU2libGluZzphLm5leHRTaWJsaW5nKT8kcih0aGlzLGMpOiRyKHRoaXMsYS5wYXJlbnROb2RlLGIqLTEpO3RoaXMuZGVwdGgrPXRoaXMuZyoodGhpcy5oPy0xOjEpfWVsc2UgdGhpcy5qPSEwO3JldHVybihhPXRoaXMubm9kZSk/e3ZhbHVlOmEsZG9uZTohMX06WnJ9O2FzLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZT09dGhpcy5ub2RlJiYoIXRoaXMubm9kZXx8YS5nPT10aGlzLmcpfTsKYXMucHJvdG90eXBlLnNwbGljZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLm5vZGUsYz10aGlzLmg/MTotMTt0aGlzLmc9PWMmJih0aGlzLmc9YyotMSx0aGlzLmRlcHRoKz10aGlzLmcqKHRoaXMuaD8tMToxKSk7dGhpcy5oPSF0aGlzLmg7YXMucHJvdG90eXBlLm5leHQuY2FsbCh0aGlzKTt0aGlzLmg9IXRoaXMuaDtjPV8ucWEoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO2Zvcih2YXIgZD1jLmxlbmd0aC0xO2Q+PTA7ZC0tKXhvKGNbZF0sYik7Xy5BZChiKX07dmFyIGRzPWZ1bmN0aW9uKGEsYil7dGhpcy5sPSExO3RoaXMuaj1fLlNjP1tdOm51bGw7dGhpcy5oPVtdO3RoaXMuZG9uZT0hMTtmb3IodGhpcy5nPW5ldyBhcyhhLCExLGIsYS5ub2RlVHlwZT09PTM/MDoxLDEpO2E9YS5wYXJlbnROb2RlOyljcyh0aGlzLGEsITApO3RoaXMuaC5wdXNoKCExKTt0aGlzLmgucmV2ZXJzZSgpO2ZvcihhPTE7YTx0aGlzLmgubGVuZ3RoOysrYSl0aGlzLmhbYV09PW51bGwmJih0aGlzLmhbYV09dGhpcy5oW2EtMV0pfSxjcz1mdW5jdGlvbihhLGIsYyl7Yz1jPT09dm9pZCAwPyExOmM7dmFyIGQ9KGIuc3R5bGUmJmIuc3R5bGUud2hpdGVTcGFjZXx8IiIpLnN1YnN0cmluZygwLDMpO2Q9PT0icHJlInx8IWQmJmIudGFnTmFtZT09PSJQUkUiP2EuaC5wdXNoKCEwKTpkJiZkIT09InByZSI/YS5oLnB1c2goITEpOmM/YS5oLnB1c2gobnVsbCk6YS5oLnB1c2goYS5oW2EuaC5sZW5ndGgtMV0pfSxlcz1mdW5jdGlvbihhKXtyZXR1cm4hIWEuaFthLmgubGVuZ3RoLQoxXX07ZHMucHJvdG90eXBlLm5vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLm5vZGV9O2RzLnByb3RvdHlwZS5kZXB0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcuZGVwdGh9Owpkcy5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3RyeXt0aGlzLmomJnRoaXMuai5sZW5ndGg+MCYmdGhpcy5nLmc9PT0tMSYmdGhpcy5qLmxlbmd0aC0tO3RoaXMuZy5nPT09LTEmJnRoaXMuaC5sZW5ndGgtLTtpZih0aGlzLmomJnRoaXMuai5sZW5ndGg+MCYmdGhpcy5nLmchPT0xJiYhdGhpcy5nLm5vZGUubmV4dFNpYmxpbmcpJHIodGhpcy5nLHRoaXMualt0aGlzLmoubGVuZ3RoLTFdLC0xLHRoaXMuZy5kZXB0aC0xKTtlbHNle3ZhciBhPXRoaXMuZy5uZXh0KCk7dGhpcy5sPSEwO2lmKGEuZG9uZSl7dGhpcy5kb25lPSEwO3JldHVybn10aGlzLmomJnRoaXMuZy5nPT09MSYmdGhpcy5qLnB1c2godGhpcy5nLm5vZGUpfXRoaXMuZy5nPT09MSYmdGhpcy5sJiZjcyh0aGlzLHRoaXMuZy5ub2RlKX1jYXRjaChiKXt0aGlzLndpKGIpLHRoaXMuZG9uZT0hMH19O0RyLmF0dGFjaCg1Mjc1NCxkcy5wcm90b3R5cGUse3dpOjF9KTt2YXIgUT17fSxmcz1mdW5jdGlvbigpe1FbMF09Ik92ZXJzZXR0IjtRWzFdPSJBdmJyeXQiO1FbMl09Ikx1a2siO1FbM109ZnVuY3Rpb24oYSl7cmV0dXJuIkdvb2dsZSBoYXIgb3ZlcnNhdHQgZGVubmUgc2lkZW4gdGlsICIrYSsiIGF1dG9tYXRpc2sifTtRWzRdPWZ1bmN0aW9uKGEpe3JldHVybiJPdmVyc2F0dCB0aWw6ICIrYX07UVs1XT0iRmVpbDogVGplbmVyZW4ga3VubmUgaWtrZSBmdWxsZlx1MDBmOHJlIGZvcmVzcFx1MDBmOHJzZWxlbi4gUHJcdTAwZjh2IHBcdTAwZTUgbnl0dCBzZW5lcmUuIjtRWzZdPSJMZXMgbWVyIjtRWzddPWZ1bmN0aW9uKGEpe3JldHVybiJEcmV2ZXQgYXYgIithfTtRWzhdPSJPdmVyc2V0dGVyIjtRWzldPSJPdmVyc2V0dGVsc2UgcFx1MDBlNWdcdTAwZTVyIjtRWzEwXT1mdW5jdGlvbihhKXtyZXR1cm4iVmlsIGR1IG92ZXJzZXR0ZSBkZW5uZSBzaWRlbiB0aWwgIithKyIgbWVkIEdvb2dsZSBPdmVyc2V0dGVyPyJ9O1FbMTFdPWZ1bmN0aW9uKGEpe3JldHVybiJWaXMgZGVubmUgc2lkZW4gcFx1MDBlNTogIisKYX07UVsxMl09IlZpcyBvcmlnaW5hbCI7UVsxM109IklubmhvbGRldCBwXHUwMGU1IGRlbm5lIGxva2FsZSBmaWxlbiBzZW5kZXMgdGlsIEdvb2dsZSB2aWEgZW4gc2lra2VyIHRpbGtvYmxpbmcgZm9yIFx1MDBlNSBibGkgb3ZlcnNhdHQuIjtRWzE0XT0iSW5uaG9sZGV0IHBcdTAwZTUgZGVubmUgc2lrcmUgc2lkZW4gc2VuZGVzIHRpbCBHb29nbGUgdmlhIGVuIHNpa2tlciB0aWxrb2JsaW5nIGZvciBcdTAwZTUgYmxpIG92ZXJzYXR0LiI7UVsxNV09IklubmhvbGRldCBwXHUwMGU1IGRlbm5lIGludHJhbmV0dHNpZGVuIHNlbmRlcyB0aWwgR29vZ2xlIHZpYSBlbiBzaWtrZXIgdGlsa29ibGluZyBmb3IgXHUwMGU1IGJsaSBvdmVyc2F0dC4iO1FbMTZdPSJWZWxnIHNwclx1MDBlNWsiO1FbMTddPWZ1bmN0aW9uKGEpe3JldHVybiJTbFx1MDBlNSBhdiBvdmVyc2V0dGVsc2UgdGlsICIrYX07UVsxOF09ZnVuY3Rpb24oYSl7cmV0dXJuIkRlYWt0aXZlciBmb3I6ICIrYX07UVsxOV09IlNranVsIGFsbHRpZCI7ClFbMjBdPSJPcmlnaW5hbHRla3N0OiI7UVsyMV09IkJpZHJhIG1lZCBlbiBiZWRyZSBvdmVyc2V0dGVsc2UiO1FbMjJdPSJCaWRyYSI7UVsyM109Ik92ZXJzZXR0IGFsdCI7UVsyNF09IkdqZW5vcHByZXR0IGFsdCI7UVsyNV09IkF2YnJ5dCBhbHQiO1FbMjZdPSJPdmVyc2V0dCBkZWxlbmUgdGlsIG1pdHQgc3ByXHUwMGU1ayI7UVsyN109ZnVuY3Rpb24oYSl7cmV0dXJuIk92ZXJzZXR0IGFsdCB0aWwgIithfTtRWzI4XT0iVmlzIG9wcHJpbm5lbGlnZSBzcHJcdTAwZTVrIjtRWzI5XT0iQWx0ZXJuYXRpdmVyIjtRWzMwXT0iU2xcdTAwZTUgYXYgb3ZlcnNldHRlbHNlIGZvciBkZXR0ZSBuZXR0c3RlZGV0IjtRWzMxXT1udWxsO1FbMzJdPSJWaXMgYWx0ZXJuYXRpdmUgb3ZlcnNldHRlbHNlciI7UVszM109IktsaWtrIHBcdTAwZTUgb3JkIG92ZW5mb3IgZm9yIFx1MDBlNSBmXHUwMGU1IGFsdGVybmF0aXZlIG92ZXJzZXR0ZWxzZXIiO1FbMzRdPSJCcnVrIjtRWzM1XT0iRHJhIG1lZCBTaGlmdC10YXN0IGZvciBcdTAwZTUgZW5kcmUgcmVra2VmXHUwMGY4bGdlIjsKUVszNl09IktsaWtrIGZvciBcdTAwZTUgc2UgYWx0ZXJuYXRpdmUgb3ZlcnNldHRlbHNlciI7UVszN109IkhvbGQgbmVkZSBTaGlmdC10YXN0ZW4sIGtsaWtrLCBvZyBkcmEgZGVyZXR0ZXIgb3JkZW5lIG92ZW5mb3IgZm9yIFx1MDBlNSBlbmRyZSBwXHUwMGU1IHJla2tlZlx1MDBmOGxnZW4uIjtRWzM4XT0iVGFrayBmb3IgYXQgZHUgYmlkcmFyIG1lZCBvdmVyc2V0dGVsc2VzZm9yc2xhZ2V0IGRpdHQgdGlsIEdvb2dsZSBPdmVyc2V0dGVyLiI7UVszOV09IkFkbWluaXN0cmVyIG92ZXJzZXR0aW5nIGZvciBkZXR0ZSBuZXR0c3RlZGV0IjtRWzQwXT0iS2xpa2sgcFx1MDBlNSBldCBvcmQgZm9yIFx1MDBlNSBzZSBhbHRlcm5hdGl2ZSBvdmVyc2V0dGVsc2VyLCBlbGxlciBkb2JiZWx0a2xpa2sgZm9yIFx1MDBlNSByZWRpZ2VyZSBkaXJla3RlIjtRWzQxXT0iT3BwcmlubmVsaWcgdGVrc3QiO1FbNDJdPSJPdmVyc2V0dGVyIjtRWzQzXT0iT3ZlcnNldHQiO1FbNDRdPSJSZXR0aW5nZW4gZGluIGVyIHNlbmR0IGlubi4iOwpRWzQ1XT0iRmVpbDogU3ByXHUwMGU1a2V0IHRpbCBuZXR0c2lkZW4gc3RcdTAwZjh0dGVzIGlra2UuIjtRWzQ2XT0iTW9kdWwgZm9yIHNwclx1MDBlNWtvdmVyc2V0dGluZyI7UVs0N109IkdpIGVuIHZ1cmRlcmluZyBhdiBkZW5uZSBvdmVyc2V0dGVsc2VuIjtRWzQ4XT0iVGlsYmFrZW1lbGRpbmdlbiBkaW4gYnJ1a2VzIGZvciBcdTAwZTUgZ2pcdTAwZjhyZSBHb29nbGUgT3ZlcnNldHRlciBiZWRyZSI7UVs0OV09IkdvZCBvdmVyc2V0dGVsc2UiO1FbNTBdPSJEXHUwMGU1cmxpZyBvdmVyc2V0dGVsc2UiO1FbNTFdPSJPdmVyc2V0dGVsc2UifTt2YXIgZ3M9ZnVuY3Rpb24oKXtyZXR1cm4iW21zZ191bmRlZmluZWRdIn0sUj17fTsKKGZ1bmN0aW9uKCl7dmFyIGE9ZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fTtSPXtJZTphKDApLG1nOmEoMSksQWU6YSgyKSxXajphKDMpLERnOmEoNCksQ2U6YSg1KSx3ZzphKDQ1KSx4ZzphKDYpLHpnOmEoNyksd2Q6YSg4KSxFZzphKDkpLHNrOmEoMTApLEpnOmEoMTEpLEFnOmEoMTIpLGxrOmEoMTMpLENnOmEoMTQpLGtrOmEoMTUpLEJnOmEoMTYpLHZrOmEoMTcpLEZnOmEoMTgpLGpqOmEoMTkpLFVqOmEoMjApLElqOmEoMjEpLG1rOmEoMjIpLGVrOmEoMjMpLGRrOmEoMjQpLGJrOmEoMjUpLHRrOmEoMjYpLHJrOmEoMjcpLGNrOmEoMjgpLHlnOmEoMjkpLEdnOmEoMzApLGlqOmEoMzIpLGdqOmEoMzMpLHdrOmEoMzQpLHhqOmEoMzUpLHBqOmEoMzYpLHdqOmEoMzcpLG5rOmEoMzgpLFFqOmEoMzkpLGhqOmEoNDApLFZqOmEoNDEpLEVlOmEoNDYpLFhqOmEoNDcpLEhqOmEoNDgpLEdqOmEoNDkpLEZqOmEoNTApLHVrOmEoNTEpfX0pKCk7Ui5DbD1mdW5jdGlvbigpe3JldHVybiBRWzBdfTsKUi5aaz1mdW5jdGlvbigpe3JldHVybiBRWzFdfTtSLmJsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMl19O1Iubmw9ZnVuY3Rpb24oKXtyZXR1cm4gUVszXX07Ui5EbD1mdW5jdGlvbigpe3JldHVybiBRWzRdfTtSLmZsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbNV19O1IuaGw9ZnVuY3Rpb24oKXtyZXR1cm4gUVs0NV19O1IuaWw9ZnVuY3Rpb24oKXtyZXR1cm4gUVs2XX07Ui5vbD1mdW5jdGlvbigpe3JldHVybiBRWzddfTtSLkdsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbOF19O1IuSWw9ZnVuY3Rpb24oKXtyZXR1cm4gUVs5XX07Ui5GbD1mdW5jdGlvbigpe3JldHVybiBRWzEwXX07Ui5PbD1mdW5jdGlvbigpe3JldHVybiBRWzExXX07Ui5wbD1mdW5jdGlvbigpe3JldHVybiBRWzEyXX07Ui55bD1mdW5jdGlvbigpe3JldHVybiBRWzEzXX07Ui56bD1mdW5jdGlvbigpe3JldHVybiBRWzE0XX07Ui54bD1mdW5jdGlvbigpe3JldHVybiBRWzE1XX07Ui5xbD1mdW5jdGlvbigpe3JldHVybiBRWzE2XX07ClIuTGw9ZnVuY3Rpb24oKXtyZXR1cm4gUVsxN119O1IuS2w9ZnVuY3Rpb24oKXtyZXR1cm4gUVsxOF19O1IuWWs9ZnVuY3Rpb24oKXtyZXR1cm4gUVsxOV19O1IubGw9ZnVuY3Rpb24oKXtyZXR1cm4gUVsyMF19O1Iuc2g9ZnVuY3Rpb24oKXtyZXR1cm4gUVs0MV19O1IuZWw9ZnVuY3Rpb24oKXtyZXR1cm4gUVsyMV19O1IuQWw9ZnVuY3Rpb24oKXtyZXR1cm4gUVsyMl19O1Iud2w9ZnVuY3Rpb24oKXtyZXR1cm4gUVsyM119O1Iudmw9ZnVuY3Rpb24oKXtyZXR1cm4gUVsyNF19O1Iucmw9ZnVuY3Rpb24oKXtyZXR1cm4gUVsyNV19O1IuSGw9ZnVuY3Rpb24oKXtyZXR1cm4gUVsyNl19O1IuRWw9ZnVuY3Rpb24oKXtyZXR1cm4gUVsyN119O1IudWw9ZnVuY3Rpb24oKXtyZXR1cm4gUVsyOF19O1Iua2w9ZnVuY3Rpb24oKXtyZXR1cm4gUVsyOV19O1IuTWw9ZnVuY3Rpb24oKXtyZXR1cm4gUVszMF19O1Iuamw9ZnVuY3Rpb24oKXtyZXR1cm4gUVszOV19O1IuWGs9ZnVuY3Rpb24oKXtyZXR1cm4gUVszMl19OwpSLlZrPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMzNdfTtSLldrPWZ1bmN0aW9uKCl7cmV0dXJuIFFbNDBdfTtSLk5sPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMzRdfTtSLmRsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMzVdfTtSLmFsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMzZdfTtSLmNsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMzddfTtSLkJsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbMzhdfTtSLmdsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbNDZdfTtSLnRoPWZ1bmN0aW9uKCl7cmV0dXJuIFFbNDddfTtSLnJoPWZ1bmN0aW9uKCl7cmV0dXJuIFFbNDhdfTtSLnFoPWZ1bmN0aW9uKCl7cmV0dXJuIFFbNDldfTtSLnBoPWZ1bmN0aW9uKCl7cmV0dXJuIFFbNTBdfTtSLkpsPWZ1bmN0aW9uKCl7cmV0dXJuIFFbNTFdfTt2YXIgaHM9Ujt2YXIgaXM9aHMuc2gsanM9aHMudGgsa3M9aHMucmgsbHM9aHMucWgsbXM9aHMucGg7dmFyIHBzPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZGlyO2E9YS5jajtyZXR1cm4gVm4oV24oVm4oV24oVm4oXy55bCgpLCc8ZGl2IGlkPSJnb29nLWd0LXR0IiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLUw3bGJrYiIpKycgc2tpcHRyYW5zbGF0ZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDEycHg7IG1hcmdpbjogMCAwIDAgLTIzcHg7IHBhZGRpbmc6IDA7IGZvbnQtZmFtaWx5OiBcJ0dvb2dsZSBTYW5zXCcsIEFyaWFsLCBzYW5zLXNlcmlmOyIgZGF0YS1pZD0iIj48ZGl2IGlkPSJnb29nLWd0LXZ0IiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZCIpKyciPjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtVWQ3ZnIiKSsnIj48aW1nIHNyYz0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2kvcHJvZHVjdGxvZ29zL3RyYW5zbGF0ZS92MTQvMjRweC5zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgYWx0PSIiLz48ZGl2IGNsYXNzPSInKwooYj09PSJydGwiPyIgIitQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1JdWl6V2MtU0lzclRkIikrIiAiOiIgIitQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1JdWl6V2MtaTNqTThjIikrIiAiKSsnIiBkaXI9IicrUChiKSsnIj4nK0twKGlzKCkpKyc8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLWs3N0lpZiIpKyciPjxkaXYgaWQ9Imdvb2ctZ3Qtb3JpZ2luYWwtdGV4dCIgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1uVk1mY2QtZm1jbVMiKSsiICIrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtYXhBVjEiKSsnIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLU43RXFpZCIpKyIgIitQKGIpKyciPjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkLUI3STRPZCIpKyIgIitQKGIpKyciIGRpcj0iJytQKGIpKyciPjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtVVR1akNiIikrCiciPicrS3AoanMoKSkrJzwvZGl2PjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtZU85bUtlIikrJyI+JytLcChrcygpKSsnPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC14Z292NSIpKyIgIitQKGIpKyciPicpLGI9PT0icnRsIj9XbihXbihfLnlsKCksbnMoKSksb3MoKSk6V24oV24oXy55bCgpLG9zKCkpLG5zKCkpKSwiPC9kaXY+PC9kaXY+IiksKDAsXy50bCkoJzxkaXYgaWQ9Imdvb2ctZ3Qtdm90aW5nSGlkZGVuUGFuZSIgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtYVhZVGNlIikrJyI+PGZvcm0gaWQ9Imdvb2ctZ3Qtdm90aW5nRm9ybSIgYWN0aW9uPSInK1AoVXAoYSkpKyciIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSJ2b3RpbmdGcmFtZSIgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtYVhZVGNlIikrJyI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNsIiBpZD0iZ29vZy1ndC12b3RpbmdJbnB1dFNyY0xhbmciLz48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idGwiIGlkPSJnb29nLWd0LXZvdGluZ0lucHV0VHJnTGFuZyIvPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJxdWVyeSIgaWQ9Imdvb2ctZ3Qtdm90aW5nSW5wdXRTcmNUZXh0Ii8+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Imd0cmFucyIgaWQ9Imdvb2ctZ3Qtdm90aW5nSW5wdXRUcmdUZXh0Ii8+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InZvdGUiIGlkPSJnb29nLWd0LXZvdGluZ0lucHV0Vm90ZSIvPjwvZm9ybT48aWZyYW1lIG5hbWU9InZvdGluZ0ZyYW1lIiBmcmFtZUJvcmRlcj0wPjwvaWZyYW1lPjwvZGl2PicpKSwKIjwvZGl2PjwvZGl2PiIpfSxvcz1mdW5jdGlvbigpe3ZhciBhPV8ueWwoKSxiPWxzKCk7Yj1WbihhLCc8YnV0dG9uIGlkPSJnb29nLWd0LXRodW1iVXBCdXR0b24iIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtYmdtNnNmIikrJyIgdGl0bGU9IicrUChiKSsnIiBhcmlhLWxhYmVsPSInK1AoYikrJyIgYXJpYS1wcmVzc2VkPSJmYWxzZSI+PHNwYW4gaWQ9Imdvb2ctZ3QtdGh1bWJVcEljb24iPicpO3ZhciBjPSgwLF8udGwpKCc8c3ZnIHdpZHRoPSInK1AoMjQpKyciIGhlaWdodD0iJytQKDI0KSsnIiB2aWV3Qm94PSInK1AoIjAgMCAyNCAyNCIpKyciIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLVRISTZWYiIpKyIgIitQKCJOTW01TSIpKyciJyt6cCgpKyc+PHBhdGggZD0iTTIxIDdoLTYuMzFsLjk1LTQuNTcuMDMtLjMyYzAtLjQxLS4xNy0uNzktLjQ0LTEuMDZMMTQuMTcgMFM3LjA4IDYuODUgNyA3SDJ2MTNoMTZjLjgzIDAgMS41NC0uNSAxLjg0LTEuMjJsMy4wMi03LjA1Yy4wOS0uMjMuMTQtLjQ3LjE0LS43M1Y5YzAtMS4xLS45LTItMi0yek03IDE4SDRWOWgzdjl6bTE0LTdsLTMgN0g5VjhsNC4zNC00LjM0TDEyIDloOXYyeiIvPjwvc3ZnPicpOwpiPVZuKFduKGIsYyksJzwvc3Bhbj48c3BhbiBpZD0iZ29vZy1ndC10aHVtYlVwSWNvbkZpbGxlZCI+Jyk7Yz0oMCxfLnRsKSgnPHN2ZyB3aWR0aD0iJytQKDI0KSsnIiBoZWlnaHQ9IicrUCgyNCkrJyIgdmlld0JveD0iJytQKCIwIDAgMjQgMjQiKSsnIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1USEk2VmIiKSsiICIrUCgiTk1tNU0iKSsnIicrenAoKSsnPjxwYXRoIGQ9Ik0yMSA3aC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDBTNy4wOCA2Ljg1IDcgN3YxM2gxMWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczVjljMC0xLjEtLjktMi0yLTJ6TTUgN0gxdjEzaDRWN3oiLz48L3N2Zz4nKTtWbihXbihiLGMpLCI8L3NwYW4+PC9idXR0b24+Iik7cmV0dXJuIGF9LG5zPWZ1bmN0aW9uKCl7dmFyIGE9Xy55bCgpLGI9bXMoKTtiPVZuKGEsJzxidXR0b24gaWQ9Imdvb2ctZ3QtdGh1bWJEb3duQnV0dG9uIiB0eXBlPSJidXR0b24iIGNsYXNzPSInKwpQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1iZ202c2YiKSsnIiB0aXRsZT0iJytQKGIpKyciIGFyaWEtbGFiZWw9IicrUChiKSsnIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj48c3BhbiBpZD0iZ29vZy1ndC10aHVtYkRvd25JY29uIj4nKTt2YXIgYz0oMCxfLnRsKSgnPHN2ZyB3aWR0aD0iJytQKDI0KSsnIiBoZWlnaHQ9IicrUCgyNCkrJyIgdmlld0JveD0iJytQKCIwIDAgMjQgMjQiKSsnIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1USEk2VmIiKSsiICIrUCgiTk1tNU0iKSsnIicrenAoKSsnPjxwYXRoIGQ9Ik0zIDE3aDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjRzNy4wOS02Ljg1IDcuMTctN2g1VjRINmMtLjgzIDAtMS41NC41LTEuODQgMS4yMmwtMy4wMiA3LjA1Yy0uMDkuMjMtLjE0LjQ3LS4xNC43M3YyYzAgMS4xLjkgMiAyIDJ6TTE3IDZoM3Y5aC0zVjZ6TTMgMTNsMy03aDl2MTBsLTQuMzQgNC4zNEwxMiAxNUgzdi0yeiIvPjwvc3ZnPicpOwpiPVZuKFduKGIsYyksJzwvc3Bhbj48c3BhbiBpZD0iZ29vZy1ndC10aHVtYkRvd25JY29uRmlsbGVkIj4nKTtjPSgwLF8udGwpKCc8c3ZnIHdpZHRoPSInK1AoMjQpKyciIGhlaWdodD0iJytQKDI0KSsnIiB2aWV3Qm94PSInK1AoIjAgMCAyNCAyNCIpKyciIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLVRISTZWYiIpKyIgIitQKCJOTW01TSIpKyciJyt6cCgpKyc+PHBhdGggZD0iTTMgMTdoNi4zMWwtLjk1IDQuNTctLjAzLjMyYzAgLjQxLjE3Ljc5LjQ0IDEuMDZMOS44MyAyNHM3LjA5LTYuODUgNy4xNy03VjRINmMtLjgzIDAtMS41NC41LTEuODQgMS4yMmwtMy4wMiA3LjA1Yy0uMDkuMjMtLjE0LjQ3LS4xNC43M3YyYzAgMS4xLjkgMiAyIDJ6bTE2IDBoNFY0aC00djEzeiIvPjwvc3ZnPicpO1ZuKFduKGIsYyksIjwvc3Bhbj48L2J1dHRvbj4iKTtyZXR1cm4gYX07dmFyIHFzPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYT09PSJmdW5jdGlvbiIpYyYmKGE9KDAsXy55KShhLGMpKTtlbHNlIGlmKGEmJnR5cGVvZiBhLmhhbmRsZUV2ZW50PT0iZnVuY3Rpb24iKWE9KDAsXy55KShhLmhhbmRsZUV2ZW50LGEpO2Vsc2UgdGhyb3cgRXJyb3IoInhhIik7cmV0dXJuIE51bWJlcihiKT4yMTQ3NDgzNjQ3Py0xOl8udi5zZXRUaW1lb3V0KGEsYnx8MCl9O3ZhciBycz1mdW5jdGlvbigpe2lmKF8uWmMpe3ZhciBhPS9XaW5kb3dzIE5UIChbMC05Ll0rKS87cmV0dXJuKGE9YS5leGVjKF8uVGEoKSkpP2FbMV06IjAifXJldHVybiBfLlljPyhhPS8xWzB8MV1bXy5dWzAtOV8uXSsvLChhPWEuZXhlYyhfLlRhKCkpKT9hWzBdLnJlcGxhY2UoL18vZywiLiIpOiIxMCIpOl8uJGM/KGE9L0FuZHJvaWRccysoW15cKTtdKykoXCl8OykvLChhPWEuZXhlYyhfLlRhKCkpKT9hWzFdOiIiKTpfLmFkfHxfLmJkfHxfLmNkPyhhPS8oPzppUGhvbmV8Q1BVKVxzK09TXHMrKFxTKykvLChhPWEuZXhlYyhfLlRhKCkpKT9hWzFdLnJlcGxhY2UoL18vZywiLiIpOiIiKToiIn0oKTt2YXIgc3M9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5leGVjKF8uVGEoKSkpP2FbMV06IiJ9LHRzPWZ1bmN0aW9uKCl7aWYoXy5KaClyZXR1cm4gc3MoL0ZpcmVmb3hcLyhbMC05Ll0rKS8pO2lmKF8uU2N8fF8uVGN8fF8uUmMpcmV0dXJuIF8uamQ7aWYoXy5OaCl7aWYoXy4kYSgpfHxfLmFiKCkpe3ZhciBhPXNzKC9DcmlPU1wvKFswLTkuXSspLyk7aWYoYSlyZXR1cm4gYX1yZXR1cm4gc3MoL0Nocm9tZVwvKFswLTkuXSspLyl9aWYoXy5PaCYmIV8uJGEoKSlyZXR1cm4gc3MoL1ZlcnNpb25cLyhbMC05Ll0rKS8pO2lmKF8uS2h8fF8uTGgpe2lmKGE9L1ZlcnNpb25cLyhcUyspLipNb2JpbGVcLyhcUyspLy5leGVjKF8uVGEoKSkpcmV0dXJuIGFbMV0rIi4iK2FbMl19ZWxzZSBpZihfLk1oKXJldHVybihhPXNzKC9BbmRyb2lkXHMrKFswLTkuXSspLykpP2E6c3MoL1ZlcnNpb25cLyhbMC05Ll0rKS8pO3JldHVybiIifSgpO18uRyhZbSxfLmhiKTtfLm09WW0ucHJvdG90eXBlO18ubS5FYT1udWxsO18ubS5EYz0hMDtfLm0uTmU9bnVsbDtfLm0uemI9ITE7Xy5tLlpkPS0xO18ubS5VYj0idG9nZ2xlX2Rpc3BsYXkiO18ubS5IPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRWF9O18ubS5RYj1mdW5jdGlvbihhKXtpZih0aGlzLnpiKXRocm93IEVycm9yKCJ5YSIpO3RoaXMuRWE9YX07Xy5tLnJlPWZ1bmN0aW9uKGEpe2lmKHRoaXMuemIpdGhyb3cgRXJyb3IoInlhIik7dGhpcy5EYz1hfTtfLm0uaXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuemJ9OwpfLm0ucGE9ZnVuY3Rpb24oYSl7dGhpcy5MJiZ0aGlzLkwuc3RvcCgpO3RoaXMuSyYmdGhpcy5LLnN0b3AoKTtpZihhKXtpZighdGhpcy56YiYmdGhpcy51ZCgpKXtpZighdGhpcy5FYSl0aHJvdyBFcnJvcigiemEiKTt0aGlzLnBiKCk7YT1fLnNkKHRoaXMuRWEpO3RoaXMuRGMmJih0aGlzLmwuTihhLCJtb3VzZWRvd24iLHRoaXMuTmYsITApLHRoaXMubC5OKGEsImJsdXIiLHRoaXMuRWkpKTt0aGlzLlViPT0idG9nZ2xlX2Rpc3BsYXkiPyh0aGlzLkVhLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiLG1wKHRoaXMuRWEsITApKTp0aGlzLlViPT0ibW92ZV9vZmZzY3JlZW4iJiZ0aGlzLnBiKCk7dGhpcy56Yj0hMDt0aGlzLlpkPURhdGUubm93KCk7dGhpcy5MPyhfLk5kKHRoaXMuTCwiZW5kIix0aGlzLk9mLCExLHRoaXMpLHRoaXMuTC5wbGF5KCkpOnRoaXMuT2YoKX19ZWxzZSB1cyh0aGlzKX07Xy5tLnBiPWZ1bmN0aW9uKCl7fTsKdmFyIHVzPWZ1bmN0aW9uKGEsYil7YS56YiYmYS5kaXNwYXRjaEV2ZW50KHt0eXBlOiJiZWZvcmVoaWRlIix0YXJnZXQ6Yn0pJiYoYS5sJiZfLlJmKGEubCksYS56Yj0hMSxhLks/KF8uTmQoYS5LLCJlbmQiLF8uWmooYS5TZSxiKSwhMSxhKSxhLksucGxheSgpKTphLlNlKGIpKX07Xy5tPVltLnByb3RvdHlwZTtfLm0uU2U9ZnVuY3Rpb24oYSl7dGhpcy5VYj09InRvZ2dsZV9kaXNwbGF5Ij90aGlzLmFpKCk6dGhpcy5VYj09Im1vdmVfb2Zmc2NyZWVuIiYmKHRoaXMuRWEuc3R5bGUudG9wPSItMTAwMDBweCIpO3RoaXMuZ2UoYSl9O18ubS5haT1mdW5jdGlvbigpe3RoaXMuRWEuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjttcCh0aGlzLkVhLCExKX07Xy5tLnVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudCgiYmVmb3Jlc2hvdyIpfTtfLm0uT2Y9ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoInNob3ciKX07Cl8ubS5nZT1mdW5jdGlvbihhKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImhpZGUiLHRhcmdldDphfSl9O18ubS5OZj1mdW5jdGlvbihhKXthPWEudGFyZ2V0O18uQmQodGhpcy5FYSxhKXx8dnModGhpcyxhKXx8RGF0ZS5ub3coKS10aGlzLlpkPDE1MHx8dXModGhpcyxhKX07Xy5tLkVpPWZ1bmN0aW9uKGEpe3ZhciBiPV8uc2QodGhpcy5FYSk7aWYodHlwZW9mIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPSJ1bmRlZmluZWQiKXtpZihhPWIuYWN0aXZlRWxlbWVudCwhYXx8Xy5CZCh0aGlzLkVhLGEpfHxhLnRhZ05hbWU9PSJCT0RZInx8dnModGhpcyxhKSlyZXR1cm59ZWxzZSBpZihhLnRhcmdldCE9YilyZXR1cm47RGF0ZS5ub3coKS10aGlzLlpkPDE1MHx8dXModGhpcyl9O3ZhciB2cz1mdW5jdGlvbihhLGIpe3JldHVybiBfLnhjKGEuTmV8fFtdLGZ1bmN0aW9uKGMpe3JldHVybiBiPT09Y3x8Xy5CZChjLGIpfSl9OwpZbS5wcm90b3R5cGUuTT1mdW5jdGlvbigpe1ltLmVhLk0uY2FsbCh0aGlzKTt0aGlzLmwuZGlzcG9zZSgpO18ucGEodGhpcy5MKTtfLnBhKHRoaXMuSyk7ZGVsZXRlIHRoaXMuRWE7ZGVsZXRlIHRoaXMubDtkZWxldGUgdGhpcy5OZX07Xy5HKGJuLF8uaGIpO2JuLnByb3RvdHlwZS5oYW5kbGVFdmVudD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5kYihhLmcpO2IudHlwZT1hLnR5cGU9PSJmb2N1c2luInx8YS50eXBlPT0iZm9jdXMiPyJmb2N1c2luIjoiZm9jdXNvdXQiO3RoaXMuZGlzcGF0Y2hFdmVudChiKX07Ym4ucHJvdG90eXBlLk09ZnVuY3Rpb24oKXtibi5lYS5NLmNhbGwodGhpcyk7Xy5WZCh0aGlzLmgpO18uVmQodGhpcy5qKTtkZWxldGUgdGhpcy5nfTtjbi5wcm90b3R5cGUuaD1mdW5jdGlvbigpe307dmFyIHlzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoO2lmKGg9Yy5vZmZzZXRQYXJlbnQpe3ZhciBrPWgudGFnTmFtZT09IkhUTUwifHxoLnRhZ05hbWU9PSJCT0RZIjtpZigha3x8Y3AoaCwicG9zaXRpb24iKSE9InN0YXRpYyIpe3ZhciBsPWhwKGgpO2lmKCFrKXtrPSJydGwiPT1jcChoLCJkaXJlY3Rpb24iKTt2YXIgbjtpZihuPWspe249Xy5PaCYmTGwodHMsMTApPj0wO3ZhciBxO2lmKHE9Xy5kZClxPUxsKHJzLDEwKT49MDt2YXIgcD1fLk5oJiZMbCh0cyw4NSk+PTA7bj1fLlVjfHxufHxxfHxwfWs9bj8taC5zY3JvbGxMZWZ0OmsmJmNwKGgsIm92ZXJmbG93WCIpIT0idmlzaWJsZSI/aC5zY3JvbGxXaWR0aC1oLmNsaWVudFdpZHRoLWguc2Nyb2xsTGVmdDpoLnNjcm9sbExlZnQ7bD1hbyhsLG5ldyB6bChrLGguc2Nyb2xsVG9wKSl9fX1oPWx8fG5ldyB6bDtsPWhwKGEpO2s9bHAoYSk7bD1uZXcgd20obC54LGwueSxrLndpZHRoLGsuaGVpZ2h0KTtpZihrPWlwKGEpKXA9Cm5ldyB3bShrLmxlZnQsay50b3Asay5yaWdodC1rLmxlZnQsay5ib3R0b20tay50b3ApLGs9TWF0aC5tYXgobC5sZWZ0LHAubGVmdCksbj1NYXRoLm1pbihsLmxlZnQrbC53aWR0aCxwLmxlZnQrcC53aWR0aCksazw9biYmKHE9TWF0aC5tYXgobC50b3AscC50b3ApLHA9TWF0aC5taW4obC50b3ArbC5oZWlnaHQscC50b3ArcC5oZWlnaHQpLHE8PXAmJihsLmxlZnQ9ayxsLnRvcD1xLGwud2lkdGg9bi1rLGwuaGVpZ2h0PXAtcSkpO249Xy5sYihhKTtrPV8ubGIoYyk7bi5nIT1rLmcmJihuPW4uZy5ib2R5LGs9anAobixrLmcuZGVmYXVsdFZpZXcpLGs9YW8oayxocChuKSksbC5sZWZ0Kz1rLngsbC50b3ArPWsueSk7YT13cyhhLGIpO2I9bC5sZWZ0O2EmND9iKz1sLndpZHRoOmEmMiYmKGIrPWwud2lkdGgvMik7Yj1uZXcgemwoYixsLnRvcCsoYSYxP2wuaGVpZ2h0OjApKTtiPWFvKGIsaCk7ZSYmKGIueCs9KGEmND8tMToxKSplLngsYi55Kz0oYSYxPy0xOjEpKmUueSk7dmFyIHI7ZyYmKHI9CmlwKGMpKSYmKHIudG9wLT1oLnksci5yaWdodC09aC54LHIuYm90dG9tLT1oLnksci5sZWZ0LT1oLngpO3JldHVybiB4cyhiLGMsZCxmLHIsZyl9LHhzPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXthPURuKGEpO3ZhciBnPXdzKGIsYyk7Yz1scChiKTt2YXIgaD1uZXcgXy5DYShjLndpZHRoLGMuaGVpZ2h0KTthPURuKGEpO2g9bmV3IF8uQ2EoaC53aWR0aCxoLmhlaWdodCk7dmFyIGs9MDtpZihkfHxnIT0wKWcmND9hLngtPWgud2lkdGgrKGQ/ZC5yaWdodDowKTpnJjI/YS54LT1oLndpZHRoLzI6ZCYmKGEueCs9ZC5sZWZ0KSxnJjE/YS55LT1oLmhlaWdodCsoZD9kLmJvdHRvbTowKTpkJiYoYS55Kz1kLnRvcCk7ZiYmKGU/KGQ9aCxnPTAsKGYmNjUpPT02NSYmKGEueDxlLmxlZnR8fGEueD49ZS5yaWdodCkmJihmJj0tMiksKGYmMTMyKT09MTMyJiYoYS55PGUudG9wfHxhLnk+PWUuYm90dG9tKSYmKGYmPS01KSxhLng8ZS5sZWZ0JiZmJjEmJihhLng9ZS5sZWZ0LGd8PTEpLGYmMTYmJihrPQphLngsYS54PGUubGVmdCYmKGEueD1lLmxlZnQsZ3w9NCksYS54K2Qud2lkdGg+ZS5yaWdodCYmKGQud2lkdGg9TWF0aC5taW4oZS5yaWdodC1hLngsaytkLndpZHRoLWUubGVmdCksZC53aWR0aD1NYXRoLm1heChkLndpZHRoLDApLGd8PTQpKSxhLngrZC53aWR0aD5lLnJpZ2h0JiZmJjEmJihhLng9TWF0aC5tYXgoZS5yaWdodC1kLndpZHRoLGUubGVmdCksZ3w9MSksZiYyJiYoZ3w9KGEueDxlLmxlZnQ/MTY6MCl8KGEueCtkLndpZHRoPmUucmlnaHQ/MzI6MCkpLGEueTxlLnRvcCYmZiY0JiYoYS55PWUudG9wLGd8PTIpLGYmMzImJihrPWEueSxhLnk8ZS50b3AmJihhLnk9ZS50b3AsZ3w9OCksYS55K2QuaGVpZ2h0PmUuYm90dG9tJiYoZC5oZWlnaHQ9TWF0aC5taW4oZS5ib3R0b20tYS55LGsrZC5oZWlnaHQtZS50b3ApLGQuaGVpZ2h0PU1hdGgubWF4KGQuaGVpZ2h0LDApLGd8PTgpKSxhLnkrZC5oZWlnaHQ+ZS5ib3R0b20mJmYmNCYmKGEueT1NYXRoLm1heChlLmJvdHRvbS1kLmhlaWdodCwKZS50b3ApLGd8PTIpLGYmOCYmKGd8PShhLnk8ZS50b3A/NjQ6MCl8KGEueStkLmhlaWdodD5lLmJvdHRvbT8xMjg6MCkpLGU9Zyk6ZT0yNTYsaz1lKTtlPW5ldyB3bSgwLDAsMCwwKTtlLmxlZnQ9YS54O2UudG9wPWEueTtlLndpZHRoPWgud2lkdGg7ZS5oZWlnaHQ9aC5oZWlnaHQ7YT1rO2lmKGEmNDk2KXJldHVybiBhO2VwKGIsbmV3IHpsKGUubGVmdCxlLnRvcCkpO2g9bmV3IF8uQ2EoZS53aWR0aCxlLmhlaWdodCk7Xy55YyhjLGgpfHxwcChiLGgsImJvcmRlci1ib3giKTtyZXR1cm4gYX0sd3M9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYiY4JiYicnRsIj09Y3AoYSwiZGlyZWN0aW9uIik/Yl40OmIpJi05fTtfLkcoZG4sY24pO2RuLnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEsYixjKXt5cyh0aGlzLmVsZW1lbnQsdGhpcy5qLGEsYix2b2lkIDAsYyx0aGlzLmwpfTtfLkcoZW4sY24pO2VuLnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEsYixjKXt5cygoYT9fLnNkKGEpOmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQsMCxhLGIsdGhpcy5nLGMsbnVsbCl9O18uRyhmbixZbSk7Zm4ucHJvdG90eXBlLnBiPWZ1bmN0aW9uKCl7aWYodGhpcy5vKXt2YXIgYT0hdGhpcy5pc1Zpc2libGUoKSYmdGhpcy5VYiE9Im1vdmVfb2Zmc2NyZWVuIixiPXRoaXMuSCgpO2EmJihiLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsbXAoYiwhMCkpO3RoaXMuby5oKGIsOCx0aGlzLlhiKTthJiZtcChiLCExKX19O18uRyhPLGZuKTt2YXIgenM9W107Xy5tPU8ucHJvdG90eXBlO18ubS55YT1udWxsO18ubS5jbGFzc05hbWU9IlZJcGdKZC1zdUVPZGMiO18ubS5aZj01MDA7Xy5tLndmPTA7Xy5tLmF0dGFjaD1mdW5jdGlvbihhKXthPWduKGEpO3RoaXMuQS5hZGQoYSk7Xy54KGEsIm1vdXNlb3ZlciIsdGhpcy5VZCwhMSx0aGlzKTtfLngoYSwibW91c2VvdXQiLHRoaXMuTmIsITEsdGhpcyk7Xy54KGEsIm1vdXNlbW92ZSIsdGhpcy5nYiwhMSx0aGlzKTtfLngoYSwiZm9jdXMiLHRoaXMuZmIsITEsdGhpcyk7Xy54KGEsImJsdXIiLHRoaXMuTmIsITEsdGhpcyl9O18ubS5kZXRhY2g9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczthPyhhPWduKGEpLEFzKHRoaXMsYSksdGhpcy5BLmRlbGV0ZShhKSk6KHRoaXMuQS5mb3JFYWNoKGZ1bmN0aW9uKGMpe0FzKGIsYyl9KSx0aGlzLkEuY2xlYXIoKSl9Owp2YXIgQXM9ZnVuY3Rpb24oYSxiKXtfLlVkKGIsIm1vdXNlb3ZlciIsYS5VZCwhMSxhKTtfLlVkKGIsIm1vdXNlb3V0IixhLk5iLCExLGEpO18uVWQoYiwibW91c2Vtb3ZlIixhLmdiLCExLGEpO18uVWQoYiwiZm9jdXMiLGEuZmIsITEsYSk7Xy5VZChiLCJibHVyIixhLk5iLCExLGEpfTtPLnByb3RvdHlwZS5LYT1mdW5jdGlvbihhKXtfLkNkKHRoaXMuSCgpLGEpfTsKTy5wcm90b3R5cGUuUWI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5IKCk7YiYmXy5BZChiKTtPLmVhLlFiLmNhbGwodGhpcyxhKTthPyhiPXRoaXMuRy5nLmJvZHksYi5pbnNlcnRCZWZvcmUoYSxiLmxhc3RDaGlsZCksXy5wYSh0aGlzLkMpLHRoaXMuQz1uZXcgYm4odGhpcy5IKCkpLF8uYWsodGhpcyxfLlpqKF8ucGEsdGhpcy5DKSksXy54KHRoaXMuQywiZm9jdXNpbiIsdGhpcy5ELHZvaWQgMCx0aGlzKSxfLngodGhpcy5DLCJmb2N1c291dCIsdGhpcy5ULHZvaWQgMCx0aGlzKSk6KF8ucGEodGhpcy5DKSx0aGlzLkM9bnVsbCl9O08ucHJvdG90eXBlLnZkPWZ1bmN0aW9uKCl7cmV0dXJuIEVvKHRoaXMuSCgpKX07dmFyIEJzPWZ1bmN0aW9uKGEpe3JldHVybiBhLkY/YS5pc1Zpc2libGUoKT80OjE6YS5JPzM6YS5pc1Zpc2libGUoKT8yOjB9OwpPLnByb3RvdHlwZS51ZD1mdW5jdGlvbigpe2lmKCFZbS5wcm90b3R5cGUudWQuY2FsbCh0aGlzKSlyZXR1cm4hMTtpZih0aGlzLmcpZm9yKHZhciBhLGI9MDthPXpzW2JdO2IrKylfLkJkKGEuSCgpLHRoaXMuZyl8fGEucGEoITEpO18udWEoenMsdGhpcyk7YT10aGlzLkgoKTthLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZTt0aGlzLkQoKTtfLngoYSwibW91c2VvdmVyIix0aGlzLlVjLCExLHRoaXMpO18ueChhLCJtb3VzZW91dCIsdGhpcy5UYywhMSx0aGlzKTtDcyh0aGlzKTtyZXR1cm4hMH07Ck8ucHJvdG90eXBlLmdlPWZ1bmN0aW9uKCl7Xy52YSh6cyx0aGlzKTtmb3IodmFyIGE9dGhpcy5IKCksYixjPTA7Yj16c1tjXTtjKyspYi5nJiZfLkJkKGEsYi5nKSYmYi5wYSghMSk7dGhpcy5IYiYmdGhpcy5IYi5UKCk7Xy5VZChhLCJtb3VzZW92ZXIiLHRoaXMuVWMsITEsdGhpcyk7Xy5VZChhLCJtb3VzZW91dCIsdGhpcy5UYywhMSx0aGlzKTt0aGlzLmc9dm9pZCAwO0JzKHRoaXMpPT0wJiYodGhpcy5QPSExKTtZbS5wcm90b3R5cGUuZ2UuY2FsbCh0aGlzKX07Ty5wcm90b3R5cGUuZGU9ZnVuY3Rpb24oYSxiKXt0aGlzLmc9PWEmJnRoaXMuQS5oYXModGhpcy5nKSYmKHRoaXMuUHx8IXRoaXMuSWQ/KHRoaXMucGEoITEpLHRoaXMuaXNWaXNpYmxlKCl8fCh0aGlzLmc9YSx0aGlzLm89Ynx8bmV3IERzKERuKHRoaXMucmEpKSx0aGlzLmlzVmlzaWJsZSgpJiZ0aGlzLnBiKCksdGhpcy5wYSghMCkpKTp0aGlzLmc9dm9pZCAwKTt0aGlzLkY9dm9pZCAwfTsKTy5wcm90b3R5cGUuRmM9ZnVuY3Rpb24oYSl7dGhpcy5JPXZvaWQgMDtpZihhPT10aGlzLmcpe2E9dGhpcy5HO3ZhciBiPWEuZzt0cnl7dmFyIGM9YiYmYi5hY3RpdmVFbGVtZW50O3ZhciBkPWMmJmMubm9kZU5hbWU/YzpudWxsfWNhdGNoKGUpe2Q9bnVsbH1kPWQmJnRoaXMuSCgpJiZhLmNvbnRhaW5zKHRoaXMuSCgpLGQpO3RoaXMueWEhPW51bGwmJih0aGlzLnlhPT10aGlzLkgoKXx8dGhpcy5BLmhhcyh0aGlzLnlhKSl8fGR8fHRoaXMuSWEmJnRoaXMuSWEueWF8fHRoaXMucGEoITEpfX07dmFyIEVzPWZ1bmN0aW9uKGEsYil7dmFyIGM9S24oYS5HLmcpO2EucmEueD1iLmNsaWVudFgrYy54O2EucmEueT1iLmNsaWVudFkrYy55fTtPLnByb3RvdHlwZS5VZD1mdW5jdGlvbihhKXt2YXIgYj1Gcyh0aGlzLGEudGFyZ2V0KTt0aGlzLnlhPWI7dGhpcy5EKCk7YiE9dGhpcy5nJiYodGhpcy5nPWIsR3ModGhpcyxiKSxIcyh0aGlzKSxFcyh0aGlzLGEpKX07CnZhciBGcz1mdW5jdGlvbihhLGIpe3RyeXtmb3IoO2ImJiFhLkEuaGFzKGIpOyliPWIucGFyZW50Tm9kZTtyZXR1cm4gYn1jYXRjaChjKXtyZXR1cm4gbnVsbH19O08ucHJvdG90eXBlLmdiPWZ1bmN0aW9uKGEpe0VzKHRoaXMsYSk7dGhpcy5QPSEwfTtPLnByb3RvdHlwZS5mYj1mdW5jdGlvbihhKXt0aGlzLnlhPWE9RnModGhpcyxhLnRhcmdldCk7dGhpcy5QPSEwO2lmKHRoaXMuZyE9YSl7dGhpcy5nPWE7dmFyIGI9bmV3IElzKHRoaXMueWEpO3RoaXMuRCgpO0dzKHRoaXMsYSxiKTtIcyh0aGlzKX19O3ZhciBIcz1mdW5jdGlvbihhKXtpZihhLmcpZm9yKHZhciBiLGM9MDtiPXpzW2NdO2MrKylfLkJkKGIuSCgpLGEuZykmJihiLklhPWEsYS5IYj1iKX07Ck8ucHJvdG90eXBlLk5iPWZ1bmN0aW9uKGEpe3ZhciBiPUZzKHRoaXMsYS50YXJnZXQpLGM9RnModGhpcyxhLnJlbGF0ZWRUYXJnZXQpO2IhPWMmJihiPT10aGlzLnlhJiYodGhpcy55YT1udWxsKSxDcyh0aGlzKSx0aGlzLlA9ITEsIXRoaXMuaXNWaXNpYmxlKCl8fGEucmVsYXRlZFRhcmdldCYmXy5CZCh0aGlzLkgoKSxhLnJlbGF0ZWRUYXJnZXQpP3RoaXMuZz12b2lkIDA6dGhpcy5UKCkpfTtPLnByb3RvdHlwZS5VYz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuSCgpO3RoaXMueWEhPWEmJih0aGlzLkQoKSx0aGlzLnlhPWEpfTtPLnByb3RvdHlwZS5UYz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLkgoKTt0aGlzLnlhIT1ifHxhLnJlbGF0ZWRUYXJnZXQmJl8uQmQoYixhLnJlbGF0ZWRUYXJnZXQpfHwodGhpcy55YT1udWxsLHRoaXMuVCgpKX07CnZhciBHcz1mdW5jdGlvbihhLGIsYyl7YS5GfHwoYS5GPXFzKCgwLF8ueSkoYS5kZSxhLGIsYyksYS5aZikpfSxDcz1mdW5jdGlvbihhKXthLkYmJihfLnYuY2xlYXJUaW1lb3V0KGEuRiksYS5GPXZvaWQgMCl9O08ucHJvdG90eXBlLlQ9ZnVuY3Rpb24oKXtCcyh0aGlzKT09MiYmKHRoaXMuST1xcygoMCxfLnkpKHRoaXMuRmMsdGhpcyx0aGlzLmcpLHRoaXMud2YpKX07Ty5wcm90b3R5cGUuRD1mdW5jdGlvbigpe3RoaXMuSSYmKF8udi5jbGVhclRpbWVvdXQodGhpcy5JKSx0aGlzLkk9dm9pZCAwKX07Ty5wcm90b3R5cGUuTT1mdW5jdGlvbigpe3RoaXMucGEoITEpO0NzKHRoaXMpO3RoaXMuZGV0YWNoKCk7dGhpcy5IKCkmJl8uQWQodGhpcy5IKCkpO3RoaXMueWE9bnVsbDtkZWxldGUgdGhpcy5HO08uZWEuTS5jYWxsKHRoaXMpfTt2YXIgRHM9ZnVuY3Rpb24oYSxiKXtlbi5jYWxsKHRoaXMsYSxiKX07Xy5HKERzLGVuKTsKRHMucHJvdG90eXBlLmg9ZnVuY3Rpb24oYSxiLGMpe2I9aXAoKGE/Xy5zZChhKTpkb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50KTtjPWM/bmV3IHZtKGMudG9wKzEwLGMucmlnaHQsYy5ib3R0b20sYy5sZWZ0KzEwKTpuZXcgdm0oMTAsMCwwLDEwKTt4cyh0aGlzLmcsYSw4LGMsYiw5KSY0OTYmJnhzKHRoaXMuZyxhLDgsYyxiLDUpfTt2YXIgSXM9ZnVuY3Rpb24oYSl7ZG4uY2FsbCh0aGlzLGEsNSl9O18uRyhJcyxkbik7SXMucHJvdG90eXBlLmg9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW5ldyB6bCgxMCwwKTt5cyh0aGlzLmVsZW1lbnQsdGhpcy5qLGEsYixkLGMsOSkmNDk2JiZ5cyh0aGlzLmVsZW1lbnQsNCxhLDEsZCxjLDUpfTt2YXIgSnM9ZnVuY3Rpb24oKXtPLmNhbGwodGhpcyk7dGhpcy5sYT1udWxsO3RoaXMuUj1uZXcgXy5IYih0aGlzKTt0aGlzLkI9dGhpcy5qPXRoaXMuaD10aGlzLndhPW51bGw7dGhpcy5PPSEwfTtfLkIoSnMsTyk7Xy5tPUpzLnByb3RvdHlwZTtfLm0ua2E9ZnVuY3Rpb24oKXt0aGlzLk89ITE7dmFyIGE9Xy54Zi50ZXN0KG9xKT8icnRsIjoibHRyIjt0aGlzLlFiKGttKHBzLHtVbDpFcSxPazpDcSxSbDp4cSxkaXI6YSxjajpJcX0pKTt0aGlzLmNsYXNzTmFtZSs9IiBWSXBnSmQteUFXTkViLUw3bGJrYiBza2lwdHJhbnNsYXRlIjsoYT0hKCF0aGlzLkgoKXx8IXRoaXMuQikpJiZ0aGlzLlIuTih3aW5kb3csInJlc2l6ZSIsKDAsXy55KSh0aGlzLnBiLHRoaXMpKTtyZXR1cm4gYX07Xy5tLmRlPWZ1bmN0aW9uKGEsYil7dGhpcy5sYT1hO08ucHJvdG90eXBlLmRlLmNhbGwodGhpcyxhLGIpO3RoaXMuSCgpLnN0eWxlLmRpc3BsYXk9ImJsb2NrIn07Cl8ubS5VZD1mdW5jdGlvbihhKXtpZighdGhpcy5PKXt2YXIgYj1Gcyh0aGlzLGEudGFyZ2V0KTt0aGlzLnlhPWI7dGhpcy5EKCk7YiE9dGhpcy5nPyh0aGlzLmc9YixHcyh0aGlzLGIpLEhzKHRoaXMpLEVzKHRoaXMsYSkpOkdzKHRoaXMsYil9fTtfLm0uTT1mdW5jdGlvbigpe3RoaXMuUiYmdGhpcy5SLmRpc3Bvc2UoKTt0aGlzLkI9dGhpcy5sYT10aGlzLlI9bnVsbDtPLnByb3RvdHlwZS5NLmNhbGwodGhpcyl9O18ubS5yZT1mdW5jdGlvbihhKXtpZih0aGlzLmlzVmlzaWJsZSgpKXthPSh0aGlzLkRjPWEpP3RoaXMubC5OOnRoaXMubC55Yzt2YXIgYj1fLnNkKHRoaXMuSCgpKTthLmNhbGwodGhpcy5sLGIsIm1vdXNlZG93biIsdGhpcy5OZiwhMCl9ZWxzZSBPLnByb3RvdHlwZS5yZS5jYWxsKHRoaXMsYSl9O18ubS5RYj1mdW5jdGlvbihhKXtPLnByb3RvdHlwZS5RYi5jYWxsKHRoaXMsYSk7YSYmKHRoaXMuQj12byhhKSl9OwpfLm0ucGI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1ocChkb2N1bWVudC5ib2R5KS55O2lmKHRoaXMubyl7KHRoaXMub3x8bnVsbCkuZy55Kz1jO08ucHJvdG90eXBlLnBiLmNhbGwodGhpcyk7dmFyIGQ9cGFyc2VJbnQodGhpcy5IKCkuc3R5bGUubGVmdCwxMCk7YT1wYXJzZUludCh0aGlzLkgoKS5zdHlsZS50b3AsMTApLShhPzA6Yyk7YiYmKGI9dGhpcy5YYnx8e30sYS09Yi50b3B8fDEwLGQtPWIubGVmdHx8MTApO2EtPWM7KHRoaXMub3x8bnVsbCkuZy55PWE7KHRoaXMub3x8bnVsbCkuZy54PWQ7Yz1uZXcgemwoZCxhKTtlcCh0aGlzLkgoKSxjKX19O18ubS5wYT1mdW5jdGlvbihhKXtPLnByb3RvdHlwZS5wYS5jYWxsKHRoaXMsYSl9O18ubS5OYT1mdW5jdGlvbihhKXt0aGlzLmg9YX07Xy5tLm5hPWZ1bmN0aW9uKGEpe3RoaXMuaj1hfTtfLm0uS2E9ZnVuY3Rpb24oYSl7YT1hP18uQWMoYSk6IiI7dGhpcy5CP18uQ2QodGhpcy5CLGEpOk8ucHJvdG90eXBlLkthLmNhbGwodGhpcyxhKX07Cl8ubS5KYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmh9O18ubS5vYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmp9O18ubS52ZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkI/RW8odGhpcy5CKTpPLnByb3RvdHlwZS52ZC5jYWxsKHRoaXMpfTtfLm0uTmI9ZnVuY3Rpb24oYSl7dGhpcy5PfHxPLnByb3RvdHlwZS5OYi5jYWxsKHRoaXMsYSl9O18ubS5VYz1mdW5jdGlvbihhKXt0aGlzLk98fE8ucHJvdG90eXBlLlVjLmNhbGwodGhpcyxhKX07Xy5tLlRjPWZ1bmN0aW9uKGEpe3RoaXMuT3x8Ty5wcm90b3R5cGUuVGMuY2FsbCh0aGlzLGEpfTt2YXIgS3M9ZnVuY3Rpb24oKXt0aGlzLmg9bmV3IE1hcDt0aGlzLmc9V3EoY3IpfSxPcz1mdW5jdGlvbihhKXt2YXIgYj1nbigiZ29vZy1ndC10aHVtYlVwQnV0dG9uIiksYz1hLmgsZD1hLmc7Yi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXtpZihMcyhjKT09PU1zKWdyKGQpO2Vsc2V7dmFyIGU9ZHIoZCw1KTtlcihkLGUpO2ZyKGUsNSl9TnMoYyxNcyl9LCExKX0sUXM9ZnVuY3Rpb24oYSl7dmFyIGI9Z24oImdvb2ctZ3QtdGh1bWJEb3duQnV0dG9uIiksYz1hLmgsZD1hLmc7Yi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXtpZihMcyhjKT09PVBzKWdyKGQpO2Vsc2V7dmFyIGU9ZHIoZCw2KTtlcihkLGUpO2ZyKGUsNil9TnMoYyxQcyl9LCExKX0sVHM9ZnVuY3Rpb24oYSl7dmFyIGI9Z24oImdvb2ctZ3QtdHQiKSxjPWIuZGF0YXNldCxkPWduKCJnb29nLWd0LXZvdGluZ0lucHV0U3JjTGFuZyIpLGU9Z24oImdvb2ctZ3Qtdm90aW5nSW5wdXRUcmdMYW5nIiksCmY9Z24oImdvb2ctZ3Qtdm90aW5nSW5wdXRTcmNUZXh0IiksZz1nbigiZ29vZy1ndC12b3RpbmdJbnB1dFRyZ1RleHQiKSxoPXZvKCksaz1nbigiZ29vZy1ndC10cmFuc2xhdGlvbiIpLGw9YS5oLG49YS5nO3dpbmRvdy5kb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImdvb2ctZ3QtcG9wdXBTaG93biIsZnVuY3Rpb24ocSl7dmFyIHA9ZHIobiw0KTtlcihuLHApO2ZyKHAsNCk7cT1xLmRldGFpbDtwPVN0cmluZyhxLkdkKTtxPXEuWGk7Yy5pZD1wO3A9bC5nZXQocCl8fFJzO1NzKHApO2Iuc3R5bGUud2lkdGg9TWF0aC5tYXgoTWF0aC5taW4od2luZG93LmlubmVyV2lkdGgtMTYsNTM2KSwyODgpKyJweCI7cD1xLkphKCl8fCIiO3ZhciByPXEub2EoKXx8IiI7ZC52YWx1ZT1wO2UudmFsdWU9cjtmLnZhbHVlPXEudmQoKTtnLnZhbHVlPXEud2E7ayYmKGsuaW5uZXJUZXh0PXEud2EpO2IubGFuZz1vcTtoLmxhbmc9cDtrJiYoay5sYW5nPXIpO18ueGYudGVzdChwKSYmKGguY2xhc3NMaXN0LmFkZCgicnRsIiksCmguZGlyPSJydGwiKTtrJiZfLnhmLnRlc3QocikmJihrLmNsYXNzTGlzdC5hZGQoInJ0bCIpLGsuZGlyPSJydGwiKX0sITEpfSxTcz1mdW5jdGlvbihhKXt2YXIgYj1nbigiZ29vZy1ndC10aHVtYlVwQnV0dG9uIiksYz1nbigiZ29vZy1ndC10aHVtYlVwSWNvbiIpLGQ9Z24oImdvb2ctZ3QtdGh1bWJVcEljb25GaWxsZWQiKSxlPWduKCJnb29nLWd0LXRodW1iRG93bkJ1dHRvbiIpLGY9Z24oImdvb2ctZ3QtdGh1bWJEb3duSWNvbiIpLGc9Z24oImdvb2ctZ3QtdGh1bWJEb3duSWNvbkZpbGxlZCIpO2Iuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpO2Muc3R5bGUuZGlzcGxheT0iIjtkLnN0eWxlLmRpc3BsYXk9Im5vbmUiO2Uuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpO2Yuc3R5bGUuZGlzcGxheT0iIjtnLnN0eWxlLmRpc3BsYXk9Im5vbmUiO3N3aXRjaChhKXtjYXNlIE1zOmIuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCJ0cnVlIik7Yy5zdHlsZS5kaXNwbGF5PQoibm9uZSI7ZC5zdHlsZS5kaXNwbGF5PSIiO2JyZWFrO2Nhc2UgUHM6ZS5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsInRydWUiKSxmLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGcuc3R5bGUuZGlzcGxheT0iIn1nbigiZ29vZy1ndC12b3RpbmdJbnB1dFZvdGUiKS52YWx1ZT1hfSxMcz1mdW5jdGlvbihhKXt2YXIgYj1nbigiZ29vZy1ndC10dCIpLmRhdGFzZXQ7cmV0dXJuIGEuZ2V0KGIuaWQpfSxOcz1mdW5jdGlvbihhLGIpe0xzKGEpPT09YiYmKGI9UnMpO1NzKGIpO3ZhciBjPWduKCJnb29nLWd0LXR0IikuZGF0YXNldDthLnNldChjLmlkLGIpO2duKCJnb29nLWd0LXZvdGluZ0Zvcm0iKS5zdWJtaXQoKX0sUnM9KDApLnRvU3RyaW5nKCksTXM9KDEpLnRvU3RyaW5nKCksUHM9KDIpLnRvU3RyaW5nKCk7dmFyIFVzPWZ1bmN0aW9uKGEpe3RoaXMuQT1hO3RoaXMubD10aGlzLmg9dGhpcy5vPXRoaXMuaj0tMTt0aGlzLmc9ITE7dGhpcy5DPTA7dGhpcy5EPSIiO3RoaXMuRj0wfTtVcy5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5nKXt0aGlzLmc9ITA7dmFyIGE9W10sYjtmb3IoYj0wO2I8MTU7YisrKWFbYl09WHFbMHxNYXRoLnJhbmRvbSgpKjYyXTt0aGlzLkQ9YS5qb2luKCIiKTt0aGlzLkM9MDt0aGlzLmw9dGhpcy5oPXRoaXMubz10aGlzLmo9LTE7dGhpcy5GPURhdGUubm93KCk7cXModGhpcy5CLDFFNCx0aGlzKX19O1VzLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5nJiYodGhpcy5nPSExLFZzKHRoaXMpKX07VXMucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXt0aGlzLmcmJihWcyh0aGlzKSxxcyh0aGlzLkIsMUUzLHRoaXMpKX07CnZhciBWcz1mdW5jdGlvbihhKXt2YXIgYj1hLkEubCxjPWEuQS5BLGQ9YS5BLmosZT1hLkEubztpZihhLmohPWJ8fGEubyE9Y3x8YS5oIT1kfHxhLmwhPWUpe3ZhciBmPXt9O2YuY3Q9YjtmLmN2PWM7Zi5jdHM9ZDtmLmN2cz1lO2Yuc2lkPWEuRDtmLnNlcT1hLkMrKztmLnRhdD1EYXRlLm5vdygpLWEuRjtpZihhLmo+PTB8fGEubz49MHx8YS5oPj0wfHxhLmw+PTApZi5wdD1hLmosZi5wdj1hLm8sZi5wdHM9YS5oLGYucHZzPWEubDtRbSgidGVfdiIsZik7YS5qPWI7YS5vPWM7YS5oPWQ7YS5sPWV9fTt2YXIgV3M9ZnVuY3Rpb24oKXt0aGlzLm89dGhpcy5qPXRoaXMuQT10aGlzLmw9MDt0aGlzLmc9W107dGhpcy5oPV8udi5JbnRlcnNlY3Rpb25PYnNlcnZlciE9bnVsbD9uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKDAsXy55KSh0aGlzLkIsdGhpcykpOm51bGx9O1dzLnByb3RvdHlwZS5hdHRhY2g9ZnVuY3Rpb24oYSxiKXt0aGlzLmorPWI7dmFyIGM9dGhpcy5nLmxlbmd0aDt0aGlzLmcucHVzaChiKTtmb3IoYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgZD1hW2JdO3lvKGQpPyhkW1hzXT1jLHRoaXMubCs9RW8oZCkubGVuZ3RoLHRoaXMuaCYmdGhpcy5oLm9ic2VydmUoZCkpOnRoaXMuRmYoZC5ub2RlVHlwZSl9fTtXcy5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgYz1hW2JdO3lvKGMpPyhjW1hzXT12b2lkIDAsdGhpcy5oJiZ0aGlzLmgudW5vYnNlcnZlKGMpKTp0aGlzLkZmKGMubm9kZVR5cGUpfX07CldzLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMubz10aGlzLmo9dGhpcy5BPXRoaXMubD0wO3RoaXMuZz1bXX07V3MucHJvdG90eXBlLkI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl07aWYoYy5pbnRlcnNlY3Rpb25SYXRpbz4wJiZjLnRhcmdldFtYc10hPW51bGwpe3RoaXMuQSs9RW8oYy50YXJnZXQpLmxlbmd0aDt2YXIgZD1jLnRhcmdldFtYc107dGhpcy5vKz10aGlzLmdbZF07dGhpcy5nW2RdPTA7ZGVsZXRlIGMudGFyZ2V0W1hzXX19fTtEci5hdHRhY2goMzY1NDYsV3MucHJvdG90eXBlLHtGZjoxfSk7dmFyIFhzPSJfZ3RfIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMik7dmFyIFlzPXt9O1lzLmFkZD1rbjtZcy5Eaz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9aG4oYSk7dHlwZW9mIGI9PT0ic3RyaW5nIj9fLnZhKGQsYik6QXJyYXkuaXNBcnJheShiKSYmKGQ9bG4oZCxiKSk7dHlwZW9mIGMhPT0ic3RyaW5nInx8Xy50YShkLGMpP0FycmF5LmlzQXJyYXkoYykmJmpuKGQsYyk6ZC5wdXNoKGMpO2EuY2xhc3NOYW1lPWQuam9pbigiICIpfTtZcy5lbmFibGU9b247WXMuZ2V0PWhuO1lzLmhhcz1ubjtZcy5yZW1vdmU9bW47WXMuc2V0PWZ1bmN0aW9uKGEsYil7YS5jbGFzc05hbWU9Yn07WXMuaG09ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1obihhKSxlPSExLGY9MDtmPGQubGVuZ3RoO2YrKylkW2ZdPT1iJiYoZC5zcGxpY2UoZi0tLDEpLGU9ITApO2UmJihkLnB1c2goYyksYS5jbGFzc05hbWU9ZC5qb2luKCIgIikpO3JldHVybiBlfTtZcy50b2dnbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz0hbm4oYSxiKTtvbihhLGIsYyk7cmV0dXJuIGN9O3ZhciBacz1mdW5jdGlvbihhKXtfLmhiLmNhbGwodGhpcyk7YT1hfHx7fTt0aGlzLmc9SmwoYSk7dGhpcy5nLmhjPWEuaGMhPT12b2lkIDA/YS5oYzoxO3RoaXMuZy52ZT0hIWEudmU7dGhpcy5nLmJoPXBhcnNlSW50KGEuYmgsMTApfHwzMDA7dGhpcy5nLnRyYWNrVmlzaWJpbGl0eT1hLnRyYWNrVmlzaWJpbGl0eXx8ITE7dGhpcy5nLmFwaUtleT1hLmFwaUtleXx8IiI7dGhpcy5DPTA7dGhpcy5sPXt9O3RoaXMuQj1udWxsO3RoaXMuRj10aGlzLkQ9IiI7dGhpcy5vPW5ldyBfLkhiKHRoaXMpO3RoaXMuQT10aGlzLmo9dGhpcy5oPW51bGw7dGhpcy5nLnRyYWNrVmlzaWJpbGl0eSYmXy52LkludGVyc2VjdGlvbk9ic2VydmVyIT1udWxsJiYodGhpcy5qPW5ldyBXcyx0aGlzLkE9bmV3IFVzKHRoaXMuaikpO3RoaXMuaD1uZXcgSnMoe1NpOnRoaXMuZy5TaX0pO3RoaXMuaC53Zj0zMDA7dGhpcy5oLlpmPTFFMzt0aGlzLmgucmUoITApO3RoaXMuby5OKHRoaXMuaCwic2hvdyIsKDAsXy55KSh0aGlzLm9nLAp0aGlzKSk7dGhpcy5vLk4odGhpcy5oLCJoaWRlIiwoMCxfLnkpKHRoaXMubmcsdGhpcykpO3RoaXMuaC5rYSgpO2E9bmV3IEtzO2duKCJnb29nLWd0LXRodW1iVXBCdXR0b24iKSYmKE9zKGEpLFFzKGEpLFRzKGEpKX07Xy5CKFpzLF8uaGIpO3ZhciAkcz1mdW5jdGlvbihhKXthLkEmJmEuQS5zdG9wKCk7Zm9yKHZhciBiIGluIGEubCl7dmFyIGM9YSxkPWMubFtiXTtpZihkKXtjLmomJmMuai5kZXRhY2goZC5BYSk7Zm9yKHZhciBlPTA7ZTxkLkFhLmxlbmd0aDsrK2UpZC5BYVtlXSYmYy5kZXRhY2goZC5BYVtlXSk7ZGVsZXRlIGMubFtiXX19YS5qJiZhLmoucmVzZXQoKX07Xy5tPVpzLnByb3RvdHlwZTtfLm0uYXR0YWNoPWZ1bmN0aW9uKGEsYil7YiYmKGIuR2Q9YSx0aGlzLmguYXR0YWNoKGIpKX07Xy5tLmRldGFjaD1mdW5jdGlvbihhKXthJiZ0aGlzLmguZGV0YWNoKGEpfTsKXy5tLm9nPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLmxhO2E9YT9hLkdkOnZvaWQgMDtpZihhIT09dm9pZCAwKXt2YXIgYj10aGlzLmxbYV07YXQodGhpcyx0aGlzLkIsITEpO3RoaXMuQj1hO2F0KHRoaXMsYSk7dGhpcy5oLk5hKGIuVGkpO3RoaXMuaC5uYShiLlZpKTt2YXIgYz1iLlo7dGhpcy5oLndhPWMmJl8uQWMoYyk7dGhpcy5oLkthKGIudGV4dCl9YT1uZXcgQ3VzdG9tRXZlbnQoImdvb2ctZ3QtcG9wdXBTaG93biIse2RldGFpbDp7R2Q6YSxYaTp0aGlzLmh9fSk7d2luZG93LmRvY3VtZW50LmJvZHkuZGlzcGF0Y2hFdmVudChhKX07Xy5tLm5nPWZ1bmN0aW9uKCl7YXQodGhpcyx0aGlzLkIsITEpfTtfLm0uTT1mdW5jdGlvbigpeyRzKHRoaXMpO3RoaXMuaCYmKHRoaXMuaC5kaXNwb3NlKCksdGhpcy5oPW51bGwpO3RoaXMubyYmKHRoaXMuby5kaXNwb3NlKCksdGhpcy5vPW51bGwpO18uaGIucHJvdG90eXBlLk0uY2FsbCh0aGlzKX07CnZhciBhdD1mdW5jdGlvbihhLGIsYyl7aWYoYT1hLmxbYl0pZm9yKGM9Y3x8dHlwZW9mIGM9PSJ1bmRlZmluZWQiLGI9MDtiPGEuQWEubGVuZ3RoOysrYilpZihhLkFhW2JdKVlzW2M/ImFkZCI6InJlbW92ZSJdKGEuQWFbYl0sIlZJcGdKZC15QVdORWItVklwZ0pkLWZtY21TLXNuNTRRIil9O3ZhciBidD1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYilpZihhW2JdJiZhW2JdLm5vZGUpcmV0dXJuIGFbYl0ubm9kZTtyZXR1cm4gbnVsbH0sZnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YnQoYSk7aWYoIWIpcmV0dXJuIG51bGw7dmFyIGM9W10sZD1bXSxlPVtdO2I9bmV3IGRzKGIsITApO3ZhciBmPWFbYS5sZW5ndGgtMV0ubm9kZSxnPTAsaD0hMTtkb3tiLm5leHQoKTt2YXIgaz1iLm5vZGUoKTtpZighaylicmVhazt2YXIgbD1iLmcuZyxuPWIuZGVwdGgoKTtmb3IobD09MSYmLS1uO2c8YS5sZW5ndGgmJiFhW2ddLm5vZGU7KSsrZztrPT1hW2ddLm5vZGV8fCFoJiZsPT0xJiYoayE9bnVsbCYmay5wcmV2aW91c1NpYmxpbmc9PW51bGw/MDohY3QoZHQoaykpKT8obD1ldChrKSxkLnB1c2goe25vZGU6bCxLYTpmdW5jdGlvbigpe319KSxlW2QubGVuZ3RoLTFdPW4say5wYXJlbnROb2RlJiZrLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGwsayksaz09YVtnXS5ub2RlJiYKKGNbZysrXT1kLmxlbmd0aC0xLGg9ITApKTpoPSExfXdoaWxlKGshPWYpO3JldHVybnt6ZTplLEdpOmMsZGk6ZH19LGN0PWZ1bmN0aW9uKGEpe3JldHVybiBhIT1udWxsJiZYclthLnRhZ05hbWVdfSxkdD1mdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiBudWxsO2ZvcihhPWEucHJldmlvdXNTaWJsaW5nO2EhPW51bGwmJmEhPW51bGwmJmEubm9kZVR5cGU9PTMmJl8uQWMoRW8oYSkpPT0iIjspYT1hLnByZXZpb3VzU2libGluZztyZXR1cm4gYX0sanQ9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe18uaGIuY2FsbCh0aGlzKTt0aGlzLmc9W107Zm9yKHZhciBnPTA7ZzxhLmxlbmd0aDsrK2cpdGhpcy5nLnB1c2goIm5vZGVUeXBlImluIGFbZ10/Z3QoYVtnXSk6YVtnXSksaHQoYVtnXS5ub2RlKTt0aGlzLmw9Yjt0aGlzLkQ9ZHx8MDt0aGlzLlI9ZXx8MDt0aGlzLkM9Yzt0aGlzLkI9Znx8bnVsbDt0aGlzLks9dGhpcy5HPXRoaXMuTD0hMTt0aGlzLm89W107dGhpcy5BPVtdO3RoaXMuaD1bXTsKdGhpcy5PPVtdO25ldyBfLkhiKHRoaXMpO3RoaXMuaj10aGlzLkk9ITF9LGd0O18uQihqdCxfLmhiKTsKdmFyIG10PWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiExO2lmKGEubm9kZVR5cGUhPTN8fCFfLlNjKXJldHVybiBrdCBpbiBhJiYhIWFba3RdO2lmKCFhLnBhcmVudE5vZGUpcmV0dXJuITA7aWYoIShsdCBpbiBhLnBhcmVudE5vZGUpKXJldHVybiExO3ZhciBiPWEucGFyZW50Tm9kZVtsdF07aWYoIWJ8fCFiW2Eubm9kZVZhbHVlXSlyZXR1cm4hMTtiPWJbYS5ub2RlVmFsdWVdO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7KytjKWlmKGJbY109PWEpcmV0dXJuITA7cmV0dXJuITF9LG50PWZ1bmN0aW9uKGEsYil7aWYoIWEpcmV0dXJuIiI7aWYoYS50YWdOYW1lPT0iVElUTEUiKXJldHVybiBTdHJpbmcoZG9jdW1lbnQudGl0bGUpO2Eubm9kZVR5cGU9PTM/Yj0ibm9kZVZhbHVlIjpifHwoYj0idmFsdWUiKTtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0cmlidXRlKGIpP1N0cmluZyhhLmdldEF0dHJpYnV0ZShiKSk6dHlwZW9mIGFbYl09PT0ic3RyaW5nIj9TdHJpbmcoYVtiXSk6CiIifTtqdC5wcm90b3R5cGUubWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sfTsKdmFyIG90PWZ1bmN0aW9uKGEsYixjKXtiPXtQZjpiLGhlOmMsVTpbXX07YS5oLnB1c2goYik7cmV0dXJuIGJ9LHF0PWZ1bmN0aW9uKGEpe2lmKCFhLmomJmEuTCYmIWEuRyYmIWEuSyl7YS5HPSEwO3ZhciBiO2lmKGI9cHQoYS5nKSl7Yj1hLmc7dmFyIGM9YS5oO2lmKGIubGVuZ3RoPT0xJiZiWzBdJiZiWzBdLnhlKXtmb3IodmFyIGQ9W10sZT0wO2U8Yy5sZW5ndGg7KytlKWZvcih2YXIgZj0wO2Y8Y1tlXS5VLmxlbmd0aDsrK2YpZC5wdXNoKGNbZV0uVVtmXS5aKTtiWzBdLkthKGQuam9pbigiICIpLGJbMF0ubm9kZSk7Yj0hMH1lbHNlIGI9ITE7Yj0hYn1pZihiJiYoYj1mdChhLmcpKSl7YS5BPWIuR2k7YS5vPWIuZGk7ZD1hLmc7ZT1hLkE7Zj1hLm87dmFyIGc9Yi56ZTtjPVtdO2Zvcih2YXIgaD0wO2g8ZC5sZW5ndGg7KytoKWlmKGNbaF09W10sZFtoXS5ub2RlJiZlW2hdIT09dm9pZCAwKWZvcih2YXIgaz0wO2s8Zi5sZW5ndGg7KytrKWlmKCEoZ1trXT5nW2VbaF1dKSl7aWYoZ1trXT09CmdbZVtoXV0pe2lmKGZba10ubm9kZS5wYXJlbnROb2RlIT1mW2VbaF1dLm5vZGUucGFyZW50Tm9kZSljb250aW51ZX1lbHNle2Zvcih2YXIgbD1nW2VbaF1dLWdba10sbj1mW2VbaF1dLm5vZGUucGFyZW50Tm9kZTtsLS0mJm4mJm4hPWZba10ubm9kZS5wYXJlbnROb2RlOyluPW4ucGFyZW50Tm9kZTtpZihuIT1mW2tdLm5vZGUucGFyZW50Tm9kZSljb250aW51ZX1jW2hdLnB1c2goayl9ZD1hLmc7ZT1hLmg7Zj0tMTtmb3IoZz1lLmxlbmd0aC0xO2c+PTA7LS1nKWZvcihoPWVbZ10saz1oLlUubGVuZ3RoLTE7az49MDstLWspaWYobD1oLlVba10sIShsLlg8MCkmJmRbbC5YXSYmZFtsLlhdLm5vZGUpaWYoZjwwKWwuWGM9aXIoY1tsLlhdKSxmPWNbbC5YXVtjW2wuWF0ubGVuZ3RoLTFdO2Vsc2UgZm9yKG49Y1tsLlhdLmxlbmd0aC0xO24+PTA7LS1uKWlmKGNbbC5YXVtuXTw9Zil7bC5YYz1pcihjW2wuWF0uc2xpY2UoMCxuKzEpKTtmPWNbbC5YXVtuXTticmVha31mb3IoYz1lPTA7YzxhLmgubGVuZ3RoOysrYyl7ZD0KYS5oW2NdO2Y9YS5nO2c9ZDtoPWIuemU7az1hLkE7bD0iIjtmb3Iobj0wO248Zy5VLmxlbmd0aDsrK24pe3ZhciBxPWcuVVtuXTtsKz1xLlo7aWYocS5YPDApe3ZhciBwPS0xLHI9LTEsdD1rW2cuVVtuLTFdLlhdO3QhPT12b2lkIDAmJihwPWhbdF0pO248Zy5VLmxlbmd0aC0xJiYodD1rW2cuVVtuKzFdLlhdLHQhPT12b2lkIDAmJihyPWhbdF0pKTtpZihwPj0wfHxyPj0wKWE6aWYodD0ocDwwfHxyPHApJiZuPGcuVS5sZW5ndGgtMSxwPWYscj1xLHE9Zy5VW3Q/bisxOm4tMV0sIShxLlg+PXAubGVuZ3RofHxwW3EuWF0ubm9kZT09bnVsbCkpe3A9ci5aO3IuWj0iIjtpZigvXiArJC8udGVzdChwKSYmKHI9dD9xLlouY2hhckNvZGVBdCgwKTpxLlouY2hhckNvZGVBdChxLloubGVuZ3RoLTEpLDM1ODQ8PXImJnI8PTM3MTF8fDEyMjg4PD1yJiZyPD0xMjM1MXx8MTIzNTI8PXImJnI8PTEyNTQzfHwxMjc4NDw9ciYmcjw9MTI3OTl8fDE5OTY4PD1yJiZyPD00MDk1OXx8NjUyODA8PXImJnI8PQo2NTUxOSkpYnJlYWsgYTtxLlo9dD9wK3EuWjpxLlorcH19fWY9bDtnPWEuZztoPWQ7az1hLm87bD1iLnplO249YS5BO3E9W107Zm9yKHA9MDtwPGguVS5sZW5ndGgmJiEoZT49ay5sZW5ndGgpOysrcClpZihyPWguVVtwXSxyLlhjJiYhKHIuWDwwKSYmZ1tyLlhdLm5vZGUmJnIuWilpZihlPT1uW3IuWF18fGUgaW4gci5YYyYmKCEoZSsxIGluIHIuWGMpfHxlKzEhPW5bci5YXSkpe2lmKGtbZV0mJmtbZV0ubm9kZSl7dD1ldChrW2VdLm5vZGUpO3EucHVzaCh0KTtmb3IodmFyIEE9a1tlXS5ub2RlLEQ9bFtuW3IuWF1dLWxbZV0sRT10LGJhPWdbci5YXS5ub2RlLnBhcmVudE5vZGUsWj1FO2JhJiZELS07KVo9YmEuY2xvbmVOb2RlKCExKSxaLmFwcGVuZENoaWxkKEUpLGJhPWJhLnBhcmVudE5vZGUsRT1aO0EuYXBwZW5kQ2hpbGQoWik7QT1nW3IuWF0ubm9kZTtnW3IuWF0ucmQ/Z1tyLlhdLnpmfHx0LmFwcGVuZENoaWxkKEEpOihBPWdbci5YXS5ub2RlLmNsb25lTm9kZSghMSksQS5pZCYmCihBLmlkPSIiKSx0LmFwcGVuZENoaWxkKEEpKTtnW3IuWF0uS2Eoci5aLEEpfX1lbHNlKytlLC0tcDtnPXE7bj1hLmc7cT1kO2g9YS5DO2lmKHEuUGYpaD1xLlBmO2Vsc2V7bD1uLmxlbmd0aDtrPS0xO2ZvcihwPTA7cDxxLlUubGVuZ3RoOysrcClyPXEuVVtwXS5YLHI+PTAmJm5bcl0mJm5bcl0ubm9kZSYmKGs9TWF0aC5tYXgoayxyKSxsPU1hdGgubWluKGwscikpO2ZvcihuPSIiO2w8PWs7KytsKWhbbF0mJihuKz1oW2xdKTtoPW59bD1hO249ZztxPWg7aWYobC5CKXtpZihsLkIuZy5oYyE9Myl7Zz1sLk87aD1nLnB1c2g7az1sLkI7ZD1kLmhlO2Q9ay5sWysray5DXT17aWQ6ay5DLnRvU3RyaW5nKCksUms6bCx0ZXh0OnEsZm06ZHx8cSxaOmYsVGk6ay5ELFZpOmsuRixBYTpufTtmb3IoZj0wO2Y8bi5sZW5ndGg7KytmKW5bZl0mJmsuYXR0YWNoKGQuaWQsbltmXSk7ay5qJiZrLmouYXR0YWNoKG4scS5sZW5ndGgpO2suQSYmay5BLnN0YXJ0KCk7aC5jYWxsKGcsZC5pZCl9fWVsc2UgZm9yKGQ9CjA7ZDxuLmxlbmd0aDsrK2QpbltkXS50aXRsZT1xfWI9YS5nO2ZvcihjPTA7YzxiLmxlbmd0aDsrK2MpYltjXS5ub2RlJiYhYltjXS5yZCYmXy5BZChiW2NdLm5vZGUpO2I9YS5nO2M9YS5vO2E9YS5BO2ZvcihlPWQ9MDtlPGMubGVuZ3RoOysrZSlpZihmPWNbZV0ubm9kZSl7Zm9yKDtkPGIubGVuZ3RoJiZlPmFbZF07KWQrKzsoZD49Yi5sZW5ndGh8fGUhPWFbZF0pJiYhZi5maXJzdENoaWxkJiYoXy5BZChmKSxjW2VdLm5vZGU9bnVsbCl9fX19OwpqdC5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbigpe2lmKHRoaXMuRylpZih0aGlzLkc9ITEsdGhpcy5CJiYkcyh0aGlzLkIpLHRoaXMuTz1bXSxwdCh0aGlzLm8pLHRoaXMuZy5sZW5ndGg9PTEmJnRoaXMuZ1swXS54ZSl0aGlzLmdbMF0uS2EodGhpcy5DWzBdLHRoaXMuZ1swXS5ub2RlKTtlbHNle2Zvcih2YXIgYT0wLGI9MDtiPHRoaXMuby5sZW5ndGg7KytiKXt2YXIgYz10aGlzLm9bYl0ubm9kZTtpZihjKXtmb3IoO2E8dGhpcy5nLmxlbmd0aCYmYj50aGlzLkFbYV07KXt2YXIgZD1hKys7dGhpcy5nW2RdLm5vZGUmJihydCh0aGlzLmdbZF0ubm9kZSksdGhpcy5nW2RdLm5vZGU9bnVsbCl9aWYoYTx0aGlzLmcubGVuZ3RoJiZiPT10aGlzLkFbYV0mJnRoaXMuZ1thXS5ub2RlKXt0aGlzLmdbYV0uemZ8fChfLnpkKGMpLGMuYXBwZW5kQ2hpbGQodGhpcy5nW2FdLm5vZGUpKTt0aGlzLmdbYV0uS2EodGhpcy5DW2FdLHRoaXMuZ1thXS5ub2RlKTthKys7dmFyIGU9Yy5wYXJlbnROb2RlOwppZihlJiZlLm5vZGVUeXBlIT0xMSlpZihjLnJlbW92ZU5vZGUpYy5yZW1vdmVOb2RlKCExKTtlbHNle2Zvcig7ZD1jLmZpcnN0Q2hpbGQ7KWUuaW5zZXJ0QmVmb3JlKGQsYyk7Xy5BZChjKX19ZWxzZSBfLkFkKGMpfX10aGlzLm89W119fTtqdC5wcm90b3R5cGUuTT1mdW5jdGlvbigpe18uaGIucHJvdG90eXBlLk0uY2FsbCh0aGlzKTt0aGlzLnJlc3RvcmUoKTtmb3IodmFyIGE9MDthPHRoaXMuZy5sZW5ndGg7KythKXRoaXMuZ1thXS5ub2RlJiZydCh0aGlzLmdbYV0ubm9kZSk7dGhpcy5nPW51bGx9Owp2YXIgaHQ9ZnVuY3Rpb24oYSl7aWYoYSlpZihhLm5vZGVUeXBlPT0zJiZfLlNjKXtsdCBpbiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZVtsdF18fChhLnBhcmVudE5vZGVbbHRdPXt9KTt2YXIgYj1hLnBhcmVudE5vZGVbbHRdO2JbYS5ub2RlVmFsdWVdfHwoYlthLm5vZGVWYWx1ZV09W10pO2I9YlthLm5vZGVWYWx1ZV07Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2MpaWYoYltjXT09YSlyZXR1cm47Yi5wdXNoKGEpfWVsc2UgYVtrdF09MX0scnQ9ZnVuY3Rpb24oYSl7aWYoIWF8fGEubm9kZVR5cGU9PTMmJl8uU2Mpe3ZhciBiPWEucGFyZW50Tm9kZTtpZihiJiZsdCBpbiBiKXt2YXIgYz1iW2x0XTtpZihjJiZhJiZjW2Eubm9kZVZhbHVlXSl7dmFyIGQ9Y1thLm5vZGVWYWx1ZV07aWYoZClmb3IodmFyIGU9MDtlPGQubGVuZ3RoOysrZSlpZihkW2VdPT1hKXtkLnNwbGljZShlLDEpO2JyZWFrfWQubGVuZ3RoPT0wJiZkZWxldGUgY1thLm5vZGVWYWx1ZV19aWYoYyYmd3IoYykpdHJ5e2RlbGV0ZSBiW2x0XX1jYXRjaChmKXtiW2x0XT0KIiJ9fX1lbHNlIGlmKGt0IGluIGEpdHJ5e2RlbGV0ZSBhW2t0XX1jYXRjaChmKXthW2t0XT0iIn19LHB0PWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXRyeXthW2JdLm5vZGUmJiFhW2JdLm5vZGUucGFyZW50Tm9kZSYmKGFbYl0ubm9kZT1udWxsKX1jYXRjaChjKXthW2JdLm5vZGU9bnVsbH1mb3IoYj1hLmxlbmd0aC0xO2I+PTAmJiFhW2JdLm5vZGU7LS1iKTthLmxlbmd0aD1iKzE7cmV0dXJuIGEubGVuZ3RofSxldD1mdW5jdGlvbihhKXthPWEub3duZXJEb2N1bWVudD9hLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9udCIpOl8ud2QoZG9jdW1lbnQsImZvbnQiKTtodChhKTthLnN0eWxlLnZlcnRpY2FsQWxpZ249ImluaGVyaXQiO18ub2koXy5aaShwcSwyKSkmJihhLmRpcj0iYXV0byIpO3JldHVybiBhfSxzdD1mdW5jdGlvbihhKXtmb3IodmFyIGI9bmV3IFNldCxjPTA7YzxhLmcubGVuZ3RoO2MrKyl7dmFyIGQ9YS5nW2NdLm5vZGU7ZCE9bnVsbCYmCmIuYWRkKGQpfXJldHVybiBifSx0dD1mdW5jdGlvbigpe3RoaXMuaD17fTt0aGlzLmc9e319O3R0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5oW2FdIT1udWxsfHx0aGlzLmdbYV0hPW51bGx8fGImJihhIGluIHRoaXMuaHx8YSBpbiB0aGlzLmcpfTt0dC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oYSxiKXt0aGlzLmdbYV09Yn07dHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihhKXtkZWxldGUgdGhpcy5nW2FdO2RlbGV0ZSB0aGlzLmhbYV19O3R0LnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ1thXTtifHwoYj10aGlzLmhbYV0sdGhpcy5nW2FdPWIpO3JldHVybiBifTt2YXIga3Q9Il9ndF8iK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyKSxsdD0iX2d0bl8iK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyKTsKKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShjKXtkb2N1bWVudC50aXRsZT1jfXZhciBiPXt9O2d0PWZ1bmN0aW9uKGMsZCl7aWYoYy50YWdOYW1lPT0iVElUTEUiKXJldHVybntub2RlOmMsS2E6YSxyZDohMCx6ZjohMCx4ZTohMH07aWYoYy5ub2RlVHlwZT09MylyZXR1cm57bm9kZTpjLEthOmZ1bmN0aW9uKGUsZil7Xy5DZChmLGUpfX07ZHx8KGQ9InZhbHVlIik7YltkXXx8KGJbZF09ZnVuY3Rpb24oZSxmKXtmLnNldEF0dHJpYnV0ZSYmZi5zZXRBdHRyaWJ1dGUoZCxlKTt0eXBlb2YgZT09PSJzdHJpbmciJiYoZltkXT1lKX0pO2M9e25vZGU6YyxLYTpiW2RdLHJkOiEwfTtkIT0idmFsdWUiJiYoYy54ZT0hMCk7cmV0dXJuIGN9fSkoKTsKdmFyIHV0PWZ1bmN0aW9uKGEsYixjLGQpe2Q9ZC5maXJzdENoaWxkJiZkLmZpcnN0Q2hpbGQubm9kZVR5cGU9PTM/ZC5maXJzdENoaWxkLm5vZGVWYWx1ZTpFbyhkKTtkPXtYOmMsWjpwbyhkKX07YS5wdXNoKGQpO2JbY10/YltjXS5lbmQ9ZDpiW2NdPXtzdGFydDpkLGVuZDpkfTtyZXR1cm4gZH0sdnQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGM9YS5maXJzdENoaWxkO2M7Yz1iKWI9Yy5uZXh0U2libGluZyxjLm5vZGVUeXBlIT0zJiYoYz09YS5maXJzdENoaWxkP2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjLGEpOnhvKGMsYSksdnQoYykpfTt2YXIgd3Q9ZnVuY3Rpb24oKXt0aGlzLmc9W119O3d0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7dGhpcy5nLnB1c2goYSl9O3ZhciB4dD1mdW5jdGlvbigpe3RoaXMuZz1bXX07Xy5CKHh0LHd0KTt4dC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe2lmKGEpZm9yKDthKCk7KTt9O3h0Lmc9ZnVuY3Rpb24oKXtyZXR1cm4gV3EoeHQpfTt2YXIgenQ9ZnVuY3Rpb24oYSl7dGhpcy5nPVtdO3RoaXMuaD0uNTt5dCh0aGlzLGEpO3RoaXMubD0wO3RoaXMuaj0hMDt0aGlzLm89KDAsXy55KSh0aGlzLkEsdGhpcyl9O18uQih6dCx3dCk7dmFyIHl0PWZ1bmN0aW9uKGEsYil7Yj4xP2EuaD0xOmI8LjAwMT9hLmg9LjAwMTpiJiYoYS5oPWIpfTt6dC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3d0LnByb3RvdHlwZS5hZGQuY2FsbCh0aGlzLGEpO3RoaXMuaiYmQXQodGhpcyl9O3ZhciBBdD1mdW5jdGlvbihhKXthLmo9ITE7d2luZG93LnNldFRpbWVvdXQoYS5vLE1hdGgubWluKGEubCw1RTMpKX07Cnp0LnByb3RvdHlwZS5BPWZ1bmN0aW9uKCl7dmFyIGE9KG5ldyBEYXRlKS5nZXRUaW1lKCk7ZG97dGhpcy5nLmxlbmd0aCYmKHRoaXMuZ1swXSYmdGhpcy5nWzBdKCl8fHRoaXMuZy5zaGlmdCgpKTt2YXIgYj0hIXRoaXMuZy5sZW5ndGg7dmFyIGM9OTUqdGhpcy5oKzU7dmFyIGQ9KG5ldyBEYXRlKS5nZXRUaW1lKCktYX13aGlsZShiJiZkPGMpO3RoaXMubD1NYXRoLmNlaWwoZCooMS90aGlzLmgtMSkpKzE7Yj9BdCh0aGlzKTp0aGlzLmo9ITB9O3ZhciBCdD1mdW5jdGlvbihhLGIpe3RoaXMuRD1hfHxudWxsO3RoaXMuST1ifHx4dC5nKCk7dGhpcy5CPXRoaXMuQT10aGlzLkc9bnVsbDt0aGlzLmw9dGhpcy5qPSExO3RoaXMubz1udWxsO3RoaXMuZz1bXTt0aGlzLmg9MH0sQ3Q9ZnVuY3Rpb24oYSxiKXthLmp8fChhLkc9Yil9LER0PWZ1bmN0aW9uKGEsYixjKXthLkE9Yz8oMCxfLnkpKGIsYyk6Yn0sRXQ9ZnVuY3Rpb24oYSxiLGMpe2EuQj1jPygwLF8ueSkoYixjKTpifSxGdD1mdW5jdGlvbihhLGIpe2Euanx8KGEuaj0hMCxhLkY9YixhLmgrKyxhLm89YS5HLGEuQygpKX07QnQucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLmgrKzt0aGlzLmo9ITE7dGhpcy5nPVtdfTsKdmFyIEd0PWZ1bmN0aW9uKGEpe2lmKCFhLmopcmV0dXJuIG51bGw7Zm9yKHZhciBiPSExLGM9MDtjPGEuZy5sZW5ndGg7KytjKWlmKGEuZ1tjXS50YXJnZXQ9PT1hKXthLmdbY10ucmVhZHk9ITE7YS5nW2NdLmhnPWEuaCsxO2I9ITA7YnJlYWt9Ynx8YS5nLnB1c2goe3RhcmdldDphLHJlYWR5OiExLGhnOmEuaCsxfSk7cmV0dXJuKDAsXy55KShhLkMsYSxhLGEuaCsxKX0sSHQ9ZnVuY3Rpb24oYSl7aWYoIWEuailyZXR1cm4hMDtmb3IodmFyIGI9MDtiPGEuZy5sZW5ndGg7KytiKWlmKGEuZ1tiXS50YXJnZXQ9PT1hJiZhLmdbYl0uaGc9PWEuaClyZXR1cm4gYS5nW2JdLnJlYWR5O3JldHVybiEwfTsKQnQucHJvdG90eXBlLkM9ZnVuY3Rpb24oYSxiKXtpZih0aGlzLmope2lmKGEpZm9yKHZhciBjPTA7Yzx0aGlzLmcubGVuZ3RoOysrYylpZih0aGlzLmdbY10udGFyZ2V0PT09YSl7dGhpcy5nW2NdLnJlYWR5PSEwO2JyZWFrfXRoaXMubHx8dGhpcy5JLmFkZCgoMCxfLnkpKHRoaXMuVyx0aGlzLGJ8fHRoaXMuaCkpfX07CkJ0LnByb3RvdHlwZS5XPWZ1bmN0aW9uKGEpe2lmKHRoaXMuaCE9YSlyZXR1cm4hMTthPXRoaXMubztpZihhPT1JdClyZXR1cm4gdGhpcy5zdG9wKCksdGhpcy5BJiZ0aGlzLkEuY2FsbCh0aGlzLkQsdGhpcyx0aGlzLkYpLCExO3RoaXMubD0hMDt0cnl7dmFyIGI9YS5jYWxsKHRoaXMuRCx0aGlzLHRoaXMuRik7aWYoIWIpdGhyb3cgRXJyb3IoKTt9Y2F0Y2goYyl7dGhpcy5zdG9wKCk7YT1jO2lmKHRoaXMuQil0aGlzLkIuY2FsbCh0aGlzLkQsYSx0aGlzLHRoaXMuRik7ZWxzZSB0aHJvdyBhO3JldHVybiExfWZpbmFsbHl7dGhpcy5sPSExfWIhPUp0JiYodGhpcy5vPWIsdGhpcy5oKyssdGhpcy5DKCkpO3JldHVybiExfTt2YXIgSnQ9ZnVuY3Rpb24oKXt9LEl0PWZ1bmN0aW9uKCl7fTt2YXIgS3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhLmNsYXNzTmFtZT09InN0cmluZyI/YS5jbGFzc05hbWU6YS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn0sTHQ9ZnVuY3Rpb24oYSxiKXt0eXBlb2YgYS5jbGFzc05hbWU9PSJzdHJpbmciP2EuY2xhc3NOYW1lPWI6YS5zZXRBdHRyaWJ1dGUmJmEuc2V0QXR0cmlidXRlKCJjbGFzcyIsYil9LE10PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuY2xhc3NMaXN0P2EuY2xhc3NMaXN0LmNvbnRhaW5zKGIpOl8udGEoYS5jbGFzc0xpc3Q/YS5jbGFzc0xpc3Q6S3QoYSkubWF0Y2goL1xTKy9nKXx8W10sYil9LE50PWZ1bmN0aW9uKGEsYil7aWYoYS5jbGFzc0xpc3QpYS5jbGFzc0xpc3QuYWRkKGIpO2Vsc2UgaWYoIU10KGEsYikpe3ZhciBjPUt0KGEpO0x0KGEsYysoYy5sZW5ndGg+MD8iICIrYjpiKSl9fSxPdD1mdW5jdGlvbihhLGIpe2EuY2xhc3NMaXN0P2EuY2xhc3NMaXN0LnJlbW92ZShiKTpNdChhLGIpJiYKTHQoYSxBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYS5jbGFzc0xpc3Q/YS5jbGFzc0xpc3Q6S3QoYSkubWF0Y2goL1xTKy9nKXx8W10sZnVuY3Rpb24oYyl7cmV0dXJuIGMhPWJ9KS5qb2luKCIgIikpfTt2YXIgUXQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXtiPWJ8fHt9O3RoaXMuVz1lfHxbXTt0aGlzLkE9W107dGhpcy5GPVtdO1B0KHRoaXMsYXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGIuVmY9PT12b2lkIDB8fCEhYi5WZik7dGhpcy5DPWN8fGp0O3RoaXMuRD1iLmxpO3RoaXMuaj10aGlzLmc9dGhpcy5vPXRoaXMuZGM9bnVsbDt0aGlzLkI9ISFiLmJqO3RoaXMuTD0hIWIuWmk7dGhpcy5LPXRoaXMuQj8yNzoxMzt0aGlzLkk9ITA7dGhpcy5HPVtdO3RoaXMubD1uZXcgQnQodGhpcyxkKX0sUnQ9ZnVuY3Rpb24oYSxiLGMsZCl7YS5sLmp8fChiPXtkZzpiLGFnOmMsQWE6W10sUWY6W10scmI6W10sdGV4dExlbmd0aDowLHNpemU6MCxjb250aW51b3VzOiEwfSxhLmRjPW51bGwsQ3QoYS5sLGEuaCksRHQoYS5sLGQpLEV0KGEubCwoMCxfLnkpKGZ1bmN0aW9uKGUpe3RoaXMudWkoZSk7ZCgpfSxhKSksRnQoYS5sLGIpKX0sU3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5BYS5sZW5ndGg+MD8KbmV3IGIoYS5BYSxhLnJiLmpvaW4oIiIpLGEuUWYsYS50ZXh0TGVuZ3RoLGEuc2l6ZSk6bnVsbH0sVHQ9ZnVuY3Rpb24oYSxiKXtpZighYS5qKXJldHVybiBhLmRjPVN0KGIsYS5DKSwhMDtpZighYi5jb250aW51b3VzJiZiLkFhLmxlbmd0aD4wKXJldHVybiBhLmRjPVN0KGIsYS5DKSwhMDtiLmNvbnRpbnVvdXM9YS5qLktmO2E6e3ZhciBjPWEuajt2YXIgZD1hLks7aWYoYi5zaXplPmIuYWd8fGIudGV4dExlbmd0aD5iLmRnKWM9ITE7ZWxzZXt2YXIgZT1jLnNpemUsZj1jLnRleHQubGVuZ3RoO2lmKGIuQWEubGVuZ3RoIT0wJiYoZSs9Yi5BYS5sZW5ndGg9PTE/Yi5zaXplK2QrZDpiLnNpemUrZCxmKz1iLnRleHRMZW5ndGgsZT5iLmFnfHxmPmIuZGcpKXtjPSExO2JyZWFrIGF9Yi5zaXplPWU7Yi50ZXh0TGVuZ3RoPWY7Yi5BYS5wdXNoKGMubm9kZSk7Yi5RZi5wdXNoKGMudGV4dCk7ZD1iLkFhLmxlbmd0aC0xO2Q9PTA/Yi5yYi5wdXNoKGMuTGQpOihkPT0xJiYoYi5yYlswXT0iPGEgaT0wPiIrCmIucmJbMF0rIjwvYT4iKSxiLnJiLnB1c2goIjxhIGk9IitkKyI+IiksYi5yYi5wdXNoKGMuTGQpLGIucmIucHVzaCgiPC9hPiIpKTtjPSEwfX1pZihjKXJldHVybiBhLmo9bnVsbCwhMTthLmRjPVN0KGIsYS5DKTtyZXR1cm4hMH0sVXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW50KGIsYyk7ZCYmXy5BYyhqbyhkKSkmJmEuRy5wdXNoKHtub2RlOmIsWWc6Yyx0ZXh0OmR9KX07ClF0LnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcztpZih0aGlzLmomJlR0KHRoaXMsYikpcmV0dXJuIEl0O2lmKCF0aGlzLmcpe3RoaXMuST0hIXRoaXMuQS5sZW5ndGg7aWYoIXRoaXMuQS5sZW5ndGgmJihhPXRoaXMuRy5zaGlmdCgpKSlyZXR1cm4gdGhpcy5qPXtLZjohMSxub2RlOmd0KGEubm9kZSxhLllnKSx0ZXh0OmEudGV4dCxMZDpsbyhhLnRleHQpLHNpemU6dGhpcy5CP18uR2IoYS50ZXh0KS5sZW5ndGg6YS50ZXh0Lmxlbmd0aH0sYi5jb250aW51b3VzPSExLFR0KHRoaXMsYiksSXQ7YT10aGlzLkEuc2hpZnQoKXx8dGhpcy5GLnNoaWZ0KCk7aWYoIWEpcmV0dXJuIHRoaXMuaj1udWxsLFR0KHRoaXMsYiksSXQ7dGhpcy5vPVthLllpXTt0aGlzLmc9bmV3IGRzKGEucm9vdCl9dGhpcy5nLm5leHQoKTtpZih0aGlzLmcuZG9uZSlyZXR1cm4gdGhpcy5nPW51bGwsYi5jb250aW51b3VzPSExLHRoaXMuaDthPXRoaXMuZy5ub2RlKCk7dmFyIGQ9dGhpcy5nLmcuZzsKaWYoZD09LTEpcmV0dXJuIFZ0KHRoaXMpLFd0KGEpfHwoYi5jb250aW51b3VzPSExKSx0aGlzLmg7WHQodGhpcyxhKTtkPWQ9PTE7dmFyIGU9ISFhJiYoYS5ub2RlVHlwZT09MyYmdHlwZW9mIGEubm9kZVZhbHVlPT09InN0cmluZyJ8fGEudGFnTmFtZT09IlRJVExFIiYmdHlwZW9mIGEudmFsdWU9PT0ic3RyaW5nInx8YS50YWdOYW1lPT0iVEVYVEFSRUEiJiZNdChhLCJ0cmFuc2xhdGUiKXx8YS50YWdOYW1lPT0iSU5QVVQiJiYoWXJbYS50eXBlXXx8TXQoYSwidHJhbnNsYXRlIikpKTtpZigoZXx8ZCkmJnRoaXMuSSYmIVl0KGEpKXJldHVybiBQdCh0aGlzLGEsWnQodGhpcyksITApLGJzKHRoaXMuZy5nKSxWdCh0aGlzKSx0aGlzLmg7aWYoZCYmWnQodGhpcykmJih0aGlzLkwmJlV0KHRoaXMsYSwidGl0bGUiKSxVdCh0aGlzLGEsImFsdCIpLFV0KHRoaXMsYSwicGxhY2Vob2xkZXIiKSxVdCh0aGlzLGEsImFyaWEtbGFiZWwiKSxVdCh0aGlzLGEsImFyaWEtcGxhY2Vob2xkZXIiKSxVdCh0aGlzLAphLCJhcmlhLXJvbGVkZXNjcmlwdGlvbiIpLFV0KHRoaXMsYSwiYXJpYS12YWx1ZXRleHQiKSxlcyh0aGlzLmcpKSlmb3IodmFyIGY9YS5maXJzdENoaWxkO2Y7KXtpZihmLm5vZGVUeXBlPT0zKXt2YXIgZz1mLm5vZGVWYWx1ZS5zcGxpdCgiXG4iKTtpZihnLmxlbmd0aD4yfHxnLmxlbmd0aD09MiYmXy5BYyhnWzBdKSE9IiImJl8uQWMoZ1sxXSkhPSIiKXtmLm5vZGVWYWx1ZT1nWzBdO2Zvcih2YXIgaD0xO2g8Zy5sZW5ndGg7KytoKXt2YXIgaz1fLnNkKGEpLmNyZWF0ZUVsZW1lbnQoImZvbnQiKTt0aGlzLlcucHVzaChrKTt4byhrLGYpO2Y9azt4byhfLnNkKGEpLmNyZWF0ZVRleHROb2RlKCJcbiIrZ1toXSksZik7Zj1mLm5leHRTaWJsaW5nfX19Zj1mLm5leHRTaWJsaW5nfWEuc2hhZG93Um9vdCYmQXJyYXkuZnJvbShhLnNoYWRvd1Jvb3QuY2hpbGROb2RlcykuZm9yRWFjaChmdW5jdGlvbihyKXtQdChjLHIsWnQoYykpfSk7aWYoZSl7YnModGhpcy5nLmcpO2lmKFp0KHRoaXMpKXt2YXIgbD0KbnQoYSk7aWYoXy5BYyhqbyhsKSkmJih0aGlzLmo9e0tmOiEwLG5vZGU6Z3QoYSksdGV4dDpsLExkOmxvKGwpLHNpemU6dGhpcy5CP18uR2IobCkubGVuZ3RoOmwubGVuZ3RofSxUdCh0aGlzLGIpKSlyZXR1cm4gVnQodGhpcyksSXR9VnQodGhpcyk7cmV0dXJuIHRoaXMuaH1pZihkKXtpZigkdChhKXx8IWEuZmlyc3RDaGlsZCYmYS50YWdOYW1lIT0iSUZSQU1FIiYmYS50YWdOYW1lIT0iUlVCWSIpcmV0dXJuIGIuY29udGludW91cz1iLmNvbnRpbnVvdXMmJiEhWHJbYS50YWdOYW1lXSxicyh0aGlzLmcuZyksVnQodGhpcyksdGhpcy5oO2lmKGEudGFnTmFtZT09IlJVQlkiKXt0cnl7bD1fLkMoYS5jaGlsZE5vZGVzKTtmb3IodmFyIG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcT1uLnZhbHVlO3Eubm9kZVR5cGUhPTMmJlB0KHRoaXMscSxadCh0aGlzKSl9fWNhdGNoKHIpe31icyh0aGlzLmcuZyk7VnQodGhpcyk7cmV0dXJuIHRoaXMuaH1pZihhLnRhZ05hbWU9PSJJRlJBTUUiKXt0cnl7aWYoIWEuc3JjLm1hdGNoKC9odHRwcz86XC9cLy8pfHwKXy5DYihhLnNyYy5tYXRjaChfLnJmKVszXXx8bnVsbCk9PXdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSl7dmFyIHA9em8oYSkuZG9jdW1lbnRFbGVtZW50O3AmJlB0KHRoaXMscCxadCh0aGlzKSl9fWNhdGNoKHIpe31iLmNvbnRpbnVvdXM9ITE7YnModGhpcy5nLmcpO1Z0KHRoaXMpO3JldHVybiB0aGlzLmh9WnQodGhpcykmJld0KGEpP3RoaXMuRCYmYS50YWdOYW1lPT0iQSImJmEuaHJlZiYmdGhpcy5EKGEpOmIuY29udGludW91cz0hMTtyZXR1cm4gdGhpcy5ofWJzKHRoaXMuZy5nKTtWdCh0aGlzKTtyZXR1cm4gdGhpcy5ofTsKdmFyICR0PWZ1bmN0aW9uKGEpe3JldHVybiBtdChhKXx8YS5ub2RlVHlwZSE9MyYmKCFhLnRhZ05hbWV8fFdyW2EudGFnTmFtZV18fFhyW2EudGFnTmFtZV18fE10KGEsInNraXB0cmFuc2xhdGUiKSl9LGF1PWZ1bmN0aW9uKGEpe3ZhciBiPV8uc2QoYSk7cmV0dXJuIGIuZGVmYXVsdFZpZXcmJmIuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZT9iLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKTphLmN1cnJlbnRTdHlsZX0sWXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZVR5cGU9PTM/ITA6YS5ub2RlVHlwZSE9MT8hMTphLm9mZnNldFdpZHRoJiZhLm9mZnNldEhlaWdodD8hMDooYT1hdShhKSwhIWEmJmEuZGlzcGxheSE9Im5vbmUiJiZhLnZpc2liaWxpdHkhPSJoaWRkZW4iKX0sV3Q9ZnVuY3Rpb24oYSl7aWYoYS5ub2RlVHlwZT09MylyZXR1cm4hMDtpZihhLm5vZGVUeXBlIT0xKXJldHVybiExO3ZhciBiPWF1KGEpO3JldHVybiEhVnJbYS50YWdOYW1lXSYmCighYnx8IWIuZGlzcGxheXx8Yi5kaXNwbGF5PT0iaW5saW5lIil9LFB0PWZ1bmN0aW9uKGEsYixjLGQpeyhkP2EuRjphLkEpLnB1c2goe3Jvb3Q6YixZaTpjPT09dm9pZCAwfHxjfSl9LFp0PWZ1bmN0aW9uKGEpe3JldHVybiBhLm9bYS5vLmxlbmd0aC0xXX0sWHQ9ZnVuY3Rpb24oYSxiKXtiPSFtdChiKSYmKGIubm9kZVR5cGU9PSRuJiZadChhKXx8IShNdChiLCJub3RyYW5zbGF0ZSIpfHxiLmF0dHJpYnV0ZXMmJmIuYXR0cmlidXRlcy50cmFuc2xhdGUmJmIuYXR0cmlidXRlcy50cmFuc2xhdGUudmFsdWU9PSJubyIpJiYoTXQoYiwidHJhbnNsYXRlIil8fCEhYi5hdHRyaWJ1dGVzJiYhIWIuYXR0cmlidXRlcy50cmFuc2xhdGUmJmIuYXR0cmlidXRlcy50cmFuc2xhdGUudmFsdWU9PSJ5ZXMifHxadChhKSkpO2Euby5wdXNoKGIpfSxWdD1mdW5jdGlvbihhKXthLm8ucG9wKCl9LGJ1PXt9O0RyLmF0dGFjaCg1NzYyLFF0LnByb3RvdHlwZSx7dWk6MX0pO3ZhciBjdT1mdW5jdGlvbigpe18udS5jYWxsKHRoaXMpO3RoaXMuZz1bXX07Xy5CKGN1LF8udSk7Y3UucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24oKXtxcyh0aGlzLmgsMCx0aGlzKX07Y3UucHJvdG90eXBlLmg9ZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPHRoaXMuZy5sZW5ndGg7KythKV8uQWQodGhpcy5nW2FdKTt0aGlzLmc9W119O2N1LnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7Xy51LnByb3RvdHlwZS5NLmNhbGwodGhpcyk7dGhpcy5yZXN0b3JlKCl9O3ZhciBkdT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgU2V0O2EuZm9yRWFjaChmdW5jdGlvbihjKXt5byhjKT9iLmFkZChjKTooYz1jLnBhcmVudEVsZW1lbnR8fG51bGwsYyE9bnVsbCYmYi5hZGQoYykpfSk7cmV0dXJuIGJ9O3ZhciBldT1mdW5jdGlvbihhKXt0aGlzLmg9ITA7dGhpcy5sPWE7dGhpcy5qPSExO3RoaXMuZz1bXX07ZXUucHJvdG90eXBlLm1hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZy5qb2luKCIiKX07dmFyIGZ1PWZ1bmN0aW9uKGEsYil7dGhpcy5vPWE7dGhpcy5sPSEwO3RoaXMuaj1iO3RoaXMuZz1udWxsO3RoaXMuaD0wfSxndT1mdW5jdGlvbihhLGIpe3JldHVybiBhLmw/KGIoKDAsXy55KShhLkEsYSksYS5vLGEuaj8iZW4iOiIiKSwhMCk6ITF9O2Z1LnByb3RvdHlwZS5BPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmc9Yjt0aGlzLmg9YzthKCl9O3ZhciBodT1mdW5jdGlvbihhLGIpe3RoaXMubD1hO3RoaXMuRD0hIWI7dGhpcy5nPXRoaXMuQz0wO3RoaXMubz10aGlzLmo9LTE7dGhpcy5BPXRoaXMuQj10aGlzLmg9MH0sa3U9ZnVuY3Rpb24oYSxiLGMpe2EuRCYmKGItPTkpO2Zvcih2YXIgZD0iIixlPTAsZj1hLkM7ZjxhLmwubGVuZ3RoOysrZil7dmFyIGc9YS5sLmNoYXJBdChmKSxoPWcuY2hhckNvZGVBdCgwKTtlKys7YS5oKz1hLkQ/aDw9MTI3P2g8PTMyfHxpdVtoXT8zOjE6aDw9MjA0N3x8aD49NTUyOTYmJmg8PTU2MzE5fHxoPj01NjMyMCYmaDw9NTczNDM/Njo5OjE7aD1hLmg+PWI7anVbZ10/KGEubz1mLGEuQj1hLmgsaD1ofHxlPmMpOmc9PSIgIiYmKGEuaj1mLGEuQT1hLmgsaD1ofHxlPmMpO2lmKGgpcmV0dXJuIGEubz49MD8oZD1hLmwuc3Vic3RyaW5nKGEuZyxhLm8rMSksYS5oLT1hLkIsYS5nPWEubysxLGEubz49YS5qPyhhLmo9LTEsYS5BPTApOmEuQS09YS5CLGEubz0tMSxhLkI9MCk6YS5qPj0wPyhkPWEubC5zdWJzdHJpbmcoYS5nLAphLmorMSksYS5oLT1hLkEsYS5nPWEuaisxLGEuaj0tMSxhLkE9MCk6KGQ9YS5sLnN1YnN0cmluZyhhLmcsZisxKSxhLmg9MCxhLmc9ZisxLGEubz1hLmo9LTEsYS5BPWEuQj0wKSxhLkM9ZisxLGR9YS5nPGEubC5sZW5ndGgmJihkPWEubC5zdWJzdHJpbmcoYS5nKSxhLmc9YS5sLmxlbmd0aCk7cmV0dXJuIGR9LGp1PWlyKFsiLiIsIiwiLCI6IiwiXFw/IiwiISJdKSxsdT1bIi4iLCI/IiwiISJdLGl1PWlyKFszNCwzNSwzNiwzNywzOCw0Myw0NCw0Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw5MSw5Miw5Myw5NCw5NiwxMjMsMTI0LDEyNSwxMjddKTt2YXIgdG09ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKHRtLF8uSik7dmFyIG11PWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihtdSxfLkopO3ZhciBudT1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIobnUsXy5KKTt2YXIgb3U9WzEsMl07dmFyIHB1PWZ1bmN0aW9uKGEpe3RoaXMuSj1fLkkoYSl9O18uQihwdSxfLkopO3B1LnByb3RvdHlwZS5SYT1mdW5jdGlvbigpe3JldHVybiBfLmRqKHRoaXMsMSl9O3ZhciBxdT1fLktpKHB1KTt2YXIgcnU7dmFyIHN1PWZ1bmN0aW9uKCl7dGhpcy5oYT1uZXcgXy5XZn0sdHU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO3JldHVybiBfLlZpKGZ1bmN0aW9uKGUpe2M9Y20oYW0oJGwobmV3IFpsLCJodHRwcyIpLGIuaG9zdCksYi5wYXRoKTtkPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGYsZyl7Xy5OZChhLmhhLCJzdWNjZXNzIixmdW5jdGlvbigpe2Yoe2NvZGU6Xy5oZyhhLmhhKSxoZWFkZXJzOkxuKGEuaGEpLGJvZHk6Xy5pZyhhLmhhKX0pfSk7Xy5OZChhLmhhLCJlcnJvciIsZnVuY3Rpb24oKXtnKHtjb2RlOl8uaGcoYS5oYSksaGVhZGVyczpMbihhLmhhKSxib2R5Ol8uaWcoYS5oYSl9KX0pO18uTmQoYS5oYSwidGltZW91dCIsZnVuY3Rpb24oKXtnKHtjb2RlOl8uaGcoYS5oYSksaGVhZGVyczpMbihhLmhhKSxib2R5Ol8uaWcoYS5oYSl9KX0pfSk7YS5oYS5zZW5kKGMsYi5tZXRob2QsYi5ib2R5LGIuaGVhZGVycyk7cmV0dXJuIGUucmV0dXJuKGQpfSl9O3ZhciBybj1mdW5jdGlvbihhKXt0aGlzLko9Xy5JKGEpfTtfLkIocm4sXy5KKTt2YXIgcW49ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKHFuLF8uSik7dmFyIHBuPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmsoYSwxLGIpfTt2YXIgd3U9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZjtyZXR1cm4gXy5WaShmdW5jdGlvbihnKXtpZihnLmc9PTEpe2I9cnV8fChydT1xdSgnWzIsbnVsbCxbW1tbImF1dG9wdXNoIixbImF1dG9wdXNoLXRyYW5zbGF0ZS1wYS5zYW5kYm94Lmdvb2dsZWFwaXMuY29tIl1dLFsic3RhZ2luZyIsWyJkYWlseTEtdHJhbnNsYXRlLXBhLnNhbmRib3guZ29vZ2xlYXBpcy5jb20iXV0sWyJwcm9kIixbInRyYW5zbGF0ZS1wYS5nb29nbGVhcGlzLmNvbSJdXSxbInByb2QtZXUiLFsidHJhbnNsYXRlLXBhLmV1LnJlcC5nb29nbGVhcGlzLmNvbSJdXSxbInByb2QtdXMiLFsidHJhbnNsYXRlLXBhLnVzLnJlcC5nb29nbGVhcGlzLmNvbSJdXV1dXV0nKSk7Yz1tcTtucSYmKGM9YysiLSIrbnEpO3ZhciBoPWJwKGIsbnUsMyk7dmFyIGs9aC5KO2s9SWwoSGwoayksayx2b2lkIDAsb3UpO2g9YnAoaCxtdSxrPT09MT8xOi0xKTtrPWguSjt2YXIgbD1rW18uSF18MDtoPXVtKGgsayxsLF8uV2coaCxsKSkuZ2V0KGMpOwpkPV8uTihoLDEpO2g9bmV3ICRwO2s9c20oYSwxLF8uYWooKSk7aD1HbChoLDEsayxubSkuTmEoYS5KYSgpKS5uYShhLm9hKCkpO2s9bmV3IGFxO2g9Xy5MKGssMSxoKTtoPXNuKGgsMix0cSk7Xy5NKHBxLDcpJiZfLmVqKGgsNCwhMCk7ZT1oO2cuRigyKTtyZXR1cm4gZy5oKHZ1KGQsZSksNCl9aWYoZy5nIT0yKXJldHVybiBmPWcuaixnLnJldHVybih0bihmKSk7Zy5EKCk7cmV0dXJuIGcucmV0dXJuKFByb21pc2UucmVqZWN0KEVycm9yKCJBYSIpKSl9KX0sdnU9ZnVuY3Rpb24oYSxiKXt2YXIgYz14dSxkLGUsZixnO3JldHVybiBfLlZpKGZ1bmN0aW9uKGgpe2lmKGguZz09MSlyZXR1cm4gZD17aG9zdDphLHBhdGg6Ii92MS90cmFuc2xhdGVIdG1sIixtZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJYLWdvb2ctYXBpLWtleSI6IkFJemFTeUFUQlhhanZ6UUxUREhFUWJjcHEwSWhlMHZXREhtTzUyMCIsIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24rcHJvdG9idWYifSxib2R5Ol8uV2ooYil9LAplPWMuZygpLGguRigyKSxoLmgodHUoZSxkKSw0KTtpZihoLmchPTIpcmV0dXJuIGY9aC5qLGgucmV0dXJuKGNxKGYuYm9keSkpO2c9aC5EKCk7cmV0dXJuIGgucmV0dXJuKFByb21pc2UucmVqZWN0KGcpKX0pfTt2YXIgeHU9bmV3IGZ1bmN0aW9uKCl7dGhpcy5nPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBzdX19LHl1PWZ1bmN0aW9uKGEpe3RoaXMuZz1hfSx6dT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtyZXR1cm4gXy5WaShmdW5jdGlvbihmKXtpZihmLmc9PTEpcmV0dXJuIHNtKGIsMSxfLmFqKCkpLmxlbmd0aD09PTA/Zi5yZXR1cm4obmV3IHFuKTpfLk0ocHEsOCk/Zi5yZXR1cm4od3UoYikpOmYuaChhLmcudHJhbnNsYXRlKGN8fGZ1bmN0aW9uKCl7fSxzbShiLDEsXy5haihfLldoKSksYi5KYSgpLGIub2EoKSwwLCExKSwyKTtkPWYuajtlPWQubWFwKHVuKTtyZXR1cm4gZi5yZXR1cm4ocG4obmV3IHFuLGUpKX0pfTt2YXIgQXU9ZnVuY3Rpb24oYSl7dGhpcy5KPV8uSShhKX07Xy5CKEF1LF8uSik7dmFyIEJ1PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBBdTtyZXR1cm4gR2woYiwxLGEsbm0pfTtBdS5wcm90b3R5cGUuSmE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5OKHRoaXMsMil9O0F1LnByb3RvdHlwZS5OYT1mdW5jdGlvbihhKXtyZXR1cm4gc24odGhpcywyLGEpfTtBdS5wcm90b3R5cGUub2E9ZnVuY3Rpb24oKXtyZXR1cm4gXy5OKHRoaXMsMyl9O0F1LnByb3RvdHlwZS5uYT1mdW5jdGlvbihhKXtyZXR1cm4gc24odGhpcywzLGEpfTt2YXIgQ3U9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuQj1kfHxmdW5jdGlvbigpe307dGhpcy5QPWZ8fGZ1bmN0aW9uKCl7fTt0aGlzLlI9ISFlO3RoaXMuaj1hLmcuSWY7dGhpcy5sPTA7dGhpcy5JPWZ1bmN0aW9uKCl7fTt0aGlzLkQ9Yzt0aGlzLkY9dGhpcy5oPXRoaXMubz0wO3RoaXMuZz1udWxsO3RoaXMuVz0wO3RoaXMubGE9ITE7dGhpcy5UPWEuZy5HZjt0aGlzLks9W107dGhpcy5xYj0wO3RoaXMuTD1hLmcuS2Q7dGhpcy5BPWEubCgpO3RoaXMud2E9dGhpcy5SPzE6Njt0aGlzLklhPWEuZy5XZjt0aGlzLnFhPWI7dGhpcy5DPVtdO3RoaXMuTz1hfTtDdS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPHRoaXMuQy5sZW5ndGg7KythKXRoaXMuQ1thXS5zdG9wKCk7Zm9yKGE9MDthPHRoaXMuSy5sZW5ndGg7KythKVRyKHRoaXMuTyx0aGlzLktbYV0pfTsKdmFyIER1PWZ1bmN0aW9uKGEsYil7dmFyIGM9MDthLkk9KDAsXy55KShmdW5jdGlvbigpeysrYz09dGhpcy5DLmxlbmd0aCYmYigpfSxhKX0sRXU9ZnVuY3Rpb24oYSxiLGMpe2EuQj1mdW5jdGlvbigpe307YS5xYT1iO2EuZz1udWxsO2EucWI9MDthLkM9W107YS5JPWZ1bmN0aW9uKCl7fTthLkQ9Y30sRnU9ZnVuY3Rpb24oYSxiLGMpe2lmKGEuaD09MCYmKGEuaD1iPzNFMzphLkEsIWN8fGM8PWEuQSkpe2Eubz1hLmg7cmV0dXJufWRvIGI9YS5oLGEuaDxhLkEmJihhLmgqPWEud2EsYS5oPmEuQSYmKGEuaD1hLkEpKTt3aGlsZShiIT1hLmgmJmMmJmEuaDxjKTthLm89YS5ofSxHdT1mdW5jdGlvbihhLGIpe3ZhciBjPWIhPW51bGwsZD0hYyYmIWEubGE7KGR8fGMpJiZhLkIoMTAwLGQsYil9LEh1PWZ1bmN0aW9uKGEpe3JldHVybiBhLkw/YS5nLlI6YS5nLm1hKCkubGVuZ3RofSxJdT1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBuZXcgUXQoYS5xYS5zaGlmdCgpLHtiajphLkwsbGk6YiwKVmY6ITAsWmk6ISFjfSxmdW5jdGlvbigpe3ZhciBmPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIG5ldyBqdChmLnNoaWZ0KCksZi5zaGlmdCgpLGYuc2hpZnQoKSxmLnNoaWZ0KCksZi5zaGlmdCgpLGMsZCl9LGEuRCxlKX0sS3U9ZnVuY3Rpb24oYSxiLGMpe2lmKGEuVD4wJiZiLmxiKCk+PWEuVClyZXR1cm4hMDtpZihIdShhKT5hLmgpe2lmKGIubGIoKT4wKXJldHVybiEwO0Z1KGEsYyxIdShhKSk7Zm9yKHZhciBkPWEuZy5tYSgpLGU9bmV3IGh1KGQsYS5MKSxmO2Y9a3UoZSxhLmgsYS5qKTspaWYobHUuaW5kZXhPZihmLmNoYXJBdChmLmxlbmd0aC0xKSk8MCYmYi5LKyssYi5sLnB1c2gobmV3IGZ1KFtmXSwhMSkpLGEubCs9Zi5sZW5ndGgsYS5qLT1mLmxlbmd0aCxhLmo8PTApe2IuRj1kLnN1YnN0cmluZyhlLmcpO2JyZWFrfWVsc2UgRnUoYSxjKTtKdShiLGEuZywhMCk7YS5nPW51bGw7cmV0dXJuITB9aWYoSHUoYSk+YS5vKXJldHVybiEwO0p1KGIsCmEuZywhMCk7YS5vLT1IdShhKSthLklhO2EubCs9YS5nLkQ7YS5qLT1hLmcuRDthLmc9bnVsbDtyZXR1cm4hMX0sTHU9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9e1phOjB9O2MuWmE8YS5sZW5ndGg7Yz17WmE6Yy5aYX0sYy5aYSsrKWFbYy5aYV0ubGVuZ3RoPjEmJmFbYy5aYV1bMV09PT0yMDA/Yi5wdXNoLmFwcGx5KGIsXy4kYihhW2MuWmFdWzBdLnRvU3RyaW5nKCkuc3BsaXQoIiZsdDtleHRyYV9pZF8xJmd0OyIpLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuW2UudHJpbSgpLGFbZC5aYV1bMV1dfX0oYykpKSk6Yi5wdXNoKGFbYy5aYV0pO3JldHVybiBifSxNdT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxrLGwsbjtyZXR1cm4gXy5WaShmdW5jdGlvbihxKXtzd2l0Y2gocS5nKXtjYXNlIDE6dmFyIHA9cHE7aWYoXy5iaihwLGlxLDYpKXt2YXIgcj1fLmJqKHAsaXEsNiksdD1fLk0ociwxKTtwPV8uTShwLDMpfHx0Pyh0P3NtKHIsNCxfLmFqKCkpOgpzbShwLDQsXy5haigpKSkuaW5jbHVkZXMoZC50b0xvd2VyQ2FzZSgpKyJfIitlLnRvTG93ZXJDYXNlKCkpOiExfWVsc2UgcD0hMTtmPXA7aWYoZil7dmFyIEE9QT09PXZvaWQgMD8zRTM6QTtpZihwPV8uYmoocHEsaXEsNikpcD1fLmJqKHBxLGlxLDYpLHA9Xy5NKHAsMSk7aWYocCl7cD1fLmJqKHBxLGlxLDYpO0E9Xy5nayhwLDMpO3A9Xy5nayhwLDIpO3I9W107Zm9yKHQ9MDt0PGMubGVuZ3RoO3QrKyl7dmFyIEQ9W2NbdF1dLEU9Y1t0XS5sZW5ndGg7aWYoY1t0XS5zcGxpdCgiICIpLmxlbmd0aDw9cClmb3IoO3QrMTxjLmxlbmd0aCYmRTxBOylELnB1c2goY1t0KzFdKSxFKz1jW3QrMV0ubGVuZ3RoKzIrMTgsdCsrO3IucHVzaChELmpvaW4oIiAmbHQ7ZXh0cmFfaWRfMSZndDsgIikpfUE9cn1lbHNle3A9W107Zm9yKHI9MDtyPGMubGVuZ3RoOyl7dD1bXTtmb3IoRT0wO3I8Yy5sZW5ndGg7KXtEPWNbcl07dmFyIGJhPUQubGVuZ3RoO0U9dC5sZW5ndGg9PT0wP2JhOkUrMjArYmE7aWYoRT4KQSYmdC5sZW5ndGg+MClicmVhazt0LnB1c2goRCk7cisrfXQubGVuZ3RoPjAmJnAucHVzaCh0LmpvaW4oIiAmbHQ7ZXh0cmFfaWRfMSZndDsgIikpfUE9cH19ZWxzZSBBPWM7Zz1BO2g9enUobmV3IHl1KGEuTyksQnUoZykuTmEoZCkubmEoZSksYik7cS5GKDIpO3JldHVybiBxLmgoaCw0KTtjYXNlIDQ6az1xLmo7bD12bihrKTtuPWY/THUobCk6bDtiKG4sMjAwKTtxLksoMyk7YnJlYWs7Y2FzZSAyOnEuRCgpLGIoW10sNTAwKTtjYXNlIDM6cmV0dXJuIGEuSy5wdXNoKGgpLHEucmV0dXJuKGgpfX0pfTt2YXIgTnU9ZnVuY3Rpb24oYSxiKXtfLnUuY2FsbCh0aGlzKTt0aGlzLmw9Yjt0aGlzLmo9e3Jvb3RNYXJnaW46YX07dGhpcy5nPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoMCxfLnkpKHRoaXMuaCx0aGlzKSx0aGlzLmopfTtfLkIoTnUsXy51KTtOdS5wcm90b3R5cGUuTT1mdW5jdGlvbigpe18udS5wcm90b3R5cGUuTS5jYWxsKHRoaXMpO3RoaXMuZz1udWxsfTtOdS5wcm90b3R5cGUuaD1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKylpZihhW2JdLmludGVyc2VjdGlvblJhdGlvPjApe3RoaXMubCgpO2JyZWFrfX07TnUucHJvdG90eXBlLnRyYWNrPWZ1bmN0aW9uKGEpe0pvKGEsKDAsXy55KSh0aGlzLmcub2JzZXJ2ZSx0aGlzLmcpKX07dmFyIE91PWZ1bmN0aW9uKGEpe3ZhciBiPWEhPW51bGw/YTp7fSxjPWIuSWssZD1iLktrLGU9Yi5FayxmPWIuTGssZz1iLkhrLGg9Yi5KayxrPWIuRmssbD1iLkdrO2E9Xy55bCgpOyFsJiZzcChjKT8oZT0hIWUsZj0hIWYsYj1iJiZiLlFrLGM9KDAsXy50bCkoc3AoYyk/IjxzY3JpcHQiKyhiPycgbm9uY2U9IicrUChZcChiKSkrJyInOiIiKSsiPndpbmRvd1sncHBDb25maWcnXSA9IHtwcm9kdWN0TmFtZTogIit2cChRcChkIT1udWxsP2Q6InVua25vd24iKSkrIiwgZGVsZXRlSXNFbmZvcmNlZDogIit2cChRcChlKSkrIiwgc2VhbElzRW5mb3JjZWQ6ICIrdnAoUXAoZikpKyIsIGhlYXJ0YmVhdFJhdGU6ICIrdnAoUXAoZyE9bnVsbD9nOi41KSkrIiwgcGVyaW9kaWNSZXBvcnRpbmdSYXRlTWlsbGlzOiAiK3ZwKFFwKGghPW51bGw/aDo2RTQpKSsiLCBkaXNhYmxlQWxsUmVwb3J0aW5nOiAiK3ZwKFFwKGshPW51bGw/azohMSkpKyJ9OyIrdnAoUXAoYyE9bnVsbD9jOiIiKSkrIlx4M2Mvc2NyaXB0PiI6CiIiKSk6Yz0iIjtyZXR1cm4gV24oYSxjKX07dmFyIFB1PWZ1bmN0aW9uKGEpe3JldHVybigwLF8udGwpKCc8c3BhbiBpZD0iJytQKGEuaWQpKyciPjwvc3Bhbj4nKX0sUXU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5pZCxjPWEuUmY7cmV0dXJuKDAsXy50bCkoS3AoYS5TZikrJzxkaXYgaWQ9IicrUChiKSsnIj48L2Rpdj4nK0twKGMpKX0sWW49ZnVuY3Rpb24oYSl7dmFyIGI9YS50b3AsYz1hLmxlZnQsZD1hLmJvdHRvbSxlPWEucmlnaHQsZj1hLmlkO3JldHVybigwLF8udWwpKCIuIitBcChhLmNsYXNzTmFtZSkrIiB7ei1pbmRleDo5OTk5OTk5OyBvdmVyZmxvdzp2aXNpYmxlOyBwb3NpdGlvbjpmaXhlZDsgX3Bvc2l0aW9uOmFic29sdXRlOyIrKGJ8fGI9PT0wPyJ0b3A6IitBcChiKSsicHg7IF90b3A6ZXhwcmVzc2lvbigoIitBcChiKSsiKyhoYWNrMT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfHxkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCkpKydweCcpOyI6InRvcDphdXRvOyIpKyhjfHxjPT09MD8ibGVmdDoiK0FwKGMpKwoicHg7IF9sZWZ0OmV4cHJlc3Npb24oKCIrQXAoYykrIisoaGFjazI9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnR8fGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCkpKydweCcpOyI6ImxlZnQ6YXV0bzsiKSsoZHx8ZD09PTA/ImJvdHRvbToiK0FwKGQpKyJweDsgX3RvcDpleHByZXNzaW9uKCgtIitBcChkKSsiLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciK1N0cmluZyhmKS5yZXBsYWNlKFJwLEdwKSsiJykub2Zmc2V0SGVpZ2h0KyhoYWNrMz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0fHxkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkrKGhhY2s0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSkrJ3B4Jyk7IjoiYm90dG9tOmF1dG87IikrKGV8fGU9PT0wPyJyaWdodDoiK0FwKGUpKyJweDsgX2xlZnQ6ZXhwcmVzc2lvbigoLSIrQXAoZSkrIi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIisKU3RyaW5nKGYpLnJlcGxhY2UoUnAsR3ApKyInKS5vZmZzZXRXaWR0aCsoaGFjazU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRofHxkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoKSsoaGFjazY9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnR8fGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCkpKydweCcpOyI6InJpZ2h0OmF1dG87IikrIn0iKX0sUnU9ZnVuY3Rpb24oKXtyZXR1cm4oMCxfLnRsKSgnPGRpdiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLWFaMndFZS13T0hNeWYiKSsnIj48ZGl2IGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPIikrJyI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtYVoyd0VlIikrJyIgd2lkdGg9Ijk2cHgiIGhlaWdodD0iOTZweCIgdmlld0JveD0iMCAwIDY2IDY2Ij48Y2lyY2xlIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtYVoyd0VlLUp0NWNLIikrCiciIGZpbGw9Im5vbmUiIHN0cm9rZS13aWR0aD0iNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBjeD0iMzMiIGN5PSIzMyIgcj0iMzAiLz48L3N2Zz48L2Rpdj48L2Rpdj4nKX07d24ueGI9dm9pZCAwO3duLmc9ZnVuY3Rpb24oKXtyZXR1cm4gd24ueGI/d24ueGI6d24ueGI9bmV3IHdufTt3bi5wcm90b3R5cGUuZz0wO18uRyh4bixfLmhiKTtfLm09eG4ucHJvdG90eXBlO18ubS5jaT13bi5nKCk7Xy5tLlJhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGF8fCh0aGlzLmxhPSI6IisodGhpcy5jaS5nKyspLnRvU3RyaW5nKDM2KSl9O18ubS5IPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQ307Xy5tLm5kPWZ1bmN0aW9uKGEpe2lmKHRoaXMuSyYmdGhpcy5LIT1hKXRocm93IEVycm9yKCJDYSIpO3huLmVhLm5kLmNhbGwodGhpcyxhKX07Xy5tLlM9ZnVuY3Rpb24oKXt0aGlzLkM9dGhpcy5oLmNyZWF0ZUVsZW1lbnQoIkRJViIpfTtfLm0ua2E9ZnVuY3Rpb24oYSl7U3UodGhpcyxhKX07Xy5tLnFjPWZ1bmN0aW9uKGEpe1N1KHRoaXMsYS5wYXJlbnROb2RlLGEpfTt2YXIgU3U9ZnVuY3Rpb24oYSxiLGMpe2lmKGEuamIpdGhyb3cgRXJyb3IoIkRhIik7YS5DfHxhLlMoKTtiP2IuaW5zZXJ0QmVmb3JlKGEuQyxjfHxudWxsKTphLmguZy5ib2R5LmFwcGVuZENoaWxkKGEuQyk7YS5LJiYhYS5LLmpifHxhLkxhKCl9OwpfLm09eG4ucHJvdG90eXBlO18ubS5haD1mdW5jdGlvbihhKXtpZih0aGlzLmpiKXRocm93IEVycm9yKCJEYSIpO2lmKGEpe3RoaXMud2E9ITA7dmFyIGI9Xy5zZChhKTt0aGlzLmgmJnRoaXMuaC5nPT1ifHwodGhpcy5oPV8ubGIoYSkpO3RoaXMuT2EoYSk7dGhpcy5MYSgpfWVsc2UgdGhyb3cgRXJyb3IoIkVhIik7fTtfLm0uT2E9ZnVuY3Rpb24oYSl7dGhpcy5DPWF9O18ubS5MYT1mdW5jdGlvbigpe3RoaXMuamI9ITA7VHUodGhpcyxmdW5jdGlvbihhKXshYS5qYiYmYS5IKCkmJmEuTGEoKX0pfTtfLm0uc2E9ZnVuY3Rpb24oKXtUdSh0aGlzLGZ1bmN0aW9uKGEpe2EuamImJmEuc2EoKX0pO3RoaXMuTyYmXy5SZih0aGlzLk8pO3RoaXMuamI9ITF9OwpfLm0uTT1mdW5jdGlvbigpe3RoaXMuamImJnRoaXMuc2EoKTt0aGlzLk8mJih0aGlzLk8uZGlzcG9zZSgpLGRlbGV0ZSB0aGlzLk8pO1R1KHRoaXMsZnVuY3Rpb24oYSl7YS5kaXNwb3NlKCl9KTshdGhpcy53YSYmdGhpcy5DJiZfLkFkKHRoaXMuQyk7dGhpcy5LPXRoaXMuQz10aGlzLlI9dGhpcy5GPW51bGw7eG4uZWEuTS5jYWxsKHRoaXMpfTt2YXIgUz1mdW5jdGlvbihhLGIpe3JldHVybiBhLlJhKCkrIi4iK2J9LFR1PWZ1bmN0aW9uKGEsYil7YS5GJiZhLkYuZm9yRWFjaChiLHZvaWQgMCl9Owp4bi5wcm90b3R5cGUuaWU9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdO3RoaXMuRiYmdGhpcy5GLmxlbmd0aCE9MDspe3ZhciBjPWIsZD1jLnB1c2gsZT10aGlzLkY/dGhpcy5GWzBdfHxudWxsOm51bGwsZj1hO2lmKGUpe3ZhciBnPXR5cGVvZiBlPT09InN0cmluZyI/ZTplLlJhKCk7dGhpcy5SJiZnPyhlPXRoaXMuUixlPShlIT09bnVsbCYmZyBpbiBlP2VbZ106dm9pZCAwKXx8bnVsbCk6ZT1udWxsO2lmKGcmJmUpe3ZhciBoPXRoaXMuUjtnIGluIGgmJmRlbGV0ZSBoW2ddO18udmEodGhpcy5GLGUpO2YmJihlLnNhKCksZS5DJiZfLkFkKGUuQykpO2Y9ZTtpZihmPT1udWxsKXRocm93IEVycm9yKCJCYSIpO2YuSz1udWxsO3huLmVhLm5kLmNhbGwoZixudWxsKX19aWYoIWUpdGhyb3cgRXJyb3IoIkZhIik7ZC5jYWxsKGMsZSl9cmV0dXJuIGJ9O3ZhciBVdT1mdW5jdGlvbigpe3huLmNhbGwodGhpcyl9O18uQihVdSx4bik7VXUucHJvdG90eXBlLlM9ZnVuY3Rpb24oKXt0aGlzLk9hKGttKFJ1KSl9O1V1LnByb3RvdHlwZS5PYT1mdW5jdGlvbihhKXt0aGlzLkM9YX07VXUucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oKXtOdCh0aGlzLkgoKSwiVklwZ0pkLVpWaTlvZC1hWjJ3RWUtd09ITXlmLXRpNmhHYyIpO050KHRoaXMuSCgpLmZpcnN0Q2hpbGQsIlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPLXRpNmhHYyIpfTt2YXIgVnU9ZnVuY3Rpb24oYSl7T3QoYS5IKCksIlZJcGdKZC1aVmk5b2QtYVoyd0VlLXdPSE15Zi10aTZoR2MiKTtPdChhLkgoKS5maXJzdENoaWxkLCJWSXBnSmQtWlZpOW9kLWFaMndFZS1PaWlDTy10aTZoR2MiKX07dmFyIFd1PWZ1bmN0aW9uKCl7dGhpcy5nPW5ldyBVdTt0aGlzLmcuUygpO3RoaXMuZy5rYSgpO3RoaXMuaD0wfTtXdS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmg9MDtWdSh0aGlzLmcpfTt2YXIgWHU9V3EoY3IpLFl1PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7dGhpcy5sPWE7dGhpcy5nPWI7dGhpcy5DPVtdO3RoaXMuRj1udWxsO3RoaXMubz1jO3RoaXMuaD1kO3RoaXMuaj1lO3RoaXMucWE9Zjt0aGlzLk89Zzt0aGlzLkQ9dGhpcy5BPW51bGw7dGhpcy5CPWh8fG51bGw7dGhpcy5XPXRoaXMuST0hMTt0aGlzLkc9e307dGhpcy5MPVh1O3RoaXMuSz0wfSxadT1mdW5jdGlvbihhKXtmb3IodmFyIGI9bmV3IFNldCxjPTA7YzxhLmxlbmd0aDtjKyspc3QoYVtjXSkuZm9yRWFjaChmdW5jdGlvbihkKXtyZXR1cm4gYi5hZGQoZCl9KTtyZXR1cm4gYn07Cll1LnByb3RvdHlwZS50cmFja1Zpc2liaWxpdHk9ZnVuY3Rpb24oYSl7dGhpcy5BPW5ldyBOdSgiMjAwcHgiLCgwLF8ueSkodGhpcy5SLHRoaXMsYSkpO3RoaXMuQS50cmFjayhkdShadShbXS5jb25jYXQodGhpcy5nLHRoaXMuQykpKSk7dGhpcy5EPW5ldyBOdSgiMHB4IiwoMCxfLnkpKHRoaXMuUCx0aGlzKSk7dGhpcy5ELnRyYWNrKGR1KFp1KFtdLmNvbmNhdCh0aGlzLmcsdGhpcy5DKSkpKX07WXUucHJvdG90eXBlLlI9ZnVuY3Rpb24oYSl7dGhpcy5BJiYodGhpcy5BLmcuZGlzY29ubmVjdCgpLHRoaXMuQT1udWxsKTthKCl9O1l1LnByb3RvdHlwZS5QPWZ1bmN0aW9uKCl7dGhpcy5JPSEwOyR1KHRoaXMpO2lmKCF0aGlzLlcmJnRoaXMuQil7dmFyIGE9dGhpcy5CO2EuaCsrPT0wJiZhLmcuc2hvdygpfX07dmFyICR1PWZ1bmN0aW9uKGEpe2EuRCYmKGEuRC5nLmRpc2Nvbm5lY3QoKSxhLkQ9bnVsbCl9OwpZdS5wcm90b3R5cGUuZG9uZT1mdW5jdGlvbigpe2lmKHRoaXMuSSYmIXRoaXMuVyYmdGhpcy5CKXt2YXIgYT10aGlzLkI7LS1hLmg9PTAmJlZ1KGEuZyl9dGhpcy5BJiYodGhpcy5BLmcuZGlzY29ubmVjdCgpLHRoaXMuQT1udWxsKTskdSh0aGlzKTthdih0aGlzKX07dmFyIEp1PWZ1bmN0aW9uKGEsYixjKXtjPyhhLmcucHVzaChiKSxhLkdbYi5tYSgpXT0hMCk6YS5DLnB1c2goYil9O1l1LnByb3RvdHlwZS5sYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcubGVuZ3RoK3RoaXMuQy5sZW5ndGh9O3ZhciBidj1mdW5jdGlvbihhKXtpZihhLmwubGVuZ3RoPT0wKXtmb3IodmFyIGI9W10sYz0wO2M8YS5nLmxlbmd0aDsrK2MpYi5wdXNoKGEuZ1tjXS5tYSgpKTthLmwucHVzaChuZXcgZnUoYiwhMSkpfX07Cll1LnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2QrKztkPT1jJiZlKCl9YnYodGhpcyk7Zm9yKHZhciBjPTAsZD0wLGU9ZnVuY3Rpb24oKXt9LGY9dGhpcy5vLGc9dGhpcy5oLGg9dGhpcy5qLGs9MDtrPHRoaXMubC5sZW5ndGg7KytrKWd1KHRoaXMubFtrXSxmdW5jdGlvbihsLG4scSl7cmV0dXJuIE11KGYsXy5aaihsLGIpLG4scXx8ZyxoKX0pJiZjKys7YyE9MCYmKGU9R3QoYSkpO3JldHVybiBjfTt2YXIgYXY9ZnVuY3Rpb24oYSl7aWYoYS5nLmxlbmd0aD4wKXtpZihhLmcubGVuZ3RoPT0xJiZhLmwubGVuZ3RoPjEpe3ZhciBiPTE7dmFyIGM9YS5sLmxlbmd0aH1lbHNlIGI9Yz1hLmcubGVuZ3RoO3ZhciBkPWEuZy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuRH0pLnJlZHVjZShmdW5jdGlvbihlLGYpe3JldHVybiBlK2Z9KTtocihhLkwse2xiOmIsTWY6YyxnZzpkLExmOmEuS30pfX07dmFyIGN2PXthbToiTm90byBTYW5zIEV0aGlvcGljIixiZXI6Ik5vdG8gU2FucyBUaWZpbmFnaCIsImJtLU5rb28iOiJOb3RvIFNhbnMgTktvIixibjoiTG9oaXQgQmVuZ2FsaSIsYm86Ik5vdG8gU2VyaWYgVGliZXRhbiIsZHY6Ik5vdG8gU2FucyBUaGFhbmEiLGR6OiJOb3RvIFNlcmlmIFRpYmV0YW4iLGl1OiJOb3RvIFNhbnMgQ2FuYWRpYW4gQWJvcmlnaW5hbCIsa206Ik5va29yYSIsbG86IkRoeWFuYSIsbWw6Ik5vdG8gU2FucyBNYWxheWFsYW0iLCJtbmktTXRlaSI6Ik5vdG8gU2FucyBNZWV0ZWkgTWF5ZWsiLG15OiJOb3RvIFNhbnMgTXlhbm1hciIsInBhLUFyYWIiOiJOb3RvIE5hc3RhbGlxIFVyZHUiLHBzOiJOb3RvIE5hc2toIEFyYWJpYyIsc2F0OiJOb3RvIFNhbnMgT2wgQ2hpa2kiLHNkOiJOb3RvIE5hc2toIEFyYWJpYyIsc2k6Ik5vdG8gU2FucyBTaW5oYWxhIix0YToiTG9oaXQgVGFtaWwiLHl1ZToiQ2hvY29sYXRlIENsYXNzaWNhbCBTYW5zIn0sZHY9e30sZXY9KGR2WyJDaG9jb2xhdGUgQ2xhc3NpY2FsIFNhbnMiXT0KIi9jc3MyP2ZhbWlseT1DaG9jb2xhdGUrQ2xhc3NpY2FsK1NhbnMiLGR2LkRoeWFuYT0iL2Nzcz9mYW1pbHk9RGh5YW5hIixkdlsiTG9oaXQgQmVuZ2FsaSJdPSIvY3NzP2ZhbWlseT1Mb2hpdCtCZW5nYWxpIixkdlsiTG9oaXQgVGFtaWwiXT0iL2Nzcz9mYW1pbHk9TG9oaXQrVGFtaWwiLGR2Lk5va29yYT0iL2Nzcz9mYW1pbHk9Tm9rb3JhIixkdlsiTm90byBOYXNraCBBcmFiaWMiXT0iL2Vhcmx5YWNjZXNzL25vdG9uYXNraGFyYWJpYy5jc3MiLGR2WyJOb3RvIE5hc3RhbGlxIFVyZHUiXT0iL2Vhcmx5YWNjZXNzL25vdG9uYXN0YWxpcXVyZHUuY3NzIixkdlsiTm90byBTYW5zIENhbmFkaWFuIEFib3JpZ2luYWwiXT0iL2Vhcmx5YWNjZXNzL25vdG9zYW5zY2FuYWRpYW5hYm9yaWdpbmFsLmNzcyIsZHZbIk5vdG8gU2FucyBFdGhpb3BpYyJdPSIvZWFybHlhY2Nlc3Mvbm90b3NhbnNldGhpb3BpYy5jc3MiLGR2WyJOb3RvIFNhbnMgTWFsYXlhbGFtIl09Ii9lYXJseWFjY2Vzcy9ub3Rvc2Fuc21hbGF5YWxhbS5jc3MiLApkdlsiTm90byBTYW5zIE1lZXRlaSBNYXllayJdPSIvY3NzP2ZhbWlseT1Ob3RvK1NhbnMrTWVldGVpK01heWVrIixkdlsiTm90byBTYW5zIE15YW5tYXIiXT0iL2Vhcmx5YWNjZXNzL25vdG9zYW5zbXlhbm1hci5jc3MiLGR2WyJOb3RvIFNhbnMgTktvIl09Ii9jc3M/ZmFtaWx5PU5vdG8rU2FucytOS28iLGR2WyJOb3RvIFNhbnMgT2wgQ2hpa2kiXT0iL2Vhcmx5YWNjZXNzL25vdG9zYW5zb2xjaGlraS5jc3MiLGR2WyJOb3RvIFNhbnMgU2luaGFsYSJdPSIvZWFybHlhY2Nlc3Mvbm90b3NhbnNzaW5oYWxhLmNzcyIsZHZbIk5vdG8gU2FucyBUaGFhbmEiXT0iL2Vhcmx5YWNjZXNzL25vdG9zYW5zdGhhYW5hLmNzcyIsZHZbIk5vdG8gU2FucyBUaWZpbmFnaCJdPSIvZWFybHlhY2Nlc3Mvbm90b3NhbnN0aWZpbmFnaC5jc3MiLGR2WyJOb3RvIFNlcmlmIFRpYmV0YW4iXT0iL2Nzcz9mYW1pbHk9Tm90bytTZXJpZitUaWJldGFuIixkdiksZnY9ZnVuY3Rpb24oKXt0aGlzLmc9W119Owpmdi5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbigpe2Zvcih2YXIgYT1fLkModGhpcy5nKSxiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSliLnZhbHVlLnJlbW92ZSgpO3RoaXMuZz1bXX07dmFyIGd2PWZ1bmN0aW9uKGEsYil7Xy51LmNhbGwodGhpcyk7dGhpcy5nPVtdO3RoaXMubD1bXTt0aGlzLmg9YTt0aGlzLmo9Yn07Xy5CKGd2LF8udSk7Z3YucHJvdG90eXBlLm89ZnVuY3Rpb24oYSl7dmFyIGI9Xy5BYyhhLmhyZWYpO2IuaW5kZXhPZigiamF2YXNjcmlwdDoiKT09MHx8Yi5pbmRleE9mKCIjIik+PTB8fCh0aGlzLmwucHVzaChhLmhyZWYpLHRoaXMuZy5wdXNoKGEpLGEuaHJlZj1iKyIjZ29vZ3RyYW5zLyIrdGhpcy5oKyIvIit0aGlzLmopfTtndi5wcm90b3R5cGUuTT1mdW5jdGlvbigpe18udS5wcm90b3R5cGUuTS5jYWxsKHRoaXMpO3RoaXMucmVzdG9yZSgpfTtndi5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbigpe2lmKHRoaXMuZy5sZW5ndGgpe2Zvcih2YXIgYT0wO2E8dGhpcy5nLmxlbmd0aDsrK2EpdGhpcy5nW2FdLmhyZWY9dGhpcy5sW2FdO3RoaXMuZz1bXTt0aGlzLmw9W119fTt2YXIgaHY9ZnVuY3Rpb24oYSxiKXtfLnUuY2FsbCh0aGlzKTt0aGlzLmc9YTt0aGlzLmg9Xy54Zi50ZXN0KGIpPyJ0cmFuc2xhdGVkLXJ0bCI6InRyYW5zbGF0ZWQtbHRyIjthPVtdLmNvbmNhdCh0aGlzLmcpO2ZvcihiPTA7YjxhLmxlbmd0aDsrK2IpeW8oYVtiXSkmJk50KGFbYl0sdGhpcy5oKX07Xy5CKGh2LF8udSk7aHYucHJvdG90eXBlLk09ZnVuY3Rpb24oKXtfLnUucHJvdG90eXBlLk0uY2FsbCh0aGlzKTt0aGlzLnJlc3RvcmUoKX07aHYucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24oKXtmb3IodmFyIGE9W10uY29uY2F0KHRoaXMuZyksYj0wO2I8YS5sZW5ndGg7KytiKXlvKGFbYl0pJiZPdChhW2JdLHRoaXMuaCl9O3ZhciBpdj1mdW5jdGlvbihhLGIsYyl7dGhpcy5nPTNFMzt0aGlzLmg9W107dGhpcy5qPW51bGw7dGhpcy5vPWE7dGhpcy5FYj1iO3RoaXMuRmI9Yzt0aGlzLmw9YSYmdHlwZW9mIGEubD09PSJmdW5jdGlvbiI/YS5sKCl8fDE4RTM6MThFM30sa3Y9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZixnLGgsayxsLG4scTtyZXR1cm4gXy5WaShmdW5jdGlvbihwKXtzd2l0Y2gocC5nKXtjYXNlIDE6Yz1sbyhiKTtkPVtdO2lmKGMubGVuZ3RoPmEuZylmb3IoZT1uZXcgaHUoYywhMSksZj0iIjtmPWt1KGUsYS5nKTspZC5wdXNoKGYpLGEuZzxhLmwmJihhLmcqPTYsYS5nPmEubCYmKGEuZz1hLmwpKTtlbHNlIGQucHVzaChjKTtnPVtdO2g9Xy5DKGQpO2s9aC5uZXh0KCk7Y2FzZSAyOmlmKGsuZG9uZSl7cC54YSg0KTticmVha31sPWsudmFsdWU7bj1nO3E9bi5wdXNoO3JldHVybiBwLmgoanYoYSxsKSw1KTtjYXNlIDU6cS5jYWxsKG4scC5qKTtrPWgubmV4dCgpO3AueGEoMik7YnJlYWs7Y2FzZSA0OnJldHVybiBwLnJldHVybihwbyhnLmpvaW4oIiIpKSl9fSl9LApqdj1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihjLGQpe2EuaC5wdXNoKHt0ZXh0OmIscmVzb2x2ZTpjLHJlamVjdDpkfSk7YS5qfHwoYS5qPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5mbHVzaCgpfSw1MCkpfSl9O2l2LnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe3RoaXMuaj1udWxsO2lmKHRoaXMuaC5sZW5ndGghPT0wKXt2YXIgYT10aGlzLmg7dGhpcy5oPVtdO3ZhciBiPW5ldyB5dSh0aGlzLm8pO2E9Xy5DKGEpO2Zvcih2YXIgYz1hLm5leHQoKSxkPXt9OyFjLmRvbmU7ZD17cmM6dm9pZCAwfSxjPWEubmV4dCgpKWQucmM9Yy52YWx1ZSxjPUJ1KFtkLnJjLnRleHRdKS5OYSh0aGlzLkViKS5uYSh0aGlzLkZiKSx6dShiLGMsZnVuY3Rpb24oKXt9KS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihmKXsoZj12bihmKVswXSkmJmZbMV09PT0yMDA/ZS5yYy5yZXNvbHZlKGZbMF0udG9TdHJpbmcoKSk6ZS5yYy5yZWplY3QoIlRyYW5zbGF0aW9uIGZhaWxlZCIpfX0oZCkpLmNhdGNoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihmKXtlLnJjLnJlamVjdChmKX19KGQpKX19O3ZhciBsdj1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxsKXtfLnUuY2FsbCh0aGlzKTt0aGlzLkM9YTt0aGlzLkZjPWI7dGhpcy5sZj1uZXcgZnY7dGhpcy5mYj1jfHxudWxsO3RoaXMuSWE9bHx8bnVsbDt0aGlzLks9bnVsbDt0aGlzLklkPSEhZDt0aGlzLmppPWV8fCJ0cmFuc3BhcmVudCI7dGhpcy5paT0hIWY7dGhpcy5GPVtdO3RoaXMueWY9dGhpcy5JPXRoaXMuZz0hMTt0aGlzLm89aHx8bmV3IHR0O3RoaXMuRGk9IWg7dGhpcy53YT1nfHx4dC5nKCk7dGhpcy5VZT1uZXcgY3U7dGhpcy5IYj10aGlzLmdiPXRoaXMuUj0hMTt0aGlzLmRmPXRoaXMuQT0uNTt0aGlzLmpmPS4wMTt0aGlzLkQ9bmV3IHp0KHRoaXMuQSk7dGhpcy5sYT0odGhpcy5CPXRoaXMucmE9ISFrKT9uZXcgTXV0YXRpb25PYnNlcnZlcigoMCxfLnkpKHRoaXMuUWgsdGhpcykpOm51bGw7dGhpcy5MPXRoaXMuWGU9dGhpcy5qPXRoaXMuaD1udWxsO3RoaXMuUD0wO3RoaXMuTz1uZXcgTWFwO18ueCh3aW5kb3csImJsdXIiLAp0aGlzLnRmLCEwLHRoaXMpO18ueCh3aW5kb3csImZvY3VzIix0aGlzLnVmLCEwLHRoaXMpfTtfLkIobHYsXy51KTtfLm09bHYucHJvdG90eXBlO18ubS5KYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmg/dGhpcy5oOiIifTtfLm0ub2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qP3RoaXMuajoiIn07Xy5tLmdoPWZ1bmN0aW9uKGEpe3RoaXMub2kuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMubCYmdGhpcy5sKDAsITEsMSl9O18ubS5hZj1mdW5jdGlvbihhKXt0aGlzLnBpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmwmJnRoaXMubCgwLCExLDEpfTtfLm0uaGg9ZnVuY3Rpb24oYSl7dGhpcy5yaS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5sJiZ0aGlzLmwoMCwhMSwxKX07Xy5tLmloPWZ1bmN0aW9uKGEpe3RoaXMudGkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMubCYmdGhpcy5sKDAsITEsMSl9OwpfLm0udHJhbnNsYXRlPWZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZHx8YSE9dGhpcy5ofHxiIT10aGlzLmopbXYodGhpcyksdGhpcy5EaSYmKHRoaXMubz1uZXcgdHQpO2Vsc2UgaWYodGhpcy5nKXJldHVybjt0aGlzLmw9Yzt0aGlzLkFpPWU7dGhpcy5CPXRoaXMucmE7dGhpcy5sYSYmdGhpcy5sYS5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLGNoYXJhY3RlckRhdGE6ITAsc3VidHJlZTohMH0pO3RoaXMuZz0hMDt0aGlzLmg9YTt0aGlzLmo9Yjt0aGlzLklkJiYodGhpcy5LPW5ldyBndihhLGIpKTt0aGlzLkhiPXRoaXMuaD09ImF1dG8iO3RoaXMuZmImJihjPXRoaXMuZmIsYSYmKGMuRD1hKSxiJiYoYy5GPWIpKTt0aGlzLlhiPW5ldyBodih0aGlzLkMsdGhpcy5qKTtiIGluIGN2JiYoYT10aGlzLmxmLGIgaW4gY3YmJihiPWN2W2JdLGM9IkBpbXBvcnQgdXJsKCIrV28oImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iKS5yZXNvbHZlKFdvKGV2W2JdKSkudG9TdHJpbmcoKSsKIik7IixjPXluKGMpLGEuZy5wdXNoKGMpLGI9eW4oJ2JvZHkge2ZvbnQtZmFtaWx5OiInK2IrJyIsIkdvb2dsZSBTYW5zIiwiTm90byBTYW5zIixzYW5zLXNlcmlmICFpbXBvcnRhbnR9JyksYS5nLnB1c2goYikpKTtfLm9pKF8uWmkocHEsOSkpPyh0aGlzLlhlPW5ldyBpdih0aGlzLkZjLHRoaXMuaCx0aGlzLmopLHRoaXMuUD0wLG52KHRoaXMpLHRoaXMuUD09PTAmJnRoaXMubCYmdGhpcy5sKDEwMCwhMCkpOnRoaXMuRz1vdih0aGlzKTsoYj10aGlzLkMgaW5zdGFuY2VvZiBOb2RlP3RoaXMuQzpudWxsKSYmcHYoYix0aGlzLmopfTsKdmFyIG92PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBCdChhLGEud2EpO0N0KGIsYS5zZik7RXQoYiwoMCxfLnkpKGEuZ2gsYSkpO0Z0KGIsbmV3IEN1KGEuRmMsW10uY29uY2F0KGEuQyksYS53YSxhLmwsYS5CLGEuQWkpKTtyZXR1cm4gYn0sbnY9ZnVuY3Rpb24oYSl7YS5MPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihiKXtiLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoYy5pc0ludGVyc2VjdGluZyl7dmFyIGQ9Yy5ib3VuZGluZ0NsaWVudFJlY3Q7ZCYmZC53aWR0aD09PTAmJmQuaGVpZ2h0PT09MHx8KHF2KGEsYy50YXJnZXQpLGEuTC51bm9ic2VydmUoYy50YXJnZXQpKX19KX0pO1tdLmNvbmNhdChhLkMpLmZvckVhY2goZnVuY3Rpb24oYil7cnYoYSxiKX0pfSxydj1mdW5jdGlvbihhLGIsYyl7Yz1jPT09dm9pZCAwPyEwOmM7aWYoIVF0fHwhJHQoYikpe2EuRWY9PT12b2lkIDAmJihhLkVmPSEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPSJnb29nbGUiXVtjb250ZW50PSJub3RyYW5zbGF0ZSJdLCBtZXRhW25hbWU9InJvYm90cyJdW2NvbnRlbnQ9Im5vdHJhbnNsYXRlIl0sIG1ldGFbbmFtZT0iZ29vZ2xlIl1bdmFsdWU9Im5vdHJhbnNsYXRlIl0sIG1ldGFbbmFtZT0idHJhbnNsYXRlIl1bY29udGVudD0ibm8iXScpKTsKaWYoYS5FZiljPSExO2Vsc2UgaWYoYi5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXt2YXIgZD0ibm90cmFuc2xhdGUiLGU9InRyYW5zbGF0ZSI7UXQmJmJ1JiYoZD0ibm90cmFuc2xhdGUiLGU9InRyYW5zbGF0ZSIpO2Q9Yi5jbGFzc0xpc3QmJmIuY2xhc3NMaXN0LmNvbnRhaW5zKGQpfHxiLmdldEF0dHJpYnV0ZSYmYi5nZXRBdHRyaWJ1dGUoInRyYW5zbGF0ZSIpPT09Im5vIjtlPWIuY2xhc3NMaXN0JiZiLmNsYXNzTGlzdC5jb250YWlucyhlKXx8Yi5nZXRBdHRyaWJ1dGUmJmIuZ2V0QXR0cmlidXRlKCJ0cmFuc2xhdGUiKT09PSJ5ZXMiO2M9ZD8hMTplPyEwOmN9aWYoYi5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKWMmJl8uQWMoYi50ZXh0Q29udGVudCkmJmIucGFyZW50RWxlbWVudCYmYS5MLm9ic2VydmUoYi5wYXJlbnRFbGVtZW50KTtlbHNlIGlmKGIuY2hpbGROb2Rlcylmb3IoZT0wO2U8Yi5jaGlsZE5vZGVzLmxlbmd0aDtlKyspcnYoYSxiLmNoaWxkTm9kZXNbZV0sCmMpfX0scXY9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9e30sZD0wO2Q8Yi5jaGlsZE5vZGVzLmxlbmd0aDtjPXtrYjp2b2lkIDB9LGQrKyljLmtiPWIuY2hpbGROb2Rlc1tkXSxjLmtiLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUmJl8uQWMoYy5rYi50ZXh0Q29udGVudCkmJihhLlArKyxhLk8uaGFzKGMua2IpfHxhLk8uc2V0KGMua2IsYy5rYi50ZXh0Q29udGVudCksa3YoYS5YZSxjLmtiLnRleHRDb250ZW50KS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihmKXtlLmtiLnRleHRDb250ZW50PWZ9fShjKSkuY2F0Y2goZnVuY3Rpb24oKXt9KS5maW5hbGx5KGZ1bmN0aW9uKCl7YS5QLS07YS5QPT09MCYmYS5sJiZhLmwoMTAwLCEwKX0pKX07bHYucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24oKXttdih0aGlzKTt0aGlzLlVlLnJlc3RvcmUoKTt2YXIgYT10aGlzLkMgaW5zdGFuY2VvZiBOb2RlP3RoaXMuQzpudWxsO2EmJnB2KGEsdGhpcy5KYSgpKX07Cmx2LnByb3RvdHlwZS5NPWZ1bmN0aW9uKCl7Xy51LnByb3RvdHlwZS5NLmNhbGwodGhpcyk7dGhpcy5yZXN0b3JlKCk7Xy5VZCh3aW5kb3csImJsdXIiLHRoaXMudGYsITAsdGhpcyk7Xy5VZCh3aW5kb3csImZvY3VzIix0aGlzLnVmLCEwLHRoaXMpfTt2YXIgc3Y9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9d3IoYS5vLmgpLGY9bmV3IEJ0KGEsYi5EKTtiLkMucHVzaChmKTtEdChmLGIuSSk7RnUoYixlKTtDdChmLGR8fGEucGYpO2I9Y3x8bmV3IFl1KFtdLFtdLGIsYS5KYSgpLGEub2EoKSxhLnlmLGEuSSxhLklhKTtFdChmLGEuVWgsYSk7YS5CJiZEdChmLGIuZG9uZSxiKTtGdChmLGIpfTtfLm09bHYucHJvdG90eXBlO18ubS5VaD1mdW5jdGlvbihhLGIsYyl7Yy5kb25lKCk7dGhpcy5JP3RoaXMuaWgoYSk6dGhpcy5oaChhKTtjLm8uSSgpfTtfLm0udWY9ZnVuY3Rpb24oKXt0aGlzLlI9ITE7dGhpcy5UPTA7eXQodGhpcy5ELHRoaXMuQSl9OwpfLm0udGY9ZnVuY3Rpb24oYSl7YS50YXJnZXQ9PXdpbmRvdyYmKHRoaXMuUj0hMCx0aGlzLlQ9MCx5dCh0aGlzLkQsLjAxKSl9O18ubS5RaD1mdW5jdGlvbihhKXtpZih0aGlzLmcmJnRoaXMuQilpZihfLm9pKF8uWmkocHEsOSkpKWZvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgYz1hW2JdLmFkZGVkTm9kZXM7aWYoYylmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKylydih0aGlzLGNbZF0pfWVsc2V7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKylpZihhW2JdLnRhcmdldCYmYVtiXS50YXJnZXQuY2xhc3NOYW1lJiZ0eXBlb2YgYVtiXS50YXJnZXQuY2xhc3NOYW1lPT09InN0cmluZyImJihhW2JdLnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigidHJhbnNsYXRlIik+PTB8fGFbYl0udGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCJnb29nLSIpPT0wKSlyZXR1cm47dGhpcy53YS5hZGQoKDAsXy55KSh0aGlzLk1pLHRoaXMpKX19OwpfLm0uTWk9ZnVuY3Rpb24oKXt0aGlzLkk9ITA7dGhpcy5HJiYodGhpcy5HLnN0b3AoKSx0aGlzLkc9b3YodGhpcykpO3JldHVybiExfTtfLm0uc2Y9ZnVuY3Rpb24oYSxiKXtEdShiLEd0KGEpKTtzdih0aGlzLGIpO3JldHVybiB0aGlzLllofTtfLm0uWWg9ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5nKXJldHVybiBJdDtpZighSHQoYSkpcmV0dXJuIEp0O2lmKCF0aGlzLkIpZm9yKGE9MDthPHRoaXMuRi5sZW5ndGg7KythKXt2YXIgYz1iLGQ9KDAsXy55KSh0aGlzLk1lLHRoaXMsYix0aGlzLkZbYV0pO2MuRC5hZGQoZCl9cmV0dXJuIHRoaXMuWGh9OwpfLm0ubmY9ZnVuY3Rpb24oYSxiKXtpZih0aGlzLlQmJiF0aGlzLlIpe2E9KG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5UO3ZhciBjPXRoaXMuQTthPDkwMCYmYz4uMDE/Yz1NYXRoLm1heChjKi45LC4wMSk6YT4xMTAwJiZjPC41JiYoYz1NYXRoLm1pbihjKjEuNSwuNSkpO3RoaXMuQT1jO3RoaXMuZ2I/dGhpcy5qZj0uMDE6dGhpcy5kZj10aGlzLkF9dGhpcy5JPXRoaXMuZz0hMDt0aGlzLlQ9KG5ldyBEYXRlKS5nZXRUaW1lKCk7dGhpcy5DaSE9KGE9ZG9jdW1lbnQuYm9keS5pbm5lclRleHR8fGRvY3VtZW50LmJvZHkudGV4dENvbnRlbnR8fGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MKT8odGhpcy5DaT1hLGE9ITApOmE9ITE7YT8odGhpcy5nYj0hMSx0aGlzLkE9dGhpcy5kZix0aGlzLlJ8fHl0KHRoaXMuRCx0aGlzLkEpLEV1KGIsW10uY29uY2F0KHRoaXMuQyksdGhpcy5EKSxhPW5ldyBCdCh0aGlzLHRoaXMuRCksQ3QoYSx0aGlzLnNmKSxFdChhLCgwLF8ueSkodGhpcy5hZix0aGlzKSksCkZ0KGEsYiksdGhpcy5HPWEpOih0aGlzLmdiPSEwLHRoaXMuQT10aGlzLmpmLHRoaXMuUnx8eXQodGhpcy5ELHRoaXMuQSksYT1uZXcgQnQodGhpcyx0aGlzLkQpLEN0KGEsdGhpcy5uZiksRXQoYSwoMCxfLnkpKHRoaXMuYWYsdGhpcykpLEZ0KGEsYiksdGhpcy5HPWEpO3JldHVybiBJdH07Xy5tLlhoPWZ1bmN0aW9uKGEsYil7aWYoIXRoaXMuZylyZXR1cm4gSXQ7dGhpcy5JPXRoaXMuZz0hMTt0aGlzLkhiP0d1KGIsITApOihHdShiKSxiLlAoYi5sKSk7aWYodGhpcy5paSlyZXR1cm4gdGhpcy5uZjtiLmNsZWFyKCk7cmV0dXJuIEl0fTsKdmFyIHV2PWZ1bmN0aW9uKGEsYixjKXthOnt2YXIgZD10dihhKSxlPWEuZmIsZj1hLmppLGc9YS5VZS5nO2I9R3QoYik7aWYoIWMuRyl7aWYoYy5xYS5sZW5ndGg9PTApe2MubD09MCYmYy5xYj09MCYmYy5CKDAsITApO2M9ITE7YnJlYWsgYX1jLkc9SXUoYyxkLGUsZixnKX1jLnJhPSEwO1J0KGMuRyxjLmosYy5oLGIpO2M9ITB9cmV0dXJuIGM/YS5wZjphLlNjfSx0dj1mdW5jdGlvbihhKXtyZXR1cm4gYS5JZD8oMCxfLnkpKGEuSy5vLGEuSyk6ZnVuY3Rpb24oKXt9fTtfLm09bHYucHJvdG90eXBlOwpfLm0ucGY9ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5nKXJldHVybiBJdDt2YXIgYz1iLm87aWYoYy5nPT1udWxsKXtpZighYy5yYSlyZXR1cm4gdXYodGhpcyxhLGIubyk7aWYoIUh0KGEpKXJldHVybiBKdDtjLnJhPSExO2MuZz1jLkcuZGN8fG51bGw7dmFyIGQ9Yy5nP2MuZzpjLkc9bnVsbDtpZighZClyZXR1cm4gdXYodGhpcyxhLGIubyk7dGhpcy5GLnB1c2goZCk7dmFyIGU9ZC5tYSgpO2lmKHRoaXMuby5oYXMoZSwhdGhpcy5CKXx8Yi5HW2VdIT1udWxsJiZiLkdbZV0pcmV0dXJuIGU9Yy5nLkQsYy5sKz1lLGMuai09ZSxjLmc9bnVsbCx0aGlzLkImJkp1KGIsZCwhMSksdXYodGhpcyxhLGIubyk7ZT10aGlzLm87ZD1kLm1hKCk7ZS5nW2RdPW51bGx9Yi5sYigpPjAmJnl0KHRoaXMuRCwuNSk7cmV0dXJuIEt1KGMsYix3cih0aGlzLm8uaCkpP3RoaXMuU2M6dXYodGhpcyxhLGIubyl9OwpfLm0uU2M9ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5nfHxiLmxiKCk9PTApcmV0dXJuIEl0O3N2KHRoaXMsYi5vKTtyZXR1cm4gdGhpcy5CPyhiLnRyYWNrVmlzaWJpbGl0eShHdChhKSksdGhpcy5aaCk6Yi50cmFuc2xhdGUoYSk9PTA/SXQ6dGhpcy5yZn07Xy5tLlpoPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZz9IdChhKT9iLnRyYW5zbGF0ZShhKT09MD9JdDp0aGlzLnJmOkp0Okl0fTsKXy5tLk1lPWZ1bmN0aW9uKGEsYil7Yi5qJiZ0aGlzLm8ucmVtb3ZlKGIubCk7aWYoIXRoaXMuZylyZXR1cm4hMTtpZih0aGlzLm8uaGFzKGIubWEoKSwhMSkpe3ZhciBjPXRoaXMubztjLmhhcyhiLmwsITEpPyhiLmg9Yy5yZWFkKGIubCksYi5MPSEwKTooYy5yZW1vdmUoYi5sKSxiLmo9ITApO3F0KGIpfWVsc2UgaWYoYz10aGlzLm8sYi5qKWMucmVtb3ZlKGIubCk7ZWxzZSBpZihiLkYpe3ZhciBkPWIuRi5yZXBsYWNlKC88YSAvZywiPHNwYW4gIikucmVwbGFjZSgvXC9hPi9nLCIvc3Bhbj4iKTtiLkw9ITA7ZGVsZXRlIGIuRjtiLkY9bnVsbDtiLmg9W107dmFyIGU9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSxmPWUuY3JlYXRlRWxlbWVudCgiZGl2Iik7bXAoZiwhMSk7ZD1kLmluZGV4T2YoIjxpPiIpPj0wP2Q6IjxiPiIrZCsiPC9iPiI7ZD1fLktiKGQpO2Q9Xy5tbChkKTtmLm5vZGVUeXBlPT09MSYmTWwoZik7Zi5pbm5lckhUTUw9Xy5raihkKTsKZS5ib2R5LmFwcGVuZENoaWxkKGYpO2U9W107Zm9yKGQ9Zi5maXJzdENoaWxkO2Q7ZD1kLm5leHRTaWJsaW5nKWlmKGQudGFnTmFtZT09IkkiKXZhciBnPW90KGIsRW8oZCksZC5pbm5lckhUTUwpO2Vsc2UgaWYoZC50YWdOYW1lPT0iQiIpe2d8fChnPW90KGIsIiIsIiIpKTtpZihiLmcubGVuZ3RoPT0xKXV0KGcuVSxlLDAsZCk7ZWxzZXt2YXIgaD1lO3ZhciBrPWQ7dmFyIGw9Yi5nO2c9Zy5VO2Zvcih2YXIgbj1bXSxxPWsuZmlyc3RDaGlsZDtxO3E9cCl7dmFyIHA9cS5uZXh0U2libGluZzt2dChxKX1mb3IocD1rLmZpcnN0Q2hpbGQ7cDtwPXAubmV4dFNpYmxpbmcpcC5hdHRyaWJ1dGVzJiZwLmF0dHJpYnV0ZXMuaT8oaz1wYXJzZUludChwLmF0dHJpYnV0ZXMuaS5ub2RlVmFsdWUsMTApLCFpc05hTihrKSYmaz49MCYmazxsLmxlbmd0aCYmKGxba10ucmQmJm5ba10/bltrXS5aKz1wLmZpcnN0Q2hpbGQmJnAuZmlyc3RDaGlsZC5ub2RlVHlwZT09Mz9wLmZpcnN0Q2hpbGQubm9kZVZhbHVlOgpFbyhwKTpuW2tdPXV0KGcsaCxrLHApKSk6cC5ub2RlVHlwZT09MyYmZy5wdXNoKHtYOi0xLFo6cG8ocC5ub2RlVmFsdWUpfSk7ZyE9bnVsbCYmZy5sZW5ndGg+MCYmZ1swXS5YPT0tMSYmKGcubGVuZ3RoPT0xP2dbMF0uWD0wOihnWzFdLlo9Z1swXS5aK2dbMV0uWixnLnNoaWZ0KCkpKX1nPXZvaWQgMH1kPWIuaDtmb3IoaD0wO2g8ZC5sZW5ndGgtMTsrK2gpbD1kW2hdLGc9a28obC5VW2wuVS5sZW5ndGgtMV0uWiksZz1nLmNoYXJDb2RlQXQoZy5sZW5ndGgtMSksMTIyODg8PWcmJmc8PTEyMzUxfHw2NTI4MDw9ZyYmZzw9NjU1MTl8fChsLlVbbC5VLmxlbmd0aC0xXS5aKz0iICIpO18uQWQoZik7Zm9yKGY9MDtmPGIuZy5sZW5ndGg7KytmKWY8ZS5sZW5ndGgmJmY8Yi5DLmxlbmd0aCYmZVtmXSE9bnVsbCYmKGQ9Yi5DW2ZdLGg9ZVtmXS5zdGFydCxoIT1udWxsJiYobD1kLnN1YnN0cmluZygwLGQubGVuZ3RoLWQucmVwbGFjZSgvXltcc1x4YTBdKy8sIiIpLmxlbmd0aCksbD09IiAiJiYKKGw9IiIpLGwmJihoLlo9bCtoLloucmVwbGFjZSgvXltcc1x4YTBdKy8sIiIpKSksaD1lW2ZdLmVuZCxoIT1udWxsJiYoZD1kLnN1YnN0cmluZyhrbyhkKS5sZW5ndGgpLGQ9PSIgIiYmKGQ9IiIpLGQmJihoLlo9a28oaC5aKStkKSkpO2IuaC5sZW5ndGghPTF8fGIuaFswXS5oZXx8KGIuaFswXS5oZT1iLmwpO2Mud3JpdGUoYi5sLGIuaCk7cXQoYil9Yi5JfHwodGhpcy5IYj0hMSk7Yz1iLmo/ITA6dm9pZCAwO2EuVys9Yi5EO2MhPW51bGwmJihhLmxhPSEwKTtiPU1hdGgubWluKE1hdGguZmxvb3IoYS5XKjEwMC9hLmwpLDEwMCk7aWYoYS5GIT1ifHxjKWEuRj1iLGEuUj8oYS5CKGEuRiwhMCxjKSxhLlAoYS5XKSk6YS5CKGEuRiwhMSxjKTtyZXR1cm4hMX07Cl8ubS5yZj1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLmcpcmV0dXJuIEl0O2lmKCFIdChhKSlyZXR1cm4gSnQ7aWYoYi5sYigpPjEpe2E9Yi5sWzBdO3ZhciBjPWIuZztpZihhLmp8fGMubGVuZ3RoPT0wfHxhLmc9PW51bGx8fGEuZy5sZW5ndGg9PTApYT1udWxsO2Vsc2V7Zm9yKHZhciBkPVtdLGU9W10sZj0wO2Y8YS5nLmxlbmd0aCYmZjxjLmxlbmd0aDsrK2Ype3ZhciBnPWEuZ1tmXTtnJiZnWzBdJiZnWzFdPT0yMDB8fChlLnB1c2goY1tmXSksZC5wdXNoKGEub1tmXSkpfWE9ZS5sZW5ndGg+MD97Tmk6bmV3IGZ1KGQsITApLE9pOmV9Om51bGx9YT1hP25ldyBZdShbYS5OaV0sYS5PaSxiLm8sYi5oLGIuaixiLnFhLGIuTyxiLkIpOm51bGw7YSE9bnVsbCYmc3YodGhpcyxiLm8sYSx0aGlzLlNjKX1lbHNle2E9ITE7Zm9yKGM9MDtjPGIubC5sZW5ndGg7KytjKWQ9Yi5sW2NdLGQuanx8ZC5oPT0yMDAmJmQuZyYmZC5nWzBdP2Q9ZC5sPSExOihkLmo9ITAsZD1kLmw9ITApLGE9ZHx8YTtpZihhKXJldHVybiB0aGlzLlNjfWQ9CnRoaXMuSmEoKTthPXRoaXMub2EoKTtpZihiLmcubGVuZ3RoPjEpaWYoYz1iLmxbMF0sZT1kPT0iYXV0byIsZD1iLmcsYy5oPT0yMDApZm9yKGY9MDtmPGMuZy5sZW5ndGgmJmY8ZC5sZW5ndGg7KytmKWlmKChnPWMuZ1tmXSkmJmdbMV09PTIwMCl7dmFyIGg9Z1syXSxrPWRbZl0sbD1rLG49aCE9bnVsbCYmaD09YTtsLkY9Z1swXTtuIT09dm9pZCAwJiYobC5LPW4pO2suST1lJiZoPT1udWxsfWVsc2UgZFtmXS5qPSEwO2Vsc2UgZm9yKGE9MDthPGQubGVuZ3RoOysrYSlkW2FdLmo9ITA7ZWxzZXtjPW5ldyBldShkPT0iYXV0byIpO2ZvcihkPTA7ZDxiLmwubGVuZ3RoOysrZClmPWIubFtkXSxlPWEsZi5oPT0yMDAmJmYuZyYmZi5nWzBdPyhmPWYuZ1swXSxjLmcucHVzaChmWzBdKSxmPWZbMl0sYy5oPWMuaCYmZiE9bnVsbCYmZj09ZSxmIT1udWxsJiYoYy5sPSExKSk6Yy5qPSEwO2IuRiE9bnVsbCYmKGMuZy5wdXNoKGIuRiksYi5GPW51bGwpO2lmKGE9Yi5nWzBdKWQ9Yy5tYSgpLGU9Yy5oLAphLkY9ZCxlIT09dm9pZCAwJiYoYS5LPWUpLGEuST1jLmwsYS5qPWMuan1pZih0aGlzLkIpe2E9KDAsXy55KSh0aGlzLk1lLHRoaXMpO2ZvcihjPTA7YzxiLmcubGVuZ3RoO2MrKylhKGIubyxiLmdbY10pO2ZvcihjPTA7YzxiLkMubGVuZ3RoO2MrKylhKGIubyxiLkNbY10pOyR1KGIpO2IuVz0hMDtiLkkmJmIuQiYmKGI9Yi5CLC0tYi5oPT0wJiZWdShiLmcpKX1yZXR1cm4gSXR9Owp2YXIgbXY9ZnVuY3Rpb24oYSl7YS5sYSYmYS5sYS5kaXNjb25uZWN0KCk7YS5JYSYmYS5JYS5yZXNldCgpO2EuZyYmKGEuRyYmYS5HLnN0b3AoKSxhLmc9ITEsYS5JPSExKTtpZihhLkYubGVuZ3RoKXtmb3IodmFyIGI9MDtiPGEuRi5sZW5ndGg7KytiKWEuRltiXS5kaXNwb3NlKCk7YS5GPVtdfWEuSyE9bnVsbCYmKGEuSy5yZXN0b3JlKCksYS5LPW51bGwpO2EuWGIhPW51bGwmJihhLlhiLnJlc3RvcmUoKSxhLlhiPW51bGwpO2EuTyYmYS5PLnNpemU+MCYmKGEuTy5mb3JFYWNoKGZ1bmN0aW9uKGMsZCl7ZC50ZXh0Q29udGVudD1jfSksYS5PLmNsZWFyKCkpO2EuTCYmKGEuTC5kaXNjb25uZWN0KCksYS5MPW51bGwpO2EubGYucmVzdG9yZSgpfSxwdj1mdW5jdGlvbihhLGIpe2EuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpJiZhLnNldEF0dHJpYnV0ZSgieG1sOmxhbmciLGIpO2EuZ2V0QXR0cmlidXRlKCJsYW5nIikmJmEuc2V0QXR0cmlidXRlKCJsYW5nIixiKX07CkRyLmF0dGFjaCgzMDQ2LGx2LnByb3RvdHlwZSx7b2k6MSxyaToyLHBpOjMsdGk6NH0pO3ZhciB2dj1XcShjciksd3Y9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbCxuKXtfLnUuY2FsbCh0aGlzKTt0aGlzLk89Ynx8bnVsbDt0aGlzLks9ISFjO3RoaXMuRz1kfHwidHJhbnNwYXJlbnQiO3RoaXMuRD1mfHwiIjtiPWd8fHtmZXRjaFN0YXJ0OjAsU2s6MH07YT1iLmZldGNoU3RhcnR8fDA7Yj1iLmZldGNoRW5kfHwwO3RoaXMuRj1hJiZiP2ItYTowO3RoaXMuUj1EYXRlLm5vdygpLXJxO3RoaXMuQT0hMTt0aGlzLmc9bmV3IFJyKGV8fCIiLHZvaWQgMCxmLG4pO3RoaXMuST1uZXcgenQoMSk7dGhpcy5CPW5ldyB0dDt0aGlzLmw9bnVsbDt0aGlzLkM9ITA7dGhpcy5vPV8udi5JbnRlcnNlY3Rpb25PYnNlcnZlciE9bnVsbDt0aGlzLkw9aHx8bnVsbDtlPW5ldyBqcjtmPW5ldyBscih0aGlzLmcuaW5pdGlhbGl6ZS5iaW5kKHRoaXMuZyxlLnJlZ2lzdGVyKCkpKTt0aGlzLnpjPW1yKGYsZS5kZWxheSgoMCxfLnkpKHRoaXMuemMsdGhpcykpKTt0aGlzLlBjPW1yKGYsZS5kZWxheSgoMCxfLnkpKHRoaXMuUGMsCnRoaXMpKSk7dGhpcy5xZD1tcihmLGUuZGVsYXkoKDAsXy55KSh0aGlzLnFkLHRoaXMpKSk7dGhpcy5yZXN0b3JlPW1yKGYsZS5kZWxheSgoMCxfLnkpKHRoaXMucmVzdG9yZSx0aGlzKSkpO2YuZmluaXNoKCk7ZS5maW5pc2goKTtwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2UubWFyayYmcGVyZm9ybWFuY2UubWFyayhScSx2b2lkIDApO2U9ZHIodnYsMSk7Zj1uZXcgUW47Zj1fLlRqKGYsMSx3aW5kb3cubG9jYXRpb24ub3JpZ2luKTthOntpZihwZXJmb3JtYW5jZSYmKGg9cGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgibmF2aWdhdGlvbiIpLGgubGVuZ3RoPT0xKSl7aD1oWzBdO2JyZWFrIGF9aD1udWxsfWgmJihuPW5ldyBGbSxuPV8uVGoobiwxLCIiKSxhPUdtKGguc3RhcnRUaW1lKSxuPV8uTChuLDIsYSksYT1IbShoLmR1cmF0aW9uKSxuPV8uTChuLDMsYSksYT1uZXcgUG4sYT1fLlRqKGEsMSxoLmluaXRpYXRvclR5cGUpLGE9Xy5UaihhLDIsaC5uZXh0SG9wUHJvdG9jb2wpLApiPUdtKGgud29ya2VyU3RhcnR8fDApLGE9Xy5MKGEsMyxiKSxiPUdtKGgucmVkaXJlY3RTdGFydCksYT1fLkwoYSw0LGIpLGI9R20oaC5yZWRpcmVjdFN0YXJ0KSxhPV8uTChhLDQsYiksYj1HbShoLnJlZGlyZWN0RW5kKSxhPV8uTChhLDUsYiksYj1HbShoLmZldGNoU3RhcnQpLGE9Xy5MKGEsNixiKSxiPUdtKGguZG9tYWluTG9va3VwU3RhcnQpLGE9Xy5MKGEsNyxiKSxiPUdtKGguZG9tYWluTG9va3VwRW5kKSxhPV8uTChhLDgsYiksYj1HbShoLmNvbm5lY3RTdGFydCksYT1fLkwoYSw5LGIpLGI9R20oaC5jb25uZWN0RW5kKSxhPV8uTChhLDEwLGIpLGI9R20oaC5zZWN1cmVDb25uZWN0aW9uU3RhcnQpLGE9Xy5MKGEsMTEsYiksYj1HbShoLnJlc3BvbnNlU3RhcnQpLGE9Xy5MKGEsMTMsYiksYj1HbShoLnJlc3BvbnNlRW5kKSxhPV8uTChhLDE0LGIpLGE9Xy5qayhhLDE1LGgudHJhbnNmZXJTaXplKSxhPV8uamsoYSwxNixoLmVuY29kZWRCb2R5U2l6ZSksYT1fLmprKGEsMTcsaC5kZWNvZGVkQm9keVNpemUpLApuPUptKG4sNixhKSxfLkwoZiwzLG4pLG49Tm0oUnEpKSYmKGg9T20oVXEse3N0YXJ0OmgucmVzcG9uc2VFbmQsZW5kOm4uc3RhcnRUaW1lfHxwZXJmb3JtYW5jZS5ub3coKX0pKSYmKHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzJiZwZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKFVxKSxoPUttKGgpLF8uTChmLDQsaCksaD1VbihlKSxfLkwoaCw0LGYpKTtmcihlLDEpfTtfLkcod3YsXy51KTtEci5hdHRhY2goMTQwOTcsd3YucHJvdG90eXBlLHtiZTpmdW5jdGlvbigpe1FtKHRoaXMuZy5UYSgpPyJ0ZV9hZmFzIjoidGVfYWZhdSIpfX0pO18ubT13di5wcm90b3R5cGU7Xy5tLlBpPWZ1bmN0aW9uKGEpe3RoaXMubz1hfTtfLm0uU2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLlRhKCl9OwpfLm0uemM9ZnVuY3Rpb24oYSxiKXt0aGlzLmcuU2EoKT90aGlzLmcuby5zZW5kKHtkaXNwbGF5X2xhbmd1YWdlOmIsa2V5OiJBSXphU3lCV0RqMFFKdlZJeDhYT2hSZWdYWDVfU3JSV3hoVDVIczQifSxhKS50aGVuKGZ1bmN0aW9uKGMpe3JldHVybiBhKGMpfSk6KHRoaXMuYmUoKSxhKG51bGwpKX07Cl8ubS5QYz1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZztpZihiKWEoYik7ZWxzZSBpZih0aGlzLmcuU2EoKSl7Yj1uZXcgYXMoZG9jdW1lbnQuYm9keSwhMSwhMSwxLDEpO2Zvcih2YXIgYz1bXSxkPTAsZT10aGlzLmcuaC5IZjtjLmxlbmd0aCtkPGU7KXt2YXIgZj1iLm5leHQoKTtpZihmLmRvbmUpYnJlYWs7Zj1mLnZhbHVlO2IuZz09MSYmJHQoZik/YnMoYik6Zi5ub2RlVHlwZT09MyYmKGY9Xy5BYyhqbyhmLm5vZGVWYWx1ZSkpKSYmKGMucHVzaChmKSxkKz1mLmxlbmd0aCl9U3IodGhpcy5nLGEsYy5qb2luKCIgIikpLnRoZW4oZnVuY3Rpb24oZyl7YShnKX0sZnVuY3Rpb24oZyl7cmV0dXJuIGEobnVsbCxnKX0pfWVsc2UgdGhpcy5iZSgpLGEobnVsbCwhMCl9OwpfLm0ucWQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2di5FYj1hO3Z2LkZiPWI7dmFyIGY9ZHIodnYsMik7ZXIodnYsZik7dmFyIGc9Tm0oUnEpO2lmKGcpe3ZhciBoPU5tKFNxKTtpZihoKXt2YXIgaz1PbShWcSx7c3RhcnQ6Zy5zdGFydFRpbWUsZW5kOmguc3RhcnRUaW1lfHxwZXJmb3JtYW5jZS5ub3coKX0pO2smJihnPVVuKGYpLGg9bmV3IFNuLGs9S20oayksaD1fLkwoaCwxLGspLF8uTChnLDUsaCkscGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMmJnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMoVnEpKX19ZnIoZiwyKTtmPXtkZXRhaWw6e3NvdXJjZUxhbmd1YWdlOmEsdGFyZ2V0TGFuZ3VhZ2U6Yn19O3BlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5tYXJrJiZwZXJmb3JtYW5jZS5tYXJrKFNxLGYpO2Y9RGF0ZS5ub3coKTtDcigpO2lmKCFhfHx4cihhLGIpKWE9ImF1dG8iO2lmKGV8fGEhPXRoaXMuaHx8YiE9dGhpcy5qKXRoaXMuQj1uZXcgdHQ7dGhpcy5oPWE7dGhpcy5qPQpiO3RoaXMuZy5TYSgpPyhkPWR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLmwmJnRoaXMubC5kaXNwb3NlKCksdGhpcy5sPW5ldyBsdihkLHRoaXMuZyx0aGlzLk8sdGhpcy5LLHRoaXMuRywhMCx0aGlzLkksdGhpcy5CLHRoaXMubyx0aGlzLkwpLHRoaXMubC55Zj10aGlzLkEsdGhpcy5DPSEwLHRoaXMubC50cmFuc2xhdGUoYSxiLGMsZSwoMCxfLnkpKHRoaXMueWksdGhpcyxmLGEsYikpKToodGhpcy5iZSgpLGMoMCwhMSwhMCkpfTtfLm0ucGc9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMubCYmdGhpcy5sLmd9O18ubS5ZZj1mdW5jdGlvbihhKXt0aGlzLkE9YX07Xy5tLnJlc3RvcmU9ZnVuY3Rpb24oKXt2YXIgYT1kcih2diwzKTtlcih2dixhKTtmcihhLDMpO3BlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5tYXJrJiZwZXJmb3JtYW5jZS5tYXJrKFRxLHZvaWQgMCk7Q3IoKTt0aGlzLmcuU2EoKSYmdGhpcy5sJiZ0aGlzLmwucmVzdG9yZSgpfTsKXy5tLk09ZnVuY3Rpb24oKXtCcigpO3d2LmVhLk0uY2FsbCh0aGlzKTt0aGlzLmcuZGlzcG9zZSgpO3RoaXMubD10aGlzLmc9bnVsbDt0aGlzLkI9bmV3IHR0fTsKXy5tLnlpPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuQyYmKHRoaXMuQz0hMSxiPXtzbDpiLHRsOmMsdGV4dGxlbjpkfSx0aGlzLkEmJihiLmN0dD0iMSIpLHRoaXMuRCE9IiImJihiLnNwPXRoaXMuRCksYi50dHQ9RGF0ZS5ub3coKS1hLGIudHRsPXRoaXMuUix0aGlzLkYmJihiLnR0Zj10aGlzLkYpLHRoaXMubyYmKGIuc3I9MSksYT1wcSxjPVtdLF8ub2koXy5aaShhLDIpKSYmYy5wdXNoKCJzZGEiKSxfLm9pKF8uWmkoYSwzKSkmJmMucHVzaCgiZWVpcyIpLGQ9Xy5iaihhLGlxLDYpLF8ub2koXy5aaShkLDEpKSYmYy5wdXNoKCJlc3RzIiksXy5vaShfLlppKGEsNykpJiZjLnB1c2goImVoY20iKSxfLm9pKF8uWmkoYSw4KSkmJmMucHVzaCgiZW9wYSIpLF8ub2koXy5aaShhLDkpKSYmYy5wdXNoKCJlYWR0IiksYi5lZj1jLmpvaW4oIiwiKSxRbSgidGVfdGltZSIsYikpfTt2YXIgeHY9ZnVuY3Rpb24oYSl7eG4uY2FsbCh0aGlzLGEpO3RoaXMuQT1uZXcgXy5IYih0aGlzKX07Xy5CKHh2LHhuKTt4di5wcm90b3R5cGUuUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTthLmNsYXNzTmFtZT0iZ29vZy10ZS1jb21ibyI7YS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLFIuRWUpO3RoaXMuT2EoYSl9O3h2LnByb3RvdHlwZS5MYT1mdW5jdGlvbigpe3huLnByb3RvdHlwZS5MYS5jYWxsKHRoaXMpO3RoaXMuWmUoKX07eHYucHJvdG90eXBlLlplPWZ1bmN0aW9uKCl7Xy54KHRoaXMuSCgpLCJjaGFuZ2UiLHByKHRoaXMsImNoYW5nZSIpKTt0aGlzLmRpc3BhdGNoRXZlbnQoImxvYWQiKX07eHYucHJvdG90eXBlLnNhPWZ1bmN0aW9uKCl7eG4ucHJvdG90eXBlLnNhLmNhbGwodGhpcyk7dGhpcy5BLmRpc3Bvc2UoKTt0aGlzLkE9bnVsbH07CnZhciB5dj1mdW5jdGlvbihhLGIpe2EuSCgpLnBhcmVudE5vZGUhPWImJihhLkgoKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEuSCgpKSxiLmFwcGVuZENoaWxkKGEuSCgpKSl9O18ubT14di5wcm90b3R5cGU7Xy5tLnVjPWZ1bmN0aW9uKGEpe3RoaXMuaC5pZSh0aGlzLkgoKSk7Zm9yKHZhciBiIGluIGEpaWYoYVtiXSE9PU9iamVjdC5wcm90b3R5cGVbYl0pe3ZhciBjPXRoaXMuaC5TKCJPUFRJT04iLHt2YWx1ZTpifSk7dGhpcy5oLlNiKGMsYVtiXSk7dGhpcy5IKCkuYXBwZW5kQ2hpbGQoYyl9dGhpcy5IKCkuc2VsZWN0ZWRJbmRleD0wfTtfLm0uTWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IKCkudmFsdWV9O18ubS5jYj1mdW5jdGlvbihhKXtpZih0aGlzLkgoKS52YWx1ZSE9YSlmb3IodmFyIGI9MCxjO2M9dGhpcy5IKCkub3B0aW9ucy5pdGVtKGIpOysrYilpZihjLnZhbHVlPT1hKXt0aGlzLkgoKS5zZWxlY3RlZEluZGV4PWI7YnJlYWt9fTsKXy5tLkFjPWZ1bmN0aW9uKGEpe2lmKF8ub2MoYSk9PSJ1bmRlZmluZWQiKXJldHVybiB0aGlzLkgoKS5vcHRpb25zLml0ZW0odGhpcy5IKCkuc2VsZWN0ZWRJbmRleCkudGV4dDtmb3IodmFyIGI9MCxjO2M9dGhpcy5IKCkub3B0aW9ucy5pdGVtKGIpOysrYilpZihjLnZhbHVlPT1hKXJldHVybiBjLnRleHR9O18ubS5SYj1mdW5jdGlvbihhKXt0aGlzLkgoKS5kaXNhYmxlZD0hYX07dmFyIHp2PWZ1bmN0aW9uKGEpe3h2LmNhbGwodGhpcyxhKX07Xy5CKHp2LHh2KTt6di5wcm90b3R5cGUubmI9ZnVuY3Rpb24oYSl7dGhpcy51Yy5jYWxsKHRoaXMsYSl9O3ZhciBBdj1mdW5jdGlvbihhLGIpe3h2LmNhbGwodGhpcyxiKTt0aGlzLmc9YSYmSmwoYSl8fHt9O3RoaXMuZy5vZT10aGlzLmcub2V8fDExO3RoaXMuZy5wZD10aGlzLmcucGQhPTA7dGhpcy5nLmViPUFxfTtfLkIoQXYseHYpO18ubT1Bdi5wcm90b3R5cGU7Xy5tLktjPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoIkdhIik7fTsKXy5tLlM9ZnVuY3Rpb24oKXt0aGlzLktjKCk7dGhpcy5EPXRoaXMuSCgpO3RoaXMubD13bygiSUZSQU1FIix7ZnJhbWVCb3JkZXI6MCwiY2xhc3MiOiJWSXBnSmQtWlZpOW9kLXhsMDdPYi1PRVZtY2Qgc2tpcHRyYW5zbGF0ZSIsdGl0bGU6Ui5FZX0pO3RoaXMubC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIjttcCh0aGlzLmwsITEpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5sKX07Cl8ubS5aZT1mdW5jdGlvbigpe3ZhciBhPV8ueGYudGVzdChvcSk/InJ0bCI6Imx0ciIsYj1fLkxiKHRoaXMuZy5lYiksYz1TKHRoaXMsIm1lbnVCb2R5Iik7dGhpcy5BLk4odGhpcy5sLCJsb2FkIix0aGlzLnFnKTt0cih0aGlzLmwsKDAsXy55KShmdW5jdGlvbigpe3ZhciBkPXpvKHRoaXMubCksZT17fSxmPWUmJmUuVGU7ZT1XbihWbihfLnlsKCksIjxoZWFkPiIpLE91KGUpKTtmPSc8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEY4Ij48bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInK1AoeHAoYikpKyciJysoZj8nIG5vbmNlPSInK1AoWXAoZikpKyciJzoiIikrJz48L2hlYWQ+PGJvZHkgc2Nyb2xsPSJubyIgc3R5bGU9Im1hcmdpbjowcHg7b3ZlcmZsb3c6aGlkZGVuIiBkaXI9IicrUChhKSsnIiBtYXJnaW5IZWlnaHQ9MCBtYXJnaW5XaWR0aD0wIGxlZnRNYXJnaW49MCB0b3BNYXJnaW49MCBib3JkZXI9MD48ZGl2IGlkPSInKwpQKGMpKyciIGNsYXNzPSc7aWYod3AoIlZJcGdKZC1aVmk5b2QteGwwN09iIixfLnFsKSl7dmFyIGc9TXAoIlZJcGdKZC1aVmk5b2QteGwwN09iIi5tYSgpKTtnPVN0cmluZyhnKS5yZXBsYWNlKE9wLENwKX1lbHNlIGc9IlZJcGdKZC1aVmk5b2QteGwwN09iIi5yZXBsYWNlKE5wLENwKTtlPVZuKGUsZitnKyI+PC9kaXY+PC9ib2R5PiIpLlRiKCk7ZC53cml0ZShfLmtqKGUpKTtkLmNsb3NlKCl9LHRoaXMpKX07Xy5tLnFnPWZ1bmN0aW9uKCl7dGhpcy5qPW5ldyBfLnJkKHpvKHRoaXMubCkpO3RoaXMuTD10aGlzLmouSChTKHRoaXMsIm1lbnVCb2R5IikpO3RoaXMuQS5OKHRoaXMuRCwiY2xpY2siLHRoaXMuVGQpO18uU2M/dGhpcy5BLk4odGhpcy5sLCJibHVyIix0aGlzLlJjKTp0aGlzLkEuTihBbyh0aGlzLmwpLCJibHVyIix0aGlzLlJjKTt0aGlzLmRpc3BhdGNoRXZlbnQoImxvYWQiKX07Cl8ubS5zYT1mdW5jdGlvbigpe3h2LnByb3RvdHlwZS5zYS5jYWxsKHRoaXMpO18uQWQodGhpcy5sKTt0aGlzLkQ9dGhpcy5UPXRoaXMuQj10aGlzLkw9dGhpcy5qPXRoaXMubD1udWxsfTtfLm0ucWY9ZnVuY3Rpb24oYSl7dGhpcy5vIT1hLmN1cnJlbnRUYXJnZXQudmFsdWUmJih0aGlzLmNiKGEuY3VycmVudFRhcmdldC52YWx1ZSksdGhpcy5kaXNwYXRjaEV2ZW50KCJjaGFuZ2UiKSk7dGhpcy5SYygpfTtfLm0uVGQ9ZnVuY3Rpb24oKXtCdih0aGlzKTtBbyh0aGlzLmwpLmZvY3VzKCk7dGhpcy5yYT0hMH07Xy5tLlJjPWZ1bmN0aW9uKCl7dGhpcy5yYSYmKHRoaXMucmE9ITEsQnYodGhpcywhMSksXy5tYihfLnNkKHRoaXMuRCkpLmZvY3VzKCkpfTtfLm0ua2U9ZnVuY3Rpb24oKXt9O18ubS5sZT1mdW5jdGlvbigpe307CnZhciBCdj1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiPT0idW5kZWZpbmVkInx8Yil7YS5sZSgpO2I9anAoYS5ELHdpbmRvdyk7dmFyIGM9Yi55K2EuRC5vZmZzZXRIZWlnaHQsZD1iLnktYS5HLmhlaWdodCxlPWIueCxmPWIueCthLkQub2Zmc2V0V2lkdGgtYS5HLndpZHRoO2lmKF8uU2MmJiFzbygpKXt2YXIgZz1kb2N1bWVudC5ib2R5O2MtPWcub2Zmc2V0VG9wO2QtPWcub2Zmc2V0VG9wO2UtPWcub2Zmc2V0TGVmdDtmLT1nLm9mZnNldExlZnR9ZWxzZSBnPUtuKGRvY3VtZW50KSxjLT1nLnksZC09Zy55LGUtPWcueCxmLT1nLng7Zz1fLmliKHdpbmRvdyk7Yi55PWIueTw9Zy5oZWlnaHQtYS5HLmhlaWdodD9jOmQ7Yi55PmcuaGVpZ2h0LWEuRy5oZWlnaHQmJihiLnk9Zy5oZWlnaHQtYS5HLmhlaWdodCk7Yi55PDAmJihiLnk9MCk7Xy54Zi50ZXN0KG9xKT9iLng9Zj49MD9mOmU6Yi54PWU8PWcud2lkdGgtYS5HLndpZHRoP2U6ZjtiLng+Zy53aWR0aC1hLkcud2lkdGgmJihiLng9Zy53aWR0aC0KYS5HLndpZHRoKTtiLng8MCYmKGIueD0wKTtlcChhLmwsYik7bXAoYS5sLCEwKTtDdihhKX1lbHNlIGEua2UoKSxtcChhLmwsITEpfTtfLm09QXYucHJvdG90eXBlO18ubS5NYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm99OwpfLm0udWM9ZnVuY3Rpb24oYSl7dGhpcy5qLmllKHRoaXMuTCk7bXAodGhpcy5sLCEwKTt0aGlzLklhPWE7dGhpcy5CPVtdO2Zvcih2YXIgYiBpbiBhKWlmKGFbYl0hPT1PYmplY3QucHJvdG90eXBlW2JdKWlmKGFbYl09PSItLS0iKXt2YXIgYz17bGluazp0aGlzLmouUygiRElWIix7Y2xhc3NOYW1lOiJWSXBnSmQtWlZpOW9kLXZIMUdtZi1oZ0RVd2UiLHZhbHVlOmJ9KSxnaTohMH07dGhpcy5CLnB1c2goYyl9ZWxzZXtjPXtsaW5rOnRoaXMuai5TKCJBIix7Y2xhc3NOYW1lOiJWSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kIixocmVmOiIjIix2YWx1ZTpifSl9O3RoaXMuQi5wdXNoKGMpO3ZhciBkPXRoaXMuai5TKCJESVYiLHtzdHlsZToid2hpdGUtc3BhY2U6bm93cmFwIn0pO3RoaXMuai5hcHBlbmRDaGlsZChjLmxpbmssZCk7dGhpcy5nLnBkJiZ0aGlzLmouYXBwZW5kQ2hpbGQoZCx0aGlzLmouUygiU1BBTiIse2NsYXNzTmFtZToiaW5kaWNhdG9yIn0sIlx1MjAzYSIpKTsKdGhpcy5qLmFwcGVuZENoaWxkKGQsdGhpcy5qLlMoIlNQQU4iLHtjbGFzc05hbWU6InRleHQifSx0eXBlb2YgYVtiXT09PSJmdW5jdGlvbiI/YVtiXSgpOmFbYl0pKTt0aGlzLkEuTihjLmxpbmssImNsaWNrIix0aGlzLnFmKX1hPXRoaXMuQi5sZW5ndGgtMTthPU1hdGgucm91bmQoKGEtYSV0aGlzLmcub2UpL3RoaXMuZy5vZSkrMTt0aGlzLlQ9dGhpcy5qLlMoIlRBQkxFIix7Y2VsbHNwYWNpbmc6MCxjZWxscGFkZGluZzowLGJvcmRlcjowfSk7Yz10aGlzLmouUygiVEJPRFkiKTtiPXRoaXMuai5TKCJUUiIse3ZhbGlnbjoidG9wIn0pO3RoaXMuTC5jbGFzc05hbWU9IlZJcGdKZC1aVmk5b2QtdkgxR21mIjt0aGlzLmouYXBwZW5kQ2hpbGQodGhpcy5MLHRoaXMuVCk7dGhpcy5qLmFwcGVuZENoaWxkKHRoaXMuVCxjKTt0aGlzLmouYXBwZW5kQ2hpbGQoYyxiKTtmb3IoZD1jPTA7YzxhOysrYyl7dmFyIGU9dGhpcy5qLlMoIlREIik7dGhpcy5qLmFwcGVuZENoaWxkKGIsZSk7Zm9yKHZhciBmPQowO2Y8MTEmJmQ8dGhpcy5CLmxlbmd0aDsrK2YsKytkKXRoaXMuai5hcHBlbmRDaGlsZChlLHRoaXMuQltkXS5saW5rKTtjIT1hLTEmJihlPXRoaXMuai5TKCJURCIseyJjbGFzcyI6IlZJcGdKZC1aVmk5b2QtdkgxR21mLUtyaFBOYiJ9LCJcdTAwYTAiKSx0aGlzLmouYXBwZW5kQ2hpbGQoYixlKSl9dGhpcy5vPW51bGw7dGhpcy5jYih0aGlzLkJbMF0ubGluay52YWx1ZSk7Q3YodGhpcyk7bXAodGhpcy5sLCExKX07Xy5tLkFjPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLklhW18ub2MoYSk9PSJ1bmRlZmluZWQiP3RoaXMubzphXX07Xy5tLm1lPWZ1bmN0aW9uKCl7fTsKXy5tLmNiPWZ1bmN0aW9uKGEpe2lmKHRoaXMubyE9YSl7dGhpcy5BYyhhKSYmKHRoaXMubz1hLHRoaXMubWUoKSk7Zm9yKHZhciBiPTA7Yjx0aGlzLkIubGVuZ3RoOysrYil7dmFyIGM9dGhpcy5CW2JdO2MuZ2l8fChjLmxpbmsuY2xhc3NOYW1lPWMubGluay52YWx1ZT09YSYmdGhpcy5nLnBkPyJWSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kIjoiVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiIil9fX07dmFyIEN2PWZ1bmN0aW9uKGEpe3FwKGEuTCxvcChhLlQpKTtxcChhLmwsb3AoYS5MKSk7YS5HPW9wKGEubCl9LER2PWZ1bmN0aW9uKGEsYil7QXYuY2FsbCh0aGlzLGEsYil9O18uQihEdixBdik7Xy5tPUR2LnByb3RvdHlwZTsKXy5tLktjPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLlMoImEiLHsiYXJpYS1oYXNwb3B1cCI6InRydWUifSk7YS5jbGFzc05hbWU9IlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZCI7Xy5ubChhLCIjIik7dGhpcy5JPXRoaXMuaC5TKCJTUEFOIik7YS5hcHBlbmRDaGlsZCh0aGlzLkkpO3RoaXMuUD10aGlzLmguUygiSU1HIix7c3JjOkNxLGFsdDoiIixzdHlsZToiYmFja2dyb3VuZC1pbWFnZTp1cmwoIit4cSsiKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNHB4IDBweDtib3JkZXI6bm9uZSIsd2lkdGg6MTQsaGVpZ2h0OjE0fSk7YS5hcHBlbmRDaGlsZCh0aGlzLlApO3RoaXMuT2EoYSl9O18ubS5rZT1mdW5jdGlvbigpe18uaGoodGhpcy5QLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCItMTRweCAwcHgiKX07Xy5tLmxlPWZ1bmN0aW9uKCl7Xy5oaih0aGlzLlAsImJhY2tncm91bmRQb3NpdGlvbiIsIjBweCAwcHgiKX07Cl8ubS5zYT1mdW5jdGlvbigpe0F2LnByb3RvdHlwZS5zYS5jYWxsKHRoaXMpO3RoaXMuUD10aGlzLkk9bnVsbH07Xy5tLm1lPWZ1bmN0aW9uKCl7dGhpcy5oLlNiKHRoaXMuSSx0aGlzLkFjKHRoaXMubyl8fCIiKX07Xy5tLm5iPWZ1bmN0aW9uKGEpe3RoaXMudWMuY2FsbCh0aGlzLGEpfTt2YXIgRXY9ZnVuY3Rpb24oYSxiKXtBdi5jYWxsKHRoaXMsYSxiKX07Xy5CKEV2LEF2KTtfLm09RXYucHJvdG90eXBlOwpfLm0uS2M9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmguUygiYSIseyJhcmlhLWhhc3BvcHVwIjoidHJ1ZSJ9KTthLmNsYXNzTmFtZT0iVklwZ0pkLVpWaTlvZC14bDA3T2ItbFRCeGVkIjtfLm5sKGEsIiMiKTt0aGlzLkk9dGhpcy5oLlMoIlNQQU4iKTthLmFwcGVuZENoaWxkKHRoaXMuSSk7YS5hcHBlbmRDaGlsZCh0aGlzLmguUygiSU1HIix7c3JjOkNxLGFsdDoiIix3aWR0aDoxLGhlaWdodDoxfSkpO2EuYXBwZW5kQ2hpbGQodGhpcy5oLlMoIlNQQU4iLHtzdHlsZToiYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICNiYmIifSwiXHUyMDBiIikpO2EuYXBwZW5kQ2hpbGQodGhpcy5oLlMoIklNRyIse3NyYzpDcSxhbHQ6IiIsd2lkdGg6MSxoZWlnaHQ6MX0pKTt0aGlzLlA9dGhpcy5oLlMoInNwYW4iLHtzdHlsZToiY29sb3I6Izc2NzY3NiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LCJcdTI1YmMiKTthLmFwcGVuZENoaWxkKHRoaXMuUCk7dGhpcy5PYShhKX07Cl8ubS5rZT1mdW5jdGlvbigpe18uaGoodGhpcy5QLCJjb2xvciIsIiM5YjliOWIiKX07Xy5tLmxlPWZ1bmN0aW9uKCl7Xy5oaih0aGlzLlAsImNvbG9yIiwiI2Q1ZDVkNSIpfTtfLm0uc2E9ZnVuY3Rpb24oKXtBdi5wcm90b3R5cGUuc2EuY2FsbCh0aGlzKTt0aGlzLlA9dGhpcy5JPW51bGx9O18ubS5tZT1mdW5jdGlvbigpe3RoaXMuaC5TYih0aGlzLkksdGhpcy5BYyh0aGlzLm8pfHwiIil9O18ubS5uYj1mdW5jdGlvbihhKXt0aGlzLnVjLmNhbGwodGhpcyxhKX07dmFyIEZ2PWZ1bmN0aW9uKGEsYil7QXYuY2FsbCh0aGlzLGEsYik7dGhpcy5nLnBkPSExfTtfLkIoRnYsQXYpOwpGdi5wcm90b3R5cGUuS2M9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmguY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5jbGFzc05hbWU9IlZJcGdKZC1aVmk5b2QtTGdic1NlIjt2YXIgYj10aGlzLmguUygiRElWIix7c3R5bGU6ImJhY2tncm91bmQ6IHVybCgiK3dxKyIpIHJlcGVhdC14IDAgLTM5cHgifSk7YS5hcHBlbmRDaGlsZChiKTt0aGlzLkk9dGhpcy5oLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpO2IuYXBwZW5kQ2hpbGQodGhpcy5JKTt0aGlzLk9hKGEpfTtGdi5wcm90b3R5cGUuc2E9ZnVuY3Rpb24oKXtBdi5wcm90b3R5cGUuc2EuY2FsbCh0aGlzKTt0aGlzLkk9bnVsbH07RnYucHJvdG90eXBlLnFmPWZ1bmN0aW9uKGEpe3RoaXMuY2IoYS5jdXJyZW50VGFyZ2V0LnZhbHVlKTt0aGlzLmRpc3BhdGNoRXZlbnQoImNoYW5nZSIpO3RoaXMuUmMoKX07dmFyIEd2PWZ1bmN0aW9uKGEsYil7eG4uY2FsbCh0aGlzLGIpO3RoaXMuZz1hJiZKbChhKXx8e307dGhpcy5qPW5ldyBfLkhiKHRoaXMpfTtfLkcoR3YseG4pO3ZhciBIdj17ems6MCxLajoxLGhrOjJ9O18ubT1Hdi5wcm90b3R5cGU7Cl8ubS5TPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLmNyZWF0ZUVsZW1lbnQoImRpdiIpO050KGEsInNraXB0cmFuc2xhdGUiKTtOdChhLCJnb29nLXRlLWdhZGdldCIpO2EuZGlyPV8ueGYudGVzdChvcSk/InJ0bCI6Imx0ciI7bXAoYSwhMSk7aWYodGhpcy5nLmxheW91dD09MilpbShhLFF1KHtpZDpTKHRoaXMsInRhcmdldExhbmd1YWdlIiksU2Y6IiIsUmY6IiJ9KSk7ZWxzZXt2YXIgYj1uZXcgdG87aWYoc3AoXy5TYyYmIXNvKCkpKXZhciBjPSI8c3BhbiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtoZWlnaHQ6MTVweDsgd2lkdGg6NTFweDtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VMb2FkZXIoIHNyYz0nIitTdHJpbmcoRnEpLnJlcGxhY2UoUnAsR3ApKyInLHNpemluZ01ldGhvZD0nc2NhbGUnKTtcIj48L3NwYW4+IjtlbHNlIGM9aHMud2QsYz0nPGltZyBzcmM9IicrUChXcChGcSkpKwonIiB3aWR0aD0iMzdweCIgaGVpZ2h0PSIxNHB4IiBzdHlsZT0icGFkZGluZy1yaWdodDogM3B4IiBhbHQ9Ikdvb2dsZSAnK1AoYykrJyI+Jzt2YXIgZD1ocy53ZDt2YXIgZT0oMCxfLnRsKSgnPHNwYW4gc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+PGEgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1sNGVIWC1oU1JHUGQiKSsnIiBocmVmPSInK1AoVXAoR3EpKSsnIiB0YXJnZXQ9Il9ibGFuayI+JytjK0twKGQpKyI8L2E+PC9zcGFuPiIpO2M9Yi5mb3JtYXQ7ZD1SO3ZhciBmPWQuemc7ZT1lLlRiKCk7ZT11byhiLHt0eXBlOiJodG1sIix4ZjpfLmtqKGUpLnRvU3RyaW5nKCl9KTtiPWMuY2FsbChiLGYuY2FsbChkLGUpKTtpbShhLFF1KHtpZDpTKHRoaXMsInRhcmdldExhbmd1YWdlIiksU2Y6IiIsUmY6dGhpcy5nLmxheW91dD09MT9SbChbIlx1MDBhMCIsIlx1MDBhMCIsYl0pOmJ9KSl9dGhpcy5PYShhKX07Cl8ubS5MYT1mdW5jdGlvbigpe0d2LmVhLkxhLmNhbGwodGhpcyk7dGhpcy5sPXRoaXMuZy5sYXlvdXQ9PTI/bmV3IEV2KG51bGwsdGhpcy5oKTpuZXcgenYodGhpcy5oKTt0aGlzLmouTih0aGlzLmwsImNoYW5nZSIscHIodGhpcywiY2hnX3RndF9sYW5nIikpO3RoaXMuai5OKHRoaXMubCwibG9hZCIsdGhpcy5yZyk7dmFyIGE9dGhpcy5oLkgoUyh0aGlzLCJ0YXJnZXRMYW5ndWFnZSIpKTtpZih0aGlzLmcubGF5b3V0PT0yKXt2YXIgYj10aGlzLmguUygiSU1HIix7c3JjOkNxLCJjbGFzcyI6Imdvb2ctdGUtZ2FkZ2V0LWljb24iLGFsdDoiIn0pO2Iuc3R5bGUuYmFja2dyb3VuZEltYWdlPSJ1cmwoIit4cSsiKSI7Yi5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb249Ii02NXB4IDBweCI7dmFyIGM9dGhpcy5oLlMoIlNQQU4iLHtzdHlsZToidmVydGljYWwtYWxpZ246IG1pZGRsZSJ9KTthLmFwcGVuZENoaWxkKGIpO2EuYXBwZW5kQ2hpbGQoYyk7dGhpcy5sLmthKGMpO2Euc3R5bGUud2hpdGVTcGFjZT0KIm5vd3JhcCI7YS5jbGFzc05hbWU9Imdvb2ctdGUtZ2FkZ2V0LXNpbXBsZSJ9ZWxzZSB0aGlzLmwua2EoYSksdGhpcy5nLmxheW91dD09MSYmKGEuc3R5bGUuZGlzcGxheT0iaW5saW5lIil9O18ubS5yZz1mdW5jdGlvbigpe2lmKHRoaXMuZy5sYXlvdXQ9PTIpe3ZhciBhPXRoaXMubCxiPXRoaXMuaC5IKFModGhpcywidGFyZ2V0TGFuZ3VhZ2UiKSk7YS5BLnljKGEuRCwiY2xpY2siLGEuVGQpO2EuRD1iO2EuQS5OKGEuRCwiY2xpY2siLGEuVGQpfXRoaXMuZGlzcGF0Y2hFdmVudCgibG9hZCIpfTtfLm0uc2E9ZnVuY3Rpb24oKXtHdi5lYS5zYS5jYWxsKHRoaXMpO3RoaXMuai5kaXNwb3NlKCk7dGhpcy5qPW51bGw7dGhpcy5sLmRpc3Bvc2UoKTt0aGlzLmw9bnVsbH07Xy5tLm9hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubC5NYSgpfTtfLm0ubmE9ZnVuY3Rpb24oYSl7YT09IiI/dGhpcy5MJiZ0aGlzLmwubmIodGhpcy5MKTp0aGlzLkkmJnRoaXMubC5uYih0aGlzLkkpO3RoaXMubC5jYihhKX07Cl8ubS5wYT1mdW5jdGlvbihhKXttcCh0aGlzLkgoKSxhKX07Xy5tLlJiPWZ1bmN0aW9uKGEpe3RoaXMubC5SYihhKX07Xy5tLnVlPWZ1bmN0aW9uKGEsYil7dGhpcy5MPWE7dGhpcy5JPWJ9O3ZhciBJdj1mdW5jdGlvbihhLGIpe3huLmNhbGwodGhpcyxiKTt0aGlzLmc9YSYmSmwoYSl8fHt9O3RoaXMuZy5lYnx8KHRoaXMuZy5lYj1BcSk7dGhpcy5qPW5ldyBfLkhiKHRoaXMpfTtfLkcoSXYseG4pO3ZhciBKdj17cGs6MSxxazoyLGxqOjMsa2o6NH07Xy5tPUl2LnByb3RvdHlwZTtfLm0uUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLkc9ITE7bXAoYSwhMSk7dmFyIGI9Uyh0aGlzLCJjb250YWluZXIiKTtiPSgwLF8udGwpKCc8aWZyYW1lIGlkPSInK1AoYikrJyIgZnJhbWVCb3JkZXI9MCBzcmM9ImphdmFzY3JpcHQ6XCdcJyIgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1TbWZaLU9FVm1jZCIpKycgc2tpcHRyYW5zbGF0ZSIgc3R5bGU9InZpc2liaWxpdHk6dmlzaWJsZSI+PC9pZnJhbWU+Jyk7aW0oYSxiKTt0aGlzLk9hKGEpfTsKXy5tLkxhPWZ1bmN0aW9uKCl7SXYuZWEuTGEuY2FsbCh0aGlzKTt2YXIgYT1fLnhmLnRlc3Qob3EpPyJydGwiOiJsdHIiLGI9Xy5MYih0aGlzLmcuZWIpLGM9Uyh0aGlzLCJ0cmFuc2xhdGUiKSxkPUNxLGU9eHE7dGhpcy5IKCkuaWQ9Uyh0aGlzLCJmbG9hdENvbnRhaW5lciIpO3ZhciBmPXtpZDp0aGlzLkgoKS5pZCxjbGFzc05hbWU6Imdvb2ctdGUtZnRhYi1mbG9hdCJ9O3RoaXMuSCgpLmNsYXNzTmFtZSs9IiBnb29nLXRlLWZ0YWItZmxvYXQiO3N3aXRjaCh0aGlzLmcuTmMpe2Nhc2UgMjp2YXIgZz0iZ29vZy10ZS1mbG9hdC10b3AiO2YudG9wPTA7Zi5yaWdodD0yMDticmVhaztjYXNlIDM6Zz0iZ29vZy10ZS1mbG9hdC1ib3R0b20iO2YuYm90dG9tPTA7Zi5yaWdodD0yMDticmVhaztjYXNlIDQ6Zz0iZ29vZy10ZS1mbG9hdC1ib3R0b20iO2YuYm90dG9tPTA7Zi5sZWZ0PTIwO2JyZWFrO2RlZmF1bHQ6Zz0iZ29vZy10ZS1mbG9hdC10b3AiLGYudG9wPTAsZi5sZWZ0PTIwfW5wKFpuKG5ldyBfLnlmLApmKSx0aGlzLkgoKSk7dGhpcy5CPXRoaXMuaC5IKFModGhpcywiY29udGFpbmVyIikpO3RoaXMuai5OKHRoaXMuQiwibG9hZCIsdGhpcy5zZyk7dHIodGhpcy5CLCgwLF8ueSkoZnVuY3Rpb24oKXt2YXIgaD16byh0aGlzLkIpLGs9ZyxsPXt9LG49bCYmbC5UZSxxPWhzLkllO2s9Vm4oV24oVm4oXy55bCgpLCI8aGVhZD4iKSxPdShsKSksJzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURjgiPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IicrUCh4cChiKSkrJyInKyhuPycgbm9uY2U9IicrUChZcChuKSkrJyInOiIiKSsnPjwvaGVhZD48Ym9keSBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLVNtZloiKSsiICIrUChrKSsnIiBzY3JvbGw9Im5vIiBzdHlsZT0ib3ZlcmZsb3c6aGlkZGVuIiBkaXI9IicrUChhKSsnIj48YSBpZD0iJytQKGMpKyciIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9IicrClAoIlZJcGdKZC1aVmk5b2QtU21mWi1oU1JHUGQiKSsnIj48aW1nIHNyYz0iJytQKFdwKGQpKSsnIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTp1cmwoJytQKFdwKGUpKSsnKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NXB4IDBweCI+PHNwYW4+JytLcChxKSsiPC9zcGFuPjwvYT48L2JvZHk+IikuVGIoKTtoLndyaXRlKF8ua2ooaykpO2guY2xvc2UoKX0sdGhpcykpfTtfLm0uc2c9ZnVuY3Rpb24oKXt0aGlzLmw9KG5ldyBfLnJkKHpvKHRoaXMuQikpKS5IKFModGhpcywidHJhbnNsYXRlIikpO3RoaXMuai5OKHRoaXMubCwiY2xpY2siLHByKHRoaXMsImNsa190cmFucyIpKTttcCh0aGlzLkgoKSwhMCk7dmFyIGE9b3AodGhpcy5sKTttcCh0aGlzLkgoKSwhMSk7cXAodGhpcy5CLGEpO3FwKHRoaXMuSCgpLGEpO3RoaXMuZGlzcGF0Y2hFdmVudCgibG9hZCIpfTsKXy5tLnNhPWZ1bmN0aW9uKCl7SXYuZWEuc2EuY2FsbCh0aGlzKTt0aGlzLmouZGlzcG9zZSgpO3RoaXMuaj1udWxsO18uQWQodGhpcy5CKTt0aGlzLmw9dGhpcy5CPW51bGx9O18ubS5pc1Zpc2libGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5HfTtfLm0ucGE9ZnVuY3Rpb24oYSl7dGhpcy5HPWE7bXAodGhpcy5IKCksYSl9O3ZhciBLdj1mdW5jdGlvbihhLGIpe3huLmNhbGwodGhpcyxiKTt0aGlzLkE9bmV3IF8uSGIodGhpcyk7dGhpcy5nPWEmJkpsKGEpfHx7fTt0aGlzLmcuZWI9QXE7dGhpcy5nLndlPSExO18uaGoodGhpcy5oLmcuYm9keSwicG9zaXRpb24iLCJyZWxhdGl2ZSIpO18uTWh8fF8uaGoodGhpcy5oLmcuYm9keSwibWluSGVpZ2h0IiwiMTAwJSIpO18uaGoodGhpcy5oLmcuZG9jdW1lbnRFbGVtZW50LCJoZWlnaHQiLCIxMDAlIik7Xy5oaih0aGlzLmguZy5ib2R5LCJ0b3AiLCIwcHgiKTtfLlNjJiYod2luZG93Ll9iYW5uZXJxdWlya2ZpeGxlZnQ9LXBhcnNlSW50KCIwIit0aGlzLmguZy5ib2R5LmxlZnRNYXJnaW4sMTApLHdpbmRvdy5fYmFubmVycXVpcmtmaXh0b3A9LXBhcnNlSW50KCIwIit0aGlzLmguZy5ib2R5LnRvcE1hcmdpbiwxMCktNDApfTtfLkcoS3YseG4pO18ubT1Ldi5wcm90b3R5cGU7Xy5tLmthPWZ1bmN0aW9uKCl7dGhpcy5xYyh0aGlzLmguZy5ib2R5LmZpcnN0Q2hpbGQpfTsKXy5tLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmguY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5HPSExO21wKGEsITEpO050KGEsInNraXB0cmFuc2xhdGUiKTt2YXIgYj1TKHRoaXMsImNvbnRhaW5lciIpO2I9KDAsXy50bCkoJzxpZnJhbWUgaWQ9IicrUChiKSsnIiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGItT0VWbWNkIikrJyBza2lwdHJhbnNsYXRlIiBmcmFtZUJvcmRlcj0wIHNyYz0iIyIgc3R5bGU9InZpc2liaWxpdHk6dmlzaWJsZSI+PC9pZnJhbWU+Jyk7aW0oYSxiKTt0aGlzLk9hKGEpfTsKXy5tLkxhPWZ1bmN0aW9uKCl7S3YuZWEuTGEuY2FsbCh0aGlzKTt2YXIgYT1fLnhmLnRlc3Qob3EpPyJydGwiOiJsdHIiLGI9Xy5MYih0aGlzLmcuZWIpLGM9Q3EsZD1HcSxlPURxLGY9eHEsZz1TKHRoaXMsInByb21wdFNlY3Rpb24iKSxoPVModGhpcywiY29uZmlybSIpLGs9Uyh0aGlzLCJwcm9ncmVzc1NlY3Rpb24iKSxsPVModGhpcywicHJvZ3Jlc3NWYWx1ZSIpLG49enEscT1TKHRoaXMsImNhbmNlbCIpLHA9Uyh0aGlzLCJmaW5pc2hTZWN0aW9uIikscj1TKHRoaXMsInJlc3RvcmUiKSx0PVModGhpcywiZXJyb3JTZWN0aW9uIiksQT1TKHRoaXMsImVycm9yQ29udGVudCIpLEQ9Uyh0aGlzLCJjbG9zZSIpLEU9Uyh0aGlzLCJub0F1dG9Qb3B1cCIpLGJhLFo9W107dGhpcy5nLndlJiZaLnB1c2goUHUoe2lkOlModGhpcywicHJvbXB0U291cmNlTGFuZyIpfSkpO1oucHVzaChQdSh7aWQ6Uyh0aGlzLCJwcm9tcHRUYXJnZXRMYW5nIil9KSk7dmFyIHZpPW1tKFIuSmcuYXBwbHkobnVsbCwKWikpO1o9W107dGhpcy5nLndlJiZaLnB1c2goUHUoe2lkOlModGhpcywiZmluaXNoU291cmNlTGFuZyIpfSkpO1oucHVzaChQdSh7aWQ6Uyh0aGlzLCJmaW5pc2hUYXJnZXRMYW5nIil9KSk7dmFyIHdpPW1tKFIuRGcuYXBwbHkobnVsbCxaKSk7dGhpcy5nLmNnJiYoYmE9dGhpcy5nLmNnKTt0aGlzLkI9dGhpcy5oLkgoUyh0aGlzLCJjb250YWluZXIiKSk7dGhpcy5BLk4odGhpcy5CLCJsb2FkIix0aGlzLnRnKTt0cih0aGlzLkIsKDAsXy55KShmdW5jdGlvbigpe3ZhciBhZz16byh0aGlzLkIpLFhjPWJhLExkPXt9LERlPUxkJiZMZC5UZSxFZT1ocy53ZCx4aT1ocy5JZSxiZz1ocy5FZyx5aT1ocy5tZyx6aT1ocy5BZyxjZz1ocy5BZSxBaT1ocy5BZTtYYz1WbihXbihWbihfLnlsKCksIjxoZWFkPiIpLE91KExkKSksJzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURjgiPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IicrClAoeHAoYikpKyciJysoRGU/JyBub25jZT0iJytQKFlwKERlKSkrJyInOiIiKSsnPjwvaGVhZD48Ym9keSBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGIiKSsnIiBzY3JvbGw9Im5vIiBib3JkZXI9MCBkaXI9IicrUChhKSsnIj48dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MCBjZWxscGFkZGluZz0wIHdpZHRoPTEwMCUgaGVpZ2h0PTEwMCU+PHRyIHZhbGlnbj1taWRkbGU+PHRkIHdpZHRoPTEgbm93cmFwPjxhIGhyZWY9IicrUChVcChkKSkrJyIgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1sNGVIWC1oU1JHUGQiKSsnIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9IicrUChXcChlKSkrJyIgYWx0PSJHb29nbGUgJytQKEVlKSsnIj48L2E+PC90ZD4nKyhzcChYYyk/Jzx0ZCB3aWR0aD0xPjxpbWcgc3JjPSInK1AoV3AoYykpKyciIHdpZHRoPSI5IiBoZWlnaHQ9IjE1IiB0aXRsZT0iJytQKFhjKSsnIiBhbHQ9IicrUChYYykrJyIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6dXJsKCcrClAoV3AoZikpKycpO2JhY2tncm91bmQtcG9zaXRpb246LTU2cHggMHB4O21hcmdpbjowIDRweCI+PC90ZD4nOiIiKSsnPHRkIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtT1JIYi1LRTZ2cWUiKSsnIj48L3RkPjx0ZD48dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MCBjZWxscGFkZGluZz0wIGhlaWdodD0xMDAlPjx0ciBpZD0iJytQKGcpKyciIHN0eWxlPSJkaXNwbGF5Om5vbmUiIHZhbGlnbj1taWRkbGU+PHRkIG5vd3JhcD48c3BhbiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGItYk45N1BjIikrJyI+JytLcCh2aSkrJzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGItS0U2dnFlIikrJyI+PC90ZD48dGQgbm93cmFwPjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1MZ2JzU2UiKSsnIj48ZGl2PjxidXR0b24gaWQ9IicrUChoKSsnIj48Yj4nK0twKHhpKSsnPC9iPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvdGQ+PHRkIGNsYXNzPSInKwpQKCJWSXBnSmQtWlZpOW9kLU9SSGItS0U2dnFlIikrJyI+PC90ZD48dGQgbm93cmFwPjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1MZ2JzU2UiKSsnIj48ZGl2PjxidXR0b24gaWQ9IicrUChFKSsnIj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L3RkPjwvdHI+PHRyIGlkPSInK1AoaykrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgdmFsaWduPW1pZGRsZT48dGQ+PHNwYW4gY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1PUkhiLWJOOTdQYyIpKyciPicrS3AoYmcpKycmbmJzcDs8c3BhbiBkaXI9Imx0ciI+KDxiIGlkPSInK1AobCkrJyI+PC9iPiUpPC9zcGFuPiZuYnNwOzxpbWcgc3JjPSInK1AoV3AobikpKyciPjwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGItS0U2dnFlIikrJyI+PC90ZD48dGQgbm93cmFwPjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1MZ2JzU2UiKSsnIj48ZGl2PjxidXR0b24gaWQ9IicrUChxKSsnIj4nK0twKHlpKSsKJzwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvdGQ+PC90cj48dHIgaWQ9IicrUChwKSsnIiBzdHlsZT0iZGlzcGxheTpub25lIj48dGQ+PHNwYW4gY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1PUkhiLWJOOTdQYyIpKyciPicrS3Aod2kpKyc8L3NwYW4+PC90ZD48dGQgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1PUkhiLUtFNnZxZSIpKyciPjwvdGQ+PHRkIG5vd3JhcD48ZGl2IGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtTGdic1NlIikrJyI+PGRpdj48YnV0dG9uIGlkPSInK1AocikrJyI+JytLcCh6aSkrJzwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvdGQ+PC90cj48dHIgaWQ9IicrUCh0KSsnIiBzdHlsZT0iZGlzcGxheTpub25lIiB2YWxpZ249bWlkZGxlPjx0ZD48c3BhbiBpZD0iJytQKEEpKyciIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtT1JIYi1iTjk3UGMiKSsnIj48L3NwYW4+PC90ZD48L3RyPjwvdGFibGU+PC90ZD48dGQgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1PUkhiLUtFNnZxZSIpKwonIj48L3RkPjx0ZCB3aWR0aD0xIGlkPSJvcHRpb25zIj48L3RkPjx0ZCB3aWR0aD0xPjxhIGlkPSInK1AoRCkrJyIgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1UdkQ5UGMtaFNSR1BkIikrJyIgaHJlZj0iIyIgdGl0bGU9IicrUChjZykrJyI+PGltZyBzcmM9IicrUChXcChjKSkrJyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiBhbHQ9IicrUChBaSkrJyIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6dXJsKCcrUChXcChmKSkrJyk7YmFja2dyb3VuZC1wb3NpdGlvbjotMjhweCAwcHgiPjwvYT48L3RkPjwvdHI+PC90YWJsZT48L2JvZHk+JykuVGIoKTthZy53cml0ZShfLmtqKFhjKSk7YWcuY2xvc2UoKX0sdGhpcykpfTsKXy5tLnRnPWZ1bmN0aW9uKCl7dGhpcy5qPW5ldyBfLnJkKHpvKHRoaXMuQikpO0x2KHRoaXMsUi5DZSk7aWYodGhpcy5nLmViPT1BcSl7dmFyIGE9InVybCgiK3dxKyIpIjtfLmhqKHRoaXMuai5nLmJvZHksImJhY2tncm91bmRJbWFnZSIsYSk7Zm9yKHZhciBiPXRoaXMuai5nLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJidXR0b24iKSxjPTA7YzxiLmxlbmd0aDsrK2Mpe3ZhciBkPWJbY10ucGFyZW50Tm9kZTtfLmhqKGQsImJhY2tncm91bmRJbWFnZSIsYSk7Xy5oaihkLCJiYWNrZ3JvdW5kUmVwZWF0IiwicmVwZWF0LXgiKTtfLmhqKGQsImJhY2tncm91bmRQb3NpdGlvbiIsIjAgLTM5cHgiKX19dGhpcy5nLndlJiYodGhpcy5vPW5ldyBEdih0aGlzLmcsdGhpcy5qKSk7dGhpcy5sPW5ldyBEdih0aGlzLmcsdGhpcy5qKTt0aGlzLkQ9bmV3IEZ2KHRoaXMuZyx0aGlzLmopO3RoaXMuQS5OKHRoaXMuai5IKFModGhpcywiY29uZmlybSIpKSwiY2xpY2siLHByKHRoaXMsImNsa19jb25maXJtIikpOwp0aGlzLkEuTih0aGlzLmouSChTKHRoaXMsImNhbmNlbCIpKSwiY2xpY2siLHByKHRoaXMsImNsa19jYW5jZWwiKSk7dGhpcy5BLk4odGhpcy5qLkgoUyh0aGlzLCJyZXN0b3JlIikpLCJjbGljayIscHIodGhpcywiY2xrX3Jlc3RvcmUiKSk7dGhpcy5BLk4odGhpcy5qLkgoUyh0aGlzLCJjbG9zZSIpKSwiY2xpY2siLHByKHRoaXMsImNsa19jbG9zZSIpKTt0aGlzLlA9dGhpcy5qLkgoUyh0aGlzLCJub0F1dG9Qb3B1cCIpKTt0aGlzLkEuTih0aGlzLlAsImNsaWNrIixwcih0aGlzLCJjbGtfbm9fYXAiKSk7dGhpcy5vJiZ0aGlzLkEuTih0aGlzLm8sImNoYW5nZSIscHIodGhpcywiY2hnX3NyY19sYW5nIikpO3RoaXMuQS5OKHRoaXMubCwiY2hhbmdlIixwcih0aGlzLCJjaGdfdGd0X2xhbmciKSk7dGhpcy5BLk4odGhpcy5ELCJjaGFuZ2UiLHRoaXMuUmgpO2E9bmV3IGpyKCgwLF8ueSkodGhpcy51Zyx0aGlzKSk7dGhpcy5vJiZ0aGlzLkEuTih0aGlzLm8sImxvYWQiLGEucmVnaXN0ZXIoKSk7CnRoaXMuQS5OKHRoaXMubCwibG9hZCIsYS5yZWdpc3RlcigpKTt0aGlzLkEuTih0aGlzLkQsImxvYWQiLGEucmVnaXN0ZXIoKSk7YS5maW5pc2goKTt0aGlzLm8mJnRoaXMuby5rYSh0aGlzLmouSChTKHRoaXMsInByb21wdFNvdXJjZUxhbmciKSkpO3RoaXMubC5rYSh0aGlzLmouSChTKHRoaXMsInByb21wdFRhcmdldExhbmciKSkpO3RoaXMuRC5rYSh0aGlzLmouSCgib3B0aW9ucyIpKX07Xy5tLnVnPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5ELGI9Ui55ZztfLnpkKGEuSSk7YS5JLmFwcGVuZENoaWxkKGEuaC5jcmVhdGVUZXh0Tm9kZShiKyJcdTAwYTBcdTI1YmMiKSk7dGhpcy5ELnVjKHt0dXJuX29mZl9zaXRlOlIuR2csczE6Ii0tLSIsbGVhcm5fbW9yZTpSLnhnfSk7dGhpcy5kaXNwYXRjaEV2ZW50KCJsb2FkIil9O18ubS5SaD1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLkQuTWEoKSl7Y2FzZSAibGVhcm5fbW9yZSI6d2luZG93Lm9wZW4oSnEsIl9ibGFuayIpO2JyZWFrO2Nhc2UgInR1cm5fb2ZmX3NpdGUiOnRoaXMuZGlzcGF0Y2hFdmVudCgiY2xrX25vX2FwX3NpdGUiKX19OwpfLm0uc2E9ZnVuY3Rpb24oKXt0aGlzLnBhKCExKTtLdi5lYS5zYS5jYWxsKHRoaXMpO3RoaXMuQS5kaXNwb3NlKCk7dGhpcy5BPW51bGw7dGhpcy5vJiYodGhpcy5vLmRpc3Bvc2UoKSx0aGlzLm89bnVsbCk7dGhpcy5sLmRpc3Bvc2UoKTt0aGlzLmw9bnVsbDt0aGlzLkQuZGlzcG9zZSgpO3RoaXMuRD1udWxsO18uQWQodGhpcy5CKTt0aGlzLmFjPXRoaXMuaj1udWxsfTtfLm0uSmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vP3RoaXMuby5NYSgpOiIifTtfLm0ub2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sLk1hKCl9O18ubS5OYT1mdW5jdGlvbihhKXt0aGlzLm8mJnRoaXMuby5jYihhKTt0aGlzLlQmJnRoaXMuVFthXSYmdGhpcy5qLlNiKHRoaXMuUCxSLkZnKHRoaXMuVFthXSkpfTtfLm0ubmE9ZnVuY3Rpb24oYSl7dGhpcy5sLmNiKGEpfTsKdmFyIE12PWZ1bmN0aW9uKGEsYixjLGQpe2lmKGEuYWMhPWIpe2EuYWM9YjtpZihiPT0wKXthLm8mJnl2KGEubyxhLmouSChTKGEsInByb21wdFNvdXJjZUxhbmciKSkpO2lmKGEuTCl7dmFyIGU9YS5vYSgpO2EubC5uYihhLkwpO2EubmEoZSl9eXYoYS5sLGEuai5IKFMoYSwicHJvbXB0VGFyZ2V0TGFuZyIpKSl9ZWxzZSBiPT0yJiYoYS5vJiZ5dihhLm8sYS5qLkgoUyhhLCJmaW5pc2hTb3VyY2VMYW5nIikpKSxhLkkmJihlPWEub2EoKSxhLmwubmIoYS5JKSxhLm5hKGUpKSx5dihhLmwsYS5qLkgoUyhhLCJmaW5pc2hUYXJnZXRMYW5nIikpKSk7ZT17fTtlWy0xXT1hLmouSChTKGEsImVycm9yU2VjdGlvbiIpKTtlWzBdPWEuai5IKFMoYSwicHJvbXB0U2VjdGlvbiIpKTtlWzFdPWEuai5IKFMoYSwicHJvZ3Jlc3NTZWN0aW9uIikpO2VbMl09YS5qLkgoUyhhLCJmaW5pc2hTZWN0aW9uIikpO2Zvcih2YXIgZiBpbiBlKWVbZl0hPT1PYmplY3QucHJvdG90eXBlW2ZdJiZtcChlW2ZdLGY9PQpiKX1jJiZhLnBhKCEwKTthLlAucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9ZD8iYmxvY2siOiJub25lIn07S3YucHJvdG90eXBlLmlzVmlzaWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkd9OwpLdi5wcm90b3R5cGUucGE9ZnVuY3Rpb24oYSl7aWYodGhpcy5HIT1hKXt0aGlzLkc9YTtpZihfLlNjKXZhciBiPXBhcnNlSW50KCIwIit0aGlzLmguZy5ib2R5LmxlZnRNYXJnaW4sMTApLGM9cGFyc2VJbnQoIjAiK3RoaXMuaC5nLmJvZHkudG9wTWFyZ2luLDEwKTt2YXIgZD10aGlzLmguZy5jb21wYXRNb2RlPT0iQmFja0NvbXBhdCI7YT8oXy5oaih0aGlzLmguZy5ib2R5LCJ0b3AiLCI0MHB4IiksbXAodGhpcy5IKCksITApLF8uU2MmJihzbygpPyh3aW5kb3cuX2Jhbm5lcnF1aXJrZml4bGVmdD13aW5kb3cuX2Jhbm5lcnF1aXJrZml4dG9wPTAsZCYmKHRoaXMuaC5nLmJvZHkudG9wTWFyZ2luPWMrNDApKTpkPyh0aGlzLmguZy5ib2R5LnRvcE1hcmdpbj1jKzQwLHdpbmRvdy5fYmFubmVycXVpcmtmaXhsZWZ0PXdpbmRvdy5fYmFubmVycXVpcmtmaXh0b3A9MCk6KHdpbmRvdy5fYmFubmVycXVpcmtmaXhsZWZ0PS1iLHdpbmRvdy5fYmFubmVycXVpcmtmaXh0b3A9LWMtNDApKSk6KF8uaGoodGhpcy5oLmcuYm9keSwKInRvcCIsIjBweCIpLG1wKHRoaXMuSCgpLCExKSxkJiZjPj00MCYmKHRoaXMuaC5nLmJvZHkudG9wTWFyZ2luPWMtNDApKX19O3ZhciBOdj1mdW5jdGlvbihhLGIpe2Euai5TYihhLmouSChTKGEsInByb2dyZXNzVmFsdWUiKSksYil9LEx2PWZ1bmN0aW9uKGEsYil7YS5qLlNiKGEuai5IKFMoYSwiZXJyb3JDb250ZW50IikpLGIpfTtLdi5wcm90b3R5cGUudWU9ZnVuY3Rpb24oYSxiKXt0aGlzLkw9YTt0aGlzLkk9Yjt0aGlzLmwubmIoYSl9O3ZhciBQdj1mdW5jdGlvbihhLGIpe18udS5jYWxsKHRoaXMpO18ub2MoYSk9PSJzdHJpbmciJiYoYj1hLGE9e30pO18ub2MoYik9PSJzdHJpbmciJiYoYj1nbihTdHJpbmcoYikpKTt0aGlzLlQ9Yjt0aGlzLkE9bmV3IF8uSGIodGhpcyk7dGhpcy5sYT12b2lkIDA7YT1PYmplY3QoYSk7dGhpcy5vPSJhdXRvIjshKGI9d2luZG93LnBhcmVudCE9d2luZG93KSYmKGI9KCF3aW5kb3cuZXh0ZXJuYWx8fCF3aW5kb3cuZXh0ZXJuYWwuZ29vZ2xlVG9vbGJhclZlcnNpb258fHBhcnNlRmxvYXQod2luZG93LmV4dGVybmFsLmdvb2dsZVRvb2xiYXJWZXJzaW9uKTw2LjIpJiYoIXdpbmRvdy5ndGJFeHRlcm5hbHx8IXdpbmRvdy5ndGJFeHRlcm5hbC5pc1RyYW5zbGF0ZUVuYWJsZWR8fCF3aW5kb3cuZ3RiRXh0ZXJuYWwuaXNUcmFuc2xhdGVFbmFibGVkKCkpKSYmKGI9bmF2aWdhdG9yLmFwcFZlcnNpb24mJm5hdmlnYXRvci5hcHBWZXJzaW9uLm1hdGNoKC9cc0Nocm9tZVwvKChcZCspXC4oXGQrKVwuW1xkXC5dKylccy8pLApiPSEoYiYmYlsyXSYmYlszXSYmTnVtYmVyKGJbMl0pKjFFMytOdW1iZXIoYlszXSk+PTQwMDEpKTt0aGlzLmc9e0VkOmIsaGY6ITEsRmQ6bnVsbCxFYzpudWxsLFhkOltdLGNmOltdLGRoOiExLFBiOiExLGFwaUtleToiIixsYXlvdXQ6MCxWZTohMX07dGhpcy5JYT17ZWI6QXEsY2c6dnE9PSJodHRwczovLyI/Ui5DZzpudWxsfTt0aGlzLlA9e2ViOkFxLE5jOm51bGx9O2EmJigiYXV0b0Rpc3BsYXkiaW4gYSYmKHRoaXMuZy5FZD10aGlzLmcuRWQmJiEhYS5hdXRvRGlzcGxheSksIm11bHRpbGFuZ3VhZ2VQYWdlImluIGEmJih0aGlzLmcuUGI9ISFhLm11bHRpbGFuZ3VhZ2VQYWdlKSwibGF5b3V0ImluIGEmJih0aGlzLmcubGF5b3V0PWEubGF5b3V0KSxhLnBhZ2VMYW5ndWFnZSYmKHRoaXMuZy5kZD1xcihhLnBhZ2VMYW5ndWFnZSkpLGEuaW5jbHVkZWRMYW5ndWFnZXMmJih0aGlzLmcuWGQ9YS5pbmNsdWRlZExhbmd1YWdlcy5zcGxpdCgiLCIpKSxhLmV4Y2x1ZGVkTGFuZ3VhZ2VzJiYKKHRoaXMuZy5jZj1hLmV4Y2x1ZGVkTGFuZ3VhZ2VzLnNwbGl0KCIsIikpLGEucmVtb3RlQXBpUHJveHlIYW5kbGVycyYmKHRoaXMubGE9YS5yZW1vdGVBcGlQcm94eUhhbmRsZXJzKSx0aGlzLmcuZGQmJih0aGlzLm89dGhpcy5nLmRkKSxhLmtleSYmKHRoaXMuZy5hcGlLZXk9YS5rZXkpLHRoaXMuUC5OYz1OdW1iZXIoYS5mbG9hdFBvc2l0aW9uKXx8dGhpcy5QLk5jLCJkaXNhYmxlQXV0b1RyYW5zbGF0aW9uImluIGEmJih0aGlzLmcuVmU9ISFhLmRpc2FibGVBdXRvVHJhbnNsYXRpb24pKTshdGhpcy5nLlZlJiZPdih0aGlzKSYmKHRoaXMuZy5oZj0hMCk7dGhpcy5DPXt9O2lmKChhPWRvY3VtZW50LmNvb2tpZS5tYXRjaCgvKF58OyApZ29vZ3RyYW5zb3B0PSguKj8pKDt8JCkvKSkmJmFbMl0pZm9yKHRoaXMuQz17fSxhPV8uRGIoYVsyXSkuc3BsaXQoInwiKSxiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl0uc3BsaXQoIj0iKTtjWzBdJiYodGhpcy5DW2NbMF1dPWNbMV0pfXRoaXMud2E9Cm5ldyBacyh7YXBpS2V5OnRoaXMuZy5hcGlLZXksaGM6MSx2ZTohMCxnbTpIcX0se2NsaWVudDp0cSx1OndpbmRvdy5sb2NhdGlvbi5ocmVmfSk7dGhpcy5GPW5ldyB3dih2b2lkIDAsdGhpcy53YSx2b2lkIDAsdm9pZCAwLHRoaXMuZy5hcGlLZXksdm9pZCAwLHZvaWQgMCxuZXcgV3Usdm9pZCAwLHZvaWQgMCx0aGlzLmxhKTt0aGlzLkc9ITE7dGhpcy5BLk4od2luZG93LCJwYWdlaGlkZSIsdGhpcy5kaXNwb3NlKTt0aGlzLks9bmV3IGpyKCgwLF8ueSkodGhpcy5NaCx0aGlzKSk7dGhpcy5JPW5ldyBqcigoMCxfLnkpKHRoaXMuT2gsdGhpcykpO3RoaXMuTz1uZXcgbHIoKDAsXy55KSh0aGlzLmtpLHRoaXMpKTt0aGlzLmg9bmV3IEt2KHRoaXMuSWEpO3RoaXMuRi56Yyh0aGlzLksucmVnaXN0ZXIoKDAsXy55KSh0aGlzLkpoLHRoaXMpKSxvcSk7dGhpcy5UPyh0aGlzLmw9bmV3IEd2KHRoaXMuZyksdGhpcy5BLk4odGhpcy5sLCJsb2FkIix0aGlzLksucmVnaXN0ZXIoKSksdGhpcy5BLk4odGhpcy5sLAoiY2hnX3RndF9sYW5nIixtcih0aGlzLk8sdGhpcy5JLmRlbGF5KCgwLF8ueSkodGhpcy5JaCx0aGlzKSkpKSx0aGlzLmwua2EodGhpcy5UKSk6dGhpcy5QLk5jJiYodGhpcy5CPW5ldyBJdih0aGlzLlApLHRoaXMuQS5OKHRoaXMuQiwibG9hZCIsdGhpcy5LLnJlZ2lzdGVyKCkpLHRoaXMuQS5OKHRoaXMuQiwiY2xrX3RyYW5zIixtcih0aGlzLk8sdGhpcy5JLmRlbGF5KCgwLF8ueSkodGhpcy5HaCx0aGlzKSkpKSx0aGlzLkIua2EoKSk7IXRoaXMuZy5kZCYmdGhpcy5nLmRoJiZ0aGlzLkYuUGModGhpcy5LLnJlZ2lzdGVyKCgwLF8ueSkodGhpcy5FaCx0aGlzKSkpO3RoaXMuSy5maW5pc2goKX07Xy5CKFB2LF8udSk7CnZhciBPdj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGYsZyl7aWYoZj1fLkRiKGYpLm1hdGNoKCJeXFwoKChbYS16QS1aXFwtX10qKVxcfCk/KFthLXpBLVpcXC1fXSopXFwpfF4vKChbYS16QS1aXFwtX10qKS8pPyhbYS16QS1aXFwtX10qKSIpKXtpZihmWzNdKXJldHVybiBnLmcuRmQ9ZlsyXSxnLmcuRWM9ZlszXSwhMDtpZihmWzZdKXJldHVybiBnLmcuRmQ9Zls1XSxnLmcuRWM9Zls2XSwhMH1yZXR1cm4hMX12YXIgYz17dXJsOmZ1bmN0aW9uKCl7dmFyIGY9d2luZG93LmxvY2F0aW9uLmhyZWYubWF0Y2goLyMuKmdvb2d0cmFucyguKikvKTtyZXR1cm4gZiYmZlsxXX0sY29va2llOmZ1bmN0aW9uKCl7dmFyIGY9ZG9jdW1lbnQuY29va2llLm1hdGNoKC8oXnw7IClnb29ndHJhbnM9KC4qPykoO3wkKS8pO3JldHVybiBmJiZmWzJdfX0sZDtmb3IoZCBpbiBjKWlmKGNbZF0hPT1PYmplY3QucHJvdG90eXBlW2RdKXt2YXIgZT1jW2RdKCk7aWYoZSYmYihlLGEpKXJldHVybiBkfXJldHVybiIifSwKUXY9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnNwbGl0KCIuIik7Yy5sZW5ndGg+MjspYy5zaGlmdCgpO2M9Ijtkb21haW49IitjLmpvaW4oIi4iKTtiIT1udWxsP2E9YSsiPSIrYjooYj1uZXcgRGF0ZSxiLnNldFRpbWUoYi5nZXRUaW1lKCktMSksYT1hKyI9bm9uZTtleHBpcmVzPSIrYi50b0dNVFN0cmluZygpKTthKz0iO3BhdGg9LyI7ZG9jdW1lbnQuY29va2llPWE7dHJ5e2RvY3VtZW50LmNvb2tpZT1hK2N9Y2F0Y2goZCl7fX0sUnY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1udWxsO2IhPT12b2lkIDAmJihjPWEhPT12b2lkIDA/Ii8iK2ErIi8iK2I6Ii8iK2IpO1F2KCJnb29ndHJhbnMiLGMpfTtfLm09UHYucHJvdG90eXBlOwpfLm0uSmg9ZnVuY3Rpb24oYSl7dGhpcy5qPXFyKG9xKTthPWF8fHt9O3ZhciBiPWEudGFyZ2V0TGFuZ3VhZ2VzfHxbXTt0aGlzLkw9e3NsOldtKGEuc291cmNlTGFuZ3VhZ2VzfHxbXSksdGw6V20oYil9O3RoaXMuRD17fTt0aGlzLlI9e307YT0hdGhpcy5nLlhkLmxlbmd0aDtiPWlyKHRoaXMuZy5YZCk7dmFyIGM9aXIodGhpcy5nLmNmKTt0aGlzLkRbb3FdPSIiO3RoaXMuUltvcV09IiI7Zm9yKHZhciBkIGluIHRoaXMuTC50bCl0aGlzLkwudGxbZF09PT1PYmplY3QucHJvdG90eXBlW2RdfHwhKGF8fGQgaW4gYil8fGQgaW4gY3x8KHRoaXMuUltkXT10aGlzLkwudGxbZF0sZD09dGhpcy5nLmRkJiYhdGhpcy5nLlBiKXx8KHRoaXMuRFtkXT10aGlzLkwudGxbZF0pO3RoaXMuRFtvcV18fGRlbGV0ZSB0aGlzLkRbb3FdO3RoaXMuUltvcV18fGRlbGV0ZSB0aGlzLlJbb3FdO3RoaXMucmE9SmwodGhpcy5MLnNsKX07Xy5tLkVoPWZ1bmN0aW9uKGEpe2EmJih0aGlzLm89cXIoYSkpfTsKXy5tLk1oPWZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuSztpZih0aGlzLkwpe3RoaXMubz10aGlzLm98fHRoaXMuZy5GZDt0aGlzLmo9dGhpcy5nLkVjfHx0aGlzLmo7dmFyIGE9dGhpcy5nLmhmfHx0aGlzLmcuRWQmJnRoaXMubyE9dGhpcy5qJiYhKHRoaXMubyBpbiBzcSkmJnRoaXMuQy5vcyE9IjEiJiZ0aGlzLkNbIm8iK3RoaXMub10hPSIxIjt0aGlzLm89PSJ6aC1UVyImJih0aGlzLm89InpoLUNOIik7dGhpcy5yYVt0aGlzLm9dfHwoYT0hMSx0aGlzLm89ImF1dG8iKTtpZighdGhpcy5EW3RoaXMual0paWYoYT0hMSx0aGlzLkQuZW4pdGhpcy5qPSJlbiI7ZWxzZSBmb3IodmFyIGIgaW4gdGhpcy5EKWlmKHRoaXMuRFtiXSE9PU9iamVjdC5wcm90b3R5cGVbYl0pe3RoaXMuaj1iO2JyZWFrfWlmKHRoaXMubCl7Yj10aGlzLkQ7dmFyIGM9eyIiOlIuQmd9LGQ7Zm9yKGQgaW4gYiliW2RdIT09T2JqZWN0LnByb3RvdHlwZVtkXSYmKGNbZF09YltkXSk7dGhpcy5sLnVlKGMsdGhpcy5SKTt0aGlzLmwubmEoIiIpfSFxcSYmCmE/dGhpcy5nLkVjP21yKHRoaXMuTyx0aGlzLkkuZGVsYXkoKDAsXy55KSh0aGlzLm9kLHRoaXMsITAsITApKSkuY2FsbCgpOih0aGlzLkc9ITAsbXIodGhpcy5PLHRoaXMuSS5kZWxheSgoMCxfLnkpKHRoaXMub2QsdGhpcykpKS5jYWxsKCksUW0oInRlX2FwIix7c2w6dGhpcy5vfSkpOih0aGlzLkImJnRoaXMuQi5wYSghMCksdGhpcy5sJiZ0aGlzLmwucGEoITApKTt3aW5kb3cuZ29vZ2xlLnRyYW5zbGF0ZS5UcmFuc2xhdGVTZXJ2aWNlJiZ0aGlzLlJiKCExKTt0aGlzLk8uZmluaXNoKCl9fTsKXy5tLk9oPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLGI9dGhpcy5yYTthLm8mJmEuby5uYihiKTthLlQ9Yjt0aGlzLmgudWUodGhpcy5ELHRoaXMuUik7dGhpcy5oLk5hKHRoaXMubyk7dGhpcy5oLm5hKHRoaXMuaik7dGhpcy5BLk4odGhpcy5oLCJjbGtfY29uZmlybSIsdGhpcy55aCk7dGhpcy5BLk4odGhpcy5oLCJjbGtfY2FuY2VsIix0aGlzLnhoKTt0aGlzLkEuTih0aGlzLmgsImNsa19yZXN0b3JlIix0aGlzLlJkKTt0aGlzLkEuTih0aGlzLmgsImNsa19jbG9zZSIsdGhpcy5RYyk7dGhpcy5BLk4odGhpcy5oLCJjbGtfbm9fYXAiLHRoaXMuemgpO3RoaXMuQS5OKHRoaXMuaCwiY2xrX25vX2FwX3NpdGUiLHRoaXMuQWgpO3RoaXMuQS5OKHRoaXMuaCwiY2hnX3NyY19sYW5nIix0aGlzLm1mKTt0aGlzLkEuTih0aGlzLmgsImNoZ190Z3RfbGFuZyIsdGhpcy5tZik7dGhpcy5sJiZ0aGlzLmwucGEoITApfTsKXy5tLmtpPWZ1bmN0aW9uKCl7dGhpcy5BLk4odGhpcy5oLCJsb2FkIix0aGlzLkkucmVnaXN0ZXIoKSk7dGhpcy5oLmthKCk7dGhpcy5JLmZpbmlzaCgpfTtfLm0uTT1mdW5jdGlvbigpe3RoaXMuRi5yZXN0b3JlKCk7Xy51LnByb3RvdHlwZS5NLmNhbGwodGhpcyk7dGhpcy5GLmRpc3Bvc2UoKTt0aGlzLkEuZGlzcG9zZSgpO3RoaXMuQT1udWxsO3RoaXMuaCYmdGhpcy5oLmRpc3Bvc2UoKTt0aGlzLmg9bnVsbDt0aGlzLkImJnRoaXMuQi5kaXNwb3NlKCk7dGhpcy5CPW51bGw7dGhpcy5sJiZ0aGlzLmwuZGlzcG9zZSgpO3RoaXMuVD10aGlzLmw9bnVsbH07Xy5tLnloPWZ1bmN0aW9uKCl7IXRoaXMuaC5pc1Zpc2libGUoKXx8IXRoaXMuZy5QYiYmeHIodGhpcy5vLHRoaXMuaC5vYSgpKXx8KHRoaXMuRyYmUW0oInRlX2FwdCIse3NsOnRoaXMub30pLFN2KHRoaXMsITEpLHRoaXMubCYmdGhpcy5sLm5hKHRoaXMuaC5vYSgpKSl9OwpfLm0ueGg9ZnVuY3Rpb24oKXt0aGlzLmguaXNWaXNpYmxlKCkmJihUdih0aGlzKSxNdih0aGlzLmgsMCksdGhpcy5sJiZ0aGlzLmwubmEoIiIpKX07Xy5tLlJkPWZ1bmN0aW9uKCl7dGhpcy5oLmlzVmlzaWJsZSgpJiYoVHYodGhpcyksTXYodGhpcy5oLDApKTt0aGlzLmwmJnRoaXMubC5uYSgiIil9O18ubS5RYz1mdW5jdGlvbigpe3RoaXMuaC5pc1Zpc2libGUoKSYmKHRoaXMuRyYmKHRoaXMuRz0hMSxRbSgidGVfYXBjIix7c2w6dGhpcy5vfSkpLFR2KHRoaXMpLHRoaXMuaC5wYSghMSksdGhpcy5sJiZ0aGlzLmwubmEoIiIpLHRoaXMuQiYmdGhpcy5CLnBhKCEwKSl9O18ubS56aD1mdW5jdGlvbigpe3RoaXMuaC5pc1Zpc2libGUoKSYmKHRoaXMuQ1sibyIrdGhpcy5vXT0iMSIsUW0oInRlX2FwciIse3NsOnRoaXMub30pLHRoaXMuRz0hMSx0aGlzLlFjKCkpfTsKXy5tLkFoPWZ1bmN0aW9uKCl7aWYodGhpcy5oLmlzVmlzaWJsZSgpKXt0aGlzLkc9ITE7dGhpcy5DLm9zPSIxIjt2YXIgYT1udWxsO2lmKHRoaXMuQyl7YT1bXTtmb3IodmFyIGIgaW4gdGhpcy5DKXRoaXMuQ1tiXSE9PU9iamVjdC5wcm90b3R5cGVbYl0mJmEucHVzaChiKyI9Iit0aGlzLkNbYl0pO2E9YS5qb2luKCJ8Iil9UXYoImdvb2d0cmFuc29wdCIsYSk7dGhpcy5RYygpfX07Xy5tLm1mPWZ1bmN0aW9uKCl7dGhpcy5oLmlzVmlzaWJsZSgpJiYoIXRoaXMuZy5QYiYmeHIodGhpcy5vLHRoaXMuaC5vYSgpKT90aGlzLlJkKCk6KHRoaXMubz10aGlzLmguSmEoKXx8dGhpcy5vLHRoaXMuaj10aGlzLmgub2EoKSx0aGlzLmguYWM9PTImJih0aGlzLmwmJnRoaXMubC5uYSh0aGlzLmgub2EoKSksU3YodGhpcykpKSl9O18ubS5vZD1mdW5jdGlvbihhLGIpe3RoaXMuaC5pc1Zpc2libGUoKXx8KHRoaXMuQiYmdGhpcy5CLnBhKCExKSxhP1N2KHRoaXMsYik6TXYodGhpcy5oLDAsITAsdGhpcy5HKSl9OwpfLm0uUmk9ZnVuY3Rpb24oYSxiKXttcih0aGlzLk8sdGhpcy5JLmRlbGF5KCgwLF8ueSkodGhpcy5vZCx0aGlzLGEsYikpKS5jYWxsKCl9O18ubS5HaD1mdW5jdGlvbigpe3RoaXMub2QodGhpcy5oLmFjPT0yKX07Xy5tLkloPWZ1bmN0aW9uKCl7dGhpcy5sLm9hKCk/IXRoaXMuZy5QYiYmeHIodGhpcy5vLHRoaXMuaC5vYSgpKT90aGlzLlJkKCk6KHRoaXMuaj10aGlzLmwub2EoKSx0aGlzLmgubmEodGhpcy5qKSxTdih0aGlzKSk6dGhpcy5sLm5hKHRoaXMuail9Owp2YXIgU3Y9ZnVuY3Rpb24oYSxiKXtpZih3aW5kb3cuZ29vZ2xlLnRyYW5zbGF0ZS5UcmFuc2xhdGVTZXJ2aWNlKXRyeXt3aW5kb3cuZ29vZ2xlLnRyYW5zbGF0ZS5UcmFuc2xhdGVTZXJ2aWNlLmdldEluc3RhbmNlKCkucmVzdG9yZSgpfWNhdGNoKGMpe31SdihhLm8sYS5qKTthLkc9ITE7IWImJmEubyBpbiBzcSYmUW0oInRlX2FwZSIse3NsOmEub30pO052KGEuaCwwKTtNdihhLmgsMSwhMCk7YS5GLllmKCEhYik7d2luZG93LnNldFRpbWVvdXQoKDAsXy55KShhLkYucWQsYS5GLGEuZy5QYj8iYXV0byI6YS5vLGEuaiwoMCxfLnkpKGEuZmIsYSksdm9pZCAwLHZvaWQgMCksMCl9OwpQdi5wcm90b3R5cGUuZmI9ZnVuY3Rpb24oYSxiLGMpe3R5cGVvZiB0aGlzLmdiPT0iZnVuY3Rpb24iJiZ0aGlzLmdiKCk7dGhpcy5oLmlzVmlzaWJsZSgpJiZ0aGlzLmguYWM9PTEmJihjPyhUdih0aGlzKSxNdih0aGlzLmgsLTEsITApLGM9PTI/THYodGhpcy5oLFIud2cpOkx2KHRoaXMuaCxSLkNlKSk6KE52KHRoaXMuaCxhKSxiJiYodGhpcy5sJiZ0aGlzLmwubmEodGhpcy5qKSx0aGlzLmguTmEodGhpcy5vKSxNdih0aGlzLmgsMikpKSl9O3ZhciBUdj1mdW5jdGlvbihhKXtSdigpO3dpbmRvdy5zZXRUaW1lb3V0KCgwLF8ueSkoYS5GLnJlc3RvcmUsYS5GLG51bGwpLDApfTtQdi5wcm90b3R5cGUuUmI9ZnVuY3Rpb24oYSl7YXx8dGhpcy5RYygpO3RoaXMubCYmdGhpcy5sLlJiKGEpO3RoaXMuQiYmdGhpcy5CLnBhKGEpfTt2YXIgem49ZnVuY3Rpb24oYSl7aWYoYSYmKGE9U3RyaW5nKGEpLGE9YS5zcGxpdCgiLiIpLGEubGVuZ3RoKSl7Zm9yKHZhciBiPXdpbmRvdyxjPTA7YzxhLmxlbmd0aDsrK2Mpe3ZhciBkPWFbY107aWYoIShkJiZkIGluIGIpKXJldHVybjtiPWJbZF19cmV0dXJuIGJ9fTt2YXIgVXY9bnVsbCxWdj1mdW5jdGlvbihhKXtpZighVXYpe3ZhciBiLGMsZCxlO2EmJigia2V5ImluIGEmJihiPWEua2V5KSwic2VydmVyUGFyYW1zImluIGEmJihjPWEuc2VydmVyUGFyYW1zKSwidGltZUluZm8iaW4gYSYmKGQ9YS50aW1lSW5mbyksInJlbW90ZUFwaVByb3h5SGFuZGxlcnMiaW4gYSYmKGU9YS5yZW1vdGVBcGlQcm94eUhhbmRsZXJzKSwoYT15cigpKSYmKGM9YSkpO2E9MDtpZih0cT09InRlX2xpYiJ8fF8uV2MpYT0zO1V2PW5ldyB3dih2b2lkIDAsbmV3IFpzKHthcGlLZXk6YixoYzphLHZlOiEwLHRyYWNrVmlzaWJpbGl0eTpjPT0idHZpcyJ9KSx2b2lkIDAsdm9pZCAwLGIsYyxkLHZvaWQgMCx2b2lkIDAsdm9pZCAwLGUpO1V2LmNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7fTtVdi5pc0F2YWlsYWJsZT1Vdi5TYTtVdi5nZXRTdXBwb3J0ZWRMYW5ndWFnZXM9VXYuemM7VXYuZ2V0UGFnZUxhbmd1YWdlPVV2LlBjO1V2LnNldENsaWNrVGhyb3VnaD1Vdi5ZZjtVdi50cmFuc2xhdGVQYWdlPQpVdi5xZDtVdi5yZXN0b3JlPVV2LnJlc3RvcmU7VXYuaXNUcmFuc2xhdGluZz1Vdi5wZztVdi5zZXRDaGVja1Zpc2liaWxpdHk9VXYuUGl9cmV0dXJuIFV2fTtWdi5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybiBVdn07dmFyIFd2PW51bGwsWHY9ZnVuY3Rpb24oYSxiKXtXdnx8KFd2PW5ldyBQdihhLGIpLFd2LmNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7fSk7cmV0dXJuIFd2fTtYdi5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybiBXdn07CnZhciBZdj1mdW5jdGlvbigpe3ZhciBhPXpuKCJnb29nbGUudHJhbnNsYXRlLm0iKTthfHwoZnMoKSxfLnJjKCJnb29nbGUudHJhbnNsYXRlLm0iLFEpLGE9USk7aWYoYSlmb3IodmFyIGIgaW4gUilpZihSW2JdIT09T2JqZWN0LnByb3RvdHlwZVtSW2JdXSYmUltiXSl7dmFyIGM9UltiXSgpO1JbYl09YVtjXT9hW2NdOmdzfV8ub2koXy5aaShwcSwxKSkmJihiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksYi50ZXh0Q29udGVudD0iXG4gIC50cmFuc2xhdGVkLWx0cntcbiAgICAgIGRpcmVjdGlvbjogbHRyO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgfVxuICAudHJhbnNsYXRlZC1ydGx7XG4gICAgICBkaXJlY3Rpb246IHJ0bDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICB9XG4gICIsYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLGF8fChhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhlYWQiKSxjPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwKYy5pbnNlcnRCZWZvcmUoYSxjLmZpcnN0Q2hpbGQpKSxhLmFwcGVuZENoaWxkKGIpKTtCbj09MT8oXy5yYygiZ29vZ2xlLnRyYW5zbGF0ZS5UcmFuc2xhdGVTZXJ2aWNlIixWdiksUW0oInRlX2xpIikpOihfLnJjKCJnb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZUVsZW1lbnQiLFh2KSxQdi5wcm90b3R5cGUuZGlzcG9zZT1Qdi5wcm90b3R5cGUuZGlzcG9zZSxQdi5wcm90b3R5cGUuc2hvd0Jhbm5lcj1Qdi5wcm90b3R5cGUuUmksUHYucHJvdG90eXBlLnNldEVuYWJsZWQ9UHYucHJvdG90eXBlLlJiLF8ucmMoImdvb2dsZS50cmFuc2xhdGUuVHJhbnNsYXRlRWxlbWVudC5GbG9hdFBvc2l0aW9uIixKdiksSnYuVE9QX0xFRlQ9MSxKdi5UT1BfUklHSFQ9MixKdi5CT1RUT01fUklHSFQ9MyxKdi5CT1RUT01fTEVGVD00LF8ucmMoImdvb2dsZS50cmFuc2xhdGUuVHJhbnNsYXRlRWxlbWVudC5JbmxpbmVMYXlvdXQiLEh2KSxIdi5WRVJUSUNBTD0wLEh2LkhPUklaT05UQUw9MSxIdi5TSU1QTEU9CjIpO0NuKCl9OwppZih3aW5kb3cuZ29vZ2xlJiZ3aW5kb3cuZ29vZ2xlLnRyYW5zbGF0ZSYmd2luZG93Lmdvb2dsZS50cmFuc2xhdGUuX2NvbnN0KVl2KCk7ZWxzZSBpZih3aW5kb3cuZ29vZ2xlJiZ3aW5kb3cuZ29vZ2xlLnRyYW5zbGF0ZSYmd2luZG93Lmdvb2dsZS50cmFuc2xhdGUuX3Byb3RvQ29uZmlnKXtycT1uZXcgRGF0ZTt2YXIgWnY9bmV3IGxxKHdpbmRvdy5nb29nbGUudHJhbnNsYXRlLl9wcm90b0NvbmZpZyk7T249Xy5OKFp2LDIyKXx8IiI7bXE9Xy5OKFp2LDYpfHwicHJvZCI7bnE9Xy5OKFp2LDEyKXx8IiI7b3E9Xy5OKFp2LDEpfHwiZW4iO0FuPV8uTihadiwyKXx8IiI7dmFyICR2Oygkdj1fLmJqKFp2LGpxLDMpKSYmKHBxPSR2KTtfLk4oWnYsOCk7cXE9Xy5NKFp2LDE3KTtzcT17fTt2YXIgYXc7YXc9c20oWnYsMTgsXy5haigpKTtmb3IodmFyIGJ3PTA7Ync8YXcubGVuZ3RoO2J3Kyspc3FbYXdbYnddXT0hMDtCbj1fLk4oWnYsNSk9PSJsaWIiPzE6MDt0cT0oXy5OKFp2LDQpfHwidGUiKSsKKEJuPT0xPyJfbGliIjoiIik7ZnE9Xy5OKFp2LDkpfHwiIjt2YXIgY3c7KGN3PV8uTihadiwxMCkpfHwoY3c9Xy5OKFp2LDExKSk7dXE9Y3d8fCIiO3ZxPSJodHRwczovLyI7dmFyIGR3O2R3PV8uTihadiwxMyk7dmFyIGV3PXZxKyhkd3x8IiIpKyIvdHJhbnNsYXRlX3N0YXRpYy8iO3dxPWV3KyJpbWcvdGVfYmsuZ2lmIjt4cT1ldysiaW1nL3RlX2N0cmwzLmdpZiI7enE9ZXcrImltZy9sb2FkaW5nLmdpZiI7QXE9Xy5OKFp2LDE0KXx8IiI7eXE9Xy5OKFp2LDE1KXx8IiI7QnE9Xy5OKFp2LDE2KXx8IiI7Q3E9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vaW1hZ2VzL2NsZWFyZG90LmdpZiI7RHE9Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2ltYWdlcy9icmFuZGluZy9nb29nbGVsb2dvLzF4L2dvb2dsZWxvZ29fY29sb3JfNjh4MjhkcC5wbmciO0VxPSJodHRwczovL3d3dy5nc3RhdGljLmNvbS9pbWFnZXMvYnJhbmRpbmcvcHJvZHVjdC8xeC90cmFuc2xhdGVfMjRkcC5wbmciO0ZxPSJodHRwczovL3d3dy5nc3RhdGljLmNvbS9pbWFnZXMvYnJhbmRpbmcvZ29vZ2xlbG9nby8xeC9nb29nbGVsb2dvX2NvbG9yXzQyeDE2ZHAucG5nIjsKR3E9Imh0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZS5jb20iO0txKCk7WXYoKX07Cl8ubWEoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9Cn0pLmNhbGwodGhpcyx0aGlzLmRlZmF1bHRfdHIpOwovLyBHb29nbGUgSW5jLgo="}},"time_used":92,"timings":{"blocked":0,"dns":2,"connect":15,"send":0,"wait":16,"receive":30,"ssl":29},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/circuittradetech.mp4","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"media","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.249Z","timestamp":1785128399249,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /circuittradetech.mp4 HTTP/1.1\r\nHost: circuittradetech.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nRange: bytes=79364096-\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: video\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nAccept-Encoding: identity\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/3 206 \r\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: video/mp4\r\ncontent-length: 61750\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"4bbf136-67c3620e-869656e99233b625;;;\"\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 0\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: f00013cbae3fb1fda2e019a76b76f7e0-srv-edge3\r\nx-hcdn-cache-status: HIT\r\ncontent-range: bytes 79364096-79425845/79425846\r\n\r\n","headers":null,"cookies":null,"status_code":"206","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":61750,"size_decoded":62220,"mime_type":"video/mp4","magic":"data","md5":"5fd748ecbe9ee633449e409b4a417d41","sha1":"8aa46bf9d7e40b137976a99ccbdf8ddb61ef5931","sha256":"a4b1640b9c33ef6f53a1efccc41b9488c885c70f64d559b6df5e6b971cb3f78f","sha512":"27a56cb8860c5789da9f311ada9a059b6fd0208ca7568c0c1cd0671a47943cca5164a73b3a219b544ec437ac9640e0b149e62d64fd4f9a257318401415a555e8","ssdeep":"768:i6BFNBudJBOleoqPzK0bAe5jK4FtdqzU9VGhhhQH8X55xnAxvvhDOzdgCkW:i+U/bjb7jkU9VGhhyqvROZORgTW","tlshash":"14539e167b60432fc265667c49fb27c47336e6766a478b5fee0113490fca3c226172e9","first_seen":"2026-07-27T03:56:42.543556Z","last_seen":"2026-07-27T05:01:06.114398Z","times_seen":3,"resource_available":false,"data":"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AAKBAAAB9gAAAj4AAAIKAAACbAAAAf0AAAIzAAAClQAAAmMAAAHlAAAB8AAAAgEAAAJrAAAB9AAAAhAAAAHcAAAB/AAAAjQAAAJ1AAACFAAAAlQAAAI1AAAB0gAAAi8AAAJKAAAB7AAAAmMAAAJBAAAB4gAAAqsAAAIiAAACSQAAAekAAAJkAAACQwAAAicAAAIwAAACAgAAAgUAAAJgAAACSgAAAnUAAAH4AAAB6QAAAhMAAAIOAAACMwAAAjUAAAJhAAAB2wAAAgYAAAKTAAAB3QAAAl8AAAH+AAACSgAAAgUAAAJjAAACFAAAAkIAAAKCAAAB1AAAAfsAAAIEAAACjAAAAd8AAAJUAAAB/QAAAlUAAAH+AAACkwAAAdQAAAJuAAACGAAAAjsAAAI0AAACKwAAAigAAAIwAAACMgAAAiQAAAI4AAACEAAAAjYAAAI1AAACLQAAAgsAAAJpAAACfwAAAd4AAAIJAAAB9wAAAhsAAAIGAAACTQAAAioAAAI1AAACHAAAAicAAAIsAAACIgAAAnQAAAIYAAACMgAAAkMAAAIUAAAC3gAAAl4AAAIAAAACIwAAAhYAAAIVAAAB8wAAAg4AAAJuAAAB5QAAAlwAAAIWAAACkQAAAcIAAAIPAAACqQAAAjsAAAHjAAACUAAAAicAAALTAAACSgAAAicAAAHkAAAB+QAAAikAAAIsAAACZwAAAe0AAAJ3AAACrgAAAiQAAAIrAAAB0wAAAk0AAAIVAAACmQAAAf4AAAILAAACTwAAAvIAAAKjAAABvQAAAioAAAQ6AAACGQAAAiAAAAGlAAACOQAAAkYAAAJGAAACNwAAAisAAAHaAAACZAAAAkgAAAIbAAACIgAAAiMAAAJXAAACZAAAAiwAAAHwAAACCQAAAoIAAAH6AAACYQAAAdcAAAIJAAAB2gAAAkEAAAH0AAACHgAAAmwAAAI8AAACkwAAApgAAAI3AAACHAAAAyMAAAG1AAAB6QAAAdcAAARpAAAC+AAAAfYAAAH6AAACAgAAAmMAAAI1AAACIwAAAhEAAAIhAAACQgAAAkIAAAIPAAACBAAAAhMAAAIYAAACRQAAAhgAAAK7AAABvAAAAhoAAAJ0AAACdQAAAhkAAAIVAAACLAAAAfQAAAJQAAACPwAAAhEAAAH3AAACAQAAAkkAAAJOAAACOgAAAi0AAAIWAAAB+QAAAmUAAAICAAACHgAAAlgAAAIeAAACFQAAAmUAAAIdAAACPwAAAi8AAAIHAAACXwAAAjkAAAJEAAAB4AAAAjsAAAIvAAACWAAAAkEAAAHXAAACoQAAAnsAAAIPAAACDgAAAhoAAAJ5AAACgQAAAfkAAAImAAACjwAAAf8AAAIjAAACLAAAAiQAAAJiAAACIgAAAh4AAAJfAAACFwAAAqYAAAHNAAACFAAAAkQAAAH1AAACXQAAAhsAAAIQAAACcgAAAk8AAAJyAAACDQAAAkAAAAJLAAACPgAAAesAAAIVAAAB1QAAAgkAAAJFAAAClQAAAh4AAAISAAACIAAAAoMAAAHmAAACZgAAAkIAAAJeAAACJAAAAfgAAAKXAAAB8QAAAiYAAAJOAAACFQAAAf4AAAH5AAACZwAAAqcAAAH5AAACKwAAAhYAAAI3AAACcwAAAksAAAI9AAACTgAAAmcAAAIGAAACggAAAlQAAAJAAAACMQAAAh0AAAIYAAACNAAAAecAAAI1AAACCwAAAnwAAAJhAAAB/wAAAqMAAAHOAAACLQAAAjIAAAImAAAB0AAAAlgAAAJCAAACTgAAAfkAAAIPAAACaAAAAjEAAAI3AAACDgAAAi4AAAItAAACSAAAAgwAAAH+AAADHAAAAsEAAAI1AAAB8gAAAdkAAAIJAAAB/AAAAqEAAAILAAACDAAAAjwAAAIKAAACTAAAAjgAAAHqAAACagAAAikAAAIDAAACJQAAAi4AAAItAAACfAAAAkYAAAIEAAAB/QAAAokAAAJ5AAABzQAAAgsAAAIcAAACJwAAAjEAAAJRAAACLQAAAhAAAAIGAAACCwAAAhEAAAHrAAACPQAAAh8AAAJUAAACKgAAAioAAAJ7AAACUwAAAkIAAAItAAACTgAAAk0AAAJbAAACTQAAAlQAAAJNAAACQAAAAnYAAAJAAAACUgAAAkQAAAI4AAACSAAAAdYAAAIzAAACSAAAAfwAAAJDAAACFQAAAfsAAAKsAAAB3gAAAfMAAAHRAAAB8gAAAhoAAAIqAAACKAAAAjsAAAIjAAACcwAAAlEAAAHhAAACagAAAj8AAAM7AAACMgAAAdYAAAIZAAACMQAAAhEAAAJaAAACGAAAAjoAAAH3AAACZAAAAggAAAJOAAAB7QAAAmQAAAH2AAACbQAAAhsAAAH7AAACNAAAAiUAAAIpAAACHgAAAkwAAAIoAAACHgAAAj8AAAIvAAACIwAAAioAAAIRAAACbAAAAiIAAAIsAAACbAAAAdcAAAI7AAACbAAAAk4AAAIEAAAB7gAAAjgAAAJPAAAB0AAAArEAAAIGAAACXgAAAkIAAAINAAACYAAAAgwAAAJFAAACHAAAAiMAAAJGAAACMwAAAmgAAAHtAAACDAAAAgYAAAIqAAACFgAAAlcAAAIgAAACEgAAAmEAAAI5AAACUQAAAiMAAAHbAAACJAAAAicAAAJnAAACBgAAAkAAAAIaAAACSQAAAjEAAAIJAAACZAAAAm4AAAHuAAAB8wAAAgcAAAImAAACLAAAAkYAAAIGAAACSAAAAjQAAAKPAAAB9QAAAq4AAAHYAAACwwAAAjEAAAIsAAACEQAAAgwAAAJ2AAACKgAAAkEAAAH/AAACAwAAAkEAAANCAAACsgAAApIAAAIEAAABtwAAAfIAAAIVAAACHwAAAgsAAAISAAACMwAAAj4AAAIgAAACdAAAAkEAAAH4AAACIgAAAfMAAAKCAAABrwAAApMAAAIZAAACEwAAAg0AAAHVAAACegAAAlUAAAJLAAACJAAAAjMAAAH1AAACQQAAAiAAAAIYAAACfQAAAd0AAAI+AAACIwAAAjsAAAINAAACOgAAAkgAAAJZAAACGQAAAloAAAIhAAACRgAAAhoAAAIIAAACRQAAAkwAAAI0AAACNwAAAkgAAAJBAAACOgAAAhIAAAHUAAACZwAAAjoAAAJ3AAACBwAAAj0AAAIBAAACKwAAAjkAAAHYAAACZQAAAi8AAAIJAAACawAAAj4AAAIUAAACdQAAAloAAAHWAAACHAAAAg4AAAJeAAACJwAAAj4AAAJPAAAB8gAAAhEAAAI+AAAB7AAAAnEAAAIWAAAB/gAAAkUAAAKEAAAB5gAAAhcAAAINAAACTQAAAn0AAAJXAAACVAAAAlEAAAIiAAACDAAAAgoAAAHzAAACaAAAAgYAAAKTAAAB4gAAAiUAAAHpAAACSQAAAggAAAIDAAACGgAAAgcAAAIZAAACBwAAAiwAAAI+AAACIwAAAlkAAAJJAAACDgAAAmMAAAI8AAACLgAAAe8AAAIkAAAB9QAAAiEAAAKDAAAB6AAAAiUAAAHaAAACpAAAAfYAAAIlAAACBwAAAo4AAAILAAACBQAAAksAAAIiAAACEQAAAiUAAAJXAAACPAAAAfAAAAIoAAACUwAAAioAAAIkAAACMAAAAiAAAAJDAAACGQAAApoAAAHRAAAB6gAAAjwAAAJIAAACDAAAAgwAAAIIAAACjgAAAoQAAAI+AAAB5wAAAkIAAAIXAAACXQAAAhAAAAJAAAACMwAAAjkAAAJ0AAACZgAAAhEAAAJAAAACPgAAAjEAAAIWAAACBwAAAf8AAAIAAAACGAAAAnQAAAHPAAACKwAAAeEAAAIlAAACKAAAAjwAAAIHAAACagAAAp0AAAInAAACMwAAAhsAAAHvAAAB+wAAAmMAAAIQAAACEgAAAhwAAAIUAAACZQAAAjIAAAIlAAACBgAAAlcAAAImAAACQwAAAh8AAAJOAAACKgAAAiIAAAIgAAACKAAAAgQAAAKgAAAB9wAAAiQAAAI3AAACCgAAAjEAAAIIAAACdwAAAnIAAAIQAAACKwAAAjcAAAIWAAACBgAAAhQAAAJDAAACGQAAAlUAAAJIAAACLAAAAjsAAAIbAAAB5gAAApUAAAIBAAACQgAAAgUAAAIaAAAB/AAAAlQAAAIwAAACMQAAAjMAAAIVAAACWAAAAlIAAAItAAACKQAAAl0AAAIOAAACMgAAAfEAAAOcAAAC1QAAAeYAAAIaAAAB+QAAAnoAAAHrAAACWQAAAkUAAAIwAAACZAAAAmkAAAIDAAACRAAAAmUAAAI6AAACKgAAAioAAAIQAAAB2AAAAhIAAAJsAAAB8gAAAkEAAAIhAAACagAAAiwAAAIyAAACCwAAAlkAAAI5AAAB+QAAAf8AAAI1AAACQgAAAj8AAAIoAAACTwAAAh4AAAIXAAAB3QAAAskAAAISAAACOQAAAkEAAAIGAAACVAAAAi0AAAH6AAACeAAAAhoAAAItAAACLgAAAikAAAIRAAACHwAAAikAAAIyAAACQgAAAhgAAAIyAAACSgAAAkcAAAIEAAACUAAAAikAAAHsAAACMQAAAiwAAAIuAAACMQAAAkIAAAIvAAACFgAAAlUAAAIdAAACHgAAAj8AAAIKAAACdAAAAiUAAAIjAAACpgAAAeMAAAHYAAACmQAAAiIAAAJQAAACIgAAAlgAAAIDAAACKQAAAh8AAAIzAAACUgAAAiEAAAImAAACCwAAAkcAAAJUAAAB1AAAApgAAAGyAAACRAAAAksAAAIhAAAB0gAAAecAAAJFAAAB9QAAAoAAAAKlAAACLgAAAgUAAAIoAAACWwAAAlYAAAJFAAACCAAAAkkAAAH1AAACAQAAAksAAAJnAAACSgAAAicAAALQAAADVgAAAoMAAAIGAAAB1QAAAiUAAAJKAAACPwAAAmYAAAJPAAACaAAAAisAAAITAAACEwAAAfcAAAKHAAACJAAAAioAAAIvAAACngAAAf0AAAKWAAAB6QAAAmYAAAJ6AAACQAAAAjYAAAHiAAACDQAAAn0AAAHjAAACVAAAAlMAAAJJAAACGAAAAmsAAAH5AAACMwAAAg8AAAHzAAACiQAAAxIAAAJMAAAB+wAAAiAAAAJQAAACOQAAAc4AAAHOAAACWAAAAlkAAAJkAAACiQAAAjEAAAIrAAACKQAAAjQAAAJXAAACVgAAAk0AAAJLAAACcwAAAkIAAAJGAAACSwAAAh8AAAH4AAACZwAAAikAAAJoAAACXwAAAk4AAAJQAAACCwAAAkIAAAJmAAACOAAAAkUAAAHeAAACNAAAAf0AAAJmAAAB+QAAAiAAAAInAAAB+wAAAo4AAAHUAAACJwAAAlAAAAIaAAACMQAAAkIAAAJRAAACMwAAAhgAAAJMAAACHwAAAhIAAAH+AAACDgAAAmYAAAI8AAACawAAAkQAAAJRAAACCwAAAdkAAAKYAAACOgAAAiAAAAHOAAACggAAAlUAAAJdAAAB3QAAA5AAAALAAAACrgAAAooAAAIZAAAB7wAAAjIAAAIrAAACFAAAAd8AAAIQAAACFwAAAosAAAIMAAAB9gAAAlUAAAIWAAACNQAAAisAAAIbAAACHQAAAjAAAAI1AAACNgAAAhgAAAIyAAACIwAAAj4AAAInAAACSgAAAfcAAAKoAAACLgAAAfIAAAIsAAACowAAAlMAAAHdAAACLwAAAkUAAAJEAAACZAAAAcEAAALUAAACmAAAAngAAAJVAAAB+gAAAgYAAAISAAACkwAAAtMAAAKPAAACLQAAAfMAAAIBAAAB/wAAAdkAAAKCAAACDwAAAgkAAAHvAAAB6gAAAj0AAAImAAACNAAAAocAAAHjAAACIQAAAkoAAAINAAACSQAAAhsAAAIoAAACOAAAAkEAAAKAAAACQQAAAkIAAAHVAAACZAAAAdYAAAI2AAACdwAAAwgAAAKgAAAB5QAAAfsAAAKYAAAB1wAAAe4AAAJIAAACjgAAAgUAAAKQAAACPAAAAnkAAALAAAADYQAAArwAAAIPAAACDwAAAgkAAAHgAAACSwAAAfUAAAKWAAACGAAAAekAAAIHAAACGgAAAmgAAAILAAACGgAAAjMAAAJ0AAAB8QAAAjAAAAIkAAACDQAAAkIAAAJPAAAB+gAAAmoAAAH+AAACIgAAAjIAAAIiAAACWwAAAgUAAAJ0AAAB9QAAAl4AAAIQAAACpAAAAd4AAAKkAAABzgAAAjoAAAIDAAACVAAAAjsAAAInAAACLwAAAhQAAAJEAAAB9gAAAkEAAAIAAAACVwAAAxkAAAK+AAABzgAAAggAAAHVAAACXwAAAe0AAAIxAAACRAAAAjoAAAIPAAACLwAAAmwAAAHmAAACLAAAAioAAAJBAAACHwAAAi0AAAJIAAACHAAAAh8AAAIuAAACKgAAAj8AAAICAAACaQAAAmoAAAHhAAAB/gAAAjEAAAJeAAAB8wAAAj4AAAHiAAACKwAAAhUAAAIzAAACIgAAAjUAAAIpAAACKQAAAkIAAAIpAAACNAAAAmUAAAJIAAACGQAAAhUAAAKhAAAB9wAAAg0AAAH5AAACMwAAAioAAAJGAAACKQAAAhoAAAJZAAACBQAAAjkAAAH8AAACgQAAAgYAAAIrAAACOgAAAhQAAAItAAACNgAAAjYAAAI2AAAB8gAAAy0AAAJjAAACEgAAAdcAAAIjAAACJAAAAjMAAAJKAAACAQAAAk4AAAIVAAACHAAAAhoAAAN4AAACeAAAAicAAAH7AAACSQAAAm8AAAHbAAACJAAAAgUAAAIEAAAB/AAAAnUAAAIkAAACMwAAAhUAAAJBAAACKAAAAe0AAAHxAAACTAAAApIAAAI0AAACGAAAAiQAAAHxAAACEQAAAhoAAAJMAAADJgAAAwUAAAJsAAACEQAAAhYAAAIAAAAB+AAAAeAAAAKDAAACqgAAAeUAAAHgAAAB6AAAAncAAAIsAAACVwAAAeoAAAKSAAACcAAAAlgAAAIsAAACSQAAAjsAAAIYAAACUgAAAiQAAAKYAAAB6gAAAhoAAAHjAAACPQAAAhkAAAITAAACUQAAAjYAAAINAAACeAAAApQAAANSAAACSAAAAdoAAAI2AAACSgAAAfYAAAIxAAACSgAAAh8AAAInAAACMQAAAc4AAAKcAAACogAAAkEAAAKAAAABzwAAAk8AAAI/AAACDwAAAh0AAAIZAAACFAAAAhgAAAJ9AAAB9QAAAg0AAAIKAAACUAAAAgIAAAH+AAACQQAAAjkAAAIqAAACIAAAAhoAAAJjAAACbAAAAdkAAAJoAAACDwAAAiEAAAKLAAACUQAAAiQAAAHTAAAB/AAAAiUAAAKeAAACugAAAi0AAAHxAAAB+AAAAgsAAAIeAAACOwAAAisAAAIrAAACdAAAAk0AAAIQAAACPQAAAgwAAAIZAAAB3QAAAh8AAAJMAAACnwAAA3UAAAJpAAACGgAAAdMAAAKNAAACGAAAAioAAAJNAAACCgAAAlgAAAJEAAAB/AAAAjYAAAInAAACJAAAAmYAAAHrAAACfQAAAd0AAAIuAAACDwAAAi4AAAJJAAACPAAAAjAAAAHeAAACdAAAAiwAAAJCAAACKAAAAh0AAAIUAAACFwAAAmEAAAH6AAACTAAAAk4AAAH1AAACHwAAAn4AAAJvAAAB7QAAAf8AAAI3AAACHAAAAoAAAAJPAAACRgAAAiAAAAIDAAACIAAAAhQAAAJbAAACAwAAAjMAAAIpAAACZwAAAjoAAAJHAAAB0QAAAdMAAAIxAAAClAAAAfsAAAKOAAAChAAAAp0AAAH+AAACsAAAAoAAAAH2AAACHAAAAj4AAAJGAAACWAAAAhYAAAItAAACOQAAAjQAAAJcAAACTgAAAlMAAAJdAAACTAAAAkIAAAIBAAACZQAAAjYAAAISAAACNQAAAhUAAAHjAAACrwAAAhoAAAIOAAACcgAAAg8AAAJTAAACCwAAAkcAAAMQAAAB4gAAAjkAAAHyAAACEwAAAkIAAALkAAACcQAAAlIAAAIaAAAB9AAAAeAAAAH4AAACoAAAAc8AAAJjAAAB9gAAAk8AAAIFAAACUgAAAh4AAAInAAACDQAAAmQAAAIHAAACXQAAAjgAAAInAAACLAAAAiYAAAIbAAACPQAAAiIAAAIIAAACVwAAAhQAAAKkAAACbQAAAg8AAAHsAAACUAAAAhYAAAIiAAACCgAAAkEAAAIjAAACIQAAAn4AAAH9AAACSgAAAhsAAAI0AAACDQAAAh0AAAJcAAACHgAAAjIAAAI9AAACHQAAAigAAAJEAAACIQAAAjkAAAHxAAACoQAAAgMAAAKbAAACEwAAAh0AAAImAAACUgAAAiUAAAIkAAACLAAAAiIAAAItAAACPAAAAiUAAAIgAAACQgAAAiYAAAIVAAAB3QAAAnIAAAIRAAACPQAAAhoAAAIoAAACDAAAAl4AAAIQAAACHwAAAjEAAAI0AAACSgAAAkAAAAH/AAACXAAAAjgAAAKaAAAB1gAAAhAAAAI5AAACJgAAAh0AAAHrAAACDwAAAisAAAIfAAACgAAAAnYAAAIAAAACBgAAAkYAAAJKAAACGgAAAc4AAAKFAAACCgAAAhIAAAJaAAACAwAAAlwAAAIsAAACJgAAAiQAAAIeAAACJQAAAjUAAAIqAAACFgAAAmIAAAIpAAACKwAAAn0AAAHlAAAB9QAAAicAAAIDAAACYAAAAisAAAI5AAACOAAAAhoAAAHZAAACLwAAAjMAAAITAAACTAAAAg0AAAJVAAACEAAAAd8AAAJzAAACKgAAAj0AAAIrAAACRwAAAnUAAAJuAAABpAAAAi0AAAI5AAAClwAAAlQAAAJaAAACNAAAAg0AAAI8AAACGgAAAiYAAAJVAAACMQAAAfIAAAJAAAACCwAAAnQAAAJIAAAClAAAAngAAAHwAAAB6gAAAjoAAAJDAAACLQAAAioAAAI/AAACCAAAAd4AAAIEAAACQQAAAg0AAAIpAAACXgAAAkIAAAJTAAACBgAAAlEAAAKkAAAB4wAAAi0AAAJuAAAB+QAAAh8AAAHoAAAB2gAAAjcAAAIaAAACcQAAAgoAAAJxAAABswAAAgEAAAINAAACCAAAAhEAAAI7AAACDgAAAlEAAAIIAAACPQAAAhQAAAKiAAACZQAAAhkAAAJNAAACLgAAAisAAAIGAAACEwAAAlsAAAH2AAACegAAAkEAAAI+AAACEgAAAhcAAAIuAAACBQAAAjQAAAKrAAACUgAAAhEAAAHbAAACEQAAAf8AAAIdAAACNwAAAiQAAAJRAAACBQAAAiQAAAJJAAACEwAAAgcAAAJ1AAACMwAAAnQAAAJ6AAACUAAAAf8AAAIzAAACRQAAAlUAAAIHAAACpwAAAdQAAAIsAAACCQAAAgUAAAI5AAACDgAAAm0AAAI1AAACWAAAAhgAAAHwAAACUwAAAkUAAAHvAAACLgAAAikAAAJnAAAB0wAAAiwAAATaAAACAAAAAo8AAAInAAACAwAAAhkAAAILAAAChQAAAfMAAAJ/AAACKQAAAiMAAAIwAAACLgAAAhwAAAIBAAACbwAAAekAAAJzAAACegAAAk0AAAI9AAACLwAAAhUAAAJkAAACIwAAAogAAAJuAAACKgAAAiMAAAIOAAACSAAAAj8AAAJWAAACKAAAAfEAAAH6AAACPwAAAn8AAAJOAAACCwAAAiAAAAIaAAACHQAAAhcAAAIwAAACNwAAAjQAAAJJAAACGQAAAhEAAAJGAAACOAAAAhsAAAIiAAACWgAAAmUAAAJ5AAACjwAAAlkAAAIQAAACMAAAAeoAAAHZAAAB7wAAAjAAAAIZAAACNAAAAicAAAJAAAACpwAAAwcAAAI4AAAB0AAAAe8AAALRAAAC0AAAAkAAAAHpAAACHQAAAgoAAAILAAAB3QAAAhEAAAIUAAACVwAAAhkAAAIdAAACKgAAAhoAAAI/AAACPAAAAoMAAAL6AAACXgAAAeAAAAH+AAACDwAAAdAAAAIpAAACBgAAAg0AAAJIAAACGgAAAlcAAAItAAACpQAAAgsAAAHtAAACdgAAAi0AAAIEAAACPgAAAj8AAAJqAAACIgAAAiIAAAH6AAACDQAAAfEAAAKAAAACJQAAAiYAAAICAAACKAAAAiQAAAIoAAACPwAAAiAAAAJVAAACIgAAAjMAAAJTAAACAAAAAkkAAAIdAAACewAAAdEAAAHdAAAClQAAAoMAAAHxAAACaAAAAhQAAAJ9AAADVQAAApUAAAIQAAACWQAAAi0AAAH6AAACagAAA3AAAAJgAAAB9wAAAfQAAAHmAAACJgAAAjMAAALsAAAC8gAAAikAAAHoAAAB3gAAAl4AAAJOAAACIwAAAmQAAAIfAAACHQAAAjQAAAHvAAACCAAAAfcAAAIXAAACMgAAAjAAAAInAAACSwAAAhgAAAKuAAAB9gAAAg4AAAIaAAACIgAAAiQAAAJFAAACAwAAA4cAAALdAAACEwAAAcMAAAHoAAACGQAAAjYAAAJBAAACDgAAAlEAAAIzAAACLQAAAiUAAAIiAAACFQAAAiEAAAIqAAACQAAAAjQAAAJJAAACJwAAAiMAAAJ2AAACTQAAAdUAAAINAAACJAAAAgwAAAJIAAACGgAAAlgAAAIMAAACSQAAAj8AAAIjAAACfAAAAiAAAAJpAAACLwAAAgYAAAIMAAACoQAAAl0AAAHnAAAB+AAAAhIAAAH4AAAB7AAAAlwAAAISAAACMQAAAjQAAAI0AAACZQAAAe8AAAJEAAACHwAAAicAAAI4AAACRgAAAkgAAAIoAAACRQAAAjUAAAIwAAACRQAAAj8AAAJIAAACGAAAAg4AAAJAAAACLgAAAkIAAAI2AAACIgAAAisAAAI1AAACLAAAAikAAAIqAAACKwAAAikAAAIiAAACIgAAAfMAAAI0AAACNAAAAkYAAAIzAAACFwAAAiUAAAJAAAADGgAAAl8AAAI1AAACHwAAAq8AAAHPAAAB+QAAAfcAAAIwAAACJQAAAikAAAIgAAACOAAAAk4AAAI1AAACKAAAAgoAAAIgAAACVgAAAl4AAAHWAAAB3gAAAkcAAAH8AAACCwAAAf0AAAJbAAACIAAAAisAAAIwAAACnwAAAdgAAAILAAACcAAAAgYAAAJUAAACWAAAAgQAAAIJAAAB0AAAAiAAAAJFAAACIgAAAigAAAIhAAACEwAAAisAAAI7AAACCwAAAhsAAAItAAACVQAAAaYAAAJPAAACKwAAAg4AAAKOAAACBAAAAkIAAAI6AAACQAAAAkoAAAIZAAACOwAAArMAAAN5AAAC1gAAAfwAAAH+AAAB+gAAAkcAAAI4AAACCAAAAjMAAAIbAAACGwAAAe0AAAKFAAACCwAAAk8AAAIaAAACPQAAAiUAAAIpAAACJAAAAhcAAAKFAAAB8wAAAn4AAAJBAAAB7wAAAhcAAAI3AAACKwAAAfsAAAJvAAACHgAAApcAAAIlAAAB/gAAAm8AAAIHAAACOAAAAf4AAAHnAAACUQAAAiQAAAIvAAACIwAAAhoAAAJ+AAAB8wAAAhQAAAIxAAACNQAAAkcAAAIvAAACNgAAAf0AAAJFAAACSwAAAhwAAAIcAAACowAAAdMAAAIlAAACEAAAAh0AAAIvAAACLgAAAnsAAAHZAAAB9gAAAkwAAAImAAACMAAAAhAAAAJAAAACYgAAAkwAAAIiAAACPQAAAhMAAAJBAAACGgAAAhwAAAJDAAAB9QAAAosAAAINAAACQAAAAlYAAAJKAAACYAAAAkgAAAIoAAACGgAAAqwAAAHsAAADSAAAAw4AAAHAAAACDQAAAkEAAAI+AAACWQAAAfoAAAKgAAAB4wAAAfQAAAIIAAACSwAAAgcAAAIvAAACQwAAAi4AAAIbAAACHAAAAkcAAAISAAACrwAAAeYAAAIOAAACIwAAAkYAAAILAAACRAAAAgkAAAJMAAACKQAAAkUAAAILAAACOwAAAiYAAAIbAAACTAAAAhQAAAJMAAACFAAAAmAAAAIsAAACgAAAAhcAAAIXAAACRAAAAiMAAAIZAAACKwAAApUAAAHoAAACQQAAAlEAAAHaAAACSQAAAjEAAAInAAACQgAAAiMAAAISAAACSQAAAgwAAAI4AAACCgAAAicAAAJoAAACPgAAAc8AAAJNAAACfgAAAh4AAAJ4AAAB2QAAAdwAAAI4AAACNwAAAo4AAAJOAAACJAAAAhoAAAIQAAACGAAAAjIAAAIuAAACNgAAAjIAAAIaAAACDQAAAjEAAAIhAAACIwAAAh4AAAIqAAACYgAAAiwAAAI7AAACPQAAAggAAAJKAAACMwAAAtIAAAIcAAADNgAAAdcAAAITAAAB0AAAAmgAAAIwAAACDwAAAhcAAAJjAAACHwAAAl8AAAHvAAACRQAAAikAAAI2AAACGQAAAfAAAAHlAAACRAAAAisAAAI1AAACIgAAAiwAAAI2AAACKAAAAikAAAIwAAACCAAAAoMAAAIAAAACEgAAAkEAAAIPAAACNAAAAikAAAIxAAACNgAAAkgAAAL0AAADUAAAAosAAAHhAAACVwAAApQAAAHaAAAB5AAAAkAAAAIqAAACDwAAAgsAAAHaAAACNAAAAioAAAIbAAACLQAAAjUAAAI9AAACKgAAAhYAAAJ3AAACegAAAlsAAAHmAAACTwAAAdwAAAIBAAADQAAAAxAAAAH9AAAB3QAAAgMAAAIwAAACGwAAAi4AAAIyAAACIgAAAkEAAAIyAAACOQAAAh4AAAJEAAACOAAAAjsAAAJCAAACMAAAAj0AAAIaAAACJQAAAqkAAAITAAACHQAAAjEAAAIYAAAB3QAAAn0AAAI7AAAB9AAAAhAAAAJQAAACGgAAAkoAAAIRAAACLAAAAjUAAAIVAAACTgAAA0EAAAJhAAABpgAAAmkAAAH0AAACQgAAAh8AAAJLAAACFQAAAicAAAI9AAACFgAAAgIAAAJcAAACGQAAAm4AAALjAAAB4QAAAlUAAAH7AAACewAAAh4AAAJiAAACZAAAAlIAAAJ4AAACNQAAAhMAAAIoAAAB9gAAAicAAAIdAAACTAAAAkwAAAI7AAACBQAAAjIAAAH2AAACmAAAAj8AAAIZAAACSQAAAhwAAAJWAAACFAAAAjcAAAHlAAACBgAAAioAAAJ4AAACEwAAAecAAAJTAAAChAAAAdwAAAJjAAACXAAAAg0AAAIJAAACMwAAAjwAAAJAAAACWwAAAlcAAAH0AAACBQAAAgQAAAHnAAACFQAAApQAAAJSAAACDAAAAh4AAAIRAAAB8wAAAiQAAAI6AAACLwAAAhsAAAINAAACIQAAAiQAAAIxAAACQQAAAiQAAAIkAAACrQAAAi4AAAIuAAACMAAAAiwAAAH6AAACGwAAAj4AAAJIAAACDwAAAjEAAAImAAACPAAAAi8AAAIIAAACBgAAAjYAAAIjAAACPQAAAqwAAAH1AAACHAAAAd0AAAIcAAACGQAAAlsAAAI6AAACIAAAAfAAAAHgAAACJQAAAhoAAAIaAAACLwAAAjIAAAInAAACgAAAAocAAAIyAAADNwAAA0gAAAKcAAACAgAAAgYAAAHmAAAB/wAAAkAAAAIKAAACJgAAAlgAAAHWAAACLgAAApIAAAIaAAACTAAAAjoAAAJpAAAB2AAAAnkAAAKGAAAC0wAAAocAAAHjAAACGgAAAhwAAAI/AAACOAAAAhwAAAJrAAACYgAAAh8AAAIOAAACOAAAAmIAAAJcAAACRAAAAeAAAAH9AAACAwAAAocAAAHRAAAB8QAAAlgAAAJKAAACNAAAAewAAAJ2AAACEAAAAh8AAAI9AAACWwAAAhsAAAH8AAACNwAAAgIAAAJuAAACJAAAAi0AAAIMAAACMwAAAiAAAAIrAAACcgAAAg8AAAI8AAACJQAAAm8AAAIWAAACmwAAAgMAAAIsAAACGgAAAjoAAAIFAAACYgAAAhYAAAJDAAACJAAAAh4AAAIqAAACOgAAAjAAAAIhAAAB/QAAAhUAAAIyAAACIQAAAhMAAAJaAAACGAAAAhYAAAJKAAACFAAAAlgAAAIVAAACPgAAAgkAAAIxAAACPAAAAkMAAAIcAAACMwAAAhMAAAIoAAACQwAAAhMAAAI7AAACNAAAAnAAAAHgAAACYwAAAhcAAAJLAAACQgAAAlAAAAI+AAABrwAAAmQAAAKPAAAB2wAAAlUAAAH8AAACEAAAAi4AAAIxAAACJQAAAlkAAAJUAAACKgAAAkkAAAIhAAAB6AAAAnkAAAH8AAACNwAAAm0AAAHcAAACkQAAAf4AAAJmAAACDQAAAkAAAAI9AAACHQAAAkcAAAIAAAACBgAAAmkAAAHrAAACRQAAAjMAAAIgAAACNQAAAicAAAI/AAACFAAAAioAAAIYAAACTgAAA0wAAAKsAAAB2QAAAc4AAAJMAAAB2gAAAiAAAAIgAAACgQAAAe4AAAIbAAACowAAAdkAAAHzAAAB5gAAAl8AAAIxAAACdQAAAocAAAJnAAAB8QAAAgYAAAHSAAACAQAAAhgAAAJIAAACKgAAAhIAAAIWAAACQAAAAnQAAAIpAAAB6AAAAlQAAAJLAAACEgAAAf4AAAKeAAACcgAAAhUAAAIEAAACEQAAAlcAAAIEAAACJwAAAjgAAAJfAAAB6QAAAoAAAAISAAACIwAAAhEAAAItAAACJQAAAiYAAAJYAAACSQAAAe8AAAKDAAAB9gAAAjAAAAISAAACLgAAAi8AAAJrAAACGQAAAigAAAJVAAACEQAAAokAAAJDAAAB1QAAAiYAAAIOAAACTwAAAfEAAAJJAAACFwAAAigAAAIcAAACKgAAAkoAAAIOAAACaAAAAgcAAAJxAAABpwAAAgUAAAKIAAAB3wAAAnAAAAH0AAACeAAAAhQAAAI9AAACGgAAAjcAAAIwAAACRgAAAkgAAAHcAAACPQAAAg0AAAJfAAACEAAAAhsAAAImAAACOwAAApgAAAHeAAACIQAAAi0AAAIrAAACCwAAAmsAAAIOAAACLgAAAhgAAAJIAAACKQAAAkgAAAIaAAACLAAAAmoAAAIpAAACewAAAi8AAAHgAAACEwAAAi4AAAIrAAAB8AAAAlsAAAI2AAACKgAAAhQAAAIQAAACWAAAAiwAAAJNAAACDgAAAiYAAAKOAAAB2AAAAf4AAAIiAAACnAAAAd8AAAJhAAACMgAAAqUAAAHiAAACKwAAAkwAAAITAAAB1AAAAhkAAAHpAAACQAAAAiwAAAKTAAACEgAAAj4AAAI0AAACfwAAAdYAAAIlAAACJQAAAjsAAAIcAAAB+gAAAmwAAAIFAAACAAAAAkIAAAIXAAAB/wAAAhkAAAInAAACSgAAAiIAAAHmAAACaQAAAhkAAAI1AAACfAAAAjkAAAINAAACawAAAjAAAAJeAAACPwAAAg0AAAI6AAAB0AAAApAAAAKXAAACZgAAAf8AAAIWAAAB7gAAApkAAAJtAAACBwAAAhsAAAI4AAACTQAAAokAAAKRAAACjgAAAk0AAAJPAAACVAAAAggAAAIWAAACLgAAAi0AAAIhAAAB2QAAAk0AAAIcAAACXwAAAnEAAAIgAAAB4gAAAiAAAAJIAAACQwAAAj8AAAKLAAACOwAAAoIAAAI8AAAB2QAAAhQAAAJsAAAB0AAAAewAAAI4AAACNQAAAdsAAAKoAAACKQAAAlMAAAI6AAACJgAAAh8AAAIwAAACUAAAAi0AAAIfAAACkQAAAoAAAAKtAAAB8gAAAgUAAAH9AAAB8wAAAfgAAAI4AAACMAAAApoAAAJgAAACPAAAAkUAAAJgAAACJgAAAeoAAAH/AAACGQAAAigAAAJPAAACQQAAAigAAAIkAAACNQAAAhkAAAIUAAACIwAAAioAAAISAAACQAAAAjIAAAKFAAACPAAAAiQAAAIrAAACEQAAAhkAAAHpAAACRwAAAhkAAAImAAACYgAAAlgAAAHtAAACKgAAAhMAAAHvAAACJgAAAtIAAAI+AAACDQAAAeQAAAIyAAACDwAAAiQAAAIlAAACqAAAAeEAAAJLAAACEwAAAhIAAAJvAAAB9wAAAjYAAAH8AAACfgAAAjEAAAIeAAACHAAAApAAAAKHAAACAAAAAeYAAAIfAAACTgAAAiAAAAIhAAACSQAAAlMAAAHWAAADBQAAAloAAAIeAAAB2wAAAtkAAAHaAAACHAAAAfYAAAHrAAACZgAAAhoAAAJQAAACXgAAAdEAAAIRAAACaAAAAgQAAAJMAAACUAAAAr4AAAHPAAAB+AAAAhQAAAIhAAACbAAAApgAAALJAAAC6AAAAdgAAAH3AAACDgAAAfAAAAITAAACNgAAAiEAAAIzAAACNwAAAg4AAAKrAAACJAAAAkUAAAIQAAACOQAAAjYAAAIEAAACSAAAAhAAAAI0AAACZwAAAhIAAAJOAAACQQAAAgwAAAH0AAACPgAAAlEAAAIAAAACPgAAAqsAAAK0AAACLwAAAgUAAAIUAAAB5QAAAjAAAAIDAAACHQAAAjQAAAKXAAAB3gAAAfEAAAJwAAAB8AAAAnQAAAHoAAACXAAAAlAAAAKpAAACfAAAAdAAAAHpAAACWQAAAmYAAAHPAAACGgAAAawAAAKtAAAB6AAAAoMAAAHXAAACQAAAAggA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ODQtNDUxMi00Mjc0LTk2ODUtMjdmODNlMTYzNTUwLDNjM2JiMGYyLWQ0MjYtNDg4MS1iZTVkLWI3NDk3ZmY5ZmY2YixiZTMyZjYyMi0zNjg3LTQzNzQtYWMyOC03ZjlhMjY0MjhlYTAsMTcyZTJiYjMtNWY3NC00ZDFhLWI0N2YtMTM2ODlhMWJkY2Y1LDk5ZWJlMTFhLWE1ODAtNGJlNS05YzNkLTZkODQ5Y2RhNzk0MCwwOTdiYWM3MS1lZWViLTQzNWQtYTYyMy1hNTBhYTFlYTAyNzgiLCJvcyI6IndpbmRvd3MiLCJwcm9kdWN0IjoidmljdXQiLCJzdGlja2VySWQiOiIiLCJ2aWRlb0VmZmVjdElkIjoiIiwidmlkZW9JZCI6ImIxMWVlN2JkLTQ5M2QtNGRhMi04ZmQxLWZhMTFlNDhhYjcwYyIsInZpZGVvUGFyYW1zIjp7ImJlIjowLCJlZiI6MCwiZnQiOjAsIm1hIjowLCJtZSI6MCwibXUiOjAsInJlIjowLCJzcCI6MCwic3QiOjAsInRlIjowLCJ0eCI6MCwidiI6MCwidnMiOjQwfX0sInNvdXJjZV90eXBlIjoidmljdXQifQAAABkAAAAEAAAAEWRhdGEAAAABAAAAADAAAAAZAAAABQAAABFkYXRhAAAAAQAAAAAxAAAAJQAAAAYAAAAdZGF0YQAAAAEAAAAATGF2ZjU4Ljc2LjEwMA=="}},"time_used":533,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":532,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/lib/font-awesome/css/all.mina2f8.css?ver=3.19.1","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.773Z","timestamp":1785128398773,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/elementor/assets/lib/font-awesome/css/all.mina2f8.css?ver=3.19.1 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 12733\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"124a4-67c3620e-2ee5c2ee44ee44ab;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 69cbc4797914391dc343fa2d4d46537a-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":74916,"size_decoded":13307,"mime_type":"text/css","magic":"ASCII text","md5":"b424221885c8a6fcfaf9729cf59fcafa","sha1":"c25d96f15f6c218682297cdd926f8dbbb3a5bfac","sha256":"79099e186092d9e87c0417b55c56aaea55777d7ae73864b14ad7fb0206c1538c","sha512":"4898015bb84be2d630a199ac50292e3f73d850dca424443d8e7891ee2d47567c98ea62483416f058059eef22a8bd4e8fa635c376f76e1d886e168e2359c052de","ssdeep":"768:0slcWL1WmZlMBOulII2tt0QNTbgMCo5PVCLD1LDfgjGGnc+:0slcWL1W1BpaI2nzNPgMCo5PwVXeXd","tlshash":"8b73ffbcd1fe18954308e485274bb380b325b6af9c484c5df282be8ddbd06799186bdd","first_seen":"2026-07-27T03:56:42.588314Z","last_seen":"2026-07-27T05:30:59.819837Z","times_seen":6,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KCi5mYSwKLmZhYiwKLmZhZCwKLmZhbCwKLmZhciwKLmZhcyB7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDsKICAgIHRleHQtcmVuZGVyaW5nOiBhdXRvOwogICAgbGluZS1oZWlnaHQ6IDEKfQoKLmZhLWxnIHsKICAgIGZvbnQtc2l6ZTogMS4zMzMzM2VtOwogICAgbGluZS1oZWlnaHQ6IC43NWVtOwogICAgdmVydGljYWwtYWxpZ246IC0uMDY2N2VtCn0KCi5mYS14cyB7CiAgICBmb250LXNpemU6IC43NWVtCn0KCi5mYS1zbSB7CiAgICBmb250LXNpemU6IC44NzVlbQp9CgouZmEtMXggewogICAgZm9udC1zaXplOiAxZW0KfQoKLmZhLTJ4IHsKICAgIGZvbnQtc2l6ZTogMmVtCn0KCi5mYS0zeCB7CiAgICBmb250LXNpemU6IDNlbQp9CgouZmEtNHggewogICAgZm9udC1zaXplOiA0ZW0KfQoKLmZhLTV4IHsKICAgIGZvbnQtc2l6ZTogNWVtCn0KCi5mYS02eCB7CiAgICBmb250LXNpemU6IDZlbQp9CgouZmEtN3ggewogICAgZm9udC1zaXplOiA3ZW0KfQoKLmZhLTh4IHsKICAgIGZvbnQtc2l6ZTogOGVtCn0KCi5mYS05eCB7CiAgICBmb250LXNpemU6IDllbQp9CgouZmEtMTB4IHsKICAgIGZvbnQtc2l6ZTogMTBlbQp9CgouZmEtZncgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2lkdGg6IDEuMjVlbQp9CgouZmEtdWwgewogICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogICAgbWFyZ2luLWxlZnQ6IDIuNWVtOwogICAgcGFkZGluZy1sZWZ0OiAwCn0KCi5mYS11bD5saSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmZhLWxpIHsKICAgIGxlZnQ6IC0yZW07CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aWR0aDogMmVtOwogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQKfQoKLmZhLWJvcmRlciB7CiAgICBib3JkZXI6IC4wOGVtIHNvbGlkICNlZWU7CiAgICBib3JkZXItcmFkaXVzOiAuMWVtOwogICAgcGFkZGluZzogLjJlbSAuMjVlbSAuMTVlbQp9CgouZmEtcHVsbC1sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0Cn0KCi5mYS1wdWxsLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodAp9CgouZmEuZmEtcHVsbC1sZWZ0LAouZmFiLmZhLXB1bGwtbGVmdCwKLmZhbC5mYS1wdWxsLWxlZnQsCi5mYXIuZmEtcHVsbC1sZWZ0LAouZmFzLmZhLXB1bGwtbGVmdCB7CiAgICBtYXJnaW4tcmlnaHQ6IC4zZW0KfQoKLmZhLmZhLXB1bGwtcmlnaHQsCi5mYWIuZmEtcHVsbC1yaWdodCwKLmZhbC5mYS1wdWxsLXJpZ2h0LAouZmFyLmZhLXB1bGwtcmlnaHQsCi5mYXMuZmEtcHVsbC1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogLjNlbQp9CgouZmEtc3BpbiB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlCn0KCi5mYS1wdWxzZSB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAxcyBzdGVwcyg4KSBpbmZpbml0ZTsKICAgIGFuaW1hdGlvbjogZmEtc3BpbiAxcyBzdGVwcyg4KSBpbmZpbml0ZQp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmEtc3BpbiB7CiAgICAwJSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKQogICAgfQogICAgdG8gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMXR1cm4pOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDF0dXJuKQogICAgfQp9CgpAa2V5ZnJhbWVzIGZhLXNwaW4gewogICAgMCUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykKICAgIH0KICAgIHRvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybikKICAgIH0KfQoKLmZhLXJvdGF0ZS05MCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MSkiOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykKfQoKLmZhLXJvdGF0ZS0xODAgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykKfQoKLmZhLXJvdGF0ZS0yNzAgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTMpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZykKfQoKLmZhLWZsaXAtaG9yaXpvbnRhbCB7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MCwgbWlycm9yPTEpIjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpCn0KCi5mYS1mbGlwLXZlcnRpY2FsIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoLTEpOwogICAgdHJhbnNmb3JtOiBzY2FsZVkoLTEpCn0KCi5mYS1mbGlwLWJvdGgsCi5mYS1mbGlwLWhvcml6b250YWwuZmEtZmxpcC12ZXJ0aWNhbCwKLmZhLWZsaXAtdmVydGljYWwgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIsIG1pcnJvcj0xKSIKfQoKLmZhLWZsaXAtYm90aCwKLmZhLWZsaXAtaG9yaXpvbnRhbC5mYS1mbGlwLXZlcnRpY2FsIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgtMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC0xKQp9Cgo6cm9vdCAuZmEtZmxpcC1ib3RoLAo6cm9vdCAuZmEtZmxpcC1ob3Jpem9udGFsLAo6cm9vdCAuZmEtZmxpcC12ZXJ0aWNhbCwKOnJvb3QgLmZhLXJvdGF0ZS05MCwKOnJvb3QgLmZhLXJvdGF0ZS0xODAsCjpyb290IC5mYS1yb3RhdGUtMjcwIHsKICAgIC13ZWJraXQtZmlsdGVyOiBub25lOwogICAgZmlsdGVyOiBub25lCn0KCi5mYS1zdGFjayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBoZWlnaHQ6IDJlbTsKICAgIGxpbmUtaGVpZ2h0OiAyZW07CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgd2lkdGg6IDIuNWVtCn0KCi5mYS1zdGFjay0xeCwKLmZhLXN0YWNrLTJ4IHsKICAgIGxlZnQ6IDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aWR0aDogMTAwJQp9CgouZmEtc3RhY2stMXggewogICAgbGluZS1oZWlnaHQ6IGluaGVyaXQKfQoKLmZhLXN0YWNrLTJ4IHsKICAgIGZvbnQtc2l6ZTogMmVtCn0KCi5mYS1pbnZlcnNlIHsKICAgIGNvbG9yOiAjZmZmCn0KCi5mYS01MDBweDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZlIgp9CgouZmEtYWNjZXNzaWJsZS1pY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjgiCn0KCi5mYS1hY2N1c29mdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzY5Igp9CgouZmEtYWNxdWlzaXRpb25zLWluY29ycG9yYXRlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmFmIgp9CgouZmEtYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0MSIKfQoKLmZhLWFkZHJlc3MtYm9vazpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI5Igp9CgouZmEtYWRkcmVzcy1jYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYmIiCn0KCi5mYS1hZGp1c3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0MiIKfQoKLmZhLWFkbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTcwIgp9CgouZmEtYWR2ZXJzYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2YSIKfQoKLmZhLWFmZmlsaWF0ZXRoZW1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNmIiCn0KCi5mYS1haXItZnJlc2hlbmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZDAiCn0KCi5mYS1haXJibmI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzNCIKfQoKLmZhLWFsZ29saWE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2YyIKfQoKLmZhLWFsaWduLWNlbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM3Igp9CgouZmEtYWxpZ24tanVzdGlmeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM5Igp9CgouZmEtYWxpZ24tbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDM2Igp9CgouZmEtYWxpZ24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzOCIKfQoKLmZhLWFsaXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjQyIgp9CgouZmEtYWxsZXJnaWVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjEiCn0KCi5mYS1hbWF6b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MCIKfQoKLmZhLWFtYXpvbi1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyYyIKfQoKLmZhLWFtYnVsYW5jZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGY5Igp9CgouZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhMyIKfQoKLmZhLWFtaWxpYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzZkIgp9CgouZmEtYW5jaG9yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxM2QiCn0KCi5mYS1hbmRyb2lkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2IiCn0KCi5mYS1hbmdlbGxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwOSIKfQoKLmZhLWFuZ2xlLWRvdWJsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDMiCn0KCi5mYS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTAwIgp9CgouZmEtYW5nbGUtZG91YmxlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDEiCn0KCi5mYS1hbmdsZS1kb3VibGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwMiIKfQoKLmZhLWFuZ2xlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwNyIKfQoKLmZhLWFuZ2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwNCIKfQoKLmZhLWFuZ2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDUiCn0KCi5mYS1hbmdsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTA2Igp9CgouZmEtYW5ncnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1NiIKfQoKLmZhLWFuZ3J5Y3JlYXRpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2ZSIKfQoKLmZhLWFuZ3VsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMCIKfQoKLmZhLWFua2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0NCIKfQoKLmZhLWFwcC1zdG9yZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzZmIgp9CgouZmEtYXBwLXN0b3JlLWlvczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzcwIgp9CgouZmEtYXBwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3MSIKfQoKLmZhLWFwcGxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzkiCn0KCi5mYS1hcHBsZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVkMSIKfQoKLmZhLWFwcGxlLXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDE1Igp9CgouZmEtYXJjaGl2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTg3Igp9CgouZmEtYXJjaHdheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU3Igp9CgouZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNTgiCn0KCi5mYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1OSIKfQoKLmZhLWFycm93LWFsdC1jaXJjbGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YSIKfQoKLmZhLWFycm93LWFsdC1jaXJjbGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YiIKfQoKLmZhLWFycm93LWNpcmNsZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYWIiCn0KCi5mYS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE4Igp9CgouZmEtYXJyb3ctY2lyY2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTkiCn0KCi5mYS1hcnJvdy1jaXJjbGUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBhYSIKfQoKLmZhLWFycm93LWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2MyIKfQoKLmZhLWFycm93LWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2MCIKfQoKLmZhLWFycm93LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjEiCn0KCi5mYS1hcnJvdy11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDYyIgp9CgouZmEtYXJyb3dzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGIyIgp9CgouZmEtYXJyb3dzLWFsdC1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMzciCn0KCi5mYS1hcnJvd3MtYWx0LXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMzOCIKfQoKLmZhLWFydHN0YXRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3YSIKfQoKLmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEyIgp9CgouZmEtYXN0ZXJpc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2OSIKfQoKLmZhLWFzeW1tZXRyaWs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3MiIKfQoKLmZhLWF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmEiCn0KCi5mYS1hdGxhczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU4Igp9CgouZmEtYXRsYXNzaWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3N2IiCn0KCi5mYS1hdG9tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZDIiCn0KCi5mYS1hdWRpYmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzMiCn0KCi5mYS1hdWRpby1kZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjllIgp9CgouZmEtYXV0b3ByZWZpeGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWMiCn0KCi5mYS1hdmlhbmV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNzQiCn0KCi5mYS1hdmlhdG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMSIKfQoKLmZhLWF3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTkiCn0KCi5mYS1hd3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3NSIKfQoKLmZhLWJhYnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3YyIKfQoKLmZhLWJhYnktY2FycmlhZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc3ZCIKfQoKLmZhLWJhY2tzcGFjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVhIgp9CgouZmEtYmFja3dhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0YSIKfQoKLmZhLWJhY29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZTUiCn0KCi5mYS1iYWN0ZXJpYTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDU5Igp9CgouZmEtYmFjdGVyaXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNWEiCn0KCi5mYS1iYWhhaTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY2Igp9CgouZmEtYmFsYW5jZS1zY2FsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjRlIgp9CgouZmEtYmFsYW5jZS1zY2FsZS1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTUiCn0KCi5mYS1iYWxhbmNlLXNjYWxlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTYiCn0KCi5mYS1iYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1ZSIKfQoKLmZhLWJhbmQtYWlkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjIiCn0KCi5mYS1iYW5kY2FtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ1Igp9CgouZmEtYmFyY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJhIgp9CgouZmEtYmFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM5Igp9CgouZmEtYmFzZWJhbGwtYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDMzIgp9CgouZmEtYmFza2V0YmFsbC1iYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MzQiCn0KCi5mYS1iYXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2QiCn0KCi5mYS1iYXR0ZXJ5LWVtcHR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDQiCn0KCi5mYS1iYXR0ZXJ5LWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0MCIKfQoKLmZhLWJhdHRlcnktaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQyIgp9CgouZmEtYmF0dGVyeS1xdWFydGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDMiCn0KCi5mYS1iYXR0ZXJ5LXRocmVlLXF1YXJ0ZXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDEiCn0KCi5mYS1iYXR0bGUtbmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MzUiCn0KCi5mYS1iZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNiIKfQoKLmZhLWJlZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmYyIKfQoKLmZhLWJlaGFuY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiNCIKfQoKLmZhLWJlaGFuY2Utc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjUiCn0KCi5mYS1iZWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjMiCn0KCi5mYS1iZWxsLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjYiCn0KCi5mYS1iZXppZXItY3VydmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1YiIKfQoKLmZhLWJpYmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NDciCn0KCi5mYS1iaWN5Y2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDYiCn0KCi5mYS1iaWtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0YSIKfQoKLmZhLWJpbW9iamVjdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzc4Igp9CgouZmEtYmlub2N1bGFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMWU1Igp9CgouZmEtYmlvaGF6YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ODAiCn0KCi5mYS1iaXJ0aGRheS1jYWtlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmQiCn0KCi5mYS1iaXRidWNrZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3MSIKfQoKLmZhLWJpdGNvaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3OSIKfQoKLmZhLWJpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3YSIKfQoKLmZhLWJsYWNrLXRpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdlIgp9CgouZmEtYmxhY2tiZXJyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzdiIgp9CgouZmEtYmxlbmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE3Igp9CgouZmEtYmxlbmRlci1waG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmI2Igp9CgouZmEtYmxpbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5ZCIKfQoKLmZhLWJsb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4MSIKfQoKLmZhLWJsb2dnZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3YyIKfQoKLmZhLWJsb2dnZXItYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzdkIgp9CgouZmEtYmx1ZXRvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOTMiCn0KCi5mYS1ibHVldG9vdGgtYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjk0Igp9CgouZmEtYm9sZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDMyIgp9CgouZmEtYm9sdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGU3Igp9CgouZmEtYm9tYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUyIgp9CgouZmEtYm9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWQ3Igp9CgouZmEtYm9uZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVjIgp9CgouZmEtYm9vazpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJkIgp9CgouZmEtYm9vay1kZWFkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YjciCn0KCi5mYS1ib29rLW1lZGljYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlNiIKfQoKLmZhLWJvb2stb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTE4Igp9CgouZmEtYm9vay1yZWFkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVkYSIKfQoKLmZhLWJvb2ttYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmUiCn0KCi5mYS1ib290c3RyYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzNiIKfQoKLmZhLWJvcmRlci1hbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0YyIKfQoKLmZhLWJvcmRlci1ub25lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NTAiCn0KCi5mYS1ib3JkZXItc3R5bGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg1MyIKfQoKLmZhLWJvd2xpbmctYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDM2Igp9CgouZmEtYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NjYiCn0KCi5mYS1ib3gtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDllIgp9CgouZmEtYm94LXRpc3N1ZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDViIgp9CgouZmEtYm94ZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2OCIKfQoKLmZhLWJyYWlsbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhMSIKfQoKLmZhLWJyYWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZGMiCn0KCi5mYS1icmVhZC1zbGljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2VjIgp9CgouZmEtYnJpZWZjYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjEiCn0KCi5mYS1icmllZmNhc2UtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDY5Igp9CgouZmEtYnJvYWRjYXN0LXRvd2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MTkiCn0KCi5mYS1icm9vbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFhIgp9CgouZmEtYnJ1c2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1ZCIKfQoKLmZhLWJ0YzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVhIgp9CgouZmEtYnVmZmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MzciCn0KCi5mYS1idWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4OCIKfQoKLmZhLWJ1aWxkaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYWQiCn0KCi5mYS1idWxsaG9ybjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGExIgp9CgouZmEtYnVsbHNleWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0MCIKfQoKLmZhLWJ1cm46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2YSIKfQoKLmZhLWJ1cm9tb2JlbGV4cGVydGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM3ZiIKfQoKLmZhLWJ1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjA3Igp9CgouZmEtYnVzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTVlIgp9CgouZmEtYnVzaW5lc3MtdGltZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjRhIgp9CgouZmEtYnV5LW4tbGFyZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhhNiIKfQoKLmZhLWJ1eXNlbGxhZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwZCIKfQoKLmZhLWNhbGN1bGF0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlYyIKfQoKLmZhLWNhbGVuZGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzMiCn0KCi5mYS1jYWxlbmRhci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MyIKfQoKLmZhLWNhbGVuZGFyLWNoZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzQiCn0KCi5mYS1jYWxlbmRhci1kYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4MyIKfQoKLmZhLWNhbGVuZGFyLW1pbnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzIiCn0KCi5mYS1jYWxlbmRhci1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzEiCn0KCi5mYS1jYWxlbmRhci10aW1lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjczIgp9CgouZmEtY2FsZW5kYXItd2VlazpiZWZvcmUgewogICAgY29udGVudDogIlxmNzg0Igp9CgouZmEtY2FtZXJhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMzAiCn0KCi5mYS1jYW1lcmEtcmV0cm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MyIKfQoKLmZhLWNhbXBncm91bmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZiYiIKfQoKLmZhLWNhbmFkaWFuLW1hcGxlLWxlYWY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NSIKfQoKLmZhLWNhbmR5LWNhbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NiIKfQoKLmZhLWNhbm5hYmlzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NWYiCn0KCi5mYS1jYXBzdWxlczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDZiIgp9CgouZmEtY2FyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjkiCn0KCi5mYS1jYXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZGUiCn0KCi5mYS1jYXItYmF0dGVyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWRmIgp9CgouZmEtY2FyLWNyYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZTEiCn0KCi5mYS1jYXItc2lkZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWU0Igp9CgouZmEtY2FyYXZhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmOGZmIgp9CgouZmEtY2FyZXQtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ3Igp9CgouZmEtY2FyZXQtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ5Igp9CgouZmEtY2FyZXQtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkYSIKfQoKLmZhLWNhcmV0LXNxdWFyZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTAiCn0KCi5mYS1jYXJldC1zcXVhcmUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTkxIgp9CgouZmEtY2FyZXQtc3F1YXJlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTIiCn0KCi5mYS1jYXJldC1zcXVhcmUtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1MSIKfQoKLmZhLWNhcmV0LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDgiCn0KCi5mYS1jYXJyb3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4NyIKfQoKLmZhLWNhcnQtYXJyb3ctZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjE4Igp9CgouZmEtY2FydC1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMTciCn0KCi5mYS1jYXNoLXJlZ2lzdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ODgiCn0KCi5mYS1jYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZiZSIKfQoKLmZhLWNjLWFtYXpvbi1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyZCIKfQoKLmZhLWNjLWFtZXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmMyIKfQoKLmZhLWNjLWFwcGxlLXBheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDE2Igp9CgouZmEtY2MtZGluZXJzLWNsdWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0YyIKfQoKLmZhLWNjLWRpc2NvdmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjIiCn0KCi5mYS1jYy1qY2I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0YiIKfQoKLmZhLWNjLW1hc3RlcmNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmMSIKfQoKLmZhLWNjLXBheXBhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWY0Igp9CgouZmEtY2Mtc3RyaXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjUiCn0KCi5mYS1jYy12aXNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZjAiCn0KCi5mYS1jZW50ZXJjb2RlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzODAiCn0KCi5mYS1jZW50b3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4OSIKfQoKLmZhLWNlcnRpZmljYXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTMiCn0KCi5mYS1jaGFpcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmMwIgp9CgouZmEtY2hhbGtib2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFiIgp9CgouZmEtY2hhbGtib2FyZC10ZWFjaGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MWMiCn0KCi5mYS1jaGFyZ2luZy1zdGF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZTciCn0KCi5mYS1jaGFydC1hcmVhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmUiCn0KCi5mYS1jaGFydC1iYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MCIKfQoKLmZhLWNoYXJ0LWxpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwMSIKfQoKLmZhLWNoYXJ0LXBpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjAwIgp9CgouZmEtY2hlY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwYyIKfQoKLmZhLWNoZWNrLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU4Igp9CgouZmEtY2hlY2stZG91YmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjAiCn0KCi5mYS1jaGVjay1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YSIKfQoKLmZhLWNoZWVzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2VmIgp9CgouZmEtY2hlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzOSIKfQoKLmZhLWNoZXNzLWJpc2hvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDNhIgp9CgouZmEtY2hlc3MtYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzYyIKfQoKLmZhLWNoZXNzLWtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQzZiIKfQoKLmZhLWNoZXNzLWtuaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDQxIgp9CgouZmEtY2hlc3MtcGF3bjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDQzIgp9CgouZmEtY2hlc3MtcXVlZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ0NSIKfQoKLmZhLWNoZXNzLXJvb2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ0NyIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzYSIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzNyIKfQoKLmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzgiCn0KCi5mYS1jaGV2cm9uLWNpcmNsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM5Igp9CgouZmEtY2hldnJvbi1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzgiCn0KCi5mYS1jaGV2cm9uLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1MyIKfQoKLmZhLWNoZXZyb24tcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1NCIKfQoKLmZhLWNoZXZyb24tdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3NyIKfQoKLmZhLWNoaWxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYWUiCn0KCi5mYS1jaHJvbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2OCIKfQoKLmZhLWNocm9tZWNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgzOCIKfQoKLmZhLWNodXJjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTFkIgp9CgouZmEtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTEiCn0KCi5mYS1jaXJjbGUtbm90Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjZSIKfQoKLmZhLWNpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY0ZiIKfQoKLmZhLWNsaW5pYy1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZjIiCn0KCi5mYS1jbGlwYm9hcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMyOCIKfQoKLmZhLWNsaXBib2FyZC1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmNDZjIgp9CgouZmEtY2xpcGJvYXJkLWxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ2ZCIKfQoKLmZhLWNsb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMTciCn0KCi5mYS1jbG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjRkIgp9CgouZmEtY2xvc2VkLWNhcHRpb25pbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwYSIKfQoKLmZhLWNsb3VkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzIiCn0KCi5mYS1jbG91ZC1kb3dubG9hZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MSIKfQoKLmZhLWNsb3VkLW1lYXRiYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3M2IiCn0KCi5mYS1jbG91ZC1tb29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2YzMiCn0KCi5mYS1jbG91ZC1tb29uLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczYyIKfQoKLmZhLWNsb3VkLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczZCIKfQoKLmZhLWNsb3VkLXNob3dlcnMtaGVhdnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0MCIKfQoKLmZhLWNsb3VkLXN1bjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmM0Igp9CgouZmEtY2xvdWQtc3VuLXJhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0MyIKfQoKLmZhLWNsb3VkLXVwbG9hZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MiIKfQoKLmZhLWNsb3VkZmxhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZCIKfQoKLmZhLWNsb3Vkc2NhbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MyIKfQoKLmZhLWNsb3Vkc21pdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4NCIKfQoKLmZhLWNsb3VkdmVyc2lmeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzg1Igp9CgouZmEtY29ja3RhaWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MSIKfQoKLmZhLWNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyMSIKfQoKLmZhLWNvZGUtYnJhbmNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjYiCn0KCi5mYS1jb2RlcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2IiCn0KCi5mYS1jb2RpZXBpZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg0Igp9CgouZmEtY29mZmVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjQiCn0KCi5mYS1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMyIKfQoKLmZhLWNvZ3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4NSIKfQoKLmZhLWNvaW5zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MWUiCn0KCi5mYS1jb2x1bW5zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGIiCn0KCi5mYS1jb21tZW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzUiCn0KCi5mYS1jb21tZW50LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdhIgp9CgouZmEtY29tbWVudC1kb2xsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1MSIKfQoKLmZhLWNvbW1lbnQtZG90czpiZWZvcmUgewogICAgY29udGVudDogIlxmNGFkIgp9CgouZmEtY29tbWVudC1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZjUiCn0KCi5mYS1jb21tZW50LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YjMiCn0KCi5mYS1jb21tZW50czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg2Igp9CgouZmEtY29tbWVudHMtZG9sbGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NTMiCn0KCi5mYS1jb21wYWN0LWRpc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxZiIKfQoKLmZhLWNvbXBhc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0ZSIKfQoKLmZhLWNvbXByZXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjYiCn0KCi5mYS1jb21wcmVzcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMiIKfQoKLmZhLWNvbXByZXNzLWFycm93cy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc4YyIKfQoKLmZhLWNvbmNpZXJnZS1iZWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjIiCn0KCi5mYS1jb25mbHVlbmNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OGQiCn0KCi5mYS1jb25uZWN0ZGV2ZWxvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBlIgp9CgouZmEtY29udGFvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNmQiCn0KCi5mYS1jb29raWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2MyIKfQoKLmZhLWNvb2tpZS1iaXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjQiCn0KCi5mYS1jb3B5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzUiCn0KCi5mYS1jb3B5cmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmOSIKfQoKLmZhLWNvdHRvbi1idXJlYXU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg5ZSIKfQoKLmZhLWNvdWNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YjgiCn0KCi5mYS1jcGFuZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4OCIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1ZSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtYnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlNyIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlOCIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtZXU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlOSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtanA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYiIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtcGQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlYyIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtcGQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWQiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXJlbWl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWUiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZWYiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjAiCn0KCi5mYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmMSIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtc2hhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmMiIKfQoKLmZhLWNyZWF0aXZlLWNvbW1vbnMtemVybzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGYzIgp9CgouZmEtY3JlZGl0LWNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5ZCIKfQoKLmZhLWNyaXRpY2FsLXJvbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZjOSIKfQoKLmZhLWNyb3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyNSIKfQoKLmZhLWNyb3AtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjUiCn0KCi5mYS1jcm9zczpiZWZvcmUgewogICAgY29udGVudDogIlxmNjU0Igp9CgouZmEtY3Jvc3NoYWlyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDViIgp9CgouZmEtY3JvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIwIgp9CgouZmEtY3Jvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyMSIKfQoKLmZhLWNydXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2Y3Igp9CgouZmEtY3NzMzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTNjIgp9CgouZmEtY3NzMy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4YiIKfQoKLmZhLWN1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiMiIKfQoKLmZhLWN1YmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjMiCn0KCi5mYS1jdXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjNCIKfQoKLmZhLWN1dHRsZWZpc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4YyIKfQoKLmZhLWQtYW5kLWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4ZCIKfQoKLmZhLWQtYW5kLWQtYmV5b25kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2Y2EiCn0KCi5mYS1kYWlseW1vdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxlMDUyIgp9CgouZmEtZGFzaGN1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxMCIKfQoKLmZhLWRhdGFiYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzAiCn0KCi5mYS1kZWFmOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTQiCn0KCi5mYS1kZWV6ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3NyIKfQoKLmZhLWRlbGljaW91czpiZWZvcmUgewogICAgY29udGVudDogIlxmMWE1Igp9CgouZmEtZGVtb2NyYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc0NyIKfQoKLmZhLWRlcGxveWRvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzhlIgp9CgouZmEtZGVza3BybzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzhmIgp9CgouZmEtZGVza3RvcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTA4Igp9CgouZmEtZGV2OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2Y2MiCn0KCi5mYS1kZXZpYW50YXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmQiCn0KCi5mYS1kaGFybWFjaGFrcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1NSIKfQoKLmZhLWRobDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzkwIgp9CgouZmEtZGlhZ25vc2VzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzAiCn0KCi5mYS1kaWFzcG9yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzkxIgp9CgouZmEtZGljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIyIgp9CgouZmEtZGljZS1kMjA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZjZiIKfQoKLmZhLWRpY2UtZDY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkMSIKfQoKLmZhLWRpY2UtZml2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTIzIgp9CgouZmEtZGljZS1mb3VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjQiCn0KCi5mYS1kaWNlLW9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTI1Igp9CgouZmEtZGljZS1zaXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyNiIKfQoKLmZhLWRpY2UtdGhyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyNyIKfQoKLmZhLWRpY2UtdHdvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjgiCn0KCi5mYS1kaWdnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTYiCn0KCi5mYS1kaWdpdGFsLW9jZWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTEiCn0KCi5mYS1kaWdpdGFsLXRhY2hvZ3JhcGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2NiIKfQoKLmZhLWRpcmVjdGlvbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVlYiIKfQoKLmZhLWRpc2NvcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5MiIKfQoKLmZhLWRpc2NvdXJzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMzkzIgp9CgouZmEtZGlzZWFzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2ZhIgp9CgouZmEtZGl2aWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MjkiCn0KCi5mYS1kaXp6eTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTY3Igp9CgouZmEtZG5hOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzEiCn0KCi5mYS1kb2NodWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5NCIKfQoKLmZhLWRvY2tlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzk1Igp9CgouZmEtZG9nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZDMiCn0KCi5mYS1kb2xsYXItc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU1Igp9CgouZmEtZG9sbHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3MiIKfQoKLmZhLWRvbGx5LWZsYXRiZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3NCIKfQoKLmZhLWRvbmF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGI5Igp9CgouZmEtZG9vci1jbG9zZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyYSIKfQoKLmZhLWRvb3Itb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJiIgp9CgouZmEtZG90LWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTkyIgp9CgouZmEtZG92ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGJhIgp9CgouZmEtZG93bmxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxOSIKfQoKLmZhLWRyYWZ0MmRpZ2l0YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5NiIKfQoKLmZhLWRyYWZ0aW5nLWNvbXBhc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2OCIKfQoKLmZhLWRyYWdvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNmQ1Igp9CgouZmEtZHJhdy1wb2x5Z29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ZWUiCn0KCi5mYS1kcmliYmJsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTdkIgp9CgouZmEtZHJpYmJibGUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOTciCn0KCi5mYS1kcm9wYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNmIiCn0KCi5mYS1kcnVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NjkiCn0KCi5mYS1kcnVtLXN0ZWVscGFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NmEiCn0KCi5mYS1kcnVtc3RpY2stYml0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmQ3Igp9CgouZmEtZHJ1cGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTkiCn0KCi5mYS1kdW1iYmVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDRiIgp9CgouZmEtZHVtcHN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5MyIKfQoKLmZhLWR1bXBzdGVyLWZpcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5NCIKfQoKLmZhLWR1bmdlb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkOSIKfQoKLmZhLWR5YWxvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMzk5Igp9CgouZmEtZWFybHliaXJkczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzlhIgp9CgouZmEtZWJheTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGY0Igp9CgouZmEtZWRnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjgyIgp9CgouZmEtZWRnZS1sZWdhY3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3OCIKfQoKLmZhLWVkaXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0NCIKfQoKLmZhLWVnZzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2ZiIgp9CgouZmEtZWplY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1MiIKfQoKLmZhLWVsZW1lbnRvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDMwIgp9CgouZmEtZWxsaXBzaXMtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQxIgp9CgouZmEtZWxsaXBzaXMtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQyIgp9CgouZmEtZWxsbzpiZWZvcmUgewogICAgY29udGVudDogIlxmNWYxIgp9CgouZmEtZW1iZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyMyIKfQoKLmZhLWVtcGlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQxIgp9CgouZmEtZW52ZWxvcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMCIKfQoKLmZhLWVudmVsb3BlLW9wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiNiIKfQoKLmZhLWVudmVsb3BlLW9wZW4tdGV4dDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjU4Igp9CgouZmEtZW52ZWxvcGUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTkiCn0KCi5mYS1lbnZpcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5OSIKfQoKLmZhLWVxdWFsczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJjIgp9CgouZmEtZXJhc2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmQiCn0KCi5mYS1lcmxhbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5ZCIKfQoKLmZhLWV0aGVyZXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MmUiCn0KCi5mYS1ldGhlcm5ldDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzk2Igp9CgouZmEtZXRzeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ3Igp9CgouZmEtZXVyby1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTMiCn0KCi5mYS1ldmVybm90ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODM5Igp9CgouZmEtZXhjaGFuZ2UtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjIiCn0KCi5mYS1leGNsYW1hdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTJhIgp9CgouZmEtZXhjbGFtYXRpb24tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNmEiCn0KCi5mYS1leGNsYW1hdGlvbi10cmlhbmdsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDcxIgp9CgouZmEtZXhwYW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjUiCn0KCi5mYS1leHBhbmQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjQiCn0KCi5mYS1leHBhbmQtYXJyb3dzLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzFlIgp9CgouZmEtZXhwZWRpdGVkc3NsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2UiCn0KCi5mYS1leHRlcm5hbC1saW5rLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzVkIgp9CgouZmEtZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNjAiCn0KCi5mYS1leWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2ZSIKfQoKLmZhLWV5ZS1kcm9wcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmIiCn0KCi5mYS1leWUtc2xhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MCIKfQoKLmZhLWZhY2Vib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOWEiCn0KCi5mYS1mYWNlYm9vay1mOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOWUiCn0KCi5mYS1mYWNlYm9vay1tZXNzZW5nZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5ZiIKfQoKLmZhLWZhY2Vib29rLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDgyIgp9CgouZmEtZmFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NjMiCn0KCi5mYS1mYW50YXN5LWZsaWdodC1nYW1lczpiZWZvcmUgewogICAgY29udGVudDogIlxmNmRjIgp9CgouZmEtZmFzdC1iYWNrd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDQ5Igp9CgouZmEtZmFzdC1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTAiCn0KCi5mYS1mYXVjZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAwNSIKfQoKLmZhLWZheDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWFjIgp9CgouZmEtZmVhdGhlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJkIgp9CgouZmEtZmVhdGhlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2YiIKfQoKLmZhLWZlZGV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OTciCn0KCi5mYS1mZWRvcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc5OCIKfQoKLmZhLWZlbWFsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgyIgp9CgouZmEtZmlnaHRlci1qZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmYiIKfQoKLmZhLWZpZ21hOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3OTkiCn0KCi5mYS1maWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWIiCn0KCi5mYS1maWxlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVjIgp9CgouZmEtZmlsZS1hcmNoaXZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzYiCn0KCi5mYS1maWxlLWF1ZGlvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzciCn0KCi5mYS1maWxlLWNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjOSIKfQoKLmZhLWZpbGUtY29udHJhY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2YyIKfQoKLmZhLWZpbGUtY3N2OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZGQiCn0KCi5mYS1maWxlLWRvd25sb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NmQiCn0KCi5mYS1maWxlLWV4Y2VsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzMiCn0KCi5mYS1maWxlLWV4cG9ydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTZlIgp9CgouZmEtZmlsZS1pbWFnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM1Igp9CgouZmEtZmlsZS1pbXBvcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU2ZiIKfQoKLmZhLWZpbGUtaW52b2ljZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcwIgp9CgouZmEtZmlsZS1pbnZvaWNlLWRvbGxhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcxIgp9CgouZmEtZmlsZS1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzciCn0KCi5mYS1maWxlLW1lZGljYWwtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NzgiCn0KCi5mYS1maWxlLXBkZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWMxIgp9CgouZmEtZmlsZS1wb3dlcnBvaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzQiCn0KCi5mYS1maWxlLXByZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTcyIgp9CgouZmEtZmlsZS1zaWduYXR1cmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3MyIKfQoKLmZhLWZpbGUtdXBsb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NzQiCn0KCi5mYS1maWxlLXZpZGVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzgiCn0KCi5mYS1maWxlLXdvcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjMiIKfQoKLmZhLWZpbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3NSIKfQoKLmZhLWZpbGwtZHJpcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc2Igp9CgouZmEtZmlsbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA4Igp9CgouZmEtZmlsdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjAiCn0KCi5mYS1maW5nZXJwcmludDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc3Igp9CgouZmEtZmlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDZkIgp9CgouZmEtZmlyZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlNCIKfQoKLmZhLWZpcmUtZXh0aW5ndWlzaGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMzQiCn0KCi5mYS1maXJlZm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjkiCn0KCi5mYS1maXJlZm94LWJyb3dzZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTAwNyIKfQoKLmZhLWZpcnN0LWFpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDc5Igp9CgouZmEtZmlyc3Qtb3JkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMCIKfQoKLmZhLWZpcnN0LW9yZGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBhIgp9CgouZmEtZmlyc3RkcmFmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ExIgp9CgouZmEtZmlzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTc4Igp9CgouZmEtZmlzdC1yYWlzZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZkZSIKfQoKLmZhLWZsYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyNCIKfQoKLmZhLWZsYWctY2hlY2tlcmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWUiCn0KCi5mYS1mbGFnLXVzYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzRkIgp9CgouZmEtZmxhc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjMyIKfQoKLmZhLWZsaWNrcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZlIgp9CgouZmEtZmxpcGJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NGQiCn0KCi5mYS1mbHVzaGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NzkiCn0KCi5mYS1mbHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxNyIKfQoKLmZhLWZvbGRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdiIgp9CgouZmEtZm9sZGVyLW1pbnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NWQiCn0KCi5mYS1mb2xkZXItb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdjIgp9CgouZmEtZm9sZGVyLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY1ZSIKfQoKLmZhLWZvbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzMSIKfQoKLmZhLWZvbnQtYXdlc29tZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI0Igp9CgouZmEtZm9udC1hd2Vzb21lLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzVjIgp9CgouZmEtZm9udC1hd2Vzb21lLWZsYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNSIKfQoKLmZhLWZvbnQtYXdlc29tZS1sb2dvLWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRlNiIKfQoKLmZhLWZvbnRpY29uczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjgwIgp9CgouZmEtZm9udGljb25zLWZpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTIiCn0KCi5mYS1mb290YmFsbC1iYWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NGUiCn0KCi5mYS1mb3J0LWF3ZXNvbWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4NiIKfQoKLmZhLWZvcnQtYXdlc29tZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhMyIKfQoKLmZhLWZvcnVtYmVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMTEiCn0KCi5mYS1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNGUiCn0KCi5mYS1mb3Vyc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODAiCn0KCi5mYS1mcmVlLWNvZGUtY2FtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM1Igp9CgouZmEtZnJlZWJzZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E0Igp9CgouZmEtZnJvZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTJlIgp9CgouZmEtZnJvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExOSIKfQoKLmZhLWZyb3duLW9wZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3YSIKfQoKLmZhLWZ1bGNydW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwYiIKfQoKLmZhLWZ1bm5lbC1kb2xsYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2MiIKfQoKLmZhLWZ1dGJvbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUzIgp9CgouZmEtZ2FsYWN0aWMtcmVwdWJsaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwYyIKfQoKLmZhLWdhbGFjdGljLXNlbmF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBkIgp9CgouZmEtZ2FtZXBhZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTFiIgp9CgouZmEtZ2FzLXB1bXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUyZiIKfQoKLmZhLWdhdmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTMiCn0KCi5mYS1nZW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhNSIKfQoKLmZhLWdlbmRlcmxlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyZCIKfQoKLmZhLWdldC1wb2NrZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NSIKfQoKLmZhLWdnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNjAiCn0KCi5mYS1nZy1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2MSIKfQoKLmZhLWdob3N0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZTIiCn0KCi5mYS1naWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNmIiCn0KCi5mYS1naWZ0czpiZWZvcmUgewogICAgY29udGVudDogIlxmNzljIgp9CgouZmEtZ2l0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDMiCn0KCi5mYS1naXQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NDEiCn0KCi5mYS1naXQtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDIiCn0KCi5mYS1naXRodWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5YiIKfQoKLmZhLWdpdGh1Yi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjExMyIKfQoKLmZhLWdpdGh1Yi1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5MiIKfQoKLmZhLWdpdGtyYWtlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E2Igp9CgouZmEtZ2l0bGFiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOTYiCn0KCi5mYS1naXR0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNiIKfQoKLmZhLWdsYXNzLWNoZWVyczpiZWZvcmUgewogICAgY29udGVudDogIlxmNzlmIgp9CgouZmEtZ2xhc3MtbWFydGluaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDAwIgp9CgouZmEtZ2xhc3MtbWFydGluaS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU3YiIKfQoKLmZhLWdsYXNzLXdoaXNrZXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhMCIKfQoKLmZhLWdsYXNzZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzMCIKfQoKLmZhLWdsaWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTUiCn0KCi5mYS1nbGlkZS1nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTYiCn0KCi5mYS1nbG9iZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFjIgp9CgouZmEtZ2xvYmUtYWZyaWNhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1N2MiCn0KCi5mYS1nbG9iZS1hbWVyaWNhczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTdkIgp9CgouZmEtZ2xvYmUtYXNpYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTdlIgp9CgouZmEtZ2xvYmUtZXVyb3BlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTIiCn0KCi5mYS1nb2ZvcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhNyIKfQoKLmZhLWdvbGYtYmFsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDUwIgp9CgouZmEtZ29vZHJlYWRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTgiCn0KCi5mYS1nb29kcmVhZHMtZzpiZWZvcmUgewogICAgY29udGVudDogIlxmM2E5Igp9CgouZmEtZ29vZ2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTAiCn0KCi5mYS1nb29nbGUtZHJpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhYSIKfQoKLmZhLWdvb2dsZS1wYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3OSIKfQoKLmZhLWdvb2dsZS1wbGF5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYWIiCn0KCi5mYS1nb29nbGUtcGx1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMmIzIgp9CgouZmEtZ29vZ2xlLXBsdXMtZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQ1Igp9CgouZmEtZ29vZ2xlLXBsdXMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDQiCn0KCi5mYS1nb29nbGUtd2FsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWUiCn0KCi5mYS1nb3B1cmFtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NjQiCn0KCi5mYS1ncmFkdWF0aW9uLWNhcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTlkIgp9CgouZmEtZ3JhdGlwYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4NCIKfQoKLmZhLWdyYXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkNiIKfQoKLmZhLWdyZWF0ZXItdGhhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTMxIgp9CgouZmEtZ3JlYXRlci10aGFuLWVxdWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzIiCn0KCi5mYS1ncmltYWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1N2YiCn0KCi5mYS1ncmluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODAiCn0KCi5mYS1ncmluLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTgxIgp9CgouZmEtZ3Jpbi1iZWFtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODIiCn0KCi5mYS1ncmluLWJlYW0tc3dlYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4MyIKfQoKLmZhLWdyaW4taGVhcnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODQiCn0KCi5mYS1ncmluLXNxdWludDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTg1Igp9CgouZmEtZ3Jpbi1zcXVpbnQtdGVhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4NiIKfQoKLmZhLWdyaW4tc3RhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4NyIKfQoKLmZhLWdyaW4tdGVhcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4OCIKfQoKLmZhLWdyaW4tdG9uZ3VlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1ODkiCn0KCi5mYS1ncmluLXRvbmd1ZS1zcXVpbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4YSIKfQoKLmZhLWdyaW4tdG9uZ3VlLXdpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4YiIKfQoKLmZhLWdyaW4td2luazpiZWZvcmUgewogICAgY29udGVudDogIlxmNThjIgp9CgouZmEtZ3JpcC1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGQiCn0KCi5mYS1ncmlwLWxpbmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTQiCn0KCi5mYS1ncmlwLWxpbmVzLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YTUiCn0KCi5mYS1ncmlwLXZlcnRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OGUiCn0KCi5mYS1ncmlwZmlyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2FjIgp9CgouZmEtZ3J1bnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhZCIKfQoKLmZhLWd1aWxkZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZSIKfQoKLmZhLWd1aXRhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2E2Igp9CgouZmEtZ3VscDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2FlIgp9CgouZmEtaC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmZCIKfQoKLmZhLWhhY2tlci1uZXdzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDQiCn0KCi5mYS1oYWNrZXItbmV3cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNhZiIKfQoKLmZhLWhhY2tlcnJhbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVmNyIKfQoKLmZhLWhhbWJ1cmdlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmODA1Igp9CgouZmEtaGFtbWVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZTMiCn0KCi5mYS1oYW1zYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY1Igp9CgouZmEtaGFuZC1ob2xkaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YmQiCn0KCi5mYS1oYW5kLWhvbGRpbmctaGVhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRiZSIKfQoKLmZhLWhhbmQtaG9sZGluZy1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNWMiCn0KCi5mYS1oYW5kLWhvbGRpbmctdXNkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0YzAiCn0KCi5mYS1oYW5kLWhvbGRpbmctd2F0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjMSIKfQoKLmZhLWhhbmQtbGl6YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTgiCn0KCi5mYS1oYW5kLW1pZGRsZS1maW5nZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwNiIKfQoKLmZhLWhhbmQtcGFwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1NiIKfQoKLmZhLWhhbmQtcGVhY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YiIKfQoKLmZhLWhhbmQtcG9pbnQtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE3Igp9CgouZmEtaGFuZC1wb2ludC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTUiCn0KCi5mYS1oYW5kLXBvaW50LXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTQiCn0KCi5mYS1oYW5kLXBvaW50LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTYiCn0KCi5mYS1oYW5kLXBvaW50ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YSIKfQoKLmZhLWhhbmQtcm9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU1Igp9CgouZmEtaGFuZC1zY2lzc29yczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU3Igp9CgouZmEtaGFuZC1zcGFya2xlczpiZWZvcmUgewogICAgY29udGVudDogIlxlMDVkIgp9CgouZmEtaGFuZC1zcG9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU5Igp9CgouZmEtaGFuZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjMiIKfQoKLmZhLWhhbmRzLWhlbHBpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjNCIKfQoKLmZhLWhhbmRzLXdhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA1ZSIKfQoKLmZhLWhhbmRzaGFrZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI1Igp9CgouZmEtaGFuZHNoYWtlLWFsdC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDVmIgp9CgouZmEtaGFuZHNoYWtlLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjAiCn0KCi5mYS1oYW51a2lhaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmU2Igp9CgouZmEtaGFyZC1oYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwNyIKfQoKLmZhLWhhc2h0YWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5MiIKfQoKLmZhLWhhdC1jb3dib3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhjMCIKfQoKLmZhLWhhdC1jb3dib3ktc2lkZTpiZWZvcmUgewogICAgY29udGVudDogIlxmOGMxIgp9CgouZmEtaGF0LXdpemFyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmU4Igp9CgouZmEtaGRkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTAiCn0KCi5mYS1oZWFkLXNpZGUtY291Z2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2MSIKfQoKLmZhLWhlYWQtc2lkZS1jb3VnaC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDYyIgp9CgouZmEtaGVhZC1zaWRlLW1hc2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2MyIKfQoKLmZhLWhlYWQtc2lkZS12aXJ1czpiZWZvcmUgewogICAgY29udGVudDogIlxlMDY0Igp9CgouZmEtaGVhZGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWRjIgp9CgouZmEtaGVhZHBob25lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDI1Igp9CgouZmEtaGVhZHBob25lcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU4ZiIKfQoKLmZhLWhlYWRzZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5MCIKfQoKLmZhLWhlYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDQiCn0KCi5mYS1oZWFydC1icm9rZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhOSIKfQoKLmZhLWhlYXJ0YmVhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjFlIgp9CgouZmEtaGVsaWNvcHRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTMzIgp9CgouZmEtaGlnaGxpZ2h0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5MSIKfQoKLmZhLWhpa2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNmVjIgp9CgouZmEtaGlwcG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZlZCIKfQoKLmZhLWhpcHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1MiIKfQoKLmZhLWhpcmUtYS1oZWxwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMCIKfQoKLmZhLWhpc3Rvcnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkYSIKfQoKLmZhLWhpdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA3ZiIKfQoKLmZhLWhvY2tleS1wdWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NTMiCn0KCi5mYS1ob2xseS1iZXJyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FhIgp9CgouZmEtaG9tZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDE1Igp9CgouZmEtaG9vbGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNyIKfQoKLmZhLWhvcm5iaWxsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTIiCn0KCi5mYS1ob3JzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmYwIgp9CgouZmEtaG9yc2UtaGVhZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FiIgp9CgouZmEtaG9zcGl0YWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmOCIKfQoKLmZhLWhvc3BpdGFsLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDdkIgp9CgouZmEtaG9zcGl0YWwtc3ltYm9sOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0N2UiCn0KCi5mYS1ob3NwaXRhbC11c2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MGQiCn0KCi5mYS1ob3QtdHViOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTMiCn0KCi5mYS1ob3Rkb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgwZiIKfQoKLmZhLWhvdGVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTQiCn0KCi5mYS1ob3RqYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMSIKfQoKLmZhLWhvdXJnbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU0Igp9CgouZmEtaG91cmdsYXNzLWVuZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUzIgp9CgouZmEtaG91cmdsYXNzLWhhbGY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1MiIKfQoKLmZhLWhvdXJnbGFzcy1zdGFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUxIgp9CgouZmEtaG91c2UtZGFtYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZjEiCn0KCi5mYS1ob3VzZS11c2VyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjUiCn0KCi5mYS1ob3V6ejpiZWZvcmUgewogICAgY29udGVudDogIlxmMjdjIgp9CgouZmEtaHJ5dm5pYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmYyIgp9CgouZmEtaHRtbDU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzYiIKfQoKLmZhLWh1YnNwb3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiMiIKfQoKLmZhLWktY3Vyc29yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDYiCn0KCi5mYS1pY2UtY3JlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxMCIKfQoKLmZhLWljaWNsZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdhZCIKfQoKLmZhLWljb25zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NmQiCn0KCi5mYS1pZC1iYWRnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmMxIgp9CgouZmEtaWQtY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmMyIgp9CgouZmEtaWQtY2FyZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ3ZiIKfQoKLmZhLWlkZWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMTMiCn0KCi5mYS1pZ2xvbzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2FlIgp9CgouZmEtaW1hZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZSIKfQoKLmZhLWltYWdlczpiZWZvcmUgewogICAgY29udGVudDogIlxmMzAyIgp9CgouZmEtaW1kYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmQ4Igp9CgouZmEtaW5ib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxYyIKfQoKLmZhLWluZGVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNjIgp9CgouZmEtaW5kdXN0cnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NSIKfQoKLmZhLWluZmluaXR5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzQiCn0KCi5mYS1pbmZvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjkiCn0KCi5mYS1pbmZvLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDVhIgp9CgouZmEtaW5ub3NvZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MCIKfQoKLmZhLWluc3RhZ3JhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZkIgp9CgouZmEtaW5zdGFncmFtLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDU1Igp9CgouZmEtaW5zdGFsb2Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MSIKfQoKLmZhLWludGVyY29tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YWYiCn0KCi5mYS1pbnRlcm5ldC1leHBsb3JlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZiIgp9CgouZmEtaW52aXNpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiMCIKfQoKLmZhLWlveGhvc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwOCIKfQoKLmZhLWl0YWxpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDMzIgp9CgouZmEtaXRjaC1pbzpiZWZvcmUgewogICAgY29udGVudDogIlxmODNhIgp9CgouZmEtaXR1bmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYjQiCn0KCi5mYS1pdHVuZXMtbm90ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I1Igp9CgouZmEtamF2YTpiZWZvcmUgewogICAgY29udGVudDogIlxmNGU0Igp9CgouZmEtamVkaTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjY5Igp9CgouZmEtamVkaS1vcmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTBlIgp9CgouZmEtamVua2luczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I2Igp9CgouZmEtamlyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2IxIgp9CgouZmEtam9nZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNiNyIKfQoKLmZhLWpvaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTUiCn0KCi5mYS1qb29tbGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhYSIKfQoKLmZhLWpvdXJuYWwtd2hpbGxzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmEiCn0KCi5mYS1qczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2I4Igp9CgouZmEtanMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYjkiCn0KCi5mYS1qc2ZpZGRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWNjIgp9CgouZmEta2FhYmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2YiIKfQoKLmZhLWthZ2dsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZhIgp9CgouZmEta2V5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODQiCn0KCi5mYS1rZXliYXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjUiCn0KCi5mYS1rZXlib2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTFjIgp9CgouZmEta2V5Y2RuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmEiCn0KCi5mYS1raGFuZGE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY2ZCIKfQoKLmZhLWtpY2tzdGFydGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmIiCn0KCi5mYS1raWNrc3RhcnRlci1rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmMiCn0KCi5mYS1raXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OTYiCn0KCi5mYS1raXNzLWJlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU5NyIKfQoKLmZhLWtpc3Mtd2luay1oZWFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk4Igp9CgouZmEta2l3aS1iaXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzUiCn0KCi5mYS1rb3J2dWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyZiIKfQoKLmZhLWxhbmRtYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2NmYiCn0KCi5mYS1sYW5ndWFnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWFiIgp9CgouZmEtbGFwdG9wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMDkiCn0KCi5mYS1sYXB0b3AtY29kZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZjIgp9CgouZmEtbGFwdG9wLWhvdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjYiCn0KCi5mYS1sYXB0b3AtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmODEyIgp9CgouZmEtbGFyYXZlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JkIgp9CgouZmEtbGFzdGZtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDIiCn0KCi5mYS1sYXN0Zm0tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMDMiCn0KCi5mYS1sYXVnaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTk5Igp9CgouZmEtbGF1Z2gtYmVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlhIgp9CgouZmEtbGF1Z2gtc3F1aW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OWIiCn0KCi5mYS1sYXVnaC13aW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1OWMiCn0KCi5mYS1sYXllci1ncm91cDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWZkIgp9CgouZmEtbGVhZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDZjIgp9CgouZmEtbGVhbnB1YjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjEyIgp9CgouZmEtbGVtb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5NCIKfQoKLmZhLWxlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxZCIKfQoKLmZhLWxlc3MtdGhhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM2Igp9CgouZmEtbGVzcy10aGFuLWVxdWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MzciCn0KCi5mYS1sZXZlbC1kb3duLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JlIgp9CgouZmEtbGV2ZWwtdXAtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYmYiCn0KCi5mYS1saWZlLXJpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjZCIKfQoKLmZhLWxpZ2h0YnVsYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGViIgp9CgouZmEtbGluZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2MwIgp9CgouZmEtbGluazpiZWZvcmUgewogICAgY29udGVudDogIlxmMGMxIgp9CgouZmEtbGlua2VkaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4YyIKfQoKLmZhLWxpbmtlZGluLWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTEiCn0KCi5mYS1saW5vZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiOCIKfQoKLmZhLWxpbnV4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2MiCn0KCi5mYS1saXJhLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5NSIKfQoKLmZhLWxpc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzYSIKfQoKLmZhLWxpc3QtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjIiCn0KCi5mYS1saXN0LW9sOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2IiCn0KCi5mYS1saXN0LXVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2EiCn0KCi5mYS1sb2NhdGlvbi1hcnJvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTI0Igp9CgouZmEtbG9jazpiZWZvcmUgewogICAgY29udGVudDogIlxmMDIzIgp9CgouZmEtbG9jay1vcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzEiCn0KCi5mYS1sb25nLWFycm93LWFsdC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDkiCn0KCi5mYS1sb25nLWFycm93LWFsdC1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMGEiCn0KCi5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzBiIgp9CgouZmEtbG9uZy1hcnJvdy1hbHQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwYyIKfQoKLmZhLWxvdy12aXNpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhOCIKfQoKLmZhLWx1Z2dhZ2UtY2FydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlkIgp9CgouZmEtbHVuZ3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYwNCIKfQoKLmZhLWx1bmdzLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjciCn0KCi5mYS1seWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzMiCn0KCi5mYS1tYWdlbnRvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzQiCn0KCi5mYS1tYWdpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQwIgp9CgouZmEtbWFnbmV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzYiCn0KCi5mYS1tYWlsLWJ1bGs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3NCIKfQoKLmZhLW1haWxjaGltcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTllIgp9CgouZmEtbWFsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgzIgp9CgouZmEtbWFuZGFsb3JpYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwZiIKfQoKLmZhLW1hcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjc5Igp9CgouZmEtbWFwLW1hcmtlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTlmIgp9CgouZmEtbWFwLW1hcmtlZC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhMCIKfQoKLmZhLW1hcC1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0MSIKfQoKLmZhLW1hcC1tYXJrZXItYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzUiCn0KCi5mYS1tYXAtcGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNzYiCn0KCi5mYS1tYXAtc2lnbnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NyIKfQoKLmZhLW1hcmtkb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MGYiCn0KCi5mYS1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhMSIKfQoKLmZhLW1hcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMiIKfQoKLmZhLW1hcnMtZG91YmxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMjciCn0KCi5mYS1tYXJzLXN0cm9rZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI5Igp9CgouZmEtbWFycy1zdHJva2UtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJiIgp9CgouZmEtbWFycy1zdHJva2UtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJhIgp9CgouZmEtbWFzazpiZWZvcmUgewogICAgY29udGVudDogIlxmNmZhIgp9CgouZmEtbWFzdG9kb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmNiIKfQoKLmZhLW1heGNkbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM2Igp9CgouZmEtbWRiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4Y2EiCn0KCi5mYS1tZWRhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWEyIgp9CgouZmEtbWVkYXBwczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M2Igp9CgouZmEtbWVkaXVtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2EiCn0KCi5mYS1tZWRpdW0tbTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M3Igp9CgouZmEtbWVka2l0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZmEiCn0KCi5mYS1tZWRydDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2M4Igp9CgouZmEtbWVldHVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZTAiCn0KCi5mYS1tZWdhcG9ydDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWEzIgp9CgouZmEtbWVoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWEiCn0KCi5mYS1tZWgtYmxhbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhNCIKfQoKLmZhLW1laC1yb2xsaW5nLWV5ZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhNSIKfQoKLmZhLW1lbW9yeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM4Igp9CgouZmEtbWVuZGVsZXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiMyIKfQoKLmZhLW1lbm9yYWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3NiIKfQoKLmZhLW1lcmN1cnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMyIKfQoKLmZhLW1ldGVvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzUzIgp9CgouZmEtbWljcm9ibG9nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwMWEiCn0KCi5mYS1taWNyb2NoaXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkYiIKfQoKLmZhLW1pY3JvcGhvbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEzMCIKfQoKLmZhLW1pY3JvcGhvbmUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYzkiCn0KCi5mYS1taWNyb3Bob25lLWFsdC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTM5Igp9CgouZmEtbWljcm9waG9uZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTMxIgp9CgouZmEtbWljcm9zY29wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjEwIgp9CgouZmEtbWljcm9zb2Z0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2EiCn0KCi5mYS1taW51czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDY4Igp9CgouZmEtbWludXMtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTYiCn0KCi5mYS1taW51cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0NiIKfQoKLmZhLW1pdHRlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I1Igp9CgouZmEtbWl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2IiCn0KCi5mYS1taXhjbG91ZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg5Igp9CgouZmEtbWl4ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA1NiIKfQoKLmZhLW1penVuaTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2NjIgp9CgouZmEtbW9iaWxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMGIiCn0KCi5mYS1tb2JpbGUtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzY2QiCn0KCi5mYS1tb2R4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyODUiCn0KCi5mYS1tb25lcm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMCIKfQoKLmZhLW1vbmV5LWJpbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkNiIKfQoKLmZhLW1vbmV5LWJpbGwtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDEiCn0KCi5mYS1tb25leS1iaWxsLXdhdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzYSIKfQoKLmZhLW1vbmV5LWJpbGwtd2F2ZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzYiIKfQoKLmZhLW1vbmV5LWNoZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1M2MiCn0KCi5mYS1tb25leS1jaGVjay1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzZCIKfQoKLmZhLW1vbnVtZW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTYiCn0KCi5mYS1tb29uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODYiCn0KCi5mYS1tb3J0YXItcGVzdGxlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YTciCn0KCi5mYS1tb3NxdWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3OCIKfQoKLmZhLW1vdG9yY3ljbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxYyIKfQoKLmZhLW1vdW50YWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ZmMiCn0KCi5mYS1tb3VzZTpiZWZvcmUgewogICAgY29udGVudDogIlxmOGNjIgp9CgouZmEtbW91c2UtcG9pbnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQ1Igp9CgouZmEtbXVnLWhvdDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I2Igp9CgouZmEtbXVzaWM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwMSIKfQoKLmZhLW5hcHN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMiIKfQoKLmZhLW5lb3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxMiIKfQoKLmZhLW5ldHdvcmstd2lyZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZmZiIKfQoKLmZhLW5ldXRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjJjIgp9CgouZmEtbmV3c3BhcGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWEiCn0KCi5mYS1uaW1ibHI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhOCIKfQoKLmZhLW5vZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxOSIKfQoKLmZhLW5vZGUtanM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMyIKfQoKLmZhLW5vdC1lcXVhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTNlIgp9CgouZmEtbm90ZXMtbWVkaWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDgxIgp9CgouZmEtbnBtOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDQiCn0KCi5mYS1uczg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkNSIKfQoKLmZhLW51dHJpdGlvbml4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZDYiCn0KCi5mYS1vYmplY3QtZ3JvdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0NyIKfQoKLmZhLW9iamVjdC11bmdyb3VwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDgiCn0KCi5mYS1vY3RvcHVzLWRlcGxveTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDgyIgp9CgouZmEtb2Rub2tsYXNzbmlraTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjYzIgp9CgouZmEtb2Rub2tsYXNzbmlraS1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NCIKfQoKLmZhLW9pbC1jYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxMyIKfQoKLmZhLW9sZC1yZXB1YmxpYzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTEwIgp9CgouZmEtb206YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY3OSIKfQoKLmZhLW9wZW5jYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2QiCn0KCi5mYS1vcGVuaWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YiIKfQoKLmZhLW9wZXJhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNmEiCn0KCi5mYS1vcHRpbi1tb25zdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyM2MiCn0KCi5mYS1vcmNpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmOGQyIgp9CgouZmEtb3NpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWEiCn0KCi5mYS1vdHRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzAwIgp9CgouZmEtb3V0ZGVudDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNiIgp9CgouZmEtcGFnZTQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkNyIKfQoKLmZhLXBhZ2VsaW5lczpiZWZvcmUgewogICAgY29udGVudDogIlxmMThjIgp9CgouZmEtcGFnZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxNSIKfQoKLmZhLXBhaW50LWJydXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZmMiCn0KCi5mYS1wYWludC1yb2xsZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhYSIKfQoKLmZhLXBhbGV0dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUzZiIKfQoKLmZhLXBhbGZlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Q4Igp9CgouZmEtcGFsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ODIiCn0KCi5mYS1wYXBlci1wbGFuZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQ4Igp9CgouZmEtcGFwZXJjbGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzYiCn0KCi5mYS1wYXJhY2h1dGUtYm94OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0Y2QiCn0KCi5mYS1wYXJhZ3JhcGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkZCIKfQoKLmZhLXBhcmtpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0MCIKfQoKLmZhLXBhc3Nwb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YWIiCn0KCi5mYS1wYXN0YWZhcmlhbmlzbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjdiIgp9CgouZmEtcGFzdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlYSIKfQoKLmZhLXBhdHJlb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkOSIKfQoKLmZhLXBhdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNGMiCn0KCi5mYS1wYXVzZS1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4YiIKfQoKLmZhLXBhdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWIwIgp9CgouZmEtcGF5cGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWQiCn0KCi5mYS1wZWFjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjdjIgp9CgouZmEtcGVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDQiCn0KCi5mYS1wZW4tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDUiCn0KCi5mYS1wZW4tZmFuY3k6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhYyIKfQoKLmZhLXBlbi1uaWI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVhZCIKfQoKLmZhLXBlbi1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0YiIKfQoKLmZhLXBlbmNpbC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwMyIKfQoKLmZhLXBlbmNpbC1ydWxlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWFlIgp9CgouZmEtcGVubnktYXJjYWRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MDQiCn0KCi5mYS1wZW9wbGUtYXJyb3dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNjgiCn0KCi5mYS1wZW9wbGUtY2Fycnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRjZSIKfQoKLmZhLXBlcHBlci1ob3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgxNiIKfQoKLmZhLXBlcmJ5dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4MyIKfQoKLmZhLXBlcmNlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5NSIKfQoKLmZhLXBlcmNlbnRhZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0MSIKfQoKLmZhLXBlcmlzY29wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2RhIgp9CgouZmEtcGVyc29uLWJvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NTYiCn0KCi5mYS1waGFicmljYXRvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2RiIgp9CgouZmEtcGhvZW5peC1mcmFtZXdvcms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkYyIKfQoKLmZhLXBob2VuaXgtc3F1YWRyb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxMSIKfQoKLmZhLXBob25lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTUiCn0KCi5mYS1waG9uZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3OSIKfQoKLmZhLXBob25lLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZGQiCn0KCi5mYS1waG9uZS1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5OCIKfQoKLmZhLXBob25lLXNxdWFyZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3YiIKfQoKLmZhLXBob25lLXZvbHVtZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEwIgp9CgouZmEtcGhvdG8tdmlkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg3YyIKfQoKLmZhLXBocDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDU3Igp9CgouZmEtcGllZC1waXBlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmFlIgp9CgouZmEtcGllZC1waXBlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhOCIKfQoKLmZhLXBpZWQtcGlwZXItaGF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZTUiCn0KCi5mYS1waWVkLXBpcGVyLXBwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTciCn0KCi5mYS1waWVkLXBpcGVyLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxlMDFlIgp9CgouZmEtcGlnZ3ktYmFuazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQzIgp9CgouZmEtcGlsbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ4NCIKfQoKLmZhLXBpbnRlcmVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGQyIgp9CgouZmEtcGludGVyZXN0LXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzMSIKfQoKLmZhLXBpbnRlcmVzdC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkMyIKfQoKLmZhLXBpenphLXNsaWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4MTgiCn0KCi5mYS1wbGFjZS1vZi13b3JzaGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2N2YiCn0KCi5mYS1wbGFuZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDcyIgp9CgouZmEtcGxhbmUtYXJyaXZhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWFmIgp9CgouZmEtcGxhbmUtZGVwYXJ0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjAiCn0KCi5mYS1wbGFuZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDY5Igp9CgouZmEtcGxheTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDRiIgp9CgouZmEtcGxheS1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0NCIKfQoKLmZhLXBsYXlzdGF0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZGYiCn0KCi5mYS1wbHVnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTYiCn0KCi5mYS1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjciCn0KCi5mYS1wbHVzLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU1Igp9CgouZmEtcGx1cy1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmZSIKfQoKLmZhLXBvZGNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjZSIKfQoKLmZhLXBvbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4MSIKfQoKLmZhLXBvbGwtaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjgyIgp9CgouZmEtcG9vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZmUiCn0KCi5mYS1wb28tc3Rvcm06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc1YSIKfQoKLmZhLXBvb3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYxOSIKfQoKLmZhLXBvcnRyYWl0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZTAiCn0KCi5mYS1wb3VuZC1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTQiCn0KCi5mYS1wb3dlci1vZmY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMSIKfQoKLmZhLXByYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4MyIKfQoKLmZhLXByYXlpbmctaGFuZHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4NCIKfQoKLmZhLXByZXNjcmlwdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWIxIgp9CgouZmEtcHJlc2NyaXB0aW9uLWJvdHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDg1Igp9CgouZmEtcHJlc2NyaXB0aW9uLWJvdHRsZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ4NiIKfQoKLmZhLXByaW50OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmYiCn0KCi5mYS1wcm9jZWR1cmVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ODciCn0KCi5mYS1wcm9kdWN0LWh1bnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4OCIKfQoKLmZhLXByb2plY3QtZGlhZ3JhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQyIgp9CgouZmEtcHVtcC1tZWRpY2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNmEiCn0KCi5mYS1wdW1wLXNvYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2YiIKfQoKLmZhLXB1c2hlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2UxIgp9CgouZmEtcHV6emxlLXBpZWNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmUiCn0KCi5mYS1weXRob246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlMiIKfQoKLmZhLXFxOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDYiCn0KCi5mYS1xcmNvZGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyOSIKfQoKLmZhLXF1ZXN0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjgiCn0KCi5mYS1xdWVzdGlvbi1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1OSIKfQoKLmZhLXF1aWRkaXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDU4Igp9CgouZmEtcXVpbnNjYXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0NTkiCn0KCi5mYS1xdW9yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM0Igp9CgouZmEtcXVvdGUtbGVmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTBkIgp9CgouZmEtcXVvdGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEwZSIKfQoKLmZhLXF1cmFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODciCn0KCi5mYS1yLXByb2plY3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmNyIKfQoKLmZhLXJhZGlhdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmN2I5Igp9CgouZmEtcmFkaWF0aW9uLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2JhIgp9CgouZmEtcmFpbmJvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzViIgp9CgouZmEtcmFuZG9tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzQiCn0KCi5mYS1yYXNwYmVycnktcGk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiYiIKfQoKLmZhLXJhdmVscnk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkOSIKfQoKLmZhLXJlYWN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MWIiCn0KCi5mYS1yZWFjdGV1cm9wZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVkIgp9CgouZmEtcmVhZG1lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZDUiCn0KCi5mYS1yZWJlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQwIgp9CgouZmEtcmVjZWlwdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQzIgp9CgouZmEtcmVjb3JkLXZpbnlsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ZDkiCn0KCi5mYS1yZWN5Y2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjgiCn0KCi5mYS1yZWQtcml2ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlMyIKfQoKLmZhLXJlZGRpdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWExIgp9CgouZmEtcmVkZGl0LWFsaWVuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyODEiCn0KCi5mYS1yZWRkaXQtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTIiCn0KCi5mYS1yZWRoYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdiYyIKfQoKLmZhLXJlZG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxZSIKfQoKLmZhLXJlZG8tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjkiCn0KCi5mYS1yZWdpc3RlcmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNWQiCn0KCi5mYS1yZW1vdmUtZm9ybWF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4N2QiCn0KCi5mYS1yZW5yZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4YiIKfQoKLmZhLXJlcGx5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZTUiCn0KCi5mYS1yZXBseS1hbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyMiIKfQoKLmZhLXJlcGx5ZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U2Igp9CgouZmEtcmVwdWJsaWNhbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVlIgp9CgouZmEtcmVzZWFyY2hnYXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjgiCn0KCi5mYS1yZXNvbHZpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlNyIKfQoKLmZhLXJlc3Ryb29tOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YmQiCn0KCi5mYS1yZXR3ZWV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzkiCn0KCi5mYS1yZXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViMiIKfQoKLmZhLXJpYmJvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQ2Igp9CgouZmEtcmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBiIgp9CgouZmEtcm9hZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDE4Igp9CgouZmEtcm9ib3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0NCIKfQoKLmZhLXJvY2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTM1Igp9CgouZmEtcm9ja2V0Y2hhdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U4Igp9CgouZmEtcm9ja3JtczpiZWZvcmUgewogICAgY29udGVudDogIlxmM2U5Igp9CgouZmEtcm91dGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkNyIKfQoKLmZhLXJzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDllIgp9CgouZmEtcnNzLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTQzIgp9CgouZmEtcnVibGUtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU4Igp9CgouZmEtcnVsZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0NSIKfQoKLmZhLXJ1bGVyLWNvbWJpbmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NDYiCn0KCi5mYS1ydWxlci1ob3Jpem9udGFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NDciCn0KCi5mYS1ydWxlci12ZXJ0aWNhbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTQ4Igp9CgouZmEtcnVubmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBjIgp9CgouZmEtcnVwZWUtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU2Igp9CgouZmEtcnVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdhIgp9CgouZmEtc2FkLWNyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWIzIgp9CgouZmEtc2FkLXRlYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNCIKfQoKLmZhLXNhZmFyaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjY3Igp9CgouZmEtc2FsZXNmb3JjZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNiIgp9CgouZmEtc2FzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDFlIgp9CgouZmEtc2F0ZWxsaXRlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YmYiCn0KCi5mYS1zYXRlbGxpdGUtZGlzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2MwIgp9CgouZmEtc2F2ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM3Igp9CgouZmEtc2NobGl4OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZWEiCn0KCi5mYS1zY2hvb2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0OSIKfQoKLmZhLXNjcmV3ZHJpdmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NGEiCn0KCi5mYS1zY3JpYmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4YSIKfQoKLmZhLXNjcm9sbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNzBlIgp9CgouZmEtc2QtY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2MyIgp9CgouZmEtc2VhcmNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDIiCn0KCi5mYS1zZWFyY2gtZG9sbGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2ODgiCn0KCi5mYS1zZWFyY2gtbG9jYXRpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY4OSIKfQoKLmZhLXNlYXJjaC1taW51czpiZWZvcmUgewogICAgY29udGVudDogIlxmMDEwIgp9CgouZmEtc2VhcmNoLXBsdXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZSIKfQoKLmZhLXNlYXJjaGVuZ2luOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZWIiCn0KCi5mYS1zZWVkbGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGQ4Igp9CgouZmEtc2VsbGNhc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkYSIKfQoKLmZhLXNlbGxzeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjEzIgp9CgouZmEtc2VydmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMzMiCn0KCi5mYS1zZXJ2aWNlc3RhY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlYyIKfQoKLmZhLXNoYXBlczpiZWZvcmUgewogICAgY29udGVudDogIlxmNjFmIgp9CgouZmEtc2hhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA2NCIKfQoKLmZhLXNoYXJlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUwIgp9CgouZmEtc2hhcmUtYWx0LXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUxIgp9CgouZmEtc2hhcmUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNGQiCn0KCi5mYS1zaGVrZWwtc2lnbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBiIgp9CgouZmEtc2hpZWxkLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VkIgp9CgouZmEtc2hpZWxkLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNmMiCn0KCi5mYS1zaGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMWEiCn0KCi5mYS1zaGlwcGluZy1mYXN0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OGIiCn0KCi5mYS1zaGlydHNpbmJ1bGs6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNCIKfQoKLmZhLXNob2UtcHJpbnRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NGIiCn0KCi5mYS1zaG9waWZ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNTciCn0KCi5mYS1zaG9wcGluZy1iYWc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5MCIKfQoKLmZhLXNob3BwaW5nLWJhc2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjkxIgp9CgouZmEtc2hvcHBpbmctY2FydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdhIgp9CgouZmEtc2hvcHdhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNSIKfQoKLmZhLXNob3dlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNjIgp9CgouZmEtc2h1dHRsZS12YW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViNiIKfQoKLmZhLXNpZ246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkOSIKfQoKLmZhLXNpZ24taW4tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjYiCn0KCi5mYS1zaWduLWxhbmd1YWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTciCn0KCi5mYS1zaWduLW91dC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJmNSIKfQoKLmZhLXNpZ25hbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDEyIgp9CgouZmEtc2lnbmF0dXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YjciCn0KCi5mYS1zaW0tY2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2M0Igp9CgouZmEtc2ltcGx5YnVpbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNSIKfQoKLmZhLXNpbms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA2ZCIKfQoKLmZhLXNpc3RyaXg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlZSIKfQoKLmZhLXNpdGVtYXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlOCIKfQoKLmZhLXNpdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxMiIKfQoKLmZhLXNrYXRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdjNSIKfQoKLmZhLXNrZXRjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2M2Igp9CgouZmEtc2tpaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3YzkiCn0KCi5mYS1za2lpbmctbm9yZGljOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3Y2EiCn0KCi5mYS1za3VsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTRjIgp9CgouZmEtc2t1bGwtY3Jvc3Nib25lczpiZWZvcmUgewogICAgY29udGVudDogIlxmNzE0Igp9CgouZmEtc2t5YXRsYXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxNiIKfQoKLmZhLXNreXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2UiCn0KCi5mYS1zbGFjazpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk4Igp9CgouZmEtc2xhY2staGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VmIgp9CgouZmEtc2xhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcxNSIKfQoKLmZhLXNsZWlnaDpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NjIgp9CgouZmEtc2xpZGVycy1oOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZGUiCn0KCi5mYS1zbGlkZXNoYXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTciCn0KCi5mYS1zbWlsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTE4Igp9CgouZmEtc21pbGUtYmVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWI4Igp9CgouZmEtc21pbGUtd2luazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGRhIgp9CgouZmEtc21vZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNzVmIgp9CgouZmEtc21va2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNDhkIgp9CgouZmEtc21va2luZy1iYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0ZCIKfQoKLmZhLXNtczpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NkIgp9CgouZmEtc25hcGNoYXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhYiIKfQoKLmZhLXNuYXBjaGF0LWdob3N0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYWMiCn0KCi5mYS1zbmFwY2hhdC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhZCIKfQoKLmZhLXNub3dib2FyZGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2NlIgp9CgouZmEtc25vd2ZsYWtlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZGMiCn0KCi5mYS1zbm93bWFuOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDAiCn0KCi5mYS1zbm93cGxvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmN2QyIgp9CgouZmEtc29hcDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDZlIgp9CgouZmEtc29ja3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY5NiIKfQoKLmZhLXNvbGFyLXBhbmVsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YmEiCn0KCi5mYS1zb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGMiCn0KCi5mYS1zb3J0LWFscGhhLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1ZCIKfQoKLmZhLXNvcnQtYWxwaGEtZG93bi1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4MSIKfQoKLmZhLXNvcnQtYWxwaGEtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1ZSIKfQoKLmZhLXNvcnQtYWxwaGEtdXAtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODIiCn0KCi5mYS1zb3J0LWFtb3VudC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjAiCn0KCi5mYS1zb3J0LWFtb3VudC1kb3duLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODg0Igp9CgouZmEtc29ydC1hbW91bnQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MSIKfQoKLmZhLXNvcnQtYW1vdW50LXVwLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmODg1Igp9CgouZmEtc29ydC1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGQiCn0KCi5mYS1zb3J0LW51bWVyaWMtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTYyIgp9CgouZmEtc29ydC1udW1lcmljLWRvd24tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODYiCn0KCi5mYS1zb3J0LW51bWVyaWMtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MyIKfQoKLmZhLXNvcnQtbnVtZXJpYy11cC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4NyIKfQoKLmZhLXNvcnQtdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkZSIKfQoKLmZhLXNvdW5kY2xvdWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiZSIKfQoKLmZhLXNvdXJjZXRyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkMyIKfQoKLmZhLXNwYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWJiIgp9CgouZmEtc3BhY2Utc2h1dHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk3Igp9CgouZmEtc3BlYWthcDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2YzIgp9CgouZmEtc3BlYWtlci1kZWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4M2MiCn0KCi5mYS1zcGVsbC1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmODkxIgp9CgouZmEtc3BpZGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MTciCn0KCi5mYS1zcGlubmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTAiCn0KCi5mYS1zcGxvdGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YmMiCn0KCi5mYS1zcG90aWZ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmMiCn0KCi5mYS1zcHJheS1jYW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViZCIKfQoKLmZhLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM4Igp9CgouZmEtc3F1YXJlLWZ1bGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1YyIKfQoKLmZhLXNxdWFyZS1yb290LWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjk4Igp9CgouZmEtc3F1YXJlc3BhY2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjViZSIKfQoKLmZhLXN0YWNrLWV4Y2hhbmdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOGQiCn0KCi5mYS1zdGFjay1vdmVyZmxvdzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTZjIgp9CgouZmEtc3RhY2twYXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4NDIiCn0KCi5mYS1zdGFtcDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWJmIgp9CgouZmEtc3RhcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA1Igp9CgouZmEtc3Rhci1hbmQtY3Jlc2NlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjY5OSIKfQoKLmZhLXN0YXItaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg5Igp9CgouZmEtc3Rhci1oYWxmLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWMwIgp9CgouZmEtc3Rhci1vZi1kYXZpZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjlhIgp9CgouZmEtc3Rhci1vZi1saWZlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MjEiCn0KCi5mYS1zdGF5bGlua2VkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZjUiCn0KCi5mYS1zdGVhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWI2Igp9CgouZmEtc3RlYW0tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYjciCn0KCi5mYS1zdGVhbS1zeW1ib2w6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmNiIKfQoKLmZhLXN0ZXAtYmFja3dhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0OCIKfQoKLmZhLXN0ZXAtZm9yd2FyZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDUxIgp9CgouZmEtc3RldGhvc2NvcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMSIKfQoKLmZhLXN0aWNrZXItbXVsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2Y3Igp9CgouZmEtc3RpY2t5LW5vdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0OSIKfQoKLmZhLXN0b3A6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA0ZCIKfQoKLmZhLXN0b3AtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyOGQiCn0KCi5mYS1zdG9wd2F0Y2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJmMiIKfQoKLmZhLXN0b3B3YXRjaC0yMDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDZmIgp9CgouZmEtc3RvcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU0ZSIKfQoKLmZhLXN0b3JlLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTRmIgp9CgouZmEtc3RvcmUtYWx0LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzAiCn0KCi5mYS1zdG9yZS1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDcxIgp9CgouZmEtc3RyYXZhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjgiCn0KCi5mYS1zdHJlYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1MCIKfQoKLmZhLXN0cmVldC12aWV3OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMWQiCn0KCi5mYS1zdHJpa2V0aHJvdWdoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwY2MiCn0KCi5mYS1zdHJpcGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyOSIKfQoKLmZhLXN0cmlwZS1zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MmEiCn0KCi5mYS1zdHJvb3B3YWZlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTUxIgp9CgouZmEtc3R1ZGlvdmluYXJpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZjgiCn0KCi5mYS1zdHVtYmxldXBvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMWE0Igp9CgouZmEtc3R1bWJsZXVwb24tY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYTMiCn0KCi5mYS1zdWJzY3JpcHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyYyIKfQoKLmZhLXN1YndheTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM5Igp9CgouZmEtc3VpdGNhc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMiIKfQoKLmZhLXN1aXRjYXNlLXJvbGxpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjMSIKfQoKLmZhLXN1bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTg1Igp9CgouZmEtc3VwZXJwb3dlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkZCIKfQoKLmZhLXN1cGVyc2NyaXB0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMmIiCn0KCi5mYS1zdXBwbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmOSIKfQoKLmZhLXN1cnByaXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzIiCn0KCi5mYS1zdXNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDYiCn0KCi5mYS1zd2F0Y2hib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzMiCn0KCi5mYS1zd2lmdDpiZWZvcmUgewogICAgY29udGVudDogIlxmOGUxIgp9CgouZmEtc3dpbW1lcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM0Igp9CgouZmEtc3dpbW1pbmctcG9vbDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM1Igp9CgouZmEtc3ltZm9ueTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNkIgp9CgouZmEtc3luYWdvZ3VlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OWIiCn0KCi5mYS1zeW5jOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjEiCn0KCi5mYS1zeW5jLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmYxIgp9CgouZmEtc3lyaW5nZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDhlIgp9CgouZmEtdGFibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjZSIKfQoKLmZhLXRhYmxlLXRlbm5pczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDVkIgp9CgouZmEtdGFibGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMGEiCn0KCi5mYS10YWJsZXQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZmEiCn0KCi5mYS10YWJsZXRzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTAiCn0KCi5mYS10YWNob21ldGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZkIgp9CgouZmEtdGFnOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmIiCn0KCi5mYS10YWdzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMmMiCn0KCi5mYS10YXBlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZGIiCn0KCi5mYS10YXNrczpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFlIgp9CgouZmEtdGF4aTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWJhIgp9CgouZmEtdGVhbXNwZWFrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZjkiCn0KCi5mYS10ZWV0aDpiZWZvcmUgewogICAgY29udGVudDogIlxmNjJlIgp9CgouZmEtdGVldGgtb3BlbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNjJmIgp9CgouZmEtdGVsZWdyYW06YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjNiIKfQoKLmZhLXRlbGVncmFtLXBsYW5lOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZmUiCn0KCi5mYS10ZW1wZXJhdHVyZS1oaWdoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NjkiCn0KCi5mYS10ZW1wZXJhdHVyZS1sb3c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjc2YiIKfQoKLmZhLXRlbmNlbnQtd2VpYm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkNSIKfQoKLmZhLXRlbmdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDciCn0KCi5mYS10ZXJtaW5hbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTIwIgp9CgouZmEtdGV4dC1oZWlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzNCIKfQoKLmZhLXRleHQtd2lkdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzNSIKfQoKLmZhLXRoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMGEiCn0KCi5mYS10aC1sYXJnZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA5Igp9CgouZmEtdGgtbGlzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDBiIgp9CgouZmEtdGhlLXJlZC15ZXRpOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2OWQiCn0KCi5mYS10aGVhdGVyLW1hc2tzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MzAiCn0KCi5mYS10aGVtZWNvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzYiCn0KCi5mYS10aGVtZWlzbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMiIKfQoKLmZhLXRoZXJtb21ldGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTEiCn0KCi5mYS10aGVybW9tZXRlci1lbXB0eTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNiIgp9CgouZmEtdGhlcm1vbWV0ZXItZnVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM3Igp9CgouZmEtdGhlcm1vbWV0ZXItaGFsZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmM5Igp9CgouZmEtdGhlcm1vbWV0ZXItcXVhcnRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNhIgp9CgouZmEtdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjOCIKfQoKLmZhLXRoaW5rLXBlYWtzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MzEiCn0KCi5mYS10aHVtYnMtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTY1Igp9CgouZmEtdGh1bWJzLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjQiCn0KCi5mYS10aHVtYnRhY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4ZCIKfQoKLmZhLXRpY2tldC1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNmZiIKfQoKLmZhLXRpa3RvazpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdiIgp9CgouZmEtdGltZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZCIKfQoKLmZhLXRpbWVzLWNpcmNsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU3Igp9CgouZmEtdGludDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDQzIgp9CgouZmEtdGludC1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWM3Igp9CgouZmEtdGlyZWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjOCIKfQoKLmZhLXRvZ2dsZS1vZmY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIwNCIKfQoKLmZhLXRvZ2dsZS1vbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjA1Igp9CgouZmEtdG9pbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZDgiCn0KCi5mYS10b2lsZXQtcGFwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcxZSIKfQoKLmZhLXRvaWxldC1wYXBlci1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDcyIgp9CgouZmEtdG9vbGJveDpiZWZvcmUgewogICAgY29udGVudDogIlxmNTUyIgp9CgouZmEtdG9vbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdkOSIKfQoKLmZhLXRvb3RoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1YzkiCn0KCi5mYS10b3JhaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNmEwIgp9CgouZmEtdG9yaWktZ2F0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmExIgp9CgouZmEtdHJhY3RvcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNzIyIgp9CgouZmEtdHJhZGUtZmVkZXJhdGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNTEzIgp9CgouZmEtdHJhZGVtYXJrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNWMiCn0KCi5mYS10cmFmZmljLWxpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2MzciCn0KCi5mYS10cmFpbGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNDEiCn0KCi5mYS10cmFpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM4Igp9CgouZmEtdHJhbTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2RhIgp9CgouZmEtdHJhbnNnZW5kZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyNCIKfQoKLmZhLXRyYW5zZ2VuZGVyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI1Igp9CgouZmEtdHJhc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmOCIKfQoKLmZhLXRyYXNoLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmVkIgp9CgouZmEtdHJhc2gtcmVzdG9yZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODI5Igp9CgouZmEtdHJhc2gtcmVzdG9yZS1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgyYSIKfQoKLmZhLXRyZWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiYiIKfQoKLmZhLXRyZWxsbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTgxIgp9CgouZmEtdHJpcGFkdmlzb3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2MiIKfQoKLmZhLXRyb3BoeTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDkxIgp9CgouZmEtdHJ1Y2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkMSIKfQoKLmZhLXRydWNrLWxvYWRpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRkZSIKfQoKLmZhLXRydWNrLW1vbnN0ZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjYzYiIKfQoKLmZhLXRydWNrLW1vdmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGRmIgp9CgouZmEtdHJ1Y2stcGlja3VwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY2M2MiCn0KCi5mYS10c2hpcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjU1MyIKfQoKLmZhLXR0eTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWU0Igp9CgouZmEtdHVtYmxyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzMiCn0KCi5mYS10dW1ibHItc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNzQiCn0KCi5mYS10djpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZjIgp9CgouZmEtdHdpdGNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZTgiCn0KCi5mYS10d2l0dGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTkiCn0KCi5mYS10d2l0dGVyLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDgxIgp9CgouZmEtdHlwbzM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyYiIKfQoKLmZhLXViZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwMiIKfQoKLmZhLXVidW50dTpiZWZvcmUgewogICAgY29udGVudDogIlxmN2RmIgp9CgouZmEtdWlraXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwMyIKfQoKLmZhLXVtYnJhY286YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjhlOCIKfQoKLmZhLXVtYnJlbGxhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTkiCn0KCi5mYS11bWJyZWxsYS1iZWFjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNhIgp9CgouZmEtdW5jaGFydGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODQiCn0KCi5mYS11bmRlcmxpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjZCIKfQoKLmZhLXVuZG86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMiIKfQoKLmZhLXVuZG8tYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZWEiCn0KCi5mYS11bmlyZWdpc3RyeTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA0Igp9CgouZmEtdW5pdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA0OSIKfQoKLmZhLXVuaXZlcnNhbC1hY2Nlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5YSIKfQoKLmZhLXVuaXZlcnNpdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YyIKfQoKLmZhLXVubGluazpiZWZvcmUgewogICAgY29udGVudDogIlxmMTI3Igp9CgouZmEtdW5sb2NrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOWMiCn0KCi5mYS11bmxvY2stYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxM2UiCn0KCi5mYS11bnNwbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDdjIgp9CgouZmEtdW50YXBwZDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA1Igp9CgouZmEtdXBsb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOTMiCn0KCi5mYS11cHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlMCIKfQoKLmZhLXVzYjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjg3Igp9CgouZmEtdXNlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDA3Igp9CgouZmEtdXNlci1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQwNiIKfQoKLmZhLXVzZXItYWx0LXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZmEiCn0KCi5mYS11c2VyLWFzdHJvbmF1dDpiZWZvcmUgewogICAgY29udGVudDogIlxmNGZiIgp9CgouZmEtdXNlci1jaGVjazpiZWZvcmUgewogICAgY29udGVudDogIlxmNGZjIgp9CgouZmEtdXNlci1jaXJjbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiZCIKfQoKLmZhLXVzZXItY2xvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmZCIKfQoKLmZhLXVzZXItY29nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZmUiCn0KCi5mYS11c2VyLWVkaXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRmZiIKfQoKLmZhLXVzZXItZnJpZW5kczpiZWZvcmUgewogICAgY29udGVudDogIlxmNTAwIgp9CgouZmEtdXNlci1ncmFkdWF0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNTAxIgp9CgouZmEtdXNlci1pbmp1cmVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MjgiCn0KCi5mYS11c2VyLWxvY2s6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwMiIKfQoKLmZhLXVzZXItbWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmMCIKfQoKLmZhLXVzZXItbWludXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwMyIKfQoKLmZhLXVzZXItbmluamE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwNCIKfQoKLmZhLXVzZXItbnVyc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjgyZiIKfQoKLmZhLXVzZXItcGx1czpiZWZvcmUgewogICAgY29udGVudDogIlxmMjM0Igp9CgouZmEtdXNlci1zZWNyZXQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIxYiIKfQoKLmZhLXVzZXItc2hpZWxkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDUiCn0KCi5mYS11c2VyLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1MDYiCn0KCi5mYS11c2VyLXRhZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTA3Igp9CgouZmEtdXNlci10aWU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwOCIKfQoKLmZhLXVzZXItdGltZXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNSIKfQoKLmZhLXVzZXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzAiCn0KCi5mYS11c2Vycy1jb2c6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUwOSIKfQoKLmZhLXVzZXJzLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzMiCn0KCi5mYS11c3BzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3ZTEiCn0KCi5mYS11c3N1bm5haDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA3Igp9CgouZmEtdXRlbnNpbC1zcG9vbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMmU1Igp9CgouZmEtdXRlbnNpbHM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlNyIKfQoKLmZhLXZhYWRpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA4Igp9CgouZmEtdmVjdG9yLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNiIgp9CgouZmEtdmVudXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIyMSIKfQoKLmZhLXZlbnVzLWRvdWJsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI2Igp9CgouZmEtdmVudXMtbWFyczpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI4Igp9CgouZmEtdmVzdDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDg1Igp9CgouZmEtdmVzdC1wYXRjaGVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwODYiCn0KCi5mYS12aWFjb2luOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMzciCn0KCi5mYS12aWFkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhOSIKfQoKLmZhLXZpYWRlby1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJhYSIKfQoKLmZhLXZpYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5MiIKfQoKLmZhLXZpYWxzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTMiCn0KCi5mYS12aWJlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDA5Igp9CgouZmEtdmlkZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZCIKfQoKLmZhLXZpZGVvLXNsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0ZTIiCn0KCi5mYS12aWhhcmE6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjZhNyIKfQoKLmZhLXZpbWVvOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MGEiCn0KCi5mYS12aW1lby1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5NCIKfQoKLmZhLXZpbWVvLXY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3ZCIKfQoKLmZhLXZpbmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjYSIKfQoKLmZhLXZpcnVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGUwNzQiCn0KCi5mYS12aXJ1cy1zbGFzaDpiZWZvcmUgewogICAgY29udGVudDogIlxlMDc1Igp9CgouZmEtdmlydXNlczpiZWZvcmUgewogICAgY29udGVudDogIlxlMDc2Igp9CgouZmEtdms6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4OSIKfQoKLmZhLXZudjpiZWZvcmUgewogICAgY29udGVudDogIlxmNDBiIgp9CgouZmEtdm9pY2VtYWlsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4OTciCn0KCi5mYS12b2xsZXliYWxsLWJhbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ1ZiIKfQoKLmZhLXZvbHVtZS1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjciCn0KCi5mYS12b2x1bWUtbXV0ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNmE5Igp9CgouZmEtdm9sdW1lLW9mZjpiZWZvcmUgewogICAgY29udGVudDogIlxmMDI2Igp9CgouZmEtdm9sdW1lLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMjgiCn0KCi5mYS12b3RlLXllYTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzcyIgp9CgouZmEtdnItY2FyZGJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3MjkiCn0KCi5mYS12dWVqczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDFmIgp9CgouZmEtd2Fsa2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNTU0Igp9CgouZmEtd2FsbGV0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1NTUiCn0KCi5mYS13YXJlaG91c2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5NCIKfQoKLmZhLXdhdGNobWFuLW1vbml0b3Jpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4NyIKfQoKLmZhLXdhdGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY3NzMiCn0KCi5mYS13YXZlLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNlIgp9CgouZmEtd2F6ZTpiZWZvcmUgewogICAgY29udGVudDogIlxmODNmIgp9CgouZmEtd2VlYmx5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY1Y2MiCn0KCi5mYS13ZWlibzpiZWZvcmUgewogICAgY29udGVudDogIlxmMThhIgp9CgouZmEtd2VpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0OTYiCn0KCi5mYS13ZWlnaHQtaGFuZ2luZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNkIgp9CgouZmEtd2VpeGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDciCn0KCi5mYS13aGF0c2FwcDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjMyIgp9CgouZmEtd2hhdHNhcHAtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MGMiCn0KCi5mYS13aGVlbGNoYWlyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTMiCn0KCi5mYS13aG1jczpiZWZvcmUgewogICAgY29udGVudDogIlxmNDBkIgp9CgouZmEtd2lmaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWViIgp9CgouZmEtd2lraXBlZGlhLXc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI2NiIKfQoKLmZhLXdpbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjcyZSIKfQoKLmZhLXdpbmRvdy1jbG9zZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEwIgp9CgouZmEtd2luZG93LW1heGltaXplOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDAiCn0KCi5mYS13aW5kb3ctbWluaW1pemU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkMSIKfQoKLmZhLXdpbmRvdy1yZXN0b3JlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZDIiCn0KCi5mYS13aW5kb3dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxN2EiCn0KCi5mYS13aW5lLWJvdHRsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNzJmIgp9CgouZmEtd2luZS1nbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmNGUzIgp9CgouZmEtd2luZS1nbGFzcy1hbHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjVjZSIKfQoKLmZhLXdpeDpiZWZvcmUgewogICAgY29udGVudDogIlxmNWNmIgp9CgouZmEtd2l6YXJkcy1vZi10aGUtY29hc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjczMCIKfQoKLmZhLXdvZHU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZTA4OCIKfQoKLmZhLXdvbGYtcGFjay1iYXR0YWxpb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjUxNCIKfQoKLmZhLXdvbi1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTkiCn0KCi5mYS13b3JkcHJlc3M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5YSIKfQoKLmZhLXdvcmRwcmVzcy1zaW1wbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMSIKfQoKLmZhLXdwYmVnaW5uZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5NyIKfQoKLmZhLXdwZXhwbG9yZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJkZSIKfQoKLmZhLXdwZm9ybXM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI5OCIKfQoKLmZhLXdwcmVzc3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNlNCIKfQoKLmZhLXdyZW5jaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGFkIgp9CgouZmEteC1yYXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQ5NyIKfQoKLmZhLXhib3g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMiIKfQoKLmZhLXhpbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2OCIKfQoKLmZhLXhpbmctc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjkiCn0KCi5mYS15LWNvbWJpbmF0b3I6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzYiIKfQoKLmZhLXlhaG9vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOWUiCn0KCi5mYS15YW1tZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg0MCIKfQoKLmZhLXlhbmRleDpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEzIgp9CgouZmEteWFuZGV4LWludGVybmF0aW9uYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxNCIKfQoKLmZhLXlhcm46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjdlMyIKfQoKLmZhLXllbHA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFlOSIKfQoKLmZhLXllbi1zaWduOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTciCn0KCi5mYS15aW4teWFuZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNmFkIgp9CgouZmEteW9hc3Q6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiMSIKfQoKLmZhLXlvdXR1YmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2NyIKfQoKLmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MzEiCn0KCi5mYS16aGlodTpiZWZvcmUgewogICAgY29udGVudDogIlxmNjNmIgp9Cgouc3Itb25seSB7CiAgICBib3JkZXI6IDA7CiAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogICAgaGVpZ2h0OiAxcHg7CiAgICBtYXJnaW46IC0xcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZzogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxcHgKfQoKLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwKLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsKICAgIGNsaXA6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXJnaW46IDA7CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICB3aWR0aDogYXV0bwp9CgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBmb250LWRpc3BsYXk6IGJsb2NrOwogICAgc3JjOiB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC5lb3QpOwogICAgc3JjOiB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC0xLmVvdCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLCB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLCB1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmKSBmb3JtYXQoIndvZmYiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksIHVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLnN2ZykgZm9ybWF0KCJzdmciKQp9CgouZmFiIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIgp9CgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgZm9udC1kaXNwbGF5OiBibG9jazsKICAgIHNyYzogdXJsKC4uL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLmVvdCk7CiAgICBzcmM6IHVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC0xLmVvdCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLCB1cmwoLi4vd2ViZm9udHMvZmEtcmVndWxhci00MDAud29mZjIpIGZvcm1hdCgid29mZjIiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLndvZmYpIGZvcm1hdCgid29mZiIpLCB1cmwoLi4vd2ViZm9udHMvZmEtcmVndWxhci00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksIHVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC5zdmcpIGZvcm1hdCgic3ZnIikKfQoKLmZhYiwKLmZhciB7CiAgICBmb250LXdlaWdodDogNDAwCn0KCkBmb250LWZhY2UgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBmb250LWRpc3BsYXk6IGJsb2NrOwogICAgc3JjOiB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLmVvdCk7CiAgICBzcmM6IHVybCguLi93ZWJmb250cy9mYS1zb2xpZC05MDAtMS5lb3QpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSwgdXJsKC4uL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLCB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYpIGZvcm1hdCgid29mZiIpLCB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLCB1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLnN2ZykgZm9ybWF0KCJzdmciKQp9CgouZmEsCi5mYXIsCi5mYXMgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIgp9CgouZmEsCi5mYXMgewogICAgZm9udC13ZWlnaHQ6IDkwMAp9"}},"time_used":100,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":96,"receive":4,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/#","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"subdocument","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.863Z","timestamp":1785128399863,"http_version":"","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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: circuittradetech.com\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\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: iframe\r\nSec-Fetch-Mode: navigate\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":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T18:39:14.176312Z","times_seen":17567823,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/dist/vendor/wp-polyfill-inert.min.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.822Z","timestamp":1785128398822,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-includes/js/dist/vendor/wp-polyfill-inert.min.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 2606\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 14:56:43 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"2e38-67c3620e-e7f88fd233b093a3;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 482595\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 0753105b10ef5453e4019f53f940f883-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":11832,"size_decoded":3194,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (462)","md5":"e7bb072e5c9f94f7dd9a7686d4d0dc5a","sha1":"bfb7c763fcbd602bfeb0570bb7c0d9a44b6253c0","sha256":"ddf37c3974cda57aa02d32ad37cdce803142ccbc67f10dc998460839ec93e060","sha512":"13630015589f2daeab75f123efef94a800a56f2b8038f77f95aa028741904591a6051d878b4f9687e8e92cf417e1aca7a5ce2b689ae1c15d25eeda9adb9ec5d5","ssdeep":"192:iGRJNP5E3yHTh8OxJeqr7/+CGbUBCmhpIDNbKJbSi0dGdQsaGFHvnrOLCfLsf5qu:imNlvJhqF3KhM","tlshash":"a332426ea7e429335987b0656d7e8a427636402b044f4d283f1c84ee4f5c93806f2ff8","first_seen":"2025-09-01T05:50:55.055439Z","last_seen":"2026-07-27T05:30:59.791484Z","times_seen":11,"resource_available":true,"data":"ISBmdW5jdGlvbihlKSB7CiAgICAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbW9kdWxlIHx8ICJmdW5jdGlvbiIgIT0gdHlwZW9mIGRlZmluZSB8fCAhZGVmaW5lLmFtZCA/IGUoKSA6IGRlZmluZSgiaW5lcnQiLCBlKQp9KChmdW5jdGlvbigpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBlLCB0LCBuLCBpLCBvLCByLCBzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHJldHVybiB0ICYmIGEoZS5wcm90b3R5cGUsIHQpLCBuICYmIGEoZSwgbiksIGUKICAgIH07CgogICAgZnVuY3Rpb24gYShlLCB0KSB7CiAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgIHZhciBpID0gdFtuXTsKICAgICAgICAgICAgaS5lbnVtZXJhYmxlID0gaS5lbnVtZXJhYmxlIHx8ICExLCBpLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIGkgJiYgKGkud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBpLmtleSwgaSkKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gZChlLCB0KSB7CiAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgfQoKICAgIGZ1bmN0aW9uIHUoZSwgdCkgewogICAgICAgIGQodGhpcywgdSksIHRoaXMuX2luZXJ0TWFuYWdlciA9IHQsIHRoaXMuX3Jvb3RFbGVtZW50ID0gZSwgdGhpcy5fbWFuYWdlZE5vZGVzID0gbmV3IFNldCwgdGhpcy5fcm9vdEVsZW1lbnQuaGFzQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpID8gdGhpcy5fc2F2ZWRBcmlhSGlkZGVuID0gdGhpcy5fcm9vdEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpIDogdGhpcy5fc2F2ZWRBcmlhSGlkZGVuID0gbnVsbCwgdGhpcy5fcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsICJ0cnVlIiksIHRoaXMuX21ha2VTdWJ0cmVlVW5mb2N1c2FibGUodGhpcy5fcm9vdEVsZW1lbnQpLCB0aGlzLl9vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMuX29uTXV0YXRpb24uYmluZCh0aGlzKSksIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5fcm9vdEVsZW1lbnQsIHsKICAgICAgICAgICAgYXR0cmlidXRlczogITAsCiAgICAgICAgICAgIGNoaWxkTGlzdDogITAsCiAgICAgICAgICAgIHN1YnRyZWU6ICEwCiAgICAgICAgfSkKICAgIH0KCiAgICBmdW5jdGlvbiBoKGUsIHQpIHsKICAgICAgICBkKHRoaXMsIGgpLCB0aGlzLl9ub2RlID0gZSwgdGhpcy5fb3ZlcnJvZGVGb2N1c01ldGhvZCA9ICExLCB0aGlzLl9pbmVydFJvb3RzID0gbmV3IFNldChbdF0pLCB0aGlzLl9zYXZlZFRhYkluZGV4ID0gbnVsbCwgdGhpcy5fZGVzdHJveWVkID0gITEsIHRoaXMuZW5zdXJlVW50YWJiYWJsZSgpCiAgICB9CgogICAgZnVuY3Rpb24gbChlKSB7CiAgICAgICAgaWYgKGQodGhpcywgbCksICFlKSB0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQ7IEluZXJ0TWFuYWdlciBuZWVkcyB0byB3cmFwIGEgZG9jdW1lbnQuIik7CiAgICAgICAgdGhpcy5fZG9jdW1lbnQgPSBlLCB0aGlzLl9tYW5hZ2VkTm9kZXMgPSBuZXcgTWFwLCB0aGlzLl9pbmVydFJvb3RzID0gbmV3IE1hcCwgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLl93YXRjaEZvckluZXJ0LmJpbmQodGhpcykpLCBfKGUuaGVhZCB8fCBlLmJvZHkgfHwgZS5kb2N1bWVudEVsZW1lbnQpLCAibG9hZGluZyIgPT09IGUucmVhZHlTdGF0ZSA/IGUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHRoaXMuX29uRG9jdW1lbnRMb2FkZWQuYmluZCh0aGlzKSkgOiB0aGlzLl9vbkRvY3VtZW50TG9hZGVkKCkKICAgIH0KCiAgICBmdW5jdGlvbiBjKGUsIHQsIG4pIHsKICAgICAgICBpZiAoZS5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkgewogICAgICAgICAgICB2YXIgaSA9IGU7CiAgICAgICAgICAgIGlmIChzID0gKHQgJiYgdChpKSwgaS5zaGFkb3dSb290KSkgcmV0dXJuIHZvaWQgYyhzLCB0LCBzKTsKICAgICAgICAgICAgaWYgKCJjb250ZW50IiA9PSBpLmxvY2FsTmFtZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IChzID0gaSkuZ2V0RGlzdHJpYnV0ZWROb2RlcyA/IHMuZ2V0RGlzdHJpYnV0ZWROb2RlcygpIDogW10sIHIgPSAwOyByIDwgby5sZW5ndGg7IHIrKykgYyhvW3JdLCB0LCBuKTsKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgic2xvdCIgPT0gaS5sb2NhbE5hbWUpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHMsIGEgPSAocyA9IGkpLmFzc2lnbmVkTm9kZXMgPyBzLmFzc2lnbmVkTm9kZXMoewogICAgICAgICAgICAgICAgICAgICAgICBmbGF0dGVuOiAhMAogICAgICAgICAgICAgICAgICAgIH0pIDogW10sIGQgPSAwOyBkIDwgYS5sZW5ndGg7IGQrKykgYyhhW2RdLCB0LCBuKTsKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAodmFyIHUgPSBlLmZpcnN0Q2hpbGQ7IG51bGwgIT0gdTspIGModSwgdCwgbiksIHUgPSB1Lm5leHRTaWJsaW5nCiAgICB9CgogICAgZnVuY3Rpb24gXyhlKSB7CiAgICAgICAgdmFyIHQ7CiAgICAgICAgZS5xdWVyeVNlbGVjdG9yKCJzdHlsZSNpbmVydC1zdHlsZSwgbGluayNpbmVydC1zdHlsZSIpIHx8ICgodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIikpLnNldEF0dHJpYnV0ZSgiaWQiLCAiaW5lcnQtc3R5bGUiKSwgdC50ZXh0Q29udGVudCA9ICJcbltpbmVydF0ge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG5baW5lcnRdLCBbaW5lcnRdICoge1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuIiwgZS5hcHBlbmRDaGlsZCh0KSkKICAgIH0KICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgJiYgKGUgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UsIHQgPSBFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzIHx8IEVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yLCBuID0gWyJhW2hyZWZdIiwgImFyZWFbaHJlZl0iLCAiaW5wdXQ6bm90KFtkaXNhYmxlZF0pIiwgInNlbGVjdDpub3QoW2Rpc2FibGVkXSkiLCAidGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pIiwgImJ1dHRvbjpub3QoW2Rpc2FibGVkXSkiLCAiZGV0YWlscyIsICJzdW1tYXJ5IiwgImlmcmFtZSIsICJvYmplY3QiLCAiZW1iZWQiLCAiW2NvbnRlbnRlZGl0YWJsZV0iXS5qb2luKCIsIiksIHModSwgW3sKICAgICAgICBrZXk6ICJkZXN0cnVjdG9yIiwKICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKSwgdGhpcy5fcm9vdEVsZW1lbnQgJiYgKG51bGwgIT09IHRoaXMuX3NhdmVkQXJpYUhpZGRlbiA/IHRoaXMuX3Jvb3RFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCB0aGlzLl9zYXZlZEFyaWFIaWRkZW4pIDogdGhpcy5fcm9vdEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpKSwgdGhpcy5fbWFuYWdlZE5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3VubWFuYWdlTm9kZShlLm5vZGUpCiAgICAgICAgICAgIH0pLCB0aGlzKSwgdGhpcy5fb2JzZXJ2ZXIgPSBudWxsLCB0aGlzLl9yb290RWxlbWVudCA9IG51bGwsIHRoaXMuX21hbmFnZWROb2RlcyA9IG51bGwsIHRoaXMuX2luZXJ0TWFuYWdlciA9IG51bGwKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiX21ha2VTdWJ0cmVlVW5mb2N1c2FibGUiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgIG4gPSAoYyhlLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0Ll92aXNpdE5vZGUoZSkKICAgICAgICAgICAgICAgIH0pKSwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7CiAgICAgICAgICAgIGlmICghZG9jdW1lbnQuYm9keS5jb250YWlucyhlKSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGUsIG8gPSB2b2lkIDA7IGk7KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkubm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSkgewogICAgICAgICAgICAgICAgICAgICAgICBvID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaSA9IGkucGFyZW50Tm9kZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbyAmJiAobiA9IG8uYWN0aXZlRWxlbWVudCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlLmNvbnRhaW5zKG4pICYmIChuLmJsdXIoKSwgbiA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBkb2N1bWVudC5ib2R5LmZvY3VzKCkpCiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogIl92aXNpdE5vZGUiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIChlICE9PSB0aGlzLl9yb290RWxlbWVudCAmJiBlLmhhc0F0dHJpYnV0ZSgiaW5lcnQiKSAmJiB0aGlzLl9hZG9wdEluZXJ0Um9vdChlKSwgKHQuY2FsbChlLCBuKSB8fCBlLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKSkgJiYgdGhpcy5fbWFuYWdlTm9kZShlKSkKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiX21hbmFnZU5vZGUiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUgPSB0aGlzLl9pbmVydE1hbmFnZXIucmVnaXN0ZXIoZSwgdGhpcyksIHRoaXMuX21hbmFnZWROb2Rlcy5hZGQoZSkKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiX3VubWFuYWdlTm9kZSIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgKGUgPSB0aGlzLl9pbmVydE1hbmFnZXIuZGVyZWdpc3RlcihlLCB0aGlzKSkgJiYgdGhpcy5fbWFuYWdlZE5vZGVzLmRlbGV0ZShlKQogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJfdW5tYW5hZ2VTdWJ0cmVlIiwKICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgIGMoZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0Ll91bm1hbmFnZU5vZGUoZSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogIl9hZG9wdEluZXJ0Um9vdCIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9pbmVydE1hbmFnZXIuZ2V0SW5lcnRSb290KGUpOwogICAgICAgICAgICB0IHx8ICh0aGlzLl9pbmVydE1hbmFnZXIuc2V0SW5lcnQoZSwgITApLCB0ID0gdGhpcy5faW5lcnRNYW5hZ2VyLmdldEluZXJ0Um9vdChlKSksIHQubWFuYWdlZE5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuX21hbmFnZU5vZGUoZS5ub2RlKQogICAgICAgICAgICB9KSwgdGhpcykKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiX29uTXV0YXRpb24iLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgIHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIG4sIGkgPSB0LnRhcmdldDsKICAgICAgICAgICAgICAgICJjaGlsZExpc3QiID09PSB0LnR5cGUgPyAoZS5jYWxsKHQuYWRkZWROb2RlcykuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX21ha2VTdWJ0cmVlVW5mb2N1c2FibGUoZSkKICAgICAgICAgICAgICAgIH0pLCB0aGlzKSwgZS5jYWxsKHQucmVtb3ZlZE5vZGVzKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdW5tYW5hZ2VTdWJ0cmVlKGUpCiAgICAgICAgICAgICAgICB9KSwgdGhpcykpIDogImF0dHJpYnV0ZXMiID09PSB0LnR5cGUgJiYgKCJ0YWJpbmRleCIgPT09IHQuYXR0cmlidXRlTmFtZSA/IHRoaXMuX21hbmFnZU5vZGUoaSkgOiBpICE9PSB0aGlzLl9yb290RWxlbWVudCAmJiAiaW5lcnQiID09PSB0LmF0dHJpYnV0ZU5hbWUgJiYgaS5oYXNBdHRyaWJ1dGUoImluZXJ0IikgJiYgKHRoaXMuX2Fkb3B0SW5lcnRSb290KGkpLCBuID0gdGhpcy5faW5lcnRNYW5hZ2VyLmdldEluZXJ0Um9vdChpKSwgdGhpcy5fbWFuYWdlZE5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpLmNvbnRhaW5zKGUubm9kZSkgJiYgbi5fbWFuYWdlTm9kZShlLm5vZGUpCiAgICAgICAgICAgICAgICB9KSkpKQogICAgICAgICAgICB9KSwgdGhpcykKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAibWFuYWdlZE5vZGVzIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gbmV3IFNldCh0aGlzLl9tYW5hZ2VkTm9kZXMpCiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogImhhc1NhdmVkQXJpYUhpZGRlbiIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IHRoaXMuX3NhdmVkQXJpYUhpZGRlbgogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJzYXZlZEFyaWFIaWRkZW4iLAogICAgICAgIHNldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0aGlzLl9zYXZlZEFyaWFIaWRkZW4gPSBlCiAgICAgICAgfSwKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fc2F2ZWRBcmlhSGlkZGVuCiAgICAgICAgfQogICAgfV0pLCBpID0gdSwgcyhoLCBbewogICAgICAgIGtleTogImRlc3RydWN0b3IiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgIHRoaXMuX3Rocm93SWZEZXN0cm95ZWQoKSwgdGhpcy5fbm9kZSAmJiB0aGlzLl9ub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAoZSA9IHRoaXMuX25vZGUsIG51bGwgIT09IHRoaXMuX3NhdmVkVGFiSW5kZXggPyBlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCB0aGlzLl9zYXZlZFRhYkluZGV4KSA6IGUucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpLCB0aGlzLl9vdmVycm9kZUZvY3VzTWV0aG9kICYmIGRlbGV0ZSBlLmZvY3VzKSwgdGhpcy5fbm9kZSA9IG51bGwsIHRoaXMuX2luZXJ0Um9vdHMgPSBudWxsLCB0aGlzLl9kZXN0cm95ZWQgPSAhMAogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJfdGhyb3dJZkRlc3Ryb3llZCIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHRocm93IG5ldyBFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBkZXN0cm95ZWQgSW5lcnROb2RlIikKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiZW5zdXJlVW50YWJiYWJsZSIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAoZSA9IHRoaXMubm9kZSwgdC5jYWxsKGUsIG4pID8gLTEgPT09IGUudGFiSW5kZXggJiYgdGhpcy5oYXNTYXZlZFRhYkluZGV4IHx8IChlLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKSAmJiAodGhpcy5fc2F2ZWRUYWJJbmRleCA9IGUudGFiSW5kZXgpLCBlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCAiLTEiKSwgZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgKGUuZm9jdXMgPSBmdW5jdGlvbigpIHt9LCB0aGlzLl9vdmVycm9kZUZvY3VzTWV0aG9kID0gITApKSA6IGUuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpICYmICh0aGlzLl9zYXZlZFRhYkluZGV4ID0gZS50YWJJbmRleCwgZS5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4IikpKQogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJhZGRJbmVydFJvb3QiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRoaXMuX3Rocm93SWZEZXN0cm95ZWQoKSwgdGhpcy5faW5lcnRSb290cy5hZGQoZSkKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAicmVtb3ZlSW5lcnRSb290IiwKICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0aGlzLl90aHJvd0lmRGVzdHJveWVkKCksIHRoaXMuX2luZXJ0Um9vdHMuZGVsZXRlKGUpLCAwID09PSB0aGlzLl9pbmVydFJvb3RzLnNpemUgJiYgdGhpcy5kZXN0cnVjdG9yKCkKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiZGVzdHJveWVkIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVzdHJveWVkCiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogImhhc1NhdmVkVGFiSW5kZXgiLAogICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsICE9PSB0aGlzLl9zYXZlZFRhYkluZGV4CiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogIm5vZGUiLAogICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90aHJvd0lmRGVzdHJveWVkKCksIHRoaXMuX25vZGUKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAic2F2ZWRUYWJJbmRleCIsCiAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRoaXMuX3Rocm93SWZEZXN0cm95ZWQoKSwgdGhpcy5fc2F2ZWRUYWJJbmRleCA9IGUKICAgICAgICB9LAogICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90aHJvd0lmRGVzdHJveWVkKCksIHRoaXMuX3NhdmVkVGFiSW5kZXgKICAgICAgICB9CiAgICB9XSksIG8gPSBoLCBzKGwsIFt7CiAgICAgICAga2V5OiAic2V0SW5lcnQiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2luZXJ0Um9vdHMuaGFzKGUpICYmICh0ID0gbmV3IGkoZSwgdGhpcyksIGUuc2V0QXR0cmlidXRlKCJpbmVydCIsICIiKSwgdGhpcy5faW5lcnRSb290cy5zZXQoZSwgdCksICF0aGlzLl9kb2N1bWVudC5ib2R5LmNvbnRhaW5zKGUpKSkKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gZS5wYXJlbnROb2RlOyBuOykgMTEgPT09IG4ubm9kZVR5cGUgJiYgXyhuKSwgbiA9IG4ucGFyZW50Tm9kZQogICAgICAgICAgICB9IGVsc2UgdGhpcy5faW5lcnRSb290cy5oYXMoZSkgJiYgKHRoaXMuX2luZXJ0Um9vdHMuZ2V0KGUpLmRlc3RydWN0b3IoKSwgdGhpcy5faW5lcnRSb290cy5kZWxldGUoZSksIGUucmVtb3ZlQXR0cmlidXRlKCJpbmVydCIpKQogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJnZXRJbmVydFJvb3QiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbmVydFJvb3RzLmdldChlKQogICAgICAgIH0KICAgIH0sIHsKICAgICAgICBrZXk6ICJyZWdpc3RlciIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9tYW5hZ2VkTm9kZXMuZ2V0KGUpOwogICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBuID8gbi5hZGRJbmVydFJvb3QodCkgOiBuID0gbmV3IG8oZSwgdCksIHRoaXMuX21hbmFnZWROb2Rlcy5zZXQoZSwgbiksIG4KICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiZGVyZWdpc3RlciIsCiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9tYW5hZ2VkTm9kZXMuZ2V0KGUpOwogICAgICAgICAgICByZXR1cm4gbiA/IChuLnJlbW92ZUluZXJ0Um9vdCh0KSwgbi5kZXN0cm95ZWQgJiYgdGhpcy5fbWFuYWdlZE5vZGVzLmRlbGV0ZShlKSwgbikgOiBudWxsCiAgICAgICAgfQogICAgfSwgewogICAgICAgIGtleTogIl9vbkRvY3VtZW50TG9hZGVkIiwKICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGUuY2FsbCh0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbaW5lcnRdIikpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5lcnQoZSwgITApCiAgICAgICAgICAgIH0pLCB0aGlzKSwgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9kb2N1bWVudC5ib2R5IHx8IHRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgewogICAgICAgICAgICAgICAgYXR0cmlidXRlczogITAsCiAgICAgICAgICAgICAgICBzdWJ0cmVlOiAhMCwKICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogITAKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9LCB7CiAgICAgICAga2V5OiAiX3dhdGNoRm9ySW5lcnQiLAogICAgICAgIHZhbHVlOiBmdW5jdGlvbihuLCBpKSB7CiAgICAgICAgICAgIHZhciBvID0gdGhpczsKICAgICAgICAgICAgbi5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKG4udHlwZSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgImNoaWxkTGlzdCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGUuY2FsbChuLmFkZGVkTm9kZXMpLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgKGkgPSBlLmNhbGwobi5xdWVyeVNlbGVjdG9yQWxsKCJbaW5lcnRdIikpLCB0LmNhbGwobiwgIltpbmVydF0iKSAmJiBpLnVuc2hpZnQobiksIGkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5lcnQoZSwgITApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbykpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiYXR0cmlidXRlcyI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiaW5lcnQiICE9PSBuLmF0dHJpYnV0ZU5hbWUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLmhhc0F0dHJpYnV0ZSgiaW5lcnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgby5zZXRJbmVydChpLCByKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgdGhpcykKICAgICAgICB9CiAgICB9XSksIHMgPSBsLCBIVE1MRWxlbWVudC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoImluZXJ0IikgfHwgKHIgPSBuZXcgcyhkb2N1bWVudCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVE1MRWxlbWVudC5wcm90b3R5cGUsICJpbmVydCIsIHsKICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNBdHRyaWJ1dGUoImluZXJ0IikKICAgICAgICB9LAogICAgICAgIHNldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByLnNldEluZXJ0KHRoaXMsIGUpCiAgICAgICAgfQogICAgfSkpKQp9KSk7"}},"time_used":85,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":85,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/_/translate_http/_/ss/k=translate_http.tr.B7Dih9Jyjnw.L.F4.O/am=BIAABw/d=0/rs=AN8SPfpC04vrrzQXgs_TCM5EtruwfPzNtQ/m=el_main_css","fqdn":"www.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":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.870Z","timestamp":1785128399870,"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 /_/translate_http/_/ss/k=translate_http.tr.B7Dih9Jyjnw.L.F4.O/am=BIAABw/d=0/rs=AN8SPfpC04vrrzQXgs_TCM5EtruwfPzNtQ/m=el_main_css HTTP/1.1\r\nHost: www.gstatic.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://circuittradetech.com/\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/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/rosetta\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"rosetta\"\r\nreport-to: {\"group\":\"rosetta\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/rosetta\"}]}\r\ncontent-length: 3967\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:44 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:44 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 09 Apr 2026 01:12:55 GMT\r\ncontent-type: text/css; charset=UTF-8\r\nvary: Accept-Encoding\r\nage: 402555\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":20284,"size_decoded":4799,"mime_type":"text/css; charset=UTF-8","magic":"ASCII text, with very long lines (20284), with no line terminators","md5":"fde4f72b90fe807270db3c332dd058df","sha1":"7ef4d70af01c38a7f80a7650be25f63aff4ba751","sha256":"ab31c9be358d2107fc1158434c7aeaaf15f82e3e405ed67ab236b5ac232ed159","sha512":"9bef39350af557afeb10cb71068426ab28befaf5295359954787be06a5ce0993d69e8f5018a5a17c44311d294dd1a87a6f82edd0f5743df0149b8e4e53061695","ssdeep":"192:nvqx/EhZINcrXsfg0SgG8CqA3uku9SJFzvQVMbnUIfIxIVVpTrecfzPtcmt4v78l:gMF8Sb3i0JFzourUqWMVpTrdfzPtcBG","tlshash":"c492872057aed01967efa82364d36dff71d444db90123eeaaf5a7352cd821f231ea214","first_seen":"2026-04-13T20:43:22.641436Z","last_seen":"2026-07-27T17:47:56.554236Z","times_seen":17896,"resource_available":false,"data":"LlZJcGdKZC1aVmk5b2QtT1JIYi1PRVZtY2R7bGVmdDowO3RvcDowO2hlaWdodDozOXB4O3dpZHRoOjEwMCU7ei1pbmRleDoxMDAwMDAwMTtwb3NpdGlvbjpmaXhlZDtib3JkZXI6bm9uZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNkI5MERBO21hcmdpbjowO2JveC1zaGFkb3c6MCAwIDhweCAxcHggIzk5OX0uVklwZ0pkLVpWaTlvZC14bDA3T2ItT0VWbWNke3otaW5kZXg6MTAwMDAwMDI7Ym9yZGVyOm5vbmU7cG9zaXRpb246Zml4ZWQ7Ym94LXNoYWRvdzowIDNweCA4cHggMnB4ICM5OTl9LlZJcGdKZC1aVmk5b2QtU21mWi1PRVZtY2R7ei1pbmRleDoxMDAwMDAwMDtib3JkZXI6bm9uZTttYXJnaW46MH0uZ29vZy10ZS1nYWRnZXR7Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjExcHg7Y29sb3I6IzY2Njt3aGl0ZS1zcGFjZTpub3dyYXB9Lmdvb2ctdGUtZ2FkZ2V0IGltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyOm5vbmV9Lmdvb2ctdGUtZ2FkZ2V0LXNpbXBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNENUQ1RDU7Ym9yZGVyLXRvcDoxcHggc29saWQgIzlCOUI5Qjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRThFOEU4O2JvcmRlci1yaWdodDoxcHggc29saWQgI0Q1RDVENTtmb250LXNpemU6MTBwdDtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MnB4O2N1cnNvcjpwb2ludGVyfS5nb29nLXRlLWdhZGdldC1pY29ue21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4O3dpZHRoOjE5cHg7aGVpZ2h0OjE5cHg7Ym9yZGVyOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5nb29nLXRlLWNvbWJve21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6NHB4O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5nb29nLXRlLWdhZGdldCAuZ29vZy10ZS1jb21ib3ttYXJnaW46NHB4IDB9LlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDphY3RpdmUsLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkOmhvdmVyLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDpsaW5rLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDp2aXNpdGVke2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojNDQ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLU9SSGIgLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkLC5WSXBnSmQtWlZpOW9kLVR2RDlQYy1oU1JHUGR7ZGlzcGxheTpibG9jazttYXJnaW46MCAxMHB4fS5WSXBnSmQtWlZpOW9kLU9SSGIgLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1Bke3BhZGRpbmctdG9wOjJweDtwYWRkaW5nLWxlZnQ6NHB4fS5WSXBnSmQtWlZpOW9kLU9SSGIgKiwuVklwZ0pkLVpWaTlvZC1TbWZaICosLlZJcGdKZC1aVmk5b2QtbDl4a3RmICosLlZJcGdKZC1aVmk5b2QtdkgxR21mICosLlZJcGdKZC1aVmk5b2QteGwwN09iICosLmdvb2ctdGUtY29tYm97Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjEwcHR9LlZJcGdKZC1aVmk5b2QtT1JIYnttYXJnaW46MDtiYWNrZ3JvdW5kLWNvbG9yOiNFNEVGRkI7b3ZlcmZsb3c6aGlkZGVufS5WSXBnSmQtWlZpOW9kLU9SSGIgaW1ne2JvcmRlcjpub25lfS5WSXBnSmQtWlZpOW9kLU9SSGItYk45N1Bje2NvbG9yOiMwMDB9LlZJcGdKZC1aVmk5b2QtT1JIYi1iTjk3UGMgaW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uVklwZ0pkLVpWaTlvZC1PUkhiLVRzd3YxYntjb2xvcjojNjY2O3ZlcnRpY2FsLWFsaWduOnRvcDttYXJnaW4tdG9wOjA7Zm9udC1zaXplOjdwdH0uVklwZ0pkLVpWaTlvZC1PUkhiLUtFNnZxZXt3aWR0aDo4cHh9LlZJcGdKZC1aVmk5b2QtTGdic1Nle2JvcmRlci1jb2xvcjojRTdFN0U3O2JvcmRlci1zdHlsZTpub25lIHNvbGlkIHNvbGlkIG5vbmU7Ym9yZGVyLXdpZHRoOjAgMXB4IDFweCAwfS5WSXBnSmQtWlZpOW9kLUxnYnNTZSBkaXZ7Ym9yZGVyLWNvbG9yOiNDQ0MgIzk5OSAjOTk5ICNDQ0M7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjOTk5O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O2hlaWdodDoyMHB4fS5WSXBnSmQtWlZpOW9kLUxnYnNTZSBidXR0b257YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MjBweDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luOjA7dmVydGljYWwtYWxpZ246dG9wO3doaXRlLXNwYWNlOm5vd3JhcH0uVklwZ0pkLVpWaTlvZC1MZ2JzU2UgYnV0dG9uOmFjdGl2ZXtiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgI0NDQ30uVklwZ0pkLVpWaTlvZC1TbWZae21hcmdpbjowO2JhY2tncm91bmQtY29sb3I6I0ZGRjt3aGl0ZS1zcGFjZTpub3dyYXB9LlZJcGdKZC1aVmk5b2QtU21mWi1oU1JHUGR7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMHB0O2JvcmRlcjoxcHggb3V0c2V0ICM4ODg7cGFkZGluZzo2cHggMTBweDt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowfS5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1BkIGltZ3ttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweDt3aWR0aDoxOXB4O2hlaWdodDoxOXB4O2JvcmRlcjpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uVklwZ0pkLVpWaTlvZC1TbWZaLWhTUkdQZCBzcGFue3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7bWFyZ2luLWxlZnQ6MnB4O21hcmdpbi1yaWdodDoycHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5nb29nLXRlLWZsb2F0LXRvcCAuVklwZ0pkLVpWaTlvZC1TbWZaLWhTUkdQZHtwYWRkaW5nOjJweDtib3JkZXItdG9wLXdpZHRoOjB9Lmdvb2ctdGUtZmxvYXQtYm90dG9tIC5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1Bke3BhZGRpbmc6MnB4O2JvcmRlci1ib3R0b20td2lkdGg6MH0uVklwZ0pkLVpWaTlvZC14bDA3T2ItbFRCeGVke3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMwMEM7d2hpdGUtc3BhY2U6bm93cmFwO21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6NHB4fS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1sVEJ4ZWQgc3Bhbnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1sVEJ4ZWQgaW1ne21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4fS5nb29nLXRlLWdhZGdldC1zaW1wbGUgLlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZHtjb2xvcjojMDAwfS5nb29nLXRlLWdhZGdldC1zaW1wbGUgLlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZCBzcGFue3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYntiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjJweCBzb2xpZCAjQzNEOUZGO292ZXJmbG93LXk6c2Nyb2xsO292ZXJmbG93LXg6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MH0uVklwZ0pkLVpWaTlvZC14bDA3T2ItaWJuQzZie3BhZGRpbmc6M3B4O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmIsLlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2YjpsaW5re2NvbG9yOiMwMEM7YmFja2dyb3VuZDojRkZGfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6dmlzaXRlZHtjb2xvcjojNTUxQThCfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6aG92ZXJ7YmFja2dyb3VuZDojQzNEOUZGfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6YWN0aXZle2NvbG9yOiMwMEN9LlZJcGdKZC1aVmk5b2QtdkgxR21me2JhY2tncm91bmQtY29sb3I6I0ZGRjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4IHNvbGlkICM2QjkwREE7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6NHB4fS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1LcmhQTmJ7d2lkdGg6MTZweH0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaGdEVXdle21hcmdpbjo2cHggMDtoZWlnaHQ6MXB4O2JhY2tncm91bmQtY29sb3I6I2FhYTtvdmVyZmxvdzpoaWRkZW59LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YiBkaXYsLlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQgZGl2e3BhZGRpbmc6NHB4fS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmIgLnVERUZnZXtkaXNwbGF5Om5vbmV9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQgLmZtY21Te3BhZGRpbmctbGVmdDo0cHg7cGFkZGluZy1yaWdodDo0cHh9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZHt0ZXh0LWRlY29yYXRpb246bm9uZX0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiOmFjdGl2ZSBkaXYsLlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YjpsaW5rIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiOnZpc2l0ZWQgZGl2e2NvbG9yOiMwMEM7YmFja2dyb3VuZDojRkZGfS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmI6aG92ZXIgZGl2e2NvbG9yOiNGRkY7YmFja2dyb3VuZDojMzZDfS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDphY3RpdmUgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kOmhvdmVyIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDpsaW5rIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDp2aXNpdGVkIGRpdntjb2xvcjojMDAwO2ZvbnQtd2VpZ2h0OjcwMH0uVklwZ0pkLVpWaTlvZC1sOXhrdGZ7YmFja2dyb3VuZC1jb2xvcjojRkZGO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjhweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjEwcHh9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLU9FVm1jZHtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjNkI5MERBO2JveC1zaGFkb3c6MCAzcHggOHB4IDJweCAjOTk5O2JvcmRlci1yYWRpdXM6OHB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0ZiBpbWd7Ym9yZGVyOm5vbmV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLWZtY21Te21hcmdpbi10b3A6NnB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGN7bWFyZ2luLXRvcDo2cHg7d2hpdGUtc3BhY2U6bm93cmFwfS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGMgKnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuRFVHSmlle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X21pbnVzX3NtLmdpZil9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuVGR5VERle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X3BsdXNfc20uZ2lmKX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtVmd3SmxjIHNwYW57Y29sb3I6IzAwQzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyO21hcmdpbjowIDRweH0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtSTlHTHB7bWFyZ2luOjZweCAwIDB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm17bWFyZ2luOjB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm0gdGV4dGFyZWF7bWFyZ2luLWJvdHRvbTo0cHg7d2lkdGg6MTAwJX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYteWVQZTVje21hcmdpbjo2cHggMCA0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLXdPSE15Znt6LWluZGV4OjEwMDA7cG9zaXRpb246Zml4ZWQ7dHJhbnNpdGlvbi1kZWxheTouNnM7bGVmdDotMTAwMHB4O3RvcDotMTAwMHB4fS5WSXBnSmQtWlZpOW9kLWFaMndFZS13T0hNeWYtdGk2aEdje3RyYW5zaXRpb24tZGVsYXk6MHM7bGVmdDotMTRweDt0b3A6LTE0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPe2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoxMDRweDtoZWlnaHQ6MTA0cHg7Ym9yZGVyLXJhZGl1czo1MHB4O2JhY2tncm91bmQ6I0ZGRiB1cmwoaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL3Byb2R1Y3QvMngvdHJhbnNsYXRlXzI0ZHAucG5nKSA1MCUgNTAlIG5vLXJlcGVhdDt0cmFuc2l0aW9uOmFsbCAuNnMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKC40KTtvcGFjaXR5OjB9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPLXRpNmhHY3t0cmFuc2Zvcm06c2NhbGUoLjUpO29wYWNpdHk6MX0uVklwZ0pkLVpWaTlvZC1hWjJ3RWV7bWFyZ2luOjJweCAwIDAgMnB4O2FuaW1hdGlvbjpzcGlubmVyLXJvdGF0b3IgMS40cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyBzcGlubmVyLXJvdGF0b3J7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3t0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9fS5WSXBnSmQtWlZpOW9kLWFaMndFZS1KdDVjS3tzdHJva2UtZGFzaGFycmF5OjE4NztzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZTojNDI4NUY0O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO2FuaW1hdGlvbjpzcGlubmVyLWRhc2ggMS40cyBlYXNlLWluLW91dCBpbmZpbml0ZX1Aa2V5ZnJhbWVzIHNwaW5uZXItZGFzaHswJXtzdHJva2UtZGFzaG9mZnNldDoxODd9NTAle3N0cm9rZS1kYXNob2Zmc2V0OjQ2Ljc1O3RyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKX10b3tzdHJva2UtZGFzaG9mZnNldDoxODc7dHJhbnNmb3JtOnJvdGF0ZSg0NTBkZWcpfX0uVklwZ0pkLXlBV05FYi1MN2xia2IgYSwuVklwZ0pkLXlBV05FYi1MN2xia2IgYm9keSwuVklwZ0pkLXlBV05FYi1MN2xia2IgZGl2LC5WSXBnSmQteUFXTkViLUw3bGJrYiBmb3JtLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoMSwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDIsLlZJcGdKZC15QVdORWItTDdsYmtiIGgzLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoNCwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDUsLlZJcGdKZC15QVdORWItTDdsYmtiIGg2LC5WSXBnSmQteUFXTkViLUw3bGJrYiBodG1sLC5WSXBnSmQteUFXTkViLUw3bGJrYiBpZnJhbWUsLlZJcGdKZC15QVdORWItTDdsYmtiIGltZywuVklwZ0pkLXlBV05FYi1MN2xia2IgbGksLlZJcGdKZC15QVdORWItTDdsYmtiIG9sLC5WSXBnSmQteUFXTkViLUw3bGJrYiBwLC5WSXBnSmQteUFXTkViLUw3bGJrYiBzcGFuLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0YWJsZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgdGJvZHksLlZJcGdKZC15QVdORWItTDdsYmtiIHRkLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0ciwuVklwZ0pkLXlBV05FYi1MN2xia2IgdWx7YWxsOnVuc2V0O2ZvbnQtc2l6ZToxMDAlO2xpbmUtaGVpZ2h0Om5vcm1hbH0uVklwZ0pkLXlBV05FYi1MN2xia2Igb2wsLlZJcGdKZC15QVdORWItTDdsYmtiIHVse2xpc3Qtc3R5bGU6bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlci1zcGFjaW5nOjB9LlZJcGdKZC15QVdORWItTDdsYmtiIGNhcHRpb24sLlZJcGdKZC15QVdORWItTDdsYmtiIHRkLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0aHt0ZXh0LWFsaWduOmxlZnQ7Zm9udC13ZWlnaHQ6NDAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiBpbnB1dDo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH1kaXY+LlZJcGdKZC15QVdORWItTDdsYmtie3BhZGRpbmc6MTBweCAxNHB4fS5WSXBnSmQteUFXTkViLUw3bGJrYntjb2xvcjojMjIyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlZWU7Ym94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpOy1tb3otYm94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpOy13ZWJraXQtYm94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpO2Rpc3BsYXk6bm9uZTtmb250LWZhbWlseTphcmlhbDtmb250LXNpemU6MTBwdDt3aWR0aDo0MjBweDtwYWRkaW5nOjEycHg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwMH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItblZNZmNkLWZtY21TLC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtcGJUVFlle2NsZWFyOmJvdGg7Zm9udC1zaXplOjEwcHQ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpqdXN0aWZ5O3dpZHRoOjEwMCV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXI0bmtle2NvbG9yOiM5OTk7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZjttYXJnaW46NHB4IDA7dGV4dC1hbGlnbjpsZWZ0fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UdkQ5UGMtTGdic1Nle2Rpc3BsYXk6bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItbDRlSFh7ZmxvYXQ6bGVmdDttYXJnaW46MH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItWjBBcnFmLVBMRGJiZntkaXNwbGF5OmlubGluZS1ibG9ja30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItZnc0MlplLVowQXJxZi1oYUFjbGZ7ZGlzcGxheTpub25lO3dpZHRoOjEwMCV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1IOXREdHttYXJnaW4tdG9wOjIwcHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUxLNXl1e2Zsb2F0OmxlZnR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXF3VThNZXtmbG9hdDpyaWdodH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItY0dNSTJie21pbi1oZWlnaHQ6MTVweDtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MSV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLWpPZmtNYi1OZTNzRmZ7YmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjMjk5MTBkIDAsIzIwYWYwZSAxMDAlKTtiYWNrZ3JvdW5kOiMyOTkxMGQ7Ym9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6aW5zZXQgMCAycHggMnB4ICMxZTY2MDk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMnB4IDJweCAjMWU2NjA5Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDJweCAycHggIzFlNjYwOTtjb2xvcjp3aGl0ZTtmb250LXNpemU6OXB0O2ZvbnQtd2VpZ2h0OmJvbGRlcjttYXJnaW4tdG9wOjEycHg7cGFkZGluZzo2cHg7dGV4dC1zaGFkb3c6MXB4IDFweCAxcHggIzFlNjYwOX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItWjBBcnFmLWhTUkdQZHtjb2xvcjojMTVjO2N1cnNvcjpwb2ludGVyO2ZvbnQtZmFtaWx5OmFyaWFsO2ZvbnQtc2l6ZToxMXB4O21hcmdpbi1yaWdodDoxNXB4O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYj50ZXh0YXJlYXtmb250LWZhbWlseTphcmlhbDtyZXNpemU6dmVydGljYWw7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjEwcHg7Ym9yZGVyLXJhZGl1czoxcHg7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O2JvcmRlci10b3A6MXB4IHNvbGlkIHNpbHZlcjtmb250LXNpemU6MTNweDtoZWlnaHQ6YXV0bztvdmVyZmxvdy15OmF1dG87cGFkZGluZzoxcHh9LlZJcGdKZC15QVdORWItTDdsYmtiIHRleHRhcmVhOmZvY3Vze2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjMpO2JvcmRlcjoxcHggc29saWQgIzRkOTBmZTtvdXRsaW5lOm5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1JYkUwU3ttYXJnaW4tcmlnaHQ6MTBweH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwe21pbi1oZWlnaHQ6MjVweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cGFkZGluZy10b3A6OHB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwe21hcmdpbi1ib3R0b206NXB4O21hcmdpbi1ib3R0b206MH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dHtkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6NTRweDsqbWluLXdpZHRoOjcwcHg7Ym9yZGVyOjFweCBzb2xpZCAjZGNkY2RjO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzQ0NDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7aGVpZ2h0OjI3cHg7b3V0bGluZTowO3BhZGRpbmc6MCA4cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjI3cHg7bWFyZ2luOjAgMTZweCAwIDA7Ym94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuMSk7LW1vei1ib3gtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpO2JvcmRlci1yYWRpdXM6MnB4O3RyYW5zaXRpb246YWxsIC4yMThzO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2Y1ZjVmNSwjZjFmMWYxKTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmhvdmVye2JvcmRlcjoxcHggc29saWQgI2M2YzZjNjtjb2xvcjojMjIyO3RyYW5zaXRpb246YWxsIDBzO2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmODtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDphY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjYzZjNmM2O2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZjZmNmY2O2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjZmNmY2LCNmMWYxZjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmZvY3VzIC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LkFIbXV3ZSAuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDphY3RpdmUsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6Zm9jdXM6YWN0aXZle2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC41KX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dC5BSG11d2UsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlcjoxcHggc29saWQgIzRkOTBmZTt6LWluZGV4OjQhaW1wb3J0YW50fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LmdrNlNNZHtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCNlZWUsI2UwZTBlMCk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwuMSk7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2NvbG9yOiMzMzN9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZntjb2xvcjp3aGl0ZTtib3JkZXItY29sb3I6IzMwNzllZDtiYWNrZ3JvdW5kLWNvbG9yOiM0ZDkwZmU7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzQ3ODdlZCl9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZi5BSG11d2UgLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjphY3RpdmUsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjpob3ZlciAuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmZvY3Vze2JvcmRlci1jb2xvcjojMzA3OWVkO2JhY2tncm91bmQtY29sb3I6IzM1N2FlODtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjMzU3YWU4KX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmhvdmVye2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmYsMCAxcHggMXB4IHJnYmEoMCwwLDAsLjEpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZiwwIDFweCAxcHggcmdiYSgwLDAsMCwuMSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmLDAgMXB4IDFweCByZ2JhKDAsMCwwLC4xKX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmLkFIbXV3ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmZvY3VzLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0IC5WSXBnSmQteUFXTkViLVowQXJxZi1zRmVCcWY6aG92ZXIsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQuQUhtdXdlLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDpmb2N1cywuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDpob3Zlcntib3JkZXItY29sb3I6IzMwNzllZH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItbXJ4UGdle2NvbG9yOiM5OTk7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZn0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLVcwdkpvLWZtY21Te2NvbG9yOiM5OTk7Zm9udC1zaXplOjExcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZjttYXJnaW46MTVweCAwIDVweH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXUwcGpvZS1mbWNtU3tjb2xvcjojODAwO2Rpc3BsYXk6bm9uZTtmb250LXNpemU6OXB0fS5WSXBnSmQteUFXTkViLVZJcGdKZC1mbWNtUy1zbjU0UXtiYWNrZ3JvdW5kLWNvbG9yOiNjOWQ3ZjE7Ym94LXNoYWRvdzoycHggMnB4IDRweCAjOTlhO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQteGwwN09ie2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym94LXNoYWRvdzowIDJweCA0cHggIzk5YTttaW4td2lkdGg6MDtvdXRsaW5lOm5vbmU7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MjAwMH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQtajdMRmxie2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MnB4IDVweCA1cHg7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLXN0eWxlOm5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC14bDA3T2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYjpob3ZlcntiYWNrZ3JvdW5kOiNkZGR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC14bDA3T2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYiBoMXtmb250LXNpemU6MTAwJTtmb250LXdlaWdodDo3MDA7bWFyZ2luOjRweCAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQteGwwN09iIC5WSXBnSmQteUFXTkViLVZJcGdKZC1qN0xGbGIgc3Ryb25ne2NvbG9yOiMzNDVhYWR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVZJcGdKZC1lS201RmMtaEZzYm97dGV4dC1hbGlnbjpyaWdodDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6YXV0b30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYi1TSXNyVGQgLlZJcGdKZC15QVdORWItVklwZ0pkLWVLbTVGYy1oRnNib3t0ZXh0LWFsaWduOmxlZnQ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OmF1dG99LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVRWTHc5Yy1wcEhscmYtc241NFEsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtZm1jbVN7YmFja2dyb3VuZC1jb2xvcjojZjFlYTAwO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93OjNweCAzcHggNHB4IHJnYmEoMCwwLDAsLjUpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZjFlYTAwO2N1cnNvcjpwb2ludGVyO21hcmdpbjotMnB4IC0ycHggLTJweCAtM3B4O3BhZGRpbmc6MnB4IDJweCAycHggM3B4O3Bvc2l0aW9uOnJlbGF0aXZlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2NvbG9yOiMyMjJ9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtcGJUVFlle2NvbG9yOndoaXRlO3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2JhY2tncm91bmQtY29sb3I6I2M5ZDdmMTtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDstbW96LWJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7Ym94LXNoYWRvdzozcHggM3B4IDRweCByZ2JhKDAsMCwwLC41KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOi0ycHggLTJweCAtMnB4IC0zcHg7cGFkZGluZzoycHggMnB4IDNweCAzcHg7cG9zaXRpb246cmVsYXRpdmV9LlZJcGdKZC15QVdORWItTDdsYmtiIHNwYW46Zm9jdXN7b3V0bGluZTpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtRHlWREF7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmU7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO21hcmdpbjotMnB4O3BhZGRpbmc6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi15QVdORWItVFZMdzljLXNuNTRRLUx6WDNlZntib3JkZXItbGVmdDoycHggc29saWQgcmVkO21hcmdpbi1sZWZ0Oi0ycHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1UVkx3OWMtc241NFEtWUlBaUlie2JvcmRlci1yaWdodDoycHggc29saWQgcmVkO21hcmdpbi1yaWdodDotMnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJme3BhZGRpbmc6MnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21Te2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDJweCAzcHg7bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMzMzM7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O2JvcmRlci10b3A6MXB4IHNvbGlkICNjMGMwYzA7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246dG9wO2hlaWdodDoyMXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJvcmRlci1yYWRpdXM6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmhvdmVye2JvcmRlcjoxcHggc29saWQgI2I5YjliOTtib3JkZXItdG9wOjFweCBzb2xpZCAjYTBhMGEwO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmZvY3Vze2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjMpO291dGxpbmU6bm9uZTtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC1ZUHFqYmYtc0ZlQnFme2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDZweCAzcHg7bWFyZ2luOjAgMCAwIDJweDtoZWlnaHQ6MjFweH0uVklwZ0pkLXlBV05FYi1MN2xia2I+ZGl2e2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LWZhbWlseTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtVWQ3ZnJ7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtYWxpZ246ZW5kO2FsaWduLWl0ZW1zOmVuZDttYXJnaW46MTRweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLUl1aXpXYy1TSXNyVGR7bWFyZ2luLXJpZ2h0OjE0cHg7Y29sb3I6Izc0Nzc3NTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1JdWl6V2MtaTNqTThje21hcmdpbi1sZWZ0OjE0cHg7Y29sb3I6Izc0Nzc3NTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1rNzdJaWZ7bWFyZ2luOjAgMTZweCAxNnB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYXhBVjF7d2lkdGg6YXV0bztjb2xvcjojMWYxZjFmO2ZvbnQtc2l6ZToxNnB4O3RleHQtYWxpZ246aW5pdGlhbH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWF4QVYxIC5WSXBnSmQteUFXTkViLVNJc3JUZHt0ZXh0LWFsaWduOnJpZ2h0fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlke2JvcmRlci1yYWRpdXM6MCAwIDEycHggMTJweDttYXJnaW46MDtiYWNrZ3JvdW5kOiNmMWY0Zjk7cG9zaXRpb246cmVsYXRpdmU7bWluLWhlaWdodDo1MHB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkIC5WSXBnSmQteUFXTkViLVNJc3JUZHt0ZXh0LWFsaWduOnJpZ2h0fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkLUI3STRPZHtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1vcmllbnQ6dmVydGljYWw7LW1vei1ib3gtZGlyZWN0aW9uOm5vcm1hbDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6NzclO3BhZGRpbmc6MTJweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLU43RXFpZC1CN0k0T2QgLlZJcGdKZC15QVdORWItU0lzclRke3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1VVHVqQ2J7Y29sb3I6IzFmMWYxZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9kIC5WSXBnSmQteUFXTkViLVNJc3JUZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtVVR1akNie3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1lTzltS2V7Y29sb3I6IzQ0NDc0Njtmb250LXNpemU6MTJweDtwYWRkaW5nLXRvcDo0cHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9kIC5WSXBnSmQteUFXTkViLVNJc3JUZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtZU85bUtle3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC14Z292NXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTBweDtyaWdodDo1cHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC14Z292NSAuVklwZ0pkLXlBV05FYi1TSXNyVGR7bGVmdDo1cHg7cmlnaHQ6YXV0b30uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLVRISTZWYntmaWxsOiMwYjU3ZDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1iZ202c2Z7bWFyZ2luOi00cHggMnB4IDAgMDtwYWRkaW5nOjJweCAwIDA7d2lkdGg6NDhweDtoZWlnaHQ6NDhweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjI0cHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDpub25lfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYmdtNnNmOmhvdmVye2JhY2tncm91bmQ6I2U4ZWJlY30uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWFYWVRjZXtkaXNwbGF5Om5vbmV9c2VudGluZWx7fQ=="}},"time_used":16,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.google.com/gen204?sl=en\u0026nca=te_ap\u0026client=te\u0026logld=vTE_20260722","fqdn":"translate.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.178.78","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.874Z","timestamp":1785128399874,"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":"*.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:35 GMT","end":"Mon, 21 Sep 2026 08:37:34 GMT"},"fingerprint":{"sha1":"2F:20:3B:91:88:65:20:CD:06:9D:0C:58:4D:17:6F:FC:9D:EC:41:83","sha256":"0C:7B:D3:23:E9:5B:D6:6B:F2:5C:71:91:4D:41:CE:E6:D7:1F:A2:F2:63:BA:25:70:1D:00:F3:C0:72:21:51:6D"}}},"request":{"raw":"GET /gen204?sl=en\u0026nca=te_ap\u0026client=te\u0026logld=vTE_20260722 HTTP/1.1\r\nHost: translate.google.com\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: image/gif; charset=utf-8\r\ncache-control: no-cache, no-store, max-age=0, must-revalidate\r\npragma: no-cache\r\nexpires: Mon, 01 Jan 1990 00:00:00 GMT\r\ndate: Mon, 27 Jul 2026 05:00:00 GMT\r\ncross-origin-resource-policy: cross-origin\r\np3p: CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"\r\ncontent-security-policy: script-src 'nonce-IVdMuirV1u_15aXClbc12g' 'unsafe-inline';object-src 'none';base-uri 'self';report-uri /_/TranslateApiHttp/cspreport;worker-src 'self', require-trusted-types-for 'script';report-uri /_/TranslateApiHttp/cspreport\r\naccept-ch: Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-WoW64, Sec-CH-UA-Form-Factors, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version\r\ncross-origin-opener-policy: same-origin\r\npermissions-policy: ch-ua-arch=*, ch-ua-bitness=*, ch-ua-full-version=*, ch-ua-full-version-list=*, ch-ua-model=*, ch-ua-wow64=*, ch-ua-form-factors=*, ch-ua-platform=*, ch-ua-platform-version=*\r\nreporting-endpoints: default=\"/_/TranslateApiHttp/web-reports?context=eJzj4tDikmLw05BiEOLmuHB69mU2gRUXn4gqKSXlF8aXFCXmFecklqQWpxaVpRbFGxkYmRmYGxnpGRjHFxgAABA-EnU\"\r\nserver: ESF\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nset-cookie: __Secure-ENID=35.SE=D_k_GuN6ntUwWgGTqoRO7FbcYgFrlMNsQWBwm0A_K1RKSdbAWcsZH3BbLaARfMd_cF9cjD9pZp4ZEDy_J3eDKvAegHm3ZNSww642lzLMaTdA73t95dJ4MRhM8YrmEnirdaZbkinAJtgUeb-G_AdimtH7o0E_6EBH2_L-bOwM0KJagdqoSxvtNlh0B1SeR2vFS7grCM-Op_8wIs16ZCubDBDqqk7P0mdMQIl0sIBhtaUS; expires=Thu, 26-Aug-2027 21:18:18 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"image/gif; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T18:39:14.176312Z","times_seen":17567823,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/header-footer-elementor/assets/css/header-footer-elementor378f.css?ver=1.6.22","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.761Z","timestamp":1785128398761,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/header-footer-elementor/assets/css/header-footer-elementor378f.css?ver=1.6.22 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 257\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"30f-67c3620e-3c8bd3afecedd8af;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: c472d3b219b6ae05219b31640b7630b1-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":783,"size_decoded":827,"mime_type":"text/css","magic":"ASCII text","md5":"b12e91d337f924e4d512a08eb38a2918","sha1":"6fa7f5325a6f3f4b3e9361e0e831ad0e1d939d3e","sha256":"3b91ba3e29603d277073967a26743566b0df1fe6f89d27f193400e3238b63f10","sha512":"26adddb9b10520f084d8e4787136f03b0d0b4476274cc1aaa3886869042acbd33cb02dfdd314b712e94463a9de1e9c752a200399f3ab4d3fe6fa828363c06157","ssdeep":"","tlshash":"6d019024b19eb56512318c24f565857cb1be81075b0599a275ecd19bfbce740c02d6c4","first_seen":"2025-07-04T20:26:13.145661Z","last_seen":"2026-07-27T05:30:59.827757Z","times_seen":11,"resource_available":false,"data":"LmZvb3Rlci13aWR0aC1maXhlciB7CiAgICB3aWR0aDogMTAwJTsKfQoKLyogQ29udGFpbmVyIGZpeCBmb3IgZ2VuZXNpcyB0aGVtZXMgKi8KCi5laGYtdGVtcGxhdGUtZ2VuZXNpcy5laGYtaGVhZGVyIC5zaXRlLWhlYWRlciAud3JhcCwKLmVoZi10ZW1wbGF0ZS1nZW5lc2lzLmVoZi1mb290ZXIgLnNpdGUtZm9vdGVyIC53cmFwLAouZWhmLXRlbXBsYXRlLWdlbmVyYXRlcHJlc3MuZWhmLWhlYWRlciAuc2l0ZS1oZWFkZXIgLmluc2lkZS1oZWFkZXIgewogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAwOwogICAgbWF4LXdpZHRoOiAxMDAlOwp9CgovKiBDb250YWluZXIgZml4IGZvciBnZW5lcmF0ZXByZXNzIHRoZW1lICovCgouZWhmLXRlbXBsYXRlLWdlbmVyYXRlcHJlc3MuZWhmLWhlYWRlciAuc2l0ZS1oZWFkZXIsCi5laGYtdGVtcGxhdGUtZ2VuZXJhdGVwcmVzcy5laGYtZm9vdGVyIC5zaXRlLWZvb3RlciB7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgLyogb3ZlcnJpZGUgZ2VuZXJhdGVwcmVzcyBkZWZhdWx0IHdoaXRlIGNvbG9yIGZvciBoZWFkZXIgKi8KfQoKLmJoZi1oaWRkZW4gewogICAgZGlzcGxheTogbm9uZQp9CgovKiBGaXg6IEhlYWRlciBoaWRkZW4gYmVsb3cgdGhlIHBhZ2UgY29udGVudCAqLwoKLmVoZi1oZWFkZXIgI21hc3RoZWFkIHsKICAgIHotaW5kZXg6IDk5OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9"}},"time_used":49,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":49,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/header-footer-elementor/inc/js/frontend.js","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.818Z","timestamp":1785128398818,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/header-footer-elementor/inc/js/frontend.js HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 3426\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"8086-67c3620e-e6db9e170774b39;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 30a692c2066f9b8c904c2611bdbb0bb6-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":32902,"size_decoded":4013,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text","md5":"3795fe978ac942853382ac785c65ce0c","sha1":"e91c9e696ce04456b44d04065c87cc5482b147f3","sha256":"5259252aa576fa67ab78c1b54a39c090391f5f96998d14fd4767d25210b341eb","sha512":"c1670f7293d1f7cb7c02884404e36307cc7fe3086358747afac9a69a01556213753650a4c0d818e60e20415536b3a4d88d570f7384177a8f81ecd27e0ff2c6da","ssdeep":"192:85w33nAI6LNlyurLDvQaNZLVnnEhIHTEUBGESCuy6rJRvCAd7UQXN10dnNiYGUf9:dAK8FFnfed4QXN81eEL","tlshash":"8ae2008935e71031603f3a6fa6ebc09c73164067c5169a5cbdac45e85fe0a1473f2eba","first_seen":"2025-07-04T20:26:13.202425Z","last_seen":"2026-07-27T05:30:59.809236Z","times_seen":7,"resource_available":true,"data":"KGZ1bmN0aW9uKCQpIHsKCiAgICAvKioKICAgICAqIFNlYXJjaCB3aWRnZXQgSlMKICAgICAqLwoKICAgIHZhciBXaWRnZXRoZmVTZWFyY2hCdXR0b24gPSBmdW5jdGlvbigkc2NvcGUsICQpIHsKCiAgICAgICAgaWYgKCd1bmRlZmluZWQnID09IHR5cGVvZiAkc2NvcGUpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgdmFyICRpbnB1dCA9ICRzY29wZS5maW5kKCJpbnB1dC5oZmUtc2VhcmNoLWZvcm1fX2lucHV0Iik7CiAgICAgICAgdmFyICRjbGVhciA9ICRzY29wZS5maW5kKCJidXR0b24jY2xlYXIiKTsKICAgICAgICB2YXIgJGNsZWFyX3dpdGhfYnV0dG9uID0gJHNjb3BlLmZpbmQoImJ1dHRvbiNjbGVhci13aXRoLWJ1dHRvbiIpOwogICAgICAgIHZhciAkc2VhcmNoX2J1dHRvbiA9ICRzY29wZS5maW5kKCIuaGZlLXNlYXJjaC1zdWJtaXQiKTsKICAgICAgICB2YXIgJHRvZ2dsZV9zZWFyY2ggPSAkc2NvcGUuZmluZCgiLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUgaW5wdXQiKTsKCiAgICAgICAgJHNjb3BlLmZpbmQoJy5oZmUtc2VhcmNoLWljb24tdG9nZ2xlJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICRzY29wZS5maW5kKCIuaGZlLXNlYXJjaC1mb3JtX19pbnB1dCIpLnRyaWdnZXIoJ2ZvY3VzJyk7CiAgICAgICAgfSk7CgogICAgICAgICRzY29wZS5maW5kKCIuaGZlLXNlYXJjaC1mb3JtX19pbnB1dCIpLm9uKCdmb2N1cycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkc2NvcGUuZmluZCgiLmhmZS1zZWFyY2gtYnV0dG9uLXdyYXBwZXIiKS5hZGRDbGFzcygiaGZlLWlucHV0LWZvY3VzIik7CiAgICAgICAgfSk7CgogICAgICAgICRzY29wZS5maW5kKCIuaGZlLXNlYXJjaC1mb3JtX19pbnB1dCIpLmJsdXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICRzY29wZS5maW5kKCIuaGZlLXNlYXJjaC1idXR0b24td3JhcHBlciIpLnJlbW92ZUNsYXNzKCJoZmUtaW5wdXQtZm9jdXMiKTsKICAgICAgICB9KTsKCgogICAgICAgICRzZWFyY2hfYnV0dG9uLm9uKCd0b3VjaHN0YXJ0IGNsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICRpbnB1dC5zdWJtaXQoKTsKICAgICAgICB9KTsKCiAgICAgICAgJHRvZ2dsZV9zZWFyY2guY3NzKCdwYWRkaW5nLXJpZ2h0JywgJHRvZ2dsZV9zZWFyY2gubmV4dCgpLm91dGVyV2lkdGgoKSArICdweCcpOwoKCiAgICAgICAgJGlucHV0Lm9uKCdrZXl1cCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkY2xlYXIuc3R5bGUgPSAodGhpcy52YWx1ZS5sZW5ndGgpID8gJGNsZWFyLmNzcygndmlzaWJpbGl0eScsICd2aXNpYmxlJykgOiAkY2xlYXIuY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpOwogICAgICAgICAgICAkY2xlYXJfd2l0aF9idXR0b24uc3R5bGUgPSAodGhpcy52YWx1ZS5sZW5ndGgpID8gJGNsZWFyX3dpdGhfYnV0dG9uLmNzcygndmlzaWJpbGl0eScsICd2aXNpYmxlJykgOiAkY2xlYXJfd2l0aF9idXR0b24uY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpOwogICAgICAgICAgICAkY2xlYXJfd2l0aF9idXR0b24uY3NzKCdyaWdodCcsICRzZWFyY2hfYnV0dG9uLm91dGVyV2lkdGgoKSArICdweCcpOwogICAgICAgIH0pOwoKICAgICAgICAkY2xlYXIub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuc3R5bGUgPSAkY2xlYXIuY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpOwogICAgICAgICAgICAkaW5wdXQudmFsdWUgPSAiIjsKICAgICAgICB9KTsKICAgICAgICAkY2xlYXJfd2l0aF9idXR0b24ub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuc3R5bGUgPSAkY2xlYXJfd2l0aF9idXR0b24uY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpOwogICAgICAgICAgICAkaW5wdXQudmFsdWUgPSAiIjsKICAgICAgICB9KTsKCiAgICB9OwogICAgLyoqCiAgICAgKiBOYXYgTWVudSBoYW5kbGVyIEZ1bmN0aW9uLgogICAgICoKICAgICAqLwogICAgdmFyIFdpZGdldGhmZU5hdk1lbnVIYW5kbGVyID0gZnVuY3Rpb24oJHNjb3BlLCAkKSB7CgogICAgICAgIGlmICgndW5kZWZpbmVkJyA9PSB0eXBlb2YgJHNjb3BlKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIHZhciBpZCA9ICRzY29wZS5kYXRhKCdpZCcpOwogICAgICAgIHZhciB3cmFwcGVyID0gJHNjb3BlLmZpbmQoJy5lbGVtZW50b3Itd2lkZ2V0LWhmZS1uYXYtbWVudSAnKTsKICAgICAgICB2YXIgbGF5b3V0ID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudScpLmRhdGEoJ2xheW91dCcpOwogICAgICAgIHZhciBmbHlvdXRfZGF0YSA9ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtZmx5b3V0LXdyYXBwZXInKS5kYXRhKCdmbHlvdXQtY2xhc3MnKTsKICAgICAgICB2YXIgbGFzdF9pdGVtID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudScpLmRhdGEoJ2xhc3QtaXRlbScpOwogICAgICAgIHZhciBsYXN0X2l0ZW1fZmx5b3V0ID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1mbHlvdXQtd3JhcHBlcicpLmRhdGEoJ2xhc3QtaXRlbScpOwoKICAgICAgICB2YXIgbWVudV9pdGVtc19saW5rcyA9ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbmF2LW1lbnUgbmF2IGxpIGEnKTsKICAgICAgICB2YXIgbWVudV9pdGVtc19saW5rc19mbHlvdXQgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLWZseW91dC13cmFwcGVyIGxpIGEnKTsKICAgICAgICBpZiAobWVudV9pdGVtc19saW5rcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIF9oYW5kbGVfY3VycmVudF9tZW51X2l0ZW1fY2xhc3MobWVudV9pdGVtc19saW5rcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAobWVudV9pdGVtc19saW5rc19mbHlvdXQubGVuZ3RoID4gMCkgewogICAgICAgICAgICBfaGFuZGxlX2N1cnJlbnRfbWVudV9pdGVtX2NsYXNzKG1lbnVfaXRlbXNfbGlua3NfZmx5b3V0KTsKICAgICAgICB9CgogICAgICAgICQoJ2Rpdi5oZmUtaGFzLXN1Ym1lbnUtY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoJ3N1Yi1tZW51LWFjdGl2ZScpOwoKICAgICAgICBfdG9nZ2xlQ2xpY2soaWQpOwoKICAgICAgICBfaGFuZGxlUG9seWxhbmdTd2l0Y2hlcigkc2NvcGUpOwoKICAgICAgICBfaGFuZGxlU2luZ2xlUGFnZU1lbnUoaWQsIGxheW91dCk7CgogICAgICAgIGlmICgnaG9yaXpvbnRhbCcgIT09IGxheW91dCkgewoKICAgICAgICAgICAgX2V2ZW50Q2xpY2soaWQpOwogICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiA3NjdweCApIikubWF0Y2hlcykgewoKICAgICAgICAgICAgX2V2ZW50Q2xpY2soaWQpOwogICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgIF9ldmVudENsaWNrKGlkKTsKICAgICAgICB9CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtZmx5b3V0LXRyaWdnZXIgLmhmZS1uYXYtbWVudS1pY29uJykub2ZmKCdjbGljayBrZXl1cCcpLm9uKCdjbGljayBrZXl1cCcsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgX29wZW5NZW51KGlkKTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1mbHlvdXQtY2xvc2UnKS5vZmYoJ2NsaWNrIGtleXVwJykub24oJ2NsaWNrIGtleXVwJywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICBfY2xvc2VNZW51KGlkKTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1mbHlvdXQtb3ZlcmxheScpLm9mZignY2xpY2snKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIF9jbG9zZU1lbnUoaWQpOwogICAgICAgIH0pOwoKCiAgICAgICAgJHNjb3BlLmZpbmQoJy5zdWItbWVudScpLmVhY2goZnVuY3Rpb24oKSB7CgogICAgICAgICAgICB2YXIgcGFyZW50ID0gJCh0aGlzKS5jbG9zZXN0KCcubWVudS1pdGVtJyk7CgogICAgICAgICAgICAkc2NvcGUuZmluZChwYXJlbnQpLmFkZENsYXNzKCdwYXJlbnQtaGFzLWNoaWxkJyk7CiAgICAgICAgICAgICRzY29wZS5maW5kKHBhcmVudCkucmVtb3ZlQ2xhc3MoJ3BhcmVudC1oYXMtbm8tY2hpbGQnKTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKCgnY3RhJyA9PSBsYXN0X2l0ZW0gfHwgJ2N0YScgPT0gbGFzdF9pdGVtX2ZseW91dCkgJiYgJ2V4cGFuZGlibGUnICE9IGxheW91dCkgewogICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBsaS5tZW51LWl0ZW06bGFzdC1jaGlsZCBhLmhmZS1tZW51LWl0ZW0nKS5wYXJlbnQoKS5hZGRDbGFzcygnZWxlbWVudG9yLWJ1dHRvbi13cmFwcGVyJyk7CiAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGxpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLmFkZENsYXNzKCdlbGVtZW50b3ItYnV0dG9uJyk7CiAgICAgICAgfQoKICAgICAgICBfYm9yZGVyQ2xhc3MoaWQpOwoKICAgICAgICAkKHdpbmRvdykub24oJ3Jlc2l6ZScsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgaWYgKCdob3Jpem9udGFsJyAhPT0gbGF5b3V0KSB7CgogICAgICAgICAgICAgICAgX2V2ZW50Q2xpY2soaWQpOwogICAgICAgICAgICB9IGVsc2UgaWYgKCdob3Jpem9udGFsJyA9PT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgICAgICBfZXZlbnRDbGljayhpZCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgICAgICBfZXZlbnRDbGljayhpZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgnaG9yaXpvbnRhbCcgPT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1pbi13aWR0aDogOTc3cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBkaXYuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lcicpLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgnZXhwYW5kaWJsZScgPT0gbGF5b3V0IHx8ICdmbHlvdXQnID09IGxheW91dCkgewoKICAgICAgICAgICAgICAgIF90b2dnbGVDbGljayhpZCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJ3ZlcnRpY2FsJyA9PSBsYXlvdXQgfHwgJ2hvcml6b250YWwnID09IGxheW91dCkgewogICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMgJiYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUnKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgX3RvZ2dsZUNsaWNrKGlkKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMgJiYgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQnKSkgewoKICAgICAgICAgICAgICAgICAgICBfdG9nZ2xlQ2xpY2soaWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBfYm9yZGVyQ2xhc3MoaWQpOwoKICAgICAgICB9KTsKCiAgICAgICAgLy8gQWNlc3NpYmlsaXR5IGZ1bmN0aW9ucwoKICAgICAgICAkc2NvcGUuZmluZCgnLnBhcmVudC1oYXMtY2hpbGQgLmhmZS1oYXMtc3VibWVudS1jb250YWluZXIgYScpLmF0dHIoJ2FyaWEtaGFzcG9wdXAnLCAndHJ1ZScpOwogICAgICAgICRzY29wZS5maW5kKCcucGFyZW50LWhhcy1jaGlsZCAuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lciBhJykuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwoKICAgICAgICB2YXIgaGVmX25hdm1lbnVfdG9nZ2xlID0gJHNjb3BlLmZpbmQoJy5oZmUtbmF2LW1lbnVfX3RvZ2dsZScpOwogICAgICAgIGhlZl9uYXZtZW51X3RvZ2dsZS5hdHRyKCdhcmlhLWhhc3BvcHVwJywgJ3RydWUnKTsKICAgICAgICBoZWZfbmF2bWVudV90b2dnbGUuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwoKICAgICAgICBpZiAod2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMgJiYgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQnKSkgewogICAgICAgICAgICBoZWZfbmF2bWVudV90b2dnbGUuZmluZCgnaScpLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7CiAgICAgICAgfQogICAgICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYSgiKCBtYXgtd2lkdGg6IDc2OHB4ICkiKS5tYXRjaGVzICYmICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlJykpIHsKICAgICAgICAgICAgaGVmX25hdm1lbnVfdG9nZ2xlLmZpbmQoJ2knKS5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5kIG9mIGFjY2Vzc2liaWxpdHkgZnVuY3Rpb25zCgogICAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoJ2hmZV9uYXZfbWVudV9pbml0JywgaWQpOwoKICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBkaXYuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lcicpLm9uKCdrZXl1cCcsIGZ1bmN0aW9uKGUpIHsKCiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMucGFyZW50KCkuaGFzQ2xhc3MoJ21lbnUtYWN0aXZlJykpIHsKCiAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5yZW1vdmVDbGFzcygnbWVudS1hY3RpdmUnKTsKCiAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5uZXh0KCkuZmluZCgndWwnKS5jc3MoewogICAgICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5JzogJ2hpZGRlbicsCiAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknOiAnMCcsCiAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCc6ICcwJwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5wcmV2KCkuZmluZCgndWwnKS5jc3MoewogICAgICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5JzogJ2hpZGRlbicsCiAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknOiAnMCcsCiAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCc6ICcwJwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkubmV4dCgpLmZpbmQoJ2Rpdi5oZmUtaGFzLXN1Ym1lbnUtY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoJ3N1Yi1tZW51LWFjdGl2ZScpOwogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucHJldigpLmZpbmQoJ2Rpdi5oZmUtaGFzLXN1Ym1lbnUtY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoJ3N1Yi1tZW51LWFjdGl2ZScpOwogICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLm5leHQoKS5maW5kKCd1bCcpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAnaGlkZGVuJywKICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogJzAnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnByZXYoKS5maW5kKCd1bCcpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAnaGlkZGVuJywKICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogJzAnCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5uZXh0KCkuZmluZCgnZGl2LmhmZS1oYXMtc3VibWVudS1jb250YWluZXInKS5yZW1vdmVDbGFzcygnc3ViLW1lbnUtYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5wcmV2KCkuZmluZCgnZGl2LmhmZS1oYXMtc3VibWVudS1jb250YWluZXInKS5yZW1vdmVDbGFzcygnc3ViLW1lbnUtYWN0aXZlJyk7CgogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkuc2libGluZ3MoKS5maW5kKCcuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lciBhJykuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwoKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLm5leHQoKS5yZW1vdmVDbGFzcygnbWVudS1hY3RpdmUnKTsKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnByZXYoKS5yZW1vdmVDbGFzcygnbWVudS1hY3RpdmUnKTsKCiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLmFkZENsYXNzKCdtZW51LWFjdGl2ZScpOwoKICAgICAgICAgICAgICAgIGlmICgnaG9yaXpvbnRhbCcgIT09IGxheW91dCkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdzdWItbWVudS1hY3RpdmUnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy5maW5kKCdhJykuYXR0cignYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7CgogICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAndmlzaWJsZScsCiAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknOiAnMScsCiAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCc6ICdhdXRvJwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgaWYgKCdob3Jpem9udGFsJyAhPT0gbGF5b3V0KSB7CgogICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdob3Jpem9udGFsJyA9PT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMgJiYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUnKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbm9uZScpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5uZXh0KCkuY3NzKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBsaS5tZW51LWl0ZW0nKS5vbigna2V5dXAnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CgogICAgICAgICAgICAkdGhpcy5uZXh0KCkuZmluZCgnYScpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTsKICAgICAgICAgICAgJHRoaXMucHJldigpLmZpbmQoJ2EnKS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7CgogICAgICAgICAgICAkdGhpcy5uZXh0KCkuZmluZCgndWwnKS5jc3MoewogICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAnaGlkZGVuJywKICAgICAgICAgICAgICAgICdvcGFjaXR5JzogJzAnLAogICAgICAgICAgICAgICAgJ2hlaWdodCc6ICcwJwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJHRoaXMucHJldigpLmZpbmQoJ3VsJykuY3NzKHsKICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5JzogJ2hpZGRlbicsCiAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICdoZWlnaHQnOiAnMCcKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkdGhpcy5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKCdtZW51LWFjdGl2ZScpOwogICAgICAgICAgICAkdGhpcy5uZXh0KCkuZmluZCgnZGl2LmhmZS1oYXMtc3VibWVudS1jb250YWluZXInKS5yZW1vdmVDbGFzcygnc3ViLW1lbnUtYWN0aXZlJyk7CiAgICAgICAgICAgICR0aGlzLnByZXYoKS5maW5kKCdkaXYuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCdzdWItbWVudS1hY3RpdmUnKTsKCiAgICAgICAgfSk7CiAgICB9OwoKICAgIGZ1bmN0aW9uIF9oYW5kbGVfY3VycmVudF9tZW51X2l0ZW1fY2xhc3MobGF5b3V0X2xpbmtzKSB7CiAgICAgICAgbGF5b3V0X2xpbmtzLmVhY2goCiAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy5pcygnW2hyZWYqPSIjIl0nKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBtZW51X2l0ZW1fcGFyZW50ID0gJHRoaXMucGFyZW50KCk7CiAgICAgICAgICAgICAgICAgICAgbWVudV9pdGVtX3BhcmVudC5yZW1vdmVDbGFzcygnY3VycmVudC1tZW51LWl0ZW0gY3VycmVudC1tZW51LWFuY2VzdG9yJyk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2xpY2soCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRfaW5kZXggPSBtZW51X2l0ZW1fcGFyZW50LmluZGV4KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X2VsZW1lbnQgPSAkdGhpcy5jbG9zZXN0KCd1bCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X2VsZW1lbnQuZmluZCgnbGknKS5ub3QoJzplcSgnICsgY3VycmVudF9pbmRleCArICcpJykucmVtb3ZlQ2xhc3MoJ2N1cnJlbnQtbWVudS1pdGVtIGN1cnJlbnQtbWVudS1hbmNlc3RvcicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9pdGVtX3BhcmVudC5hZGRDbGFzcygnY3VycmVudC1tZW51LWl0ZW0gY3VycmVudC1tZW51LWFuY2VzdG9yJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfQoKICAgIGZ1bmN0aW9uIF9vcGVuTWVudShpZCkgewoKICAgICAgICB2YXIgZmx5b3V0X2NvbnRlbnQgPSAkKCcjaGZlLWZseW91dC1jb250ZW50LWlkLScgKyBpZCk7CiAgICAgICAgdmFyIGxheW91dCA9ICQoJyNoZmUtZmx5b3V0LWNvbnRlbnQtaWQtJyArIGlkKS5kYXRhKCdsYXlvdXQnKTsKICAgICAgICB2YXIgbGF5b3V0X3R5cGUgPSAkKCcjaGZlLWZseW91dC1jb250ZW50LWlkLScgKyBpZCkuZGF0YSgnZmx5b3V0LXR5cGUnKTsKICAgICAgICB2YXIgd3JhcF93aWR0aCA9IGZseW91dF9jb250ZW50LndpZHRoKCkgKyAncHgnOwogICAgICAgIHZhciBjb250YWluZXIgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLWZseW91dC1jb250YWluZXIgLmhmZS1zaWRlLmhmZS1mbHlvdXQtJyArIGxheW91dCk7CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtZmx5b3V0LW92ZXJsYXknKS5mYWRlSW4oMTAwKTsKCiAgICAgICAgaWYgKCdsZWZ0JyA9PSBsYXlvdXQpIHsKCiAgICAgICAgICAgICQoJ2JvZHknKS5jc3MoJ21hcmdpbi1sZWZ0JywgJzAnKTsKICAgICAgICAgICAgY29udGFpbmVyLmNzcygnbGVmdCcsICcwJyk7CgogICAgICAgICAgICBpZiAoJ3B1c2gnID09IGxheW91dF90eXBlKSB7CgogICAgICAgICAgICAgICAgJCgnYm9keScpLmFkZENsYXNzKCdoZmUtZmx5b3V0LWFuaW1hdGluZycpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgICAgICAgICAgICAgICAnbWFyZ2luLWxlZnQnOiB3cmFwX3dpZHRoLAogICAgICAgICAgICAgICAgICAgICdtYXJnaW4tcmlnaHQnOiAnYXV0bycKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIuYWRkQ2xhc3MoJ2hmZS1mbHlvdXQtc2hvdycpOwogICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAkKCdib2R5JykuY3NzKCdtYXJnaW4tcmlnaHQnLCAnMCcpOwogICAgICAgICAgICBjb250YWluZXIuY3NzKCdyaWdodCcsICcwJyk7CgogICAgICAgICAgICBpZiAoJ3B1c2gnID09IGxheW91dF90eXBlKSB7CgogICAgICAgICAgICAgICAgJCgnYm9keScpLmFkZENsYXNzKCdoZmUtZmx5b3V0LWFuaW1hdGluZycpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgICAgICAgICAgICAgICAnbWFyZ2luLWxlZnQnOiAnLScgKyB3cmFwX3dpZHRoLAogICAgICAgICAgICAgICAgICAgICdtYXJnaW4tcmlnaHQnOiAnYXV0bycsCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyLmFkZENsYXNzKCdoZmUtZmx5b3V0LXNob3cnKTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gX2Nsb3NlTWVudShpZCkgewoKICAgICAgICB2YXIgZmx5b3V0X2NvbnRlbnQgPSAkKCcjaGZlLWZseW91dC1jb250ZW50LWlkLScgKyBpZCk7CiAgICAgICAgdmFyIGxheW91dCA9ICQoJyNoZmUtZmx5b3V0LWNvbnRlbnQtaWQtJyArIGlkKS5kYXRhKCdsYXlvdXQnKTsKICAgICAgICB2YXIgd3JhcF93aWR0aCA9IGZseW91dF9jb250ZW50LndpZHRoKCkgKyAncHgnOwogICAgICAgIHZhciBsYXlvdXRfdHlwZSA9ICQoJyNoZmUtZmx5b3V0LWNvbnRlbnQtaWQtJyArIGlkKS5kYXRhKCdmbHlvdXQtdHlwZScpOwogICAgICAgIHZhciBjb250YWluZXIgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLWZseW91dC1jb250YWluZXIgLmhmZS1zaWRlLmhmZS1mbHlvdXQtJyArIGxheW91dCk7CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtZmx5b3V0LW92ZXJsYXknKS5mYWRlT3V0KDEwMCk7CgogICAgICAgIGlmICgnbGVmdCcgPT0gbGF5b3V0KSB7CgogICAgICAgICAgICBjb250YWluZXIuY3NzKCdsZWZ0JywgJy0nICsgd3JhcF93aWR0aCk7CgogICAgICAgICAgICBpZiAoJ3B1c2gnID09IGxheW91dF90eXBlKSB7CgogICAgICAgICAgICAgICAgJCgnYm9keScpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICcnLAogICAgICAgICAgICAgICAgICAgICdtYXJnaW4tbGVmdCc6ICcnLAogICAgICAgICAgICAgICAgICAgICdtYXJnaW4tcmlnaHQnOiAnJywKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLnJlbW92ZUNsYXNzKCdoZmUtZmx5b3V0LWFuaW1hdGluZycpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnJywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIucmVtb3ZlQ2xhc3MoJ2hmZS1mbHlvdXQtc2hvdycpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnRhaW5lci5jc3MoJ3JpZ2h0JywgJy0nICsgd3JhcF93aWR0aCk7CgogICAgICAgICAgICBpZiAoJ3B1c2gnID09IGxheW91dF90eXBlKSB7CgogICAgICAgICAgICAgICAgJCgnYm9keScpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICcnLAogICAgICAgICAgICAgICAgICAgICdtYXJnaW4tcmlnaHQnOiAnJywKICAgICAgICAgICAgICAgICAgICAnbWFyZ2luLWxlZnQnOiAnJywKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLnJlbW92ZUNsYXNzKCdoZmUtZmx5b3V0LWFuaW1hdGluZycpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnJywKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDbGFzcygnaGZlLWZseW91dC1zaG93Jyk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIF9ldmVudENsaWNrKGlkKSB7CgogICAgICAgIHZhciBsYXlvdXQgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLW5hdi1tZW51JykuZGF0YSgnbGF5b3V0Jyk7CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGRpdi5oZmUtaGFzLXN1Ym1lbnUtY29udGFpbmVyJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGV2ZW50KSB7CgogICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwoKICAgICAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbGluay1yZWRpcmVjdC1jaGlsZCcpKSB7CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKCdzdWItbWVudS1hY3RpdmUnKSkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLm5leHQoKS5oYXNDbGFzcygnc3ViLW1lbnUtb3BlbicpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5maW5kKCdhJykuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdob3Jpem9udGFsJyAhPT0gbGF5b3V0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5uZXh0KCkuY3NzKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdob3Jpem9udGFsJyA9PT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMgJiYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUnKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMgJiYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUnKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdzdWItbWVudS1hY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykucmVtb3ZlQ2xhc3MoJ3N1Yi1tZW51LW9wZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5JzogJ2hpZGRlbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnOiAnMCcKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHRBbGwoJy5zdWItbWVudScpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbic6ICdub25lJwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuZmluZCgnYScpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdzdWItbWVudS1hY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykucmVtb3ZlQ2xhc3MoJ3N1Yi1tZW51LW9wZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5JzogJ2hpZGRlbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnOiAnMCcKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHRBbGwoJy5zdWItbWVudScpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbic6ICdub25lJwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnaG9yaXpvbnRhbCcgIT09IGxheW91dCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiA3NjdweCApIikubWF0Y2hlcyAmJiAoJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQnKSB8fCAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdob3Jpem9udGFsJyA9PT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogMTAyNHB4ICkiKS5tYXRjaGVzICYmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCcpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlJykpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLmNzcygncG9zaXRpb24nLCAnYWJzb2x1dGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICR0aGlzLmZpbmQoJ2EnKS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJ2hvcml6b250YWwnICE9PSBsYXlvdXQpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnaG9yaXpvbnRhbCcgPT09IGxheW91dCAmJiB3aW5kb3cubWF0Y2hNZWRpYSgiKCBtYXgtd2lkdGg6IDc2N3B4ICkiKS5tYXRjaGVzICYmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCcpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlJykpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5uZXh0KCkuY3NzKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LXRhYmxldCcpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbm9uZScpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLmNzcygncG9zaXRpb24nLCAnYWJzb2x1dGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoJ3N1Yi1tZW51LWFjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLm5leHRBbGwoJy5zdWItbWVudScpLmFkZENsYXNzKCdzdWItbWVudS1vcGVuJyk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAndmlzaWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICdvcGFjaXR5JzogJzEnLAogICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogJ2F1dG8nCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dEFsbCgnLnN1Yi1tZW51JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24nOiAnMC4zcyBlYXNlJwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbWVudS10b2dnbGUnKS5vZmYoJ2NsaWNrIGtleXVwJykub24oJ2NsaWNrIGtleXVwJywgZnVuY3Rpb24oZXZlbnQpIHsKCiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMucGFyZW50KCkucGFyZW50KCkuaGFzQ2xhc3MoJ21lbnUtYWN0aXZlJykpIHsKCiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdtZW51LWFjdGl2ZScpOwogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkubmV4dCgpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAnaGlkZGVuJywKICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eSc6ICcwJywKICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogJzAnCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBpZiAoJ2hvcml6b250YWwnICE9PSBsYXlvdXQpIHsKCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkubmV4dCgpLmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiA3NjdweCApIikubWF0Y2hlcyAmJiAoJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQnKSB8fCAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpKSkgewoKICAgICAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5wYXJlbnQoKS5uZXh0KCkuY3NzKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnaG9yaXpvbnRhbCcgPT09IGxheW91dCAmJiB3aW5kb3cubWF0Y2hNZWRpYSgiKCBtYXgtd2lkdGg6IDEwMjRweCApIikubWF0Y2hlcykgewoKICAgICAgICAgICAgICAgICAgICBpZiAoJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC10YWJsZXQnKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkubmV4dCgpLmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbW9iaWxlJykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lJykpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnBhcmVudCgpLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkuYWRkQ2xhc3MoJ21lbnUtYWN0aXZlJyk7CgogICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkubmV4dCgpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHknOiAndmlzaWJsZScsCiAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknOiAnMScsCiAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCc6ICdhdXRvJwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgaWYgKCdob3Jpem9udGFsJyAhPT0gbGF5b3V0KSB7CgogICAgICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnBhcmVudCgpLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdob3Jpem9udGFsJyA9PT0gbGF5b3V0ICYmIHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMgJiYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykgfHwgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuaGFzQ2xhc3MoJ2hmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUnKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucGFyZW50KCkubmV4dCgpLmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2hvcml6b250YWwnID09PSBsYXlvdXQgJiYgd2luZG93Lm1hdGNoTWVkaWEoIiggbWF4LXdpZHRoOiAxMDI0cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnBhcmVudCgpLm5leHQoKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtbm9uZScpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5wYXJlbnQoKS5uZXh0KCkuY3NzKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIF9ib3JkZXJDbGFzcyhpZCkgewoKICAgICAgICB2YXIgbGFzdF9pdGVtID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudScpLmRhdGEoJ2xhc3QtaXRlbScpOwogICAgICAgIHZhciBsYXN0X2l0ZW1fZmx5b3V0ID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1mbHlvdXQtd3JhcHBlcicpLmRhdGEoJ2xhc3QtaXRlbScpOwogICAgICAgIHZhciBsYXlvdXQgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLW5hdi1tZW51JykuZGF0YSgnbGF5b3V0Jyk7CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIG5hdicpLnJlbW92ZUNsYXNzKCdoZmUtZHJvcGRvd24nKTsKCiAgICAgICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhKCIoIG1heC13aWR0aDogNzY3cHggKSIpLm1hdGNoZXMpIHsKCiAgICAgICAgICAgIGlmICgkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5oYXNDbGFzcygnaGZlLW5hdi1tZW51X19icmVha3BvaW50LW1vYmlsZScpIHx8ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykpIHsKCiAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBuYXYnKS5hZGRDbGFzcygnaGZlLWRyb3Bkb3duJyk7CiAgICAgICAgICAgICAgICBpZiAoKCdjdGEnID09IGxhc3RfaXRlbSB8fCAnY3RhJyA9PSBsYXN0X2l0ZW1fZmx5b3V0KSAmJiAnZXhwYW5kaWJsZScgIT0gbGF5b3V0KSB7CiAgICAgICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbGkubWVudS1pdGVtOmxhc3QtY2hpbGQgYS5oZmUtbWVudS1pdGVtJykucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2VsZW1lbnRvci1idXR0b24td3JhcHBlcicpOwogICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGxpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLnJlbW92ZUNsYXNzKCdlbGVtZW50b3ItYnV0dG9uJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbmF2JykucmVtb3ZlQ2xhc3MoJ2hmZS1kcm9wZG93bicpOwogICAgICAgICAgICAgICAgaWYgKCgnY3RhJyA9PSBsYXN0X2l0ZW0gfHwgJ2N0YScgPT0gbGFzdF9pdGVtX2ZseW91dCkgJiYgJ2V4cGFuZGlibGUnICE9IGxheW91dCkgewogICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGxpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLnBhcmVudCgpLmFkZENsYXNzKCdlbGVtZW50b3ItYnV0dG9uLXdyYXBwZXInKTsKICAgICAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBsaS5tZW51LWl0ZW06bGFzdC1jaGlsZCBhLmhmZS1tZW51LWl0ZW0nKS5hZGRDbGFzcygnZWxlbWVudG9yLWJ1dHRvbicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cubWF0Y2hNZWRpYSgiKCBtYXgtd2lkdGg6IDEwMjRweCApIikubWF0Y2hlcykgewoKICAgICAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmhhc0NsYXNzKCdoZmUtbmF2LW1lbnVfX2JyZWFrcG9pbnQtdGFibGV0JykpIHsKCiAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBuYXYnKS5hZGRDbGFzcygnaGZlLWRyb3Bkb3duJyk7CiAgICAgICAgICAgICAgICBpZiAoKCdjdGEnID09IGxhc3RfaXRlbSB8fCAnY3RhJyA9PSBsYXN0X2l0ZW1fZmx5b3V0KSAmJiAnZXhwYW5kaWJsZScgIT0gbGF5b3V0KSB7CiAgICAgICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbGkubWVudS1pdGVtOmxhc3QtY2hpbGQgYS5oZmUtbWVudS1pdGVtJykucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2VsZW1lbnRvci1idXR0b24td3JhcHBlcicpOwogICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGxpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLnJlbW92ZUNsYXNzKCdlbGVtZW50b3ItYnV0dG9uJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbmF2JykucmVtb3ZlQ2xhc3MoJ2hmZS1kcm9wZG93bicpOwogICAgICAgICAgICAgICAgaWYgKCgnY3RhJyA9PSBsYXN0X2l0ZW0gfHwgJ2N0YScgPT0gbGFzdF9pdGVtX2ZseW91dCkgJiYgJ2V4cGFuZGlibGUnICE9IGxheW91dCkgewogICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIGxpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLnBhcmVudCgpLmFkZENsYXNzKCdlbGVtZW50b3ItYnV0dG9uLXdyYXBwZXInKTsKICAgICAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBsaS5tZW51LWl0ZW06bGFzdC1jaGlsZCBhLmhmZS1tZW51LWl0ZW0nKS5hZGRDbGFzcygnZWxlbWVudG9yLWJ1dHRvbicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyICRwYXJlbnRfZWxlbWVudCA9ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpOwogICAgICAgICAgICAkcGFyZW50X2VsZW1lbnQuZmluZCgnbmF2JykucmVtb3ZlQ2xhc3MoJ2hmZS1kcm9wZG93bicpOwogICAgICAgICAgICBpZiAoKCdjdGEnID09IGxhc3RfaXRlbSB8fCAnY3RhJyA9PSBsYXN0X2l0ZW1fZmx5b3V0KSAmJiAnZXhwYW5kaWJsZScgIT0gbGF5b3V0KSB7CiAgICAgICAgICAgICAgICAkcGFyZW50X2VsZW1lbnQuZmluZCgnbGkubWVudS1pdGVtOmxhc3QtY2hpbGQgYS5oZmUtbWVudS1pdGVtJykucGFyZW50KCkuYWRkQ2xhc3MoJ2VsZW1lbnRvci1idXR0b24td3JhcHBlcicpOwogICAgICAgICAgICAgICAgJHBhcmVudF9lbGVtZW50LmZpbmQoJ2xpLm1lbnUtaXRlbTpsYXN0LWNoaWxkIGEuaGZlLW1lbnUtaXRlbScpLmFkZENsYXNzKCdlbGVtZW50b3ItYnV0dG9uJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBsYXlvdXQgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLW5hdi1tZW51JykuZGF0YSgnbGF5b3V0Jyk7CiAgICAgICAgaWYgKCdleHBhbmRpYmxlJyA9PSBsYXlvdXQpIHsKICAgICAgICAgICAgaWYgKCgnY3RhJyA9PSBsYXN0X2l0ZW0gfHwgJ2N0YScgPT0gbGFzdF9pdGVtX2ZseW91dCkgJiYgJ2V4cGFuZGlibGUnICE9IGxheW91dCkgewogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbGkubWVudS1pdGVtOmxhc3QtY2hpbGQgYS5oZmUtbWVudS1pdGVtJykucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2VsZW1lbnRvci1idXR0b24td3JhcHBlcicpOwogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbGkubWVudS1pdGVtOmxhc3QtY2hpbGQgYS5oZmUtbWVudS1pdGVtJykucmVtb3ZlQ2xhc3MoJ2VsZW1lbnRvci1idXR0b24nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBfdG9nZ2xlQ2xpY2soaWQpIHsKCiAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZScpLmhhc0NsYXNzKCdoZmUtYWN0aXZlLW1lbnUtZnVsbC13aWR0aCcpKSB7CgogICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyAuaGZlLW5hdi1tZW51X190b2dnbGUnKS5uZXh0KCkuY3NzKCdsZWZ0JywgJzAnKTsKCiAgICAgICAgICAgIHZhciB3aWR0aCA9ICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQpLmNsb3Nlc3QoJy5lbGVtZW50b3Itc2VjdGlvbicpLm91dGVyV2lkdGgoKTsKICAgICAgICAgICAgdmFyIHNlY19wb3MgPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5jbG9zZXN0KCcuZWxlbWVudG9yLXNlY3Rpb24nKS5vZmZzZXQoKS5sZWZ0IC0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudV9fdG9nZ2xlJykubmV4dCgpLm9mZnNldCgpLmxlZnQ7CiAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZScpLm5leHQoKS5jc3MoJ3dpZHRoJywgd2lkdGggKyAncHgnKTsKICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudV9fdG9nZ2xlJykubmV4dCgpLmNzcygnbGVmdCcsIHNlY19wb3MgKyAncHgnKTsKICAgICAgICB9CgogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZScpLm9mZignY2xpY2sga2V5dXAnKS5vbignY2xpY2sga2V5dXAnLCBmdW5jdGlvbihldmVudCkgewoKICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgdmFyICRzZWxlY3RvciA9ICR0aGlzLm5leHQoKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy5oYXNDbGFzcygnaGZlLWFjdGl2ZS1tZW51JykpIHsKCiAgICAgICAgICAgICAgICB2YXIgbGF5b3V0ID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudScpLmRhdGEoJ2xheW91dCcpOwogICAgICAgICAgICAgICAgdmFyIGZ1bGxfd2lkdGggPSAkc2VsZWN0b3IuZGF0YSgnZnVsbC13aWR0aCcpOwogICAgICAgICAgICAgICAgdmFyIHRvZ2dsZV9pY29uID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbmF2JykuZGF0YSgndG9nZ2xlLWljb24nKTsKCiAgICAgICAgICAgICAgICAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkKS5maW5kKCcuaGZlLW5hdi1tZW51LWljb24nKS5odG1sKHRvZ2dsZV9pY29uKTsKCiAgICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcygnaGZlLWFjdGl2ZS1tZW51Jyk7CiAgICAgICAgICAgICAgICAkdGhpcy5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7CgogICAgICAgICAgICAgICAgaWYgKCd5ZXMnID09IGZ1bGxfd2lkdGgpIHsKCiAgICAgICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2hmZS1hY3RpdmUtbWVudS1mdWxsLXdpZHRoJyk7CgogICAgICAgICAgICAgICAgICAgICRzZWxlY3Rvci5jc3MoJ3dpZHRoJywgJ2F1dG8nKTsKICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3IuY3NzKCdsZWZ0JywgJzAnKTsKICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3IuY3NzKCd6LWluZGV4JywgJzAnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICB2YXIgbGF5b3V0ID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudScpLmRhdGEoJ2xheW91dCcpOwogICAgICAgICAgICAgICAgdmFyIGZ1bGxfd2lkdGggPSAkc2VsZWN0b3IuZGF0YSgnZnVsbC13aWR0aCcpOwogICAgICAgICAgICAgICAgdmFyIGNsb3NlX2ljb24gPSAkKCcuZWxlbWVudG9yLWVsZW1lbnQtJyArIGlkICsgJyBuYXYnKS5kYXRhKCdjbG9zZS1pY29uJyk7CgogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuZmluZCgnLmhmZS1uYXYtbWVudS1pY29uJykuaHRtbChjbG9zZV9pY29uKTsKCiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnaGZlLWFjdGl2ZS1tZW51Jyk7CiAgICAgICAgICAgICAgICAkdGhpcy5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTsKCiAgICAgICAgICAgICAgICBpZiAoJ3llcycgPT0gZnVsbF93aWR0aCkgewoKICAgICAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnaGZlLWFjdGl2ZS1tZW51LWZ1bGwtd2lkdGgnKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuY2xvc2VzdCgnLmVsZW1lbnRvci1zZWN0aW9uJykub3V0ZXJXaWR0aCgpOwogICAgICAgICAgICAgICAgICAgIHZhciBzZWNfcG9zID0gJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCkuY2xvc2VzdCgnLmVsZW1lbnRvci1zZWN0aW9uJykub2Zmc2V0KCkubGVmdCAtICRzZWxlY3Rvci5vZmZzZXQoKS5sZWZ0OwoKICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3IuY3NzKCd3aWR0aCcsIHdpZHRoICsgJ3B4Jyk7CiAgICAgICAgICAgICAgICAgICAgJHNlbGVjdG9yLmNzcygnbGVmdCcsIHNlY19wb3MgKyAncHgnKTsKICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3IuY3NzKCd6LWluZGV4JywgJzk5OTknKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIG5hdicpLmhhc0NsYXNzKCdtZW51LWlzLWFjdGl2ZScpKSB7CgogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbmF2JykucmVtb3ZlQ2xhc3MoJ21lbnUtaXMtYWN0aXZlJyk7CiAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgbmF2JykuYWRkQ2xhc3MoJ21lbnUtaXMtYWN0aXZlJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBfaGFuZGxlU2luZ2xlUGFnZU1lbnUoaWQsIGxheW91dCkgewogICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIHVsLmhmZS1uYXYtbWVudSBsaSBhJykub24oCiAgICAgICAgICAgICdjbGljaycsCiAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgIHZhciBsaW5rID0gJHRoaXMuYXR0cignaHJlZicpOwogICAgICAgICAgICAgICAgdmFyIGxpbmtWYWx1ZSA9ICcnOwogICAgICAgICAgICAgICAgaWYgKGxpbmsuaW5jbHVkZXMoJyMnKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGxpbmsuaW5kZXhPZignIycpOwogICAgICAgICAgICAgICAgICAgIGxpbmtWYWx1ZSA9IGxpbmsuc2xpY2UoaW5kZXggKyAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChsaW5rVmFsdWUubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIGlmICgnZXhwYW5kaWJsZScgPT0gbGF5b3V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbmF2LW1lbnVfX3RvZ2dsZScpLnRyaWdnZXIoImNsaWNrIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy5oYXNDbGFzcygnaGZlLXN1Yi1tZW51LWl0ZW0nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1tZW51LXRvZ2dsZScpLnRyaWdnZXIoImNsaWNrIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93Lm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6IDEwMjRweCknKS5tYXRjaGVzICYmICgnaG9yaXpvbnRhbCcgPT0gbGF5b3V0IHx8ICd2ZXJ0aWNhbCcgPT0gbGF5b3V0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1uYXYtbWVudV9fdG9nZ2xlJykudHJpZ2dlcigiY2xpY2siKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy5oYXNDbGFzcygnaGZlLXN1Yi1tZW51LWl0ZW0nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5lbGVtZW50b3ItZWxlbWVudC0nICsgaWQgKyAnIC5oZmUtbWVudS10b2dnbGUnKS50cmlnZ2VyKCJjbGljayIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKCdoZmUtc3ViLW1lbnUtaXRlbScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Nsb3NlTWVudShpZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmVsZW1lbnRvci1lbGVtZW50LScgKyBpZCArICcgLmhmZS1tZW51LXRvZ2dsZScpLnRyaWdnZXIoImNsaWNrIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xvc2VNZW51KGlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgcG9seWxhbmcgcGx1Z2luJ3MgbGFuZyBzd2l0Y2hlciBpZiBwcmVzZW50IGluIHRoZSBtZW51LgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0fSAkc2NvcGUgVGhlIGN1cnJlbnQgZWxlbWVudChoZmUgbmF2IG1lbnUpIHdyYXBwZWQgd2l0aCBqUXVlcnkuCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9oYW5kbGVQb2x5bGFuZ1N3aXRjaGVyKCRzY29wZSkgewogICAgICAgIHZhciBwb2x5bGFuZ1N3aXRjaGVyID0gJHNjb3BlLmZpbmQoJy5oZmUtbmF2LW1lbnUgbmF2IC5wbGwtcGFyZW50LW1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0nKTsKICAgICAgICB2YXIgaHJlZlByb3BlcnR5ID0gcG9seWxhbmdTd2l0Y2hlci5wcm9wKCdocmVmJyk7CiAgICAgICAgaWYgKHVuZGVmaW5lZCAhPT0gaHJlZlByb3BlcnR5ICYmIGhyZWZQcm9wZXJ0eS5pbmNsdWRlcygnIycpKSB7CiAgICAgICAgICAgIHZhciBpbmRleCA9IGhyZWZQcm9wZXJ0eS5pbmRleE9mKCcjJyk7CiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGhyZWZQcm9wZXJ0eS5zbGljZShpbmRleCk7CiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJyNwbGxfc3dpdGNoZXInKSB7CiAgICAgICAgICAgICAgICBwb2x5bGFuZ1N3aXRjaGVyLnByb3AoJ2hyZWYnLCAnIycpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICQod2luZG93KS5vbignZWxlbWVudG9yL2Zyb250ZW5kL2luaXQnLCBmdW5jdGlvbigpIHsKCiAgICAgICAgZWxlbWVudG9yRnJvbnRlbmQuaG9va3MuYWRkQWN0aW9uKCdmcm9udGVuZC9lbGVtZW50X3JlYWR5L25hdmlnYXRpb24tbWVudS5kZWZhdWx0JywgV2lkZ2V0aGZlTmF2TWVudUhhbmRsZXIpOwogICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmFkZEFjdGlvbignZnJvbnRlbmQvZWxlbWVudF9yZWFkeS9oZmUtc2VhcmNoLWJ1dHRvbi5kZWZhdWx0JywgV2lkZ2V0aGZlU2VhcmNoQnV0dG9uKTsKICAgIH0pOwp9KShqUXVlcnkpOw=="}},"time_used":88,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":88,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment-bnb.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.870Z","timestamp":1785128398870,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment-bnb.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 1338\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 66e933a7f3e4ad8d7182d08f38a47020-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.019\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":1338,"size_decoded":1660,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"bc31f09865d73f7f10bae66e8470ef0c","sha1":"dc299110f5b22bd1ae3f1d12d1e72e245d385138","sha256":"829ff12988eff59fb25dde96dc9021dfb7a32bc216805189d2934280ea063b06","sha512":"1dfce891b906381f64ad865d16e8f5dbb57fe5791912352e5b90f72ccc1de6a93b5715f743f2f6e6dd9f07be4f71cae1b45702ab8617930f7c684594a30c93cc","ssdeep":"","tlshash":"1c211713a1208e0ae063223e268e03808ea1a0c607b6b873f24849443f61476eefe6d1","first_seen":"2026-07-27T03:56:42.492655Z","last_seen":"2026-07-27T05:01:06.102944Z","times_seen":3,"resource_available":false,"data":"UklGRjIFAABXRUJQVlA4WAoAAAAYAAAAfAAAMgAAQUxQSHADAAABoIVt2xlJeivlGts21rYx9kxhbdtj27Zt27Zte6bdncpV/R78f/5cnZ2czUFETAAdHk7+8ICf27scrIHO1m7HevcmaXzpVJ8nk2TGH84UNihvrTnQ29dpavziPB/cJsnMFJJM/8XKy7GwtGEtt6zWxx/UcUtcz38Yq6MB7lc+DIfD4Ui4XvX/w+cGSSbC7yWRZOIfC4uMuDQraXN9SWvDyPxO4ptoGIf8QGieEZdmJi1+ynZN0yi2BxqmkmR2+9xK86kYryO0IXn9acE7kTzkA4ILqXj5Gbv1Jsms/zwAPk4iydWFleaSyds2bNx8g+T2AIDWJLkynzCBPCDMJ2+t27hhWyrJJSGb5R5H6p9D2jiJXFQcVrZWKlio8KO7yZQaZhxuaWbBQgWLPH+YTCpnp1pBIDhZ/xdA5UcBNElalg/wveZSWu8HgB8tZH9jZSLELmSynepcnVYIKBrLDZQ9fOFFAK+VBPIO1v9S2lzSHwhWXUjuC8p0nbz1GjxK070Bf+7a68i1uezz6X1yWWmIVXeS19+A6B9GZv2qcn/DylVrTpI33obsZNs75MHCULqxYtXKdRfIg0/BNtEESa7JA6DsIZK8VgOAqxPFnxTMR8HkbJEBJAdqY1VM47/CPm9cJpndzwug4AxhQykAiGWQvNdEIVvP0vU4GZ+UV3apYukzJGNDVBJZup4VJ/XhuW2Dx3cw8zcNYmgQuaospC2TeOElKBz7vFW4VbTPfXKwJquBV66Rd06pbG4ZDreKDkgje9sHpVf9BKDWsLKAd9aaQoD/r+cBtDr0PlTWeSAOJU+XNUMkTtFsAqSTyUM2Qm4A5Xdymh8I5QW0bjz1KIAiUNoQkPQhLz+hgP4WJslGkEftBKDWLpJTCwNA3qEkT9X3QnUueTRSp0H95n1vk8dKqJTYrrbp3foN6kX6JJN7bDaJ4sqSgGckxdNFraj2gAoeu6mk2tpmtc8KnBdE54Rwt5lXabHSzLwA2pM3agmIkTzpA0JLlMaHbIYXjgkc2Jni5fpQ7310n3zbgm8DAPD5qcPLKkjQ7tiRmV7A3/fEPvm2mU3csBsq7xTkl5+ARZdmClOXW9Ngqrk1FwCXW5MjB3MCFfeb3X4fD+gcwROnZFcbwolQZadw5ik4E6rsIe+8DqdC9bM3msC5HvQPx3F2VlA4INoAAAAwCQCdASp9ADMAPlEmkkajoaGhoxVYkHAKCWUA0jJAflf4Z6cb8QJYBggH6q+//0f/mq7xX+zPwd+SqAJa0l6ni3vf+qNmw+GJAyQnWxJ1w7xkAP7w8aSRv73w+98P84URFB7PzGlGGQKTGyVM/4mQH1l+/7FSfi7/wa310itMPgqV0p/ywN30IvtqdZi+8mCaq3aqEP/pkxbhc9c1hbobgr/O7dPNlcNcbJpAyAYxu9MfdDEjJIPqFAAAIpHg+g9ZvubR3991MHv/jDiyM6ag8k3bMqIkNzwAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAH0AAAADoAQAAQAAADMAAAAAAAAA"}},"time_used":92,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":92,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment-tron.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.872Z","timestamp":1785128398872,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment-tron.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 3316\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 5129bbe2b467681c7f66919592f6a3e7-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":3316,"size_decoded":3638,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"6c4a15186577aa99cac6de9948e64328","sha1":"5a9a793e643ac5b03404f0f78bbb76970923be12","sha256":"5a579789b32b7dd35cb3b71f720e5741d442f5fb0f124843ffcd682defc1d48c","sha512":"cd62f981bfacf14c8cdafca4de6479cead2f7f4f0ca9c763b1d5e548ea595a0c9fe1f2a4ce63ddad726a98fbcdf297e1d470db52dffa1871be73d0e35fc0b2a7","ssdeep":"","tlshash":"94617da721058709d8ed0e3b48a05f09a2a1615ee213f33eb2a927c74d41b28d740eba","first_seen":"2026-07-27T03:56:42.542409Z","last_seen":"2026-07-27T05:01:06.108712Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":91,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":91,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/jquery/jquery.minf43b.js?ver=3.7.1","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.790Z","timestamp":1785128398790,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-includes/js/jquery/jquery.minf43b.js?ver=3.7.1 HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 34481\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"23ea5-67c3620e-74e0b587883d9dbc;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 9becd1012a2a5a89df5e41ac90a3e893-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":147109,"size_decoded":35071,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (862)","md5":"2c726692c3463b9200455bb5a63fc060","sha1":"6a8ce9449ad65e13b1b78e9fbac9cd2c99573253","sha256":"e3e9faf8caf4564d4952e8bc09836d41aea7b90a5d46d99f6eaef6c113619aeb","sha512":"763f49f482605cdb5c8f89af146785d90c075f95c24407ff55b5607130f97ed06b8633163ce0c64fff5a626eab4754a385348bbb8d8ab1606fd5fa0a7338248a","ssdeep":"3072:csBiP9TCt/sUp7Pi26wJC1+mvXmQ4apO1ah:hBidCt/sUp7Pl6wJC1+KmeO18","tlshash":"ebe3529a7afa21319207f03a8d6fcc08b276544f1a8ded04790c52a55f1583c97fafe9","first_seen":"2025-06-28T20:39:24.10035Z","last_seen":"2026-07-27T05:30:59.80116Z","times_seen":52,"resource_available":true,"data":"LyohIGpRdWVyeSB2My43LjEgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLyAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgICJvYmplY3QiID09IHR5cGVvZiBtb2R1bGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIG1vZHVsZS5leHBvcnRzID8gbW9kdWxlLmV4cG9ydHMgPSBlLmRvY3VtZW50ID8gdChlLCAhMCkgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKCFlLmRvY3VtZW50KSB0aHJvdyBuZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTsKICAgICAgICByZXR1cm4gdChlKQogICAgfSA6IHQoZSkKfSgidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24oaWUsIGUpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBvZSA9IFtdLAogICAgICAgIHIgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YsCiAgICAgICAgYWUgPSBvZS5zbGljZSwKICAgICAgICBnID0gb2UuZmxhdCA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG9lLmZsYXQuY2FsbChlKQogICAgICAgIH0gOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBvZS5jb25jYXQuYXBwbHkoW10sIGUpCiAgICAgICAgfSwKICAgICAgICBzID0gb2UucHVzaCwKICAgICAgICBzZSA9IG9lLmluZGV4T2YsCiAgICAgICAgbiA9IHt9LAogICAgICAgIGkgPSBuLnRvU3RyaW5nLAogICAgICAgIHVlID0gbi5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICBvID0gdWUudG9TdHJpbmcsCiAgICAgICAgYSA9IG8uY2FsbChPYmplY3QpLAogICAgICAgIGxlID0ge30sCiAgICAgICAgdiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgJiYgIm51bWJlciIgIT0gdHlwZW9mIGUubm9kZVR5cGUgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgZS5pdGVtCiAgICAgICAgfSwKICAgICAgICB5ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlICYmIGUgPT09IGUud2luZG93CiAgICAgICAgfSwKICAgICAgICBDID0gaWUuZG9jdW1lbnQsCiAgICAgICAgdSA9IHsKICAgICAgICAgICAgdHlwZTogITAsCiAgICAgICAgICAgIHNyYzogITAsCiAgICAgICAgICAgIG5vbmNlOiAhMCwKICAgICAgICAgICAgbm9Nb2R1bGU6ICEwCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBtKGUsIHQsIG4pIHsKICAgICAgICB2YXIgciwgaSwgbyA9IChuID0gbiB8fCBDKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgICAgICBpZiAoby50ZXh0ID0gZSwgdCkKICAgICAgICAgICAgZm9yIChyIGluIHUpKGkgPSB0W3JdIHx8IHQuZ2V0QXR0cmlidXRlICYmIHQuZ2V0QXR0cmlidXRlKHIpKSAmJiBvLnNldEF0dHJpYnV0ZShyLCBpKTsKICAgICAgICBuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKQogICAgfQoKICAgIGZ1bmN0aW9uIHgoZSkgewogICAgICAgIHJldHVybiBudWxsID09IGUgPyBlICsgIiIgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gbltpLmNhbGwoZSldIHx8ICJvYmplY3QiIDogdHlwZW9mIGUKICAgIH0KICAgIHZhciB0ID0gIjMuNy4xIiwKICAgICAgICBsID0gL0hUTUwkL2ksCiAgICAgICAgY2UgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgY2UuZm4uaW5pdChlLCB0KQogICAgICAgIH07CgogICAgZnVuY3Rpb24gYyhlKSB7CiAgICAgICAgdmFyIHQgPSAhIWUgJiYgImxlbmd0aCIgaW4gZSAmJiBlLmxlbmd0aCwKICAgICAgICAgICAgbiA9IHgoZSk7CiAgICAgICAgcmV0dXJuICF2KGUpICYmICF5KGUpICYmICgiYXJyYXkiID09PSBuIHx8IDAgPT09IHQgfHwgIm51bWJlciIgPT0gdHlwZW9mIHQgJiYgMCA8IHQgJiYgdCAtIDEgaW4gZSkKICAgIH0KCiAgICBmdW5jdGlvbiBmZShlLCB0KSB7CiAgICAgICAgcmV0dXJuIGUubm9kZU5hbWUgJiYgZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0LnRvTG93ZXJDYXNlKCkKICAgIH0KICAgIGNlLmZuID0gY2UucHJvdG90eXBlID0gewogICAgICAgIGpxdWVyeTogdCwKICAgICAgICBjb25zdHJ1Y3RvcjogY2UsCiAgICAgICAgbGVuZ3RoOiAwLAogICAgICAgIHRvQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gYWUuY2FsbCh0aGlzKQogICAgICAgIH0sCiAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyBhZS5jYWxsKHRoaXMpIDogZSA8IDAgPyB0aGlzW2UgKyB0aGlzLmxlbmd0aF0gOiB0aGlzW2VdCiAgICAgICAgfSwKICAgICAgICBwdXNoU3RhY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBjZS5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksIGUpOwogICAgICAgICAgICByZXR1cm4gdC5wcmV2T2JqZWN0ID0gdGhpcywgdAogICAgICAgIH0sCiAgICAgICAgZWFjaDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gY2UuZWFjaCh0aGlzLCBlKQogICAgICAgIH0sCiAgICAgICAgbWFwOiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhjZS5tYXAodGhpcywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG4uY2FsbChlLCB0LCBlKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIHNsaWNlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGFlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgfSwKICAgICAgICBmaXJzdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVxKDApCiAgICAgICAgfSwKICAgICAgICBsYXN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXEoLTEpCiAgICAgICAgfSwKICAgICAgICBldmVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGNlLmdyZXAodGhpcywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuICh0ICsgMSkgJSAyCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgb2RkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGNlLmdyZXAodGhpcywgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgJSAyCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgZXE6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmxlbmd0aCwKICAgICAgICAgICAgICAgIG4gPSArZSArIChlIDwgMCA/IHQgOiAwKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKDAgPD0gbiAmJiBuIDwgdCA/IFt0aGlzW25dXSA6IFtdKQogICAgICAgIH0sCiAgICAgICAgZW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0cnVjdG9yKCkKICAgICAgICB9LAogICAgICAgIHB1c2g6IHMsCiAgICAgICAgc29ydDogb2Uuc29ydCwKICAgICAgICBzcGxpY2U6IG9lLnNwbGljZQogICAgfSwgY2UuZXh0ZW5kID0gY2UuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUsIHQsIG4sIHIsIGksIG8sIGEgPSBhcmd1bWVudHNbMF0gfHwge30sCiAgICAgICAgICAgIHMgPSAxLAogICAgICAgICAgICB1ID0gYXJndW1lbnRzLmxlbmd0aCwKICAgICAgICAgICAgbCA9ICExOwogICAgICAgIGZvciAoImJvb2xlYW4iID09IHR5cGVvZiBhICYmIChsID0gYSwgYSA9IGFyZ3VtZW50c1tzXSB8fCB7fSwgcysrKSwgIm9iamVjdCIgPT0gdHlwZW9mIGEgfHwgdihhKSB8fCAoYSA9IHt9KSwgcyA9PT0gdSAmJiAoYSA9IHRoaXMsIHMtLSk7IHMgPCB1OyBzKyspCiAgICAgICAgICAgIGlmIChudWxsICE9IChlID0gYXJndW1lbnRzW3NdKSkKICAgICAgICAgICAgICAgIGZvciAodCBpbiBlKSByID0gZVt0XSwgIl9fcHJvdG9fXyIgIT09IHQgJiYgYSAhPT0gciAmJiAobCAmJiByICYmIChjZS5pc1BsYWluT2JqZWN0KHIpIHx8IChpID0gQXJyYXkuaXNBcnJheShyKSkpID8gKG4gPSBhW3RdLCBvID0gaSAmJiAhQXJyYXkuaXNBcnJheShuKSA/IFtdIDogaSB8fCBjZS5pc1BsYWluT2JqZWN0KG4pID8gbiA6IHt9LCBpID0gITEsIGFbdF0gPSBjZS5leHRlbmQobCwgbywgcikpIDogdm9pZCAwICE9PSByICYmIChhW3RdID0gcikpOwogICAgICAgIHJldHVybiBhCiAgICB9LCBjZS5leHRlbmQoewogICAgICAgIGV4cGFuZG86ICJqUXVlcnkiICsgKHQgKyBNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCAiIiksCiAgICAgICAgaXNSZWFkeTogITAsCiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpCiAgICAgICAgfSwKICAgICAgICBub29wOiBmdW5jdGlvbigpIHt9LAogICAgICAgIGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG47CiAgICAgICAgICAgIHJldHVybiAhKCFlIHx8ICJbb2JqZWN0IE9iamVjdF0iICE9PSBpLmNhbGwoZSkpICYmICghKHQgPSByKGUpKSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZihuID0gdWUuY2FsbCh0LCAiY29uc3RydWN0b3IiKSAmJiB0LmNvbnN0cnVjdG9yKSAmJiBvLmNhbGwobikgPT09IGEpCiAgICAgICAgfSwKICAgICAgICBpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICBmb3IgKHQgaW4gZSkgcmV0dXJuICExOwogICAgICAgICAgICByZXR1cm4gITAKICAgICAgICB9LAogICAgICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgbShlLCB7CiAgICAgICAgICAgICAgICBub25jZTogdCAmJiB0Lm5vbmNlCiAgICAgICAgICAgIH0sIG4pCiAgICAgICAgfSwKICAgICAgICBlYWNoOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByID0gMDsKICAgICAgICAgICAgaWYgKGMoZSkpIHsKICAgICAgICAgICAgICAgIGZvciAobiA9IGUubGVuZ3RoOyByIDwgbjsgcisrKQogICAgICAgICAgICAgICAgICAgIGlmICghMSA9PT0gdC5jYWxsKGVbcl0sIHIsIGVbcl0pKSBicmVhawogICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIGZvciAociBpbiBlKQogICAgICAgICAgICAgICAgICAgIGlmICghMSA9PT0gdC5jYWxsKGVbcl0sIHIsIGVbcl0pKSBicmVhazsKICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9LAogICAgICAgIHRleHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4gPSAiIiwKICAgICAgICAgICAgICAgIHIgPSAwLAogICAgICAgICAgICAgICAgaSA9IGUubm9kZVR5cGU7CiAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgIHdoaWxlICh0ID0gZVtyKytdKSBuICs9IGNlLnRleHQodCk7CiAgICAgICAgICAgIHJldHVybiAxID09PSBpIHx8IDExID09PSBpID8gZS50ZXh0Q29udGVudCA6IDkgPT09IGkgPyBlLmRvY3VtZW50RWxlbWVudC50ZXh0Q29udGVudCA6IDMgPT09IGkgfHwgNCA9PT0gaSA/IGUubm9kZVZhbHVlIDogbgogICAgICAgIH0sCiAgICAgICAgbWFrZUFycmF5OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gdCB8fCBbXTsKICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSAmJiAoYyhPYmplY3QoZSkpID8gY2UubWVyZ2UobiwgInN0cmluZyIgPT0gdHlwZW9mIGUgPyBbZV0gOiBlKSA6IHMuY2FsbChuLCBlKSksIG4KICAgICAgICB9LAogICAgICAgIGluQXJyYXk6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCA/IC0xIDogc2UuY2FsbCh0LCBlLCBuKQogICAgICAgIH0sCiAgICAgICAgaXNYTUxEb2M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlICYmIGUubmFtZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgbiA9IGUgJiYgKGUub3duZXJEb2N1bWVudCB8fCBlKS5kb2N1bWVudEVsZW1lbnQ7CiAgICAgICAgICAgIHJldHVybiAhbC50ZXN0KHQgfHwgbiAmJiBuLm5vZGVOYW1lIHx8ICJIVE1MIikKICAgICAgICB9LAogICAgICAgIG1lcmdlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSArdC5sZW5ndGgsIHIgPSAwLCBpID0gZS5sZW5ndGg7IHIgPCBuOyByKyspIGVbaSsrXSA9IHRbcl07CiAgICAgICAgICAgIHJldHVybiBlLmxlbmd0aCA9IGksIGUKICAgICAgICB9LAogICAgICAgIGdyZXA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgZm9yICh2YXIgciA9IFtdLCBpID0gMCwgbyA9IGUubGVuZ3RoLCBhID0gIW47IGkgPCBvOyBpKyspICF0KGVbaV0sIGkpICE9PSBhICYmIHIucHVzaChlW2ldKTsKICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9LAogICAgICAgIG1hcDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciwgaSwgbyA9IDAsCiAgICAgICAgICAgICAgICBhID0gW107CiAgICAgICAgICAgIGlmIChjKGUpKQogICAgICAgICAgICAgICAgZm9yIChyID0gZS5sZW5ndGg7IG8gPCByOyBvKyspIG51bGwgIT0gKGkgPSB0KGVbb10sIG8sIG4pKSAmJiBhLnB1c2goaSk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAobyBpbiBlKSBudWxsICE9IChpID0gdChlW29dLCBvLCBuKSkgJiYgYS5wdXNoKGkpOwogICAgICAgICAgICByZXR1cm4gZyhhKQogICAgICAgIH0sCiAgICAgICAgZ3VpZDogMSwKICAgICAgICBzdXBwb3J0OiBsZQogICAgfSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAoY2UuZm5bU3ltYm9sLml0ZXJhdG9yXSA9IG9lW1N5bWJvbC5pdGVyYXRvcl0pLCBjZS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgIG5bIltvYmplY3QgIiArIHQgKyAiXSJdID0gdC50b0xvd2VyQ2FzZSgpCiAgICB9KTsKICAgIHZhciBwZSA9IG9lLnBvcCwKICAgICAgICBkZSA9IG9lLnNvcnQsCiAgICAgICAgaGUgPSBvZS5zcGxpY2UsCiAgICAgICAgZ2UgPSAiW1xceDIwXFx0XFxyXFxuXFxmXSIsCiAgICAgICAgdmUgPSBuZXcgUmVnRXhwKCJeIiArIGdlICsgIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIgKyBnZSArICIrJCIsICJnIik7CiAgICBjZS5jb250YWlucyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB2YXIgbiA9IHQgJiYgdC5wYXJlbnROb2RlOwogICAgICAgIHJldHVybiBlID09PSBuIHx8ICEoIW4gfHwgMSAhPT0gbi5ub2RlVHlwZSB8fCAhKGUuY29udGFpbnMgPyBlLmNvbnRhaW5zKG4pIDogZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiAxNiAmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24obikpKQogICAgfTsKICAgIHZhciBmID0gLyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15ceDgwLVx1RkZGRlx3LV0vZzsKCiAgICBmdW5jdGlvbiBwKGUsIHQpIHsKICAgICAgICByZXR1cm4gdCA/ICJcMCIgPT09IGUgPyAiXHVmZmZkIiA6IGUuc2xpY2UoMCwgLTEpICsgIlxcIiArIGUuY2hhckNvZGVBdChlLmxlbmd0aCAtIDEpLnRvU3RyaW5nKDE2KSArICIgIiA6ICJcXCIgKyBlCiAgICB9CiAgICBjZS5lc2NhcGVTZWxlY3RvciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gKGUgKyAiIikucmVwbGFjZShmLCBwKQogICAgfTsKICAgIHZhciB5ZSA9IEMsCiAgICAgICAgbWUgPSBzOwogICAgISBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZSwgYiwgdywgbywgYSwgVCwgciwgQywgZCwgaSwgayA9IG1lLAogICAgICAgICAgICBTID0gY2UuZXhwYW5kbywKICAgICAgICAgICAgRSA9IDAsCiAgICAgICAgICAgIG4gPSAwLAogICAgICAgICAgICBzID0gVygpLAogICAgICAgICAgICBjID0gVygpLAogICAgICAgICAgICB1ID0gVygpLAogICAgICAgICAgICBoID0gVygpLAogICAgICAgICAgICBsID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgJiYgKGEgPSAhMCksIDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZiA9ICJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsCiAgICAgICAgICAgIHQgPSAiKD86XFxcXFtcXGRhLWZBLUZdezEsNn0iICsgZ2UgKyAiP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlwwLVxceDdmXSkrIiwKICAgICAgICAgICAgcCA9ICJcXFsiICsgZ2UgKyAiKigiICsgdCArICIpKD86IiArIGdlICsgIiooWypeJHwhfl0/PSkiICsgZ2UgKyAiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiICsgdCArICIpKXwpIiArIGdlICsgIipcXF0iLAogICAgICAgICAgICBnID0gIjooIiArIHQgKyAiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIgKyBwICsgIikqKXwuKilcXCl8KSIsCiAgICAgICAgICAgIHYgPSBuZXcgUmVnRXhwKGdlICsgIisiLCAiZyIpLAogICAgICAgICAgICB5ID0gbmV3IFJlZ0V4cCgiXiIgKyBnZSArICIqLCIgKyBnZSArICIqIiksCiAgICAgICAgICAgIG0gPSBuZXcgUmVnRXhwKCJeIiArIGdlICsgIiooWz4rfl18IiArIGdlICsgIikiICsgZ2UgKyAiKiIpLAogICAgICAgICAgICB4ID0gbmV3IFJlZ0V4cChnZSArICJ8PiIpLAogICAgICAgICAgICBqID0gbmV3IFJlZ0V4cChnKSwKICAgICAgICAgICAgQSA9IG5ldyBSZWdFeHAoIl4iICsgdCArICIkIiksCiAgICAgICAgICAgIEQgPSB7CiAgICAgICAgICAgICAgICBJRDogbmV3IFJlZ0V4cCgiXiMoIiArIHQgKyAiKSIpLAogICAgICAgICAgICAgICAgQ0xBU1M6IG5ldyBSZWdFeHAoIl5cXC4oIiArIHQgKyAiKSIpLAogICAgICAgICAgICAgICAgVEFHOiBuZXcgUmVnRXhwKCJeKCIgKyB0ICsgInxbKl0pIiksCiAgICAgICAgICAgICAgICBBVFRSOiBuZXcgUmVnRXhwKCJeIiArIHApLAogICAgICAgICAgICAgICAgUFNFVURPOiBuZXcgUmVnRXhwKCJeIiArIGcpLAogICAgICAgICAgICAgICAgQ0hJTEQ6IG5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIgKyBnZSArICIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIiArIGdlICsgIiooPzooWystXXwpIiArIGdlICsgIiooXFxkKyl8KSkiICsgZ2UgKyAiKlxcKXwpIiwgImkiKSwKICAgICAgICAgICAgICAgIGJvb2w6IG5ldyBSZWdFeHAoIl4oPzoiICsgZiArICIpJCIsICJpIiksCiAgICAgICAgICAgICAgICBuZWVkc0NvbnRleHQ6IG5ldyBSZWdFeHAoIl4iICsgZ2UgKyAiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIiArIGdlICsgIiooKD86LVxcZCk/XFxkKikiICsgZ2UgKyAiKlxcKXwpKD89W14tXXwkKSIsICJpIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTiA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksCiAgICAgICAgICAgIHEgPSAvXmhcZCQvaSwKICAgICAgICAgICAgTCA9IC9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sCiAgICAgICAgICAgIEggPSAvWyt+XS8sCiAgICAgICAgICAgIE8gPSBuZXcgUmVnRXhwKCJcXFxcW1xcZGEtZkEtRl17MSw2fSIgKyBnZSArICI/fFxcXFwoW15cXHJcXG5cXGZdKSIsICJnIiksCiAgICAgICAgICAgIFAgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9ICIweCIgKyBlLnNsaWNlKDEpIC0gNjU1MzY7CiAgICAgICAgICAgICAgICByZXR1cm4gdCB8fCAobiA8IDAgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKG4gKyA2NTUzNikgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKG4gPj4gMTAgfCA1NTI5NiwgMTAyMyAmIG4gfCA1NjMyMCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIFYoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBSID0gSihmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IGUuZGlzYWJsZWQgJiYgZmUoZSwgImZpZWxkc2V0IikKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgZGlyOiAicGFyZW50Tm9kZSIsCiAgICAgICAgICAgICAgICBuZXh0OiAibGVnZW5kIgogICAgICAgICAgICB9KTsKICAgICAgICB0cnkgewogICAgICAgICAgICBrLmFwcGx5KG9lID0gYWUuY2FsbCh5ZS5jaGlsZE5vZGVzKSwgeWUuY2hpbGROb2RlcyksIG9lW3llLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZQogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgayA9IHsKICAgICAgICAgICAgICAgIGFwcGx5OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgbWUuYXBwbHkoZSwgYWUuY2FsbCh0KSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjYWxsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgbWUuYXBwbHkoZSwgYWUuY2FsbChhcmd1bWVudHMsIDEpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBJKHQsIGUsIG4sIHIpIHsKICAgICAgICAgICAgdmFyIGksIG8sIGEsIHMsIHUsIGwsIGMsIGYgPSBlICYmIGUub3duZXJEb2N1bWVudCwKICAgICAgICAgICAgICAgIHAgPSBlID8gZS5ub2RlVHlwZSA6IDk7CiAgICAgICAgICAgIGlmIChuID0gbiB8fCBbXSwgInN0cmluZyIgIT0gdHlwZW9mIHQgfHwgIXQgfHwgMSAhPT0gcCAmJiA5ICE9PSBwICYmIDExICE9PSBwKSByZXR1cm4gbjsKICAgICAgICAgICAgaWYgKCFyICYmIChWKGUpLCBlID0gZSB8fCBULCBDKSkgewogICAgICAgICAgICAgICAgaWYgKDExICE9PSBwICYmICh1ID0gTC5leGVjKHQpKSkKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IHVbMV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDkgPT09IHApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGEgPSBlLmdldEVsZW1lbnRCeUlkKGkpKSkgcmV0dXJuIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS5pZCA9PT0gaSkgcmV0dXJuIGsuY2FsbChuLCBhKSwgbgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGYgJiYgKGEgPSBmLmdldEVsZW1lbnRCeUlkKGkpKSAmJiBJLmNvbnRhaW5zKGUsIGEpICYmIGEuaWQgPT09IGkpIHJldHVybiBrLmNhbGwobiwgYSksIG4KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodVsyXSkgcmV0dXJuIGsuYXBwbHkobiwgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KSksIG47CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSA9IHVbM10pICYmIGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSkgcmV0dXJuIGsuYXBwbHkobiwgZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSwgbgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghKGhbdCArICIgIl0gfHwgZCAmJiBkLnRlc3QodCkpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGMgPSB0LCBmID0gZSwgMSA9PT0gcCAmJiAoeC50ZXN0KHQpIHx8IG0udGVzdCh0KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgKGYgPSBILnRlc3QodCkgJiYgVShlLnBhcmVudE5vZGUpIHx8IGUpID09IGUgJiYgbGUuc2NvcGUgfHwgKChzID0gZS5nZXRBdHRyaWJ1dGUoImlkIikpID8gcyA9IGNlLmVzY2FwZVNlbGVjdG9yKHMpIDogZS5zZXRBdHRyaWJ1dGUoImlkIiwgcyA9IFMpKSwgbyA9IChsID0gWSh0KSkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoby0tKSBsW29dID0gKHMgPyAiIyIgKyBzIDogIjpzY29wZSIpICsgIiAiICsgUShsW29dKTsKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwuam9pbigiLCIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrLmFwcGx5KG4sIGYucXVlcnlTZWxlY3RvckFsbChjKSksIG4KICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGgodCwgITApCiAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcyA9PT0gUyAmJiBlLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmUodC5yZXBsYWNlKHZlLCAiJDEiKSwgZSwgbiwgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFcoKSB7CiAgICAgICAgICAgIHZhciByID0gW107CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBlKHQsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiByLnB1c2godCArICIgIikgPiBiLmNhY2hlTGVuZ3RoICYmIGRlbGV0ZSBlW3Iuc2hpZnQoKV0sIGVbdCArICIgIl0gPSBuCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEYoZSkgewogICAgICAgICAgICByZXR1cm4gZVtTXSA9ICEwLCBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiAkKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBULmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISFlKHQpCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgdC5wYXJlbnROb2RlICYmIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSwgdCA9IG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQih0KSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmUoZSwgImlucHV0IikgJiYgZS50eXBlID09PSB0CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIF8odCkgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIChmZShlLCAiaW5wdXQiKSB8fCBmZShlLCAiYnV0dG9uIikpICYmIGUudHlwZSA9PT0gdAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB6KHQpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiZm9ybSIgaW4gZSA/IGUucGFyZW50Tm9kZSAmJiAhMSA9PT0gZS5kaXNhYmxlZCA/ICJsYWJlbCIgaW4gZSA/ICJsYWJlbCIgaW4gZS5wYXJlbnROb2RlID8gZS5wYXJlbnROb2RlLmRpc2FibGVkID09PSB0IDogZS5kaXNhYmxlZCA9PT0gdCA6IGUuaXNEaXNhYmxlZCA9PT0gdCB8fCBlLmlzRGlzYWJsZWQgIT09ICF0ICYmIFIoZSkgPT09IHQgOiBlLmRpc2FibGVkID09PSB0IDogImxhYmVsIiBpbiBlICYmIGUuZGlzYWJsZWQgPT09IHQKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWChhKSB7CiAgICAgICAgICAgIHJldHVybiBGKGZ1bmN0aW9uKG8pIHsKICAgICAgICAgICAgICAgIHJldHVybiBvID0gK28sIEYoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuLCByID0gYShbXSwgZS5sZW5ndGgsIG8pLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gci5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGktLSkgZVtuID0gcltpXV0gJiYgKGVbbl0gPSAhKHRbbl0gPSBlW25dKSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBVKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgJiYgZQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuID0gZSA/IGUub3duZXJEb2N1bWVudCB8fCBlIDogeWU7CiAgICAgICAgICAgIHJldHVybiBuICE9IFQgJiYgOSA9PT0gbi5ub2RlVHlwZSAmJiBuLmRvY3VtZW50RWxlbWVudCAmJiAociA9IChUID0gbikuZG9jdW1lbnRFbGVtZW50LCBDID0gIWNlLmlzWE1MRG9jKFQpLCBpID0gci5tYXRjaGVzIHx8IHIud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IHIubXNNYXRjaGVzU2VsZWN0b3IsIHIubXNNYXRjaGVzU2VsZWN0b3IgJiYgeWUgIT0gVCAmJiAodCA9IFQuZGVmYXVsdFZpZXcpICYmIHQudG9wICE9PSB0ICYmIHQuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIiwgTSksIGxlLmdldEJ5SWQgPSAkKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiByLmFwcGVuZENoaWxkKGUpLmlkID0gY2UuZXhwYW5kbywgIVQuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIVQuZ2V0RWxlbWVudHNCeU5hbWUoY2UuZXhwYW5kbykubGVuZ3RoCiAgICAgICAgICAgIH0pLCBsZS5kaXNjb25uZWN0ZWRNYXRjaCA9ICQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkuY2FsbChlLCAiKiIpCiAgICAgICAgICAgIH0pLCBsZS5zY29wZSA9ICQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gVC5xdWVyeVNlbGVjdG9yQWxsKCI6c2NvcGUiKQogICAgICAgICAgICB9KSwgbGUuY3NzSGFzID0gJChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFQucXVlcnlTZWxlY3RvcigiOmhhcygqLDpqcWZha2UpIiksICExCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBsZS5nZXRCeUlkID8gKGIuZmlsdGVyLklEID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLnJlcGxhY2UoTywgUCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBiLmZpbmQuSUQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQgJiYgQykgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5nZXRFbGVtZW50QnlJZChlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA/IFtuXSA6IFtdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pIDogKGIuZmlsdGVyLklEID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBlLnJlcGxhY2UoTywgUCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSAmJiBlLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgdC52YWx1ZSA9PT0gbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBiLmZpbmQuSUQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQgJiYgQykgewogICAgICAgICAgICAgICAgICAgIHZhciBuLCByLCBpLCBvID0gdC5nZXRFbGVtZW50QnlJZChlKTsKICAgICAgICAgICAgICAgICAgICBpZiAobykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gPSBvLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpICYmIG4udmFsdWUgPT09IGUpIHJldHVybiBbb107CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmdldEVsZW1lbnRzQnlOYW1lKGUpLCByID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG8gPSBpW3IrK10pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gPSBvLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpICYmIG4udmFsdWUgPT09IGUpIHJldHVybiBbb10KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBiLmZpbmQuVEFHID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lID8gdC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKSA6IHQucXVlcnlTZWxlY3RvckFsbChlKQogICAgICAgICAgICB9LCBiLmZpbmQuQ0xBU1MgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBDKSByZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpCiAgICAgICAgICAgIH0sIGQgPSBbXSwgJChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgIHIuYXBwZW5kQ2hpbGQoZSkuaW5uZXJIVE1MID0gIjxhIGlkPSciICsgUyArICInIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBpZD0nIiArIFMgKyAiLVxyXFwnIGRpc2FibGVkPSdkaXNhYmxlZCc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGggfHwgZC5wdXNoKCJcXFsiICsgZ2UgKyAiKig/OnZhbHVlfCIgKyBmICsgIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIgKyBTICsgIi1dIikubGVuZ3RoIHx8IGQucHVzaCgifj0iKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIgKyBTICsgIisqIikubGVuZ3RoIHx8IGQucHVzaCgiLiMuK1srfl0iKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCB8fCBkLnB1c2goIjpjaGVja2VkIiksICh0ID0gVC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiaGlkZGVuIiksIGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwgIkQiKSwgci5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZCA9ICEwLCAyICE9PSBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpkaXNhYmxlZCIpLmxlbmd0aCAmJiBkLnB1c2goIjplbmFibGVkIiwgIjpkaXNhYmxlZCIpLCAodCA9IFQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJuYW1lIiwgIiIpLCBlLmFwcGVuZENoaWxkKHQpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPScnXSIpLmxlbmd0aCB8fCBkLnB1c2goIlxcWyIgKyBnZSArICIqbmFtZSIgKyBnZSArICIqPSIgKyBnZSArICIqKD86Jyd8XCJcIikiKQogICAgICAgICAgICB9KSwgbGUuY3NzSGFzIHx8IGQucHVzaCgiOmhhcyIpLCBkID0gZC5sZW5ndGggJiYgbmV3IFJlZ0V4cChkLmpvaW4oInwiKSksIGwgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoZSA9PT0gdCkgcmV0dXJuIGEgPSAhMCwgMDsKICAgICAgICAgICAgICAgIHZhciBuID0gIWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24gLSAhdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjsKICAgICAgICAgICAgICAgIHJldHVybiBuIHx8ICgxICYgKG4gPSAoZS5vd25lckRvY3VtZW50IHx8IGUpID09ICh0Lm93bmVyRG9jdW1lbnQgfHwgdCkgPyBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpIDogMSkgfHwgIWxlLnNvcnREZXRhY2hlZCAmJiB0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpID09PSBuID8gZSA9PT0gVCB8fCBlLm93bmVyRG9jdW1lbnQgPT0geWUgJiYgSS5jb250YWlucyh5ZSwgZSkgPyAtMSA6IHQgPT09IFQgfHwgdC5vd25lckRvY3VtZW50ID09IHllICYmIEkuY29udGFpbnMoeWUsIHQpID8gMSA6IG8gPyBzZS5jYWxsKG8sIGUpIC0gc2UuY2FsbChvLCB0KSA6IDAgOiA0ICYgbiA/IC0xIDogMSkKICAgICAgICAgICAgfSksIFQKICAgICAgICB9CiAgICAgICAgZm9yIChlIGluIEkubWF0Y2hlcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBJKGUsIG51bGwsIG51bGwsIHQpCiAgICAgICAgICAgIH0sIEkubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKFYoZSksIEMgJiYgIWhbdCArICIgIl0gJiYgKCFkIHx8ICFkLnRlc3QodCkpKSB0cnkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gaS5jYWxsKGUsIHQpOwogICAgICAgICAgICAgICAgICAgIGlmIChuIHx8IGxlLmRpc2Nvbm5lY3RlZE1hdGNoIHx8IGUuZG9jdW1lbnQgJiYgMTEgIT09IGUuZG9jdW1lbnQubm9kZVR5cGUpIHJldHVybiBuCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgaCh0LCAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAwIDwgSSh0LCBULCBudWxsLCBbZV0pLmxlbmd0aAogICAgICAgICAgICB9LCBJLmNvbnRhaW5zID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIChlLm93bmVyRG9jdW1lbnQgfHwgZSkgIT0gVCAmJiBWKGUpLCBjZS5jb250YWlucyhlLCB0KQogICAgICAgICAgICB9LCBJLmF0dHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAoZS5vd25lckRvY3VtZW50IHx8IGUpICE9IFQgJiYgVihlKTsKICAgICAgICAgICAgICAgIHZhciBuID0gYi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0sCiAgICAgICAgICAgICAgICAgICAgciA9IG4gJiYgdWUuY2FsbChiLmF0dHJIYW5kbGUsIHQudG9Mb3dlckNhc2UoKSkgPyBuKGUsIHQsICFDKSA6IHZvaWQgMDsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHIgPyByIDogZS5nZXRBdHRyaWJ1dGUodCkKICAgICAgICAgICAgfSwgSS5lcnJvciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIGUpCiAgICAgICAgICAgIH0sIGNlLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IFtdLAogICAgICAgICAgICAgICAgICAgIHIgPSAwLAogICAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgaWYgKGEgPSAhbGUuc29ydFN0YWJsZSwgbyA9ICFsZS5zb3J0U3RhYmxlICYmIGFlLmNhbGwoZSwgMCksIGRlLmNhbGwoZSwgbCksIGEpIHsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAodCA9IGVbaSsrXSkgdCA9PT0gZVtpXSAmJiAociA9IG4ucHVzaChpKSk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHItLSkgaGUuY2FsbChlLCBuW3JdLCAxKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG8gPSBudWxsLCBlCiAgICAgICAgICAgIH0sIGNlLmZuLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhjZS51bmlxdWVTb3J0KGFlLmFwcGx5KHRoaXMpKSkKICAgICAgICAgICAgfSwgKGIgPSBjZS5leHByID0gewogICAgICAgICAgICAgICAgY2FjaGVMZW5ndGg6IDUwLAogICAgICAgICAgICAgICAgY3JlYXRlUHNldWRvOiBGLAogICAgICAgICAgICAgICAgbWF0Y2g6IEQsCiAgICAgICAgICAgICAgICBhdHRySGFuZGxlOiB7fSwKICAgICAgICAgICAgICAgIGZpbmQ6IHt9LAogICAgICAgICAgICAgICAgcmVsYXRpdmU6IHsKICAgICAgICAgICAgICAgICAgICAiPiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiAicGFyZW50Tm9kZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0OiAhMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIiAiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpcjogInBhcmVudE5vZGUiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiKyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiAicHJldmlvdXNTaWJsaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Q6ICEwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAifiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiAicHJldmlvdXNTaWJsaW5nIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwcmVGaWx0ZXI6IHsKICAgICAgICAgICAgICAgICAgICBBVFRSOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlWzFdID0gZVsxXS5yZXBsYWNlKE8sIFApLCBlWzNdID0gKGVbM10gfHwgZVs0XSB8fCBlWzVdIHx8ICIiKS5yZXBsYWNlKE8sIFApLCAifj0iID09PSBlWzJdICYmIChlWzNdID0gIiAiICsgZVszXSArICIgIiksIGUuc2xpY2UoMCwgNCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIENISUxEOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlWzFdID0gZVsxXS50b0xvd2VyQ2FzZSgpLCAibnRoIiA9PT0gZVsxXS5zbGljZSgwLCAzKSA/IChlWzNdIHx8IEkuZXJyb3IoZVswXSksIGVbNF0gPSArKGVbNF0gPyBlWzVdICsgKGVbNl0gfHwgMSkgOiAyICogKCJldmVuIiA9PT0gZVszXSB8fCAib2RkIiA9PT0gZVszXSkpLCBlWzVdID0gKyhlWzddICsgZVs4XSB8fCAib2RkIiA9PT0gZVszXSkpIDogZVszXSAmJiBJLmVycm9yKGVbMF0pLCBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBQU0VVRE86IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4gPSAhZVs2XSAmJiBlWzJdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRC5DSElMRC50ZXN0KGVbMF0pID8gbnVsbCA6IChlWzNdID8gZVsyXSA9IGVbNF0gfHwgZVs1XSB8fCAiIiA6IG4gJiYgai50ZXN0KG4pICYmICh0ID0gWShuLCAhMCkpICYmICh0ID0gbi5pbmRleE9mKCIpIiwgbi5sZW5ndGggLSB0KSAtIG4ubGVuZ3RoKSAmJiAoZVswXSA9IGVbMF0uc2xpY2UoMCwgdCksIGVbMl0gPSBuLnNsaWNlKDAsIHQpKSwgZS5zbGljZSgwLCAzKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZmlsdGVyOiB7CiAgICAgICAgICAgICAgICAgICAgVEFHOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5yZXBsYWNlKE8sIFApLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiKiIgPT09IGUgPyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZlKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIENMQVNTOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gc1tlICsgIiAiXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgfHwgKHQgPSBuZXcgUmVnRXhwKCIoXnwiICsgZ2UgKyAiKSIgKyBlICsgIigiICsgZ2UgKyAifCQpIikpICYmIHMoZSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudGVzdCgic3RyaW5nIiA9PSB0eXBlb2YgZS5jbGFzc05hbWUgJiYgZS5jbGFzc05hbWUgfHwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0QXR0cmlidXRlICYmIGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgQVRUUjogZnVuY3Rpb24obiwgciwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBJLmF0dHIoZSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gIiE9IiA9PT0gciA6ICFyIHx8ICh0ICs9ICIiLCAiPSIgPT09IHIgPyB0ID09PSBpIDogIiE9IiA9PT0gciA/IHQgIT09IGkgOiAiXj0iID09PSByID8gaSAmJiAwID09PSB0LmluZGV4T2YoaSkgOiAiKj0iID09PSByID8gaSAmJiAtMSA8IHQuaW5kZXhPZihpKSA6ICIkPSIgPT09IHIgPyBpICYmIHQuc2xpY2UoLWkubGVuZ3RoKSA9PT0gaSA6ICJ+PSIgPT09IHIgPyAtMSA8ICgiICIgKyB0LnJlcGxhY2UodiwgIiAiKSArICIgIikuaW5kZXhPZihpKSA6ICJ8PSIgPT09IHIgJiYgKHQgPT09IGkgfHwgdC5zbGljZSgwLCBpLmxlbmd0aCArIDEpID09PSBpICsgIi0iKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgQ0hJTEQ6IGZ1bmN0aW9uKGQsIGUsIHQsIGgsIGcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSAibnRoIiAhPT0gZC5zbGljZSgwLCAzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAibGFzdCIgIT09IGQuc2xpY2UoLTQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9ICJvZi10eXBlIiA9PT0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgPT09IGggJiYgMCA9PT0gZyA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUucGFyZW50Tm9kZQogICAgICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIGksIG8sIGEsIHMsIHUgPSB2ICE9PSB5ID8gIm5leHRTaWJsaW5nIiA6ICJwcmV2aW91c1NpYmxpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlLnBhcmVudE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG0gJiYgZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAhbiAmJiAhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChvID0gb1t1XSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSA/IGZlKG8sIGMpIDogMSA9PT0gby5ub2RlVHlwZSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHUgPSAib25seSIgPT09IGQgJiYgIXMgJiYgIm5leHRTaWJsaW5nIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9IFt5ID8gbC5maXJzdENoaWxkIDogbC5sYXN0Q2hpbGRdLCB5ICYmIGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IChhID0gKHIgPSAoaSA9IGxbU10gfHwgKGxbU10gPSB7fSkpW2RdIHx8IFtdKVswXSA9PT0gRSAmJiByWzFdKSAmJiByWzJdLCBvID0gYSAmJiBsLmNoaWxkTm9kZXNbYV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChvID0gKythICYmIG8gJiYgb1t1XSB8fCAocCA9IGEgPSAwKSB8fCBzLnBvcCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IG8ubm9kZVR5cGUgJiYgKytwICYmIG8gPT09IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpW2RdID0gW0UsIGEsIHBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmICYmIChwID0gYSA9IChyID0gKGkgPSBlW1NdIHx8IChlW1NdID0ge30pKVtkXSB8fCBbXSlbMF0gPT09IEUgJiYgclsxXSksICExID09PSBwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAobyA9ICsrYSAmJiBvICYmIG9bdV0gfHwgKHAgPSBhID0gMCkgfHwgcy5wb3AoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobSA/IGZlKG8sIGMpIDogMSA9PT0gby5ub2RlVHlwZSkgJiYgKytwICYmIChmICYmICgoaSA9IG9bU10gfHwgKG9bU10gPSB7fSkpW2RdID0gW0UsIHBdKSwgbyA9PT0gZSkpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocCAtPSBnKSA9PT0gaCB8fCBwICUgaCA9PSAwICYmIDAgPD0gcCAvIGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgUFNFVURPOiBmdW5jdGlvbihlLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0LCBhID0gYi5wc2V1ZG9zW2VdIHx8IGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldIHx8IEkuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIiArIGUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYVtTXSA/IGEobykgOiAxIDwgYS5sZW5ndGggPyAodCA9IFtlLCBlLCAiIiwgb10sIGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpID8gRihmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgciA9IGEoZSwgbyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHIubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGktLSkgZVtuID0gc2UuY2FsbChlLCByW2ldKV0gPSAhKHRbbl0gPSByW2ldKQogICAgICAgICAgICAgICAgICAgICAgICB9KSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhKGUsIDAsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogYQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwc2V1ZG9zOiB7CiAgICAgICAgICAgICAgICAgICAgbm90OiBGKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZShlLnJlcGxhY2UodmUsICIkMSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNbU10gPyBGKGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCBvID0gcyhlLCBudWxsLCByLCBbXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGEtLSkoaSA9IG9bYV0pICYmIChlW2FdID0gISh0W2FdID0gaSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJbMF0gPSBlLCBzKHIsIG51bGwsIG4sIGkpLCByWzBdID0gbnVsbCwgIWkucG9wKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIGhhczogRihmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA8IEkodCwgZSkubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICBjb250YWluczogRihmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gdC5yZXBsYWNlKE8sIFApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSA8IChlLnRleHRDb250ZW50IHx8IGNlLnRleHQoZSkpLmluZGV4T2YodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICBsYW5nOiBGKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEEudGVzdChuIHx8ICIiKSB8fCBJLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiICsgbiksIG4gPSBuLnJlcGxhY2UoTywgUCkudG9Mb3dlckNhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gQyA/IGUubGFuZyA6IGUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpIHx8IGUuZ2V0QXR0cmlidXRlKCJsYW5nIikpIHJldHVybiAodCA9IHQudG9Mb3dlckNhc2UoKSkgPT09IG4gfHwgMCA9PT0gdC5pbmRleE9mKG4gKyAiLSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoKGUgPSBlLnBhcmVudE5vZGUpICYmIDEgPT09IGUubm9kZVR5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGllLmxvY2F0aW9uICYmIGllLmxvY2F0aW9uLmhhc2g7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIHQuc2xpY2UoMSkgPT09IGUuaWQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJvb3Q6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFQuYWN0aXZlRWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICAgICAgfSgpICYmIFQuaGFzRm9jdXMoKSAmJiAhIShlLnR5cGUgfHwgZS5ocmVmIHx8IH5lLnRhYkluZGV4KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogeighMSksCiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHooITApLAogICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZlKGUsICJpbnB1dCIpICYmICEhZS5jaGVja2VkIHx8IGZlKGUsICJvcHRpb24iKSAmJiAhIWUuc2VsZWN0ZWQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnBhcmVudE5vZGUgJiYgZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsICEwID09PSBlLnNlbGVjdGVkCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlbXB0eTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSBlLmZpcnN0Q2hpbGQ7IGU7IGUgPSBlLm5leHRTaWJsaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUubm9kZVR5cGUgPCA2KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhYi5wc2V1ZG9zLmVtcHR5KGUpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHEudGVzdChlLm5vZGVOYW1lKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE4udGVzdChlLm5vZGVOYW1lKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmZShlLCAiaW5wdXQiKSAmJiAiYnV0dG9uIiA9PT0gZS50eXBlIHx8IGZlKGUsICJidXR0b24iKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdGV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZlKGUsICJpbnB1dCIpICYmICJ0ZXh0IiA9PT0gZS50eXBlICYmIChudWxsID09ICh0ID0gZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgfHwgInRleHQiID09PSB0LnRvTG93ZXJDYXNlKCkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBmaXJzdDogWChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFswXQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIGxhc3Q6IFgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3QgLSAxXQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIGVxOiBYKGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtuIDwgMCA/IG4gKyB0IDogbl0KICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICBldmVuOiBYKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0OyBuICs9IDIpIGUucHVzaChuKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICBvZGQ6IFgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMTsgbiA8IHQ7IG4gKz0gMikgZS5wdXNoKG4pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgIGx0OiBYKGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IG4gPCAwID8gbiArIHQgOiB0IDwgbiA/IHQgOiBuOyAwIDw9IC0tcjspIGUucHVzaChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICBndDogWChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBuIDwgMCA/IG4gKyB0IDogbjsgKytyIDwgdDspIGUucHVzaChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KS5wc2V1ZG9zLm50aCA9IGIucHNldWRvcy5lcSwgewogICAgICAgICAgICAgICAgcmFkaW86ICEwLAogICAgICAgICAgICAgICAgY2hlY2tib3g6ICEwLAogICAgICAgICAgICAgICAgZmlsZTogITAsCiAgICAgICAgICAgICAgICBwYXNzd29yZDogITAsCiAgICAgICAgICAgICAgICBpbWFnZTogITAKICAgICAgICAgICAgfSkgYi5wc2V1ZG9zW2VdID0gQihlKTsKICAgICAgICBmb3IgKGUgaW4gewogICAgICAgICAgICAgICAgc3VibWl0OiAhMCwKICAgICAgICAgICAgICAgIHJlc2V0OiAhMAogICAgICAgICAgICB9KSBiLnBzZXVkb3NbZV0gPSBfKGUpOwoKICAgICAgICBmdW5jdGlvbiBHKCkge30KCiAgICAgICAgZnVuY3Rpb24gWShlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByLCBpLCBvLCBhLCBzLCB1LCBsID0gY1tlICsgIiAiXTsKICAgICAgICAgICAgaWYgKGwpIHJldHVybiB0ID8gMCA6IGwuc2xpY2UoMCk7CiAgICAgICAgICAgIGEgPSBlLCBzID0gW10sIHUgPSBiLnByZUZpbHRlcjsKICAgICAgICAgICAgd2hpbGUgKGEpIHsKICAgICAgICAgICAgICAgIGZvciAobyBpbiBuICYmICEociA9IHkuZXhlYyhhKSkgfHwgKHIgJiYgKGEgPSBhLnNsaWNlKHJbMF0ubGVuZ3RoKSB8fCBhKSwgcy5wdXNoKGkgPSBbXSkpLCBuID0gITEsIChyID0gbS5leGVjKGEpKSAmJiAobiA9IHIuc2hpZnQoKSwgaS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHJbMF0ucmVwbGFjZSh2ZSwgIiAiKQogICAgICAgICAgICAgICAgICAgIH0pLCBhID0gYS5zbGljZShuLmxlbmd0aCkpLCBiLmZpbHRlcikgIShyID0gRFtvXS5leGVjKGEpKSB8fCB1W29dICYmICEociA9IHVbb10ocikpIHx8IChuID0gci5zaGlmdCgpLCBpLnB1c2goewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAogICAgICAgICAgICAgICAgICAgIHR5cGU6IG8sCiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlczogcgogICAgICAgICAgICAgICAgfSksIGEgPSBhLnNsaWNlKG4ubGVuZ3RoKSk7CiAgICAgICAgICAgICAgICBpZiAoIW4pIGJyZWFrCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHQgPyBhLmxlbmd0aCA6IGEgPyBJLmVycm9yKGUpIDogYyhlLCBzKS5zbGljZSgwKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUShlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSAwLCBuID0gZS5sZW5ndGgsIHIgPSAiIjsgdCA8IG47IHQrKykgciArPSBlW3RdLnZhbHVlOwogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSihhLCBlLCB0KSB7CiAgICAgICAgICAgIHZhciBzID0gZS5kaXIsCiAgICAgICAgICAgICAgICB1ID0gZS5uZXh0LAogICAgICAgICAgICAgICAgbCA9IHUgfHwgcywKICAgICAgICAgICAgICAgIGMgPSB0ICYmICJwYXJlbnROb2RlIiA9PT0gbCwKICAgICAgICAgICAgICAgIGYgPSBuKys7CiAgICAgICAgICAgIHJldHVybiBlLmZpcnN0ID8gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgd2hpbGUgKGUgPSBlW3NdKQogICAgICAgICAgICAgICAgICAgIGlmICgxID09PSBlLm5vZGVUeXBlIHx8IGMpIHJldHVybiBhKGUsIHQsIG4pOwogICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgaSwgbyA9IFtFLCBmXTsKICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGUgPSBlW3NdKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKDEgPT09IGUubm9kZVR5cGUgfHwgYykgJiYgYShlLCB0LCBuKSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZSA9IGVbc10pCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSBlLm5vZGVUeXBlIHx8IGMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9IGVbU10gfHwgKGVbU10gPSB7fSksIHUgJiYgZmUoZSwgdSkpIGUgPSBlW3NdIHx8IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHIgPSBpW2xdKSAmJiByWzBdID09PSBFICYmIHJbMV0gPT09IGYpIHJldHVybiBvWzJdID0gclsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGlbbF0gPSBvKVsyXSA9IGEoZSwgdCwgbikpIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSByZXR1cm4gITEKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSyhpKSB7CiAgICAgICAgICAgIHJldHVybiAxIDwgaS5sZW5ndGggPyBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IGkubGVuZ3RoOwogICAgICAgICAgICAgICAgd2hpbGUgKHItLSkKICAgICAgICAgICAgICAgICAgICBpZiAoIWlbcl0oZSwgdCwgbikpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICB9IDogaVswXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWihlLCB0LCBuLCByLCBpKSB7CiAgICAgICAgICAgIGZvciAodmFyIG8sIGEgPSBbXSwgcyA9IDAsIHUgPSBlLmxlbmd0aCwgbCA9IG51bGwgIT0gdDsgcyA8IHU7IHMrKykobyA9IGVbc10pICYmIChuICYmICFuKG8sIHIsIGkpIHx8IChhLnB1c2gobyksIGwgJiYgdC5wdXNoKHMpKSk7CiAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBlZShkLCBoLCBnLCB2LCB5LCBlKSB7CiAgICAgICAgICAgIHJldHVybiB2ICYmICF2W1NdICYmICh2ID0gZWUodikpLCB5ICYmICF5W1NdICYmICh5ID0gZWUoeSwgZSkpLCBGKGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgIHZhciBpLCBvLCBhLCBzLCB1ID0gW10sCiAgICAgICAgICAgICAgICAgICAgbCA9IFtdLAogICAgICAgICAgICAgICAgICAgIGMgPSB0Lmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICBmID0gZSB8fCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAwLCBpID0gdC5sZW5ndGg7IHIgPCBpOyByKyspIEkoZSwgdFtyXSwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgfShoIHx8ICIqIiwgbi5ub2RlVHlwZSA/IFtuXSA6IG4sIFtdKSwKICAgICAgICAgICAgICAgICAgICBwID0gIWQgfHwgIWUgJiYgaCA/IGYgOiBaKGYsIHUsIGQsIG4sIHIpOwogICAgICAgICAgICAgICAgaWYgKGcgPyBnKHAsIHMgPSB5IHx8IChlID8gZCA6IGMgfHwgdikgPyBbXSA6IHQsIG4sIHIpIDogcyA9IHAsIHYpIHsKICAgICAgICAgICAgICAgICAgICBpID0gWihzLCBsKSwgdihpLCBbXSwgbiwgciksIG8gPSBpLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoby0tKShhID0gaVtvXSkgJiYgKHNbbFtvXV0gPSAhKHBbbFtvXV0gPSBhKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHkgfHwgZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFtdLCBvID0gcy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoby0tKShhID0gc1tvXSkgJiYgaS5wdXNoKHBbb10gPSBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkobnVsbCwgcyA9IFtdLCBpLCByKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBzLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG8tLSkoYSA9IHNbb10pICYmIC0xIDwgKGkgPSB5ID8gc2UuY2FsbChlLCBhKSA6IHVbb10pICYmIChlW2ldID0gISh0W2ldID0gYSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHMgPSBaKHMgPT09IHQgPyBzLnNwbGljZShjLCBzLmxlbmd0aCkgOiBzKSwgeSA/IHkobnVsbCwgdCwgcywgcikgOiBrLmFwcGx5KHQsIHMpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB0ZShlKSB7CiAgICAgICAgICAgIGZvciAodmFyIGksIHQsIG4sIHIgPSBlLmxlbmd0aCwgbyA9IGIucmVsYXRpdmVbZVswXS50eXBlXSwgYSA9IG8gfHwgYi5yZWxhdGl2ZVsiICJdLCBzID0gbyA/IDEgOiAwLCB1ID0gSihmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IGkKICAgICAgICAgICAgICAgIH0sIGEsICEwKSwgbCA9IEooZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSA8IHNlLmNhbGwoaSwgZSkKICAgICAgICAgICAgICAgIH0sIGEsICEwKSwgYyA9IFtmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAhbyAmJiAobiB8fCB0ICE9IHcpIHx8ICgoaSA9IHQpLm5vZGVUeXBlID8gdShlLCB0LCBuKSA6IGwoZSwgdCwgbikpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpID0gbnVsbCwgcgogICAgICAgICAgICAgICAgfV07IHMgPCByOyBzKyspCiAgICAgICAgICAgICAgICBpZiAodCA9IGIucmVsYXRpdmVbZVtzXS50eXBlXSkgYyA9IFtKKEsoYyksIHQpXTsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgodCA9IGIuZmlsdGVyW2Vbc10udHlwZV0uYXBwbHkobnVsbCwgZVtzXS5tYXRjaGVzKSlbU10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gKytzOyBuIDwgcjsgbisrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIucmVsYXRpdmVbZVtuXS50eXBlXSkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZSgxIDwgcyAmJiBLKGMpLCAxIDwgcyAmJiBRKGUuc2xpY2UoMCwgcyAtIDEpLmNvbmNhdCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogIiAiID09PSBlW3MgLSAyXS50eXBlID8gIioiIDogIiIKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLnJlcGxhY2UodmUsICIkMSIpLCB0LCBzIDwgbiAmJiB0ZShlLnNsaWNlKHMsIG4pKSwgbiA8IHIgJiYgdGUoZSA9IGUuc2xpY2UobikpLCBuIDwgciAmJiBRKGUpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjLnB1c2godCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIEsoYykKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG5lKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4sIHYsIHksIG0sIHgsIHIsIGkgPSBbXSwKICAgICAgICAgICAgICAgIG8gPSBbXSwKICAgICAgICAgICAgICAgIGEgPSB1W2UgKyAiICJdOwogICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgIHQgfHwgKHQgPSBZKGUpKSwgbiA9IHQubGVuZ3RoOwogICAgICAgICAgICAgICAgd2hpbGUgKG4tLSkoYSA9IHRlKHRbbl0pKVtTXSA/IGkucHVzaChhKSA6IG8ucHVzaChhKTsKICAgICAgICAgICAgICAgIChhID0gdShlLCAodiA9IG8sIG0gPSAwIDwgKHkgPSBpKS5sZW5ndGgsIHggPSAwIDwgdi5sZW5ndGgsIHIgPSBmdW5jdGlvbihlLCB0LCBuLCByLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8sIGEsIHMsIHUgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gZSAmJiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gdywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGUgfHwgeCAmJiBiLmZpbmQuVEFHKCIqIiwgaSksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBFICs9IG51bGwgPT0gcCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IC4xLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gZC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZm9yIChpICYmICh3ID0gdCA9PSBUIHx8IHQgfHwgaSk7IGwgIT09IGcgJiYgbnVsbCAhPSAobyA9IGRbbF0pOyBsKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggJiYgbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDAsIHQgfHwgby5vd25lckRvY3VtZW50ID09IFQgfHwgKFYobyksIG4gPSAhQyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocyA9IHZbYSsrXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyhvLCB0IHx8IFQsIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsuY2FsbChyLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICYmIChFID0gaCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBtICYmICgobyA9ICFzICYmIG8pICYmIHUtLSwgZSAmJiBjLnB1c2gobykpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh1ICs9IGwsIG0gJiYgbCAhPT0gdSkgewogICAgICAgICAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMgPSB5W2ErK10pIHMoYywgZiwgdCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA8IHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGwtLSkgY1tsXSB8fCBmW2xdIHx8IChmW2xdID0gcGUuY2FsbChyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gWihmKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGsuYXBwbHkociwgZiksIGkgJiYgIWUgJiYgMCA8IGYubGVuZ3RoICYmIDEgPCB1ICsgeS5sZW5ndGggJiYgY2UudW5pcXVlU29ydChyKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSAmJiAoRSA9IGgsIHcgPSBwKSwgYwogICAgICAgICAgICAgICAgfSwgbSA/IEYocikgOiByKSkpLnNlbGVjdG9yID0gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZShlLCB0LCBuLCByKSB7CiAgICAgICAgICAgIHZhciBpLCBvLCBhLCBzLCB1LCBsID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSAmJiBlLAogICAgICAgICAgICAgICAgYyA9ICFyICYmIFkoZSA9IGwuc2VsZWN0b3IgfHwgZSk7CiAgICAgICAgICAgIGlmIChuID0gbiB8fCBbXSwgMSA9PT0gYy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGlmICgyIDwgKG8gPSBjWzBdID0gY1swXS5zbGljZSgwKSkubGVuZ3RoICYmICJJRCIgPT09IChhID0gb1swXSkudHlwZSAmJiA5ID09PSB0Lm5vZGVUeXBlICYmIEMgJiYgYi5yZWxhdGl2ZVtvWzFdLnR5cGVdKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IChiLmZpbmQuSUQoYS5tYXRjaGVzWzBdLnJlcGxhY2UoTywgUCksIHQpIHx8IFtdKVswXSkpIHJldHVybiBuOwogICAgICAgICAgICAgICAgICAgIGwgJiYgKHQgPSB0LnBhcmVudE5vZGUpLCBlID0gZS5zbGljZShvLnNoaWZ0KCkudmFsdWUubGVuZ3RoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaSA9IEQubmVlZHNDb250ZXh0LnRlc3QoZSkgPyAwIDogby5sZW5ndGg7CiAgICAgICAgICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBvW2ldLCBiLnJlbGF0aXZlW3MgPSBhLnR5cGVdKSBicmVhazsKICAgICAgICAgICAgICAgICAgICBpZiAoKHUgPSBiLmZpbmRbc10pICYmIChyID0gdShhLm1hdGNoZXNbMF0ucmVwbGFjZShPLCBQKSwgSC50ZXN0KG9bMF0udHlwZSkgJiYgVSh0LnBhcmVudE5vZGUpIHx8IHQpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5zcGxpY2UoaSwgMSksICEoZSA9IHIubGVuZ3RoICYmIFEobykpKSByZXR1cm4gay5hcHBseShuLCByKSwgbjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIChsIHx8IG5lKGUsIGMpKShyLCB0LCAhQywgbiwgIXQgfHwgSC50ZXN0KGUpICYmIFUodC5wYXJlbnROb2RlKSB8fCB0KSwgbgogICAgICAgIH0KICAgICAgICBHLnByb3RvdHlwZSA9IGIuZmlsdGVycyA9IGIucHNldWRvcywgYi5zZXRGaWx0ZXJzID0gbmV3IEcsIGxlLnNvcnRTdGFibGUgPSBTLnNwbGl0KCIiKS5zb3J0KGwpLmpvaW4oIiIpID09PSBTLCBWKCksIGxlLnNvcnREZXRhY2hlZCA9ICQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gMSAmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKQogICAgICAgIH0pLCBjZS5maW5kID0gSSwgY2UuZXhwclsiOiJdID0gY2UuZXhwci5wc2V1ZG9zLCBjZS51bmlxdWUgPSBjZS51bmlxdWVTb3J0LCBJLmNvbXBpbGUgPSBuZSwgSS5zZWxlY3QgPSByZSwgSS5zZXREb2N1bWVudCA9IFYsIEkudG9rZW5pemUgPSBZLCBJLmVzY2FwZSA9IGNlLmVzY2FwZVNlbGVjdG9yLCBJLmdldFRleHQgPSBjZS50ZXh0LCBJLmlzWE1MID0gY2UuaXNYTUxEb2MsIEkuc2VsZWN0b3JzID0gY2UuZXhwciwgSS5zdXBwb3J0ID0gY2Uuc3VwcG9ydCwgSS51bmlxdWVTb3J0ID0gY2UudW5pcXVlU29ydAogICAgfSgpOwogICAgdmFyIGQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByID0gW10sCiAgICAgICAgICAgICAgICBpID0gdm9pZCAwICE9PSBuOwogICAgICAgICAgICB3aGlsZSAoKGUgPSBlW3RdKSAmJiA5ICE9PSBlLm5vZGVUeXBlKQogICAgICAgICAgICAgICAgaWYgKDEgPT09IGUubm9kZVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSAmJiBjZShlKS5pcyhuKSkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgci5wdXNoKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgfSwKICAgICAgICBoID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBmb3IgKHZhciBuID0gW107IGU7IGUgPSBlLm5leHRTaWJsaW5nKSAxID09PSBlLm5vZGVUeXBlICYmIGUgIT09IHQgJiYgbi5wdXNoKGUpOwogICAgICAgICAgICByZXR1cm4gbgogICAgICAgIH0sCiAgICAgICAgYiA9IGNlLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LAogICAgICAgIHcgPSAvXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTsKCiAgICBmdW5jdGlvbiBUKGUsIG4sIHIpIHsKICAgICAgICByZXR1cm4gdihuKSA/IGNlLmdyZXAoZSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gISFuLmNhbGwoZSwgdCwgZSkgIT09IHIKICAgICAgICB9KSA6IG4ubm9kZVR5cGUgPyBjZS5ncmVwKGUsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgPT09IG4gIT09IHIKICAgICAgICB9KSA6ICJzdHJpbmciICE9IHR5cGVvZiBuID8gY2UuZ3JlcChlLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAtMSA8IHNlLmNhbGwobiwgZSkgIT09IHIKICAgICAgICB9KSA6IGNlLmZpbHRlcihuLCBlLCByKQogICAgfQogICAgY2UuZmlsdGVyID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciByID0gdFswXTsKICAgICAgICByZXR1cm4gbiAmJiAoZSA9ICI6bm90KCIgKyBlICsgIikiKSwgMSA9PT0gdC5sZW5ndGggJiYgMSA9PT0gci5ub2RlVHlwZSA/IGNlLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsIGUpID8gW3JdIDogW10gOiBjZS5maW5kLm1hdGNoZXMoZSwgY2UuZ3JlcCh0LCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAxID09PSBlLm5vZGVUeXBlCiAgICAgICAgfSkpCiAgICB9LCBjZS5mbi5leHRlbmQoewogICAgICAgIGZpbmQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4sIHIgPSB0aGlzLmxlbmd0aCwKICAgICAgICAgICAgICAgIGkgPSB0aGlzOwogICAgICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIGUpIHJldHVybiB0aGlzLnB1c2hTdGFjayhjZShlKS5maWx0ZXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgcjsgdCsrKQogICAgICAgICAgICAgICAgICAgIGlmIChjZS5jb250YWlucyhpW3RdLCB0aGlzKSkgcmV0dXJuICEwCiAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgZm9yIChuID0gdGhpcy5wdXNoU3RhY2soW10pLCB0ID0gMDsgdCA8IHI7IHQrKykgY2UuZmluZChlLCBpW3RdLCBuKTsKICAgICAgICAgICAgcmV0dXJuIDEgPCByID8gY2UudW5pcXVlU29ydChuKSA6IG4KICAgICAgICB9LAogICAgICAgIGZpbHRlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soVCh0aGlzLCBlIHx8IFtdLCAhMSkpCiAgICAgICAgfSwKICAgICAgICBub3Q6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKFQodGhpcywgZSB8fCBbXSwgITApKQogICAgICAgIH0sCiAgICAgICAgaXM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICEhVCh0aGlzLCAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiBiLnRlc3QoZSkgPyBjZShlKSA6IGUgfHwgW10sICExKS5sZW5ndGgKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBrLCBTID0gL14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLzsKICAgIChjZS5mbi5pbml0ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciByLCBpOwogICAgICAgIGlmICghZSkgcmV0dXJuIHRoaXM7CiAgICAgICAgaWYgKG4gPSBuIHx8IGssICJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgIGlmICghKHIgPSAiPCIgPT09IGVbMF0gJiYgIj4iID09PSBlW2UubGVuZ3RoIC0gMV0gJiYgMyA8PSBlLmxlbmd0aCA/IFtudWxsLCBlLCBudWxsXSA6IFMuZXhlYyhlKSkgfHwgIXJbMV0gJiYgdCkgcmV0dXJuICF0IHx8IHQuanF1ZXJ5ID8gKHQgfHwgbikuZmluZChlKSA6IHRoaXMuY29uc3RydWN0b3IodCkuZmluZChlKTsKICAgICAgICAgICAgaWYgKHJbMV0pIHsKICAgICAgICAgICAgICAgIGlmICh0ID0gdCBpbnN0YW5jZW9mIGNlID8gdFswXSA6IHQsIGNlLm1lcmdlKHRoaXMsIGNlLnBhcnNlSFRNTChyWzFdLCB0ICYmIHQubm9kZVR5cGUgPyB0Lm93bmVyRG9jdW1lbnQgfHwgdCA6IEMsICEwKSksIHcudGVzdChyWzFdKSAmJiBjZS5pc1BsYWluT2JqZWN0KHQpKQogICAgICAgICAgICAgICAgICAgIGZvciAociBpbiB0KSB2KHRoaXNbcl0pID8gdGhpc1tyXSh0W3JdKSA6IHRoaXMuYXR0cihyLCB0W3JdKTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIChpID0gQy5nZXRFbGVtZW50QnlJZChyWzJdKSkgJiYgKHRoaXNbMF0gPSBpLCB0aGlzLmxlbmd0aCA9IDEpLCB0aGlzCiAgICAgICAgfQogICAgICAgIHJldHVybiBlLm5vZGVUeXBlID8gKHRoaXNbMF0gPSBlLCB0aGlzLmxlbmd0aCA9IDEsIHRoaXMpIDogdihlKSA/IHZvaWQgMCAhPT0gbi5yZWFkeSA/IG4ucmVhZHkoZSkgOiBlKGNlKSA6IGNlLm1ha2VBcnJheShlLCB0aGlzKQogICAgfSkucHJvdG90eXBlID0gY2UuZm4sIGsgPSBjZShDKTsKICAgIHZhciBFID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sCiAgICAgICAgaiA9IHsKICAgICAgICAgICAgY2hpbGRyZW46ICEwLAogICAgICAgICAgICBjb250ZW50czogITAsCiAgICAgICAgICAgIG5leHQ6ICEwLAogICAgICAgICAgICBwcmV2OiAhMAogICAgICAgIH07CgogICAgZnVuY3Rpb24gQShlLCB0KSB7CiAgICAgICAgd2hpbGUgKChlID0gZVt0XSkgJiYgMSAhPT0gZS5ub2RlVHlwZSk7CiAgICAgICAgcmV0dXJuIGUKICAgIH0KICAgIGNlLmZuLmV4dGVuZCh7CiAgICAgICAgaGFzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gY2UoZSwgdGhpcyksCiAgICAgICAgICAgICAgICBuID0gdC5sZW5ndGg7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgbjsgZSsrKQogICAgICAgICAgICAgICAgICAgIGlmIChjZS5jb250YWlucyh0aGlzLCB0W2VdKSkgcmV0dXJuICEwCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBjbG9zZXN0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByID0gMCwKICAgICAgICAgICAgICAgIGkgPSB0aGlzLmxlbmd0aCwKICAgICAgICAgICAgICAgIG8gPSBbXSwKICAgICAgICAgICAgICAgIGEgPSAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiBjZShlKTsKICAgICAgICAgICAgaWYgKCFiLnRlc3QoZSkpCiAgICAgICAgICAgICAgICBmb3IgKDsgciA8IGk7IHIrKykKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSB0aGlzW3JdOyBuICYmIG4gIT09IHQ7IG4gPSBuLnBhcmVudE5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLm5vZGVUeXBlIDwgMTEgJiYgKGEgPyAtMSA8IGEuaW5kZXgobikgOiAxID09PSBuLm5vZGVUeXBlICYmIGNlLmZpbmQubWF0Y2hlc1NlbGVjdG9yKG4sIGUpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5wdXNoKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soMSA8IG8ubGVuZ3RoID8gY2UudW5pcXVlU29ydChvKSA6IG8pCiAgICAgICAgfSwKICAgICAgICBpbmRleDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZSA/ICJzdHJpbmciID09IHR5cGVvZiBlID8gc2UuY2FsbChjZShlKSwgdGhpc1swXSkgOiBzZS5jYWxsKHRoaXMsIGUuanF1ZXJ5ID8gZVswXSA6IGUpIDogdGhpc1swXSAmJiB0aGlzWzBdLnBhcmVudE5vZGUgPyB0aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aCA6IC0xCiAgICAgICAgfSwKICAgICAgICBhZGQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGNlLnVuaXF1ZVNvcnQoY2UubWVyZ2UodGhpcy5nZXQoKSwgY2UoZSwgdCkpKSkKICAgICAgICB9LAogICAgICAgIGFkZEJhY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKG51bGwgPT0gZSA/IHRoaXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpCiAgICAgICAgfQogICAgfSksIGNlLmVhY2goewogICAgICAgIHBhcmVudDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IGUucGFyZW50Tm9kZTsKICAgICAgICAgICAgcmV0dXJuIHQgJiYgMTEgIT09IHQubm9kZVR5cGUgPyB0IDogbnVsbAogICAgICAgIH0sCiAgICAgICAgcGFyZW50czogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZChlLCAicGFyZW50Tm9kZSIpCiAgICAgICAgfSwKICAgICAgICBwYXJlbnRzVW50aWw6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIGQoZSwgInBhcmVudE5vZGUiLCBuKQogICAgICAgIH0sCiAgICAgICAgbmV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gQShlLCAibmV4dFNpYmxpbmciKQogICAgICAgIH0sCiAgICAgICAgcHJldjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gQShlLCAicHJldmlvdXNTaWJsaW5nIikKICAgICAgICB9LAogICAgICAgIG5leHRBbGw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGQoZSwgIm5leHRTaWJsaW5nIikKICAgICAgICB9LAogICAgICAgIHByZXZBbGw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGQoZSwgInByZXZpb3VzU2libGluZyIpCiAgICAgICAgfSwKICAgICAgICBuZXh0VW50aWw6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIGQoZSwgIm5leHRTaWJsaW5nIiwgbikKICAgICAgICB9LAogICAgICAgIHByZXZVbnRpbDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gZChlLCAicHJldmlvdXNTaWJsaW5nIiwgbikKICAgICAgICB9LAogICAgICAgIHNpYmxpbmdzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBoKChlLnBhcmVudE5vZGUgfHwge30pLmZpcnN0Q2hpbGQsIGUpCiAgICAgICAgfSwKICAgICAgICBjaGlsZHJlbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gaChlLmZpcnN0Q2hpbGQpCiAgICAgICAgfSwKICAgICAgICBjb250ZW50czogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlLmNvbnRlbnREb2N1bWVudCAmJiByKGUuY29udGVudERvY3VtZW50KSA/IGUuY29udGVudERvY3VtZW50IDogKGZlKGUsICJ0ZW1wbGF0ZSIpICYmIChlID0gZS5jb250ZW50IHx8IGUpLCBjZS5tZXJnZShbXSwgZS5jaGlsZE5vZGVzKSkKICAgICAgICB9CiAgICB9LCBmdW5jdGlvbihyLCBpKSB7CiAgICAgICAgY2UuZm5bcl0gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gY2UubWFwKHRoaXMsIGksIGUpOwogICAgICAgICAgICByZXR1cm4gIlVudGlsIiAhPT0gci5zbGljZSgtNSkgJiYgKHQgPSBlKSwgdCAmJiAic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAobiA9IGNlLmZpbHRlcih0LCBuKSksIDEgPCB0aGlzLmxlbmd0aCAmJiAoaltyXSB8fCBjZS51bmlxdWVTb3J0KG4pLCBFLnRlc3QocikgJiYgbi5yZXZlcnNlKCkpLCB0aGlzLnB1c2hTdGFjayhuKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIEQgPSAvW15ceDIwXHRcclxuXGZdKy9nOwoKICAgIGZ1bmN0aW9uIE4oZSkgewogICAgICAgIHJldHVybiBlCiAgICB9CgogICAgZnVuY3Rpb24gcShlKSB7CiAgICAgICAgdGhyb3cgZQogICAgfQoKICAgIGZ1bmN0aW9uIEwoZSwgdCwgbiwgcikgewogICAgICAgIHZhciBpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGUgJiYgdihpID0gZS5wcm9taXNlKSA/IGkuY2FsbChlKS5kb25lKHQpLmZhaWwobikgOiBlICYmIHYoaSA9IGUudGhlbikgPyBpLmNhbGwoZSwgdCwgbikgOiB0LmFwcGx5KHZvaWQgMCwgW2VdLnNsaWNlKHIpKQogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgbi5hcHBseSh2b2lkIDAsIFtlXSkKICAgICAgICB9CiAgICB9CiAgICBjZS5DYWxsYmFja3MgPSBmdW5jdGlvbihyKSB7CiAgICAgICAgdmFyIGUsIG47CiAgICAgICAgciA9ICJzdHJpbmciID09IHR5cGVvZiByID8gKGUgPSByLCBuID0ge30sIGNlLmVhY2goZS5tYXRjaChEKSB8fCBbXSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBuW3RdID0gITAKICAgICAgICB9KSwgbikgOiBjZS5leHRlbmQoe30sIHIpOwogICAgICAgIHZhciBpLCB0LCBvLCBhLCBzID0gW10sCiAgICAgICAgICAgIHUgPSBbXSwKICAgICAgICAgICAgbCA9IC0xLAogICAgICAgICAgICBjID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKGEgPSBhIHx8IHIub25jZSwgbyA9IGkgPSAhMDsgdS5sZW5ndGg7IGwgPSAtMSkgewogICAgICAgICAgICAgICAgICAgIHQgPSB1LnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCsrbCA8IHMubGVuZ3RoKSAhMSA9PT0gc1tsXS5hcHBseSh0WzBdLCB0WzFdKSAmJiByLnN0b3BPbkZhbHNlICYmIChsID0gcy5sZW5ndGgsIHQgPSAhMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHIubWVtb3J5IHx8ICh0ID0gITEpLCBpID0gITEsIGEgJiYgKHMgPSB0ID8gW10gOiAiIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZiA9IHsKICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgJiYgKHQgJiYgIWkgJiYgKGwgPSBzLmxlbmd0aCAtIDEsIHUucHVzaCh0KSksIGZ1bmN0aW9uIG4oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjZS5lYWNoKGUsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYodCkgPyByLnVuaXF1ZSAmJiBmLmhhcyh0KSB8fCBzLnB1c2godCkgOiB0ICYmIHQubGVuZ3RoICYmICJzdHJpbmciICE9PSB4KHQpICYmIG4odCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KGFyZ3VtZW50cyksIHQgJiYgIWkgJiYgYygpKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNlLmVhY2goYXJndW1lbnRzLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoLTEgPCAobiA9IGNlLmluQXJyYXkodCwgcywgbikpKSBzLnNwbGljZShuLCAxKSwgbiA8PSBsICYmIGwtLQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaGFzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPyAtMSA8IGNlLmluQXJyYXkoZSwgcykgOiAwIDwgcy5sZW5ndGgKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbXB0eTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgJiYgKHMgPSBbXSksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA9IHUgPSBbXSwgcyA9IHQgPSAiIiwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBsb2NrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA9IHUgPSBbXSwgdCB8fCBpIHx8IChzID0gdCA9ICIiKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGxvY2tlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhYQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpcmVXaXRoOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgfHwgKHQgPSBbZSwgKHQgPSB0IHx8IFtdKS5zbGljZSA/IHQuc2xpY2UoKSA6IHRdLCB1LnB1c2godCksIGkgfHwgYygpKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpcmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmLmZpcmVXaXRoKHRoaXMsIGFyZ3VtZW50cyksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmaXJlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIHJldHVybiBmCiAgICB9LCBjZS5leHRlbmQoewogICAgICAgIERlZmVycmVkOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBvID0gWwogICAgICAgICAgICAgICAgICAgIFsibm90aWZ5IiwgInByb2dyZXNzIiwgY2UuQ2FsbGJhY2tzKCJtZW1vcnkiKSwgY2UuQ2FsbGJhY2tzKCJtZW1vcnkiKSwgMl0sCiAgICAgICAgICAgICAgICAgICAgWyJyZXNvbHZlIiwgImRvbmUiLCBjZS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIGNlLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgMCwgInJlc29sdmVkIl0sCiAgICAgICAgICAgICAgICAgICAgWyJyZWplY3QiLCAiZmFpbCIsIGNlLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgY2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAxLCAicmVqZWN0ZWQiXQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIGkgPSAicGVuZGluZyIsCiAgICAgICAgICAgICAgICBhID0gewogICAgICAgICAgICAgICAgICAgIHN0YXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFsd2F5czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJjYXRjaCI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEudGhlbihudWxsLCBlKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcGlwZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2UuRGVmZXJyZWQoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2UuZWFjaChvLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB2KGlbdFs0XV0pICYmIGlbdFs0XV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1t0WzFdXShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuICYmIG4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiB2KGUucHJvbWlzZSkgPyBlLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29sdmUpLmZhaWwoci5yZWplY3QpIDogclt0WzBdICsgIldpdGgiXSh0aGlzLCBuID8gW2VdIDogYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaSA9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfSkucHJvbWlzZSgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbih0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoaSwgbywgYSwgcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGFyZ3VtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShpIDwgdSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGUgPSBhLmFwcGx5KG4sIHIpKSA9PT0gby5wcm9taXNlKCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlICYmICgib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlKSAmJiBlLnRoZW4sIHYodCkgPyBzID8gdC5jYWxsKGUsIGwodSwgbywgTiwgcyksIGwodSwgbywgcSwgcykpIDogKHUrKywgdC5jYWxsKGUsIGwodSwgbywgTiwgcyksIGwodSwgbywgcSwgcyksIGwodSwgbywgTiwgby5ub3RpZnlXaXRoKSkpIDogKGEgIT09IE4gJiYgKG4gPSB2b2lkIDAsIHIgPSBbZV0pLCAocyB8fCBvLnJlc29sdmVXaXRoKShuLCByKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHMgPyBlIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgJiYgY2UuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhlLCB0LmVycm9yKSwgdSA8PSBpICsgMSAmJiAoYSAhPT0gcSAmJiAobiA9IHZvaWQgMCwgciA9IFtlXSksIG8ucmVqZWN0V2l0aChuLCByKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID8gdCgpIDogKGNlLkRlZmVycmVkLmdldEVycm9ySG9vayA/IHQuZXJyb3IgPSBjZS5EZWZlcnJlZC5nZXRFcnJvckhvb2soKSA6IGNlLkRlZmVycmVkLmdldFN0YWNrSG9vayAmJiAodC5lcnJvciA9IGNlLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSwgaWUuc2V0VGltZW91dCh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2UuRGVmZXJyZWQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb1swXVszXS5hZGQobCgwLCBlLCB2KHIpID8gciA6IE4sIGUubm90aWZ5V2l0aCkpLCBvWzFdWzNdLmFkZChsKDAsIGUsIHYodCkgPyB0IDogTikpLCBvWzJdWzNdLmFkZChsKDAsIGUsIHYobikgPyBuIDogcSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLnByb21pc2UoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlID8gY2UuZXh0ZW5kKGUsIGEpIDogYQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzID0ge307CiAgICAgICAgICAgIHJldHVybiBjZS5lYWNoKG8sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gdFsyXSwKICAgICAgICAgICAgICAgICAgICByID0gdFs1XTsKICAgICAgICAgICAgICAgIGFbdFsxXV0gPSBuLmFkZCwgciAmJiBuLmFkZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpID0gcgogICAgICAgICAgICAgICAgfSwgb1szIC0gZV1bMl0uZGlzYWJsZSwgb1szIC0gZV1bM10uZGlzYWJsZSwgb1swXVsyXS5sb2NrLCBvWzBdWzNdLmxvY2spLCBuLmFkZCh0WzNdLmZpcmUpLCBzW3RbMF1dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNbdFswXSArICJXaXRoIl0odGhpcyA9PT0gcyA/IHZvaWQgMCA6IHRoaXMsIGFyZ3VtZW50cyksIHRoaXMKICAgICAgICAgICAgICAgIH0sIHNbdFswXSArICJXaXRoIl0gPSBuLmZpcmVXaXRoCiAgICAgICAgICAgIH0pLCBhLnByb21pc2UocyksIGUgJiYgZS5jYWxsKHMsIHMpLCBzCiAgICAgICAgfSwKICAgICAgICB3aGVuOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCwKICAgICAgICAgICAgICAgIHQgPSBuLAogICAgICAgICAgICAgICAgciA9IEFycmF5KHQpLAogICAgICAgICAgICAgICAgaSA9IGFlLmNhbGwoYXJndW1lbnRzKSwKICAgICAgICAgICAgICAgIG8gPSBjZS5EZWZlcnJlZCgpLAogICAgICAgICAgICAgICAgYSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByW3RdID0gdGhpcywgaVt0XSA9IDEgPCBhcmd1bWVudHMubGVuZ3RoID8gYWUuY2FsbChhcmd1bWVudHMpIDogZSwgLS1uIHx8IG8ucmVzb2x2ZVdpdGgociwgaSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAobiA8PSAxICYmIChMKGUsIG8uZG9uZShhKHQpKS5yZXNvbHZlLCBvLnJlamVjdCwgIW4pLCAicGVuZGluZyIgPT09IG8uc3RhdGUoKSB8fCB2KGlbdF0gJiYgaVt0XS50aGVuKSkpIHJldHVybiBvLnRoZW4oKTsKICAgICAgICAgICAgd2hpbGUgKHQtLSkgTChpW3RdLCBhKHQpLCBvLnJlamVjdCk7CiAgICAgICAgICAgIHJldHVybiBvLnByb21pc2UoKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIEggPSAvXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLzsKICAgIGNlLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgaWUuY29uc29sZSAmJiBpZS5jb25zb2xlLndhcm4gJiYgZSAmJiBILnRlc3QoZS5uYW1lKSAmJiBpZS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIgKyBlLm1lc3NhZ2UsIGUuc3RhY2ssIHQpCiAgICB9LCBjZS5yZWFkeUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICBpZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aHJvdyBlCiAgICAgICAgfSkKICAgIH07CiAgICB2YXIgTyA9IGNlLkRlZmVycmVkKCk7CgogICAgZnVuY3Rpb24gUCgpIHsKICAgICAgICBDLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBQKSwgaWUucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsIFApLCBjZS5yZWFkeSgpCiAgICB9CiAgICBjZS5mbi5yZWFkeSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gTy50aGVuKGUpWyJjYXRjaCJdKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgY2UucmVhZHlFeGNlcHRpb24oZSkKICAgICAgICB9KSwgdGhpcwogICAgfSwgY2UuZXh0ZW5kKHsKICAgICAgICBpc1JlYWR5OiAhMSwKICAgICAgICByZWFkeVdhaXQ6IDEsCiAgICAgICAgcmVhZHk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgKCEwID09PSBlID8gLS1jZS5yZWFkeVdhaXQgOiBjZS5pc1JlYWR5KSB8fCAoY2UuaXNSZWFkeSA9ICEwKSAhPT0gZSAmJiAwIDwgLS1jZS5yZWFkeVdhaXQgfHwgTy5yZXNvbHZlV2l0aChDLCBbY2VdKQogICAgICAgIH0KICAgIH0pLCBjZS5yZWFkeS50aGVuID0gTy50aGVuLCAiY29tcGxldGUiID09PSBDLnJlYWR5U3RhdGUgfHwgImxvYWRpbmciICE9PSBDLnJlYWR5U3RhdGUgJiYgIUMuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsID8gaWUuc2V0VGltZW91dChjZS5yZWFkeSkgOiAoQy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgUCksIGllLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBQKSk7CiAgICB2YXIgTSA9IGZ1bmN0aW9uKGUsIHQsIG4sIHIsIGksIG8sIGEpIHsKICAgICAgICAgICAgdmFyIHMgPSAwLAogICAgICAgICAgICAgICAgdSA9IGUubGVuZ3RoLAogICAgICAgICAgICAgICAgbCA9IG51bGwgPT0gbjsKICAgICAgICAgICAgaWYgKCJvYmplY3QiID09PSB4KG4pKQogICAgICAgICAgICAgICAgZm9yIChzIGluIGkgPSAhMCwgbikgTShlLCB0LCBzLCBuW3NdLCAhMCwgbywgYSk7CiAgICAgICAgICAgIGVsc2UgaWYgKHZvaWQgMCAhPT0gciAmJiAoaSA9ICEwLCB2KHIpIHx8IChhID0gITApLCBsICYmIChhID8gKHQuY2FsbChlLCByKSwgdCA9IG51bGwpIDogKGwgPSB0LCB0ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBsLmNhbGwoY2UoZSksIG4pCiAgICAgICAgICAgICAgICB9KSksIHQpKQogICAgICAgICAgICAgICAgZm9yICg7IHMgPCB1OyBzKyspIHQoZVtzXSwgbiwgYSA/IHIgOiByLmNhbGwoZVtzXSwgcywgdChlW3NdLCBuKSkpOwogICAgICAgICAgICByZXR1cm4gaSA/IGUgOiBsID8gdC5jYWxsKGUpIDogdSA/IHQoZVswXSwgbikgOiBvCiAgICAgICAgfSwKICAgICAgICBSID0gL14tbXMtLywKICAgICAgICBJID0gLy0oW2Etel0pL2c7CgogICAgZnVuY3Rpb24gVyhlLCB0KSB7CiAgICAgICAgcmV0dXJuIHQudG9VcHBlckNhc2UoKQogICAgfQoKICAgIGZ1bmN0aW9uIEYoZSkgewogICAgICAgIHJldHVybiBlLnJlcGxhY2UoUiwgIm1zLSIpLnJlcGxhY2UoSSwgVykKICAgIH0KICAgIHZhciAkID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiAxID09PSBlLm5vZGVUeXBlIHx8IDkgPT09IGUubm9kZVR5cGUgfHwgIStlLm5vZGVUeXBlCiAgICB9OwoKICAgIGZ1bmN0aW9uIEIoKSB7CiAgICAgICAgdGhpcy5leHBhbmRvID0gY2UuZXhwYW5kbyArIEIudWlkKysKICAgIH0KICAgIEIudWlkID0gMSwgQi5wcm90b3R5cGUgPSB7CiAgICAgICAgY2FjaGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlW3RoaXMuZXhwYW5kb107CiAgICAgICAgICAgIHJldHVybiB0IHx8ICh0ID0ge30sICQoZSkgJiYgKGUubm9kZVR5cGUgPyBlW3RoaXMuZXhwYW5kb10gPSB0IDogT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRoaXMuZXhwYW5kbywgewogICAgICAgICAgICAgICAgdmFsdWU6IHQsCiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgIH0pKSksIHQKICAgICAgICB9LAogICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciwgaSA9IHRoaXMuY2FjaGUoZSk7CiAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkgaVtGKHQpXSA9IG47CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAociBpbiB0KSBpW0YocildID0gdFtyXTsKICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICB9LAogICAgICAgIGdldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0ID8gdGhpcy5jYWNoZShlKSA6IGVbdGhpcy5leHBhbmRvXSAmJiBlW3RoaXMuZXhwYW5kb11bRih0KV0KICAgICAgICB9LAogICAgICAgIGFjY2VzczogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0IHx8IHQgJiYgInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgdm9pZCAwID09PSBuID8gdGhpcy5nZXQoZSwgdCkgOiAodGhpcy5zZXQoZSwgdCwgbiksIHZvaWQgMCAhPT0gbiA/IG4gOiB0KQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByID0gZVt0aGlzLmV4cGFuZG9dOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSByKSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgbiA9ICh0ID0gQXJyYXkuaXNBcnJheSh0KSA/IHQubWFwKEYpIDogKHQgPSBGKHQpKSBpbiByID8gW3RdIDogdC5tYXRjaChEKSB8fCBbXSkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChuLS0pIGRlbGV0ZSByW3Rbbl1dCiAgICAgICAgICAgICAgICB9KHZvaWQgMCA9PT0gdCB8fCBjZS5pc0VtcHR5T2JqZWN0KHIpKSAmJiAoZS5ub2RlVHlwZSA/IGVbdGhpcy5leHBhbmRvXSA9IHZvaWQgMCA6IGRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGhhc0RhdGE6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlW3RoaXMuZXhwYW5kb107CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHQgJiYgIWNlLmlzRW1wdHlPYmplY3QodCkKICAgICAgICB9CiAgICB9OwogICAgdmFyIF8gPSBuZXcgQiwKICAgICAgICB6ID0gbmV3IEIsCiAgICAgICAgWCA9IC9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sCiAgICAgICAgVSA9IC9bQS1aXS9nOwoKICAgIGZ1bmN0aW9uIFYoZSwgdCwgbikgewogICAgICAgIHZhciByLCBpOwogICAgICAgIGlmICh2b2lkIDAgPT09IG4gJiYgMSA9PT0gZS5ub2RlVHlwZSkKICAgICAgICAgICAgaWYgKHIgPSAiZGF0YS0iICsgdC5yZXBsYWNlKFUsICItJCYiKS50b0xvd2VyQ2FzZSgpLCAic3RyaW5nIiA9PSB0eXBlb2YobiA9IGUuZ2V0QXR0cmlidXRlKHIpKSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBuID0gInRydWUiID09PSAoaSA9IG4pIHx8ICJmYWxzZSIgIT09IGkgJiYgKCJudWxsIiA9PT0gaSA/IG51bGwgOiBpID09PSAraSArICIiID8gK2kgOiBYLnRlc3QoaSkgPyBKU09OLnBhcnNlKGkpIDogaSkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICB6LnNldChlLCB0LCBuKQogICAgICAgICAgICB9IGVsc2UgbiA9IHZvaWQgMDsKICAgICAgICByZXR1cm4gbgogICAgfQogICAgY2UuZXh0ZW5kKHsKICAgICAgICBoYXNEYXRhOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB6Lmhhc0RhdGEoZSkgfHwgXy5oYXNEYXRhKGUpCiAgICAgICAgfSwKICAgICAgICBkYXRhOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiB6LmFjY2VzcyhlLCB0LCBuKQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlRGF0YTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB6LnJlbW92ZShlLCB0KQogICAgICAgIH0sCiAgICAgICAgX2RhdGE6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIF8uYWNjZXNzKGUsIHQsIG4pCiAgICAgICAgfSwKICAgICAgICBfcmVtb3ZlRGF0YTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBfLnJlbW92ZShlLCB0KQogICAgICAgIH0KICAgIH0pLCBjZS5mbi5leHRlbmQoewogICAgICAgIGRhdGE6IGZ1bmN0aW9uKG4sIGUpIHsKICAgICAgICAgICAgdmFyIHQsIHIsIGksIG8gPSB0aGlzWzBdLAogICAgICAgICAgICAgICAgYSA9IG8gJiYgby5hdHRyaWJ1dGVzOwogICAgICAgICAgICBpZiAodm9pZCAwID09PSBuKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5sZW5ndGggJiYgKGkgPSB6LmdldChvKSwgMSA9PT0gby5ub2RlVHlwZSAmJiAhXy5nZXQobywgImhhc0RhdGFBdHRycyIpKSkgewogICAgICAgICAgICAgICAgICAgIHQgPSBhLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAodC0tKSBhW3RdICYmIDAgPT09IChyID0gYVt0XS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpICYmIChyID0gRihyLnNsaWNlKDUpKSwgVihvLCByLCBpW3JdKSk7CiAgICAgICAgICAgICAgICAgICAgXy5zZXQobywgImhhc0RhdGFBdHRycyIsICEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIG4gPyB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB6LnNldCh0aGlzLCBuKQogICAgICAgICAgICB9KSA6IE0odGhpcywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICBpZiAobyAmJiB2b2lkIDAgPT09IGUpIHJldHVybiB2b2lkIDAgIT09ICh0ID0gei5nZXQobywgbikpID8gdCA6IHZvaWQgMCAhPT0gKHQgPSBWKG8sIG4pKSA/IHQgOiB2b2lkIDA7CiAgICAgICAgICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgei5zZXQodGhpcywgbiwgZSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sIG51bGwsIGUsIDEgPCBhcmd1bWVudHMubGVuZ3RoLCBudWxsLCAhMCkKICAgICAgICB9LAogICAgICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHoucmVtb3ZlKHRoaXMsIGUpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSksIGNlLmV4dGVuZCh7CiAgICAgICAgcXVldWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgdmFyIHI7CiAgICAgICAgICAgIGlmIChlKSByZXR1cm4gdCA9ICh0IHx8ICJmeCIpICsgInF1ZXVlIiwgciA9IF8uZ2V0KGUsIHQpLCBuICYmICghciB8fCBBcnJheS5pc0FycmF5KG4pID8gciA9IF8uYWNjZXNzKGUsIHQsIGNlLm1ha2VBcnJheShuKSkgOiByLnB1c2gobikpLCByIHx8IFtdCiAgICAgICAgfSwKICAgICAgICBkZXF1ZXVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHQgPSB0IHx8ICJmeCI7CiAgICAgICAgICAgIHZhciBuID0gY2UucXVldWUoZSwgdCksCiAgICAgICAgICAgICAgICByID0gbi5sZW5ndGgsCiAgICAgICAgICAgICAgICBpID0gbi5zaGlmdCgpLAogICAgICAgICAgICAgICAgbyA9IGNlLl9xdWV1ZUhvb2tzKGUsIHQpOwogICAgICAgICAgICAiaW5wcm9ncmVzcyIgPT09IGkgJiYgKGkgPSBuLnNoaWZ0KCksIHItLSksIGkgJiYgKCJmeCIgPT09IHQgJiYgbi51bnNoaWZ0KCJpbnByb2dyZXNzIiksIGRlbGV0ZSBvLnN0b3AsIGkuY2FsbChlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNlLmRlcXVldWUoZSwgdCkKICAgICAgICAgICAgfSwgbykpLCAhciAmJiBvICYmIG8uZW1wdHkuZmlyZSgpCiAgICAgICAgfSwKICAgICAgICBfcXVldWVIb29rczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IHQgKyAicXVldWVIb29rcyI7CiAgICAgICAgICAgIHJldHVybiBfLmdldChlLCBuKSB8fCBfLmFjY2VzcyhlLCBuLCB7CiAgICAgICAgICAgICAgICBlbXB0eTogY2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBfLnJlbW92ZShlLCBbdCArICJxdWV1ZSIsIG5dKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBxdWV1ZTogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICB2YXIgZSA9IDI7CiAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgdCAmJiAobiA9IHQsIHQgPSAiZngiLCBlLS0pLCBhcmd1bWVudHMubGVuZ3RoIDwgZSA/IGNlLnF1ZXVlKHRoaXNbMF0sIHQpIDogdm9pZCAwID09PSBuID8gdGhpcyA6IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gY2UucXVldWUodGhpcywgdCwgbik7CiAgICAgICAgICAgICAgICBjZS5fcXVldWVIb29rcyh0aGlzLCB0KSwgImZ4IiA9PT0gdCAmJiAiaW5wcm9ncmVzcyIgIT09IGVbMF0gJiYgY2UuZGVxdWV1ZSh0aGlzLCB0KQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgZGVxdWV1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgY2UuZGVxdWV1ZSh0aGlzLCBlKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgY2xlYXJRdWV1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZShlIHx8ICJmeCIsIFtdKQogICAgICAgIH0sCiAgICAgICAgcHJvbWlzZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiwgciA9IDEsCiAgICAgICAgICAgICAgICBpID0gY2UuRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgIG8gPSB0aGlzLAogICAgICAgICAgICAgICAgYSA9IHRoaXMubGVuZ3RoLAogICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIC0tciB8fCBpLnJlc29sdmVXaXRoKG8sIFtvXSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICJzdHJpbmciICE9IHR5cGVvZiBlICYmICh0ID0gZSwgZSA9IHZvaWQgMCksIGUgPSBlIHx8ICJmeCI7CiAgICAgICAgICAgIHdoaWxlIChhLS0pKG4gPSBfLmdldChvW2FdLCBlICsgInF1ZXVlSG9va3MiKSkgJiYgbi5lbXB0eSAmJiAocisrLCBuLmVtcHR5LmFkZChzKSk7CiAgICAgICAgICAgIHJldHVybiBzKCksIGkucHJvbWlzZSh0KQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIEcgPSAvWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSwKICAgICAgICBZID0gbmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiICsgRyArICIpKFthLXolXSopJCIsICJpIiksCiAgICAgICAgUSA9IFsiVG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0Il0sCiAgICAgICAgSiA9IEMuZG9jdW1lbnRFbGVtZW50LAogICAgICAgIEsgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBjZS5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsIGUpCiAgICAgICAgfSwKICAgICAgICBaID0gewogICAgICAgICAgICBjb21wb3NlZDogITAKICAgICAgICB9OwogICAgSi5nZXRSb290Tm9kZSAmJiAoSyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gY2UuY29udGFpbnMoZS5vd25lckRvY3VtZW50LCBlKSB8fCBlLmdldFJvb3ROb2RlKFopID09PSBlLm93bmVyRG9jdW1lbnQKICAgIH0pOwogICAgdmFyIGVlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHJldHVybiAibm9uZSIgPT09IChlID0gdCB8fCBlKS5zdHlsZS5kaXNwbGF5IHx8ICIiID09PSBlLnN0eWxlLmRpc3BsYXkgJiYgSyhlKSAmJiAibm9uZSIgPT09IGNlLmNzcyhlLCAiZGlzcGxheSIpCiAgICB9OwoKICAgIGZ1bmN0aW9uIHRlKGUsIHQsIG4sIHIpIHsKICAgICAgICB2YXIgaSwgbywgYSA9IDIwLAogICAgICAgICAgICBzID0gciA/IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHIuY3VyKCkKICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGNlLmNzcyhlLCB0LCAiIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdSA9IHMoKSwKICAgICAgICAgICAgbCA9IG4gJiYgblszXSB8fCAoY2UuY3NzTnVtYmVyW3RdID8gIiIgOiAicHgiKSwKICAgICAgICAgICAgYyA9IGUubm9kZVR5cGUgJiYgKGNlLmNzc051bWJlclt0XSB8fCAicHgiICE9PSBsICYmICt1KSAmJiBZLmV4ZWMoY2UuY3NzKGUsIHQpKTsKICAgICAgICBpZiAoYyAmJiBjWzNdICE9PSBsKSB7CiAgICAgICAgICAgIHUgLz0gMiwgbCA9IGwgfHwgY1szXSwgYyA9ICt1IHx8IDE7CiAgICAgICAgICAgIHdoaWxlIChhLS0pIGNlLnN0eWxlKGUsIHQsIGMgKyBsKSwgKDEgLSBvKSAqICgxIC0gKG8gPSBzKCkgLyB1IHx8IC41KSkgPD0gMCAmJiAoYSA9IDApLCBjIC89IG87CiAgICAgICAgICAgIGMgKj0gMiwgY2Uuc3R5bGUoZSwgdCwgYyArIGwpLCBuID0gbiB8fCBbXQogICAgICAgIH0KICAgICAgICByZXR1cm4gbiAmJiAoYyA9ICtjIHx8ICt1IHx8IDAsIGkgPSBuWzFdID8gYyArIChuWzFdICsgMSkgKiBuWzJdIDogK25bMl0sIHIgJiYgKHIudW5pdCA9IGwsIHIuc3RhcnQgPSBjLCByLmVuZCA9IGkpKSwgaQogICAgfQogICAgdmFyIG5lID0ge307CgogICAgZnVuY3Rpb24gcmUoZSwgdCkgewogICAgICAgIGZvciAodmFyIG4sIHIsIGksIG8sIGEsIHMsIHUsIGwgPSBbXSwgYyA9IDAsIGYgPSBlLmxlbmd0aDsgYyA8IGY7IGMrKykociA9IGVbY10pLnN0eWxlICYmIChuID0gci5zdHlsZS5kaXNwbGF5LCB0ID8gKCJub25lIiA9PT0gbiAmJiAobFtjXSA9IF8uZ2V0KHIsICJkaXNwbGF5IikgfHwgbnVsbCwgbFtjXSB8fCAoci5zdHlsZS5kaXNwbGF5ID0gIiIpKSwgIiIgPT09IHIuc3R5bGUuZGlzcGxheSAmJiBlZShyKSAmJiAobFtjXSA9ICh1ID0gYSA9IG8gPSB2b2lkIDAsIGEgPSAoaSA9IHIpLm93bmVyRG9jdW1lbnQsIHMgPSBpLm5vZGVOYW1lLCAodSA9IG5lW3NdKSB8fCAobyA9IGEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLCB1ID0gY2UuY3NzKG8sICJkaXNwbGF5IiksIG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwgIm5vbmUiID09PSB1ICYmICh1ID0gImJsb2NrIiksIG5lW3NdID0gdSkpKSkgOiAibm9uZSIgIT09IG4gJiYgKGxbY10gPSAibm9uZSIsIF8uc2V0KHIsICJkaXNwbGF5IiwgbikpKTsKICAgICAgICBmb3IgKGMgPSAwOyBjIDwgZjsgYysrKSBudWxsICE9IGxbY10gJiYgKGVbY10uc3R5bGUuZGlzcGxheSA9IGxbY10pOwogICAgICAgIHJldHVybiBlCiAgICB9CiAgICBjZS5mbi5leHRlbmQoewogICAgICAgIHNob3c6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gcmUodGhpcywgITApCiAgICAgICAgfSwKICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHJlKHRoaXMpCiAgICAgICAgfSwKICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJib29sZWFuIiA9PSB0eXBlb2YgZSA/IGUgPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpIDogdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZWUodGhpcykgPyBjZSh0aGlzKS5zaG93KCkgOiBjZSh0aGlzKS5oaWRlKCkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciB4ZSwgYmUsIHdlID0gL14oPzpjaGVja2JveHxyYWRpbykkL2ksCiAgICAgICAgVGUgPSAvPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSwKICAgICAgICBDZSA9IC9eJHxebW9kdWxlJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaTsKICAgIHhlID0gQy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJkaXYiKSksIChiZSA9IEMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInJhZGlvIiksIGJlLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsICJjaGVja2VkIiksIGJlLnNldEF0dHJpYnV0ZSgibmFtZSIsICJ0IiksIHhlLmFwcGVuZENoaWxkKGJlKSwgbGUuY2hlY2tDbG9uZSA9IHhlLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCwgeGUuaW5uZXJIVE1MID0gIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLCBsZS5ub0Nsb25lQ2hlY2tlZCA9ICEheGUuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLCB4ZS5pbm5lckhUTUwgPSAiPG9wdGlvbj48L29wdGlvbj4iLCBsZS5vcHRpb24gPSAhIXhlLmxhc3RDaGlsZDsKICAgIHZhciBrZSA9IHsKICAgICAgICB0aGVhZDogWzEsICI8dGFibGU+IiwgIjwvdGFibGU+Il0sCiAgICAgICAgY29sOiBbMiwgIjx0YWJsZT48Y29sZ3JvdXA+IiwgIjwvY29sZ3JvdXA+PC90YWJsZT4iXSwKICAgICAgICB0cjogWzIsICI8dGFibGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFibGU+Il0sCiAgICAgICAgdGQ6IFszLCAiPHRhYmxlPjx0Ym9keT48dHI+IiwgIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLAogICAgICAgIF9kZWZhdWx0OiBbMCwgIiIsICIiXQogICAgfTsKCiAgICBmdW5jdGlvbiBTZShlLCB0KSB7CiAgICAgICAgdmFyIG47CiAgICAgICAgcmV0dXJuIG4gPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA/IGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCB8fCAiKiIpIDogInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbCA/IGUucXVlcnlTZWxlY3RvckFsbCh0IHx8ICIqIikgOiBbXSwgdm9pZCAwID09PSB0IHx8IHQgJiYgZmUoZSwgdCkgPyBjZS5tZXJnZShbZV0sIG4pIDogbgogICAgfQoKICAgIGZ1bmN0aW9uIEVlKGUsIHQpIHsKICAgICAgICBmb3IgKHZhciBuID0gMCwgciA9IGUubGVuZ3RoOyBuIDwgcjsgbisrKSBfLnNldChlW25dLCAiZ2xvYmFsRXZhbCIsICF0IHx8IF8uZ2V0KHRbbl0sICJnbG9iYWxFdmFsIikpCiAgICB9CiAgICBrZS50Ym9keSA9IGtlLnRmb290ID0ga2UuY29sZ3JvdXAgPSBrZS5jYXB0aW9uID0ga2UudGhlYWQsIGtlLnRoID0ga2UudGQsIGxlLm9wdGlvbiB8fCAoa2Uub3B0Z3JvdXAgPSBrZS5vcHRpb24gPSBbMSwgIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCAiPC9zZWxlY3Q+Il0pOwogICAgdmFyIGplID0gLzx8JiM/XHcrOy87CgogICAgZnVuY3Rpb24gQWUoZSwgdCwgbiwgciwgaSkgewogICAgICAgIGZvciAodmFyIG8sIGEsIHMsIHUsIGwsIGMsIGYgPSB0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgcCA9IFtdLCBkID0gMCwgaCA9IGUubGVuZ3RoOyBkIDwgaDsgZCsrKQogICAgICAgICAgICBpZiAoKG8gPSBlW2RdKSB8fCAwID09PSBvKQogICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09PSB4KG8pKSBjZS5tZXJnZShwLCBvLm5vZGVUeXBlID8gW29dIDogbyk7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChqZS50ZXN0KG8pKSB7CiAgICAgICAgICAgIGEgPSBhIHx8IGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSksIHMgPSAoVGUuZXhlYyhvKSB8fCBbIiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKSwgdSA9IGtlW3NdIHx8IGtlLl9kZWZhdWx0LCBhLmlubmVySFRNTCA9IHVbMV0gKyBjZS5odG1sUHJlZmlsdGVyKG8pICsgdVsyXSwgYyA9IHVbMF07CiAgICAgICAgICAgIHdoaWxlIChjLS0pIGEgPSBhLmxhc3RDaGlsZDsKICAgICAgICAgICAgY2UubWVyZ2UocCwgYS5jaGlsZE5vZGVzKSwgKGEgPSBmLmZpcnN0Q2hpbGQpLnRleHRDb250ZW50ID0gIiIKICAgICAgICB9IGVsc2UgcC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpOwogICAgICAgIGYudGV4dENvbnRlbnQgPSAiIiwgZCA9IDA7CiAgICAgICAgd2hpbGUgKG8gPSBwW2QrK10pCiAgICAgICAgICAgIGlmIChyICYmIC0xIDwgY2UuaW5BcnJheShvLCByKSkgaSAmJiBpLnB1c2gobyk7CiAgICAgICAgICAgIGVsc2UgaWYgKGwgPSBLKG8pLCBhID0gU2UoZi5hcHBlbmRDaGlsZChvKSwgInNjcmlwdCIpLCBsICYmIEVlKGEpLCBuKSB7CiAgICAgICAgICAgIGMgPSAwOwogICAgICAgICAgICB3aGlsZSAobyA9IGFbYysrXSkgQ2UudGVzdChvLnR5cGUgfHwgIiIpICYmIG4ucHVzaChvKQogICAgICAgIH0KICAgICAgICByZXR1cm4gZgogICAgfQogICAgdmFyIERlID0gL14oW14uXSopKD86XC4oLispfCkvOwoKICAgIGZ1bmN0aW9uIE5lKCkgewogICAgICAgIHJldHVybiAhMAogICAgfQoKICAgIGZ1bmN0aW9uIHFlKCkgewogICAgICAgIHJldHVybiAhMQogICAgfQoKICAgIGZ1bmN0aW9uIExlKGUsIHQsIG4sIHIsIGksIG8pIHsKICAgICAgICB2YXIgYSwgczsKICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHQpIHsKICAgICAgICAgICAgZm9yIChzIGluICJzdHJpbmciICE9IHR5cGVvZiBuICYmIChyID0gciB8fCBuLCBuID0gdm9pZCAwKSwgdCkgTGUoZSwgcywgbiwgciwgdFtzXSwgbyk7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfQogICAgICAgIGlmIChudWxsID09IHIgJiYgbnVsbCA9PSBpID8gKGkgPSBuLCByID0gbiA9IHZvaWQgMCkgOiBudWxsID09IGkgJiYgKCJzdHJpbmciID09IHR5cGVvZiBuID8gKGkgPSByLCByID0gdm9pZCAwKSA6IChpID0gciwgciA9IG4sIG4gPSB2b2lkIDApKSwgITEgPT09IGkpIGkgPSBxZTsKICAgICAgICBlbHNlIGlmICghaSkgcmV0dXJuIGU7CiAgICAgICAgcmV0dXJuIDEgPT09IG8gJiYgKGEgPSBpLCAoaSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGNlKCkub2ZmKGUpLCBhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICB9KS5ndWlkID0gYS5ndWlkIHx8IChhLmd1aWQgPSBjZS5ndWlkKyspKSwgZS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBjZS5ldmVudC5hZGQodGhpcywgdCwgaSwgciwgbikKICAgICAgICB9KQogICAgfQoKICAgIGZ1bmN0aW9uIEhlKGUsIHIsIHQpIHsKICAgICAgICB0ID8gKF8uc2V0KGUsIHIsICExKSwgY2UuZXZlbnQuYWRkKGUsIHIsIHsKICAgICAgICAgICAgbmFtZXNwYWNlOiAhMSwKICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4gPSBfLmdldCh0aGlzLCByKTsKICAgICAgICAgICAgICAgIGlmICgxICYgZS5pc1RyaWdnZXIgJiYgdGhpc1tyXSkgewogICAgICAgICAgICAgICAgICAgIGlmIChuKShjZS5ldmVudC5zcGVjaWFsW3JdIHx8IHt9KS5kZWxlZ2F0ZVR5cGUgJiYgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuID0gYWUuY2FsbChhcmd1bWVudHMpLCBfLnNldCh0aGlzLCByLCBuKSwgdGhpc1tyXSgpLCB0ID0gXy5nZXQodGhpcywgciksIF8uc2V0KHRoaXMsIHIsICExKSwgbiAhPT0gdCkgcmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksIGUucHJldmVudERlZmF1bHQoKSwgdAogICAgICAgICAgICAgICAgfSBlbHNlIG4gJiYgKF8uc2V0KHRoaXMsIHIsIGNlLmV2ZW50LnRyaWdnZXIoblswXSwgbi5zbGljZSgxKSwgdGhpcykpLCBlLnN0b3BQcm9wYWdhdGlvbigpLCBlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gTmUpCiAgICAgICAgICAgIH0KICAgICAgICB9KSkgOiB2b2lkIDAgPT09IF8uZ2V0KGUsIHIpICYmIGNlLmV2ZW50LmFkZChlLCByLCBOZSkKICAgIH0KICAgIGNlLmV2ZW50ID0gewogICAgICAgIGdsb2JhbDoge30sCiAgICAgICAgYWRkOiBmdW5jdGlvbih0LCBlLCBuLCByLCBpKSB7CiAgICAgICAgICAgIHZhciBvLCBhLCBzLCB1LCBsLCBjLCBmLCBwLCBkLCBoLCBnLCB2ID0gXy5nZXQodCk7CiAgICAgICAgICAgIGlmICgkKHQpKSB7CiAgICAgICAgICAgICAgICBuLmhhbmRsZXIgJiYgKG4gPSAobyA9IG4pLmhhbmRsZXIsIGkgPSBvLnNlbGVjdG9yKSwgaSAmJiBjZS5maW5kLm1hdGNoZXNTZWxlY3RvcihKLCBpKSwgbi5ndWlkIHx8IChuLmd1aWQgPSBjZS5ndWlkKyspLCAodSA9IHYuZXZlbnRzKSB8fCAodSA9IHYuZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKSksIChhID0gdi5oYW5kbGUpIHx8IChhID0gdi5oYW5kbGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiBjZSAmJiBjZS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSA/IGNlLmV2ZW50LmRpc3BhdGNoLmFwcGx5KHQsIGFyZ3VtZW50cykgOiB2b2lkIDAKICAgICAgICAgICAgICAgIH0pLCBsID0gKGUgPSAoZSB8fCAiIikubWF0Y2goRCkgfHwgWyIiXSkubGVuZ3RoOwogICAgICAgICAgICAgICAgd2hpbGUgKGwtLSkgZCA9IGcgPSAocyA9IERlLmV4ZWMoZVtsXSkgfHwgW10pWzFdLCBoID0gKHNbMl0gfHwgIiIpLnNwbGl0KCIuIikuc29ydCgpLCBkICYmIChmID0gY2UuZXZlbnQuc3BlY2lhbFtkXSB8fCB7fSwgZCA9IChpID8gZi5kZWxlZ2F0ZVR5cGUgOiBmLmJpbmRUeXBlKSB8fCBkLCBmID0gY2UuZXZlbnQuc3BlY2lhbFtkXSB8fCB7fSwgYyA9IGNlLmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogZCwKICAgICAgICAgICAgICAgICAgICBvcmlnVHlwZTogZywKICAgICAgICAgICAgICAgICAgICBkYXRhOiByLAogICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IG4sCiAgICAgICAgICAgICAgICAgICAgZ3VpZDogbi5ndWlkLAogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiBpLAogICAgICAgICAgICAgICAgICAgIG5lZWRzQ29udGV4dDogaSAmJiBjZS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLAogICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogaC5qb2luKCIuIikKICAgICAgICAgICAgICAgIH0sIG8pLCAocCA9IHVbZF0pIHx8ICgocCA9IHVbZF0gPSBbXSkuZGVsZWdhdGVDb3VudCA9IDAsIGYuc2V0dXAgJiYgITEgIT09IGYuc2V0dXAuY2FsbCh0LCByLCBoLCBhKSB8fCB0LmFkZEV2ZW50TGlzdGVuZXIgJiYgdC5hZGRFdmVudExpc3RlbmVyKGQsIGEpKSwgZi5hZGQgJiYgKGYuYWRkLmNhbGwodCwgYyksIGMuaGFuZGxlci5ndWlkIHx8IChjLmhhbmRsZXIuZ3VpZCA9IG4uZ3VpZCkpLCBpID8gcC5zcGxpY2UocC5kZWxlZ2F0ZUNvdW50KyssIDAsIGMpIDogcC5wdXNoKGMpLCBjZS5ldmVudC5nbG9iYWxbZF0gPSAhMCkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlLCB0LCBuLCByLCBpKSB7CiAgICAgICAgICAgIHZhciBvLCBhLCBzLCB1LCBsLCBjLCBmLCBwLCBkLCBoLCBnLCB2ID0gXy5oYXNEYXRhKGUpICYmIF8uZ2V0KGUpOwogICAgICAgICAgICBpZiAodiAmJiAodSA9IHYuZXZlbnRzKSkgewogICAgICAgICAgICAgICAgbCA9ICh0ID0gKHQgfHwgIiIpLm1hdGNoKEQpIHx8IFsiIl0pLmxlbmd0aDsKICAgICAgICAgICAgICAgIHdoaWxlIChsLS0pCiAgICAgICAgICAgICAgICAgICAgaWYgKGQgPSBnID0gKHMgPSBEZS5leGVjKHRbbF0pIHx8IFtdKVsxXSwgaCA9IChzWzJdIHx8ICIiKS5zcGxpdCgiLiIpLnNvcnQoKSwgZCkgewogICAgICAgICAgICAgICAgICAgICAgICBmID0gY2UuZXZlbnQuc3BlY2lhbFtkXSB8fCB7fSwgcCA9IHVbZCA9IChyID8gZi5kZWxlZ2F0ZVR5cGUgOiBmLmJpbmRUeXBlKSB8fCBkXSB8fCBbXSwgcyA9IHNbMl0gJiYgbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIiksIGEgPSBvID0gcC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChvLS0pIGMgPSBwW29dLCAhaSAmJiBnICE9PSBjLm9yaWdUeXBlIHx8IG4gJiYgbi5ndWlkICE9PSBjLmd1aWQgfHwgcyAmJiAhcy50ZXN0KGMubmFtZXNwYWNlKSB8fCByICYmIHIgIT09IGMuc2VsZWN0b3IgJiYgKCIqKiIgIT09IHIgfHwgIWMuc2VsZWN0b3IpIHx8IChwLnNwbGljZShvLCAxKSwgYy5zZWxlY3RvciAmJiBwLmRlbGVnYXRlQ291bnQtLSwgZi5yZW1vdmUgJiYgZi5yZW1vdmUuY2FsbChlLCBjKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgJiYgIXAubGVuZ3RoICYmIChmLnRlYXJkb3duICYmICExICE9PSBmLnRlYXJkb3duLmNhbGwoZSwgaCwgdi5oYW5kbGUpIHx8IGNlLnJlbW92ZUV2ZW50KGUsIGQsIHYuaGFuZGxlKSwgZGVsZXRlIHVbZF0pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZCBpbiB1KSBjZS5ldmVudC5yZW1vdmUoZSwgZCArIHRbbF0sIG4sIHIsICEwKTsKICAgICAgICAgICAgICAgIGNlLmlzRW1wdHlPYmplY3QodSkgJiYgXy5yZW1vdmUoZSwgImhhbmRsZSBldmVudHMiKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgbiwgciwgaSwgbywgYSwgcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSwKICAgICAgICAgICAgICAgIHUgPSBjZS5ldmVudC5maXgoZSksCiAgICAgICAgICAgICAgICBsID0gKF8uZ2V0KHRoaXMsICJldmVudHMiKSB8fCBPYmplY3QuY3JlYXRlKG51bGwpKVt1LnR5cGVdIHx8IFtdLAogICAgICAgICAgICAgICAgYyA9IGNlLmV2ZW50LnNwZWNpYWxbdS50eXBlXSB8fCB7fTsKICAgICAgICAgICAgZm9yIChzWzBdID0gdSwgdCA9IDE7IHQgPCBhcmd1bWVudHMubGVuZ3RoOyB0KyspIHNbdF0gPSBhcmd1bWVudHNbdF07CiAgICAgICAgICAgIGlmICh1LmRlbGVnYXRlVGFyZ2V0ID0gdGhpcywgIWMucHJlRGlzcGF0Y2ggfHwgITEgIT09IGMucHJlRGlzcGF0Y2guY2FsbCh0aGlzLCB1KSkgewogICAgICAgICAgICAgICAgYSA9IGNlLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcywgdSwgbCksIHQgPSAwOwogICAgICAgICAgICAgICAgd2hpbGUgKChpID0gYVt0KytdKSAmJiAhdS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgdS5jdXJyZW50VGFyZ2V0ID0gaS5lbGVtLCBuID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKG8gPSBpLmhhbmRsZXJzW24rK10pICYmICF1LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpIHUucm5hbWVzcGFjZSAmJiAhMSAhPT0gby5uYW1lc3BhY2UgJiYgIXUucm5hbWVzcGFjZS50ZXN0KG8ubmFtZXNwYWNlKSB8fCAodS5oYW5kbGVPYmogPSBvLCB1LmRhdGEgPSBvLmRhdGEsIHZvaWQgMCAhPT0gKHIgPSAoKGNlLmV2ZW50LnNwZWNpYWxbby5vcmlnVHlwZV0gfHwge30pLmhhbmRsZSB8fCBvLmhhbmRsZXIpLmFwcGx5KGkuZWxlbSwgcykpICYmICExID09PSAodS5yZXN1bHQgPSByKSAmJiAodS5wcmV2ZW50RGVmYXVsdCgpLCB1LnN0b3BQcm9wYWdhdGlvbigpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBjLnBvc3REaXNwYXRjaCAmJiBjLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsIHUpLCB1LnJlc3VsdAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBoYW5kbGVyczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiwgciwgaSwgbywgYSwgcyA9IFtdLAogICAgICAgICAgICAgICAgdSA9IHQuZGVsZWdhdGVDb3VudCwKICAgICAgICAgICAgICAgIGwgPSBlLnRhcmdldDsKICAgICAgICAgICAgaWYgKHUgJiYgbC5ub2RlVHlwZSAmJiAhKCJjbGljayIgPT09IGUudHlwZSAmJiAxIDw9IGUuYnV0dG9uKSkKICAgICAgICAgICAgICAgIGZvciAoOyBsICE9PSB0aGlzOyBsID0gbC5wYXJlbnROb2RlIHx8IHRoaXMpCiAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGwubm9kZVR5cGUgJiYgKCJjbGljayIgIT09IGUudHlwZSB8fCAhMCAhPT0gbC5kaXNhYmxlZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gW10sIGEgPSB7fSwgbiA9IDA7IG4gPCB1OyBuKyspIHZvaWQgMCA9PT0gYVtpID0gKHIgPSB0W25dKS5zZWxlY3RvciArICIgIl0gJiYgKGFbaV0gPSByLm5lZWRzQ29udGV4dCA/IC0xIDwgY2UoaSwgdGhpcykuaW5kZXgobCkgOiBjZS5maW5kKGksIHRoaXMsIG51bGwsIFtsXSkubGVuZ3RoKSwgYVtpXSAmJiBvLnB1c2gocik7CiAgICAgICAgICAgICAgICAgICAgICAgIG8ubGVuZ3RoICYmIHMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IG8KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBsID0gdGhpcywgdSA8IHQubGVuZ3RoICYmIHMucHVzaCh7CiAgICAgICAgICAgICAgICBlbGVtOiBsLAogICAgICAgICAgICAgICAgaGFuZGxlcnM6IHQuc2xpY2UodSkKICAgICAgICAgICAgfSksIHMKICAgICAgICB9LAogICAgICAgIGFkZFByb3A6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNlLkV2ZW50LnByb3RvdHlwZSwgdCwgewogICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgZ2V0OiB2KGUpID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3JpZ2luYWxFdmVudCkgcmV0dXJuIGUodGhpcy5vcmlnaW5hbEV2ZW50KQogICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9yaWdpbmFsRXZlbnQpIHJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbdF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgdCwgewogICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBmaXg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGVbY2UuZXhwYW5kb10gPyBlIDogbmV3IGNlLkV2ZW50KGUpCiAgICAgICAgfSwKICAgICAgICBzcGVjaWFsOiB7CiAgICAgICAgICAgIGxvYWQ6IHsKICAgICAgICAgICAgICAgIG5vQnViYmxlOiAhMAogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGljazogewogICAgICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMgfHwgZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2UudGVzdCh0LnR5cGUpICYmIHQuY2xpY2sgJiYgZmUodCwgImlucHV0IikgJiYgSGUodCwgImNsaWNrIiwgITApLCAhMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMgfHwgZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2UudGVzdCh0LnR5cGUpICYmIHQuY2xpY2sgJiYgZmUodCwgImlucHV0IikgJiYgSGUodCwgImNsaWNrIiksICEwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX2RlZmF1bHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUudGFyZ2V0OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZS50ZXN0KHQudHlwZSkgJiYgdC5jbGljayAmJiBmZSh0LCAiaW5wdXQiKSAmJiBfLmdldCh0LCAiY2xpY2siKSB8fCBmZSh0LCAiYSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJlZm9yZXVubG9hZDogewogICAgICAgICAgICAgICAgcG9zdERpc3BhdGNoOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBlLnJlc3VsdCAmJiBlLm9yaWdpbmFsRXZlbnQgJiYgKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGUucmVzdWx0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgY2UucmVtb3ZlRXZlbnQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyICYmIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBuKQogICAgfSwgY2UuRXZlbnQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIGNlLkV2ZW50KSkgcmV0dXJuIG5ldyBjZS5FdmVudChlLCB0KTsKICAgICAgICBlICYmIGUudHlwZSA/ICh0aGlzLm9yaWdpbmFsRXZlbnQgPSBlLCB0aGlzLnR5cGUgPSBlLnR5cGUsIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZS5kZWZhdWx0UHJldmVudGVkIHx8IHZvaWQgMCA9PT0gZS5kZWZhdWx0UHJldmVudGVkICYmICExID09PSBlLnJldHVyblZhbHVlID8gTmUgOiBxZSwgdGhpcy50YXJnZXQgPSBlLnRhcmdldCAmJiAzID09PSBlLnRhcmdldC5ub2RlVHlwZSA/IGUudGFyZ2V0LnBhcmVudE5vZGUgOiBlLnRhcmdldCwgdGhpcy5jdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0LCB0aGlzLnJlbGF0ZWRUYXJnZXQgPSBlLnJlbGF0ZWRUYXJnZXQpIDogdGhpcy50eXBlID0gZSwgdCAmJiBjZS5leHRlbmQodGhpcywgdCksIHRoaXMudGltZVN0YW1wID0gZSAmJiBlLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpLCB0aGlzW2NlLmV4cGFuZG9dID0gITAKICAgIH0sIGNlLkV2ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICBjb25zdHJ1Y3RvcjogY2UuRXZlbnQsCiAgICAgICAgaXNEZWZhdWx0UHJldmVudGVkOiBxZSwKICAgICAgICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcWUsCiAgICAgICAgaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHFlLAogICAgICAgIGlzU2ltdWxhdGVkOiAhMSwKICAgICAgICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwogICAgICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IE5lLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUucHJldmVudERlZmF1bHQoKQogICAgICAgIH0sCiAgICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CiAgICAgICAgICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBOZSwgZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCAmJiBlLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgfSwKICAgICAgICBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKICAgICAgICAgICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IE5lLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCkKICAgICAgICB9CiAgICB9LCBjZS5lYWNoKHsKICAgICAgICBhbHRLZXk6ICEwLAogICAgICAgIGJ1YmJsZXM6ICEwLAogICAgICAgIGNhbmNlbGFibGU6ICEwLAogICAgICAgIGNoYW5nZWRUb3VjaGVzOiAhMCwKICAgICAgICBjdHJsS2V5OiAhMCwKICAgICAgICBkZXRhaWw6ICEwLAogICAgICAgIGV2ZW50UGhhc2U6ICEwLAogICAgICAgIG1ldGFLZXk6ICEwLAogICAgICAgIHBhZ2VYOiAhMCwKICAgICAgICBwYWdlWTogITAsCiAgICAgICAgc2hpZnRLZXk6ICEwLAogICAgICAgIHZpZXc6ICEwLAogICAgICAgICJjaGFyIjogITAsCiAgICAgICAgY29kZTogITAsCiAgICAgICAgY2hhckNvZGU6ICEwLAogICAgICAgIGtleTogITAsCiAgICAgICAga2V5Q29kZTogITAsCiAgICAgICAgYnV0dG9uOiAhMCwKICAgICAgICBidXR0b25zOiAhMCwKICAgICAgICBjbGllbnRYOiAhMCwKICAgICAgICBjbGllbnRZOiAhMCwKICAgICAgICBvZmZzZXRYOiAhMCwKICAgICAgICBvZmZzZXRZOiAhMCwKICAgICAgICBwb2ludGVySWQ6ICEwLAogICAgICAgIHBvaW50ZXJUeXBlOiAhMCwKICAgICAgICBzY3JlZW5YOiAhMCwKICAgICAgICBzY3JlZW5ZOiAhMCwKICAgICAgICB0YXJnZXRUb3VjaGVzOiAhMCwKICAgICAgICB0b0VsZW1lbnQ6ICEwLAogICAgICAgIHRvdWNoZXM6ICEwLAogICAgICAgIHdoaWNoOiAhMAogICAgfSwgY2UuZXZlbnQuYWRkUHJvcCksIGNlLmVhY2goewogICAgICAgIGZvY3VzOiAiZm9jdXNpbiIsCiAgICAgICAgYmx1cjogImZvY3Vzb3V0IgogICAgfSwgZnVuY3Rpb24ociwgaSkgewogICAgICAgIGZ1bmN0aW9uIG8oZSkgewogICAgICAgICAgICBpZiAoQy5kb2N1bWVudE1vZGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gXy5nZXQodGhpcywgImhhbmRsZSIpLAogICAgICAgICAgICAgICAgICAgIG4gPSBjZS5ldmVudC5maXgoZSk7CiAgICAgICAgICAgICAgICBuLnR5cGUgPSAiZm9jdXNpbiIgPT09IGUudHlwZSA/ICJmb2N1cyIgOiAiYmx1ciIsIG4uaXNTaW11bGF0ZWQgPSAhMCwgdChlKSwgbi50YXJnZXQgPT09IG4uY3VycmVudFRhcmdldCAmJiB0KG4pCiAgICAgICAgICAgIH0gZWxzZSBjZS5ldmVudC5zaW11bGF0ZShpLCBlLnRhcmdldCwgY2UuZXZlbnQuZml4KGUpKQogICAgICAgIH0KICAgICAgICBjZS5ldmVudC5zcGVjaWFsW3JdID0gewogICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgIGlmIChIZSh0aGlzLCByLCAhMCksICFDLmRvY3VtZW50TW9kZSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgKGUgPSBfLmdldCh0aGlzLCBpKSkgfHwgdGhpcy5hZGRFdmVudExpc3RlbmVyKGksIG8pLCBfLnNldCh0aGlzLCBpLCAoZSB8fCAwKSArIDEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEhlKHRoaXMsIHIpLCAhMAogICAgICAgICAgICB9LAogICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgIGlmICghQy5kb2N1bWVudE1vZGUpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIChlID0gXy5nZXQodGhpcywgaSkgLSAxKSA/IF8uc2V0KHRoaXMsIGksIGUpOiAodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGksIG8pLCBfLnJlbW92ZSh0aGlzLCBpKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2RlZmF1bHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBfLmdldChlLnRhcmdldCwgcikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVsZWdhdGVUeXBlOiBpCiAgICAgICAgfSwgY2UuZXZlbnQuc3BlY2lhbFtpXSA9IHsKICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcy5kb2N1bWVudCB8fCB0aGlzLAogICAgICAgICAgICAgICAgICAgIHQgPSBDLmRvY3VtZW50TW9kZSA/IHRoaXMgOiBlLAogICAgICAgICAgICAgICAgICAgIG4gPSBfLmdldCh0LCBpKTsKICAgICAgICAgICAgICAgIG4gfHwgKEMuZG9jdW1lbnRNb2RlID8gdGhpcy5hZGRFdmVudExpc3RlbmVyKGksIG8pIDogZS5hZGRFdmVudExpc3RlbmVyKHIsIG8sICEwKSksIF8uc2V0KHQsIGksIChuIHx8IDApICsgMSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcy5kb2N1bWVudCB8fCB0aGlzLAogICAgICAgICAgICAgICAgICAgIHQgPSBDLmRvY3VtZW50TW9kZSA/IHRoaXMgOiBlLAogICAgICAgICAgICAgICAgICAgIG4gPSBfLmdldCh0LCBpKSAtIDE7CiAgICAgICAgICAgICAgICBuID8gXy5zZXQodCwgaSwgbikgOiAoQy5kb2N1bWVudE1vZGUgPyB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoaSwgbykgOiBlLnJlbW92ZUV2ZW50TGlzdGVuZXIociwgbywgITApLCBfLnJlbW92ZSh0LCBpKSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLCBjZS5lYWNoKHsKICAgICAgICBtb3VzZWVudGVyOiAibW91c2VvdmVyIiwKICAgICAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiLAogICAgICAgIHBvaW50ZXJlbnRlcjogInBvaW50ZXJvdmVyIiwKICAgICAgICBwb2ludGVybGVhdmU6ICJwb2ludGVyb3V0IgogICAgfSwgZnVuY3Rpb24oZSwgaSkgewogICAgICAgIGNlLmV2ZW50LnNwZWNpYWxbZV0gPSB7CiAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogaSwKICAgICAgICAgICAgYmluZFR5cGU6IGksCiAgICAgICAgICAgIGhhbmRsZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4gPSBlLnJlbGF0ZWRUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgciA9IGUuaGFuZGxlT2JqOwogICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgKG4gPT09IHRoaXMgfHwgY2UuY29udGFpbnModGhpcywgbikpIHx8IChlLnR5cGUgPSByLm9yaWdUeXBlLCB0ID0gci5oYW5kbGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIGUudHlwZSA9IGkpLCB0CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBvbjogZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICByZXR1cm4gTGUodGhpcywgZSwgdCwgbiwgcikKICAgICAgICB9LAogICAgICAgIG9uZTogZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICByZXR1cm4gTGUodGhpcywgZSwgdCwgbiwgciwgMSkKICAgICAgICB9LAogICAgICAgIG9mZjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciwgaTsKICAgICAgICAgICAgaWYgKGUgJiYgZS5wcmV2ZW50RGVmYXVsdCAmJiBlLmhhbmRsZU9iaikgcmV0dXJuIHIgPSBlLmhhbmRsZU9iaiwgY2UoZS5kZWxlZ2F0ZVRhcmdldCkub2ZmKHIubmFtZXNwYWNlID8gci5vcmlnVHlwZSArICIuIiArIHIubmFtZXNwYWNlIDogci5vcmlnVHlwZSwgci5zZWxlY3Rvciwgci5oYW5kbGVyKSwgdGhpczsKICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gZSkgdGhpcy5vZmYoaSwgdCwgZVtpXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAhMSAhPT0gdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0IHx8IChuID0gdCwgdCA9IHZvaWQgMCksICExID09PSBuICYmIChuID0gcWUpLCB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjZS5ldmVudC5yZW1vdmUodGhpcywgZSwgbiwgdCkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBPZSA9IC88c2NyaXB0fDxzdHlsZXw8bGluay9pLAogICAgICAgIFBlID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksCiAgICAgICAgTWUgPSAvXlxzKjwhXFtDREFUQVxbfFxdXF0+XHMqJC9nOwoKICAgIGZ1bmN0aW9uIFJlKGUsIHQpIHsKICAgICAgICByZXR1cm4gZmUoZSwgInRhYmxlIikgJiYgZmUoMTEgIT09IHQubm9kZVR5cGUgPyB0IDogdC5maXJzdENoaWxkLCAidHIiKSAmJiBjZShlKS5jaGlsZHJlbigidGJvZHkiKVswXSB8fCBlCiAgICB9CgogICAgZnVuY3Rpb24gSWUoZSkgewogICAgICAgIHJldHVybiBlLnR5cGUgPSAobnVsbCAhPT0gZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgKyAiLyIgKyBlLnR5cGUsIGUKICAgIH0KCiAgICBmdW5jdGlvbiBXZShlKSB7CiAgICAgICAgcmV0dXJuICJ0cnVlLyIgPT09IChlLnR5cGUgfHwgIiIpLnNsaWNlKDAsIDUpID8gZS50eXBlID0gZS50eXBlLnNsaWNlKDUpIDogZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSwgZQogICAgfQoKICAgIGZ1bmN0aW9uIEZlKGUsIHQpIHsKICAgICAgICB2YXIgbiwgciwgaSwgbywgYSwgczsKICAgICAgICBpZiAoMSA9PT0gdC5ub2RlVHlwZSkgewogICAgICAgICAgICBpZiAoXy5oYXNEYXRhKGUpICYmIChzID0gXy5nZXQoZSkuZXZlbnRzKSkKICAgICAgICAgICAgICAgIGZvciAoaSBpbiBfLnJlbW92ZSh0LCAiaGFuZGxlIGV2ZW50cyIpLCBzKQogICAgICAgICAgICAgICAgICAgIGZvciAobiA9IDAsIHIgPSBzW2ldLmxlbmd0aDsgbiA8IHI7IG4rKykgY2UuZXZlbnQuYWRkKHQsIGksIHNbaV1bbl0pOwogICAgICAgICAgICB6Lmhhc0RhdGEoZSkgJiYgKG8gPSB6LmFjY2VzcyhlKSwgYSA9IGNlLmV4dGVuZCh7fSwgbyksIHouc2V0KHQsIGEpKQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiAkZShuLCByLCBpLCBvKSB7CiAgICAgICAgciA9IGcocik7CiAgICAgICAgdmFyIGUsIHQsIGEsIHMsIHUsIGwsIGMgPSAwLAogICAgICAgICAgICBmID0gbi5sZW5ndGgsCiAgICAgICAgICAgIHAgPSBmIC0gMSwKICAgICAgICAgICAgZCA9IHJbMF0sCiAgICAgICAgICAgIGggPSB2KGQpOwogICAgICAgIGlmIChoIHx8IDEgPCBmICYmICJzdHJpbmciID09IHR5cGVvZiBkICYmICFsZS5jaGVja0Nsb25lICYmIFBlLnRlc3QoZCkpIHJldHVybiBuLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IG4uZXEoZSk7CiAgICAgICAgICAgIGggJiYgKHJbMF0gPSBkLmNhbGwodGhpcywgZSwgdC5odG1sKCkpKSwgJGUodCwgciwgaSwgbykKICAgICAgICB9KTsKICAgICAgICBpZiAoZiAmJiAodCA9IChlID0gQWUociwgblswXS5vd25lckRvY3VtZW50LCAhMSwgbiwgbykpLmZpcnN0Q2hpbGQsIDEgPT09IGUuY2hpbGROb2Rlcy5sZW5ndGggJiYgKGUgPSB0KSwgdCB8fCBvKSkgewogICAgICAgICAgICBmb3IgKHMgPSAoYSA9IGNlLm1hcChTZShlLCAic2NyaXB0IiksIEllKSkubGVuZ3RoOyBjIDwgZjsgYysrKSB1ID0gZSwgYyAhPT0gcCAmJiAodSA9IGNlLmNsb25lKHUsICEwLCAhMCksIHMgJiYgY2UubWVyZ2UoYSwgU2UodSwgInNjcmlwdCIpKSksIGkuY2FsbChuW2NdLCB1LCBjKTsKICAgICAgICAgICAgaWYgKHMpCiAgICAgICAgICAgICAgICBmb3IgKGwgPSBhW2EubGVuZ3RoIC0gMV0ub3duZXJEb2N1bWVudCwgY2UubWFwKGEsIFdlKSwgYyA9IDA7IGMgPCBzOyBjKyspIHUgPSBhW2NdLCBDZS50ZXN0KHUudHlwZSB8fCAiIikgJiYgIV8uYWNjZXNzKHUsICJnbG9iYWxFdmFsIikgJiYgY2UuY29udGFpbnMobCwgdSkgJiYgKHUuc3JjICYmICJtb2R1bGUiICE9PSAodS50eXBlIHx8ICIiKS50b0xvd2VyQ2FzZSgpID8gY2UuX2V2YWxVcmwgJiYgIXUubm9Nb2R1bGUgJiYgY2UuX2V2YWxVcmwodS5zcmMsIHsKICAgICAgICAgICAgICAgICAgICBub25jZTogdS5ub25jZSB8fCB1LmdldEF0dHJpYnV0ZSgibm9uY2UiKQogICAgICAgICAgICAgICAgfSwgbCkgOiBtKHUudGV4dENvbnRlbnQucmVwbGFjZShNZSwgIiIpLCB1LCBsKSkKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG4KICAgIH0KCiAgICBmdW5jdGlvbiBCZShlLCB0LCBuKSB7CiAgICAgICAgZm9yICh2YXIgciwgaSA9IHQgPyBjZS5maWx0ZXIodCwgZSkgOiBlLCBvID0gMDsgbnVsbCAhPSAociA9IGlbb10pOyBvKyspIG4gfHwgMSAhPT0gci5ub2RlVHlwZSB8fCBjZS5jbGVhbkRhdGEoU2UocikpLCByLnBhcmVudE5vZGUgJiYgKG4gJiYgSyhyKSAmJiBFZShTZShyLCAic2NyaXB0IikpLCByLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocikpOwogICAgICAgIHJldHVybiBlCiAgICB9CiAgICBjZS5leHRlbmQoewogICAgICAgIGh0bWxQcmVmaWx0ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9LAogICAgICAgIGNsb25lOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCBvLCBhLCBzLCB1LCBsLCBjID0gZS5jbG9uZU5vZGUoITApLAogICAgICAgICAgICAgICAgZiA9IEsoZSk7CiAgICAgICAgICAgIGlmICghKGxlLm5vQ2xvbmVDaGVja2VkIHx8IDEgIT09IGUubm9kZVR5cGUgJiYgMTEgIT09IGUubm9kZVR5cGUgfHwgY2UuaXNYTUxEb2MoZSkpKQogICAgICAgICAgICAgICAgZm9yIChhID0gU2UoYyksIHIgPSAwLCBpID0gKG8gPSBTZShlKSkubGVuZ3RoOyByIDwgaTsgcisrKSBzID0gb1tyXSwgdSA9IGFbcl0sIHZvaWQgMCwgImlucHV0IiA9PT0gKGwgPSB1Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpICYmIHdlLnRlc3Qocy50eXBlKSA/IHUuY2hlY2tlZCA9IHMuY2hlY2tlZCA6ICJpbnB1dCIgIT09IGwgJiYgInRleHRhcmVhIiAhPT0gbCB8fCAodS5kZWZhdWx0VmFsdWUgPSBzLmRlZmF1bHRWYWx1ZSk7CiAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgaWYgKG4pCiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gbyB8fCBTZShlKSwgYSA9IGEgfHwgU2UoYyksIHIgPSAwLCBpID0gby5sZW5ndGg7IHIgPCBpOyByKyspIEZlKG9bcl0sIGFbcl0pOwogICAgICAgICAgICAgICAgZWxzZSBGZShlLCBjKTsKICAgICAgICAgICAgcmV0dXJuIDAgPCAoYSA9IFNlKGMsICJzY3JpcHQiKSkubGVuZ3RoICYmIEVlKGEsICFmICYmIFNlKGUsICJzY3JpcHQiKSksIGMKICAgICAgICB9LAogICAgICAgIGNsZWFuRGF0YTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBmb3IgKHZhciB0LCBuLCByLCBpID0gY2UuZXZlbnQuc3BlY2lhbCwgbyA9IDA7IHZvaWQgMCAhPT0gKG4gPSBlW29dKTsgbysrKQogICAgICAgICAgICAgICAgaWYgKCQobikpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCA9IG5bXy5leHBhbmRvXSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5ldmVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgaW4gdC5ldmVudHMpIGlbcl0gPyBjZS5ldmVudC5yZW1vdmUobiwgcikgOiBjZS5yZW1vdmVFdmVudChuLCByLCB0LmhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5bXy5leHBhbmRvXSA9IHZvaWQgMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBuW3ouZXhwYW5kb10gJiYgKG5bei5leHBhbmRvXSA9IHZvaWQgMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBkZXRhY2g6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEJlKHRoaXMsIGUsICEwKQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBCZSh0aGlzLCBlKQogICAgICAgIH0sCiAgICAgICAgdGV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gTSh0aGlzLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlID8gY2UudGV4dCh0aGlzKSA6IHRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIDEgIT09IHRoaXMubm9kZVR5cGUgJiYgMTEgIT09IHRoaXMubm9kZVR5cGUgJiYgOSAhPT0gdGhpcy5ub2RlVHlwZSB8fCAodGhpcy50ZXh0Q29udGVudCA9IGUpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LCBudWxsLCBlLCBhcmd1bWVudHMubGVuZ3RoKQogICAgICAgIH0sCiAgICAgICAgYXBwZW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICRlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiAxMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiA5ICE9PSB0aGlzLm5vZGVUeXBlIHx8IFJlKHRoaXMsIGUpLmFwcGVuZENoaWxkKGUpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBwcmVwZW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICRlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKDEgPT09IHRoaXMubm9kZVR5cGUgfHwgMTEgPT09IHRoaXMubm9kZVR5cGUgfHwgOSA9PT0gdGhpcy5ub2RlVHlwZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gUmUodGhpcywgZSk7CiAgICAgICAgICAgICAgICAgICAgdC5pbnNlcnRCZWZvcmUoZSwgdC5maXJzdENoaWxkKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgYmVmb3JlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICRlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlICYmIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSwgdGhpcykKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGFmdGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICRlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlICYmIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSwgdGhpcy5uZXh0U2libGluZykKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGVtcHR5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSwgdCA9IDA7IG51bGwgIT0gKGUgPSB0aGlzW3RdKTsgdCsrKSAxID09PSBlLm5vZGVUeXBlICYmIChjZS5jbGVhbkRhdGEoU2UoZSwgITEpKSwgZS50ZXh0Q29udGVudCA9ICIiKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIGNsb25lOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBlID0gbnVsbCAhPSBlICYmIGUsIHQgPSBudWxsID09IHQgPyBlIDogdCwgdGhpcy5tYXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY2UuY2xvbmUodGhpcywgZSwgdCkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGh0bWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIE0odGhpcywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzWzBdIHx8IHt9LAogICAgICAgICAgICAgICAgICAgIG4gPSAwLAogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmxlbmd0aDsKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUgJiYgMSA9PT0gdC5ub2RlVHlwZSkgcmV0dXJuIHQuaW5uZXJIVE1MOwogICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlICYmICFPZS50ZXN0KGUpICYmICFrZVsoVGUuZXhlYyhlKSB8fCBbIiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKV0pIHsKICAgICAgICAgICAgICAgICAgICBlID0gY2UuaHRtbFByZWZpbHRlcihlKTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbiA8IHI7IG4rKykgMSA9PT0gKHQgPSB0aGlzW25dIHx8IHt9KS5ub2RlVHlwZSAmJiAoY2UuY2xlYW5EYXRhKFNlKHQsICExKSksIHQuaW5uZXJIVE1MID0gZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAwCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHQgJiYgdGhpcy5lbXB0eSgpLmFwcGVuZChlKQogICAgICAgICAgICB9LCBudWxsLCBlLCBhcmd1bWVudHMubGVuZ3RoKQogICAgICAgIH0sCiAgICAgICAgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgbiA9IFtdOwogICAgICAgICAgICByZXR1cm4gJGUodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucGFyZW50Tm9kZTsKICAgICAgICAgICAgICAgIGNlLmluQXJyYXkodGhpcywgbikgPCAwICYmIChjZS5jbGVhbkRhdGEoU2UodGhpcykpLCB0ICYmIHQucmVwbGFjZUNoaWxkKGUsIHRoaXMpKQogICAgICAgICAgICB9LCBuKQogICAgICAgIH0KICAgIH0pLCBjZS5lYWNoKHsKICAgICAgICBhcHBlbmRUbzogImFwcGVuZCIsCiAgICAgICAgcHJlcGVuZFRvOiAicHJlcGVuZCIsCiAgICAgICAgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwKICAgICAgICBpbnNlcnRBZnRlcjogImFmdGVyIiwKICAgICAgICByZXBsYWNlQWxsOiAicmVwbGFjZVdpdGgiCiAgICB9LCBmdW5jdGlvbihlLCBhKSB7CiAgICAgICAgY2UuZm5bZV0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQsIG4gPSBbXSwgciA9IGNlKGUpLCBpID0gci5sZW5ndGggLSAxLCBvID0gMDsgbyA8PSBpOyBvKyspIHQgPSBvID09PSBpID8gdGhpcyA6IHRoaXMuY2xvbmUoITApLCBjZShyW29dKVthXSh0KSwgcy5hcHBseShuLCB0LmdldCgpKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKG4pCiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgX2UgPSBuZXcgUmVnRXhwKCJeKCIgKyBHICsgIikoPyFweClbYS16JV0rJCIsICJpIiksCiAgICAgICAgemUgPSAvXi0tLywKICAgICAgICBYZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7CiAgICAgICAgICAgIHJldHVybiB0ICYmIHQub3BlbmVyIHx8ICh0ID0gaWUpLCB0LmdldENvbXB1dGVkU3R5bGUoZSkKICAgICAgICB9LAogICAgICAgIFVlID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciwgaSwgbyA9IHt9OwogICAgICAgICAgICBmb3IgKGkgaW4gdCkgb1tpXSA9IGUuc3R5bGVbaV0sIGUuc3R5bGVbaV0gPSB0W2ldOwogICAgICAgICAgICBmb3IgKGkgaW4gciA9IG4uY2FsbChlKSwgdCkgZS5zdHlsZVtpXSA9IG9baV07CiAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgfSwKICAgICAgICBWZSA9IG5ldyBSZWdFeHAoUS5qb2luKCJ8IiksICJpIik7CgogICAgZnVuY3Rpb24gR2UoZSwgdCwgbikgewogICAgICAgIHZhciByLCBpLCBvLCBhLCBzID0gemUudGVzdCh0KSwKICAgICAgICAgICAgdSA9IGUuc3R5bGU7CiAgICAgICAgcmV0dXJuIChuID0gbiB8fCBYZShlKSkgJiYgKGEgPSBuLmdldFByb3BlcnR5VmFsdWUodCkgfHwgblt0XSwgcyAmJiBhICYmIChhID0gYS5yZXBsYWNlKHZlLCAiJDEiKSB8fCB2b2lkIDApLCAiIiAhPT0gYSB8fCBLKGUpIHx8IChhID0gY2Uuc3R5bGUoZSwgdCkpLCAhbGUucGl4ZWxCb3hTdHlsZXMoKSAmJiBfZS50ZXN0KGEpICYmIFZlLnRlc3QodCkgJiYgKHIgPSB1LndpZHRoLCBpID0gdS5taW5XaWR0aCwgbyA9IHUubWF4V2lkdGgsIHUubWluV2lkdGggPSB1Lm1heFdpZHRoID0gdS53aWR0aCA9IGEsIGEgPSBuLndpZHRoLCB1LndpZHRoID0gciwgdS5taW5XaWR0aCA9IGksIHUubWF4V2lkdGggPSBvKSksIHZvaWQgMCAhPT0gYSA/IGEgKyAiIiA6IGEKICAgIH0KCiAgICBmdW5jdGlvbiBZZShlLCB0KSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICghZSgpKSByZXR1cm4gKHRoaXMuZ2V0ID0gdCkuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmdldAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSEgZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gZSgpIHsKICAgICAgICAgICAgaWYgKGwpIHsKICAgICAgICAgICAgICAgIHUuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIiwgbC5zdHlsZS5jc3NUZXh0ID0gInBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiLCBKLmFwcGVuZENoaWxkKHUpLmFwcGVuZENoaWxkKGwpOwogICAgICAgICAgICAgICAgdmFyIGUgPSBpZS5nZXRDb21wdXRlZFN0eWxlKGwpOwogICAgICAgICAgICAgICAgbiA9ICIxJSIgIT09IGUudG9wLCBzID0gMTIgPT09IHQoZS5tYXJnaW5MZWZ0KSwgbC5zdHlsZS5yaWdodCA9ICI2MCUiLCBvID0gMzYgPT09IHQoZS5yaWdodCksIHIgPSAzNiA9PT0gdChlLndpZHRoKSwgbC5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSIsIGkgPSAxMiA9PT0gdChsLm9mZnNldFdpZHRoIC8gMyksIEoucmVtb3ZlQ2hpbGQodSksIGwgPSBudWxsCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGUpKQogICAgICAgIH0KICAgICAgICB2YXIgbiwgciwgaSwgbywgYSwgcywgdSA9IEMuY3JlYXRlRWxlbWVudCgiZGl2IiksCiAgICAgICAgICAgIGwgPSBDLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIGwuc3R5bGUgJiYgKGwuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiY29udGVudC1ib3giLCBsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiIiwgbGUuY2xlYXJDbG9uZVN0eWxlID0gImNvbnRlbnQtYm94IiA9PT0gbC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCwgY2UuZXh0ZW5kKGxlLCB7CiAgICAgICAgICAgIGJveFNpemluZ1JlbGlhYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlKCksIHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcGl4ZWxCb3hTdHlsZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUoKSwgbwogICAgICAgICAgICB9LAogICAgICAgICAgICBwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlKCksIG4KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlKCksIHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2Nyb2xsYm94U2l6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSgpLCBpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbGlhYmxlVHJEaW1lbnNpb25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuLCByOwogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gYSAmJiAoZSA9IEMuY3JlYXRlRWxlbWVudCgidGFibGUiKSwgdCA9IEMuY3JlYXRlRWxlbWVudCgidHIiKSwgbiA9IEMuY3JlYXRlRWxlbWVudCgiZGl2IiksIGUuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZSIsIHQuc3R5bGUuY3NzVGV4dCA9ICJib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JvcmRlcjoxcHggc29saWQiLCB0LnN0eWxlLmhlaWdodCA9ICIxcHgiLCBuLnN0eWxlLmhlaWdodCA9ICI5cHgiLCBuLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siLCBKLmFwcGVuZENoaWxkKGUpLmFwcGVuZENoaWxkKHQpLmFwcGVuZENoaWxkKG4pLCByID0gaWUuZ2V0Q29tcHV0ZWRTdHlsZSh0KSwgYSA9IHBhcnNlSW50KHIuaGVpZ2h0LCAxMCkgKyBwYXJzZUludChyLmJvcmRlclRvcFdpZHRoLCAxMCkgKyBwYXJzZUludChyLmJvcmRlckJvdHRvbVdpZHRoLCAxMCkgPT09IHQub2Zmc2V0SGVpZ2h0LCBKLnJlbW92ZUNoaWxkKGUpKSwgYQogICAgICAgICAgICB9CiAgICAgICAgfSkpCiAgICB9KCk7CiAgICB2YXIgUWUgPSBbIldlYmtpdCIsICJNb3oiLCAibXMiXSwKICAgICAgICBKZSA9IEMuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsCiAgICAgICAgS2UgPSB7fTsKCiAgICBmdW5jdGlvbiBaZShlKSB7CiAgICAgICAgdmFyIHQgPSBjZS5jc3NQcm9wc1tlXSB8fCBLZVtlXTsKICAgICAgICByZXR1cm4gdCB8fCAoZSBpbiBKZSA/IGUgOiBLZVtlXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlWzBdLnRvVXBwZXJDYXNlKCkgKyBlLnNsaWNlKDEpLAogICAgICAgICAgICAgICAgbiA9IFFlLmxlbmd0aDsKICAgICAgICAgICAgd2hpbGUgKG4tLSkKICAgICAgICAgICAgICAgIGlmICgoZSA9IFFlW25dICsgdCkgaW4gSmUpIHJldHVybiBlCiAgICAgICAgfShlKSB8fCBlKQogICAgfQogICAgdmFyIGV0ID0gL14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLAogICAgICAgIHR0ID0gewogICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIiwKICAgICAgICAgICAgdmlzaWJpbGl0eTogImhpZGRlbiIsCiAgICAgICAgICAgIGRpc3BsYXk6ICJibG9jayIKICAgICAgICB9LAogICAgICAgIG50ID0gewogICAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiAiMCIsCiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICI0MDAiCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBydChlLCB0LCBuKSB7CiAgICAgICAgdmFyIHIgPSBZLmV4ZWModCk7CiAgICAgICAgcmV0dXJuIHIgPyBNYXRoLm1heCgwLCByWzJdIC0gKG4gfHwgMCkpICsgKHJbM10gfHwgInB4IikgOiB0CiAgICB9CgogICAgZnVuY3Rpb24gaXQoZSwgdCwgbiwgciwgaSwgbykgewogICAgICAgIHZhciBhID0gIndpZHRoIiA9PT0gdCA/IDEgOiAwLAogICAgICAgICAgICBzID0gMCwKICAgICAgICAgICAgdSA9IDAsCiAgICAgICAgICAgIGwgPSAwOwogICAgICAgIGlmIChuID09PSAociA/ICJib3JkZXIiIDogImNvbnRlbnQiKSkgcmV0dXJuIDA7CiAgICAgICAgZm9yICg7IGEgPCA0OyBhICs9IDIpICJtYXJnaW4iID09PSBuICYmIChsICs9IGNlLmNzcyhlLCBuICsgUVthXSwgITAsIGkpKSwgciA/ICgiY29udGVudCIgPT09IG4gJiYgKHUgLT0gY2UuY3NzKGUsICJwYWRkaW5nIiArIFFbYV0sICEwLCBpKSksICJtYXJnaW4iICE9PSBuICYmICh1IC09IGNlLmNzcyhlLCAiYm9yZGVyIiArIFFbYV0gKyAiV2lkdGgiLCAhMCwgaSkpKSA6ICh1ICs9IGNlLmNzcyhlLCAicGFkZGluZyIgKyBRW2FdLCAhMCwgaSksICJwYWRkaW5nIiAhPT0gbiA/IHUgKz0gY2UuY3NzKGUsICJib3JkZXIiICsgUVthXSArICJXaWR0aCIsICEwLCBpKSA6IHMgKz0gY2UuY3NzKGUsICJib3JkZXIiICsgUVthXSArICJXaWR0aCIsICEwLCBpKSk7CiAgICAgICAgcmV0dXJuICFyICYmIDAgPD0gbyAmJiAodSArPSBNYXRoLm1heCgwLCBNYXRoLmNlaWwoZVsib2Zmc2V0IiArIHRbMF0udG9VcHBlckNhc2UoKSArIHQuc2xpY2UoMSldIC0gbyAtIHUgLSBzIC0gLjUpKSB8fCAwKSwgdSArIGwKICAgIH0KCiAgICBmdW5jdGlvbiBvdChlLCB0LCBuKSB7CiAgICAgICAgdmFyIHIgPSBYZShlKSwKICAgICAgICAgICAgaSA9ICghbGUuYm94U2l6aW5nUmVsaWFibGUoKSB8fCBuKSAmJiAiYm9yZGVyLWJveCIgPT09IGNlLmNzcyhlLCAiYm94U2l6aW5nIiwgITEsIHIpLAogICAgICAgICAgICBvID0gaSwKICAgICAgICAgICAgYSA9IEdlKGUsIHQsIHIpLAogICAgICAgICAgICBzID0gIm9mZnNldCIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpOwogICAgICAgIGlmIChfZS50ZXN0KGEpKSB7CiAgICAgICAgICAgIGlmICghbikgcmV0dXJuIGE7CiAgICAgICAgICAgIGEgPSAiYXV0byIKICAgICAgICB9CiAgICAgICAgcmV0dXJuICghbGUuYm94U2l6aW5nUmVsaWFibGUoKSAmJiBpIHx8ICFsZS5yZWxpYWJsZVRyRGltZW5zaW9ucygpICYmIGZlKGUsICJ0ciIpIHx8ICJhdXRvIiA9PT0gYSB8fCAhcGFyc2VGbG9hdChhKSAmJiAiaW5saW5lIiA9PT0gY2UuY3NzKGUsICJkaXNwbGF5IiwgITEsIHIpKSAmJiBlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICYmIChpID0gImJvcmRlci1ib3giID09PSBjZS5jc3MoZSwgImJveFNpemluZyIsICExLCByKSwgKG8gPSBzIGluIGUpICYmIChhID0gZVtzXSkpLCAoYSA9IHBhcnNlRmxvYXQoYSkgfHwgMCkgKyBpdChlLCB0LCBuIHx8IChpID8gImJvcmRlciIgOiAiY29udGVudCIpLCBvLCByLCBhKSArICJweCIKICAgIH0KCiAgICBmdW5jdGlvbiBhdChlLCB0LCBuLCByLCBpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBhdC5wcm90b3R5cGUuaW5pdChlLCB0LCBuLCByLCBpKQogICAgfQogICAgY2UuZXh0ZW5kKHsKICAgICAgICBjc3NIb29rczogewogICAgICAgICAgICBvcGFjaXR5OiB7CiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IEdlKGUsICJvcGFjaXR5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIiA9PT0gbiA/ICIxIiA6IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGNzc051bWJlcjogewogICAgICAgICAgICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogITAsCiAgICAgICAgICAgIGFzcGVjdFJhdGlvOiAhMCwKICAgICAgICAgICAgYm9yZGVySW1hZ2VTbGljZTogITAsCiAgICAgICAgICAgIGNvbHVtbkNvdW50OiAhMCwKICAgICAgICAgICAgZmxleEdyb3c6ICEwLAogICAgICAgICAgICBmbGV4U2hyaW5rOiAhMCwKICAgICAgICAgICAgZm9udFdlaWdodDogITAsCiAgICAgICAgICAgIGdyaWRBcmVhOiAhMCwKICAgICAgICAgICAgZ3JpZENvbHVtbjogITAsCiAgICAgICAgICAgIGdyaWRDb2x1bW5FbmQ6ICEwLAogICAgICAgICAgICBncmlkQ29sdW1uU3RhcnQ6ICEwLAogICAgICAgICAgICBncmlkUm93OiAhMCwKICAgICAgICAgICAgZ3JpZFJvd0VuZDogITAsCiAgICAgICAgICAgIGdyaWRSb3dTdGFydDogITAsCiAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICEwLAogICAgICAgICAgICBvcGFjaXR5OiAhMCwKICAgICAgICAgICAgb3JkZXI6ICEwLAogICAgICAgICAgICBvcnBoYW5zOiAhMCwKICAgICAgICAgICAgc2NhbGU6ICEwLAogICAgICAgICAgICB3aWRvd3M6ICEwLAogICAgICAgICAgICB6SW5kZXg6ICEwLAogICAgICAgICAgICB6b29tOiAhMCwKICAgICAgICAgICAgZmlsbE9wYWNpdHk6ICEwLAogICAgICAgICAgICBmbG9vZE9wYWNpdHk6ICEwLAogICAgICAgICAgICBzdG9wT3BhY2l0eTogITAsCiAgICAgICAgICAgIHN0cm9rZU1pdGVybGltaXQ6ICEwLAogICAgICAgICAgICBzdHJva2VPcGFjaXR5OiAhMAogICAgICAgIH0sCiAgICAgICAgY3NzUHJvcHM6IHt9LAogICAgICAgIHN0eWxlOiBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgIGlmIChlICYmIDMgIT09IGUubm9kZVR5cGUgJiYgOCAhPT0gZS5ub2RlVHlwZSAmJiBlLnN0eWxlKSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgbywgYSwgcyA9IEYodCksCiAgICAgICAgICAgICAgICAgICAgdSA9IHplLnRlc3QodCksCiAgICAgICAgICAgICAgICAgICAgbCA9IGUuc3R5bGU7CiAgICAgICAgICAgICAgICBpZiAodSB8fCAodCA9IFplKHMpKSwgYSA9IGNlLmNzc0hvb2tzW3RdIHx8IGNlLmNzc0hvb2tzW3NdLCB2b2lkIDAgPT09IG4pIHJldHVybiBhICYmICJnZXQiIGluIGEgJiYgdm9pZCAwICE9PSAoaSA9IGEuZ2V0KGUsICExLCByKSkgPyBpIDogbFt0XTsKICAgICAgICAgICAgICAgICJzdHJpbmciID09PSAobyA9IHR5cGVvZiBuKSAmJiAoaSA9IFkuZXhlYyhuKSkgJiYgaVsxXSAmJiAobiA9IHRlKGUsIHQsIGkpLCBvID0gIm51bWJlciIpLCBudWxsICE9IG4gJiYgbiA9PSBuICYmICgibnVtYmVyIiAhPT0gbyB8fCB1IHx8IChuICs9IGkgJiYgaVszXSB8fCAoY2UuY3NzTnVtYmVyW3NdID8gIiIgOiAicHgiKSksIGxlLmNsZWFyQ2xvbmVTdHlsZSB8fCAiIiAhPT0gbiB8fCAwICE9PSB0LmluZGV4T2YoImJhY2tncm91bmQiKSB8fCAobFt0XSA9ICJpbmhlcml0IiksIGEgJiYgInNldCIgaW4gYSAmJiB2b2lkIDAgPT09IChuID0gYS5zZXQoZSwgbiwgcikpIHx8ICh1ID8gbC5zZXRQcm9wZXJ0eSh0LCBuKSA6IGxbdF0gPSBuKSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgY3NzOiBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgIHZhciBpLCBvLCBhLCBzID0gRih0KTsKICAgICAgICAgICAgcmV0dXJuIHplLnRlc3QodCkgfHwgKHQgPSBaZShzKSksIChhID0gY2UuY3NzSG9va3NbdF0gfHwgY2UuY3NzSG9va3Nbc10pICYmICJnZXQiIGluIGEgJiYgKGkgPSBhLmdldChlLCAhMCwgbikpLCB2b2lkIDAgPT09IGkgJiYgKGkgPSBHZShlLCB0LCByKSksICJub3JtYWwiID09PSBpICYmIHQgaW4gbnQgJiYgKGkgPSBudFt0XSksICIiID09PSBuIHx8IG4gPyAobyA9IHBhcnNlRmxvYXQoaSksICEwID09PSBuIHx8IGlzRmluaXRlKG8pID8gbyB8fCAwIDogaSkgOiBpCiAgICAgICAgfQogICAgfSksIGNlLmVhY2goWyJoZWlnaHQiLCAid2lkdGgiXSwgZnVuY3Rpb24oZSwgdSkgewogICAgICAgIGNlLmNzc0hvb2tzW3VdID0gewogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGlmICh0KSByZXR1cm4gIWV0LnRlc3QoY2UuY3NzKGUsICJkaXNwbGF5IikpIHx8IGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggJiYgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA/IG90KGUsIHUsIG4pIDogVWUoZSwgdHQsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBvdChlLCB1LCBuKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgaSA9IFhlKGUpLAogICAgICAgICAgICAgICAgICAgIG8gPSAhbGUuc2Nyb2xsYm94U2l6ZSgpICYmICJhYnNvbHV0ZSIgPT09IGkucG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgYSA9IChvIHx8IG4pICYmICJib3JkZXItYm94IiA9PT0gY2UuY3NzKGUsICJib3hTaXppbmciLCAhMSwgaSksCiAgICAgICAgICAgICAgICAgICAgcyA9IG4gPyBpdChlLCB1LCBuLCBhLCBpKSA6IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gYSAmJiBvICYmIChzIC09IE1hdGguY2VpbChlWyJvZmZzZXQiICsgdVswXS50b1VwcGVyQ2FzZSgpICsgdS5zbGljZSgxKV0gLSBwYXJzZUZsb2F0KGlbdV0pIC0gaXQoZSwgdSwgImJvcmRlciIsICExLCBpKSAtIC41KSksIHMgJiYgKHIgPSBZLmV4ZWModCkpICYmICJweCIgIT09IChyWzNdIHx8ICJweCIpICYmIChlLnN0eWxlW3VdID0gdCwgdCA9IGNlLmNzcyhlLCB1KSksIHJ0KDAsIHQsIHMpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwgY2UuY3NzSG9va3MubWFyZ2luTGVmdCA9IFllKGxlLnJlbGlhYmxlTWFyZ2luTGVmdCwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgIGlmICh0KSByZXR1cm4gKHBhcnNlRmxvYXQoR2UoZSwgIm1hcmdpbkxlZnQiKSkgfHwgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0gVWUoZSwgewogICAgICAgICAgICBtYXJnaW5MZWZ0OiAwCiAgICAgICAgfSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQKICAgICAgICB9KSkgKyAicHgiCiAgICB9KSwgY2UuZWFjaCh7CiAgICAgICAgbWFyZ2luOiAiIiwKICAgICAgICBwYWRkaW5nOiAiIiwKICAgICAgICBib3JkZXI6ICJXaWR0aCIKICAgIH0sIGZ1bmN0aW9uKGksIG8pIHsKICAgICAgICBjZS5jc3NIb29rc1tpICsgb10gPSB7CiAgICAgICAgICAgIGV4cGFuZDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSB7fSwgciA9ICJzdHJpbmciID09IHR5cGVvZiBlID8gZS5zcGxpdCgiICIpIDogW2VdOyB0IDwgNDsgdCsrKSBuW2kgKyBRW3RdICsgb10gPSByW3RdIHx8IHJbdCAtIDJdIHx8IHJbMF07CiAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICB9CiAgICAgICAgfSwgIm1hcmdpbiIgIT09IGkgJiYgKGNlLmNzc0hvb2tzW2kgKyBvXS5zZXQgPSBydCkKICAgIH0pLCBjZS5mbi5leHRlbmQoewogICAgICAgIGNzczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gTSh0aGlzLCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgaSwgbyA9IHt9LAogICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBYZShlKSwgaSA9IHQubGVuZ3RoOyBhIDwgaTsgYSsrKSBvW3RbYV1dID0gY2UuY3NzKGUsIHRbYV0sICExLCByKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gbiA/IGNlLnN0eWxlKGUsIHQsIG4pIDogY2UuY3NzKGUsIHQpCiAgICAgICAgICAgIH0sIGUsIHQsIDEgPCBhcmd1bWVudHMubGVuZ3RoKQogICAgICAgIH0KICAgIH0pLCAoKGNlLlR3ZWVuID0gYXQpLnByb3RvdHlwZSA9IHsKICAgICAgICBjb25zdHJ1Y3RvcjogYXQsCiAgICAgICAgaW5pdDogZnVuY3Rpb24oZSwgdCwgbiwgciwgaSwgbykgewogICAgICAgICAgICB0aGlzLmVsZW0gPSBlLCB0aGlzLnByb3AgPSBuLCB0aGlzLmVhc2luZyA9IGkgfHwgY2UuZWFzaW5nLl9kZWZhdWx0LCB0aGlzLm9wdGlvbnMgPSB0LCB0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigpLCB0aGlzLmVuZCA9IHIsIHRoaXMudW5pdCA9IG8gfHwgKGNlLmNzc051bWJlcltuXSA/ICIiIDogInB4IikKICAgICAgICB9LAogICAgICAgIGN1cjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gYXQucHJvcEhvb2tzW3RoaXMucHJvcF07CiAgICAgICAgICAgIHJldHVybiBlICYmIGUuZ2V0ID8gZS5nZXQodGhpcykgOiBhdC5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpCiAgICAgICAgfSwKICAgICAgICBydW46IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4gPSBhdC5wcm9wSG9va3NbdGhpcy5wcm9wXTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbiA/IHRoaXMucG9zID0gdCA9IGNlLmVhc2luZ1t0aGlzLmVhc2luZ10oZSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogZSwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uKSA6IHRoaXMucG9zID0gdCA9IGUsIHRoaXMubm93ID0gKHRoaXMuZW5kIC0gdGhpcy5zdGFydCkgKiB0ICsgdGhpcy5zdGFydCwgdGhpcy5vcHRpb25zLnN0ZXAgJiYgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sIHRoaXMubm93LCB0aGlzKSwgbiAmJiBuLnNldCA/IG4uc2V0KHRoaXMpIDogYXQucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSwgdGhpcwogICAgICAgIH0KICAgIH0pLmluaXQucHJvdG90eXBlID0gYXQucHJvdG90eXBlLCAoYXQucHJvcEhvb2tzID0gewogICAgICAgIF9kZWZhdWx0OiB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gMSAhPT0gZS5lbGVtLm5vZGVUeXBlIHx8IG51bGwgIT0gZS5lbGVtW2UucHJvcF0gJiYgbnVsbCA9PSBlLmVsZW0uc3R5bGVbZS5wcm9wXSA/IGUuZWxlbVtlLnByb3BdIDogKHQgPSBjZS5jc3MoZS5lbGVtLCBlLnByb3AsICIiKSkgJiYgImF1dG8iICE9PSB0ID8gdCA6IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBjZS5meC5zdGVwW2UucHJvcF0gPyBjZS5meC5zdGVwW2UucHJvcF0oZSkgOiAxICE9PSBlLmVsZW0ubm9kZVR5cGUgfHwgIWNlLmNzc0hvb2tzW2UucHJvcF0gJiYgbnVsbCA9PSBlLmVsZW0uc3R5bGVbWmUoZS5wcm9wKV0gPyBlLmVsZW1bZS5wcm9wXSA9IGUubm93IDogY2Uuc3R5bGUoZS5lbGVtLCBlLnByb3AsIGUubm93ICsgZS51bml0KQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSkuc2Nyb2xsVG9wID0gYXQucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7CiAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUuZWxlbS5ub2RlVHlwZSAmJiBlLmVsZW0ucGFyZW50Tm9kZSAmJiAoZS5lbGVtW2UucHJvcF0gPSBlLm5vdykKICAgICAgICB9CiAgICB9LCBjZS5lYXNpbmcgPSB7CiAgICAgICAgbGluZWFyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfSwKICAgICAgICBzd2luZzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gLjUgLSBNYXRoLmNvcyhlICogTWF0aC5QSSkgLyAyCiAgICAgICAgfSwKICAgICAgICBfZGVmYXVsdDogInN3aW5nIgogICAgfSwgY2UuZnggPSBhdC5wcm90b3R5cGUuaW5pdCwgY2UuZnguc3RlcCA9IHt9OwogICAgdmFyIHN0LCB1dCwgbHQsIGN0LCBmdCA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLywKICAgICAgICBwdCA9IC9xdWV1ZUhvb2tzJC87CgogICAgZnVuY3Rpb24gZHQoKSB7CiAgICAgICAgdXQgJiYgKCExID09PSBDLmhpZGRlbiAmJiBpZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPyBpZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZHQpIDogaWUuc2V0VGltZW91dChkdCwgY2UuZnguaW50ZXJ2YWwpLCBjZS5meC50aWNrKCkpCiAgICB9CgogICAgZnVuY3Rpb24gaHQoKSB7CiAgICAgICAgcmV0dXJuIGllLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHN0ID0gdm9pZCAwCiAgICAgICAgfSksIHN0ID0gRGF0ZS5ub3coKQogICAgfQoKICAgIGZ1bmN0aW9uIGd0KGUsIHQpIHsKICAgICAgICB2YXIgbiwgciA9IDAsCiAgICAgICAgICAgIGkgPSB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGUKICAgICAgICAgICAgfTsKICAgICAgICBmb3IgKHQgPSB0ID8gMSA6IDA7IHIgPCA0OyByICs9IDIgLSB0KSBpWyJtYXJnaW4iICsgKG4gPSBRW3JdKV0gPSBpWyJwYWRkaW5nIiArIG5dID0gZTsKICAgICAgICByZXR1cm4gdCAmJiAoaS5vcGFjaXR5ID0gaS53aWR0aCA9IGUpLCBpCiAgICB9CgogICAgZnVuY3Rpb24gdnQoZSwgdCwgbikgewogICAgICAgIGZvciAodmFyIHIsIGkgPSAoeXQudHdlZW5lcnNbdF0gfHwgW10pLmNvbmNhdCh5dC50d2VlbmVyc1siKiJdKSwgbyA9IDAsIGEgPSBpLmxlbmd0aDsgbyA8IGE7IG8rKykKICAgICAgICAgICAgaWYgKHIgPSBpW29dLmNhbGwobiwgdCwgZSkpIHJldHVybiByCiAgICB9CgogICAgZnVuY3Rpb24geXQobywgZSwgdCkgewogICAgICAgIHZhciBuLCBhLCByID0gMCwKICAgICAgICAgICAgaSA9IHl0LnByZWZpbHRlcnMubGVuZ3RoLAogICAgICAgICAgICBzID0gY2UuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgdS5lbGVtCiAgICAgICAgICAgIH0pLAogICAgICAgICAgICB1ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoYSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHN0IHx8IGh0KCksIHQgPSBNYXRoLm1heCgwLCBsLnN0YXJ0VGltZSArIGwuZHVyYXRpb24gLSBlKSwgbiA9IDEgLSAodCAvIGwuZHVyYXRpb24gfHwgMCksIHIgPSAwLCBpID0gbC50d2VlbnMubGVuZ3RoOyByIDwgaTsgcisrKSBsLnR3ZWVuc1tyXS5ydW4obik7CiAgICAgICAgICAgICAgICByZXR1cm4gcy5ub3RpZnlXaXRoKG8sIFtsLCBuLCB0XSksIG4gPCAxICYmIGkgPyB0IDogKGkgfHwgcy5ub3RpZnlXaXRoKG8sIFtsLCAxLCAwXSksIHMucmVzb2x2ZVdpdGgobywgW2xdKSwgITEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGwgPSBzLnByb21pc2UoewogICAgICAgICAgICAgICAgZWxlbTogbywKICAgICAgICAgICAgICAgIHByb3BzOiBjZS5leHRlbmQoe30sIGUpLAogICAgICAgICAgICAgICAgb3B0czogY2UuZXh0ZW5kKCEwLCB7CiAgICAgICAgICAgICAgICAgICAgc3BlY2lhbEVhc2luZzoge30sCiAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBjZS5lYXNpbmcuX2RlZmF1bHQKICAgICAgICAgICAgICAgIH0sIHQpLAogICAgICAgICAgICAgICAgb3JpZ2luYWxQcm9wZXJ0aWVzOiBlLAogICAgICAgICAgICAgICAgb3JpZ2luYWxPcHRpb25zOiB0LAogICAgICAgICAgICAgICAgc3RhcnRUaW1lOiBzdCB8fCBodCgpLAogICAgICAgICAgICAgICAgZHVyYXRpb246IHQuZHVyYXRpb24sCiAgICAgICAgICAgICAgICB0d2VlbnM6IFtdLAogICAgICAgICAgICAgICAgY3JlYXRlVHdlZW46IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGNlLlR3ZWVuKG8sIGwub3B0cywgZSwgdCwgbC5vcHRzLnNwZWNpYWxFYXNpbmdbZV0gfHwgbC5vcHRzLmVhc2luZyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwudHdlZW5zLnB1c2gobiksIG4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzdG9wOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZSA/IGwudHdlZW5zLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHJldHVybiB0aGlzOwogICAgICAgICAgICAgICAgICAgIGZvciAoYSA9ICEwOyB0IDwgbjsgdCsrKSBsLnR3ZWVuc1t0XS5ydW4oMSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPyAocy5ub3RpZnlXaXRoKG8sIFtsLCAxLCAwXSksIHMucmVzb2x2ZVdpdGgobywgW2wsIGVdKSkgOiBzLnJlamVjdFdpdGgobywgW2wsIGVdKSwgdGhpcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwKICAgICAgICAgICAgYyA9IGwucHJvcHM7CiAgICAgICAgZm9yICghIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuLCByLCBpLCBvLCBhOwogICAgICAgICAgICAgICAgZm9yIChuIGluIGUpCiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSB0W3IgPSBGKG4pXSwgbyA9IGVbbl0sIEFycmF5LmlzQXJyYXkobykgJiYgKGkgPSBvWzFdLCBvID0gZVtuXSA9IG9bMF0pLCBuICE9PSByICYmIChlW3JdID0gbywgZGVsZXRlIGVbbl0pLCAoYSA9IGNlLmNzc0hvb2tzW3JdKSAmJiAiZXhwYW5kIiBpbiBhKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gaW4gbyA9IGEuZXhwYW5kKG8pLCBkZWxldGUgZVtyXSwgbykgbiBpbiBlIHx8IChlW25dID0gb1tuXSwgdFtuXSA9IGkpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgdFtyXSA9IGkKICAgICAgICAgICAgfShjLCBsLm9wdHMuc3BlY2lhbEVhc2luZyk7IHIgPCBpOyByKyspCiAgICAgICAgICAgIGlmIChuID0geXQucHJlZmlsdGVyc1tyXS5jYWxsKGwsIG8sIGMsIGwub3B0cykpIHJldHVybiB2KG4uc3RvcCkgJiYgKGNlLl9xdWV1ZUhvb2tzKGwuZWxlbSwgbC5vcHRzLnF1ZXVlKS5zdG9wID0gbi5zdG9wLmJpbmQobikpLCBuOwogICAgICAgIHJldHVybiBjZS5tYXAoYywgdnQsIGwpLCB2KGwub3B0cy5zdGFydCkgJiYgbC5vcHRzLnN0YXJ0LmNhbGwobywgbCksIGwucHJvZ3Jlc3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLCBsLm9wdHMuY29tcGxldGUpLmZhaWwobC5vcHRzLmZhaWwpLmFsd2F5cyhsLm9wdHMuYWx3YXlzKSwgY2UuZngudGltZXIoY2UuZXh0ZW5kKHUsIHsKICAgICAgICAgICAgZWxlbTogbywKICAgICAgICAgICAgYW5pbTogbCwKICAgICAgICAgICAgcXVldWU6IGwub3B0cy5xdWV1ZQogICAgICAgIH0pKSwgbAogICAgfQogICAgY2UuQW5pbWF0aW9uID0gY2UuZXh0ZW5kKHl0LCB7CiAgICAgICAgdHdlZW5lcnM6IHsKICAgICAgICAgICAgIioiOiBbZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmNyZWF0ZVR3ZWVuKGUsIHQpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRlKG4uZWxlbSwgZSwgWS5leGVjKHQpLCBuKSwgbgogICAgICAgICAgICB9XQogICAgICAgIH0sCiAgICAgICAgdHdlZW5lcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2KGUpID8gKHQgPSBlLCBlID0gWyIqIl0pIDogZSA9IGUubWF0Y2goRCk7CiAgICAgICAgICAgIGZvciAodmFyIG4sIHIgPSAwLCBpID0gZS5sZW5ndGg7IHIgPCBpOyByKyspIG4gPSBlW3JdLCB5dC50d2VlbmVyc1tuXSA9IHl0LnR3ZWVuZXJzW25dIHx8IFtdLCB5dC50d2VlbmVyc1tuXS51bnNoaWZ0KHQpCiAgICAgICAgfSwKICAgICAgICBwcmVmaWx0ZXJzOiBbZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciwgaSwgbywgYSwgcywgdSwgbCwgYywgZiA9ICJ3aWR0aCIgaW4gdCB8fCAiaGVpZ2h0IiBpbiB0LAogICAgICAgICAgICAgICAgcCA9IHRoaXMsCiAgICAgICAgICAgICAgICBkID0ge30sCiAgICAgICAgICAgICAgICBoID0gZS5zdHlsZSwKICAgICAgICAgICAgICAgIGcgPSBlLm5vZGVUeXBlICYmIGVlKGUpLAogICAgICAgICAgICAgICAgdiA9IF8uZ2V0KGUsICJmeHNob3ciKTsKICAgICAgICAgICAgZm9yIChyIGluIG4ucXVldWUgfHwgKG51bGwgPT0gKGEgPSBjZS5fcXVldWVIb29rcyhlLCAiZngiKSkudW5xdWV1ZWQgJiYgKGEudW5xdWV1ZWQgPSAwLCBzID0gYS5lbXB0eS5maXJlLCBhLmVtcHR5LmZpcmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBhLnVucXVldWVkIHx8IHMoKQogICAgICAgICAgICAgICAgfSksIGEudW5xdWV1ZWQrKywgcC5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcC5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEudW5xdWV1ZWQtLSwgY2UucXVldWUoZSwgImZ4IikubGVuZ3RoIHx8IGEuZW1wdHkuZmlyZSgpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pKSwgdCkKICAgICAgICAgICAgICAgIGlmIChpID0gdFtyXSwgZnQudGVzdChpKSkgewogICAgICAgICAgICAgICAgICAgIGlmIChkZWxldGUgdFtyXSwgbyA9IG8gfHwgInRvZ2dsZSIgPT09IGksIGkgPT09IChnID8gImhpZGUiIDogInNob3ciKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInNob3ciICE9PSBpIHx8ICF2IHx8IHZvaWQgMCA9PT0gdltyXSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAhMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkW3JdID0gdiAmJiB2W3JdIHx8IGNlLnN0eWxlKGUsIHIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgodSA9ICFjZS5pc0VtcHR5T2JqZWN0KHQpKSB8fCAhY2UuaXNFbXB0eU9iamVjdChkKSkKICAgICAgICAgICAgICAgIGZvciAociBpbiBmICYmIDEgPT09IGUubm9kZVR5cGUgJiYgKG4ub3ZlcmZsb3cgPSBbaC5vdmVyZmxvdywgaC5vdmVyZmxvd1gsIGgub3ZlcmZsb3dZXSwgbnVsbCA9PSAobCA9IHYgJiYgdi5kaXNwbGF5KSAmJiAobCA9IF8uZ2V0KGUsICJkaXNwbGF5IikpLCAibm9uZSIgPT09IChjID0gY2UuY3NzKGUsICJkaXNwbGF5IikpICYmIChsID8gYyA9IGwgOiAocmUoW2VdLCAhMCksIGwgPSBlLnN0eWxlLmRpc3BsYXkgfHwgbCwgYyA9IGNlLmNzcyhlLCAiZGlzcGxheSIpLCByZShbZV0pKSksICgiaW5saW5lIiA9PT0gYyB8fCAiaW5saW5lLWJsb2NrIiA9PT0gYyAmJiBudWxsICE9IGwpICYmICJub25lIiA9PT0gY2UuY3NzKGUsICJmbG9hdCIpICYmICh1IHx8IChwLmRvbmUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGguZGlzcGxheSA9IGwKICAgICAgICAgICAgICAgICAgICB9KSwgbnVsbCA9PSBsICYmIChjID0gaC5kaXNwbGF5LCBsID0gIm5vbmUiID09PSBjID8gIiIgOiBjKSksIGguZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siKSksIG4ub3ZlcmZsb3cgJiYgKGgub3ZlcmZsb3cgPSAiaGlkZGVuIiwgcC5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGgub3ZlcmZsb3cgPSBuLm92ZXJmbG93WzBdLCBoLm92ZXJmbG93WCA9IG4ub3ZlcmZsb3dbMV0sIGgub3ZlcmZsb3dZID0gbi5vdmVyZmxvd1syXQogICAgICAgICAgICAgICAgICAgIH0pKSwgdSA9ICExLCBkKSB1IHx8ICh2ID8gImhpZGRlbiIgaW4gdiAmJiAoZyA9IHYuaGlkZGVuKSA6IHYgPSBfLmFjY2VzcyhlLCAiZnhzaG93IiwgewogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGwKICAgICAgICAgICAgICAgIH0pLCBvICYmICh2LmhpZGRlbiA9ICFnKSwgZyAmJiByZShbZV0sICEwKSwgcC5kb25lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAociBpbiBnIHx8IHJlKFtlXSksIF8ucmVtb3ZlKGUsICJmeHNob3ciKSwgZCkgY2Uuc3R5bGUoZSwgciwgZFtyXSkKICAgICAgICAgICAgICAgIH0pKSwgdSA9IHZ0KGcgPyB2W3JdIDogMCwgciwgcCksIHIgaW4gdiB8fCAodltyXSA9IHUuc3RhcnQsIGcgJiYgKHUuZW5kID0gdS5zdGFydCwgdS5zdGFydCA9IDApKQogICAgICAgIH1dLAogICAgICAgIHByZWZpbHRlcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB0ID8geXQucHJlZmlsdGVycy51bnNoaWZ0KGUpIDogeXQucHJlZmlsdGVycy5wdXNoKGUpCiAgICAgICAgfQogICAgfSksIGNlLnNwZWVkID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciByID0gZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSA/IGNlLmV4dGVuZCh7fSwgZSkgOiB7CiAgICAgICAgICAgIGNvbXBsZXRlOiBuIHx8ICFuICYmIHQgfHwgdihlKSAmJiBlLAogICAgICAgICAgICBkdXJhdGlvbjogZSwKICAgICAgICAgICAgZWFzaW5nOiBuICYmIHQgfHwgdCAmJiAhdih0KSAmJiB0CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gY2UuZngub2ZmID8gci5kdXJhdGlvbiA9IDAgOiAibnVtYmVyIiAhPSB0eXBlb2Ygci5kdXJhdGlvbiAmJiAoci5kdXJhdGlvbiBpbiBjZS5meC5zcGVlZHMgPyByLmR1cmF0aW9uID0gY2UuZnguc3BlZWRzW3IuZHVyYXRpb25dIDogci5kdXJhdGlvbiA9IGNlLmZ4LnNwZWVkcy5fZGVmYXVsdCksIG51bGwgIT0gci5xdWV1ZSAmJiAhMCAhPT0gci5xdWV1ZSB8fCAoci5xdWV1ZSA9ICJmeCIpLCByLm9sZCA9IHIuY29tcGxldGUsIHIuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdihyLm9sZCkgJiYgci5vbGQuY2FsbCh0aGlzKSwgci5xdWV1ZSAmJiBjZS5kZXF1ZXVlKHRoaXMsIHIucXVldWUpCiAgICAgICAgfSwgcgogICAgfSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBmYWRlVG86IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGVlKS5jc3MoIm9wYWNpdHkiLCAwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiB0CiAgICAgICAgICAgIH0sIGUsIG4sIHIpCiAgICAgICAgfSwKICAgICAgICBhbmltYXRlOiBmdW5jdGlvbih0LCBlLCBuLCByKSB7CiAgICAgICAgICAgIHZhciBpID0gY2UuaXNFbXB0eU9iamVjdCh0KSwKICAgICAgICAgICAgICAgIG8gPSBjZS5zcGVlZChlLCBuLCByKSwKICAgICAgICAgICAgICAgIGEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHl0KHRoaXMsIGNlLmV4dGVuZCh7fSwgdCksIG8pOwogICAgICAgICAgICAgICAgICAgIChpIHx8IF8uZ2V0KHRoaXMsICJmaW5pc2giKSkgJiYgZS5zdG9wKCEwKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIGEuZmluaXNoID0gYSwgaSB8fCAhMSA9PT0gby5xdWV1ZSA/IHRoaXMuZWFjaChhKSA6IHRoaXMucXVldWUoby5xdWV1ZSwgYSkKICAgICAgICB9LAogICAgICAgIHN0b3A6IGZ1bmN0aW9uKGksIGUsIG8pIHsKICAgICAgICAgICAgdmFyIGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUuc3RvcDsKICAgICAgICAgICAgICAgIGRlbGV0ZSBlLnN0b3AsIHQobykKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiBpICYmIChvID0gZSwgZSA9IGksIGkgPSB2b2lkIDApLCBlICYmIHRoaXMucXVldWUoaSB8fCAiZngiLCBbXSksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gITAsCiAgICAgICAgICAgICAgICAgICAgdCA9IG51bGwgIT0gaSAmJiBpICsgInF1ZXVlSG9va3MiLAogICAgICAgICAgICAgICAgICAgIG4gPSBjZS50aW1lcnMsCiAgICAgICAgICAgICAgICAgICAgciA9IF8uZ2V0KHRoaXMpOwogICAgICAgICAgICAgICAgaWYgKHQpIHJbdF0gJiYgclt0XS5zdG9wICYmIGEoclt0XSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIHIpIHJbdF0gJiYgclt0XS5zdG9wICYmIHB0LnRlc3QodCkgJiYgYShyW3RdKTsKICAgICAgICAgICAgICAgIGZvciAodCA9IG4ubGVuZ3RoOyB0LS07KSBuW3RdLmVsZW0gIT09IHRoaXMgfHwgbnVsbCAhPSBpICYmIG5bdF0ucXVldWUgIT09IGkgfHwgKG5bdF0uYW5pbS5zdG9wKG8pLCBlID0gITEsIG4uc3BsaWNlKHQsIDEpKTsKICAgICAgICAgICAgICAgICFlICYmIG8gfHwgY2UuZGVxdWV1ZSh0aGlzLCBpKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgZmluaXNoOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiAhMSAhPT0gYSAmJiAoYSA9IGEgfHwgImZ4IiksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0ID0gXy5nZXQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IHRbYSArICJxdWV1ZSJdLAogICAgICAgICAgICAgICAgICAgIHIgPSB0W2EgKyAicXVldWVIb29rcyJdLAogICAgICAgICAgICAgICAgICAgIGkgPSBjZS50aW1lcnMsCiAgICAgICAgICAgICAgICAgICAgbyA9IG4gPyBuLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICBmb3IgKHQuZmluaXNoID0gITAsIGNlLnF1ZXVlKHRoaXMsIGEsIFtdKSwgciAmJiByLnN0b3AgJiYgci5zdG9wLmNhbGwodGhpcywgITApLCBlID0gaS5sZW5ndGg7IGUtLTspIGlbZV0uZWxlbSA9PT0gdGhpcyAmJiBpW2VdLnF1ZXVlID09PSBhICYmIChpW2VdLmFuaW0uc3RvcCghMCksIGkuc3BsaWNlKGUsIDEpKTsKICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCBvOyBlKyspIG5bZV0gJiYgbltlXS5maW5pc2ggJiYgbltlXS5maW5pc2guY2FsbCh0aGlzKTsKICAgICAgICAgICAgICAgIGRlbGV0ZSB0LmZpbmlzaAogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0pLCBjZS5lYWNoKFsidG9nZ2xlIiwgInNob3ciLCAiaGlkZSJdLCBmdW5jdGlvbihlLCByKSB7CiAgICAgICAgdmFyIGkgPSBjZS5mbltyXTsKICAgICAgICBjZS5mbltyXSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSB8fCAiYm9vbGVhbiIgPT0gdHlwZW9mIGUgPyBpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiB0aGlzLmFuaW1hdGUoZ3QociwgITApLCBlLCB0LCBuKQogICAgICAgIH0KICAgIH0pLCBjZS5lYWNoKHsKICAgICAgICBzbGlkZURvd246IGd0KCJzaG93IiksCiAgICAgICAgc2xpZGVVcDogZ3QoImhpZGUiKSwKICAgICAgICBzbGlkZVRvZ2dsZTogZ3QoInRvZ2dsZSIpLAogICAgICAgIGZhZGVJbjogewogICAgICAgICAgICBvcGFjaXR5OiAic2hvdyIKICAgICAgICB9LAogICAgICAgIGZhZGVPdXQ6IHsKICAgICAgICAgICAgb3BhY2l0eTogImhpZGUiCiAgICAgICAgfSwKICAgICAgICBmYWRlVG9nZ2xlOiB7CiAgICAgICAgICAgIG9wYWNpdHk6ICJ0b2dnbGUiCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24oZSwgcikgewogICAgICAgIGNlLmZuW2VdID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5hbmltYXRlKHIsIGUsIHQsIG4pCiAgICAgICAgfQogICAgfSksIGNlLnRpbWVycyA9IFtdLCBjZS5meC50aWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUsIHQgPSAwLAogICAgICAgICAgICBuID0gY2UudGltZXJzOwogICAgICAgIGZvciAoc3QgPSBEYXRlLm5vdygpOyB0IDwgbi5sZW5ndGg7IHQrKykoZSA9IG5bdF0pKCkgfHwgblt0XSAhPT0gZSB8fCBuLnNwbGljZSh0LS0sIDEpOwogICAgICAgIG4ubGVuZ3RoIHx8IGNlLmZ4LnN0b3AoKSwgc3QgPSB2b2lkIDAKICAgIH0sIGNlLmZ4LnRpbWVyID0gZnVuY3Rpb24oZSkgewogICAgICAgIGNlLnRpbWVycy5wdXNoKGUpLCBjZS5meC5zdGFydCgpCiAgICB9LCBjZS5meC5pbnRlcnZhbCA9IDEzLCBjZS5meC5zdGFydCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHV0IHx8ICh1dCA9ICEwLCBkdCgpKQogICAgfSwgY2UuZnguc3RvcCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHV0ID0gbnVsbAogICAgfSwgY2UuZnguc3BlZWRzID0gewogICAgICAgIHNsb3c6IDYwMCwKICAgICAgICBmYXN0OiAyMDAsCiAgICAgICAgX2RlZmF1bHQ6IDQwMAogICAgfSwgY2UuZm4uZGVsYXkgPSBmdW5jdGlvbihyLCBlKSB7CiAgICAgICAgcmV0dXJuIHIgPSBjZS5meCAmJiBjZS5meC5zcGVlZHNbcl0gfHwgciwgZSA9IGUgfHwgImZ4IiwgdGhpcy5xdWV1ZShlLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gaWUuc2V0VGltZW91dChlLCByKTsKICAgICAgICAgICAgdC5zdG9wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZS5jbGVhclRpbWVvdXQobikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBsdCA9IEMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSwgY3QgPSBDLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFwcGVuZENoaWxkKEMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLCBsdC50eXBlID0gImNoZWNrYm94IiwgbGUuY2hlY2tPbiA9ICIiICE9PSBsdC52YWx1ZSwgbGUub3B0U2VsZWN0ZWQgPSBjdC5zZWxlY3RlZCwgKGx0ID0gQy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS52YWx1ZSA9ICJ0IiwgbHQudHlwZSA9ICJyYWRpbyIsIGxlLnJhZGlvVmFsdWUgPSAidCIgPT09IGx0LnZhbHVlOwogICAgdmFyIG10LCB4dCA9IGNlLmV4cHIuYXR0ckhhbmRsZTsKICAgIGNlLmZuLmV4dGVuZCh7CiAgICAgICAgYXR0cjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gTSh0aGlzLCBjZS5hdHRyLCBlLCB0LCAxIDwgYXJndW1lbnRzLmxlbmd0aCkKICAgICAgICB9LAogICAgICAgIHJlbW92ZUF0dHI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNlLnJlbW92ZUF0dHIodGhpcywgZSkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgY2UuZXh0ZW5kKHsKICAgICAgICBhdHRyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCBvID0gZS5ub2RlVHlwZTsKICAgICAgICAgICAgaWYgKDMgIT09IG8gJiYgOCAhPT0gbyAmJiAyICE9PSBvKSByZXR1cm4gInVuZGVmaW5lZCIgPT0gdHlwZW9mIGUuZ2V0QXR0cmlidXRlID8gY2UucHJvcChlLCB0LCBuKSA6ICgxID09PSBvICYmIGNlLmlzWE1MRG9jKGUpIHx8IChpID0gY2UuYXR0ckhvb2tzW3QudG9Mb3dlckNhc2UoKV0gfHwgKGNlLmV4cHIubWF0Y2guYm9vbC50ZXN0KHQpID8gbXQgOiB2b2lkIDApKSwgdm9pZCAwICE9PSBuID8gbnVsbCA9PT0gbiA/IHZvaWQgY2UucmVtb3ZlQXR0cihlLCB0KSA6IGkgJiYgInNldCIgaW4gaSAmJiB2b2lkIDAgIT09IChyID0gaS5zZXQoZSwgbiwgdCkpID8gciA6IChlLnNldEF0dHJpYnV0ZSh0LCBuICsgIiIpLCBuKSA6IGkgJiYgImdldCIgaW4gaSAmJiBudWxsICE9PSAociA9IGkuZ2V0KGUsIHQpKSA/IHIgOiBudWxsID09IChyID0gY2UuZmluZC5hdHRyKGUsIHQpKSA/IHZvaWQgMCA6IHIpCiAgICAgICAgfSwKICAgICAgICBhdHRySG9va3M6IHsKICAgICAgICAgICAgdHlwZTogewogICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFsZS5yYWRpb1ZhbHVlICYmICJyYWRpbyIgPT09IHQgJiYgZmUoZSwgImlucHV0IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCB0KSwgbiAmJiAoZS52YWx1ZSA9IG4pLCB0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZW1vdmVBdHRyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByID0gMCwKICAgICAgICAgICAgICAgIGkgPSB0ICYmIHQubWF0Y2goRCk7CiAgICAgICAgICAgIGlmIChpICYmIDEgPT09IGUubm9kZVR5cGUpCiAgICAgICAgICAgICAgICB3aGlsZSAobiA9IGlbcisrXSkgZS5yZW1vdmVBdHRyaWJ1dGUobikKICAgICAgICB9CiAgICB9KSwgbXQgPSB7CiAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiAhMSA9PT0gdCA/IGNlLnJlbW92ZUF0dHIoZSwgbikgOiBlLnNldEF0dHJpYnV0ZShuLCBuKSwgbgogICAgICAgIH0KICAgIH0sIGNlLmVhY2goY2UuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdmFyIGEgPSB4dFt0XSB8fCBjZS5maW5kLmF0dHI7CiAgICAgICAgeHRbdF0gPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCBvID0gdC50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICByZXR1cm4gbiB8fCAoaSA9IHh0W29dLCB4dFtvXSA9IHIsIHIgPSBudWxsICE9IGEoZSwgdCwgbikgPyBvIDogbnVsbCwgeHRbb10gPSBpKSwgcgogICAgICAgIH0KICAgIH0pOwogICAgdmFyIGJ0ID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSwKICAgICAgICB3dCA9IC9eKD86YXxhcmVhKSQvaTsKCiAgICBmdW5jdGlvbiBUdChlKSB7CiAgICAgICAgcmV0dXJuIChlLm1hdGNoKEQpIHx8IFtdKS5qb2luKCIgIikKICAgIH0KCiAgICBmdW5jdGlvbiBDdChlKSB7CiAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlICYmIGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiCiAgICB9CgogICAgZnVuY3Rpb24ga3QoZSkgewogICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGUpID8gZSA6ICJzdHJpbmciID09IHR5cGVvZiBlICYmIGUubWF0Y2goRCkgfHwgW10KICAgIH0KICAgIGNlLmZuLmV4dGVuZCh7CiAgICAgICAgcHJvcDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gTSh0aGlzLCBjZS5wcm9wLCBlLCB0LCAxIDwgYXJndW1lbnRzLmxlbmd0aCkKICAgICAgICB9LAogICAgICAgIHJlbW92ZVByb3A6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzW2NlLnByb3BGaXhbZV0gfHwgZV0KICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgY2UuZXh0ZW5kKHsKICAgICAgICBwcm9wOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCBvID0gZS5ub2RlVHlwZTsKICAgICAgICAgICAgaWYgKDMgIT09IG8gJiYgOCAhPT0gbyAmJiAyICE9PSBvKSByZXR1cm4gMSA9PT0gbyAmJiBjZS5pc1hNTERvYyhlKSB8fCAodCA9IGNlLnByb3BGaXhbdF0gfHwgdCwgaSA9IGNlLnByb3BIb29rc1t0XSksIHZvaWQgMCAhPT0gbiA/IGkgJiYgInNldCIgaW4gaSAmJiB2b2lkIDAgIT09IChyID0gaS5zZXQoZSwgbiwgdCkpID8gciA6IGVbdF0gPSBuIDogaSAmJiAiZ2V0IiBpbiBpICYmIG51bGwgIT09IChyID0gaS5nZXQoZSwgdCkpID8gciA6IGVbdF0KICAgICAgICB9LAogICAgICAgIHByb3BIb29rczogewogICAgICAgICAgICB0YWJJbmRleDogewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBjZS5maW5kLmF0dHIoZSwgInRhYmluZGV4Iik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPyBwYXJzZUludCh0LCAxMCkgOiBidC50ZXN0KGUubm9kZU5hbWUpIHx8IHd0LnRlc3QoZS5ub2RlTmFtZSkgJiYgZS5ocmVmID8gMCA6IC0xCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHByb3BGaXg6IHsKICAgICAgICAgICAgImZvciI6ICJodG1sRm9yIiwKICAgICAgICAgICAgImNsYXNzIjogImNsYXNzTmFtZSIKICAgICAgICB9CiAgICB9KSwgbGUub3B0U2VsZWN0ZWQgfHwgKGNlLnByb3BIb29rcy5zZWxlY3RlZCA9IHsKICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLnBhcmVudE5vZGU7CiAgICAgICAgICAgIHJldHVybiB0ICYmIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwgbnVsbAogICAgICAgIH0sCiAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gZS5wYXJlbnROb2RlOwogICAgICAgICAgICB0ICYmICh0LnNlbGVjdGVkSW5kZXgsIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCkKICAgICAgICB9CiAgICB9KSwgY2UuZWFjaChbInRhYkluZGV4IiwgInJlYWRPbmx5IiwgIm1heExlbmd0aCIsICJjZWxsU3BhY2luZyIsICJjZWxsUGFkZGluZyIsICJyb3dTcGFuIiwgImNvbFNwYW4iLCAidXNlTWFwIiwgImZyYW1lQm9yZGVyIiwgImNvbnRlbnRFZGl0YWJsZSJdLCBmdW5jdGlvbigpIHsKICAgICAgICBjZS5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV0gPSB0aGlzCiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBhZGRDbGFzczogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgZSwgbiwgciwgaSwgbywgYTsKICAgICAgICAgICAgcmV0dXJuIHYodCkgPyB0aGlzLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgY2UodGhpcykuYWRkQ2xhc3ModC5jYWxsKHRoaXMsIGUsIEN0KHRoaXMpKSkKICAgICAgICAgICAgfSkgOiAoZSA9IGt0KHQpKS5sZW5ndGggPyB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAociA9IEN0KHRoaXMpLCBuID0gMSA9PT0gdGhpcy5ub2RlVHlwZSAmJiAiICIgKyBUdChyKSArICIgIikgewogICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDA7IG8gPCBlLmxlbmd0aDsgbysrKSBpID0gZVtvXSwgbi5pbmRleE9mKCIgIiArIGkgKyAiICIpIDwgMCAmJiAobiArPSBpICsgIiAiKTsKICAgICAgICAgICAgICAgICAgICBhID0gVHQobiksIHIgIT09IGEgJiYgdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgYSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkgOiB0aGlzCiAgICAgICAgfSwKICAgICAgICByZW1vdmVDbGFzczogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgZSwgbiwgciwgaSwgbywgYTsKICAgICAgICAgICAgcmV0dXJuIHYodCkgPyB0aGlzLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgY2UodGhpcykucmVtb3ZlQ2xhc3ModC5jYWxsKHRoaXMsIGUsIEN0KHRoaXMpKSkKICAgICAgICAgICAgfSkgOiBhcmd1bWVudHMubGVuZ3RoID8gKGUgPSBrdCh0KSkubGVuZ3RoID8gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKHIgPSBDdCh0aGlzKSwgbiA9IDEgPT09IHRoaXMubm9kZVR5cGUgJiYgIiAiICsgVHQocikgKyAiICIpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSAwOyBvIDwgZS5sZW5ndGg7IG8rKykgewogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVtvXTsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKC0xIDwgbi5pbmRleE9mKCIgIiArIGkgKyAiICIpKSBuID0gbi5yZXBsYWNlKCIgIiArIGkgKyAiICIsICIgIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYSA9IFR0KG4pLCByICE9PSBhICYmIHRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsIGEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pIDogdGhpcyA6IHRoaXMuYXR0cigiY2xhc3MiLCAiIikKICAgICAgICB9LAogICAgICAgIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgIHZhciBlLCByLCBpLCBvLCBhID0gdHlwZW9mIHQsCiAgICAgICAgICAgICAgICBzID0gInN0cmluZyIgPT09IGEgfHwgQXJyYXkuaXNBcnJheSh0KTsKICAgICAgICAgICAgcmV0dXJuIHYodCkgPyB0aGlzLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgY2UodGhpcykudG9nZ2xlQ2xhc3ModC5jYWxsKHRoaXMsIGUsIEN0KHRoaXMpLCBuKSwgbikKICAgICAgICAgICAgfSkgOiAiYm9vbGVhbiIgPT0gdHlwZW9mIG4gJiYgcyA/IG4gPyB0aGlzLmFkZENsYXNzKHQpIDogdGhpcy5yZW1vdmVDbGFzcyh0KSA6IChlID0ga3QodCksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmIChzKQogICAgICAgICAgICAgICAgICAgIGZvciAobyA9IGNlKHRoaXMpLCBpID0gMDsgaSA8IGUubGVuZ3RoOyBpKyspIHIgPSBlW2ldLCBvLmhhc0NsYXNzKHIpID8gby5yZW1vdmVDbGFzcyhyKSA6IG8uYWRkQ2xhc3Mocik7CiAgICAgICAgICAgICAgICBlbHNlIHZvaWQgMCAhPT0gdCAmJiAiYm9vbGVhbiIgIT09IGEgfHwgKChyID0gQ3QodGhpcykpICYmIF8uc2V0KHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgciksIHRoaXMuc2V0QXR0cmlidXRlICYmIHRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsIHIgfHwgITEgPT09IHQgPyAiIiA6IF8uZ2V0KHRoaXMsICJfX2NsYXNzTmFtZV9fIikgfHwgIiIpKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIGhhc0NsYXNzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuLCByID0gMDsKICAgICAgICAgICAgdCA9ICIgIiArIGUgKyAiICI7CiAgICAgICAgICAgIHdoaWxlIChuID0gdGhpc1tyKytdKQogICAgICAgICAgICAgICAgaWYgKDEgPT09IG4ubm9kZVR5cGUgJiYgLTEgPCAoIiAiICsgVHQoQ3QobikpICsgIiAiKS5pbmRleE9mKHQpKSByZXR1cm4gITA7CiAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIFN0ID0gL1xyL2c7CiAgICBjZS5mbi5leHRlbmQoewogICAgICAgIHZhbDogZnVuY3Rpb24obikgewogICAgICAgICAgICB2YXIgciwgZSwgaSwgdCA9IHRoaXNbMF07CiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGkgPSB2KG4pLCB0aGlzLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICAxID09PSB0aGlzLm5vZGVUeXBlICYmIChudWxsID09ICh0ID0gaSA/IG4uY2FsbCh0aGlzLCBlLCBjZSh0aGlzKS52YWwoKSkgOiBuKSA/IHQgPSAiIiA6ICJudW1iZXIiID09IHR5cGVvZiB0ID8gdCArPSAiIiA6IEFycmF5LmlzQXJyYXkodCkgJiYgKHQgPSBjZS5tYXAodCwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyAiIiA6IGUgKyAiIgogICAgICAgICAgICAgICAgfSkpLCAociA9IGNlLnZhbEhvb2tzW3RoaXMudHlwZV0gfHwgY2UudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkgJiYgInNldCIgaW4gciAmJiB2b2lkIDAgIT09IHIuc2V0KHRoaXMsIHQsICJ2YWx1ZSIpIHx8ICh0aGlzLnZhbHVlID0gdCkpCiAgICAgICAgICAgIH0pKSA6IHQgPyAociA9IGNlLnZhbEhvb2tzW3QudHlwZV0gfHwgY2UudmFsSG9va3NbdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkgJiYgImdldCIgaW4gciAmJiB2b2lkIDAgIT09IChlID0gci5nZXQodCwgInZhbHVlIikpID8gZSA6ICJzdHJpbmciID09IHR5cGVvZihlID0gdC52YWx1ZSkgPyBlLnJlcGxhY2UoU3QsICIiKSA6IG51bGwgPT0gZSA/ICIiIDogZSA6IHZvaWQgMAogICAgICAgIH0KICAgIH0pLCBjZS5leHRlbmQoewogICAgICAgIHZhbEhvb2tzOiB7CiAgICAgICAgICAgIG9wdGlvbjogewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBjZS5maW5kLmF0dHIoZSwgInZhbHVlIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gdCA/IHQgOiBUdChjZS50ZXh0KGUpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZWxlY3Q6IHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBuLCByLCBpID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5zZWxlY3RlZEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gInNlbGVjdC1vbmUiID09PSBlLnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhID8gbnVsbCA6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gYSA/IG8gKyAxIDogaS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gbyA8IDAgPyB1IDogYSA/IG8gOiAwOyByIDwgdTsgcisrKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChuID0gaVtyXSkuc2VsZWN0ZWQgfHwgciA9PT0gbykgJiYgIW4uZGlzYWJsZWQgJiYgKCFuLnBhcmVudE5vZGUuZGlzYWJsZWQgfHwgIWZlKG4ucGFyZW50Tm9kZSwgIm9wdGdyb3VwIikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGNlKG4pLnZhbCgpLCBhKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucHVzaCh0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiwgciwgaSA9IGUub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGNlLm1ha2VBcnJheSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChhLS0pKChyID0gaVthXSkuc2VsZWN0ZWQgPSAtMSA8IGNlLmluQXJyYXkoY2UudmFsSG9va3Mub3B0aW9uLmdldChyKSwgbykpICYmIChuID0gITApOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuIHx8IChlLnNlbGVjdGVkSW5kZXggPSAtMSksIG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLCBjZS5lYWNoKFsicmFkaW8iLCAiY2hlY2tib3giXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgY2UudmFsSG9va3NbdGhpc10gPSB7CiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHJldHVybiBlLmNoZWNrZWQgPSAtMSA8IGNlLmluQXJyYXkoY2UoZSkudmFsKCksIHQpCiAgICAgICAgICAgIH0KICAgICAgICB9LCBsZS5jaGVja09uIHx8IChjZS52YWxIb29rc1t0aGlzXS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSBlLmdldEF0dHJpYnV0ZSgidmFsdWUiKSA/ICJvbiIgOiBlLnZhbHVlCiAgICAgICAgfSkKICAgIH0pOwogICAgdmFyIEV0ID0gaWUubG9jYXRpb24sCiAgICAgICAganQgPSB7CiAgICAgICAgICAgIGd1aWQ6IERhdGUubm93KCkKICAgICAgICB9LAogICAgICAgIEF0ID0gL1w/LzsKICAgIGNlLnBhcnNlWE1MID0gZnVuY3Rpb24oZSkgewogICAgICAgIHZhciB0LCBuOwogICAgICAgIGlmICghZSB8fCAic3RyaW5nIiAhPSB0eXBlb2YgZSkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdCA9IChuZXcgaWUuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoZSwgInRleHQveG1sIikKICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgIHJldHVybiBuID0gdCAmJiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpWzBdLCB0ICYmICFuIHx8IGNlLmVycm9yKCJJbnZhbGlkIFhNTDogIiArIChuID8gY2UubWFwKG4uY2hpbGROb2RlcywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZS50ZXh0Q29udGVudAogICAgICAgIH0pLmpvaW4oIlxuIikgOiBlKSksIHQKICAgIH07CiAgICB2YXIgRHQgPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sCiAgICAgICAgTnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCkKICAgICAgICB9OwogICAgY2UuZXh0ZW5kKGNlLmV2ZW50LCB7CiAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICB2YXIgaSwgbywgYSwgcywgdSwgbCwgYywgZiwgcCA9IFtuIHx8IENdLAogICAgICAgICAgICAgICAgZCA9IHVlLmNhbGwoZSwgInR5cGUiKSA/IGUudHlwZSA6IGUsCiAgICAgICAgICAgICAgICBoID0gdWUuY2FsbChlLCAibmFtZXNwYWNlIikgPyBlLm5hbWVzcGFjZS5zcGxpdCgiLiIpIDogW107CiAgICAgICAgICAgIGlmIChvID0gZiA9IGEgPSBuID0gbiB8fCBDLCAzICE9PSBuLm5vZGVUeXBlICYmIDggIT09IG4ubm9kZVR5cGUgJiYgIUR0LnRlc3QoZCArIGNlLmV2ZW50LnRyaWdnZXJlZCkgJiYgKC0xIDwgZC5pbmRleE9mKCIuIikgJiYgKGQgPSAoaCA9IGQuc3BsaXQoIi4iKSkuc2hpZnQoKSwgaC5zb3J0KCkpLCB1ID0gZC5pbmRleE9mKCI6IikgPCAwICYmICJvbiIgKyBkLCAoZSA9IGVbY2UuZXhwYW5kb10gPyBlIDogbmV3IGNlLkV2ZW50KGQsICJvYmplY3QiID09IHR5cGVvZiBlICYmIGUpKS5pc1RyaWdnZXIgPSByID8gMiA6IDMsIGUubmFtZXNwYWNlID0gaC5qb2luKCIuIiksIGUucm5hbWVzcGFjZSA9IGUubmFtZXNwYWNlID8gbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIikgOiBudWxsLCBlLnJlc3VsdCA9IHZvaWQgMCwgZS50YXJnZXQgfHwgKGUudGFyZ2V0ID0gbiksIHQgPSBudWxsID09IHQgPyBbZV0gOiBjZS5tYWtlQXJyYXkodCwgW2VdKSwgYyA9IGNlLmV2ZW50LnNwZWNpYWxbZF0gfHwge30sIHIgfHwgIWMudHJpZ2dlciB8fCAhMSAhPT0gYy50cmlnZ2VyLmFwcGx5KG4sIHQpKSkgewogICAgICAgICAgICAgICAgaWYgKCFyICYmICFjLm5vQnViYmxlICYmICF5KG4pKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gYy5kZWxlZ2F0ZVR5cGUgfHwgZCwgRHQudGVzdChzICsgZCkgfHwgKG8gPSBvLnBhcmVudE5vZGUpOyBvOyBvID0gby5wYXJlbnROb2RlKSBwLnB1c2gobyksIGEgPSBvOwogICAgICAgICAgICAgICAgICAgIGEgPT09IChuLm93bmVyRG9jdW1lbnQgfHwgQykgJiYgcC5wdXNoKGEuZGVmYXVsdFZpZXcgfHwgYS5wYXJlbnRXaW5kb3cgfHwgaWUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgIHdoaWxlICgobyA9IHBbaSsrXSkgJiYgIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkgZiA9IG8sIGUudHlwZSA9IDEgPCBpID8gcyA6IGMuYmluZFR5cGUgfHwgZCwgKGwgPSAoXy5nZXQobywgImV2ZW50cyIpIHx8IE9iamVjdC5jcmVhdGUobnVsbCkpW2UudHlwZV0gJiYgXy5nZXQobywgImhhbmRsZSIpKSAmJiBsLmFwcGx5KG8sIHQpLCAobCA9IHUgJiYgb1t1XSkgJiYgbC5hcHBseSAmJiAkKG8pICYmIChlLnJlc3VsdCA9IGwuYXBwbHkobywgdCksICExID09PSBlLnJlc3VsdCAmJiBlLnByZXZlbnREZWZhdWx0KCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIGUudHlwZSA9IGQsIHIgfHwgZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSB8fCBjLl9kZWZhdWx0ICYmICExICE9PSBjLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksIHQpIHx8ICEkKG4pIHx8IHUgJiYgdihuW2RdKSAmJiAheShuKSAmJiAoKGEgPSBuW3VdKSAmJiAoblt1XSA9IG51bGwpLCBjZS5ldmVudC50cmlnZ2VyZWQgPSBkLCBlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgZi5hZGRFdmVudExpc3RlbmVyKGQsIE50KSwgbltkXSgpLCBlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgZi5yZW1vdmVFdmVudExpc3RlbmVyKGQsIE50KSwgY2UuZXZlbnQudHJpZ2dlcmVkID0gdm9pZCAwLCBhICYmIChuW3VdID0gYSkpLCBlLnJlc3VsdAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBzaW11bGF0ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciA9IGNlLmV4dGVuZChuZXcgY2UuRXZlbnQsIG4sIHsKICAgICAgICAgICAgICAgIHR5cGU6IGUsCiAgICAgICAgICAgICAgICBpc1NpbXVsYXRlZDogITAKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNlLmV2ZW50LnRyaWdnZXIociwgbnVsbCwgdCkKICAgICAgICB9CiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjZS5ldmVudC50cmlnZ2VyKGUsIHQsIHRoaXMpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICB0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IHRoaXNbMF07CiAgICAgICAgICAgIGlmIChuKSByZXR1cm4gY2UuZXZlbnQudHJpZ2dlcihlLCB0LCBuLCAhMCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBxdCA9IC9cW1xdJC8sCiAgICAgICAgTHQgPSAvXHI/XG4vZywKICAgICAgICBIdCA9IC9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSwKICAgICAgICBPdCA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTsKCiAgICBmdW5jdGlvbiBQdChuLCBlLCByLCBpKSB7CiAgICAgICAgdmFyIHQ7CiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIGNlLmVhY2goZSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByIHx8IHF0LnRlc3QobikgPyBpKG4sIHQpIDogUHQobiArICJbIiArICgib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiBudWxsICE9IHQgPyBlIDogIiIpICsgIl0iLCB0LCByLCBpKQogICAgICAgIH0pOwogICAgICAgIGVsc2UgaWYgKHIgfHwgIm9iamVjdCIgIT09IHgoZSkpIGkobiwgZSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBmb3IgKHQgaW4gZSkgUHQobiArICJbIiArIHQgKyAiXSIsIGVbdF0sIHIsIGkpCiAgICB9CiAgICBjZS5wYXJhbSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB2YXIgbiwgciA9IFtdLAogICAgICAgICAgICBpID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB2KHQpID8gdCgpIDogdDsKICAgICAgICAgICAgICAgIHJbci5sZW5ndGhdID0gZW5jb2RlVVJJQ29tcG9uZW50KGUpICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KG51bGwgPT0gbiA/ICIiIDogbikKICAgICAgICAgICAgfTsKICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4gIiI7CiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkgfHwgZS5qcXVlcnkgJiYgIWNlLmlzUGxhaW5PYmplY3QoZSkpIGNlLmVhY2goZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGkodGhpcy5uYW1lLCB0aGlzLnZhbHVlKQogICAgICAgIH0pOwogICAgICAgIGVsc2UKICAgICAgICAgICAgZm9yIChuIGluIGUpIFB0KG4sIGVbbl0sIHQsIGkpOwogICAgICAgIHJldHVybiByLmpvaW4oIiYiKQogICAgfSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gY2UucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKQogICAgICAgIH0sCiAgICAgICAgc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGNlLnByb3AodGhpcywgImVsZW1lbnRzIik7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA/IGNlLm1ha2VBcnJheShlKSA6IHRoaXMKICAgICAgICAgICAgfSkuZmlsdGVyKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnR5cGU7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lICYmICFjZSh0aGlzKS5pcygiOmRpc2FibGVkIikgJiYgT3QudGVzdCh0aGlzLm5vZGVOYW1lKSAmJiAhSHQudGVzdChlKSAmJiAodGhpcy5jaGVja2VkIHx8ICF3ZS50ZXN0KGUpKQogICAgICAgICAgICB9KS5tYXAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBjZSh0aGlzKS52YWwoKTsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IG4gPyBudWxsIDogQXJyYXkuaXNBcnJheShuKSA/IGNlLm1hcChuLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdC5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZS5yZXBsYWNlKEx0LCAiXHJcbiIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkgOiB7CiAgICAgICAgICAgICAgICAgICAgbmFtZTogdC5uYW1lLAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLnJlcGxhY2UoTHQsICJcclxuIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuZ2V0KCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBNdCA9IC8lMjAvZywKICAgICAgICBSdCA9IC8jLiokLywKICAgICAgICBJdCA9IC8oWz8mXSlfPVteJl0qLywKICAgICAgICBXdCA9IC9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sCiAgICAgICAgRnQgPSAvXig/OkdFVHxIRUFEKSQvLAogICAgICAgICR0ID0gL15cL1wvLywKICAgICAgICBCdCA9IHt9LAogICAgICAgIF90ID0ge30sCiAgICAgICAgenQgPSAiKi8iLmNvbmNhdCgiKiIpLAogICAgICAgIFh0ID0gQy5jcmVhdGVFbGVtZW50KCJhIik7CgogICAgZnVuY3Rpb24gVXQobykgewogICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICJzdHJpbmciICE9IHR5cGVvZiBlICYmICh0ID0gZSwgZSA9ICIqIik7CiAgICAgICAgICAgIHZhciBuLCByID0gMCwKICAgICAgICAgICAgICAgIGkgPSBlLnRvTG93ZXJDYXNlKCkubWF0Y2goRCkgfHwgW107CiAgICAgICAgICAgIGlmICh2KHQpKQogICAgICAgICAgICAgICAgd2hpbGUgKG4gPSBpW3IrK10pICIrIiA9PT0gblswXSA/IChuID0gbi5zbGljZSgxKSB8fCAiKiIsIChvW25dID0gb1tuXSB8fCBbXSkudW5zaGlmdCh0KSkgOiAob1tuXSA9IG9bbl0gfHwgW10pLnB1c2godCkKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gVnQodCwgaSwgbywgYSkgewogICAgICAgIHZhciBzID0ge30sCiAgICAgICAgICAgIHUgPSB0ID09PSBfdDsKCiAgICAgICAgZnVuY3Rpb24gbChlKSB7CiAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICByZXR1cm4gc1tlXSA9ICEwLCBjZS5lYWNoKHRbZV0gfHwgW10sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gdChpLCBvLCBhKTsKICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgbiB8fCB1IHx8IHNbbl0gPyB1ID8gIShyID0gbikgOiB2b2lkIDAgOiAoaS5kYXRhVHlwZXMudW5zaGlmdChuKSwgbChuKSwgITEpCiAgICAgICAgICAgIH0pLCByCiAgICAgICAgfQogICAgICAgIHJldHVybiBsKGkuZGF0YVR5cGVzWzBdKSB8fCAhc1siKiJdICYmIGwoIioiKQogICAgfQoKICAgIGZ1bmN0aW9uIEd0KGUsIHQpIHsKICAgICAgICB2YXIgbiwgciwgaSA9IGNlLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTsKICAgICAgICBmb3IgKG4gaW4gdCkgdm9pZCAwICE9PSB0W25dICYmICgoaVtuXSA/IGUgOiByIHx8IChyID0ge30pKVtuXSA9IHRbbl0pOwogICAgICAgIHJldHVybiByICYmIGNlLmV4dGVuZCghMCwgZSwgciksIGUKICAgIH0KICAgIFh0LmhyZWYgPSBFdC5ocmVmLCBjZS5leHRlbmQoewogICAgICAgIGFjdGl2ZTogMCwKICAgICAgICBsYXN0TW9kaWZpZWQ6IHt9LAogICAgICAgIGV0YWc6IHt9LAogICAgICAgIGFqYXhTZXR0aW5nczogewogICAgICAgICAgICB1cmw6IEV0LmhyZWYsCiAgICAgICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgICAgICBpc0xvY2FsOiAvXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLy50ZXN0KEV0LnByb3RvY29sKSwKICAgICAgICAgICAgZ2xvYmFsOiAhMCwKICAgICAgICAgICAgcHJvY2Vzc0RhdGE6ICEwLAogICAgICAgICAgICBhc3luYzogITAsCiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IiwKICAgICAgICAgICAgYWNjZXB0czogewogICAgICAgICAgICAgICAgIioiOiB6dCwKICAgICAgICAgICAgICAgIHRleHQ6ICJ0ZXh0L3BsYWluIiwKICAgICAgICAgICAgICAgIGh0bWw6ICJ0ZXh0L2h0bWwiLAogICAgICAgICAgICAgICAgeG1sOiAiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsCiAgICAgICAgICAgICAgICBqc29uOiAiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IgogICAgICAgICAgICB9LAogICAgICAgICAgICBjb250ZW50czogewogICAgICAgICAgICAgICAgeG1sOiAvXGJ4bWxcYi8sCiAgICAgICAgICAgICAgICBodG1sOiAvXGJodG1sLywKICAgICAgICAgICAgICAgIGpzb246IC9cYmpzb25cYi8KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVzcG9uc2VGaWVsZHM6IHsKICAgICAgICAgICAgICAgIHhtbDogInJlc3BvbnNlWE1MIiwKICAgICAgICAgICAgICAgIHRleHQ6ICJyZXNwb25zZVRleHQiLAogICAgICAgICAgICAgICAganNvbjogInJlc3BvbnNlSlNPTiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY29udmVydGVyczogewogICAgICAgICAgICAgICAgIiogdGV4dCI6IFN0cmluZywKICAgICAgICAgICAgICAgICJ0ZXh0IGh0bWwiOiAhMCwKICAgICAgICAgICAgICAgICJ0ZXh0IGpzb24iOiBKU09OLnBhcnNlLAogICAgICAgICAgICAgICAgInRleHQgeG1sIjogY2UucGFyc2VYTUwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmxhdE9wdGlvbnM6IHsKICAgICAgICAgICAgICAgIHVybDogITAsCiAgICAgICAgICAgICAgICBjb250ZXh0OiAhMAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBhamF4U2V0dXA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQgPyBHdChHdChlLCBjZS5hamF4U2V0dGluZ3MpLCB0KSA6IEd0KGNlLmFqYXhTZXR0aW5ncywgZSkKICAgICAgICB9LAogICAgICAgIGFqYXhQcmVmaWx0ZXI6IFV0KEJ0KSwKICAgICAgICBhamF4VHJhbnNwb3J0OiBVdChfdCksCiAgICAgICAgYWpheDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAodCA9IGUsIGUgPSB2b2lkIDApLCB0ID0gdCB8fCB7fTsKICAgICAgICAgICAgdmFyIGMsIGYsIHAsIG4sIGQsIHIsIGgsIGcsIGksIG8sIHYgPSBjZS5hamF4U2V0dXAoe30sIHQpLAogICAgICAgICAgICAgICAgeSA9IHYuY29udGV4dCB8fCB2LAogICAgICAgICAgICAgICAgbSA9IHYuY29udGV4dCAmJiAoeS5ub2RlVHlwZSB8fCB5LmpxdWVyeSkgPyBjZSh5KSA6IGNlLmV2ZW50LAogICAgICAgICAgICAgICAgeCA9IGNlLkRlZmVycmVkKCksCiAgICAgICAgICAgICAgICBiID0gY2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLAogICAgICAgICAgICAgICAgdyA9IHYuc3RhdHVzQ29kZSB8fCB7fSwKICAgICAgICAgICAgICAgIGEgPSB7fSwKICAgICAgICAgICAgICAgIHMgPSB7fSwKICAgICAgICAgICAgICAgIHUgPSAiY2FuY2VsZWQiLAogICAgICAgICAgICAgICAgVCA9IHsKICAgICAgICAgICAgICAgICAgICByZWFkeVN0YXRlOiAwLAogICAgICAgICAgICAgICAgICAgIGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ID0gV3QuZXhlYyhwKSkgblt0WzFdLnRvTG93ZXJDYXNlKCkgKyAiICJdID0gKG5bdFsxXS50b0xvd2VyQ2FzZSgpICsgIiAiXSB8fCBbXSkuY29uY2F0KHRbMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbltlLnRvTG93ZXJDYXNlKCkgKyAiICJdCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCA/IG51bGwgOiB0LmpvaW4oIiwgIikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoID8gcCA6IG51bGwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gaCAmJiAoZSA9IHNbZS50b0xvd2VyQ2FzZSgpXSA9IHNbZS50b0xvd2VyQ2FzZSgpXSB8fCBlLCBhW2VdID0gdCksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gaCAmJiAodi5taW1lVHlwZSA9IGUpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoKSBULmFsd2F5cyhlW1Quc3RhdHVzXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIGUpIHdbdF0gPSBbd1t0XSwgZVt0XV07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgfHwgdTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMgJiYgYy5hYm9ydCh0KSwgbCgwLCB0KSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICh4LnByb21pc2UoVCksIHYudXJsID0gKChlIHx8IHYudXJsIHx8IEV0LmhyZWYpICsgIiIpLnJlcGxhY2UoJHQsIEV0LnByb3RvY29sICsgIi8vIiksIHYudHlwZSA9IHQubWV0aG9kIHx8IHQudHlwZSB8fCB2Lm1ldGhvZCB8fCB2LnR5cGUsIHYuZGF0YVR5cGVzID0gKHYuZGF0YVR5cGUgfHwgIioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEQpIHx8IFsiIl0sIG51bGwgPT0gdi5jcm9zc0RvbWFpbikgewogICAgICAgICAgICAgICAgciA9IEMuY3JlYXRlRWxlbWVudCgiYSIpOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByLmhyZWYgPSB2LnVybCwgci5ocmVmID0gci5ocmVmLCB2LmNyb3NzRG9tYWluID0gWHQucHJvdG9jb2wgKyAiLy8iICsgWHQuaG9zdCAhPSByLnByb3RvY29sICsgIi8vIiArIHIuaG9zdAogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgIHYuY3Jvc3NEb21haW4gPSAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh2LmRhdGEgJiYgdi5wcm9jZXNzRGF0YSAmJiAic3RyaW5nIiAhPSB0eXBlb2Ygdi5kYXRhICYmICh2LmRhdGEgPSBjZS5wYXJhbSh2LmRhdGEsIHYudHJhZGl0aW9uYWwpKSwgVnQoQnQsIHYsIHQsIFQpLCBoKSByZXR1cm4gVDsKICAgICAgICAgICAgZm9yIChpIGluIChnID0gY2UuZXZlbnQgJiYgdi5nbG9iYWwpICYmIDAgPT0gY2UuYWN0aXZlKysgJiYgY2UuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IiksIHYudHlwZSA9IHYudHlwZS50b1VwcGVyQ2FzZSgpLCB2Lmhhc0NvbnRlbnQgPSAhRnQudGVzdCh2LnR5cGUpLCBmID0gdi51cmwucmVwbGFjZShSdCwgIiIpLCB2Lmhhc0NvbnRlbnQgPyB2LmRhdGEgJiYgdi5wcm9jZXNzRGF0YSAmJiAwID09PSAodi5jb250ZW50VHlwZSB8fCAiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikgJiYgKHYuZGF0YSA9IHYuZGF0YS5yZXBsYWNlKE10LCAiKyIpKSA6IChvID0gdi51cmwuc2xpY2UoZi5sZW5ndGgpLCB2LmRhdGEgJiYgKHYucHJvY2Vzc0RhdGEgfHwgInN0cmluZyIgPT0gdHlwZW9mIHYuZGF0YSkgJiYgKGYgKz0gKEF0LnRlc3QoZikgPyAiJiIgOiAiPyIpICsgdi5kYXRhLCBkZWxldGUgdi5kYXRhKSwgITEgPT09IHYuY2FjaGUgJiYgKGYgPSBmLnJlcGxhY2UoSXQsICIkMSIpLCBvID0gKEF0LnRlc3QoZikgPyAiJiIgOiAiPyIpICsgIl89IiArIGp0Lmd1aWQrKyArIG8pLCB2LnVybCA9IGYgKyBvKSwgdi5pZk1vZGlmaWVkICYmIChjZS5sYXN0TW9kaWZpZWRbZl0gJiYgVC5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsIGNlLmxhc3RNb2RpZmllZFtmXSksIGNlLmV0YWdbZl0gJiYgVC5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIiwgY2UuZXRhZ1tmXSkpLCAodi5kYXRhICYmIHYuaGFzQ29udGVudCAmJiAhMSAhPT0gdi5jb250ZW50VHlwZSB8fCB0LmNvbnRlbnRUeXBlKSAmJiBULnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsIHYuY29udGVudFR5cGUpLCBULnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsIHYuZGF0YVR5cGVzWzBdICYmIHYuYWNjZXB0c1t2LmRhdGFUeXBlc1swXV0gPyB2LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dICsgKCIqIiAhPT0gdi5kYXRhVHlwZXNbMF0gPyAiLCAiICsgenQgKyAiOyBxPTAuMDEiIDogIiIpIDogdi5hY2NlcHRzWyIqIl0pLCB2LmhlYWRlcnMpIFQuc2V0UmVxdWVzdEhlYWRlcihpLCB2LmhlYWRlcnNbaV0pOwogICAgICAgICAgICBpZiAodi5iZWZvcmVTZW5kICYmICghMSA9PT0gdi5iZWZvcmVTZW5kLmNhbGwoeSwgVCwgdikgfHwgaCkpIHJldHVybiBULmFib3J0KCk7CiAgICAgICAgICAgIGlmICh1ID0gImFib3J0IiwgYi5hZGQodi5jb21wbGV0ZSksIFQuZG9uZSh2LnN1Y2Nlc3MpLCBULmZhaWwodi5lcnJvciksIGMgPSBWdChfdCwgdiwgdCwgVCkpIHsKICAgICAgICAgICAgICAgIGlmIChULnJlYWR5U3RhdGUgPSAxLCBnICYmIG0udHJpZ2dlcigiYWpheFNlbmQiLCBbVCwgdl0pLCBoKSByZXR1cm4gVDsKICAgICAgICAgICAgICAgIHYuYXN5bmMgJiYgMCA8IHYudGltZW91dCAmJiAoZCA9IGllLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgVC5hYm9ydCgidGltZW91dCIpCiAgICAgICAgICAgICAgICB9LCB2LnRpbWVvdXQpKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgaCA9ICExLCBjLnNlbmQoYSwgbCkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaCkgdGhyb3cgZTsKICAgICAgICAgICAgICAgICAgICBsKC0xLCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgbCgtMSwgIk5vIFRyYW5zcG9ydCIpOwoKICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgbywgYSwgcywgdSwgbCA9IHQ7CiAgICAgICAgICAgICAgICBoIHx8IChoID0gITAsIGQgJiYgaWUuY2xlYXJUaW1lb3V0KGQpLCBjID0gdm9pZCAwLCBwID0gciB8fCAiIiwgVC5yZWFkeVN0YXRlID0gMCA8IGUgPyA0IDogMCwgaSA9IDIwMCA8PSBlICYmIGUgPCAzMDAgfHwgMzA0ID09PSBlLCBuICYmIChzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciByLCBpLCBvLCBhLCBzID0gZS5jb250ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGUuZGF0YVR5cGVzOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgiKiIgPT09IHVbMF0pIHUuc2hpZnQoKSwgdm9pZCAwID09PSByICYmIChyID0gZS5taW1lVHlwZSB8fCB0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSBpbiBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNbaV0gJiYgc1tpXS50ZXN0KHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS51bnNoaWZ0KGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHVbMF0gaW4gbikgbyA9IHVbMF07CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSBpbiBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVbMF0gfHwgZS5jb252ZXJ0ZXJzW2kgKyAiICIgKyB1WzBdXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHx8IChhID0gaSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBvID0gbyB8fCBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChvKSByZXR1cm4gbyAhPT0gdVswXSAmJiB1LnVuc2hpZnQobyksIG5bb10KICAgICAgICAgICAgICAgIH0odiwgVCwgbikpLCAhaSAmJiAtMSA8IGNlLmluQXJyYXkoInNjcmlwdCIsIHYuZGF0YVR5cGVzKSAmJiBjZS5pbkFycmF5KCJqc29uIiwgdi5kYXRhVHlwZXMpIDwgMCAmJiAodi5jb252ZXJ0ZXJzWyJ0ZXh0IHNjcmlwdCJdID0gZnVuY3Rpb24oKSB7fSksIHMgPSBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIG8sIGEsIHMsIHUsIGwgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUuZGF0YVR5cGVzLnNsaWNlKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNbMV0pCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSBpbiBlLmNvbnZlcnRlcnMpIGxbYS50b0xvd2VyQ2FzZSgpXSA9IGUuY29udmVydGVyc1thXTsKICAgICAgICAgICAgICAgICAgICBvID0gYy5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChvKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5yZXNwb25zZUZpZWxkc1tvXSAmJiAobltlLnJlc3BvbnNlRmllbGRzW29dXSA9IHQpLCAhdSAmJiByICYmIGUuZGF0YUZpbHRlciAmJiAodCA9IGUuZGF0YUZpbHRlcih0LCBlLmRhdGFUeXBlKSksIHUgPSBvLCBvID0gYy5zaGlmdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCIqIiA9PT0gbykgbyA9IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgiKiIgIT09IHUgJiYgdSAhPT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShhID0gbFt1ICsgIiAiICsgb10gfHwgbFsiKiAiICsgb10pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzID0gaS5zcGxpdCgiICIpKVsxXSA9PT0gbyAmJiAoYSA9IGxbdSArICIgIiArIHNbMF1dIHx8IGxbIiogIiArIHNbMF1dKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhMCA9PT0gYSA/IGEgPSBsW2ldIDogITAgIT09IGxbaV0gJiYgKG8gPSBzWzBdLCBjLnVuc2hpZnQoc1sxXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEwICE9PSBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgJiYgZVsidGhyb3dzIl0pIHQgPSBhKHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBhKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6ICJwYXJzZXJlcnJvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBhID8gZSA6ICJObyBjb252ZXJzaW9uIGZyb20gIiArIHUgKyAiIHRvICIgKyBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogInN1Y2Nlc3MiLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSh2LCBzLCBULCBpKSwgaSA/ICh2LmlmTW9kaWZpZWQgJiYgKCh1ID0gVC5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKSAmJiAoY2UubGFzdE1vZGlmaWVkW2ZdID0gdSksICh1ID0gVC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSAmJiAoY2UuZXRhZ1tmXSA9IHUpKSwgMjA0ID09PSBlIHx8ICJIRUFEIiA9PT0gdi50eXBlID8gbCA9ICJub2NvbnRlbnQiIDogMzA0ID09PSBlID8gbCA9ICJub3Rtb2RpZmllZCIgOiAobCA9IHMuc3RhdGUsIG8gPSBzLmRhdGEsIGkgPSAhKGEgPSBzLmVycm9yKSkpIDogKGEgPSBsLCAhZSAmJiBsIHx8IChsID0gImVycm9yIiwgZSA8IDAgJiYgKGUgPSAwKSkpLCBULnN0YXR1cyA9IGUsIFQuc3RhdHVzVGV4dCA9ICh0IHx8IGwpICsgIiIsIGkgPyB4LnJlc29sdmVXaXRoKHksIFtvLCBsLCBUXSkgOiB4LnJlamVjdFdpdGgoeSwgW1QsIGwsIGFdKSwgVC5zdGF0dXNDb2RlKHcpLCB3ID0gdm9pZCAwLCBnICYmIG0udHJpZ2dlcihpID8gImFqYXhTdWNjZXNzIiA6ICJhamF4RXJyb3IiLCBbVCwgdiwgaSA/IG8gOiBhXSksIGIuZmlyZVdpdGgoeSwgW1QsIGxdKSwgZyAmJiAobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLCBbVCwgdl0pLCAtLWNlLmFjdGl2ZSB8fCBjZS5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gVAogICAgICAgIH0sCiAgICAgICAgZ2V0SlNPTjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gY2UuZ2V0KGUsIHQsIG4sICJqc29uIikKICAgICAgICB9LAogICAgICAgIGdldFNjcmlwdDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gY2UuZ2V0KGUsIHZvaWQgMCwgdCwgInNjcmlwdCIpCiAgICAgICAgfQogICAgfSksIGNlLmVhY2goWyJnZXQiLCAicG9zdCJdLCBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgY2VbaV0gPSBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgIHJldHVybiB2KHQpICYmIChyID0gciB8fCBuLCBuID0gdCwgdCA9IHZvaWQgMCksIGNlLmFqYXgoY2UuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIHVybDogZSwKICAgICAgICAgICAgICAgIHR5cGU6IGksCiAgICAgICAgICAgICAgICBkYXRhVHlwZTogciwKICAgICAgICAgICAgICAgIGRhdGE6IHQsCiAgICAgICAgICAgICAgICBzdWNjZXNzOiBuCiAgICAgICAgICAgIH0sIGNlLmlzUGxhaW5PYmplY3QoZSkgJiYgZSkpCiAgICAgICAgfQogICAgfSksIGNlLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSkgewogICAgICAgIHZhciB0OwogICAgICAgIGZvciAodCBpbiBlLmhlYWRlcnMpICJjb250ZW50LXR5cGUiID09PSB0LnRvTG93ZXJDYXNlKCkgJiYgKGUuY29udGVudFR5cGUgPSBlLmhlYWRlcnNbdF0gfHwgIiIpCiAgICB9KSwgY2UuX2V2YWxVcmwgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgcmV0dXJuIGNlLmFqYXgoewogICAgICAgICAgICB1cmw6IGUsCiAgICAgICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgICAgICBkYXRhVHlwZTogInNjcmlwdCIsCiAgICAgICAgICAgIGNhY2hlOiAhMCwKICAgICAgICAgICAgYXN5bmM6ICExLAogICAgICAgICAgICBnbG9iYWw6ICExLAogICAgICAgICAgICBjb252ZXJ0ZXJzOiB7CiAgICAgICAgICAgICAgICAidGV4dCBzY3JpcHQiOiBmdW5jdGlvbigpIHt9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRhdGFGaWx0ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGNlLmdsb2JhbEV2YWwoZSwgdCwgbikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LCBjZS5mbi5leHRlbmQoewogICAgICAgIHdyYXBBbGw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgIHJldHVybiB0aGlzWzBdICYmICh2KGUpICYmIChlID0gZS5jYWxsKHRoaXNbMF0pKSwgdCA9IGNlKGUsIHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLCB0aGlzWzBdLnBhcmVudE5vZGUgJiYgdC5pbnNlcnRCZWZvcmUodGhpc1swXSksIHQubWFwKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgd2hpbGUgKGUuZmlyc3RFbGVtZW50Q2hpbGQpIGUgPSBlLmZpcnN0RWxlbWVudENoaWxkOwogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfSkuYXBwZW5kKHRoaXMpKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgd3JhcElubmVyOiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgIHJldHVybiB2KG4pID8gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGNlKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcywgZSkpCiAgICAgICAgICAgIH0pIDogdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBjZSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICB0ID0gZS5jb250ZW50cygpOwogICAgICAgICAgICAgICAgdC5sZW5ndGggPyB0LndyYXBBbGwobikgOiBlLmFwcGVuZChuKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgd3JhcDogZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgbiA9IHYodCk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgY2UodGhpcykud3JhcEFsbChuID8gdC5jYWxsKHRoaXMsIGUpIDogdCkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIHVud3JhcDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQoZSkubm90KCJib2R5IikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNlKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2RlcykKICAgICAgICAgICAgfSksIHRoaXMKICAgICAgICB9CiAgICB9KSwgY2UuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gIWNlLmV4cHIucHNldWRvcy52aXNpYmxlKGUpCiAgICB9LCBjZS5leHByLnBzZXVkb3MudmlzaWJsZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gISEoZS5vZmZzZXRXaWR0aCB8fCBlLm9mZnNldEhlaWdodCB8fCBlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKQogICAgfSwgY2UuYWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgaWUuWE1MSHR0cFJlcXVlc3QKICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgfTsKICAgIHZhciBZdCA9IHsKICAgICAgICAgICAgMDogMjAwLAogICAgICAgICAgICAxMjIzOiAyMDQKICAgICAgICB9LAogICAgICAgIFF0ID0gY2UuYWpheFNldHRpbmdzLnhocigpOwogICAgbGUuY29ycyA9ICEhUXQgJiYgIndpdGhDcmVkZW50aWFscyIgaW4gUXQsIGxlLmFqYXggPSBRdCA9ICEhUXQsIGNlLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oaSkgewogICAgICAgIHZhciBvLCBhOwogICAgICAgIGlmIChsZS5jb3JzIHx8IFF0ICYmICFpLmNyb3NzRG9tYWluKSByZXR1cm4gewogICAgICAgICAgICBzZW5kOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiwgciA9IGkueGhyKCk7CiAgICAgICAgICAgICAgICBpZiAoci5vcGVuKGkudHlwZSwgaS51cmwsIGkuYXN5bmMsIGkudXNlcm5hbWUsIGkucGFzc3dvcmQpLCBpLnhockZpZWxkcykKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gaW4gaS54aHJGaWVsZHMpIHJbbl0gPSBpLnhockZpZWxkc1tuXTsKICAgICAgICAgICAgICAgIGZvciAobiBpbiBpLm1pbWVUeXBlICYmIHIub3ZlcnJpZGVNaW1lVHlwZSAmJiByLm92ZXJyaWRlTWltZVR5cGUoaS5taW1lVHlwZSksIGkuY3Jvc3NEb21haW4gfHwgZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdIHx8IChlWyJYLVJlcXVlc3RlZC1XaXRoIl0gPSAiWE1MSHR0cFJlcXVlc3QiKSwgZSkgci5zZXRSZXF1ZXN0SGVhZGVyKG4sIGVbbl0pOwogICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gJiYgKG8gPSBhID0gci5vbmxvYWQgPSByLm9uZXJyb3IgPSByLm9uYWJvcnQgPSByLm9udGltZW91dCA9IHIub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbCwgImFib3J0IiA9PT0gZSA/IHIuYWJvcnQoKSA6ICJlcnJvciIgPT09IGUgPyAibnVtYmVyIiAhPSB0eXBlb2Ygci5zdGF0dXMgPyB0KDAsICJlcnJvciIpIDogdChyLnN0YXR1cywgci5zdGF0dXNUZXh0KSA6IHQoWXRbci5zdGF0dXNdIHx8IHIuc3RhdHVzLCByLnN0YXR1c1RleHQsICJ0ZXh0IiAhPT0gKHIucmVzcG9uc2VUeXBlIHx8ICJ0ZXh0IikgfHwgInN0cmluZyIgIT0gdHlwZW9mIHIucmVzcG9uc2VUZXh0ID8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5OiByLnJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiByLnJlc3BvbnNlVGV4dAogICAgICAgICAgICAgICAgICAgICAgICB9LCByLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCByLm9ubG9hZCA9IG8oKSwgYSA9IHIub25lcnJvciA9IHIub250aW1lb3V0ID0gbygiZXJyb3IiKSwgdm9pZCAwICE9PSByLm9uYWJvcnQgPyByLm9uYWJvcnQgPSBhIDogci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICA0ID09PSByLnJlYWR5U3RhdGUgJiYgaWUuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbyAmJiBhKCkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwgbyA9IG8oImFib3J0Iik7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHIuc2VuZChpLmhhc0NvbnRlbnQgJiYgaS5kYXRhIHx8IG51bGwpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHRocm93IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbyAmJiBvKCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLCBjZS5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpIHsKICAgICAgICBlLmNyb3NzRG9tYWluICYmIChlLmNvbnRlbnRzLnNjcmlwdCA9ICExKQogICAgfSksIGNlLmFqYXhTZXR1cCh7CiAgICAgICAgYWNjZXB0czogewogICAgICAgICAgICBzY3JpcHQ6ICJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCIKICAgICAgICB9LAogICAgICAgIGNvbnRlbnRzOiB7CiAgICAgICAgICAgIHNjcmlwdDogL1xiKD86amF2YXxlY21hKXNjcmlwdFxiLwogICAgICAgIH0sCiAgICAgICAgY29udmVydGVyczogewogICAgICAgICAgICAidGV4dCBzY3JpcHQiOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY2UuZ2xvYmFsRXZhbChlKSwgZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSksIGNlLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2b2lkIDAgPT09IGUuY2FjaGUgJiYgKGUuY2FjaGUgPSAhMSksIGUuY3Jvc3NEb21haW4gJiYgKGUudHlwZSA9ICJHRVQiKQogICAgfSksIGNlLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsIGZ1bmN0aW9uKG4pIHsKICAgICAgICB2YXIgciwgaTsKICAgICAgICBpZiAobi5jcm9zc0RvbWFpbiB8fCBuLnNjcmlwdEF0dHJzKSByZXR1cm4gewogICAgICAgICAgICBzZW5kOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByID0gY2UoIjxzY3JpcHQ+IikuYXR0cihuLnNjcmlwdEF0dHJzIHx8IHt9KS5wcm9wKHsKICAgICAgICAgICAgICAgICAgICBjaGFyc2V0OiBuLnNjcmlwdENoYXJzZXQsCiAgICAgICAgICAgICAgICAgICAgc3JjOiBuLnVybAogICAgICAgICAgICAgICAgfSkub24oImxvYWQgZXJyb3IiLCBpID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHIucmVtb3ZlKCksIGkgPSBudWxsLCBlICYmIHQoImVycm9yIiA9PT0gZS50eXBlID8gNDA0IDogMjAwLCBlLnR5cGUpCiAgICAgICAgICAgICAgICB9KSwgQy5oZWFkLmFwcGVuZENoaWxkKHJbMF0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkgJiYgaSgpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIHZhciBKdCwgS3QgPSBbXSwKICAgICAgICBadCA9IC8oPSlcPyg/PSZ8JCl8XD9cPy87CiAgICBjZS5hamF4U2V0dXAoewogICAgICAgIGpzb25wOiAiY2FsbGJhY2siLAogICAgICAgIGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IEt0LnBvcCgpIHx8IGNlLmV4cGFuZG8gKyAiXyIgKyBqdC5ndWlkKys7CiAgICAgICAgICAgIHJldHVybiB0aGlzW2VdID0gITAsIGUKICAgICAgICB9CiAgICB9KSwgY2UuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICB2YXIgciwgaSwgbywgYSA9ICExICE9PSBlLmpzb25wICYmIChadC50ZXN0KGUudXJsKSA/ICJ1cmwiIDogInN0cmluZyIgPT0gdHlwZW9mIGUuZGF0YSAmJiAwID09PSAoZS5jb250ZW50VHlwZSB8fCAiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikgJiYgWnQudGVzdChlLmRhdGEpICYmICJkYXRhIik7CiAgICAgICAgaWYgKGEgfHwgImpzb25wIiA9PT0gZS5kYXRhVHlwZXNbMF0pIHJldHVybiByID0gZS5qc29ucENhbGxiYWNrID0gdihlLmpzb25wQ2FsbGJhY2spID8gZS5qc29ucENhbGxiYWNrKCkgOiBlLmpzb25wQ2FsbGJhY2ssIGEgPyBlW2FdID0gZVthXS5yZXBsYWNlKFp0LCAiJDEiICsgcikgOiAhMSAhPT0gZS5qc29ucCAmJiAoZS51cmwgKz0gKEF0LnRlc3QoZS51cmwpID8gIiYiIDogIj8iKSArIGUuanNvbnAgKyAiPSIgKyByKSwgZS5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBvIHx8IGNlLmVycm9yKHIgKyAiIHdhcyBub3QgY2FsbGVkIiksIG9bMF0KICAgICAgICB9LCBlLmRhdGFUeXBlc1swXSA9ICJqc29uIiwgaSA9IGllW3JdLCBpZVtyXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBvID0gYXJndW1lbnRzCiAgICAgICAgfSwgbi5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gaSA/IGNlKGllKS5yZW1vdmVQcm9wKHIpIDogaWVbcl0gPSBpLCBlW3JdICYmIChlLmpzb25wQ2FsbGJhY2sgPSB0Lmpzb25wQ2FsbGJhY2ssIEt0LnB1c2gocikpLCBvICYmIHYoaSkgJiYgaShvWzBdKSwgbyA9IGkgPSB2b2lkIDAKICAgICAgICB9KSwgInNjcmlwdCIKICAgIH0pLCBsZS5jcmVhdGVIVE1MRG9jdW1lbnQgPSAoKEp0ID0gQy5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTCA9ICI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsIDIgPT09IEp0LmNoaWxkTm9kZXMubGVuZ3RoKSwgY2UucGFyc2VIVE1MID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgZSA/IFtdIDogKCJib29sZWFuIiA9PSB0eXBlb2YgdCAmJiAobiA9IHQsIHQgPSAhMSksIHQgfHwgKGxlLmNyZWF0ZUhUTUxEb2N1bWVudCA/ICgociA9ICh0ID0gQy5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpKS5jcmVhdGVFbGVtZW50KCJiYXNlIikpLmhyZWYgPSBDLmxvY2F0aW9uLmhyZWYsIHQuaGVhZC5hcHBlbmRDaGlsZChyKSkgOiB0ID0gQyksIG8gPSAhbiAmJiBbXSwgKGkgPSB3LmV4ZWMoZSkpID8gW3QuY3JlYXRlRWxlbWVudChpWzFdKV0gOiAoaSA9IEFlKFtlXSwgdCwgbyksIG8gJiYgby5sZW5ndGggJiYgY2UobykucmVtb3ZlKCksIGNlLm1lcmdlKFtdLCBpLmNoaWxkTm9kZXMpKSk7CiAgICAgICAgdmFyIHIsIGksIG8KICAgIH0sIGNlLmZuLmxvYWQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgdmFyIHIsIGksIG8sIGEgPSB0aGlzLAogICAgICAgICAgICBzID0gZS5pbmRleE9mKCIgIik7CiAgICAgICAgcmV0dXJuIC0xIDwgcyAmJiAociA9IFR0KGUuc2xpY2UocykpLCBlID0gZS5zbGljZSgwLCBzKSksIHYodCkgPyAobiA9IHQsIHQgPSB2b2lkIDApIDogdCAmJiAib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiAoaSA9ICJQT1NUIiksIDAgPCBhLmxlbmd0aCAmJiBjZS5hamF4KHsKICAgICAgICAgICAgdXJsOiBlLAogICAgICAgICAgICB0eXBlOiBpIHx8ICJHRVQiLAogICAgICAgICAgICBkYXRhVHlwZTogImh0bWwiLAogICAgICAgICAgICBkYXRhOiB0CiAgICAgICAgfSkuZG9uZShmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIG8gPSBhcmd1bWVudHMsIGEuaHRtbChyID8gY2UoIjxkaXY+IikuYXBwZW5kKGNlLnBhcnNlSFRNTChlKSkuZmluZChyKSA6IGUpCiAgICAgICAgfSkuYWx3YXlzKG4gJiYgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBhLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuLmFwcGx5KHRoaXMsIG8gfHwgW2UucmVzcG9uc2VUZXh0LCB0LCBlXSkKICAgICAgICAgICAgfSkKICAgICAgICB9KSwgdGhpcwogICAgfSwgY2UuZXhwci5wc2V1ZG9zLmFuaW1hdGVkID0gZnVuY3Rpb24odCkgewogICAgICAgIHJldHVybiBjZS5ncmVwKGNlLnRpbWVycywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdCA9PT0gZS5lbGVtCiAgICAgICAgfSkubGVuZ3RoCiAgICB9LCBjZS5vZmZzZXQgPSB7CiAgICAgICAgc2V0T2Zmc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciByLCBpLCBvLCBhLCBzLCB1LCBsID0gY2UuY3NzKGUsICJwb3NpdGlvbiIpLAogICAgICAgICAgICAgICAgYyA9IGNlKGUpLAogICAgICAgICAgICAgICAgZiA9IHt9OwogICAgICAgICAgICAic3RhdGljIiA9PT0gbCAmJiAoZS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSIpLCBzID0gYy5vZmZzZXQoKSwgbyA9IGNlLmNzcyhlLCAidG9wIiksIHUgPSBjZS5jc3MoZSwgImxlZnQiKSwgKCJhYnNvbHV0ZSIgPT09IGwgfHwgImZpeGVkIiA9PT0gbCkgJiYgLTEgPCAobyArIHUpLmluZGV4T2YoImF1dG8iKSA/IChhID0gKHIgPSBjLnBvc2l0aW9uKCkpLnRvcCwgaSA9IHIubGVmdCkgOiAoYSA9IHBhcnNlRmxvYXQobykgfHwgMCwgaSA9IHBhcnNlRmxvYXQodSkgfHwgMCksIHYodCkgJiYgKHQgPSB0LmNhbGwoZSwgbiwgY2UuZXh0ZW5kKHt9LCBzKSkpLCBudWxsICE9IHQudG9wICYmIChmLnRvcCA9IHQudG9wIC0gcy50b3AgKyBhKSwgbnVsbCAhPSB0LmxlZnQgJiYgKGYubGVmdCA9IHQubGVmdCAtIHMubGVmdCArIGkpLCAidXNpbmciIGluIHQgPyB0LnVzaW5nLmNhbGwoZSwgZikgOiBjLmNzcyhmKQogICAgICAgIH0KICAgIH0sIGNlLmZuLmV4dGVuZCh7CiAgICAgICAgb2Zmc2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdm9pZCAwID09PSB0ID8gdGhpcyA6IHRoaXMuZWFjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBjZS5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsIHQsIGUpCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgZSwgbiwgciA9IHRoaXNbMF07CiAgICAgICAgICAgIHJldHVybiByID8gci5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCA/IChlID0gci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgbiA9IHIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldywgewogICAgICAgICAgICAgICAgdG9wOiBlLnRvcCArIG4ucGFnZVlPZmZzZXQsCiAgICAgICAgICAgICAgICBsZWZ0OiBlLmxlZnQgKyBuLnBhZ2VYT2Zmc2V0CiAgICAgICAgICAgIH0pIDogewogICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgbGVmdDogMAogICAgICAgICAgICB9IDogdm9pZCAwCiAgICAgICAgfSwKICAgICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICh0aGlzWzBdKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiwgciA9IHRoaXNbMF0sCiAgICAgICAgICAgICAgICAgICAgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGlmICgiZml4ZWQiID09PSBjZS5jc3MociwgInBvc2l0aW9uIikpIHQgPSByLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMub2Zmc2V0KCksIG4gPSByLm93bmVyRG9jdW1lbnQsIGUgPSByLm9mZnNldFBhcmVudCB8fCBuLmRvY3VtZW50RWxlbWVudDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZSAmJiAoZSA9PT0gbi5ib2R5IHx8IGUgPT09IG4uZG9jdW1lbnRFbGVtZW50KSAmJiAic3RhdGljIiA9PT0gY2UuY3NzKGUsICJwb3NpdGlvbiIpKSBlID0gZS5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgIGUgJiYgZSAhPT0gciAmJiAxID09PSBlLm5vZGVUeXBlICYmICgoaSA9IGNlKGUpLm9mZnNldCgpKS50b3AgKz0gY2UuY3NzKGUsICJib3JkZXJUb3BXaWR0aCIsICEwKSwgaS5sZWZ0ICs9IGNlLmNzcyhlLCAiYm9yZGVyTGVmdFdpZHRoIiwgITApKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB0b3A6IHQudG9wIC0gaS50b3AgLSBjZS5jc3MociwgIm1hcmdpblRvcCIsICEwKSwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0LmxlZnQgLSBpLmxlZnQgLSBjZS5jc3MociwgIm1hcmdpbkxlZnQiLCAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgb2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm9mZnNldFBhcmVudDsKICAgICAgICAgICAgICAgIHdoaWxlIChlICYmICJzdGF0aWMiID09PSBjZS5jc3MoZSwgInBvc2l0aW9uIikpIGUgPSBlLm9mZnNldFBhcmVudDsKICAgICAgICAgICAgICAgIHJldHVybiBlIHx8IEoKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgY2UuZWFjaCh7CiAgICAgICAgc2Nyb2xsTGVmdDogInBhZ2VYT2Zmc2V0IiwKICAgICAgICBzY3JvbGxUb3A6ICJwYWdlWU9mZnNldCIKICAgIH0sIGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICB2YXIgbyA9ICJwYWdlWU9mZnNldCIgPT09IGk7CiAgICAgICAgY2UuZm5bdF0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBNKHRoaXMsIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciByOwogICAgICAgICAgICAgICAgaWYgKHkoZSkgPyByID0gZSA6IDkgPT09IGUubm9kZVR5cGUgJiYgKHIgPSBlLmRlZmF1bHRWaWV3KSwgdm9pZCAwID09PSBuKSByZXR1cm4gciA/IHJbaV0gOiBlW3RdOwogICAgICAgICAgICAgICAgciA/IHIuc2Nyb2xsVG8obyA/IHIucGFnZVhPZmZzZXQgOiBuLCBvID8gbiA6IHIucGFnZVlPZmZzZXQpIDogZVt0XSA9IG4KICAgICAgICAgICAgfSwgdCwgZSwgYXJndW1lbnRzLmxlbmd0aCkKICAgICAgICB9CiAgICB9KSwgY2UuZWFjaChbInRvcCIsICJsZWZ0Il0sIGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICBjZS5jc3NIb29rc1tuXSA9IFllKGxlLnBpeGVsUG9zaXRpb24sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgaWYgKHQpIHJldHVybiB0ID0gR2UoZSwgbiksIF9lLnRlc3QodCkgPyBjZShlKS5wb3NpdGlvbigpW25dICsgInB4IiA6IHQKICAgICAgICB9KQogICAgfSksIGNlLmVhY2goewogICAgICAgIEhlaWdodDogImhlaWdodCIsCiAgICAgICAgV2lkdGg6ICJ3aWR0aCIKICAgIH0sIGZ1bmN0aW9uKGEsIHMpIHsKICAgICAgICBjZS5lYWNoKHsKICAgICAgICAgICAgcGFkZGluZzogImlubmVyIiArIGEsCiAgICAgICAgICAgIGNvbnRlbnQ6IHMsCiAgICAgICAgICAgICIiOiAib3V0ZXIiICsgYQogICAgICAgIH0sIGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgY2UuZm5bb10gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKHIgfHwgImJvb2xlYW4iICE9IHR5cGVvZiBlKSwKICAgICAgICAgICAgICAgICAgICBpID0gciB8fCAoITAgPT09IGUgfHwgITAgPT09IHQgPyAibWFyZ2luIiA6ICJib3JkZXIiKTsKICAgICAgICAgICAgICAgIHJldHVybiBNKHRoaXMsIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geShlKSA/IDAgPT09IG8uaW5kZXhPZigib3V0ZXIiKSA/IGVbImlubmVyIiArIGFdIDogZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIgKyBhXSA6IDkgPT09IGUubm9kZVR5cGUgPyAociA9IGUuZG9jdW1lbnRFbGVtZW50LCBNYXRoLm1heChlLmJvZHlbInNjcm9sbCIgKyBhXSwgclsic2Nyb2xsIiArIGFdLCBlLmJvZHlbIm9mZnNldCIgKyBhXSwgclsib2Zmc2V0IiArIGFdLCByWyJjbGllbnQiICsgYV0pKSA6IHZvaWQgMCA9PT0gbiA/IGNlLmNzcyhlLCB0LCBpKSA6IGNlLnN0eWxlKGUsIHQsIG4sIGkpCiAgICAgICAgICAgICAgICB9LCBzLCBuID8gZSA6IHZvaWQgMCwgbikKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICB9KSwgY2UuZWFjaChbImFqYXhTdGFydCIsICJhamF4U3RvcCIsICJhamF4Q29tcGxldGUiLCAiYWpheEVycm9yIiwgImFqYXhTdWNjZXNzIiwgImFqYXhTZW5kIl0sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICBjZS5mblt0XSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub24odCwgZSkKICAgICAgICB9CiAgICB9KSwgY2UuZm4uZXh0ZW5kKHsKICAgICAgICBiaW5kOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9uKGUsIG51bGwsIHQsIG4pCiAgICAgICAgfSwKICAgICAgICB1bmJpbmQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub2ZmKGUsIG51bGwsIHQpCiAgICAgICAgfSwKICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oZSwgdCwgbiwgcikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vbih0LCBlLCBuLCByKQogICAgICAgIH0sCiAgICAgICAgdW5kZWxlZ2F0ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gMSA9PT0gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMub2ZmKGUsICIqKiIpIDogdGhpcy5vZmYodCwgZSB8fCAiKioiLCBuKQogICAgICAgIH0sCiAgICAgICAgaG92ZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub24oIm1vdXNlZW50ZXIiLCBlKS5vbigibW91c2VsZWF2ZSIsIHQgfHwgZSkKICAgICAgICB9CiAgICB9KSwgY2UuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSwgZnVuY3Rpb24oZSwgbikgewogICAgICAgIGNlLmZuW25dID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gMCA8IGFyZ3VtZW50cy5sZW5ndGggPyB0aGlzLm9uKG4sIG51bGwsIGUsIHQpIDogdGhpcy50cmlnZ2VyKG4pCiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgZW4gPSAvXltcc1x1RkVGRlx4QTBdK3woW15cc1x1RkVGRlx4QTBdKVtcc1x1RkVGRlx4QTBdKyQvZzsKICAgIGNlLnByb3h5ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHZhciBuLCByLCBpOwogICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAobiA9IGVbdF0sIHQgPSBlLCBlID0gbiksIHYoZSkpIHJldHVybiByID0gYWUuY2FsbChhcmd1bWVudHMsIDIpLCAoaSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZS5hcHBseSh0IHx8IHRoaXMsIHIuY29uY2F0KGFlLmNhbGwoYXJndW1lbnRzKSkpCiAgICAgICAgfSkuZ3VpZCA9IGUuZ3VpZCA9IGUuZ3VpZCB8fCBjZS5ndWlkKyssIGkKICAgIH0sIGNlLmhvbGRSZWFkeSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICBlID8gY2UucmVhZHlXYWl0KysgOiBjZS5yZWFkeSghMCkKICAgIH0sIGNlLmlzQXJyYXkgPSBBcnJheS5pc0FycmF5LCBjZS5wYXJzZUpTT04gPSBKU09OLnBhcnNlLCBjZS5ub2RlTmFtZSA9IGZlLCBjZS5pc0Z1bmN0aW9uID0gdiwgY2UuaXNXaW5kb3cgPSB5LCBjZS5jYW1lbENhc2UgPSBGLCBjZS50eXBlID0geCwgY2Uubm93ID0gRGF0ZS5ub3csIGNlLmlzTnVtZXJpYyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IGNlLnR5cGUoZSk7CiAgICAgICAgcmV0dXJuICgibnVtYmVyIiA9PT0gdCB8fCAic3RyaW5nIiA9PT0gdCkgJiYgIWlzTmFOKGUgLSBwYXJzZUZsb2F0KGUpKQogICAgfSwgY2UudHJpbSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gIiIgOiAoZSArICIiKS5yZXBsYWNlKGVuLCAiJDEiKQogICAgfSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgJiYgZGVmaW5lKCJqcXVlcnkiLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGNlCiAgICB9KTsKICAgIHZhciB0biA9IGllLmpRdWVyeSwKICAgICAgICBubiA9IGllLiQ7CiAgICByZXR1cm4gY2Uubm9Db25mbGljdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gaWUuJCA9PT0gY2UgJiYgKGllLiQgPSBubiksIGUgJiYgaWUualF1ZXJ5ID09PSBjZSAmJiAoaWUualF1ZXJ5ID0gdG4pLCBjZQogICAgfSwgInVuZGVmaW5lZCIgPT0gdHlwZW9mIGUgJiYgKGllLmpRdWVyeSA9IGllLiQgPSBjZSksIGNlCn0pOwpqUXVlcnkubm9Db25mbGljdCgpOw=="}},"time_used":115,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":87,"receive":28,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/metform/public/assets/css/metform-ui3fd0.css?ver=3.8.2","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.810Z","timestamp":1785128398810,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/metform/public/assets/css/metform-ui3fd0.css?ver=3.8.2 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 15293\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:46 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"21fa4-67c3620e-a053152626aa5c8d;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457452\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 6fee248132a6e59082f138c8d973ae29-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":139172,"size_decoded":15867,"mime_type":"text/css","magic":"ASCII text","md5":"f6a247fa74298be45b564dc27564b4fc","sha1":"50d8df92f04889d4f9d72ffe37662daf4647cb36","sha256":"4d39ce01ff468cc58697ed8a917effa81ec72b8422b217a590f15a1c0d254af9","sha512":"6662a36f182341d4a98f9a2513e1b2cd3b6b38248f99aca451ebc2824539ac2b049235127f0b0e7a92e9650e2c98ab314d45af9d3c4255c86ccc4af1690cc077","ssdeep":"3072:KdO6a+OqkPAVRhlzN/TjPRWhtle4hzYPkFmOI7OFRB1DfPjT/R0jXZVBt1IKUwK:KdO6a+OqkPAVRhlzN/TjPRWhtleezYP2","tlshash":"fad33311aee23947b95e454cf6e89651e3148083e51edebebb8e3a978f485810433f4f","first_seen":"2026-07-27T03:56:42.599956Z","last_seen":"2026-07-27T05:30:59.781963Z","times_seen":6,"resource_available":false,"data":"LmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbT5hPmltZywKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbT5pbWcsCi5hdHRyLWltZy1yZXNwb25zaXZlLAouYXR0ci10aHVtYm5haWwgYT5pbWcsCi5hdHRyLXRodW1ibmFpbD5pbWcgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLmF0dHItaW1nLXJvdW5kZWQgewogICAgYm9yZGVyLXJhZGl1czogNnB4Cn0KCi5hdHRyLWltZy10aHVtYm5haWwgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogICAgcGFkZGluZzogNHB4OwogICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlLWluLW91dDsKICAgIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZS1pbi1vdXQKfQoKLmF0dHItaW1nLWNpcmNsZSB7CiAgICBib3JkZXItcmFkaXVzOiA1MCUKfQoKLmF0dHItc3Itb25seSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMXB4OwogICAgaGVpZ2h0OiAxcHg7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAtMXB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7CiAgICBib3JkZXI6IDAKfQoKLmF0dHItc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLAouYXR0ci1zci1vbmx5LWZvY3VzYWJsZTpmb2N1cyB7CiAgICBwb3NpdGlvbjogc3RhdGljOwogICAgd2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXJnaW46IDA7CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIGNsaXA6IGF1dG8KfQoKLmF0dHItaDEsCi5hdHRyLWgyLAouYXR0ci1oMywKLmF0dHItaDQsCi5hdHRyLWg1LAouYXR0ci1oNiB7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBsaW5lLWhlaWdodDogMS4xOwogICAgY29sb3I6IGluaGVyaXQKfQoKLmF0dHItaDEgLmF0dHItc21hbGwsCi5hdHRyLWgxIHNtYWxsLAouYXR0ci1oMiAuYXR0ci1zbWFsbCwKLmF0dHItaDIgc21hbGwsCi5hdHRyLWgzIC5hdHRyLXNtYWxsLAouYXR0ci1oMyBzbWFsbCwKLmF0dHItaDQgLmF0dHItc21hbGwsCi5hdHRyLWg0IHNtYWxsLAouYXR0ci1oNSAuYXR0ci1zbWFsbCwKLmF0dHItaDUgc21hbGwsCi5hdHRyLWg2IC5hdHRyLXNtYWxsLAouYXR0ci1oNiBzbWFsbCwKaDEgLmF0dHItc21hbGwsCmgyIC5hdHRyLXNtYWxsLApoMyAuYXR0ci1zbWFsbCwKaDQgLmF0dHItc21hbGwsCmg1IC5hdHRyLXNtYWxsLApoNiAuYXR0ci1zbWFsbCB7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBjb2xvcjogIzc3Nwp9CgouYXR0ci1oMSwKLmF0dHItaDIsCi5hdHRyLWgzIHsKICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Cn0KCi5hdHRyLWgxIC5hdHRyLXNtYWxsLAouYXR0ci1oMSBzbWFsbCwKLmF0dHItaDIgLmF0dHItc21hbGwsCi5hdHRyLWgyIHNtYWxsLAouYXR0ci1oMyAuYXR0ci1zbWFsbCwKLmF0dHItaDMgc21hbGwsCmgxIC5hdHRyLXNtYWxsLApoMiAuYXR0ci1zbWFsbCwKaDMgLmF0dHItc21hbGwgewogICAgZm9udC1zaXplOiA2NSUKfQoKLmF0dHItaDQsCi5hdHRyLWg1LAouYXR0ci1oNiB7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTBweAp9CgouYXR0ci1oNCAuYXR0ci1zbWFsbCwKLmF0dHItaDQgc21hbGwsCi5hdHRyLWg1IC5hdHRyLXNtYWxsLAouYXR0ci1oNSBzbWFsbCwKLmF0dHItaDYgLmF0dHItc21hbGwsCi5hdHRyLWg2IHNtYWxsLApoNCAuYXR0ci1zbWFsbCwKaDUgLmF0dHItc21hbGwsCmg2IC5hdHRyLXNtYWxsIHsKICAgIGZvbnQtc2l6ZTogNzUlCn0KCi5hdHRyLWgxIHsKICAgIGZvbnQtc2l6ZTogMzZweAp9CgouYXR0ci1oMiB7CiAgICBmb250LXNpemU6IDMwcHgKfQoKLmF0dHItaDMgewogICAgZm9udC1zaXplOiAyNHB4Cn0KCi5hdHRyLWg0IHsKICAgIGZvbnQtc2l6ZTogMThweAp9CgouYXR0ci1oNSB7CiAgICBmb250LXNpemU6IDE0cHgKfQoKLmF0dHItaDYgewogICAgZm9udC1zaXplOiAxMnB4Cn0KCi5hdHRyLWxlYWQgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGZvbnQtd2VpZ2h0OiAzMDA7CiAgICBsaW5lLWhlaWdodDogMS40Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1sZWFkIHsKICAgICAgICBmb250LXNpemU6IDIxcHgKICAgIH0KfQoKLmF0dHItc21hbGwgewogICAgZm9udC1zaXplOiA4NSUKfQoKLmF0dHItbWFyayB7CiAgICBwYWRkaW5nOiAuMmVtOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMwp9CgouYXR0ci10ZXh0LWxlZnQgewogICAgdGV4dC1hbGlnbjogbGVmdAp9CgouYXR0ci10ZXh0LXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Cn0KCi5hdHRyLXRleHQtY2VudGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouYXR0ci10ZXh0LWp1c3RpZnkgewogICAgdGV4dC1hbGlnbjoganVzdGlmeQp9CgouYXR0ci10ZXh0LW5vd3JhcCB7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwCn0KCi5hdHRyLXRleHQtbG93ZXJjYXNlIHsKICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UKfQoKLmF0dHItdGV4dC11cHBlcmNhc2UgewogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZQp9CgouYXR0ci10ZXh0LWNhcGl0YWxpemUgewogICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUKfQoKLmF0dHItdGV4dC1tdXRlZCB7CiAgICBjb2xvcjogIzc3Nwp9CgouYXR0ci10ZXh0LXByaW1hcnkgewogICAgY29sb3I6ICMzMzdhYjcKfQoKYS5hdHRyLXRleHQtcHJpbWFyeTpmb2N1cywKYS5hdHRyLXRleHQtcHJpbWFyeTpob3ZlciB7CiAgICBjb2xvcjogIzI4NjA5MAp9CgouYXR0ci10ZXh0LXN1Y2Nlc3MgewogICAgY29sb3I6ICMzYzc2M2QKfQoKYS5hdHRyLXRleHQtc3VjY2Vzczpmb2N1cywKYS5hdHRyLXRleHQtc3VjY2Vzczpob3ZlciB7CiAgICBjb2xvcjogIzJiNTQyYwp9CgouYXR0ci10ZXh0LWluZm8gewogICAgY29sb3I6ICMzMTcwOGYKfQoKYS5hdHRyLXRleHQtaW5mbzpmb2N1cywKYS5hdHRyLXRleHQtaW5mbzpob3ZlciB7CiAgICBjb2xvcjogIzI0NTI2OQp9CgouYXR0ci10ZXh0LXdhcm5pbmcgewogICAgY29sb3I6ICM4YTZkM2IKfQoKYS5hdHRyLXRleHQtd2FybmluZzpmb2N1cywKYS5hdHRyLXRleHQtd2FybmluZzpob3ZlciB7CiAgICBjb2xvcjogIzY2NTEyYwp9CgouYXR0ci10ZXh0LWRhbmdlciB7CiAgICBjb2xvcjogI2E5NDQ0Mgp9CgphLmF0dHItdGV4dC1kYW5nZXI6Zm9jdXMsCmEuYXR0ci10ZXh0LWRhbmdlcjpob3ZlciB7CiAgICBjb2xvcjogIzg0MzUzNAp9CgouYXR0ci1iZy1wcmltYXJ5IHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzN2FiNwp9CgphLmF0dHItYmctcHJpbWFyeTpmb2N1cywKYS5hdHRyLWJnLXByaW1hcnk6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzI4NjA5MAp9CgouYXR0ci1iZy1zdWNjZXNzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDgKfQoKYS5hdHRyLWJnLXN1Y2Nlc3M6Zm9jdXMsCmEuYXR0ci1iZy1zdWNjZXNzOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjMWUyYjMKfQoKLmF0dHItYmctaW5mbyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3Cn0KCmEuYXR0ci1iZy1pbmZvOmZvY3VzLAphLmF0dHItYmctaW5mbzpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWZkOWVlCn0KCi5hdHRyLWJnLXdhcm5pbmcgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMwp9CgphLmF0dHItYmctd2FybmluZzpmb2N1cywKYS5hdHRyLWJnLXdhcm5pbmc6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZWNiNQp9CgouYXR0ci1iZy1kYW5nZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZQp9CgphLmF0dHItYmctZGFuZ2VyOmZvY3VzLAphLmF0dHItYmctZGFuZ2VyOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNGI5YjkKfQoKLmF0dHItcGFnZS1oZWFkZXIgewogICAgcGFkZGluZy1ib3R0b206IDlweDsKICAgIG1hcmdpbjogNDBweCAwIDIwcHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZQp9CgouYXR0ci1saXN0LXVuc3R5bGVkIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmUKfQoKLmF0dHItbGlzdC1pbmxpbmUgewogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgbWFyZ2luLWxlZnQ6IC01cHg7CiAgICBsaXN0LXN0eWxlOiBub25lCn0KCi5hdHRyLWxpc3QtaW5saW5lPmxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKICAgIHBhZGRpbmctbGVmdDogNXB4Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1kbC1ob3Jpem9udGFsIGR0IHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICB3aWR0aDogMTYwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBjbGVhcjogbGVmdDsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwCiAgICB9CiAgICAuYXR0ci1kbC1ob3Jpem9udGFsIGRkIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTgwcHgKICAgIH0KfQoKLmF0dHItaW5pdGlhbGlzbSB7CiAgICBmb250LXNpemU6IDkwJTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UKfQoKLmF0dHItcHJlLXNjcm9sbGFibGUgewogICAgbWF4LWhlaWdodDogMzQwcHg7CiAgICBvdmVyZmxvdy15OiBzY3JvbGwKfQoKLmF0dHItY29udGFpbmVyIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICBtYXJnaW4tbGVmdDogYXV0bwp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogNzUwcHgKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6OTkycHgpIHsKICAgIC5hdHRyLWNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDk3MHB4CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEyMDBweCkgewogICAgLmF0dHItY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTE3MHB4CiAgICB9Cn0KCi5hdHRyLWNvbnRhaW5lci1mbHVpZCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IGF1dG8KfQoKLmF0dHItcm93IHsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgICBtYXJnaW4tbGVmdDogLTE1cHgKfQoKLmF0dHItY29sLWxnLTEsCi5hdHRyLWNvbC1sZy0xMCwKLmF0dHItY29sLWxnLTExLAouYXR0ci1jb2wtbGctMTIsCi5hdHRyLWNvbC1sZy0yLAouYXR0ci1jb2wtbGctMywKLmF0dHItY29sLWxnLTQsCi5hdHRyLWNvbC1sZy01LAouYXR0ci1jb2wtbGctNiwKLmF0dHItY29sLWxnLTcsCi5hdHRyLWNvbC1sZy04LAouYXR0ci1jb2wtbGctOSwKLmF0dHItY29sLW1kLTEsCi5hdHRyLWNvbC1tZC0xMCwKLmF0dHItY29sLW1kLTExLAouYXR0ci1jb2wtbWQtMTIsCi5hdHRyLWNvbC1tZC0yLAouYXR0ci1jb2wtbWQtMywKLmF0dHItY29sLW1kLTQsCi5hdHRyLWNvbC1tZC01LAouYXR0ci1jb2wtbWQtNiwKLmF0dHItY29sLW1kLTcsCi5hdHRyLWNvbC1tZC04LAouYXR0ci1jb2wtbWQtOSwKLmF0dHItY29sLXNtLTEsCi5hdHRyLWNvbC1zbS0xMCwKLmF0dHItY29sLXNtLTExLAouYXR0ci1jb2wtc20tMTIsCi5hdHRyLWNvbC1zbS0yLAouYXR0ci1jb2wtc20tMywKLmF0dHItY29sLXNtLTQsCi5hdHRyLWNvbC1zbS01LAouYXR0ci1jb2wtc20tNiwKLmF0dHItY29sLXNtLTcsCi5hdHRyLWNvbC1zbS04LAouYXR0ci1jb2wtc20tOSwKLmF0dHItY29sLXhzLTEsCi5hdHRyLWNvbC14cy0xMCwKLmF0dHItY29sLXhzLTExLAouYXR0ci1jb2wteHMtMTIsCi5hdHRyLWNvbC14cy0yLAouYXR0ci1jb2wteHMtMywKLmF0dHItY29sLXhzLTQsCi5hdHRyLWNvbC14cy01LAouYXR0ci1jb2wteHMtNiwKLmF0dHItY29sLXhzLTcsCi5hdHRyLWNvbC14cy04LAouYXR0ci1jb2wteHMtOSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBtaW4taGVpZ2h0OiAxcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiAxNXB4Cn0KCi5hdHRyLWNvbC14cy0xLAouYXR0ci1jb2wteHMtMTAsCi5hdHRyLWNvbC14cy0xMSwKLmF0dHItY29sLXhzLTEyLAouYXR0ci1jb2wteHMtMiwKLmF0dHItY29sLXhzLTMsCi5hdHRyLWNvbC14cy00LAouYXR0ci1jb2wteHMtNSwKLmF0dHItY29sLXhzLTYsCi5hdHRyLWNvbC14cy03LAouYXR0ci1jb2wteHMtOCwKLmF0dHItY29sLXhzLTkgewogICAgZmxvYXQ6IGxlZnQKfQoKLmF0dHItY29sLXhzLTEyIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5hdHRyLWNvbC14cy0xMSB7CiAgICB3aWR0aDogOTEuNjY2NjY2NjclCn0KCi5hdHRyLWNvbC14cy0xMCB7CiAgICB3aWR0aDogODMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy05IHsKICAgIHdpZHRoOiA3NSUKfQoKLmF0dHItY29sLXhzLTggewogICAgd2lkdGg6IDY2LjY2NjY2NjY3JQp9CgouYXR0ci1jb2wteHMtNyB7CiAgICB3aWR0aDogNTguMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy02IHsKICAgIHdpZHRoOiA1MCUKfQoKLmF0dHItY29sLXhzLTUgewogICAgd2lkdGg6IDQxLjY2NjY2NjY3JQp9CgouYXR0ci1jb2wteHMtNCB7CiAgICB3aWR0aDogMzMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy0zIHsKICAgIHdpZHRoOiAyNSUKfQoKLmF0dHItY29sLXhzLTIgewogICAgd2lkdGg6IDE2LjY2NjY2NjY3JQp9CgouYXR0ci1jb2wteHMtMSB7CiAgICB3aWR0aDogOC4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLXB1bGwtMTIgewogICAgcmlnaHQ6IDEwMCUKfQoKLmF0dHItY29sLXhzLXB1bGwtMTEgewogICAgcmlnaHQ6IDkxLjY2NjY2NjY3JQp9CgouYXR0ci1jb2wteHMtcHVsbC0xMCB7CiAgICByaWdodDogODMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1wdWxsLTkgewogICAgcmlnaHQ6IDc1JQp9CgouYXR0ci1jb2wteHMtcHVsbC04IHsKICAgIHJpZ2h0OiA2Ni42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1bGwtNyB7CiAgICByaWdodDogNTguMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1wdWxsLTYgewogICAgcmlnaHQ6IDUwJQp9CgouYXR0ci1jb2wteHMtcHVsbC01IHsKICAgIHJpZ2h0OiA0MS42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1bGwtNCB7CiAgICByaWdodDogMzMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1wdWxsLTMgewogICAgcmlnaHQ6IDI1JQp9CgouYXR0ci1jb2wteHMtcHVsbC0yIHsKICAgIHJpZ2h0OiAxNi42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1bGwtMSB7CiAgICByaWdodDogOC4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLXB1bGwtMCB7CiAgICByaWdodDogYXV0bwp9CgouYXR0ci1jb2wteHMtcHVzaC0xMiB7CiAgICBsZWZ0OiAxMDAlCn0KCi5hdHRyLWNvbC14cy1wdXNoLTExIHsKICAgIGxlZnQ6IDkxLjY2NjY2NjY3JQp9CgouYXR0ci1jb2wteHMtcHVzaC0xMCB7CiAgICBsZWZ0OiA4My4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLXB1c2gtOSB7CiAgICBsZWZ0OiA3NSUKfQoKLmF0dHItY29sLXhzLXB1c2gtOCB7CiAgICBsZWZ0OiA2Ni42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1c2gtNyB7CiAgICBsZWZ0OiA1OC4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLXB1c2gtNiB7CiAgICBsZWZ0OiA1MCUKfQoKLmF0dHItY29sLXhzLXB1c2gtNSB7CiAgICBsZWZ0OiA0MS42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1c2gtNCB7CiAgICBsZWZ0OiAzMy4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLXB1c2gtMyB7CiAgICBsZWZ0OiAyNSUKfQoKLmF0dHItY29sLXhzLXB1c2gtMiB7CiAgICBsZWZ0OiAxNi42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLXB1c2gtMSB7CiAgICBsZWZ0OiA4LjMzMzMzMzMzJQp9CgouYXR0ci1jb2wteHMtcHVzaC0wIHsKICAgIGxlZnQ6IGF1dG8KfQoKLmF0dHItY29sLXhzLW9mZnNldC0xMiB7CiAgICBtYXJnaW4tbGVmdDogMTAwJQp9CgouYXR0ci1jb2wteHMtb2Zmc2V0LTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyUKfQoKLmF0dHItY29sLXhzLW9mZnNldC0xMCB7CiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtOSB7CiAgICBtYXJnaW4tbGVmdDogNzUlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtNyB7CiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtNiB7CiAgICBtYXJnaW4tbGVmdDogNTAlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtNCB7CiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclCn0KCi5hdHRyLWNvbC14cy1vZmZzZXQtMSB7CiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMyUKfQoKLmF0dHItY29sLXhzLW9mZnNldC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwCn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1jb2wtc20tMSwKICAgIC5hdHRyLWNvbC1zbS0xMCwKICAgIC5hdHRyLWNvbC1zbS0xMSwKICAgIC5hdHRyLWNvbC1zbS0xMiwKICAgIC5hdHRyLWNvbC1zbS0yLAogICAgLmF0dHItY29sLXNtLTMsCiAgICAuYXR0ci1jb2wtc20tNCwKICAgIC5hdHRyLWNvbC1zbS01LAogICAgLmF0dHItY29sLXNtLTYsCiAgICAuYXR0ci1jb2wtc20tNywKICAgIC5hdHRyLWNvbC1zbS04LAogICAgLmF0dHItY29sLXNtLTkgewogICAgICAgIGZsb2F0OiBsZWZ0CiAgICB9CiAgICAuYXR0ci1jb2wtc20tMTIgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9CiAgICAuYXR0ci1jb2wtc20tMTEgewogICAgICAgIHdpZHRoOiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS0xMCB7CiAgICAgICAgd2lkdGg6IDgzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLTkgewogICAgICAgIHdpZHRoOiA3NSUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS04IHsKICAgICAgICB3aWR0aDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tNyB7CiAgICAgICAgd2lkdGg6IDU4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLTYgewogICAgICAgIHdpZHRoOiA1MCUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS01IHsKICAgICAgICB3aWR0aDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tNCB7CiAgICAgICAgd2lkdGg6IDMzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLTMgewogICAgICAgIHdpZHRoOiAyNSUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS0yIHsKICAgICAgICB3aWR0aDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tMSB7CiAgICAgICAgd2lkdGg6IDguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVsbC0xMiB7CiAgICAgICAgcmlnaHQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdWxsLTExIHsKICAgICAgICByaWdodDogOTEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVsbC0xMCB7CiAgICAgICAgcmlnaHQ6IDgzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtOSB7CiAgICAgICAgcmlnaHQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtOCB7CiAgICAgICAgcmlnaHQ6IDY2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtNyB7CiAgICAgICAgcmlnaHQ6IDU4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtNiB7CiAgICAgICAgcmlnaHQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtNSB7CiAgICAgICAgcmlnaHQ6IDQxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtNCB7CiAgICAgICAgcmlnaHQ6IDMzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtMyB7CiAgICAgICAgcmlnaHQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtMiB7CiAgICAgICAgcmlnaHQ6IDE2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1bGwtMSB7CiAgICAgICAgcmlnaHQ6IDguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVsbC0wIHsKICAgICAgICByaWdodDogYXV0bwogICAgfQogICAgLmF0dHItY29sLXNtLXB1c2gtMTIgewogICAgICAgIGxlZnQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdXNoLTExIHsKICAgICAgICBsZWZ0OiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdXNoLTEwIHsKICAgICAgICBsZWZ0OiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdXNoLTkgewogICAgICAgIGxlZnQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1c2gtOCB7CiAgICAgICAgbGVmdDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVzaC03IHsKICAgICAgICBsZWZ0OiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdXNoLTYgewogICAgICAgIGxlZnQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1c2gtNSB7CiAgICAgICAgbGVmdDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVzaC00IHsKICAgICAgICBsZWZ0OiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1wdXNoLTMgewogICAgICAgIGxlZnQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLXNtLXB1c2gtMiB7CiAgICAgICAgbGVmdDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tcHVzaC0xIHsKICAgICAgICBsZWZ0OiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLXB1c2gtMCB7CiAgICAgICAgbGVmdDogYXV0bwogICAgfQogICAgLmF0dHItY29sLXNtLW9mZnNldC0xMiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1vZmZzZXQtMTEgewogICAgICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1vZmZzZXQtMTAgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1vZmZzZXQtOSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLXNtLW9mZnNldC04IHsKICAgICAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tb2Zmc2V0LTcgewogICAgICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1vZmZzZXQtNiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLXNtLW9mZnNldC01IHsKICAgICAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tb2Zmc2V0LTQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1zbS1vZmZzZXQtMyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLXNtLW9mZnNldC0yIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtc20tb2Zmc2V0LTEgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLXNtLW9mZnNldC0wIHsKICAgICAgICBtYXJnaW4tbGVmdDogMAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgewogICAgLmF0dHItY29sLW1kLTEsCiAgICAuYXR0ci1jb2wtbWQtMTAsCiAgICAuYXR0ci1jb2wtbWQtMTEsCiAgICAuYXR0ci1jb2wtbWQtMTIsCiAgICAuYXR0ci1jb2wtbWQtMiwKICAgIC5hdHRyLWNvbC1tZC0zLAogICAgLmF0dHItY29sLW1kLTQsCiAgICAuYXR0ci1jb2wtbWQtNSwKICAgIC5hdHRyLWNvbC1tZC02LAogICAgLmF0dHItY29sLW1kLTcsCiAgICAuYXR0ci1jb2wtbWQtOCwKICAgIC5hdHRyLWNvbC1tZC05IHsKICAgICAgICBmbG9hdDogbGVmdAogICAgfQogICAgLmF0dHItY29sLW1kLTEyIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQogICAgLmF0dHItY29sLW1kLTExIHsKICAgICAgICB3aWR0aDogOTEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtMTAgewogICAgICAgIHdpZHRoOiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC05IHsKICAgICAgICB3aWR0aDogNzUlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtOCB7CiAgICAgICAgd2lkdGg6IDY2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLTcgewogICAgICAgIHdpZHRoOiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC02IHsKICAgICAgICB3aWR0aDogNTAlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtNSB7CiAgICAgICAgd2lkdGg6IDQxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLTQgewogICAgICAgIHdpZHRoOiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC0zIHsKICAgICAgICB3aWR0aDogMjUlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtMiB7CiAgICAgICAgd2lkdGg6IDE2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLTEgewogICAgICAgIHdpZHRoOiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLW1kLXB1bGwtMTIgewogICAgICAgIHJpZ2h0OiAxMDAlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVsbC0xMSB7CiAgICAgICAgcmlnaHQ6IDkxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLXB1bGwtMTAgewogICAgICAgIHJpZ2h0OiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTkgewogICAgICAgIHJpZ2h0OiA3NSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTggewogICAgICAgIHJpZ2h0OiA2Ni42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTcgewogICAgICAgIHJpZ2h0OiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTYgewogICAgICAgIHJpZ2h0OiA1MCUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTUgewogICAgICAgIHJpZ2h0OiA0MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTQgewogICAgICAgIHJpZ2h0OiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTMgewogICAgICAgIHJpZ2h0OiAyNSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTIgewogICAgICAgIHJpZ2h0OiAxNi42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdWxsLTEgewogICAgICAgIHJpZ2h0OiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLW1kLXB1bGwtMCB7CiAgICAgICAgcmlnaHQ6IGF1dG8KICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdXNoLTEyIHsKICAgICAgICBsZWZ0OiAxMDAlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVzaC0xMSB7CiAgICAgICAgbGVmdDogOTEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVzaC0xMCB7CiAgICAgICAgbGVmdDogODMuMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVzaC05IHsKICAgICAgICBsZWZ0OiA3NSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdXNoLTggewogICAgICAgIGxlZnQ6IDY2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLXB1c2gtNyB7CiAgICAgICAgbGVmdDogNTguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVzaC02IHsKICAgICAgICBsZWZ0OiA1MCUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdXNoLTUgewogICAgICAgIGxlZnQ6IDQxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLXB1c2gtNCB7CiAgICAgICAgbGVmdDogMzMuMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtcHVzaC0zIHsKICAgICAgICBsZWZ0OiAyNSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdXNoLTIgewogICAgICAgIGxlZnQ6IDE2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLXB1c2gtMSB7CiAgICAgICAgbGVmdDogOC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1wdXNoLTAgewogICAgICAgIGxlZnQ6IGF1dG8KICAgIH0KICAgIC5hdHRyLWNvbC1tZC1vZmZzZXQtMTIgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMDAlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtb2Zmc2V0LTExIHsKICAgICAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtb2Zmc2V0LTEwIHsKICAgICAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtb2Zmc2V0LTkgewogICAgICAgIG1hcmdpbi1sZWZ0OiA3NSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1vZmZzZXQtOCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLW9mZnNldC03IHsKICAgICAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtb2Zmc2V0LTYgewogICAgICAgIG1hcmdpbi1sZWZ0OiA1MCUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1vZmZzZXQtNSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLW9mZnNldC00IHsKICAgICAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbWQtb2Zmc2V0LTMgewogICAgICAgIG1hcmdpbi1sZWZ0OiAyNSUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1vZmZzZXQtMiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLW1kLW9mZnNldC0xIHsKICAgICAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1tZC1vZmZzZXQtMCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDAKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KSB7CiAgICAuYXR0ci1jb2wtbGctMSwKICAgIC5hdHRyLWNvbC1sZy0xMCwKICAgIC5hdHRyLWNvbC1sZy0xMSwKICAgIC5hdHRyLWNvbC1sZy0xMiwKICAgIC5hdHRyLWNvbC1sZy0yLAogICAgLmF0dHItY29sLWxnLTMsCiAgICAuYXR0ci1jb2wtbGctNCwKICAgIC5hdHRyLWNvbC1sZy01LAogICAgLmF0dHItY29sLWxnLTYsCiAgICAuYXR0ci1jb2wtbGctNywKICAgIC5hdHRyLWNvbC1sZy04LAogICAgLmF0dHItY29sLWxnLTkgewogICAgICAgIGZsb2F0OiBsZWZ0CiAgICB9CiAgICAuYXR0ci1jb2wtbGctMTIgewogICAgICAgIHdpZHRoOiAxMDAlCiAgICB9CiAgICAuYXR0ci1jb2wtbGctMTEgewogICAgICAgIHdpZHRoOiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy0xMCB7CiAgICAgICAgd2lkdGg6IDgzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLTkgewogICAgICAgIHdpZHRoOiA3NSUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy04IHsKICAgICAgICB3aWR0aDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctNyB7CiAgICAgICAgd2lkdGg6IDU4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLTYgewogICAgICAgIHdpZHRoOiA1MCUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy01IHsKICAgICAgICB3aWR0aDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctNCB7CiAgICAgICAgd2lkdGg6IDMzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLTMgewogICAgICAgIHdpZHRoOiAyNSUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy0yIHsKICAgICAgICB3aWR0aDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctMSB7CiAgICAgICAgd2lkdGg6IDguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVsbC0xMiB7CiAgICAgICAgcmlnaHQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdWxsLTExIHsKICAgICAgICByaWdodDogOTEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVsbC0xMCB7CiAgICAgICAgcmlnaHQ6IDgzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtOSB7CiAgICAgICAgcmlnaHQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtOCB7CiAgICAgICAgcmlnaHQ6IDY2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtNyB7CiAgICAgICAgcmlnaHQ6IDU4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtNiB7CiAgICAgICAgcmlnaHQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtNSB7CiAgICAgICAgcmlnaHQ6IDQxLjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtNCB7CiAgICAgICAgcmlnaHQ6IDMzLjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtMyB7CiAgICAgICAgcmlnaHQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtMiB7CiAgICAgICAgcmlnaHQ6IDE2LjY2NjY2NjY3JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1bGwtMSB7CiAgICAgICAgcmlnaHQ6IDguMzMzMzMzMzMlCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVsbC0wIHsKICAgICAgICByaWdodDogYXV0bwogICAgfQogICAgLmF0dHItY29sLWxnLXB1c2gtMTIgewogICAgICAgIGxlZnQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdXNoLTExIHsKICAgICAgICBsZWZ0OiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdXNoLTEwIHsKICAgICAgICBsZWZ0OiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdXNoLTkgewogICAgICAgIGxlZnQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1c2gtOCB7CiAgICAgICAgbGVmdDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVzaC03IHsKICAgICAgICBsZWZ0OiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdXNoLTYgewogICAgICAgIGxlZnQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1c2gtNSB7CiAgICAgICAgbGVmdDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVzaC00IHsKICAgICAgICBsZWZ0OiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1wdXNoLTMgewogICAgICAgIGxlZnQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLWxnLXB1c2gtMiB7CiAgICAgICAgbGVmdDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctcHVzaC0xIHsKICAgICAgICBsZWZ0OiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLXB1c2gtMCB7CiAgICAgICAgbGVmdDogYXV0bwogICAgfQogICAgLmF0dHItY29sLWxnLW9mZnNldC0xMiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMCUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1vZmZzZXQtMTEgewogICAgICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1vZmZzZXQtMTAgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1vZmZzZXQtOSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDc1JQogICAgfQogICAgLmF0dHItY29sLWxnLW9mZnNldC04IHsKICAgICAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctb2Zmc2V0LTcgewogICAgICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1vZmZzZXQtNiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDUwJQogICAgfQogICAgLmF0dHItY29sLWxnLW9mZnNldC01IHsKICAgICAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctb2Zmc2V0LTQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyUKICAgIH0KICAgIC5hdHRyLWNvbC1sZy1vZmZzZXQtMyB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDI1JQogICAgfQogICAgLmF0dHItY29sLWxnLW9mZnNldC0yIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclCiAgICB9CiAgICAuYXR0ci1jb2wtbGctb2Zmc2V0LTEgewogICAgICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJQogICAgfQogICAgLmF0dHItY29sLWxnLW9mZnNldC0wIHsKICAgICAgICBtYXJnaW4tbGVmdDogMAogICAgfQp9CgouYXR0ci10YWJsZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IDIwcHgKfQoKLmF0dHItdGFibGU+dGJvZHk+dHI+dGQsCi5hdHRyLXRhYmxlPnRib2R5PnRyPnRoLAouYXR0ci10YWJsZT50Zm9vdD50cj50ZCwKLmF0dHItdGFibGU+dGZvb3Q+dHI+dGgsCi5hdHRyLXRhYmxlPnRoZWFkPnRyPnRkLAouYXR0ci10YWJsZT50aGVhZD50cj50aCB7CiAgICBwYWRkaW5nOiA4cHg7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZAp9CgouYXR0ci10YWJsZT50aGVhZD50cj50aCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNkZGQKfQoKLmF0dHItdGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50ZCwKLmF0dHItdGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50aCwKLmF0dHItdGFibGU+Y29sZ3JvdXArdGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGQsCi5hdHRyLXRhYmxlPmNvbGdyb3VwK3RoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLAouYXR0ci10YWJsZT50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZD50ZCwKLmF0dHItdGFibGU+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQ+dGggewogICAgYm9yZGVyLXRvcDogMAp9CgouYXR0ci10YWJsZT50Ym9keSt0Ym9keSB7CiAgICBib3JkZXItdG9wOiAycHggc29saWQgI2RkZAp9CgouYXR0ci10YWJsZSAuYXR0ci10YWJsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5hdHRyLXRhYmxlLWNvbmRlbnNlZD50Ym9keT50cj50ZCwKLmF0dHItdGFibGUtY29uZGVuc2VkPnRib2R5PnRyPnRoLAouYXR0ci10YWJsZS1jb25kZW5zZWQ+dGZvb3Q+dHI+dGQsCi5hdHRyLXRhYmxlLWNvbmRlbnNlZD50Zm9vdD50cj50aCwKLmF0dHItdGFibGUtY29uZGVuc2VkPnRoZWFkPnRyPnRkLAouYXR0ci10YWJsZS1jb25kZW5zZWQ+dGhlYWQ+dHI+dGggewogICAgcGFkZGluZzogNXB4Cn0KCi5hdHRyLXRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQKfQoKLmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQsCi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoLAouYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50ZCwKLmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGgsCi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkLAouYXR0ci10YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkCn0KCi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkLAouYXR0ci10YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aCB7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHgKfQoKLmF0dHItdGFibGUtc3RyaXBlZD50Ym9keT50cjpudGgtb2YtdHlwZShvZGQpIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5ZjkKfQoKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHI6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNQp9CgouYXR0ci10YWJsZT50Ym9keT50ci5hdHRyLWFjdGl2ZT50ZCwKLmF0dHItdGFibGU+dGJvZHk+dHIuYXR0ci1hY3RpdmU+dGgsCi5hdHRyLXRhYmxlPnRib2R5PnRyPnRkLmF0dHItYWN0aXZlLAouYXR0ci10YWJsZT50Ym9keT50cj50aC5hdHRyLWFjdGl2ZSwKLmF0dHItdGFibGU+dGZvb3Q+dHIuYXR0ci1hY3RpdmU+dGQsCi5hdHRyLXRhYmxlPnRmb290PnRyLmF0dHItYWN0aXZlPnRoLAouYXR0ci10YWJsZT50Zm9vdD50cj50ZC5hdHRyLWFjdGl2ZSwKLmF0dHItdGFibGU+dGZvb3Q+dHI+dGguYXR0ci1hY3RpdmUsCi5hdHRyLXRhYmxlPnRoZWFkPnRyLmF0dHItYWN0aXZlPnRkLAouYXR0ci10YWJsZT50aGVhZD50ci5hdHRyLWFjdGl2ZT50aCwKLmF0dHItdGFibGU+dGhlYWQ+dHI+dGQuYXR0ci1hY3RpdmUsCi5hdHRyLXRhYmxlPnRoZWFkPnRyPnRoLmF0dHItYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjUKfQoKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHIuYXR0ci1hY3RpdmU6aG92ZXI+dGQsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyLmF0dHItYWN0aXZlOmhvdmVyPnRoLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50cjpob3Zlcj4uYXR0ci1hY3RpdmUsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyPnRkLmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50cj50aC5hdHRyLWFjdGl2ZTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlOGU4Cn0KCi5hdHRyLXRhYmxlPnRib2R5PnRyLmF0dHItc3VjY2Vzcz50ZCwKLmF0dHItdGFibGU+dGJvZHk+dHIuYXR0ci1zdWNjZXNzPnRoLAouYXR0ci10YWJsZT50Ym9keT50cj50ZC5hdHRyLXN1Y2Nlc3MsCi5hdHRyLXRhYmxlPnRib2R5PnRyPnRoLmF0dHItc3VjY2VzcywKLmF0dHItdGFibGU+dGZvb3Q+dHIuYXR0ci1zdWNjZXNzPnRkLAouYXR0ci10YWJsZT50Zm9vdD50ci5hdHRyLXN1Y2Nlc3M+dGgsCi5hdHRyLXRhYmxlPnRmb290PnRyPnRkLmF0dHItc3VjY2VzcywKLmF0dHItdGFibGU+dGZvb3Q+dHI+dGguYXR0ci1zdWNjZXNzLAouYXR0ci10YWJsZT50aGVhZD50ci5hdHRyLXN1Y2Nlc3M+dGQsCi5hdHRyLXRhYmxlPnRoZWFkPnRyLmF0dHItc3VjY2Vzcz50aCwKLmF0dHItdGFibGU+dGhlYWQ+dHI+dGQuYXR0ci1zdWNjZXNzLAouYXR0ci10YWJsZT50aGVhZD50cj50aC5hdHRyLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkOAp9CgouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50ci5hdHRyLXN1Y2Nlc3M6aG92ZXI+dGQsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyLmF0dHItc3VjY2Vzczpob3Zlcj50aCwKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHI6aG92ZXI+LmF0dHItc3VjY2VzcywKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHI+dGQuYXR0ci1zdWNjZXNzOmhvdmVyLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50cj50aC5hdHRyLXN1Y2Nlc3M6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2QwZTljNgp9CgouYXR0ci10YWJsZT50Ym9keT50ci5hdHRyLWluZm8+dGQsCi5hdHRyLXRhYmxlPnRib2R5PnRyLmF0dHItaW5mbz50aCwKLmF0dHItdGFibGU+dGJvZHk+dHI+dGQuYXR0ci1pbmZvLAouYXR0ci10YWJsZT50Ym9keT50cj50aC5hdHRyLWluZm8sCi5hdHRyLXRhYmxlPnRmb290PnRyLmF0dHItaW5mbz50ZCwKLmF0dHItdGFibGU+dGZvb3Q+dHIuYXR0ci1pbmZvPnRoLAouYXR0ci10YWJsZT50Zm9vdD50cj50ZC5hdHRyLWluZm8sCi5hdHRyLXRhYmxlPnRmb290PnRyPnRoLmF0dHItaW5mbywKLmF0dHItdGFibGU+dGhlYWQ+dHIuYXR0ci1pbmZvPnRkLAouYXR0ci10YWJsZT50aGVhZD50ci5hdHRyLWluZm8+dGgsCi5hdHRyLXRhYmxlPnRoZWFkPnRyPnRkLmF0dHItaW5mbywKLmF0dHItdGFibGU+dGhlYWQ+dHI+dGguYXR0ci1pbmZvIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOWVkZjcKfQoKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHIuYXR0ci1pbmZvOmhvdmVyPnRkLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50ci5hdHRyLWluZm86aG92ZXI+dGgsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5hdHRyLWluZm8sCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyPnRkLmF0dHItaW5mbzpob3ZlciwKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHI+dGguYXR0ci1pbmZvOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjNGUzZjMKfQoKLmF0dHItdGFibGU+dGJvZHk+dHIuYXR0ci13YXJuaW5nPnRkLAouYXR0ci10YWJsZT50Ym9keT50ci5hdHRyLXdhcm5pbmc+dGgsCi5hdHRyLXRhYmxlPnRib2R5PnRyPnRkLmF0dHItd2FybmluZywKLmF0dHItdGFibGU+dGJvZHk+dHI+dGguYXR0ci13YXJuaW5nLAouYXR0ci10YWJsZT50Zm9vdD50ci5hdHRyLXdhcm5pbmc+dGQsCi5hdHRyLXRhYmxlPnRmb290PnRyLmF0dHItd2FybmluZz50aCwKLmF0dHItdGFibGU+dGZvb3Q+dHI+dGQuYXR0ci13YXJuaW5nLAouYXR0ci10YWJsZT50Zm9vdD50cj50aC5hdHRyLXdhcm5pbmcsCi5hdHRyLXRhYmxlPnRoZWFkPnRyLmF0dHItd2FybmluZz50ZCwKLmF0dHItdGFibGU+dGhlYWQ+dHIuYXR0ci13YXJuaW5nPnRoLAouYXR0ci10YWJsZT50aGVhZD50cj50ZC5hdHRyLXdhcm5pbmcsCi5hdHRyLXRhYmxlPnRoZWFkPnRyPnRoLmF0dHItd2FybmluZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzCn0KCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyLmF0dHItd2FybmluZzpob3Zlcj50ZCwKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHIuYXR0ci13YXJuaW5nOmhvdmVyPnRoLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50cjpob3Zlcj4uYXR0ci13YXJuaW5nLAouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50cj50ZC5hdHRyLXdhcm5pbmc6aG92ZXIsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyPnRoLmF0dHItd2FybmluZzpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmMmNjCn0KCi5hdHRyLXRhYmxlPnRib2R5PnRyLmF0dHItZGFuZ2VyPnRkLAouYXR0ci10YWJsZT50Ym9keT50ci5hdHRyLWRhbmdlcj50aCwKLmF0dHItdGFibGU+dGJvZHk+dHI+dGQuYXR0ci1kYW5nZXIsCi5hdHRyLXRhYmxlPnRib2R5PnRyPnRoLmF0dHItZGFuZ2VyLAouYXR0ci10YWJsZT50Zm9vdD50ci5hdHRyLWRhbmdlcj50ZCwKLmF0dHItdGFibGU+dGZvb3Q+dHIuYXR0ci1kYW5nZXI+dGgsCi5hdHRyLXRhYmxlPnRmb290PnRyPnRkLmF0dHItZGFuZ2VyLAouYXR0ci10YWJsZT50Zm9vdD50cj50aC5hdHRyLWRhbmdlciwKLmF0dHItdGFibGU+dGhlYWQ+dHIuYXR0ci1kYW5nZXI+dGQsCi5hdHRyLXRhYmxlPnRoZWFkPnRyLmF0dHItZGFuZ2VyPnRoLAouYXR0ci10YWJsZT50aGVhZD50cj50ZC5hdHRyLWRhbmdlciwKLmF0dHItdGFibGU+dGhlYWQ+dHI+dGguYXR0ci1kYW5nZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZQp9CgouYXR0ci10YWJsZS1ob3Zlcj50Ym9keT50ci5hdHRyLWRhbmdlcjpob3Zlcj50ZCwKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHIuYXR0ci1kYW5nZXI6aG92ZXI+dGgsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5hdHRyLWRhbmdlciwKLmF0dHItdGFibGUtaG92ZXI+dGJvZHk+dHI+dGQuYXR0ci1kYW5nZXI6aG92ZXIsCi5hdHRyLXRhYmxlLWhvdmVyPnRib2R5PnRyPnRoLmF0dHItZGFuZ2VyOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmNjY2MKfQoKLmF0dHItdGFibGUtcmVzcG9uc2l2ZSB7CiAgICBtaW4taGVpZ2h0OiAuMDElOwogICAgb3ZlcmZsb3cteDogYXV0bwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKICAgICAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkCiAgICB9CiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwCiAgICB9CiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlPnRib2R5PnRyPnRkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZT50Ym9keT50cj50aCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGU+dGZvb3Q+dHI+dGQsCiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlPnRmb290PnRyPnRoLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZT50aGVhZD50cj50ZCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGU+dGhlYWQ+dHI+dGggewogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAKICAgIH0KICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQgewogICAgICAgIGJvcmRlcjogMAogICAgfQogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6Zmlyc3QtY2hpbGQsCiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmZpcnN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGQ6Zmlyc3QtY2hpbGQsCiAgICAuYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmZpcnN0LWNoaWxkIHsKICAgICAgICBib3JkZXItbGVmdDogMAogICAgfQogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpsYXN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpsYXN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50ZDpsYXN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpsYXN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLAogICAgLmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpsYXN0LWNoaWxkIHsKICAgICAgICBib3JkZXItcmlnaHQ6IDAKICAgIH0KICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50ZCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50aCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwKICAgIC5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50aCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMAogICAgfQp9CgouYXR0ci1mb3JtLWNvbnRyb2wgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMzRweDsKICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgZm9udC1zaXplOiAxNHB4OwogICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgICBjb2xvcjogIzU1NTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA3NSk7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIC13ZWJraXQtYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOwogICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIC13ZWJraXQtYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOwogICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1cywgLXdlYmtpdC1ib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7CiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cywgYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzLCAtd2Via2l0LWJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1cwp9CgouYXR0ci1mb3JtLWNvbnRyb2w6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjNjZhZmU5OwogICAgb3V0bGluZTogMDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA3NSksIDAgMCA4cHggcmdiYSgxMDIsIDE3NSwgMjMzLCAuNik7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KSwgMCAwIDhweCByZ2JhKDEwMiwgMTc1LCAyMzMsIC42KQp9CgouYXR0ci1mb3JtLWNvbnRyb2w6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICM5OTk7CiAgICBvcGFjaXR5OiAxCn0KCi5hdHRyLWZvcm0tY29udHJvbDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6ICM5OTkKfQoKLmF0dHItZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiAjOTk5Cn0KCi5hdHRyLWZvcm0tY29udHJvbDo6LW1zLWV4cGFuZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMAp9CgouYXR0ci1mb3JtLWNvbnRyb2xbZGlzYWJsZWRdLAouYXR0ci1mb3JtLWNvbnRyb2xbcmVhZG9ubHldLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItZm9ybS1jb250cm9sIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgICBvcGFjaXR5OiAxCn0KCi5hdHRyLWZvcm0tY29udHJvbFtkaXNhYmxlZF0sCmZpZWxkc2V0W2Rpc2FibGVkXSAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZAp9Cgp0ZXh0YXJlYS5hdHRyLWZvcm0tY29udHJvbCB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKQG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7CiAgICBpbnB1dFt0eXBlPWRhdGVdLmF0dHItZm9ybS1jb250cm9sLAogICAgaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0uYXR0ci1mb3JtLWNvbnRyb2wsCiAgICBpbnB1dFt0eXBlPW1vbnRoXS5hdHRyLWZvcm0tY29udHJvbCwKICAgIGlucHV0W3R5cGU9dGltZV0uYXR0ci1mb3JtLWNvbnRyb2wgewogICAgICAgIGxpbmUtaGVpZ2h0OiAzNHB4CiAgICB9CiAgICAuYXR0ci1pbnB1dC1ncm91cC1zbSBpbnB1dFt0eXBlPWRhdGVdLAogICAgLmF0dHItaW5wdXQtZ3JvdXAtc20gaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0sCiAgICAuYXR0ci1pbnB1dC1ncm91cC1zbSBpbnB1dFt0eXBlPW1vbnRoXSwKICAgIC5hdHRyLWlucHV0LWdyb3VwLXNtIGlucHV0W3R5cGU9dGltZV0sCiAgICBpbnB1dFt0eXBlPWRhdGVdLmF0dHItaW5wdXQtc20sCiAgICBpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXS5hdHRyLWlucHV0LXNtLAogICAgaW5wdXRbdHlwZT1tb250aF0uYXR0ci1pbnB1dC1zbSwKICAgIGlucHV0W3R5cGU9dGltZV0uYXR0ci1pbnB1dC1zbSB7CiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHgKICAgIH0KICAgIC5hdHRyLWlucHV0LWdyb3VwLWxnIGlucHV0W3R5cGU9ZGF0ZV0sCiAgICAuYXR0ci1pbnB1dC1ncm91cC1sZyBpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXSwKICAgIC5hdHRyLWlucHV0LWdyb3VwLWxnIGlucHV0W3R5cGU9bW9udGhdLAogICAgLmF0dHItaW5wdXQtZ3JvdXAtbGcgaW5wdXRbdHlwZT10aW1lXSwKICAgIGlucHV0W3R5cGU9ZGF0ZV0uYXR0ci1pbnB1dC1sZywKICAgIGlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdLmF0dHItaW5wdXQtbGcsCiAgICBpbnB1dFt0eXBlPW1vbnRoXS5hdHRyLWlucHV0LWxnLAogICAgaW5wdXRbdHlwZT10aW1lXS5hdHRyLWlucHV0LWxnIHsKICAgICAgICBsaW5lLWhlaWdodDogNDZweAogICAgfQp9CgouYXR0ci1mb3JtLWdyb3VwIHsKICAgIG1hcmdpbi1ib3R0b206IDE1cHgKfQoKLmF0dHItY2hlY2tib3gsCi5hdHRyLXJhZGlvIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHgKfQoKLmF0dHItY2hlY2tib3ggbGFiZWwsCi5hdHRyLXJhZGlvIGxhYmVsIHsKICAgIG1pbi1oZWlnaHQ6IDIwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgouYXR0ci1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSwKLmF0dHItY2hlY2tib3gtaW5saW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdLAouYXR0ci1yYWRpbyBpbnB1dFt0eXBlPXJhZGlvXSwKLmF0dHItcmFkaW8taW5saW5lIGlucHV0W3R5cGU9cmFkaW9dIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIG1hcmdpbi1sZWZ0OiAtMjBweAp9CgouYXR0ci1jaGVja2JveCsuYXR0ci1jaGVja2JveCwKLmF0dHItcmFkaW8rLmF0dHItcmFkaW8gewogICAgbWFyZ2luLXRvcDogLTVweAp9CgouYXR0ci1jaGVja2JveC1pbmxpbmUsCi5hdHRyLXJhZGlvLWlubGluZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmF0dHItY2hlY2tib3gtaW5saW5lKy5hdHRyLWNoZWNrYm94LWlubGluZSwKLmF0dHItcmFkaW8taW5saW5lKy5hdHRyLXJhZGlvLWlubGluZSB7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWxlZnQ6IDEwcHgKfQoKZmllbGRzZXRbZGlzYWJsZWRdIGlucHV0W3R5cGU9Y2hlY2tib3hdLApmaWVsZHNldFtkaXNhYmxlZF0gaW5wdXRbdHlwZT1yYWRpb10sCmlucHV0W3R5cGU9Y2hlY2tib3hdLmF0dHItZGlzYWJsZWQsCmlucHV0W3R5cGU9Y2hlY2tib3hdW2Rpc2FibGVkXSwKaW5wdXRbdHlwZT1yYWRpb10uYXR0ci1kaXNhYmxlZCwKaW5wdXRbdHlwZT1yYWRpb11bZGlzYWJsZWRdIHsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQKfQoKLmF0dHItY2hlY2tib3gtaW5saW5lLmF0dHItZGlzYWJsZWQsCi5hdHRyLXJhZGlvLWlubGluZS5hdHRyLWRpc2FibGVkLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItY2hlY2tib3gtaW5saW5lLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItcmFkaW8taW5saW5lIHsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQKfQoKLmF0dHItY2hlY2tib3guYXR0ci1kaXNhYmxlZCBsYWJlbCwKLmF0dHItcmFkaW8uYXR0ci1kaXNhYmxlZCBsYWJlbCwKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWNoZWNrYm94IGxhYmVsLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItcmFkaW8gbGFiZWwgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZAp9CgouYXR0ci1mb3JtLWNvbnRyb2wtc3RhdGljIHsKICAgIG1pbi1oZWlnaHQ6IDM0cHg7CiAgICBwYWRkaW5nLXRvcDogN3B4OwogICAgcGFkZGluZy1ib3R0b206IDdweDsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmF0dHItZm9ybS1jb250cm9sLXN0YXRpYy5hdHRyLWlucHV0LWxnLAouYXR0ci1mb3JtLWNvbnRyb2wtc3RhdGljLmF0dHItaW5wdXQtc20gewogICAgcGFkZGluZy1yaWdodDogMDsKICAgIHBhZGRpbmctbGVmdDogMAp9CgouYXR0ci1pbnB1dC1zbSB7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICBwYWRkaW5nOiA1cHggMTBweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBib3JkZXItcmFkaXVzOiAzcHgKfQoKc2VsZWN0LmF0dHItaW5wdXQtc20gewogICAgaGVpZ2h0OiAzMHB4OwogICAgbGluZS1oZWlnaHQ6IDMwcHgKfQoKc2VsZWN0W211bHRpcGxlXS5hdHRyLWlucHV0LXNtLAp0ZXh0YXJlYS5hdHRyLWlucHV0LXNtIHsKICAgIGhlaWdodDogYXV0bwp9CgouYXR0ci1mb3JtLWdyb3VwLXNtIC5hdHRyLWZvcm0tY29udHJvbCB7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICBwYWRkaW5nOiA1cHggMTBweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBib3JkZXItcmFkaXVzOiAzcHgKfQoKLmF0dHItZm9ybS1ncm91cC1zbSBzZWxlY3QuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgaGVpZ2h0OiAzMHB4OwogICAgbGluZS1oZWlnaHQ6IDMwcHgKfQoKLmF0dHItZm9ybS1ncm91cC1zbSBzZWxlY3RbbXVsdGlwbGVdLmF0dHItZm9ybS1jb250cm9sLAouYXR0ci1mb3JtLWdyb3VwLXNtIHRleHRhcmVhLmF0dHItZm9ybS1jb250cm9sIHsKICAgIGhlaWdodDogYXV0bwp9CgouYXR0ci1mb3JtLWdyb3VwLXNtIC5hdHRyLWZvcm0tY29udHJvbC1zdGF0aWMgewogICAgaGVpZ2h0OiAzMHB4OwogICAgbWluLWhlaWdodDogMzJweDsKICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNQp9CgouYXR0ci1pbnB1dC1sZyB7CiAgICBoZWlnaHQ6IDQ2cHg7CiAgICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBsaW5lLWhlaWdodDogMS4zMzMzMzMzOwogICAgYm9yZGVyLXJhZGl1czogNnB4Cn0KCnNlbGVjdC5hdHRyLWlucHV0LWxnIHsKICAgIGhlaWdodDogNDZweDsKICAgIGxpbmUtaGVpZ2h0OiA0NnB4Cn0KCnNlbGVjdFttdWx0aXBsZV0uYXR0ci1pbnB1dC1sZywKdGV4dGFyZWEuYXR0ci1pbnB1dC1sZyB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLmF0dHItZm9ybS1ncm91cC1sZyAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgaGVpZ2h0OiA0NnB4OwogICAgcGFkZGluZzogMTBweCAxNnB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzMzMzMzMzsKICAgIGJvcmRlci1yYWRpdXM6IDZweAp9CgouYXR0ci1mb3JtLWdyb3VwLWxnIHNlbGVjdC5hdHRyLWZvcm0tY29udHJvbCB7CiAgICBoZWlnaHQ6IDQ2cHg7CiAgICBsaW5lLWhlaWdodDogNDZweAp9CgouYXR0ci1mb3JtLWdyb3VwLWxnIHNlbGVjdFttdWx0aXBsZV0uYXR0ci1mb3JtLWNvbnRyb2wsCi5hdHRyLWZvcm0tZ3JvdXAtbGcgdGV4dGFyZWEuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgaGVpZ2h0OiBhdXRvCn0KCi5hdHRyLWZvcm0tZ3JvdXAtbGcgLmF0dHItZm9ybS1jb250cm9sLXN0YXRpYyB7CiAgICBoZWlnaHQ6IDQ2cHg7CiAgICBtaW4taGVpZ2h0OiAzOHB4OwogICAgcGFkZGluZzogMTFweCAxNnB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzMzMzMzMwp9CgouYXR0ci1oYXMtZmVlZGJhY2sgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5hdHRyLWhhcy1mZWVkYmFjayAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgcGFkZGluZy1yaWdodDogNDIuNXB4Cn0KCi5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIHotaW5kZXg6IDI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAzNHB4OwogICAgaGVpZ2h0OiAzNHB4OwogICAgbGluZS1oZWlnaHQ6IDM0cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZQp9CgouYXR0ci1mb3JtLWdyb3VwLWxnIC5hdHRyLWZvcm0tY29udHJvbCsuYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2ssCi5hdHRyLWlucHV0LWdyb3VwLWxnKy5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjaywKLmF0dHItaW5wdXQtbGcrLmF0dHItZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgIHdpZHRoOiA0NnB4OwogICAgaGVpZ2h0OiA0NnB4OwogICAgbGluZS1oZWlnaHQ6IDQ2cHgKfQoKLmF0dHItZm9ybS1ncm91cC1zbSAuYXR0ci1mb3JtLWNvbnRyb2wrLmF0dHItZm9ybS1jb250cm9sLWZlZWRiYWNrLAouYXR0ci1pbnB1dC1ncm91cC1zbSsuYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2ssCi5hdHRyLWlucHV0LXNtKy5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICB3aWR0aDogMzBweDsKICAgIGhlaWdodDogMzBweDsKICAgIGxpbmUtaGVpZ2h0OiAzMHB4Cn0KCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLWNoZWNrYm94LAouYXR0ci1oYXMtc3VjY2VzcyAuYXR0ci1jaGVja2JveC1pbmxpbmUsCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLWNvbnRyb2wtbGFiZWwsCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLWhlbHAtYmxvY2ssCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLXJhZGlvLAouYXR0ci1oYXMtc3VjY2VzcyAuYXR0ci1yYWRpby1pbmxpbmUsCi5hdHRyLWhhcy1zdWNjZXNzLmF0dHItY2hlY2tib3ggbGFiZWwsCi5hdHRyLWhhcy1zdWNjZXNzLmF0dHItY2hlY2tib3gtaW5saW5lIGxhYmVsLAouYXR0ci1oYXMtc3VjY2Vzcy5hdHRyLXJhZGlvIGxhYmVsLAouYXR0ci1oYXMtc3VjY2Vzcy5hdHRyLXJhZGlvLWlubGluZSBsYWJlbCB7CiAgICBjb2xvcjogIzNjNzYzZAp9CgouYXR0ci1oYXMtc3VjY2VzcyAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgYm9yZGVyLWNvbG9yOiAjM2M3NjNkOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNzUpCn0KCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLWZvcm0tY29udHJvbDpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICMyYjU0MmM7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNzUpLCAwIDAgNnB4ICM2N2IxNjg7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KSwgMCAwIDZweCAjNjdiMTY4Cn0KCi5hdHRyLWhhcy1zdWNjZXNzIC5hdHRyLWlucHV0LWdyb3VwLWFkZG9uIHsKICAgIGNvbG9yOiAjM2M3NjNkOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKICAgIGJvcmRlci1jb2xvcjogIzNjNzYzZAp9CgouYXR0ci1oYXMtc3VjY2VzcyAuYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgY29sb3I6ICMzYzc2M2QKfQoKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItY2hlY2tib3gsCi5hdHRyLWhhcy13YXJuaW5nIC5hdHRyLWNoZWNrYm94LWlubGluZSwKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItY29udHJvbC1sYWJlbCwKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItaGVscC1ibG9jaywKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItcmFkaW8sCi5hdHRyLWhhcy13YXJuaW5nIC5hdHRyLXJhZGlvLWlubGluZSwKLmF0dHItaGFzLXdhcm5pbmcuYXR0ci1jaGVja2JveCBsYWJlbCwKLmF0dHItaGFzLXdhcm5pbmcuYXR0ci1jaGVja2JveC1pbmxpbmUgbGFiZWwsCi5hdHRyLWhhcy13YXJuaW5nLmF0dHItcmFkaW8gbGFiZWwsCi5hdHRyLWhhcy13YXJuaW5nLmF0dHItcmFkaW8taW5saW5lIGxhYmVsIHsKICAgIGNvbG9yOiAjOGE2ZDNiCn0KCi5hdHRyLWhhcy13YXJuaW5nIC5hdHRyLWZvcm0tY29udHJvbCB7CiAgICBib3JkZXItY29sb3I6ICM4YTZkM2I7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNzUpOwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA3NSkKfQoKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItZm9ybS1jb250cm9sOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogIzY2NTEyYzsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA3NSksIDAgMCA2cHggI2MwYTE2YjsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNzUpLCAwIDAgNnB4ICNjMGExNmIKfQoKLmF0dHItaGFzLXdhcm5pbmcgLmF0dHItaW5wdXQtZ3JvdXAtYWRkb24gewogICAgY29sb3I6ICM4YTZkM2I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwogICAgYm9yZGVyLWNvbG9yOiAjOGE2ZDNiCn0KCi5hdHRyLWhhcy13YXJuaW5nIC5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICBjb2xvcjogIzhhNmQzYgp9CgouYXR0ci1oYXMtZXJyb3IgLmF0dHItY2hlY2tib3gsCi5hdHRyLWhhcy1lcnJvciAuYXR0ci1jaGVja2JveC1pbmxpbmUsCi5hdHRyLWhhcy1lcnJvciAuYXR0ci1jb250cm9sLWxhYmVsLAouYXR0ci1oYXMtZXJyb3IgLmF0dHItaGVscC1ibG9jaywKLmF0dHItaGFzLWVycm9yIC5hdHRyLXJhZGlvLAouYXR0ci1oYXMtZXJyb3IgLmF0dHItcmFkaW8taW5saW5lLAouYXR0ci1oYXMtZXJyb3IuYXR0ci1jaGVja2JveCBsYWJlbCwKLmF0dHItaGFzLWVycm9yLmF0dHItY2hlY2tib3gtaW5saW5lIGxhYmVsLAouYXR0ci1oYXMtZXJyb3IuYXR0ci1yYWRpbyBsYWJlbCwKLmF0dHItaGFzLWVycm9yLmF0dHItcmFkaW8taW5saW5lIGxhYmVsIHsKICAgIGNvbG9yOiAjYTk0NDQyCn0KCi5hdHRyLWhhcy1lcnJvciAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgYm9yZGVyLWNvbG9yOiAjYTk0NDQyOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNzUpCn0KCi5hdHRyLWhhcy1lcnJvciAuYXR0ci1mb3JtLWNvbnRyb2w6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjODQzNTM0OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDc1KSwgMCAwIDZweCAjY2U4NDgzOwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA3NSksIDAgMCA2cHggI2NlODQ4Mwp9CgouYXR0ci1oYXMtZXJyb3IgLmF0dHItaW5wdXQtZ3JvdXAtYWRkb24gewogICAgY29sb3I6ICNhOTQ0NDI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJkZWRlOwogICAgYm9yZGVyLWNvbG9yOiAjYTk0NDQyCn0KCi5hdHRyLWhhcy1lcnJvciAuYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgY29sb3I6ICNhOTQ0NDIKfQoKLmF0dHItaGFzLWZlZWRiYWNrIGxhYmVsfi5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICB0b3A6IDI1cHgKfQoKLmF0dHItaGFzLWZlZWRiYWNrIGxhYmVsLmF0dHItc3Itb25seX4uYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgdG9wOiAwCn0KCi5hdHRyLWhlbHAtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgY29sb3I6ICM3MzczNzMKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWZvcm0tZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKICAgIH0KICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWZvcm0tY29udHJvbCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKICAgIH0KICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWZvcm0tY29udHJvbC1zdGF0aWMgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawogICAgfQogICAgLmF0dHItZm9ybS1pbmxpbmUgLmF0dHItaW5wdXQtZ3JvdXAgewogICAgICAgIGRpc3BsYXk6IGlubGluZS10YWJsZTsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCiAgICB9CiAgICAuYXR0ci1mb3JtLWlubGluZSAuYXR0ci1pbnB1dC1ncm91cCAuYXR0ci1mb3JtLWNvbnRyb2wsCiAgICAuYXR0ci1mb3JtLWlubGluZSAuYXR0ci1pbnB1dC1ncm91cCAuYXR0ci1pbnB1dC1ncm91cC1hZGRvbiwKICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWlucHV0LWdyb3VwIC5hdHRyLWlucHV0LWdyb3VwLWJ0biB7CiAgICAgICAgd2lkdGg6IGF1dG8KICAgIH0KICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWlucHV0LWdyb3VwPi5hdHRyLWZvcm0tY29udHJvbCB7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgIH0KICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWNvbnRyb2wtbGFiZWwgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQogICAgfQogICAgLmF0dHItZm9ybS1pbmxpbmUgLmF0dHItY2hlY2tib3gsCiAgICAuYXR0ci1mb3JtLWlubGluZSAuYXR0ci1yYWRpbyB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCiAgICB9CiAgICAuYXR0ci1mb3JtLWlubGluZSAuYXR0ci1jaGVja2JveCBsYWJlbCwKICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLXJhZGlvIGxhYmVsIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDAKICAgIH0KICAgIC5hdHRyLWZvcm0taW5saW5lIC5hdHRyLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdLAogICAgLmF0dHItZm9ybS1pbmxpbmUgLmF0dHItcmFkaW8gaW5wdXRbdHlwZT1yYWRpb10gewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW4tbGVmdDogMAogICAgfQogICAgLmF0dHItZm9ybS1pbmxpbmUgLmF0dHItaGFzLWZlZWRiYWNrIC5hdHRyLWZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICAgICAgdG9wOiAwCiAgICB9Cn0KCi5hdHRyLWZvcm0taG9yaXpvbnRhbCAuYXR0ci1jaGVja2JveCwKLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLWNoZWNrYm94LWlubGluZSwKLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLXJhZGlvLAouYXR0ci1mb3JtLWhvcml6b250YWwgLmF0dHItcmFkaW8taW5saW5lIHsKICAgIHBhZGRpbmctdG9wOiA3cHg7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMAp9CgouYXR0ci1mb3JtLWhvcml6b250YWwgLmF0dHItY2hlY2tib3gsCi5hdHRyLWZvcm0taG9yaXpvbnRhbCAuYXR0ci1yYWRpbyB7CiAgICBtaW4taGVpZ2h0OiAyN3B4Cn0KCi5hdHRyLWZvcm0taG9yaXpvbnRhbCAuYXR0ci1mb3JtLWdyb3VwIHsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgICBtYXJnaW4tbGVmdDogLTE1cHgKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLWZvcm0taG9yaXpvbnRhbCAuYXR0ci1jb250cm9sLWxhYmVsIHsKICAgICAgICBwYWRkaW5nLXRvcDogN3B4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgIH0KfQoKLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLWhhcy1mZWVkYmFjayAuYXR0ci1mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgcmlnaHQ6IDE1cHgKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLWZvcm0taG9yaXpvbnRhbCAuYXR0ci1mb3JtLWdyb3VwLWxnIC5hdHRyLWNvbnRyb2wtbGFiZWwgewogICAgICAgIHBhZGRpbmctdG9wOiAxMXB4OwogICAgICAgIGZvbnQtc2l6ZTogMThweAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLWZvcm0tZ3JvdXAtc20gLmF0dHItY29udHJvbC1sYWJlbCB7CiAgICAgICAgcGFkZGluZy10b3A6IDZweDsKICAgICAgICBmb250LXNpemU6IDEycHgKICAgIH0KfQoKLmF0dHItYnRuIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgLW1zLXRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOwogICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1czogNHB4Cn0KCi5hdHRyLWJ0bi5hdHRyLWFjdGl2ZS5hdHRyLWZvY3VzLAouYXR0ci1idG4uYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi5hdHRyLWZvY3VzLAouYXR0ci1idG46YWN0aXZlLmF0dHItZm9jdXMsCi5hdHRyLWJ0bjphY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bjpmb2N1cyB7CiAgICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7CiAgICBvdXRsaW5lLW9mZnNldDogLTJweAp9CgouYXR0ci1idG4uYXR0ci1mb2N1cywKLmF0dHItYnRuOmZvY3VzLAouYXR0ci1idG46aG92ZXIgewogICAgY29sb3I6ICMzMzM7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUKfQoKLmF0dHItYnRuLmF0dHItYWN0aXZlLAouYXR0ci1idG46YWN0aXZlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICBvdXRsaW5lOiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAuMTI1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIC4xMjUpCn0KCi5hdHRyLWJ0bi5hdHRyLWRpc2FibGVkLAouYXR0ci1idG5bZGlzYWJsZWRdLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuIHsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogICAgb3BhY2l0eTogLjY1Cn0KCmEuYXR0ci1idG4uYXR0ci1kaXNhYmxlZCwKZmllbGRzZXRbZGlzYWJsZWRdIGEuYXR0ci1idG4gewogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLmF0dHItYnRuLWRlZmF1bHQgewogICAgY29sb3I6ICMzMzM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiAjY2NjCn0KCi5hdHRyLWJ0bi1kZWZhdWx0LmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1kZWZhdWx0OmZvY3VzIHsKICAgIGNvbG9yOiAjMzMzOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsKICAgIGJvcmRlci1jb2xvcjogIzhjOGM4Ywp9CgouYXR0ci1idG4tZGVmYXVsdDpob3ZlciB7CiAgICBjb2xvcjogIzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7CiAgICBib3JkZXItY29sb3I6ICNhZGFkYWQKfQoKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGVmYXVsdCB7CiAgICBjb2xvcjogIzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7CiAgICBib3JkZXItY29sb3I6ICNhZGFkYWQKfQoKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1hY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi1kZWZhdWx0LmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci1idG4tZGVmYXVsdDphY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLWRlZmF1bHQ6YWN0aXZlOmZvY3VzLAouYXR0ci1idG4tZGVmYXVsdDphY3RpdmU6aG92ZXIsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1mb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGVmYXVsdDpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGVmYXVsdDpob3ZlciB7CiAgICBjb2xvcjogIzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkNGQ0ZDQ7CiAgICBib3JkZXItY29sb3I6ICM4YzhjOGMKfQoKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGVmYXVsdCB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5hdHRyLWJ0bi1kZWZhdWx0LmF0dHItZGlzYWJsZWQuYXR0ci1mb2N1cywKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1kaXNhYmxlZDpob3ZlciwKLmF0dHItYnRuLWRlZmF1bHRbZGlzYWJsZWRdLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1kZWZhdWx0W2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLWRlZmF1bHRbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWRlZmF1bHQuYXR0ci1mb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi1kZWZhdWx0OmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWRlZmF1bHQ6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlci1jb2xvcjogI2NjYwp9CgouYXR0ci1idG4tZGVmYXVsdCAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzMKfQoKLmF0dHItYnRuLXByaW1hcnkgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM3YWI3OwogICAgYm9yZGVyLWNvbG9yOiAjMmU2ZGE0Cn0KCi5hdHRyLWJ0bi1wcmltYXJ5LmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1wcmltYXJ5OmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzI4NjA5MDsKICAgIGJvcmRlci1jb2xvcjogIzEyMmI0MAp9CgouYXR0ci1idG4tcHJpbWFyeTpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyODYwOTA7CiAgICBib3JkZXItY29sb3I6ICMyMDRkNzQKfQoKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tcHJpbWFyeSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyODYwOTA7CiAgICBib3JkZXItY29sb3I6ICMyMDRkNzQKfQoKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1hY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi1wcmltYXJ5LmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci1idG4tcHJpbWFyeTphY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXByaW1hcnk6YWN0aXZlOmZvY3VzLAouYXR0ci1idG4tcHJpbWFyeTphY3RpdmU6aG92ZXIsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLXByaW1hcnkuYXR0ci1mb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tcHJpbWFyeTpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tcHJpbWFyeTpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyMDRkNzQ7CiAgICBib3JkZXItY29sb3I6ICMxMjJiNDAKfQoKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tcHJpbWFyeSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5hdHRyLWJ0bi1wcmltYXJ5LmF0dHItZGlzYWJsZWQuYXR0ci1mb2N1cywKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLXByaW1hcnkuYXR0ci1kaXNhYmxlZDpob3ZlciwKLmF0dHItYnRuLXByaW1hcnlbZGlzYWJsZWRdLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1wcmltYXJ5W2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLXByaW1hcnlbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXByaW1hcnkuYXR0ci1mb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi1wcmltYXJ5OmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXByaW1hcnk6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzN2FiNzsKICAgIGJvcmRlci1jb2xvcjogIzJlNmRhNAp9CgouYXR0ci1idG4tcHJpbWFyeSAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogIzMzN2FiNzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKLmF0dHItYnRuLXN1Y2Nlc3MgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNiODVjOwogICAgYm9yZGVyLWNvbG9yOiAjNGNhZTRjCn0KCi5hdHRyLWJ0bi1zdWNjZXNzLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1zdWNjZXNzOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzQ0OWQ0NDsKICAgIGJvcmRlci1jb2xvcjogIzI1NTYyNQp9CgouYXR0ci1idG4tc3VjY2Vzczpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0NDlkNDQ7CiAgICBib3JkZXItY29sb3I6ICMzOTg0MzkKfQoKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1zdWNjZXNzOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tc3VjY2VzcyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0NDlkNDQ7CiAgICBib3JkZXItY29sb3I6ICMzOTg0MzkKfQoKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1hY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi1zdWNjZXNzLmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci1idG4tc3VjY2VzczphY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXN1Y2Nlc3M6YWN0aXZlOmZvY3VzLAouYXR0ci1idG4tc3VjY2VzczphY3RpdmU6aG92ZXIsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1mb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tc3VjY2Vzczpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tc3VjY2Vzczpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzOTg0Mzk7CiAgICBib3JkZXItY29sb3I6ICMyNTU2MjUKfQoKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1zdWNjZXNzOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tc3VjY2VzcyB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5hdHRyLWJ0bi1zdWNjZXNzLmF0dHItZGlzYWJsZWQuYXR0ci1mb2N1cywKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1kaXNhYmxlZDpob3ZlciwKLmF0dHItYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1zdWNjZXNzW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXN1Y2Nlc3MuYXR0ci1mb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi1zdWNjZXNzOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXN1Y2Nlc3M6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1YzsKICAgIGJvcmRlci1jb2xvcjogIzRjYWU0Ywp9CgouYXR0ci1idG4tc3VjY2VzcyAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogIzVjYjg1YzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKLmF0dHItYnRuLWluZm8gewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlOwogICAgYm9yZGVyLWNvbG9yOiAjNDZiOGRhCn0KCi5hdHRyLWJ0bi1pbmZvLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1pbmZvOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMxYjBkNTsKICAgIGJvcmRlci1jb2xvcjogIzFiNmQ4NQp9CgouYXR0ci1idG4taW5mbzpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMWIwZDU7CiAgICBib3JkZXItY29sb3I6ICMyNjlhYmMKfQoKLmF0dHItYnRuLWluZm8uYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1pbmZvOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4taW5mbyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMWIwZDU7CiAgICBib3JkZXItY29sb3I6ICMyNjlhYmMKfQoKLmF0dHItYnRuLWluZm8uYXR0ci1hY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLWluZm8uYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi1pbmZvLmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci1idG4taW5mbzphY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLWluZm86YWN0aXZlOmZvY3VzLAouYXR0ci1idG4taW5mbzphY3RpdmU6aG92ZXIsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLWluZm8uYXR0ci1mb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4taW5mbzpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4taW5mbzpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyNjlhYmM7CiAgICBib3JkZXItY29sb3I6ICMxYjZkODUKfQoKLmF0dHItYnRuLWluZm8uYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1pbmZvOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4taW5mbyB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5hdHRyLWJ0bi1pbmZvLmF0dHItZGlzYWJsZWQuYXR0ci1mb2N1cywKLmF0dHItYnRuLWluZm8uYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLWluZm8uYXR0ci1kaXNhYmxlZDpob3ZlciwKLmF0dHItYnRuLWluZm9bZGlzYWJsZWRdLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1pbmZvW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLWluZm9bZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWluZm8uYXR0ci1mb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi1pbmZvOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWluZm86aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTsKICAgIGJvcmRlci1jb2xvcjogIzQ2YjhkYQp9CgouYXR0ci1idG4taW5mbyAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogIzViYzBkZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKLmF0dHItYnRuLXdhcm5pbmcgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlOwogICAgYm9yZGVyLWNvbG9yOiAjZWVhMjM2Cn0KCi5hdHRyLWJ0bi13YXJuaW5nLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi13YXJuaW5nOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VjOTcxZjsKICAgIGJvcmRlci1jb2xvcjogIzk4NWYwZAp9CgouYXR0ci1idG4td2FybmluZzpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYzk3MWY7CiAgICBib3JkZXItY29sb3I6ICNkNTg1MTIKfQoKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi13YXJuaW5nOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4td2FybmluZyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlYzk3MWY7CiAgICBib3JkZXItY29sb3I6ICNkNTg1MTIKfQoKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1hY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi13YXJuaW5nLmF0dHItYWN0aXZlOmhvdmVyLAouYXR0ci1idG4td2FybmluZzphY3RpdmUuYXR0ci1mb2N1cywKLmF0dHItYnRuLXdhcm5pbmc6YWN0aXZlOmZvY3VzLAouYXR0ci1idG4td2FybmluZzphY3RpdmU6aG92ZXIsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1mb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4td2FybmluZzpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4td2FybmluZzpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkNTg1MTI7CiAgICBib3JkZXItY29sb3I6ICM5ODVmMGQKfQoKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi13YXJuaW5nOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4td2FybmluZyB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lCn0KCi5hdHRyLWJ0bi13YXJuaW5nLmF0dHItZGlzYWJsZWQuYXR0ci1mb2N1cywKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1kaXNhYmxlZDpob3ZlciwKLmF0dHItYnRuLXdhcm5pbmdbZGlzYWJsZWRdLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi13YXJuaW5nW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXdhcm5pbmcuYXR0ci1mb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi13YXJuaW5nOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLXdhcm5pbmc6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2YwYWQ0ZTsKICAgIGJvcmRlci1jb2xvcjogI2VlYTIzNgp9CgouYXR0ci1idG4td2FybmluZyAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogI2YwYWQ0ZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYKfQoKLmF0dHItYnRuLWRhbmdlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOTUzNGY7CiAgICBib3JkZXItY29sb3I6ICNkNDNmM2EKfQoKLmF0dHItYnRuLWRhbmdlci5hdHRyLWZvY3VzLAouYXR0ci1idG4tZGFuZ2VyOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2M5MzAyYzsKICAgIGJvcmRlci1jb2xvcjogIzc2MWMxOQp9CgouYXR0ci1idG4tZGFuZ2VyOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2M5MzAyYzsKICAgIGJvcmRlci1jb2xvcjogI2FjMjkyNQp9CgouYXR0ci1idG4tZGFuZ2VyLmF0dHItYWN0aXZlLAouYXR0ci1idG4tZGFuZ2VyOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGFuZ2VyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2M5MzAyYzsKICAgIGJvcmRlci1jb2xvcjogI2FjMjkyNQp9CgouYXR0ci1idG4tZGFuZ2VyLmF0dHItYWN0aXZlLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1kYW5nZXIuYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWJ0bi1kYW5nZXIuYXR0ci1hY3RpdmU6aG92ZXIsCi5hdHRyLWJ0bi1kYW5nZXI6YWN0aXZlLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1kYW5nZXI6YWN0aXZlOmZvY3VzLAouYXR0ci1idG4tZGFuZ2VyOmFjdGl2ZTpob3ZlciwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGFuZ2VyLmF0dHItZm9jdXMsCi5hdHRyLW9wZW4+LmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLWRhbmdlcjpmb2N1cywKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGFuZ2VyOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2FjMjkyNTsKICAgIGJvcmRlci1jb2xvcjogIzc2MWMxOQp9CgouYXR0ci1idG4tZGFuZ2VyLmF0dHItYWN0aXZlLAouYXR0ci1idG4tZGFuZ2VyOmFjdGl2ZSwKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi10b2dnbGUuYXR0ci1idG4tZGFuZ2VyIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUKfQoKLmF0dHItYnRuLWRhbmdlci5hdHRyLWRpc2FibGVkLmF0dHItZm9jdXMsCi5hdHRyLWJ0bi1kYW5nZXIuYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItYnRuLWRhbmdlci5hdHRyLWRpc2FibGVkOmhvdmVyLAouYXR0ci1idG4tZGFuZ2VyW2Rpc2FibGVkXS5hdHRyLWZvY3VzLAouYXR0ci1idG4tZGFuZ2VyW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLWRhbmdlcltkaXNhYmxlZF06aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYXR0ci1idG4tZGFuZ2VyLmF0dHItZm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYXR0ci1idG4tZGFuZ2VyOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWRhbmdlcjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmOwogICAgYm9yZGVyLWNvbG9yOiAjZDQzZjNhCn0KCi5hdHRyLWJ0bi1kYW5nZXIgLmF0dHItYmFkZ2UgewogICAgY29sb3I6ICNkOTUzNGY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5hdHRyLWJ0bi1saW5rIHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBjb2xvcjogIzMzN2FiNzsKICAgIGJvcmRlci1yYWRpdXM6IDAKfQoKLmF0dHItYnRuLWxpbmssCi5hdHRyLWJ0bi1saW5rLmF0dHItYWN0aXZlLAouYXR0ci1idG4tbGluazphY3RpdmUsCi5hdHRyLWJ0bi1saW5rW2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLWJ0bi1saW5rIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZQp9CgouYXR0ci1idG4tbGluaywKLmF0dHItYnRuLWxpbms6YWN0aXZlLAouYXR0ci1idG4tbGluazpmb2N1cywKLmF0dHItYnRuLWxpbms6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouYXR0ci1idG4tbGluazpmb2N1cywKLmF0dHItYnRuLWxpbms6aG92ZXIgewogICAgY29sb3I6ICMyMzUyN2M7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5hdHRyLWJ0bi1saW5rW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItYnRuLWxpbmtbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItYnRuLWxpbms6Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYXR0ci1idG4tbGluazpob3ZlciB7CiAgICBjb2xvcjogIzc3NzsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZQp9CgouYXR0ci1idG4tZ3JvdXAtbGc+LmF0dHItYnRuLAouYXR0ci1idG4tbGcgewogICAgcGFkZGluZzogMTBweCAxNnB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzMzMzMzMzsKICAgIGJvcmRlci1yYWRpdXM6IDZweAp9CgouYXR0ci1idG4tZ3JvdXAtc20+LmF0dHItYnRuLAouYXR0ci1idG4tc20gewogICAgcGFkZGluZzogNXB4IDEwcHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgYm9yZGVyLXJhZGl1czogM3B4Cn0KCi5hdHRyLWJ0bi1ncm91cC14cz4uYXR0ci1idG4sCi5hdHRyLWJ0bi14cyB7CiAgICBwYWRkaW5nOiAxcHggNXB4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgIGJvcmRlci1yYWRpdXM6IDNweAp9CgouYXR0ci1idG4tYmxvY2sgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJQp9CgouYXR0ci1idG4tYmxvY2srLmF0dHItYnRuLWJsb2NrIHsKICAgIG1hcmdpbi10b3A6IDVweAp9CgppbnB1dFt0eXBlPWJ1dHRvbl0uYXR0ci1idG4tYmxvY2ssCmlucHV0W3R5cGU9cmVzZXRdLmF0dHItYnRuLWJsb2NrLAppbnB1dFt0eXBlPXN1Ym1pdF0uYXR0ci1idG4tYmxvY2sgewogICAgd2lkdGg6IDEwMCUKfQoKLmF0dHItZmFkZSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXMgbGluZWFyOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzIGxpbmVhcgp9CgouYXR0ci1mYWRlLmF0dHItaW4gewogICAgb3BhY2l0eTogMQp9CgouYXR0ci1jb2xsYXBzZSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5hdHRyLWNvbGxhcHNlLmF0dHItaW4gewogICAgZGlzcGxheTogYmxvY2sKfQoKdHIuYXR0ci1jb2xsYXBzZS5hdHRyLWluIHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdwp9Cgp0Ym9keS5hdHRyLWNvbGxhcHNlLmF0dHItaW4gewogICAgZGlzcGxheTogdGFibGUtcm93LWdyb3VwCn0KCi5hdHRyLWNvbGxhcHNpbmcgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgaGVpZ2h0OiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7CiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogLjM1czsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC4zNXM7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGhlaWdodCwgdmlzaWJpbGl0eTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGhlaWdodCwgdmlzaWJpbGl0eQp9CgouYXR0ci1jYXJldCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgYm9yZGVyLXRvcDogNHB4IGRhc2hlZDsKICAgIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudAp9CgouYXR0ci1kcm9wZG93biwKLmF0dHItZHJvcHVwIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZQp9CgouYXR0ci1kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogICAgb3V0bGluZTogMAp9CgouYXR0ci1kcm9wZG93bi1tZW51IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMTAwJTsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxMDAwOwogICAgZGlzcGxheTogbm9uZTsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWluLXdpZHRoOiAxNjBweDsKICAgIHBhZGRpbmc6IDVweCAwOwogICAgbWFyZ2luOiAycHggMCAwOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4xNSk7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNnB4IDEycHggcmdiYSgwLCAwLCAwLCAuMTc1KTsKICAgIGJveC1zaGFkb3c6IDAgNnB4IDEycHggcmdiYSgwLCAwLCAwLCAuMTc1KQp9CgouYXR0ci1kcm9wZG93bi1tZW51LmF0dHItcHVsbC1yaWdodCB7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IGF1dG8KfQoKLmF0dHItZHJvcGRvd24tbWVudSAuYXR0ci1kaXZpZGVyIHsKICAgIGhlaWdodDogMXB4OwogICAgbWFyZ2luOiA5cHggMDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlNWU1Cn0KCi5hdHRyLWRyb3Bkb3duLW1lbnU+bGk+YSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDNweCAyMHB4OwogICAgY2xlYXI6IGJvdGg7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgICBjb2xvcjogIzMzMzsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXAKfQoKLmF0dHItZHJvcGRvd24tbWVudT5saT5hOmZvY3VzLAouYXR0ci1kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIgewogICAgY29sb3I6ICMyNjI2MjY7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Cn0KCi5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItYWN0aXZlPmEsCi5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM3YWI3OwogICAgb3V0bGluZTogMAp9CgouYXR0ci1kcm9wZG93bi1tZW51Pi5hdHRyLWRpc2FibGVkPmEsCi5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItZGlzYWJsZWQ+YTpmb2N1cywKLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1kaXNhYmxlZD5hOmhvdmVyIHsKICAgIGNvbG9yOiAjNzc3Cn0KCi5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItZGlzYWJsZWQ+YTpmb2N1cywKLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1kaXNhYmxlZD5hOmhvdmVyIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUKfQoKLmF0dHItb3Blbj4uYXR0ci1kcm9wZG93bi1tZW51IHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5hdHRyLW9wZW4+YSB7CiAgICBvdXRsaW5lOiAwCn0KCi5hdHRyLWRyb3Bkb3duLW1lbnUtcmlnaHQgewogICAgcmlnaHQ6IDA7CiAgICBsZWZ0OiBhdXRvCn0KCi5hdHRyLWRyb3Bkb3duLW1lbnUtbGVmdCB7CiAgICByaWdodDogYXV0bzsKICAgIGxlZnQ6IDAKfQoKLmF0dHItZHJvcGRvd24taGVhZGVyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogM3B4IDIwcHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIGNvbG9yOiAjNzc3OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcAp9CgouYXR0ci1kcm9wZG93bi1iYWNrZHJvcCB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiA5OTAKfQoKLmF0dHItcHVsbC1yaWdodD4uYXR0ci1kcm9wZG93bi1tZW51IHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bwp9CgouYXR0ci1kcm9wdXAgLmF0dHItY2FyZXQsCi5hdHRyLW5hdmJhci1maXhlZC1ib3R0b20gLmF0dHItZHJvcGRvd24gLmF0dHItY2FyZXQgewogICAgY29udGVudDogIiI7CiAgICBib3JkZXItdG9wOiAwOwogICAgYm9yZGVyLWJvdHRvbTogNHB4IGRhc2hlZAp9CgouYXR0ci1kcm9wdXAgLmF0dHItZHJvcGRvd24tbWVudSwKLmF0dHItbmF2YmFyLWZpeGVkLWJvdHRvbSAuYXR0ci1kcm9wZG93biAuYXR0ci1kcm9wZG93bi1tZW51IHsKICAgIHRvcDogYXV0bzsKICAgIGJvdHRvbTogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IDJweAp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2YmFyLXJpZ2h0IC5hdHRyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGxlZnQ6IGF1dG8KICAgIH0KICAgIC5hdHRyLW5hdmJhci1yaWdodCAuYXR0ci1kcm9wZG93bi1tZW51LWxlZnQgewogICAgICAgIHJpZ2h0OiBhdXRvOwogICAgICAgIGxlZnQ6IDAKICAgIH0KfQoKLmF0dHItYnRuLWdyb3VwLAouYXR0ci1idG4tZ3JvdXAtdmVydGljYWwgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuLAouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZsb2F0OiBsZWZ0Cn0KCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4uYXR0ci1hY3RpdmUsCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG46YWN0aXZlLAouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuOmZvY3VzLAouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuOmhvdmVyLAouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuLmF0dHItYWN0aXZlLAouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuOmFjdGl2ZSwKLmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0bjpmb2N1cywKLmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0bjpob3ZlciB7CiAgICB6LWluZGV4OiAyCn0KCi5hdHRyLWJ0bi1ncm91cCAuYXR0ci1idG4rLmF0dHItYnRuLAouYXR0ci1idG4tZ3JvdXAgLmF0dHItYnRuKy5hdHRyLWJ0bi1ncm91cCwKLmF0dHItYnRuLWdyb3VwIC5hdHRyLWJ0bi1ncm91cCsuYXR0ci1idG4sCi5hdHRyLWJ0bi1ncm91cCAuYXR0ci1idG4tZ3JvdXArLmF0dHItYnRuLWdyb3VwIHsKICAgIG1hcmdpbi1sZWZ0OiAtMXB4Cn0KCi5hdHRyLWJ0bi10b29sYmFyIHsKICAgIG1hcmdpbi1sZWZ0OiAtNXB4Cn0KCi5hdHRyLWJ0bi10b29sYmFyIC5hdHRyLWJ0biwKLmF0dHItYnRuLXRvb2xiYXIgLmF0dHItYnRuLWdyb3VwLAouYXR0ci1idG4tdG9vbGJhciAuYXR0ci1pbnB1dC1ncm91cCB7CiAgICBmbG9hdDogbGVmdAp9CgouYXR0ci1idG4tdG9vbGJhcj4uYXR0ci1idG4sCi5hdHRyLWJ0bi10b29sYmFyPi5hdHRyLWJ0bi1ncm91cCwKLmF0dHItYnRuLXRvb2xiYXI+LmF0dHItaW5wdXQtZ3JvdXAgewogICAgbWFyZ2luLWxlZnQ6IDVweAp9CgouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5hdHRyLWRyb3Bkb3duLXRvZ2dsZSkgewogICAgYm9yZGVyLXJhZGl1czogMAp9CgouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuOmZpcnN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAwCn0KCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG46Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKTpub3QoLmF0dHItZHJvcGRvd24tdG9nZ2xlKSB7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwCn0KCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG46bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSwKLmF0dHItYnRuLWdyb3VwPi5hdHRyLWRyb3Bkb3duLXRvZ2dsZTpub3QoOmZpcnN0LWNoaWxkKSB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMAp9CgouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuLWdyb3VwIHsKICAgIGZsb2F0OiBsZWZ0Cn0KCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKT4uYXR0ci1idG4gewogICAgYm9yZGVyLXJhZGl1czogMAp9CgouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuLWdyb3VwOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCk+LmF0dHItYnRuOmxhc3QtY2hpbGQsCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKT4uYXR0ci1kcm9wZG93bi10b2dnbGUgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMAp9CgouYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuLWdyb3VwOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCk+LmF0dHItYnRuOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwCn0KCi5hdHRyLWJ0bi1ncm91cCAuYXR0ci1kcm9wZG93bi10b2dnbGU6YWN0aXZlLAouYXR0ci1idG4tZ3JvdXAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLXRvZ2dsZSB7CiAgICBvdXRsaW5lOiAwCn0KCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG4rLmF0dHItZHJvcGRvd24tdG9nZ2xlIHsKICAgIHBhZGRpbmctcmlnaHQ6IDhweDsKICAgIHBhZGRpbmctbGVmdDogOHB4Cn0KCi5hdHRyLWJ0bi1ncm91cD4uYXR0ci1idG4tbGcrLmF0dHItZHJvcGRvd24tdG9nZ2xlIHsKICAgIHBhZGRpbmctcmlnaHQ6IDEycHg7CiAgICBwYWRkaW5nLWxlZnQ6IDEycHgKfQoKLmF0dHItYnRuLWdyb3VwLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi10b2dnbGUgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAuMTI1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIC4xMjUpCn0KCi5hdHRyLWJ0bi1ncm91cC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tdG9nZ2xlLmF0dHItYnRuLWxpbmsgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZQp9CgouYXR0ci1idG4gLmF0dHItY2FyZXQgewogICAgbWFyZ2luLWxlZnQ6IDAKfQoKLmF0dHItYnRuLWxnIC5hdHRyLWNhcmV0IHsKICAgIGJvcmRlci13aWR0aDogNXB4IDVweCAwOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMAp9CgouYXR0ci1kcm9wdXAgLmF0dHItYnRuLWxnIC5hdHRyLWNhcmV0IHsKICAgIGJvcmRlci13aWR0aDogMCA1cHggNXB4Cn0KCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4sCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4tZ3JvdXAsCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IG5vbmU7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJQp9CgouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0biB7CiAgICBmbG9hdDogbm9uZQp9CgouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuKy5hdHRyLWJ0biwKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bisuYXR0ci1idG4tZ3JvdXAsCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4tZ3JvdXArLmF0dHItYnRuLAouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuLWdyb3VwKy5hdHRyLWJ0bi1ncm91cCB7CiAgICBtYXJnaW4tdG9wOiAtMXB4OwogICAgbWFyZ2luLWxlZnQ6IDAKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci1yYWRpdXM6IDAKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHgKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpPi5hdHRyLWJ0biB7CiAgICBib3JkZXItcmFkaXVzOiAwCn0KCi5hdHRyLWJ0bi1ncm91cC12ZXJ0aWNhbD4uYXR0ci1idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKT4uYXR0ci1idG46bGFzdC1jaGlsZCwKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bi1ncm91cDpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpPi5hdHRyLWRyb3Bkb3duLXRvZ2dsZSB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpPi5hdHRyLWJ0bjpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAKfQoKLmF0dHItYnRuLWdyb3VwLWp1c3RpZmllZCB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICAgIHdpZHRoOiAxMDAlOwogICAgdGFibGUtbGF5b3V0OiBmaXhlZDsKICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUKfQoKLmF0dHItYnRuLWdyb3VwLWp1c3RpZmllZD4uYXR0ci1idG4sCi5hdHRyLWJ0bi1ncm91cC1qdXN0aWZpZWQ+LmF0dHItYnRuLWdyb3VwIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICBmbG9hdDogbm9uZTsKICAgIHdpZHRoOiAxJQp9CgouYXR0ci1idG4tZ3JvdXAtanVzdGlmaWVkPi5hdHRyLWJ0bi1ncm91cCAuYXR0ci1idG4gewogICAgd2lkdGg6IDEwMCUKfQoKLmF0dHItYnRuLWdyb3VwLWp1c3RpZmllZD4uYXR0ci1idG4tZ3JvdXAgLmF0dHItZHJvcGRvd24tbWVudSB7CiAgICBsZWZ0OiBhdXRvCn0KCltkYXRhLXRvZ2dsZT1idXR0b25zXT4uYXR0ci1idG4gaW5wdXRbdHlwZT1jaGVja2JveF0sCltkYXRhLXRvZ2dsZT1idXR0b25zXT4uYXR0ci1idG4gaW5wdXRbdHlwZT1yYWRpb10sCltkYXRhLXRvZ2dsZT1idXR0b25zXT4uYXR0ci1idG4tZ3JvdXA+LmF0dHItYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdLApbZGF0YS10b2dnbGU9YnV0dG9uc10+LmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0biBpbnB1dFt0eXBlPXJhZGlvXSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmUKfQoKLmF0dHItaW5wdXQtZ3JvdXAgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogdGFibGU7CiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlCn0KCi5hdHRyLWlucHV0LWdyb3VwW2NsYXNzKj1hdHRyLWNvbC1dIHsKICAgIGZsb2F0OiBub25lOwogICAgcGFkZGluZy1yaWdodDogMDsKICAgIHBhZGRpbmctbGVmdDogMAp9CgouYXR0ci1pbnB1dC1ncm91cCAuYXR0ci1mb3JtLWNvbnRyb2wgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMjsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDEwMCU7CiAgICBtYXJnaW4tYm90dG9tOiAwCn0KCi5hdHRyLWlucHV0LWdyb3VwIC5hdHRyLWZvcm0tY29udHJvbDpmb2N1cyB7CiAgICB6LWluZGV4OiAzCn0KCi5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWZvcm0tY29udHJvbCwKLmF0dHItaW5wdXQtZ3JvdXAtbGc+LmF0dHItaW5wdXQtZ3JvdXAtYWRkb24sCi5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG4gewogICAgaGVpZ2h0OiA0NnB4OwogICAgcGFkZGluZzogMTBweCAxNnB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzMzMzMzMzsKICAgIGJvcmRlci1yYWRpdXM6IDZweAp9CgpzZWxlY3QuYXR0ci1pbnB1dC1ncm91cC1sZz4uYXR0ci1mb3JtLWNvbnRyb2wsCnNlbGVjdC5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uLApzZWxlY3QuYXR0ci1pbnB1dC1ncm91cC1sZz4uYXR0ci1pbnB1dC1ncm91cC1idG4+LmF0dHItYnRuIHsKICAgIGhlaWdodDogNDZweDsKICAgIGxpbmUtaGVpZ2h0OiA0NnB4Cn0KCnNlbGVjdFttdWx0aXBsZV0uYXR0ci1pbnB1dC1ncm91cC1sZz4uYXR0ci1mb3JtLWNvbnRyb2wsCnNlbGVjdFttdWx0aXBsZV0uYXR0ci1pbnB1dC1ncm91cC1sZz4uYXR0ci1pbnB1dC1ncm91cC1hZGRvbiwKc2VsZWN0W211bHRpcGxlXS5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG4sCnRleHRhcmVhLmF0dHItaW5wdXQtZ3JvdXAtbGc+LmF0dHItZm9ybS1jb250cm9sLAp0ZXh0YXJlYS5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uLAp0ZXh0YXJlYS5hdHRyLWlucHV0LWdyb3VwLWxnPi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG4gewogICAgaGVpZ2h0OiBhdXRvCn0KCi5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWZvcm0tY29udHJvbCwKLmF0dHItaW5wdXQtZ3JvdXAtc20+LmF0dHItaW5wdXQtZ3JvdXAtYWRkb24sCi5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG4gewogICAgaGVpZ2h0OiAzMHB4OwogICAgcGFkZGluZzogNXB4IDEwcHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgYm9yZGVyLXJhZGl1czogM3B4Cn0KCnNlbGVjdC5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWZvcm0tY29udHJvbCwKc2VsZWN0LmF0dHItaW5wdXQtZ3JvdXAtc20+LmF0dHItaW5wdXQtZ3JvdXAtYWRkb24sCnNlbGVjdC5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG4gewogICAgaGVpZ2h0OiAzMHB4OwogICAgbGluZS1oZWlnaHQ6IDMwcHgKfQoKc2VsZWN0W211bHRpcGxlXS5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWZvcm0tY29udHJvbCwKc2VsZWN0W211bHRpcGxlXS5hdHRyLWlucHV0LWdyb3VwLXNtPi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uLApzZWxlY3RbbXVsdGlwbGVdLmF0dHItaW5wdXQtZ3JvdXAtc20+LmF0dHItaW5wdXQtZ3JvdXAtYnRuPi5hdHRyLWJ0biwKdGV4dGFyZWEuYXR0ci1pbnB1dC1ncm91cC1zbT4uYXR0ci1mb3JtLWNvbnRyb2wsCnRleHRhcmVhLmF0dHItaW5wdXQtZ3JvdXAtc20+LmF0dHItaW5wdXQtZ3JvdXAtYWRkb24sCnRleHRhcmVhLmF0dHItaW5wdXQtZ3JvdXAtc20+LmF0dHItaW5wdXQtZ3JvdXAtYnRuPi5hdHRyLWJ0biB7CiAgICBoZWlnaHQ6IGF1dG8KfQoKLmF0dHItaW5wdXQtZ3JvdXAgLmF0dHItZm9ybS1jb250cm9sLAouYXR0ci1pbnB1dC1ncm91cC1hZGRvbiwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwKfQoKLmF0dHItaW5wdXQtZ3JvdXAgLmF0dHItZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCksCi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCksCi5hdHRyLWlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci1yYWRpdXM6IDAKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYWRkb24sCi5hdHRyLWlucHV0LWdyb3VwLWJ0biB7CiAgICB3aWR0aDogMSU7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgouYXR0ci1pbnB1dC1ncm91cC1hZGRvbiB7CiAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGNvbG9yOiAjNTU1OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgICBib3JkZXItcmFkaXVzOiA0cHgKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYWRkb24uYXR0ci1pbnB1dC1zbSB7CiAgICBwYWRkaW5nOiA1cHggMTBweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweAp9CgouYXR0ci1pbnB1dC1ncm91cC1hZGRvbi5hdHRyLWlucHV0LWxnIHsKICAgIHBhZGRpbmc6IDEwcHggMTZweDsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGJvcmRlci1yYWRpdXM6IDZweAp9CgouYXR0ci1pbnB1dC1ncm91cC1hZGRvbiBpbnB1dFt0eXBlPWNoZWNrYm94XSwKLmF0dHItaW5wdXQtZ3JvdXAtYWRkb24gaW5wdXRbdHlwZT1yYWRpb10gewogICAgbWFyZ2luLXRvcDogMAp9CgouYXR0ci1pbnB1dC1ncm91cCAuYXR0ci1mb3JtLWNvbnRyb2w6Zmlyc3QtY2hpbGQsCi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkLAouYXR0ci1pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmF0dHItYnRuLAouYXR0ci1pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0biwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5hdHRyLWRyb3Bkb3duLXRvZ2dsZSwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmF0dHItYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCk+LmF0dHItYnRuLAouYXR0ci1pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uYXR0ci1idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmF0dHItZHJvcGRvd24tdG9nZ2xlKSB7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwCn0KCi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci1yaWdodDogMAp9CgouYXR0ci1pbnB1dC1ncm91cCAuYXR0ci1mb3JtLWNvbnRyb2w6bGFzdC1jaGlsZCwKLmF0dHItaW5wdXQtZ3JvdXAtYWRkb246bGFzdC1jaGlsZCwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5hdHRyLWJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKT4uYXR0ci1idG4sCi5hdHRyLWlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZD4uYXR0ci1idG46bm90KDpmaXJzdC1jaGlsZCksCi5hdHRyLWlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5hdHRyLWJ0biwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmF0dHItYnRuLWdyb3VwPi5hdHRyLWJ0biwKLmF0dHItaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmF0dHItZHJvcGRvd24tdG9nZ2xlIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwCn0KCi5hdHRyLWlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLWxlZnQ6IDAKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYnRuIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZvbnQtc2l6ZTogMDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXAKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYnRuPi5hdHRyLWJ0biB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYnRuPi5hdHRyLWJ0bisuYXR0ci1idG4gewogICAgbWFyZ2luLWxlZnQ6IC0xcHgKfQoKLmF0dHItaW5wdXQtZ3JvdXAtYnRuPi5hdHRyLWJ0bjphY3RpdmUsCi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG46Zm9jdXMsCi5hdHRyLWlucHV0LWdyb3VwLWJ0bj4uYXR0ci1idG46aG92ZXIgewogICAgei1pbmRleDogMgp9CgouYXR0ci1pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmF0dHItYnRuLAouYXR0ci1pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmF0dHItYnRuLWdyb3VwIHsKICAgIG1hcmdpbi1yaWdodDogLTFweAp9CgouYXR0ci1pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uYXR0ci1idG4sCi5hdHRyLWlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5hdHRyLWJ0bi1ncm91cCB7CiAgICB6LWluZGV4OiAyOwogICAgbWFyZ2luLWxlZnQ6IC0xcHgKfQoKLmF0dHItbmF2IHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBsaXN0LXN0eWxlOiBub25lCn0KCi5hdHRyLW5hdj5saSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jawp9CgouYXR0ci1uYXY+bGk+YSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDEwcHggMTVweAp9CgouYXR0ci1uYXY+bGk+YTpmb2N1cywKLmF0dHItbmF2PmxpPmE6aG92ZXIgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZQp9CgouYXR0ci1uYXY+bGkuYXR0ci1kaXNhYmxlZD5hIHsKICAgIGNvbG9yOiAjNzc3Cn0KCi5hdHRyLW5hdj5saS5hdHRyLWRpc2FibGVkPmE6Zm9jdXMsCi5hdHRyLW5hdj5saS5hdHRyLWRpc2FibGVkPmE6aG92ZXIgewogICAgY29sb3I6ICM3Nzc7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQKfQoKLmF0dHItbmF2IC5hdHRyLW9wZW4+YSwKLmF0dHItbmF2IC5hdHRyLW9wZW4+YTpmb2N1cywKLmF0dHItbmF2IC5hdHRyLW9wZW4+YTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwogICAgYm9yZGVyLWNvbG9yOiAjMzM3YWI3Cn0KCi5hdHRyLW5hdiAuYXR0ci1uYXYtZGl2aWRlciB7CiAgICBoZWlnaHQ6IDFweDsKICAgIG1hcmdpbjogOXB4IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNQp9CgouYXR0ci1uYXY+bGk+YT5pbWcgewogICAgbWF4LXdpZHRoOiBub25lCn0KCi5hdHRyLW5hdi10YWJzIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkCn0KCi5hdHRyLW5hdi10YWJzPmxpIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWJvdHRvbTogLTFweAp9CgouYXR0ci1uYXYtdGFicz5saT5hIHsKICAgIG1hcmdpbi1yaWdodDogMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwCn0KCi5hdHRyLW5hdi10YWJzPmxpPmE6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiAjZWVlICNlZWUgI2RkZAp9CgouYXR0ci1uYXYtdGFicz5saS5hdHRyLWFjdGl2ZT5hLAouYXR0ci1uYXYtdGFicz5saS5hdHRyLWFjdGl2ZT5hOmZvY3VzLAouYXR0ci1uYXYtdGFicz5saS5hdHRyLWFjdGl2ZT5hOmhvdmVyIHsKICAgIGNvbG9yOiAjNTU1OwogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQgewogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXItYm90dG9tOiAwCn0KCi5hdHRyLW5hdi10YWJzLmF0dHItbmF2LWp1c3RpZmllZD5saSB7CiAgICBmbG9hdDogbm9uZQp9CgouYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQ+bGk+YSB7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIKfQoKLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPi5hdHRyLWRyb3Bkb3duIC5hdHRyLWRyb3Bkb3duLW1lbnUgewogICAgdG9wOiBhdXRvOwogICAgbGVmdDogYXV0bwp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPmxpIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgICAgIHdpZHRoOiAxJQogICAgfQogICAgLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPmxpPmEgewogICAgICAgIG1hcmdpbi1ib3R0b206IDAKICAgIH0KfQoKLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPmxpPmEgewogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgYm9yZGVyLXJhZGl1czogNHB4Cn0KCi5hdHRyLW5hdi10YWJzLmF0dHItbmF2LWp1c3RpZmllZD4uYXR0ci1hY3RpdmU+YSwKLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPi5hdHRyLWFjdGl2ZT5hOmZvY3VzLAouYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQ+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgYm9yZGVyOiAxcHggc29saWQgI2RkZAp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2LXRhYnMuYXR0ci1uYXYtanVzdGlmaWVkPmxpPmEgewogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwCiAgICB9CiAgICAuYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQ+LmF0dHItYWN0aXZlPmEsCiAgICAuYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQ+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCiAgICAuYXR0ci1uYXYtdGFicy5hdHRyLW5hdi1qdXN0aWZpZWQ+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmYKICAgIH0KfQoKLmF0dHItbmF2LXBpbGxzPmxpIHsKICAgIGZsb2F0OiBsZWZ0Cn0KCi5hdHRyLW5hdi1waWxscz5saT5hIHsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci1uYXYtcGlsbHM+bGkrbGkgewogICAgbWFyZ2luLWxlZnQ6IDJweAp9CgouYXR0ci1uYXYtcGlsbHM+bGkuYXR0ci1hY3RpdmU+YSwKLmF0dHItbmF2LXBpbGxzPmxpLmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLW5hdi1waWxscz5saS5hdHRyLWFjdGl2ZT5hOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzN2FiNwp9CgouYXR0ci1uYXYtc3RhY2tlZD5saSB7CiAgICBmbG9hdDogbm9uZQp9CgouYXR0ci1uYXYtc3RhY2tlZD5saStsaSB7CiAgICBtYXJnaW4tdG9wOiAycHg7CiAgICBtYXJnaW4tbGVmdDogMAp9CgouYXR0ci1uYXYtanVzdGlmaWVkIHsKICAgIHdpZHRoOiAxMDAlCn0KCi5hdHRyLW5hdi1qdXN0aWZpZWQ+bGkgewogICAgZmxvYXQ6IG5vbmUKfQoKLmF0dHItbmF2LWp1c3RpZmllZD5saT5hIHsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcgp9CgouYXR0ci1uYXYtanVzdGlmaWVkPi5hdHRyLWRyb3Bkb3duIC5hdHRyLWRyb3Bkb3duLW1lbnUgewogICAgdG9wOiBhdXRvOwogICAgbGVmdDogYXV0bwp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2LWp1c3RpZmllZD5saSB7CiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgICAgICB3aWR0aDogMSUKICAgIH0KICAgIC5hdHRyLW5hdi1qdXN0aWZpZWQ+bGk+YSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMAogICAgfQp9CgouYXR0ci1uYXYtdGFicy1qdXN0aWZpZWQgewogICAgYm9yZGVyLWJvdHRvbTogMAp9CgouYXR0ci1uYXYtdGFicy1qdXN0aWZpZWQ+bGk+YSB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICBib3JkZXItcmFkaXVzOiA0cHgKfQoKLmF0dHItbmF2LXRhYnMtanVzdGlmaWVkPi5hdHRyLWFjdGl2ZT5hLAouYXR0ci1uYXYtdGFicy1qdXN0aWZpZWQ+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLW5hdi10YWJzLWp1c3RpZmllZD4uYXR0ci1hY3RpdmU+YTpob3ZlciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkCn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1uYXYtdGFicy1qdXN0aWZpZWQ+bGk+YSB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDAKICAgIH0KICAgIC5hdHRyLW5hdi10YWJzLWp1c3RpZmllZD4uYXR0ci1hY3RpdmU+YSwKICAgIC5hdHRyLW5hdi10YWJzLWp1c3RpZmllZD4uYXR0ci1hY3RpdmU+YTpmb2N1cywKICAgIC5hdHRyLW5hdi10YWJzLWp1c3RpZmllZD4uYXR0ci1hY3RpdmU+YTpob3ZlciB7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZgogICAgfQp9CgouYXR0ci10YWItY29udGVudD4uYXR0ci10YWItcGFuZSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5hdHRyLXRhYi1jb250ZW50Pi5hdHRyLWFjdGl2ZSB7CiAgICBkaXNwbGF5OiBibG9jawp9CgouYXR0ci1uYXYtdGFicyAuYXR0ci1kcm9wZG93bi1tZW51IHsKICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAKfQoKLmF0dHItbmF2YmFyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1pbi1oZWlnaHQ6IDUwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLW5hdmJhciB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1uYXZiYXItaGVhZGVyIHsKICAgICAgICBmbG9hdDogbGVmdAogICAgfQp9CgouYXR0ci1uYXZiYXItY29sbGFwc2UgewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgIG92ZXJmbG93LXg6IHZpc2libGU7CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMSk7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjEpCn0KCi5hdHRyLW5hdmJhci1jb2xsYXBzZS5hdHRyLWluIHsKICAgIG92ZXJmbG93LXk6IGF1dG8KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLW5hdmJhci1jb2xsYXBzZSB7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgYm9yZGVyLXRvcDogMDsKICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZQogICAgfQogICAgLmF0dHItbmF2YmFyLWNvbGxhcHNlLmF0dHItY29sbGFwc2UgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudAogICAgfQogICAgLmF0dHItbmF2YmFyLWNvbGxhcHNlLmF0dHItaW4gewogICAgICAgIG92ZXJmbG93LXk6IHZpc2libGUKICAgIH0KICAgIC5hdHRyLW5hdmJhci1maXhlZC1ib3R0b20gLmF0dHItbmF2YmFyLWNvbGxhcHNlLAogICAgLmF0dHItbmF2YmFyLWZpeGVkLXRvcCAuYXR0ci1uYXZiYXItY29sbGFwc2UsCiAgICAuYXR0ci1uYXZiYXItc3RhdGljLXRvcCAuYXR0ci1uYXZiYXItY29sbGFwc2UgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAwCiAgICB9Cn0KCi5hdHRyLW5hdmJhci1maXhlZC1ib3R0b20gLmF0dHItbmF2YmFyLWNvbGxhcHNlLAouYXR0ci1uYXZiYXItZml4ZWQtdG9wIC5hdHRyLW5hdmJhci1jb2xsYXBzZSB7CiAgICBtYXgtaGVpZ2h0OiAzNDBweAp9CgpAbWVkaWEgKG1heC1kZXZpY2Utd2lkdGg6NDgwcHgpIGFuZCAob3JpZW50YXRpb246bGFuZHNjYXBlKSB7CiAgICAuYXR0ci1uYXZiYXItZml4ZWQtYm90dG9tIC5hdHRyLW5hdmJhci1jb2xsYXBzZSwKICAgIC5hdHRyLW5hdmJhci1maXhlZC10b3AgLmF0dHItbmF2YmFyLWNvbGxhcHNlIHsKICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweAogICAgfQp9CgouYXR0ci1jb250YWluZXItZmx1aWQ+LmF0dHItbmF2YmFyLWNvbGxhcHNlLAouYXR0ci1jb250YWluZXItZmx1aWQ+LmF0dHItbmF2YmFyLWhlYWRlciwKLmF0dHItY29udGFpbmVyPi5hdHRyLW5hdmJhci1jb2xsYXBzZSwKLmF0dHItY29udGFpbmVyPi5hdHRyLW5hdmJhci1oZWFkZXIgewogICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICAgIG1hcmdpbi1sZWZ0OiAtMTVweAp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItY29udGFpbmVyLWZsdWlkPi5hdHRyLW5hdmJhci1jb2xsYXBzZSwKICAgIC5hdHRyLWNvbnRhaW5lci1mbHVpZD4uYXR0ci1uYXZiYXItaGVhZGVyLAogICAgLmF0dHItY29udGFpbmVyPi5hdHRyLW5hdmJhci1jb2xsYXBzZSwKICAgIC5hdHRyLWNvbnRhaW5lcj4uYXR0ci1uYXZiYXItaGVhZGVyIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDAKICAgIH0KfQoKLmF0dHItbmF2YmFyLXN0YXRpYy10b3AgewogICAgei1pbmRleDogMTAwMDsKICAgIGJvcmRlci13aWR0aDogMCAwIDFweAp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2YmFyLXN0YXRpYy10b3AgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDAKICAgIH0KfQoKLmF0dHItbmF2YmFyLWZpeGVkLWJvdHRvbSwKLmF0dHItbmF2YmFyLWZpeGVkLXRvcCB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICByaWdodDogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxMDMwCn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1uYXZiYXItZml4ZWQtYm90dG9tLAogICAgLmF0dHItbmF2YmFyLWZpeGVkLXRvcCB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMAogICAgfQp9CgouYXR0ci1uYXZiYXItZml4ZWQtdG9wIHsKICAgIHRvcDogMDsKICAgIGJvcmRlci13aWR0aDogMCAwIDFweAp9CgouYXR0ci1uYXZiYXItZml4ZWQtYm90dG9tIHsKICAgIGJvdHRvbTogMDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBib3JkZXItd2lkdGg6IDFweCAwIDAKfQoKLmF0dHItbmF2YmFyLWJyYW5kIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgaGVpZ2h0OiA1MHB4OwogICAgcGFkZGluZzogMTVweCAxNXB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDIwcHgKfQoKLmF0dHItbmF2YmFyLWJyYW5kOmZvY3VzLAouYXR0ci1uYXZiYXItYnJhbmQ6aG92ZXIgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lCn0KCi5hdHRyLW5hdmJhci1icmFuZD5pbWcgewogICAgZGlzcGxheTogYmxvY2sKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLW5hdmJhcj4uYXR0ci1jb250YWluZXIgLmF0dHItbmF2YmFyLWJyYW5kLAogICAgLmF0dHItbmF2YmFyPi5hdHRyLWNvbnRhaW5lci1mbHVpZCAuYXR0ci1uYXZiYXItYnJhbmQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAtMTVweAogICAgfQp9CgouYXR0ci1uYXZiYXItdG9nZ2xlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZsb2F0OiByaWdodDsKICAgIHBhZGRpbmc6IDlweCAxMHB4OwogICAgbWFyZ2luLXRvcDogOHB4OwogICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiA0cHgKfQoKLmF0dHItbmF2YmFyLXRvZ2dsZTpmb2N1cyB7CiAgICBvdXRsaW5lOiAwCn0KCi5hdHRyLW5hdmJhci10b2dnbGUgLmF0dHItaWNvbi1iYXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMjJweDsKICAgIGhlaWdodDogMnB4OwogICAgYm9yZGVyLXJhZGl1czogMXB4Cn0KCi5hdHRyLW5hdmJhci10b2dnbGUgLmF0dHItaWNvbi1iYXIrLmF0dHItaWNvbi1iYXIgewogICAgbWFyZ2luLXRvcDogNHB4Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1uYXZiYXItdG9nZ2xlIHsKICAgICAgICBkaXNwbGF5OiBub25lCiAgICB9Cn0KCi5hdHRyLW5hdmJhci1uYXYgewogICAgbWFyZ2luOiA3LjVweCAtMTVweAp9CgouYXR0ci1uYXZiYXItbmF2PmxpPmEgewogICAgcGFkZGluZy10b3A6IDEwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgIGxpbmUtaGVpZ2h0OiAyMHB4Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudSB7CiAgICAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICAgICBmbG9hdDogbm9uZTsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZQogICAgfQogICAgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnUgLmF0dHItZHJvcGRvd24taGVhZGVyLAogICAgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+bGk+YSB7CiAgICAgICAgcGFkZGluZzogNXB4IDE1cHggNXB4IDI1cHgKICAgIH0KICAgIC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51PmxpPmEgewogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4CiAgICB9CiAgICAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT5saT5hOmZvY3VzLAogICAgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+bGk+YTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZQogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2YmFyLW5hdiB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgbWFyZ2luOiAwCiAgICB9CiAgICAuYXR0ci1uYXZiYXItbmF2PmxpIHsKICAgICAgICBmbG9hdDogbGVmdAogICAgfQogICAgLmF0dHItbmF2YmFyLW5hdj5saT5hIHsKICAgICAgICBwYWRkaW5nLXRvcDogMTVweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTVweAogICAgfQp9CgouYXR0ci1uYXZiYXItZm9ybSB7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4OwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjEpLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjEpOwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xKSwgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xKQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItZm9ybS1ncm91cCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItZm9ybS1jb250cm9sIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItZm9ybS1jb250cm9sLXN0YXRpYyB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrCiAgICB9CiAgICAuYXR0ci1uYXZiYXItZm9ybSAuYXR0ci1pbnB1dC1ncm91cCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLXRhYmxlOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKICAgIH0KICAgIC5hdHRyLW5hdmJhci1mb3JtIC5hdHRyLWlucHV0LWdyb3VwIC5hdHRyLWZvcm0tY29udHJvbCwKICAgIC5hdHRyLW5hdmJhci1mb3JtIC5hdHRyLWlucHV0LWdyb3VwIC5hdHRyLWlucHV0LWdyb3VwLWFkZG9uLAogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItaW5wdXQtZ3JvdXAgLmF0dHItaW5wdXQtZ3JvdXAtYnRuIHsKICAgICAgICB3aWR0aDogYXV0bwogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItaW5wdXQtZ3JvdXA+LmF0dHItZm9ybS1jb250cm9sIHsKICAgICAgICB3aWR0aDogMTAwJQogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItY29udHJvbC1sYWJlbCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCiAgICB9CiAgICAuYXR0ci1uYXZiYXItZm9ybSAuYXR0ci1jaGVja2JveCwKICAgIC5hdHRyLW5hdmJhci1mb3JtIC5hdHRyLXJhZGlvIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUKICAgIH0KICAgIC5hdHRyLW5hdmJhci1mb3JtIC5hdHRyLWNoZWNrYm94IGxhYmVsLAogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItcmFkaW8gbGFiZWwgewogICAgICAgIHBhZGRpbmctbGVmdDogMAogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0sCiAgICAuYXR0ci1uYXZiYXItZm9ybSAuYXR0ci1yYWRpbyBpbnB1dFt0eXBlPXJhZGlvXSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1hcmdpbi1sZWZ0OiAwCiAgICB9CiAgICAuYXR0ci1uYXZiYXItZm9ybSAuYXR0ci1oYXMtZmVlZGJhY2sgLmF0dHItZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgICAgICB0b3A6IDAKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5hdHRyLW5hdmJhci1mb3JtIC5hdHRyLWZvcm0tZ3JvdXAgewogICAgICAgIG1hcmdpbi1ib3R0b206IDVweAogICAgfQogICAgLmF0dHItbmF2YmFyLWZvcm0gLmF0dHItZm9ybS1ncm91cDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwCiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1uYXZiYXItZm9ybSB7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgcGFkZGluZy10b3A6IDA7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgICAgIGJvcmRlcjogMDsKICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZQogICAgfQp9CgouYXR0ci1uYXZiYXItbmF2PmxpPi5hdHRyLWRyb3Bkb3duLW1lbnUgewogICAgbWFyZ2luLXRvcDogMDsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMAp9CgouYXR0ci1uYXZiYXItZml4ZWQtYm90dG9tIC5hdHRyLW5hdmJhci1uYXY+bGk+LmF0dHItZHJvcGRvd24tbWVudSB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMAp9CgouYXR0ci1uYXZiYXItYnRuIHsKICAgIG1hcmdpbi10b3A6IDhweDsKICAgIG1hcmdpbi1ib3R0b206IDhweAp9CgouYXR0ci1uYXZiYXItYnRuLmF0dHItYnRuLXNtIHsKICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Cn0KCi5hdHRyLW5hdmJhci1idG4uYXR0ci1idG4teHMgewogICAgbWFyZ2luLXRvcDogMTRweDsKICAgIG1hcmdpbi1ib3R0b206IDE0cHgKfQoKLmF0dHItbmF2YmFyLXRleHQgewogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIG1hcmdpbi1ib3R0b206IDE1cHgKfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLW5hdmJhci10ZXh0IHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHgKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIHsKICAgIC5hdHRyLW5hdmJhci1sZWZ0IHsKICAgICAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50CiAgICB9CiAgICAuYXR0ci1uYXZiYXItcmlnaHQgewogICAgICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1yaWdodDogLTE1cHgKICAgIH0KICAgIC5hdHRyLW5hdmJhci1yaWdodH4uYXR0ci1uYXZiYXItcmlnaHQgewogICAgICAgIG1hcmdpbi1yaWdodDogMAogICAgfQp9CgouYXR0ci1uYXZiYXItZGVmYXVsdCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4OwogICAgYm9yZGVyLWNvbG9yOiAjZTdlN2U3Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1icmFuZCB7CiAgICBjb2xvcjogIzc3Nwp9CgouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItYnJhbmQ6Zm9jdXMsCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1icmFuZDpob3ZlciB7CiAgICBjb2xvcjogIzVlNWU1ZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci10ZXh0IHsKICAgIGNvbG9yOiAjNzc3Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+bGk+YSB7CiAgICBjb2xvcjogIzc3Nwp9CgouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2PmxpPmE6Zm9jdXMsCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+bGk+YTpob3ZlciB7CiAgICBjb2xvcjogIzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmEsCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgY29sb3I6ICM1NTU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTdlN2U3Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+LmF0dHItZGlzYWJsZWQ+YSwKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLW5hdj4uYXR0ci1kaXNhYmxlZD5hOmZvY3VzLAouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2Pi5hdHRyLWRpc2FibGVkPmE6aG92ZXIgewogICAgY29sb3I6ICNjY2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItdG9nZ2xlIHsKICAgIGJvcmRlci1jb2xvcjogI2RkZAp9CgouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItdG9nZ2xlOmZvY3VzLAouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItdG9nZ2xlOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGQKfQoKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLXRvZ2dsZSAuYXR0ci1pY29uLWJhciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODg4Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1jb2xsYXBzZSwKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLWZvcm0gewogICAgYm9yZGVyLWNvbG9yOiAjZTdlN2U3Cn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXY+LmF0dHItb3Blbj5hLAouYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2Pi5hdHRyLW9wZW4+YTpmb2N1cywKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLW5hdj4uYXR0ci1vcGVuPmE6aG92ZXIgewogICAgY29sb3I6ICM1NTU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTdlN2U3Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT5saT5hIHsKICAgICAgICBjb2xvcjogIzc3NwogICAgfQogICAgLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1cywKICAgIC5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIgewogICAgICAgIGNvbG9yOiAjMzMzOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50CiAgICB9CiAgICAuYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1hY3RpdmU+YSwKICAgIC5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51Pi5hdHRyLWFjdGl2ZT5hOmZvY3VzLAogICAgLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgICAgIGNvbG9yOiAjNTU1OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlN2U3ZTcKICAgIH0KICAgIC5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51Pi5hdHRyLWRpc2FibGVkPmEsCiAgICAuYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1kaXNhYmxlZD5hOmZvY3VzLAogICAgLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItZGlzYWJsZWQ+YTpob3ZlciB7CiAgICAgICAgY29sb3I6ICNjY2M7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQKICAgIH0KfQoKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLWxpbmsgewogICAgY29sb3I6ICM3NzcKfQoKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItbmF2YmFyLWxpbms6aG92ZXIgewogICAgY29sb3I6ICMzMzMKfQoKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItYnRuLWxpbmsgewogICAgY29sb3I6ICM3NzcKfQoKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItYnRuLWxpbms6Zm9jdXMsCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLWJ0bi1saW5rOmhvdmVyIHsKICAgIGNvbG9yOiAjMzMzCn0KCi5hdHRyLW5hdmJhci1kZWZhdWx0IC5hdHRyLWJ0bi1saW5rW2Rpc2FibGVkXTpmb2N1cywKLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItYnRuLWxpbmtbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItbmF2YmFyLWRlZmF1bHQgLmF0dHItYnRuLWxpbms6Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYXR0ci1uYXZiYXItZGVmYXVsdCAuYXR0ci1idG4tbGluazpob3ZlciB7CiAgICBjb2xvcjogI2NjYwp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOwogICAgYm9yZGVyLWNvbG9yOiAjMDgwODA4Cn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1icmFuZCB7CiAgICBjb2xvcjogIzlkOWQ5ZAp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItYnJhbmQ6Zm9jdXMsCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1icmFuZDpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci10ZXh0IHsKICAgIGNvbG9yOiAjOWQ5ZDlkCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+bGk+YSB7CiAgICBjb2xvcjogIzlkOWQ5ZAp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2PmxpPmE6Zm9jdXMsCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+bGk+YTpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Cn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmEsCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+LmF0dHItYWN0aXZlPmE6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwODA4Cn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+LmF0dHItZGlzYWJsZWQ+YSwKLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdj4uYXR0ci1kaXNhYmxlZD5hOmZvY3VzLAouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2Pi5hdHRyLWRpc2FibGVkPmE6aG92ZXIgewogICAgY29sb3I6ICM0NDQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItdG9nZ2xlIHsKICAgIGJvcmRlci1jb2xvcjogIzMzMwp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItdG9nZ2xlOmZvY3VzLAouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItdG9nZ2xlOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzMKfQoKLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLXRvZ2dsZSAuYXR0ci1pY29uLWJhciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1jb2xsYXBzZSwKLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLWZvcm0gewogICAgYm9yZGVyLWNvbG9yOiAjMTAxMDEwCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXY+LmF0dHItb3Blbj5hLAouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2Pi5hdHRyLW9wZW4+YTpmb2N1cywKLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdj4uYXR0ci1vcGVuPmE6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwODA4Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1kcm9wZG93bi1oZWFkZXIgewogICAgICAgIGJvcmRlci1jb2xvcjogIzA4MDgwOAogICAgfQogICAgLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnUgLmF0dHItZGl2aWRlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA4MDgwOAogICAgfQogICAgLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+bGk+YSB7CiAgICAgICAgY29sb3I6ICM5ZDlkOWQKICAgIH0KICAgIC5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51PmxpPmE6Zm9jdXMsCiAgICAuYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT5saT5hOmhvdmVyIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudAogICAgfQogICAgLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItYWN0aXZlPmEsCiAgICAuYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1hY3RpdmU+YTpmb2N1cywKICAgIC5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51Pi5hdHRyLWFjdGl2ZT5hOmhvdmVyIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwODA4CiAgICB9CiAgICAuYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1uYXZiYXItbmF2IC5hdHRyLW9wZW4gLmF0dHItZHJvcGRvd24tbWVudT4uYXR0ci1kaXNhYmxlZD5hLAogICAgLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItbmF2YmFyLW5hdiAuYXR0ci1vcGVuIC5hdHRyLWRyb3Bkb3duLW1lbnU+LmF0dHItZGlzYWJsZWQ+YTpmb2N1cywKICAgIC5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1uYXYgLmF0dHItb3BlbiAuYXR0ci1kcm9wZG93bi1tZW51Pi5hdHRyLWRpc2FibGVkPmE6aG92ZXIgewogICAgICAgIGNvbG9yOiAjNDQ0OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50CiAgICB9Cn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1saW5rIHsKICAgIGNvbG9yOiAjOWQ5ZDlkCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLW5hdmJhci1saW5rOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLWJ0bi1saW5rIHsKICAgIGNvbG9yOiAjOWQ5ZDlkCn0KCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLWJ0bi1saW5rOmZvY3VzLAouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1idG4tbGluazpob3ZlciB7CiAgICBjb2xvcjogI2ZmZgp9CgouYXR0ci1uYXZiYXItaW52ZXJzZSAuYXR0ci1idG4tbGlua1tkaXNhYmxlZF06Zm9jdXMsCi5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLWJ0bi1saW5rW2Rpc2FibGVkXTpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5hdHRyLW5hdmJhci1pbnZlcnNlIC5hdHRyLWJ0bi1saW5rOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmF0dHItbmF2YmFyLWludmVyc2UgLmF0dHItYnRuLWxpbms6aG92ZXIgewogICAgY29sb3I6ICM0NDQKfQoKLmF0dHItYnJlYWRjcnVtYiB7CiAgICBwYWRkaW5nOiA4cHggMTVweDsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci1icmVhZGNydW1iPmxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawp9CgouYXR0ci1icmVhZGNydW1iPmxpK2xpOmJlZm9yZSB7CiAgICBwYWRkaW5nOiAwIDVweDsKICAgIGNvbG9yOiAjY2NjOwogICAgY29udGVudDogIi9cMDBhMCIKfQoKLmF0dHItYnJlYWRjcnVtYj4uYXR0ci1hY3RpdmUgewogICAgY29sb3I6ICM3NzcKfQoKLmF0dHItcGFnaW5hdGlvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBtYXJnaW46IDIwcHggMDsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci1wYWdpbmF0aW9uPmxpIHsKICAgIGRpc3BsYXk6IGlubGluZQp9CgouYXR0ci1wYWdpbmF0aW9uPmxpPmEsCi5hdHRyLXBhZ2luYXRpb24+bGk+c3BhbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgbWFyZ2luLWxlZnQ6IC0xcHg7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIGNvbG9yOiAjMzM3YWI3OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQKfQoKLmF0dHItcGFnaW5hdGlvbj5saTpmaXJzdC1jaGlsZD5hLAouYXR0ci1wYWdpbmF0aW9uPmxpOmZpcnN0LWNoaWxkPnNwYW4gewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHgKfQoKLmF0dHItcGFnaW5hdGlvbj5saTpsYXN0LWNoaWxkPmEsCi5hdHRyLXBhZ2luYXRpb24+bGk6bGFzdC1jaGlsZD5zcGFuIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4Cn0KCi5hdHRyLXBhZ2luYXRpb24+bGk+YTpmb2N1cywKLmF0dHItcGFnaW5hdGlvbj5saT5hOmhvdmVyLAouYXR0ci1wYWdpbmF0aW9uPmxpPnNwYW46Zm9jdXMsCi5hdHRyLXBhZ2luYXRpb24+bGk+c3Bhbjpob3ZlciB7CiAgICB6LWluZGV4OiAyOwogICAgY29sb3I6ICMyMzUyN2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwogICAgYm9yZGVyLWNvbG9yOiAjZGRkCn0KCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPmEsCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPmE6Zm9jdXMsCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPmE6aG92ZXIsCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPnNwYW4sCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPnNwYW46Zm9jdXMsCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItYWN0aXZlPnNwYW46aG92ZXIgewogICAgei1pbmRleDogMzsKICAgIGNvbG9yOiAjZmZmOwogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzN2FiNzsKICAgIGJvcmRlci1jb2xvcjogIzMzN2FiNwp9CgouYXR0ci1wYWdpbmF0aW9uPi5hdHRyLWRpc2FibGVkPmEsCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItZGlzYWJsZWQ+YTpmb2N1cywKLmF0dHItcGFnaW5hdGlvbj4uYXR0ci1kaXNhYmxlZD5hOmhvdmVyLAouYXR0ci1wYWdpbmF0aW9uPi5hdHRyLWRpc2FibGVkPnNwYW4sCi5hdHRyLXBhZ2luYXRpb24+LmF0dHItZGlzYWJsZWQ+c3Bhbjpmb2N1cywKLmF0dHItcGFnaW5hdGlvbj4uYXR0ci1kaXNhYmxlZD5zcGFuOmhvdmVyIHsKICAgIGNvbG9yOiAjNzc3OwogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXItY29sb3I6ICNkZGQKfQoKLmF0dHItcGFnaW5hdGlvbi1sZz5saT5hLAouYXR0ci1wYWdpbmF0aW9uLWxnPmxpPnNwYW4gewogICAgcGFkZGluZzogMTBweCAxNnB4OwogICAgZm9udC1zaXplOiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzMzMzMzMwp9CgouYXR0ci1wYWdpbmF0aW9uLWxnPmxpOmZpcnN0LWNoaWxkPmEsCi5hdHRyLXBhZ2luYXRpb24tbGc+bGk6Zmlyc3QtY2hpbGQ+c3BhbiB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA2cHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA2cHgKfQoKLmF0dHItcGFnaW5hdGlvbi1sZz5saTpsYXN0LWNoaWxkPmEsCi5hdHRyLXBhZ2luYXRpb24tbGc+bGk6bGFzdC1jaGlsZD5zcGFuIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA2cHg7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNnB4Cn0KCi5hdHRyLXBhZ2luYXRpb24tc20+bGk+YSwKLmF0dHItcGFnaW5hdGlvbi1zbT5saT5zcGFuIHsKICAgIHBhZGRpbmc6IDVweCAxMHB4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNQp9CgouYXR0ci1wYWdpbmF0aW9uLXNtPmxpOmZpcnN0LWNoaWxkPmEsCi5hdHRyLXBhZ2luYXRpb24tc20+bGk6Zmlyc3QtY2hpbGQ+c3BhbiB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHgKfQoKLmF0dHItcGFnaW5hdGlvbi1zbT5saTpsYXN0LWNoaWxkPmEsCi5hdHRyLXBhZ2luYXRpb24tc20+bGk6bGFzdC1jaGlsZD5zcGFuIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4Cn0KCi5hdHRyLXBhZ2VyIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIG1hcmdpbjogMjBweCAwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbGlzdC1zdHlsZTogbm9uZQp9CgouYXR0ci1wYWdlciBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUKfQoKLmF0dHItcGFnZXIgbGk+YSwKLmF0dHItcGFnZXIgbGk+c3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiA1cHggMTRweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogICAgYm9yZGVyLXJhZGl1czogMTVweAp9CgouYXR0ci1wYWdlciBsaT5hOmZvY3VzLAouYXR0ci1wYWdlciBsaT5hOmhvdmVyIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWUKfQoKLmF0dHItcGFnZXIgLmF0dHItbmV4dD5hLAouYXR0ci1wYWdlciAuYXR0ci1uZXh0PnNwYW4gewogICAgZmxvYXQ6IHJpZ2h0Cn0KCi5hdHRyLXBhZ2VyIC5hdHRyLXByZXZpb3VzPmEsCi5hdHRyLXBhZ2VyIC5hdHRyLXByZXZpb3VzPnNwYW4gewogICAgZmxvYXQ6IGxlZnQKfQoKLmF0dHItcGFnZXIgLmF0dHItZGlzYWJsZWQ+YSwKLmF0dHItcGFnZXIgLmF0dHItZGlzYWJsZWQ+YTpmb2N1cywKLmF0dHItcGFnZXIgLmF0dHItZGlzYWJsZWQ+YTpob3ZlciwKLmF0dHItcGFnZXIgLmF0dHItZGlzYWJsZWQ+c3BhbiB7CiAgICBjb2xvcjogIzc3NzsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5hdHRyLWxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZTsKICAgIHBhZGRpbmc6IC4yZW0gLjZlbSAuM2VtOwogICAgZm9udC1zaXplOiA3NSU7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CiAgICBib3JkZXItcmFkaXVzOiAuMjVlbQp9CgphLmF0dHItbGFiZWw6Zm9jdXMsCmEuYXR0ci1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcgp9CgouYXR0ci1sYWJlbDplbXB0eSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5hdHRyLWJ0biAuYXR0ci1sYWJlbCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IC0xcHgKfQoKLmF0dHItbGFiZWwtZGVmYXVsdCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzc3Cn0KCi5hdHRyLWxhYmVsLWRlZmF1bHRbaHJlZl06Zm9jdXMsCi5hdHRyLWxhYmVsLWRlZmF1bHRbaHJlZl06aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVlNWU1ZQp9CgouYXR0ci1sYWJlbC1wcmltYXJ5IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzdhYjcKfQoKLmF0dHItbGFiZWwtcHJpbWFyeVtocmVmXTpmb2N1cywKLmF0dHItbGFiZWwtcHJpbWFyeVtocmVmXTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjg2MDkwCn0KCi5hdHRyLWxhYmVsLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1Ywp9CgouYXR0ci1sYWJlbC1zdWNjZXNzW2hyZWZdOmZvY3VzLAouYXR0ci1sYWJlbC1zdWNjZXNzW2hyZWZdOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0NDlkNDQKfQoKLmF0dHItbGFiZWwtaW5mbyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlCn0KCi5hdHRyLWxhYmVsLWluZm9baHJlZl06Zm9jdXMsCi5hdHRyLWxhYmVsLWluZm9baHJlZl06aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzMxYjBkNQp9CgouYXR0ci1sYWJlbC13YXJuaW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGUKfQoKLmF0dHItbGFiZWwtd2FybmluZ1tocmVmXTpmb2N1cywKLmF0dHItbGFiZWwtd2FybmluZ1tocmVmXTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWM5NzFmCn0KCi5hdHRyLWxhYmVsLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmCn0KCi5hdHRyLWxhYmVsLWRhbmdlcltocmVmXTpmb2N1cywKLmF0dHItbGFiZWwtZGFuZ2VyW2hyZWZdOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjOTMwMmMKfQoKLmF0dHItYmFkZ2UgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWluLXdpZHRoOiAxMHB4OwogICAgcGFkZGluZzogM3B4IDdweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGNvbG9yOiAjZmZmOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzc3OwogICAgYm9yZGVyLXJhZGl1czogMTBweAp9CgouYXR0ci1iYWRnZTplbXB0eSB7CiAgICBkaXNwbGF5OiBub25lCn0KCi5hdHRyLWJ0biAuYXR0ci1iYWRnZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IC0xcHgKfQoKLmF0dHItYnRuLWdyb3VwLXhzPi5hdHRyLWJ0biAuYXR0ci1iYWRnZSwKLmF0dHItYnRuLXhzIC5hdHRyLWJhZGdlIHsKICAgIHRvcDogMDsKICAgIHBhZGRpbmc6IDFweCA1cHgKfQoKYS5hdHRyLWJhZGdlOmZvY3VzLAphLmF0dHItYmFkZ2U6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXIKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlPi5hdHRyLWJhZGdlLAouYXR0ci1uYXYtcGlsbHM+LmF0dHItYWN0aXZlPmE+LmF0dHItYmFkZ2UgewogICAgY29sb3I6ICMzMzdhYjc7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmCn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbT4uYXR0ci1iYWRnZSB7CiAgICBmbG9hdDogcmlnaHQKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtPi5hdHRyLWJhZGdlKy5hdHRyLWJhZGdlIHsKICAgIG1hcmdpbi1yaWdodDogNXB4Cn0KCi5hdHRyLW5hdi1waWxscz5saT5hPi5hdHRyLWJhZGdlIHsKICAgIG1hcmdpbi1sZWZ0OiAzcHgKfQoKLmF0dHItanVtYm90cm9uIHsKICAgIHBhZGRpbmctdG9wOiAzMHB4OwogICAgcGFkZGluZy1ib3R0b206IDMwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgY29sb3I6IGluaGVyaXQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlCn0KCi5hdHRyLWp1bWJvdHJvbiAuYXR0ci1oMSwKLmF0dHItanVtYm90cm9uIGgxIHsKICAgIGNvbG9yOiBpbmhlcml0Cn0KCi5hdHRyLWp1bWJvdHJvbiBwIHsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICBmb250LXNpemU6IDIxcHg7CiAgICBmb250LXdlaWdodDogMjAwCn0KCi5hdHRyLWp1bWJvdHJvbj5ociB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjZDVkNWQ1Cn0KCi5hdHRyLWNvbnRhaW5lciAuYXR0ci1qdW1ib3Ryb24sCi5hdHRyLWNvbnRhaW5lci1mbHVpZCAuYXR0ci1qdW1ib3Ryb24gewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogMTVweDsKICAgIGJvcmRlci1yYWRpdXM6IDZweAp9CgouYXR0ci1qdW1ib3Ryb24gLmF0dHItY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogMTAwJQp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1qdW1ib3Ryb24gewogICAgICAgIHBhZGRpbmctdG9wOiA0OHB4OwogICAgICAgIHBhZGRpbmctYm90dG9tOiA0OHB4CiAgICB9CiAgICAuYXR0ci1jb250YWluZXIgLmF0dHItanVtYm90cm9uLAogICAgLmF0dHItY29udGFpbmVyLWZsdWlkIC5hdHRyLWp1bWJvdHJvbiB7CiAgICAgICAgcGFkZGluZy1yaWdodDogNjBweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDYwcHgKICAgIH0KICAgIC5hdHRyLWp1bWJvdHJvbiAuYXR0ci1oMSwKICAgIC5hdHRyLWp1bWJvdHJvbiBoMSB7CiAgICAgICAgZm9udC1zaXplOiA2M3B4CiAgICB9Cn0KCi5hdHRyLXRodW1ibmFpbCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDRweDsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBib3JkZXIgLjJzIGVhc2UtaW4tb3V0OwogICAgdHJhbnNpdGlvbjogYm9yZGVyIC4ycyBlYXNlLWluLW91dAp9CgouYXR0ci10aHVtYm5haWwgYT5pbWcsCi5hdHRyLXRodW1ibmFpbD5pbWcgewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWxlZnQ6IGF1dG8KfQoKYS5hdHRyLXRodW1ibmFpbC5hdHRyLWFjdGl2ZSwKYS5hdHRyLXRodW1ibmFpbDpmb2N1cywKYS5hdHRyLXRodW1ibmFpbDpob3ZlciB7CiAgICBib3JkZXItY29sb3I6ICMzMzdhYjcKfQoKLmF0dHItdGh1bWJuYWlsIC5hdHRyLWNhcHRpb24gewogICAgcGFkZGluZzogOXB4OwogICAgY29sb3I6ICMzMzMKfQoKLmF0dHItYWxlcnQgewogICAgcGFkZGluZzogMTVweDsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci1hbGVydCBoNCB7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgY29sb3I6IGluaGVyaXQKfQoKLmF0dHItYWxlcnQgLmF0dHItYWxlcnQtbGluayB7CiAgICBmb250LXdlaWdodDogNzAwCn0KCi5hdHRyLWFsZXJ0PnAsCi5hdHRyLWFsZXJ0PnVsIHsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmF0dHItYWxlcnQ+cCtwIHsKICAgIG1hcmdpbi10b3A6IDVweAp9CgouYXR0ci1hbGVydC1kaXNtaXNzYWJsZSwKLmF0dHItYWxlcnQtZGlzbWlzc2libGUgewogICAgcGFkZGluZy1yaWdodDogMzVweAp9CgouYXR0ci1hbGVydC1kaXNtaXNzYWJsZSAuYXR0ci1jbG9zZSwKLmF0dHItYWxlcnQtZGlzbWlzc2libGUgLmF0dHItY2xvc2UgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAtMnB4OwogICAgcmlnaHQ6IC0yMXB4OwogICAgY29sb3I6IGluaGVyaXQKfQoKLmF0dHItYWxlcnQtc3VjY2VzcyB7CiAgICBjb2xvcjogIzNjNzYzZDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7CiAgICBib3JkZXItY29sb3I6ICNkNmU5YzYKfQoKLmF0dHItYWxlcnQtc3VjY2VzcyBociB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjYzllMmIzCn0KCi5hdHRyLWFsZXJ0LXN1Y2Nlc3MgLmF0dHItYWxlcnQtbGluayB7CiAgICBjb2xvcjogIzJiNTQyYwp9CgouYXR0ci1hbGVydC1pbmZvIHsKICAgIGNvbG9yOiAjMzE3MDhmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNzsKICAgIGJvcmRlci1jb2xvcjogI2JjZThmMQp9CgouYXR0ci1hbGVydC1pbmZvIGhyIHsKICAgIGJvcmRlci10b3AtY29sb3I6ICNhNmUxZWMKfQoKLmF0dHItYWxlcnQtaW5mbyAuYXR0ci1hbGVydC1saW5rIHsKICAgIGNvbG9yOiAjMjQ1MjY5Cn0KCi5hdHRyLWFsZXJ0LXdhcm5pbmcgewogICAgY29sb3I6ICM4YTZkM2I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwogICAgYm9yZGVyLWNvbG9yOiAjZmFlYmNjCn0KCi5hdHRyLWFsZXJ0LXdhcm5pbmcgaHIgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2Y3ZTFiNQp9CgouYXR0ci1hbGVydC13YXJuaW5nIC5hdHRyLWFsZXJ0LWxpbmsgewogICAgY29sb3I6ICM2NjUxMmMKfQoKLmF0dHItYWxlcnQtZGFuZ2VyIHsKICAgIGNvbG9yOiAjYTk0NDQyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKICAgIGJvcmRlci1jb2xvcjogI2ViY2NkMQp9CgouYXR0ci1hbGVydC1kYW5nZXIgaHIgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2U0YjljMAp9CgouYXR0ci1hbGVydC1kYW5nZXIgLmF0dHItYWxlcnQtbGluayB7CiAgICBjb2xvcjogIzg0MzUzNAp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogICAgZnJvbSB7CiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwCiAgICB9CiAgICB0byB7CiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwCiAgICB9Cn0KCkBrZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogICAgZnJvbSB7CiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwCiAgICB9CiAgICB0byB7CiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwCiAgICB9Cn0KCi5hdHRyLXByb2dyZXNzIHsKICAgIGhlaWdodDogMjBweDsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgLjEpOwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgLjEpCn0KCi5hdHRyLXByb2dyZXNzLWJhciB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiAwOwogICAgaGVpZ2h0OiAxMDAlOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzdhYjc7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgLjE1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgLjE1KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggLjZzIGVhc2U7CiAgICB0cmFuc2l0aW9uOiB3aWR0aCAuNnMgZWFzZQp9CgouYXR0ci1wcm9ncmVzcy1iYXItc3RyaXBlZCwKLmF0dHItcHJvZ3Jlc3Mtc3RyaXBlZCAuYXR0ci1wcm9ncmVzcy1iYXIgewogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDQwcHggNDBweAp9CgouYXR0ci1wcm9ncmVzcy1iYXIuYXR0ci1hY3RpdmUsCi5hdHRyLXByb2dyZXNzLmF0dHItYWN0aXZlIC5hdHRyLXByb2dyZXNzLWJhciB7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlOwogICAgYW5pbWF0aW9uOiBwcm9ncmVzcy1iYXItc3RyaXBlcyAycyBsaW5lYXIgaW5maW5pdGUKfQoKLmF0dHItcHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1Ywp9CgouYXR0ci1wcm9ncmVzcy1zdHJpcGVkIC5hdHRyLXByb2dyZXNzLWJhci1zdWNjZXNzIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpCn0KCi5hdHRyLXByb2dyZXNzLWJhci1pbmZvIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM1YmMwZGUKfQoKLmF0dHItcHJvZ3Jlc3Mtc3RyaXBlZCAuYXR0ci1wcm9ncmVzcy1iYXItaW5mbyB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KQp9CgouYXR0ci1wcm9ncmVzcy1iYXItd2FybmluZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlCn0KCi5hdHRyLXByb2dyZXNzLXN0cmlwZWQgLmF0dHItcHJvZ3Jlc3MtYmFyLXdhcm5pbmcgewogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCkKfQoKLmF0dHItcHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmCn0KCi5hdHRyLXByb2dyZXNzLXN0cmlwZWQgLmF0dHItcHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KQp9CgouYXR0ci1tZWRpYSB7CiAgICBtYXJnaW4tdG9wOiAxNXB4Cn0KCi5hdHRyLW1lZGlhOmZpcnN0LWNoaWxkIHsKICAgIG1hcmdpbi10b3A6IDAKfQoKLmF0dHItbWVkaWEsCi5hdHRyLW1lZGlhLWJvZHkgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHpvb206IDEKfQoKLmF0dHItbWVkaWEtYm9keSB7CiAgICB3aWR0aDogMTAwMDBweAp9CgouYXR0ci1tZWRpYS1vYmplY3QgewogICAgZGlzcGxheTogYmxvY2sKfQoKLmF0dHItbWVkaWEtb2JqZWN0LmF0dHItaW1nLXRodW1ibmFpbCB7CiAgICBtYXgtd2lkdGg6IG5vbmUKfQoKLmF0dHItbWVkaWEtcmlnaHQsCi5hdHRyLW1lZGlhPi5hdHRyLXB1bGwtcmlnaHQgewogICAgcGFkZGluZy1sZWZ0OiAxMHB4Cn0KCi5hdHRyLW1lZGlhLWxlZnQsCi5hdHRyLW1lZGlhPi5hdHRyLXB1bGwtbGVmdCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4Cn0KCi5hdHRyLW1lZGlhLWJvZHksCi5hdHRyLW1lZGlhLWxlZnQsCi5hdHRyLW1lZGlhLXJpZ2h0IHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wCn0KCi5hdHRyLW1lZGlhLW1pZGRsZSB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlCn0KCi5hdHRyLW1lZGlhLWJvdHRvbSB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tCn0KCi5hdHRyLW1lZGlhLWhlYWRpbmcgewogICAgbWFyZ2luLXRvcDogMDsKICAgIG1hcmdpbi1ib3R0b206IDVweAp9CgouYXR0ci1tZWRpYS1saXN0IHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIGxpc3Qtc3R5bGU6IG5vbmUKfQoKLmF0dHItbGlzdC1ncm91cCB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4Cn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgIG1hcmdpbi1ib3R0b206IC0xcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI2RkZAp9CgouYXR0ci1saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweAp9CgouYXR0ci1saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweAp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0gewogICAgY29sb3I6ICM1NTUKfQoKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbSAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgIGNvbG9yOiAjMzMzCn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW06Zm9jdXMsCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW06aG92ZXIsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbTpmb2N1cywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtOmhvdmVyIHsKICAgIGNvbG9yOiAjNTU1OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNQp9CgpidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0gewogICAgd2lkdGg6IDEwMCU7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Cn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWRpc2FibGVkLAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1kaXNhYmxlZDpmb2N1cywKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItZGlzYWJsZWQ6aG92ZXIgewogICAgY29sb3I6ICM3Nzc7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZQp9CgouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1kaXNhYmxlZCAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItZGlzYWJsZWQ6Zm9jdXMgLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWRpc2FibGVkOmhvdmVyIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgIGNvbG9yOiBpbmhlcml0Cn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWRpc2FibGVkIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS10ZXh0LAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1kaXNhYmxlZDpmb2N1cyAuYXR0ci1saXN0LWdyb3VwLWl0ZW0tdGV4dCwKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItZGlzYWJsZWQ6aG92ZXIgLmF0dHItbGlzdC1ncm91cC1pdGVtLXRleHQgewogICAgY29sb3I6ICM3NzcKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlLAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1hY3RpdmU6Zm9jdXMsCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWFjdGl2ZTpob3ZlciB7CiAgICB6LWluZGV4OiAyOwogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM3YWI3OwogICAgYm9yZGVyLWNvbG9yOiAjMzM3YWI3Cn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWFjdGl2ZSAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPi5hdHRyLXNtYWxsLAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1hY3RpdmUgLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+c21hbGwsCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWFjdGl2ZTpmb2N1cyAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlOmZvY3VzIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPi5hdHRyLXNtYWxsLAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1hY3RpdmU6Zm9jdXMgLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+c21hbGwsCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWFjdGl2ZTpob3ZlciAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlOmhvdmVyIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPi5hdHRyLXNtYWxsLAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1hY3RpdmU6aG92ZXIgLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+c21hbGwgewogICAgY29sb3I6IGluaGVyaXQKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtLmF0dHItYWN0aXZlIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS10ZXh0LAouYXR0ci1saXN0LWdyb3VwLWl0ZW0uYXR0ci1hY3RpdmU6Zm9jdXMgLmF0dHItbGlzdC1ncm91cC1pdGVtLXRleHQsCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS5hdHRyLWFjdGl2ZTpob3ZlciAuYXR0ci1saXN0LWdyb3VwLWl0ZW0tdGV4dCB7CiAgICBjb2xvcjogI2M3ZGRlZgp9CgouYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyB7CiAgICBjb2xvcjogIzNjNzYzZDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDgKfQoKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyB7CiAgICBjb2xvcjogIzNjNzYzZAp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MgLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgIGNvbG9yOiBpbmhlcml0Cn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzczpmb2N1cywKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzOmhvdmVyLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzczpmb2N1cywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6aG92ZXIgewogICAgY29sb3I6ICMzYzc2M2Q7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBlOWM2Cn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hdHRyLWFjdGl2ZSwKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmF0dHItYWN0aXZlOmZvY3VzLAphLmF0dHItbGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYXR0ci1hY3RpdmU6aG92ZXIsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmF0dHItYWN0aXZlLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hdHRyLWFjdGl2ZTpmb2N1cywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYXR0ci1hY3RpdmU6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2M3NjNkOwogICAgYm9yZGVyLWNvbG9yOiAjM2M3NjNkCn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKICAgIGNvbG9yOiAjMzE3MDhmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNwp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLWluZm8sCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKICAgIGNvbG9yOiAjMzE3MDhmCn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0taW5mbyAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLWluZm8gLmF0dHItbGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogICAgY29sb3I6IGluaGVyaXQKfQoKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvOmZvY3VzLAphLmF0dHItbGlzdC1ncm91cC1pdGVtLWluZm86aG92ZXIsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvOmZvY3VzLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0taW5mbzpob3ZlciB7CiAgICBjb2xvcjogIzMxNzA4ZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNjNGUzZjMKfQoKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvLmF0dHItYWN0aXZlLAphLmF0dHItbGlzdC1ncm91cC1pdGVtLWluZm8uYXR0ci1hY3RpdmU6Zm9jdXMsCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0taW5mby5hdHRyLWFjdGl2ZTpob3ZlciwKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLWluZm8uYXR0ci1hY3RpdmUsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1pbmZvLmF0dHItYWN0aXZlOmZvY3VzLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0taW5mby5hdHRyLWFjdGl2ZTpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMTcwOGY7CiAgICBib3JkZXItY29sb3I6ICMzMTcwOGYKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmcgewogICAgY29sb3I6ICM4YTZkM2I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzCn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0td2FybmluZywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmcgewogICAgY29sb3I6ICM4YTZkM2IKfQoKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0td2FybmluZyAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgICBjb2xvcjogaW5oZXJpdAp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6Zm9jdXMsCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0td2FybmluZzpob3ZlciwKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6Zm9jdXMsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nOmhvdmVyIHsKICAgIGNvbG9yOiAjOGE2ZDNiOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZjJjYwp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYXR0ci1hY3RpdmUsCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hdHRyLWFjdGl2ZTpmb2N1cywKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmF0dHItYWN0aXZlOmhvdmVyLApidXR0b24uYXR0ci1saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hdHRyLWFjdGl2ZSwKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYXR0ci1hY3RpdmU6Zm9jdXMsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmF0dHItYWN0aXZlOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzhhNmQzYjsKICAgIGJvcmRlci1jb2xvcjogIzhhNmQzYgp9CgouYXR0ci1saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyIHsKICAgIGNvbG9yOiAjYTk0NDQyOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZQp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlciwKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlciB7CiAgICBjb2xvcjogI2E5NDQ0Mgp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlciAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKYnV0dG9uLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlciAuYXR0ci1saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgICBjb2xvcjogaW5oZXJpdAp9CgphLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlcjpmb2N1cywKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6aG92ZXIsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6Zm9jdXMsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6aG92ZXIgewogICAgY29sb3I6ICNhOTQ0NDI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJjY2NjCn0KCmEuYXR0ci1saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmF0dHItYWN0aXZlLAphLmF0dHItbGlzdC1ncm91cC1pdGVtLWRhbmdlci5hdHRyLWFjdGl2ZTpmb2N1cywKYS5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYXR0ci1hY3RpdmU6aG92ZXIsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYXR0ci1hY3RpdmUsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYXR0ci1hY3RpdmU6Zm9jdXMsCmJ1dHRvbi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYXR0ci1hY3RpdmU6aG92ZXIgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTk0NDQyOwogICAgYm9yZGVyLWNvbG9yOiAjYTk0NDQyCn0KCi5hdHRyLWxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tYm90dG9tOiA1cHgKfQoKLmF0dHItbGlzdC1ncm91cC1pdGVtLXRleHQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjMKfQoKLmF0dHItcGFuZWwgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgLjA1KTsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNSkKfQoKLmF0dHItcGFuZWwtYm9keSB7CiAgICBwYWRkaW5nOiAxNXB4Cn0KCi5hdHRyLXBhbmVsLWhlYWRpbmcgewogICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbC1oZWFkaW5nPi5hdHRyLWRyb3Bkb3duIC5hdHRyLWRyb3Bkb3duLXRvZ2dsZSB7CiAgICBjb2xvcjogaW5oZXJpdAp9CgouYXR0ci1wYW5lbC10aXRsZSB7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGNvbG9yOiBpbmhlcml0Cn0KCi5hdHRyLXBhbmVsLXRpdGxlPi5hdHRyLXNtYWxsLAouYXR0ci1wYW5lbC10aXRsZT4uYXR0ci1zbWFsbD5hLAouYXR0ci1wYW5lbC10aXRsZT5hLAouYXR0ci1wYW5lbC10aXRsZT5zbWFsbCwKLmF0dHItcGFuZWwtdGl0bGU+c21hbGw+YSB7CiAgICBjb2xvcjogaW5oZXJpdAp9CgouYXR0ci1wYW5lbC1mb290ZXIgewogICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci1saXN0LWdyb3VwLAouYXR0ci1wYW5lbD4uYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1saXN0LWdyb3VwIHsKICAgIG1hcmdpbi1ib3R0b206IDAKfQoKLmF0dHItcGFuZWw+LmF0dHItbGlzdC1ncm91cCAuYXR0ci1saXN0LWdyb3VwLWl0ZW0sCi5hdHRyLXBhbmVsPi5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLWxpc3QtZ3JvdXAgLmF0dHItbGlzdC1ncm91cC1pdGVtIHsKICAgIGJvcmRlci13aWR0aDogMXB4IDA7CiAgICBib3JkZXItcmFkaXVzOiAwCn0KCi5hdHRyLXBhbmVsPi5hdHRyLWxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmF0dHItbGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1saXN0LWdyb3VwOmZpcnN0LWNoaWxkIC5hdHRyLWxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wOiAwOwogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci1saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmF0dHItbGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLWxpc3QtZ3JvdXA6bGFzdC1jaGlsZCAuYXR0ci1saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgICBib3JkZXItYm90dG9tOiAwOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci1wYW5lbC1oZWFkaW5nKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLWxpc3QtZ3JvdXAgLmF0dHItbGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMAp9CgouYXR0ci1wYW5lbC1oZWFkaW5nKy5hdHRyLWxpc3QtZ3JvdXAgLmF0dHItbGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3Atd2lkdGg6IDAKfQoKLmF0dHItbGlzdC1ncm91cCsuYXR0ci1wYW5lbC1mb290ZXIgewogICAgYm9yZGVyLXRvcC13aWR0aDogMAp9CgouYXR0ci1wYW5lbD4uYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci10YWJsZSwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUgewogICAgbWFyZ2luLWJvdHRvbTogMAp9CgouYXR0ci1wYW5lbD4uYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci10YWJsZSBjYXB0aW9uLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZSBjYXB0aW9uLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlIGNhcHRpb24gewogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIHBhZGRpbmctbGVmdDogMTVweAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZTpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4Cn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4Cn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LmF0dHItdGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4uYXR0ci10YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LmF0dHItdGFibGU6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4Cn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4uYXR0ci10YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi5hdHRyLXRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4uYXR0ci10YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi5hdHRyLXRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi5hdHRyLXRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4uYXR0ci10YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4Cn0KCi5hdHRyLXBhbmVsPi5hdHRyLXBhbmVsLWJvZHkrLmF0dHItdGFibGUsCi5hdHRyLXBhbmVsPi5hdHRyLXBhbmVsLWJvZHkrLmF0dHItdGFibGUtcmVzcG9uc2l2ZSwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUrLmF0dHItcGFuZWwtYm9keSwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZSsuYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkCn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZT50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aCB7CiAgICBib3JkZXItdG9wOiAwCn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMAp9CgouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGQ6Zmlyc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmZpcnN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci1sZWZ0OiAwCn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQ6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpsYXN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmxhc3QtY2hpbGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGg6bGFzdC1jaGlsZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLXJpZ2h0OiAwCn0KCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmZpcnN0LWNoaWxkPnRkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cjpmaXJzdC1jaGlsZD50aCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGQsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmZpcnN0LWNoaWxkPnRkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmZpcnN0LWNoaWxkPnRoLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRoIHsKICAgIGJvcmRlci1ib3R0b206IDAKfQoKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50ZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50aCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50aCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Ym9keT50cjpsYXN0LWNoaWxkPnRkLAouYXR0ci1wYW5lbD4uYXR0ci10YWJsZS1yZXNwb25zaXZlPi5hdHRyLXRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGgsCi5hdHRyLXBhbmVsPi5hdHRyLXRhYmxlLXJlc3BvbnNpdmU+LmF0dHItdGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZT4uYXR0ci10YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRoIHsKICAgIGJvcmRlci1ib3R0b206IDAKfQoKLmF0dHItcGFuZWw+LmF0dHItdGFibGUtcmVzcG9uc2l2ZSB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgYm9yZGVyOiAwCn0KCi5hdHRyLXBhbmVsLWdyb3VwIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHgKfQoKLmF0dHItcGFuZWwtZ3JvdXAgLmF0dHItcGFuZWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci1wYW5lbC1ncm91cCAuYXR0ci1wYW5lbCsuYXR0ci1wYW5lbCB7CiAgICBtYXJnaW4tdG9wOiA1cHgKfQoKLmF0dHItcGFuZWwtZ3JvdXAgLmF0dHItcGFuZWwtaGVhZGluZyB7CiAgICBib3JkZXItYm90dG9tOiAwCn0KCi5hdHRyLXBhbmVsLWdyb3VwIC5hdHRyLXBhbmVsLWhlYWRpbmcrLmF0dHItcGFuZWwtY29sbGFwc2U+LmF0dHItbGlzdC1ncm91cCwKLmF0dHItcGFuZWwtZ3JvdXAgLmF0dHItcGFuZWwtaGVhZGluZysuYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkCn0KCi5hdHRyLXBhbmVsLWdyb3VwIC5hdHRyLXBhbmVsLWZvb3RlciB7CiAgICBib3JkZXItdG9wOiAwCn0KCi5hdHRyLXBhbmVsLWdyb3VwIC5hdHRyLXBhbmVsLWZvb3RlcisuYXR0ci1wYW5lbC1jb2xsYXBzZSAuYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkCn0KCi5hdHRyLXBhbmVsLWRlZmF1bHQgewogICAgYm9yZGVyLWNvbG9yOiAjZGRkCn0KCi5hdHRyLXBhbmVsLWRlZmF1bHQ+LmF0dHItcGFuZWwtaGVhZGluZyB7CiAgICBjb2xvcjogIzMzMzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgICBib3JkZXItY29sb3I6ICNkZGQKfQoKLmF0dHItcGFuZWwtZGVmYXVsdD4uYXR0ci1wYW5lbC1oZWFkaW5nKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLXBhbmVsLWJvZHkgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2RkZAp9CgouYXR0ci1wYW5lbC1kZWZhdWx0Pi5hdHRyLXBhbmVsLWhlYWRpbmcgLmF0dHItYmFkZ2UgewogICAgY29sb3I6ICNmNWY1ZjU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzCn0KCi5hdHRyLXBhbmVsLWRlZmF1bHQ+LmF0dHItcGFuZWwtZm9vdGVyKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLXBhbmVsLWJvZHkgewogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2RkZAp9CgouYXR0ci1wYW5lbC1wcmltYXJ5IHsKICAgIGJvcmRlci1jb2xvcjogIzMzN2FiNwp9CgouYXR0ci1wYW5lbC1wcmltYXJ5Pi5hdHRyLXBhbmVsLWhlYWRpbmcgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM3YWI3OwogICAgYm9yZGVyLWNvbG9yOiAjMzM3YWI3Cn0KCi5hdHRyLXBhbmVsLXByaW1hcnk+LmF0dHItcGFuZWwtaGVhZGluZysuYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci10b3AtY29sb3I6ICMzMzdhYjcKfQoKLmF0dHItcGFuZWwtcHJpbWFyeT4uYXR0ci1wYW5lbC1oZWFkaW5nIC5hdHRyLWJhZGdlIHsKICAgIGNvbG9yOiAjMzM3YWI3OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZgp9CgouYXR0ci1wYW5lbC1wcmltYXJ5Pi5hdHRyLXBhbmVsLWZvb3RlcisuYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMzMzdhYjcKfQoKLmF0dHItcGFuZWwtc3VjY2VzcyB7CiAgICBib3JkZXItY29sb3I6ICNkNmU5YzYKfQoKLmF0dHItcGFuZWwtc3VjY2Vzcz4uYXR0ci1wYW5lbC1oZWFkaW5nIHsKICAgIGNvbG9yOiAjM2M3NjNkOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKICAgIGJvcmRlci1jb2xvcjogI2Q2ZTljNgp9CgouYXR0ci1wYW5lbC1zdWNjZXNzPi5hdHRyLXBhbmVsLWhlYWRpbmcrLmF0dHItcGFuZWwtY29sbGFwc2U+LmF0dHItcGFuZWwtYm9keSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjZDZlOWM2Cn0KCi5hdHRyLXBhbmVsLXN1Y2Nlc3M+LmF0dHItcGFuZWwtaGVhZGluZyAuYXR0ci1iYWRnZSB7CiAgICBjb2xvcjogI2RmZjBkODsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzYzc2M2QKfQoKLmF0dHItcGFuZWwtc3VjY2Vzcz4uYXR0ci1wYW5lbC1mb290ZXIrLmF0dHItcGFuZWwtY29sbGFwc2U+LmF0dHItcGFuZWwtYm9keSB7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZDZlOWM2Cn0KCi5hdHRyLXBhbmVsLWluZm8gewogICAgYm9yZGVyLWNvbG9yOiAjYmNlOGYxCn0KCi5hdHRyLXBhbmVsLWluZm8+LmF0dHItcGFuZWwtaGVhZGluZyB7CiAgICBjb2xvcjogIzMxNzA4ZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNkOWVkZjc7CiAgICBib3JkZXItY29sb3I6ICNiY2U4ZjEKfQoKLmF0dHItcGFuZWwtaW5mbz4uYXR0ci1wYW5lbC1oZWFkaW5nKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLXBhbmVsLWJvZHkgewogICAgYm9yZGVyLXRvcC1jb2xvcjogI2JjZThmMQp9CgouYXR0ci1wYW5lbC1pbmZvPi5hdHRyLXBhbmVsLWhlYWRpbmcgLmF0dHItYmFkZ2UgewogICAgY29sb3I6ICNkOWVkZjc7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE3MDhmCn0KCi5hdHRyLXBhbmVsLWluZm8+LmF0dHItcGFuZWwtZm9vdGVyKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLXBhbmVsLWJvZHkgewogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2JjZThmMQp9CgouYXR0ci1wYW5lbC13YXJuaW5nIHsKICAgIGJvcmRlci1jb2xvcjogI2ZhZWJjYwp9CgouYXR0ci1wYW5lbC13YXJuaW5nPi5hdHRyLXBhbmVsLWhlYWRpbmcgewogICAgY29sb3I6ICM4YTZkM2I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwogICAgYm9yZGVyLWNvbG9yOiAjZmFlYmNjCn0KCi5hdHRyLXBhbmVsLXdhcm5pbmc+LmF0dHItcGFuZWwtaGVhZGluZysuYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci10b3AtY29sb3I6ICNmYWViY2MKfQoKLmF0dHItcGFuZWwtd2FybmluZz4uYXR0ci1wYW5lbC1oZWFkaW5nIC5hdHRyLWJhZGdlIHsKICAgIGNvbG9yOiAjZmNmOGUzOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzhhNmQzYgp9CgouYXR0ci1wYW5lbC13YXJuaW5nPi5hdHRyLXBhbmVsLWZvb3RlcisuYXR0ci1wYW5lbC1jb2xsYXBzZT4uYXR0ci1wYW5lbC1ib2R5IHsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmYWViY2MKfQoKLmF0dHItcGFuZWwtZGFuZ2VyIHsKICAgIGJvcmRlci1jb2xvcjogI2ViY2NkMQp9CgouYXR0ci1wYW5lbC1kYW5nZXI+LmF0dHItcGFuZWwtaGVhZGluZyB7CiAgICBjb2xvcjogI2E5NDQ0MjsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7CiAgICBib3JkZXItY29sb3I6ICNlYmNjZDEKfQoKLmF0dHItcGFuZWwtZGFuZ2VyPi5hdHRyLXBhbmVsLWhlYWRpbmcrLmF0dHItcGFuZWwtY29sbGFwc2U+LmF0dHItcGFuZWwtYm9keSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjZWJjY2QxCn0KCi5hdHRyLXBhbmVsLWRhbmdlcj4uYXR0ci1wYW5lbC1oZWFkaW5nIC5hdHRyLWJhZGdlIHsKICAgIGNvbG9yOiAjZjJkZWRlOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2E5NDQ0Mgp9CgouYXR0ci1wYW5lbC1kYW5nZXI+LmF0dHItcGFuZWwtZm9vdGVyKy5hdHRyLXBhbmVsLWNvbGxhcHNlPi5hdHRyLXBhbmVsLWJvZHkgewogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ViY2NkMQp9CgouYXR0ci1lbWJlZC1yZXNwb25zaXZlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAwOwogICAgcGFkZGluZzogMDsKICAgIG92ZXJmbG93OiBoaWRkZW4KfQoKLmF0dHItZW1iZWQtcmVzcG9uc2l2ZSAuYXR0ci1lbWJlZC1yZXNwb25zaXZlLWl0ZW0sCi5hdHRyLWVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsCi5hdHRyLWVtYmVkLXJlc3BvbnNpdmUgaWZyYW1lLAouYXR0ci1lbWJlZC1yZXNwb25zaXZlIG9iamVjdCwKLmF0dHItZW1iZWQtcmVzcG9uc2l2ZSB2aWRlbyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXI6IDAKfQoKLmF0dHItZW1iZWQtcmVzcG9uc2l2ZS0xNmJ5OSB7CiAgICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlCn0KCi5hdHRyLWVtYmVkLXJlc3BvbnNpdmUtNGJ5MyB7CiAgICBwYWRkaW5nLWJvdHRvbTogNzUlCn0KCi5hdHRyLXdlbGwgewogICAgbWluLWhlaWdodDogMjBweDsKICAgIHBhZGRpbmc6IDE5cHg7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNlM2UzZTM7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNSk7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDUpCn0KCi5hdHRyLXdlbGwgYmxvY2txdW90ZSB7CiAgICBib3JkZXItY29sb3I6ICNkZGQ7CiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgLjE1KQp9CgouYXR0ci13ZWxsLWxnIHsKICAgIHBhZGRpbmc6IDI0cHg7CiAgICBib3JkZXItcmFkaXVzOiA2cHgKfQoKLmF0dHItd2VsbC1zbSB7CiAgICBwYWRkaW5nOiA5cHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHgKfQoKLmF0dHItY2xvc2UgewogICAgZmxvYXQ6IHJpZ2h0OwogICAgZm9udC1zaXplOiAyMXB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgY29sb3I6ICMwMDA7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOwogICAgb3BhY2l0eTogLjIKfQoKLmF0dHItY2xvc2U6Zm9jdXMsCi5hdHRyLWNsb3NlOmhvdmVyIHsKICAgIGNvbG9yOiAjMDAwOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgb3BhY2l0eTogLjUKfQoKYnV0dG9uLmF0dHItY2xvc2UgewogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJhY2tncm91bmQ6IDAgMDsKICAgIGJvcmRlcjogMAp9CgouYXR0ci1tb2RhbC1vcGVuIHsKICAgIG92ZXJmbG93OiBoaWRkZW4KfQoKLmF0dHItbW9kYWwgewogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgei1pbmRleDogMTA1MDsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgb3V0bGluZTogMAp9CgouYXR0ci1tb2RhbC5hdHRyLWZhZGUgLmF0dHItbW9kYWwtZGlhbG9nIHsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0OwogICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0OwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4zcyBlYXNlLW91dDsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQsIC13ZWJraXQtdHJhbnNmb3JtIC4zcyBlYXNlLW91dDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0yNSUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTI1JSkKfQoKLmF0dHItbW9kYWwuYXR0ci1pbiAuYXR0ci1tb2RhbC1kaWFsb2cgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApCn0KCi5hdHRyLW1vZGFsLW9wZW4gLmF0dHItbW9kYWwgewogICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgb3ZlcmZsb3cteTogYXV0bwp9CgouYXR0ci1tb2RhbC1kaWFsb2cgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IGF1dG87CiAgICBtYXJnaW46IDEwcHgKfQoKLmF0dHItbW9kYWwtY29udGVudCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIG91dGxpbmU6IDA7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgM3B4IDlweCByZ2JhKDAsIDAsIDAsIC41KTsKICAgIGJveC1zaGFkb3c6IDAgM3B4IDlweCByZ2JhKDAsIDAsIDAsIC41KQp9CgouYXR0ci1tb2RhbC1iYWNrZHJvcCB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxMDQwOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMAp9CgouYXR0ci1tb2RhbC1iYWNrZHJvcC5hdHRyLWZhZGUgewogICAgb3BhY2l0eTogMAp9CgouYXR0ci1tb2RhbC1iYWNrZHJvcC5hdHRyLWluIHsKICAgIG9wYWNpdHk6IC41Cn0KCi5hdHRyLW1vZGFsLWhlYWRlciB7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU1ZTUKfQoKLmF0dHItbW9kYWwtaGVhZGVyIC5hdHRyLWNsb3NlIHsKICAgIG1hcmdpbi10b3A6IC0ycHgKfQoKLmF0dHItbW9kYWwtdGl0bGUgewogICAgbWFyZ2luOiAwOwogICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDMKfQoKLmF0dHItbW9kYWwtYm9keSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBwYWRkaW5nOiAxNXB4Cn0KCi5hdHRyLW1vZGFsLWZvb3RlciB7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTVlNQp9CgouYXR0ci1tb2RhbC1mb290ZXIgLmF0dHItYnRuKy5hdHRyLWJ0biB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgbWFyZ2luLWxlZnQ6IDVweAp9CgouYXR0ci1tb2RhbC1mb290ZXIgLmF0dHItYnRuLWdyb3VwIC5hdHRyLWJ0bisuYXR0ci1idG4gewogICAgbWFyZ2luLWxlZnQ6IC0xcHgKfQoKLmF0dHItbW9kYWwtZm9vdGVyIC5hdHRyLWJ0bi1ibG9jaysuYXR0ci1idG4tYmxvY2sgewogICAgbWFyZ2luLWxlZnQ6IDAKfQoKLmF0dHItbW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAtOTk5OXB4OwogICAgd2lkdGg6IDUwcHg7CiAgICBoZWlnaHQ6IDUwcHg7CiAgICBvdmVyZmxvdzogc2Nyb2xsCn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSB7CiAgICAuYXR0ci1tb2RhbC1kaWFsb2cgewogICAgICAgIHdpZHRoOiA2MDBweDsKICAgICAgICBtYXJnaW46IDMwcHggYXV0bwogICAgfQogICAgLmF0dHItbW9kYWwtY29udGVudCB7CiAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDVweCAxNXB4IHJnYmEoMCwgMCwgMCwgLjUpOwogICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDE1cHggcmdiYSgwLCAwLCAwLCAuNSkKICAgIH0KICAgIC5hdHRyLW1vZGFsLXNtIHsKICAgICAgICB3aWR0aDogMzAwcHgKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6OTkycHgpIHsKICAgIC5hdHRyLW1vZGFsLWxnIHsKICAgICAgICB3aWR0aDogOTAwcHgKICAgIH0KfQoKLmF0dHItdG9vbHRpcCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB6LWluZGV4OiAxMDcwOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB0ZXh0LWFsaWduOiBzdGFydDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIHRleHQtc2hhZG93OiBub25lOwogICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgd29yZC1icmVhazogbm9ybWFsOwogICAgd29yZC1zcGFjaW5nOiBub3JtYWw7CiAgICB3b3JkLXdyYXA6IG5vcm1hbDsKICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICBvcGFjaXR5OiAwOwogICAgbGluZS1icmVhazogYXV0bwp9CgouYXR0ci10b29sdGlwLmF0dHItaW4gewogICAgb3BhY2l0eTogLjkKfQoKLmF0dHItdG9vbHRpcC5hdHRyLXRvcCB7CiAgICBwYWRkaW5nOiA1cHggMDsKICAgIG1hcmdpbi10b3A6IC0zcHgKfQoKLmF0dHItdG9vbHRpcC5hdHRyLXJpZ2h0IHsKICAgIHBhZGRpbmc6IDAgNXB4OwogICAgbWFyZ2luLWxlZnQ6IDNweAp9CgouYXR0ci10b29sdGlwLmF0dHItYm90dG9tIHsKICAgIHBhZGRpbmc6IDVweCAwOwogICAgbWFyZ2luLXRvcDogM3B4Cn0KCi5hdHRyLXRvb2x0aXAuYXR0ci1sZWZ0IHsKICAgIHBhZGRpbmc6IDAgNXB4OwogICAgbWFyZ2luLWxlZnQ6IC0zcHgKfQoKLmF0dHItdG9vbHRpcC1pbm5lciB7CiAgICBtYXgtd2lkdGg6IDIwMHB4OwogICAgcGFkZGluZzogM3B4IDhweDsKICAgIGNvbG9yOiAjZmZmOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKICAgIGJvcmRlci1yYWRpdXM6IDRweAp9CgouYXR0ci10b29sdGlwLWFycm93IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAwOwogICAgaGVpZ2h0OiAwOwogICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1zdHlsZTogc29saWQKfQoKLmF0dHItdG9vbHRpcC5hdHRyLXRvcCAuYXR0ci10b29sdGlwLWFycm93IHsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtNXB4OwogICAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDA7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwCn0KCi5hdHRyLXRvb2x0aXAuYXR0ci10b3AtbGVmdCAuYXR0ci10b29sdGlwLWFycm93IHsKICAgIHJpZ2h0OiA1cHg7CiAgICBib3R0b206IDA7CiAgICBtYXJnaW4tYm90dG9tOiAtNXB4OwogICAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDA7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwCn0KCi5hdHRyLXRvb2x0aXAuYXR0ci10b3AtcmlnaHQgLmF0dHItdG9vbHRpcC1hcnJvdyB7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAtNXB4OwogICAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDA7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwCn0KCi5hdHRyLXRvb2x0aXAuYXR0ci1yaWdodCAuYXR0ci10b29sdGlwLWFycm93IHsKICAgIHRvcDogNTAlOwogICAgbGVmdDogMDsKICAgIG1hcmdpbi10b3A6IC01cHg7CiAgICBib3JkZXItd2lkdGg6IDVweCA1cHggNXB4IDA7CiAgICBib3JkZXItcmlnaHQtY29sb3I6ICMwMDAKfQoKLmF0dHItdG9vbHRpcC5hdHRyLWxlZnQgLmF0dHItdG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAwOwogICAgbWFyZ2luLXRvcDogLTVweDsKICAgIGJvcmRlci13aWR0aDogNXB4IDAgNXB4IDVweDsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwCn0KCi5hdHRyLXRvb2x0aXAuYXR0ci1ib3R0b20gLmF0dHItdG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLTVweDsKICAgIGJvcmRlci13aWR0aDogMCA1cHggNXB4OwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAwMAp9CgouYXR0ci10b29sdGlwLmF0dHItYm90dG9tLWxlZnQgLmF0dHItdG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDA7CiAgICByaWdodDogNXB4OwogICAgbWFyZ2luLXRvcDogLTVweDsKICAgIGJvcmRlci13aWR0aDogMCA1cHggNXB4OwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAwMAp9CgouYXR0ci10b29sdGlwLmF0dHItYm90dG9tLXJpZ2h0IC5hdHRyLXRvb2x0aXAtYXJyb3cgewogICAgdG9wOiAwOwogICAgbGVmdDogNXB4OwogICAgbWFyZ2luLXRvcDogLTVweDsKICAgIGJvcmRlci13aWR0aDogMCA1cHggNXB4OwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAwMAp9CgouYXR0ci1wb3BvdmVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB6LWluZGV4OiAxMDYwOwogICAgZGlzcGxheTogbm9uZTsKICAgIG1heC13aWR0aDogMjc2cHg7CiAgICBwYWRkaW5nOiAxcHg7CiAgICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB0ZXh0LWFsaWduOiBzdGFydDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIHRleHQtc2hhZG93OiBub25lOwogICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgd29yZC1icmVhazogbm9ybWFsOwogICAgd29yZC1zcGFjaW5nOiBub3JtYWw7CiAgICB3b3JkLXdyYXA6IG5vcm1hbDsKICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCA1cHggMTBweCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgIGJveC1zaGFkb3c6IDAgNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAuMik7CiAgICBsaW5lLWJyZWFrOiBhdXRvCn0KCi5hdHRyLXBvcG92ZXIuYXR0ci10b3AgewogICAgbWFyZ2luLXRvcDogLTEwcHgKfQoKLmF0dHItcG9wb3Zlci5hdHRyLXJpZ2h0IHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4Cn0KCi5hdHRyLXBvcG92ZXIuYXR0ci1ib3R0b20gewogICAgbWFyZ2luLXRvcDogMTBweAp9CgouYXR0ci1wb3BvdmVyLmF0dHItbGVmdCB7CiAgICBtYXJnaW4tbGVmdDogLTEwcHgKfQoKLmF0dHItcG9wb3Zlci10aXRsZSB7CiAgICBwYWRkaW5nOiA4cHggMTRweDsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKICAgIGJvcmRlci1yYWRpdXM6IDVweCA1cHggMCAwCn0KCi5hdHRyLXBvcG92ZXItY29udGVudCB7CiAgICBwYWRkaW5nOiA5cHggMTRweAp9CgouYXR0ci1wb3BvdmVyPi5hdHRyLWFycm93LAouYXR0ci1wb3BvdmVyPi5hdHRyLWFycm93OmFmdGVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDA7CiAgICBoZWlnaHQ6IDA7CiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZAp9CgouYXR0ci1wb3BvdmVyPi5hdHRyLWFycm93IHsKICAgIGJvcmRlci13aWR0aDogMTFweAp9CgouYXR0ci1wb3BvdmVyPi5hdHRyLWFycm93OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogICAgYm9yZGVyLXdpZHRoOiAxMHB4Cn0KCi5hdHRyLXBvcG92ZXIuYXR0ci10b3A+LmF0dHItYXJyb3cgewogICAgYm90dG9tOiAtMTFweDsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtMTFweDsKICAgIGJvcmRlci10b3AtY29sb3I6ICM5OTk7CiAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwCn0KCi5hdHRyLXBvcG92ZXIuYXR0ci10b3A+LmF0dHItYXJyb3c6YWZ0ZXIgewogICAgYm90dG9tOiAxcHg7CiAgICBtYXJnaW4tbGVmdDogLTEwcHg7CiAgICBjb250ZW50OiAiICI7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMAp9CgouYXR0ci1wb3BvdmVyLmF0dHItcmlnaHQ+LmF0dHItYXJyb3cgewogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiAtMTFweDsKICAgIG1hcmdpbi10b3A6IC0xMXB4OwogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjOTk5OwogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7CiAgICBib3JkZXItbGVmdC13aWR0aDogMAp9CgouYXR0ci1wb3BvdmVyLmF0dHItcmlnaHQ+LmF0dHItYXJyb3c6YWZ0ZXIgewogICAgYm90dG9tOiAtMTBweDsKICAgIGxlZnQ6IDFweDsKICAgIGNvbnRlbnQ6ICIgIjsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwCn0KCi5hdHRyLXBvcG92ZXIuYXR0ci1ib3R0b20+LmF0dHItYXJyb3cgewogICAgdG9wOiAtMTFweDsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtMTFweDsKICAgIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjOTk5OwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMjUpCn0KCi5hdHRyLXBvcG92ZXIuYXR0ci1ib3R0b20+LmF0dHItYXJyb3c6YWZ0ZXIgewogICAgdG9wOiAxcHg7CiAgICBtYXJnaW4tbGVmdDogLTEwcHg7CiAgICBjb250ZW50OiAiICI7CiAgICBib3JkZXItdG9wLXdpZHRoOiAwOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZgp9CgouYXR0ci1wb3BvdmVyLmF0dHItbGVmdD4uYXR0ci1hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAtMTFweDsKICAgIG1hcmdpbi10b3A6IC0xMXB4OwogICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogICAgYm9yZGVyLWxlZnQtY29sb3I6ICM5OTk7CiAgICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMjUpCn0KCi5hdHRyLXBvcG92ZXIuYXR0ci1sZWZ0Pi5hdHRyLWFycm93OmFmdGVyIHsKICAgIHJpZ2h0OiAxcHg7CiAgICBib3R0b206IC0xMHB4OwogICAgY29udGVudDogIiAiOwogICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogICAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZmYKfQoKLmF0dHItY2Fyb3VzZWwgewogICAgcG9zaXRpb246IHJlbGF0aXZlCn0KCi5hdHRyLWNhcm91c2VsLWlubmVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgb3ZlcmZsb3c6IGhpZGRlbgp9CgouYXR0ci1jYXJvdXNlbC1pbm5lcj4uYXR0ci1pdGVtIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IC42cyBlYXNlLWluLW91dCBsZWZ0OwogICAgdHJhbnNpdGlvbjogLjZzIGVhc2UtaW4tb3V0IGxlZnQKfQoKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbT5hPmltZywKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbT5pbWcgewogICAgbGluZS1oZWlnaHQ6IDEKfQoKQG1lZGlhIGFsbCBhbmQgKHRyYW5zZm9ybS0zZCksCigtd2Via2l0LXRyYW5zZm9ybS0zZCkgewogICAgLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuNnMgZWFzZS1pbi1vdXQ7CiAgICAgICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UtaW4tb3V0OwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNnMgZWFzZS1pbi1vdXQ7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC42cyBlYXNlLWluLW91dCwgLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UtaW4tb3V0OwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UtaW4tb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAuNnMgZWFzZS1pbi1vdXQ7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC42cyBlYXNlLWluLW91dCwgLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UtaW4tb3V0OwogICAgICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAxMDAwcHg7CiAgICAgICAgcGVyc3BlY3RpdmU6IDEwMDBweAogICAgfQogICAgLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbS5hdHRyLWFjdGl2ZS5hdHRyLXJpZ2h0LAogICAgLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbS5hdHRyLW5leHQgewogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkKICAgIH0KICAgIC5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLWl0ZW0uYXR0ci1hY3RpdmUuYXR0ci1sZWZ0LAogICAgLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbS5hdHRyLXByZXYgewogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKQogICAgfQogICAgLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItaXRlbS5hdHRyLWFjdGl2ZSwKICAgIC5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLWl0ZW0uYXR0ci1uZXh0LmF0dHItbGVmdCwKICAgIC5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLWl0ZW0uYXR0ci1wcmV2LmF0dHItcmlnaHQgewogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCkKICAgIH0KfQoKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItYWN0aXZlLAouYXR0ci1jYXJvdXNlbC1pbm5lcj4uYXR0ci1uZXh0LAouYXR0ci1jYXJvdXNlbC1pbm5lcj4uYXR0ci1wcmV2IHsKICAgIGRpc3BsYXk6IGJsb2NrCn0KCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLWFjdGl2ZSB7CiAgICBsZWZ0OiAwCn0KCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLW5leHQsCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLXByZXYgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgd2lkdGg6IDEwMCUKfQoKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItbmV4dCB7CiAgICBsZWZ0OiAxMDAlCn0KCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLXByZXYgewogICAgbGVmdDogLTEwMCUKfQoKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItbmV4dC5hdHRyLWxlZnQsCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLXByZXYuYXR0ci1yaWdodCB7CiAgICBsZWZ0OiAwCn0KCi5hdHRyLWNhcm91c2VsLWlubmVyPi5hdHRyLWFjdGl2ZS5hdHRyLWxlZnQgewogICAgbGVmdDogLTEwMCUKfQoKLmF0dHItY2Fyb3VzZWwtaW5uZXI+LmF0dHItYWN0aXZlLmF0dHItcmlnaHQgewogICAgbGVmdDogMTAwJQp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTUlOwogICAgZm9udC1zaXplOiAyMHB4OwogICAgY29sb3I6ICNmZmY7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgLjYpOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKICAgIG9wYWNpdHk6IC41Cn0KCi5hdHRyLWNhcm91c2VsLWNvbnRyb2wuYXR0ci1sZWZ0IHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBjb2xvci1zdG9wKDAsIHJnYmEoMCwgMCwgMCwgLjUpKSwgdG8ocmdiYSgwLCAwLCAwLCAuMDAwMSkpKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAuNSkgMCwgcmdiYSgwLCAwLCAwLCAuMDAwMSkgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXgKfQoKLmF0dHItY2Fyb3VzZWwtY29udHJvbC5hdHRyLXJpZ2h0IHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBjb2xvci1zdG9wKDAsIHJnYmEoMCwgMCwgMCwgLjAwMDEpKSwgdG8ocmdiYSgwLCAwLCAwLCAuNSkpKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAuMDAwMSkgMCwgcmdiYSgwLCAwLCAwLCAuNSkgMTAwJSk7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXgKfQoKLmF0dHItY2Fyb3VzZWwtY29udHJvbDpmb2N1cywKLmF0dHItY2Fyb3VzZWwtY29udHJvbDpob3ZlciB7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIG91dGxpbmU6IDA7CiAgICBvcGFjaXR5OiAuOQp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCi5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQsCi5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItaWNvbi1uZXh0LAouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tcHJldiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIHotaW5kZXg6IDU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tdG9wOiAtMTBweAp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCi5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItaWNvbi1wcmV2IHsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtMTBweAp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0LAouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tbmV4dCB7CiAgICByaWdodDogNTAlOwogICAgbWFyZ2luLXJpZ2h0OiAtMTBweAp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tbmV4dCwKLmF0dHItY2Fyb3VzZWwtY29udHJvbCAuYXR0ci1pY29uLXByZXYgewogICAgd2lkdGg6IDIwcHg7CiAgICBoZWlnaHQ6IDIwcHg7CiAgICBmb250LWZhbWlseTogc2VyaWY7CiAgICBsaW5lLWhlaWdodDogMQp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tcHJldjpiZWZvcmUgewogICAgY29udGVudDogJ1wyMDM5Jwp9CgouYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tbmV4dDpiZWZvcmUgewogICAgY29udGVudDogJ1wyMDNhJwp9CgouYXR0ci1jYXJvdXNlbC1pbmRpY2F0b3JzIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMTBweDsKICAgIGxlZnQ6IDUwJTsKICAgIHotaW5kZXg6IDE1OwogICAgd2lkdGg6IDYwJTsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIG1hcmdpbi1sZWZ0OiAtMzAlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbGlzdC1zdHlsZTogbm9uZQp9CgouYXR0ci1jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiAxMHB4OwogICAgaGVpZ2h0OiAxMHB4OwogICAgbWFyZ2luOiAxcHg7CiAgICB0ZXh0LWluZGVudDogLTk5OXB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4Cn0KCi5hdHRyLWNhcm91c2VsLWluZGljYXRvcnMgLmF0dHItYWN0aXZlIHsKICAgIHdpZHRoOiAxMnB4OwogICAgaGVpZ2h0OiAxMnB4OwogICAgbWFyZ2luOiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZgp9CgouYXR0ci1jYXJvdXNlbC1jYXB0aW9uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAxNSU7CiAgICBib3R0b206IDIwcHg7CiAgICBsZWZ0OiAxNSU7CiAgICB6LWluZGV4OiAxMDsKICAgIHBhZGRpbmctdG9wOiAyMHB4OwogICAgcGFkZGluZy1ib3R0b206IDIwcHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHRleHQtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAuNikKfQoKLmF0dHItY2Fyb3VzZWwtY2FwdGlvbiAuYXR0ci1idG4gewogICAgdGV4dC1zaGFkb3c6IG5vbmUKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCkgewogICAgLmF0dHItY2Fyb3VzZWwtY29udHJvbCAuYXR0ci1nbHlwaGljb24tY2hldnJvbi1sZWZ0LAogICAgLmF0dHItY2Fyb3VzZWwtY29udHJvbCAuYXR0ci1nbHlwaGljb24tY2hldnJvbi1yaWdodCwKICAgIC5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItaWNvbi1uZXh0LAogICAgLmF0dHItY2Fyb3VzZWwtY29udHJvbCAuYXR0ci1pY29uLXByZXYgewogICAgICAgIHdpZHRoOiAzMHB4OwogICAgICAgIGhlaWdodDogMzBweDsKICAgICAgICBtYXJnaW4tdG9wOiAtMTBweDsKICAgICAgICBmb250LXNpemU6IDMwcHgKICAgIH0KICAgIC5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItZ2x5cGhpY29uLWNoZXZyb24tbGVmdCwKICAgIC5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItaWNvbi1wcmV2IHsKICAgICAgICBtYXJnaW4tbGVmdDogLTEwcHgKICAgIH0KICAgIC5hdHRyLWNhcm91c2VsLWNvbnRyb2wgLmF0dHItZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQsCiAgICAuYXR0ci1jYXJvdXNlbC1jb250cm9sIC5hdHRyLWljb24tbmV4dCB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTBweAogICAgfQogICAgLmF0dHItY2Fyb3VzZWwtY2FwdGlvbiB7CiAgICAgICAgcmlnaHQ6IDIwJTsKICAgICAgICBsZWZ0OiAyMCU7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDMwcHgKICAgIH0KICAgIC5hdHRyLWNhcm91c2VsLWluZGljYXRvcnMgewogICAgICAgIGJvdHRvbTogMjBweAogICAgfQp9CgouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuLWdyb3VwOmFmdGVyLAouYXR0ci1idG4tZ3JvdXAtdmVydGljYWw+LmF0dHItYnRuLWdyb3VwOmJlZm9yZSwKLmF0dHItYnRuLXRvb2xiYXI6YWZ0ZXIsCi5hdHRyLWJ0bi10b29sYmFyOmJlZm9yZSwKLmF0dHItY2xlYXJmaXg6YWZ0ZXIsCi5hdHRyLWNsZWFyZml4OmJlZm9yZSwKLmF0dHItY29udGFpbmVyLWZsdWlkOmFmdGVyLAouYXR0ci1jb250YWluZXItZmx1aWQ6YmVmb3JlLAouYXR0ci1jb250YWluZXI6YWZ0ZXIsCi5hdHRyLWNvbnRhaW5lcjpiZWZvcmUsCi5hdHRyLWRsLWhvcml6b250YWwgZGQ6YWZ0ZXIsCi5hdHRyLWRsLWhvcml6b250YWwgZGQ6YmVmb3JlLAouYXR0ci1mb3JtLWhvcml6b250YWwgLmF0dHItZm9ybS1ncm91cDphZnRlciwKLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLWZvcm0tZ3JvdXA6YmVmb3JlLAouYXR0ci1tb2RhbC1mb290ZXI6YWZ0ZXIsCi5hdHRyLW1vZGFsLWZvb3RlcjpiZWZvcmUsCi5hdHRyLW1vZGFsLWhlYWRlcjphZnRlciwKLmF0dHItbW9kYWwtaGVhZGVyOmJlZm9yZSwKLmF0dHItbmF2OmFmdGVyLAouYXR0ci1uYXY6YmVmb3JlLAouYXR0ci1uYXZiYXItY29sbGFwc2U6YWZ0ZXIsCi5hdHRyLW5hdmJhci1jb2xsYXBzZTpiZWZvcmUsCi5hdHRyLW5hdmJhci1oZWFkZXI6YWZ0ZXIsCi5hdHRyLW5hdmJhci1oZWFkZXI6YmVmb3JlLAouYXR0ci1uYXZiYXI6YWZ0ZXIsCi5hdHRyLW5hdmJhcjpiZWZvcmUsCi5hdHRyLXBhZ2VyOmFmdGVyLAouYXR0ci1wYWdlcjpiZWZvcmUsCi5hdHRyLXBhbmVsLWJvZHk6YWZ0ZXIsCi5hdHRyLXBhbmVsLWJvZHk6YmVmb3JlLAouYXR0ci1yb3c6YWZ0ZXIsCi5hdHRyLXJvdzpiZWZvcmUgewogICAgZGlzcGxheTogdGFibGU7CiAgICBjb250ZW50OiAiICIKfQoKLmF0dHItYnRuLWdyb3VwLXZlcnRpY2FsPi5hdHRyLWJ0bi1ncm91cDphZnRlciwKLmF0dHItYnRuLXRvb2xiYXI6YWZ0ZXIsCi5hdHRyLWNsZWFyZml4OmFmdGVyLAouYXR0ci1jb250YWluZXItZmx1aWQ6YWZ0ZXIsCi5hdHRyLWNvbnRhaW5lcjphZnRlciwKLmF0dHItZGwtaG9yaXpvbnRhbCBkZDphZnRlciwKLmF0dHItZm9ybS1ob3Jpem9udGFsIC5hdHRyLWZvcm0tZ3JvdXA6YWZ0ZXIsCi5hdHRyLW1vZGFsLWZvb3RlcjphZnRlciwKLmF0dHItbW9kYWwtaGVhZGVyOmFmdGVyLAouYXR0ci1uYXY6YWZ0ZXIsCi5hdHRyLW5hdmJhci1jb2xsYXBzZTphZnRlciwKLmF0dHItbmF2YmFyLWhlYWRlcjphZnRlciwKLmF0dHItbmF2YmFyOmFmdGVyLAouYXR0ci1wYWdlcjphZnRlciwKLmF0dHItcGFuZWwtYm9keTphZnRlciwKLmF0dHItcm93OmFmdGVyIHsKICAgIGNsZWFyOiBib3RoCn0KCi5hdHRyLWNlbnRlci1ibG9jayB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvCn0KCi5hdHRyLXB1bGwtcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQKfQoKLmF0dHItcHVsbC1sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQKfQoKLmF0dHItaGlkZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLmF0dHItc2hvdyB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Cn0KCi5hdHRyLWludmlzaWJsZSB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW4KfQoKLmF0dHItdGV4dC1oaWRlIHsKICAgIGZvbnQ6IDAvMCBhOwogICAgY29sb3I6IHRyYW5zcGFyZW50OwogICAgdGV4dC1zaGFkb3c6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMAp9CgouYXR0ci1oaWRkZW4gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCi5hdHRyLWFmZml4IHsKICAgIHBvc2l0aW9uOiBmaXhlZAp9CgpALW1zLXZpZXdwb3J0IHsKICAgIHdpZHRoOiBkZXZpY2Utd2lkdGgKfQoKLmF0dHItdmlzaWJsZS1sZywKLmF0dHItdmlzaWJsZS1tZCwKLmF0dHItdmlzaWJsZS1zbSwKLmF0dHItdmlzaWJsZS14cyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKLmF0dHItdmlzaWJsZS1sZy1ibG9jaywKLmF0dHItdmlzaWJsZS1sZy1pbmxpbmUsCi5hdHRyLXZpc2libGUtbGctaW5saW5lLWJsb2NrLAouYXR0ci12aXNpYmxlLW1kLWJsb2NrLAouYXR0ci12aXNpYmxlLW1kLWlubGluZSwKLmF0dHItdmlzaWJsZS1tZC1pbmxpbmUtYmxvY2ssCi5hdHRyLXZpc2libGUtc20tYmxvY2ssCi5hdHRyLXZpc2libGUtc20taW5saW5lLAouYXR0ci12aXNpYmxlLXNtLWlubGluZS1ibG9jaywKLmF0dHItdmlzaWJsZS14cy1ibG9jaywKLmF0dHItdmlzaWJsZS14cy1pbmxpbmUsCi5hdHRyLXZpc2libGUteHMtaW5saW5lLWJsb2NrIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmF0dHItdmlzaWJsZS14cyB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudAogICAgfQogICAgdGFibGUuYXR0ci12aXNpYmxlLXhzIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50CiAgICB9CiAgICB0ci5hdHRyLXZpc2libGUteHMgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50CiAgICB9CiAgICB0ZC5hdHRyLXZpc2libGUteHMsCiAgICB0aC5hdHRyLXZpc2libGUteHMgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmF0dHItdmlzaWJsZS14cy1ibG9jayB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDo3NjdweCkgewogICAgLmF0dHItdmlzaWJsZS14cy1pbmxpbmUgewogICAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci12aXNpYmxlLXhzLWlubGluZS1ibG9jayB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjk5MXB4KSB7CiAgICAuYXR0ci12aXNpYmxlLXNtIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50CiAgICB9CiAgICB0YWJsZS5hdHRyLXZpc2libGUtc20gewogICAgICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQKICAgIH0KICAgIHRyLmF0dHItdmlzaWJsZS1zbSB7CiAgICAgICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQKICAgIH0KICAgIHRkLmF0dHItdmlzaWJsZS1zbSwKICAgIHRoLmF0dHItdmlzaWJsZS1zbSB7CiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5OTFweCkgewogICAgLmF0dHItdmlzaWJsZS1zbS1ibG9jayB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTkxcHgpIHsKICAgIC5hdHRyLXZpc2libGUtc20taW5saW5lIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTkxcHgpIHsKICAgIC5hdHRyLXZpc2libGUtc20taW5saW5lLWJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgYW5kIChtYXgtd2lkdGg6MTE5OXB4KSB7CiAgICAuYXR0ci12aXNpYmxlLW1kIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50CiAgICB9CiAgICB0YWJsZS5hdHRyLXZpc2libGUtbWQgewogICAgICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQKICAgIH0KICAgIHRyLmF0dHItdmlzaWJsZS1tZCB7CiAgICAgICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQKICAgIH0KICAgIHRkLmF0dHItdmlzaWJsZS1tZCwKICAgIHRoLmF0dHItdmlzaWJsZS1tZCB7CiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjk5MnB4KSBhbmQgKG1heC13aWR0aDoxMTk5cHgpIHsKICAgIC5hdHRyLXZpc2libGUtbWQtYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6OTkycHgpIGFuZCAobWF4LXdpZHRoOjExOTlweCkgewogICAgLmF0dHItdmlzaWJsZS1tZC1pbmxpbmUgewogICAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjk5MnB4KSBhbmQgKG1heC13aWR0aDoxMTk5cHgpIHsKICAgIC5hdHRyLXZpc2libGUtbWQtaW5saW5lLWJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpIHsKICAgIC5hdHRyLXZpc2libGUtbGcgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQKICAgIH0KICAgIHRhYmxlLmF0dHItdmlzaWJsZS1sZyB7CiAgICAgICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudAogICAgfQogICAgdHIuYXR0ci12aXNpYmxlLWxnIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudAogICAgfQogICAgdGQuYXR0ci12aXNpYmxlLWxnLAogICAgdGguYXR0ci12aXNpYmxlLWxnIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KSB7CiAgICAuYXR0ci12aXNpYmxlLWxnLWJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEyMDBweCkgewogICAgLmF0dHItdmlzaWJsZS1sZy1pbmxpbmUgewogICAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEyMDBweCkgewogICAgLmF0dHItdmlzaWJsZS1sZy1pbmxpbmUtYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuYXR0ci1oaWRkZW4teHMgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudAogICAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTkxcHgpIHsKICAgIC5hdHRyLWhpZGRlbi1zbSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjk5MnB4KSBhbmQgKG1heC13aWR0aDoxMTk5cHgpIHsKICAgIC5hdHRyLWhpZGRlbi1tZCB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOjEyMDBweCkgewogICAgLmF0dHItaGlkZGVuLWxnIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKICAgIH0KfQoKLmF0dHItdmlzaWJsZS1wcmludCB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKQG1lZGlhIHByaW50IHsKICAgIC5hdHRyLXZpc2libGUtcHJpbnQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQKICAgIH0KICAgIHRhYmxlLmF0dHItdmlzaWJsZS1wcmludCB7CiAgICAgICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudAogICAgfQogICAgdHIuYXR0ci12aXNpYmxlLXByaW50IHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudAogICAgfQogICAgdGQuYXR0ci12aXNpYmxlLXByaW50LAogICAgdGguYXR0ci12aXNpYmxlLXByaW50IHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQKICAgIH0KfQoKLmF0dHItdmlzaWJsZS1wcmludC1ibG9jayB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQKfQoKQG1lZGlhIHByaW50IHsKICAgIC5hdHRyLXZpc2libGUtcHJpbnQtYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQKICAgIH0KfQoKLmF0dHItdmlzaWJsZS1wcmludC1pbmxpbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCkBtZWRpYSBwcmludCB7CiAgICAuYXR0ci12aXNpYmxlLXByaW50LWlubGluZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQKICAgIH0KfQoKLmF0dHItdmlzaWJsZS1wcmludC1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Cn0KCkBtZWRpYSBwcmludCB7CiAgICAuYXR0ci12aXNpYmxlLXByaW50LWlubGluZS1ibG9jayB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQKICAgIH0KfQoKQG1lZGlhIHByaW50IHsKICAgIC5hdHRyLWhpZGRlbi1wcmludCB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50CiAgICB9Cn0="}},"time_used":96,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":96,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/tg.svg","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.882Z","timestamp":1785128398882,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/tg.svg HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/svg+xml\r\ncontent-length: 262\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"1a1-67c3620e-f4e118188d5f106d;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 7980ff1d5c00584b803f31679bd2912d-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.019\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":417,"size_decoded":837,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"b4971d60d80ec71eec896e6b68b21bea","sha1":"d78001516045d48db46ac1e6ade2184cc556c950","sha256":"81c8bf7d97e6c771f4f09a107c4b715016e48a0a9477c9c786928e86132cad08","sha512":"f5661e9bc1f9659f27e5fb8a934ef6ab6920f5eed98ad882df2acd259adf31fa0e2f726e82b63eb4e2eb9cbdeea28e0635926e787c18ae1a2e09a328cbab9ffb","ssdeep":"","tlshash":"f9e0abd7d304e469885686106b38b36a905ea0ed758a8bacc5179461d14b7c6d22ab38","first_seen":"2025-07-12T09:22:20.850999Z","last_seen":"2026-07-27T05:01:06.110182Z","times_seen":10,"resource_available":false,"data":"PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtOS40MTcgMTUuMTgxLS4zOTcgNS41ODRjLjU2OCAwIC44MTQtLjI0NCAxLjEwOS0uNTM3bDIuNjYzLTIuNTQ1IDUuNTE4IDQuMDQxYzEuMDEyLjU2NCAxLjcyNS4yNjcgMS45OTgtLjkzMWwzLjYyMi0xNi45NzIuMDAxLS4wMDFjLjMyMS0xLjQ5Ni0uNTQxLTIuMDgxLTEuNTI3LTEuNzE0bC0yMS4yOSA4LjE1MWMtMS40NTMuNTY0LTEuNDMxIDEuMzc0LS4yNDcgMS43NDFsNS40NDMgMS42OTMgMTIuNjQzLTcuOTExYy41OTUtLjM5NCAxLjEzNi0uMTc2LjY5MS4yMTh6IiBmaWxsPSIjMDM5YmU1Ii8+PC9zdmc+"}},"time_used":81,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":81,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/tab_img5.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.855Z","timestamp":1785128398855,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/tab_img5.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 568\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 6ff73a2396a679a9a3630b9a07929ebf-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.018\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":568,"size_decoded":889,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"70382c0617fd520d52b88b3d83e4cfe2","sha1":"b810cb9d5d271ebf8d34c94c32307e966df18783","sha256":"4ae9528656cbb393912d8454e083c9c0920954b5e8ed0412fe0d5e42256dbe02","sha512":"648c3cf06962fa860441ff42034ea1b45664542eb6694eb05c06880ad7a811f032b8f46973941c2addb30a90a74fd0f3b27f2c5c7e772edf0f34e4ab7f116e19","ssdeep":"","tlshash":"62f00e8ede766a10e073207ccd2a73314a2276a06b04ebcf512469666ddf9a0ce988d1","first_seen":"2026-07-27T03:56:42.551269Z","last_seen":"2026-07-27T05:01:06.12339Z","times_seen":3,"resource_available":false,"data":"UklGRjACAABXRUJQVlA4WAoAAAAYAAAAEwAAEwAAQUxQSCIBAAABkGPbtmlb49m238ts285sM7Nt27b5bduMVYBfAuOqChExAYiM/zhvhoRK0zcf1D6olRfL9UGDxikGY7f0xSh64214/MkbXqyKMvtys+tegttTLVa/uYpoq9Z6HwCljzvv1x8LU7htzoYBONxOv+u/kC4kbgMpYymImya/xeKatMBODKoZQF4vzrtcNgQsb8ujYArUl6F8WXHNC6hrAp9ZYDQFdpyb04CbFhD30AwWQ6ChKLkDuOQAM6tXZj13bCBq1n0DyJvG4Saq2cdftcHgnNVFQO2+2kwewFwhsO95GaBp6UhBwPYW0LWwImDwpxWha6Mu+H0vECD93GGpKbDet7i/+sdaCNJ+/Rc3UkLve9e++jokIwxQjJ548Xq1zE0OAFZQOCAmAAAA0AIAnQEqFAAUAD5RJI9Fo6IhFAQAOAUEtIAAHtHQAAD+/KgAAABFWElGugAAAEV4aWYAAElJKgAIAAAABgASAQMAAQAAAAEAAAAaAQUAAQAAAFYAAAAbAQUAAQAAAF4AAAAoAQMAAQAAAAIAAAATAgMAAQAAAAEAAABphwQAAQAAAGYAAAAAAAAASAAAAAEAAABIAAAAAQAAAAYAAJAHAAQAAAAwMjEwAZEHAAQAAAABAgMAAKAHAAQAAAAwMTAwAaADAAEAAAD//wAAAqAEAAEAAAAUAAAAA6AEAAEAAAAUAAAAAAAAAA=="}},"time_used":106,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":106,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/2023/12/bg-started-in-steps.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.150Z","timestamp":1785128399150,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/2023/12/bg-started-in-steps.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/post-95fea.css?ver=1706574923\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\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\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: image/webp\r\ncontent-length: 3752\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: aeb826c7fdfc50cc2bc0272437f941ae-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.014\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":3752,"size_decoded":4074,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"b383f3ae9ccc5965575ba8e29ccfead5","sha1":"99b0f16fd731540155b4b8defb8a8f79571c9e34","sha256":"19d08b1c1f62621ddf5c7b529b84416451bae061972bf765f37ae86babaee09c","sha512":"6b8b582aa0c42e4e9d8a3f614beb439a2b6abacfc76de97db72bbde4f45a9e997b341f4fa82cce82527a767da71a6133b5af02ec0fa68d291c517e20edaaa1df","ssdeep":"","tlshash":"b671f0dac050b6e0f02fdc7aaa54aa76c297f39e131c964217c2657c88a7d06614f1fc","first_seen":"2026-07-27T03:56:42.590958Z","last_seen":"2026-07-27T05:01:06.164206Z","times_seen":3,"resource_available":false,"data":"UklGRqAOAABXRUJQVlA4WAoAAAAIAAAAPwYAhgMAVlA4IMANAAAQawGdASpABocDPlEokEcjoiGhIDD4IHAKCWlu7mG8Jxv3/+f8k5sgen8RXGaR98b5X/b/Rzfn8U+1H7/z95V3ngAAVp9GXl+e2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe1oY/Rs0yhyCNiCo57Yi8QVHPbEXiCo57Yi8QVHPYUbNWY0y57aHpU1SqDS1F1ZzkEbEFRz2xF4gqOewmThrASqMaGRSwsJpnhls5yCNiCo57Yi8QVHPbEXiCo57Yi8QTaNmrMaZdGkT5JvmoDaI+Vkq+2IvEFRz2xF4gqOe2IvEAjj1A4JVGNCUCY8zMBM2MrSfb4k5yRGXl+e2IvEFRz2xF4gqOe2IvEFRz2FSWWBeFMlY0hjfJMgO8/IxvRsQVHPbEXiCo57Yi8QU9JzqCVOK8WLMVNGywrTQ9wmifSSbCc7aLkEbEFRz2xF4gqOe2IvEFRz2uBboI12S4ZYQU7iqcKyQ1GYAorIh8ZeX57Yi8QVHPbEXiCo5RJNhLKSD0LWF27IJS0J9T7gEoPMSs2UlgqznII2IKjntiLxBUc9sReIKjKrQ2TERb4I12EFuQEgvuKyRx6gcEqdDITU22IvEFRz2xF4gqOe2IvkEjGuJuKQUndMB9XBD1zXNtNtiLxBUc9sReIKjntiLxBUcoZDt+TFVPSo1jTrqzYYgwz+5HdJPqxhKm6pdsReIKjntiLxBUc9sReIKjKkmxVLMiHjRyO2xF4gqOe2IvEFRz2xF4gqOe2IeVt6uPNPTRbcMKSk34gqADkux81uIvEFRz2xF4gqOe2IvEFRz5k1F1ZzkEbEFRz2xF4gqOe2IvEFRldAJF1ZzkEbEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4gqOe2IvEFRz2xF4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"}},"time_used":45,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":43,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/images/payments/payment-solana.png","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.875Z","timestamp":1785128398875,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/images/payments/payment-solana.png HTTP/1.1\r\nHost: circuittradetech.com\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://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: image/webp\r\ncontent-length: 1898\r\ncache-control: public, max-age=604800\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 714de45474d43118881668db4f665567-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":1898,"size_decoded":2220,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"6dae94819331c4cc625cfcc1ccfe2fbc","sha1":"745177d8706ed053d83fde886e882bbf389e47d6","sha256":"5ea9577cd87f04ace56ebc42afb4156a3fd68e13bbe11f4dbe517baf0b3ca287","sha512":"b9637089697bd6826848521f2fd7a12cc8c1d478834cca3b7076efde9f63ec600bfc68ca94d9714fba3f0555f8e3384bff38c26485751fe30e690bfafc9c4ecc","ssdeep":"","tlshash":"88415bf42a382b2ce100707c07cb7b581495ddb4175e13e121cc97062bb00e25c867ca","first_seen":"2026-07-27T03:56:42.571822Z","last_seen":"2026-07-27T05:01:06.100061Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":85,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":85,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/translate_static/img/te_ctrl3.gif","fqdn":"translate.googleapis.com","domain":"translate.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":"img","requested_by":"https://circuittradetech.com/","date":"2026-07-27T05:00:00.119Z","timestamp":1785128400119,"http_version":"HTTP/3","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 /translate_static/img/te_ctrl3.gif HTTP/1.1\r\nHost: translate.googleapis.com\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, i\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\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 1412\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 02:32:24 GMT\r\nexpires: Fri, 23 Jul 2027 02:32:24 GMT\r\ncache-control: public, max-age=31536000\r\nage: 354456\r\nlast-modified: Thu, 03 Oct 2019 10:15:00 GMT\r\ncontent-type: image/gif\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":1412,"size_decoded":2072,"mime_type":"image/gif","magic":"GIF image data, version 89a, 84 x 19","md5":"9afe50090c0bc612953d081295eab5b1","sha1":"71a4da2a622879c29176ecfa5afe1bbe3e8cfa40","sha256":"d228d0256370863119c043f1e5ca8f3930f6999bd9f250434b6d8935f45dc171","sha512":"d7290b951cec51994f3480c32b70de0faeca433b5d99209b044e1d4c12327768de8c344b6bded806d993251e0ee6f98f0dd64f4480e999fbc06abfe3dd8056fa","ssdeep":"","tlshash":"042182b5cc99114a5be1bd27a334899da8b12c56c38d74595436bdb43470f098422812","first_seen":"2023-04-05T08:27:37Z","last_seen":"2026-07-27T17:47:56.709882Z","times_seen":15477,"resource_available":false,"data":"R0lGODlhVAATAOePAAAAyxZBmhdFrBhHrhpMyB1Uxh1Vzh5X0R9ZzR9awSFf1SNk2CYW0SZq2yZs4Cka2yt45TB9ITJ11TODHjODIDWKGzdgrDmUGjuaRTybGT1svj6hGUClGEF1tEGnFkGpGUKrFUNnrkWjYUWoUkZtskdww0dxy0l/EkmP5EqlLUtLS0uxFFCmLlGY6lON3la4E1e0GFhYD1uxRlu5EVyyU1+vLGW8FGef5mmTx22p7W6PEW+d32+e4XKa2Hp6en6p5H9lE4eHh4i06YurxYyqyYyufoy8iI29ho7AhpCz55DEhJW55ZaT15jClqGm9afE2KgeFavK7LDN47rV7b7J4cTa9cXi0MjX8Mrd9c0lGs3l/9QmGtbW1tfq/9jl9djl+NmcANns0dnt4NonG9otM9yGft4pG9/x4OCrIuG3I+Hv/+Lfz+Px4eRWTOSaAeSyNuUpHOWIgOalAOby/+c5P+egD+exAefJcOhYXuqjAOq3Tuq9YOtqbuvHG+vz++xYTOy8AO2sAe6xAO7x9+/Ecu/SaPDYaPD2//D47/KzAPS7APfpy/ng3fzp7P347f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEKAP8ALAAAAABUABMAAAj+AP+pGEiw4MB//4goXMhQ4b8gECNKnIiwosWLGBE+2sjxkaNGIB115KjCB5eTKFP6UEEkypyXMGNGIRJkpM2NQSwO2bkzI8aRjOL8oUP0TxxGI1WkXIqSZcynMGnetJnz386OanpWxNGhKw6NHOMQHUs2jsiNSpkudQr1qVScI2vitLpRTZe7XdRoGYKQ65K/Hb5yxEO2MJ0/HdNyYQCgMQAGTYnAfOAYwIOociNy1Pwo55BHXZZ07XC3Ct9/HZZUFP1vo9ixfNYsWsOHDp6kKJlUZhIZppPKTjBvhtiZOM7PdlN34Xp3Ct/Uqzu0XjT2z5qRaxrhRsn4cUq2Lyn+W475FqfEjkE+4+0yhXkXKUNGy+/6yFAdotc7HrqpmItuALz15ltjwQmHnnGbqddcV3jBl9pfEIrmSB+KKILYVNtxB9l3ksX0wGXkyWUeZ8eBdheDDcY332iOVKiIIR0tgcKMNKKQwyP9+ReggL4VaGBxNZGYnl3r4TXFE/FFCGEHLVa4SEdR1EhjDofkqBZ4bb30lpDGeUYkiu89t2JXTb4Yo5Qz3mglU1hmWZ6IcM01hBZVrDeFFEiipiRgE1ZYREdzaCGoFi3MKASOJql10kotZfnSTHBiWNVOd0qBp1Zj0mdIGiOMYMVNVdAYxSMCGWQqQg2lSsRDGKKnE09jp/lU0SNhdDqCCJ929EWhKLTQBamyBuvTRMRKJKywGxlh6whGWOGsESLQeCiwx1Zr7bWyckTDstxi0MENHGEr7rjWdqQst7Ya0RG57LZ70UhWQGurCM2O5O697N6EyL773hQQADs="}},"time_used":16,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/global9e33.css?ver=1706574922","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.769Z","timestamp":1785128398769,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/elementor/css/global9e33.css?ver=1706574922 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 7050\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"27259-67c3620e-2d824618d06b78c9;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: ce7442f5fff4d5bba84745ca9a741535-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.015\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":160345,"size_decoded":7623,"mime_type":"text/css","magic":"ASCII text","md5":"28bca58ce55a5105e5e66402ad389b94","sha1":"227b3d832cc7bfadf69c0d2025cd372c6907142e","sha256":"05ffc7eec97d5d5e48486b27fc94ca11359989245363cc338d28dd121392ec86","sha512":"16fa78c7b1b4c028092fa1bf1e831145f79d28cf3cbaf184e094b23d22683a888f6d56aced731c10509053178816245ca284583d7fc78555ba31bd95d3138922","ssdeep":"1536:q3o9HJ/ky63b1dbbLQCg6j/XGnoHtVR6RO5EOI6RO5EO9:CiHJ3","tlshash":"33f377047c32d262e82f077fa28fd1982d8c64cbdc298f96f99c91564fdcb2a6331595","first_seen":"2026-07-27T03:56:42.477606Z","last_seen":"2026-07-27T05:30:59.806313Z","times_seen":6,"resource_available":false,"data":"LmVsZW1lbnRvci13aWRnZXQtaGVhZGluZyAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UgLndpZGdldC1pbWFnZS1jYXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC13ZWlnaHQpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvci5lbGVtZW50b3ItZHJvcC1jYXAtdmlldy1zdGFja2VkIC5lbGVtZW50b3ItZHJvcC1jYXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvci5lbGVtZW50b3ItZHJvcC1jYXAtdmlldy1mcmFtZWQgLmVsZW1lbnRvci1kcm9wLWNhcCwKLmVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IuZWxlbWVudG9yLWRyb3AtY2FwLXZpZXctZGVmYXVsdCAuZWxlbWVudG9yLWRyb3AtY2FwIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtYnV0dG9uIC5lbGVtZW50b3ItYnV0dG9uIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC13ZWlnaHQpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1saW5lLWhlaWdodCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItYWNjZW50KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlciB7CiAgICAtLWRpdmlkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyIC5lbGVtZW50b3ItZGl2aWRlcl9fdGV4dCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLmVsZW1lbnRvci12aWV3LXN0YWNrZWQgLmVsZW1lbnRvci1pY29uIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLmVsZW1lbnRvci12aWV3LWZyYW1lZCAuZWxlbWVudG9yLWljb24sCi5lbGVtZW50b3Itd2lkZ2V0LWRpdmlkZXIuZWxlbWVudG9yLXZpZXctZGVmYXVsdCAuZWxlbWVudG9yLWljb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3Itc2Vjb25kYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtZGl2aWRlci5lbGVtZW50b3Itdmlldy1mcmFtZWQgLmVsZW1lbnRvci1pY29uLAouZWxlbWVudG9yLXdpZGdldC1kaXZpZGVyLmVsZW1lbnRvci12aWV3LWRlZmF1bHQgLmVsZW1lbnRvci1pY29uIHN2ZyB7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3Itc2Vjb25kYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWljb24uZWxlbWVudG9yLXZpZXctc3RhY2tlZCAuZWxlbWVudG9yLWljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLmVsZW1lbnRvci12aWV3LWZyYW1lZCAuZWxlbWVudG9yLWljb24sCi5lbGVtZW50b3Itd2lkZ2V0LWljb24uZWxlbWVudG9yLXZpZXctZGVmYXVsdCAuZWxlbWVudG9yLWljb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLmVsZW1lbnRvci12aWV3LWZyYW1lZCAuZWxlbWVudG9yLWljb24sCi5lbGVtZW50b3Itd2lkZ2V0LWljb24uZWxlbWVudG9yLXZpZXctZGVmYXVsdCAuZWxlbWVudG9yLWljb24gc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3guZWxlbWVudG9yLXZpZXctc3RhY2tlZCAuZWxlbWVudG9yLWljb24gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3Itdmlldy1mcmFtZWQgLmVsZW1lbnRvci1pY29uLAouZWxlbWVudG9yLXdpZGdldC1pY29uLWJveC5lbGVtZW50b3Itdmlldy1kZWZhdWx0IC5lbGVtZW50b3ItaWNvbiB7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94IC5lbGVtZW50b3ItaWNvbi1ib3gtdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3ggLmVsZW1lbnRvci1pY29uLWJveC10aXRsZSwKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3ggLmVsZW1lbnRvci1pY29uLWJveC10aXRsZSBhIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3ggLmVsZW1lbnRvci1pY29uLWJveC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXN0YXItcmF0aW5nIC5lbGVtZW50b3Itc3Rhci1yYXRpbmdfX3RpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtZ2FsbGVyeSAuZ2FsbGVyeS1pdGVtIC5nYWxsZXJ5LWNhcHRpb24gewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1saXN0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW06bm90KDpsYXN0LWNoaWxkKTphZnRlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaWNvbi1saXN0IC5lbGVtZW50b3ItaWNvbi1saXN0LWljb24gaSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtaWNvbiBzdmcgewogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbT4uZWxlbWVudG9yLWljb24tbGlzdC10ZXh0LAouZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbT5hIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC13ZWlnaHQpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWNvdW50ZXIgLmVsZW1lbnRvci1jb3VudGVyLW51bWJlci13cmFwcGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWNvdW50ZXIgLmVsZW1lbnRvci1jb3VudGVyLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3Itc2Vjb25kYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXByb2dyZXNzIC5lbGVtZW50b3ItcHJvZ3Jlc3Mtd3JhcHBlciAuZWxlbWVudG9yLXByb2dyZXNzLWJhciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXByb2dyZXNzIC5lbGVtZW50b3ItdGl0bGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC13ZWlnaHQpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC10ZXN0aW1vbmlhbCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLWNvbnRlbnQgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC13ZWlnaHQpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC10ZXN0aW1vbmlhbCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLW5hbWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdGVzdGltb25pYWwgLmVsZW1lbnRvci10ZXN0aW1vbmlhbC1qb2IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1zZWNvbmRhcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi10aXRsZSwKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi10aXRsZSBhIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRhYnMgLmVsZW1lbnRvci10YWItdGl0bGUuZWxlbWVudG9yLWFjdGl2ZSwKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi10aXRsZS5lbGVtZW50b3ItYWN0aXZlIGEgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC10YWJzIC5lbGVtZW50b3ItdGFiLXRpdGxlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtYWNjb3JkaW9uIC5lbGVtZW50b3ItYWNjb3JkaW9uLWljb24sCi5lbGVtZW50b3Itd2lkZ2V0LWFjY29yZGlvbiAuZWxlbWVudG9yLWFjY29yZGlvbi10aXRsZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1hY2NvcmRpb24gLmVsZW1lbnRvci1hY2NvcmRpb24taWNvbiBzdmcgewogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1hY2NvcmRpb24gLmVsZW1lbnRvci1hY3RpdmUgLmVsZW1lbnRvci1hY2NvcmRpb24taWNvbiwKLmVsZW1lbnRvci13aWRnZXQtYWNjb3JkaW9uIC5lbGVtZW50b3ItYWN0aXZlIC5lbGVtZW50b3ItYWNjb3JkaW9uLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItYWNjZW50KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtYWNjb3JkaW9uIC5lbGVtZW50b3ItYWN0aXZlIC5lbGVtZW50b3ItYWNjb3JkaW9uLWljb24gc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1hY2NvcmRpb24gLmVsZW1lbnRvci1hY2NvcmRpb24tdGl0bGUgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItY29udGVudCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRvZ2dsZSAuZWxlbWVudG9yLXRvZ2dsZS10aXRsZSwKLmVsZW1lbnRvci13aWRnZXQtdG9nZ2xlIC5lbGVtZW50b3ItdG9nZ2xlLWljb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdG9nZ2xlIC5lbGVtZW50b3ItdG9nZ2xlLWljb24gc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtdG9nZ2xlIC5lbGVtZW50b3ItdGFiLXRpdGxlLmVsZW1lbnRvci1hY3RpdmUgYSwKLmVsZW1lbnRvci13aWRnZXQtdG9nZ2xlIC5lbGVtZW50b3ItdGFiLXRpdGxlLmVsZW1lbnRvci1hY3RpdmUgLmVsZW1lbnRvci10b2dnbGUtaWNvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLWFjY2VudCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRvZ2dsZSAuZWxlbWVudG9yLXRvZ2dsZS10aXRsZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXRvZ2dsZSAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtYWxlcnQgLmVsZW1lbnRvci1hbGVydC10aXRsZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWFsZXJ0IC5lbGVtZW50b3ItYWxlcnQtZGVzY3JpcHRpb24gewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LXJldGluYSAuaGZlLXJldGluYS1pbWFnZS1jb250YWluZXIgLmhmZS1yZXRpbmEtaW1nIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1yZXRpbmEgLndpZGdldC1pbWFnZS1jYXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtY29weXJpZ2h0IC5oZmUtY29weXJpZ2h0LXdyYXBwZXIgYSwKLmVsZW1lbnRvci13aWRnZXQtY29weXJpZ2h0IC5oZmUtY29weXJpZ2h0LXdyYXBwZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtY29weXJpZ2h0IC5oZmUtY29weXJpZ2h0LXdyYXBwZXIsCi5lbGVtZW50b3Itd2lkZ2V0LWNvcHlyaWdodCAuaGZlLWNvcHlyaWdodC13cmFwcGVyIGEgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLAouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW0gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtOmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLnN1Yi1tZW51IGEuaGZlLXN1Yi1tZW51LWl0ZW06aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSAubWVudS1pdGVtLmN1cnJlbnQtbWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLmhpZ2hsaWdodGVkLAouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW06Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLmhmZS1uYXYtbWVudS1sYXlvdXQ6bm90KC5oZmUtcG9pbnRlcl9fZnJhbWVkKSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLmhmZS1uYXYtbWVudS1sYXlvdXQ6bm90KC5oZmUtcG9pbnRlcl9fZnJhbWVkKSAubWVudS1pdGVtLnBhcmVudCBhLmhmZS1tZW51LWl0ZW06YWZ0ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLWFjY2VudCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSAuaGZlLW5hdi1tZW51LWxheW91dDpub3QoLmhmZS1wb2ludGVyX19mcmFtZWQpIC5tZW51LWl0ZW0ucGFyZW50IC5zdWItbWVudSAuaGZlLWhhcy1zdWJtZW51LWNvbnRhaW5lciBhOmFmdGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLmhmZS1wb2ludGVyX19mcmFtZWQgLm1lbnUtaXRlbS5wYXJlbnQgYS5oZmUtbWVudS1pdGVtOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5oZmUtcG9pbnRlcl9fZnJhbWVkIC5tZW51LWl0ZW0ucGFyZW50IGEuaGZlLW1lbnUtaXRlbTphZnRlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLnN1Yi1tZW51IGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0sCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbSwKLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaSBhLmhmZS1tZW51LWl0ZW0sCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgLm1lbnUtaXRlbSBhLmhmZS1tZW51LWl0ZW0uZWxlbWVudG9yLWJ1dHRvbiB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLWFjY2VudCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1hY2NlbnQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1wYWdlLXRpdGxlIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZSwKLmVsZW1lbnRvci13aWRnZXQtcGFnZS10aXRsZSAuaGZlLXBhZ2UtdGl0bGUgYSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1wYWdlLXRpdGxlIC5oZmUtcGFnZS10aXRsZS1pY29uIGkgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtcGFnZS10aXRsZSAuaGZlLXBhZ2UtdGl0bGUtaWNvbiBzdmcgewogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1oZmUtc2l0ZS10aXRsZSAuZWxlbWVudG9yLWhlYWRpbmctdGl0bGUsCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zaXRlLXRpdGxlIC5oZmUtaGVhZGluZyBhIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNpdGUtdGl0bGUgLmhmZS1oZWFkaW5nLXRleHQgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNpdGUtdGl0bGUgLmhmZS1pY29uIGkgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNpdGUtdGl0bGUgLmhmZS1pY29uIHN2ZyB7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zaXRlLXRhZ2xpbmUgLmhmZS1zaXRlLXRhZ2xpbmUgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3Itc2Vjb25kYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNpdGUtdGFnbGluZSAuaGZlLWljb24gaSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1oZmUtc2l0ZS10YWdsaW5lIC5oZmUtaWNvbiBzdmcgewogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1zaXRlLWxvZ28gLmhmZS1zaXRlLWxvZ28tY29udGFpbmVyIC5oZmUtc2l0ZS1sb2dvLWltZyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtc2l0ZS1sb2dvIC53aWRnZXQtaW1hZ2UtY2FwdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zZWFyY2gtYnV0dG9uIGlucHV0W3R5cGU9InNlYXJjaCJdLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zZWFyY2gtYnV0dG9uIC5oZmUtc2VhcmNoLWljb24tdG9nZ2xlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNlYXJjaC1idXR0b24gLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNlYXJjaC1idXR0b24gLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItdGV4dCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zZWFyY2gtYnV0dG9uIC5oZmUtc2VhcmNoLWZvcm1fX2NvbnRhaW5lciwKLmVsZW1lbnRvci13aWRnZXQtaGZlLXNlYXJjaC1idXR0b24gLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUgLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zZWFyY2gtYnV0dG9uIC5oZmUtaW5wdXQtZm9jdXMgLmhmZS1zZWFyY2gtaWNvbi10b2dnbGUgLmhmZS1zZWFyY2gtZm9ybV9faW5wdXQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LWhmZS1zZWFyY2gtYnV0dG9uIC5oZmUtc2VhcmNoLWZvcm1fX2lucHV0OmZvY3VzOjpwbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXRleHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1oZmUtc2VhcmNoLWJ1dHRvbiAuaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIgYnV0dG9uI2NsZWFyLXdpdGgtYnV0dG9uLAouZWxlbWVudG9yLXdpZGdldC1oZmUtc2VhcmNoLWJ1dHRvbiAuaGZlLXNlYXJjaC1mb3JtX19jb250YWluZXIgYnV0dG9uI2NsZWFyLAouZWxlbWVudG9yLXdpZGdldC1oZmUtc2VhcmNoLWJ1dHRvbiAuaGZlLXNlYXJjaC1pY29uLXRvZ2dsZSBidXR0b24jY2xlYXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci10ZXh0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtYnV0dG9uIC5tZi1idG4td3JhcGVyIHN2ZyB7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWJ1dHRvbiAubWYtYnRuLXdyYXBlciBpIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWJ1dHRvbiAubWV0Zm9ybS1idG46aG92ZXIgc3ZnIHsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtYnV0dG9uIC5tZXRmb3JtLWJ0bjpob3ZlciBpIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LXJlcXVpcmVkLWluZGljYXRvciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtZXJyb3ItbWVzc2FnZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLWZyb20sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLmlycy0tcm91bmQgLmlycy1oYW5kbGUgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZTpiZWZvcmUgewogICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fdHJhY2stLWFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6aG92ZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlciwgLnRleHQpLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0IC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCAubWYtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dCA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIpIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHQgLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuaXJzLS1yb3VuZCAuaXJzLXRvLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ6aG92ZXIgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mX211bHRpc2VsZWN0X19vcHRpb246Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwLAouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0OjpwbGFjZWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWVtYWlsIC5tZi1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZW1haWwgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1lbWFpbCAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5pcnMtLXJvdW5kIC5pcnMtdG8sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5pcnMtLXJvdW5kIC5pcnMtZnJvbTpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dDpob3ZlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6aG92ZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dD4ubWZfc2VsZWN0X19jb250cm9sLS1pcy1mb2N1c2VkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWZfbXVsdGlzZWxlY3RfX29wdGlvbjpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW51bWJlciAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1udW1iZXIgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbnVtYmVyIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5pcnMtLXJvdW5kIC5pcnMtYmFyLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5pcnMtLXJvdW5kIC5pcnMtdG86YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LXdyYXBwZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0OmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbWFnZS1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGVsZXBob25lIC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRlbGVwaG9uZSAubWYtaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZWxlcGhvbmUgLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtYmFyLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAuaXJzLS1yb3VuZCAuaXJzLXRvLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtdG86YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0OmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQ6aG92ZXIgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbWFnZS1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mX211bHRpc2VsZWN0X19vcHRpb246Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0LXdyYXBwZXIgLmZsYXRwaWNrci1jYWxlbmRhciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0OjpwbGFjZWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWRhdGUgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIC5tZi1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1kYXRlIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZGF0ZSAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1sYWJlbCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0Lm1mLWludmFsaWQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy1iYXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5pcnMtLXJvdW5kIC5pcnMtdG8sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5pcnMtLXJvdW5kIC5pcnMtZnJvbTpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy10bzpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtd3JhcHBlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQ6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dDpob3ZlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmhvdmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6aG92ZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWltYWdlLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dD4ubWZfc2VsZWN0X19jb250cm9sLS1pcy1mb2N1c2VkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWZfbXVsdGlzZWxlY3RfX29wdGlvbjpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGltZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dDotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRpbWUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10aW1lIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtYmFyLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtdG86YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0OmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbWFnZS1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1maWxlLXVwbG9hZC1jb250YWluZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQtc2VsZWN0IC5tZl9zZWxlY3RfX29wdGlvbiB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0LXNlbGVjdCAubWZfc2VsZWN0X19vcHRpb246aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1zZWxlY3QgLm1mX3NlbGVjdF9fb3B0aW9uLm1mX3NlbGVjdF9fb3B0aW9uLS1pcy1zZWxlY3RlZCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNlbGVjdCAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zZWxlY3QgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2VsZWN0IC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtYmFyLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtdG86YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0OmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbWFnZS1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1maWxlLXVwbG9hZC1jb250YWluZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbXVsdGktc2VsZWN0IC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLW11bHRpLXNlbGVjdCAubWYtaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1tdWx0aS1zZWxlY3QgLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuaXJzLS1yb3VuZCAuaXJzLXRvLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ6aG92ZXIgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mX211bHRpc2VsZWN0X19vcHRpb246Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwLAouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0OjpwbGFjZWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXRleHRhcmVhIC5tZi1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdGV4dGFyZWEgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi10ZXh0YXJlYSAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtY2hlY2tib3ggLm1mLWlucHV0LXJlcXVpcmVkLWluZGljYXRvciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWNoZWNrYm94IC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtZXJyb3ItbWVzc2FnZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtY2hlY2tib3gtb3B0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWNoZWNrYm94IC5tZi1jaGVja2JveC1vcHRpb24gaW5wdXRbdHlwZT0iY2hlY2tib3giXStzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCtzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtY2hlY2tib3gsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWNoZWNrYm94IC5tZi1jaGVja2JveC1vcHRpb24gaW5wdXRbdHlwZT0iY2hlY2tib3giXStzcGFuOmJlZm9yZSB7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWNoZWNrYm94IC5tZi1jaGVja2JveCwKLmVsZW1lbnRvci13aWRnZXQtbWYtY2hlY2tib3ggLm1mLWNoZWNrYm94LW9wdGlvbiBpbnB1dFt0eXBlPSJjaGVja2JveCJdK3NwYW4gewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1jaGVja2JveCAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFkaW8gLm1mLWlucHV0LXJlcXVpcmVkLWluZGljYXRvciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhZGlvIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtZXJyb3ItbWVzc2FnZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtcmFkaW8tb3B0aW9uIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhZGlvIC5tZi1yYWRpby1vcHRpb24gaW5wdXRbdHlwZT0icmFkaW8iXStzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtcmFkaW8tb3B0aW9uIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCtzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtcmFkaW8sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhZGlvIC5tZi1yYWRpby1vcHRpb24gaW5wdXRbdHlwZT0icmFkaW8iXStzcGFuOmJlZm9yZSB7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhZGlvIC5tZi1yYWRpbywKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFkaW8gLm1mLXJhZGlvLW9wdGlvbiBpbnB1dFt0eXBlPSJyYWRpbyJdK3NwYW4gewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYWRpbyAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zd2l0Y2ggLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc3dpdGNoIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtc3dpdGNoIC5tZi1pbnB1dC1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtY29udHJvbC1sYWJlbDo6YWZ0ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtY29udHJvbDpjaGVja2Vkfi5tZi1pbnB1dC1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXN3aXRjaCAubWYtaW5wdXQtc3dpdGNoIC5tZi1pbnB1dC1jb250cm9sOmNoZWNrZWR+Lm1mLWlucHV0LWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zd2l0Y2ggLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuaXJzLS1yb3VuZCAuaXJzLXRvLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQ6aG92ZXIgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mX211bHRpc2VsZWN0X19vcHRpb246Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhbmdlIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmFuZ2UgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYW5nZSAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuaXJzLS1yb3VuZCAuaXJzLWJhciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5pcnMtLXJvdW5kIC5pcnMtdG8sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuaXJzLS1yb3VuZCAuaXJzLXNpbmdsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5pcnMtLXJvdW5kIC5pcnMtZnJvbTpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuaXJzLS1yb3VuZCAuaXJzLXRvOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC13cmFwcGVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dDpob3ZlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLmlycy0tcm91bmQgLmlycy1oYW5kbGU6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dDpob3ZlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6aG92ZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6aG92ZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW1hZ2UtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dD4ubWZfc2VsZWN0X19jb250cm9sLS1pcy1mb2N1c2VkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWZfbXVsdGlzZWxlY3RfX29wdGlvbjpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX19sYWJlbC1jb250YWluZXIgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXVybCAubWYtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi11cmwgLm1mLWlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtdXJsIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC1sYWJlbCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0Lm1mLWludmFsaWQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmlycy0tcm91bmQgLmlycy1iYXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmlycy0tcm91bmQgLmlycy1zaW5nbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLmlycy0tcm91bmQgLmlycy10bzpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtd3JhcHBlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQ6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmhvdmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWltYWdlLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dDo6cGxhY2Vob2xkZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1wYXNzd29yZCAubWYtaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIC5tZi1pbnB1dDotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXBhc3N3b3JkIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcGFzc3dvcmQgLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtYmFyLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAuaXJzLS1yb3VuZCAuaXJzLXRvLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAuaXJzLS1yb3VuZCAuaXJzLWZyb206YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtdG86YmVmb3JlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LXdyYXBwZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtd3JhcHBlciAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0OmhvdmVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQ6aG92ZXIgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyOmZvY3VzIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbWFnZS1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQ+Lm1mX3NlbGVjdF9fY29udHJvbC0taXMtZm9jdXNlZCAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmZvY3VzIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mX211bHRpc2VsZWN0X19vcHRpb246Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpmb2N1cyAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWZfbXVsdGlzZWxlY3RfX21lbnUtbm90aWNlLS1uby1vcHRpb25zOmZvY3VzIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0LAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXIgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX2xhYmVsLWNvbnRhaW5lciB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLCAudGV4dCksCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0OjpwbGFjZWhvbGRlciwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctZm5hbWUgLm1mLXRpbWUtaW5wdXQ6OmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIC5tZi1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWZuYW1lIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlcikgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1mbmFtZSAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1sYWJlbCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXRbYXJpYS1pbnZhbGlkPSJ0cnVlIl0sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0Lm1mLWludmFsaWQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtd3JhcHBlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy1iYXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy1mcm9tLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5pcnMtLXJvdW5kIC5pcnMtdG8sCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5pcnMtLXJvdW5kIC5pcnMtZnJvbTpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy10bzpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGU6YmVmb3JlIHsKICAgIGJvcmRlci10b3AtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtd3JhcHBlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtd3JhcHBlciAuaW5wdXQtcmFuZ2VfX3RyYWNrLS1hY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC13cmFwcGVyIC5hc1JhbmdlIC5hc1JhbmdlLXBvaW50ZXIgLmFzUmFuZ2UtdGlwIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwgc3ZnIHBhdGggewogICAgc3Ryb2tlOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmaWxsOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQ6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXI6aG92ZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dDpob3ZlciAubWZfc2VsZWN0X19zaW5nbGUtdmFsdWUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmhvdmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmhvdmVyIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6aG92ZXIgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQ6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWltYWdlLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dD4ubWZfc2VsZWN0X19jb250cm9sLS1pcy1mb2N1c2VkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1jYWxjdWxhdGlvbi10b3RhbDpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWZfbXVsdGlzZWxlY3RfX29wdGlvbjpmb2N1cywKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWU6Zm9jdXMgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmlycy0tcm91bmQgLmlycy1zaW5nbGUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIsIC50ZXh0KSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi10aW1lLWlucHV0OjpiZWZvcmUgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1sbmFtZSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dDotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3RpbmctbG5hbWUgOmlzKC5tZl9zZWxlY3RfX3BsYWNlaG9sZGVyLCAubWZfbXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyKSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLWxuYW1lIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3Rpbmctb3B0aW4gLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3Rpbmctb3B0aW4gLm1mLWlucHV0LXJlcXVpcmVkLWluZGljYXRvciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLW9wdGluIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQubWYtaW52YWxpZCB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtZXJyb3ItbWVzc2FnZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLW9wdGluIC5tZi1jaGVja2JveC1vcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il0rc3BhbjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCtzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLW9wdGluIC5tZi1jaGVja2JveCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il0rc3BhbjpiZWZvcmUgewogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1saXN0aW5nLW9wdGluIC5tZi1jaGVja2JveCwKLmVsZW1lbnRvci13aWRnZXQtbWYtbGlzdGluZy1vcHRpbiAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il0rc3BhbiB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWxpc3Rpbmctb3B0aW4gLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1pbnB1dC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1pbnB1dC1sYWJlbCBpbnB1dFt0eXBlPSJjaGVja2JveCJdK3NwYW46YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWdkcHItY29uc2VudCAubWYtaW5wdXQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWdkcHItY29uc2VudCAubWYtaW5wdXQtd3JhcHBlciAubWYtaW5wdXQtbGFiZWwgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1nZHByLWNvbnNlbnQgLm1mLWlucHV0LXJlcXVpcmVkLWluZGljYXRvciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1nZHByLWNvbnNlbnQgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1jaGVja2JveC1vcHRpb24gewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1jaGVja2JveC1vcHRpb24gaW5wdXRbdHlwZT0iY2hlY2tib3giXStzcGFuOmJlZm9yZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1nZHByLWNvbnNlbnQgLm1mLWNoZWNrYm94LW9wdGlvbiBpbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQrc3BhbjpiZWZvcmUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1jaGVja2JveCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZ2Rwci1jb25zZW50IC5tZi1jaGVja2JveC1vcHRpb24gaW5wdXRbdHlwZT0iY2hlY2tib3giXStzcGFuOmJlZm9yZSB7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWdkcHItY29uc2VudCAubWYtY2hlY2tib3gsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWdkcHItY29uc2VudCAubWYtY2hlY2tib3gtb3B0aW9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il0rc3BhbiB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWdkcHItY29uc2VudCAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yZWNhcHRjaGEgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2ltcGxlLWNhcHRjaGEgLm1mLWlucHV0LWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2ltcGxlLWNhcHRjaGEgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0W2FyaWEtaW52YWxpZD0idHJ1ZSJdIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtZXJyb3ItbWVzc2FnZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtcmVmcmVzaC1jYXB0Y2hhIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIDppcygubWZfc2VsZWN0X19wbGFjZWhvbGRlciwgLm1mX211bHRpc2VsZWN0X19wbGFjZWhvbGRlciwgLnRleHQpLAouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtaW5wdXQ6OnBsYWNlaG9sZGVyLAouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2ltcGxlLWNhcHRjaGEgLm1mLWlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6bm90KFt0eXBlPSJyYWRpbyJdKTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtaW5wdXQ6bm90KFt0eXBlPSJzdWJtaXQiXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpub3QoW3R5cGU9InJhZGlvIl0pOjotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIC5tZi1pbnB1dDpub3QoW3R5cGU9InN1Ym1pdCJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOm5vdChbdHlwZT0icmFkaW8iXSk6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtdGltZS1pbnB1dDo6YmVmb3JlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXNpbXBsZS1jYXB0Y2hhIC5tZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc2ltcGxlLWNhcHRjaGEgLm1mLWlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSAubWYtaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1zaW1wbGUtY2FwdGNoYSA6aXMoLm1mX3NlbGVjdF9fcGxhY2Vob2xkZXIsIC5tZl9tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIpIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLXJhdGluZyAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3IgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dC5tZi1pbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1yYXRpbmcgLm1mLWVycm9yLW1lc3NhZ2UgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1yYXRpbmdzOm5vdCguaXMtc2VsZWN0ZWQpLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYXRpbmcgLm1mLXJhdGluZ3MuaXMtc2VsZWN0ZWQ6bm90KDpob3Zlcik+aW5wdXQ6Y2hlY2tlZCtsYWJlbH5sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1yYXRpbmdzLmlzLXNlbGVjdGVkPmxhYmVsOmhvdmVyfmxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYXRpbmcgLm1mLXJhdGluZ3M6bm90KC5pcy1zZWxlY3RlZCk+bGFiZWw6aG92ZXJ+bGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1yYXRpbmdzLmlzLXNlbGVjdGVkPmxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1yYXRpbmcgLm1mLXJhdGluZ3M6bm90KC5pcy1zZWxlY3RlZCk6aG92ZXI+bGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtcmF0aW5nIC5tZi1pbnB1dC1oZWxwIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC1sYWJlbCB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtcmVxdWlyZWQtaW5kaWNhdG9yIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC13cmFwcGVyIC5tZi1pbnB1dFthcmlhLWludmFsaWQ9InRydWUiXSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LXdyYXBwZXIgLm1mLWlucHV0Lm1mLWludmFsaWQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1lcnJvci1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LXdyYXBwZXIgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWZsYWcsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1kaWFsLWNvZGUgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmlycy0tcm91bmQgLmlycy1iYXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5pcnMtLXJvdW5kIC5pcnMtZnJvbSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmlycy0tcm91bmQgLmlycy10bywKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmlycy0tcm91bmQgLmlycy1zaW5nbGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZSB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmlycy0tcm91bmQgLmlycy1mcm9tOmJlZm9yZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLmlycy0tcm91bmQgLmlycy10bzpiZWZvcmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlOmJlZm9yZSB7CiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtd3JhcHBlciB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LXdyYXBwZXIgLmlucHV0LXJhbmdlX190cmFjay0tYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LXdyYXBwZXIgLmFzUmFuZ2UgLmFzUmFuZ2UtcG9pbnRlciAuYXNSYW5nZS10aXAgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LWNhbGN1bGF0aW9uLXRvdGFsIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZV9fbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9ucyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQ6aG92ZXIsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC13cmFwcGVyOmhvdmVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtd3JhcHBlcjpob3ZlciAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5pcnMtLXJvdW5kIC5pcnMtaGFuZGxlOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWw6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0OmhvdmVyIC5tZl9zZWxlY3RfX3NpbmdsZS12YWx1ZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtZmlsZS11cGxvYWQtY29udGFpbmVyOmhvdmVyIC5tZi1pbnB1dC1maWxlLXVwbG9hZC1sYWJlbCBzdmcgcGF0aCB7CiAgICBzdHJva2U6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZpbGw6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19sYWJlbCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mX211bHRpc2VsZWN0X19tdWx0aS12YWx1ZTpob3ZlciAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZl9tdWx0aXNlbGVjdF9fbWVudS1ub3RpY2UtLW5vLW9wdGlvbnM6aG92ZXIgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0OmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtd3JhcHBlcjpmb2N1cyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZywKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LXdyYXBwZXI6Zm9jdXMgLml0aS0tc2VwYXJhdGUtZGlhbC1jb2RlIC5pdGlfX3NlbGVjdGVkLWRpYWwtY29kZSB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAuaXJzLS1yb3VuZCAuaXJzLWhhbmRsZTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lcjpmb2N1cyAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWltYWdlLWxhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0Pi5tZl9zZWxlY3RfX2NvbnRyb2wtLWlzLWZvY3VzZWQgLm1mX3NlbGVjdF9fc2luZ2xlLXZhbHVlIHsKICAgIGNvbG9yOiB2YXIoIC0tZS1nbG9iYWwtY29sb3ItcHJpbWFyeSk7Cn0KCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1maWxlLXVwbG9hZC1jb250YWluZXI6Zm9jdXMgLm1mLWlucHV0LWZpbGUtdXBsb2FkLWxhYmVsIHN2ZyBwYXRoIHsKICAgIHN0cm9rZTogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwogICAgZmlsbDogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWw6Zm9jdXMsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZl9tdWx0aXNlbGVjdF9fb3B0aW9uOmZvY3VzLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX2xhYmVsLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWZfbXVsdGlzZWxlY3RfX211bHRpLXZhbHVlOmZvY3VzIC5tZl9tdWx0aXNlbGVjdF9fbXVsdGktdmFsdWVfX3JlbW92ZSwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mX211bHRpc2VsZWN0X19tZW51LW5vdGljZS0tbm8tb3B0aW9uczpmb2N1cyB7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5pcnMtLXJvdW5kIC5pcnMtc2luZ2xlLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAuYXNSYW5nZSAuYXNSYW5nZS1wb2ludGVyIC5hc1JhbmdlLXRpcCwKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWZpbGUtdXBsb2FkLWNvbnRhaW5lciAubWYtaW5wdXQtZmlsZS11cGxvYWQtbGFiZWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC13cmFwcGVyIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnLAouZWxlbWVudG9yLXdpZGdldC1tZi1maWxlLXVwbG9hZCAubWYtaW5wdXQtY2FsY3VsYXRpb24tdG90YWwsCi5lbGVtZW50b3Itd2lkZ2V0LW1mLWZpbGUtdXBsb2FkIC5tZi1pbnB1dC13cmFwcGVyIC5pbnB1dC1yYW5nZV9fbGFiZWwtY29udGFpbmVyIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWZpbGUtbmFtZSBzcGFuIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtZmlsZS11cGxvYWQgLm1mLWlucHV0LWhlbHAgewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQpOwogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc3VtbWFyeSAubWYtaW5wdXQtbGFiZWwgewogICAgY29sb3I6IHZhciggLS1lLWdsb2JhbC1jb2xvci1wcmltYXJ5KTsKICAgIGZvbnQtZmFtaWx5OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtZmFtaWx5KSwgU2Fucy1zZXJpZjsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1wcmltYXJ5LWZvbnQtd2VpZ2h0KTsKfQoKLmVsZW1lbnRvci13aWRnZXQtbWYtc3VtbWFyeSAubWYtaW5wdXQtaGVscCB7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktcHJpbWFyeS1mb250LXdlaWdodCk7CiAgICBjb2xvcjogdmFyKCAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnkpOwp9CgouZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHkpLCBTYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICBmb250LXdlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7Cn0KCkBtZWRpYShtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLXdpZGdldC1pbWFnZSAud2lkZ2V0LWltYWdlLWNhcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1idXR0b24gLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tYm94IC5lbGVtZW50b3ItaWNvbi1ib3gtZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXN0YXItcmF0aW5nIC5lbGVtZW50b3Itc3Rhci1yYXRpbmdfX3RpdGxlIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1nYWxsZXJ5IC5nYWxsZXJ5LWl0ZW0gLmdhbGxlcnktY2FwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tbGlzdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtPi5lbGVtZW50b3ItaWNvbi1saXN0LXRleHQsCiAgICAuZWxlbWVudG9yLXdpZGdldC1pY29uLWxpc3QgLmVsZW1lbnRvci1pY29uLWxpc3QtaXRlbT5hIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1wcm9ncmVzcyAuZWxlbWVudG9yLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC10ZXN0aW1vbmlhbCAuZWxlbWVudG9yLXRlc3RpbW9uaWFsLWNvbnRlbnQgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXRhYnMgLmVsZW1lbnRvci10YWItY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtYWNjb3JkaW9uIC5lbGVtZW50b3ItdGFiLWNvbnRlbnQgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXRvZ2dsZSAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1hbGVydCAuZWxlbWVudG9yLWFsZXJ0LWRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1yZXRpbmEgLndpZGdldC1pbWFnZS1jYXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1jb3B5cmlnaHQgLmhmZS1jb3B5cmlnaHQtd3JhcHBlciwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWNvcHlyaWdodCAuaGZlLWNvcHlyaWdodC13cmFwcGVyIGEgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSAuc3ViLW1lbnUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLXN1Yi1tZW51LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgbmF2LmhmZS1kcm9wZG93biBsaSBhLmhmZS1tZW51LWl0ZW0sCiAgICAuZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUgbmF2LmhmZS1kcm9wZG93bi1leHBhbmRpYmxlIGxpIGEuaGZlLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSAubWVudS1pdGVtIGEuaGZlLW1lbnUtaXRlbS5lbGVtZW50b3ItYnV0dG9uIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtc2l0ZS1sb2dvIC53aWRnZXQtaW1hZ2UtY2FwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdGV4dC1wYXRoIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9Cn0KCkBtZWRpYShtYXgtd2lkdGg6NzY3cHgpIHsKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlIC53aWRnZXQtaW1hZ2UtY2FwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWJ1dHRvbiAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1ib3ggLmVsZW1lbnRvci1pY29uLWJveC1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtc3Rhci1yYXRpbmcgLmVsZW1lbnRvci1zdGFyLXJhdGluZ19fdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWdhbGxlcnkgLmdhbGxlcnktaXRlbSAuZ2FsbGVyeS1jYXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtaWNvbi1saXN0IC5lbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0+LmVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LWljb24tbGlzdCAuZWxlbWVudG9yLWljb24tbGlzdC1pdGVtPmEgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXByb2dyZXNzIC5lbGVtZW50b3ItdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXRlc3RpbW9uaWFsIC5lbGVtZW50b3ItdGVzdGltb25pYWwtY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdGFicyAuZWxlbWVudG9yLXRhYi1jb250ZW50IHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1hY2NvcmRpb24gLmVsZW1lbnRvci10YWItY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtdG9nZ2xlIC5lbGVtZW50b3ItdGFiLWNvbnRlbnQgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWFsZXJ0IC5lbGVtZW50b3ItYWxlcnQtZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LXJldGluYSAud2lkZ2V0LWltYWdlLWNhcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itd2lkZ2V0LWNvcHlyaWdodCAuaGZlLWNvcHlyaWdodC13cmFwcGVyLAogICAgLmVsZW1lbnRvci13aWRnZXQtY29weXJpZ2h0IC5oZmUtY29weXJpZ2h0LXdyYXBwZXIgYSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5zdWItbWVudSBsaSBhLmhmZS1zdWItbWVudS1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IG5hdi5oZmUtZHJvcGRvd24gbGkgYS5oZmUtc3ViLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duIGxpIGEuaGZlLW1lbnUtaXRlbSwKICAgIC5lbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSBuYXYuaGZlLWRyb3Bkb3duLWV4cGFuZGlibGUgbGkgYS5oZmUtbWVudS1pdGVtLAogICAgLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IG5hdi5oZmUtZHJvcGRvd24tZXhwYW5kaWJsZSBsaSBhLmhmZS1zdWItbWVudS1pdGVtIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQpOwogICAgfQogICAgLmVsZW1lbnRvci13aWRnZXQtbmF2aWdhdGlvbi1tZW51IC5tZW51LWl0ZW0gYS5oZmUtbWVudS1pdGVtLmVsZW1lbnRvci1idXR0b24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC1zaXRlLWxvZ28gLndpZGdldC1pbWFnZS1jYXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLXdpZGdldC10ZXh0LXBhdGggewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKICAgIH0KfQ=="}},"time_used":75,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":75,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/plugins/elementor/assets/lib/font-awesome/css/v4-shims.mina2f8.css?ver=3.19.1","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.775Z","timestamp":1785128398775,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/plugins/elementor/assets/lib/font-awesome/css/v4-shims.mina2f8.css?ver=3.19.1 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 4079\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:45 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"7ed4-67c3620e-b842d2c453597f20;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457453\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: cb0fe6b88c0e72da803a012451063f24-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":32468,"size_decoded":4651,"mime_type":"text/css","magic":"ASCII text","md5":"d6cf6af5d1f307a0c3cb9d9c054ce2d4","sha1":"7566aea9ab48f22a1a10da0d6f71a861c6574d18","sha256":"0b9e2918b6a5023cb744e4d146d5448da0e68e8544527e8aef0d2d26ec94e313","sha512":"1b56daa8485c8ba9d868e3dbb6daf9eb690567136b69fcf3ebfc326a4da778ee73ec0da3bc1580ae745afd1704f8e572b9412bbf51b09edd896bf8d7ca3265d3","ssdeep":"384:0S1BYdXiSmbulserd1QNcfxHI5HjusHENl:0ABY1iSjd1QNcfxHIduGE","tlshash":"59e2926c83ae58d2628c7c89360b76507b3837db59895848f3837e4dcec356662e1f8d","first_seen":"2024-10-11T08:24:47.434355Z","last_seen":"2026-07-27T10:21:19.507034Z","times_seen":31,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KCi5mYS5mYS1nbGFzczpiZWZvcmUgewogICAgY29udGVudDogIlxmMDAwIgp9CgouZmEuZmEtbWVldHVwIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXN0YXItbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3Rhci1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMDUiCn0KCi5mYS5mYS1jbG9zZTpiZWZvcmUsCi5mYS5mYS1yZW1vdmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwZCIKfQoKLmZhLmZhLWdlYXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxMyIKfQoKLmZhLmZhLXRyYXNoLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRyYXNoLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlZCIKfQoKLmZhLmZhLWZpbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWIiCn0KCi5mYS5mYS1jbG9jay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jbG9jay1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwMTciCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1kb3duIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNTgiCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby11cCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYXJyb3ctY2lyY2xlLW8tdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM1YiIKfQoKLmZhLmZhLXBsYXktY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXBsYXktY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0NCIKfQoKLmZhLmZhLXJlcGVhdDpiZWZvcmUsCi5mYS5mYS1yb3RhdGUtcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAxZSIKfQoKLmZhLmZhLXJlZnJlc2g6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAyMSIKfQoKLmZhLmZhLWxpc3QtYWx0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kZWRlbnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzYiIKfQoKLmZhLmZhLXZpZGVvLWNhbWVyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNkIgp9CgouZmEuZmEtcGljdHVyZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1waWN0dXJlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAzZSIKfQoKLmZhLmZhLXBob3RvIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1waG90bzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDNlIgp9CgouZmEuZmEtaW1hZ2UgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWltYWdlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwM2UiCn0KCi5mYS5mYS1wZW5jaWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwMyIKfQoKLmZhLmZhLW1hcC1tYXJrZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNjNSIKfQoKLmZhLmZhLXBlbmNpbC1zcXVhcmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGVuY2lsLXNxdWFyZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNDQiCn0KCi5mYS5mYS1zaGFyZS1zcXVhcmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc2hhcmUtc3F1YXJlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE0ZCIKfQoKLmZhLmZhLWNoZWNrLXNxdWFyZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jaGVjay1zcXVhcmUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTRhIgp9CgouZmEuZmEtYXJyb3dzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYjIiCn0KCi5mYS5mYS10aW1lcy1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGltZXMtY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA1NyIKfQoKLmZhLmZhLWNoZWNrLWNpcmNsZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jaGVjay1jaXJjbGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU4Igp9CgouZmEuZmEtbWFpbC1mb3J3YXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNjQiCn0KCi5mYS5mYS1leHBhbmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQyNCIKfQoKLmZhLmZhLWNvbXByZXNzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MjIiCn0KCi5mYS5mYS1leWUsCi5mYS5mYS1leWUtc2xhc2ggewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXdhcm5pbmc6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3MSIKfQoKLmZhLmZhLWNhbGVuZGFyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNzMiCn0KCi5mYS5mYS1hcnJvd3MtdjpiZWZvcmUgewogICAgY29udGVudDogIlxmMzM4Igp9CgouZmEuZmEtYXJyb3dzLWg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMzNyIKfQoKLmZhLmZhLWJhci1jaGFydCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmFyLWNoYXJ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODAiCn0KCi5mYS5mYS1iYXItY2hhcnQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmFyLWNoYXJ0LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4MCIKfQoKLmZhLmZhLWZhY2Vib29rLXNxdWFyZSwKLmZhLmZhLXR3aXR0ZXItc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWdlYXJzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwODUiCn0KCi5mYS5mYS10aHVtYnMtby11cCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGh1bWJzLW8tdXA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2NCIKfQoKLmZhLmZhLXRodW1icy1vLWRvd24gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRodW1icy1vLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2NSIKfQoKLmZhLmZhLWhlYXJ0LW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhlYXJ0LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwNCIKfQoKLmZhLmZhLXNpZ24tb3V0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjUiCn0KCi5mYS5mYS1saW5rZWRpbi1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbGlua2VkaW4tc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOGMiCn0KCi5mYS5mYS10aHVtYi10YWNrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOGQiCn0KCi5mYS5mYS1leHRlcm5hbC1saW5rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNWQiCn0KCi5mYS5mYS1zaWduLWluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZjYiCn0KCi5mYS5mYS1naXRodWItc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWxlbW9uLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWxlbW9uLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5NCIKfQoKLmZhLmZhLXNxdWFyZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zcXVhcmUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM4Igp9CgouZmEuZmEtYm9va21hcmstbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYm9va21hcmstbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDJlIgp9CgouZmEuZmEtZmFjZWJvb2ssCi5mYS5mYS10d2l0dGVyIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZhY2Vib29rOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzOWUiCn0KCi5mYS5mYS1mYWNlYm9vay1mIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZhY2Vib29rLWY6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM5ZSIKfQoKLmZhLmZhLWdpdGh1YiB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jcmVkaXQtY2FyZCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmVlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDllIgp9CgouZmEuZmEtaGRkLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhkZC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTAiCn0KCi5mYS5mYS1oYW5kLW8tcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE0Igp9CgouZmEuZmEtaGFuZC1vLWxlZnQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTUiCn0KCi5mYS5mYS1oYW5kLW8tdXAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGE2Igp9CgouZmEuZmEtaGFuZC1vLWRvd24gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtby1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYTciCn0KCi5mYS5mYS1hcnJvd3MtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMWUiCn0KCi5mYS5mYS1ncm91cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMGMwIgp9CgouZmEuZmEtY2hhaW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjMSIKfQoKLmZhLmZhLXNjaXNzb3JzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzQiCn0KCi5mYS5mYS1maWxlcy1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlcy1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwYzUiCn0KCi5mYS5mYS1mbG9wcHktbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmxvcHB5LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBjNyIKfQoKLmZhLmZhLW5hdmljb246YmVmb3JlLAouZmEuZmEtcmVvcmRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGM5Igp9CgouZmEuZmEtZ29vZ2xlLXBsdXMsCi5mYS5mYS1nb29nbGUtcGx1cy1zcXVhcmUsCi5mYS5mYS1waW50ZXJlc3QsCi5mYS5mYS1waW50ZXJlc3Qtc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWdvb2dsZS1wbHVzOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZDUiCn0KCi5mYS5mYS1tb25leSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbW9uZXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjNkMSIKfQoKLmZhLmZhLXVuc29ydGVkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGMiCn0KCi5mYS5mYS1zb3J0LWRlc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBkZCIKfQoKLmZhLmZhLXNvcnQtYXNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGUiCn0KCi5mYS5mYS1saW5rZWRpbiB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saW5rZWRpbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMGUxIgp9CgouZmEuZmEtcm90YXRlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMiIKfQoKLmZhLmZhLWxlZ2FsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTMiCn0KCi5mYS5mYS1kYXNoYm9hcmQ6YmVmb3JlLAouZmEuZmEtdGFjaG9tZXRlcjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZkIgp9CgouZmEuZmEtY29tbWVudC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jb21tZW50LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA3NSIKfQoKLmZhLmZhLWNvbW1lbnRzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNvbW1lbnRzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4NiIKfQoKLmZhLmZhLWZsYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZTciCn0KCi5mYS5mYS1jbGlwYm9hcmQsCi5mYS5mYS1wYXN0ZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGFzdGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMyOCIKfQoKLmZhLmZhLWxpZ2h0YnVsYi1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saWdodGJ1bGItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGViIgp9CgouZmEuZmEtZXhjaGFuZ2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2MiIKfQoKLmZhLmZhLWNsb3VkLWRvd25sb2FkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzODEiCn0KCi5mYS5mYS1jbG91ZC11cGxvYWQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM4MiIKfQoKLmZhLmZhLWJlbGwtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmVsbC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZjMiCn0KCi5mYS5mYS1jdXRsZXJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZTciCn0KCi5mYS5mYS1maWxlLXRleHQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS10ZXh0LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1YyIKfQoKLmZhLmZhLWJ1aWxkaW5nLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWJ1aWxkaW5nLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFhZCIKfQoKLmZhLmZhLWhvc3BpdGFsLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhvc3BpdGFsLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBmOCIKfQoKLmZhLmZhLXRhYmxldDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZhIgp9CgouZmEuZmEtbW9iaWxlLXBob25lOmJlZm9yZSwKLmZhLmZhLW1vYmlsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmM2NkIgp9CgouZmEuZmEtY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTEiCn0KCi5mYS5mYS1tYWlsLXJlcGx5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzZTUiCn0KCi5mYS5mYS1naXRodWItYWx0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZvbGRlci1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1mb2xkZXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdiIgp9CgouZmEuZmEtZm9sZGVyLW9wZW4tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZm9sZGVyLW9wZW4tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDdjIgp9CgouZmEuZmEtc21pbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc21pbGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTE4Igp9CgouZmEuZmEtZnJvd24tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZnJvd24tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTE5Igp9CgouZmEuZmEtbWVoLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLW1laC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWEiCn0KCi5mYS5mYS1rZXlib2FyZC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1rZXlib2FyZC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMWMiCn0KCi5mYS5mYS1mbGFnLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZsYWctbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDI0Igp9CgouZmEuZmEtbWFpbC1yZXBseS1hbGw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyMiIKfQoKLmZhLmZhLXN0YXItaGFsZi1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdGFyLWhhbGYtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg5Igp9CgouZmEuZmEtc3Rhci1oYWxmLWVtcHR5IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdGFyLWhhbGYtZW1wdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA4OSIKfQoKLmZhLmZhLXN0YXItaGFsZi1mdWxsIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdGFyLWhhbGYtZnVsbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDg5Igp9CgouZmEuZmEtY29kZS1mb3JrOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMjYiCn0KCi5mYS5mYS1jaGFpbi1icm9rZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjEyNyIKfQoKLmZhLmZhLXNoaWVsZDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2VkIgp9CgouZmEuZmEtY2FsZW5kYXItbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2FsZW5kYXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTMzIgp9CgouZmEuZmEtY3NzMywKLmZhLmZhLWh0bWw1LAouZmEuZmEtbWF4Y2RuIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRpY2tldDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2ZmIgp9CgouZmEuZmEtbWludXMtc3F1YXJlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLW1pbnVzLXNxdWFyZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNDYiCn0KCi5mYS5mYS1sZXZlbC11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JmIgp9CgouZmEuZmEtbGV2ZWwtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmM2JlIgp9CgouZmEuZmEtcGVuY2lsLXNxdWFyZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTRiIgp9CgouZmEuZmEtZXh0ZXJuYWwtbGluay1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjM2MCIKfQoKLmZhLmZhLWNvbXBhc3MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLWRvd24gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLWRvd246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1MCIKfQoKLmZhLmZhLXRvZ2dsZS1kb3duIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS10b2dnbGUtZG93bjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTUwIgp9CgouZmEuZmEtY2FyZXQtc3F1YXJlLW8tdXAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTEiCn0KCi5mYS5mYS10b2dnbGUtdXAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRvZ2dsZS11cDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTUxIgp9CgouZmEuZmEtY2FyZXQtc3F1YXJlLW8tcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhcmV0LXNxdWFyZS1vLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTIiCn0KCi5mYS5mYS10b2dnbGUtcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRvZ2dsZS1yaWdodDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTUyIgp9CgouZmEuZmEtZXVyOmJlZm9yZSwKLmZhLmZhLWV1cm86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1MyIKfQoKLmZhLmZhLWdicDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU0Igp9CgouZmEuZmEtZG9sbGFyOmJlZm9yZSwKLmZhLmZhLXVzZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMTU1Igp9CgouZmEuZmEtaW5yOmJlZm9yZSwKLmZhLmZhLXJ1cGVlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNTYiCn0KCi5mYS5mYS1jbnk6YmVmb3JlLAouZmEuZmEtanB5OmJlZm9yZSwKLmZhLmZhLXJtYjpiZWZvcmUsCi5mYS5mYS15ZW46YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1NyIKfQoKLmZhLmZhLXJvdWJsZTpiZWZvcmUsCi5mYS5mYS1ydWI6YmVmb3JlLAouZmEuZmEtcnVibGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1OCIKfQoKLmZhLmZhLWtydzpiZWZvcmUsCi5mYS5mYS13b246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE1OSIKfQoKLmZhLmZhLWJpdGNvaW4sCi5mYS5mYS1idGMgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYml0Y29pbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVhIgp9CgouZmEuZmEtZmlsZS10ZXh0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNWMiCn0KCi5mYS5mYS1zb3J0LWFscGhhLWFzYzpiZWZvcmUgewogICAgY29udGVudDogIlxmMTVkIgp9CgouZmEuZmEtc29ydC1hbHBoYS1kZXNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODEiCn0KCi5mYS5mYS1zb3J0LWFtb3VudC1hc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MCIKfQoKLmZhLmZhLXNvcnQtYW1vdW50LWRlc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjg4NCIKfQoKLmZhLmZhLXNvcnQtbnVtZXJpYy1hc2M6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE2MiIKfQoKLmZhLmZhLXNvcnQtbnVtZXJpYy1kZXNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY4ODYiCn0KCi5mYS5mYS14aW5nLAouZmEuZmEteGluZy1zcXVhcmUsCi5mYS5mYS15b3V0dWJlLAouZmEuZmEteW91dHViZS1wbGF5LAouZmEuZmEteW91dHViZS1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEteW91dHViZS1wbGF5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxNjciCn0KCi5mYS5mYS1hZG4sCi5mYS5mYS1iaXRidWNrZXQsCi5mYS5mYS1iaXRidWNrZXQtc3F1YXJlLAouZmEuZmEtZHJvcGJveCwKLmZhLmZhLWZsaWNrciwKLmZhLmZhLWluc3RhZ3JhbSwKLmZhLmZhLXN0YWNrLW92ZXJmbG93IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWJpdGJ1Y2tldC1zcXVhcmU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE3MSIKfQoKLmZhLmZhLXR1bWJsciwKLmZhLmZhLXR1bWJsci1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbG9uZy1hcnJvdy1kb3duOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMDkiCn0KCi5mYS5mYS1sb25nLWFycm93LXVwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzMGMiCn0KCi5mYS5mYS1sb25nLWFycm93LWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwYSIKfQoKLmZhLmZhLWxvbmctYXJyb3ctcmlnaHQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjMwYiIKfQoKLmZhLmZhLWFuZHJvaWQsCi5mYS5mYS1hcHBsZSwKLmZhLmZhLWRyaWJiYmxlLAouZmEuZmEtZm91cnNxdWFyZSwKLmZhLmZhLWdpdHRpcCwKLmZhLmZhLWdyYXRpcGF5LAouZmEuZmEtbGludXgsCi5mYS5mYS1za3lwZSwKLmZhLmZhLXRyZWxsbywKLmZhLmZhLXdpbmRvd3MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZ2l0dGlwOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODQiCn0KCi5mYS5mYS1zdW4tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3VuLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE4NSIKfQoKLmZhLmZhLW1vb24tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbW9vbi1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxODYiCn0KCi5mYS5mYS1wYWdlbGluZXMsCi5mYS5mYS1yZW5yZW4sCi5mYS5mYS1zdGFjay1leGNoYW5nZSwKLmZhLmZhLXZrLAouZmEuZmEtd2VpYm8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYXJyb3ctY2lyY2xlLW8tcmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWFycm93LWNpcmNsZS1vLXJpZ2h0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNWEiCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1sZWZ0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hcnJvdy1jaXJjbGUtby1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzNTkiCn0KCi5mYS5mYS1jYXJldC1zcXVhcmUtby1sZWZ0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jYXJldC1zcXVhcmUtby1sZWZ0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTEiCn0KCi5mYS5mYS10b2dnbGUtbGVmdCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdG9nZ2xlLWxlZnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjE5MSIKfQoKLmZhLmZhLWRvdC1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZG90LWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOTIiCn0KCi5mYS5mYS12aW1lby1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdHJ5OmJlZm9yZSwKLmZhLmZhLXR1cmtpc2gtbGlyYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMTk1Igp9CgouZmEuZmEtcGx1cy1zcXVhcmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGx1cy1zcXVhcmUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMGZlIgp9CgouZmEuZmEtb3BlbmlkLAouZmEuZmEtc2xhY2ssCi5mYS5mYS13b3JkcHJlc3MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmFuazpiZWZvcmUsCi5mYS5mYS1pbnN0aXR1dGlvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMTljIgp9CgouZmEuZmEtbW9ydGFyLWJvYXJkOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxOWQiCn0KCi5mYS5mYS1kZWxpY2lvdXMsCi5mYS5mYS1kaWdnLAouZmEuZmEtZHJ1cGFsLAouZmEuZmEtZ29vZ2xlLAouZmEuZmEtam9vbWxhLAouZmEuZmEtcGllZC1waXBlci1hbHQsCi5mYS5mYS1waWVkLXBpcGVyLXBwLAouZmEuZmEtcmVkZGl0LAouZmEuZmEtcmVkZGl0LXNxdWFyZSwKLmZhLmZhLXN0dW1ibGV1cG9uLAouZmEuZmEtc3R1bWJsZXVwb24tY2lyY2xlLAouZmEuZmEteWFob28gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3Bvb246YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJlNSIKfQoKLmZhLmZhLWJlaGFuY2UsCi5mYS5mYS1iZWhhbmNlLXNxdWFyZSwKLmZhLmZhLXN0ZWFtLAouZmEuZmEtc3RlYW0tc3F1YXJlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWF1dG9tb2JpbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFiOSIKfQoKLmZhLmZhLWVudmVsb3BlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWVudmVsb3BlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjBlMCIKfQoKLmZhLmZhLWRldmlhbnRhcnQsCi5mYS5mYS1zb3VuZGNsb3VkLAouZmEuZmEtc3BvdGlmeSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlLXBkZi1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlLXBkZi1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzEiCn0KCi5mYS5mYS1maWxlLXdvcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS13b3JkLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjMiIKfQoKLmZhLmZhLWZpbGUtZXhjZWwtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1leGNlbC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzMiCn0KCi5mYS5mYS1maWxlLXBvd2VycG9pbnQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1wb3dlcnBvaW50LW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjNCIKfQoKLmZhLmZhLWZpbGUtaW1hZ2UtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1pbWFnZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzUiCn0KCi5mYS5mYS1maWxlLXBob3RvLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtcGhvdG8tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM1Igp9CgouZmEuZmEtZmlsZS1waWN0dXJlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtcGljdHVyZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzUiCn0KCi5mYS5mYS1maWxlLWFyY2hpdmUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1hcmNoaXZlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjNiIKfQoKLmZhLmZhLWZpbGUtemlwLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtemlwLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjNiIKfQoKLmZhLmZhLWZpbGUtYXVkaW8tbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1hdWRpby1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzciCn0KCi5mYS5mYS1maWxlLXNvdW5kLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWZpbGUtc291bmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWM3Igp9CgouZmEuZmEtZmlsZS12aWRlby1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1maWxlLXZpZGVvLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjOCIKfQoKLmZhLmZhLWZpbGUtbW92aWUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1tb3ZpZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYzgiCn0KCi5mYS5mYS1maWxlLWNvZGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmlsZS1jb2RlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjOSIKfQoKLmZhLmZhLWNvZGVwZW4sCi5mYS5mYS1qc2ZpZGRsZSwKLmZhLmZhLXZpbmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbGlmZS1ib3V5LAouZmEuZmEtbGlmZS1yaW5nIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saWZlLWJvdXk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFjZCIKfQoKLmZhLmZhLWxpZmUtYnVveSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbGlmZS1idW95OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2QiCn0KCi5mYS5mYS1saWZlLXNhdmVyIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1saWZlLXNhdmVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2QiCn0KCi5mYS5mYS1zdXBwb3J0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1zdXBwb3J0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxY2QiCn0KCi5mYS5mYS1jaXJjbGUtby1ub3RjaDpiZWZvcmUgewogICAgY29udGVudDogIlxmMWNlIgp9CgouZmEuZmEtcmEsCi5mYS5mYS1yZWJlbCB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1yYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQwIgp9CgouZmEuZmEtcmVzaXN0YW5jZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1yZXNpc3RhbmNlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDAiCn0KCi5mYS5mYS1lbXBpcmUsCi5mYS5mYS1nZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1nZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQxIgp9CgouZmEuZmEtZ2l0LAouZmEuZmEtZ2l0LXNxdWFyZSwKLmZhLmZhLWhhY2tlci1uZXdzLAouZmEuZmEteS1jb21iaW5hdG9yLXNxdWFyZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS15LWNvbWJpbmF0b3Itc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDQiCn0KCi5mYS5mYS15Yy1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEteWMtc3F1YXJlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDQiCn0KCi5mYS5mYS1xcSwKLmZhLmZhLXRlbmNlbnQtd2VpYm8sCi5mYS5mYS13ZWNoYXQsCi5mYS5mYS13ZWl4aW4gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtd2VjaGF0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDciCn0KCi5mYS5mYS1zZW5kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDgiCn0KCi5mYS5mYS1wYXBlci1wbGFuZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1wYXBlci1wbGFuZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZDgiCn0KCi5mYS5mYS1zZW5kLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXNlbmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWQ4Igp9CgouZmEuZmEtY2lyY2xlLXRoaW4gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNpcmNsZS10aGluOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxMTEiCn0KCi5mYS5mYS1oZWFkZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkYyIKfQoKLmZhLmZhLXNsaWRlcnM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFkZSIKfQoKLmZhLmZhLWZ1dGJvbC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1mdXRib2wtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUzIgp9CgouZmEuZmEtc29jY2VyLWJhbGwtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc29jY2VyLWJhbGwtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMWUzIgp9CgouZmEuZmEtc2xpZGVzaGFyZSwKLmZhLmZhLXR3aXRjaCwKLmZhLmZhLXllbHAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbmV3c3BhcGVyLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLW5ld3NwYXBlci1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxZWEiCn0KCi5mYS5mYS1jYy1hbWV4LAouZmEuZmEtY2MtZGlzY292ZXIsCi5mYS5mYS1jYy1tYXN0ZXJjYXJkLAouZmEuZmEtY2MtcGF5cGFsLAouZmEuZmEtY2Mtc3RyaXBlLAouZmEuZmEtY2MtdmlzYSwKLmZhLmZhLWdvb2dsZS13YWxsZXQsCi5mYS5mYS1wYXlwYWwgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtYmVsbC1zbGFzaC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1iZWxsLXNsYXNoLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmNiIKfQoKLmZhLmZhLXRyYXNoOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZWQiCn0KCi5mYS5mYS1jb3B5cmlnaHQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWV5ZWRyb3BwZXI6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmYiIKfQoKLmZhLmZhLWFyZWEtY2hhcnQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjFmZSIKfQoKLmZhLmZhLXBpZS1jaGFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjAwIgp9CgouZmEuZmEtbGluZS1jaGFydDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjAxIgp9CgouZmEuZmEtYW5nZWxsaXN0LAouZmEuZmEtaW94aG9zdCwKLmZhLmZhLWxhc3RmbSwKLmZhLmZhLWxhc3RmbS1zcXVhcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2MgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNjOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyMGEiCn0KCi5mYS5mYS1pbHM6YmVmb3JlLAouZmEuZmEtc2hla2VsOmJlZm9yZSwKLmZhLmZhLXNoZXFlbDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjBiIgp9CgouZmEuZmEtbWVhbnBhdGggewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtbWVhbnBhdGg6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiNCIKfQoKLmZhLmZhLWJ1eXNlbGxhZHMsCi5mYS5mYS1jb25uZWN0ZGV2ZWxvcCwKLmZhLmZhLWRhc2hjdWJlLAouZmEuZmEtZm9ydW1iZWUsCi5mYS5mYS1sZWFucHViLAouZmEuZmEtc2VsbHN5LAouZmEuZmEtc2hpcnRzaW5idWxrLAouZmEuZmEtc2ltcGx5YnVpbHQsCi5mYS5mYS1za3lhdGxhcyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kaWFtb25kIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kaWFtb25kOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYzYTUiCn0KCi5mYS5mYS1pbnRlcnNleDpiZWZvcmUgewogICAgY29udGVudDogIlxmMjI0Igp9CgouZmEuZmEtZmFjZWJvb2stb2ZmaWNpYWwgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZmFjZWJvb2stb2ZmaWNpYWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjA5YSIKfQoKLmZhLmZhLXBpbnRlcmVzdC1wLAouZmEuZmEtd2hhdHNhcHAgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaG90ZWw6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjIzNiIKfQoKLmZhLmZhLW1lZGl1bSwKLmZhLmZhLXZpYWNvaW4sCi5mYS5mYS15LWNvbWJpbmF0b3IsCi5mYS5mYS15YyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS15YzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjNiIgp9CgouZmEuZmEtZXhwZWRpdGVkc3NsLAouZmEuZmEtb3BlbmNhcnQsCi5mYS5mYS1vcHRpbi1tb25zdGVyIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWJhdHRlcnktNDpiZWZvcmUsCi5mYS5mYS1iYXR0ZXJ5OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDAiCn0KCi5mYS5mYS1iYXR0ZXJ5LTM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0MSIKfQoKLmZhLmZhLWJhdHRlcnktMjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQyIgp9CgouZmEuZmEtYmF0dGVyeS0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNDMiCn0KCi5mYS5mYS1iYXR0ZXJ5LTA6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI0NCIKfQoKLmZhLmZhLW9iamVjdC1ncm91cCwKLmZhLmZhLW9iamVjdC11bmdyb3VwLAouZmEuZmEtc3RpY2t5LW5vdGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc3RpY2t5LW5vdGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjQ5Igp9CgouZmEuZmEtY2MtZGluZXJzLWNsdWIsCi5mYS5mYS1jYy1qY2IgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2xvbmUsCi5mYS5mYS1ob3VyZ2xhc3MtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaG91cmdsYXNzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1NCIKfQoKLmZhLmZhLWhvdXJnbGFzcy0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTEiCn0KCi5mYS5mYS1ob3VyZ2xhc3MtMjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjUyIgp9CgouZmEuZmEtaG91cmdsYXNzLTM6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1MyIKfQoKLmZhLmZhLWhhbmQtcm9jay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXJvY2stbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU1Igp9CgouZmEuZmEtaGFuZC1ncmFiLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtZ3JhYi1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTUiCn0KCi5mYS5mYS1oYW5kLXBhcGVyLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtcGFwZXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU2Igp9CgouZmEuZmEtaGFuZC1zdG9wLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtc3RvcC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyNTYiCn0KCi5mYS5mYS1oYW5kLXNjaXNzb3JzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmQtc2Npc3NvcnMtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU3Igp9CgouZmEuZmEtaGFuZC1saXphcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaGFuZC1saXphcmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjU4Igp9CgouZmEuZmEtaGFuZC1zcG9jay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXNwb2NrLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1OSIKfQoKLmZhLmZhLWhhbmQtcG9pbnRlci1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXBvaW50ZXItbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjVhIgp9CgouZmEuZmEtaGFuZC1wZWFjZS1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1oYW5kLXBlYWNlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI1YiIKfQoKLmZhLmZhLXJlZ2lzdGVyZWQgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNocm9tZSwKLmZhLmZhLWNyZWF0aXZlLWNvbW1vbnMsCi5mYS5mYS1maXJlZm94LAouZmEuZmEtZ2V0LXBvY2tldCwKLmZhLmZhLWdnLAouZmEuZmEtZ2ctY2lyY2xlLAouZmEuZmEtaW50ZXJuZXQtZXhwbG9yZXIsCi5mYS5mYS1vZG5va2xhc3NuaWtpLAouZmEuZmEtb2Rub2tsYXNzbmlraS1zcXVhcmUsCi5mYS5mYS1vcGVyYSwKLmZhLmZhLXNhZmFyaSwKLmZhLmZhLXRyaXBhZHZpc29yLAouZmEuZmEtd2lraXBlZGlhLXcgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGVsZXZpc2lvbjpiZWZvcmUgewogICAgY29udGVudDogIlxmMjZjIgp9CgouZmEuZmEtNTAwcHgsCi5mYS5mYS1hbWF6b24sCi5mYS5mYS1jb250YW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2FsZW5kYXItcGx1cy1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jYWxlbmRhci1wbHVzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MSIKfQoKLmZhLmZhLWNhbGVuZGFyLW1pbnVzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhbGVuZGFyLW1pbnVzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MiIKfQoKLmZhLmZhLWNhbGVuZGFyLXRpbWVzLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhbGVuZGFyLXRpbWVzLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3MyIKfQoKLmZhLmZhLWNhbGVuZGFyLWNoZWNrLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWNhbGVuZGFyLWNoZWNrLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3NCIKfQoKLmZhLmZhLW1hcC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1tYXAtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMjc5Igp9CgouZmEuZmEtY29tbWVudGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmNGFkIgp9CgouZmEuZmEtY29tbWVudGluZy1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1jb21tZW50aW5nLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjRhZCIKfQoKLmZhLmZhLWhvdXp6LAouZmEuZmEtdmltZW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdmltZW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI3ZCIKfQoKLmZhLmZhLWJsYWNrLXRpZSwKLmZhLmZhLWVkZ2UsCi5mYS5mYS1mb250aWNvbnMsCi5mYS5mYS1yZWRkaXQtYWxpZW4gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY3JlZGl0LWNhcmQtYWx0OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwOWQiCn0KCi5mYS5mYS1jb2RpZXBpZSwKLmZhLmZhLWZvcnQtYXdlc29tZSwKLmZhLmZhLW1peGNsb3VkLAouZmEuZmEtbW9keCwKLmZhLmZhLXByb2R1Y3QtaHVudCwKLmZhLmZhLXNjcmliZCwKLmZhLmZhLXVzYiB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1wYXVzZS1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtcGF1c2UtY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4YiIKfQoKLmZhLmZhLXN0b3AtY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXN0b3AtY2lyY2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjI4ZCIKfQoKLmZhLmZhLWJsdWV0b290aCwKLmZhLmZhLWJsdWV0b290aC1iLAouZmEuZmEtZW52aXJhLAouZmEuZmEtZ2l0bGFiLAouZmEuZmEtd2hlZWxjaGFpci1hbHQsCi5mYS5mYS13cGJlZ2lubmVyLAouZmEuZmEtd3Bmb3JtcyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS13aGVlbGNoYWlyLWFsdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMzY4Igp9CgouZmEuZmEtcXVlc3Rpb24tY2lyY2xlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXF1ZXN0aW9uLWNpcmNsZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwNTkiCn0KCi5mYS5mYS12b2x1bWUtY29udHJvbC1waG9uZTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEwIgp9CgouZmEuZmEtYXNsLWludGVycHJldGluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmEzIgp9CgouZmEuZmEtZGVhZm5lc3M6YmVmb3JlLAouZmEuZmEtaGFyZC1vZi1oZWFyaW5nOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYTQiCn0KCi5mYS5mYS1nbGlkZSwKLmZhLmZhLWdsaWRlLWcgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtc2lnbmluZzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmE3Igp9CgouZmEuZmEtZmlyc3Qtb3JkZXIsCi5mYS5mYS1nb29nbGUtcGx1cy1vZmZpY2lhbCwKLmZhLmZhLXBpZWQtcGlwZXIsCi5mYS5mYS1zbmFwY2hhdCwKLmZhLmZhLXNuYXBjaGF0LWdob3N0LAouZmEuZmEtc25hcGNoYXQtc3F1YXJlLAouZmEuZmEtdGhlbWVpc2xlLAouZmEuZmEtdmlhZGVvLAouZmEuZmEtdmlhZGVvLXNxdWFyZSwKLmZhLmZhLXlvYXN0IHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWdvb2dsZS1wbHVzLW9mZmljaWFsOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjMiCn0KCi5mYS5mYS1nb29nbGUtcGx1cy1jaXJjbGUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZ29vZ2xlLXBsdXMtY2lyY2xlOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjMiCn0KCi5mYS5mYS1mYSwKLmZhLmZhLWZvbnQtYXdlc29tZSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1mYTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI0Igp9CgouZmEuZmEtaGFuZHNoYWtlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWhhbmRzaGFrZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYjUiCn0KCi5mYS5mYS1lbnZlbG9wZS1vcGVuLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWVudmVsb3BlLW9wZW4tbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI2Igp9CgouZmEuZmEtbGlub2RlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLWFkZHJlc3MtYm9vay1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hZGRyZXNzLWJvb2stbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmI5Igp9CgouZmEuZmEtdmNhcmQ6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJiYiIKfQoKLmZhLmZhLWFkZHJlc3MtY2FyZC1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1hZGRyZXNzLWNhcmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmJiIgp9CgouZmEuZmEtdmNhcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdmNhcmQtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmJiIgp9CgouZmEuZmEtdXNlci1jaXJjbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdXNlci1jaXJjbGUtbzpiZWZvcmUgewogICAgY29udGVudDogIlxmMmJkIgp9CgouZmEuZmEtdXNlci1vIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS11c2VyLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjAwNyIKfQoKLmZhLmZhLWlkLWJhZGdlIHsKICAgIGZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS1kcml2ZXJzLWxpY2Vuc2U6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjMiIKfQoKLmZhLmZhLWlkLWNhcmQtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtaWQtY2FyZC1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzIiCn0KCi5mYS5mYS1kcml2ZXJzLWxpY2Vuc2UtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZHJpdmVycy1saWNlbnNlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjJjMiIKfQoKLmZhLmZhLWZyZWUtY29kZS1jYW1wLAouZmEuZmEtcXVvcmEsCi5mYS5mYS10ZWxlZ3JhbSB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI7CiAgICBmb250LXdlaWdodDogNDAwCn0KCi5mYS5mYS10aGVybW9tZXRlci00OmJlZm9yZSwKLmZhLmZhLXRoZXJtb21ldGVyOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzciCn0KCi5mYS5mYS10aGVybW9tZXRlci0zOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzgiCn0KCi5mYS5mYS10aGVybW9tZXRlci0yOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyYzkiCn0KCi5mYS5mYS10aGVybW9tZXRlci0xOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2EiCn0KCi5mYS5mYS10aGVybW9tZXRlci0wOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyY2IiCn0KCi5mYS5mYS1iYXRodHViOmJlZm9yZSwKLmZhLmZhLXMxNTpiZWZvcmUgewogICAgY29udGVudDogIlxmMmNkIgp9CgouZmEuZmEtd2luZG93LW1heGltaXplLAouZmEuZmEtd2luZG93LXJlc3RvcmUgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXRpbWVzLXJlY3RhbmdsZTpiZWZvcmUgewogICAgY29udGVudDogIlxmNDEwIgp9CgouZmEuZmEtd2luZG93LWNsb3NlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXdpbmRvdy1jbG9zZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGY0MTAiCn0KCi5mYS5mYS10aW1lcy1yZWN0YW5nbGUtbyB7CiAgICBmb250LWZhbWlseTogIkZvbnQgQXdlc29tZSA1IEZyZWUiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtdGltZXMtcmVjdGFuZ2xlLW86YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcZjQxMCIKfQoKLmZhLmZhLWJhbmRjYW1wLAouZmEuZmEtZWVyY2FzdCwKLmZhLmZhLWV0c3ksCi5mYS5mYS1ncmF2LAouZmEuZmEtaW1kYiwKLmZhLmZhLXJhdmVscnkgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtZWVyY2FzdDpiZWZvcmUgewogICAgY29udGVudDogIlxmMmRhIgp9CgouZmEuZmEtc25vd2ZsYWtlLW8gewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBGcmVlIjsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKLmZhLmZhLXNub3dmbGFrZS1vOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYyZGMiCn0KCi5mYS5mYS1zdXBlcnBvd2VycywKLmZhLmZhLXdwZXhwbG9yZXIgewogICAgZm9udC1mYW1pbHk6ICJGb250IEF3ZXNvbWUgNSBCcmFuZHMiOwogICAgZm9udC13ZWlnaHQ6IDQwMAp9CgouZmEuZmEtY2FiOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYxYmEiCn0="}},"time_used":100,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":98,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/css2/calculator.css","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.785Z","timestamp":1785128398785,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/css2/calculator.css HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 593\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 17:06:26 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"ae9-67c3620e-228ee3f7341c3942;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 474812\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 681021457bae30b352cfd5e502cefd47-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":2793,"size_decoded":1163,"mime_type":"text/css","magic":"ASCII text, with CRLF line terminators","md5":"8dd7e9f7f708a4f98e6d7b9a10497850","sha1":"27abc15bad3aff07b5e6eeeac56a12227b44b82f","sha256":"f337a9df8e0acbaa71fda3293da003d8c5561e0426ab9a4304fe7e38cbc7dd4e","sha512":"430a486b30e30d72a5b6b455529e91d823dbe5dd0bab5ae533d1de35dfe9671aaf80eaff3fd79ce31e15cea83e8cb402546b0f99cb3451a7a4591a8c1e997fbe","ssdeep":"","tlshash":"e3519ca9e2458087603785f06b674756ef6923330f0101757ff266648fbe169d610fde","first_seen":"2026-07-27T03:56:42.501306Z","last_seen":"2026-07-27T05:30:59.82449Z","times_seen":6,"resource_available":false,"data":"LmNhbGMtYmcgLmNhbC1iZyAuY2FsYmcgew0KICAgIHBhZGRpbmc6IDE1cHggMHB4IDBweCAwcHg7DQp9DQoNCi5jYWxjLWJnIC5jYWwtYmcgLmNhbGJnIHVsIHsNCiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7DQogICAgcGFkZGluZzogMHB4Ow0KICAgIG1hcmdpbjogMHB4Ow0KfQ0KDQouY2FsYy1iZyAuY2FsLWJnIC5jYWxiZyB1bCBsaSB7DQogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgIHBhZGRpbmc6IDdweCAwcHg7DQogICAgbWFyZ2luOiAwLjE1ZW07DQogICAgd2lkdGg6IDE5JTsNCn0NCg0KLmNhbGMtYmcgLmNhbC1iZyAuY2FsYmcgdWwgbGkgLmNhbDEgew0KICAgIG1hcmdpbjogMHB4IGF1dG8gMHB4Ow0KfQ0KDQouY2FsYy1iZyAuY2FsLWJnIC5jYWxiZyB1bCBsaSAuY2FsMSAuY2FsLXRpdGxlIHsNCiAgICBmb250LXNpemU6IDIwcHg7DQogICAgY29sb3I6ICM5N2E2YTU7DQogICAgZm9udC13ZWlnaHQ6IDUwMDsNCiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQouY2FsYy1iZyAuY2FsLWJnIC5jYWxiZyB1bCBsaSAuY2FsMSAuY2FsLWludmVzdCB7DQogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7DQp9DQoNCi5jYWxjLWJnIC5jYWwtYmcgLmNhbGJnIHVsIGxpIC5jYWwxIC5jYWwtaW52ZXN0IGlucHV0IHsNCiAgICBmb250LXNpemU6IDIwcHg7DQogICAgY29sb3I6ICMxMjYyZmY7DQogICAgaGVpZ2h0OiA0MHB4Ow0KICAgIHdpZHRoOiA5NSU7DQogICAgYm9yZGVyOiAxcHggc29saWQgIzEyNjJmZjsNCiAgICBiYWNrZ3JvdW5kOiAjMWUyMDI4Ow0KICAgIG91dGxpbmU6IG5vbmU7DQogICAgcGFkZGluZzogMHB4IDIwcHg7DQogICAgZm9udC13ZWlnaHQ6IDUwMDsNCiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7DQp9DQoNCi5jYWxjLWJnIC5jYWwtYmcgLmNhbGJnIHVsIGxpIC5jYWwyIC5jYWwtaW52ZXN0IGlucHV0IHsNCiAgICBmb250LXNpemU6IDIwcHg7DQogICAgY29sb3I6ICMxMjYyZmY7DQogICAgaGVpZ2h0OiA0MHB4Ow0KICAgIHdpZHRoOiA5NSU7DQogICAgYm9yZGVyOiAxcHggc29saWQgIzEyNjJmZjsNCiAgICBiYWNrZ3JvdW5kOiAjMWUyMDI4Ow0KICAgIG91dGxpbmU6IG5vbmU7DQogICAgcGFkZGluZzogMHB4IDMycHg7DQogICAgZm9udC13ZWlnaHQ6IDUwMDsNCiAgICBib3JkZXItcmFkaXVzOiAwcHg7DQogICAgYm9yZGVyLWxlZnQ6IG5vbmU7DQp9DQoNCi5jYWxjLWJnIC5jYWwtYmcgLmNhbGJnIHVsIGxpIC5jYWwyIC5jYWwtaW52ZXN0IHAgew0KICAgIHBhZGRpbmc6IDhweCAxN3B4Ow0KICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBjb2xvcjogIzEyNjJmZjsNCiAgICBmb250LXdlaWdodDogNTAwOw0KICAgIGJvcmRlci1yYWRpdXM6IDZweDsNCiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsNCiAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgZmxvYXQ6IGxlZnQ7DQogICAgbWFyZ2luLXRvcDogLTM5cHg7DQp9DQoNCi5jYWxjLWJnIC5jYWwtYmcgLmNhbGJnIHVsIGxpIC5jYWwyIC5jYWwtaW52ZXN0IHNlbGVjdCB7DQogICAgZm9udC1zaXplOiAyMHB4Ow0KICAgIGNvbG9yOiAjMTI2MmZmOw0KICAgIGhlaWdodDogNDBweDsNCiAgICB3aWR0aDogOTUlOw0KICAgIGJvcmRlcjogMXB4IHNvbGlkICMxMjYyZmY7DQogICAgYmFja2dyb3VuZDogIzFlMjAyODsNCiAgICBvdXRsaW5lOiBub25lOw0KICAgIHBhZGRpbmc6IDBweCAxMHB4Ow0KICAgIGZvbnQtd2VpZ2h0OiA1MDA7DQogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50Ow0KfQ0KDQouY2FsYy11bCB7DQogICAgZGlzcGxheTogZmxleDsNCiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsNCiAgICBmbGV4LXdyYXA6IHdyYXA7DQp9DQoNCi5wbGFuLWxlZnQgew0KICAgIGZvbnQtc2l6ZTogMjBweDsNCiAgICBjb2xvcjogI2ZmZmZmZjsNCiAgICBoZWlnaHQ6IDQwcHg7DQogICAgLyogd2lkdGg6IDk1JTsgKi8NCiAgICBib3JkZXI6IDFweCBzb2xpZCAjMTI2MmZmOw0KICAgIGJhY2tncm91bmQ6ICMxZTIwMjg7DQogICAgb3V0bGluZTogbm9uZTsNCiAgICBwYWRkaW5nOiAwcHggMTBweDsNCiAgICBmb250LXdlaWdodDogNTAwOw0KICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsNCiAgICBkaXNwbGF5OiBibG9jazsNCiAgICBkaXNwbGF5OiBmbGV4Ow0KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQp9DQoNCi5jYWwyIHsNCiAgICBkaXNwbGF5OiBmbGV4Ow0KfQ0KDQouY2FsMSB7DQogICAgZGlzcGxheTogZmxleDsNCn0NCg0KLmNhbGJnIHsNCiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoOSwgNTMsIDEwMSwgMCkgMyUsIHJnYigzOCA1NiA5NCkgMyUsIHJnYmEoNiwgMzYsIDc1LCAxKSA0OCUsIHJnYigzOCA1NiA5NCkgOTclLCByZ2JhKDksIDYwLCAxMjAsIDApIDk3JSk7DQogICAgcGFkZGluZzogMTVweCA1cHggIWltcG9ydGFudDsNCn0NCg0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7DQogICAgLmNhbGMtYmcgLmNhbC1iZyAuY2FsYmcgdWwgbGkgew0KICAgICAgICB3aWR0aDogMzMlOw0KICAgIH0NCn0NCg0KQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7DQogICAgLmNhbGMtYmcgLmNhbC1iZyAuY2FsYmcgdWwgbGkgew0KICAgICAgICB3aWR0aDogNzUlOw0KICAgIH0NCn0NCg0KLnBsYW4tYmlnIHsNCiAgICBmb250LXNpemU6IDI0cHg7DQogICAgY29sb3I6ICMxNTg4ZjA7DQp9"}},"time_used":91,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":91,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-includes/js/jquery/jquery-migrate.min5589.js?ver=3.4.1","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.791Z","timestamp":1785128398791,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-includes/js/jquery/jquery-migrate.min5589.js?ver=3.4.1 HTTP/1.1\r\nHost: circuittradetech.com\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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 5122\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 20:43:17 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"4919-67c3620e-9c417e1176589e59;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 461801\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: c5f19c58372ec2835e7282d4a5052aca-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":18713,"size_decoded":5710,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (519)","md5":"1d6dae7fe5617d9a7cef583039033804","sha1":"6267c462e74865b877d159d83f40642acb58cd03","sha256":"261bd4fe31b6ef4e89e5c02a202840220841b4e6b68b05e8438f62a20c63051f","sha512":"4b45dd01acc33cf3abdd28a47419ab6bcd962aa2b522ed2fbf63d3f31589677ca7ce936aca4b02d63c508859bb42a41d384e4ccd92a60f2daf6eefc7f7825501","ssdeep":"384:5vjxzRDFKvtShyQlmCHFSPoj/0rK977tq23MUGhJ11X:JNKvQhyIUPowy7pqcMUGV1X","tlshash":"2e82962eb5f626319567f1b8e52fcd5a7276048f168d9e00784c81b51f0d838a3b9fe8","first_seen":"2023-11-09T22:36:28Z","last_seen":"2026-07-27T05:30:59.832639Z","times_seen":57,"resource_available":true,"data":"LyohIGpRdWVyeSBNaWdyYXRlIHYzLjQuMSB8IChjKSBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiJ1bmRlZmluZWQiID09IHR5cGVvZiBqUXVlcnkubWlncmF0ZU11dGUgJiYgKGpRdWVyeS5taWdyYXRlTXV0ZSA9ICEwKSwKICAgIGZ1bmN0aW9uKHQpIHsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWyJqcXVlcnkiXSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdChlLCB3aW5kb3cpCiAgICAgICAgfSkgOiAib2JqZWN0IiA9PSB0eXBlb2YgbW9kdWxlICYmIG1vZHVsZS5leHBvcnRzID8gbW9kdWxlLmV4cG9ydHMgPSB0KHJlcXVpcmUoImpxdWVyeSIpLCB3aW5kb3cpIDogdChqUXVlcnksIHdpbmRvdykKICAgIH0oZnVuY3Rpb24ocywgbikgewogICAgICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAgICAgZnVuY3Rpb24gZShlKSB7CiAgICAgICAgICAgIHJldHVybiAwIDw9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAvXihcZCspXC4oXGQrKVwuKFxkKykvLCBuID0gci5leGVjKGUpIHx8IFtdLCBvID0gci5leGVjKHQpIHx8IFtdLCBhID0gMTsgYSA8PSAzOyBhKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoK29bYV0gPCArblthXSkgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCtuW2FdIDwgK29bYV0pIHJldHVybiAtMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgfShzLmZuLmpxdWVyeSwgZSkKICAgICAgICB9CiAgICAgICAgcy5taWdyYXRlVmVyc2lvbiA9ICIzLjQuMSI7CiAgICAgICAgdmFyIHQgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogICAgICAgIHMubWlncmF0ZURpc2FibGVQYXRjaGVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB0W2FyZ3VtZW50c1tlXV0gPSAhMAogICAgICAgIH0sIHMubWlncmF0ZUVuYWJsZVBhdGNoZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSA9IDA7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIGRlbGV0ZSB0W2FyZ3VtZW50c1tlXV0KICAgICAgICB9LCBzLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICF0W2VdCiAgICAgICAgfSwgbi5jb25zb2xlICYmIG4uY29uc29sZS5sb2cgJiYgKHMgJiYgZSgiMy4wLjAiKSAmJiAhZSgiNS4wLjAiKSB8fCBuLmNvbnNvbGUubG9nKCJKUU1JR1JBVEU6IGpRdWVyeSAzLngtNC54IFJFUVVJUkVEIiksIHMubWlncmF0ZVdhcm5pbmdzICYmIG4uY29uc29sZS5sb2coIkpRTUlHUkFURTogTWlncmF0ZSBwbHVnaW4gbG9hZGVkIG11bHRpcGxlIHRpbWVzIiksIG4uY29uc29sZS5sb2coIkpRTUlHUkFURTogTWlncmF0ZSBpcyBpbnN0YWxsZWQiICsgKHMubWlncmF0ZU11dGUgPyAiIiA6ICIgd2l0aCBsb2dnaW5nIGFjdGl2ZSIpICsgIiwgdmVyc2lvbiAiICsgcy5taWdyYXRlVmVyc2lvbikpOwogICAgICAgIHZhciBvID0ge307CgogICAgICAgIGZ1bmN0aW9uIHUoZSwgdCkgewogICAgICAgICAgICB2YXIgciA9IG4uY29uc29sZTsKICAgICAgICAgICAgIXMubWlncmF0ZUlzUGF0Y2hFbmFibGVkKGUpIHx8IHMubWlncmF0ZURlZHVwbGljYXRlV2FybmluZ3MgJiYgb1t0XSB8fCAob1t0XSA9ICEwLCBzLm1pZ3JhdGVXYXJuaW5ncy5wdXNoKHQgKyAiIFsiICsgZSArICJdIiksIHIgJiYgci53YXJuICYmICFzLm1pZ3JhdGVNdXRlICYmIChyLndhcm4oIkpRTUlHUkFURTogIiArIHQpLCBzLm1pZ3JhdGVUcmFjZSAmJiByLnRyYWNlICYmIHIudHJhY2UoKSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByKGUsIHQsIHIsIG4sIG8pIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHQsIHsKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUobiwgbyksIHIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB1KG4sIG8pLCByID0gZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYShlLCB0LCByLCBuLCBvKSB7CiAgICAgICAgICAgIHZhciBhID0gZVt0XTsKICAgICAgICAgICAgZVt0XSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG8gJiYgdShuLCBvKSwgKHMubWlncmF0ZUlzUGF0Y2hFbmFibGVkKG4pID8gciA6IGEgfHwgcy5ub29wKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGMoZSwgdCwgciwgbiwgbykgewogICAgICAgICAgICBpZiAoIW8pIHRocm93IG5ldyBFcnJvcigiTm8gd2FybmluZyBtZXNzYWdlIHByb3ZpZGVkIik7CiAgICAgICAgICAgIHJldHVybiBhKGUsIHQsIHIsIG4sIG8pLCAwCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBpKGUsIHQsIHIsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIGEoZSwgdCwgciwgbiksIDAKICAgICAgICB9CiAgICAgICAgcy5taWdyYXRlRGVkdXBsaWNhdGVXYXJuaW5ncyA9ICEwLCBzLm1pZ3JhdGVXYXJuaW5ncyA9IFtdLCB2b2lkIDAgPT09IHMubWlncmF0ZVRyYWNlICYmIChzLm1pZ3JhdGVUcmFjZSA9ICEwKSwgcy5taWdyYXRlUmVzZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgbyA9IHt9LCBzLm1pZ3JhdGVXYXJuaW5ncy5sZW5ndGggPSAwCiAgICAgICAgfSwgIkJhY2tDb21wYXQiID09PSBuLmRvY3VtZW50LmNvbXBhdE1vZGUgJiYgdSgicXVpcmtzIiwgImpRdWVyeSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFF1aXJrcyBNb2RlIik7CiAgICAgICAgdmFyIGQsIGwsIHAsIGYgPSB7fSwKICAgICAgICAgICAgbSA9IHMuZm4uaW5pdCwKICAgICAgICAgICAgeSA9IHMuZmluZCwKICAgICAgICAgICAgaCA9IC9cWyhccypbLVx3XStccyopKFt+fF4kKl0/PSlccyooWy1cdyNdKj8jWy1cdyNdKilccypcXS8sCiAgICAgICAgICAgIGcgPSAvXFsoXHMqWy1cd10rXHMqKShbfnxeJCpdPz0pXHMqKFstXHcjXSo/I1stXHcjXSopXHMqXF0vZywKICAgICAgICAgICAgdiA9IC9eW1xzXHVGRUZGXHhBMF0rfChbXlxzXHVGRUZGXHhBMF0pW1xzXHVGRUZGXHhBMF0rJC9nOwogICAgICAgIGZvciAoZCBpbiBpKHMuZm4sICJpbml0IiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgcmV0dXJuIHMubWlncmF0ZUlzUGF0Y2hFbmFibGVkKCJzZWxlY3Rvci1lbXB0eS1pZCIpICYmICJzdHJpbmciID09IHR5cGVvZiBlICYmICIjIiA9PT0gZSAmJiAodSgic2VsZWN0b3ItZW1wdHktaWQiLCAialF1ZXJ5KCAnIycgKSBpcyBub3QgYSB2YWxpZCBzZWxlY3RvciIpLCB0WzBdID0gW10pLCBtLmFwcGx5KHRoaXMsIHQpCiAgICAgICAgICAgIH0sICJzZWxlY3Rvci1lbXB0eS1pZCIpLCBzLmZuLmluaXQucHJvdG90eXBlID0gcy5mbiwgaShzLCAiZmluZCIsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciByID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiBoLnRlc3QodCkpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgdCA9IHQucmVwbGFjZShnLCBmdW5jdGlvbihlLCB0LCByLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiWyIgKyB0ICsgciArICciJyArIG4gKyAnIl0nCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpLCB1KCJzZWxlY3Rvci1oYXNoIiwgIkF0dHJpYnV0ZSBzZWxlY3RvciB3aXRoICcjJyBtdXN0IGJlIHF1b3RlZDogIiArIHJbMF0pLCByWzBdID0gdAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdSgic2VsZWN0b3ItaGFzaCIsICJBdHRyaWJ1dGUgc2VsZWN0b3Igd2l0aCAnIycgd2FzIG5vdCBmaXhlZDogIiArIHJbMF0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHkuYXBwbHkodGhpcywgcikKICAgICAgICAgICAgfSwgInNlbGVjdG9yLWhhc2giKSwgeSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHksIGQpICYmIChzLmZpbmRbZF0gPSB5W2RdKTsKICAgICAgICBjKHMuZm4sICJzaXplIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmxlbmd0aAogICAgICAgIH0sICJzaXplIiwgImpRdWVyeS5mbi5zaXplKCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDsgdXNlIHRoZSAubGVuZ3RoIHByb3BlcnR5IiksIGMocywgInBhcnNlSlNPTiIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICAgICAgfSwgInBhcnNlSlNPTiIsICJqUXVlcnkucGFyc2VKU09OIGlzIGRlcHJlY2F0ZWQ7IHVzZSBKU09OLnBhcnNlIiksIGMocywgImhvbGRSZWFkeSIsIHMuaG9sZFJlYWR5LCAiaG9sZFJlYWR5IiwgImpRdWVyeS5ob2xkUmVhZHkgaXMgZGVwcmVjYXRlZCIpLCBjKHMsICJ1bmlxdWUiLCBzLnVuaXF1ZVNvcnQsICJ1bmlxdWUiLCAialF1ZXJ5LnVuaXF1ZSBpcyBkZXByZWNhdGVkOyB1c2UgalF1ZXJ5LnVuaXF1ZVNvcnQiKSwgcihzLmV4cHIsICJmaWx0ZXJzIiwgcy5leHByLnBzZXVkb3MsICJleHByLXByZS1wc2V1ZG9zIiwgImpRdWVyeS5leHByLmZpbHRlcnMgaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS5leHByLnBzZXVkb3MiKSwgcihzLmV4cHIsICI6Iiwgcy5leHByLnBzZXVkb3MsICJleHByLXByZS1wc2V1ZG9zIiwgImpRdWVyeS5leHByWyc6J10gaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS5leHByLnBzZXVkb3MiKSwgZSgiMy4xLjEiKSAmJiBjKHMsICJ0cmltIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gIiIgOiAoZSArICIiKS5yZXBsYWNlKHYsICIkMSIpCiAgICAgICAgfSwgInRyaW0iLCAialF1ZXJ5LnRyaW0gaXMgZGVwcmVjYXRlZDsgdXNlIFN0cmluZy5wcm90b3R5cGUudHJpbSIpLCBlKCIzLjIuMCIpICYmIChjKHMsICJub2RlTmFtZSIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIGUubm9kZU5hbWUgJiYgZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0LnRvTG93ZXJDYXNlKCkKICAgICAgICB9LCAibm9kZU5hbWUiLCAialF1ZXJ5Lm5vZGVOYW1lIGlzIGRlcHJlY2F0ZWQiKSwgYyhzLCAiaXNBcnJheSIsIEFycmF5LmlzQXJyYXksICJpc0FycmF5IiwgImpRdWVyeS5pc0FycmF5IGlzIGRlcHJlY2F0ZWQ7IHVzZSBBcnJheS5pc0FycmF5IikpLCBlKCIzLjMuMCIpICYmIChjKHMsICJpc051bWVyaWMiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gdHlwZW9mIGU7CiAgICAgICAgICAgIHJldHVybiAoIm51bWJlciIgPT0gdCB8fCAic3RyaW5nIiA9PSB0KSAmJiAhaXNOYU4oZSAtIHBhcnNlRmxvYXQoZSkpCiAgICAgICAgfSwgImlzTnVtZXJpYyIsICJqUXVlcnkuaXNOdW1lcmljKCkgaXMgZGVwcmVjYXRlZCIpLCBzLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGZbIltvYmplY3QgIiArIHQgKyAiXSJdID0gdC50b0xvd2VyQ2FzZSgpCiAgICAgICAgfSksIGMocywgInR5cGUiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyBlICsgIiIgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gZltPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSldIHx8ICJvYmplY3QiIDogdHlwZW9mIGUKICAgICAgICB9LCAidHlwZSIsICJqUXVlcnkudHlwZSBpcyBkZXByZWNhdGVkIiksIGMocywgImlzRnVuY3Rpb24iLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlCiAgICAgICAgfSwgImlzRnVuY3Rpb24iLCAialF1ZXJ5LmlzRnVuY3Rpb24oKSBpcyBkZXByZWNhdGVkIiksIGMocywgImlzV2luZG93IiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlICYmIGUgPT09IGUud2luZG93CiAgICAgICAgfSwgImlzV2luZG93IiwgImpRdWVyeS5pc1dpbmRvdygpIGlzIGRlcHJlY2F0ZWQiKSksIHMuYWpheCAmJiAobCA9IHMuYWpheCwgcCA9IC8oPSlcPyg/PSZ8JCl8XD9cPy8sIGkocywgImFqYXgiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgIHJldHVybiBlLnByb21pc2UgJiYgKGMoZSwgInN1Y2Nlc3MiLCBlLmRvbmUsICJqcVhIUi1tZXRob2RzIiwgImpRWEhSLnN1Y2Nlc3MgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLCBjKGUsICJlcnJvciIsIGUuZmFpbCwgImpxWEhSLW1ldGhvZHMiLCAialFYSFIuZXJyb3IgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLCBjKGUsICJjb21wbGV0ZSIsIGUuYWx3YXlzLCAianFYSFItbWV0aG9kcyIsICJqUVhIUi5jb21wbGV0ZSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkIikpLCBlCiAgICAgICAgfSwgImpxWEhSLW1ldGhvZHMiKSwgZSgiNC4wLjAiKSB8fCBzLmFqYXhQcmVmaWx0ZXIoIitqc29uIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAhMSAhPT0gZS5qc29ucCAmJiAocC50ZXN0KGUudXJsKSB8fCAic3RyaW5nIiA9PSB0eXBlb2YgZS5kYXRhICYmIDAgPT09IChlLmNvbnRlbnRUeXBlIHx8ICIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSAmJiBwLnRlc3QoZS5kYXRhKSkgJiYgdSgianNvbnAtcHJvbW90aW9uIiwgIkpTT04tdG8tSlNPTlAgYXV0by1wcm9tb3Rpb24gaXMgZGVwcmVjYXRlZCIpCiAgICAgICAgfSkpOwogICAgICAgIHZhciBqID0gcy5mbi5yZW1vdmVBdHRyLAogICAgICAgICAgICBiID0gcy5mbi50b2dnbGVDbGFzcywKICAgICAgICAgICAgdyA9IC9cUysvZzsKCiAgICAgICAgZnVuY3Rpb24geChlKSB7CiAgICAgICAgICAgIHJldHVybiBlLnJlcGxhY2UoLy0oW2Etel0pL2csIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0LnRvVXBwZXJDYXNlKCkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgaShzLmZuLCAicmVtb3ZlQXR0ciIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHIgPSB0aGlzLAogICAgICAgICAgICAgICAgbiA9ICExOwogICAgICAgICAgICByZXR1cm4gcy5lYWNoKGUubWF0Y2godyksIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHMuZXhwci5tYXRjaC5ib29sLnRlc3QodCkgJiYgci5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICghMSAhPT0gcyh0aGlzKS5wcm9wKHQpKSByZXR1cm4gIShuID0gITApCiAgICAgICAgICAgICAgICB9KSwgbiAmJiAodSgicmVtb3ZlQXR0ci1ib29sIiwgImpRdWVyeS5mbi5yZW1vdmVBdHRyIG5vIGxvbmdlciBzZXRzIGJvb2xlYW4gcHJvcGVydGllczogIiArIHQpLCByLnByb3AodCwgITEpKQogICAgICAgICAgICB9KSwgai5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgfSwgInJlbW92ZUF0dHItYm9vbCIpLCBpKHMuZm4sICJ0b2dnbGVDbGFzcyIsIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gdCAmJiAiYm9vbGVhbiIgIT0gdHlwZW9mIHQgPyBiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiAodSgidG9nZ2xlQ2xhc3MtYm9vbCIsICJqUXVlcnkuZm4udG9nZ2xlQ2xhc3MoIGJvb2xlYW4gKSBpcyBkZXByZWNhdGVkIiksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5nZXRBdHRyaWJ1dGUgJiYgdGhpcy5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwgIiI7CiAgICAgICAgICAgICAgICBlICYmIHMuZGF0YSh0aGlzLCAiX19jbGFzc05hbWVfXyIsIGUpLCB0aGlzLnNldEF0dHJpYnV0ZSAmJiB0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAhZSAmJiAhMSAhPT0gdCAmJiBzLmRhdGEodGhpcywgIl9fY2xhc3NOYW1lX18iKSB8fCAiIikKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwgInRvZ2dsZUNsYXNzLWJvb2wiKTsKICAgICAgICB2YXIgUSwgQSwgUiA9ICExLAogICAgICAgICAgICBDID0gL15bYS16XS8sCiAgICAgICAgICAgIE4gPSAvXig/OkJvcmRlcig/OlRvcHxSaWdodHxCb3R0b218TGVmdCk/KD86V2lkdGh8KXwoPzpNYXJnaW58UGFkZGluZyk/KD86VG9wfFJpZ2h0fEJvdHRvbXxMZWZ0KT98KD86TWlufE1heCk/KD86V2lkdGh8SGVpZ2h0KSkkLzsKICAgICAgICBzLnN3YXAgJiYgcy5lYWNoKFsiaGVpZ2h0IiwgIndpZHRoIiwgInJlbGlhYmxlTWFyZ2luUmlnaHQiXSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgciA9IHMuY3NzSG9va3NbdF0gJiYgcy5jc3NIb29rc1t0XS5nZXQ7CiAgICAgICAgICAgIHIgJiYgKHMuY3NzSG9va3NbdF0uZ2V0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgIHJldHVybiBSID0gITAsIGUgPSByLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIFIgPSAhMSwgZQogICAgICAgICAgICB9KQogICAgICAgIH0pLCBpKHMsICJzd2FwIiwgZnVuY3Rpb24oZSwgdCwgciwgbikgewogICAgICAgICAgICB2YXIgbywgYSwgaSA9IHt9OwogICAgICAgICAgICBmb3IgKGEgaW4gUiB8fCB1KCJzd2FwIiwgImpRdWVyeS5zd2FwKCkgaXMgdW5kb2N1bWVudGVkIGFuZCBkZXByZWNhdGVkIiksIHQpIGlbYV0gPSBlLnN0eWxlW2FdLCBlLnN0eWxlW2FdID0gdFthXTsKICAgICAgICAgICAgZm9yIChhIGluIG8gPSByLmFwcGx5KGUsIG4gfHwgW10pLCB0KSBlLnN0eWxlW2FdID0gaVthXTsKICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICB9LCAic3dhcCIpLCBlKCIzLjQuMCIpICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBQcm94eSAmJiAocy5jc3NQcm9wcyA9IG5ldyBQcm94eShzLmNzc1Byb3BzIHx8IHt9LCB7CiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdSgiY3NzUHJvcHMiLCAialF1ZXJ5LmNzc1Byb3BzIGlzIGRlcHJlY2F0ZWQiKSwgUmVmbGVjdC5zZXQuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICB9CiAgICAgICAgfSkpLCBlKCI0LjAuMCIpID8gKEEgPSB7CiAgICAgICAgICAgIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiAhMCwKICAgICAgICAgICAgY29sdW1uQ291bnQ6ICEwLAogICAgICAgICAgICBmaWxsT3BhY2l0eTogITAsCiAgICAgICAgICAgIGZsZXhHcm93OiAhMCwKICAgICAgICAgICAgZmxleFNocmluazogITAsCiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICEwLAogICAgICAgICAgICBncmlkQXJlYTogITAsCiAgICAgICAgICAgIGdyaWRDb2x1bW46ICEwLAogICAgICAgICAgICBncmlkQ29sdW1uRW5kOiAhMCwKICAgICAgICAgICAgZ3JpZENvbHVtblN0YXJ0OiAhMCwKICAgICAgICAgICAgZ3JpZFJvdzogITAsCiAgICAgICAgICAgIGdyaWRSb3dFbmQ6ICEwLAogICAgICAgICAgICBncmlkUm93U3RhcnQ6ICEwLAogICAgICAgICAgICBsaW5lSGVpZ2h0OiAhMCwKICAgICAgICAgICAgb3BhY2l0eTogITAsCiAgICAgICAgICAgIG9yZGVyOiAhMCwKICAgICAgICAgICAgb3JwaGFuczogITAsCiAgICAgICAgICAgIHdpZG93czogITAsCiAgICAgICAgICAgIHpJbmRleDogITAsCiAgICAgICAgICAgIHpvb206ICEwCiAgICAgICAgfSwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIFByb3h5ID8gcy5jc3NOdW1iZXIgPSBuZXcgUHJveHkoQSwgewogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHUoImNzcy1udW1iZXIiLCAialF1ZXJ5LmNzc051bWJlciBpcyBkZXByZWNhdGVkIiksIFJlZmxlY3QuZ2V0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB1KCJjc3MtbnVtYmVyIiwgImpRdWVyeS5jc3NOdW1iZXIgaXMgZGVwcmVjYXRlZCIpLCBSZWZsZWN0LnNldC5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9KSA6IHMuY3NzTnVtYmVyID0gQSkgOiBBID0gcy5jc3NOdW1iZXIsIFEgPSBzLmZuLmNzcywgaShzLmZuLCAiY3NzIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgciwgbiwgbyA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiBlICYmICJvYmplY3QiID09IHR5cGVvZiBlICYmICFBcnJheS5pc0FycmF5KGUpID8gKHMuZWFjaChlLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBzLmZuLmNzcy5jYWxsKG8sIGUsIHQpCiAgICAgICAgICAgIH0pLCB0aGlzKSA6ICgibnVtYmVyIiA9PSB0eXBlb2YgdCAmJiAociA9IHgoZSksIG4gPSByLCBDLnRlc3QobikgJiYgTi50ZXN0KG5bMF0udG9VcHBlckNhc2UoKSArIG4uc2xpY2UoMSkpIHx8IEFbcl0gfHwgdSgiY3NzLW51bWJlciIsICdOdW1iZXItdHlwZWQgdmFsdWVzIGFyZSBkZXByZWNhdGVkIGZvciBqUXVlcnkuZm4uY3NzKCAiJyArIGUgKyAnIiwgdmFsdWUgKScpKSwgUS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgIH0sICJjc3MtbnVtYmVyIik7CiAgICAgICAgdmFyIFMsIFAsIGssIEgsIEUgPSBzLmRhdGE7CiAgICAgICAgaShzLCAiZGF0YSIsIGZ1bmN0aW9uKGUsIHQsIHIpIHsKICAgICAgICAgICAgdmFyIG4sIG8sIGE7CiAgICAgICAgICAgIGlmICh0ICYmICJvYmplY3QiID09IHR5cGVvZiB0ICYmIDIgPT09IGFyZ3VtZW50cy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGZvciAoYSBpbiBuID0gcy5oYXNEYXRhKGUpICYmIEUuY2FsbCh0aGlzLCBlKSwgbyA9IHt9LCB0KSBhICE9PSB4KGEpID8gKHUoImRhdGEtY2FtZWxDYXNlIiwgImpRdWVyeS5kYXRhKCkgYWx3YXlzIHNldHMvZ2V0cyBjYW1lbENhc2VkIG5hbWVzOiAiICsgYSksIG5bYV0gPSB0W2FdKSA6IG9bYV0gPSB0W2FdOwogICAgICAgICAgICAgICAgcmV0dXJuIEUuY2FsbCh0aGlzLCBlLCBvKSwgdAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0ICYmICJzdHJpbmciID09IHR5cGVvZiB0ICYmIHQgIT09IHgodCkgJiYgKG4gPSBzLmhhc0RhdGEoZSkgJiYgRS5jYWxsKHRoaXMsIGUpKSAmJiB0IGluIG4gPyAodSgiZGF0YS1jYW1lbENhc2UiLCAialF1ZXJ5LmRhdGEoKSBhbHdheXMgc2V0cy9nZXRzIGNhbWVsQ2FzZWQgbmFtZXM6ICIgKyB0KSwgMiA8IGFyZ3VtZW50cy5sZW5ndGggJiYgKG5bdF0gPSByKSwgblt0XSkgOiBFLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICB9LCAiZGF0YS1jYW1lbENhc2UiKSwgcy5meCAmJiAoayA9IHMuVHdlZW4ucHJvdG90eXBlLnJ1biwgSCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9LCBpKHMuVHdlZW4ucHJvdG90eXBlLCAicnVuIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIDEgPCBzLmVhc2luZ1t0aGlzLmVhc2luZ10ubGVuZ3RoICYmICh1KCJlYXNpbmctb25lLWFyZyIsICInalF1ZXJ5LmVhc2luZy4iICsgdGhpcy5lYXNpbmcudG9TdHJpbmcoKSArICInIHNob3VsZCB1c2Ugb25seSBvbmUgYXJndW1lbnQiKSwgcy5lYXNpbmdbdGhpcy5lYXNpbmddID0gSCksIGsuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgIH0sICJlYXNpbmctb25lLWFyZyIpLCBTID0gcy5meC5pbnRlcnZhbCwgUCA9ICJqUXVlcnkuZnguaW50ZXJ2YWwgaXMgZGVwcmVjYXRlZCIsIG4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLmZ4LCAiaW50ZXJ2YWwiLCB7CiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG4uZG9jdW1lbnQuaGlkZGVuIHx8IHUoImZ4LWludGVydmFsIiwgUCksIHMubWlncmF0ZUlzUGF0Y2hFbmFibGVkKCJmeC1pbnRlcnZhbCIpICYmIHZvaWQgMCA9PT0gUyA/IDEzIDogUwogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHUoImZ4LWludGVydmFsIiwgUCksIFMgPSBlCiAgICAgICAgICAgIH0KICAgICAgICB9KSk7CiAgICAgICAgdmFyIE0gPSBzLmZuLmxvYWQsCiAgICAgICAgICAgIHEgPSBzLmV2ZW50LmFkZCwKICAgICAgICAgICAgTyA9IHMuZXZlbnQuZml4OwogICAgICAgIHMuZXZlbnQucHJvcHMgPSBbXSwgcy5ldmVudC5maXhIb29rcyA9IHt9LCByKHMuZXZlbnQucHJvcHMsICJjb25jYXQiLCBzLmV2ZW50LnByb3BzLmNvbmNhdCwgImV2ZW50LW9sZC1wYXRjaCIsICJqUXVlcnkuZXZlbnQucHJvcHMuY29uY2F0KCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLCBpKHMuZXZlbnQsICJmaXgiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCByID0gZS50eXBlLAogICAgICAgICAgICAgICAgbiA9IHRoaXMuZml4SG9va3Nbcl0sCiAgICAgICAgICAgICAgICBvID0gcy5ldmVudC5wcm9wczsKICAgICAgICAgICAgaWYgKG8ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICB1KCJldmVudC1vbGQtcGF0Y2giLCAialF1ZXJ5LmV2ZW50LnByb3BzIGFyZSBkZXByZWNhdGVkIGFuZCByZW1vdmVkOiAiICsgby5qb2luKCkpOwogICAgICAgICAgICAgICAgd2hpbGUgKG8ubGVuZ3RoKSBzLmV2ZW50LmFkZFByb3Aoby5wb3AoKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobiAmJiAhbi5fbWlncmF0ZWRfICYmIChuLl9taWdyYXRlZF8gPSAhMCwgdSgiZXZlbnQtb2xkLXBhdGNoIiwgImpRdWVyeS5ldmVudC5maXhIb29rcyBhcmUgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDogIiArIHIpLCAobyA9IG4ucHJvcHMpICYmIG8ubGVuZ3RoKSkKICAgICAgICAgICAgICAgIHdoaWxlIChvLmxlbmd0aCkgcy5ldmVudC5hZGRQcm9wKG8ucG9wKCkpOwogICAgICAgICAgICByZXR1cm4gdCA9IE8uY2FsbCh0aGlzLCBlKSwgbiAmJiBuLmZpbHRlciA/IG4uZmlsdGVyKHQsIGUpIDogdAogICAgICAgIH0sICJldmVudC1vbGQtcGF0Y2giKSwgaShzLmV2ZW50LCAiYWRkIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gZSA9PT0gbiAmJiAibG9hZCIgPT09IHQgJiYgImNvbXBsZXRlIiA9PT0gbi5kb2N1bWVudC5yZWFkeVN0YXRlICYmIHUoImxvYWQtYWZ0ZXItZXZlbnQiLCAialF1ZXJ5KHdpbmRvdykub24oJ2xvYWQnLi4uKSBjYWxsZWQgYWZ0ZXIgbG9hZCBldmVudCBvY2N1cnJlZCIpLCBxLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICB9LCAibG9hZC1hZnRlci1ldmVudCIpLCBzLmVhY2goWyJsb2FkIiwgInVubG9hZCIsICJlcnJvciJdLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGkocy5mbiwgdCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gImxvYWQiID09PSB0ICYmICJzdHJpbmciID09IHR5cGVvZiBlWzBdID8gTS5hcHBseSh0aGlzLCBlKSA6ICh1KCJzaG9ydGhhbmQtcmVtb3ZlZC12MyIsICJqUXVlcnkuZm4uIiArIHQgKyAiKCkgaXMgZGVwcmVjYXRlZCIpLCBlLnNwbGljZSgwLCAwLCB0KSwgYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMub24uYXBwbHkodGhpcywgZSkgOiAodGhpcy50cmlnZ2VySGFuZGxlci5hcHBseSh0aGlzLCBlKSwgdGhpcykpCiAgICAgICAgICAgIH0sICJzaG9ydGhhbmQtcmVtb3ZlZC12MyIpCiAgICAgICAgfSksIHMuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSwgZnVuY3Rpb24oZSwgcikgewogICAgICAgICAgICBjKHMuZm4sIHIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAwIDwgYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMub24ociwgbnVsbCwgZSwgdCkgOiB0aGlzLnRyaWdnZXIocikKICAgICAgICAgICAgfSwgInNob3J0aGFuZC1kZXByZWNhdGVkLXYzIiwgImpRdWVyeS5mbi4iICsgciArICIoKSBldmVudCBzaG9ydGhhbmQgaXMgZGVwcmVjYXRlZCIpCiAgICAgICAgfSksIHMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHMobi5kb2N1bWVudCkudHJpZ2dlckhhbmRsZXIoInJlYWR5IikKICAgICAgICB9KSwgcy5ldmVudC5zcGVjaWFsLnJlYWR5ID0gewogICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzID09PSBuLmRvY3VtZW50ICYmIHUoInJlYWR5LWV2ZW50IiwgIidyZWFkeScgZXZlbnQgaXMgZGVwcmVjYXRlZCIpCiAgICAgICAgICAgIH0KICAgICAgICB9LCBjKHMuZm4sICJiaW5kIiwgZnVuY3Rpb24oZSwgdCwgcikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vbihlLCBudWxsLCB0LCByKQogICAgICAgIH0sICJwcmUtb24tbWV0aG9kcyIsICJqUXVlcnkuZm4uYmluZCgpIGlzIGRlcHJlY2F0ZWQiKSwgYyhzLmZuLCAidW5iaW5kIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vZmYoZSwgbnVsbCwgdCkKICAgICAgICB9LCAicHJlLW9uLW1ldGhvZHMiLCAialF1ZXJ5LmZuLnVuYmluZCgpIGlzIGRlcHJlY2F0ZWQiKSwgYyhzLmZuLCAiZGVsZWdhdGUiLCBmdW5jdGlvbihlLCB0LCByLCBuKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9uKHQsIGUsIHIsIG4pCiAgICAgICAgfSwgInByZS1vbi1tZXRob2RzIiwgImpRdWVyeS5mbi5kZWxlZ2F0ZSgpIGlzIGRlcHJlY2F0ZWQiKSwgYyhzLmZuLCAidW5kZWxlZ2F0ZSIsIGZ1bmN0aW9uKGUsIHQsIHIpIHsKICAgICAgICAgICAgcmV0dXJuIDEgPT09IGFyZ3VtZW50cy5sZW5ndGggPyB0aGlzLm9mZihlLCAiKioiKSA6IHRoaXMub2ZmKHQsIGUgfHwgIioqIiwgcikKICAgICAgICB9LCAicHJlLW9uLW1ldGhvZHMiLCAialF1ZXJ5LmZuLnVuZGVsZWdhdGUoKSBpcyBkZXByZWNhdGVkIiksIGMocy5mbiwgImhvdmVyIiwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vbigibW91c2VlbnRlciIsIGUpLm9uKCJtb3VzZWxlYXZlIiwgdCB8fCBlKQogICAgICAgIH0sICJwcmUtb24tbWV0aG9kcyIsICJqUXVlcnkuZm4uaG92ZXIoKSBpcyBkZXByZWNhdGVkIik7CgogICAgICAgIGZ1bmN0aW9uIFQoZSkgewogICAgICAgICAgICB2YXIgdCA9IG4uZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKTsKICAgICAgICAgICAgcmV0dXJuIHQuYm9keS5pbm5lckhUTUwgPSBlLCB0LmJvZHkgJiYgdC5ib2R5LmlubmVySFRNTAogICAgICAgIH0KICAgICAgICB2YXIgRiA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naTsKICAgICAgICBzLlVOU0FGRV9yZXN0b3JlTGVnYWN5SHRtbFByZWZpbHRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzLm1pZ3JhdGVFbmFibGVQYXRjaGVzKCJzZWxmLWNsb3NlZC10YWdzIikKICAgICAgICB9LCBpKHMsICJodG1sUHJlZmlsdGVyIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgcjsKICAgICAgICAgICAgcmV0dXJuIChyID0gKHQgPSBlKS5yZXBsYWNlKEYsICI8JDE+PC8kMj4iKSkgIT09IHQgJiYgVCh0KSAhPT0gVChyKSAmJiB1KCJzZWxmLWNsb3NlZC10YWdzIiwgIkhUTUwgdGFncyBtdXN0IGJlIHByb3Blcmx5IG5lc3RlZCBhbmQgY2xvc2VkOiAiICsgdCksIGUucmVwbGFjZShGLCAiPCQxPjwvJDI+IikKICAgICAgICB9LCAic2VsZi1jbG9zZWQtdGFncyIpLCBzLm1pZ3JhdGVEaXNhYmxlUGF0Y2hlcygic2VsZi1jbG9zZWQtdGFncyIpOwogICAgICAgIHZhciBELCBXLCBfLCBJID0gcy5mbi5vZmZzZXQ7CiAgICAgICAgcmV0dXJuIGkocy5mbiwgIm9mZnNldCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXNbMF07CiAgICAgICAgICAgIHJldHVybiAhZSB8fCBlLm5vZGVUeXBlICYmIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID8gSS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogKHUoIm9mZnNldC12YWxpZC1lbGVtIiwgImpRdWVyeS5mbi5vZmZzZXQoKSByZXF1aXJlcyBhIHZhbGlkIERPTSBlbGVtZW50IiksIGFyZ3VtZW50cy5sZW5ndGggPyB0aGlzIDogdm9pZCAwKQogICAgICAgIH0sICJvZmZzZXQtdmFsaWQtZWxlbSIpLCBzLmFqYXggJiYgKEQgPSBzLnBhcmFtLCBpKHMsICJwYXJhbSIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIHIgPSBzLmFqYXhTZXR0aW5ncyAmJiBzLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdCAmJiByICYmICh1KCJwYXJhbS1hamF4LXRyYWRpdGlvbmFsIiwgImpRdWVyeS5wYXJhbSgpIG5vIGxvbmdlciB1c2VzIGpRdWVyeS5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwiKSwgdCA9IHIpLCBELmNhbGwodGhpcywgZSwgdCkKICAgICAgICB9LCAicGFyYW0tYWpheC10cmFkaXRpb25hbCIpKSwgYyhzLmZuLCAiYW5kU2VsZiIsIHMuZm4uYWRkQmFjaywgImFuZFNlbGYiLCAialF1ZXJ5LmZuLmFuZFNlbGYoKSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkLCB1c2UgalF1ZXJ5LmZuLmFkZEJhY2soKSIpLCBzLkRlZmVycmVkICYmIChXID0gcy5EZWZlcnJlZCwgXyA9IFsKICAgICAgICAgICAgWyJyZXNvbHZlIiwgImRvbmUiLCBzLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgcy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksICJyZXNvbHZlZCJdLAogICAgICAgICAgICBbInJlamVjdCIsICJmYWlsIiwgcy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIHMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAicmVqZWN0ZWQiXSwKICAgICAgICAgICAgWyJub3RpZnkiLCAicHJvZ3Jlc3MiLCBzLkNhbGxiYWNrcygibWVtb3J5IiksIHMuQ2FsbGJhY2tzKCJtZW1vcnkiKV0KICAgICAgICBdLCBpKHMsICJEZWZlcnJlZCIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIGEgPSBXKCksCiAgICAgICAgICAgICAgICBpID0gYS5wcm9taXNlKCk7CgogICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgdmFyIG8gPSBhcmd1bWVudHM7CiAgICAgICAgICAgICAgICByZXR1cm4gcy5EZWZlcnJlZChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgcy5lYWNoKF8sIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBvW2VdICYmIG9bZV07CiAgICAgICAgICAgICAgICAgICAgICAgIGFbdFsxXV0oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHIgJiYgci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLnByb21pc2UgPyBlLnByb21pc2UoKS5kb25lKG4ucmVzb2x2ZSkuZmFpbChuLnJlamVjdCkucHJvZ3Jlc3Mobi5ub3RpZnkpIDogblt0WzBdICsgIldpdGgiXSh0aGlzID09PSBpID8gbi5wcm9taXNlKCkgOiB0aGlzLCByID8gW2VdIDogYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pLCBvID0gbnVsbAogICAgICAgICAgICAgICAgfSkucHJvbWlzZSgpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGMoYSwgInBpcGUiLCB0LCAiZGVmZXJyZWQtcGlwZSIsICJkZWZlcnJlZC5waXBlKCkgaXMgZGVwcmVjYXRlZCIpLCBjKGksICJwaXBlIiwgdCwgImRlZmVycmVkLXBpcGUiLCAiZGVmZXJyZWQucGlwZSgpIGlzIGRlcHJlY2F0ZWQiKSwgZSAmJiBlLmNhbGwoYSwgYSksIGEKICAgICAgICB9LCAiZGVmZXJyZWQtcGlwZSIpLCBzLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgPSBXLmV4Y2VwdGlvbkhvb2spLCBzCiAgICB9KTs="}},"time_used":114,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":113,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/circuittradetech.mp4","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"media","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.788Z","timestamp":1785128399788,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /circuittradetech.mp4 HTTP/1.1\r\nHost: circuittradetech.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nRange: bytes=98304-\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: video\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nAccept-Encoding: identity\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/3 206 \r\ndate: Mon, 27 Jul 2026 04:59:59 GMT\r\ncontent-type: video/mp4\r\ncontent-length: 79327542\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"4bbf136-67c3620e-869656e99233b625;;;\"\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 0\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: b1bd8a67b0f1f958d2920d0e1b578fbf-srv-edge3\r\nx-hcdn-cache-status: HIT\r\ncontent-range: bytes 98304-79425845/79425846\r\n\r\n","headers":null,"cookies":null,"status_code":"206","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":261813,"size_decoded":262283,"mime_type":"video/mp4","magic":"data","md5":"3bc1c122a7604cac15272caad5dc293b","sha1":"00aa54c502269225b133c55d4c48d7c0ffea9115","sha256":"5085567902f3b9db3832d137387f88bac97289830bbb3929447c573b70d3d918","sha512":"c54d49cad3ce162d579da410c24cc6112cd56eaa0968d4ce69f5880d489b7b7479b2c4e69534803ee4ce53220339db81b0f0acb043c7fc3d07168a713166e72f","ssdeep":"6144:+4NPuu+fMIijJS2jck2unE6YgcVVjpuj4BND+3PQlxsr7JFG:+uhjcUcENYVtcjZ3P+sBo","tlshash":"0344238aea28c542c6f5b5310d3fba4d7394962165b8f75c5b07c2dea7a702c8bf3844","first_seen":"2026-07-27T05:00:36.671034Z","last_seen":"2026-07-27T05:00:36.671034Z","times_seen":1,"resource_available":false,"data":"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"}},"time_used":134,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":29,"receive":105,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/uploads/sites/8/elementor/css/post-34477.css?ver=1706574921","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.768Z","timestamp":1785128398768,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/uploads/sites/8/elementor/css/post-34477.css?ver=1706574921 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 1077\r\ncache-control: public, max-age=604800\r\nexpires: Tue, 28 Jul 2026 21:55:45 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"2c08-67c3620e-be5ea539539755a6;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 457453\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: f5547d8d68910ee4ec0b9b66ec5b7f37-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.016\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":11272,"size_decoded":1649,"mime_type":"text/css","magic":"ASCII text","md5":"3089aa5e34553df5e4ea75627038fb05","sha1":"a538318c5943e870903be2bdfdaf46952cd1a9be","sha256":"3bb1c23dbe24fbb4533616d5793c4fe8ee9aaa7975080978b4ed35de15a0f374","sha512":"450ce2626686b0194454f48a0aff616306b8c6337fd03ae0aa07ab31c56f3b80b7785713e5072e1812a0a80cd1a5147576423021875b9ae18704b3ec9a62fbc8","ssdeep":"192:AUrIHSE89sA5oQ6/7fUdSob6GvSIh63UB2uTIwIh63UB2uTd4:FRsAyTaj","tlshash":"2f32a3997b22c461a8b7095eb7cbe16d252cd06f0c0dd4bbf9cc9314af6a77f9648201","first_seen":"2026-07-27T03:56:42.513231Z","last_seen":"2026-07-27T05:30:59.795019Z","times_seen":6,"resource_available":false,"data":"LmVsZW1lbnRvci1raXQtMyB7CiAgICAtLWUtZ2xvYmFsLWNvbG9yLXByaW1hcnk6ICMxMjYyRkY7CiAgICAtLWUtZ2xvYmFsLWNvbG9yLXNlY29uZGFyeTogIzgyRThGRjsKICAgIC0tZS1nbG9iYWwtY29sb3ItdGV4dDogI0E2QTZBNjsKICAgIC0tZS1nbG9iYWwtY29sb3ItYWNjZW50OiAjMTI2MkZGOwogICAgLS1lLWdsb2JhbC1jb2xvci0xY2U2YWU1OiAjRjlGOUY5OwogICAgLS1lLWdsb2JhbC1jb2xvci1lOWVhOWRkOiAjMDAwMDAwOwogICAgLS1lLWdsb2JhbC1jb2xvci0wOGVlNDY3OiAjRkZGRkZGOwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC1mYW1pbHk6ICJXb3JrIFNhbnMiOwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXByaW1hcnktZm9udC13ZWlnaHQ6IDcwMDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1mYW1pbHk6ICJXb3JrIFNhbnMiOwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodDogNjAwOwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1mYW1pbHk6ICJXb3JrIFNhbnMiOwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplOiAyMHB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC13ZWlnaHQ6IDQwMDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0OiAzMHB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LWZhbWlseTogIldvcmsgU2FucyI7CiAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWZvbnQtc2l6ZTogMjBweDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC13ZWlnaHQ6IDYwMDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtbGluZS1oZWlnaHQ6IDIzcHg7CiAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1mb250LXNpemU6IDY0cHg7CiAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1saW5lLWhlaWdodDogNzRweDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWZvbnQtc2l6ZTogNTRweDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWxpbmUtaGVpZ2h0OiA2NHB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdlZTgzYzktZm9udC1zaXplOiA0NHB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdlZTgzYzktbGluZS1oZWlnaHQ6IDU0cHg7CiAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1mb250LXNpemU6IDM4cHg7CiAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1saW5lLWhlaWdodDogNDhweDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWZvbnQtc2l6ZTogMzJweDsKICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWxpbmUtaGVpZ2h0OiA0MnB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTY0NjU5YzUtZm9udC1zaXplOiAyNnB4OwogICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTY0NjU5YzUtbGluZS1oZWlnaHQ6IDM2cHg7CiAgICBmb250LWZhbWlseTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWZvbnQtd2VpZ2h0KTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS10ZXh0LWxpbmUtaGVpZ2h0KTsKfQoKLmVsZW1lbnRvci1raXQtMyBoMSB7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtZm9udC1zaXplKTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1lNjE4OWFlLWxpbmUtaGVpZ2h0KTsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1lNjE4OWFlLWxldHRlci1zcGFjaW5nKTsKICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS13b3JkLXNwYWNpbmcpOwp9CgouZWxlbWVudG9yLWtpdC0zIGgyIHsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZDEzY2UxYS1mb250LXNpemUpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtbGluZS1oZWlnaHQpOwogICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtbGV0dGVyLXNwYWNpbmcpOwogICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLXdvcmQtc3BhY2luZyk7Cn0KCi5lbGVtZW50b3Ita2l0LTMgaDMgewogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LWZvbnQtc2l6ZSk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1saW5lLWhlaWdodCk7CiAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1sZXR0ZXItc3BhY2luZyk7CiAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdlZTgzYzktd29yZC1zcGFjaW5nKTsKfQoKLmVsZW1lbnRvci1raXQtMyBoNCB7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtZm9udC1zaXplKTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS0zN2I3MTUzLWxpbmUtaGVpZ2h0KTsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS0zN2I3MTUzLWxldHRlci1zcGFjaW5nKTsKICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My13b3JkLXNwYWNpbmcpOwp9CgouZWxlbWVudG9yLWtpdC0zIGg1IHsKICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2FlMDJjNi1mb250LXNpemUpOwogICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtbGluZS1oZWlnaHQpOwogICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtbGV0dGVyLXNwYWNpbmcpOwogICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LXdvcmQtc3BhY2luZyk7Cn0KCi5lbGVtZW50b3Ita2l0LTMgaDYgewogICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LWZvbnQtc2l6ZSk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1saW5lLWhlaWdodCk7CiAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1sZXR0ZXItc3BhY2luZyk7CiAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTY0NjU5YzUtd29yZC1zcGFjaW5nKTsKfQoKLmVsZW1lbnRvci1raXQtMyBidXR0b24sCi5lbGVtZW50b3Ita2l0LTMgaW5wdXRbdHlwZT0iYnV0dG9uIl0sCi5lbGVtZW50b3Ita2l0LTMgaW5wdXRbdHlwZT0ic3VibWl0Il0sCi5lbGVtZW50b3Ita2l0LTMgLmVsZW1lbnRvci1idXR0b24gewogICAgZm9udC1mYW1pbHk6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LWZhbWlseSksIFNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXdlaWdodCk7CiAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEyMGRlZywgIzgyRThGRiAtNC4zOCUsICMxMjYyRkYgNjUuNzklKTsKICAgIGJveC1zaGFkb3c6IDBweCAwcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjI1KTsKICAgIGJvcmRlci1yYWRpdXM6IDZweCA2cHggNnB4IDZweDsKICAgIHBhZGRpbmc6IDhweCAyNHB4IDhweCAyNHB4Owp9CgouZWxlbWVudG9yLXNlY3Rpb24uZWxlbWVudG9yLXNlY3Rpb24tYm94ZWQ+LmVsZW1lbnRvci1jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMTQwcHg7Cn0KCi5lLWNvbiB7CiAgICAtLWNvbnRhaW5lci1tYXgtd2lkdGg6IDExNDBweDsKfQoKLmVsZW1lbnRvci13aWRnZXQ6bm90KDpsYXN0LWNoaWxkKSB7CiAgICBtYXJnaW4tYmxvY2stZW5kOiAyMHB4Owp9CgouZWxlbWVudG9yLWVsZW1lbnQgewogICAgLS13aWRnZXRzLXNwYWNpbmc6IDIwcHggMjBweDsKfQoKe30KCmgxLmVudHJ5LXRpdGxlIHsKICAgIGRpc3BsYXk6IHZhcigtLXBhZ2UtdGl0bGUtZGlzcGxheSk7Cn0KCi5zaXRlLWhlYWRlciB7CiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IDBweDsKICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAwcHg7Cn0KCkBtZWRpYShtYXgtd2lkdGg6MTAyNHB4KSB7CiAgICAuZWxlbWVudG9yLWtpdC0zIHsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1mb250LXNpemU6IDE2cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtbGluZS1oZWlnaHQ6IDI2cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1mb250LXNpemU6IDE2cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWFjY2VudC1saW5lLWhlaWdodDogMjZweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1mb250LXNpemU6IDUwcHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtbGluZS1oZWlnaHQ6IDYwcHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtZm9udC1zaXplOiA0MnB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWxpbmUtaGVpZ2h0OiA1MnB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LWZvbnQtc2l6ZTogMzRweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1saW5lLWhlaWdodDogNDRweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1mb250LXNpemU6IDI4cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtbGluZS1oZWlnaHQ6IDM4cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtZm9udC1zaXplOiAyNHB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWxpbmUtaGVpZ2h0OiAzNHB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LWZvbnQtc2l6ZTogMjBweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1saW5lLWhlaWdodDogMzBweDsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGgxIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1saW5lLWhlaWdodCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtbGV0dGVyLXNwYWNpbmcpOwogICAgICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS13b3JkLXNwYWNpbmcpOwogICAgfQogICAgLmVsZW1lbnRvci1raXQtMyBoMiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtbGluZS1oZWlnaHQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWxldHRlci1zcGFjaW5nKTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtd29yZC1zcGFjaW5nKTsKICAgIH0KICAgIC5lbGVtZW50b3Ita2l0LTMgaDMgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LWxpbmUtaGVpZ2h0KTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1sZXR0ZXItc3BhY2luZyk7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LXdvcmQtc3BhY2luZyk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGg0IHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1saW5lLWhlaWdodCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtbGV0dGVyLXNwYWNpbmcpOwogICAgICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My13b3JkLXNwYWNpbmcpOwogICAgfQogICAgLmVsZW1lbnRvci1raXQtMyBoNSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtbGluZS1oZWlnaHQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWxldHRlci1zcGFjaW5nKTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtd29yZC1zcGFjaW5nKTsKICAgIH0KICAgIC5lbGVtZW50b3Ita2l0LTMgaDYgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LWxpbmUtaGVpZ2h0KTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1sZXR0ZXItc3BhY2luZyk7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LXdvcmQtc3BhY2luZyk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGJ1dHRvbiwKICAgIC5lbGVtZW50b3Ita2l0LTMgaW5wdXRbdHlwZT0iYnV0dG9uIl0sCiAgICAuZWxlbWVudG9yLWtpdC0zIGlucHV0W3R5cGU9InN1Ym1pdCJdLAogICAgLmVsZW1lbnRvci1raXQtMyAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itc2VjdGlvbi5lbGVtZW50b3Itc2VjdGlvbi1ib3hlZD4uZWxlbWVudG9yLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDI0cHg7CiAgICB9CiAgICAuZS1jb24gewogICAgICAgIC0tY29udGFpbmVyLW1heC13aWR0aDogMTAyNHB4OwogICAgfQp9CgpAbWVkaWEobWF4LXdpZHRoOjc2N3B4KSB7CiAgICAuZWxlbWVudG9yLWtpdC0zIHsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1mb250LXNpemU6IDQwcHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtbGluZS1oZWlnaHQ6IDUwcHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtZm9udC1zaXplOiAzNHB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWxpbmUtaGVpZ2h0OiA0NHB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LWZvbnQtc2l6ZTogMzBweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1saW5lLWhlaWdodDogNDBweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1mb250LXNpemU6IDI2cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtbGluZS1oZWlnaHQ6IDM2cHg7CiAgICAgICAgLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtZm9udC1zaXplOiAyMnB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LWZvbnQtc2l6ZTogMThweDsKICAgICAgICAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1saW5lLWhlaWdodDogMjhweDsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LXRleHQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktdGV4dC1saW5lLWhlaWdodCk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGgxIHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS1saW5lLWhlaWdodCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWU2MTg5YWUtbGV0dGVyLXNwYWNpbmcpOwogICAgICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktZTYxODlhZS13b3JkLXNwYWNpbmcpOwogICAgfQogICAgLmVsZW1lbnRvci1raXQtMyBoMiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtbGluZS1oZWlnaHQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1kMTNjZTFhLWxldHRlci1zcGFjaW5nKTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LWQxM2NlMWEtd29yZC1zcGFjaW5nKTsKICAgIH0KICAgIC5lbGVtZW50b3Ita2l0LTMgaDMgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LWxpbmUtaGVpZ2h0KTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktN2VlODNjOS1sZXR0ZXItc3BhY2luZyk7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03ZWU4M2M5LXdvcmQtc3BhY2luZyk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGg0IHsKICAgICAgICBmb250LXNpemU6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My1saW5lLWhlaWdodCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTM3YjcxNTMtbGV0dGVyLXNwYWNpbmcpOwogICAgICAgIHdvcmQtc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktMzdiNzE1My13b3JkLXNwYWNpbmcpOwogICAgfQogICAgLmVsZW1lbnRvci1raXQtMyBoNSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWZvbnQtc2l6ZSk7CiAgICAgICAgbGluZS1oZWlnaHQ6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtbGluZS1oZWlnaHQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS03YWUwMmM2LWxldHRlci1zcGFjaW5nKTsKICAgICAgICB3b3JkLXNwYWNpbmc6IHZhciggLS1lLWdsb2JhbC10eXBvZ3JhcGh5LTdhZTAyYzYtd29yZC1zcGFjaW5nKTsKICAgIH0KICAgIC5lbGVtZW50b3Ita2l0LTMgaDYgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1mb250LXNpemUpOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LWxpbmUtaGVpZ2h0KTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktNjQ2NTljNS1sZXR0ZXItc3BhY2luZyk7CiAgICAgICAgd29yZC1zcGFjaW5nOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS02NDY1OWM1LXdvcmQtc3BhY2luZyk7CiAgICB9CiAgICAuZWxlbWVudG9yLWtpdC0zIGJ1dHRvbiwKICAgIC5lbGVtZW50b3Ita2l0LTMgaW5wdXRbdHlwZT0iYnV0dG9uIl0sCiAgICAuZWxlbWVudG9yLWtpdC0zIGlucHV0W3R5cGU9InN1Ym1pdCJdLAogICAgLmVsZW1lbnRvci1raXQtMyAuZWxlbWVudG9yLWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoIC0tZS1nbG9iYWwtdHlwb2dyYXBoeS1hY2NlbnQtZm9udC1zaXplKTsKICAgICAgICBsaW5lLWhlaWdodDogdmFyKCAtLWUtZ2xvYmFsLXR5cG9ncmFwaHktYWNjZW50LWxpbmUtaGVpZ2h0KTsKICAgIH0KICAgIC5lbGVtZW50b3Itc2VjdGlvbi5lbGVtZW50b3Itc2VjdGlvbi1ib3hlZD4uZWxlbWVudG9yLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LXdpZHRoOiA3NjdweDsKICAgIH0KICAgIC5lLWNvbiB7CiAgICAgICAgLS1jb250YWluZXItbWF4LXdpZHRoOiA3NjdweDsKICAgIH0KfQ=="}},"time_used":76,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":76,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/k99/assets/wp-content/themes/hello-elementor/style.min5b0a.css?ver=2.9.0","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:58.781Z","timestamp":1785128398781,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET /k99/assets/wp-content/themes/hello-elementor/style.min5b0a.css?ver=2.9.0 HTTP/1.1\r\nHost: circuittradetech.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-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://circuittradetech.com/\r\nCookie: PHPSESSID=333bffa2317a181055191132755d6066\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/3 200 \r\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/css\r\ncontent-length: 1843\r\ncache-control: public, max-age=604800\r\nexpires: Wed, 29 Jul 2026 21:52:18 GMT\r\nlast-modified: Sat, 01 Mar 2025 19:37:50 GMT\r\netag: \"1cf4-67c3620e-6890ac9dd32c6c24;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 371260\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 140f04dd24baeeb33873d868d6b5bdb6-srv-edge3\r\nx-hcdn-cache-status: MISS\r\nx-hcdn-upstream-rt: 0.017\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":7412,"size_decoded":2415,"mime_type":"text/css","magic":"ASCII text","md5":"f527a2446b61eaa14abc67f7ed7a82d8","sha1":"da2583f2947fe4df4dacf1b88916629d2adeeb5f","sha256":"9559c0a0771f90a6b12f797dc342dd29533024c7feeb0159dc5c90a4dccd262c","sha512":"f93acf8dc1081b84fa0e95a0993b01bdab430c0086519850f9460ee3ed35b3fcb491b0e372b30f60c5d377622ddba53309c6930095dd4561d43cfce2f23ea802","ssdeep":"192:hT1/CkXuCJfU1h+DhGfwcCmktAScExgUPWS/5aH6zCUm3x2O:j/CkXWn+DCeu","tlshash":"bde14255c6723ac1651389283b9b7f50772001034c1efdb4bf8ee3a88f8e53195a57ae","first_seen":"2025-07-04T20:26:13.204442Z","last_seen":"2026-07-27T05:30:59.818076Z","times_seen":12,"resource_available":false,"data":"aHRtbCB7CiAgICBsaW5lLWhlaWdodDogMS4xNTsKICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJQp9CgoqLAo6YWZ0ZXIsCjpiZWZvcmUgewogICAgYm94LXNpemluZzogYm9yZGVyLWJveAp9Cgpib2R5IHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFNlZ29lIFVJLCBSb2JvdG8sIEhlbHZldGljYSBOZXVlLCBBcmlhbCwgTm90byBTYW5zLCBzYW5zLXNlcmlmLCBBcHBsZSBDb2xvciBFbW9qaSwgU2Vnb2UgVUkgRW1vamksIFNlZ29lIFVJIFN5bWJvbCwgTm90byBDb2xvciBFbW9qaTsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgY29sb3I6ICMzMzM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlCn0KCmgxLApoMiwKaDMsCmg0LApoNSwKaDYgewogICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAuNXJlbTsKICAgIG1hcmdpbi1ibG9jay1lbmQ6IDFyZW07CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBsaW5lLWhlaWdodDogMS4yOwogICAgY29sb3I6IGluaGVyaXQKfQoKaDEgewogICAgZm9udC1zaXplOiAyLjVyZW0KfQoKaDIgewogICAgZm9udC1zaXplOiAycmVtCn0KCmgzIHsKICAgIGZvbnQtc2l6ZTogMS43NXJlbQp9CgpoNCB7CiAgICBmb250LXNpemU6IDEuNXJlbQp9CgpoNSB7CiAgICBmb250LXNpemU6IDEuMjVyZW0KfQoKaDYgewogICAgZm9udC1zaXplOiAxcmVtCn0KCnAgewogICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAwOwogICAgbWFyZ2luLWJsb2NrLWVuZDogLjlyZW0KfQoKaHIgewogICAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBoZWlnaHQ6IDA7CiAgICBvdmVyZmxvdzogdmlzaWJsZQp9CgpwcmUgewogICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOwogICAgZm9udC1zaXplOiAxZW07CiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXAKfQoKYSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGNvbG9yOiAjYzM2Cn0KCmE6YWN0aXZlLAphOmhvdmVyIHsKICAgIGNvbG9yOiAjMzM2Cn0KCmE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pLAphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cywKYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6aG92ZXIgewogICAgY29sb3I6IGluaGVyaXQ7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUKfQoKYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6Zm9jdXMgewogICAgb3V0bGluZTogMAp9CgphYmJyW3RpdGxlXSB7CiAgICBib3JkZXItYmxvY2stZW5kOiBub25lOwogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQKfQoKYiwKc3Ryb25nIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkZXIKfQoKY29kZSwKa2JkLApzYW1wIHsKICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTogMWVtCn0KCnNtYWxsIHsKICAgIGZvbnQtc2l6ZTogODAlCn0KCnN1YiwKc3VwIHsKICAgIGZvbnQtc2l6ZTogNzUlOwogICAgbGluZS1oZWlnaHQ6IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUKfQoKc3ViIHsKICAgIGJvdHRvbTogLS4yNWVtCn0KCnN1cCB7CiAgICB0b3A6IC0uNWVtCn0KCmltZyB7CiAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXgtd2lkdGg6IDEwMCUKfQoKZGV0YWlscyB7CiAgICBkaXNwbGF5OiBibG9jawp9CgpzdW1tYXJ5IHsKICAgIGRpc3BsYXk6IGxpc3QtaXRlbQp9CgpmaWdjYXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGNvbG9yOiAjMzMzOwogICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGZvbnQtd2VpZ2h0OiA0MDAKfQoKW2hpZGRlbl0sCnRlbXBsYXRlIHsKICAgIGRpc3BsYXk6IG5vbmUKfQoKQG1lZGlhIHByaW50IHsKICAgICosCiAgICA6YWZ0ZXIsCiAgICA6YmVmb3JlIHsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgICAgIGNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQKICAgIH0KICAgIGEsCiAgICBhOnZpc2l0ZWQgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lCiAgICB9CiAgICBhW2hyZWZdOmFmdGVyIHsKICAgICAgICBjb250ZW50OiAiICgiIGF0dHIoaHJlZikgIikiCiAgICB9CiAgICBhYmJyW3RpdGxlXTphZnRlciB7CiAgICAgICAgY29udGVudDogIiAoIiBhdHRyKHRpdGxlKSAiKSIKICAgIH0KICAgIGFbaHJlZl49IiMiXTphZnRlciwKICAgIGFbaHJlZl49ImphdmFzY3JpcHQ6Il06YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICIiCiAgICB9CiAgICBwcmUgewogICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcCAhaW1wb3J0YW50CiAgICB9CiAgICBibG9ja3F1b3RlLAogICAgcHJlIHsKICAgICAgICAtbW96LWNvbHVtbi1icmVhay1pbnNpZGU6IGF2b2lkOwogICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2NjYwogICAgfQogICAgdGhlYWQgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cAogICAgfQogICAgaW1nLAogICAgdHIgewogICAgICAgIC1tb3otY29sdW1uLWJyZWFrLWluc2lkZTogYXZvaWQ7CiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZAogICAgfQogICAgaDIsCiAgICBoMywKICAgIHAgewogICAgICAgIG9ycGhhbnM6IDM7CiAgICAgICAgd2lkb3dzOiAzCiAgICB9CiAgICBoMiwKICAgIGgzIHsKICAgICAgICAtbW96LWNvbHVtbi1icmVhay1hZnRlcjogYXZvaWQ7CiAgICAgICAgYnJlYWstYWZ0ZXI6IGF2b2lkCiAgICB9Cn0KCmxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgpidXR0b24sCmlucHV0LApvcHRncm91cCwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBtYXJnaW46IDAKfQoKaW5wdXRbdHlwZT1kYXRlXSwKaW5wdXRbdHlwZT1lbWFpbF0sCmlucHV0W3R5cGU9bnVtYmVyXSwKaW5wdXRbdHlwZT1wYXNzd29yZF0sCmlucHV0W3R5cGU9c2VhcmNoXSwKaW5wdXRbdHlwZT10ZWxdLAppbnB1dFt0eXBlPXRleHRdLAppbnB1dFt0eXBlPXVybF0sCnNlbGVjdCwKdGV4dGFyZWEgewogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjNjY2OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgcGFkZGluZzogLjVyZW0gMXJlbTsKICAgIHRyYW5zaXRpb246IGFsbCAuM3MKfQoKaW5wdXRbdHlwZT1kYXRlXTpmb2N1cywKaW5wdXRbdHlwZT1lbWFpbF06Zm9jdXMsCmlucHV0W3R5cGU9bnVtYmVyXTpmb2N1cywKaW5wdXRbdHlwZT1wYXNzd29yZF06Zm9jdXMsCmlucHV0W3R5cGU9c2VhcmNoXTpmb2N1cywKaW5wdXRbdHlwZT10ZWxdOmZvY3VzLAppbnB1dFt0eXBlPXRleHRdOmZvY3VzLAppbnB1dFt0eXBlPXVybF06Zm9jdXMsCnNlbGVjdDpmb2N1cywKdGV4dGFyZWE6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjMzMzCn0KCmJ1dHRvbiwKaW5wdXQgewogICAgb3ZlcmZsb3c6IHZpc2libGUKfQoKYnV0dG9uLApzZWxlY3QgewogICAgdGV4dC10cmFuc2Zvcm06IG5vbmUKfQoKW3R5cGU9YnV0dG9uXSwKW3R5cGU9cmVzZXRdLApbdHlwZT1zdWJtaXRdLApidXR0b24gewogICAgd2lkdGg6IGF1dG87CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbgp9CgpbdHlwZT1idXR0b25dOjotbW96LWZvY3VzLWlubmVyLApbdHlwZT1yZXNldF06Oi1tb3otZm9jdXMtaW5uZXIsClt0eXBlPXN1Ym1pdF06Oi1tb3otZm9jdXMtaW5uZXIsCmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7CiAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwCn0KClt0eXBlPWJ1dHRvbl06LW1vei1mb2N1c3JpbmcsClt0eXBlPXJlc2V0XTotbW96LWZvY3VzcmluZywKW3R5cGU9c3VibWl0XTotbW96LWZvY3VzcmluZywKYnV0dG9uOi1tb3otZm9jdXNyaW5nIHsKICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dAp9CgpbdHlwZT1idXR0b25dLApbdHlwZT1zdWJtaXRdLApidXR0b24gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGNvbG9yOiAjYzM2OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMzY7CiAgICBwYWRkaW5nOiAuNXJlbSAxcmVtOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgdHJhbnNpdGlvbjogYWxsIC4zcwp9CgpbdHlwZT1idXR0b25dOmZvY3VzLApbdHlwZT1zdWJtaXRdOmZvY3VzLApidXR0b246Zm9jdXMgewogICAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yCn0KClt0eXBlPWJ1dHRvbl06Zm9jdXMsClt0eXBlPWJ1dHRvbl06aG92ZXIsClt0eXBlPXN1Ym1pdF06Zm9jdXMsClt0eXBlPXN1Ym1pdF06aG92ZXIsCmJ1dHRvbjpmb2N1cywKYnV0dG9uOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2MzNjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZQp9CgpbdHlwZT1idXR0b25dOm5vdCg6ZGlzYWJsZWQpLApbdHlwZT1zdWJtaXRdOm5vdCg6ZGlzYWJsZWQpLApidXR0b246bm90KDpkaXNhYmxlZCkgewogICAgY3Vyc29yOiBwb2ludGVyCn0KCmZpZWxkc2V0IHsKICAgIHBhZGRpbmc6IC4zNWVtIC43NWVtIC42MjVlbQp9CgpsZWdlbmQgewogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgZGlzcGxheTogdGFibGU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAwOwogICAgd2hpdGUtc3BhY2U6IG5vcm1hbAp9Cgpwcm9ncmVzcyB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUKfQoKdGV4dGFyZWEgewogICAgb3ZlcmZsb3c6IGF1dG87CiAgICByZXNpemU6IHZlcnRpY2FsCn0KClt0eXBlPWNoZWNrYm94XSwKW3R5cGU9cmFkaW9dIHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBwYWRkaW5nOiAwCn0KClt0eXBlPW51bWJlcl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sClt0eXBlPW51bWJlcl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24gewogICAgaGVpZ2h0OiBhdXRvCn0KClt0eXBlPXNlYXJjaF0gewogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7CiAgICBvdXRsaW5lLW9mZnNldDogLTJweAp9CgpbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZQp9Cgo6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwogICAgZm9udDogaW5oZXJpdAp9CgpzZWxlY3QgewogICAgZGlzcGxheTogYmxvY2sKfQoKdGFibGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbi1ibG9jay1lbmQ6IDE1cHg7CiAgICBmb250LXNpemU6IC45ZW07CiAgICBib3JkZXItc3BhY2luZzogMDsKICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UKfQoKdGFibGUgdGQsCnRhYmxlIHRoIHsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIGhzbGEoMCwgMCUsIDUwLjIlLCAuNTAxOTYwNzg0MykKfQoKdGFibGUgdGggewogICAgZm9udC13ZWlnaHQ6IDcwMAp9Cgp0YWJsZSB0Zm9vdCB0aCwKdGFibGUgdGhlYWQgdGggewogICAgZm9udC1zaXplOiAxZW0KfQoKdGFibGUgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0ZCwKdGFibGUgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aCwKdGFibGUgY29sZ3JvdXArdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGQsCnRhYmxlIGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoLAp0YWJsZSB0aGVhZDpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0ZCwKdGFibGUgdGhlYWQ6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGggewogICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiAxcHggc29saWQgaHNsYSgwLCAwJSwgNTAuMiUsIC41MDE5NjA3ODQzKQp9Cgp0YWJsZSB0Ym9keT50cjpudGgtY2hpbGQob2RkKT50ZCwKdGFibGUgdGJvZHk+dHI6bnRoLWNoaWxkKG9kZCk+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgwLCAwJSwgNTAuMiUsIC4wNzA1ODgyMzUzKQp9Cgp0YWJsZSB0Ym9keSB0cjpob3Zlcj50ZCwKdGFibGUgdGJvZHkgdHI6aG92ZXI+dGggewogICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgwLCAwJSwgNTAuMiUsIC4xMDE5NjA3ODQzKQp9Cgp0YWJsZSB0Ym9keSt0Ym9keSB7CiAgICBib3JkZXItYmxvY2stc3RhcnQ6IDJweCBzb2xpZCBoc2xhKDAsIDAlLCA1MC4yJSwgLjUwMTk2MDc4NDMpCn0KCkBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KSB7CiAgICB0YWJsZSB0YWJsZSB7CiAgICAgICAgZm9udC1zaXplOiAuOGVtCiAgICB9CiAgICB0YWJsZSB0YWJsZSB0ZCwKICAgIHRhYmxlIHRhYmxlIHRoIHsKICAgICAgICBwYWRkaW5nOiA3cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMwogICAgfQogICAgdGFibGUgdGFibGUgdGggewogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDAKICAgIH0KfQoKZGQsCmRsLApkdCwKbGksCm9sLAp1bCB7CiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IDA7CiAgICBtYXJnaW4tYmxvY2stZW5kOiAwOwogICAgYm9yZGVyOiAwOwogICAgb3V0bGluZTogMDsKICAgIGZvbnQtc2l6ZTogMTAwJTsKICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Cn0="}},"time_used":95,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":95,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/_/translate_http/_/ss/k=translate_http.tr.B7Dih9Jyjnw.L.F4.O/am=BIAABw/d=0/rs=AN8SPfpC04vrrzQXgs_TCM5EtruwfPzNtQ/m=el_main_css","fqdn":"www.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":"stylesheet","requested_by":"https://circuittradetech.com/","date":"2026-07-27T04:59:59.103Z","timestamp":1785128399103,"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":"*.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 /_/translate_http/_/ss/k=translate_http.tr.B7Dih9Jyjnw.L.F4.O/am=BIAABw/d=0/rs=AN8SPfpC04vrrzQXgs_TCM5EtruwfPzNtQ/m=el_main_css HTTP/1.1\r\nHost: www.gstatic.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://circuittradetech.com/\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\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/rosetta\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"rosetta\"\r\nreport-to: {\"group\":\"rosetta\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/rosetta\"}]}\r\ncontent-length: 3967\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:44 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:44 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 09 Apr 2026 01:12:55 GMT\r\ncontent-type: text/css; charset=UTF-8\r\nvary: Accept-Encoding\r\nage: 402555\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":null,"data":{"size":20284,"size_decoded":4819,"mime_type":"text/css; charset=UTF-8","magic":"ASCII text, with very long lines (20284), with no line terminators","md5":"fde4f72b90fe807270db3c332dd058df","sha1":"7ef4d70af01c38a7f80a7650be25f63aff4ba751","sha256":"ab31c9be358d2107fc1158434c7aeaaf15f82e3e405ed67ab236b5ac232ed159","sha512":"9bef39350af557afeb10cb71068426ab28befaf5295359954787be06a5ce0993d69e8f5018a5a17c44311d294dd1a87a6f82edd0f5743df0149b8e4e53061695","ssdeep":"192:nvqx/EhZINcrXsfg0SgG8CqA3uku9SJFzvQVMbnUIfIxIVVpTrecfzPtcmt4v78l:gMF8Sb3i0JFzourUqWMVpTrdfzPtcBG","tlshash":"c492872057aed01967efa82364d36dff71d444db90123eeaaf5a7352cd821f231ea214","first_seen":"2026-04-13T20:43:22.641436Z","last_seen":"2026-07-27T17:47:56.554236Z","times_seen":17896,"resource_available":false,"data":"LlZJcGdKZC1aVmk5b2QtT1JIYi1PRVZtY2R7bGVmdDowO3RvcDowO2hlaWdodDozOXB4O3dpZHRoOjEwMCU7ei1pbmRleDoxMDAwMDAwMTtwb3NpdGlvbjpmaXhlZDtib3JkZXI6bm9uZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNkI5MERBO21hcmdpbjowO2JveC1zaGFkb3c6MCAwIDhweCAxcHggIzk5OX0uVklwZ0pkLVpWaTlvZC14bDA3T2ItT0VWbWNke3otaW5kZXg6MTAwMDAwMDI7Ym9yZGVyOm5vbmU7cG9zaXRpb246Zml4ZWQ7Ym94LXNoYWRvdzowIDNweCA4cHggMnB4ICM5OTl9LlZJcGdKZC1aVmk5b2QtU21mWi1PRVZtY2R7ei1pbmRleDoxMDAwMDAwMDtib3JkZXI6bm9uZTttYXJnaW46MH0uZ29vZy10ZS1nYWRnZXR7Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjExcHg7Y29sb3I6IzY2Njt3aGl0ZS1zcGFjZTpub3dyYXB9Lmdvb2ctdGUtZ2FkZ2V0IGltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyOm5vbmV9Lmdvb2ctdGUtZ2FkZ2V0LXNpbXBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNENUQ1RDU7Ym9yZGVyLXRvcDoxcHggc29saWQgIzlCOUI5Qjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRThFOEU4O2JvcmRlci1yaWdodDoxcHggc29saWQgI0Q1RDVENTtmb250LXNpemU6MTBwdDtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MnB4O2N1cnNvcjpwb2ludGVyfS5nb29nLXRlLWdhZGdldC1pY29ue21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4O3dpZHRoOjE5cHg7aGVpZ2h0OjE5cHg7Ym9yZGVyOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5nb29nLXRlLWNvbWJve21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6NHB4O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5nb29nLXRlLWdhZGdldCAuZ29vZy10ZS1jb21ib3ttYXJnaW46NHB4IDB9LlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDphY3RpdmUsLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkOmhvdmVyLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDpsaW5rLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDp2aXNpdGVke2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojNDQ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLU9SSGIgLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkLC5WSXBnSmQtWlZpOW9kLVR2RDlQYy1oU1JHUGR7ZGlzcGxheTpibG9jazttYXJnaW46MCAxMHB4fS5WSXBnSmQtWlZpOW9kLU9SSGIgLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1Bke3BhZGRpbmctdG9wOjJweDtwYWRkaW5nLWxlZnQ6NHB4fS5WSXBnSmQtWlZpOW9kLU9SSGIgKiwuVklwZ0pkLVpWaTlvZC1TbWZaICosLlZJcGdKZC1aVmk5b2QtbDl4a3RmICosLlZJcGdKZC1aVmk5b2QtdkgxR21mICosLlZJcGdKZC1aVmk5b2QteGwwN09iICosLmdvb2ctdGUtY29tYm97Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjEwcHR9LlZJcGdKZC1aVmk5b2QtT1JIYnttYXJnaW46MDtiYWNrZ3JvdW5kLWNvbG9yOiNFNEVGRkI7b3ZlcmZsb3c6aGlkZGVufS5WSXBnSmQtWlZpOW9kLU9SSGIgaW1ne2JvcmRlcjpub25lfS5WSXBnSmQtWlZpOW9kLU9SSGItYk45N1Bje2NvbG9yOiMwMDB9LlZJcGdKZC1aVmk5b2QtT1JIYi1iTjk3UGMgaW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uVklwZ0pkLVpWaTlvZC1PUkhiLVRzd3YxYntjb2xvcjojNjY2O3ZlcnRpY2FsLWFsaWduOnRvcDttYXJnaW4tdG9wOjA7Zm9udC1zaXplOjdwdH0uVklwZ0pkLVpWaTlvZC1PUkhiLUtFNnZxZXt3aWR0aDo4cHh9LlZJcGdKZC1aVmk5b2QtTGdic1Nle2JvcmRlci1jb2xvcjojRTdFN0U3O2JvcmRlci1zdHlsZTpub25lIHNvbGlkIHNvbGlkIG5vbmU7Ym9yZGVyLXdpZHRoOjAgMXB4IDFweCAwfS5WSXBnSmQtWlZpOW9kLUxnYnNTZSBkaXZ7Ym9yZGVyLWNvbG9yOiNDQ0MgIzk5OSAjOTk5ICNDQ0M7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjOTk5O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O2hlaWdodDoyMHB4fS5WSXBnSmQtWlZpOW9kLUxnYnNTZSBidXR0b257YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MjBweDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luOjA7dmVydGljYWwtYWxpZ246dG9wO3doaXRlLXNwYWNlOm5vd3JhcH0uVklwZ0pkLVpWaTlvZC1MZ2JzU2UgYnV0dG9uOmFjdGl2ZXtiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgI0NDQ30uVklwZ0pkLVpWaTlvZC1TbWZae21hcmdpbjowO2JhY2tncm91bmQtY29sb3I6I0ZGRjt3aGl0ZS1zcGFjZTpub3dyYXB9LlZJcGdKZC1aVmk5b2QtU21mWi1oU1JHUGR7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMHB0O2JvcmRlcjoxcHggb3V0c2V0ICM4ODg7cGFkZGluZzo2cHggMTBweDt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowfS5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1BkIGltZ3ttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweDt3aWR0aDoxOXB4O2hlaWdodDoxOXB4O2JvcmRlcjpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uVklwZ0pkLVpWaTlvZC1TbWZaLWhTUkdQZCBzcGFue3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7bWFyZ2luLWxlZnQ6MnB4O21hcmdpbi1yaWdodDoycHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5nb29nLXRlLWZsb2F0LXRvcCAuVklwZ0pkLVpWaTlvZC1TbWZaLWhTUkdQZHtwYWRkaW5nOjJweDtib3JkZXItdG9wLXdpZHRoOjB9Lmdvb2ctdGUtZmxvYXQtYm90dG9tIC5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1Bke3BhZGRpbmc6MnB4O2JvcmRlci1ib3R0b20td2lkdGg6MH0uVklwZ0pkLVpWaTlvZC14bDA3T2ItbFRCeGVke3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMwMEM7d2hpdGUtc3BhY2U6bm93cmFwO21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6NHB4fS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1sVEJ4ZWQgc3Bhbnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1sVEJ4ZWQgaW1ne21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4fS5nb29nLXRlLWdhZGdldC1zaW1wbGUgLlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZHtjb2xvcjojMDAwfS5nb29nLXRlLWdhZGdldC1zaW1wbGUgLlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZCBzcGFue3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYntiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjJweCBzb2xpZCAjQzNEOUZGO292ZXJmbG93LXk6c2Nyb2xsO292ZXJmbG93LXg6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MH0uVklwZ0pkLVpWaTlvZC14bDA3T2ItaWJuQzZie3BhZGRpbmc6M3B4O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmIsLlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2YjpsaW5re2NvbG9yOiMwMEM7YmFja2dyb3VuZDojRkZGfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6dmlzaXRlZHtjb2xvcjojNTUxQThCfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6aG92ZXJ7YmFja2dyb3VuZDojQzNEOUZGfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmI6YWN0aXZle2NvbG9yOiMwMEN9LlZJcGdKZC1aVmk5b2QtdkgxR21me2JhY2tncm91bmQtY29sb3I6I0ZGRjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4IHNvbGlkICM2QjkwREE7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6NHB4fS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1LcmhQTmJ7d2lkdGg6MTZweH0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaGdEVXdle21hcmdpbjo2cHggMDtoZWlnaHQ6MXB4O2JhY2tncm91bmQtY29sb3I6I2FhYTtvdmVyZmxvdzpoaWRkZW59LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YiBkaXYsLlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQgZGl2e3BhZGRpbmc6NHB4fS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmIgLnVERUZnZXtkaXNwbGF5Om5vbmV9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQgLmZtY21Te3BhZGRpbmctbGVmdDo0cHg7cGFkZGluZy1yaWdodDo0cHh9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZHt0ZXh0LWRlY29yYXRpb246bm9uZX0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiOmFjdGl2ZSBkaXYsLlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YjpsaW5rIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiOnZpc2l0ZWQgZGl2e2NvbG9yOiMwMEM7YmFja2dyb3VuZDojRkZGfS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmI6aG92ZXIgZGl2e2NvbG9yOiNGRkY7YmFja2dyb3VuZDojMzZDfS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDphY3RpdmUgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kOmhvdmVyIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDpsaW5rIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDp2aXNpdGVkIGRpdntjb2xvcjojMDAwO2ZvbnQtd2VpZ2h0OjcwMH0uVklwZ0pkLVpWaTlvZC1sOXhrdGZ7YmFja2dyb3VuZC1jb2xvcjojRkZGO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjhweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjEwcHh9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLU9FVm1jZHtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjNkI5MERBO2JveC1zaGFkb3c6MCAzcHggOHB4IDJweCAjOTk5O2JvcmRlci1yYWRpdXM6OHB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0ZiBpbWd7Ym9yZGVyOm5vbmV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLWZtY21Te21hcmdpbi10b3A6NnB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGN7bWFyZ2luLXRvcDo2cHg7d2hpdGUtc3BhY2U6bm93cmFwfS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGMgKnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuRFVHSmlle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X21pbnVzX3NtLmdpZil9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuVGR5VERle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X3BsdXNfc20uZ2lmKX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtVmd3SmxjIHNwYW57Y29sb3I6IzAwQzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyO21hcmdpbjowIDRweH0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtSTlHTHB7bWFyZ2luOjZweCAwIDB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm17bWFyZ2luOjB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm0gdGV4dGFyZWF7bWFyZ2luLWJvdHRvbTo0cHg7d2lkdGg6MTAwJX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYteWVQZTVje21hcmdpbjo2cHggMCA0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLXdPSE15Znt6LWluZGV4OjEwMDA7cG9zaXRpb246Zml4ZWQ7dHJhbnNpdGlvbi1kZWxheTouNnM7bGVmdDotMTAwMHB4O3RvcDotMTAwMHB4fS5WSXBnSmQtWlZpOW9kLWFaMndFZS13T0hNeWYtdGk2aEdje3RyYW5zaXRpb24tZGVsYXk6MHM7bGVmdDotMTRweDt0b3A6LTE0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPe2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoxMDRweDtoZWlnaHQ6MTA0cHg7Ym9yZGVyLXJhZGl1czo1MHB4O2JhY2tncm91bmQ6I0ZGRiB1cmwoaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL3Byb2R1Y3QvMngvdHJhbnNsYXRlXzI0ZHAucG5nKSA1MCUgNTAlIG5vLXJlcGVhdDt0cmFuc2l0aW9uOmFsbCAuNnMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKC40KTtvcGFjaXR5OjB9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPLXRpNmhHY3t0cmFuc2Zvcm06c2NhbGUoLjUpO29wYWNpdHk6MX0uVklwZ0pkLVpWaTlvZC1hWjJ3RWV7bWFyZ2luOjJweCAwIDAgMnB4O2FuaW1hdGlvbjpzcGlubmVyLXJvdGF0b3IgMS40cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyBzcGlubmVyLXJvdGF0b3J7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3t0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9fS5WSXBnSmQtWlZpOW9kLWFaMndFZS1KdDVjS3tzdHJva2UtZGFzaGFycmF5OjE4NztzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZTojNDI4NUY0O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO2FuaW1hdGlvbjpzcGlubmVyLWRhc2ggMS40cyBlYXNlLWluLW91dCBpbmZpbml0ZX1Aa2V5ZnJhbWVzIHNwaW5uZXItZGFzaHswJXtzdHJva2UtZGFzaG9mZnNldDoxODd9NTAle3N0cm9rZS1kYXNob2Zmc2V0OjQ2Ljc1O3RyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKX10b3tzdHJva2UtZGFzaG9mZnNldDoxODc7dHJhbnNmb3JtOnJvdGF0ZSg0NTBkZWcpfX0uVklwZ0pkLXlBV05FYi1MN2xia2IgYSwuVklwZ0pkLXlBV05FYi1MN2xia2IgYm9keSwuVklwZ0pkLXlBV05FYi1MN2xia2IgZGl2LC5WSXBnSmQteUFXTkViLUw3bGJrYiBmb3JtLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoMSwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDIsLlZJcGdKZC15QVdORWItTDdsYmtiIGgzLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoNCwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDUsLlZJcGdKZC15QVdORWItTDdsYmtiIGg2LC5WSXBnSmQteUFXTkViLUw3bGJrYiBodG1sLC5WSXBnSmQteUFXTkViLUw3bGJrYiBpZnJhbWUsLlZJcGdKZC15QVdORWItTDdsYmtiIGltZywuVklwZ0pkLXlBV05FYi1MN2xia2IgbGksLlZJcGdKZC15QVdORWItTDdsYmtiIG9sLC5WSXBnSmQteUFXTkViLUw3bGJrYiBwLC5WSXBnSmQteUFXTkViLUw3bGJrYiBzcGFuLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0YWJsZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgdGJvZHksLlZJcGdKZC15QVdORWItTDdsYmtiIHRkLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0ciwuVklwZ0pkLXlBV05FYi1MN2xia2IgdWx7YWxsOnVuc2V0O2ZvbnQtc2l6ZToxMDAlO2xpbmUtaGVpZ2h0Om5vcm1hbH0uVklwZ0pkLXlBV05FYi1MN2xia2Igb2wsLlZJcGdKZC15QVdORWItTDdsYmtiIHVse2xpc3Qtc3R5bGU6bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlci1zcGFjaW5nOjB9LlZJcGdKZC15QVdORWItTDdsYmtiIGNhcHRpb24sLlZJcGdKZC15QVdORWItTDdsYmtiIHRkLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0aHt0ZXh0LWFsaWduOmxlZnQ7Zm9udC13ZWlnaHQ6NDAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiBpbnB1dDo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH1kaXY+LlZJcGdKZC15QVdORWItTDdsYmtie3BhZGRpbmc6MTBweCAxNHB4fS5WSXBnSmQteUFXTkViLUw3bGJrYntjb2xvcjojMjIyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlZWU7Ym94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpOy1tb3otYm94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpOy13ZWJraXQtYm94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpO2Rpc3BsYXk6bm9uZTtmb250LWZhbWlseTphcmlhbDtmb250LXNpemU6MTBwdDt3aWR0aDo0MjBweDtwYWRkaW5nOjEycHg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwMH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItblZNZmNkLWZtY21TLC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtcGJUVFlle2NsZWFyOmJvdGg7Zm9udC1zaXplOjEwcHQ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpqdXN0aWZ5O3dpZHRoOjEwMCV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXI0bmtle2NvbG9yOiM5OTk7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZjttYXJnaW46NHB4IDA7dGV4dC1hbGlnbjpsZWZ0fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UdkQ5UGMtTGdic1Nle2Rpc3BsYXk6bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItbDRlSFh7ZmxvYXQ6bGVmdDttYXJnaW46MH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItWjBBcnFmLVBMRGJiZntkaXNwbGF5OmlubGluZS1ibG9ja30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItZnc0MlplLVowQXJxZi1oYUFjbGZ7ZGlzcGxheTpub25lO3dpZHRoOjEwMCV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1IOXREdHttYXJnaW4tdG9wOjIwcHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUxLNXl1e2Zsb2F0OmxlZnR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXF3VThNZXtmbG9hdDpyaWdodH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItY0dNSTJie21pbi1oZWlnaHQ6MTVweDtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MSV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLWpPZmtNYi1OZTNzRmZ7YmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjMjk5MTBkIDAsIzIwYWYwZSAxMDAlKTtiYWNrZ3JvdW5kOiMyOTkxMGQ7Ym9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6aW5zZXQgMCAycHggMnB4ICMxZTY2MDk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMnB4IDJweCAjMWU2NjA5Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDJweCAycHggIzFlNjYwOTtjb2xvcjp3aGl0ZTtmb250LXNpemU6OXB0O2ZvbnQtd2VpZ2h0OmJvbGRlcjttYXJnaW4tdG9wOjEycHg7cGFkZGluZzo2cHg7dGV4dC1zaGFkb3c6MXB4IDFweCAxcHggIzFlNjYwOX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItWjBBcnFmLWhTUkdQZHtjb2xvcjojMTVjO2N1cnNvcjpwb2ludGVyO2ZvbnQtZmFtaWx5OmFyaWFsO2ZvbnQtc2l6ZToxMXB4O21hcmdpbi1yaWdodDoxNXB4O3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYj50ZXh0YXJlYXtmb250LWZhbWlseTphcmlhbDtyZXNpemU6dmVydGljYWw7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjEwcHg7Ym9yZGVyLXJhZGl1czoxcHg7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O2JvcmRlci10b3A6MXB4IHNvbGlkIHNpbHZlcjtmb250LXNpemU6MTNweDtoZWlnaHQ6YXV0bztvdmVyZmxvdy15OmF1dG87cGFkZGluZzoxcHh9LlZJcGdKZC15QVdORWItTDdsYmtiIHRleHRhcmVhOmZvY3Vze2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjMpO2JvcmRlcjoxcHggc29saWQgIzRkOTBmZTtvdXRsaW5lOm5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1JYkUwU3ttYXJnaW4tcmlnaHQ6MTBweH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwe21pbi1oZWlnaHQ6MjVweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cGFkZGluZy10b3A6OHB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwe21hcmdpbi1ib3R0b206NXB4O21hcmdpbi1ib3R0b206MH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dHtkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6NTRweDsqbWluLXdpZHRoOjcwcHg7Ym9yZGVyOjFweCBzb2xpZCAjZGNkY2RjO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzQ0NDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7aGVpZ2h0OjI3cHg7b3V0bGluZTowO3BhZGRpbmc6MCA4cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjI3cHg7bWFyZ2luOjAgMTZweCAwIDA7Ym94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuMSk7LW1vei1ib3gtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpO2JvcmRlci1yYWRpdXM6MnB4O3RyYW5zaXRpb246YWxsIC4yMThzO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2Y1ZjVmNSwjZjFmMWYxKTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmhvdmVye2JvcmRlcjoxcHggc29saWQgI2M2YzZjNjtjb2xvcjojMjIyO3RyYW5zaXRpb246YWxsIDBzO2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmODtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDphY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjYzZjNmM2O2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZjZmNmY2O2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjZmNmY2LCNmMWYxZjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmZvY3VzIC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LkFIbXV3ZSAuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDphY3RpdmUsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6Zm9jdXM6YWN0aXZle2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC41KX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dC5BSG11d2UsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlcjoxcHggc29saWQgIzRkOTBmZTt6LWluZGV4OjQhaW1wb3J0YW50fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LmdrNlNNZHtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCNlZWUsI2UwZTBlMCk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwuMSk7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2NvbG9yOiMzMzN9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZntjb2xvcjp3aGl0ZTtib3JkZXItY29sb3I6IzMwNzllZDtiYWNrZ3JvdW5kLWNvbG9yOiM0ZDkwZmU7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzQ3ODdlZCl9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZi5BSG11d2UgLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjphY3RpdmUsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjpob3ZlciAuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmZvY3Vze2JvcmRlci1jb2xvcjojMzA3OWVkO2JhY2tncm91bmQtY29sb3I6IzM1N2FlODtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjMzU3YWU4KX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmhvdmVye2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmYsMCAxcHggMXB4IHJnYmEoMCwwLDAsLjEpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZiwwIDFweCAxcHggcmdiYSgwLDAsMCwuMSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmLDAgMXB4IDFweCByZ2JhKDAsMCwwLC4xKX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmLkFIbXV3ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmZvY3VzLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0IC5WSXBnSmQteUFXTkViLVowQXJxZi1zRmVCcWY6aG92ZXIsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQuQUhtdXdlLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDpmb2N1cywuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDpob3Zlcntib3JkZXItY29sb3I6IzMwNzllZH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItbXJ4UGdle2NvbG9yOiM5OTk7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZn0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLVcwdkpvLWZtY21Te2NvbG9yOiM5OTk7Zm9udC1zaXplOjExcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZjttYXJnaW46MTVweCAwIDVweH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXUwcGpvZS1mbWNtU3tjb2xvcjojODAwO2Rpc3BsYXk6bm9uZTtmb250LXNpemU6OXB0fS5WSXBnSmQteUFXTkViLVZJcGdKZC1mbWNtUy1zbjU0UXtiYWNrZ3JvdW5kLWNvbG9yOiNjOWQ3ZjE7Ym94LXNoYWRvdzoycHggMnB4IDRweCAjOTlhO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQteGwwN09ie2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym94LXNoYWRvdzowIDJweCA0cHggIzk5YTttaW4td2lkdGg6MDtvdXRsaW5lOm5vbmU7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MjAwMH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQtajdMRmxie2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MnB4IDVweCA1cHg7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLXN0eWxlOm5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC14bDA3T2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYjpob3ZlcntiYWNrZ3JvdW5kOiNkZGR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC14bDA3T2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYiBoMXtmb250LXNpemU6MTAwJTtmb250LXdlaWdodDo3MDA7bWFyZ2luOjRweCAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQteGwwN09iIC5WSXBnSmQteUFXTkViLVZJcGdKZC1qN0xGbGIgc3Ryb25ne2NvbG9yOiMzNDVhYWR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVZJcGdKZC1lS201RmMtaEZzYm97dGV4dC1hbGlnbjpyaWdodDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6YXV0b30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYi1TSXNyVGQgLlZJcGdKZC15QVdORWItVklwZ0pkLWVLbTVGYy1oRnNib3t0ZXh0LWFsaWduOmxlZnQ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OmF1dG99LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVRWTHc5Yy1wcEhscmYtc241NFEsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtZm1jbVN7YmFja2dyb3VuZC1jb2xvcjojZjFlYTAwO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93OjNweCAzcHggNHB4IHJnYmEoMCwwLDAsLjUpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZjFlYTAwO2N1cnNvcjpwb2ludGVyO21hcmdpbjotMnB4IC0ycHggLTJweCAtM3B4O3BhZGRpbmc6MnB4IDJweCAycHggM3B4O3Bvc2l0aW9uOnJlbGF0aXZlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2NvbG9yOiMyMjJ9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtcGJUVFlle2NvbG9yOndoaXRlO3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2JhY2tncm91bmQtY29sb3I6I2M5ZDdmMTtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDstbW96LWJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7Ym94LXNoYWRvdzozcHggM3B4IDRweCByZ2JhKDAsMCwwLC41KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOi0ycHggLTJweCAtMnB4IC0zcHg7cGFkZGluZzoycHggMnB4IDNweCAzcHg7cG9zaXRpb246cmVsYXRpdmV9LlZJcGdKZC15QVdORWItTDdsYmtiIHNwYW46Zm9jdXN7b3V0bGluZTpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtRHlWREF7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmU7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO21hcmdpbjotMnB4O3BhZGRpbmc6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi15QVdORWItVFZMdzljLXNuNTRRLUx6WDNlZntib3JkZXItbGVmdDoycHggc29saWQgcmVkO21hcmdpbi1sZWZ0Oi0ycHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1UVkx3OWMtc241NFEtWUlBaUlie2JvcmRlci1yaWdodDoycHggc29saWQgcmVkO21hcmdpbi1yaWdodDotMnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJme3BhZGRpbmc6MnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21Te2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDJweCAzcHg7bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMzMzM7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O2JvcmRlci10b3A6MXB4IHNvbGlkICNjMGMwYzA7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246dG9wO2hlaWdodDoyMXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJvcmRlci1yYWRpdXM6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmhvdmVye2JvcmRlcjoxcHggc29saWQgI2I5YjliOTtib3JkZXItdG9wOjFweCBzb2xpZCAjYTBhMGEwO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmZvY3Vze2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjMpO291dGxpbmU6bm9uZTtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC1ZUHFqYmYtc0ZlQnFme2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDZweCAzcHg7bWFyZ2luOjAgMCAwIDJweDtoZWlnaHQ6MjFweH0uVklwZ0pkLXlBV05FYi1MN2xia2I+ZGl2e2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LWZhbWlseTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtVWQ3ZnJ7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtYWxpZ246ZW5kO2FsaWduLWl0ZW1zOmVuZDttYXJnaW46MTRweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLUl1aXpXYy1TSXNyVGR7bWFyZ2luLXJpZ2h0OjE0cHg7Y29sb3I6Izc0Nzc3NTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1JdWl6V2MtaTNqTThje21hcmdpbi1sZWZ0OjE0cHg7Y29sb3I6Izc0Nzc3NTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1rNzdJaWZ7bWFyZ2luOjAgMTZweCAxNnB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYXhBVjF7d2lkdGg6YXV0bztjb2xvcjojMWYxZjFmO2ZvbnQtc2l6ZToxNnB4O3RleHQtYWxpZ246aW5pdGlhbH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWF4QVYxIC5WSXBnSmQteUFXTkViLVNJc3JUZHt0ZXh0LWFsaWduOnJpZ2h0fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlke2JvcmRlci1yYWRpdXM6MCAwIDEycHggMTJweDttYXJnaW46MDtiYWNrZ3JvdW5kOiNmMWY0Zjk7cG9zaXRpb246cmVsYXRpdmU7bWluLWhlaWdodDo1MHB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkIC5WSXBnSmQteUFXTkViLVNJc3JUZHt0ZXh0LWFsaWduOnJpZ2h0fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkLUI3STRPZHtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1vcmllbnQ6dmVydGljYWw7LW1vei1ib3gtZGlyZWN0aW9uOm5vcm1hbDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6NzclO3BhZGRpbmc6MTJweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLU43RXFpZC1CN0k0T2QgLlZJcGdKZC15QVdORWItU0lzclRke3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1VVHVqQ2J7Y29sb3I6IzFmMWYxZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9kIC5WSXBnSmQteUFXTkViLVNJc3JUZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtVVR1akNie3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1lTzltS2V7Y29sb3I6IzQ0NDc0Njtmb250LXNpemU6MTJweDtwYWRkaW5nLXRvcDo0cHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9kIC5WSXBnSmQteUFXTkViLVNJc3JUZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtZU85bUtle3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC14Z292NXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTBweDtyaWdodDo1cHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC14Z292NSAuVklwZ0pkLXlBV05FYi1TSXNyVGR7bGVmdDo1cHg7cmlnaHQ6YXV0b30uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLVRISTZWYntmaWxsOiMwYjU3ZDB9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1iZ202c2Z7bWFyZ2luOi00cHggMnB4IDAgMDtwYWRkaW5nOjJweCAwIDA7d2lkdGg6NDhweDtoZWlnaHQ6NDhweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjI0cHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDpub25lfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYmdtNnNmOmhvdmVye2JhY2tncm91bmQ6I2U4ZWJlY30uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWFYWVRjZXtkaXNwbGF5Om5vbmV9c2VudGluZWx7fQ=="}},"time_used":67,"timings":{"blocked":-1,"dns":2,"connect":16,"send":0,"wait":16,"receive":0,"ssl":33},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"circuittradetech.com/","fqdn":"circuittradetech.com","domain":"circuittradetech.com","tld":"com"},"ip":{"addr":"91.108.98.64","port":443,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T04:59:57.902Z","timestamp":1785128397902,"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":"circuittradetech.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 24 Jun 2026 11:47:14 GMT","end":"Tue, 22 Sep 2026 11:47:13 GMT"},"fingerprint":{"sha1":"85:87:F4:7F:17:BB:6C:41:D5:EE:C9:39:3E:D7:73:E8:8D:EF:91:82","sha256":"91:8B:E9:C7:80:99:27:F0:3D:86:7B:35:F4:00:0B:AB:F2:44:12:FD:17:F0:93:5B:DA:8D:72:9F:F0:C1:F8:76"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: circuittradetech.com\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\ndate: Mon, 27 Jul 2026 04:59:58 GMT\r\ncontent-type: text/html; charset=UTF-8\r\nx-powered-by: PHP/7.4.33\r\nset-cookie: CameFrom=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; secure\nPHPSESSID=333bffa2317a181055191132755d6066; path=/; domain=circuittradetech.com; HttpOnly; secure\r\nexpires: Thu, 19 Nov 1981 08:52:00 GMT\r\ncache-control: no-store, no-cache, must-revalidate\r\npragma: no-cache\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 26ee438929932bdf83053c4096248942-srv-edge5\r\nx-hcdn-cache-status: DYNAMIC\r\nx-hcdn-upstream-rt: 0.271\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"PHP:7.4.33","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Elementor","description":"Elementor is a website builder platform for professionals on WordPress.","website":"https://elementor.com","common_platform_enumeration":"","icon":"Elementor.svg","categories":["Page builders","WordPress plugins"]},{"name":"JivoChat","description":"JivoChat is a live chat solution for websites offering customizable web and mobile chat widgets.","website":"https://www.jivosite.com","common_platform_enumeration":"","icon":"JivoChat.png","categories":["Live chat"]},{"name":"Font Awesome","description":"Font Awesome is a font and icon toolkit based on CSS and Less.","website":"https://fontawesome.com/","common_platform_enumeration":"","icon":"Font Awesome.svg","categories":["Font scripts"]},{"name":"jQuery:3.6.4","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"MySQL","description":"MySQL is an open-source relational database management system.","website":"https://mysql.com","common_platform_enumeration":"cpe:2.3:a:mysql:mysql:*:*:*:*:*:*:*:*","icon":"MySQL.svg","categories":["Databases"]},{"name":"WordPress","description":"WordPress is a free and open-source content management system written in PHP and paired with a MySQL or MariaDB database. Features include a plugin architecture and a template system.","website":"https://wordpress.org","common_platform_enumeration":"cpe:2.3:a:wordpress:wordpress:*:*:*:*:*:*:*:*","icon":"WordPress.svg","categories":["CMS","Blogs"]},{"name":"jQuery CDN","description":"jQuery CDN is a way to include jQuery in your website without actually downloading and keeping it your website's folder.","website":"https://code.jquery.com/","common_platform_enumeration":"","icon":"jQuery.svg","categories":["CDN"]}],"data":{"size":157762,"size_decoded":33635,"mime_type":"text/html; charset=UTF-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (9471)","md5":"510c84d91eefe3bd3ff93ddbaa556abb","sha1":"22e01c4207951e4d77827e52868af0f2c6a2b673","sha256":"8f286205bb69b58e9975d02aaa3fc4c7e00c0df2484eee992b1d835956f0dbf8","sha512":"569350d15af2e2eb7d7c058edddabb226880aa446ed0f7e1b79b90651772750918980a78a5de51b2ea528a751f2cc9e28ced49c34cb18c88de6274e51d5a8e98","ssdeep":"1536:wapeYMbn4FSMFa001x00w9007X00wWCzSckw8DvnR4cIXNBMbifQLubBxdQvrYyf:Ps4FSMFImBOzSckw8DvnRkWf","tlshash":"04f38320b9f35027306f328bd113270d6a82e78bc74597e571fc02a49fb6d95bea3568","first_seen":"2026-07-27T03:56:42.482287Z","last_seen":"2026-07-27T05:01:06.158469Z","times_seen":3,"resource_available":false,"data":"Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CmZ1bmN0aW9uIGdvb2dsZVRyYW5zbGF0ZUVsZW1lbnRJbml0KCkgewogIG5ldyBnb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZUVsZW1lbnQoe3BhZ2VMYW5ndWFnZTogJ2VuJywgbGF5b3V0OiBnb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZUVsZW1lbnQuSW5saW5lTGF5b3V0LkhPUklaT05UQUx9LCAnZ29vZ2xlX3RyYW5zbGF0ZV9lbGVtZW50Jyk7Cn0KPC9zY3JpcHQ+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvL3RyYW5zbGF0ZS5nb29nbGUuY29tL3RyYW5zbGF0ZV9hL2VsZW1lbnQuanM/Y2I9Z29vZ2xlVHJhbnNsYXRlRWxlbWVudEluaXQiPjwvc2NyaXB0PgoKPHN0eWxlPgojZ29vZ2xlX3RyYW5zbGF0ZV9lbGVtZW50IHsKCQoJY29sb3I6IHRyYW5zcGFyZW50Owp9CgojZ29vZ2xlX3RyYW5zbGF0ZV9lbGVtZW50IGEgewoJCiAgZGlzcGxheTogbm9uZTsKfQoKc2VsZWN0Lmdvb2dsZV90cmFuc2xhdGVfZWxlbWVudCB7CgkKICBjb2xvcjogYmxhY2s7Cn0KCmRpdi5nb29nLXRlLWdhZGdldCB7CgkKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCmRpdi5nb29nLXRlLWdhZGdldCB7CglkaXNwbGF5OiB0YWJsZS1jYXB0aW9uOwogIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgouZ29vZy10ZS1nYWRnZXQgLmdvb2ctdGUtY29tYm8geyAKICAgIHdpZHRoOiBhdXRvOwogICAgcGFkZGluZzogOXB4OwogICAgZm9udC1zaXplOiAxNXB4OwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGJhY2tncm91bmQ6ICMxMjYyZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMTI2MmZmOwogICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIG91dGxpbmU6IG5vbmU7CiAgICBmb250LWZhbWlseTogJ1BvcHBpbnMnLCBzYW5zLXNlcmlmOwogICAgYm9yZGVyLXJhZGl1czogNXB4OyAKfQo8L3N0eWxlPgogCgo8IURPQ1RZUEUgaHRtbD4KPGh0bWwgbGFuZz0iZW4tVVMiPgoKPGhlYWQ+CiAgICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIC8+CiAgICAgIDx0aXRsZT5jaXJjdWl0dHJhZGV0ZWNoPC90aXRsZT4KICAgICAgPG1ldGEgbmFtZT0ncm9ib3RzJyBjb250ZW50PSdtYXgtaW1hZ2UtcHJldmlldzpsYXJnZScgLz4KICAgICAgPHN0eWxlIGlkPSd3cC1lbW9qaS1zdHlsZXMtaW5saW5lLWNzcyc+CiAgICAgICAgIGltZy53cC1zbWlsZXksIGltZy5lbW9qaSB7CiAgICAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICBoZWlnaHQ6IDFlbSAhaW1wb3J0YW50OwogICAgICAgICB3aWR0aDogMWVtICFpbXBvcnRhbnQ7CiAgICAgICAgIG1hcmdpbjogMCAwLjA3ZW0gIWltcG9ydGFudDsKICAgICAgICAgdmVydGljYWwtYWxpZ246IC0wLjFlbSAhaW1wb3J0YW50OwogICAgICAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgfQogICAgICA8L3N0eWxlPgoJICA8ZGl2IGlkPSJobWV0cmljc19zaXRlX3ZlcmlmaWNhdGlvbiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij40ODkwNjM8L2Rpdj4KICAgICAgPHN0eWxlIGlkPSdjbGFzc2ljLXRoZW1lLXN0eWxlcy1pbmxpbmUtY3NzJz4KICAgICAgICAgLyohIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCAqLwogICAgICAgICAud3AtYmxvY2stYnV0dG9uX19saW5re2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzIzNzNjO2JvcmRlci1yYWRpdXM6OTk5OXB4O2JveC1zaGFkb3c6bm9uZTt0ZXh0LWRlY29yYXRpb246bm9uZTtwYWRkaW5nOmNhbGMoLjY2N2VtICsgMnB4KSBjYWxjKDEuMzMzZW0gKyAycHgpO2ZvbnQtc2l6ZToxLjEyNWVtfS53cC1ibG9jay1maWxlX19idXR0b257YmFja2dyb3VuZDojMzIzNzNjO2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmV9CiAgICAgIDwvc3R5bGU+CiAgICAgIDxzdHlsZSBpZD0nZ2xvYmFsLXN0eWxlcy1pbmxpbmUtY3NzJz4KICAgICAgICAgYm9keXstLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjazogIzAwMDAwMDstLXdwLS1wcmVzZXQtLWNvbG9yLS1jeWFuLWJsdWlzaC1ncmF5OiAjYWJiOGMzOy0td3AtLXByZXNldC0tY29sb3ItLXdoaXRlOiAjZmZmZmZmOy0td3AtLXByZXNldC0tY29sb3ItLXBhbGUtcGluazogI2Y3OGRhNzstLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1yZWQ6ICNjZjJlMmU7LS13cC0tcHJlc2V0LS1jb2xvci0tbHVtaW5vdXMtdml2aWQtb3JhbmdlOiAjZmY2OTAwOy0td3AtLXByZXNldC0tY29sb3ItLWx1bWlub3VzLXZpdmlkLWFtYmVyOiAjZmNiOTAwOy0td3AtLXByZXNldC0tY29sb3ItLWxpZ2h0LWdyZWVuLWN5YW46ICM3YmRjYjU7LS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtZ3JlZW4tY3lhbjogIzAwZDA4NDstLXdwLS1wcmVzZXQtLWNvbG9yLS1wYWxlLWN5YW4tYmx1ZTogIzhlZDFmYzstLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1jeWFuLWJsdWU6ICMwNjkzZTM7LS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtcHVycGxlOiAjOWI1MWUwOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLXZpdmlkLWN5YW4tYmx1ZS10by12aXZpZC1wdXJwbGU6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcscmdiYSg2LDE0NywyMjcsMSkgMCUscmdiKDE1NSw4MSwyMjQpIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLWxpZ2h0LWdyZWVuLWN5YW4tdG8tdml2aWQtZ3JlZW4tY3lhbjogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2IoMTIyLDIyMCwxODApIDAlLHJnYigwLDIwOCwxMzApIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLWx1bWlub3VzLXZpdmlkLWFtYmVyLXRvLWx1bWlub3VzLXZpdmlkLW9yYW5nZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2JhKDI1MiwxODUsMCwxKSAwJSxyZ2JhKDI1NSwxMDUsMCwxKSAxMDAlKTstLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1sdW1pbm91cy12aXZpZC1vcmFuZ2UtdG8tdml2aWQtcmVkOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYmEoMjU1LDEwNSwwLDEpIDAlLHJnYigyMDcsNDYsNDYpIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLXZlcnktbGlnaHQtZ3JheS10by1jeWFuLWJsdWlzaC1ncmF5OiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYigyMzgsMjM4LDIzOCkgMCUscmdiKDE2OSwxODQsMTk1KSAxMDAlKTstLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1jb29sLXRvLXdhcm0tc3BlY3RydW06IGxpbmVhci1ncmFkaWVudCgxMzVkZWcscmdiKDc0LDIzNCwyMjApIDAlLHJnYigxNTEsMTIwLDIwOSkgMjAlLHJnYigyMDcsNDIsMTg2KSA0MCUscmdiKDIzOCw0NCwxMzApIDYwJSxyZ2IoMjUxLDEwNSw5OCkgODAlLHJnYigyNTQsMjQ4LDc2KSAxMDAlKTstLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1ibHVzaC1saWdodC1wdXJwbGU6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcscmdiKDI1NSwyMDYsMjM2KSAwJSxyZ2IoMTUyLDE1MCwyNDApIDEwMCUpOy0td3AtLXByZXNldC0tZ3JhZGllbnQtLWJsdXNoLWJvcmRlYXV4OiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYigyNTQsMjA1LDE2NSkgMCUscmdiKDI1NCw0NSw0NSkgNTAlLHJnYigxMDcsMCw2MikgMTAwJSk7LS13cC0tcHJlc2V0LS1ncmFkaWVudC0tbHVtaW5vdXMtZHVzazogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2IoMjU1LDIwMywxMTIpIDAlLHJnYigxOTksODEsMTkyKSA1MCUscmdiKDY1LDg4LDIwOCkgMTAwJSk7LS13cC0tcHJlc2V0LS1ncmFkaWVudC0tcGFsZS1vY2VhbjogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2IoMjU1LDI0NSwyMDMpIDAlLHJnYigxODIsMjI3LDIxMikgNTAlLHJnYig1MSwxNjcsMTgxKSAxMDAlKTstLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1lbGVjdHJpYy1ncmFzczogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2IoMjAyLDI0OCwxMjgpIDAlLHJnYigxMTMsMjA2LDEyNikgMTAwJSk7LS13cC0tcHJlc2V0LS1ncmFkaWVudC0tbWlkbmlnaHQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcscmdiKDIsMywxMjkpIDAlLHJnYig0MCwxMTYsMjUyKSAxMDAlKTstLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGw6IDEzcHg7LS13cC0tcHJlc2V0LS1mb250LXNpemUtLW1lZGl1bTogMjBweDstLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbGFyZ2U6IDM2cHg7LS13cC0tcHJlc2V0LS1mb250LXNpemUtLXgtbGFyZ2U6IDQycHg7LS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMDogMC40NHJlbTstLXdwLS1wcmVzZXQtLXNwYWNpbmctLTMwOiAwLjY3cmVtOy0td3AtLXByZXNldC0tc3BhY2luZy0tNDA6IDFyZW07LS13cC0tcHJlc2V0LS1zcGFjaW5nLS01MDogMS41cmVtOy0td3AtLXByZXNldC0tc3BhY2luZy0tNjA6IDIuMjVyZW07LS13cC0tcHJlc2V0LS1zcGFjaW5nLS03MDogMy4zOHJlbTstLXdwLS1wcmVzZXQtLXNwYWNpbmctLTgwOiA1LjA2cmVtOy0td3AtLXByZXNldC0tc2hhZG93LS1uYXR1cmFsOiA2cHggNnB4IDlweCByZ2JhKDAsIDAsIDAsIDAuMik7LS13cC0tcHJlc2V0LS1zaGFkb3ctLWRlZXA6IDEycHggMTJweCA1MHB4IHJnYmEoMCwgMCwgMCwgMC40KTstLXdwLS1wcmVzZXQtLXNoYWRvdy0tc2hhcnA6IDZweCA2cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTstLXdwLS1wcmVzZXQtLXNoYWRvdy0tb3V0bGluZWQ6IDZweCA2cHggMHB4IC0zcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAxKSwgNnB4IDZweCByZ2JhKDAsIDAsIDAsIDEpOy0td3AtLXByZXNldC0tc2hhZG93LS1jcmlzcDogNnB4IDZweCAwcHggcmdiYSgwLCAwLCAwLCAxKTt9OndoZXJlKC5pcy1sYXlvdXQtZmxleCl7Z2FwOiAwLjVlbTt9OndoZXJlKC5pcy1sYXlvdXQtZ3JpZCl7Z2FwOiAwLjVlbTt9Ym9keSAuaXMtbGF5b3V0LWZsb3cgPiAuYWxpZ25sZWZ0e2Zsb2F0OiBsZWZ0O21hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7bWFyZ2luLWlubGluZS1lbmQ6IDJlbTt9Ym9keSAuaXMtbGF5b3V0LWZsb3cgPiAuYWxpZ25yaWdodHtmbG9hdDogcmlnaHQ7bWFyZ2luLWlubGluZS1zdGFydDogMmVtO21hcmdpbi1pbmxpbmUtZW5kOiAwO31ib2R5IC5pcy1sYXlvdXQtZmxvdyA+IC5hbGlnbmNlbnRlcnttYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O21hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O31ib2R5IC5pcy1sYXlvdXQtY29uc3RyYWluZWQgPiAuYWxpZ25sZWZ0e2Zsb2F0OiBsZWZ0O21hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7bWFyZ2luLWlubGluZS1lbmQ6IDJlbTt9Ym9keSAuaXMtbGF5b3V0LWNvbnN0cmFpbmVkID4gLmFsaWducmlnaHR7ZmxvYXQ6IHJpZ2h0O21hcmdpbi1pbmxpbmUtc3RhcnQ6IDJlbTttYXJnaW4taW5saW5lLWVuZDogMDt9Ym9keSAuaXMtbGF5b3V0LWNvbnN0cmFpbmVkID4gLmFsaWduY2VudGVye21hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7fWJvZHkgLmlzLWxheW91dC1jb25zdHJhaW5lZCA+IDp3aGVyZSg6bm90KC5hbGlnbmxlZnQpOm5vdCguYWxpZ25yaWdodCk6bm90KC5hbGlnbmZ1bGwpKXttYXgtd2lkdGg6IHZhcigtLXdwLS1zdHlsZS0tZ2xvYmFsLS1jb250ZW50LXNpemUpO21hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7fWJvZHkgLmlzLWxheW91dC1jb25zdHJhaW5lZCA+IC5hbGlnbndpZGV7bWF4LXdpZHRoOiB2YXIoLS13cC0tc3R5bGUtLWdsb2JhbC0td2lkZS1zaXplKTt9Ym9keSAuaXMtbGF5b3V0LWZsZXh7ZGlzcGxheTogZmxleDt9Ym9keSAuaXMtbGF5b3V0LWZsZXh7ZmxleC13cmFwOiB3cmFwO2FsaWduLWl0ZW1zOiBjZW50ZXI7fWJvZHkgLmlzLWxheW91dC1mbGV4ID4gKnttYXJnaW46IDA7fWJvZHkgLmlzLWxheW91dC1ncmlke2Rpc3BsYXk6IGdyaWQ7fWJvZHkgLmlzLWxheW91dC1ncmlkID4gKnttYXJnaW46IDA7fTp3aGVyZSgud3AtYmxvY2stY29sdW1ucy5pcy1sYXlvdXQtZmxleCl7Z2FwOiAyZW07fTp3aGVyZSgud3AtYmxvY2stY29sdW1ucy5pcy1sYXlvdXQtZ3JpZCl7Z2FwOiAyZW07fTp3aGVyZSgud3AtYmxvY2stcG9zdC10ZW1wbGF0ZS5pcy1sYXlvdXQtZmxleCl7Z2FwOiAxLjI1ZW07fTp3aGVyZSgud3AtYmxvY2stcG9zdC10ZW1wbGF0ZS5pcy1sYXlvdXQtZ3JpZCl7Z2FwOiAxLjI1ZW07fS5oYXMtYmxhY2stY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjaykgIWltcG9ydGFudDt9Lmhhcy1jeWFuLWJsdWlzaC1ncmF5LWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tY3lhbi1ibHVpc2gtZ3JheSkgIWltcG9ydGFudDt9Lmhhcy13aGl0ZS1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXdoaXRlKSAhaW1wb3J0YW50O30uaGFzLXBhbGUtcGluay1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXBhbGUtcGluaykgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1yZWQtY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1yZWQpICFpbXBvcnRhbnQ7fS5oYXMtbHVtaW5vdXMtdml2aWQtb3JhbmdlLWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbHVtaW5vdXMtdml2aWQtb3JhbmdlKSAhaW1wb3J0YW50O30uaGFzLWx1bWlub3VzLXZpdmlkLWFtYmVyLWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbHVtaW5vdXMtdml2aWQtYW1iZXIpICFpbXBvcnRhbnQ7fS5oYXMtbGlnaHQtZ3JlZW4tY3lhbi1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWxpZ2h0LWdyZWVuLWN5YW4pICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtZ3JlZW4tY3lhbi1jb2xvcntjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLWdyZWVuLWN5YW4pICFpbXBvcnRhbnQ7fS5oYXMtcGFsZS1jeWFuLWJsdWUtY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wYWxlLWN5YW4tYmx1ZSkgIWltcG9ydGFudDt9Lmhhcy12aXZpZC1jeWFuLWJsdWUtY29sb3J7Y29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1jeWFuLWJsdWUpICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtcHVycGxlLWNvbG9ye2NvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtcHVycGxlKSAhaW1wb3J0YW50O30uaGFzLWJsYWNrLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJsYWNrKSAhaW1wb3J0YW50O30uaGFzLWN5YW4tYmx1aXNoLWdyYXktYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tY3lhbi1ibHVpc2gtZ3JheSkgIWltcG9ydGFudDt9Lmhhcy13aGl0ZS1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS13aGl0ZSkgIWltcG9ydGFudDt9Lmhhcy1wYWxlLXBpbmstYmFja2dyb3VuZC1jb2xvcntiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcGFsZS1waW5rKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLXJlZC1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1yZWQpICFpbXBvcnRhbnQ7fS5oYXMtbHVtaW5vdXMtdml2aWQtb3JhbmdlLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWx1bWlub3VzLXZpdmlkLW9yYW5nZSkgIWltcG9ydGFudDt9Lmhhcy1sdW1pbm91cy12aXZpZC1hbWJlci1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1sdW1pbm91cy12aXZpZC1hbWJlcikgIWltcG9ydGFudDt9Lmhhcy1saWdodC1ncmVlbi1jeWFuLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWxpZ2h0LWdyZWVuLWN5YW4pICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtZ3JlZW4tY3lhbi1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1ncmVlbi1jeWFuKSAhaW1wb3J0YW50O30uaGFzLXBhbGUtY3lhbi1ibHVlLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXBhbGUtY3lhbi1ibHVlKSAhaW1wb3J0YW50O30uaGFzLXZpdmlkLWN5YW4tYmx1ZS1iYWNrZ3JvdW5kLWNvbG9ye2JhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1jeWFuLWJsdWUpICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtcHVycGxlLWJhY2tncm91bmQtY29sb3J7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXZpdmlkLXB1cnBsZSkgIWltcG9ydGFudDt9Lmhhcy1ibGFjay1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spICFpbXBvcnRhbnQ7fS5oYXMtY3lhbi1ibHVpc2gtZ3JheS1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tY3lhbi1ibHVpc2gtZ3JheSkgIWltcG9ydGFudDt9Lmhhcy13aGl0ZS1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0td2hpdGUpICFpbXBvcnRhbnQ7fS5oYXMtcGFsZS1waW5rLWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wYWxlLXBpbmspICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtcmVkLWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1yZWQpICFpbXBvcnRhbnQ7fS5oYXMtbHVtaW5vdXMtdml2aWQtb3JhbmdlLWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1sdW1pbm91cy12aXZpZC1vcmFuZ2UpICFpbXBvcnRhbnQ7fS5oYXMtbHVtaW5vdXMtdml2aWQtYW1iZXItYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWx1bWlub3VzLXZpdmlkLWFtYmVyKSAhaW1wb3J0YW50O30uaGFzLWxpZ2h0LWdyZWVuLWN5YW4tYm9yZGVyLWNvbG9ye2JvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWxpZ2h0LWdyZWVuLWN5YW4pICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtZ3JlZW4tY3lhbi1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tdml2aWQtZ3JlZW4tY3lhbikgIWltcG9ydGFudDt9Lmhhcy1wYWxlLWN5YW4tYmx1ZS1ib3JkZXItY29sb3J7Ym9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcGFsZS1jeWFuLWJsdWUpICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtY3lhbi1ibHVlLWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1jeWFuLWJsdWUpICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtcHVycGxlLWJvcmRlci1jb2xvcntib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS12aXZpZC1wdXJwbGUpICFpbXBvcnRhbnQ7fS5oYXMtdml2aWQtY3lhbi1ibHVlLXRvLXZpdmlkLXB1cnBsZS1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS12aXZpZC1jeWFuLWJsdWUtdG8tdml2aWQtcHVycGxlKSAhaW1wb3J0YW50O30uaGFzLWxpZ2h0LWdyZWVuLWN5YW4tdG8tdml2aWQtZ3JlZW4tY3lhbi1ncmFkaWVudC1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWdyYWRpZW50LS1saWdodC1ncmVlbi1jeWFuLXRvLXZpdmlkLWdyZWVuLWN5YW4pICFpbXBvcnRhbnQ7fS5oYXMtbHVtaW5vdXMtdml2aWQtYW1iZXItdG8tbHVtaW5vdXMtdml2aWQtb3JhbmdlLWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLWx1bWlub3VzLXZpdmlkLWFtYmVyLXRvLWx1bWlub3VzLXZpdmlkLW9yYW5nZSkgIWltcG9ydGFudDt9Lmhhcy1sdW1pbm91cy12aXZpZC1vcmFuZ2UtdG8tdml2aWQtcmVkLWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLWx1bWlub3VzLXZpdmlkLW9yYW5nZS10by12aXZpZC1yZWQpICFpbXBvcnRhbnQ7fS5oYXMtdmVyeS1saWdodC1ncmF5LXRvLWN5YW4tYmx1aXNoLWdyYXktZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tdmVyeS1saWdodC1ncmF5LXRvLWN5YW4tYmx1aXNoLWdyYXkpICFpbXBvcnRhbnQ7fS5oYXMtY29vbC10by13YXJtLXNwZWN0cnVtLWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLWNvb2wtdG8td2FybS1zcGVjdHJ1bSkgIWltcG9ydGFudDt9Lmhhcy1ibHVzaC1saWdodC1wdXJwbGUtZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tYmx1c2gtbGlnaHQtcHVycGxlKSAhaW1wb3J0YW50O30uaGFzLWJsdXNoLWJvcmRlYXV4LWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLWJsdXNoLWJvcmRlYXV4KSAhaW1wb3J0YW50O30uaGFzLWx1bWlub3VzLWR1c2stZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tbHVtaW5vdXMtZHVzaykgIWltcG9ydGFudDt9Lmhhcy1wYWxlLW9jZWFuLWdyYWRpZW50LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tZ3JhZGllbnQtLXBhbGUtb2NlYW4pICFpbXBvcnRhbnQ7fS5oYXMtZWxlY3RyaWMtZ3Jhc3MtZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tZWxlY3RyaWMtZ3Jhc3MpICFpbXBvcnRhbnQ7fS5oYXMtbWlkbmlnaHQtZ3JhZGllbnQtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1ncmFkaWVudC0tbWlkbmlnaHQpICFpbXBvcnRhbnQ7fS5oYXMtc21hbGwtZm9udC1zaXple2ZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCkgIWltcG9ydGFudDt9Lmhhcy1tZWRpdW0tZm9udC1zaXple2ZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1tZWRpdW0pICFpbXBvcnRhbnQ7fS5oYXMtbGFyZ2UtZm9udC1zaXple2ZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1sYXJnZSkgIWltcG9ydGFudDt9Lmhhcy14LWxhcmdlLWZvbnQtc2l6ZXtmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0teC1sYXJnZSkgIWltcG9ydGFudDt9CiAgICAgICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uIGE6d2hlcmUoOm5vdCgud3AtZWxlbWVudC1idXR0b24pKXtjb2xvcjogaW5oZXJpdDt9CiAgICAgICAgIDp3aGVyZSgud3AtYmxvY2stcG9zdC10ZW1wbGF0ZS5pcy1sYXlvdXQtZmxleCl7Z2FwOiAxLjI1ZW07fTp3aGVyZSgud3AtYmxvY2stcG9zdC10ZW1wbGF0ZS5pcy1sYXlvdXQtZ3JpZCl7Z2FwOiAxLjI1ZW07fQogICAgICAgICA6d2hlcmUoLndwLWJsb2NrLWNvbHVtbnMuaXMtbGF5b3V0LWZsZXgpe2dhcDogMmVtO306d2hlcmUoLndwLWJsb2NrLWNvbHVtbnMuaXMtbGF5b3V0LWdyaWQpe2dhcDogMmVtO30KICAgICAgICAgLndwLWJsb2NrLXB1bGxxdW90ZXtmb250LXNpemU6IDEuNWVtO2xpbmUtaGVpZ2h0OiAxLjY7fQogICAgICA8L3N0eWxlPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdoZmUtc3R5bGUtY3NzJyBocmVmPSdrOTkvYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9oZWFkZXItZm9vdGVyLWVsZW1lbnRvci9hc3NldHMvY3NzL2hlYWRlci1mb290ZXItZWxlbWVudG9yMzc4Zi5jc3M/dmVyPTEuNi4yMicgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSJrOTkvYXNzZXRzL2Nzcy9zcG9wLm1pbi5jc3MiPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdlbGVtZW50b3ItZnJvbnRlbmQtY3NzJyBocmVmPSdrOTkvYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2Nzcy9mcm9udGVuZC1saXRlLm1pbmEyZjguY3NzP3Zlcj0zLjE5LjEnIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J3N3aXBlci1jc3MnIGhyZWY9J2s5OS9hc3NldHMvd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvbGliL3N3aXBlci92OC9jc3Mvc3dpcGVyLm1pbjk0YTQuY3NzP3Zlcj04LjQuNScgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZWxlbWVudG9yLXBvc3QtMy1jc3MnIGhyZWY9J2s5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvZWxlbWVudG9yL2Nzcy9wb3N0LTM0NDc3LmNzcz92ZXI9MTcwNjU3NDkyMScgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZWxlbWVudG9yLWdsb2JhbC1jc3MnIGhyZWY9J2s5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvZWxlbWVudG9yL2Nzcy9nbG9iYWw5ZTMzLmNzcz92ZXI9MTcwNjU3NDkyMicgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZWxlbWVudG9yLXBvc3QtOS1jc3MnIGhyZWY9J2s5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvZWxlbWVudG9yL2Nzcy9wb3N0LTk1ZmVhLmNzcz92ZXI9MTcwNjU3NDkyMycgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0naGZlLXdpZGdldHMtc3R5bGUtY3NzJyBocmVmPSdrOTkvYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9oZWFkZXItZm9vdGVyLWVsZW1lbnRvci9pbmMvd2lkZ2V0cy1jc3MvZnJvbnRlbmQzNzhmLmNzcz92ZXI9MS42LjIyJyBtZWRpYT0nYWxsJyAvPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdmb250LWF3ZXNvbWUtNS1hbGwtY3NzJyBocmVmPSdrOTkvYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2xpYi9mb250LWF3ZXNvbWUvY3NzL2FsbC5taW5hMmY4LmNzcz92ZXI9My4xOS4xJyBtZWRpYT0nYWxsJyAvPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdmb250LWF3ZXNvbWUtNC1zaGltLWNzcycgaHJlZj0nazk5L2Fzc2V0cy93cC1jb250ZW50L3BsdWdpbnMvZWxlbWVudG9yL2Fzc2V0cy9saWIvZm9udC1hd2Vzb21lL2Nzcy92NC1zaGltcy5taW5hMmY4LmNzcz92ZXI9My4xOS4xJyBtZWRpYT0nYWxsJyAvPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdlbGVtZW50b3ItcG9zdC03LWNzcycgaHJlZj0nazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC9lbGVtZW50b3IvY3NzL3Bvc3QtNzVmZWEuY3NzP3Zlcj0xNzA2NTc0OTIzJyBtZWRpYT0nYWxsJyAvPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdlbGVtZW50b3ItcG9zdC01OS1jc3MnIGhyZWY9J2s5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvZWxlbWVudG9yL2Nzcy9wb3N0LTU5NWZlYS5jc3M/dmVyPTE3MDY1NzQ5MjMnIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J3RleHQtZWRpdG9yLXN0eWxlLWNzcycgaHJlZj0nazk5L2Fzc2V0cy93cC1jb250ZW50L3BsdWdpbnMvbWV0Zm9ybS9wdWJsaWMvYXNzZXRzL2Nzcy90ZXh0LWVkaXRvcjNmZDAuY3NzP3Zlcj0zLjguMicgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0naGVsbG8tZWxlbWVudG9yLWNzcycgaHJlZj0nazk5L2Fzc2V0cy93cC1jb250ZW50L3RoZW1lcy9oZWxsby1lbGVtZW50b3Ivc3R5bGUubWluNWIwYS5jc3M/dmVyPTIuOS4wJyBtZWRpYT0nYWxsJyAvPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdoZWxsby1lbGVtZW50b3ItdGhlbWUtc3R5bGUtY3NzJyBocmVmPSdrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdGhlbWVzL2hlbGxvLWVsZW1lbnRvci90aGVtZS5taW41YjBhLmNzcz92ZXI9Mi45LjAnIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nazk5L2Fzc2V0cy9jc3MyL2N1c3RvbS5jc3MnIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nazk5L2Fzc2V0cy9jc3MyL2NhbGN1bGF0b3IuY3NzJyBtZWRpYT0nYWxsJyAvPgogICAgICA8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdnb29nbGUtZm9udHMtMS1jc3MnIGhyZWY9J2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Xb3JrK1NhbnMlM0ExMDAlMkMxMDBpdGFsaWMlMkMyMDAlMkMyMDBpdGFsaWMlMkMzMDAlMkMzMDBpdGFsaWMlMkM0MDAlMkM0MDBpdGFsaWMlMkM1MDAlMkM1MDBpdGFsaWMlMkM2MDAlMkM2MDBpdGFsaWMlMkM3MDAlMkM3MDBpdGFsaWMlMkM4MDAlMkM4MDBpdGFsaWMlMkM5MDAlMkM5MDBpdGFsaWMmYW1wO2Rpc3BsYXk9YXV0byZhbXA7dmVyPTYuNC4zJyBtZWRpYT0nYWxsJyAvPgogICAgICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vIiBjcm9zc29yaWdpbj4KICAgICAgPHNjcmlwdCBzcmM9Ims5OS9hc3NldHMvd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvbGliL2ZvbnQtYXdlc29tZS9qcy92NC1zaGltcy5taW5hMmY4LmpzP3Zlcj0zLjE5LjEiIGlkPSJmb250LWF3ZXNvbWUtNC1zaGltLWpzIj48L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9Ims5OS9hc3NldHMvd3AtaW5jbHVkZXMvanMvanF1ZXJ5L2pxdWVyeS5taW5mNDNiLmpzP3Zlcj0zLjcuMSIgaWQ9ImpxdWVyeS1jb3JlLWpzIj48L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9Ims5OS9hc3NldHMvd3AtaW5jbHVkZXMvanMvanF1ZXJ5L2pxdWVyeS1taWdyYXRlLm1pbjU1ODkuanM/dmVyPTMuNC4xIiBpZD0ianF1ZXJ5LW1pZ3JhdGUtanMiPjwvc2NyaXB0PgogICAgICA8bGluayByZWw9Imljb24iIGhyZWY9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9mYXZpY29uLTE1MHgxNTAucG5nIiBzaXplcz0iMzJ4MzIiIC8+CiAgICAgIDxsaW5rIHJlbD0iaWNvbiIgaHJlZj0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2Zhdmljb24tMzAweDMwMC5wbmciIHNpemVzPSIxOTJ4MTkyIiAvPgogICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9mYXZpY29uLTMwMHgzMDAucG5nIiAvPgogICAgICA8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLVRpbGVJbWFnZSIgY29udGVudD0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2Zhdmljb24tMzAweDMwMC5wbmciIC8+CiAgICAgIDxzdHlsZSBpZD0id3AtY3VzdG9tLWNzcyI+CiAgICAgICAgIHB7CiAgICAgICAgIG1hcmdpbjogMAogICAgICAgICB9CiAgICAgICAgIC5lLXBhcmVudCA+IC5lLWNvbi1pbm5lciB7CiAgICAgICAgIHBhZGRpbmctbGVmdDogMTVweCAhaW1wb3J0YW50OwogICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgIG1heC13aWR0aDogMTE3MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgIH0KICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KXsKICAgICAgICAgLmUtcGFyZW50IHsKICAgICAgICAgcGFkZGluZy1sZWZ0OiAwcHggIWltcG9ydGFudDsKICAgICAgICAgcGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgIH0KICAgICAgICAgfQkJCiAgICAgIDwvc3R5bGU+CiAgIDwvaGVhZD4KICAgPGJvZHkgY2xhc3M9ImhvbWUgcGFnZS10ZW1wbGF0ZSBwYWdlLXRlbXBsYXRlLWVsZW1lbnRvcl9oZWFkZXJfZm9vdGVyIHBhZ2UgcGFnZS1pZC05IGVoZi1oZWFkZXIgZWhmLWZvb3RlciBlaGYtdGVtcGxhdGUtaGVsbG8tZWxlbWVudG9yIGVoZi1zdHlsZXNoZWV0LWhlbGxvLWVsZW1lbnRvciBlbGVtZW50b3ItZGVmYXVsdCBlbGVtZW50b3ItdGVtcGxhdGUtZnVsbC13aWR0aCBlbGVtZW50b3Ita2l0LTMgZWxlbWVudG9yLXBhZ2UgZWxlbWVudG9yLXBhZ2UtOSI+CiAgICAgIDxkaXYgaWQ9InBhZ2UiIGNsYXNzPSJoZmVlZCBzaXRlIj4KICAgICAgPGhlYWRlciBpZD0ibWFzdGhlYWQiIGl0ZW1zY29wZT0iaXRlbXNjb3BlIiBpdGVtdHlwZT0iaHR0cHM6Ly9zY2hlbWEub3JnL1dQSGVhZGVyIj4KICAgICAgICAgPHAgY2xhc3M9Im1haW4tdGl0bGUgYmhmLWhpZGRlbiIgaXRlbXByb3A9ImhlYWRsaW5lIj48YSBocmVmPSI/YT1ob21lIiB0aXRsZT0iUHJvdG9uICYjODIxMTsgQ3J5cHRvIFdhbGxldCBMYW5kaW5nIFBhZ2UiIHJlbD0iaG9tZSI+Y2lyY3VpdHRyYWRldGVjaDwvYT48L3A+CiAgICAgICAgIDxkaXYgZGF0YS1lbGVtZW50b3ItdHlwZT0id3AtcG9zdCIgZGF0YS1lbGVtZW50b3ItaWQ9IjciIGNsYXNzPSJlbGVtZW50b3IgZWxlbWVudG9yLTciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC03Nzk4YTlkIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iNzc5OGE5ZCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7LCZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9IiBkYXRhLWNvcmUtdjMxNi1wbHVzPSJ0cnVlIj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0zMGY1NGY2IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iMzBmNTRmNiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN0eWxlPi8qISBlbGVtZW50b3IgLSB2My4xOS4wIC0gMDUtMDItMjAyNCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAuZWxlbWVudG9yLXdpZGdldC1pbWFnZXt0ZXh0LWFsaWduOmNlbnRlcn0uZWxlbWVudG9yLXdpZGdldC1pbWFnZSBhe2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlIGEgaW1nW3NyYyQ9Ii5zdmciXXt3aWR0aDo0OHB4fS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlIGltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtYmxvY2t9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgZmV0Y2hwcmlvcml0eT0iaGlnaCJzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL2xvZ28ucG5nIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1lNjk1ZDlmIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSJlNjk1ZDlmIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWFiNzcwY2EgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iYWI3NzBjYSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC05Y2ZjMGM3IGhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1tb2JpbGUgaGZlLW5hdi1tZW51X19hbGlnbi1sZWZ0IGhmZS1zdWJtZW51LWljb24tYXJyb3cgaGZlLXN1Ym1lbnUtYW5pbWF0aW9uLW5vbmUgaGZlLWxpbmstcmVkaXJlY3QtY2hpbGQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LW5hdmlnYXRpb24tbWVudSIgZGF0YS1pZD0iOWNmYzBjNyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O3BhZGRpbmdfaG9yaXpvbnRhbF9tZW51X2l0ZW0mcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzoxMCwmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ192ZXJ0aWNhbF9tZW51X2l0ZW0mcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzowLCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDttZW51X3NwYWNlX2JldHdlZW4mcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90Ozo2MCwmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7bWVudV9zcGFjZV9iZXR3ZWVuX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OjMwLCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX2hvcml6b250YWxfbWVudV9pdGVtX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ19ob3Jpem9udGFsX21lbnVfaXRlbV9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfdmVydGljYWxfbWVudV9pdGVtX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ192ZXJ0aWNhbF9tZW51X2l0ZW1fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDttZW51X3NwYWNlX2JldHdlZW5fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDttZW51X3Jvd19zcGFjZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7bWVudV9yb3dfc3BhY2VfdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDttZW51X3Jvd19zcGFjZV9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O2Ryb3Bkb3duX2JvcmRlcl9yYWRpdXMmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7dG9wJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtyaWdodCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Ym90dG9tJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsZWZ0JnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtpc0xpbmtlZCZxdW90Ozp0cnVlfSwmcXVvdDtkcm9wZG93bl9ib3JkZXJfcmFkaXVzX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDt0b3AmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3JpZ2h0JnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtib3R0b20mcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xlZnQmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2lzTGlua2VkJnF1b3Q7OnRydWV9LCZxdW90O2Ryb3Bkb3duX2JvcmRlcl9yYWRpdXNfbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3RvcCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cmlnaHQmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2JvdHRvbSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGVmdCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7aXNMaW5rZWQmcXVvdDs6dHJ1ZX0sJnF1b3Q7d2lkdGhfZHJvcGRvd25faXRlbSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OzIyMCZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7d2lkdGhfZHJvcGRvd25faXRlbV90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3dpZHRoX2Ryb3Bkb3duX2l0ZW1fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX2hvcml6b250YWxfZHJvcGRvd25faXRlbSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ19ob3Jpem9udGFsX2Ryb3Bkb3duX2l0ZW1fdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX2hvcml6b250YWxfZHJvcGRvd25faXRlbV9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfdmVydGljYWxfZHJvcGRvd25faXRlbSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OjE1LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX3ZlcnRpY2FsX2Ryb3Bkb3duX2l0ZW1fdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX3ZlcnRpY2FsX2Ryb3Bkb3duX2l0ZW1fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtkaXN0YW5jZV9mcm9tX21lbnUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O2Rpc3RhbmNlX2Zyb21fbWVudV90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O2Rpc3RhbmNlX2Zyb21fbWVudV9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9zaXplJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfc2l6ZV90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9zaXplX21vYmlsZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX2JvcmRlcl93aWR0aCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX2JvcmRlcl93aWR0aF90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9ib3JkZXJfd2lkdGhfbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfYm9yZGVyX3JhZGl1cyZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX2JvcmRlcl9yYWRpdXNfdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfYm9yZGVyX3JhZGl1c19tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119fSIgZGF0YS13aWRnZXRfdHlwZT0ibmF2aWdhdGlvbi1tZW51LmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhmZS1uYXYtbWVudSBoZmUtbGF5b3V0LWhvcml6b250YWwgaGZlLW5hdi1tZW51LWxheW91dCBob3Jpem9udGFsIGhmZS1wb2ludGVyX19ub25lIiBkYXRhLWxheW91dD0iaG9yaXpvbnRhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcm9sZT0iYnV0dG9uIiBpZD0ibWVudVRvZ2dsZSIgY2xhc3M9ImhmZS1uYXYtbWVudV9fdG9nZ2xlIGVsZW1lbnRvci1jbGlja2FibGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2NyZWVuLXJlYWRlci10ZXh0Ij5NZW51PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZmUtbmF2LW1lbnUtaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgYXJpYS1oaWRkZW49InRydWUiICBjbGFzcz0iZS1mb250LWljb24tc3ZnIGUtZmFzLWFsaWduLWp1c3RpZnkiIHZpZXdCb3g9IjAgMCA0NDggNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDMyIDQxNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hdiBjbGFzcz0iaGZlLW5hdi1tZW51X19sYXlvdXQtaG9yaXpvbnRhbCBoZmUtbmF2LW1lbnVfX3N1Ym1lbnUtYXJyb3ciIGRhdGEtdG9nZ2xlLWljb249IiZsdDtzdmcgYXJpYS1oaWRkZW49JnF1b3Q7dHJ1ZSZxdW90OyB0YWJpbmRleD0mcXVvdDswJnF1b3Q7IGNsYXNzPSZxdW90O2UtZm9udC1pY29uLXN2ZyBlLWZhcy1hbGlnbi1qdXN0aWZ5JnF1b3Q7IHZpZXdCb3g9JnF1b3Q7MCAwIDQ0OCA1MTImcXVvdDsgeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcmcXVvdDsmZ3Q7Jmx0O3BhdGggZD0mcXVvdDtNNDMyIDQxNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnomcXVvdDsmZ3Q7Jmx0Oy9wYXRoJmd0OyZsdDsvc3ZnJmd0OyIgZGF0YS1jbG9zZS1pY29uPSImbHQ7c3ZnIGFyaWEtaGlkZGVuPSZxdW90O3RydWUmcXVvdDsgdGFiaW5kZXg9JnF1b3Q7MCZxdW90OyBjbGFzcz0mcXVvdDtlLWZvbnQtaWNvbi1zdmcgZS1mYXItd2luZG93LWNsb3NlJnF1b3Q7IHZpZXdCb3g9JnF1b3Q7MCAwIDUxMiA1MTImcXVvdDsgeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcmcXVvdDsmZ3Q7Jmx0O3BhdGggZD0mcXVvdDtNNDY0IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptMCAzOTRjMCAzLjMtMi43IDYtNiA2SDU0Yy0zLjMgMC02LTIuNy02LTZWODZjMC0zLjMgMi43LTYgNi02aDQwNGMzLjMgMCA2IDIuNyA2IDZ2MzQwek0zNTYuNSAxOTQuNkwyOTUuMSAyNTZsNjEuNCA2MS40YzQuNiA0LjYgNC42IDEyLjEgMCAxNi44bC0yMi4zIDIyLjNjLTQuNiA0LjYtMTIuMSA0LjYtMTYuOCAwTDI1NiAyOTUuMWwtNjEuNCA2MS40Yy00LjYgNC42LTEyLjEgNC42LTE2LjggMGwtMjIuMy0yMi4zYy00LjYtNC42LTQuNi0xMi4xIDAtMTYuOGw2MS40LTYxLjQtNjEuNC02MS40Yy00LjYtNC42LTQuNi0xMi4xIDAtMTYuOGwyMi4zLTIyLjNjNC42LTQuNiAxMi4xLTQuNiAxNi44IDBsNjEuNCA2MS40IDYxLjQtNjEuNGM0LjYtNC42IDEyLjEtNC42IDE2LjggMGwyMi4zIDIyLjNjNC43IDQuNiA0LjcgMTIuMSAwIDE2Ljh6JnF1b3Q7Jmd0OyZsdDsvcGF0aCZndDsmbHQ7L3N2ZyZndDsiIGRhdGEtZnVsbC13aWR0aD0ieWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGlkPSJtZW51LTEtOWNmYzBjNyIgY2xhc3M9ImhmZS1uYXYtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0ibWVudS1pdGVtLTExIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLWhvbWUgY3VycmVudC1tZW51LWl0ZW0gcGFnZV9pdGVtIHBhZ2UtaXRlbS05IGN1cnJlbnRfcGFnZV9pdGVtIHBhcmVudCBoZmUtY3JlYXRpdmUtbWVudSI+PGEgaHJlZj0iP2E9aG9tZSIgY2xhc3MgPSAiaGZlLW1lbnUtaXRlbSIgc3R5bGU9ImNvbG9yOiB3aGl0ZSI+SG9tZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9Im1lbnUtaXRlbS0xMiIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gcGFyZW50IGhmZS1jcmVhdGl2ZS1tZW51Ij48YSBocmVmPSIjd2FsbGV0IiBjbGFzcyA9ICJoZmUtbWVudS1pdGVtIiBzdHlsZT0iY29sb3I6IHdoaXRlIj5BYm91dDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9Im1lbnUtaXRlbS0xNCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gcGFyZW50IGhmZS1jcmVhdGl2ZS1tZW51Ij48YSBocmVmPSIjcGxhbnMiIGNsYXNzID0gImhmZS1tZW51LWl0ZW0iIHN0eWxlPSJjb2xvcjogd2hpdGUiPlBsYW5zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0ibWVudS1pdGVtLTE1IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBwYXJlbnQgaGZlLWNyZWF0aXZlLW1lbnUiPjxhIGhyZWY9IiNmYXEiIGNsYXNzID0gImhmZS1tZW51LWl0ZW0iIHN0eWxlPSJjb2xvcjogd2hpdGUiPkZBUTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9Im1lbnUtaXRlbS0xNSIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gcGFyZW50IGhmZS1jcmVhdGl2ZS1tZW51Ij48YSBocmVmPSI/YT1zdXBwb3J0IiBjbGFzcyA9ICJoZmUtbWVudS1pdGVtIiBzdHlsZT0iY29sb3I6IHdoaXRlIj5TdXBwb3J0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g0J/QvtC70YPRh9Cw0LXQvCDRgdGB0YvQu9C60YMg0L3QsCDQuNC60L7QvdC60YMg0LzQtdC90Y4g0Lgg0L3QsCDRgdCw0LzQviDQvNC10L3RjgogICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVudVRvZ2dsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZW51VG9nZ2xlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtZW51ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhmZS1uYXYtbWVudScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g0JTQvtCx0LDQstC70Y/QtdC8INC+0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPINC60LvQuNC60LAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVRvZ2dsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g0J/QtdGA0LXQutC70Y7Rh9Cw0LXQvCDQutC70LDRgdGBINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPL9GB0LrRgNGL0YLQuNGPINC80LXQvdGOCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51LmNsYXNzTGlzdC50b2dnbGUoJ2hmZS1uYXYtbWVudS0tb3BlbicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkJICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ij9hPWxvZ2luIiBjbGFzcz0iaGVhZC1idXQiPkxvZ2luPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMnB4OyI+PGEgaHJlZj0iP2E9c2lnbnVwIiBjbGFzcz0iaGVhZC1idXQiPlNpZ251cDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4gPGNlbnRlcj48ZGl2IGlkPSJnb29nbGVfdHJhbnNsYXRlX2VsZW1lbnQiPjwvZGl2PjwvY2VudGVyPgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICA8L2hlYWRlcj4KICAgICAgPGRpdiBkYXRhLWVsZW1lbnRvci10eXBlPSJ3cC1wYWdlIiBkYXRhLWVsZW1lbnRvci1pZD0iOSIgY2xhc3M9ImVsZW1lbnRvciBlbGVtZW50b3ItOSI+CiAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWE1MGJhMzUgZS1mbGV4IGUtY29uLWJveGVkIGUtY29uIGUtcGFyZW50IiBkYXRhLWlkPSJhNTBiYTM1IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7YmFja2dyb3VuZF9iYWNrZ3JvdW5kJnF1b3Q7OiZxdW90O2NsYXNzaWMmcXVvdDssJnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iIGRhdGEtY29yZS12MzE2LXBsdXM9InRydWUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTY3OTIzMDIgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iNjc5MjMwMiIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01MTIzZmRmIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSI1MTIzZmRmIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHlsZT4vKiEgZWxlbWVudG9yIC0gdjMuMTkuMCAtIDA1LTAyLTIwMjQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxle3BhZGRpbmc6MDttYXJnaW46MDtsaW5lLWhlaWdodDoxfS5lbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmcgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlW2NsYXNzKj1lbGVtZW50b3Itc2l6ZS1dPmF7Y29sb3I6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fS5lbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmcgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlLmVsZW1lbnRvci1zaXplLXNtYWxse2ZvbnQtc2l6ZToxNXB4fS5lbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmcgLmVsZW1lbnRvci1oZWFkaW5nLXRpdGxlLmVsZW1lbnRvci1zaXplLW1lZGl1bXtmb250LXNpemU6MTlweH0uZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZS5lbGVtZW50b3Itc2l6ZS1sYXJnZXtmb250LXNpemU6MjlweH0uZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZS5lbGVtZW50b3Itc2l6ZS14bHtmb250LXNpemU6MzlweH0uZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIC5lbGVtZW50b3ItaGVhZGluZy10aXRsZS5lbGVtZW50b3Itc2l6ZS14eGx7Zm9udC1zaXplOjU5cHh9CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+IGNpcmN1aXR0cmFkZXRlY2ggPHNwYW4gc3R5bGU9ImNvbG9yOiNGOUY5RjkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICBVbmxlYXNoaW5nIHRoZSBQb3RlbnRpYWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDE+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZjJkNjkyYSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IiIGRhdGEtaWQ9ImYyZDY5MmEiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9InRleHQtZWRpdG9yLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHlsZT4vKiEgZWxlbWVudG9yIC0gdjMuMTkuMCAtIDA1LTAyLTIwMjQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IuZWxlbWVudG9yLWRyb3AtY2FwLXZpZXctc3RhY2tlZCAuZWxlbWVudG9yLWRyb3AtY2Fwe2JhY2tncm91bmQtY29sb3I6IzY5NzI3ZDtjb2xvcjojZmZmfS5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yLmVsZW1lbnRvci1kcm9wLWNhcC12aWV3LWZyYW1lZCAuZWxlbWVudG9yLWRyb3AtY2Fwe2NvbG9yOiM2OTcyN2Q7Ym9yZGVyOjNweCBzb2xpZDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yOm5vdCguZWxlbWVudG9yLWRyb3AtY2FwLXZpZXctZGVmYXVsdCkgLmVsZW1lbnRvci1kcm9wLWNhcHttYXJnaW4tdG9wOjhweH0uZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvcjpub3QoLmVsZW1lbnRvci1kcm9wLWNhcC12aWV3LWRlZmF1bHQpIC5lbGVtZW50b3ItZHJvcC1jYXAtbGV0dGVye3dpZHRoOjFlbTtoZWlnaHQ6MWVtfS5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIC5lbGVtZW50b3ItZHJvcC1jYXB7ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDoxO2ZvbnQtc2l6ZTo1MHB4fS5lbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIC5lbGVtZW50b3ItZHJvcC1jYXAtbGV0dGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrfQogICAgICAgICAgICAgICAgICAgICAgICA8L3N0eWxlPgogICAgICAgICAgICAgICAgICAgICAgICA8cD5FbWJhcmsgb24gYSBsZWdlbmRhcnkgam91cm5leSB3aXRoIGNpcmN1aXR0cmFkZXRlY2gsIHdoZXJlIGlubm92YXRpb24gbWVldHMgaW52ZXN0bWVudC48L3A+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZjg1ODYyOSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IiIGRhdGEtaWQ9ImY4NTg2MjkiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9InRleHQtZWRpdG9yLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPldlIGFyZSB0aGUgY3J1Y2libGUgd2hlcmUgc3RhcnR1cHMgdHJhbnNmb3JtIGludG8gY2hhbXBpb25zLCBsYXVuY2hpbmcgeW91IG9uIGEgcGF0aCB0byBmaW5hbmNpYWwgcHJvc3Blcml0eS48L3A+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWQxZGNkMDIgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iZDFkY2QwMiIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1iZTQzNTA2IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iYmU0MzUwNiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSI1OTciIGhlaWdodD0iNTg3IiBzcmM9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9jb250ZW50LWltYWdlLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMTU2IiBhbHQ9IiIgc3Jjc2V0PSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvY29udGVudC1pbWFnZS5wbmcgNTk3dywgL2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2NvbnRlbnQtaW1hZ2UtMzAweDI5NS5wbmcgMzAwdyIgc2l6ZXM9IihtYXgtd2lkdGg6IDU5N3B4KSAxMDB2dywgNTk3cHgiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDx2aWRlbyB3aWR0aD0iMTAwJSIgY29udHJvbHM+CiAgPHNvdXJjZSBzcmM9ImNpcmN1aXR0cmFkZXRlY2gubXA0IiB0eXBlPSJ2aWRlby9tcDQiPgogIDxzb3VyY2Ugc3JjPSJtb3ZfYmJiLm9nZyIgdHlwZT0idmlkZW8vb2dnIj4KICBZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBIVE1MIHZpZGVvLgo8L3ZpZGVvPgogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAogICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01Mzg2ZWNkIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iNTM4NmVjZCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgaWQ9IndhbGxldCIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7LCZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9IiBkYXRhLWNvcmUtdjMxNi1wbHVzPSJ0cnVlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0xNzA0ZDA0IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSIxNzA0ZDA0IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+V2hhdCBXZSBEbzo8L2gyPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWYwMjM5ZGYgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIiBkYXRhLWlkPSJmMDIzOWRmIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJ0ZXh0LWVkaXRvci5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICA8cD5BdCBjaXJjdWl0dHJhZGV0ZWNoLCB3ZSBhcmUgdGhlIGFyY2hpdGVjdHMgb2YgZHJlYW1zLCBwcm92aWRpbmcgYSBwbGF0Zm9ybSBmb3IgdmlzaW9uYXJ5IGVudHJlcHJlbmV1cnMgdG8gc29hci4gV2UgY3VyYXRlIGFuZCBpbnZlc3QgaW4gZ3JvdW5kYnJlYWtpbmcgc3RhcnR1cCBjb21wYW5pZXMsIHRyYW5zZm9ybWluZyB0aGVtIGludG8gdGhlIGxlZ2VuZHMgb2YgdG9tb3Jyb3cuPC9wPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTU1NmQ5MGQgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlIiBkYXRhLWlkPSI1NTZkOTBkIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICA8aW1nIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjEzOCIgaGVpZ2h0PSIzMiIgc3JjPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvZGVzaWduLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMTc0IiBhbHQ9IiIgLz4JCQkJCQkJCQkJCQkJCiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMTZmNDhhMyBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iMTZmNDhhMyIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0xZDdjZjI4IGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjFkN2NmMjgiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZThkY2U3OCBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3ItcG9zaXRpb24tdG9wIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3giIGRhdGEtaWQ9ImU4ZGNlNzgiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLWJveC5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3R5bGU+LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNS0wMi0yMDI0ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC1jb250ZW50e3dpZHRoOjEwMCV9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyLC5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlcntkaXNwbGF5OmZsZXh9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci1wb3NpdGlvbi1yaWdodCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVye3RleHQtYWxpZ246cmlnaHQ7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci1wb3NpdGlvbi1sZWZ0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXJ7dGV4dC1hbGlnbjpsZWZ0O2ZsZXgtZGlyZWN0aW9uOnJvd30uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXBvc2l0aW9uLXRvcCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWd7bWFyZ2luOmF1dG99LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci12ZXJ0aWNhbC1hbGlnbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlcnthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItdmVydGljYWwtYWxpZ24tbWlkZGxlIC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItdmVydGljYWwtYWxpZ24tYm90dG9tIC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXJ7YWxpZ24taXRlbXM6ZmxleC1lbmR9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1ne21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjE1cHh9fS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC1pbWd7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IC5lbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIGF7Y29sb3I6aW5oZXJpdH0uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlcnt0ZXh0LWFsaWduOmNlbnRlcn0uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb257bWFyZ2luOjB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIj48aW1nIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyMjAiIHNyYz0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2ljLWNvbnRyb2wteW91ci1jcnlwdG8ucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0xODUiIGFsdD0iIiBzcmNzZXQ9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1jb250cm9sLXlvdXItY3J5cHRvLnBuZyAyMjB3LCAvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtY29udHJvbC15b3VyLWNyeXB0by0xNTB4MTUwLnBuZyAxNTB3IiBzaXplcz0iKG1heC13aWR0aDogMjIwcHgpIDEwMHZ3LCAyMjBweCIgLz48L2ZpZ3VyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LXRpdGxlIiBzdHlsZT0iZm9udC1zaXplOiAyNXB4OyI+SW5ub3ZhdGl2ZSBJbnZlc3RtZW50IEVjb3N5c3RlbTwvaDU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWRlc2NyaXB0aW9uIj5EaXZlIGludG8gYW4gaW5ub3ZhdGl2ZSBpbnZlc3RtZW50IGxhbmRzY2FwZSB3aXRoIGNpcmN1aXR0cmFkZXRlY2guIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01ODYxMDQ3IGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjU4NjEwNDciIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYyBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3ItcG9zaXRpb24tdG9wIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3giIGRhdGEtaWQ9ImQxMWIxZmMiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLWJveC5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlndXJlIGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWltZyI+PGltZyBsb2FkaW5nPSJsYXp5IiBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIyMjAiIGhlaWdodD0iMjIwIiBzcmM9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1zdG9yZS15b3VyLW5mdHMucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0xOTYiIGFsdD0iIiBzcmNzZXQ9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1zdG9yZS15b3VyLW5mdHMucG5nIDIyMHcsIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1zdG9yZS15b3VyLW5mdHMtMTUweDE1MC5wbmcgMTUwdyIgc2l6ZXM9IihtYXgtd2lkdGg6IDIyMHB4KSAxMDB2dywgMjIwcHgiIC8+PC9maWd1cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSIgc3R5bGU9ImZvbnQtc2l6ZTogMjVweDsiPkV4cGVydGx5IEN1cmF0ZWQgUG9ydGZvbGlvPC9oNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24iPkV4cGVyaWVuY2UgdGhlIGFzc3VyYW5jZSBvZiBleHBlcnQgY3VyYXRpb24gYXQgY2lyY3VpdHRyYWRldGVjaDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0wZTM5MjYzIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjBlMzkyNjMiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYmU0NjIwZSBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3ItcG9zaXRpb24tdG9wIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3giIGRhdGEtaWQ9ImJlNDYyMGUiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLWJveC5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlndXJlIGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWltZyI+PGltZyBsb2FkaW5nPSJsYXp5IiBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIyMjAiIGhlaWdodD0iMjIwIiBzcmM9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy13b3Jrcy13aXRoLXdlYnNpdGUucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0xOTciIGFsdD0iIiBzcmNzZXQ9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy13b3Jrcy13aXRoLXdlYnNpdGUucG5nIDIyMHcsIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy13b3Jrcy13aXRoLXdlYnNpdGUtMTUweDE1MC5wbmcgMTUwdyIgc2l6ZXM9IihtYXgtd2lkdGg6IDIyMHB4KSAxMDB2dywgMjIwcHgiIC8+PC9maWd1cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSIgc3R5bGU9ImZvbnQtc2l6ZTogMjVweDsiPkhhbmRzLU9uIFN1cHBvcnQgZm9yIFN0YXJ0dXBzPC9oNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24iPldlIHByb3ZpZGUgaGFuZHMtb24gc3VwcG9ydCB0byB0aGUgc3RhcnR1cHMgd2UgaW52ZXN0IGluLCBmb3N0ZXJpbmcgYW4gZW52aXJvbm1lbnQgZm9yIGdyb3d0aCBhbmQgc3VjY2Vzcy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMzM1ODExOCBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSIzMzU4MTE4IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWNhM2JhNzYgZWxlbWVudG9yLXdpZGdldC1tb2JpbGVfX3dpZHRoLWluaGVyaXQgZWxlbWVudG9yLXBvc2l0aW9uLXRvcCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IiBkYXRhLWlkPSJjYTNiYTc2IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS1ib3guZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1pbWciPjxpbWcgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjIyMCIgc3JjPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtaW5kdXN0cnktbGVhZGluZy1zZWN1cml0eS5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTE5OCIgYWx0PSIiIHNyY3NldD0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2ljLWluZHVzdHJ5LWxlYWRpbmctc2VjdXJpdHkucG5nIDIyMHcsIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1pbmR1c3RyeS1sZWFkaW5nLXNlY3VyaXR5LTE1MHgxNTAucG5nIDE1MHciIHNpemVzPSIobWF4LXdpZHRoOiAyMjBweCkgMTAwdncsIDIyMHB4IiAvPjwvZmlndXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUiIHN0eWxlPSJmb250LXNpemU6IDI1cHg7Ij5FeGNsdXNpdmUgQWNjZXNzIHRvIEVtZXJnaW5nIE1hcmtldHM8L2g1PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiI+R2FpbiBhIHN0cmF0ZWdpYyBhZHZhbnRhZ2Ugd2l0aCBjaXJjdWl0dHJhZGV0ZWNoIGFzIHdlIHByb3ZpZGUgZXhjbHVzaXZlIGFjY2VzcyB0byBlbWVyZ2luZyBtYXJrZXRzIGFuZCBpbmR1c3RyaWVzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNzg0YmQ3MiBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1wYXJlbnQiIGRhdGEtaWQ9Ijc4NGJkNzIiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90OywmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSIgZGF0YS1jb3JlLXYzMTYtcGx1cz0idHJ1ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTQiIG9uY2xpY2s9InNob3dEZXRhaWxzKCdwbGFuLTEnKSI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBsYW4tYm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1nLWJveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJrOTkvYXNzZXRzL2ltYWdlcy9wbGFuX2ltZy5wbmciIGNsYXNzPSJwbGFuLWltZyIgaWQ9InBsYW5zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iYm94LXRpdGxlIj5TZWxlY3QgYSBQbGFuPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1ib3gtcm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1ib3gyIiBkYXRhLXBsYW49InBsYW4tMSI+PGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL3RhYl9pbWc1LnBuZyI+PHNwYW4gY2xhc3M9InBsYW4tYm94Mi10aXRsZSI+QkVHSU5ORVIgUExBTjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1ib3gyIiBkYXRhLXBsYW49InBsYW4tMiI+PGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL3RhYl9pbWcxLnBuZyI+PHNwYW4gY2xhc3M9InBsYW4tYm94Mi10aXRsZSI+QURWQU5DRUQgUExBTjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGxhbi1ib3gyIiBkYXRhLXBsYW49InBsYW4tMyI+PGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL3RhYl9pbWcyLnBuZyI+PHNwYW4gY2xhc3M9InBsYW4tYm94Mi10aXRsZSI+Q09NUEVURU5DRSBQTEFOPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwbGFuLWJveDIiIGRhdGEtcGxhbj0icGxhbi00Ij48aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvdGFiX2ltZzMucG5nIj48c3BhbiBjbGFzcz0icGxhbi1ib3gyLXRpdGxlIj5FWFBFUlQgUExBTjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTgiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjLWJveC1yb3ciIGlkPSJwbGFuLTEtZGV0YWlscyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc2MtY29sLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImRlc2MtYm94LXRpdGxlIj48c3BhbiBjbGFzcz0icGxhbi1iaWciPjQlPC9zcGFuPiBkYWlseSBmb3IgNyBkYXlzPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwZXJjZW50LXRpdGxlIj40JTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc2MtcGxhbi1kZXNjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+TWluIERlcG9zaXQ6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPiQ1MDwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPk1heCBEZXBvc2l0OiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj4kMzk5OTwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPlByb2ZpdDogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+NCU8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5QcmluY2lwYWw6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPkluY2x1ZGVkPC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+RWFybmluZ3M6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPkF0IHRoZSBlbmQ8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz0iZGVzYy1jb2wtOCIgaWQ9InBsYW4tMS1kZXNjcmlwdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjMi1wIj4gPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL25leHQuc3ZnIiBhbHQ9InBsYW5faW1nNiIgY2xhc3M9ImRlc2MyLXBvaW50Ij4gRXhwZXJpZW5jZSBmaW5hbmNpYWwgaW50ZWxsaWdlbmNlIHdpdGggU3VwZXIgWiBMaW1pdGVkJ3MgUXVhbnR1bSBZaWVsZCBQbGFuLiBIYXJuZXNzaW5nIHN0YXRlLW9mLXRoZS1hcnQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHBsYW4gc3RyYXRlZ2ljYWxseSBpbnZlc3RzIGluIHN0YWJsZSBhc3NldHMsIGluY2x1ZGluZyBlc3RhYmxpc2hlZCBjcnlwdG9jdXJyZW5jaWVzIGxpa2UgQml0Y29pbiBhbmQgZm9yd2FyZC1sb29raW5nIHRlY2ggc3RvY2tzLgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjMi1wIj4gPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL25leHQuc3ZnIiBhbHQ9InBsYW5faW1nNiIgY2xhc3M9ImRlc2MyLXBvaW50Ij4gRXhwZXJpZW5jZSBmaW5hbmNpYWwgaW50ZWxsaWdlbmNlIHdpdGggU3VwZXIgWiBMaW1pdGVkJ3MgUXVhbnR1bSBZaWVsZCBQbGFuLiBIYXJuZXNzaW5nIHN0YXRlLW9mLXRoZS1hcnQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHBsYW4gc3RyYXRlZ2ljYWxseSBpbnZlc3RzIGluIHN0YWJsZSBhc3NldHMsIGluY2x1ZGluZyBlc3RhYmxpc2hlZCBjcnlwdG9jdXJyZW5jaWVzIGxpa2UgQml0Y29pbiBhbmQgZm9yd2FyZC1sb29raW5nIHRlY2ggc3RvY2tzLgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjMi1wIj4gPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL25leHQuc3ZnIiBhbHQ9InBsYW5faW1nNiIgY2xhc3M9ImRlc2MyLXBvaW50Ij4gRXhwZXJpZW5jZSBmaW5hbmNpYWwgaW50ZWxsaWdlbmNlIHdpdGggU3VwZXIgWiBMaW1pdGVkJ3MgUXVhbnR1bSBZaWVsZCBQbGFuLiBIYXJuZXNzaW5nIHN0YXRlLW9mLXRoZS1hcnQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHBsYW4gc3RyYXRlZ2ljYWxseSBpbnZlc3RzIGluIHN0YWJsZSBhc3NldHMsIGluY2x1ZGluZyBlc3RhYmxpc2hlZCBjcnlwdG9jdXJyZW5jaWVzIGxpa2UgQml0Y29pbiBhbmQgZm9yd2FyZC1sb29raW5nIHRlY2ggc3RvY2tzLgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc2MtYm94LXJvdyIgaWQ9InBsYW4tMi1kZXRhaWxzIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjLWNvbC00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJkZXNjLWJveC10aXRsZSI+PHNwYW4gY2xhc3M9InBsYW4tYmlnIj41JTwvc3Bhbj4gZGFpbHkgZm9yIDcgZGF5czwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icGVyY2VudC10aXRsZSI+NSU8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjLXBsYW4tZGVzYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPk1pbiBEZXBvc2l0OiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj4kNDAwMDwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPk1heCBEZXBvc2l0OiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj4kOTk5OTwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPlByb2ZpdDogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+NSU8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5QcmluY2lwYWw6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPkluY2x1ZGVkPC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+RWFybmluZ3M6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPkF0IHRoZSBlbmQ8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz0iZGVzYy1jb2wtOCIgaWQ9InBsYW4tMi1kZXNjcmlwdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjMi1wIj4gPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL25leHQuc3ZnIiBhbHQ9InBsYW5faW1nNiIgY2xhc3M9ImRlc2MyLXBvaW50Ij4gRXhwZXJpZW5jZSBmaW5hbmNpYWwgaW50ZWxsaWdlbmNlIHdpdGggU3VwZXIgWiBMaW1pdGVkJ3MgUXVhbnR1bSBZaWVsZCBQbGFuLiBIYXJuZXNzaW5nIHN0YXRlLW9mLXRoZS1hcnQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHBsYW4gc3RyYXRlZ2ljYWxseSBpbnZlc3RzIGluIHN0YWJsZSBhc3NldHMsIGluY2x1ZGluZyBlc3RhYmxpc2hlZCBjcnlwdG9jdXJyZW5jaWVzIGxpa2UgQml0Y29pbiBhbmQgZm9yd2FyZC1sb29raW5nIHRlY2ggc3RvY2tzLgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjMi1wIj4gPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL25leHQuc3ZnIiBhbHQ9InBsYW5faW1nNiIgY2xhc3M9ImRlc2MyLXBvaW50Ij4gRXhwZXJpZW5jZSBmaW5hbmNpYWwgaW50ZWxsaWdlbmNlIHdpdGggU3VwZXIgWiBMaW1pdGVkJ3MgUXVhbnR1bSBZaWVsZCBQbGFuLiBIYXJuZXNzaW5nIHN0YXRlLW9mLXRoZS1hcnQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHBsYW4gc3RyYXRlZ2ljYWxseSBpbnZlc3RzIGluIHN0YWJsZSBhc3NldHMsIGluY2x1ZGluZyBlc3RhYmxpc2hlZCBjcnlwdG9jdXJyZW5jaWVzIGxpa2UgQml0Y29pbiBhbmQgZm9yd2FyZC1sb29raW5nIHRlY2ggc3RvY2tzLgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjMi1wIj4gPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL25leHQuc3ZnIiBhbHQ9InBsYW5faW1nNiIgY2xhc3M9ImRlc2MyLXBvaW50Ij4gRXhwZXJpZW5jZSBmaW5hbmNpYWwgaW50ZWxsaWdlbmNlIHdpdGggU3VwZXIgWiBMaW1pdGVkJ3MgUXVhbnR1bSBZaWVsZCBQbGFuLiBIYXJuZXNzaW5nIHN0YXRlLW9mLXRoZS1hcnQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHBsYW4gc3RyYXRlZ2ljYWxseSBpbnZlc3RzIGluIHN0YWJsZSBhc3NldHMsIGluY2x1ZGluZyBlc3RhYmxpc2hlZCBjcnlwdG9jdXJyZW5jaWVzIGxpa2UgQml0Y29pbiBhbmQgZm9yd2FyZC1sb29raW5nIHRlY2ggc3RvY2tzLgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc2MtYm94LXJvdyIgaWQ9InBsYW4tMy1kZXRhaWxzIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjLWNvbC00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJkZXNjLWJveC10aXRsZSI+PHNwYW4gY2xhc3M9InBsYW4tYmlnIj43JTwvc3Bhbj4gZGFpbHkgZm9yIDcgZGF5czwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icGVyY2VudC10aXRsZSI+NyU8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjLXBsYW4tZGVzYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPk1pbiBEZXBvc2l0OiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj4kMTAwMDA8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5NYXggRGVwb3NpdDogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+JDE0OTk5PC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+UHJvZml0OiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj43JTwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJkZXNjLXAiPlByaW5jaXBhbDogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+SW5jbHVkZWQ8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5FYXJuaW5nczogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+QXQgdGhlIGVuZDwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPSJkZXNjLWNvbC04IiBpZD0icGxhbi0zLWRlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MyLXAiPiA8aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvbmV4dC5zdmciIGFsdD0icGxhbl9pbWc2IiBjbGFzcz0iZGVzYzItcG9pbnQiPiBFeHBlcmllbmNlIGZpbmFuY2lhbCBpbnRlbGxpZ2VuY2Ugd2l0aCBTdXBlciBaIExpbWl0ZWQncyBRdWFudHVtIFlpZWxkIFBsYW4uIEhhcm5lc3Npbmcgc3RhdGUtb2YtdGhlLWFydCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcGxhbiBzdHJhdGVnaWNhbGx5IGludmVzdHMgaW4gc3RhYmxlIGFzc2V0cywgaW5jbHVkaW5nIGVzdGFibGlzaGVkIGNyeXB0b2N1cnJlbmNpZXMgbGlrZSBCaXRjb2luIGFuZCBmb3J3YXJkLWxvb2tpbmcgdGVjaCBzdG9ja3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MyLXAiPiA8aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvbmV4dC5zdmciIGFsdD0icGxhbl9pbWc2IiBjbGFzcz0iZGVzYzItcG9pbnQiPiBFeHBlcmllbmNlIGZpbmFuY2lhbCBpbnRlbGxpZ2VuY2Ugd2l0aCBTdXBlciBaIExpbWl0ZWQncyBRdWFudHVtIFlpZWxkIFBsYW4uIEhhcm5lc3Npbmcgc3RhdGUtb2YtdGhlLWFydCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcGxhbiBzdHJhdGVnaWNhbGx5IGludmVzdHMgaW4gc3RhYmxlIGFzc2V0cywgaW5jbHVkaW5nIGVzdGFibGlzaGVkIGNyeXB0b2N1cnJlbmNpZXMgbGlrZSBCaXRjb2luIGFuZCBmb3J3YXJkLWxvb2tpbmcgdGVjaCBzdG9ja3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MyLXAiPiA8aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvbmV4dC5zdmciIGFsdD0icGxhbl9pbWc2IiBjbGFzcz0iZGVzYzItcG9pbnQiPiBFeHBlcmllbmNlIGZpbmFuY2lhbCBpbnRlbGxpZ2VuY2Ugd2l0aCBTdXBlciBaIExpbWl0ZWQncyBRdWFudHVtIFlpZWxkIFBsYW4uIEhhcm5lc3Npbmcgc3RhdGUtb2YtdGhlLWFydCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcGxhbiBzdHJhdGVnaWNhbGx5IGludmVzdHMgaW4gc3RhYmxlIGFzc2V0cywgaW5jbHVkaW5nIGVzdGFibGlzaGVkIGNyeXB0b2N1cnJlbmNpZXMgbGlrZSBCaXRjb2luIGFuZCBmb3J3YXJkLWxvb2tpbmcgdGVjaCBzdG9ja3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVzYy1ib3gtcm93IiBpZD0icGxhbi00LWRldGFpbHMiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc2MtY29sLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImRlc2MtYm94LXRpdGxlIj48c3BhbiBjbGFzcz0icGxhbi1iaWciPjEyJTwvc3Bhbj4gZGFpbHkgZm9yIDcgZGF5czwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icGVyY2VudC10aXRsZSI+MTIlPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVzYy1wbGFuLWRlc2MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5NaW4gRGVwb3NpdDogPHNwYW4gY2xhc3M9ImRlc2Mtc3BhbiI+JDE1MDAwPC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+TWF4IERlcG9zaXQ6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPiQwLjAwPC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+UHJvZml0OiA8c3BhbiBjbGFzcz0iZGVzYy1zcGFuIj4xMiU8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZGVzYy1wIj5QcmluY2lwYWw6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPkluY2x1ZGVkPC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MtcCI+RWFybmluZ3M6IDxzcGFuIGNsYXNzPSJkZXNjLXNwYW4iPkhvdXJseTwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPSJkZXNjLWNvbC04IiBpZD0icGxhbi00LWRlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MyLXAiPiA8aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvbmV4dC5zdmciIGFsdD0icGxhbl9pbWc2IiBjbGFzcz0iZGVzYzItcG9pbnQiPiBFeHBlcmllbmNlIGZpbmFuY2lhbCBpbnRlbGxpZ2VuY2Ugd2l0aCBTdXBlciBaIExpbWl0ZWQncyBRdWFudHVtIFlpZWxkIFBsYW4uIEhhcm5lc3Npbmcgc3RhdGUtb2YtdGhlLWFydCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcGxhbiBzdHJhdGVnaWNhbGx5IGludmVzdHMgaW4gc3RhYmxlIGFzc2V0cywgaW5jbHVkaW5nIGVzdGFibGlzaGVkIGNyeXB0b2N1cnJlbmNpZXMgbGlrZSBCaXRjb2luIGFuZCBmb3J3YXJkLWxvb2tpbmcgdGVjaCBzdG9ja3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MyLXAiPiA8aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvbmV4dC5zdmciIGFsdD0icGxhbl9pbWc2IiBjbGFzcz0iZGVzYzItcG9pbnQiPiBFeHBlcmllbmNlIGZpbmFuY2lhbCBpbnRlbGxpZ2VuY2Ugd2l0aCBTdXBlciBaIExpbWl0ZWQncyBRdWFudHVtIFlpZWxkIFBsYW4uIEhhcm5lc3Npbmcgc3RhdGUtb2YtdGhlLWFydCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcGxhbiBzdHJhdGVnaWNhbGx5IGludmVzdHMgaW4gc3RhYmxlIGFzc2V0cywgaW5jbHVkaW5nIGVzdGFibGlzaGVkIGNyeXB0b2N1cnJlbmNpZXMgbGlrZSBCaXRjb2luIGFuZCBmb3J3YXJkLWxvb2tpbmcgdGVjaCBzdG9ja3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImRlc2MyLXAiPiA8aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvbmV4dC5zdmciIGFsdD0icGxhbl9pbWc2IiBjbGFzcz0iZGVzYzItcG9pbnQiPiBFeHBlcmllbmNlIGZpbmFuY2lhbCBpbnRlbGxpZ2VuY2Ugd2l0aCBTdXBlciBaIExpbWl0ZWQncyBRdWFudHVtIFlpZWxkIFBsYW4uIEhhcm5lc3Npbmcgc3RhdGUtb2YtdGhlLWFydCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcGxhbiBzdHJhdGVnaWNhbGx5IGludmVzdHMgaW4gc3RhYmxlIGFzc2V0cywgaW5jbHVkaW5nIGVzdGFibGlzaGVkIGNyeXB0b2N1cnJlbmNpZXMgbGlrZSBCaXRjb2luIGFuZCBmb3J3YXJkLWxvb2tpbmcgdGVjaCBzdG9ja3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGVQcm9maXQoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFtb3VudCA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImludl9hbW91bnQiKS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBsYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FsY19wbGFuIikudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFzc2lnblBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhc3NpZ25fcGVyIik7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRvdGFsUmV0dXJuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvdGFsX3JldHVybiIpOwogICAgICAgICAgICAgICAgICAgIHZhciBwcm9maXRQZXJjZW50ID0gMDsKICAgICAgICAgICAgICAgICAgICB2YXIgbWluQW1vdW50ID0gMDsKICAgICAgICAgICAgICAgICAgICB2YXIgbWF4QW1vdW50ID0gMDsKICAgICAgICAgICAgICAgICAgICB2YXIgdGVybSA9IDE7IC8vIERlZmF1bHQgdGVybSBpcyAxIGRheQogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAocGxhbiA9PT0gIjEiKSB7CiAgICAgICAgICAgICAgICAgICAgICBwcm9maXRQZXJjZW50ID0gNDsKICAgICAgICAgICAgICAgICAgICAgIG1pbkFtb3VudCA9IDUwOwogICAgICAgICAgICAgICAgICAgICAgbWF4QW1vdW50ID0gMzk5OTsKICAgICAgICAgICAgICAgICAgICAgIHRlcm0gPSAxOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGxhbiA9PT0gIjIiKSB7CiAgICAgICAgICAgICAgICAgICAgICBwcm9maXRQZXJjZW50ID0gNTsKICAgICAgICAgICAgICAgICAgICAgIG1pbkFtb3VudCA9IDQwMDA7CiAgICAgICAgICAgICAgICAgICAgICBtYXhBbW91bnQgPSA5OTk5OwogICAgICAgICAgICAgICAgICAgICAgdGVybSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwbGFuID09PSAiMyIpIHsKICAgICAgICAgICAgICAgICAgICAgIHByb2ZpdFBlcmNlbnQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgbWluQW1vdW50ID0gMTAwMDA7CiAgICAgICAgICAgICAgICAgICAgICBtYXhBbW91bnQgPSAxNDk5OTsKICAgICAgICAgICAgICAgICAgICAgIHRlcm0gPSAxOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGxhbiA9PT0gIjQiKSB7CiAgICAgICAgICAgICAgICAgICAgICBwcm9maXRQZXJjZW50ID0gMTI7CiAgICAgICAgICAgICAgICAgICAgICBtaW5BbW91bnQgPSAxNTAwMDsKICAgICAgICAgICAgICAgICAgICAgIG1heEFtb3VudCA9IDIwMDAwMDAwOwogICAgICAgICAgICAgICAgICAgICAgdGVybSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAoYW1vdW50IDwgbWluQW1vdW50IHx8IGFtb3VudCA+IG1heEFtb3VudCkgewogICAgICAgICAgICAgICAgICAgICAgYXNzaWduUGVyLnZhbHVlID0gIkVycm9yIjsKICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUmV0dXJuLnZhbHVlID0gIkVycm9yIjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgdmFyIHRvdGFsUHJvZml0ID0gKChwcm9maXRQZXJjZW50ICogdGVybSAqIGFtb3VudCAvIDEwMCkgKyBhbW91bnQgLSBhbW91bnQpIC8gYW1vdW50ICogMTAwOwogICAgICAgICAgICAgICAgICAgICAgYXNzaWduUGVyLnZhbHVlID0gdG90YWxQcm9maXQudG9GaXhlZCgyKSArICIlIjsKICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUmV0dXJuLnZhbHVlID0gYW1vdW50ICogdG90YWxQcm9maXQgLyAxMDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIDwvc2NyaXB0PgogICAgICAgICAgICAgICA8IS0tIHByaWNlIHNlY3Rpb24gZW5kIGhhcmUgLS0+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGMtYmciIHN0eWxlPSJtYXJnaW4tdG9wOiA1MHB4OyI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbC1iZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1sZy0xMiBjb2wtbWQtMTIgY29sLXNtLTEyIGNvbC14cy0xMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktbGF0ZXN0Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGJnIiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iY2FsYy11bCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsMSIgc3R5bGU9ImFsaWduLWl0ZW1zOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBpZD0iZmlfMzkzNjgwMiIgc3R5bGU9IndpZHRoOiAzNnB4O2hlaWdodDogMzZweDtmaWxsOiAjMTI2MmZmOyBtYXJnaW4tcmlnaHQ6IDEwcHg7IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIuMzMzIDUxMi4zMzMiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgNTEyLjMzMyA1MTIuMzMzIiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iWE1MSURfMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iWE1MSURfMTQxMF8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iWE1MSURfMjQ4XyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJYTUxJRF8yNjlfIiBkPSJtNDYyLjMzMy4xNjdoLTI5NmMtMjcuNTcgMC01MCAyMi40My01MCA1MHYxNzYuNjc4Yy02Ni4yMSAxMi45MzctMTE2LjMzMyA3MS4zODEtMTE2LjMzMyAxNDEuMzIyIDAgNzkuNDAyIDY0LjU5OCAxNDQgMTQ0IDE0NGgzMTguMzMzYzI3LjU3IDAgNTAtMjIuNDMgNTAtNTB2LTQxMmMwLTI3LjU3MS0yMi40My01MC01MC01MHptLTQ0Mi4zMzMgMzY4YzAtNjguMzc0IDU1LjYyNi0xMjQgMTI0LTEyNHMxMjQgNTUuNjI2IDEyNCAxMjQtNTUuNjI2IDEyNC0xMjQgMTI0LTEyNC01NS42MjYtMTI0LTEyNHptMTY0LjMzMy0xNDZ2LTI0YzAtNS41MTQgNC40ODYtMTAgMTAtMTBoMjRjNS41MTQgMCAxMCA0LjQ4NiAxMCAxMHYyNGMwIDUuNTE0LTQuNDg2IDEwLTEwIDEwaC0yNGMtNS41MTQgMC0xMC00LjQ4Ni0xMC0xMHptMzA4IDI0MGMwIDE2LjU0Mi0xMy40NTggMzAtMzAgMzBoLTI0NS4yMDJjMjMuNTA0LTEzLjkxNSA0Mi43MzUtMzQuMzEyIDU1LjIwMi01OC43MjF2NC43MjFjMCAxNi41NDIgMTMuNDU4IDMwIDMwIDMwaDI0YzE2LjU0MiAwIDMwLTEzLjQ1OCAzMC0zMHYtMjRjMC0xNi41NDItMTMuNDU4LTMwLTMwLTMwaC0yNGMtNS43OTUgMC0xMS4yMDggMS42NTYtMTUuODAxIDQuNTE0Ljk2LTYuNzAzIDEuNDY4LTEzLjU1IDEuNDY4LTIwLjUxNCAwLTQuMDIxLS4xNzQtOC4wMDEtLjQ5OS0xMS45MzkgNC4zNzggMi41MDEgOS40MzkgMy45MzkgMTQuODMyIDMuOTM5aDI0YzE2LjU0MiAwIDMwLTEzLjQ1OCAzMC0zMHYtMjRjMC0xNi41NDItMTMuNDU4LTMwLTMwLTMwaC0yNGMtMTUuNTM2IDAtMjguMzUgMTEuODcyLTI5Ljg1MSAyNy4wMi0xMC42MTctMjAuOTA2LTI2LjE4My0zOC44OTMtNDUuMTUzLTUyLjQgMTIuMTYtMy44MzEgMjEuMDA0LTE1LjIxMSAyMS4wMDQtMjguNjJ2LTI0YzAtMTYuNTQyLTEzLjQ1OC0zMC0zMC0zMGgtMjRjLTE2LjU0MiAwLTMwIDEzLjQ1OC0zMCAzMHYyNGMwIDEuMTc1LjA3NSAyLjMzMS4yMDcgMy40NzEtNi43MTEtLjk2My0xMy41NjctMS40NzEtMjAuNTQtMS40NzEtMi41NzIgMC01LjEyOC4wNzEtNy42NjcuMjA1di0xNzQuMjA1YzAtMTYuNTQyIDEzLjQ1OC0zMCAzMC0zMGgyOTZjMTYuNTQyIDAgMzAgMTMuNDU4IDMwIDMwem0tMjAwLTI0di0yNGMwLTUuNTE0IDQuNDg2LTEwIDEwLTEwaDI0YzUuNTE0IDAgMTAgNC40ODYgMTAgMTB2MjRjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMGgtMjRjLTUuNTE0IDAtMTAtNC40ODYtMTAtMTB6bTAtMTA4di0yNGMwLTUuNTE0IDQuNDg2LTEwIDEwLTEwaDI0YzUuNTE0IDAgMTAgNC40ODYgMTAgMTB2MjRjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMGgtMjRjLTUuNTE0IDAtMTAtNC40ODYtMTAtMTB6Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJYTUxJRF8xMzgzXyIgZD0ibTQ1NC4zMzMgNDQuMTY3aC05NWMtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3OCAxMCAxMCAxMGg4NXY2MGgtMjYwdi02MGg4NWM1LjUyMiAwIDEwLTQuNDc3IDEwLTEwcy00LjQ3OC0xMC0xMC0xMGgtOTVjLTUuNTIyIDAtMTAgNC40NzctMTAgMTB2ODBjMCA1LjUyMyA0LjQ3OCAxMCAxMCAxMGgyODBjNS41MjIgMCAxMC00LjQ3NyAxMC0xMHYtODBjMC01LjUyMy00LjQ3OC0xMC0xMC0xMHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlhNTElEXzE1MzZfIiBkPSJtMzI2LjMzMyAxNjguMTY3aC0yNGMtMTYuNTQyIDAtMzAgMTMuNDU4LTMwIDMwdjI0YzAgMTYuNTQyIDEzLjQ1OCAzMCAzMCAzMGgyNGMxNi41NDIgMCAzMC0xMy40NTggMzAtMzB2LTI0YzAtMTYuNTQyLTEzLjQ1OC0zMC0zMC0zMHptMTAgNTRjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMGgtMjRjLTUuNTE0IDAtMTAtNC40ODYtMTAtMTB2LTI0YzAtNS41MTQgNC40ODYtMTAgMTAtMTBoMjRjNS41MTQgMCAxMCA0LjQ4NiAxMCAxMHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlhNTElEXzE1NThfIiBkPSJtNDM0LjMzMyAxNjguMTY3aC0yNGMtMTYuNTQyIDAtMzAgMTMuNDU4LTMwIDMwdjI0YzAgMTYuNTQyIDEzLjQ1OCAzMCAzMCAzMGgyNGMxNi41NDIgMCAzMC0xMy40NTggMzAtMzB2LTI0YzAtMTYuNTQyLTEzLjQ1OC0zMC0zMC0zMHptMTAgNTRjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMGgtMjRjLTUuNTE0IDAtMTAtNC40ODYtMTAtMTB2LTI0YzAtNS41MTQgNC40ODYtMTAgMTAtMTBoMjRjNS41MTQgMCAxMCA0LjQ4NiAxMCAxMHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlhNTElEXzE2ODVfIiBkPSJtNDM0LjMzMyAyNzYuMTY3aC0yNGMtMTYuNTQyIDAtMzAgMTMuNDU4LTMwIDMwdjEzMmMwIDE2LjU0MiAxMy40NTggMzAgMzAgMzBoMjRjMTYuNTQyIDAgMzAtMTMuNDU4IDMwLTMwdi0xMzJjMC0xNi41NDItMTMuNDU4LTMwLTMwLTMwem0xMCAxNjJjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMGgtMjRjLTUuNTE0IDAtMTAtNC40ODYtMTAtMTB2LTEzMmMwLTUuNTE0IDQuNDg2LTEwIDEwLTEwaDI0YzUuNTE0IDAgMTAgNC40ODYgMTAgMTB6Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJYTUxJRF8xNjg2XyIgZD0ibTMxNC4zMzMgNjQuMTY3YzIuNjMgMCA1LjIxLTEuMDcgNy4wNjktMi45MyAxLjg2LTEuODYgMi45MzEtNC40NCAyLjkzMS03LjA3cy0xLjA3LTUuMjEtMi45MzEtNy4wN2MtMS44NTktMS44Ni00LjQzOS0yLjkzLTcuMDY5LTIuOTNzLTUuMjEgMS4wNy03LjA3IDIuOTMtMi45MyA0LjQ0LTIuOTMgNy4wNyAxLjA2OSA1LjIxIDIuOTMgNy4wNyA0LjQ0IDIuOTMgNy4wNyAyLjkzeiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iWE1MSURfMTY4N18iIGQ9Im0xNzYuNjA1IDMwMi4zNTRjLTQuOTY2LTIuNDExLTEwLjk1MS0uMzQyLTEzLjM2MyA0LjYyN2wtNTUuMDI0IDExMy4zMDVjLTIuNDEzIDQuOTY4LS4zNDEgMTAuOTUyIDQuNjI3IDEzLjM2NCAxLjQwNy42ODMgMi44OTUgMS4wMDcgNC4zNjEgMS4wMDcgMy43MDkgMCA3LjI3My0yLjA3MyA5LjAwMi01LjYzNGw1NS4wMjQtMTEzLjMwNWMyLjQxNC00Ljk2OC4zNDItMTAuOTUxLTQuNjI3LTEzLjM2NHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlhNTElEXzE2OTBfIiBkPSJtMTE4LjcyNCAyOTYuNzM4Yy0xMi40NzgtMTIuNDc4LTMyLjc4My0xMi40NzktNDUuMjYzIDAtMTIuNDc5IDEyLjQ3OS0xMi40NzkgMzIuNzg0IDAgNDUuMjYzIDYuMjQgNi4yMzkgMTQuNDM2IDkuMzU4IDIyLjYzMSA5LjM1OCA4LjE5NiAwIDE2LjM5My0zLjEyIDIyLjYzMi05LjM1OCAxMi40NzgtMTIuNDc5IDEyLjQ3OC0zMi43ODQgMC00NS4yNjN6bS0xNC4xNDMgMzEuMTIxYy00LjY4MSA0LjY4LTEyLjI5NyA0LjY4Mi0xNi45NzggMC00LjY4Mi00LjY4MS00LjY4Mi0xMi4yOTcgMC0xNi45NzggMi4zNC0yLjM0MSA1LjQxNC0zLjUxMSA4LjQ4OS0zLjUxMSAzLjA3NCAwIDYuMTQ4IDEuMTcgOC40ODggMy41MTEgNC42ODMgNC42ODEgNC42ODMgMTIuMjk3LjAwMSAxNi45Nzh6Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJYTUxJRF8xNjkzXyIgZD0ibTE3MS4wNTUgMzk0LjMzMmMtMTIuNDc5IDEyLjQ3OS0xMi40NzkgMzIuNzg0IDAgNDUuMjYzIDYuMjM5IDYuMjM5IDE0LjQzNiA5LjM1OSAyMi42MzEgOS4zNTkgOC4xOTYgMCAxNi4zOTMtMy4xMiAyMi42MzItOS4zNTkgMTIuNDc5LTEyLjQ3OSAxMi40NzktMzIuNzg0IDAtNDUuMjYzLTEyLjQ4MS0xMi40NzgtMzIuNzg1LTEyLjQ3Ny00NS4yNjMgMHptMzEuMTIgMzEuMTJjLTQuNjgxIDQuNjgzLTEyLjI5OSA0LjY4MS0xNi45NzggMC00LjY4Mi00LjY4MS00LjY4Mi0xMi4yOTcgMC0xNi45NzggMi4zNC0yLjM0IDUuNDE0LTMuNTExIDguNDg5LTMuNTExIDMuMDc0IDAgNi4xNDggMS4xNyA4LjQ4OCAzLjUxMSA0LjY4MiA0LjY4MSA0LjY4MiAxMi4yOTcuMDAxIDE2Ljk3OHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbC10aXRsZSIgc3R5bGU9ImNvbG9yOiB3aGl0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsLXRpdGxlIiBzdHlsZT0iY29sb3I6ICMxMjYyZmYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9maXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWwyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsLWludmVzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbGFuLWxlZnQiPlBsYW48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtaW52ZXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iY2FsY19wbGFuIiBjbGFzcz0ib3B0cyIgb25jaGFuZ2U9ImNhbGN1bGF0ZVByb2ZpdCgpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiIGNsYXNzPSJvcHRzIj40JSBEQUlMWSBGT1IgNyBEQVlTPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiIGNsYXNzPSJvcHRzIj41JSBEQUlMWSBGT1IgNyBEQVlTPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjMiIGNsYXNzPSJvcHRzIj43JSBEQUlMWSBGT1IgNyBEQVlTPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQiIGNsYXNzPSJvcHRzIj4xMiUgREFJTFkgRk9SIDcgREFZUzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgPG9wdGlvbiB2YWx1ZT0iNCIgY2xhc3M9Im9wdHMiPjI1JSBXRUVLTFk8L29wdGlvbj4gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbC1pbnZlc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGxhbi1sZWZ0Ij5BbW91bnQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtaW52ZXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpbnZfYW1vdW50IiB2YWx1ZT0iNTAiIG5hbWU9ImxpbWl0ZWR0ZXh0ZmllbGQiIHR5cGU9InRleHQiIG9uaW5wdXQ9ImNhbGN1bGF0ZVByb2ZpdCgpOyIgbWF4bGVuZ3RoPSI4IiBjbGFzcz0iaW5wdHMxIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbC1pbnZlc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGxhbi1sZWZ0Ij5ST0k8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtaW52ZXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHZhbHVlPSIiIGlkPSJhc3NpZ25fcGVyIiBkaXNhYmxlZD0iZGlzYWJsZWQiIHR5cGU9InRleHQiIGNsYXNzPSJpbnB0czEiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWwyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsLWludmVzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbGFuLWxlZnQiPkRhaWx5IFByb2ZpdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbC1pbnZlc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdmFsdWU9IiIgaWQ9InRvdGFsX3JldHVybiIgZGlzYWJsZWQ9ImRpc2FibGVkIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iaW5wdHMxIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImN1c3RvbS1idG4gbXQtNCIgb25jbGljaz0iY2FsY3VsYXRlUHJvZml0KCkiIHN0eWxlPSJkaXNwbGF5OiBibG9jazttYXJnaW4tcmlnaHQ6IGF1dG87bWFyZ2luLWxlZnQ6IGF1dG87Ym9yZGVyOiBub25lO2NvbG9yOiB3aGl0ZTsiPkNhbGN1bGF0ZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWNhbGJnLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tY29sLWxnLTEyLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgIHZhciBwbGFuQm94ZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGxhbi1ib3gyJyk7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICBwbGFuQm94ZXMuZm9yRWFjaChmdW5jdGlvbiAocGxhbkJveCkgewogICAgICAgICAgICAgICAgICBwbGFuQm94LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICB2YXIgcGxhbklkID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtcGxhbicpOwogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8g0KHQutGA0YvQstCw0LXQvCDQstGB0LUg0LHQu9C+0LrQuCDRgSDQv9C+0LTRgNC+0LHQvdC+0Lkg0LjQvdGE0L7RgNC80LDRhtC40LXQuQogICAgICAgICAgICAgICAgICAgICB2YXIgZGV0YWlsc0Jsb2NrcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZXNjLWJveC1yb3cnKTsKICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc0Jsb2Nrcy5mb3JFYWNoKGZ1bmN0aW9uIChibG9jaykgewogICAgICAgICAgICAgICAgICAgICAgICBibG9jay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vINCe0YLQvtCx0YDQsNC20LDQtdC8INCx0LvQvtC6INGBINC/0L7QtNGA0L7QsdC90L7QuSDQuNC90YTQvtGA0LzQsNGG0LjQtdC5LCDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40Lkg0LLRi9Cx0YDQsNC90L3QvtC80YMg0L/Qu9Cw0L3RgwogICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWREZXRhaWxzQmxvY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwbGFuSWQgKyAnLWRldGFpbHMnKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGV0YWlsc0Jsb2NrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGV0YWlsc0Jsb2NrLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vINCi0LDQutC20LUg0LLRiyDQvNC+0LbQtdGC0LUg0YHQutGA0YvRgtGML9C/0L7QutCw0LfQsNGC0Ywg0LHQu9C+0Log0YEg0L7Qv9C40YHQsNC90LjQtdC8LCDQtdGB0LvQuCDRjdGC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4KICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkRGVzY3JpcHRpb25CbG9jayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBsYW5JZCArICctZGVzY3JpcHRpb24nKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGVzY3JpcHRpb25CbG9jaykgewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERlc2NyaXB0aW9uQmxvY2suc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTc4NGJkNzIgZS1mbGV4IGUtY29uLWJveGVkIGUtY29uIGUtcGFyZW50IiBkYXRhLWlkPSI3ODRiZDcyIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7YmFja2dyb3VuZF9iYWNrZ3JvdW5kJnF1b3Q7OiZxdW90O2NsYXNzaWMmcXVvdDssJnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iIGRhdGEtY29yZS12MzE2LXBsdXM9InRydWUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTMxMjI5NzMgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjMxMjI5NzMiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij48c3BhbiBzdHlsZT0iY29sb3I6I0Y5RjlGOSI+R2V0IFN0YXJ0ZWQgaW4gPC9zcGFuPjMgU2ltcGxlIFN0ZXBzPC9oMj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC05MWI2NmZiIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvciIgZGF0YS1pZD0iOTFiNjZmYiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0idGV4dC1lZGl0b3IuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgPHA+UmVnaXN0ZXIsIGNob29zZSB5b3VyIHBsYW4sIGFuZCBtYWtlIHlvdXIgbWFyayBvbiB0aGUgZnV0dXJlIHRocm91Z2ggc3RyYXRlZ2ljIGludmVzdG1lbnRzIHdpdGggY2lyY3VpdHRyYWRldGVjaC48L3A+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYjdkMmE4MiBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9ImI3ZDJhODIiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iMTM4IiBoZWlnaHQ9IjMyIiBzcmM9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9kZXNpZ24ucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0xNzQiIGFsdD0iIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC04ZDQ0NTQ1IGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSI4ZDQ0NTQ1IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWQxYTBlY2UgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iZDFhMGVjZSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0xNmExMGJjIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iMTZhMTBiYyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPSJsYXp5IiBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxNTIzIiBoZWlnaHQ9IjE1NDAiIHNyYz0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL3N0ZXBzLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMjExIiBhbHQ9IiIgc3Jjc2V0PSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvc3RlcHMucG5nIDE1MjN3LCAvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvc3RlcHMtMjk3eDMwMC5wbmcgMjk3dywgL2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL3N0ZXBzLTEwMTN4MTAyNC5wbmcgMTAxM3csIGFzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL3N0ZXBzLTc2OHg3NzcucG5nIDc2OHcsIGFzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL3N0ZXBzLTE1MTl4MTUzNi5wbmcgMTUxOXciIHNpemVzPSIobWF4LXdpZHRoOiAxNTIzcHgpIDEwMHZ3LCAxNTIzcHgiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01ZmM4Y2MwIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjVmYzhjYzAiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtM2U5NmZjOCBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iM2U5NmZjOCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0xYzJlNTkwIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjFjMmU1OTAiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtODZkZjg0NyBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9Ijg2ZGY4NDciIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iODAiIGhlaWdodD0iODAiIHNyYz0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyLzEucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0yMTIiIGFsdD0iIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1iMDQzNGFlIGVsZW1lbnRvci13aWRnZXQtbW9iaWxlX193aWR0aC1pbmhlcml0IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iYjA0MzRhZSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPSJsYXp5IiBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxNiIgaGVpZ2h0PSI0NyIgc3JjPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtMS5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTIxMyIgYWx0PSIiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC04ODkwNTU1IGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9Ijg4OTA1NTUiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYTliMWI3NCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iYTliMWI3NCIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPlJlZ2lzdGVyIEFjY291bnQ8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTkwN2RmMGUgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIiBkYXRhLWlkPSI5MDdkZjBlIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJ0ZXh0LWVkaXRvci5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5SZWdpc3RyYXRpb24gaXMgeW91ciBnYXRld2F5IHRvIGEgd29ybGQgb2YgaW52ZXN0bWVudCBwb3NzaWJpbGl0aWVzLiBFbmpveSBhIHNlYW1sZXNzIG9uYm9hcmRpbmcgcHJvY2Vzcywgd2hlcmUgeW91ciBpbmZvcm1hdGlvbiBpcyBoYW5kbGVkIHdpdGggdGhlIHV0bW9zdCBzZWN1cml0eS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMzkzMTgwOSBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iMzkzMTgwOSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0zZDE4MjIzIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjNkMTgyMjMiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZGY1NmRkYiBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9ImRmNTZkZGIiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iODAiIGhlaWdodD0iODAiIHNyYz0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyLzIucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0yMTciIGFsdD0iIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1iZWMxMmFiIGVsZW1lbnRvci13aWRnZXQtbW9iaWxlX193aWR0aC1pbmhlcml0IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iYmVjMTJhYiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPSJsYXp5IiBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxNiIgaGVpZ2h0PSI0NyIgc3JjPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtMS5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTIxMyIgYWx0PSIiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1kYjFlODE3IGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9ImRiMWU4MTciIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMDI2ZjJlYyBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iMDI2ZjJlYyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPkNob29zZSBQbGFuPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01N2Q1OTcxIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvciIgZGF0YS1pZD0iNTdkNTk3MSIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0idGV4dC1lZGl0b3IuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+V2hldGhlciB5b3UncmUgc2Vla2luZyBzdGFibGUgZ3Jvd3RoLCBoaWdoIHJldHVybnMsIG9yIGEgYmFsYW5jZWQgYXBwcm9hY2gsIGNpcmN1aXR0cmFkZXRlY2ggb2ZmZXJzIGEgZGl2ZXJzZSByYW5nZSBvZiBwbGFucy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtODkzZDRmOCBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iODkzZDRmOCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1lMmZkNGVlIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9ImUyZmQ0ZWUiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZDYzMjg3NyBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9ImQ2MzI4NzciIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iODAiIGhlaWdodD0iODAiIHNyYz0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyLzMucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0yMTgiIGFsdD0iIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0yNjFiNGUyIGVsZW1lbnRvci13aWRnZXQtbW9iaWxlX193aWR0aC1pbmhlcml0IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iMjYxYjRlMiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPSJsYXp5IiBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxNiIgaGVpZ2h0PSI0NyIgc3JjPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtMS5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTIxMyIgYWx0PSIiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1jMWYxYTY2IGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9ImMxZjFhNjYiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNDFjNTg1NCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iNDFjNTg1NCIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPk1ha2UgSW52ZXN0bWVudDwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMDUyNTYzMSBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtdGV4dC1lZGl0b3IiIGRhdGEtaWQ9IjA1MjU2MzEiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9InRleHQtZWRpdG9yLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkNob29zZSB0aGUgc3RhcnR1cHMgeW91IGJlbGlldmUgaW4sIHNwZWNpZnkgeW91ciBpbnZlc3RtZW50IGFtb3VudCwgYW5kIHdpdG5lc3MgdGhlIHRyYW5zZm9ybWF0aW9uIG9mIHlvdXIgZmluYW5jaWFsIGRyZWFtcyBpbnRvIHJlYWxpdHkuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNTM4NmVjZCBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1wYXJlbnQiIGRhdGEtaWQ9IjUzODZlY2QiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGlkPSJ3YWxsZXQiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90OywmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSIgZGF0YS1jb3JlLXYzMTYtcGx1cz0idHJ1ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMTcwNGQwNCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iMTcwNGQwNCIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPlN0YXRpc3RpY3M8L2gyPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWYwMjM5ZGYgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIiBkYXRhLWlkPSJmMDIzOWRmIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJ0ZXh0LWVkaXRvci5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICA8cD5XZSBhcmUgbm90IHNoeSBhYm91dCBzaG93aW5nIHRoZSByZWFsIHN0YXRzIG9mIHRoZSBjb21wYW55LjwvcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01NTZkOTBkIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iNTU2ZDkwZCIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxMzgiIGhlaWdodD0iMzIiIHNyYz0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2Rlc2lnbi5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTE3NCIgYWx0PSIiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTE2ZjQ4YTMgZS1mbGV4IGUtY29uLWJveGVkIGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjE2ZjQ4YTMiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMWQ3Y2YyOCBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSIxZDdjZjI4IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWU4ZGNlNzggZWxlbWVudG9yLXdpZGdldC1tb2JpbGVfX3dpZHRoLWluaGVyaXQgZWxlbWVudG9yLXBvc2l0aW9uLXRvcCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IiBkYXRhLWlkPSJlOGRjZTc4IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS1ib3guZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0eWxlPi8qISBlbGVtZW50b3IgLSB2My4xOS4wIC0gMDUtMDItMjAyNCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtY29udGVudHt3aWR0aDoxMDAlfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXBvc2l0aW9uLWxlZnQgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciwuZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXBvc2l0aW9uLXJpZ2h0IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXJ7ZGlzcGxheTpmbGV4fS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItcG9zaXRpb24tcmlnaHQgLmVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlcnt0ZXh0LWFsaWduOnJpZ2h0O2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItcG9zaXRpb24tbGVmdCAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVye3RleHQtYWxpZ246bGVmdDtmbGV4LWRpcmVjdGlvbjpyb3d9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94LmVsZW1lbnRvci1wb3NpdGlvbi10b3AgLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1ne21hcmdpbjphdXRvfS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveC5lbGVtZW50b3ItdmVydGljYWwtYWxpZ24tdG9wIC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXJ7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXZlcnRpY2FsLWFsaWduLW1pZGRsZSAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVye2FsaWduLWl0ZW1zOmNlbnRlcn0uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3guZWxlbWVudG9yLXZlcnRpY2FsLWFsaWduLWJvdHRvbSAuZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVye2FsaWduLWl0ZW1zOmZsZXgtZW5kfX1AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IC5lbGVtZW50b3ItaW1hZ2UtYm94LWltZ3ttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbToxNXB4fX0uZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3ggLmVsZW1lbnRvci1pbWFnZS1ib3gtaW1ne2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5lbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCAuZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSBhe2NvbG9yOmluaGVyaXR9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IC5lbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IC5lbGVtZW50b3ItaW1hZ2UtYm94LWRlc2NyaXB0aW9ue21hcmdpbjowfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0eWxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIGJveC1zdGF0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1pbWciPjxpbWcgc3JjPSJrOTkvYXNzZXRzL2ltYWdlcy91c2Vycy5zdmciIHN0eWxlPSJ3aWR0aDogNTBweDsgYm9yZGVyLXJhZGl1czogMTJweDsiPjwvZmlndXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUiIHN0eWxlPSJtYXJnaW46IDBweDsiPjI1MCs8L2g1PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiI+VE9UQUwgTUVNQkVSUzwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01ODYxMDQ3IGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjU4NjEwNDciIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZDExYjFmYyBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3ItcG9zaXRpb24tdG9wIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3giIGRhdGEtaWQ9ImQxMWIxZmMiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLWJveC5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIgYm94LXN0YXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlndXJlIGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWltZyI+PGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL2ludmVzdC5zdmciIHN0eWxlPSJ3aWR0aDogNTBweDsgYm9yZGVyLXJhZGl1czogMTJweDsiPjwvZmlndXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUiIHN0eWxlPSJtYXJnaW46IDBweDsiPiQ1ME08L2g1PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiI+VE9UQUwgSU5WRVNUTUVOVFM8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMGUzOTI2MyBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSIwZTM5MjYzIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWJlNDYyMGUgZWxlbWVudG9yLXdpZGdldC1tb2JpbGVfX3dpZHRoLWluaGVyaXQgZWxlbWVudG9yLXBvc2l0aW9uLXRvcCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IiBkYXRhLWlkPSJiZTQ2MjBlIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS1ib3guZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIGJveC1zdGF0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1pbWciPjxpbWcgc3JjPSJrOTkvYXNzZXRzL2ltYWdlcy9wYWlkLnN2ZyIgc3R5bGU9IndpZHRoOiA1MHB4OyBib3JkZXItcmFkaXVzOiAxMnB4OyI+PC9maWd1cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSIgc3R5bGU9Im1hcmdpbjogMHB4OyI+JDE1ME08L2g1PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiI+VE9UQUwgUFJPRklUUyBQQUlEPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTMzNTgxMTggZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iMzM1ODExOCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1jYTNiYTc2IGVsZW1lbnRvci13aWRnZXQtbW9iaWxlX193aWR0aC1pbmhlcml0IGVsZW1lbnRvci1wb3NpdGlvbi10b3AgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlLWJveCIgZGF0YS1pZD0iY2EzYmE3NiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UtYm94LmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtd3JhcHBlciBib3gtc3RhdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtaW1nIj48aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvZGF5cy5zdmciIHN0eWxlPSJ3aWR0aDogNTBweDsgYm9yZGVyLXJhZGl1czogMTJweDsiPjwvZmlndXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUiIHN0eWxlPSJtYXJnaW46IDBweDsiPjIwMTk8L2g1PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiI+SU5DT1JQT1JBVEVEIE9OPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1hOTI3MWNhIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iYTkyNzFjYSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgaWQ9InByb2R1Y3QiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90OywmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSIgZGF0YS1jb3JlLXYzMTYtcGx1cz0idHJ1ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZDkyM2E1YiBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iZDkyM2E1YiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPjxzcGFuIHN0eWxlPSJjb2xvcjojRjlGOUY5Ij5UaGUgUG93ZXIgb2YgPC9zcGFuPiA8c3BhbiBzdHlsZT0iY29sb3I6I0Y5RjlGOSI+U3RhcnR1cHM8L3NwYW4+PC9oMj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC04OGQ4YjQyIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iODhkOGI0MiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxMzgiIGhlaWdodD0iMzIiIHNyYz0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2Rlc2lnbi5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTE3NCIgYWx0PSIiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTEzMzQ4ZmYgZS1mbGV4IGUtY29uLWJveGVkIGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjEzMzQ4ZmYiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtOTIwOTYzMyBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSI5MjA5NjMzIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWQzYjY3OGYgZWxlbWVudG9yLXBvc2l0aW9uLXRvcCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IiBkYXRhLWlkPSJkM2I2NzhmIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS1ib3guZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1pbWciPjxpbWcgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjIyMCIgc3JjPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWNfbWFuYWdlLXlvdXItcG9ydGZvbGlvLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMjQ1IiBhbHQ9IiIgc3Jjc2V0PSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWNfbWFuYWdlLXlvdXItcG9ydGZvbGlvLnBuZyAyMjB3LCAvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWNfbWFuYWdlLXlvdXItcG9ydGZvbGlvLTE1MHgxNTAucG5nIDE1MHciIHNpemVzPSIobWF4LXdpZHRoOiAyMjBweCkgMTAwdncsIDIyMHB4IiAvPjwvZmlndXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUiPlRoZSBDYXRhbHlzdHMgb2YgSW5ub3ZhdGlvbjwvaDU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWRlc2NyaXB0aW9uIj5TdGFydHVwcyBhcmUgdGhlIGRyaXZpbmcgZm9yY2UgYmVoaW5kIGlubm92YXRpb24sIGNvbnN0YW50bHkgY2hhbGxlbmdpbmcgdGhlIHN0YXR1cyBxdW8gYW5kIHB1c2hpbmcgdGhlIGJvdW5kYXJpZXMgb2Ygd2hhdCdzIHBvc3NpYmxlLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC02MmJkMWFlIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjYyYmQxYWUiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNzc0OGExZiBlbGVtZW50b3ItcG9zaXRpb24tdG9wIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZS1ib3giIGRhdGEtaWQ9Ijc3NDhhMWYiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLWJveC5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlndXJlIGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWltZyI+PGltZyBsb2FkaW5nPSJsYXp5IiBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIyMjAiIGhlaWdodD0iMjIwIiBzcmM9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1jYXBpdGFsLW1hcmtldC5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTI0OSIgYWx0PSIiIHNyY3NldD0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2ljLWNhcGl0YWwtbWFya2V0LnBuZyAyMjB3LCAvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtY2FwaXRhbC1tYXJrZXQtMTUweDE1MC5wbmcgMTUwdyIgc2l6ZXM9IihtYXgtd2lkdGg6IDIyMHB4KSAxMDB2dywgMjIwcHgiIC8+PC9maWd1cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC10aXRsZSI+VGhlIEVudHJlcHJlbmV1cmlhbCBTcGlyaXQgVW5sZWFzaGVkPC9oNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtZGVzY3JpcHRpb24iPkRpc2NvdmVyIGhvdyB0aGVzZSB2aXNpb25hcnkgbGVhZGVycyBuYXZpZ2F0ZSBjaGFsbGVuZ2VzLCB0dXJuIG9ic3RhY2xlcyBpbnRvIG9wcG9ydHVuaXRpZXMsIGFuZCB0cmFuc2Zvcm0gaWRlYXMgaW50byByZWFsaXR5LiA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtOTgxZDFjOSBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSI5ODFkMWM5IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTI3ODE5YTMgZWxlbWVudG9yLXBvc2l0aW9uLXRvcCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UtYm94IiBkYXRhLWlkPSIyNzgxOWEzIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS1ib3guZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZSBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1pbWciPjxpbWcgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjIyMCIgc3JjPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvaWMtbW9iaWxlLWFwcHMucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0yNTAiIGFsdD0iIiBzcmNzZXQ9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9pYy1tb2JpbGUtYXBwcy5wbmcgMjIwdywgL2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2ljLW1vYmlsZS1hcHBzLTE1MHgxNTAucG5nIDE1MHciIHNpemVzPSIobWF4LXdpZHRoOiAyMjBweCkgMTAwdncsIDIyMHB4IiAvPjwvZmlndXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItaW1hZ2UtYm94LWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9ImVsZW1lbnRvci1pbWFnZS1ib3gtdGl0bGUiPlNoYXBpbmcgdGhlIEZ1dHVyZSBMYW5kc2NhcGU8L2g1PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZWxlbWVudG9yLWltYWdlLWJveC1kZXNjcmlwdGlvbiI+Sm9pbiB1cyBpbiBlbnZpc2lvbmluZyB0aGUgZnV0dXJlIGFzIHdlIGV4cGxvcmUgc3RhcnR1cHMnIHBpdm90YWwgcm9sZSBpbiBzaGFwaW5nIHRoZSBidXNpbmVzcyBsYW5kc2NhcGUuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01NWZlMGNlIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iNTVmZTBjZSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgaWQ9ImZlYXR1cmVzIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7YmFja2dyb3VuZF9iYWNrZ3JvdW5kJnF1b3Q7OiZxdW90O2NsYXNzaWMmcXVvdDssJnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iIGRhdGEtY29yZS12MzE2LXBsdXM9InRydWUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTE2MzIyYTIgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWhlYWRpbmciIGRhdGEtaWQ9IjE2MzIyYTIiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImhlYWRpbmcuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJlbGVtZW50b3ItaGVhZGluZy10aXRsZSBlbGVtZW50b3Itc2l6ZS1kZWZhdWx0Ij48c3BhbiBzdHlsZT0iY29sb3I6I0Y5RjlGOSI+V2h5IDwvc3Bhbj5VczwvaDI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZmZmZjNiMyBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9ImZmZmYzYjMiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgZGVjb2Rpbmc9ImFzeW5jIiB3aWR0aD0iMTM4IiBoZWlnaHQ9IjMyIiBzcmM9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9kZXNpZ24ucG5nIiBjbGFzcz0iYXR0YWNobWVudC1mdWxsIHNpemUtZnVsbCB3cC1pbWFnZS0xNzQiIGFsdD0iIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0yZTI4MzJhIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSIyZTI4MzJhIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWU2YzU1NzUgZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iZTZjNTU3NSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01NTM5NzQ0IGVsZW1lbnRvci1pY29uLWxpc3QtLWxheW91dC10cmFkaXRpb25hbCBlbGVtZW50b3ItbGlzdC1pdGVtLWxpbmstZnVsbF93aWR0aCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaWNvbi1saXN0IiBkYXRhLWlkPSI1NTM5NzQ0IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpY29uLWxpc3QuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2Nzcy93aWRnZXQtaWNvbi1saXN0Lm1pbi5jc3MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtaXRlbXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItaWNvbi1saXN0LWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiB2aWV3Qm94PSIwIDAgMzAgMzAiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMzMwXzEyMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMi4xNzk2MSAyOS44NzA1QzIuMDk3NTEgMjkuNzk5MiAyLjA0MDIyIDI5LjcwMzcgMi4wMTYwNCAyOS41OTc3QzEuOTkxODcgMjkuNDkxNyAyLjAwMjA2IDI5LjM4MDcgMi4wNDUxNSAyOS4yODA5TDguMTYzMjEgMTUuMDAyTDIuMDQ1MTUgMC43MjMwNEMxLjg0MTM5IDAuMjk2ODk2IDIuMzY5OTMgLTAuMTkxMzA4IDIuNzc5NTIgMC4wNzY1ODM1TDI3LjYwMzUgMTQuNTU3MkMyNy45NDA3IDE0LjczODIgMjcuOTQ1OCAxNS4yNjU3IDI3LjYwMzUgMTUuNDQ2N0wyLjc3OTUyIDI5LjkyNzRDMi42ODY2IDI5Ljk4MzMgMi41NzgxOCAzMC4wMDggMi40NzAxOSAyOS45OTc4QzIuMzYyMjEgMjkuOTg3NSAyLjI2MDM1IDI5Ljk0MjkgMi4xNzk2MSAyOS44NzA1WiIgZmlsbD0iIzEyNjJGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzMzMF8xMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09Im1hdHJpeCgtNC4zNzExNGUtMDggMSAxIDQuMzcxMTRlLTA4IDAgMCkiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWljb24tbGlzdC10ZXh0Ij5Jbm5vdmF0aW9uIGF0IHRoZSBDb3JlOiBXZSBmb2N1cyBvbiBjdXR0aW5nLWVkZ2Ugc3RhcnR1cHMgdGhhdCByZWRlZmluZSBpbmR1c3RyaWVzLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlbGVtZW50b3ItaWNvbi1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWljb24tbGlzdC1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgdmlld0JveD0iMCAwIDMwIDMwIiBmaWxsPSJub25lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzMzMF8xMjApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIuMTc5NjEgMjkuODcwNUMyLjA5NzUxIDI5Ljc5OTIgMi4wNDAyMiAyOS43MDM3IDIuMDE2MDQgMjkuNTk3N0MxLjk5MTg3IDI5LjQ5MTcgMi4wMDIwNiAyOS4zODA3IDIuMDQ1MTUgMjkuMjgwOUw4LjE2MzIxIDE1LjAwMkwyLjA0NTE1IDAuNzIzMDRDMS44NDEzOSAwLjI5Njg5NiAyLjM2OTkzIC0wLjE5MTMwOCAyLjc3OTUyIDAuMDc2NTgzNUwyNy42MDM1IDE0LjU1NzJDMjcuOTQwNyAxNC43MzgyIDI3Ljk0NTggMTUuMjY1NyAyNy42MDM1IDE1LjQ0NjdMMi43Nzk1MiAyOS45Mjc0QzIuNjg2NiAyOS45ODMzIDIuNTc4MTggMzAuMDA4IDIuNDcwMTkgMjkuOTk3OEMyLjM2MjIxIDI5Ljk4NzUgMi4yNjAzNSAyOS45NDI5IDIuMTc5NjEgMjkuODcwNVoiIGZpbGw9IiMxMjYyRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwMF8zMzBfMTIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJtYXRyaXgoLTQuMzcxMTRlLTA4IDEgMSA0LjM3MTE0ZS0wOCAwIDApIj48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtdGV4dCI+RXhwZXJ0IEN1cmF0aW9uOiBPdXIgdGVhbSBtZXRpY3Vsb3VzbHkgc2VsZWN0cyBwcm9qZWN0cyB3aXRoIHRoZSBwb3RlbnRpYWwgdG8gYmVjb21lIGxlZ2VuZHMuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItaWNvbi1saXN0LWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiB2aWV3Qm94PSIwIDAgMzAgMzAiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMzMwXzEyMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMi4xNzk2MSAyOS44NzA1QzIuMDk3NTEgMjkuNzk5MiAyLjA0MDIyIDI5LjcwMzcgMi4wMTYwNCAyOS41OTc3QzEuOTkxODcgMjkuNDkxNyAyLjAwMjA2IDI5LjM4MDcgMi4wNDUxNSAyOS4yODA5TDguMTYzMjEgMTUuMDAyTDIuMDQ1MTUgMC43MjMwNEMxLjg0MTM5IDAuMjk2ODk2IDIuMzY5OTMgLTAuMTkxMzA4IDIuNzc5NTIgMC4wNzY1ODM1TDI3LjYwMzUgMTQuNTU3MkMyNy45NDA3IDE0LjczODIgMjcuOTQ1OCAxNS4yNjU3IDI3LjYwMzUgMTUuNDQ2N0wyLjc3OTUyIDI5LjkyNzRDMi42ODY2IDI5Ljk4MzMgMi41NzgxOCAzMC4wMDggMi40NzAxOSAyOS45OTc4QzIuMzYyMjEgMjkuOTg3NSAyLjI2MDM1IDI5Ljk0MjkgMi4xNzk2MSAyOS44NzA1WiIgZmlsbD0iIzEyNjJGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzMzMF8xMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09Im1hdHJpeCgtNC4zNzExNGUtMDggMSAxIDQuMzcxMTRlLTA4IDAgMCkiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWljb24tbGlzdC10ZXh0Ij5Zb3VyIFN1Y2Nlc3MsIE91ciBNaXNzaW9uOiBXZSBhcmUgZGVkaWNhdGVkIHRvIGVuc3VyaW5nIHlvdXIgaW52ZXN0bWVudHMgeWllbGQgbGVnZW5kYXJ5IHJldHVybnMuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItaWNvbi1saXN0LWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiB2aWV3Qm94PSIwIDAgMzAgMzAiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMzMwXzEyMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMi4xNzk2MSAyOS44NzA1QzIuMDk3NTEgMjkuNzk5MiAyLjA0MDIyIDI5LjcwMzcgMi4wMTYwNCAyOS41OTc3QzEuOTkxODcgMjkuNDkxNyAyLjAwMjA2IDI5LjM4MDcgMi4wNDUxNSAyOS4yODA5TDguMTYzMjEgMTUuMDAyTDIuMDQ1MTUgMC43MjMwNEMxLjg0MTM5IDAuMjk2ODk2IDIuMzY5OTMgLTAuMTkxMzA4IDIuNzc5NTIgMC4wNzY1ODM1TDI3LjYwMzUgMTQuNTU3MkMyNy45NDA3IDE0LjczODIgMjcuOTQ1OCAxNS4yNjU3IDI3LjYwMzUgMTUuNDQ2N0wyLjc3OTUyIDI5LjkyNzRDMi42ODY2IDI5Ljk4MzMgMi41NzgxOCAzMC4wMDggMi40NzAxOSAyOS45OTc4QzIuMzYyMjEgMjkuOTg3NSAyLjI2MDM1IDI5Ljk0MjkgMi4xNzk2MSAyOS44NzA1WiIgZmlsbD0iIzEyNjJGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzMzMF8xMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09Im1hdHJpeCgtNC4zNzExNGUtMDggMSAxIDQuMzcxMTRlLTA4IDAgMCkiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWljb24tbGlzdC10ZXh0Ij5jaXJjdWl0dHJhZGV0ZWNoIHN0YW5kcyBhcyB0aGUgdWx0aW1hdGUgaW5ub3ZhdGlvbiBodWIsIHByb3ZpZGluZyBhIHVuaXF1ZSBibGVuZCBvZiBjdXR0aW5nLWVkZ2Ugc3RhcnR1cHMgYW5kIGV4cGVydCBndWlkYW5jZS48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWxlbWVudG9yLWljb24tbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1pY29uLWxpc3QtaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAzMCAzMCIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8zMzBfMTIwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yLjE3OTYxIDI5Ljg3MDVDMi4wOTc1MSAyOS43OTkyIDIuMDQwMjIgMjkuNzAzNyAyLjAxNjA0IDI5LjU5NzdDMS45OTE4NyAyOS40OTE3IDIuMDAyMDYgMjkuMzgwNyAyLjA0NTE1IDI5LjI4MDlMOC4xNjMyMSAxNS4wMDJMMi4wNDUxNSAwLjcyMzA0QzEuODQxMzkgMC4yOTY4OTYgMi4zNjk5MyAtMC4xOTEzMDggMi43Nzk1MiAwLjA3NjU4MzVMMjcuNjAzNSAxNC41NTcyQzI3Ljk0MDcgMTQuNzM4MiAyNy45NDU4IDE1LjI2NTcgMjcuNjAzNSAxNS40NDY3TDIuNzc5NTIgMjkuOTI3NEMyLjY4NjYgMjkuOTgzMyAyLjU3ODE4IDMwLjAwOCAyLjQ3MDE5IDI5Ljk5NzhDMi4zNjIyMSAyOS45ODc1IDIuMjYwMzUgMjkuOTQyOSAyLjE3OTYxIDI5Ljg3MDVaIiBmaWxsPSIjMTI2MkZGIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfMzMwXzEyMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KC00LjM3MTE0ZS0wOCAxIDEgNC4zNzExNGUtMDggMCAwKSI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItaWNvbi1saXN0LXRleHQiPkV4cGVyaWVuY2UgdGhlIHJlYXNzdXJhbmNlIG9mIHByb2FjdGl2ZSByaXNrIG1pdGlnYXRpb24gc3RyYXRlZ2llcyBlbWJlZGRlZCBpbiBjaXJjdWl0dHJhZGV0ZWNoLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC03MGI2ZmE2IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1idXR0b24iIGRhdGEtaWQ9IjcwYjZmYTYiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImJ1dHRvbi5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItYnV0dG9uLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZWxlbWVudG9yLWJ1dHRvbiBlbGVtZW50b3ItYnV0dG9uLWxpbmsgZWxlbWVudG9yLXNpemUtc20iIGhyZWY9Ij9hPXNpZ251cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItYnV0dG9uLWNvbnRlbnQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItYnV0dG9uLWljb24gZWxlbWVudG9yLWFsaWduLWljb24tcmlnaHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjE1IiB2aWV3Qm94PSIwIDAgMjQgMTUiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSA4LjVDMC40NDc3MTUgOC41IDAgOC4wNTIyOCAwIDcuNUMwIDYuOTQ3NzIgMC40NDc3MTUgNi41IDEgNi41TDEgOC41Wk0yMy43MDcxIDYuNzkyODlDMjQuMDk3NiA3LjE4MzQyIDI0LjA5NzYgNy44MTY1OCAyMy43MDcxIDguMjA3MTFMMTcuMzQzMSAxNC41NzExQzE2Ljk1MjYgMTQuOTYxNiAxNi4zMTk1IDE0Ljk2MTYgMTUuOTI4OSAxNC41NzExQzE1LjUzODQgMTQuMTgwNSAxNS41Mzg0IDEzLjU0NzQgMTUuOTI4OSAxMy4xNTY5TDIxLjU4NTggNy41TDE1LjkyODkgMS44NDMxNUMxNS41Mzg0IDEuNDUyNjIgMTUuNTM4NCAwLjgxOTQ1NyAxNS45Mjg5IDAuNDI4OTMyQzE2LjMxOTUgMC4wMzg0MDc4IDE2Ljk1MjYgMC4wMzg0MDc4IDE3LjM0MzEgMC40Mjg5MzJMMjMuNzA3MSA2Ljc5Mjg5Wk0xIDYuNUwyMyA2LjVWOC41TDEgOC41TDEgNi41WiIgZmlsbD0iI0Y5RjlGOSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLWJ1dHRvbi10ZXh0Ij5TaWdudXA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZGMyODNjMiBlLWNvbi1mdWxsIGUtZmxleCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSJkYzI4M2MyIiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtmdWxsJnF1b3Q7fSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LTdjNzcyMjkgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LWltYWdlIiBkYXRhLWlkPSI3Yzc3MjI5IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJpbWFnZS5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyIgd2lkdGg9IjExOTYiIGhlaWdodD0iODczIiBzcmM9Ims5OS9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9idXktaW1nLnBuZyIgY2xhc3M9ImF0dGFjaG1lbnQtZnVsbCBzaXplLWZ1bGwgd3AtaW1hZ2UtMjY0IiBhbHQ9IiIgc3Jjc2V0PSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvdXBsb2Fkcy9zaXRlcy84LzIwMjMvMTIvYnV5LWltZy5wbmcgMTE5NncsIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9idXktaW1nLTMwMHgyMTkucG5nIDMwMHcsIC9hc3NldHMvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzgvMjAyMy8xMi9idXktaW1nLTEwMjR4NzQ3LnBuZyAxMDI0dywgL2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2J1eS1pbWctNzY4eDU2MS5wbmcgNzY4dyIgc2l6ZXM9IihtYXgtd2lkdGg6IDExOTZweCkgMTAwdncsIDExOTZweCIgLz4JCQkJCQkJCQkJCQkJCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC02YTc4NjAwIGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iNmE3ODYwMCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7LCZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9IiBkYXRhLWNvcmUtdjMxNi1wbHVzPSJ0cnVlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC05ZDA5NTgyIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjlkMDk1ODIiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMThjZjUxMiBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9IjE4Y2Y1MTIiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz0ibGF6eSIgc3JjPSJrOTkvYXNzZXRzL2ltYWdlcy90ZXN0aW1vbmlhbC5wbmciPgkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC01YmIzZTE1IGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjViYjNlMTUiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtNjNmMTlmMiBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iNjNmMTlmMiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPjxzcGFuIHN0eWxlPSJjb2xvcjojRjlGOUY5Ij5QYXJ0bmVyIDwvc3Bhbj5Qcm9ncmFtPC9oMj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1hNWE0NTRmIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1pbWFnZSIgZGF0YS1pZD0iYTVhNDU0ZiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaW1hZ2UuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBkZWNvZGluZz0iYXN5bmMiIHdpZHRoPSIxMzgiIGhlaWdodD0iMzIiIHNyYz0iazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC8yMDIzLzEyL2Rlc2lnbi5wbmciIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIHdwLWltYWdlLTE3NCIgYWx0PSIiIC8+CQkJCQkJCQkJCQkJCQogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWEzMTJlY2UgZWxlbWVudG9yLXdpZGdldCBlbGVtZW50b3Itd2lkZ2V0LXRleHQtZWRpdG9yIiBkYXRhLWlkPSJhMzEyZWNlIiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJ0ZXh0LWVkaXRvci5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8cD5Kb2luIGZvcmNlcyB3aXRoIGNpcmN1aXR0cmFkZXRlY2ggYW5kIGJlY29tZSBhIGNhdGFseXN0IGZvciBjaGFuZ2UuIE91ciBQYXJ0bmVyIFByb2dyYW0gb2ZmZXJzIGV4Y2x1c2l2ZSBiZW5lZml0cywgZWFybHkgYWNjZXNzIHRvIGludmVzdG1lbnQgb3Bwb3J0dW5pdGllcywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhIHNoYXJlIGluIHRoZSBzdWNjZXNzIG9mIHRoZSBzdGFydHVwcyB5b3UgY2hhbXBpb24uIFRvZ2V0aGVyLCB3ZSBzaGFwZSB0aGUgZnV0dXJlLgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMmY3NThkMyBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iMmY3NThkMyIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPjQlIC0gMi4yJSAtIDEuOCUgd2l0aCAkMzAwMCBUdXJub3ZlcjwvaDY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+NiUgLSAyLjUlIC0gMS45JSB3aXRoICQxMCwwMDAgVHVybm92ZXI8L2g2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWVmY2E4NjkgZS1mbGV4IGUtY29uLWJveGVkIGUtY29uIGUtcGFyZW50IiBkYXRhLWlkPSJlZmNhODY5IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBpZD0ic3VwcG9ydCIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7LCZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9IiBkYXRhLWNvcmUtdjMxNi1wbHVzPSJ0cnVlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctcGF5bWVudCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtYml0Y29pbi5wbmciIGNsYXNzPSJpbWctcGF5bWVudCI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXltZW50LWJveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJrOTkvYXNzZXRzL2ltYWdlcy9wYXltZW50cy9wYXltZW50LWV0aGVyZXVtLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtcmlwcGxlLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtZG9nZWNvaW4ucG5nIiBjbGFzcz0iaW1nLXBheW1lbnQiPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3giPgogICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudC1ibmIucG5nIiBjbGFzcz0iaW1nLXBheW1lbnQiPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3giPgogICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudC10cm9uLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtdXNkdHRyYzIwLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtdXNkdGJlcDIwLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CgkJCQkgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtc29sYW5hLnBuZyIgY2xhc3M9ImltZy1wYXltZW50Ij4KICAgICAgICAgICAgICAgICAgPC9kaXY+CgkJCQkgIDxkaXYgY2xhc3M9InBheW1lbnQtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL3BheW1lbnRzL3BheW1lbnQtZXBheWNvcmUucG5nIiBjbGFzcz0iaW1nLXBheW1lbnQiPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KCQkJCSAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3giPgogICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudF90ZXRoZXJwb2wucG5nIiBjbGFzcz0iaW1nLXBheW1lbnQiPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KCQkJCSAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3giPgogICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iazk5L2Fzc2V0cy9pbWFnZXMvcGF5bWVudHMvcGF5bWVudF9tYXRpYy5wbmciIGNsYXNzPSJpbWctcGF5bWVudCI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIC5yb3ctcGF5bWVudCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5wYXltZW50LWJveCB7CiAgICAgICAgICAgIC8qIHdpZHRoOiAxMzBweDsgKi8KICAgICAgICAgICAgfQogICAgICAgICAgICAuaW1nLXBheW1lbnQgewogICAgICAgICAgICBoZWlnaHQ6IDUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgICAgIG1hcmdpbjogM3B4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5mYXEtdGl0bGUgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5xLXRpdGxlIHsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBmb250LXNpemU6IDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYTBjZWZmNmU7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLmEtdGl0bGUgewogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLmZhcS1ib3ggewogICAgICAgICAgICB3aWR0aDogNTAlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkgewogICAgICAgICAgICAuZmFxLWJveCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICB9CgkJCS5mYXFfbW9iaWxlIHsKCQkJCWRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CgkJCX0KICAgICAgICAgICAgfQogICAgICAgICA8L3N0eWxlPgogICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1lZmNhODY5IGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iZWZjYTg2OSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgaWQ9InN1cHBvcnQiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtiYWNrZ3JvdW5kX2JhY2tncm91bmQmcXVvdDs6JnF1b3Q7Y2xhc3NpYyZxdW90OywmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2JveGVkJnF1b3Q7fSIgZGF0YS1jb3JlLXYzMTYtcGx1cz0idHJ1ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIiBzdHlsZT0icGFkZGluZzogMHB4ICFpbXBvcnRhbnQiIGlkPSJmYXEiPgogICAgICAgICAgICAgICA8aDMgY2xhc3M9ImZhcS10aXRsZSI+RkFRPC9oMz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImUtY29uLWlubmVyIGZhcV9tb2JpbGUiPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmYXEtYm94Ij4KICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJxLXRpdGxlIHRvZ2dsZS1xdWVzdGlvbiI+SG93IGNhbiBJIGNyZWF0ZSBhbiBhY2NvdW50PzwvaDQ+CiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJhLXRpdGxlIHRvZ2dsZS1hbnN3ZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+VG8gY3JlYXRlIGFuIGFjY291bnQsIHNpbXBseSB2aXNpdCBvdXIgc2lnbi11cCBwYWdlIGFuZCBmaWxsIG91dCB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24gaW4gdGhlIHJlZ2lzdHJhdGlvbiBmb3JtLjwvcD4KICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJxLXRpdGxlIHRvZ2dsZS1xdWVzdGlvbiI+SG93IGRvZXMgdGhlIEFmZmlsaWF0ZSBwcm9ncmFtIHdvcms/PC9oND4KICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImEtdGl0bGUgdG9nZ2xlLWFuc3dlciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij5PdXIgQWZmaWxpYXRlIHByb2dyYW0gaXMgYSBwb3dlcmZ1bCBvcHBvcnR1bml0eSBmb3IgeW91IHRvIGVhcm4gYWRkaXRpb25hbCBpbmNvbWUuIEl0IGZlYXR1cmVzIDMgbGV2ZWxzIG9mIGNvbW1pc3Npb25zIGZvciByZWZlcnJhbHMsIHdpdGggYSB0aWVyZWQgc3RydWN0dXJlIG9mIDIlLCAxLjYlLCAxLjMlLiBTaW1wbHkgcmVmZXIgb3RoZXJzIHRvIG91ciBwbGF0Zm9ybSwgCiAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3UnbGwgZWFybiBhIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgaW52ZXN0bWVudHMgYXQgZWFjaCBsZXZlbC4gSXQncyBhIGdyZWF0IHdheSB0byBncm93IHlvdXIgZWFybmluZ3MgYXMgeW91IGludHJvZHVjZSBtb3JlIHBlb3BsZSB0byBjaXJjdWl0dHJhZGV0ZWNoLgogICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0icS10aXRsZSB0b2dnbGUtcXVlc3Rpb24iPldoYXQgcGF5bWVudCBtZXRob2RzIGRvZXMgdGhlIHBsYXRmb3JtIGFjY2VwdCBmb3IgZGVwb3NpdHM/PC9oND4KICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImEtdGl0bGUgdG9nZ2xlLWFuc3dlciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij5XZSBhY2NlcHQgYSB2YXJpZXR5IG9mIGNyeXB0b2N1cnJlbmNpZXMgZm9yIGRlcG9zaXRzLCBpbmNsdWRpbmcgVVNEVCAoVFJDMjApLCBVU0RUIChCRVAyMCksICBVU0RUIChQb2x5Z29uKSwgU29sYW5hLCBlUGF5Q29yZSwgTWF0aWMsIEJpdENvaW4sIExpdGVDb2luLCBEb2dlQ29pbiwgVFJPTiwgQmluYW5jZUNvaW4uPC9wPgogICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InEtdGl0bGUgdG9nZ2xlLXF1ZXN0aW9uIj5XaGF0IGlzIHRoZSBtaW5pbXVtIGRlcG9zaXQgYW1vdW50PzwvaDQ+CiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJhLXRpdGxlIHRvZ2dsZS1hbnN3ZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+VGhlIG1pbmltdW0gZGVwb3NpdCBhbW91bnQ6ICQyNS48L3A+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmYXEtYm94Ij4KICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJxLXRpdGxlIHRvZ2dsZS1xdWVzdGlvbiI+V2hhdCBpcyB0aGUgbWluaW11bSB3aXRoZHJhd2FsIGFtb3VudD88L2g0PgogICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYS10aXRsZSB0b2dnbGUtYW5zd2VyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPlRoZSBtaW5pbXVtIHdpdGhkcmF3YWwgYW1vdW50IGlzICQxMC48L3A+CiAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0icS10aXRsZSB0b2dnbGUtcXVlc3Rpb24iPkFmdGVyIHlvdSBtYWtlIGEgd2l0aGRyYXdhbCByZXF1ZXN0LCB3aGVuIHdpbGwgdGhlIGZ1bmRzIGJlIGF2YWlsYWJsZSBpbiB5b3VyIGUtY3VycmVuY3kgYWNjb3VudD88L2g0PgogICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYS10aXRsZSB0b2dnbGUtYW5zd2VyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPkFsbCB3aXRoZHJhd2FsIHJlcXVlc3RzIGFyZSBwcm9jZXNzZWQgaW5zdGFudGx5LjwvcD4KICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJxLXRpdGxlIHRvZ2dsZS1xdWVzdGlvbiI+SSBoYXZlIG1vcmUgcXVlc3Rpb24uPC9oND4KICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImEtdGl0bGUgdG9nZ2xlLWFuc3dlciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij5QbGVhc2UsIGNvbnRhY3QgdXMgdmlhIGVtYWlsIGFkbWluQGNpcmN1aXR0cmFkZXRlY2guY29tLjwvcD4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICQoIi50b2dnbGUtcXVlc3Rpb24iKS5jbGljayhmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLm5leHQoIi50b2dnbGUtYW5zd2VyIikuc2xpZGVUb2dnbGUoKTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgPHNjcmlwdCBzcmM9ImNvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMy42LjQubWluLmpzIj48L3NjcmlwdD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgoKCQkgCiAgICAgICAgIDxmb290ZXIgaXRlbXR5cGU9Imh0dHBzOi8vc2NoZW1hLm9yZy9XUEZvb3RlciIgaXRlbXNjb3BlPSJpdGVtc2NvcGUiIGlkPSJjb2xvcGhvbiIgcm9sZT0iY29udGVudGluZm8iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdmb290ZXItd2lkdGgtZml4ZXInPgogICAgICAgICAgICAgICA8ZGl2IGRhdGEtZWxlbWVudG9yLXR5cGU9IndwLXBvc3QiIGRhdGEtZWxlbWVudG9yLWlkPSI1OSIgY2xhc3M9ImVsZW1lbnRvciBlbGVtZW50b3ItNTkiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC02NTkzYTk1IGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLXBhcmVudCIgZGF0YS1pZD0iNjU5M2E5NSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2JhY2tncm91bmRfYmFja2dyb3VuZCZxdW90OzomcXVvdDtjbGFzc2ljJnF1b3Q7LCZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9IiBkYXRhLWNvcmUtdjMxNi1wbHVzPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwJTsiIGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC04ZDYyMTg2IGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjhkNjIxODYiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtODk2NGEwYSBlLWZsZXggZS1jb24tYm94ZWQgZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iODk2NGEwYSIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7Ym94ZWQmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZS1jb24taW5uZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0zOWZkOWQzIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjM5ZmQ5ZDMiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtMGVhMjBlZiBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaGVhZGluZyIgZGF0YS1pZD0iMGVhMjBlZiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0iaGVhZGluZy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9ImVsZW1lbnRvci1oZWFkaW5nLXRpdGxlIGVsZW1lbnRvci1zaXplLWRlZmF1bHQiPlVzZWZ1bCBMaW5rPC9oNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC03ZTAyNGQ5IGhmZS1uYXYtbWVudV9fYnJlYWtwb2ludC1ub25lIGhmZS1uYXYtbWVudV9fYWxpZ24tbGVmdCBoZmUtc3VibWVudS1pY29uLWFycm93IGhmZS1saW5rLXJlZGlyZWN0LWNoaWxkIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1uYXZpZ2F0aW9uLW1lbnUiIGRhdGEtaWQ9IjdlMDI0ZDkiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtwYWRkaW5nX2hvcml6b250YWxfbWVudV9pdGVtJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6MCwmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ192ZXJ0aWNhbF9tZW51X2l0ZW0mcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzowLCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDttZW51X3NwYWNlX2JldHdlZW4mcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzoyMiwmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ192ZXJ0aWNhbF9tZW51X2l0ZW1fdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6NSwmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ19ob3Jpem9udGFsX21lbnVfaXRlbV90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfaG9yaXpvbnRhbF9tZW51X2l0ZW1fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX3ZlcnRpY2FsX21lbnVfaXRlbV9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O21lbnVfc3BhY2VfYmV0d2Vlbl90YWJsZXQmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O21lbnVfc3BhY2VfYmV0d2Vlbl9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O2Ryb3Bkb3duX2JvcmRlcl9yYWRpdXMmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7dG9wJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtyaWdodCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Ym90dG9tJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsZWZ0JnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtpc0xpbmtlZCZxdW90Ozp0cnVlfSwmcXVvdDtkcm9wZG93bl9ib3JkZXJfcmFkaXVzX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDt0b3AmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3JpZ2h0JnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtib3R0b20mcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xlZnQmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2lzTGlua2VkJnF1b3Q7OnRydWV9LCZxdW90O2Ryb3Bkb3duX2JvcmRlcl9yYWRpdXNfbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3RvcCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cmlnaHQmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2JvdHRvbSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGVmdCZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7aXNMaW5rZWQmcXVvdDs6dHJ1ZX0sJnF1b3Q7cGFkZGluZ19ob3Jpem9udGFsX2Ryb3Bkb3duX2l0ZW0mcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3BhZGRpbmdfaG9yaXpvbnRhbF9kcm9wZG93bl9pdGVtX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ19ob3Jpem9udGFsX2Ryb3Bkb3duX2l0ZW1fbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtwYWRkaW5nX3ZlcnRpY2FsX2Ryb3Bkb3duX2l0ZW0mcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzoxNSwmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ192ZXJ0aWNhbF9kcm9wZG93bl9pdGVtX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7cGFkZGluZ192ZXJ0aWNhbF9kcm9wZG93bl9pdGVtX21vYmlsZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7ZGlzdGFuY2VfZnJvbV9tZW51JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtkaXN0YW5jZV9mcm9tX21lbnVfdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDtkaXN0YW5jZV9mcm9tX21lbnVfbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfc2l6ZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX3NpemVfdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfc2l6ZV9tb2JpbGUmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9ib3JkZXJfd2lkdGgmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9ib3JkZXJfd2lkdGhfdGFibGV0JnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfSwmcXVvdDt0b2dnbGVfYm9yZGVyX3dpZHRoX21vYmlsZSZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX2JvcmRlcl9yYWRpdXMmcXVvdDs6eyZxdW90O3VuaXQmcXVvdDs6JnF1b3Q7cHgmcXVvdDssJnF1b3Q7c2l6ZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7c2l6ZXMmcXVvdDs6W119LCZxdW90O3RvZ2dsZV9ib3JkZXJfcmFkaXVzX3RhYmxldCZxdW90Ozp7JnF1b3Q7dW5pdCZxdW90OzomcXVvdDtweCZxdW90OywmcXVvdDtzaXplJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtzaXplcyZxdW90OzpbXX0sJnF1b3Q7dG9nZ2xlX2JvcmRlcl9yYWRpdXNfbW9iaWxlJnF1b3Q7OnsmcXVvdDt1bml0JnF1b3Q7OiZxdW90O3B4JnF1b3Q7LCZxdW90O3NpemUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3NpemVzJnF1b3Q7OltdfX0iIGRhdGEtd2lkZ2V0X3R5cGU9Im5hdmlnYXRpb24tbWVudS5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZmUtbmF2LW1lbnUgaGZlLWxheW91dC12ZXJ0aWNhbCBoZmUtbmF2LW1lbnUtbGF5b3V0IHZlcnRpY2FsIiBkYXRhLWxheW91dD0idmVydGljYWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJvbGU9ImJ1dHRvbiIgY2xhc3M9ImhmZS1uYXYtbWVudV9fdG9nZ2xlIGVsZW1lbnRvci1jbGlja2FibGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2NyZWVuLXJlYWRlci10ZXh0Ij5NZW51PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZmUtbmF2LW1lbnUtaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hdiBjbGFzcz0iaGZlLW5hdi1tZW51X19sYXlvdXQtdmVydGljYWwgaGZlLW5hdi1tZW51X19zdWJtZW51LWFycm93IiBkYXRhLXRvZ2dsZS1pY29uPSIiIGRhdGEtY2xvc2UtaWNvbj0iIiBkYXRhLWZ1bGwtd2lkdGg9IiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBpZD0ibWVudS0xLTdlMDI0ZDkiIGNsYXNzPSJoZmUtbmF2LW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9Im1lbnUtaXRlbS0xMSIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS1ob21lIGN1cnJlbnQtbWVudS1pdGVtIHBhZ2VfaXRlbSBwYWdlLWl0ZW0tOSBjdXJyZW50X3BhZ2VfaXRlbSBwYXJlbnQgaGZlLWNyZWF0aXZlLW1lbnUiPjxhIGhyZWY9Ij9hPWhvbWUiIGNsYXNzID0gImhmZS1tZW51LWl0ZW0iPkhvbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJtZW51LWl0ZW0tMTIiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIHBhcmVudCBoZmUtY3JlYXRpdmUtbWVudSI+PGEgaHJlZj0iI3dhbGxldCIgY2xhc3MgPSAiaGZlLW1lbnUtaXRlbSI+V2hhdCBXZSBEbzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9Im1lbnUtaXRlbS0xMyIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gcGFyZW50IGhmZS1jcmVhdGl2ZS1tZW51Ij48YSBocmVmPSIjZmVhdHVyZXMiIGNsYXNzID0gImhmZS1tZW51LWl0ZW0iPldoeSBVczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9Im1lbnUtaXRlbS0xNCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gcGFyZW50IGhmZS1jcmVhdGl2ZS1tZW51Ij48YSBocmVmPSIjcGxhbnMiIGNsYXNzID0gImhmZS1tZW51LWl0ZW0iPlBsYW5zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0ibWVudS1pdGVtLTE1IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBwYXJlbnQgaGZlLWNyZWF0aXZlLW1lbnUiPjxhIGhyZWY9IiNzdXBwb3J0IiBjbGFzcyA9ICJoZmUtbWVudS1pdGVtIj5GQVE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC00MWJlNTllIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjQxYmU1OWUiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtYWU4NThiNCBlbGVtZW50b3Itd2lkZ2V0LW1vYmlsZV9fd2lkdGgtaW5oZXJpdCBlbGVtZW50b3Itd2lkZ2V0IGVsZW1lbnRvci13aWRnZXQtaW1hZ2UiIGRhdGEtaWQ9ImFlODU4YjQiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9ImltYWdlLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgZmV0Y2hwcmlvcml0eT0iaGlnaCJzcmM9Ims5OS9hc3NldHMvaW1hZ2VzL2xvZ28ucG5nIiAvPgkJCQkJCQkJCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0yNTM3MTc2IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC10ZXh0LWVkaXRvciIgZGF0YS1pZD0iMjUzNzE3NiIgZGF0YS1lbGVtZW50X3R5cGU9IndpZGdldCIgZGF0YS13aWRnZXRfdHlwZT0idGV4dC1lZGl0b3IuZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+V2UgYXJlIHRoZSBjcnVjaWJsZSB3aGVyZSBzdGFydHVwcyB0cmFuc2Zvcm0gaW50byBjaGFtcGlvbnMsIGxhdW5jaGluZyB5b3Ugb24gYSBwYXRoIHRvIGZpbmFuY2lhbCBwcm9zcGVyaXR5LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0zYTU2YjA1IGUtZmxleCBlLWNvbi1ib3hlZCBlLWNvbiBlLWNoaWxkIiBkYXRhLWlkPSIzYTU2YjA1IiBkYXRhLWVsZW1lbnRfdHlwZT0iY29udGFpbmVyIiBkYXRhLXNldHRpbmdzPSJ7JnF1b3Q7Y29udGVudF93aWR0aCZxdW90OzomcXVvdDtib3hlZCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVsZW1lbnRvci1lbGVtZW50IGVsZW1lbnRvci1lbGVtZW50LWM3ZjgzNDggZS1jb24tZnVsbCBlLWZsZXggZS1jb24gZS1jaGlsZCIgZGF0YS1pZD0iYzdmODM0OCIgZGF0YS1lbGVtZW50X3R5cGU9ImNvbnRhaW5lciIgZGF0YS1zZXR0aW5ncz0ieyZxdW90O2NvbnRlbnRfd2lkdGgmcXVvdDs6JnF1b3Q7ZnVsbCZxdW90O30iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC1iY2NjOTc0IGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1oZWFkaW5nIiBkYXRhLWlkPSJiY2NjOTc0IiBkYXRhLWVsZW1lbnRfdHlwZT0id2lkZ2V0IiBkYXRhLXdpZGdldF90eXBlPSJoZWFkaW5nLmRlZmF1bHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz0iZWxlbWVudG9yLWhlYWRpbmctdGl0bGUgZWxlbWVudG9yLXNpemUtZGVmYXVsdCI+Q29weXJpZ2h0IDIwMjQsIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9oNj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPSJlbGVtZW50b3ItZWxlbWVudCBlbGVtZW50b3ItZWxlbWVudC0yZGQ1NWZhIGUtY29uLWZ1bGwgZS1mbGV4IGUtY29uIGUtY2hpbGQiIGRhdGEtaWQ9IjJkZDU1ZmEiIGRhdGEtZWxlbWVudF90eXBlPSJjb250YWluZXIiIGRhdGEtc2V0dGluZ3M9InsmcXVvdDtjb250ZW50X3dpZHRoJnF1b3Q7OiZxdW90O2Z1bGwmcXVvdDt9Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLWVsZW1lbnQgZWxlbWVudG9yLWVsZW1lbnQtZDYyNmZjYSBlbGVtZW50b3Itc2hhcGUtY2lyY2xlIGUtZ3JpZC1hbGlnbi1yaWdodCBlLWdyaWQtYWxpZ24tbW9iaWxlLWNlbnRlciBlbGVtZW50b3ItZ3JpZC0wIGVsZW1lbnRvci13aWRnZXQgZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMiIGRhdGEtaWQ9ImQ2MjZmY2EiIGRhdGEtZWxlbWVudF90eXBlPSJ3aWRnZXQiIGRhdGEtd2lkZ2V0X3R5cGU9InNvY2lhbC1pY29ucy5kZWZhdWx0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXdpZGdldC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3R5bGU+LyohIGVsZW1lbnRvciAtIHYzLjE5LjAgLSAwNS0wMi0yMDI0ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lbGVtZW50b3ItZ3JpZC0wIC5lbGVtZW50b3Itd2lkZ2V0LWNvbnRhaW5lciwuZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMuZWxlbWVudG9yLWdyaWQtbW9iaWxlLTAgLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyLC5lbGVtZW50b3Itd2lkZ2V0LXNvY2lhbC1pY29ucy5lbGVtZW50b3ItZ3JpZC10YWJsZXQtMCAuZWxlbWVudG9yLXdpZGdldC1jb250YWluZXJ7bGluZS1oZWlnaHQ6MTtmb250LXNpemU6MH0uZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnM6bm90KC5lbGVtZW50b3ItZ3JpZC0wKTpub3QoLmVsZW1lbnRvci1ncmlkLXRhYmxldC0wKTpub3QoLmVsZW1lbnRvci1ncmlkLW1vYmlsZS0wKSAuZWxlbWVudG9yLWdyaWR7ZGlzcGxheTppbmxpbmUtZ3JpZH0uZWxlbWVudG9yLXdpZGdldC1zb2NpYWwtaWNvbnMgLmVsZW1lbnRvci1ncmlke2dyaWQtY29sdW1uLWdhcDp2YXIoLS1ncmlkLWNvbHVtbi1nYXAsNXB4KTtncmlkLXJvdy1nYXA6dmFyKC0tZ3JpZC1yb3ctZ2FwLDVweCk7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnZhcigtLWdyaWQtdGVtcGxhdGUtY29sdW1ucyk7anVzdGlmeS1jb250ZW50OnZhcigtLWp1c3RpZnktY29udGVudCxjZW50ZXIpO2p1c3RpZnktaXRlbXM6dmFyKC0tanVzdGlmeS1jb250ZW50LGNlbnRlcil9LmVsZW1lbnRvci1pY29uLmVsZW1lbnRvci1zb2NpYWwtaWNvbntmb250LXNpemU6dmFyKC0taWNvbi1zaXplLDI1cHgpO2xpbmUtaGVpZ2h0OnZhcigtLWljb24tc2l6ZSwyNXB4KTt3aWR0aDpjYWxjKHZhcigtLWljb24tc2l6ZSwgMjVweCkgKyAyICogdmFyKC0taWNvbi1wYWRkaW5nLCAuNWVtKSk7aGVpZ2h0OmNhbGModmFyKC0taWNvbi1zaXplLCAyNXB4KSArIDIgKiB2YXIoLS1pY29uLXBhZGRpbmcsIC41ZW0pKX0uZWxlbWVudG9yLXNvY2lhbC1pY29uey0tZS1zb2NpYWwtaWNvbi1pY29uLWNvbG9yOiNmZmY7ZGlzcGxheTppbmxpbmUtZmxleDtiYWNrZ3JvdW5kLWNvbG9yOiM2OTcyN2Q7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXJ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbiBpe2NvbG9yOnZhcigtLWUtc29jaWFsLWljb24taWNvbi1jb2xvcil9LmVsZW1lbnRvci1zb2NpYWwtaWNvbiBzdmd7ZmlsbDp2YXIoLS1lLXNvY2lhbC1pY29uLWljb24tY29sb3IpfS5lbGVtZW50b3Itc29jaWFsLWljb246bGFzdC1jaGlsZHttYXJnaW46MH0uZWxlbWVudG9yLXNvY2lhbC1pY29uOmhvdmVye29wYWNpdHk6Ljk7Y29sb3I6I2ZmZn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLWFuZHJvaWR7YmFja2dyb3VuZC1jb2xvcjojYTRjNjM5fS5lbGVtZW50b3Itc29jaWFsLWljb24tYXBwbGV7YmFja2dyb3VuZC1jb2xvcjojOTk5fS5lbGVtZW50b3Itc29jaWFsLWljb24tYmVoYW5jZXtiYWNrZ3JvdW5kLWNvbG9yOiMxNzY5ZmZ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1iaXRidWNrZXR7YmFja2dyb3VuZC1jb2xvcjojMjA1MDgxfS5lbGVtZW50b3Itc29jaWFsLWljb24tY29kZXBlbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1kZWxpY2lvdXN7YmFja2dyb3VuZC1jb2xvcjojMzlmfS5lbGVtZW50b3Itc29jaWFsLWljb24tZGV2aWFudGFydHtiYWNrZ3JvdW5kLWNvbG9yOiMwNWNjNDd9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1kaWdne2JhY2tncm91bmQtY29sb3I6IzAwNWJlMn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLWRyaWJiYmxle2JhY2tncm91bmQtY29sb3I6I2VhNGM4OX0uZWxlbWVudG9yLXNvY2lhbC1pY29uLWVsZW1lbnRvcntiYWNrZ3JvdW5kLWNvbG9yOiNkMzBjNWN9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1lbnZlbG9wZXtiYWNrZ3JvdW5kLWNvbG9yOiNlYTQzMzV9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1mYWNlYm9vaywuZWxlbWVudG9yLXNvY2lhbC1pY29uLWZhY2Vib29rLWZ7YmFja2dyb3VuZC1jb2xvcjojM2I1OTk4fS5lbGVtZW50b3Itc29jaWFsLWljb24tZmxpY2tye2JhY2tncm91bmQtY29sb3I6IzAwNjNkY30uZWxlbWVudG9yLXNvY2lhbC1pY29uLWZvdXJzcXVhcmV7YmFja2dyb3VuZC1jb2xvcjojMmQ1YmUzfS5lbGVtZW50b3Itc29jaWFsLWljb24tZnJlZS1jb2RlLWNhbXAsLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1mcmVlY29kZWNhbXB7YmFja2dyb3VuZC1jb2xvcjojMDA2NDAwfS5lbGVtZW50b3Itc29jaWFsLWljb24tZ2l0aHVie2JhY2tncm91bmQtY29sb3I6IzMzM30uZWxlbWVudG9yLXNvY2lhbC1pY29uLWdpdGxhYntiYWNrZ3JvdW5kLWNvbG9yOiNlMjQzMjl9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1nbG9iZXtiYWNrZ3JvdW5kLWNvbG9yOiM2OTcyN2R9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1nb29nbGUtcGx1cywuZWxlbWVudG9yLXNvY2lhbC1pY29uLWdvb2dsZS1wbHVzLWd7YmFja2dyb3VuZC1jb2xvcjojZGQ0YjM5fS5lbGVtZW50b3Itc29jaWFsLWljb24taG91enp7YmFja2dyb3VuZC1jb2xvcjojN2FjMTQyfS5lbGVtZW50b3Itc29jaWFsLWljb24taW5zdGFncmFte2JhY2tncm91bmQtY29sb3I6IzI2MjYyNn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLWpzZmlkZGxle2JhY2tncm91bmQtY29sb3I6IzQ4N2FhMn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLWxpbmt7YmFja2dyb3VuZC1jb2xvcjojODE4YTkxfS5lbGVtZW50b3Itc29jaWFsLWljb24tbGlua2VkaW4sLmVsZW1lbnRvci1zb2NpYWwtaWNvbi1saW5rZWRpbi1pbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDc3YjV9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1tZWRpdW17YmFja2dyb3VuZC1jb2xvcjojMDBhYjZifS5lbGVtZW50b3Itc29jaWFsLWljb24tbWVldHVwe2JhY2tncm91bmQtY29sb3I6I2VjMWM0MH0uZWxlbWVudG9yLXNvY2lhbC1pY29uLW1peGNsb3Vke2JhY2tncm91bmQtY29sb3I6IzI3M2E0Yn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLW9kbm9rbGFzc25pa2l7YmFja2dyb3VuZC1jb2xvcjojZjQ3MzFjfS5lbGVtZW50b3Itc29jaWFsLWljb24tcGludGVyZXN0e2JhY2tncm91bmQtY29sb3I6I2JkMDgxY30uZWxlbWVudG9yLXNvY2lhbC1pY29uLXByb2R1Y3QtaHVudHtiYWNrZ3JvdW5kLWNvbG9yOiNkYTU1MmZ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1yZWRkaXR7YmFja2dyb3VuZC1jb2xvcjojZmY0NTAwfS5lbGVtZW50b3Itc29jaWFsLWljb24tcnNze2JhY2tncm91bmQtY29sb3I6I2YyNjUyMn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXNob3BwaW5nLWNhcnR7YmFja2dyb3VuZC1jb2xvcjojNGNhZjUwfS5lbGVtZW50b3Itc29jaWFsLWljb24tc2t5cGV7YmFja2dyb3VuZC1jb2xvcjojMDBhZmYwfS5lbGVtZW50b3Itc29jaWFsLWljb24tc2xpZGVzaGFyZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDc3YjV9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1zbmFwY2hhdHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZjMDB9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi1zb3VuZGNsb3Vke2JhY2tncm91bmQtY29sb3I6I2Y4MH0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXNwb3RpZnl7YmFja2dyb3VuZC1jb2xvcjojMmViZDU5fS5lbGVtZW50b3Itc29jaWFsLWljb24tc3RhY2stb3ZlcmZsb3d7YmFja2dyb3VuZC1jb2xvcjojZmU3YTE1fS5lbGVtZW50b3Itc29jaWFsLWljb24tc3RlYW17YmFja2dyb3VuZC1jb2xvcjojMDBhZGVlfS5lbGVtZW50b3Itc29jaWFsLWljb24tc3R1bWJsZXVwb257YmFja2dyb3VuZC1jb2xvcjojZWI0OTI0fS5lbGVtZW50b3Itc29jaWFsLWljb24tdGVsZWdyYW17YmFja2dyb3VuZC1jb2xvcjojMmNhNWUwfS5lbGVtZW50b3Itc29jaWFsLWljb24tdGh1bWItdGFja3tiYWNrZ3JvdW5kLWNvbG9yOiMxYWExZDh9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi10cmlwYWR2aXNvcntiYWNrZ3JvdW5kLWNvbG9yOiM1ODk0NDJ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi10dW1ibHJ7YmFja2dyb3VuZC1jb2xvcjojMzU0NjVjfS5lbGVtZW50b3Itc29jaWFsLWljb24tdHdpdGNoe2JhY2tncm91bmQtY29sb3I6IzY0NDFhNX0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXR3aXR0ZXJ7YmFja2dyb3VuZC1jb2xvcjojMWRhMWYyfS5lbGVtZW50b3Itc29jaWFsLWljb24tdmliZXJ7YmFja2dyb3VuZC1jb2xvcjojNjY1Y2FjfS5lbGVtZW50b3Itc29jaWFsLWljb24tdmltZW97YmFja2dyb3VuZC1jb2xvcjojMWFiN2VhfS5lbGVtZW50b3Itc29jaWFsLWljb24tdmt7YmFja2dyb3VuZC1jb2xvcjojNDU2NjhlfS5lbGVtZW50b3Itc29jaWFsLWljb24td2VpYm97YmFja2dyb3VuZC1jb2xvcjojZGQyNDMwfS5lbGVtZW50b3Itc29jaWFsLWljb24td2VpeGlue2JhY2tncm91bmQtY29sb3I6IzMxYTkxOH0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXdoYXRzYXBwe2JhY2tncm91bmQtY29sb3I6IzI1ZDM2Nn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXdvcmRwcmVzc3tiYWNrZ3JvdW5kLWNvbG9yOiMyMTc1OWJ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi14aW5ne2JhY2tncm91bmQtY29sb3I6IzAyNjQ2Nn0uZWxlbWVudG9yLXNvY2lhbC1pY29uLXllbHB7YmFja2dyb3VuZC1jb2xvcjojYWYwNjA2fS5lbGVtZW50b3Itc29jaWFsLWljb24teW91dHViZXtiYWNrZ3JvdW5kLWNvbG9yOiNjZDIwMWZ9LmVsZW1lbnRvci1zb2NpYWwtaWNvbi01MDBweHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDk5ZTV9LmVsZW1lbnRvci1zaGFwZS1yb3VuZGVkIC5lbGVtZW50b3ItaWNvbi5lbGVtZW50b3Itc29jaWFsLWljb257Ym9yZGVyLXJhZGl1czoxMCV9LmVsZW1lbnRvci1zaGFwZS1jaXJjbGUgLmVsZW1lbnRvci1pY29uLmVsZW1lbnRvci1zb2NpYWwtaWNvbntib3JkZXItcmFkaXVzOjUwJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWxlbWVudG9yLXNvY2lhbC1pY29ucy13cmFwcGVyIGVsZW1lbnRvci1ncmlkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1ncmlkLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZWxlbWVudG9yLWljb24gZWxlbWVudG9yLXNvY2lhbC1pY29uIGVsZW1lbnRvci1zb2NpYWwtaWNvbi0gZWxlbWVudG9yLXJlcGVhdGVyLWl0ZW0tN2JjNjliMCIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLXNjcmVlbi1vbmx5Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjEwIiBmaWxsPSIjMTI2MkZGIj48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMC45OTI1IDEwLjY1MjlIMjMuMDAwOVY3LjE1NDkyQzIyLjY1NDQgNy4xMDcyNSAyMS40NjI4IDcgMjAuMDc0OSA3QzE3LjE3OTIgNyAxNS4xOTU1IDguODIxNDIgMTUuMTk1NSAxMi4xNjkxVjE1LjI1SDEyVjE5LjE2MDVIMTUuMTk1NVYyOUgxOS4xMTMzVjE5LjE2MTRIMjIuMTc5NkwyMi42NjYzIDE1LjI1MDlIMTkuMTEyNFYxMi41NTY4QzE5LjExMzMgMTEuNDI2NiAxOS40MTc3IDEwLjY1MjkgMjAuOTkyNSAxMC42NTI5WiIgZmlsbD0iI0Y5RjlGOSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbGVtZW50b3ItZ3JpZC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImVsZW1lbnRvci1pY29uIGVsZW1lbnRvci1zb2NpYWwtaWNvbiBlbGVtZW50b3Itc29jaWFsLWljb24tIGVsZW1lbnRvci1yZXBlYXRlci1pdGVtLWYxYTNiNWIiIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1zY3JlZW4tb25seSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiB2aWV3Qm94PSIwIDAgMzYgMzYiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHJ4PSIxMCIgZmlsbD0iIzEyNjJGRiI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjQuMzk1MiAxMS4wNzA4QzI0LjEwMDcgMTEuMDcwOCAyMy44NjExIDExLjMxMDQgMjMuODYxMSAxMS42MDQ5QzIzLjg2MTEgMTEuODk5NCAyNC4xMDA3IDEyLjEzOSAyNC4zOTUyIDEyLjEzOUMyNC42ODk3IDEyLjEzOSAyNC45MjkzIDExLjg5OTQgMjQuOTI5MyAxMS42MDQ5QzI0LjkyOTMgMTEuMzEwNCAyNC42ODk3IDExLjA3MDggMjQuMzk1MiAxMS4wNzA4Wk0xOC4wMDAxIDEzLjI2NUMxNS4zODkzIDEzLjI2NSAxMy4yNjUxIDE1LjM4OTEgMTMuMjY1MSAxOEMxMy4yNjUxIDIwLjYxMDkgMTUuMzg5MyAyMi43MzUgMTguMDAwMSAyMi43MzVDMjAuNjExIDIyLjczNSAyMi43MzUxIDIwLjYxMDkgMjIuNzM1MSAxOEMyMi43MzUxIDE1LjM4OTIgMjAuNjExIDEzLjI2NSAxOC4wMDAxIDEzLjI2NVoiIGZpbGw9IiNGOUY5RjkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIyLjk2OSA3SDEzLjAzMUM5LjcwNTQ4IDcgNyA5LjcwNTQ4IDcgMTMuMDMxVjIyLjk2OUM3IDI2LjI5NDYgOS43MDU0OCAyOSAxMy4wMzEgMjlIMjIuOTY5QzI2LjI5NDYgMjkgMjkgMjYuMjk0NSAyOSAyMi45NjlWMTMuMDMxQzI5IDkuNzA1NDggMjYuMjk0NiA3IDIyLjk2OSA3Wk0xOCAyNC4wMzQyQzE0LjY3MjcgMjQuMDM0MiAxMS45NjU5IDIxLjMyNzMgMTEuOTY1OSAxOEMxMS45NjU5IDE0LjY3MjcgMTQuNjcyOCAxMS45NjU5IDE4IDExLjk2NTlDMjEuMzI3MiAxMS45NjU5IDI0LjAzNDIgMTQuNjcyOCAyNC4wMzQyIDE4QzI0LjAzNDIgMjEuMzI3MiAyMS4zMjcyIDI0LjAzNDIgMTggMjQuMDM0MlpNMjQuMzk1MSAxMy40MzgzQzIzLjM4NDIgMTMuNDM4MyAyMi41NjE4IDEyLjYxNTggMjIuNTYxOCAxMS42MDVDMjIuNTYxOCAxMC41OTQxIDIzLjM4NDIgOS43NzE2MSAyNC4zOTUxIDkuNzcxNjFDMjUuNDA2IDkuNzcxNjEgMjYuMjI4NCAxMC41OTQgMjYuMjI4NCAxMS42MDQ5QzI2LjIyODQgMTIuNjE1OCAyNS40MDYgMTMuNDM4MyAyNC4zOTUxIDEzLjQzODNaIiBmaWxsPSIjRjlGOUY5Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVsZW1lbnRvci1ncmlkLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZWxlbWVudG9yLWljb24gZWxlbWVudG9yLXNvY2lhbC1pY29uIGVsZW1lbnRvci1zb2NpYWwtaWNvbi0gZWxlbWVudG9yLXJlcGVhdGVyLWl0ZW0tNTcyYzI4MyIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWxlbWVudG9yLXNjcmVlbi1vbmx5Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjEwIiBmaWxsPSIjMTI2MkZGIj48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS44MTE1IDE2LjMxNTVMMjcuODI1MyA3SDI1LjkyNjNMMTguOTY3OSAxNS4wODg1TDEzLjQxMDIgN0g3TDE1LjQwNDMgMTkuMjMxM0w3IDI5SDguODk5MTRMMTYuMjQ3NSAyMC40NTgzTDIyLjExNjggMjlIMjguNTI2OUwxOS44MTEgMTYuMzE1NUgxOS44MTE1Wk0xNy4yMTAzIDE5LjMzOUwxNi4zNTg4IDE4LjEyMTFMOS41ODM0MyA4LjQyOTY0SDEyLjUwMDRMMTcuOTY4MiAxNi4yNTA5TDE4LjgxOTcgMTcuNDY4OUwyNS45MjcyIDI3LjYzNTRIMjMuMDEwMkwxNy4yMTAzIDE5LjMzOTVWMTkuMzM5WiIgZmlsbD0iI0Y5RjlGOSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgkJCQkJCQkgIAoJCQkJCQkJICAJCSA8c3R5bGU+CgkJCSAgIC5mb290ZXJfc29jaWFsIHsKCQkJCSAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCQkJCSAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CgkJCSAgIH0KCQkJICAgQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7CgkJCQkuZm9vdGVyX3NvY2lhbCB7CgkJCQkgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CgkJCSAgIH0gICAKCQkJICAgfQoJCQkgICA8L3N0eWxlPgogICAgICAgICAgICAgICAgCgkJCQk8ZGl2IGNsYXNzPSJlLWNvbi1pbm5lciBmb290ZXJfc29jaWFsIj4KCQkJCSA8YSBocmVmPSJtYWlsdG86YWRtaW5AY2lyY3VpdHRyYWRldGVjaC5jb20iIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6IHdoaXRlO2FsaWduLWl0ZW1zOiBjZW50ZXI7ZGlzcGxheTogZmxleDt0ZXh0LWFsaWduOiBjZW50ZXI7Ij48aW1nIHNyYz0iazk5L2Fzc2V0cy9tYWlsLnN2ZyIgc3R5bGU9IndpZHRoOiAzNnB4O21hcmdpbi1yaWdodDogMTBweDsiPmFkbWluQGNpcmN1aXR0cmFkZXRlY2guY29tPC9hPgoJCQkgIAogICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3QubWUvIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiB3aGl0ZTthbGlnbi1pdGVtczogY2VudGVyO2Rpc3BsYXk6IGZsZXg7dGV4dC1hbGlnbjogY2VudGVyOyI+PGltZyBzcmM9Ims5OS9hc3NldHMvdGcuc3ZnIiBzdHlsZT0id2lkdGg6IDMwcHg7bWFyZ2luLXJpZ2h0OiAxMHB4OyI+R1JPVVAgQ0hBVDwvYT4KCQkJICAgPGEgaHJlZj0iaHR0cHM6Ly90Lm1lLyIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogd2hpdGU7YWxpZ24taXRlbXM6IGNlbnRlcjtkaXNwbGF5OiBmbGV4O3RleHQtYWxpZ246Y2VudGVyOyI+PGltZyBzcmM9Ims5OS9hc3NldHMvdGcuc3ZnIiBzdHlsZT0id2lkdGg6IDMwcHg7bWFyZ2luLXJpZ2h0OiAxMHB4OyI+R1JPVVAgQ0hBTk5FTDwvYT4KCQkJICAgPGEgaHJlZj0iaHR0cHM6Ly90Lm1lLyIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogd2hpdGU7YWxpZ24taXRlbXM6IGNlbnRlcjtkaXNwbGF5OiBmbGV4O3RleHQtYWxpZ246IGNlbnRlcjsiPjxpbWcgc3JjPSJrOTkvYXNzZXRzL3RnLnN2ZyIgc3R5bGU9IndpZHRoOiAzMHB4O21hcmdpbi1yaWdodDogMTBweDsiPlNVUFBPUlQ8L2E+CgkJCSAgIAogICAgICAgICAgICA8L2Rpdj4KCQkJCQkJCSAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoJCQkJCQkgICAKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8L2Zvb3Rlcj4KICAgICAgPC9kaXY+CiAgICAgIDwhLS0gI3BhZ2UgLS0+CiAgICAgIDxzY3JpcHQ+CiAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAkKCcucGF5X2Nhcm91c2VsJykub3dsQ2Fyb3VzZWwoewogICAgICAgICAgICAgICBsb29wOnRydWUsCiAgICAgICAgICAgICAgIG1hcmdpbjowLAogICAgICAgICAgICAgICBhdXRvcGxheTp0cnVlLCAgCiAgICAgICAgICAgICAgIGF1dG9wbGF5VGltZW91dDo0MDAwLAogICAgICAgICAgICAgICBhdXRvcGxheUhvdmVyUGF1c2U6dHJ1ZSwKICAgICAgICAgICAgICAgbmF2OmZhbHNlLAogICAgICAgICAgICAgICBkb3RzOmZhbHNlLAogICAgICAgICAgICAgICByZXNwb25zaXZlOnsKICAgICAgICAgICAgICAgICAgIDA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjIKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAzMjA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjIKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICA0ODA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjIKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICA2MDA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjIKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICA3Njc6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjMKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICA5OTE6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjQKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAxMjAwOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczo2CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICB9KTsKICAgICAgICAgICB9KTsJCiAgICAgIDwvc2NyaXB0PgogICAgICA8c2NyaXB0PgogICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICAgJCgnLnRlc3RfY2Fyb3VzZWwnKS5vd2xDYXJvdXNlbCh7CiAgICAgICAgICAgICAgIGxvb3A6dHJ1ZSwKICAgICAgICAgICAgICAgbWFyZ2luOjAsCiAgICAgICAgICAgICAgIGF1dG9wbGF5OnRydWUsICAKICAgICAgICAgICAgICAgYXV0b3BsYXlUaW1lb3V0OjQwMDAsCiAgICAgICAgICAgICAgIGF1dG9wbGF5SG92ZXJQYXVzZTp0cnVlLAogICAgICAgICAgICAgICBuYXY6ZmFsc2UsCiAgICAgICAgICAgICAgIGRvdHM6ZmFsc2UsCiAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6ewogICAgICAgICAgICAgICAgICAgMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDMyMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDQ4MDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDYwMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDc2Nzp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDk5MTp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDEyMDA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjEKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0pOwogICAgICAgICAgIH0pOwkKICAgICAgPC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQ+CiAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAkKCcuY2xpZW50X2Nhcm91c2VsJykub3dsQ2Fyb3VzZWwoewogICAgICAgICAgICAgICBsb29wOnRydWUsCiAgICAgICAgICAgICAgIG1hcmdpbjowLAogICAgICAgICAgICAgICBhdXRvcGxheTp0cnVlLCAgCiAgICAgICAgICAgICAgIGF1dG9wbGF5VGltZW91dDo0MDAwLAogICAgICAgICAgICAgICBhdXRvcGxheUhvdmVyUGF1c2U6dHJ1ZSwKICAgICAgICAgICAgICAgbmF2OmZhbHNlLAogICAgICAgICAgICAgICBkb3RzOmZhbHNlLAogICAgICAgICAgICAgICByZXNwb25zaXZlOnsKICAgICAgICAgICAgICAgICAgIDA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjEKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAzMjA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjEKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICA0ODA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjEKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICA2MDA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjEKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICA3Njc6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjEKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICA5OTE6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjIKICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAxMjAwOnsKICAgICAgICAgICAgICAgICAgICAgICBpdGVtczozCiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICB9KTsKICAgICAgICAgICB9KTsJCiAgICAgIDwvc2NyaXB0PgogICAgICA8c2NyaXB0PgogICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICAgJCgnLnVzZXJfY2Fyb3VzZWwnKS5vd2xDYXJvdXNlbCh7CiAgICAgICAgICAgICAgIGxvb3A6dHJ1ZSwKICAgICAgICAgICAgICAgbWFyZ2luOjAsCiAgICAgICAgICAgICAgIGF1dG9wbGF5OnRydWUsICAKICAgICAgICAgICAgICAgYXV0b3BsYXlUaW1lb3V0OjQwMDAsCiAgICAgICAgICAgICAgIGF1dG9wbGF5SG92ZXJQYXVzZTp0cnVlLAogICAgICAgICAgICAgICBuYXY6ZmFsc2UsCiAgICAgICAgICAgICAgIGRvdHM6ZmFsc2UsCiAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6ewogICAgICAgICAgICAgICAgICAgMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDMyMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDQ4MDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDYwMDp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDc2Nzp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDk5MTp7CiAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6MQogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIDEyMDA6ewogICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOjEKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0pOwogICAgICAgICAgIH0pOwkKICAgICAgPC9zY3JpcHQ+CiAgICAgIDwhLS0tLT09PT09PT09ICBDT1VOVERPV04gUEFSVCBTVEFSVCAgPT09PT09PT0tLS0tLT4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nbWV0Zm9ybS11aS1jc3MnIGhyZWY9J2s5OS9hc3NldHMvd3AtY29udGVudC9wbHVnaW5zL21ldGZvcm0vcHVibGljL2Fzc2V0cy9jc3MvbWV0Zm9ybS11aTNmZDAuY3NzP3Zlcj0zLjguMicgbWVkaWE9J2FsbCcgLz4KICAgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nbWV0Zm9ybS1zdHlsZS1jc3MnIGhyZWY9J2s5OS9hc3NldHMvd3AtY29udGVudC9wbHVnaW5zL21ldGZvcm0vcHVibGljL2Fzc2V0cy9jc3Mvc3R5bGUzZmQwLmNzcz92ZXI9My44LjInIG1lZGlhPSdhbGwnIC8+CiAgICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2VsZW1lbnRvci1wb3N0LTY2LWNzcycgaHJlZj0nazk5L2Fzc2V0cy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvOC9lbGVtZW50b3IvY3NzL3Bvc3QtNjY1ZmVhLmNzcz92ZXI9MTcwNjU3NDkyMycgbWVkaWE9J2FsbCcgLz4KICAgICAgPHNjcmlwdCBzcmM9ImNvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMy42LjQubWluLmpzIj48L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9Ims5OS9hc3NldHMvd3AtY29udGVudC90aGVtZXMvaGVsbG8tZWxlbWVudG9yL2Fzc2V0cy9qcy9oZWxsby1mcm9udGVuZC5taW4uanMiIGlkPSJoZWxsby10aGVtZS1mcm9udGVuZC1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9oZWFkZXItZm9vdGVyLWVsZW1lbnRvci9pbmMvanMvZnJvbnRlbmQuanMiIGlkPSJoZmUtZnJvbnRlbmQtanMtanMiPjwvc2NyaXB0PgogICAgICA8c2NyaXB0IHNyYz0iazk5L2Fzc2V0cy93cC1jb250ZW50L3BsdWdpbnMvbWV0Zm9ybS9wdWJsaWMvYXNzZXRzL2pzL2h0bS5qcyIgaWQ9Imh0bS1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJrOTkvYXNzZXRzL3dwLWluY2x1ZGVzL2pzL2Rpc3QvdmVuZG9yL3dwLXBvbHlmaWxsLWluZXJ0Lm1pbi5qcyIgaWQ9IndwLXBvbHlmaWxsLWluZXJ0LWpzIj48L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9Ims5OS9hc3NldHMvd3AtaW5jbHVkZXMvanMvZGlzdC92ZW5kb3IvcmVnZW5lcmF0b3ItcnVudGltZS5taW4uanMiIGlkPSJyZWdlbmVyYXRvci1ydW50aW1lLWpzIj48L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9Ims5OS9hc3NldHMvd3AtaW5jbHVkZXMvanMvZGlzdC92ZW5kb3Ivd3AtcG9seWZpbGwubWluLmpzIiBpZD0id3AtcG9seWZpbGwtanMiPjwvc2NyaXB0PgogICAgICA8c2NyaXB0IHNyYz0iazk5L2Fzc2V0cy93cC1pbmNsdWRlcy9qcy9kaXN0L3ZlbmRvci9yZWFjdC5taW4uanMiIGlkPSJyZWFjdC1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJrOTkvYXNzZXRzL3dwLWluY2x1ZGVzL2pzL2Rpc3QvdmVuZG9yL3JlYWN0LWRvbS5taW4uanMiIGlkPSJyZWFjdC1kb20tanMiPjwvc2NyaXB0PgogICAgICA8c2NyaXB0IHNyYz0iazk5L2Fzc2V0cy93cC1pbmNsdWRlcy9qcy9kaXN0L2VzY2FwZS1odG1sLm1pbi5qcyIgaWQ9IndwLWVzY2FwZS1odG1sLWpzIj48L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9Ims5OS9hc3NldHMvd3AtaW5jbHVkZXMvanMvZGlzdC9lbGVtZW50Lm1pbi5qcyIgaWQ9IndwLWVsZW1lbnQtanMiPjwvc2NyaXB0PgogICAgICA8c2NyaXB0IGlkPSJtZXRmb3JtLWFwcC1qcy1leHRyYSI+CiAgICAgICAgIHZhciBtZiA9IHsicG9zdFR5cGUiOiJwYWdlIiwicmVzdFVSSSI6Imh0dHBzOlwvXC9lbGVtZW50b3IudXB0ZWNoaWVzLmNvbVwvcHJvdG9uXC93cC1qc29uXC9tZXRmb3JtXC92MVwvZm9ybXNcL3ZpZXdzXC8iLCJtaW5Nc2cxIjoiTWluaW11bSBsZW5ndGggc2hvdWxkIGJlICIsIk1zZzIiOiIgY2hhcmFjdGVyIGxvbmcuIiwibWF4TXNnMSI6Ik1heGltdW0gbGVuZ3RoIHNob3VsZCBiZSAiLCJtYXhOdW0iOiJNYXhpbXVtIG51bWJlciBzaG91bGQgYmUgIiwibWluTnVtIjoiTWluaW11bSBudW1iZXIgc2hvdWxkIGJlICJ9OwogICAgICA8L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9Ims5OS9hc3NldHMvd3AtY29udGVudC9wbHVnaW5zL21ldGZvcm0vcHVibGljL2Fzc2V0cy9qcy9hcHAuanMiIGlkPSJtZXRmb3JtLWFwcC1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2pzL3dlYnBhY2sucnVudGltZS5taW4uanMiIGlkPSJlbGVtZW50b3Itd2VicGFjay1ydW50aW1lLWpzIj48L3NjcmlwdD4KICAgICAgPHNjcmlwdCBzcmM9Ims5OS9hc3NldHMvd3AtY29udGVudC9wbHVnaW5zL2VsZW1lbnRvci9hc3NldHMvanMvZnJvbnRlbmQtbW9kdWxlcy5taW4uanMiIGlkPSJlbGVtZW50b3ItZnJvbnRlbmQtbW9kdWxlcy1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2xpYi93YXlwb2ludHMvd2F5cG9pbnRzLm1pbi5qcyIgaWQ9ImVsZW1lbnRvci13YXlwb2ludHMtanMiPjwvc2NyaXB0PgogICAgICA8c2NyaXB0IHNyYz0iazk5L2Fzc2V0cy93cC1pbmNsdWRlcy9qcy9qcXVlcnkvdWkvY29yZS5taW4zZjE0LmpzP3Zlcj0xLjEzLjIiIGlkPSJqcXVlcnktdWktY29yZS1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgaWQ9ImVsZW1lbnRvci1mcm9udGVuZC1qcy1iZWZvcmUiPgogICAgICAgICB2YXIgZWxlbWVudG9yRnJvbnRlbmRDb25maWcgPSB7ImVudmlyb25tZW50TW9kZSI6eyJlZGl0IjpmYWxzZSwid3BQcmV2aWV3IjpmYWxzZSwiaXNTY3JpcHREZWJ1ZyI6ZmFsc2V9LCJpMThuIjp7InNoYXJlT25GYWNlYm9vayI6IlNoYXJlIG9uIEZhY2Vib29rIiwic2hhcmVPblR3aXR0ZXIiOiJTaGFyZSBvbiBUd2l0dGVyIiwicGluSXQiOiJQaW4gaXQiLCJkb3dubG9hZCI6IkRvd25sb2FkIiwiZG93bmxvYWRJbWFnZSI6IkRvd25sb2FkIGltYWdlIiwiZnVsbHNjcmVlbiI6IkZ1bGxzY3JlZW4iLCJ6b29tIjoiWm9vbSIsInNoYXJlIjoiU2hhcmUiLCJwbGF5VmlkZW8iOiJQbGF5IFZpZGVvIiwicHJldmlvdXMiOiJQcmV2aW91cyIsIm5leHQiOiJOZXh0IiwiY2xvc2UiOiJDbG9zZSIsImExMXlDYXJvdXNlbFdyYXBwZXJBcmlhTGFiZWwiOiJDYXJvdXNlbCB8IEhvcml6b250YWwgc2Nyb2xsaW5nOiBBcnJvdyBMZWZ0ICYgUmlnaHQiLCJhMTF5Q2Fyb3VzZWxQcmV2U2xpZGVNZXNzYWdlIjoiUHJldmlvdXMgc2xpZGUiLCJhMTF5Q2Fyb3VzZWxOZXh0U2xpZGVNZXNzYWdlIjoiTmV4dCBzbGlkZSIsImExMXlDYXJvdXNlbEZpcnN0U2xpZGVNZXNzYWdlIjoiVGhpcyBpcyB0aGUgZmlyc3Qgc2xpZGUiLCJhMTF5Q2Fyb3VzZWxMYXN0U2xpZGVNZXNzYWdlIjoiVGhpcyBpcyB0aGUgbGFzdCBzbGlkZSIsImExMXlDYXJvdXNlbFBhZ2luYXRpb25CdWxsZXRNZXNzYWdlIjoiR28gdG8gc2xpZGUifSwiaXNfcnRsIjpmYWxzZSwiYnJlYWtwb2ludHMiOnsieHMiOjAsInNtIjo0ODAsIm1kIjo3NjgsImxnIjoxMDI1LCJ4bCI6MTQ0MCwieHhsIjoxNjAwfSwicmVzcG9uc2l2ZSI6eyJicmVha3BvaW50cyI6eyJtb2JpbGUiOnsibGFiZWwiOiJNb2JpbGUgUG9ydHJhaXQiLCJ2YWx1ZSI6NzY3LCJkZWZhdWx0X3ZhbHVlIjo3NjcsImRpcmVjdGlvbiI6Im1heCIsImlzX2VuYWJsZWQiOnRydWV9LCJtb2JpbGVfZXh0cmEiOnsibGFiZWwiOiJNb2JpbGUgTGFuZHNjYXBlIiwidmFsdWUiOjg4MCwiZGVmYXVsdF92YWx1ZSI6ODgwLCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjpmYWxzZX0sInRhYmxldCI6eyJsYWJlbCI6IlRhYmxldCBQb3J0cmFpdCIsInZhbHVlIjoxMDI0LCJkZWZhdWx0X3ZhbHVlIjoxMDI0LCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjp0cnVlfSwidGFibGV0X2V4dHJhIjp7ImxhYmVsIjoiVGFibGV0IExhbmRzY2FwZSIsInZhbHVlIjoxMjAwLCJkZWZhdWx0X3ZhbHVlIjoxMjAwLCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjpmYWxzZX0sImxhcHRvcCI6eyJsYWJlbCI6IkxhcHRvcCIsInZhbHVlIjoxMzY2LCJkZWZhdWx0X3ZhbHVlIjoxMzY2LCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjpmYWxzZX0sIndpZGVzY3JlZW4iOnsibGFiZWwiOiJXaWRlc2NyZWVuIiwidmFsdWUiOjI0MDAsImRlZmF1bHRfdmFsdWUiOjI0MDAsImRpcmVjdGlvbiI6Im1pbiIsImlzX2VuYWJsZWQiOmZhbHNlfX19LCJ2ZXJzaW9uIjoiMy4xOS4xIiwiaXNfc3RhdGljIjpmYWxzZSwiZXhwZXJpbWVudGFsRmVhdHVyZXMiOnsiZV9vcHRpbWl6ZWRfYXNzZXRzX2xvYWRpbmciOnRydWUsImVfb3B0aW1pemVkX2Nzc19sb2FkaW5nIjp0cnVlLCJlX2ZvbnRfaWNvbl9zdmciOnRydWUsImFkZGl0aW9uYWxfY3VzdG9tX2JyZWFrcG9pbnRzIjp0cnVlLCJjb250YWluZXIiOnRydWUsImVfc3dpcGVyX2xhdGVzdCI6dHJ1ZSwiaGVsbG8tdGhlbWUtaGVhZGVyLWZvb3RlciI6dHJ1ZSwiYmxvY2tfZWRpdG9yX2Fzc2V0c19vcHRpbWl6ZSI6dHJ1ZSwiYWktbGF5b3V0Ijp0cnVlLCJsYW5kaW5nLXBhZ2VzIjp0cnVlLCJlX2ltYWdlX2xvYWRpbmdfb3B0aW1pemF0aW9uIjp0cnVlLCJlX2dsb2JhbF9zdHlsZWd1aWRlIjp0cnVlfSwidXJscyI6eyJhc3NldHMiOiJodHRwczpcL1wvZWxlbWVudG9yLnVwdGVjaGllcy5jb21cL3Byb3Rvblwvd3AtY29udGVudFwvcGx1Z2luc1wvZWxlbWVudG9yXC9hc3NldHNcLyJ9LCJzd2lwZXJDbGFzcyI6InN3aXBlciIsInNldHRpbmdzIjp7InBhZ2UiOltdLCJlZGl0b3JQcmVmZXJlbmNlcyI6W119LCJraXQiOnsiYWN0aXZlX2JyZWFrcG9pbnRzIjpbInZpZXdwb3J0X21vYmlsZSIsInZpZXdwb3J0X3RhYmxldCJdLCJnbG9iYWxfaW1hZ2VfbGlnaHRib3giOiJ5ZXMiLCJsaWdodGJveF9lbmFibGVfY291bnRlciI6InllcyIsImxpZ2h0Ym94X2VuYWJsZV9mdWxsc2NyZWVuIjoieWVzIiwibGlnaHRib3hfZW5hYmxlX3pvb20iOiJ5ZXMiLCJsaWdodGJveF9lbmFibGVfc2hhcmUiOiJ5ZXMiLCJsaWdodGJveF90aXRsZV9zcmMiOiJ0aXRsZSIsImxpZ2h0Ym94X2Rlc2NyaXB0aW9uX3NyYyI6ImRlc2NyaXB0aW9uIiwiaGVsbG9faGVhZGVyX2xvZ29fdHlwZSI6InRpdGxlIiwiaGVsbG9faGVhZGVyX21lbnVfbGF5b3V0IjoiaG9yaXpvbnRhbCIsImhlbGxvX2Zvb3Rlcl9sb2dvX3R5cGUiOiJsb2dvIn0sInBvc3QiOnsiaWQiOjksInRpdGxlIjoiUHJvdG9uJTIwJUUyJTgwJTkzJTIwQ3J5cHRvJTIwV2FsbGV0JTIwTGFuZGluZyUyMFBhZ2UiLCJleGNlcnB0IjoiIiwiZmVhdHVyZWRJbWFnZSI6ZmFsc2V9fTsKICAgICAgPC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJrOTkvYXNzZXRzL3dwLWNvbnRlbnQvcGx1Z2lucy9lbGVtZW50b3IvYXNzZXRzL2pzL2Zyb250ZW5kLm1pbi5qcyIgaWQ9ImVsZW1lbnRvci1mcm9udGVuZC1qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQgc3JjPSJrOTkvYXNzZXRzL2pzL3Nwb3AubWluLmh0bWwiPjwvc2NyaXB0PgogICAgIAogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIHZhciBjb3VudHJ5X2xpc3QgPSBbIkFmZ2hhbmlzdGFuIiwgIkFsYmFuaWEiLCAiQWxnZXJpYSIsICJBbmRvcnJhIiwgIkFuZ29sYSIsICJBbmd1aWxsYSIsICJBbnRpZ3VhICYgQmFyYnVkYSIsICJBcmdlbnRpbmEiLCAiQXJtZW5pYSIsICJBdXN0cmFsaWEiLCAiQXVzdHJpYSIsICJBemVyYmFpamFuIiwgIkJhaGFtYXMiLCAiQmFocmFpbiIsICJCYW5nbGFkZXNoIiwgIkJlbGFydXMiLCAiQmVsZ2l1bSIsICAiQmVuaW4iLCAiQmVybXVkYSIsICJCaHV0YW4iLCAiQm9saXZpYSIsICJCb3NuaWEgJiBIZXJ6ZWdvdmluYSIsICJCb3Rzd2FuYSIsICJCcmF6aWwiLCAiQnJpdGlzaCBWaXJnaW4gSXNsYW5kcyIsICJCcnVuZWkiLCAiQnVsZ2FyaWEiLCAiQnVydW5kaSIsICJDYW1ib2RpYSIsICJDYW1lcm9vbiIsICJDYXBlIFZlcmRlIiwgIkNoYWQiLCAiQ2hpbGUiLCAiQ2hpbmEiLCAiQ29sb21iaWEiLCAiQ29uZ28iLCAiQ29zdGEgUmljYSIsICJDb3RlIEQgSXZvaXJlIiwgIkNyb2F0aWEiLCAiQ3ViYSIsICJDeXBydXMiLCAiQ3plY2ggUmVwdWJsaWMiLCAiRGVubWFyayIsICJEamlib3V0aSIsICJEb21pbmljYSIsICJEb21pbmljYW4gUmVwdWJsaWMiLCAiRWN1YWRvciIsICJFZ3lwdCIsICJFbCBTYWx2YWRvciIsICJFcXVhdG9yaWFsIEd1aW5lYSIsICJFc3RvbmlhIiwgIkV0aGlvcGlhIiwgIkZhbGtsYW5kIElzbGFuZHMiLCAiRmFyb2UgSXNsYW5kcyIsIkZpbmxhbmQiLCAiRnJhbmNlIiwgIkZyZW5jaCBQb2x5bmVzaWEiLCAiRnJlbmNoIFdlc3QgSW5kaWVzIiwgIkdhYm9uIiwgIkdhbWJpYSIsICJHZW9yZ2lhIiwgIkdlcm1hbnkiLCAiR2licmFsdGFyIiwgIkdyZWVjZSIsICJHcmVlbmxhbmQiLCAiR3JlbmFkYSIsICJHdWF0ZW1hbGEiLCAiR3VpbmVhIiwgIkhhaXRpIiwgIkhvbmR1cmFzIiwgIkhvbmcgS29uZyIsICJIdW5nYXJ5IiwgIkljZWxhbmQiLCAiSW5kaWEiLCAiSW5kb25lc2lhIiwgIklyYW4iLCAiSXJhcSIsICJJcmVsYW5kIiwgIklzcmFlbCIsICJJdGFseSIsICJKYW1haWNhIiwgIkphcGFuIiwgIkplcnNleSIsICJKb3JkYW4iLCAiS2F6YWtoc3RhbiIsICJLZW55YSIsICJLdXdhaXQiLCAgIkxhdHZpYSIsICJMZWJhbm9uIiwgIkxlc290aG8iLCAiTGliZXJpYSIsICJMaWJ5YSIsICJMaWVjaHRlbnN0ZWluIiwgIkxpdGh1YW5pYSIsICJMdXhlbWJvdXJnIiwgIk1hY2F1IiwgIk1hY2Vkb25pYSIsICJNYWRhZ2FzY2FyIiwgIk1hbGF3aSIsICJNYWxheXNpYSIsICJNYWxkaXZlcyIsICJNYWxpIiwgIk1hbHRhIiwgIk1hdXJpdGFuaWEiLCAiTWF1cml0aXVzIiwgIk1leGljbyIsICJNb2xkb3ZhIiwgIk1vbmFjbyIsICJNb25nb2xpYSIsICJNb250ZW5lZ3JvIiwgIk1vbnRzZXJyYXQiLCAiTW9yb2NjbyIsICJNb3phbWJpcXVlIiwgIk5hbWliaWEiLCAiTmVwYWwiLCAiTmV0aGVybGFuZHMiLCAiTmV0aGVybGFuZHMgQW50aWxsZXMiLCAiTmV3IENhbGVkb25pYSIsICJOZXcgWmVhbGFuZCIsICJOaWNhcmFndWEiLCAiTm9yd2F5IiwgIk9tYW4iLCAiUGFraXN0YW4iLCAiUGFsZXN0aW5lIiwgIlBhbmFtYSIsICJQYXB1YSBOZXcgR3VpbmVhIiwgIlBhcmFndWF5IiwgIlBlcnUiLCAiUGhpbGlwcGluZXMiLCAiUG9sYW5kIiwgIlBvcnR1Z2FsIiwgIlB1ZXJ0byBSaWNvIiwgIlFhdGFyIiwgIlJldW5pb24iLCAiUm9tYW5pYSIsICJSdXNzaWEiLCAiUndhbmRhIiwgIlNhaW50IFBpZXJyZSAmIE1pcXVlbG9uIiwgICJTYW4gTWFyaW5vIiwgIlNhdWRpIEFyYWJpYSIsICJTZW5lZ2FsIiwgIlNlcmJpYSIsICJTZXljaGVsbGVzIiwgIlNpZXJyYSBMZW9uZSIsICJTaW5nYXBvcmUiLCAiU2xvdmFraWEiLCAiU2xvdmVuaWEiLCAiU291dGggQWZyaWNhIiwgIlNvdXRoIEtvcmVhIiwgIlNwYWluIiwgIlNyaSBMYW5rYSIsICJTdWRhbiIsICJTdXJpbmFtZSIsICJTd2F6aWxhbmQiLCAiU3dlZGVuIiwgIlN3aXR6ZXJsYW5kIiwgIlN5cmlhIiwgIlRhaXdhbiIsICJUYWppa2lzdGFuIiwgIlRhbnphbmlhIiwgIlRoYWlsYW5kIiwgIlRvZ28iLCAiVG9uZ2EiLCAiVHJpbmlkYWQgJiBUb2JhZ28iLCAiVHVuaXNpYSIsICJUdXJrZXkiLCAiVHVya21lbmlzdGFuIiwgLCAiVWtyYWluZSIsICJVbml0ZWQgQXJhYiBFbWlyYXRlcyIsICJVbml0ZWQgS2luZ2RvbSIsICJVcnVndWF5IiwgIlV6YmVraXN0YW4iLCAiVmVuZXp1ZWxhIiwgIlZpZXRuYW0iLCAiVmlyZ2luIElzbGFuZHMgKFVTKSIsICJZZW1lbiJdOwogICAgICAgIHZhciBuYW1lX2xpc3QgPSBbIkxpbmRhIiwgIkJ1c2giLCAiSm9lIiwgIm1hcmsiLCAiTm9haCIsICJFbW1hIiwgIkxpYW0iLCAiU29waGlhIiwgIkphY29iIiAsIk9saXZpYSIgLCJNYXNvbiIgLCJJc2FiZWxsYSIgLCJXaWxsaWFtIiAsIkF2YSIgLCJFdGhhbiIsIk1pYSIgLCJNaWNoYWVsIiAsIkFiaWdhaWwiICwiQWxleGFuZGVyIiAsIkVtaWx5IiAsIkphbWVzIiwiTWFkaXNvbiIgLCJFbGlqYWgiICwiQ2hhcmxvdHRlIiwiRGFuaWVsIiAsIkVsaXphYmV0aCIgLCJCZW5qYW1pbiIgLCJBbWVsaWEiICwiQWlkZW4iICwiQ2hsb2UiICwiSmF5ZGVuIiwiRWxsYSIsIkxvZ2FuIiwiRXZlbHluIiwiTWF0dGhldyIsIkF2ZXJ5IiwiRGF2aWQiLCJTb2ZpYSIsIkpvc2VwaCIsIkhhcnBlciIsIkx1Y2FzIiwiR3JhY2UiLCJKYWNrc29uIiwiQWRkaXNvbiIsIkFudGhvbnkiLCJWaWN0b3JpYSIsIkpvc2h1YSIsIk5hdGFsaWUiLCJTYW11ZWwiLCJMaWx5IiwiQW5kcmV3IiwiQXVicmV5IiwiR2FicmllbCIsIkxpbGxpYW4iLCJDaHJpc3RvcGhlciIsIlpvZXkiLCJKb2huIiwiSGFubmFoIiwiRHlsYW4iLCJMYXlsYSIsIkNhcnRlciIsIkJyb29rbHluIiwiSXNhYWMiLCJTYW1hbnRoYSIsIlJ5YW4iLCJab2UiLCJMdWtlIiwiTGVhaCIsIk9saXZlciIsIlNjYXJsZXR0IiwiTmF0aGFuIiwiUmlsZXkiLCJIZW5yeSIsIkNhbWlsYSIsIk93ZW4iLCJTYXZhbm5haCIsICJDYWxlYiIsIkFubmEiLCJXeWF0dCIsIkF1ZHJleSIsIkNocmlzdGlhbiIsIkFsbGlzb24iLCJTZWJhc3RpYW4iLCJBcmlhIl07CiAgICAgICAgZnVuY3Rpb24gY2hvaWNlKGFycmF5KSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhcnJheS5sZW5ndGgpXTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gcmFuZG9tTnVtYmVyKG1pbiwgbWF4KSB7CiAgICAgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikgKyBtaW47CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHBheWlub3V0KCkgewogICAgICAgICAgICB2YXIgbnUgPSBNYXRoLmZsb29yKHJhbmRvbU51bWJlcig1MDAsIDEwNTAwKSk7CiAgICAgICAgICAgIHZhciBuYW0gPSBjaG9pY2UobmFtZV9saXN0KTsKICAgICAgICAgICAgdmFyIGNvbiA9IGNob2ljZShjb3VudHJ5X2xpc3QpOwogICAgICAgICAgICB2YXIgbW9kZSA9IGNob2ljZShbJ2RlcG9zaXRlZCcsICd3aXRoZHJldycsICdyZWludmVzdGVkJywgJ2ludmVzdGVkJ10pOwogICAgICAgICAgICBzcG9wKHsKICAgICAgICAgICAgICAgIHRlbXBsYXRlOiBuYW0gKyAiIGZyb20gIiArIGNvbiArICIgIiArIG1vZGUgKyAiICQiICsgbnUgKyAiIC4uLiIsCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLAogICAgICAgICAgICAgICAgc3R5bGU6ICdzdWNjZXNzJywKICAgICAgICAgICAgICAgIGF1dG9jbG9zZSA6IDEwMDAwLAogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgc2V0SW50ZXJ2YWwocGF5aW5vdXQsMjQwMDApOwogICAgPC9zY3JpcHQ+CiAgICA8IS0tZm9vdGVyIHNlY3Rpb24gZW5kLS0+CiAgICAKICAgIAogICAgCiAgICA8c2NyaXB0IHNyYz0iLy9jb2RlLmppdm9zaXRlLmNvbS93aWRnZXQvT3RmalJWTUZOSSIgYXN5bmM+PC9zY3JpcHQ+Cgo8IS0tIEdldEJ1dHRvbi5pbyB3aWRnZXQgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgIChmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIG9wdGlvbnMgPSB7CiAgICAgICAgICAgIHdoYXRzYXBwOiAiKzQ0NzM1MjI0NDkzOSIsIC8vIFdoYXRzQXBwIG51bWJlcgogICAgICAgICAgICBjYWxsX3RvX2FjdGlvbjogIk1lc3NhZ2UgdXMiLCAvLyBDYWxsIHRvIGFjdGlvbgogICAgICAgICAgICBidXR0b25fY29sb3I6ICIjRkY2NTUwIiwgLy8gQ29sb3Igb2YgYnV0dG9uCiAgICAgICAgICAgIHBvc2l0aW9uOiAibGVmdCIsIC8vIFBvc2l0aW9uIG1heSBiZSAncmlnaHQnIG9yICdsZWZ0JwogICAgICAgIH07CiAgICAgICAgdmFyIHByb3RvID0gJ2h0dHBzOicsIGhvc3QgPSAiZ2V0YnV0dG9uLmlvIiwgdXJsID0gcHJvdG8gKyAnLy9zdGF0aWMuJyArIGhvc3Q7CiAgICAgICAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7IHMuYXN5bmMgPSB0cnVlOyBzLnNyYyA9IHVybCArICcvd2lkZ2V0LXNlbmQtYnV0dG9uL2pzL2luaXQuanMnOwogICAgICAgIHMub25sb2FkID0gZnVuY3Rpb24gKCkgeyBXaFdpZGdldFNlbmRCdXR0b24uaW5pdChob3N0LCBwcm90bywgb3B0aW9ucyk7IH07CiAgICAgICAgdmFyIHggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07IHgucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocywgeCk7CiAgICB9KSgpOwo8L3NjcmlwdD4KPCEtLSAvR2V0QnV0dG9uLmlvIHdpZGdldCAtLT4KCiAKICAgPC9ib2R5Pgo8L2h0bWw+Cg=="}},"time_used":446,"timings":{"blocked":-1,"dns":69,"connect":34,"send":0,"wait":302,"receive":0,"ssl":41},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"circuittradetech.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}}]}
