Six suites. Four pools.The whole villa is yours. 6 ห้องสวีท สระว่ายน้ำ 4 สระเหมาทั้งวิลล่าเป็นของคุณ
A secluded six-bedroom retreat ten minutes from central Pattaya, made for groups of 14 to 31. วิลล่า 6 ห้องนอนสุดเป็นส่วนตัว ห่างจากตัวเมืองพัทยา 10 นาที รองรับกลุ่ม 14 ถึง 31 คน
6 en-suite bedrooms ห้องนอนมีห้องน้ำในตัว
14–31 guests คน
Book direct · No agency fees จองตรง · ไม่มีค่าเอเจนซี่
★ 5.0 on Google · 666 reviews บน Google · 666 รีวิว
Scroll เลื่อนลง
Welcome to The Hidden Gem ยินดีต้อนรับสู่ The Hidden Gem
One villa, held only for your group. วิลล่าหลังเดียว สงวนไว้เพื่อกลุ่มคุณ
Six individually themed suites named for cocktails, a private pool at the centre, a full kitchen, and indoor and outdoor living designed for a group to gather. Secluded, yet minutes from central Pattaya. ห้องสวีท 6 ห้องในธีมค็อกเทลเฉพาะตัว สระว่ายน้ำส่วนตัวใจกลางบ้าน ครัวครบครัน และพื้นที่นั่งเล่นทั้งในและนอกบ้านสำหรับการรวมตัวของกลุ่ม เป็นส่วนตัวแต่ห่างจากตัวเมืองพัทยาเพียงไม่กี่นาที
Inspiration behind the artwork แรงบันดาลใจเบื้องหลังงานศิลป์
‘Drink, Drank, Drunk’ · watch the film ชมวิดีโอ
Accommodation capacity ความจุที่พัก
Room for 14, space for 31 พักได้ 14 รองรับถึง 31
6 Bedrooms ห้องนอน
5 King beds เตียงคิง
2 Queen beds เตียงควีน
Sleeps 14 as standard. Add twin beds (750 THB each) for up to 24, and sofa beds for up to 31. Tell us your group size on LINE and we’ll confirm the exact setup. มาตรฐานพักได้ 14 คน เพิ่มเตียงเดี่ยว (เตียงละ 750 บาท) ได้ถึง 24 และโซฟาเบดได้ถึง 31 แจ้งจำนวนคนทาง LINE เราจะจัดเตียงให้พอดี
Hidden Gem Gallery แกลเลอรี
Explore every corner สำรวจทุกมุมของวิลล่า
Browse by room and by space. Tap any photo to view it full-screen. เลือกดูตามห้องและพื้นที่ต่าง ๆ แตะที่รูปเพื่อดูแบบเต็มจอ
The pool สระว่ายน้ำ
A private pool at the heart of it all สระส่วนตัวใจกลางบ้าน
Swim, lounge and gather in complete privacy. The pool and terrace are the centre of the villa, and they belong to your group alone. ว่ายน้ำ พักผ่อน และสังสรรค์อย่างเป็นส่วนตัว สระและระเบียงคือหัวใจของวิลล่า และเป็นของกลุ่มคุณเท่านั้น
Availability วันว่าง
Check your dates, then message to book เช็ควันว่าง แล้วทักมาจอง
See what’s open, then send your dates on LINE — we confirm the villa and your group price in chat. ดูวันว่าง แล้วส่งวันที่ทาง LINE เรายืนยันการจองและราคากลุ่มในแชท
Available ว่าง Unavailable ไม่ว่าง
Guest reviews รีวิวผู้เข้าพัก
Location ทำเล Quiet street, minutes from the action ทำเลเงียบสงบ ห่างจากความคึกคักไม่กี่นาที Hidden away in Pattaya, private and quiet, yet a short drive from the beaches and dining. ซ่อนตัวอยู่ในพัทยา เป็นส่วนตัวและเงียบสงบ แต่ขับรถไม่ไกลถึงหาดและร้านอาหาร
38/8 Moo 5, Nong Prue, Bang Lamung, Chonburi 20150
Before you book ก่อนจอง
Questions groups ask คำถามที่พบบ่อย
How many people can stay? พักได้กี่คน? +
Fourteen across six en-suite rooms as standard (five kings, two queens). Twin beds (750 THB each) take it to 24, and sofa beds to 31. มาตรฐาน 14 คนใน 6 ห้อง (คิง 5 ควีน 2) เพิ่มเตียงเดี่ยว (เตียงละ 750 บาท) ได้ถึง 24 และโซฟาเบดถึง 31
Is the whole villa private to my group? เหมาทั้งหลังเป็นส่วนตัวไหม? +
Yes — you book the entire villa. All six rooms, the pool, kitchen and living areas are exclusively yours. ใช่ คุณเหมาทั้งวิลล่า ทั้ง 6 ห้อง สระ ครัว และพื้นที่นั่งเล่นเป็นของกลุ่มคุณ
How do I check dates and book? เช็ควันและจองยังไง? +
Message us on LINE (@hiddengem) or WhatsApp with your dates and group size. We reply quickly with availability, the total price, and how to secure it. ทักทาง LINE (@hiddengem) หรือ WhatsApp พร้อมวันที่และจำนวนคน เราตอบไวพร้อมวันว่าง ราคารวม และวิธียืนยัน
Can we host a celebration? จัดงานฉลองได้ไหม? +
The villa is popular for birthdays, family trips and company getaways. Tell us the occasion and headcount on LINE. วิลล่าเป็นที่นิยมสำหรับวันเกิด ทริปครอบครัว และทริปบริษัท แจ้งโอกาสและจำนวนคนทาง LINE
Tell us your dates.We’ll do the rest. บอกวันที่มาที่เหลือให้เราจัดการ
Send your dates and group size on LINE or WhatsApp. Quick reply, direct rates, the whole villa held for you. ส่งวันที่และจำนวนคนทาง LINE หรือ WhatsApp ตอบไว ราคาจองตรง เหมาทั้งวิลล่าเพื่อคุณ
Prefer to call? โทรได้ที่ 081-971-2938
CnZhciBCOD0naHR0cHM6Ly9oaWRkZW5nZW1wb29sdmlsbGEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI0LzA4Lyc7CnZhciBCOT0naHR0cHM6Ly9oaWRkZW5nZW1wb29sdmlsbGEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI0LzA5Lyc7CnZhciBST09NUz1bCiB7bmFtZTonTWFuaGF0dGFuJyxiZWQ6e2VuOidLaW5nIMK3IGVuLXN1aXRlJyx0aDon4LmA4LiV4Li14Lii4LiH4LiE4Li04LiHIMK3IOC4q+C5ieC4reC4h+C4meC5ieC4s+C5g+C4meC4leC4seC4pyd9LGNvdmVyOkI5Kydyb29tLTEud2VicCcsaW1nczpbJ0Zhdm91cml0ZXMtMjUtb2YtMTI1JywnRmF2b3VyaXRlcy0xNC1vZi0yOScsJ0Zhdm91cml0ZXMtOTctb2YtMTI1JywnRmF2b3VyaXRlcy0xMS1vZi0yOScsJ0Zhdm91cml0ZXMtMTAtb2YtMjknLCdGYXZvdXJpdGVzLTktb2YtMjknLCdGYXZvdXJpdGVzLTItb2YtOCcsJ0Zhdm91cml0ZXMtMS1vZi04JywnRmF2b3VyaXRlcy0yMi1vZi0xMjUnXX0sCiB7bmFtZTonQmx1ZSBIYXdhaWlhbicsYmVkOntlbjonS2luZyDCtyBlbi1zdWl0ZScsdGg6J+C5gOC4leC4teC4ouC4h+C4hOC4tOC4hyDCtyDguKvguYnguK3guIfguJnguYnguLPguYPguJnguJXguLHguKcnfSxjb3ZlcjpCOSsncm9vbS0yLndlYnAnLGltZ3M6WydGYXZvdXJpdGVzLTI5LW9mLTI5JywnRmF2b3VyaXRlcy0zMC1vZi0xMjUnLCdGYXZvdXJpdGVzLTExOS1vZi0xMjUnLCdGYXZvdXJpdGVzLTQtb2YtOCcsJ0Zhdm91cml0ZXMtNS1vZi01JywnRmF2b3VyaXRlcy00LW9mLTUnLCdGYXZvdXJpdGVzLTMtb2YtOCcsJ0Zhdm91cml0ZXMtMy1vZi01JywnRmF2b3VyaXRlcy0yLW9mLTUnXX0sCiB7bmFtZTonUGluayBMYWR5JyxiZWQ6e2VuOidLaW5nIMK3IGVuLXN1aXRlJyx0aDon4LmA4LiV4Li14Lii4LiH4LiE4Li04LiHIMK3IOC4q+C5ieC4reC4h+C4meC5ieC4s+C5g+C4meC4leC4seC4pyd9LGNvdmVyOkI5Kydyb29tLTMud2VicCcsaW1nczpbJ0Zhdm91cml0ZXMtMzUtb2YtMTI1JywnRmF2b3VyaXRlcy0zLW9mLTQnLCdGYXZvdXJpdGVzLTExLW9mLTEzJywnRmF2b3VyaXRlcy0xNS1vZi0yOScsJ0Zhdm91cml0ZXMtMzctb2YtMTI1JywnRmF2b3VyaXRlcy0zNC1vZi0xMjUnLCdGYXZvdXJpdGVzLTM4LW9mLTEyNScsJ0Zhdm91cml0ZXMtMzMtb2YtMTI1J119LAoge25hbWU6J0VzcHJlc3NvIE1hcnRpbmknLGJlZDp7ZW46J1F1ZWVuIMK3IGVuLXN1aXRlJyx0aDon4LmA4LiV4Li14Lii4LiH4LiE4Lin4Li14LiZIMK3IOC4q+C5ieC4reC4h+C4meC5ieC4s+C5g+C4meC4leC4seC4pyd9LGNvdmVyOkI5Kydyb29tLTQud2VicCcsaW1nczpbJ0Zhdm91cml0ZXMtNTgtb2YtMTI1JywnRmF2b3VyaXRlcy01Ni1vZi0xMjUnLCdGYXZvdXJpdGVzLTU1LW9mLTEyNScsJ0Zhdm91cml0ZXMtNTQtb2YtMTI1JywnRmF2b3VyaXRlcy02Mi1vZi0xMjUnLCdGYXZvdXJpdGVzLTIwLW9mLTI5JywnRmF2b3VyaXRlcy0xOS1vZi0yOScsJ0Zhdm91cml0ZXMtNjEtb2YtMTI1JywnRmF2b3VyaXRlcy02MC1vZi0xMjUnXX0sCiB7bmFtZTonTWludCBKdWxlcCcsYmVkOntlbjonS2luZyDCtyBlbi1zdWl0ZScsdGg6J+C5gOC4leC4teC4ouC4h+C4hOC4tOC4hyDCtyDguKvguYnguK3guIfguJnguYnguLPguYPguJnguJXguLHguKcnfSxjb3ZlcjpCOSsncm9vbS01LndlYnAnLGltZ3M6WydEU0MwNDkyNCcsJ0Zhdm91cml0ZXMtOTYtb2YtMTI1JywnRFNDMDQ5MzInLCdGYXZvdXJpdGVzLTgzLW9mLTEyNScsJ0Zhdm91cml0ZXMtOTUtb2YtMTI1JywnRFNDMDQ5MjEtUGFubyddfSwKIHtuYW1lOidDbGFzc2ljIFdoaXNreSBTb3VyJyxiZWQ6e2VuOidRdWVlbiDCtyBlbi1zdWl0ZScsdGg6J+C5gOC4leC4teC4ouC4h+C4hOC4p+C4teC4mSDCtyDguKvguYnguK3guIfguJnguYnguLPguYPguJnguJXguLHguKcnfSxjb3ZlcjpCOSsncm9vbS02LndlYnAnLGltZ3M6WydGYXZvdXJpdGVzLTYtb2YtOCcsJ0Zhdm91cml0ZXMtMjQtb2YtMjknLCdGYXZvdXJpdGVzLTcxLW9mLTEyNScsJ0Zhdm91cml0ZXMtNzItb2YtMTI1JywnRmF2b3VyaXRlcy03My1vZi0xMjUnLCdGYXZvdXJpdGVzLTc0LW9mLTEyNScsJ0Zhdm91cml0ZXMtNzUtb2YtMTI1JywnRFNDMDQ4ODYnLCdGYXZvdXJpdGVzLTEyNC1vZi0xMjUnXX0KXTsKUk9PTVMuZm9yRWFjaChmdW5jdGlvbihyKXtyLnVybHM9ci5pbWdzLm1hcChmdW5jdGlvbihmKXtyZXR1cm4gQjgrZisnLndlYnAnO30pO30pOwoKLyogcmVuZGVyIHJvb20gY2FyZHMgKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIGc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb21zR3JpZCcpO2lmKCFnKXJldHVybjsKICBST09NUy5mb3JFYWNoKGZ1bmN0aW9uKHIsaSl7CiAgICB2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtiLmNsYXNzTmFtZT0ncm9vbSc7Yi5zZXRBdHRyaWJ1dGUoJ2RhdGEtcm9vbScsaSk7Yi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCdPcGVuICcrci5uYW1lKycgZ2FsbGVyeScpOwogICAgYi5pbm5lckhUTUw9JzxpbWcgbG9hZGluZz0ibGF6eSIgc3JjPSInK3IuY292ZXIrJyIgYWx0PSInK3IubmFtZSsnIj4nKwogICAgICAnPHNwYW4gY2xhc3M9ImNvdW50Ij4nK3IudXJscy5sZW5ndGgrJyA8c3BhbiBjbGFzcz0idC1lbiI+cGhvdG9zPC9zcGFuPjxzcGFuIGNsYXNzPSJ0LXRoIj7guKPguLnguJs8L3NwYW4+PC9zcGFuPicrCiAgICAgICc8c3BhbiBjbGFzcz0icm9vbS1jYXAiPjxiPicrci5uYW1lKyc8L2I+PHNwYW4gY2xhc3M9InN1YiI+PHNwYW4gY2xhc3M9InQtZW4iPicrci5iZWQuZW4rJzwvc3Bhbj48c3BhbiBjbGFzcz0idC10aCI+JytyLmJlZC50aCsnPC9zcGFuPjwvc3Bhbj4nKwogICAgICAnPHNwYW4gY2xhc3M9InZpZXciPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiPjxyZWN0IHg9IjMiIHk9IjMiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgcng9IjEiLz48cGF0aCBkPSJNMyAxNWw1LTUgNCA0IDMtMyA2IDYiLz48L3N2Zz48c3BhbiBjbGFzcz0idC1lbiI+VmlldyBnYWxsZXJ5PC9zcGFuPjxzcGFuIGNsYXNzPSJ0LXRoIj7guJTguLnguYHguIHguKXguYDguKXguK3guKPguLU8L3NwYW4+PC9zcGFuPjwvc3Bhbj4nOwogICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtvcGVuTEJzZXQoci51cmxzLHIubmFtZSxyLmJlZC5lbixyLmJlZC50aCwwKTt9KTsKICAgIGcuYXBwZW5kQ2hpbGQoYik7CiAgfSk7Cn0pKCk7CgovKiBsaWdodGJveCAqLwp2YXIgbGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xiJyksbGJJbWc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xiSW1nJyksbGJUaXRsZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGJUaXRsZScpLGxiU3ViPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYlN1YicpLGxiVGh1bWJzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYlRodW1icycpLGxiQ291bnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xiQ291bnQnKTsKdmFyIGN1cklkeD0wLExCdXJscz1bXSxMQnRpdGxlPScnOwpmdW5jdGlvbiBvcGVuTEJzZXQodXJscyx0aXRsZSxzdWJFbixzdWJUaCxpaSl7TEJ1cmxzPXVybHM7TEJ0aXRsZT10aXRsZTsKICBsYlRpdGxlLnRleHRDb250ZW50PXRpdGxlOwogIGxiU3ViLmlubmVySFRNTD0nPHNwYW4gY2xhc3M9InQtZW4iPicrKHN1YkVufHwnJykrJzwvc3Bhbj48c3BhbiBjbGFzcz0idC10aCI+Jysoc3ViVGh8fCcnKSsnPC9zcGFuPic7CiAgbGJUaHVtYnMuaW5uZXJIVE1MPScnOwogIHVybHMuZm9yRWFjaChmdW5jdGlvbih1LGspe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO3QubG9hZGluZz0nbGF6eSc7dC5zcmM9dTt0LmFsdD10aXRsZSsnIHBob3RvICcrKGsrMSk7dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtzaG93KGspO30pO2xiVGh1bWJzLmFwcGVuZENoaWxkKHQpO30pOwogIGxiLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTtkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ25vc2Nyb2xsJyk7c2hvdyhpaXx8MCk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xiQ2xvc2UnKS5mb2N1cygpOwp9CmZ1bmN0aW9uIHNob3coayl7dmFyIG49TEJ1cmxzLmxlbmd0aDtpZighbilyZXR1cm47Y3VySWR4PShrK24pJW47bGJJbWcuc3JjPUxCdXJsc1tjdXJJZHhdO2xiSW1nLmFsdD1MQnRpdGxlKycgcGhvdG8gJysoY3VySWR4KzEpOwogIGxiQ291bnQudGV4dENvbnRlbnQ9KGN1cklkeCsxKSsnIC8gJytuOwogIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobGJUaHVtYnMuY2hpbGRyZW4sZnVuY3Rpb24odCxpKXt0LmNsYXNzTGlzdC50b2dnbGUoJ29uJyxpPT09Y3VySWR4KTt9KTsKICB2YXIgb249bGJUaHVtYnMuY2hpbGRyZW5bY3VySWR4XTtpZihvbiYmb24uc2Nyb2xsSW50b1ZpZXcpb24uc2Nyb2xsSW50b1ZpZXcoe2lubGluZTonY2VudGVyJyxibG9jazonbmVhcmVzdCd9KTsKfQoKLyogR0FMTEVSWSDigJQgdGFiYmVkLCBhbGwgY2F0ZWdvcmllcyAqLwp2YXIgR0FMPVsKIHtlbjonTWFuaGF0dGFuJyx0aDonTWFuaGF0dGFuJyxpbWdzOlsnRmF2b3VyaXRlcy0yNS1vZi0xMjUnLCdGYXZvdXJpdGVzLTE0LW9mLTI5JywnRmF2b3VyaXRlcy05Ny1vZi0xMjUnLCdGYXZvdXJpdGVzLTExLW9mLTI5JywnRmF2b3VyaXRlcy0xMC1vZi0yOScsJ0Zhdm91cml0ZXMtOS1vZi0yOScsJ0Zhdm91cml0ZXMtMi1vZi04JywnRmF2b3VyaXRlcy0xLW9mLTgnLCdGYXZvdXJpdGVzLTIyLW9mLTEyNSddfSwKIHtlbjonQmx1ZSBIYXdhaWlhbicsdGg6J0JsdWUgSGF3YWlpYW4nLGltZ3M6WydGYXZvdXJpdGVzLTI5LW9mLTI5JywnRmF2b3VyaXRlcy0zMC1vZi0xMjUnLCdGYXZvdXJpdGVzLTExOS1vZi0xMjUnLCdGYXZvdXJpdGVzLTQtb2YtOCcsJ0Zhdm91cml0ZXMtNS1vZi01JywnRmF2b3VyaXRlcy00LW9mLTUnLCdGYXZvdXJpdGVzLTMtb2YtOCcsJ0Zhdm91cml0ZXMtMy1vZi01JywnRmF2b3VyaXRlcy0yLW9mLTUnXX0sCiB7ZW46J1BpbmsgTGFkeScsdGg6J1BpbmsgTGFkeScsaW1nczpbJ0Zhdm91cml0ZXMtMzUtb2YtMTI1JywnRmF2b3VyaXRlcy0zLW9mLTQnLCdGYXZvdXJpdGVzLTExLW9mLTEzJywnRmF2b3VyaXRlcy0xNS1vZi0yOScsJ0Zhdm91cml0ZXMtMzctb2YtMTI1JywnRmF2b3VyaXRlcy0zNC1vZi0xMjUnLCdGYXZvdXJpdGVzLTM4LW9mLTEyNScsJ0Zhdm91cml0ZXMtMzMtb2YtMTI1J119LAoge2VuOidFc3ByZXNzbyBNYXJ0aW5pJyx0aDonRXNwcmVzc28gTWFydGluaScsaW1nczpbJ0Zhdm91cml0ZXMtNTgtb2YtMTI1JywnRmF2b3VyaXRlcy01Ni1vZi0xMjUnLCdGYXZvdXJpdGVzLTU1LW9mLTEyNScsJ0Zhdm91cml0ZXMtNTQtb2YtMTI1JywnRmF2b3VyaXRlcy02Mi1vZi0xMjUnLCdGYXZvdXJpdGVzLTIwLW9mLTI5JywnRmF2b3VyaXRlcy0xOS1vZi0yOScsJ0Zhdm91cml0ZXMtNjEtb2YtMTI1JywnRmF2b3VyaXRlcy02MC1vZi0xMjUnXX0sCiB7ZW46J01pbnQgSnVsZXAnLHRoOidNaW50IEp1bGVwJyxpbWdzOlsnRFNDMDQ5MjQnLCdGYXZvdXJpdGVzLTk2LW9mLTEyNScsJ0RTQzA0OTMyJywnRmF2b3VyaXRlcy04My1vZi0xMjUnLCdGYXZvdXJpdGVzLTk1LW9mLTEyNScsJ0RTQzA0OTIxLVBhbm8nXX0sCiB7ZW46J0NsYXNzaWMgV2hpc2t5IFNvdXInLHRoOidDbGFzc2ljIFdoaXNreSBTb3VyJyxpbWdzOlsnRmF2b3VyaXRlcy02LW9mLTgnLCdGYXZvdXJpdGVzLTI0LW9mLTI5JywnRmF2b3VyaXRlcy03MS1vZi0xMjUnLCdGYXZvdXJpdGVzLTcyLW9mLTEyNScsJ0Zhdm91cml0ZXMtNzMtb2YtMTI1JywnRmF2b3VyaXRlcy03NC1vZi0xMjUnLCdGYXZvdXJpdGVzLTc1LW9mLTEyNScsJ0RTQzA0ODg2JywnRmF2b3VyaXRlcy0xMjQtb2YtMTI1J119LAoge2VuOidMaXZpbmcgaW5kb29yICYgT3V0ZG9vcicsdGg6J+C5g+C4meC5geC4peC4sOC4meC4reC4geC4muC5ieC4suC4mScsaW1nczpbJ0RTQzA0ODI1JywnRFNDMDUwNzQnLCdEU0MwNTA4MicsJ0Zhdm91cml0ZXMtNC1vZi0xMjUnLCdGYXZvdXJpdGVzLTUtb2YtMTMnLCdGYXZvdXJpdGVzLTUtb2YtMjknLCdGYXZvdXJpdGVzLTgtb2YtMjknLCdGYXZvdXJpdGVzLTQ3LW9mLTEyNScsJ0Zhdm91cml0ZXMtNjUtb2YtMTI1J119LAoge2VuOidLaXRjaGVuJyx0aDon4LiE4Lij4Lix4LinJyxpbWdzOlsnSEctUGljcy0xLW9mLTEnLCdLaXRjaGVuLUZyaWRnZS1zaWRlJ119LAoge2VuOidPdXRzaWRlJyx0aDon4Lig4Liy4Lii4LiZ4Lit4LiBJyxpbWdzOlsnRmF2b3VyaXRlcy0zOS1vZi0xMjUnLCdGYXZvdXJpdGVzLTQxLW9mLTEyNScsJ0Zhdm91cml0ZXMtNDMtb2YtMTI1JywnRmF2b3VyaXRlcy0xMjUtb2YtMTI1J119LAoge2VuOidBcnQnLHRoOifguIfguLLguJnguKjguLTguKXguJvguYwnLGltZ3M6WydGYXZvdXJpdGVzLTE4LW9mLTI5JywnRmF2b3VyaXRlcy03NS1vZi0xMjUtMScsJ0Zhdm91cml0ZXMtMi1vZi0yOScsJ0Zhdm91cml0ZXMtOTktb2YtMTI1JywnRmF2b3VyaXRlcy0xMDktb2YtMTI1JywnRmF2b3VyaXRlcy0xMTYtb2YtMTI1JywnRmF2b3VyaXRlcy0xMjItb2YtMTI1JywnSEctUGljcy0xLW9mLTEtY29weScsJ0hHLVBpY3MtMS1vZi0xLTEnXX0KXTsKR0FMLmZvckVhY2goZnVuY3Rpb24oYyl7Yy51cmxzPWMuaW1ncy5tYXAoZnVuY3Rpb24oZil7cmV0dXJuIEI4K2YrJy53ZWJwJzt9KTt9KTsKKGZ1bmN0aW9uKCl7CiAgdmFyIG1lbnU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhbE1lbnUnKSxncmlkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnYWxHcmlkJyk7aWYoIW1lbnV8fCFncmlkKXJldHVybjsKICBmdW5jdGlvbiByZW5kZXJHcmlkKGNpKXt2YXIgYz1HQUxbY2ldO2dyaWQuaW5uZXJIVE1MPScnOwogICAgYy51cmxzLmZvckVhY2goZnVuY3Rpb24odSxrKXt2YXIgYnRuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO2J0bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLGMuZW4rJyBwaG90byAnKyhrKzEpKTsKICAgICAgdmFyIGltPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO2ltLmxvYWRpbmc9J2xhenknO2ltLnNyYz11O2ltLmFsdD1jLmVuKycgcGhvdG8gJysoaysxKTtidG4uYXBwZW5kQ2hpbGQoaW0pOwogICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7b3BlbkxCc2V0KGMudXJscyxjLmVuLGMuZW4sYy50aCxrKTt9KTtncmlkLmFwcGVuZENoaWxkKGJ0bik7fSk7fQogIEdBTC5mb3JFYWNoKGZ1bmN0aW9uKGMsaSl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7Yi5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCd0YWInKTsKICAgIGIuaW5uZXJIVE1MPSc8c3BhbiBjbGFzcz0idC1lbiI+JytjLmVuKyc8L3NwYW4+PHNwYW4gY2xhc3M9InQtdGgiPicrYy50aCsnPC9zcGFuPic7CiAgICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobWVudS5jaGlsZHJlbixmdW5jdGlvbih4KXt4LmNsYXNzTGlzdC5yZW1vdmUoJ29uJyk7eC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCdmYWxzZScpO30pO2IuY2xhc3NMaXN0LmFkZCgnb24nKTtiLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsJ3RydWUnKTtyZW5kZXJHcmlkKGkpO30pOwogICAgbWVudS5hcHBlbmRDaGlsZChiKTt9KTsKICBtZW51LmNoaWxkcmVuWzBdLmNsYXNzTGlzdC5hZGQoJ29uJyk7bWVudS5jaGlsZHJlblswXS5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCd0cnVlJyk7cmVuZGVyR3JpZCgwKTsKfSkoKTsKZnVuY3Rpb24gY2xvc2VMQigpe2xiLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTtkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vc2Nyb2xsJyk7fQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGJDbG9zZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxjbG9zZUxCKTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe3Nob3coY3VySWR4LTEpO30pOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGJOZXh0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7c2hvdyhjdXJJZHgrMSk7fSk7CmxiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXtpZihlLnRhcmdldD09PWxiKWNsb3NlTEIoKTt9KTsKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsZnVuY3Rpb24oZSl7aWYoIWxiLmNsYXNzTGlzdC5jb250YWlucygnb3BlbicpKXJldHVybjtpZihlLmtleT09PSdFc2NhcGUnKWNsb3NlTEIoKTtlbHNlIGlmKGUua2V5PT09J0Fycm93TGVmdCcpc2hvdyhjdXJJZHgtMSk7ZWxzZSBpZihlLmtleT09PSdBcnJvd1JpZ2h0JylzaG93KGN1cklkeCsxKTt9KTsKCi8qIHZpZGVvIGNsaWNrLXRvLWxvYWQgKi8KKGZ1bmN0aW9uKCl7dmFyIHY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZGVvRmVhdCcpO2lmKCF2KXJldHVybjsKICBmdW5jdGlvbiBwbGF5KCl7dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7Zi5zcmM9J2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2xCdG9tcFFFUGVBP2F1dG9wbGF5PTEmcmVsPTAnO2YudGl0bGU9J1RoZSBIaWRkZW4gR2VtIGZpbG0nO2YuYWxsb3c9J2F1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGZ1bGxzY3JlZW4nO2Yuc2V0QXR0cmlidXRlKCdhbGxvd2Z1bGxzY3JlZW4nLCcnKTt2LmlubmVySFRNTD0nJzt2LmFwcGVuZENoaWxkKGYpO3Yuc3R5bGUuY3Vyc29yPSdkZWZhdWx0JzsKICAgIHdpbmRvdy5kYXRhTGF5ZXI9d2luZG93LmRhdGFMYXllcnx8W107d2luZG93LmRhdGFMYXllci5wdXNoKHtldmVudDondmlkZW9fcGxheSd9KTt9CiAgdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycscGxheSk7di5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxmdW5jdGlvbihlKXtpZihlLmtleT09PSdFbnRlcid8fGUua2V5PT09JyAnKXtlLnByZXZlbnREZWZhdWx0KCk7cGxheSgpO319KTsKfSkoKTsKCi8qIGxhbmd1YWdlICovCmZ1bmN0aW9uIHNldExhbmcobCl7dmFyIGI9ZG9jdW1lbnQuYm9keTtpZihsPT09J3RoJyl7Yi5jbGFzc0xpc3QuYWRkKCd0aCcpO2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nPSd0aCc7fWVsc2V7Yi5jbGFzc0xpc3QucmVtb3ZlKCd0aCcpO2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nPSdlbic7fWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsLWVuJykuc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLGw9PT0nZW4nKTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbC10aCcpLnNldEF0dHJpYnV0ZSgnYXJpYS1wcmVzc2VkJyxsPT09J3RoJyk7dHJ5e3ZhciB1PW5ldyBVUkwobG9jYXRpb24uaHJlZik7aWYobD09PSd0aCcpe3Uuc2VhcmNoUGFyYW1zLnNldCgnbGFuZycsJ3RoJyk7fWVsc2V7dS5zZWFyY2hQYXJhbXMuZGVsZXRlKCdsYW5nJyk7fWhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsJycsdS50b1N0cmluZygpKTt9Y2F0Y2goZSl7fWlmKHdpbmRvdy5fcmVuZGVyQ2FsKXdpbmRvdy5fcmVuZGVyQ2FsKCk7fQpzZXRMYW5nKCgvWz8mXWxhbmc9dGgvaS50ZXN0KGxvY2F0aW9uLnNlYXJjaCl8fC8oXnxcLyl0aChcL3wkKS8udGVzdChsb2NhdGlvbi5wYXRobmFtZSl8fC9edGgvaS50ZXN0KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nfHwnJykpPyd0aCc6J2VuJyk7CgovKiBoZWFkZXIgc2Nyb2xsICovCihmdW5jdGlvbigpe3ZhciBoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZHInKTt2YXIgZj1mdW5jdGlvbigpe2guY2xhc3NMaXN0LnRvZ2dsZSgnc2Nyb2xsZWQnLHdpbmRvdy5zY3JvbGxZPjYwKTt9O2YoKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJyxmLHtwYXNzaXZlOnRydWV9KTt9KSgpOwoKLyogY2FsZW5kYXIgKi8KKGZ1bmN0aW9uKCl7dmFyIHdyYXA9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbC13cmFwJyk7aWYoIXdyYXApcmV0dXJuO3ZhciBkb3c9WydTJywnTScsJ1QnLCdXJywnVCcsJ0YnLCdTJ107dmFyIGJvb2tlZD1bWzUsNiw3LDEzLDE0LDIwLDIxLDI3LDI4XSxbMyw0LDEwLDExLDE3LDE4LDI0LDI1LDMxXV07dmFyIG5vdz1uZXcgRGF0ZSgpOwogIGZ1bmN0aW9uIGJ1aWxkKG8pe3ZhciBkPW5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLG5vdy5nZXRNb250aCgpK28sMSkseT1kLmdldEZ1bGxZZWFyKCksbT1kLmdldE1vbnRoKCk7dmFyIG5hbWU9ZC50b0xvY2FsZURhdGVTdHJpbmcoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3RoJyk/J3RoLVRIJzonZW4tVVMnLHttb250aDonbG9uZycseWVhcjonbnVtZXJpYyd9KTt2YXIgZmlyc3Q9bmV3IERhdGUoeSxtLDEpLmdldERheSgpLGRheXM9bmV3IERhdGUoeSxtKzEsMCkuZ2V0RGF0ZSgpLGJrPWJvb2tlZFtvXXx8W107dmFyIGg9JzxkaXYgY2xhc3M9ImNhbCI+PGgzPicrbmFtZSsnPC9oMz48ZGl2IGNsYXNzPSJjYWwtZ3JpZCI+Jztkb3cuZm9yRWFjaChmdW5jdGlvbih4KXtoKz0nPGRpdiBjbGFzcz0iZG93Ij4nK3grJzwvZGl2Pic7fSk7Zm9yKHZhciBpPTA7aTxmaXJzdDtpKyspaCs9JzxkaXYgY2xhc3M9ImRheSBlbXB0eSI+PC9kaXY+Jztmb3IodmFyIGRkPTE7ZGQ8PWRheXM7ZGQrKyl7dmFyIGM9J2RheSc7aWYobz09PTAmJmRkPG5vdy5nZXREYXRlKCkpYys9JyBwYXN0JztlbHNlIGlmKGJrLmluZGV4T2YoZGQpPi0xKWMrPScgYm9va2VkJztlbHNlIGMrPScgZnJlZSc7aCs9JzxkaXYgY2xhc3M9IicrYysnIj4nK2RkKyc8L2Rpdj4nO31yZXR1cm4gaCsnPC9kaXY+PC9kaXY+Jzt9CiAgd2luZG93Ll9yZW5kZXJDYWw9ZnVuY3Rpb24oKXt3cmFwLmlubmVySFRNTD1idWlsZCgwKStidWlsZCgxKTt9O3dpbmRvdy5fcmVuZGVyQ2FsKCk7fSkoKTsKCi8qIHJldmVhbCAqLwooZnVuY3Rpb24oKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VjdGlvbiAuaGVhZCwgLmVkaXRvcmlhbCAuY29weSwgLmNhcC1pbWcsIC5mYWMtZ3JpZCwgLnJvb21zLWdyaWQsIC5yZXZpZXdzLCAuY2FsLXdyYXAnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24uY2xhc3NMaXN0LmFkZCgncmV2ZWFsJyk7fSk7CiAgaWYoISgnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInaW4gd2luZG93KSl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnJldmVhbCcpLmZvckVhY2goZnVuY3Rpb24obil7bi5jbGFzc0xpc3QuYWRkKCdpbicpO30pO3JldHVybjt9CiAgdmFyIGlvPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihlcyl7ZXMuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmlzSW50ZXJzZWN0aW5nKXtlLnRhcmdldC5jbGFzc0xpc3QuYWRkKCdpbicpO2lvLnVub2JzZXJ2ZShlLnRhcmdldCk7fX0pO30se3Jvb3RNYXJnaW46JzBweCAwcHggLTglIDBweCcsdGhyZXNob2xkOi4wNn0pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZXZlYWwnKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lvLm9ic2VydmUobik7fSk7fSkoKTsKCi8qIHRyYWNraW5nICovCihmdW5jdGlvbigpe3ZhciBmaXJlZD1mYWxzZTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZSl7dmFyIGVsPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWV2ZW50XScpO2lmKCFlbClyZXR1cm47d2luZG93LmRhdGFMYXllcj13aW5kb3cuZGF0YUxheWVyfHxbXTt3aW5kb3cuZGF0YUxheWVyLnB1c2goe2V2ZW50Oidjb250YWN0X2NsaWNrJyxtZXRob2Q6ZWwuZ2V0QXR0cmlidXRlKCdkYXRhLWV2ZW50Jyl9KTtpZighZmlyZWQpe2ZpcmVkPXRydWU7d2luZG93LmRhdGFMYXllci5wdXNoKHtldmVudDonZ2VuZXJhdGVfbGVhZCcsbWV0aG9kOmVsLmdldEF0dHJpYnV0ZSgnZGF0YS1ldmVudCcpfSk7fX0sdHJ1ZSk7fSkoKTsKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0O3ZhciBhPXQmJnQuY2xvc2VzdD90LmNsb3Nlc3QoJ1tkYXRhLWV2ZW50PSJjb250YWN0X3Bob25lIl0nKTpudWxsO2lmKGEpe2UucHJldmVudERlZmF1bHQoKTt3aW5kb3cubG9jYXRpb24uaHJlZj0ndGVsOis2NjgxOTcxMjkzOCc7fX0sdHJ1ZSk7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3lyJykudGV4dENvbnRlbnQ9bmV3IERhdGUoKS5nZXRGdWxsWWVhcigpOwo=