{"id":10,"date":"2026-07-07T17:04:33","date_gmt":"2026-07-07T17:04:33","guid":{"rendered":"https:\/\/thebluedoor.co.za\/?page_id=10"},"modified":"2026-10-16T07:25:36","modified_gmt":"2026-10-16T05:25:36","slug":"blue-door-real-estate-lets-open-the-blue-door","status":"publish","type":"page","link":"https:\/\/thebluedoor.co.za\/","title":{"rendered":"Blue Door Real Estate"},"content":{"rendered":"\n<style id=\"bd-overrides\">\n\/* WordPress theme: full width, no theme header\/footer\/title\/padding. First, so the page script measures the real layout *\/\nheader.wp-block-template-part,footer.wp-block-template-part{display:none !important}\n.wp-block-post-title{display:none !important}\n.wp-site-blocks main.wp-block-group{padding:0 !important;margin:0 !important;max-width:none !important}\n.wp-block-post-content{max-width:none !important;margin:0 !important;padding:0 !important}\n.wp-site-blocks .alignfull.has-global-padding{width:100% !important;max-width:100% !important;margin-left:0 !important;margin-right:0 !important;padding:0 !important}\n.wp-site-blocks{overflow-x:clip !important}\n.bd-wrap{max-width:none !important;width:100% !important;margin:0 !important}\n<\/style>\n<style>\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@600;700;800&family=Inter:wght@300;400;500;600;700&display=swap');\n  .bd-wrap{\n    --navy:#132239;--navy-deep:#0e1a2c;--navy-mid:#1b2c48;\n    --gold:#c8a24a;--gold-light:#d8b968;--gold-deep:#8a6a22;\n    --door:#1a5fb4;--door-light:#2b8fd3;\n    --cream:#f6f1e6;--paper:#fbf8f2;\n    --ink:#1a2233;--muted:#5c6675;--line:#e3dccd;\n    --navh:78px;\n    --display:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;\n    --brand:'Montserrat','Inter',system-ui,sans-serif;\n    --sans:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;\n    --shadow:0 24px 60px -24px rgba(14,26,44,.45);\n    --plaque:url('https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/10\/bd-plaque.webp');\n  }\n  .bd-wrap *{box-sizing:border-box;margin:0;padding:0}\n  .bd-wrap{font-family:var(--sans);color:var(--ink);background:var(--cream);line-height:1.65;-webkit-font-smoothing:antialiased}\n  .bd-wrap img{max-width:100%;display:block}\n  .bd-wrap a{text-decoration:none;color:inherit}\n  .bd-wrap button{font-family:inherit}\n  .bd-wrap .wrap{width:min(1180px,92%);margin:0 auto}\n  .bd-wrap section{position:relative;scroll-margin-top:var(--navh)}\n  .bd-wrap :focus-visible{outline:3px solid var(--gold);outline-offset:3px}\n\n  .bd-wrap .btn{display:inline-flex;align-items:center;gap:.55rem;font-weight:600;font-size:.98rem;padding:.85rem 1.6rem;border-radius:999px;\n    transition:transform .25s,background .25s,box-shadow .25s,border-color .25s;cursor:pointer;border:2px solid transparent;white-space:nowrap}\n  .bd-wrap .btn svg{width:18px;height:18px;flex:none}\n  .bd-wrap .btn-gold{background:var(--gold);color:#1b1406}\n  .bd-wrap .btn-gold:hover{background:var(--gold-light);transform:translateY(-2px);box-shadow:0 12px 24px -10px rgba(200,162,74,.75)}\n  .bd-wrap .btn-ghost{border:0;border-radius:0;padding:.85rem .2rem;margin-left:.4rem;color:#fff;\n    text-decoration:underline;text-decoration-color:var(--gold);text-decoration-thickness:1.5px;text-underline-offset:.4em}\n  .bd-wrap .btn-ghost:hover{color:var(--gold-light);transform:none;box-shadow:none}\n  .bd-wrap .btn-navy{background:var(--navy);color:#fff}\n  .bd-wrap .btn-navy:hover{background:var(--navy-mid);transform:translateY(-2px)}\n\n  .bd-wrap .kicker{display:inline-flex;align-items:center;gap:.6rem;font-size:.76rem;letter-spacing:.28em;text-transform:uppercase;color:var(--gold-deep);font-weight:700;margin-bottom:1rem}\n  .bd-wrap .kicker::before{content:'';width:28px;height:2px;background:var(--gold)}\n  .bd-wrap h2.title{font-family:var(--display);font-weight:600;font-size:clamp(2.1rem,4.2vw,3.3rem);line-height:1.06;letter-spacing:-.015em;color:var(--navy);text-wrap:balance}\n  .bd-wrap h2.title em{font-style:normal;font-weight:600;color:var(--door)}\n  .bd-wrap .head{max-width:46rem;margin-bottom:3.2rem}\n  .bd-wrap .head.center{text-align:center;margin-left:auto;margin-right:auto}\n  .bd-wrap .head p{margin-top:1rem;color:var(--muted);font-size:1.06rem}\n  .bd-wrap .pad{padding:7rem 0}\n  .bd-wrap .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}\n  .bd-wrap .reveal.in{opacity:1;transform:none}\n  .bd-wrap .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}\n\n  \/* brass plaque (rendered) with HTML text on top *\/\n  .bd-wrap .brass{background:var(--plaque) center\/100% 100% no-repeat;color:#2b1f06;filter:drop-shadow(0 12px 14px rgba(74,52,10,.35))}\n\n  \/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 nav \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  .bd-wrap header.nav{position:sticky;top:0;z-index:999;height:var(--navh);background:rgba(251,248,242,.92);\n    -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}\n  .admin-bar .bd-wrap header.nav{top:32px}\n  .bd-wrap .nav-inner{display:flex;align-items:center;justify-content:space-between;height:100%}\n  .bd-wrap .brand{display:flex;align-items:center;gap:.6rem}\n  .bd-wrap .brand svg{height:64px;width:64px;display:block}\n  .bd-wrap .brand-text{font-family:var(--brand);font-weight:800;font-size:1.08rem;letter-spacing:.04em;color:var(--navy);line-height:1}\n  .bd-wrap .brand-text small{display:block;font-family:var(--sans);font-weight:600;font-size:.58rem;letter-spacing:.38em;color:var(--gold-deep);margin-top:4px}\n  .bd-wrap nav ul{display:flex;gap:2rem;list-style:none;align-items:center}\n  .bd-wrap nav a{font-weight:500;font-size:.94rem;color:var(--navy);position:relative;padding:.2rem 0}\n  .bd-wrap nav a::after{content:'';position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--gold);transition:.25s}\n  .bd-wrap nav a:hover::after{width:100%}\n  .bd-wrap .bd-dropdown{position:relative}\n  .bd-wrap .bd-submenu{position:absolute;top:100%;left:50%;transform:translate(-50%,10px);background:#fff;border:1px solid var(--line);border-radius:12px;\n    box-shadow:var(--shadow);padding:.55rem;min-width:210px;list-style:none;display:grid;gap:.15rem;opacity:0;visibility:hidden;transition:.22s;z-index:60}\n  .bd-wrap .bd-dropdown:hover .bd-submenu,.bd-wrap .bd-dropdown:focus-within .bd-submenu{opacity:1;visibility:visible;transform:translate(-50%,4px)}\n  .bd-wrap .bd-submenu a{display:block;padding:.5rem .85rem;border-radius:8px;font-size:.9rem;white-space:nowrap}\n  .bd-wrap .bd-submenu a:hover{background:rgba(200,162,74,.16)}\n  .bd-wrap .bd-submenu a::after{content:none}\n  .bd-wrap .nav-cta{display:flex;align-items:center;gap:.9rem}\n  .bd-wrap .header-socials{display:flex;gap:.45rem}\n  .bd-wrap .header-socials a{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;color:var(--navy);background:#fff;transition:.22s}\n  .bd-wrap .header-socials a:hover{color:#fff;background:var(--door);border-color:var(--door);transform:translateY(-2px)}\n  .bd-wrap .header-socials svg{width:16px;height:16px}\n  .bd-wrap .menu-btn{display:none;width:44px;height:44px;background:none;border:0;cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:5px}\n  .bd-wrap .menu-btn span{width:26px;height:2px;background:var(--navy);border-radius:2px}\n\n  \/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 the house: rendered front door + rooms, walked through by scrolling \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  .bd-wrap .house{position:relative;height:900vh;background:var(--navy-deep)}\n  .bd-wrap .th-stick{position:sticky;top:var(--navh);height:calc(100vh - var(--navh));height:calc(100svh - var(--navh));overflow:hidden}\n  .admin-bar .bd-wrap .th-stick{top:calc(var(--navh) + 32px)}\n  .bd-wrap .th-scene{position:absolute;inset:0;background:#0a1222 url('https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/10\/bd-d-000.webp') 70% 50%\/cover no-repeat}\n  .bd-wrap .th-scene canvas{position:absolute;inset:0;width:100%;height:100%;display:block}\n  .bd-wrap .th-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(7,13,26,.82) 0%,rgba(7,13,26,.5) 32%,rgba(7,13,26,0) 58%)}\n  .bd-wrap .th-layout{position:absolute;inset:0;display:grid;grid-template-columns:1.05fr .95fr;width:min(1180px,92%);margin:0 auto;left:0;right:0;pointer-events:none}\n  .bd-wrap .th-copy{grid-column:1;align-self:center;position:relative;z-index:2;color:#fff;max-width:36rem;pointer-events:auto;padding-bottom:3%}\n  .bd-wrap .eyebrow{display:inline-flex;align-items:center;gap:.6rem;font-size:.76rem;letter-spacing:.28em;text-transform:uppercase;color:var(--gold-light);font-weight:600;margin-bottom:1.4rem}\n  .bd-wrap .eyebrow::before{content:'';width:34px;height:2px;background:var(--gold)}\n  .bd-wrap .th-copy h1{font-family:var(--display);font-weight:600;font-size:clamp(2.7rem,5.6vw,5rem);line-height:1;letter-spacing:-.02em;text-shadow:0 2px 30px rgba(0,0,0,.35)}\n  .bd-wrap .th-copy h1 em{display:block;font-style:normal;font-weight:600;color:var(--gold)}\n  .bd-wrap .th-copy .lead{margin:1.5rem 0 2.2rem;font-size:1.12rem;color:#d2dae6;font-weight:300;max-width:31rem}\n  .bd-wrap .hero-actions{display:flex;gap:1rem;flex-wrap:wrap}\n  \/* tour controls: one gesture walks to the next room. Set as plain type on the scene, like a caption *\/\n  .bd-wrap .th-stick::after{content:'';position:absolute;left:0;right:0;bottom:0;height:150px;z-index:5;pointer-events:none;background:linear-gradient(0deg,rgba(7,13,26,.45),rgba(7,13,26,0))}\n  .bd-wrap .tour-next{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);z-index:6;display:flex;flex-direction:column;align-items:center;gap:.25rem;\n    background:none;border:0;padding:.3rem 1rem;font:inherit;color:#fff;cursor:pointer;text-shadow:0 1px 14px rgba(0,0,0,.6),0 1px 2px rgba(0,0,0,.45);transition:opacity .4s}\n  .bd-wrap .tour-next small{font-size:.68rem;letter-spacing:.24em;text-transform:uppercase;font-weight:600;color:var(--gold-light);white-space:nowrap}\n  .bd-wrap .tour-next b{font-family:var(--display);font-style:normal;font-weight:600;font-size:1.5rem;line-height:1.1;white-space:nowrap;\n    text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.22em;text-decoration-color:transparent;transition:text-decoration-color .25s}\n  .bd-wrap .tour-next:hover b{text-decoration-color:var(--gold)}\n  .bd-wrap .tour-next .tn-line{position:relative;display:block;width:1px;height:34px;margin-top:.4rem;background:rgba(255,255,255,.3);overflow:hidden}\n  .bd-wrap .tour-next .tn-line::after{content:'';position:absolute;left:0;top:-40%;width:1px;height:40%;background:var(--gold-light);animation:bdDrop 1.9s cubic-bezier(.6,0,.4,1) infinite}\n  @keyframes bdDrop{0%{top:-40%}100%{top:100%}}\n  .bd-wrap .tour.tipping .tour-next small{color:#fff;animation:bdFade .6s}\n  @keyframes bdFade{0%{opacity:0}100%{opacity:1}}\n  .bd-wrap .tour.busy .tour-next{opacity:.3;pointer-events:none}\n  .bd-wrap .tour-dots{position:absolute;right:24px;top:50%;transform:translateY(-50%);z-index:6;list-style:none;margin:0;padding:0;display:flex;flex-direction:column;align-items:flex-end;gap:.2rem}\n  .bd-wrap .tour-dots button{position:relative;display:flex;align-items:center;background:none;border:0;padding:.5rem 0 .5rem .8rem;cursor:pointer;font:inherit;color:#fff}\n  .bd-wrap .tour-dots button i{display:block;width:16px;height:2px;background:rgba(255,255,255,.55);box-shadow:0 0 8px rgba(0,0,0,.5);transition:width .3s,background .3s}\n  .bd-wrap .tour-dots button:hover i{background:#fff}\n  .bd-wrap .tour-dots .now i{width:34px;background:var(--gold)}\n  .bd-wrap .tour-dots button span{position:absolute;right:100%;top:50%;transform:translate(6px,-50%);margin-right:.2rem;white-space:nowrap;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;\n    text-shadow:0 1px 10px rgba(0,0,0,.8);opacity:0;transition:opacity .25s,transform .25s;pointer-events:none}\n  .bd-wrap .tour-dots button:hover span,.bd-wrap .tour-dots button:focus-visible span{opacity:1;transform:translate(0,-50%)}\n\n  \/* Rooms: each one is a layer of real HTML mounted on a rendered wall. JS sizes the layer to the\n     wall and maps it onto the wall's corners every frame. Sizes are in --u: one design pixel at the\n     reference screen (1440x900 desktop, 390x844 phone), scaled with the wall. *\/\n  .bd-wrap .room{position:absolute;left:0;top:0;transform-origin:0 0;opacity:0;pointer-events:none;container-type:inline-size;--u:calc(100cqw \/ var(--dw))}\n  .bd-wrap .room.on{pointer-events:auto}\n  .bd-wrap .room .slot{position:absolute;margin:0;box-sizing:border-box}\n  .bd-wrap .house-anchor{position:absolute;left:0;width:1px;height:1px;scroll-margin-top:var(--navh)}\n  .bd-wrap .room .kicker{font-size:calc(var(--u)*12);margin-bottom:calc(var(--u)*6);gap:calc(var(--u)*9)}\n  .bd-wrap .room .kicker::before{width:calc(var(--u)*26)}\n  .bd-wrap .room .head{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;text-align:center}\n  .bd-wrap .room .head h2{font-family:var(--display);font-weight:600;font-size:calc(var(--u)*46);line-height:1.04;letter-spacing:-.015em;color:var(--navy)}\n  .bd-wrap .room .head h2 em{font-style:normal;font-weight:600;color:var(--door)}\n  .bd-wrap .room .head p{font-size:calc(var(--u)*16);line-height:1.45;margin-top:calc(var(--u)*8);color:#33392f}\n  \/* hallway: lettering on the wall, engraved brass plaques *\/\n  .bd-wrap .room-welcome{--dw:700}\n  .bd-wrap .room .hello{display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:600;font-size:calc(var(--u)*64);line-height:1;letter-spacing:-.02em;color:var(--navy);white-space:nowrap}\n  .bd-wrap .room .hello em{font-style:normal;font-weight:600;color:var(--door);margin-left:.22em}\n  .bd-wrap .room .intro{display:flex;align-items:center;justify-content:center;text-align:center;font-size:calc(var(--u)*16.5);line-height:1.5;color:#4a463d}\n  .bd-wrap .room .plq,.bd-wrap .room .plate{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#2e2108;text-shadow:0 1px 0 rgba(255,238,196,.45)}\n  .bd-wrap .room .plq b{font-family:var(--display);font-weight:700;font-size:calc(var(--u)*27);line-height:1.05}\n  .bd-wrap .room .plq span{font-size:calc(var(--u)*8.5);letter-spacing:.2em;text-transform:uppercase;font-weight:700}\n  \/* living room: gallery wall, a printed card under each picture *\/\n  .bd-wrap .room-services{--dw:1210}\n  .bd-wrap .room .card{display:flex;flex-direction:column;padding:calc(var(--u)*14) calc(var(--u)*16)}\n  .bd-wrap .room .card h3{font-family:var(--display);font-weight:600;font-size:calc(var(--u)*19);line-height:1.15;color:var(--navy)}\n  .bd-wrap .room .card p{font-size:calc(var(--u)*13.5);line-height:1.45;color:var(--muted);margin-top:calc(var(--u)*5)}\n  .bd-wrap .room .card a{margin-top:auto;align-self:flex-start;font-weight:700;font-size:calc(var(--u)*13.5);color:var(--navy);padding-bottom:calc(var(--u)*3);\n    background:linear-gradient(var(--gold),var(--gold)) no-repeat 0 100%\/100% calc(var(--u)*2);transition:color .25s}\n  .bd-wrap .room .pic{display:block}\n  \/* a picture and its card (or plate) make a column: point anywhere on it and the whole column lights up, the others dim *\/\n  .bd-wrap .room .col{position:absolute;--pad:calc(var(--u)*12);border-radius:calc(var(--u)*8);cursor:pointer;transition:background-color .35s,box-shadow .35s}\n  .bd-wrap .set-m .room .col{--pad:calc(var(--u)*5);border-radius:calc(var(--u)*5)}\n  .bd-wrap .room .col.hot{background-color:rgba(255,229,178,.16);\n    box-shadow:0 0 0 calc(var(--u)*2) rgba(216,185,104,.95),0 calc(var(--u)*16) calc(var(--u)*56) calc(var(--u)*-4) rgba(255,204,118,.5)}\n  .bd-wrap .room.has-hot .col:not(.hot){background-color:rgba(8,12,22,.26);box-shadow:0 0 calc(var(--u)*22) calc(var(--u)*8) rgba(8,12,22,.26)}   \/* feathered, so it reads as shade, not a box *\/\n  .bd-wrap .room .card.hot a{color:var(--door)}\n  .bd-wrap .room .card.hot a,.bd-wrap .room .plate.hot .pack{animation:bdInk .5s cubic-bezier(.6,0,.3,1)}\n  \/* study: navy walls, gilt frames, engraved brass name plates *\/\n  .bd-wrap .room-devs{--dw:1240}\n  .bd-wrap .room-devs .head h2{color:#f3ede0}\n  .bd-wrap .room-devs .head h2 em{color:var(--gold)}\n  .bd-wrap .room-devs .head p{color:#b9c4d6}\n  .bd-wrap .room-devs .kicker{color:var(--gold-light)}\n  .bd-wrap .room .plate h3{font-family:var(--display);font-weight:600;font-size:calc(var(--u)*17);line-height:1.1}\n  .bd-wrap .room .plate .pack{font-size:calc(var(--u)*9.5);font-weight:800;color:#1f1604;letter-spacing:.16em;text-transform:uppercase;margin-top:calc(var(--u)*5);padding-bottom:calc(var(--u)*2);\n    background:linear-gradient(currentColor,currentColor) no-repeat 0 100%\/100% calc(var(--u)*1.2)}\n  .bd-wrap .room .plate:hover .pack{color:#000}\n  .bd-wrap .room.ping .card a,.bd-wrap .room.ping .plate .pack{animation:bdInk 1.1s cubic-bezier(.6,0,.3,1) 2}\n  .bd-wrap .room.ping .slot:nth-of-type(4n+2) a,.bd-wrap .room.ping .slot:nth-of-type(4n+2) .pack{animation-delay:.15s}\n  @keyframes bdInk{0%{background-size:0% calc(var(--u)*2)}100%{background-size:100% calc(var(--u)*2)}}   \/* the underline draws itself in *\/\n  .bd-wrap .room .plate .tag{position:absolute;left:50%;top:calc(var(--u)*-27);transform:translateX(-50%);display:flex;align-items:center;gap:calc(var(--u)*7);color:var(--gold-light);text-shadow:0 1px 6px rgba(0,0,0,.5);\n    font-size:calc(var(--u)*8.5);font-weight:700;letter-spacing:.26em;text-transform:uppercase;white-space:nowrap}\n  .bd-wrap .room .plate .tag::before,.bd-wrap .room .plate .tag::after{content:'';width:calc(var(--u)*14);height:1px;background:currentColor;opacity:.7}\n  \/* phone set: the walls are hung differently (one column), so the type is re-proportioned *\/\n  .bd-wrap .set-m .room-welcome{--dw:366}\n  .bd-wrap .set-m .room .hello{font-size:calc(var(--u)*40)}\n  .bd-wrap .set-m .room .intro{font-size:calc(var(--u)*12.8);line-height:1.42}\n  .bd-wrap .set-m .room .plq b{font-size:calc(var(--u)*16)}\n  .bd-wrap .set-m .room .plq span{font-size:calc(var(--u)*6.4);letter-spacing:.12em}\n  .bd-wrap .set-m .room-services,.bd-wrap .set-m .room-devs{--dw:366}\n  .bd-wrap .set-m .room .kicker{font-size:calc(var(--u)*10);margin-bottom:calc(var(--u)*4)}\n  .bd-wrap .set-m .room .head h2{font-size:calc(var(--u)*28)}\n  .bd-wrap .set-m .room .head p{font-size:calc(var(--u)*12.5);margin-top:calc(var(--u)*5)}\n  .bd-wrap .set-m .room .card{padding:calc(var(--u)*9) calc(var(--u)*12)}\n  .bd-wrap .set-m .room .card h3{font-size:calc(var(--u)*15)}\n  .bd-wrap .set-m .room .card p{font-size:calc(var(--u)*11.6);line-height:1.36;margin-top:calc(var(--u)*3)}\n  .bd-wrap .set-m .room .card a{font-size:calc(var(--u)*12)}\n  .bd-wrap .set-m .room .plate h3{font-size:calc(var(--u)*16)}\n  .bd-wrap .set-m .room .plate .pack{font-size:calc(var(--u)*9.2)}\n  \/* the lower plates sit out of the lamp's light on the phone wall *\/\n  .bd-wrap .set-m .room .plate[data-slot=c2],.bd-wrap .set-m .room .plate[data-slot=c3],\n  .bd-wrap .set-m .room .plate[data-slot=c2] .tag,.bd-wrap .set-m .room .plate[data-slot=c3] .tag,.bd-wrap .set-m .room .plate[data-slot=c2] .pack,.bd-wrap .set-m .room .plate[data-slot=c3] .pack{color:#f4e3b2;text-shadow:0 1px 2px rgba(0,0,0,.6)}\n  .bd-wrap .set-m .room .plate[data-slot=c2]:hover .pack,.bd-wrap .set-m .room .plate[data-slot=c3]:hover .pack{color:#fff}\n  .bd-wrap .set-m .room .plate .tag{position:static;transform:none;margin-bottom:calc(var(--u)*5);font-size:calc(var(--u)*7.5);color:#5e420d;text-shadow:0 1px 0 rgba(255,238,196,.45)}\n  \/* no JS: the rooms simply stack *\/\n  .bd-wrap .house:not(.live){height:auto}\n  .bd-wrap .house:not(.live) .th-stick{position:relative;top:0;height:auto;min-height:calc(100svh - var(--navh));overflow:visible}\n  .bd-wrap .house:not(.live) .room{position:relative;opacity:1;pointer-events:auto;width:auto;max-width:1100px;margin:0 auto;padding:4rem 5%;--dw:900;display:grid;gap:1rem;background:var(--paper)}\n  .bd-wrap .house:not(.live) .room .slot{position:static}\n\n  \/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 about \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  .bd-wrap .about{background:var(--paper)}\n  .bd-wrap .about-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:4.5rem;align-items:center}\n  .bd-wrap .about p.body{color:var(--muted);margin-top:1.1rem;font-size:1.04rem}\n  .bd-wrap .about .btn{margin-top:2rem}\n  .bd-wrap .sign{background:var(--navy);color:#fff;border-radius:18px;padding:12px;box-shadow:var(--shadow)}\n  .bd-wrap .sign-in{border:2px solid rgba(216,185,104,.6);border-radius:12px;padding:2.2rem 2rem}\n  .bd-wrap .sign h3{font-family:var(--display);font-style:normal;font-weight:600;font-size:2rem;color:var(--gold-light);text-align:center;margin-bottom:1.4rem}\n  .bd-wrap .sign ol{list-style:none;display:grid;gap:1.05rem;counter-reset:r}\n  .bd-wrap .sign li{display:flex;gap:1rem;align-items:baseline;counter-increment:r;padding-bottom:1rem;border-bottom:1px dashed rgba(255,255,255,.14)}\n  .bd-wrap .sign li:last-child{border:0;padding:0}\n  .bd-wrap .sign li::before{content:counter(r);font-family:var(--display);font-weight:700;color:var(--navy);background:var(--gold);width:28px;height:28px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:.9rem}\n  .bd-wrap .sign li span{font-weight:500;color:#e6ecf5}\n\n  \/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 process \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  .bd-wrap .walk{background:var(--cream);--kp:0}\n  .bd-wrap .path{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;padding-top:4.5rem}\n  .bd-wrap .path-line{position:absolute;left:4%;right:4%;top:1.4rem;height:2px;background:repeating-linear-gradient(90deg,var(--gold) 0 10px,transparent 10px 18px);opacity:.5}\n  .bd-wrap .path-fill{position:absolute;left:4%;top:1.4rem;height:2px;width:calc(92% * var(--kp));background:var(--gold)}\n  .bd-wrap .path-key{position:absolute;top:calc(1.4rem - 22px);left:calc(4% + 92% * var(--kp));transform:translateX(-30%);width:92px;height:auto;filter:drop-shadow(0 6px 6px rgba(74,52,10,.3))}\n  .bd-wrap .stp h3{font-family:var(--display);font-weight:600;font-size:1.5rem;color:var(--navy);margin:.9rem 0 .4rem}\n  .bd-wrap .stp p{color:var(--muted)}\n  .bd-wrap .num{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:50%;border:2px solid var(--gold);color:var(--gold-deep);font-family:var(--display);font-weight:700;font-size:1.3rem}\n\n  \/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 team \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  .bd-wrap .team{background:var(--paper)}\n  .bd-wrap .team-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.8rem}\n  .bd-wrap .member{text-align:center}\n  .bd-wrap .portal{position:relative;aspect-ratio:3\/4;border-radius:999px 999px 6px 6px;overflow:hidden;border:8px solid #fff;box-shadow:0 0 0 1px var(--line),0 24px 40px -28px rgba(14,26,44,.7);\n    background:linear-gradient(160deg,var(--door-light),#0b4f93)}\n  .bd-wrap .portal img{width:100%;height:100%;object-fit:cover;filter:grayscale(100%) contrast(1.05);transition:transform .6s,filter .6s}\n  .bd-wrap .member:hover .portal img{filter:grayscale(0);transform:scale(1.05)}\n  .bd-wrap .portal .initials{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--display);font-style:normal;font-weight:600;font-size:3.4rem;color:var(--gold-light)}\n  .bd-wrap .nameplate{display:inline-flex;flex-direction:column;justify-content:center;margin-top:-1.6rem;position:relative;min-width:82%;aspect-ratio:780\/240;padding:0 1.6rem}\n  .bd-wrap .nameplate h3{font-family:var(--display);font-weight:600;font-size:1.02rem;line-height:1.2}\n  .bd-wrap .nameplate span{font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:#4a370f}\n  .bd-wrap .member p{color:var(--muted);font-size:.92rem;margin-top:1rem}\n  .bd-wrap .member-links{display:flex;gap:.6rem;justify-content:center;margin-top:1rem}\n  .bd-wrap .member-links a{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);background:#fff;color:var(--navy);transition:.25s}\n  .bd-wrap .member-links a:hover{background:var(--navy);color:#fff;border-color:var(--navy)}\n  .bd-wrap .member-links svg{width:16px;height:16px}\n\n  \/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 contact \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  .bd-wrap .contact{background:radial-gradient(120% 140% at 15% 0%,#1d3255,var(--navy) 55%,var(--navy-deep));color:#fff}\n  .bd-wrap .contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}\n  .bd-wrap .contact .kicker{color:var(--gold-light)}\n  .bd-wrap .knock-knock{font-family:var(--display);font-weight:600;font-size:clamp(2.6rem,5vw,4.2rem);line-height:1.02;letter-spacing:-.02em}\n  .bd-wrap .knock-knock em{display:block;font-style:normal;font-weight:400;font-size:.52em;color:#9fb0c7;margin:.7rem 0 .2rem}\n  .bd-wrap .knock-knock strong{font-weight:600;color:var(--gold)}\n  .bd-wrap .contact .lead{color:#c9d3e2;font-weight:300;margin:1.4rem 0 2rem;font-size:1.08rem;max-width:32rem}\n  .bd-wrap .contact-list{list-style:none;display:grid;gap:1.2rem}\n  .bd-wrap .contact-list li{display:flex;gap:1rem;align-items:center}\n  .bd-wrap .contact-list .ci{flex:none;width:46px;height:46px;border-radius:12px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);display:grid;place-items:center;color:var(--gold-light)}\n  .bd-wrap .contact-list .ci svg{width:20px;height:20px}\n  .bd-wrap .contact-list span{font-size:.74rem;color:#93a4bd;letter-spacing:.08em;text-transform:uppercase;display:block}\n  .bd-wrap .contact-list b{font-weight:600;font-size:1rem}\n  .bd-wrap form.card-form{background:var(--paper);border-radius:20px;padding:2.3rem;box-shadow:var(--shadow);color:var(--ink)}\n  .bd-wrap form.card-form h3{font-family:var(--display);font-weight:600;color:var(--navy);font-size:1.7rem;line-height:1.15}\n  .bd-wrap form.card-form p.sub{color:var(--muted);font-size:.92rem;margin:.3rem 0 1.5rem}\n  .bd-wrap .field{margin-bottom:1rem}\n  .bd-wrap .field label{display:block;font-size:.8rem;font-weight:600;color:var(--navy);margin-bottom:.35rem}\n  .bd-wrap .field input,.bd-wrap .field select,.bd-wrap .field textarea{width:100%;padding:.8rem .95rem;border:1.5px solid var(--line);border-radius:10px;font-family:inherit;font-size:.95rem;color:var(--ink);background:#fff;transition:.2s}\n  .bd-wrap .field input:focus,.bd-wrap .field select:focus,.bd-wrap .field textarea:focus{outline:none;border-color:var(--door);box-shadow:0 0 0 3px rgba(26,95,180,.14)}\n  .bd-wrap .field textarea{resize:vertical;min-height:92px}\n  .bd-wrap .field input[type=checkbox]{width:1.05rem;height:1.05rem;flex:none;accent-color:var(--gold);margin-top:.25em}\n  .bd-wrap .consent{display:flex;align-items:flex-start;gap:.55rem;font-weight:400!important;cursor:pointer}\n  .bd-wrap .consent span{font-size:.84rem;line-height:1.45;color:var(--muted)}\n  .bd-wrap .form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}\n  .bd-wrap .form-err{color:#b3261e;margin-top:.8rem;font-size:.9rem}\n  .bd-wrap .thanks{text-align:center;padding:1rem 0}\n  .bd-wrap .thanks img{width:180px;margin:0 auto 1rem}\n  .bd-wrap .thanks h3{margin-bottom:.4rem}\n  .bd-wrap .thanks p{color:var(--muted)}\n\n  \/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  .bd-wrap footer{background:var(--navy-deep);color:#9fb0c7;padding:3.5rem 0 2rem}\n  .bd-wrap .foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2.5rem;padding-bottom:2.5rem;border-bottom:1px solid rgba(255,255,255,.08)}\n  .bd-wrap .foot-brand .brand-text{color:#fff;font-size:1.2rem}\n  .bd-wrap .foot-brand p{margin-top:1rem;font-size:.92rem;max-width:22rem}\n  .bd-wrap .foot h4{color:#fff;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;margin-bottom:1.1rem;font-weight:600}\n  .bd-wrap .foot ul{list-style:none;display:grid;gap:.65rem}\n  .bd-wrap .foot a{font-size:.93rem;transition:.2s}\n  .bd-wrap .foot a:hover{color:var(--gold-light)}\n  .bd-wrap .foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:1.6rem;font-size:.85rem;flex-wrap:wrap;gap:.6rem}\n  .bd-wrap .socials{display:flex;gap:.7rem}\n  .bd-wrap .socials a{width:36px;height:36px;border-radius:50%;border:1px solid rgba(255,255,255,.15);display:grid;place-items:center;transition:.25s}\n  .bd-wrap .socials a:hover{background:var(--gold);border-color:var(--gold);color:#1b1406}\n  .bd-wrap .socials svg{width:16px;height:16px}\n\n  \/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  @media(min-width:921px) and (max-width:1120px){.bd-wrap .nav-cta>.btn{display:none}}\n  @media(max-width:1020px){\n    .bd-wrap .team-grid{grid-template-columns:repeat(2,minmax(0,1fr))}\n  }\n  @media(max-width:920px){\n    .bd-wrap{--navh:70px}\n    .bd-wrap .brand svg{height:56px;width:56px}\n    .bd-wrap .nav-inner>nav{position:fixed;top:var(--navh);left:0;right:0}\n    .admin-bar .bd-wrap .nav-inner>nav{top:calc(var(--navh) + 46px)}\n    .bd-wrap nav ul{display:none}\n    .bd-wrap nav.mobile-open ul{display:flex;flex-direction:column;align-items:flex-start;background:var(--paper);padding:1.2rem 5%;gap:1.1rem;border-bottom:1px solid var(--line);box-shadow:var(--shadow)}\n    .bd-wrap .bd-submenu{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;padding:.2rem 0 0 1rem;min-width:0;background:none}\n    .bd-wrap .menu-btn{display:flex}\n    .bd-wrap .about-grid,.bd-wrap .contact-grid{grid-template-columns:1fr;gap:3rem}\n    .bd-wrap .foot-grid{grid-template-columns:1fr 1fr}\n    .bd-wrap .pad{padding:5rem 0}\n  }\n  \/* portrait screens get the portrait render; copy sits above the door *\/\n  @media(max-aspect-ratio:1\/1){\n    .bd-wrap .th-scene{background-image:url('https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/10\/bd-m-000.webp');background-position:50% 100%}\n    .bd-wrap .th-shade{background:linear-gradient(180deg,rgba(7,13,26,.88) 0%,rgba(7,13,26,.6) 30%,rgba(7,13,26,0) 50%)}\n    .bd-wrap .th-layout{grid-template-columns:1fr}\n    .bd-wrap .th-copy{align-self:start;padding:1.8rem 0 0;max-width:34rem}\n    .bd-wrap .th-copy .lead{margin:1rem 0 1.4rem;font-size:1rem}\n    \/* phone: the room marks and the next step sit bottom-left, clear of the chat button *\/\n    .bd-wrap .tour{position:absolute;left:18px;bottom:18px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem}\n    .bd-wrap .tour-dots{position:static;transform:none;flex-direction:row;align-items:center;gap:.35rem}\n    .bd-wrap .tour-dots button{padding:.45rem 0}\n    .bd-wrap .tour-dots button span{display:none}\n    .bd-wrap .tour-dots button i{width:12px}\n    .bd-wrap .tour-dots .now i{width:26px}\n    .bd-wrap .tour-next{position:static;transform:none;align-items:flex-start;padding:0;gap:.1rem}\n    .bd-wrap .tour-next small{font-size:.62rem;letter-spacing:.2em}\n    .bd-wrap .tour-next b{font-size:1.25rem}\n    .bd-wrap .tour-next b::after{content:'\\2193';display:inline-block;font-style:normal;font-size:.85em;margin-left:.35em;color:var(--gold-light);animation:bdBob 1.6s ease-in-out infinite}\n    @keyframes bdBob{0%,100%{transform:translateY(-2px)}50%{transform:translateY(3px)}}\n    .bd-wrap .tour-next .tn-line{display:none}\n  }\n  @media(max-width:600px){\n    .bd-wrap .nav-cta>.btn,.bd-wrap .header-socials{display:none}\n    .bd-wrap .th-copy h1{font-size:2.5rem}\n    .bd-wrap .eyebrow{font-size:.66rem;letter-spacing:.18em;margin-bottom:.9rem}\n    .bd-wrap .hide-sm{display:none}\n    .bd-wrap .hero-actions .btn{padding:.75rem 1.2rem;font-size:.92rem}\n    .bd-wrap .team-grid{gap:2rem 1rem}\n    .bd-wrap .nameplate{padding:0 .8rem;min-width:94%}\n    .bd-wrap .nameplate h3{font-size:.86rem}\n    .bd-wrap .nameplate span{font-size:.5rem;letter-spacing:.12em}\n    .bd-wrap .path{grid-template-columns:1fr;padding:0 0 0 3.6rem;gap:2.6rem}\n    .bd-wrap .path-line{left:1.2rem;right:auto;top:0;bottom:0;width:2px;height:auto;background:repeating-linear-gradient(180deg,var(--gold) 0 10px,transparent 10px 18px)}\n    .bd-wrap .path-fill{left:1.2rem;top:0;width:2px;height:calc(100% * var(--kp))}\n    .bd-wrap .path-key{left:calc(1.2rem + 1px);top:calc(100% * var(--kp));width:64px;transform:translate(-50%,-50%) rotate(90deg)}\n    .bd-wrap .stp h3{margin-top:.6rem}\n    .bd-wrap .form-row{grid-template-columns:1fr}\n    .bd-wrap form.card-form{padding:1.7rem}\n    .bd-wrap .foot-grid{grid-template-columns:1fr}\n    .bd-wrap .brand-text{font-size:.98rem}\n  }\n  @media(prefers-reduced-motion:reduce){\n    .bd-wrap .tour-next .tn-line::after,.bd-wrap .tour-next b::after{animation:none}\n    .bd-wrap .reveal{opacity:1;transform:none;transition:none}\n  }\n<\/style>\n<div class=\"bd-wrap\">\n<header class=\"nav\">\n  <div class=\"wrap nav-inner\">\n    <a href=\"#top\" class=\"brand\" aria-label=\"Blue Door Real Estate, back to top\">\n      <svg viewBox=\"0 0 480 480\" aria-hidden=\"true\">\n        <defs>\n          <linearGradient id=\"bdNavDoor\" gradientUnits=\"userSpaceOnUse\" x1=\"0\" y1=\"158\" x2=\"0\" y2=\"324\">\n            <stop offset=\"0\" stop-color=\"#2b8fd3\"\/><stop offset=\".52\" stop-color=\"#075a9f\"\/><stop offset=\".7\" stop-color=\"#063d72\" stop-opacity=\".9\"\/><stop offset=\".86\" stop-color=\"#063d72\" stop-opacity=\".3\"\/><stop offset=\"1\" stop-color=\"#063d72\" stop-opacity=\"0\"\/>\n          <\/linearGradient>\n          <linearGradient id=\"bdNavWay\" gradientUnits=\"userSpaceOnUse\" x1=\"0\" y1=\"150\" x2=\"0\" y2=\"329\">\n            <stop offset=\"0\" stop-color=\"#9fd6f5\"\/><stop offset=\".62\" stop-color=\"#2b8fd3\"\/><stop offset=\".86\" stop-color=\"#2b8fd3\" stop-opacity=\".28\"\/><stop offset=\"1\" stop-color=\"#2b8fd3\" stop-opacity=\"0\"\/>\n          <\/linearGradient>\n        <\/defs>\n        <g><animateTransform attributeName=\"transform\" type=\"rotate\" from=\"-18 240 240\" to=\"342 240 240\" dur=\"28s\" repeatCount=\"indefinite\"\/><circle cx=\"240\" cy=\"240\" r=\"108\" fill=\"none\" stroke=\"#83cff5\" stroke-width=\"12\" stroke-dasharray=\"155 72 100 352\"\/><\/g>\n        <g><animateTransform attributeName=\"transform\" type=\"rotate\" from=\"72 240 240\" to=\"-288 240 240\" dur=\"38s\" repeatCount=\"indefinite\"\/><circle cx=\"240\" cy=\"240\" r=\"132\" fill=\"none\" stroke=\"#238fce\" stroke-width=\"20\" stroke-dasharray=\"190 86 132 421\"\/><\/g>\n        <g><animateTransform attributeName=\"transform\" type=\"rotate\" from=\"-48 240 240\" to=\"312 240 240\" dur=\"49s\" repeatCount=\"indefinite\"\/><circle cx=\"240\" cy=\"240\" r=\"156\" fill=\"none\" stroke=\"#9aa4ae\" stroke-width=\"13\" stroke-dasharray=\"225 105 155 495\"\/><\/g>\n        <g><animateTransform attributeName=\"transform\" type=\"rotate\" from=\"24 240 240\" to=\"-336 240 240\" dur=\"64s\" repeatCount=\"indefinite\"\/><circle cx=\"240\" cy=\"240\" r=\"184\" fill=\"none\" stroke=\"#20a7ea\" stroke-width=\"14\" stroke-dasharray=\"270 130 190 566\"\/><\/g>\n        <path d=\"M198 324V150H282V324\" fill=\"none\" stroke=\"url(#bdNavWay)\" stroke-width=\"6\" stroke-linejoin=\"round\"\/>\n        <path d=\"M206 158L274 178V304L206 322Z\" fill=\"url(#bdNavDoor)\"\/><circle cx=\"265\" cy=\"241\" r=\"4\" fill=\"#fff\"\/>\n      <\/svg>\n      <span class=\"brand-text\">BLUE DOOR<small>REAL ESTATE<\/small><\/span>\n    <\/a>\n    <nav id=\"bdNav\" aria-label=\"Main\">\n      <ul>\n        <li class=\"bd-dropdown\"><a href=\"#developments\" aria-haspopup=\"true\">Developments<\/a>\n          <ul class=\"bd-submenu\">\n            <li><a href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/The-Wedge-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\">The Wedge<\/a><\/li>\n            <li><a href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/Amalinda-Downs-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\">Amalinda Downs<\/a><\/li>\n            <li><a href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/Bengal-Heights-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\">Bengal Heights<\/a><\/li>\n            <li><a href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/Bengal-Views-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\">Bengal Views<\/a><\/li>\n          <\/ul>\n        <\/li>\n        <li><a href=\"#services\">Services<\/a><\/li>\n        <li><a href=\"#about\">About<\/a><\/li>\n        <li><a href=\"#team\">Team<\/a><\/li>\n        <li><a href=\"#contact\">Contact<\/a><\/li>\n      <\/ul>\n    <\/nav>\n    <div class=\"nav-cta\">\n      <div class=\"header-socials\">\n        <a href=\"https:\/\/www.facebook.com\/share\/1Hf4FCVYkU\/\" target=\"_blank\" rel=\"noopener\" aria-label=\"Blue Door on Facebook\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M14 9h3V6h-3c-2 0-3.5 1.5-3.5 3.5V11H8v3h2.5v7h3v-7H16l.5-3h-3V9.5c0-.3.2-.5.5-.5Z\"\/><\/svg><\/a>\n        <a href=\"https:\/\/www.instagram.com\/thebluedoorprop?igsh=c2ZlaG5iNGs0N3Bk\" target=\"_blank\" rel=\"noopener\" aria-label=\"Blue Door on Instagram\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"5\"\/><circle cx=\"12\" cy=\"12\" r=\"4\"\/><circle cx=\"17.5\" cy=\"6.5\" r=\"1\" fill=\"currentColor\" stroke=\"none\"\/><\/svg><\/a>\n      <\/div>\n      <a href=\"#contact\" class=\"btn btn-navy\" data-interest=\"valuation\">Book a valuation<\/a>\n      <button class=\"menu-btn\" id=\"bdMenuBtn\" aria-label=\"Menu\" aria-expanded=\"false\" aria-controls=\"bdNav\"><span><\/span><span><\/span><span><\/span><\/button>\n    <\/div>\n  <\/div>\n<\/header>\n\n<!-- THE HOUSE: one rendered camera journey (website\/blender\/house.py). Scrolling opens the front door and\n     walks you through the hallway, the living room and the study. Each room's content is real HTML,\n     mounted on the rendered walls and kept on them in perspective as the camera moves. -->\n<section class=\"house\" id=\"top\">\n  <div class=\"th-stick\" id=\"bdStick\">\n    <div class=\"th-scene\" id=\"bdScene\" role=\"img\" aria-label=\"A blue front door at dusk that opens onto a warmly lit house\"><canvas id=\"bdCanvas\"><\/canvas><\/div>\n    <div class=\"th-shade\" id=\"bdShade\"><\/div>\n    <div class=\"th-layout\">\n      <div class=\"th-copy\" id=\"bdCopy\">\n        <span class=\"eyebrow\"><span class=\"hide-sm\">East London \u00b7&nbsp;<\/span>Sales \u00b7 Rentals \u00b7 Home loans<\/span>\n        <h1>Let\u2019s open <em>the Blue Door.<\/em><\/h1>\n        <p class=\"lead\">Buying your first home, selling for the best price, renting or sorting a bond: whatever\u2019s behind your door, we\u2019ll help you open it.<\/p>\n        <div class=\"hero-actions\">\n          <a href=\"#services\" class=\"btn btn-gold\">Find your door\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg><\/a>\n          <a href=\"#contact\" class=\"btn btn-ghost\" data-interest=\"valuation\">Free valuation<\/a>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"room room-welcome\" data-room=\"0\" aria-label=\"Welcome\">\n      <h2 class=\"slot hello\" data-slot=\"hello\">Come on<em>in.<\/em><\/h2>\n      <p class=\"slot intro\" data-slot=\"intro\">Blue Door is a small, personal agency in East London. We treat every move like it\u2019s our own, from the first call to the day the keys are in your hand.<\/p>\n      <div class=\"slot plq\" data-slot=\"p0\"><b>500+<\/b><span>Doors opened<\/span><\/div>\n      <div class=\"slot plq\" data-slot=\"p1\"><b>15 yrs<\/b><span>Market experience<\/span><\/div>\n      <div class=\"slot plq\" data-slot=\"p2\"><b>4.9\u2605<\/b><span>Client rating<\/span><\/div>\n    <\/div>\n\n    <div class=\"room room-services\" data-room=\"1\" aria-labelledby=\"bdSvcTitle\">\n      <div class=\"slot head\" data-slot=\"head\"><span class=\"kicker\">What we do<\/span><h2 id=\"bdSvcTitle\">Which door is <em>yours?<\/em><\/h2><p>Four ways in, one team behind every one of them.<\/p><\/div>\n      <a class=\"slot pic\" data-slot=\"f0\" href=\"#contact\" data-interest=\"buyer\" tabindex=\"-1\" aria-hidden=\"true\"><\/a>\n      <article class=\"slot card\" data-slot=\"c0\"><h3>Buy a home<\/h3><p>Hand-picked listings and new developments, matched to your life and your budget.<\/p><a href=\"#contact\" data-interest=\"buyer\">Start here \u2192<\/a><\/article>\n      <a class=\"slot pic\" data-slot=\"f1\" href=\"#contact\" data-interest=\"seller_mandate\" tabindex=\"-1\" aria-hidden=\"true\"><\/a>\n      <article class=\"slot card\" data-slot=\"c1\"><h3>Sell your property<\/h3><p>A free valuation, sharp marketing and skilled negotiation for the best possible price.<\/p><a href=\"#contact\" data-interest=\"seller_mandate\">Start here \u2192<\/a><\/article>\n      <a class=\"slot pic\" data-slot=\"f2\" href=\"#contact\" data-interest=\"tenant\" tabindex=\"-1\" aria-hidden=\"true\"><\/a>\n      <article class=\"slot card\" data-slot=\"c2\"><h3>Rent &amp; let<\/h3><p>Quality rentals, and full management for landlords who want peace of mind, not paperwork.<\/p><a href=\"#contact\" data-interest=\"tenant\">Start here \u2192<\/a><\/article>\n      <a class=\"slot pic\" data-slot=\"f3\" href=\"#contact\" data-interest=\"bond\" tabindex=\"-1\" aria-hidden=\"true\"><\/a>\n      <article class=\"slot card\" data-slot=\"c3\"><h3>Home loans<\/h3><p>We compare lenders and help with pre-approval, at no cost, to unlock the finance that gets you moving.<\/p><a href=\"#contact\" data-interest=\"bond\">Start here \u2192<\/a><\/article>\n    <\/div>\n\n    <div class=\"room room-devs\" data-room=\"2\" aria-labelledby=\"bdDevTitle\">\n      <div class=\"slot head\" data-slot=\"head\"><span class=\"kicker\">Developments<\/span><h2 id=\"bdDevTitle\">Now <em>selling.<\/em><\/h2><p>Brand-new homes at East London\u2019s newest addresses. Each sales pack has plans, pricing and availability.<\/p><\/div>\n      <a class=\"slot pic\" data-slot=\"f0\" href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/The-Wedge-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\" tabindex=\"-1\" aria-hidden=\"true\"><\/a>\n      <a class=\"slot plate\" data-slot=\"c0\" href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/The-Wedge-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\"><span class=\"tag\">Now selling<\/span><h3>The Wedge<\/h3><span class=\"pack\">Sales pack (PDF) \u2192<\/span><\/a>\n      <a class=\"slot pic\" data-slot=\"f1\" href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/Amalinda-Downs-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\" tabindex=\"-1\" aria-hidden=\"true\"><\/a>\n      <a class=\"slot plate\" data-slot=\"c1\" href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/Amalinda-Downs-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\"><span class=\"tag\">Now selling<\/span><h3>Amalinda Downs<\/h3><span class=\"pack\">Sales pack (PDF) \u2192<\/span><\/a>\n      <a class=\"slot pic\" data-slot=\"f2\" href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/Bengal-Heights-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\" tabindex=\"-1\" aria-hidden=\"true\"><\/a>\n      <a class=\"slot plate\" data-slot=\"c2\" href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/Bengal-Heights-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\"><span class=\"tag\">Now selling<\/span><h3>Bengal Heights<\/h3><span class=\"pack\">Sales pack (PDF) \u2192<\/span><\/a>\n      <a class=\"slot pic\" data-slot=\"f3\" href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/Bengal-Views-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\" tabindex=\"-1\" aria-hidden=\"true\"><\/a>\n      <a class=\"slot plate\" data-slot=\"c3\" href=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/07\/Bengal-Views-Sales-Pack-v2.pdf\" target=\"_blank\" rel=\"noopener\"><span class=\"tag\">Now selling<\/span><h3>Bengal Views<\/h3><span class=\"pack\">Sales pack (PDF) \u2192<\/span><\/a>\n    <\/div>\n\n    <nav class=\"tour\" id=\"bdTour\" aria-label=\"Walk through the house\">\n      <ol class=\"tour-dots\">\n        <li><button type=\"button\" data-stop=\"0\"><span>Front door<\/span><i><\/i><\/button><\/li>\n        <li><button type=\"button\" data-stop=\"1\"><span>Welcome<\/span><i><\/i><\/button><\/li>\n        <li><button type=\"button\" data-stop=\"2\"><span>Services<\/span><i><\/i><\/button><\/li>\n        <li><button type=\"button\" data-stop=\"3\"><span>Developments<\/span><i><\/i><\/button><\/li>\n      <\/ol>\n      <button type=\"button\" class=\"tour-next\" id=\"bdNext\"><small id=\"bdNextSub\">Scroll<\/small><b id=\"bdNextMain\">Step inside<\/b><span class=\"tn-line\" aria-hidden=\"true\"><\/span><\/button>\n    <\/nav>\n  <\/div>\n  <span class=\"house-anchor\" id=\"welcome\"><\/span><span class=\"house-anchor\" id=\"services\"><\/span><span class=\"house-anchor\" id=\"developments\"><\/span>\n<\/section>\n<script type=\"application\/json\" id=\"bdHouseD\">{\"width\":1920,\"height\":1080,\"frames\":176,\"open\":24,\"stations\":[{\"name\":\"welcome\",\"frame\":63,\"from\":24,\"aspect\":1.63934,\"slots\":{\"hello\":[0.0,12.295,100.0,35.246],\"intro\":[2.5,53.279,95.0,18.852],\"p0\":[6.0,79.508,26.0,17.213],\"p1\":[37.0,79.508,26.0,17.213],\"p2\":[68.0,79.508,26.0,17.213]},\"q\":[[0.52226,0.384,0.67095,0.384,0.67095,0.54525,0.52226,0.54525],[0.52194,0.3838,0.67068,0.38381,0.67068,0.54511,0.52194,0.54511],[0.52116,0.38329,0.67001,0.38334,0.67001,0.54476,0.52116,0.54475],[0.51976,0.38236,0.66882,0.38246,0.66883,0.54411,0.51976,0.54409],[0.51764,0.38088,0.66707,0.38107,0.66709,0.54314,0.51764,0.5431],[0.51474,0.37876,0.66478,0.37906,0.66482,0.54179,0.51474,0.54173],[0.51105,0.37589,0.66202,0.37631,0.66207,0.54005,0.51105,0.53997],[0.50656,0.37215,0.6589,0.37272,0.65897,0.53794,0.50656,0.53783],[0.50129,0.36744,0.65556,0.36817,0.65564,0.53547,0.50129,0.53533],[0.49524,0.36168,0.65214,0.36256,0.65223,0.5327,0.49524,0.53254],[0.48842,0.35479,0.64878,0.35583,0.64888,0.52969,0.48841,0.52951],[0.48083,0.34677,0.64559,0.34795,0.6457,0.52655,0.48081,0.52636],[0.47246,0.33768,0.64263,0.33898,0.64274,0.52339,0.47244,0.52321],[0.46335,0.32766,0.63991,0.32908,0.64001,0.52035,0.46332,0.52017],[0.45358,0.31701,0.63736,0.31854,0.63745,0.51755,0.45355,0.51739],[0.44335,0.30622,0.63481,0.30786,0.63489,0.51512,0.44331,0.51498],[0.43294,0.29575,0.63219,0.2975,0.63227,0.51311,0.4329,0.51299],[0.42243,0.28514,0.63005,0.28689,0.63012,0.5115,0.42239,0.51143],[0.41195,0.27428,0.62865,0.2759,0.6287,0.51032,0.41192,0.51028],[0.40164,0.26305,0.62819,0.26442,0.62821,0.50955,0.40163,0.50954],[0.3916,0.25128,0.62889,0.25228,0.62887,0.50917,0.39162,0.50918],[0.38189,0.23873,0.63098,0.23927,0.6309,0.50913,0.38195,0.50915],[0.37248,0.22508,0.63464,0.22511,0.6345,0.50938,0.37261,0.50938],[0.36322,0.20986,0.64007,0.2094,0.63985,0.50984,0.36344,0.50981],[0.35339,0.19158,0.64787,0.1907,0.64754,0.51049,0.35371,0.51042],[0.34286,0.17035,0.65777,0.16913,0.65731,0.51125,0.34332,0.51115],[0.33165,0.14692,0.66904,0.14547,0.6684,0.51206,0.33228,0.51193],[0.31992,0.12232,0.6808,0.12082,0.67997,0.5129,0.32075,0.51276],[0.30822,0.09781,0.69245,0.09641,0.69139,0.51373,0.30927,0.51359],[0.29716,0.07464,0.7034,0.07348,0.7021,0.51449,0.29845,0.51438],[0.28728,0.05394,0.71314,0.05308,0.71161,0.51517,0.2888,0.51508],[0.27894,0.03646,0.72134,0.03591,0.71959,0.51573,0.28068,0.51568],[0.27228,0.02252,0.72788,0.02221,0.72594,0.51619,0.27421,0.51615],[0.26726,0.01201,0.73282,0.01186,0.73073,0.51653,0.26935,0.51651],[0.26369,0.00454,0.73634,0.00448,0.73414,0.51677,0.26589,0.51676],[0.26131,-0.00045,0.7387,-0.00046,0.73641,0.51693,0.26359,0.51693],[0.25986,-0.00348,0.74014,-0.00348,0.7378,0.51703,0.2622,0.51703],[0.2591,-0.00506,0.7409,-0.00506,0.73853,0.51709,0.26147,0.51709],[0.25881,-0.00566,0.74119,-0.00566,0.73881,0.51711,0.26119,0.51711],[0.25877,-0.00575,0.74123,-0.00575,0.73885,0.51711,0.26115,0.51711],[0.25876,-0.00577,0.74124,-0.00577,0.73886,0.51711,0.26114,0.51711],[0.25872,-0.00588,0.74133,-0.00588,0.73895,0.51714,0.2611,0.51714],[0.2586,-0.00617,0.74155,-0.00617,0.73916,0.51721,0.26099,0.51721],[0.25837,-0.00673,0.74196,-0.00673,0.73957,0.51735,0.26076,0.51735],[0.25802,-0.00764,0.74267,-0.00766,0.74027,0.51758,0.26042,0.51758],[0.2583,-0.00884,0.74455,-0.00919,0.74212,0.51797,0.2607,0.51793],[0.26051,-0.01017,0.74906,-0.01169,0.74658,0.5186,0.26289,0.51843],[0.26569,-0.01155,0.75748,-0.01557,0.75491,0.51957,0.26802,0.51913],[0.27457,-0.01302,0.77092,-0.02128,0.76819,0.52098,0.2768,0.52007],[0.28759,-0.01473,0.79035,-0.02944,0.78741,0.52296,0.28968,0.52132],[0.30491,-0.01699,0.81676,-0.04083,0.81353,0.52564,0.30681,0.52295],[0.32646,-0.02018,0.85119,-0.05646,0.84756,0.5292,0.32813,0.52503],[0.35202,-0.02482,0.89489,-0.07777,0.89075,0.53387,0.35342,0.52767],[0.38122,-0.03147,0.94958,-0.10669,0.94476,0.53998,0.38233,0.53097],[0.41366,-0.0408,1.01772,-0.14598,1.012,0.54801,0.41446,0.53507],[0.44897,-0.05349,1.10313,-0.19976,1.09617,0.55864,0.44944,0.54011],[0.48686,-0.07027,1.21199,-0.2744,1.20329,0.57299,0.48698,0.54625],[0.52719,-0.09195,1.35494,-0.38042,1.34365,0.59288,0.52695,0.5537],[0.57012,-0.11938,1.55164,-0.53676,1.53622,0.62162,0.56951,0.56269],[0.61621,-0.15356,1.84242,-0.78135,1.81968,0.66585,0.61522,0.5735],[0.66671,-0.19574,2.32377,-1.20369,2.28577,0.74108,0.6653,0.58652],[0.7239,-0.24771,3.29524,-2.07929,3.21483,0.89434,0.72202,0.60224],[0.79168,-0.31231,6.37035,-4.88702,6.05767,1.36809,0.78926,0.62144],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{\"name\":\"services\",\"frame\":119,\"from\":63,\"aspect\":1.88034,\"slots\":{\"f0\":[2.727,29.915,19.545,36.752],\"c0\":[2.727,70.94,19.545,27.35],\"f1\":[27.727,29.915,19.545,36.752],\"c1\":[27.727,70.94,19.545,27.35],\"f2\":[52.727,29.915,19.545,36.752],\"c2\":[52.727,70.94,19.545,27.35],\"f3\":[77.727,29.915,19.545,36.752],\"c3\":[77.727,70.94,19.545,27.35],\"head\":[2.273,0.855,95.455,19.658]},\"q\":[[-49.15255,-19.05299,-0.70422,-0.00726,-0.68855,0.68223,-31.67089,6.3153],[-49.20721,-19.07445,-0.70425,-0.00727,-0.68858,0.68224,-31.69381,6.31952],[-49.58243,-19.22177,-0.70445,-0.00734,-0.68878,0.68229,-31.85065,6.34837],[-50.60318,-19.62251,-0.70499,-0.00755,-0.68931,0.68242,-32.27315,6.42609],[-52.67702,-20.43665,-0.70604,-0.00793,-0.69033,0.68267,-33.11319,6.58058],null,null,[-50.6157,-19.6183,-0.70091,-0.00703,-0.68533,0.68295,-32.30996,6.44682],[-37.31248,-14.38791,-0.68509,-0.00279,-0.66991,0.68161,-26.30299,5.35826],[-25.08593,-9.58249,-0.65792,0.00464,-0.64343,0.67908,-19.556,4.13341],[-16.63724,-6.26307,-0.61886,0.01534,-0.60532,0.67536,-13.99216,3.12279],[-11.29324,-4.16464,-0.56865,0.02902,-0.55629,0.67058,-9.99566,2.39715],[-7.92589,-2.84368,-0.50904,0.04508,-0.498,0.66503,-7.25455,1.90026],[-5.74658,-1.99019,-0.44233,0.06272,-0.43268,0.65906,-5.37836,1.5613],[-4.28551,-1.41952,-0.371,0.08114,-0.36272,0.65304,-4.07226,1.32671],[-3.27044,-1.02468,-0.2973,0.09959,-0.29032,0.64728,-3.14093,1.16095],[-2.54134,-0.74278,-0.2231,0.11747,-0.2173,0.64206,-2.45946,1.04128],[-2.00151,-0.53584,-0.14977,0.13431,-0.14502,0.63756,-1.94799,0.95314],[-1.59072,-0.38022,-0.07819,0.14982,-0.07436,0.63391,-1.55476,0.8871],[-1.27025,-0.26077,-0.00884,0.16382,-0.0058,0.63118,-1.24556,0.83691],[-1.01453,-0.16752,0.05814,0.17618,0.06051,0.6294,-0.99728,0.79837],[-0.80621,-0.09375,0.12285,0.18688,0.12466,0.62856,-0.794,0.76861],[-0.63325,-0.03487,0.18561,0.19587,0.18696,0.62868,-0.62453,0.74562],[-0.48711,0.01233,0.24688,0.20313,0.24784,0.62974,-0.48084,0.72798],[-0.36454,0.04973,0.3058,0.20848,0.30645,0.63192,-0.35999,0.71504],[-0.26237,0.07914,0.36162,0.21186,0.36203,0.63529,-0.25905,0.70606],[-0.17654,0.10222,0.41446,0.21338,0.41468,0.6398,-0.1741,0.70022],[-0.10412,0.12021,0.46439,0.21315,0.46447,0.64534,-0.10234,0.69689],[-0.04301,0.13401,0.51142,0.2113,0.5114,0.65185,-0.0417,0.69559],[0.00837,0.14433,0.55549,0.20796,0.5554,0.65919,0.00932,0.69596],[0.05117,0.15169,0.5965,0.2033,0.59637,0.66727,0.05186,0.6977],[0.0863,0.1565,0.6343,0.19747,0.63416,0.67592,0.08679,0.70055],[0.11447,0.1591,0.66875,0.19069,0.66861,0.68498,0.11481,0.70433],[0.1363,0.15974,0.6997,0.18315,0.69958,0.69426,0.13653,0.70886],[0.15204,0.15814,0.72773,0.17465,0.72764,0.70402,0.15219,0.71448],[0.16175,0.15401,0.75345,0.16487,0.75338,0.71462,0.16184,0.72163],[0.1659,0.14775,0.77648,0.15421,0.77643,0.72579,0.16596,0.73002],[0.16517,0.13979,0.79662,0.14305,0.79659,0.7372,0.16519,0.73937],[0.16039,0.13054,0.81389,0.13178,0.81388,0.74856,0.1604,0.7494],[0.15266,0.12048,0.8286,0.12074,0.8286,0.75959,0.15266,0.75977],[0.14335,0.11014,0.8414,0.11015,0.8414,0.77011,0.14335,0.77012],[0.13409,0.10011,0.85324,0.10011,0.85324,0.78004,0.13409,0.78004],[0.12561,0.0908,0.86434,0.0908,0.86434,0.78923,0.12561,0.78923],[0.11802,0.0824,0.8744,0.0824,0.8744,0.79751,0.11802,0.79751],[0.11137,0.07504,0.8832,0.07504,0.8832,0.80477,0.11137,0.80477],[0.10566,0.06877,0.89066,0.06877,0.89066,0.81096,0.10566,0.81096],[0.10087,0.06358,0.89679,0.06358,0.89679,0.81609,0.10087,0.81609],[0.09694,0.05939,0.90168,0.05939,0.90168,0.82024,0.09694,0.82024],[0.09379,0.05611,0.90546,0.05611,0.90546,0.82351,0.09379,0.82351],[0.09134,0.05361,0.90829,0.05361,0.90829,0.826,0.09134,0.826],[0.08949,0.05176,0.91035,0.05176,0.91035,0.82785,0.08949,0.82785],[0.08815,0.05046,0.91179,0.05046,0.91179,0.82917,0.08815,0.82917],[0.08725,0.04958,0.91274,0.04958,0.91274,0.83005,0.08725,0.83005],[0.08668,0.04905,0.91331,0.04905,0.91331,0.83059,0.08668,0.83059],[0.08639,0.04877,0.91361,0.04877,0.91361,0.83087,0.08639,0.83087],[0.08628,0.04866,0.91372,0.04866,0.91372,0.83098,0.08628,0.83098],[0.08626,0.04865,0.91374,0.04865,0.91374,0.83099,0.08626,0.83099],[0.08584,0.04854,0.91334,0.04874,0.91334,0.83093,0.08584,0.83107],[0.08308,0.04782,0.91071,0.04933,0.91071,0.83049,0.08308,0.8316],[0.07598,0.04595,0.904,0.0508,0.904,0.82941,0.07598,0.83297],[0.06282,0.04242,0.89186,0.05341,0.89186,0.8275,0.06282,0.83556],[0.04203,0.03668,0.87344,0.05719,0.87344,0.82473,0.04203,0.83977],[0.01206,0.02806,0.84835,0.06199,0.84835,0.82121,0.01206,0.84609],[-0.02884,0.01567,0.81662,0.06748,0.81662,0.81718,-0.02884,0.85518],[-0.08288,-0.00173,0.77863,0.07314,0.77863,0.81303,-0.08288,0.86793],[-0.15314,-0.02591,0.73492,0.07836,0.73492,0.8092,-0.15314,0.88567],[-0.2442,-0.05954,0.68612,0.08245,0.68612,0.80621,-0.2442,0.91033],[-0.36337,-0.10676,0.63278,0.08465,0.63278,0.80459,-0.36337,0.94496],[-0.52297,-0.17447,0.57529,0.08423,0.57529,0.8049,-0.52297,0.99462],[-0.74546,-0.27504,0.51383,0.08038,0.51383,0.80772,-0.74546,1.06837],[-1.07611,-0.43312,0.44831,0.07225,0.44831,0.81368,-1.07611,1.18429],[-1.62095,-0.70612,0.37832,0.05887,0.37832,0.8235,-1.62095,1.38449],[-2.69836,-1.26601,0.3031,0.03908,0.3031,0.83801,-2.69836,1.79507],[-5.89636,-2.96947,0.22142,0.01142,0.22142,0.85829,-5.89635,3.04427],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{\"name\":\"developments\",\"frame\":175,\"from\":119,\"aspect\":2.40437,\"slots\":{\"f0\":[2.273,40.71,20.455,36.885],\"c0\":[4.773,85.246,15.455,12.022],\"f1\":[27.273,40.71,20.455,36.885],\"c1\":[29.773,85.246,15.455,12.022],\"f2\":[52.273,40.71,20.455,36.885],\"c2\":[54.773,85.246,15.455,12.022],\"f3\":[77.273,40.71,20.455,36.885],\"c3\":[79.773,85.246,15.455,12.022],\"head\":[2.273,1.639,95.455,30.055]},\"q\":[null,null,null,null,null,null,null,null,[1.55665,0.11824,19.02559,-5.60596,19.02561,2.79548,1.55665,0.64352],[1.45341,0.14146,9.01681,-2.3228,9.01682,1.5612,1.45341,0.63479],[1.34971,0.16363,5.7473,-1.25571,5.74731,1.16004,1.34971,0.62646],[1.24839,0.18389,4.15904,-0.74216,4.15904,0.96698,1.24839,0.61884],[1.15126,0.20171,3.23584,-0.44808,3.23584,0.85642,1.15126,0.61214],[1.05928,0.21681,2.63979,-0.26234,2.63979,0.78659,1.05928,0.60646],[0.97277,0.22907,2.227,-0.13754,2.227,0.73968,0.97277,0.60185],[0.89166,0.2385,1.9263,-0.05021,1.9263,0.70684,0.89166,0.59831],[0.81563,0.24519,1.69871,0.01257,1.69871,0.68324,0.81563,0.59579],[0.74427,0.24926,1.52127,0.05845,1.52127,0.666,0.74427,0.59426],[0.67715,0.25085,1.37969,0.09223,1.37969,0.6533,0.67715,0.59367],[0.61388,0.25011,1.2647,0.11709,1.2647,0.64395,0.61388,0.59394],[0.5541,0.24722,1.17002,0.1352,1.17002,0.63714,0.5541,0.59503],[0.49757,0.24235,1.09129,0.1481,1.09129,0.63229,0.49757,0.59686],[0.44407,0.23573,1.02535,0.15694,1.02535,0.62897,0.44407,0.59935],[0.39342,0.22761,0.96982,0.16256,0.96982,0.62686,0.39342,0.6024],[0.34579,0.21767,0.9247,0.16475,0.9247,0.62603,0.34579,0.60614],[0.30165,0.20571,0.89008,0.16351,0.89008,0.6265,0.30165,0.61064],[0.26149,0.19201,0.86507,0.15939,0.86507,0.62805,0.26149,0.61578],[0.22579,0.17696,0.8489,0.15286,0.8489,0.6305,0.22579,0.62144],[0.19501,0.16103,0.84079,0.14436,0.84079,0.6337,0.19501,0.62743],[0.16951,0.14482,0.83986,0.13435,0.83986,0.63746,0.16951,0.63353],[0.14943,0.12897,0.84498,0.1233,0.84498,0.64162,0.14943,0.63949],[0.13462,0.11417,0.85478,0.11177,0.85478,0.64595,0.13462,0.64505],[0.12457,0.10107,0.86751,0.10045,0.86751,0.65021,0.12457,0.64997],[0.11834,0.09018,0.88102,0.09014,0.88102,0.65408,0.11834,0.65407],[0.11396,0.0814,0.89293,0.0814,0.89293,0.65737,0.11396,0.65737],[0.10963,0.07412,0.90215,0.07412,0.90215,0.66011,0.10963,0.66011],[0.10537,0.06818,0.90895,0.06818,0.90895,0.66234,0.10537,0.66234],[0.10129,0.06341,0.91374,0.06341,0.91374,0.66413,0.10129,0.66413],[0.09747,0.05963,0.91697,0.05963,0.91697,0.66555,0.09747,0.66555],[0.09397,0.05664,0.91901,0.05664,0.91901,0.66668,0.09397,0.66668],[0.09082,0.05429,0.92024,0.05429,0.92024,0.66756,0.09082,0.66756],[0.08803,0.05241,0.92094,0.05241,0.92094,0.66827,0.08803,0.66827],[0.0856,0.05089,0.92135,0.05089,0.92135,0.66884,0.0856,0.66884],[0.08352,0.04963,0.92161,0.04963,0.92161,0.66931,0.08352,0.66931],[0.08177,0.04857,0.92184,0.04857,0.92184,0.66971,0.08177,0.66971],[0.08031,0.04765,0.9221,0.04765,0.9221,0.67006,0.08031,0.67006],[0.07912,0.04685,0.92239,0.04685,0.92239,0.67036,0.07912,0.67036],[0.07816,0.04615,0.92273,0.04615,0.92273,0.67062,0.07816,0.67062],[0.0774,0.04556,0.92308,0.04556,0.92308,0.67084,0.0774,0.67084],[0.07682,0.04506,0.92342,0.04506,0.92342,0.67103,0.07682,0.67103],[0.07638,0.04466,0.92372,0.04466,0.92372,0.67118,0.07638,0.67118],[0.07606,0.04436,0.92397,0.04436,0.92397,0.67129,0.07606,0.67129],[0.07585,0.04414,0.92416,0.04414,0.92416,0.67138,0.07585,0.67138],[0.07572,0.044,0.92428,0.044,0.92428,0.67143,0.07572,0.67143],[0.07565,0.04393,0.92435,0.04393,0.92435,0.67146,0.07565,0.67146],[0.07562,0.0439,0.92438,0.0439,0.92438,0.67147,0.07562,0.67147],[0.07562,0.0439,0.92438,0.0439,0.92438,0.67147,0.07562,0.67147]]}]}<\/script>\n<script type=\"application\/json\" id=\"bdHouseM\">{\"width\":900,\"height\":1350,\"frames\":176,\"open\":24,\"stations\":[{\"name\":\"welcome\",\"frame\":63,\"from\":24,\"aspect\":1.63934,\"slots\":{\"hello\":[2.5,3.279,95.0,29.508],\"intro\":[2.5,36.066,95.0,34.426],\"p0\":[5.0,77.049,28.0,19.672],\"p1\":[36.0,77.049,28.0,19.672],\"p2\":[67.0,77.049,28.0,19.672]},\"q\":[[0.37229,0.50649,0.62771,0.50649,0.62771,0.61037,0.37229,0.61037],[0.37224,0.50613,0.62776,0.50613,0.62776,0.61004,0.37224,0.61004],[0.37213,0.5052,0.62787,0.5052,0.62787,0.6092,0.37213,0.6092],[0.37192,0.50353,0.62808,0.50353,0.62809,0.60771,0.37191,0.60771],[0.37155,0.50098,0.62845,0.50098,0.62847,0.60544,0.37153,0.60544],[0.37099,0.49744,0.62901,0.49744,0.62904,0.60236,0.37096,0.60236],[0.37016,0.49285,0.62984,0.49285,0.62989,0.59845,0.37011,0.59845],[0.36897,0.48718,0.63103,0.48718,0.63109,0.59374,0.36891,0.59374],[0.36734,0.48042,0.63266,0.48042,0.63275,0.58831,0.36725,0.58831],[0.36516,0.47261,0.63484,0.47261,0.63494,0.58227,0.36506,0.58227],[0.36235,0.46381,0.63765,0.46381,0.63778,0.57575,0.36222,0.57575],[0.35881,0.45411,0.64119,0.45411,0.64134,0.56893,0.35866,0.56893],[0.35451,0.44366,0.64549,0.44366,0.64566,0.56198,0.35434,0.56198],[0.34947,0.43268,0.65053,0.43268,0.65073,0.55511,0.34927,0.55511],[0.3438,0.42145,0.6562,0.42145,0.65643,0.54848,0.34357,0.54848],[0.33776,0.41033,0.66224,0.41033,0.6625,0.54229,0.3375,0.54229],[0.3316,0.39968,0.6684,0.39968,0.6687,0.53664,0.3313,0.53664],[0.3249,0.38926,0.6751,0.38926,0.67543,0.53168,0.32457,0.53168],[0.3176,0.37912,0.6824,0.37912,0.68276,0.52748,0.31724,0.52748],[0.30964,0.36928,0.69036,0.36928,0.69075,0.52412,0.30925,0.52412],[0.30099,0.35975,0.69901,0.35975,0.69942,0.52163,0.30058,0.52163],[0.29162,0.35048,0.70838,0.35048,0.7088,0.51999,0.2912,0.51999],[0.28149,0.34141,0.71851,0.34141,0.71892,0.51915,0.28108,0.51915],[0.27051,0.33236,0.72949,0.33236,0.72989,0.51903,0.27011,0.51903],[0.25786,0.32259,0.74214,0.32259,0.74253,0.51955,0.25747,0.51955],[0.24374,0.31208,0.75626,0.31208,0.75662,0.52053,0.24338,0.52053],[0.22875,0.30107,0.77125,0.30107,0.77159,0.52172,0.22841,0.52172],[0.21358,0.28995,0.78642,0.28995,0.78672,0.52293,0.21328,0.52293],[0.19898,0.27924,0.80102,0.27924,0.80128,0.5241,0.19872,0.5241],[0.1856,0.26944,0.8144,0.26944,0.81462,0.52516,0.18538,0.52516],[0.17396,0.2609,0.82604,0.2609,0.82622,0.52609,0.17378,0.52609],[0.16434,0.25385,0.83566,0.25385,0.8358,0.52686,0.1642,0.52686],[0.15678,0.2483,0.84322,0.2483,0.84332,0.52746,0.15668,0.52746],[0.15113,0.24416,0.84887,0.24416,0.84894,0.52791,0.15106,0.52791],[0.14713,0.24123,0.85287,0.24123,0.85291,0.52823,0.14709,0.52823],[0.14447,0.23928,0.85553,0.23928,0.85555,0.52844,0.14445,0.52844],[0.14285,0.23809,0.85715,0.23809,0.85716,0.52857,0.14284,0.52857],[0.142,0.23747,0.858,0.23747,0.858,0.52864,0.142,0.52864],[0.14168,0.23723,0.85832,0.23723,0.85832,0.52867,0.14168,0.52867],[0.14163,0.23719,0.85837,0.23719,0.85837,0.52867,0.14163,0.52867],[0.14162,0.23718,0.85839,0.23718,0.85839,0.52867,0.14162,0.52867],[0.14154,0.23712,0.85851,0.23712,0.85851,0.52869,0.14154,0.52869],[0.14133,0.23695,0.85882,0.23695,0.85882,0.52873,0.14133,0.52873],[0.14091,0.23662,0.85941,0.23662,0.85941,0.52881,0.14091,0.52881],[0.14027,0.23609,0.86042,0.23608,0.86042,0.52894,0.14027,0.52894],[0.1406,0.23535,0.86325,0.23518,0.86325,0.52915,0.1406,0.52913],[0.14402,0.23447,0.87027,0.23371,0.87027,0.52947,0.14402,0.52939],[0.15219,0.23344,0.88351,0.23144,0.88351,0.52993,0.15219,0.52971],[0.16627,0.23221,0.90471,0.22809,0.90471,0.53058,0.16627,0.53012],[0.18698,0.23068,0.93541,0.22334,0.93541,0.53148,0.18698,0.53064],[0.21458,0.22865,0.97706,0.21674,0.97706,0.5327,0.21458,0.53132],[0.24897,0.22588,1.03119,0.20773,1.03119,0.53433,0.24897,0.5322],[0.28976,0.22209,1.09959,0.19554,1.09959,0.53652,0.28976,0.53333],[0.33636,0.21693,1.18465,0.17913,1.18465,0.53944,0.33636,0.53479],[0.38809,0.21002,1.28976,0.15702,1.28976,0.54336,0.38809,0.53666],[0.44428,0.20095,1.42013,0.12708,1.42013,0.54866,0.44428,0.53902],[0.50438,0.18929,1.58409,0.08603,1.58409,0.55594,0.50438,0.54198],[0.56809,0.17458,1.79573,0.02858,1.79573,0.56617,0.56809,0.54568],[0.63556,0.1563,2.08046,-0.05444,2.08046,0.58103,0.63556,0.55023],[0.70766,0.1339,2.4884,-0.18067,2.4884,0.60379,0.70766,0.55582],[0.78642,0.10668,3.13253,-0.38902,3.13253,0.64158,0.78642,0.56264],[0.87573,0.07365,4.32761,-0.78663,4.32761,0.71407,0.87573,0.57093],[0.98238,0.03326,7.38812,-1.81815,7.38812,0.90275,0.98238,0.58109],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{\"name\":\"services\",\"frame\":119,\"from\":63,\"aspect\":0.57971,\"slots\":{\"f0\":[2.5,21.014,26.25,15.217],\"c0\":[32.5,19.565,65.0,18.116],\"f1\":[2.5,41.304,26.25,15.217],\"c1\":[32.5,39.855,65.0,18.116],\"f2\":[2.5,61.594,26.25,15.217],\"c2\":[32.5,60.145,65.0,18.116],\"f3\":[2.5,81.884,26.25,15.217],\"c3\":[32.5,80.435,65.0,18.116],\"head\":[2.5,0.725,95.0,15.942]},\"q\":[[-4.26184,-0.22807,-2.085,0.10476,-2.085,0.7619,-4.26184,0.98246],[-4.26219,-0.22812,-2.0851,0.10475,-2.0851,0.76192,-4.26219,0.98249],[-4.26457,-0.22848,-2.08579,0.10465,-2.08579,0.762,-4.26457,0.98275],[-4.27087,-0.22941,-2.08762,0.10438,-2.08762,0.76221,-4.27087,0.98344],[-4.283,-0.23122,-2.09115,0.10387,-2.09115,0.76262,-4.283,0.98476],[-4.30214,-0.23406,-2.09666,0.10307,-2.09666,0.76326,-4.30214,0.98685],[-4.31131,-0.23553,-2.09833,0.10268,-2.09833,0.76367,-4.31131,0.98812],[-4.28033,-0.23128,-2.08591,0.10399,-2.08591,0.76304,-4.28033,0.98572],[-4.18742,-0.2182,-2.05167,0.10792,-2.05167,0.76073,-4.18742,0.9776],[-4.02314,-0.19497,-1.99123,0.11501,-1.99123,0.7564,-4.02314,0.96285],[-3.79147,-0.16221,-1.90386,0.1253,-1.90386,0.75004,-3.79147,0.94189],[-3.50727,-0.12213,-1.79211,0.1384,-1.79211,0.74189,-3.50727,0.91616],[-3.19097,-0.07774,-1.66095,0.15363,-1.66095,0.7324,-3.19097,0.88763],[-2.86298,-0.03206,-1.51649,0.17015,-1.51649,0.72212,-2.86298,0.85829],[-2.53992,0.01247,-1.36481,0.18715,-1.36481,0.71159,-2.53992,0.82973],[-2.23308,0.0542,-1.21121,0.20391,-1.21121,0.70127,-2.23308,0.80304],[-1.94877,0.09219,-1.0597,0.21991,-1.0597,0.69151,-1.94877,0.77884],[-1.68937,0.12611,-0.91301,0.23478,-0.91301,0.68255,-1.68937,0.75735],[-1.45468,0.15596,-0.77268,0.24833,-0.77268,0.67452,-1.45468,0.73857],[-1.24298,0.18197,-0.6393,0.26044,-0.6393,0.66747,-1.24298,0.72232],[-1.05175,0.20445,-0.5128,0.27111,-0.5128,0.66141,-1.05175,0.70842],[-0.87825,0.22373,-0.39261,0.28033,-0.39261,0.65634,-0.87825,0.69663],[-0.71975,0.24008,-0.27783,0.28814,-0.27783,0.65224,-0.71975,0.68678],[-0.5737,0.25374,-0.16739,0.29453,-0.16739,0.6491,-0.5737,0.67869],[-0.44196,0.26486,-0.06357,0.29947,-0.06357,0.647,-0.44196,0.67238],[-0.32537,0.27367,0.03199,0.30302,0.03199,0.64598,-0.32537,0.66774],[-0.22211,0.28043,0.11994,0.30526,0.11994,0.64598,-0.22211,0.66459],[-0.13077,0.28535,0.20075,0.30626,0.20075,0.64696,-0.13077,0.66282],[-0.05035,0.28859,0.27477,0.30608,0.27477,0.6489,-0.05035,0.66233],[0.01991,0.29025,0.34222,0.30474,0.34222,0.65178,0.01991,0.66303],[0.08051,0.29043,0.40323,0.30226,0.40323,0.65559,0.08051,0.6649],[0.13184,0.28917,0.45786,0.29865,0.45786,0.66036,0.13184,0.66791],[0.17416,0.28648,0.5062,0.29389,0.5062,0.66609,0.17416,0.67206],[0.20776,0.28235,0.54841,0.28794,0.54841,0.67282,0.20776,0.67738],[0.23298,0.27625,0.58558,0.2803,0.58558,0.68108,0.23298,0.68442],[0.25001,0.26764,0.6188,0.27041,0.6188,0.69144,0.25001,0.69375],[0.25913,0.25676,0.64792,0.25847,0.64792,0.70374,0.25913,0.70519],[0.26097,0.24382,0.67313,0.24473,0.67313,0.71777,0.26097,0.71854],[0.25653,0.22912,0.69492,0.22948,0.69492,0.73325,0.25653,0.73357],[0.24726,0.21299,0.71409,0.21307,0.71409,0.74985,0.24726,0.74992],[0.23507,0.19592,0.7318,0.19592,0.7318,0.76717,0.23507,0.76717],[0.22222,0.17849,0.74939,0.17849,0.74939,0.78474,0.22222,0.78474],[0.20983,0.16129,0.76702,0.16129,0.76702,0.80206,0.20983,0.80206],[0.19813,0.14489,0.78393,0.14489,0.78393,0.81856,0.19813,0.81856],[0.18734,0.12978,0.7995,0.12978,0.7995,0.83377,0.18734,0.83377],[0.17764,0.11634,0.81326,0.11634,0.81326,0.8473,0.17764,0.8473],[0.16917,0.1048,0.82494,0.1048,0.82494,0.85893,0.16917,0.85893],[0.16199,0.09523,0.83448,0.09523,0.83448,0.86859,0.16199,0.86859],[0.15607,0.08755,0.84199,0.08755,0.84199,0.87635,0.15607,0.87635],[0.15136,0.0816,0.84768,0.0816,0.84768,0.88236,0.15136,0.88236],[0.14775,0.07716,0.85183,0.07716,0.85183,0.88685,0.14775,0.88685],[0.14511,0.074,0.85474,0.074,0.85474,0.89006,0.14511,0.89006],[0.1433,0.07187,0.85665,0.07187,0.85665,0.89222,0.1433,0.89222],[0.14218,0.07057,0.85782,0.07057,0.85782,0.89355,0.14218,0.89355],[0.14158,0.06988,0.85842,0.06988,0.85842,0.89425,0.14158,0.89425],[0.14135,0.06962,0.85865,0.06962,0.85865,0.89451,0.14135,0.89451],[0.14132,0.06958,0.85868,0.06958,0.85868,0.89455,0.14132,0.89455],[0.14073,0.06953,0.8581,0.06963,0.8581,0.89451,0.14073,0.8946],[0.1368,0.06918,0.85421,0.06993,0.85421,0.89423,0.1368,0.89492],[0.12669,0.06827,0.84427,0.07068,0.84427,0.89355,0.12669,0.89575],[0.10803,0.06652,0.82617,0.07197,0.82617,0.89237,0.10803,0.89735],[0.07877,0.06363,0.79835,0.07377,0.79835,0.89071,0.07877,0.9],[0.03703,0.05918,0.75982,0.07592,0.75982,0.88874,0.03703,0.90408],[-0.0191,0.05262,0.71004,0.07808,0.71004,0.88676,-0.0191,0.9101],[-0.09185,0.04317,0.64875,0.07977,0.64875,0.88521,-0.09185,0.91876],[-0.18411,0.02976,0.57584,0.08037,0.57584,0.88466,-0.18411,0.93105],[-0.29999,0.01087,0.49108,0.07911,0.49108,0.88581,-0.29999,0.94837],[-0.44575,-0.01571,0.3939,0.07507,0.3939,0.88952,-0.44575,0.97274],[-0.63141,-0.0534,0.28312,0.06714,0.28312,0.89679,-0.63141,1.00728],[-0.87379,-0.10769,0.15657,0.05391,0.15657,0.90892,-0.87379,1.05704],[-1.20314,-0.18819,0.01059,0.03352,0.01059,0.92761,-1.20314,1.13084],[-1.67887,-0.31351,-0.16079,0.00335,-0.16079,0.95526,-1.67887,1.24572],[-2.43469,-0.52513,-0.36738,-0.04053,-0.36738,0.99549,-2.43469,1.4397],[-3.84418,-0.93851,-0.62567,-0.10447,-0.62567,1.05409,-3.84418,1.81863],[-7.48769,-2.04125,-0.96489,-0.1994,-0.96489,1.14112,-7.4877,2.82948],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},{\"name\":\"developments\",\"frame\":175,\"from\":119,\"aspect\":0.59041,\"slots\":{\"f0\":[2.5,24.354,35.0,15.498],\"c0\":[41.25,24.354,56.25,15.498],\"f1\":[2.5,43.911,35.0,15.498],\"c1\":[41.25,43.911,56.25,15.498],\"f2\":[2.5,63.469,35.0,15.498],\"c2\":[41.25,63.469,56.25,15.498],\"f3\":[2.5,83.026,35.0,15.498],\"c3\":[41.25,83.026,56.25,15.498],\"head\":[2.5,1.476,95.0,19.926]},\"q\":[null,null,null,null,null,null,null,[5.334,-0.16258,41.34227,-4.97164,41.34236,5.32569,5.334,1.08436],[4.61212,-0.07183,17.81198,-1.83014,17.81199,2.55506,4.61212,1.00432],[3.97791,0.0066,10.75924,-0.89212,10.75925,1.72778,3.97791,0.93515],[3.4361,0.07207,7.4598,-0.4566,7.4598,1.34367,3.4361,0.87741],[2.97962,0.12552,5.58856,-0.21275,5.58857,1.12861,2.97962,0.83027],[2.59662,0.1685,4.40248,-0.06121,4.40248,0.99496,2.59662,0.79237],[2.27453,0.20268,3.59279,0.03932,3.59279,0.9063,2.27453,0.76222],[2.00189,0.22956,3.00933,0.10895,3.00933,0.84489,2.00189,0.73851],[1.76905,0.25044,2.571,0.15856,2.571,0.80113,1.76905,0.7201],[1.56815,0.26634,2.23054,0.1945,2.23054,0.76943,1.56815,0.70607],[1.39302,0.27812,1.95884,0.22073,1.95884,0.7463,1.39302,0.69569],[1.23881,0.28642,1.73716,0.23979,1.73716,0.72949,1.23881,0.68837],[1.10184,0.29179,1.55307,0.25344,1.55307,0.71745,1.10184,0.68363],[0.97931,0.29468,1.39805,0.26291,1.39805,0.7091,0.97931,0.68108],[0.86915,0.29549,1.26618,0.26911,1.26618,0.70363,0.86915,0.68037],[0.76988,0.29458,1.15322,0.27278,1.15322,0.7004,0.76988,0.68117],[0.68044,0.29232,1.05611,0.27451,1.05611,0.69887,0.68044,0.68316],[0.6003,0.28882,0.97325,0.27451,0.97325,0.69887,0.6003,0.68625],[0.52931,0.28411,0.90375,0.27288,0.90375,0.70031,0.52931,0.69041],[0.46743,0.27838,0.84672,0.26986,0.84672,0.70297,0.46743,0.69545],[0.41468,0.27183,0.80147,0.26566,0.80147,0.70668,0.41468,0.70123],[0.37102,0.26463,0.76736,0.26044,0.76736,0.71128,0.37102,0.70758],[0.33623,0.25693,0.7437,0.25434,0.7437,0.71666,0.33623,0.71438],[0.30979,0.24884,0.7296,0.24746,0.7296,0.72273,0.30979,0.72151],[0.29081,0.24046,0.72387,0.23987,0.72387,0.72942,0.29081,0.7289],[0.27788,0.23181,0.72499,0.23166,0.72499,0.73666,0.27788,0.73653],[0.26913,0.2229,0.73097,0.22289,0.73097,0.74439,0.26913,0.74439],[0.26163,0.21332,0.73943,0.21332,0.73943,0.75284,0.26163,0.75284],[0.25312,0.20264,0.74872,0.20264,0.74872,0.76225,0.25312,0.76225],[0.24372,0.19109,0.75857,0.19109,0.75857,0.77244,0.24372,0.77244],[0.23367,0.17891,0.76881,0.17891,0.76881,0.78318,0.23367,0.78318],[0.22324,0.16641,0.77921,0.16641,0.77921,0.79421,0.22323,0.79421],[0.21272,0.1539,0.78955,0.1539,0.78955,0.80524,0.21272,0.80524],[0.2024,0.14169,0.79959,0.14169,0.79959,0.81601,0.2024,0.81601],[0.19256,0.13007,0.8091,0.13007,0.8091,0.82625,0.19256,0.82625],[0.18342,0.11931,0.8179,0.11931,0.8179,0.83574,0.18342,0.83574],[0.17517,0.1096,0.82583,0.1096,0.82583,0.84431,0.17517,0.84431],[0.16791,0.10107,0.8328,0.10107,0.8328,0.85184,0.16791,0.85184],[0.16171,0.09376,0.83878,0.09376,0.83878,0.85828,0.16171,0.85828],[0.15653,0.08766,0.84377,0.08766,0.84377,0.86366,0.15653,0.86366],[0.15233,0.08269,0.84785,0.08269,0.84785,0.86804,0.15233,0.86804],[0.14901,0.07876,0.85108,0.07876,0.85108,0.87151,0.14901,0.87151],[0.14646,0.07573,0.85358,0.07573,0.85358,0.87419,0.14646,0.87419],[0.14457,0.07347,0.85545,0.07347,0.85545,0.87618,0.14457,0.87618],[0.14321,0.07185,0.85679,0.07185,0.85679,0.8776,0.14321,0.8776],[0.1423,0.07076,0.8577,0.07076,0.8577,0.87857,0.1423,0.87857],[0.14174,0.07009,0.85826,0.07009,0.85826,0.87916,0.14174,0.87916],[0.14145,0.06974,0.85855,0.06974,0.85855,0.87947,0.14145,0.87947],[0.14134,0.0696,0.85866,0.0696,0.85866,0.87959,0.14134,0.87959],[0.14132,0.06958,0.85868,0.06958,0.85868,0.8796,0.14132,0.8796]]}]}<\/script>\n\n<section class=\"pad about\" id=\"about\">\n  <div class=\"wrap about-grid\">\n    <div>\n      <span class=\"kicker\">Who we are<\/span>\n      <h2 class=\"title\">Property done properly, <em>and personally.<\/em><\/h2>\n      <p class=\"body\">Blue Door was built on a simple belief: a home is more than a transaction. It\u2019s a new chapter. So we treat every client like family and every deal like it\u2019s our own.<\/p>\n      <p class=\"body\">Deep local knowledge, modern and transparent service, and a team that picks up the phone. You\u2019ll always know where you stand.<\/p>\n      <a href=\"#contact\" class=\"btn btn-gold\">Talk to an agent<\/a>\n    <\/div>\n    <div class=\"sign reveal\">\n      <div class=\"sign-in\">\n        <h3>House rules<\/h3>\n        <ol>\n          <li><span>Valuations are free, with no obligation.<\/span><\/li>\n          <li><span>One dedicated agent, from first call to handover.<\/span><\/li>\n          <li><span>Honest pricing and plain-English updates.<\/span><\/li>\n          <li><span>Trusted home-loan and legal partners on call.<\/span><\/li>\n        <\/ol>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"pad walk\" id=\"process\">\n  <div class=\"wrap\">\n    <div class=\"head center\">\n      <span class=\"kicker\">How it works<\/span>\n      <h2 class=\"title\">Three steps to your <em>new front door.<\/em><\/h2>\n    <\/div>\n    <div class=\"path\" id=\"bdPath\">\n      <span class=\"path-line\"><\/span><span class=\"path-fill\"><\/span>\n      <img decoding=\"async\" class=\"path-key\" src=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/10\/bd-key.webp\" alt=\"\" loading=\"lazy\">\n      <div class=\"stp\"><span class=\"num\">1<\/span><h3>Tell us your goal<\/h3><p>Buying, selling or renting? Tell us what you\u2019re after and we\u2019ll build a plan around it.<\/p><\/div>\n      <div class=\"stp\"><span class=\"num\">2<\/span><h3>We do the legwork<\/h3><p>Valuations, viewings, marketing and negotiation. We handle the detail so you don\u2019t have to.<\/p><\/div>\n      <div class=\"stp\"><span class=\"num\">3<\/span><h3>Keys in hand<\/h3><p>Sign, celebrate and step into your next chapter.<\/p><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"pad team\" id=\"team\">\n  <div class=\"wrap\">\n    <div class=\"head center\">\n      <span class=\"kicker\">Meet the team<\/span>\n      <h2 class=\"title\">Who\u2019s behind <em>the door.<\/em><\/h2>\n      <p>Friendly, experienced and genuinely on your side. These are the people who\u2019ll walk every step with you.<\/p>\n    <\/div>\n    <div class=\"team-grid\">\n      <article class=\"member reveal\">\n        <div class=\"portal\"><img decoding=\"async\" src=\"https:\/\/thebluedoor.co.za\/wp-content\/uploads\/2026\/10\/bd-michiel.jpg\" alt=\"Michiel van Wyk\"><\/div>\n        <div class=\"nameplate brass\"><h3>Michiel van Wyk<\/h3><span>Property Specialist<\/span><\/div>\n        <p>Approachable and sharp, Michiel knows the local market inside out and loves matching people to the right home.<\/p>\n        <div class=\"member-links\">\n          <a href=\"mailto:info@thebluedoor.co.za\" aria-label=\"Email Michiel\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/><path d=\"m2 6 10 7 10-7\"\/><\/svg><\/a>\n          <a href=\"tel:+27721727068\" aria-label=\"Call Michiel\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.6a2 2 0 0 1-.5 2.1L8.1 9.6a16 16 0 0 0 6 6l1.2-1.2a2 2 0 0 1 2.1-.5c.8.3 1.7.6 2.6.7a2 2 0 0 1 1.7 2Z\"\/><\/svg><\/a>\n        <\/div>\n      <\/article>\n      <article class=\"member reveal\">\n        <div class=\"portal\"><span class=\"initials\">CvL<\/span><\/div>\n        <div class=\"nameplate brass\"><h3>Charn\u00e9 van Loggerenberg<\/h3><span>Property Specialist<\/span><\/div>\n        <div class=\"member-links\">\n          <a href=\"mailto:info@thebluedoor.co.za\" aria-label=\"Email Charn\u00e9\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/><path d=\"m2 6 10 7 10-7\"\/><\/svg><\/a>\n          <a href=\"tel:+27721727068\" aria-label=\"Call Charn\u00e9\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.6a2 2 0 0 1-.5 2.1L8.1 9.6a16 16 0 0 0 6 6l1.2-1.2a2 2 0 0 1 2.1-.5c.8.3 1.7.6 2.6.7a2 2 0 0 1 1.7 2Z\"\/><\/svg><\/a>\n        <\/div>\n      <\/article>\n      <article class=\"member reveal\">\n        <div class=\"portal\"><span class=\"initials\">CL<\/span><\/div>\n        <div class=\"nameplate brass\"><h3>Charlene Lello<\/h3><span>Property Specialist<\/span><\/div>\n        <div class=\"member-links\">\n          <a href=\"mailto:info@thebluedoor.co.za\" aria-label=\"Email Charlene\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/><path d=\"m2 6 10 7 10-7\"\/><\/svg><\/a>\n          <a href=\"tel:+27721727068\" aria-label=\"Call Charlene\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.6a2 2 0 0 1-.5 2.1L8.1 9.6a16 16 0 0 0 6 6l1.2-1.2a2 2 0 0 1 2.1-.5c.8.3 1.7.6 2.6.7a2 2 0 0 1 1.7 2Z\"\/><\/svg><\/a>\n        <\/div>\n      <\/article>\n      <article class=\"member reveal\">\n        <div class=\"portal\"><span class=\"initials\">FdL<\/span><\/div>\n        <div class=\"nameplate brass\"><h3>Felicity de Lange<\/h3><span>Property Specialist<\/span><\/div>\n        <div class=\"member-links\">\n          <a href=\"mailto:info@thebluedoor.co.za\" aria-label=\"Email Felicity\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/><path d=\"m2 6 10 7 10-7\"\/><\/svg><\/a>\n          <a href=\"tel:+27721727068\" aria-label=\"Call Felicity\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.6a2 2 0 0 1-.5 2.1L8.1 9.6a16 16 0 0 0 6 6l1.2-1.2a2 2 0 0 1 2.1-.5c.8.3 1.7.6 2.6.7a2 2 0 0 1 1.7 2Z\"\/><\/svg><\/a>\n        <\/div>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"pad contact\" id=\"contact\">\n  <div class=\"wrap contact-grid\">\n    <div>\n      <span class=\"kicker\">Get in touch<\/span>\n      <h2 class=\"knock-knock\">Knock, knock. <em>Who\u2019s there?<\/em> <strong>You, we hope.<\/strong><\/h2>\n      <p class=\"lead\">Book a free valuation or ask us anything about buying, selling, renting or bonds. A Blue Door agent answers within one business day.<\/p>\n      <ul class=\"contact-list\">\n        <li><span class=\"ci\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.6a2 2 0 0 1-.5 2.1L8.1 9.6a16 16 0 0 0 6 6l1.2-1.2a2 2 0 0 1 2.1-.5c.8.3 1.7.6 2.6.7a2 2 0 0 1 1.7 2Z\"\/><\/svg><\/span>\n          <div><span>Call us<\/span><b><a href=\"tel:+27721727068\">+27 72 172 7068<\/a><\/b><\/div><\/li>\n        <li><span class=\"ci\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/><path d=\"m2 6 10 7 10-7\"\/><\/svg><\/span>\n          <div><span>Email us<\/span><b><a href=\"mailto:info@thebluedoor.co.za\">info@thebluedoor.co.za<\/a><\/b><\/div><\/li>\n        <li><span class=\"ci\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z\"\/><circle cx=\"12\" cy=\"10\" r=\"3\"\/><\/svg><\/span>\n          <div><span>Visit us<\/span><b>Beacon Bay Crossing, Bonza Bay Road, East London<\/b><\/div><\/li>\n      <\/ul>\n    <\/div>\n    <form class=\"card-form\" id=\"bdForm\" novalidate>\n      <h3 id=\"bdFh\">How can we help?<\/h3>\n      <p class=\"sub\" id=\"bdFs\">Tell us what you need and a Blue Door agent will be in touch within one business day.<\/p>\n      <div class=\"form-row\">\n        <div class=\"field\"><label for=\"bdFn\">First name<\/label><input id=\"bdFn\" name=\"fn\" required autocomplete=\"given-name\"><\/div>\n        <div class=\"field\"><label for=\"bdLn\">Last name<\/label><input id=\"bdLn\" name=\"ln\" required autocomplete=\"family-name\"><\/div>\n      <\/div>\n      <div class=\"form-row\">\n        <div class=\"field\"><label for=\"bdEm\">Email<\/label><input id=\"bdEm\" name=\"em\" type=\"email\" required autocomplete=\"email\"><\/div>\n        <div class=\"field\"><label for=\"bdPh\">Phone<\/label><input id=\"bdPh\" name=\"ph\" type=\"tel\" autocomplete=\"tel\" placeholder=\"072 000 0000\"><\/div>\n      <\/div>\n      <div class=\"field\">\n        <label for=\"bdIt\">I\u2019m interested in<\/label>\n        <select id=\"bdIt\" name=\"it\" required>\n          <option value=\"\" disabled selected>Choose one\u2026<\/option>\n          <option value=\"valuation\">A free valuation<\/option>\n          <option value=\"seller_mandate\">Selling my property<\/option>\n          <option value=\"buyer\">Buying a home<\/option>\n          <option value=\"tenant\">Renting a home<\/option>\n          <option value=\"landlord_mandate\">Letting out my property<\/option>\n          <option value=\"bond\">A home loan<\/option>\n        <\/select>\n      <\/div>\n      <div class=\"field\"><label for=\"bdMs\">Message<\/label><textarea id=\"bdMs\" name=\"ms\" placeholder=\"Tell us a little about what you\u2019re looking for\u2026\"><\/textarea><\/div>\n      <div class=\"field\">\n        <label class=\"consent\"><input type=\"checkbox\" id=\"bdCs\" name=\"consent\" required>\n          <span><strong>I agree<\/strong> that Blue Door may contact me about this enquiry by email, SMS, WhatsApp or phone, and may store my details for that purpose.<\/span><\/label>\n      <\/div>\n      <button type=\"submit\" class=\"btn btn-gold\" id=\"bdFb\" style=\"width:100%;justify-content:center\">Send my request<\/button>\n    <\/form>\n  <\/div>\n<\/section>\n\n<footer>\n  <div class=\"wrap\">\n    <div class=\"foot-grid\">\n      <div class=\"foot foot-brand\">\n        <span class=\"brand-text\">BLUE DOOR<small>REAL ESTATE<\/small><\/span>\n        <p>Let\u2019s open the Blue Door. Property sales, rentals, developments and home loans in East London.<\/p>\n      <\/div>\n      <div class=\"foot\">\n        <h4>Explore<\/h4>\n        <ul>\n          <li><a href=\"#services\">Services<\/a><\/li>\n          <li><a href=\"#developments\">Developments<\/a><\/li>\n          <li><a href=\"#about\">About us<\/a><\/li>\n          <li><a href=\"#process\">How it works<\/a><\/li>\n          <li><a href=\"#contact\">Contact<\/a><\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"foot\">\n        <h4>Contact<\/h4>\n        <ul>\n          <li><a href=\"mailto:info@thebluedoor.co.za\">info@thebluedoor.co.za<\/a><\/li>\n          <li><a href=\"tel:+27721727068\">+27 72 172 7068<\/a><\/li>\n          <li>Beacon Bay Crossing, East London<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n    <div class=\"foot-bottom\">\n      <span>\u00a9 2026 Blue Door Real Estate. All rights reserved.<\/span>\n      <div class=\"socials\">\n        <a href=\"https:\/\/www.facebook.com\/share\/1Hf4FCVYkU\/\" target=\"_blank\" rel=\"noopener\" aria-label=\"Facebook\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 9h3V6h-3c-2 0-3.5 1.5-3.5 3.5V11H8v3h2.5v7h3v-7H16l.5-3h-3V9.5c0-.3.2-.5.5-.5Z\"\/><\/svg><\/a>\n        <a href=\"https:\/\/www.instagram.com\/thebluedoorprop?igsh=c2ZlaG5iNGs0N3Bk\" target=\"_blank\" rel=\"noopener\" aria-label=\"Instagram\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"5\"\/><circle cx=\"12\" cy=\"12\" r=\"4\"\/><circle cx=\"17.5\" cy=\"6.5\" r=\"1\" fill=\"currentColor\" stroke=\"none\"\/><\/svg><\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/footer>\n\n<script src=\"data:text\/javascript;charset=utf-8;base64,CihmdW5jdGlvbigpewogIHZhciByZWR1Y2U9d2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICBmdW5jdGlvbiBjbGFtcCh2LGEsYil7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHYsYSksYil9CiAgZnVuY3Rpb24gZWFzZSh0KXtyZXR1cm4gdDwuNT8yKnQqdDoxLU1hdGgucG93KC0yKnQrMiwyKS8yfQoKICAvKiBtb2JpbGUgbWVudSAqLwogIHZhciBtZW51QnRuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZE1lbnVCdG4nKSxuYXY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JkTmF2Jyk7CiAgbWVudUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXt2YXIgbz1uYXYuY2xhc3NMaXN0LnRvZ2dsZSgnbW9iaWxlLW9wZW4nKTttZW51QnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsbyl9KTsKICBuYXYucXVlcnlTZWxlY3RvckFsbCgnYScpLmZvckVhY2goZnVuY3Rpb24oYSl7YS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtuYXYuY2xhc3NMaXN0LnJlbW92ZSgnbW9iaWxlLW9wZW4nKTttZW51QnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsJ2ZhbHNlJyl9KX0pOwoKICAvKiDilIDilIAgdGhlIGhvdXNlOiBvbmUgQmxlbmRlciBjYW1lcmEgam91cm5leSwgc2NydWJiZWQgYnkgdGhlIHNjcm9sbCBwb3NpdGlvbiDilIDilIAKICAgICBGcmFtZXMgKHdlYnNpdGUvYmxlbmRlci9ob3VzZS5weSk6IHRoZSBmcm9udCBkb29yIG9wZW5zLCB0aGVuIHRoZSBjYW1lcmEgd2Fsa3MgaW50byB0aGUgaGFsbHdheQogICAgIChzdGF0aW9uIDApLCBvbiBpbnRvIHRoZSBsaXZpbmcgcm9vbSAoc3RhdGlvbiAxKSBhbmQgdGhlIHN0dWR5IChzdGF0aW9uIDIpLiBFYWNoIHJvb20ncyBIVE1MIGlzCiAgICAgbW91bnRlZCBvbiBpdHMgd2FsbDogaG91c2UuanNvbiBob2xkcyB0aGUgd2FsbCdzIGNvcm5lcnMgb24gc2NyZWVuIGZvciBldmVyeSBmcmFtZSwgYW5kIHRoZSBsYXllcgogICAgIGlzIG1hcHBlZCBvbnRvIHRoZW0gd2l0aCBhIHBlcnNwZWN0aXZlIHRyYW5zZm9ybSwgc28gdGhlIGNvbnRlbnQgc3RheXMgb24gdGhlIHdhbGwgYXMgeW91IG1vdmUuICovCiAgdmFyIFNFVFM9ewogICAgZDp7ZGlyOidodHRwczovL3RoZWJsdWVkb29yLmNvLnphL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzEwL2JkLWQtJyxkYXRhOidiZEhvdXNlRCcscG9zMDpbLjcsLjVdfSwKICAgIG06e2RpcjonaHR0cHM6Ly90aGVibHVlZG9vci5jby56YS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8xMC9iZC1tLScsZGF0YTonYmRIb3VzZU0nLHBvczA6Wy41LDFdfQogIH07CiAgdmFyIE1PVkU9WzEuMiwuOSwuOV0sSE9MRD1bLjIsLjIsLjI1XTsgICAvKiBzY3JvbGwgbGVuZ3RocywgaW4gc2NyZWVuIGhlaWdodHMgKHRoZSB0b3VyIHdhbGtzIHRoZW0gZm9yIHlvdSkgKi8KICB2YXIgaG91c2U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvcCcpLHN0aWNrPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZFN0aWNrJyksCiAgICAgIGNhbnZhcz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmRDYW52YXMnKSxjdHg9Y2FudmFzLmdldENvbnRleHQoJzJkJyksY29weT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmRDb3B5JyksCiAgICAgIHNoYWRlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZFNoYWRlJyksdG91ckVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZFRvdXInKSwKICAgICAgcm9vbXM9W10uc2xpY2UuY2FsbChzdGljay5xdWVyeVNlbGVjdG9yQWxsKCcucm9vbScpKSxhbmNob3JzPVtdLnNsaWNlLmNhbGwoaG91c2UucXVlcnlTZWxlY3RvckFsbCgnLmhvdXNlLWFuY2hvcicpKTsKICB2YXIga2V5PW51bGwsc2V0PW51bGwsaW5mbz1udWxsLGltZ3M9W10sZ2VvPW51bGwsc2Vncz1bXSx0aWNraW5nPWZhbHNlOwoKICBmdW5jdGlvbiBsb2FkKGspewogICAga2V5PWs7c2V0PVNFVFNba107aW5mbz1KU09OLnBhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNldC5kYXRhKS50ZXh0Q29udGVudCk7CiAgICBzdGljay5jbGFzc0xpc3QudG9nZ2xlKCdzZXQtbScsaz09PSdtJyk7CiAgICByb29tcy5mb3JFYWNoKGZ1bmN0aW9uKGVsLHMpewogICAgICB2YXIgc2w9aW5mby5zdGF0aW9uc1tzXS5zbG90czsKICAgICAgW10uZm9yRWFjaC5jYWxsKGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXNsb3RdJyksZnVuY3Rpb24obil7CiAgICAgICAgdmFyIHI9c2xbbi5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xvdCcpXTsKICAgICAgICBuLnN0eWxlLmxlZnQ9clswXSsnJSc7bi5zdHlsZS50b3A9clsxXSsnJSc7bi5zdHlsZS53aWR0aD1yWzJdKyclJztuLnN0eWxlLmhlaWdodD1yWzNdKyclJzsKICAgICAgfSk7CiAgICAgIC8qIGEgcGljdHVyZSBhbmQgaXRzIGNhcmQgbWFrZSBhIGNvbHVtbiAoc2VlIC5jb2wpICovCiAgICAgIFtdLmZvckVhY2guY2FsbChlbC5xdWVyeVNlbGVjdG9yQWxsKCcuY29sJyksZnVuY3Rpb24obil7bi5yZW1vdmUoKX0pOwogICAgICBmb3IodmFyIGk9MDtzbFsnZicraV0mJnNsWydjJytpXTtpKyspewogICAgICAgIHZhciBhPXNsWydmJytpXSxiPXNsWydjJytpXSxMPU1hdGgubWluKGFbMF0sYlswXSksVD1NYXRoLm1pbihhWzFdLGJbMV0pLFI9TWF0aC5tYXgoYVswXSthWzJdLGJbMF0rYlsyXSksQj1NYXRoLm1heChhWzFdK2FbM10sYlsxXStiWzNdKTsKICAgICAgICB2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtjLmNsYXNzTmFtZT0nY29sJztjLnNldEF0dHJpYnV0ZSgnZGF0YS1jb2wnLGkpO2Muc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsJ3RydWUnKTsKICAgICAgICBjLnN0eWxlLmxlZnQ9J2NhbGMoJytMKyclIC0gdmFyKC0tcGFkKSknO2Muc3R5bGUudG9wPSdjYWxjKCcrVCsnJSAtIHZhcigtLXBhZCkpJzsKICAgICAgICBjLnN0eWxlLndpZHRoPSdjYWxjKCcrKFItTCkrJyUgKyAyICogdmFyKC0tcGFkKSknO2Muc3R5bGUuaGVpZ2h0PSdjYWxjKCcrKEItVCkrJyUgKyAyICogdmFyKC0tcGFkKSknOwogICAgICAgIGVsLmluc2VydEJlZm9yZShjLGVsLmZpcnN0Q2hpbGQpOwogICAgICB9CiAgICB9KTsKICAgIGltZ3M9W107CiAgICBmb3IodmFyIGk9MDtpPGluZm8uZnJhbWVzO2krKyl7CiAgICAgIHZhciBpbT1uZXcgSW1hZ2UoKTtpbS5kZWNvZGluZz0nYXN5bmMnOwogICAgICBpbS5vbmxvYWQ9ZnVuY3Rpb24oKXtpZighdGlja2luZylvblNjcm9sbCgpfTsKICAgICAgaW0uc3JjPXNldC5kaXIrKCcwMCcraSkuc2xpY2UoLTMpKycud2VicCc7CiAgICAgIGltZ3MucHVzaChpbSk7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGxheW91dCgpewogICAgdmFyIGs9aW5uZXJXaWR0aC9pbm5lckhlaWdodDwxPydtJzonZCc7CiAgICBpZihrIT09a2V5KWxvYWQoayk7CiAgICB2YXIgVz1zdGljay5jbGllbnRXaWR0aCxIPXN0aWNrLmNsaWVudEhlaWdodCxkcHI9TWF0aC5taW4od2luZG93LmRldmljZVBpeGVsUmF0aW98fDEsMik7CiAgICBjYW52YXMud2lkdGg9TWF0aC5yb3VuZChXKmRwcik7Y2FudmFzLmhlaWdodD1NYXRoLnJvdW5kKEgqZHByKTsKICAgIHZhciBzYz1NYXRoLm1heChXL2luZm8ud2lkdGgsSC9pbmZvLmhlaWdodCk7CiAgICBnZW89e1c6VyxIOkgsZHByOmRwcixkdzppbmZvLndpZHRoKnNjLGRoOmluZm8uaGVpZ2h0KnNjfTsKICAgIHNlZ3M9W107dmFyIHk9MDsKICAgIGZvcih2YXIgcz0wO3M8MztzKyspewogICAgICBzZWdzLnB1c2goe3k6eSxsZW46TU9WRVtzXSpILGE6cz9pbmZvLnN0YXRpb25zW3MtMV0uZnJhbWU6MCxiOmluZm8uc3RhdGlvbnNbc10uZnJhbWUsdG86c30pO3krPU1PVkVbc10qSDsKICAgICAgYW5jaG9yc1tzXS5zdHlsZS50b3A9TWF0aC5yb3VuZCh5KSsncHgnOwogICAgICBzZWdzLnB1c2goe3k6eSxsZW46SE9MRFtzXSpILGhvbGQ6c30pO3krPUhPTERbc10qSDsKICAgIH0KICAgIGhvdXNlLnN0eWxlLmhlaWdodD1NYXRoLnJvdW5kKHkrSCkrJ3B4JzsKICAgIC8qIGVhY2ggcm9vbSBsYXllciBpcyBhcyBiaWcgYXMgaXRzIHdhbGwgbG9va3MgZnJvbSB0aGUgcm9vbSdzIHN0YXRpb24sIHNvIHRleHQgaXMgZHJhd24gMToxIHRoZXJlICovCiAgICByb29tcy5mb3JFYWNoKGZ1bmN0aW9uKGVsLHMpewogICAgICB2YXIgcD1xdWFkKHMsaW5mby5zdGF0aW9uc1tzXS5mcmFtZSk7CiAgICAgIGVsLl93PU1hdGguaHlwb3QocFsyXS1wWzBdLHBbM10tcFsxXSk7ZWwuX2g9ZWwuX3cvaW5mby5zdGF0aW9uc1tzXS5hc3BlY3Q7CiAgICAgIGVsLnN0eWxlLndpZHRoPWVsLl93KydweCc7ZWwuc3R5bGUuaGVpZ2h0PWVsLl9oKydweCc7CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gZnJhbWVBdChpKXsKICAgIGZvcih2YXIgaj1pO2o+PTA7ai0tKXt2YXIgaW09aW1nc1tqXTtpZihpbSYmaW0uY29tcGxldGUmJmltLm5hdHVyYWxXaWR0aClyZXR1cm4gaW19CiAgICByZXR1cm4gbnVsbDsKICB9CiAgLyogdGhlIGhlcm8gc2hvdHMgc3RhcnQgb2ZmLWNlbnRyZSAoZG9vciB0byB0aGUgcmlnaHQgLyBhdCB0aGUgYm90dG9tKTsgcmUtY2VudHJlIGFzIHdlIHdhbGsgaW4gKi8KICBmdW5jdGlvbiBvcmlnaW4oZil7CiAgICB2YXIgdz1jbGFtcCgoZi0oaW5mby5vcGVuLTEpKS8oaW5mby5zdGF0aW9uc1swXS5mcmFtZS0oaW5mby5vcGVuLTEpKSwwLDEpOwogICAgcmV0dXJuIFsoZ2VvLlctZ2VvLmR3KSooc2V0LnBvczBbMF0rKC41LXNldC5wb3MwWzBdKSp3KSwoZ2VvLkgtZ2VvLmRoKSooc2V0LnBvczBbMV0rKC41LXNldC5wb3MwWzFdKSp3KV07CiAgfQogIGZ1bmN0aW9uIHBhaW50KGlBLGlCLGEpewogICAgdmFyIG89b3JpZ2luKGlBKyhpQi1pQSkqYSksQT1mcmFtZUF0KGlBKSxCPWE+LjAxP2ZyYW1lQXQoaUIpOm51bGw7CiAgICBjdHguc2V0VHJhbnNmb3JtKGdlby5kcHIsMCwwLGdlby5kcHIsMCwwKTsKICAgIGN0eC5nbG9iYWxBbHBoYT0xOwogICAgaWYoQSljdHguZHJhd0ltYWdlKEEsb1swXSxvWzFdLGdlby5kdyxnZW8uZGgpOwogICAgaWYoQiYmQiE9PUEpe2N0eC5nbG9iYWxBbHBoYT1hO2N0eC5kcmF3SW1hZ2UoQixvWzBdLG9bMV0sZ2VvLmR3LGdlby5kaCk7Y3R4Lmdsb2JhbEFscGhhPTF9CiAgfQogIC8qIHNjcmVlbiBjb3JuZXJzIChUTCwgVFIsIEJSLCBCTCkgb2Ygc3RhdGlvbiBzJ3Mgd2FsbCBhdCBmcmFtZSBmLCBvciBudWxsIHdoZW4gaXQncyBvdXQgb2YgdmlldyAqLwogIGZ1bmN0aW9uIHF1YWQocyxmKXsKICAgIHZhciBzdD1pbmZvLnN0YXRpb25zW3NdLGk9Zi1zdC5mcm9tLGkwPU1hdGguZmxvb3IoaSksaz1pLWkwOwogICAgaWYoaTA8MHx8aTA+PXN0LnEubGVuZ3RoKXJldHVybiBudWxsOwogICAgdmFyIEE9c3QucVtpMF0sQj1zdC5xW01hdGgubWluKGkwKzEsc3QucS5sZW5ndGgtMSldOwogICAgaWYoIUF8fCFCKXJldHVybiBudWxsOwogICAgdmFyIG89b3JpZ2luKGYpLHA9W107CiAgICBmb3IodmFyIGo9MDtqPDg7aisrKXt2YXIgdj1BW2pdKyhCW2pdLUFbal0pKms7cC5wdXNoKGolMj9vWzFdK3YqZ2VvLmRoOm9bMF0rdipnZW8uZHcpfQogICAgcmV0dXJuIHA7CiAgfQogIC8qIG1hcCB0aGUgdyB4IGggbGF5ZXIgb250byB0aGUgcXVhZDogYSBwbGFpbiAyRCBtYXRyaXggd2hlbiB0aGUgd2FsbCBpcyBzcXVhcmUtb24sIGVsc2UgYSBob21vZ3JhcGh5ICovCiAgZnVuY3Rpb24gd2FycChlbCxwLGZsYXQpewogICAgdmFyIHc9ZWwuX3csaD1lbC5faDsKICAgIGlmKGZsYXQpewogICAgICBlbC5zdHlsZS50cmFuc2Zvcm09J21hdHJpeCgnK1socFsyXS1wWzBdKS93LChwWzNdLXBbMV0pL3csKHBbNl0tcFswXSkvaCwocFs3XS1wWzFdKS9oLHBbMF0scFsxXV0ubWFwKHI0KS5qb2luKCcsJykrJyknOwogICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgeDA9cFswXSx5MD1wWzFdLHgxPXBbMl0seTE9cFszXSx4Mj1wWzRdLHkyPXBbNV0seDM9cFs2XSx5Mz1wWzddOwogICAgdmFyIGR4MT14MS14MixkeDI9eDMteDIsc3g9eDAteDEreDIteDMsZHkxPXkxLXkyLGR5Mj15My15MixzeT15MC15MSt5Mi15MyxkZW49ZHgxKmR5Mi1keDIqZHkxOwogICAgdmFyIGc9KHN4KmR5Mi1keDIqc3kpL2RlbixoaD0oZHgxKnN5LXN4KmR5MSkvZGVuOwogICAgdmFyIGE9eDEteDArZyp4MSxiPXgzLXgwK2hoKngzLGQ9eTEteTArZyp5MSxlPXkzLXkwK2hoKnkzOwogICAgZWwuc3R5bGUudHJhbnNmb3JtPSdtYXRyaXgzZCgnK1thL3csZC93LDAsZy93LGIvaCxlL2gsMCxoaC9oLDAsMCwxLDAseDAseTAsMCwxXS5tYXAoZnVuY3Rpb24odil7cmV0dXJuICt2LnRvRml4ZWQoNyl9KS5qb2luKCcsJykrJyknOwogIH0KICBmdW5jdGlvbiByNCh2KXtyZXR1cm4gK3YudG9GaXhlZCg0KX0KICBmdW5jdGlvbiByZW5kZXIoKXsKICAgIHRpY2tpbmc9ZmFsc2U7CiAgICB2YXIgZD1zdGljay5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtaG91c2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wOwogICAgdmFyIHNlZz1zZWdzW3NlZ3MubGVuZ3RoLTFdOwogICAgZm9yKHZhciBpPTA7aTxzZWdzLmxlbmd0aDtpKyspe2lmKGQ8c2Vnc1tpXS55K3NlZ3NbaV0ubGVuKXtzZWc9c2Vnc1tpXTticmVha319CiAgICB2YXIgdD1jbGFtcCgoZC1zZWcueSkvc2VnLmxlbiwwLDEpLGhvbGQ9c2VnLmhvbGQhPW51bGwsb3A9WzAsMCwwXSxmOwogICAgaWYoZD49MCl0b3VyVUkoZCk7CiAgICBpZihob2xkKXtmPWluZm8uc3RhdGlvbnNbc2VnLmhvbGRdLmZyYW1lO29wW3NlZy5ob2xkXT0xO3BhaW50KGYsZiwwKX0KICAgIGVsc2V7CiAgICAgIG9wW3NlZy50b109ZWFzZShjbGFtcCgodC0oc2VnLnRvPy43Oi44KSkvKHNlZy50bz8uMzouMiksMCwxKSk7CiAgICAgIGlmKHNlZy50bylvcFtzZWcudG8tMV09MS1lYXNlKGNsYW1wKHQvLjIyLDAsMSkpOwogICAgICBpZihyZWR1Y2Upe2Y9c2VnLmE7cGFpbnQoc2VnLmEsc2VnLmIsZWFzZShjbGFtcCgodC0uMzUpLy4zLDAsMSkpKX0gICAvKiBubyBjYW1lcmEgbW90aW9uOiBjcm9zcy1mYWRlIHRoZSB0d28gc3RpbGxzICovCiAgICAgIGVsc2V7Zj1zZWcuYSsoc2VnLmItc2VnLmEpKnQ7dmFyIGkwPU1hdGguZmxvb3IoZik7cGFpbnQoaTAsTWF0aC5taW4oaTArMSxzZWcuYiksZWFzZShjbGFtcCgoZi1pMC0uMykvLjQsMCwxKSkpfQogICAgfQogICAgcm9vbXMuZm9yRWFjaChmdW5jdGlvbihlbCxzKXsKICAgICAgdmFyIG89b3Bbc10sZmY9KGhvbGR8fHJlZHVjZSk\/aW5mby5zdGF0aW9uc1tzXS5mcmFtZTpmLHA9bz4uMDAxP3F1YWQocyxmZik6bnVsbDsKICAgICAgaWYoIXApe2VsLnN0eWxlLm9wYWNpdHk9MDtlbC5jbGFzc0xpc3QucmVtb3ZlKCdvbicpO3JldHVybn0KICAgICAgd2FycChlbCxwLGhvbGR8fHJlZHVjZSk7CiAgICAgIGVsLnN0eWxlLm9wYWNpdHk9by50b0ZpeGVkKDMpOwogICAgICBpZihvPi45JiYhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdvbicpKXtlbC5jbGFzc0xpc3QuYWRkKCdvbicsJ3BpbmcnKTtjbGVhclRpbWVvdXQoZWwuX3BpbmcpO2VsLl9waW5nPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlbC5jbGFzc0xpc3QucmVtb3ZlKCdwaW5nJyl9LDI4MDApfQogICAgICBpZihvPD0uOSllbC5jbGFzc0xpc3QucmVtb3ZlKCdvbicpOwogICAgfSk7CiAgICB2YXIgY2Y9c2VnPT09c2Vnc1swXT9jbGFtcCgodC0uMDMpLy4xMiwwLDEpOjE7CiAgICBjb3B5LnN0eWxlLm9wYWNpdHk9KDEtY2YpLnRvRml4ZWQoMyk7CiAgICBjb3B5LnN0eWxlLnRyYW5zZm9ybT0ndHJhbnNsYXRlWSgnKygtY2YqMzApLnRvRml4ZWQoMSkrJ3B4KSc7CiAgICBjb3B5LnN0eWxlLnZpc2liaWxpdHk9Y2Y+Ljk5PydoaWRkZW4nOicnOwogICAgc2hhZGUuc3R5bGUub3BhY2l0eT0oMS1jZikudG9GaXhlZCgzKTsKICB9CiAgZnVuY3Rpb24gb25TY3JvbGwoKXtpZighdGlja2luZyl7dGlja2luZz10cnVlO3JlcXVlc3RBbmltYXRpb25GcmFtZShyZW5kZXIpfX0KICBob3VzZS5jbGFzc0xpc3QuYWRkKCdsaXZlJyk7CiAgbGF5b3V0KCk7cmVuZGVyKCk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsb25TY3JvbGwse3Bhc3NpdmU6dHJ1ZX0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLGZ1bmN0aW9uKCl7bGF5b3V0KCk7cmVuZGVyKCl9LHtwYXNzaXZlOnRydWV9KTsKICBpZignUmVzaXplT2JzZXJ2ZXInIGluIHdpbmRvdyl7dmFyIHJ3PXN0aWNrLmNsaWVudFdpZHRoLHJoPXN0aWNrLmNsaWVudEhlaWdodDtuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24oKXtpZihzdGljay5jbGllbnRXaWR0aCE9PXJ3fHxzdGljay5jbGllbnRIZWlnaHQhPT1yaCl7cnc9c3RpY2suY2xpZW50V2lkdGg7cmg9c3RpY2suY2xpZW50SGVpZ2h0O2xheW91dCgpO3JlbmRlcigpfX0pLm9ic2VydmUoc3RpY2spfQoKICAvKiDilIDilIAgdGhlIHRvdXI6IG9uZSBzY3JvbGwsIHN3aXBlLCBrZXkgcHJlc3Mgb3IgdGFwIHdhbGtzIHlvdSB0byB0aGUgbmV4dCByb29tIOKUgOKUgAogICAgIFN0b3BzOiAwIHRoZSBzdHJlZXQsIDEgaGFsbHdheSwgMiBsaXZpbmcgcm9vbSwgMyBzdHVkeSwgNCBvdXQgb2YgdGhlIGhvdXNlICh0aGUgcGFnZSBjYXJyaWVzIG9uKS4KICAgICBJbnNpZGUgdGhlIGhvdXNlIHRoZSBwYWdlIGRvZXNuJ3QgZnJlZS1zY3JvbGw7IGVhY2ggZ2VzdHVyZSBwbGF5cyB0aGUgd2FsayB0byB0aGUgbmV4dCBzdG9wLiAqLwogIHZhciB0b3VjaD1tYXRjaE1lZGlhKCcocG9pbnRlcjpjb2Fyc2UpJykubWF0Y2hlc3x8bmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjAsYW5pbT1udWxsLGxhc3RXaGVlbD0wLHdoZWVsQWNjPTAsd2hlZWxVc2VkPWZhbHNlLGlkbGU9bnVsbCxsYXN0RD0wLHRpcEZvcj0tMSx0aXBUPW51bGwsdGlwT249ZmFsc2U7CiAgLyogW3RoZSBzbWFsbCBsaW5lLCB0aGUgbmV4dCBwbGFjZV0gZm9yIGVhY2ggc3RvcCAqLwogIHZhciBMQUJFTFM9W1t0b3VjaD8nU3dpcGUgdXAnOidTY3JvbGwnLCdTdGVwIGluc2lkZSddLFsnTmV4dCByb29tJywnT3VyIHNlcnZpY2VzJ10sWydOZXh0IHJvb20nLCdEZXZlbG9wbWVudHMnXSxbdG91Y2g\/J0tlZXAgZ29pbmcnOidLZWVwIHNjcm9sbGluZycsJ0Fib3V0IHVzJ11dOwogIHZhciBUSVBTPXRvdWNoP3syOidUYXAgYSBjYXJkIHRvIHN0YXJ0JywzOidUYXAgYSBwbGFxdWUnfTp7MjonQ2xpY2sgYSBjYXJkIHRvIGdldCBzdGFydGVkJywzOidDbGljayBhIHBsYXF1ZSBmb3IgaXRzIHNhbGVzIHBhY2snfTsKICB2YXIgbmV4dE1haW49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JkTmV4dE1haW4nKSxuZXh0U3ViPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZE5leHRTdWInKSwKICAgICAgZG90cz1bXS5zbGljZS5jYWxsKHRvdXJFbC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zdG9wXScpKTsKICBmdW5jdGlvbiBkaXN0KCl7cmV0dXJuIHN0aWNrLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC1ob3VzZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3B9CiAgZnVuY3Rpb24gdG90YWwoKXtyZXR1cm4gaG91c2Uub2Zmc2V0SGVpZ2h0LXN0aWNrLm9mZnNldEhlaWdodH0KICBmdW5jdGlvbiBzdG9wRChpKXtyZXR1cm4gaTw9MD8wOmk+PTQ\/dG90YWwoKTpzZWdzWzIqaS0xXS55fQogIGZ1bmN0aW9uIGVuZ2FnZWQoKXt2YXIgZD1kaXN0KCk7cmV0dXJuIGhvdXNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDw9c3RpY2suZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKzEmJmQ8dG90YWwoKS0yfQogIGZ1bmN0aW9uIHN0b3BBdChkKXt2YXIgYz0wO2Zvcih2YXIgaT0xO2k8PTQ7aSsrKWlmKHN0b3BEKGkpPD1kKzMpYz1pO3JldHVybiBjfQogIGZ1bmN0aW9uIGZyYW1lT2YoZCl7CiAgICBmb3IodmFyIGk9MDtpPHNlZ3MubGVuZ3RoO2krKyl7dmFyIGc9c2Vnc1tpXTtpZihkPGcueStnLmxlbilyZXR1cm4gZy5ob2xkIT1udWxsP2luZm8uc3RhdGlvbnNbZy5ob2xkXS5mcmFtZTpnLmErKGcuYi1nLmEpKmNsYW1wKChkLWcueSkvZy5sZW4sMCwxKX0KICAgIHJldHVybiBpbmZvLnN0YXRpb25zWzJdLmZyYW1lOwogIH0KCiAgLyog4pSA4pSAIG9uZSBnZXN0dXJlLCBvbmUgbW92ZSwgZm9yIHRoZSB3aG9sZSBwYWdlIOKUgOKUgAogICAgIFBhZ2Ugc3RvcHMgKHNjcm9sbCBwb3NpdGlvbnMpOiB0aGUgc3RyZWV0LCB0aGUgdGhyZWUgcm9vbXMsIHRoZW4gdGhlIHRvcCBvZiBlYWNoIHNlY3Rpb24gYmVsb3cgdGhlIGhvdXNlLgogICAgIEEgc2VjdGlvbiB0YWxsZXIgdGhhbiB0aGUgc2NyZWVuIGlzIHBhZ2VkIHRocm91Z2ggYSBzY3JlZW4gYXQgYSB0aW1lIGJlZm9yZSBtb3Zpbmcgb24uICovCiAgdmFyIFNFQ1M9WydhYm91dCcsJ3Byb2Nlc3MnLCd0ZWFtJywnY29udGFjdCddLm1hcChmdW5jdGlvbihpZCl7cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKX0pLmZpbHRlcihCb29sZWFuKTsKICB2YXIgZm9vdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYmQtd3JhcCBmb290ZXInKTtpZihmb290KVNFQ1MucHVzaChmb290KTsKICBmdW5jdGlvbiBvZmYoKXtyZXR1cm4gcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKHN0aWNrKS50b3ApfHwwfQogIGZ1bmN0aW9uIGFic1RvcChlbCl7cmV0dXJuIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCtzY3JvbGxZfQogIGZ1bmN0aW9uIG1heFkoKXtyZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodC1pbm5lckhlaWdodH0KICBmdW5jdGlvbiB2aWV3KCl7cmV0dXJuIGlubmVySGVpZ2h0LW9mZigpfQogIGZ1bmN0aW9uIHN0b3BzKCl7CiAgICB2YXIgaD1hYnNUb3AoaG91c2UpLW9mZigpLG91dD1bMCwxLDIsM10ubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBoK3N0b3BEKGkpfSk7CiAgICBTRUNTLmZvckVhY2goZnVuY3Rpb24oZWwpe3ZhciB5PU1hdGgubWluKGFic1RvcChlbCktb2ZmKCksbWF4WSgpKTtpZih5Pm91dFtvdXQubGVuZ3RoLTFdKzMpb3V0LnB1c2goeSl9KTsKICAgIHJldHVybiBvdXQ7CiAgfQogIGZ1bmN0aW9uIGlkeEF0KHkscyl7dmFyIGM9MDtmb3IodmFyIGk9MTtpPHMubGVuZ3RoO2krKylpZihzW2ldPD15KzMpYz1pO3JldHVybiBjfQogIGZ1bmN0aW9uIHNjcm9sbEFuaW0oeTEsZHVyLGRvbmUpewogICAgdmFyIHkwPXNjcm9sbFksdDA9cGVyZm9ybWFuY2Uubm93KCk7CiAgICBpZihhbmltKWNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW0pOwogICAgdG91ckVsLmNsYXNzTGlzdC5hZGQoJ2J1c3knKTsKICAgIChmdW5jdGlvbiBzdGVwKG5vdyl7CiAgICAgIHZhciBrPWNsYW1wKChub3ctdDApL2R1ciwwLDEpLGU9azwuNT80KmsqayprOjEtTWF0aC5wb3coLTIqaysyLDMpLzI7CiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7dG9wOk1hdGgucm91bmQoeTArKHkxLXkwKSplKSxiZWhhdmlvcjonaW5zdGFudCd9KTsKICAgICAgaWYoazwxKWFuaW09cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgICBlbHNle2FuaW09bnVsbDt0b3VyRWwuY2xhc3NMaXN0LnJlbW92ZSgnYnVzeScpO29uU2Nyb2xsKCk7aWYoZG9uZSlkb25lKCl9CiAgICB9KSh0MCk7CiAgfQogIGZ1bmN0aW9uIG1vdmVUbyh5MSxjYXApewogICAgeTE9Y2xhbXAoTWF0aC5yb3VuZCh5MSksMCxtYXhZKCkpOwogICAgdmFyIHkwPXNjcm9sbFk7aWYoTWF0aC5hYnMoeTEteTApPDIpcmV0dXJuOwogICAgLyogaW4gdGhlIGhvdXNlIHRoZSB3YWxrJ3MgbGVuZ3RoIHNldHMgdGhlIHBhY2U7IG91dCBvbiB0aGUgcGFnZSBpdCdzIHRoZSBkaXN0YW5jZSAqLwogICAgdmFyIGg9YWJzVG9wKGhvdXNlKS1vZmYoKSxkT2Y9ZnVuY3Rpb24oeSl7cmV0dXJuIGNsYW1wKHktaCwwLHRvdGFsKCkpfTsKICAgIHZhciBmcmFtZXM9TWF0aC5hYnMoZnJhbWVPZihkT2YoeTEpKS1mcmFtZU9mKGRPZih5MCkpKTsKICAgIHZhciBkdXI9cmVkdWNlP01hdGgubWluKDcwMCwzMDArTWF0aC5hYnMoeTEteTApKi4yKTpNYXRoLm1heChNYXRoLm1pbig0MjAwLDY1MCtmcmFtZXMqMzApLE1hdGgubWluKDExMDAsNDUwK01hdGguYWJzKHkxLXkwKSouMzUpKTsKICAgIHNjcm9sbEFuaW0oeTEsY2FwP01hdGgubWluKGR1cixjYXApOmR1cik7CiAgfQogIGZ1bmN0aW9uIHdhbGtUbyhpKXt2YXIgcz1zdG9wcygpO21vdmVUbyhzW2NsYW1wKGksMCxzLmxlbmd0aC0xKV0pfQogIGZ1bmN0aW9uIGdvKGRpcil7CiAgICB2YXIgcz1zdG9wcygpLHk9c2Nyb2xsWSxjPWlkeEF0KHkscyksdj12aWV3KCkqLjg1LG5leHQscHJldjsKICAgIGlmKGRpcj4wKXsKICAgICAgbmV4dD1jKzE8cy5sZW5ndGg\/c1tjKzFdOm1heFkoKTsKICAgICAgLyogYSBsb25nIHNlY3Rpb246IHBhZ2UgZG93biB0aHJvdWdoIGl0IGZpcnN0IChuZXZlciBpbnNpZGUgdGhlIGhvdXNlLCB3aG9zZSBzdG9wcyBhcmUgdGhlIHJvb21zKSAqLwogICAgICBtb3ZlVG8oYz49NCYmbmV4dC15PnZpZXcoKSszJiZuZXh0LSh5K3YpPnZpZXcoKSouMjU\/eSt2Om5leHQpOwogICAgfWVsc2V7CiAgICAgIHByZXY9TWF0aC5hYnMoc1tjXS15KTw9Mz9jLTE6YzsKICAgICAgaWYocHJldjwwKXJldHVybjsKICAgICAgbW92ZVRvKHByZXY+PTQmJnktc1twcmV2XT52aWV3KCkrMyYmKHktdiktc1twcmV2XT52aWV3KCkqLjI1P3ktdjpzW3ByZXZdKTsKICAgIH0KICB9CiAgZnVuY3Rpb24gdG91clVJKGQpewogICAgaWYoIWRvdHMpcmV0dXJuOyAgIC8qIHJlbmRlcigpIHJ1bnMgb25jZSBiZWZvcmUgdGhlIHRvdXIgaXMgd2lyZWQgdXAgKi8KICAgIHZhciBjPXN0b3BBdChkKSxhdD0hYW5pbSYmTWF0aC5hYnMoc3RvcEQoYyktZCk8PTM7CiAgICBkb3RzLmZvckVhY2goZnVuY3Rpb24oYixpKXtiLnBhcmVudE5vZGUuY2xhc3NMaXN0LnRvZ2dsZSgnbm93JyxpPT09Yyl9KTsKICAgIC8qIGFycml2aW5nIHNvbWV3aGVyZSB3aXRoIHRoaW5ncyB0byB0YXAsIHRoZSBzbWFsbCBsaW5lIHNheXMgd2hhdCB0byBkbyBmb3IgYSBmZXcgc2Vjb25kcyAqLwogICAgdmFyIHR4PWF0JiZUSVBTW2NdOwogICAgaWYodHgmJnRpcEZvciE9PWMpe3RpcEZvcj1jO3RpcE9uPXRydWU7Y2xlYXJUaW1lb3V0KHRpcFQpO3RpcFQ9c2V0VGltZW91dChmdW5jdGlvbigpe3RpcE9uPWZhbHNlO29uU2Nyb2xsKCl9LDQ1MDApfQogICAgaWYoIWF0KXt0aXBGb3I9LTE7dGlwT249ZmFsc2V9CiAgICB2YXIgbD1MQUJFTFNbTWF0aC5taW4oYywzKV0sc21hbGw9dGlwT24\/VElQU1tjXTpsWzBdOwogICAgaWYobmV4dE1haW4udGV4dENvbnRlbnQhPT1sWzFdKW5leHRNYWluLnRleHRDb250ZW50PWxbMV07CiAgICBpZihuZXh0U3ViLnRleHRDb250ZW50IT09c21hbGwpbmV4dFN1Yi50ZXh0Q29udGVudD1zbWFsbDsKICAgIHRvdXJFbC5jbGFzc0xpc3QudG9nZ2xlKCd0aXBwaW5nJyx0aXBPbik7CiAgfQogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZE5leHQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtnbygxKX0pOwogIGRvdHMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe3dhbGtUbygrYi5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RvcCcpKX0pfSk7CiAgLyogaW4tcGFnZSBsaW5rcyAobmF2LCAiRmluZCB5b3VyIGRvb3IiLCAiU3RhcnQgaGVyZSIpIGdsaWRlIHRoZXJlIGluc3RlYWQgb2YganVtcGluZyAqLwogIHZhciBMSU5LUz17JyN0b3AnOjAsJyN3ZWxjb21lJzoxLCcjc2VydmljZXMnOjIsJyNkZXZlbG9wbWVudHMnOjN9OwogIFNFQ1MuZm9yRWFjaChmdW5jdGlvbihlbCl7aWYoZWwuaWQpTElOS1NbJyMnK2VsLmlkXT1lbH0pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5iZC13cmFwIGFbaHJlZl49IiMiXScpLmZvckVhY2goZnVuY3Rpb24oYSl7CiAgICB2YXIgdD1MSU5LU1thLmdldEF0dHJpYnV0ZSgnaHJlZicpXTsKICAgIGlmKHQ9PW51bGwpcmV0dXJuOwogICAgYS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZSl7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgaWYodHlwZW9mIHQ9PT0nbnVtYmVyJyl3YWxrVG8odCk7ZWxzZSBtb3ZlVG8oYWJzVG9wKHQpLW9mZigpLDE2MDApOyAgIC8qIHBhc3QgdGhlIGhvdXNlOiBhIHF1aWNrIGdsaWRlLCBub3QgdGhlIGZ1bGwgd2FsayAqLwogICAgfSk7CiAgfSk7CiAgLyogbGVhdmUgdGhlIHBhZ2UgYWxvbmUgd2hlbiBzb21lb25lIGlzIHR5cGluZywgaW4gdGhlIGNoYXQsIHpvb21lZCBpbiBvciBob2xkaW5nIGEgbW9kaWZpZXIgKi8KICBmdW5jdGlvbiBoYW5kcyhlKXsKICAgIHZhciB0PWUudGFyZ2V0LGE9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDsKICAgIHJldHVybiAodCYmdC5jbG9zZXN0JiZ0LmNsb3Nlc3QoJyNiZGMtcm9vdCx0ZXh0YXJlYSxzZWxlY3QnKSl8fChhJiYvaW5wdXR8dGV4dGFyZWF8c2VsZWN0L2kudGVzdChhLnRhZ05hbWUpKXx8CiAgICAgICh3aW5kb3cudmlzdWFsVmlld3BvcnQmJnZpc3VhbFZpZXdwb3J0LnNjYWxlPjEuMDEpfHxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmRjLXJvb3QnKSYmZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JkYy1yb290JykuY2xhc3NMaXN0LmNvbnRhaW5zKCdiZGMtb3BlbicpOwogIH0KICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLGZ1bmN0aW9uKGUpewogICAgaWYoZS5jdHJsS2V5fHxNYXRoLmFicyhlLmRlbHRhWCk+TWF0aC5hYnMoZS5kZWx0YVkpfHxoYW5kcyhlKSlyZXR1cm47CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICB2YXIgbm93PXBlcmZvcm1hbmNlLm5vdygpOwogICAgaWYobm93LWxhc3RXaGVlbD4yMjApe3doZWVsQWNjPTA7d2hlZWxVc2VkPWZhbHNlfQogICAgbGFzdFdoZWVsPW5vdzsKICAgIGlmKGFuaW18fHdoZWVsVXNlZClyZXR1cm47CiAgICB3aGVlbEFjYys9ZS5kZWx0YVk7CiAgICBpZihNYXRoLmFicyh3aGVlbEFjYyk+MjQpe3doZWVsVXNlZD10cnVlO2dvKHdoZWVsQWNjPjA\/MTotMSl9CiAgfSx7cGFzc2l2ZTpmYWxzZX0pOwogIHZhciB0eT1udWxsLHR4MD0wLHR5T249ZmFsc2U7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLGZ1bmN0aW9uKGUpe3R5T249ZS50b3VjaGVzLmxlbmd0aD09PTEmJiFoYW5kcyhlKTt0eT10eU9uP2UudG91Y2hlc1swXS5jbGllbnRZOm51bGw7dHgwPXR5T24\/ZS50b3VjaGVzWzBdLmNsaWVudFg6MH0se3Bhc3NpdmU6dHJ1ZX0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLGZ1bmN0aW9uKGUpe2lmKHR5T24mJmUudG91Y2hlcy5sZW5ndGg9PT0xKWUucHJldmVudERlZmF1bHQoKTtlbHNlIHR5T249ZmFsc2V9LHtwYXNzaXZlOmZhbHNlfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJyxmdW5jdGlvbihlKXsKICAgIGlmKCF0eU9ufHx0eT09PW51bGwpcmV0dXJuOwogICAgdmFyIGM9ZS5jaGFuZ2VkVG91Y2hlc1swXSxkeT10eS1jLmNsaWVudFksZHg9dHgwLWMuY2xpZW50WDt0eT1udWxsO3R5T249ZmFsc2U7CiAgICBpZihNYXRoLmFicyhkeSk+MzAmJk1hdGguYWJzKGR5KT5NYXRoLmFicyhkeCkmJiFhbmltKWdvKGR5PjA\/MTotMSk7CiAgfSx7cGFzc2l2ZTp0cnVlfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLGZ1bmN0aW9uKGUpewogICAgaWYoaGFuZHMoZSl8fC9eKGlucHV0fGJ1dHRvbnxhfHNlbGVjdHxzdW1tYXJ5KSQvaS50ZXN0KGUudGFyZ2V0LnRhZ05hbWUpJiZlLmtleT09PScgJ3x8ZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5tZXRhS2V5KXJldHVybjsKICAgIHZhciBrPWUua2V5LGRpcj1rPT09J0Fycm93RG93bid8fGs9PT0nUGFnZURvd24nfHwoaz09PScgJyYmIWUuc2hpZnRLZXkpPzE6az09PSdBcnJvd1VwJ3x8az09PSdQYWdlVXAnfHwoaz09PScgJyYmZS5zaGlmdEtleSk\/LTE6MDsKICAgIGlmKCFkaXIpcmV0dXJuOwogICAgZS5wcmV2ZW50RGVmYXVsdCgpO2lmKCFhbmltKWdvKGRpcik7CiAgfSk7CiAgLyogYW55dGhpbmcgZWxzZSB0aGF0IG1vdmVzIHRoZSBwYWdlIChzY3JvbGxiYXIsIGZpbmQtaW4tcGFnZSkgYW5kIGxlYXZlcyB5b3UgYmV0d2VlbiByb29tczogc2V0dGxlIG9uIGEgc3RvcC4KICAgICBCZWxvdyB0aGUgaG91c2UgdGhlIHBhZ2UgaXMgbGVmdCB3aGVyZSBpdCBpcy4gKi8KICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJyxmdW5jdGlvbigpewogICAgdmFyIGRpcj1zY3JvbGxZLWxhc3REO2xhc3REPXNjcm9sbFk7CiAgICBpZihhbmltKXJldHVybjsKICAgIGNsZWFyVGltZW91dChpZGxlKTsKICAgIGlkbGU9c2V0VGltZW91dChmdW5jdGlvbigpewogICAgICB2YXIgcz1zdG9wcygpLHk9c2Nyb2xsWTsKICAgICAgaWYoYW5pbXx8eT49c1s0XS0zKXJldHVybjsKICAgICAgdmFyIGM9aWR4QXQoeSxzKTsKICAgICAgaWYoTWF0aC5hYnMoc1tjXS15KT4zKW1vdmVUbyhkaXI+MD9zW2MrMV06c1tjXSk7CiAgICB9LDE2MCk7CiAgfSx7cGFzc2l2ZTp0cnVlfSk7CiAgLyogY29sdW1uczogaG92ZXIgb3IgZm9jdXMgbGlnaHRzIG9uZSB1cDsgYSBjbGljayBhbnl3aGVyZSBvbiBpdCBmb2xsb3dzIGl0cyBjYXJkJ3MgbGluayAqLwogIHJvb21zLmZvckVhY2goZnVuY3Rpb24oZWwpewogICAgZnVuY3Rpb24gaWR4KHQpewogICAgICB2YXIgbj10JiZ0LmNsb3Nlc3QmJnQuY2xvc2VzdCgnW2RhdGEtY29sXSxbZGF0YS1zbG90XScpO2lmKCFuKXJldHVybiBudWxsOwogICAgICB2YXIgYz1uLmdldEF0dHJpYnV0ZSgnZGF0YS1jb2wnKTtpZihjIT1udWxsKXJldHVybiArYzsKICAgICAgdmFyIG09bi5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xvdCcpLm1hdGNoKC9eW2ZjXShcZCkkLyk7cmV0dXJuIG0\/K21bMV06bnVsbDsKICAgIH0KICAgIGZ1bmN0aW9uIGhvdChpKXsKICAgICAgaWYoZWwuX2hvdD09PWkpcmV0dXJuO2VsLl9ob3Q9aTsKICAgICAgZWwuY2xhc3NMaXN0LnRvZ2dsZSgnaGFzLWhvdCcsaSE9bnVsbCk7CiAgICAgIFtdLmZvckVhY2guY2FsbChlbC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1jb2xdLFtkYXRhLXNsb3RdJyksZnVuY3Rpb24obil7CiAgICAgICAgdmFyIGM9bi5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sJyksbT1jIT1udWxsPytjOmlkeChuKTsKICAgICAgICBuLmNsYXNzTGlzdC50b2dnbGUoJ2hvdCcsaSE9bnVsbCYmbT09PWkpOwogICAgICB9KTsKICAgIH0KICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJvdmVyJyxmdW5jdGlvbihlKXtpZihlLnBvaW50ZXJUeXBlIT09J3RvdWNoJylob3QoaWR4KGUudGFyZ2V0KSl9KTsKICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsZnVuY3Rpb24oKXtob3QobnVsbCl9KTsKICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLGZ1bmN0aW9uKGUpe2hvdChpZHgoZS50YXJnZXQpKX0pOwogICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLGZ1bmN0aW9uKCl7aG90KG51bGwpfSk7CiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZSl7CiAgICAgIGlmKGUudGFyZ2V0LmNsb3Nlc3QoJ2EnKSlyZXR1cm47CiAgICAgIHZhciBpPWlkeChlLnRhcmdldCk7aWYoaT09bnVsbClyZXR1cm47CiAgICAgIHZhciBjPWVsLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXNsb3Q9ImMnK2krJyJdJyksYT1jJiYoYy50YWdOYW1lPT09J0EnP2M6Yy5xdWVyeVNlbGVjdG9yKCdhJykpOwogICAgICBpZihhKWEuY2xpY2soKTsKICAgIH0pOwogIH0pOwogIC8qIGtleWJvYXJkIHVzZXJzIHRhYmJpbmcgaW50byBhIHJvb20gdGhhdCBpc24ndCBpbiB2aWV3OiB3YWxrIHRoZXJlICovCiAgc3RpY2suYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsZnVuY3Rpb24oZSl7CiAgICB2YXIgZWw9ZS50YXJnZXQuY2xvc2VzdCgnLnJvb20nKTsKICAgIGlmKGVsJiYhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdvbicpKXdhbGtUbyhyb29tcy5pbmRleE9mKGVsKSsxKTsKICB9KTsKCiAgLyogZ2VudGxlIGZhZGUtdXAgYXMgc2VjdGlvbnMgYXJyaXZlICovCiAgdmFyIGlvPSdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93P25ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihlcyl7CiAgICBlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUuaXNJbnRlcnNlY3Rpbmcpe2UudGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2luJyk7aW8udW5vYnNlcnZlKGUudGFyZ2V0KX19KTsKICB9LHt0aHJlc2hvbGQ6LjIscm9vdE1hcmdpbjonMHB4IDBweCAtNDBweCAwcHgnfSk6bnVsbDsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucmV2ZWFsJykuZm9yRWFjaChmdW5jdGlvbihlbCxpKXsKICAgIGVsLnN0eWxlLnRyYW5zaXRpb25EZWxheT0oKGklNCkqOTApKydtcyc7CiAgICBpbz9pby5vYnNlcnZlKGVsKTplbC5jbGFzc0xpc3QuYWRkKCdpbicpOwogIH0pOwoKICAvKiB0aGUga2V5IHRyYXZlbHMgdGhlIHBhdGggKi8KICB2YXIgcGF0aD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmRQYXRoJyksd2Fsaz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvY2VzcycpOwogIGZ1bmN0aW9uIGtleVdhbGsoKXsKICAgIHZhciByPXBhdGguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdmg9d2luZG93LmlubmVySGVpZ2h0OwogICAgd2Fsay5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1rcCcsY2xhbXAoKHZoKi44LXIudG9wKS8oci5oZWlnaHQrdmgqLjM1KSwwLDEpLnRvRml4ZWQoMykpOwogIH0KICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJyxmdW5jdGlvbigpe3JlcXVlc3RBbmltYXRpb25GcmFtZShrZXlXYWxrKX0se3Bhc3NpdmU6dHJ1ZX0pO2tleVdhbGsoKTsKCiAgLyogc2VydmljZSBsaW5rcyBwcmVzZWxlY3QgdGhlIGZvcm0gKi8KICB2YXIgc2VsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZEl0Jyk7CiAgLyogdGhlIGZvcm0ncyBoZWFkaW5nLCBwcm9tcHQgYW5kIGJ1dHRvbiBmb2xsb3cgd2hhdCB0aGV5J3JlIGludGVyZXN0ZWQgaW4gKi8KICB2YXIgRk9STT17CiAgICAnJzpbJ0hvdyBjYW4gd2UgaGVscD8nLCdUZWxsIHVzIHdoYXQgeW91IG5lZWQgYW5kIGEgQmx1ZSBEb29yIGFnZW50IHdpbGwgYmUgaW4gdG91Y2ggd2l0aGluIG9uZSBidXNpbmVzcyBkYXkuJywnVGVsbCB1cyBhIGxpdHRsZSBhYm91dCB3aGF0IHlvdeKAmXJlIGxvb2tpbmcgZm9y4oCmJywnU2VuZCBteSByZXF1ZXN0J10sCiAgICB2YWx1YXRpb246WydCb29rIGEgZnJlZSB2YWx1YXRpb24nLCdObyBjb3N0LCBubyBvYmxpZ2F0aW9uOiBhbiBob25lc3QgcHJpY2UgZm9yIHlvdXIgaG9tZSBmcm9tIHNvbWVvbmUgd2hvIGtub3dzIHRoZSBhcmVhLicsJ1RoZSBwcm9wZXJ0eeKAmXMgYWRkcmVzcywgYW5kIGFueXRoaW5nIHdlIHNob3VsZCBrbm93IGFib3V0IGl04oCmJywnQm9vayBteSB2YWx1YXRpb24nXSwKICAgIHNlbGxlcl9tYW5kYXRlOlsnU2VsbCB5b3VyIHByb3BlcnR5JywnV2Ugc3RhcnQgd2l0aCBhIGZyZWUgdmFsdWF0aW9uIGFuZCBhIHBsYW4gdG8gZ2V0IHlvdSB0aGUgYmVzdCBwb3NzaWJsZSBwcmljZS4nLCdXaGVyZSBpcyB0aGUgcHJvcGVydHksIGFuZCB3aGVuIGFyZSB5b3UgaG9waW5nIHRvIHNlbGw\/JywnVGFsayB0byBtZSBhYm91dCBzZWxsaW5nJ10sCiAgICBidXllcjpbJ0ZpbmQgeW91ciBuZXh0IGhvbWUnLCdUZWxsIHVzIHdoYXQgeW914oCZcmUgYWZ0ZXIgYW5kIHdl4oCZbGwgbWF0Y2ggeW91IHdpdGggbGlzdGluZ3MgYW5kIG5ldyBkZXZlbG9wbWVudHMuJywnQXJlYXMsIGJ1ZGdldCwgYmVkcm9vbXMsIHdoZW4geW914oCZZCBsaWtlIHRvIG1vdmXigKYnLCdTdGFydCBteSBzZWFyY2gnXSwKICAgIHRlbmFudDpbJ0ZpbmQgYSBwbGFjZSB0byByZW50JywnVGVsbCB1cyB3aGF0IHlvdSBuZWVkIGFuZCB3ZeKAmWxsIHNlbmQgeW91IHdoYXTigJlzIGF2YWlsYWJsZS4nLCdBcmVhcywgbW9udGhseSBidWRnZXQsIG1vdmUtaW4gZGF0ZeKApicsJ0ZpbmQgbWUgYSByZW50YWwnXSwKICAgIGxhbmRsb3JkX21hbmRhdGU6WydMZXQgb3V0IHlvdXIgcHJvcGVydHknLCdUZW5hbnQgZmluZGluZyBhbmQgZnVsbCBtYW5hZ2VtZW50LCBzbyB0aGUgcGFwZXJ3b3JrIGlzbuKAmXQgeW91cnMuJywnV2hlcmUgaXMgdGhlIHByb3BlcnR5LCBhbmQgd2hlbiBpcyBpdCBhdmFpbGFibGU\/JywnVGFsayB0byBtZSBhYm91dCBsZXR0aW5nJ10sCiAgICBib25kOlsnR2V0IGhlbHAgd2l0aCBhIGhvbWUgbG9hbicsJ1dlIGNvbXBhcmUgbGVuZGVycyBhbmQgaGVscCB3aXRoIHByZS1hcHByb3ZhbCwgYXQgbm8gY29zdCB0byB5b3UuJywnWW91ciByb3VnaCBidWRnZXQsIGFuZCB3aGV0aGVyIHlvdeKAmXZlIGZvdW5kIGEgcHJvcGVydHkgeWV04oCmJywnSGVscCBtZSB3aXRoIGEgaG9tZSBsb2FuJ10KICB9OwogIGZ1bmN0aW9uIGZvcm1Gb3IoKXsKICAgIHZhciBmPUZPUk1bc2VsLnZhbHVlXXx8Rk9STVsnJ107CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmRGaCcpLnRleHRDb250ZW50PWZbMF07ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JkRnMnKS50ZXh0Q29udGVudD1mWzFdOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JkTXMnKS5wbGFjZWhvbGRlcj1mWzJdO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZEZiJykudGV4dENvbnRlbnQ9ZlszXTsKICB9CiAgc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsZm9ybUZvcik7CiAgZm9ybUZvcigpOyAgIC8qIHRoZSBicm93c2VyIG1heSBoYXZlIHJlc3RvcmVkIGEgY2hvaWNlICovCiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtaW50ZXJlc3RdJykuZm9yRWFjaChmdW5jdGlvbihhKXsKICAgIGEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7c2VsLnZhbHVlPWEuZGF0YXNldC5pbnRlcmVzdDtmb3JtRm9yKCl9KTsKICB9KTsKCiAgLyogZm9ybSAtPiBuOG4gd2ViZm9ybSB3ZWJob29rIChzYW1lIGNvbnRyYWN0IGFzIGJlZm9yZSkgKi8KICB2YXIgZm9ybT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmRGb3JtJyk7CiAgZm9ybS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLGZ1bmN0aW9uKGUpewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgaWYoIWZvcm0uY2hlY2tWYWxpZGl0eSgpKXtmb3JtLnJlcG9ydFZhbGlkaXR5KCk7cmV0dXJufQogICAgdmFyIGJ0bj1mb3JtLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvblt0eXBlPXN1Ym1pdF0nKSxxPW5ldyBVUkxTZWFyY2hQYXJhbXMobG9jYXRpb24uc2VhcmNoKTsKICAgIHZhciBvcHQ9c2VsLm9wdGlvbnNbc2VsLnNlbGVjdGVkSW5kZXhdLHN0cmVhbT1zZWwudmFsdWU9PT0nYm9uZCc\/J2J1eWVyJzpzZWwudmFsdWU7CiAgICB2YXIgbXNnPWZvcm0ubXMudmFsdWUudHJpbSgpOwogICAgaWYoc2VsLnZhbHVlPT09J2JvbmQnKW1zZz0nSG9tZSBsb2FuIC8gYm9uZCBlbnF1aXJ5LicrKG1zZz8nXG4nK21zZzonJyk7CiAgICB2YXIgcGF5bG9hZD17CiAgICAgIGZpcnN0X25hbWU6Zm9ybS5mbi52YWx1ZS50cmltKCksbGFzdF9uYW1lOmZvcm0ubG4udmFsdWUudHJpbSgpLGVtYWlsOmZvcm0uZW0udmFsdWUudHJpbSgpLG1vYmlsZTpmb3JtLnBoLnZhbHVlLnRyaW0oKSwKICAgICAgc3RyZWFtOnN0cmVhbSxtZXNzYWdlOm1zZ3x8KCdXZWJzaXRlIGZvcm0gZW5xdWlyeTogaW50ZXJlc3RlZCBpbiAnK29wdC50ZXh0LnRvTG93ZXJDYXNlKCkpLAogICAgICBwb3BpYV9jb25zZW50X2dlbmVyYWw6Zm9ybS5jb25zZW50LmNoZWNrZWQscG9waWFfY29uc2VudF9ib25kX3JlZmVycmFsOmZhbHNlLAogICAgICBwYWdlX3VybDpsb2NhdGlvbi5ocmVmLHV0bV9zb3VyY2U6cS5nZXQoJ3V0bV9zb3VyY2UnKSx1dG1fY2FtcGFpZ246cS5nZXQoJ3V0bV9jYW1wYWlnbicpCiAgICB9OwogICAgYnRuLmRpc2FibGVkPXRydWU7YnRuLnRleHRDb250ZW50PSdTZW5kaW5n4oCmJzsKICAgIHZhciBlcnI9Zm9ybS5xdWVyeVNlbGVjdG9yKCcuZm9ybS1lcnInKTtpZihlcnIpZXJyLnJlbW92ZSgpOwogICAgZmV0Y2goJ2h0dHBzOi8vbjhuLmJsb3VkZXVyLm9ubGluZS93ZWJob29rL3dlYmZvcm0tYmx1ZS1kb29yJyx7bWV0aG9kOidQT1NUJyxoZWFkZXJzOnsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbid9LGJvZHk6SlNPTi5zdHJpbmdpZnkocGF5bG9hZCl9KQogICAgICAudGhlbihmdW5jdGlvbihyKXsKICAgICAgICBpZighci5vayl0aHJvdyBuZXcgRXJyb3IoJ0hUVFAgJytyLnN0YXR1cyk7CiAgICAgICAgZm9ybS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9InRoYW5rcyI+PGltZyBzcmM9Imh0dHBzOi8vdGhlYmx1ZWRvb3IuY28uemEvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMTAvYmQtc3ZjLXJlbnQud2VicCIgYWx0PSIiPjxoMz5UaGFuayB5b3UsICcrcGF5bG9hZC5maXJzdF9uYW1lLnJlcGxhY2UoL1s8PiYiXS9nLCcnKSsnLjwvaDM+PHA+WW91ciByZXF1ZXN0IGlzIHdpdGggdGhlIHRlYW0uIEEgQmx1ZSBEb29yIGFnZW50IHdpbGwgYmUgaW4gdG91Y2ggd2l0aGluIG9uZSBidXNpbmVzcyBkYXkuPC9wPjwvZGl2Pic7CiAgICAgIH0pCiAgICAgIC5jYXRjaChmdW5jdGlvbigpewogICAgICAgIGJ0bi5kaXNhYmxlZD1mYWxzZTtmb3JtRm9yKCk7CiAgICAgICAgdmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO3AuY2xhc3NOYW1lPSdmb3JtLWVycic7CiAgICAgICAgcC50ZXh0Q29udGVudD0nU29ycnksIHNvbWV0aGluZyB3ZW50IHdyb25nIHNlbmRpbmcgeW91ciByZXF1ZXN0LiBQbGVhc2UgZW1haWwgaW5mb0B0aGVibHVlZG9vci5jby56YSBvciBjYWxsICsyNyA3MiAxNzIgNzA2OC4nOwogICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQocCk7CiAgICAgIH0pOwogIH0pOwp9KSgpOwo=\"><\/script>\n<\/div>\n\n\n<style id=\"bdc-style\">\n  #bdc-root{position:fixed;bottom:22px;right:22px;z-index:99999;font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;line-height:1.55}\n  #bdc-root,#bdc-root *{box-sizing:border-box;margin:0;padding:0}\n  #bdc-root .bdc-launcher{display:grid;place-items:center;width:58px;height:58px;background:linear-gradient(135deg,#d8b968,#c8a24a);color:#1b1406;border:0;border-radius:50%;padding:0;cursor:pointer;position:relative;box-shadow:0 16px 38px -10px rgba(200,162,74,.75),0 6px 18px -6px rgba(15,26,44,.35);transition:transform .25s,box-shadow .25s}\n  #bdc-root .bdc-launcher:hover{transform:translateY(-2px);box-shadow:0 20px 44px -10px rgba(200,162,74,.85),0 8px 20px -6px rgba(15,26,44,.4)}\n  #bdc-root .bdc-launcher svg{width:25px;height:25px;color:#132239;flex:none}\n  #bdc-root .bdc-panel{display:none;flex-direction:column;width:382px;max-width:calc(100vw - 24px);height:640px;max-height:calc(100dvh - 44px);background:#fff;border:1px solid #e6e9ee;border-radius:20px;overflow:hidden;box-shadow:0 26px 64px -18px rgba(15,26,44,.5)}\n  #bdc-root.bdc-open .bdc-panel{display:flex;animation:bdcIn .28s cubic-bezier(.2,.7,.3,1)}\n  #bdc-root.bdc-open .bdc-launcher{display:none}\n  @keyframes bdcIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}\n  #bdc-root .bdc-head{background:#132239;color:#fff;padding:16px 18px;display:flex;align-items:center;gap:12px;flex:none}\n  #bdc-root .bdc-ava{width:40px;height:40px;border-radius:50%;background:#c8a24a;color:#1b1406;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.82rem;letter-spacing:.03em;flex:none}\n  #bdc-root .bdc-head-t h4{font-size:.98rem;font-weight:700;line-height:1.3}\n  #bdc-root .bdc-head-t span{display:block;font-size:.72rem;color:#c8d2e0;margin-top:2px}\n  #bdc-root .bdc-close{margin-left:auto;background:none;border:0;color:#fff;cursor:pointer;padding:7px;line-height:0;border-radius:9px}\n  #bdc-root .bdc-close:hover{background:rgba(255,255,255,.12)}\n  #bdc-root .bdc-close svg{width:18px;height:18px}\n  #bdc-root .bdc-msgs{flex:1;overflow-y:auto;padding:20px 16px;background:#f7f8fa;display:flex;flex-direction:column;gap:12px}\n  #bdc-root .bdc-m{max-width:85%;padding:.72rem 1rem;border-radius:16px;font-size:.9rem;white-space:pre-line;overflow-wrap:break-word}\n  #bdc-root .bdc-bot{background:#fff;border:1px solid #e6e9ee;border-bottom-left-radius:5px;align-self:flex-start;color:#1a2233;box-shadow:0 2px 6px -2px rgba(15,26,44,.08)}\n  #bdc-root .bdc-user{background:#132239;color:#fff;border-bottom-right-radius:5px;align-self:flex-end}\n  #bdc-root .bdc-opts{display:flex;flex-wrap:wrap;gap:8px;align-self:flex-start;max-width:100%;padding:2px 0 4px}\n  #bdc-root .bdc-opt{background:#fff;border:1.5px solid #c8a24a;color:#132239;border-radius:999px;padding:.55rem 1.1rem;font-size:.86rem;font-weight:600;cursor:pointer;font-family:inherit;line-height:1.4;transition:background .2s,color .2s,transform .2s}\n  #bdc-root .bdc-opt:hover{background:#c8a24a;color:#1b1406;transform:translateY(-1px)}\n  #bdc-root .bdc-opt.bdc-sel,#bdc-root .bdc-opt.bdc-sel:hover{background:#132239;border-color:#132239;color:#fff}\n  #bdc-root .bdc-opt.bdc-done{background:#c8a24a;color:#1b1406;font-weight:700}\n  #bdc-root .bdc-opt.bdc-done:disabled{background:#fff;color:#8a93a3;border-color:#d5dae2;cursor:default;transform:none}\n  #bdc-root .bdc-typing{display:flex;gap:5px;align-self:flex-start;background:#fff;border:1px solid #e6e9ee;border-radius:16px;border-bottom-left-radius:5px;padding:.85rem 1rem}\n  #bdc-root .bdc-typing i{width:7px;height:7px;border-radius:50%;background:#c8a24a;animation:bdcB 1s infinite}\n  #bdc-root .bdc-typing i:nth-child(2){animation-delay:.15s}\n  #bdc-root .bdc-typing i:nth-child(3){animation-delay:.3s}\n  @keyframes bdcB{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}\n  #bdc-root .bdc-foot{display:flex;align-items:center;gap:9px;padding:12px 12px 8px;border-top:1px solid #e6e9ee;background:#fff;flex:none}\n  #bdc-root .bdc-in{flex:1;border:1px solid #d5dae2;border-radius:999px;padding:.68rem 1.1rem;font-size:.92rem;font-family:inherit;line-height:1.4;outline:none;color:#1a2233;background:#fff}\n  #bdc-root .bdc-in:focus{border-color:#c8a24a}\n  #bdc-root .bdc-in:disabled{background:#f2f4f7;color:#8a93a3}\n  #bdc-root .bdc-send{background:#c8a24a;border:0;border-radius:50%;width:42px;height:42px;flex:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#1b1406;transition:background .2s}\n  #bdc-root .bdc-send:hover{background:#d8b968}\n  #bdc-root .bdc-send:disabled{background:#e6e9ee;color:#8a93a3;cursor:default}\n  #bdc-root .bdc-send svg{width:17px;height:17px}\n  #bdc-root .bdc-note{font-size:.68rem;color:#8a93a3;text-align:center;padding:0 14px 10px;background:#fff;flex:none}\n  @media (max-width:480px){\n    #bdc-root{bottom:14px;right:14px}\n    #bdc-root .bdc-panel{position:fixed;inset:0;width:100%;max-width:none;height:100dvh;max-height:none;border-radius:0;border:0}\n  }\n<\/style>\n<div id=\"bdc-root\">\n  <button type=\"button\" class=\"bdc-launcher\" id=\"bdc-open\" aria-label=\"Open chat\">\n    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 11.5a8.4 8.4 0 0 1-8.5 8.3 8.9 8.9 0 0 1-3.7-.8L3 21l2-4.6a8.1 8.1 0 0 1-1.5-4.9A8.4 8.4 0 0 1 12 3.2a8.4 8.4 0 0 1 9 8.3Z\"\/><\/svg>\n  <\/button>\n  <div class=\"bdc-panel\" role=\"dialog\" aria-label=\"Blue Door chat assistant\">\n    <div class=\"bdc-head\">\n      <div class=\"bdc-ava\">BD<\/div>\n      <div class=\"bdc-head-t\">\n        <h4>Blue Door Real Estate<\/h4>\n        <span>Automated AI assistant &middot; replies instantly<\/span>\n      <\/div>\n      <button type=\"button\" class=\"bdc-close\" id=\"bdc-close\" aria-label=\"Close chat\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 6 6 18M6 6l12 12\"\/><\/svg>\n      <\/button>\n    <\/div>\n    <div class=\"bdc-msgs\" id=\"bdc-msgs\"><\/div>\n    <div class=\"bdc-foot\">\n      <input class=\"bdc-in\" id=\"bdc-in\" placeholder=\"Type a message\u2026\" autocomplete=\"off\" maxlength=\"500\" \/>\n      <button type=\"button\" class=\"bdc-send\" id=\"bdc-send\" aria-label=\"Send\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"m22 2-7 20-4-9-9-4Z\"\/><path d=\"M22 2 11 13\"\/><\/svg>\n      <\/button>\n    <\/div>\n    <div class=\"bdc-note\">Automated assistant. A Blue Door agent follows up personally.<\/div>\n  <\/div>\n<\/div>\n<script id=\"bdc-script\" src=\"data:text\/javascript;charset=utf-8;base64,CihmdW5jdGlvbigpewogIC8qIEJsdWUgRG9vciBjaGF0IHdpZGdldCAtIHNjcmlwdGVkIHF1YWxpZmljYXRpb24gZnVubmVsLgogICAgIENvbGxlY3RzIHRoZSBmdWxsIGJ1eWVyL3RlbmFudC9zZWxsZXIgYnJpZWYgd2l0aCBxdWljay1yZXBseSBidXR0b25zLAogICAgIHRoZW4gUE9TVHMgT05FIGFzc2VtYmxlZCBlbnF1aXJ5IHRvIHRoZSBzYW1lIG44biB3ZWJob29rIGFzIHRoZSBmb3JtLgogICAgIFNvdXJjZSBvZiB0cnV0aDogTWFya2V0aW5nIHJlcG8sIHdvcmRwcmVzcy9jaGF0LXdpZGdldC5odG1sICovCiAgdmFyIFdFQkhPT0s9J2h0dHBzOi8vbjhuLmJsb3VkZXVyLm9ubGluZS93ZWJob29rL3dlYmZvcm0tYmx1ZS1kb29yJzsKICB2YXIgVFlQRVM9WydIb3VzZScsJ1Rvd25ob3VzZScsJ0FwYXJ0bWVudCAvIGZsYXQnLCdWYWNhbnQgbGFuZCddOwogIHZhciBTVUJVUkJTPVsnR29udWJpZScsJ0JlYWNvbiBCYXknLCdOYWhvb24nLCdWaW5jZW50JywnQW1hbGluZGEnLCdTb21ld2hlcmUgZWxzZSddOwogIHZhciBCVVlfQlVER0VUUz1bJ1VuZGVyIFI4MDBrJywnUjgwMGsg4oCTIFIxLjJtJywnUjEuMm0g4oCTIFIxLjhtJywnUjEuOG0g4oCTIFIyLjVtJywnT3ZlciBSMi41bSddOwogIHZhciBSRU5UX0JVREdFVFM9WydVbmRlciBSNiAwMDAvbScsJ1I2IDAwMCDigJMgUjkgMDAwL20nLCdSOSAwMDAg4oCTIFIxNCAwMDAvbScsJ092ZXIgUjE0IDAwMC9tJ107CgogIHZhciByb290PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZGMtcm9vdCcpLAogICAgICBtc2dzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZGMtbXNncycpLAogICAgICBpbnA9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JkYy1pbicpLAogICAgICBzZW5kPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZGMtc2VuZCcpOwogIHZhciBleHBlY3Q9bnVsbCwgc3RhcnRlZD1mYWxzZSwgYT17fTsKCiAgZnVuY3Rpb24gc2Nyb2xsKCl7bXNncy5zY3JvbGxUb3A9bXNncy5zY3JvbGxIZWlnaHR9CiAgZnVuY3Rpb24gdXNlck1zZyh0KXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtkLmNsYXNzTmFtZT0nYmRjLW0gYmRjLXVzZXInO2QudGV4dENvbnRlbnQ9dDttc2dzLmFwcGVuZENoaWxkKGQpO3Njcm9sbCgpfQogIGZ1bmN0aW9uIGJvdE1zZyh0KXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtkLmNsYXNzTmFtZT0nYmRjLW0gYmRjLWJvdCc7ZC50ZXh0Q29udGVudD10O21zZ3MuYXBwZW5kQ2hpbGQoZCk7c2Nyb2xsKCl9CiAgZnVuY3Rpb24gdHlwaW5nKCl7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7ZC5jbGFzc05hbWU9J2JkYy10eXBpbmcnO2QuaW5uZXJIVE1MPSc8aT48L2k+PGk+PC9pPjxpPjwvaT4nO21zZ3MuYXBwZW5kQ2hpbGQoZCk7c2Nyb2xsKCk7cmV0dXJuIGR9CiAgZnVuY3Rpb24gYm90KHQsY2Ipe3ZhciB0cD10eXBpbmcoKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dHAucmVtb3ZlKCk7Ym90TXNnKHQpO2lmKGNiKWNiKCl9LE1hdGgubWluKDM1MCt0Lmxlbmd0aCo2LDExMDApKX0KCiAgZnVuY3Rpb24gc2V0RXhwZWN0KGhhbmRsZXIscGgpewogICAgZXhwZWN0PWhhbmRsZXI7CiAgICB2YXIgb249ISFoYW5kbGVyOwogICAgaW5wLmRpc2FibGVkPSFvbjtzZW5kLmRpc2FibGVkPSFvbjsKICAgIGlucC5wbGFjZWhvbGRlcj1waHx8J1R5cGUgYSBtZXNzYWdl4oCmJzsKICAgIGlmKG9uJiZ3aW5kb3cubWF0Y2hNZWRpYSgnKG1pbi13aWR0aDo0ODFweCknKS5tYXRjaGVzKWlucC5mb2N1cygpOwogIH0KICBmdW5jdGlvbiBjbGVhck9wdHMoKXt2YXIgbz1tc2dzLnF1ZXJ5U2VsZWN0b3IoJy5iZGMtb3B0cycpO2lmKG8pby5yZW1vdmUoKX0KCiAgLyogYXNrKHRleHQsIG9wdGlvbnM\/LCBoYW5kbGVyLCBwbGFjZWhvbGRlcj8pIC0gYnV0dG9ucyBBTkQgZnJlZSB0eXBpbmcgYm90aCByZXNvbHZlIHRvIGhhbmRsZXIgKi8KICBmdW5jdGlvbiBhc2sodGV4dCxvcHRzLGhhbmRsZXIscGgpewogICAgYm90KHRleHQsZnVuY3Rpb24oKXsKICAgICAgaWYob3B0cyYmb3B0cy5sZW5ndGgpewogICAgICAgIHZhciB3PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3cuY2xhc3NOYW1lPSdiZGMtb3B0cyc7CiAgICAgICAgb3B0cy5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgICAgdmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7Yi50eXBlPSdidXR0b24nO2IuY2xhc3NOYW1lPSdiZGMtb3B0JztiLnRleHRDb250ZW50PW87CiAgICAgICAgICBiLm9uY2xpY2s9ZnVuY3Rpb24oKXtjbGVhck9wdHMoKTt1c2VyTXNnKG8pO3NldEV4cGVjdChudWxsKTtoYW5kbGVyKG8pfTsKICAgICAgICAgIHcuYXBwZW5kQ2hpbGQoYik7CiAgICAgICAgfSk7CiAgICAgICAgbXNncy5hcHBlbmRDaGlsZCh3KTtzY3JvbGwoKTsKICAgICAgfQogICAgICBzZXRFeHBlY3QoZnVuY3Rpb24odCl7Y2xlYXJPcHRzKCk7aGFuZGxlcih0KX0scGh8fChvcHRzJiZvcHRzLmxlbmd0aD8n4oCmb3IgdHlwZSB5b3VyIGFuc3dlcic6J1R5cGUgeW91ciBhbnN3ZXLigKYnKSk7CiAgICB9KTsKICB9CgogIC8qIGFza011bHRpKHRleHQsIG9wdGlvbnMsIGhhbmRsZXIsIHBsYWNlaG9sZGVyPykgLSB0YXAgdG8gdG9nZ2xlIGFueSBudW1iZXIsIHRoZW4gRG9uZTsgdHlwaW5nIGFsc28gcmVzb2x2ZXMgKi8KICBmdW5jdGlvbiBhc2tNdWx0aSh0ZXh0LG9wdHMsaGFuZGxlcixwaCl7CiAgICBib3QodGV4dCxmdW5jdGlvbigpewogICAgICB2YXIgc2VsPVtdOwogICAgICB2YXIgdz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTt3LmNsYXNzTmFtZT0nYmRjLW9wdHMnOwogICAgICB2YXIgZG9uZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtkb25lLnR5cGU9J2J1dHRvbic7ZG9uZS5jbGFzc05hbWU9J2JkYy1vcHQgYmRjLWRvbmUnO2RvbmUudGV4dENvbnRlbnQ9J+KckyBEb25lJztkb25lLmRpc2FibGVkPXRydWU7CiAgICAgIG9wdHMuZm9yRWFjaChmdW5jdGlvbihvKXsKICAgICAgICB2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtiLnR5cGU9J2J1dHRvbic7Yi5jbGFzc05hbWU9J2JkYy1vcHQnO2IudGV4dENvbnRlbnQ9bzsKICAgICAgICBiLm9uY2xpY2s9ZnVuY3Rpb24oKXsKICAgICAgICAgIHZhciBpPXNlbC5pbmRleE9mKG8pOwogICAgICAgICAgaWYoaT4tMSl7c2VsLnNwbGljZShpLDEpO2IuY2xhc3NMaXN0LnJlbW92ZSgnYmRjLXNlbCcpO30KICAgICAgICAgIGVsc2V7c2VsLnB1c2gobyk7Yi5jbGFzc0xpc3QuYWRkKCdiZGMtc2VsJyk7fQogICAgICAgICAgZG9uZS5kaXNhYmxlZD0hc2VsLmxlbmd0aDsKICAgICAgICB9OwogICAgICAgIHcuYXBwZW5kQ2hpbGQoYik7CiAgICAgIH0pOwogICAgICBkb25lLm9uY2xpY2s9ZnVuY3Rpb24oKXsKICAgICAgICB2YXIgdj1vcHRzLmZpbHRlcihmdW5jdGlvbihvKXtyZXR1cm4gc2VsLmluZGV4T2Yobyk+LTF9KS5qb2luKCcsICcpOwogICAgICAgIGNsZWFyT3B0cygpO3VzZXJNc2codik7c2V0RXhwZWN0KG51bGwpO2hhbmRsZXIodik7CiAgICAgIH07CiAgICAgIHcuYXBwZW5kQ2hpbGQoZG9uZSk7CiAgICAgIG1zZ3MuYXBwZW5kQ2hpbGQodyk7c2Nyb2xsKCk7CiAgICAgIHNldEV4cGVjdChmdW5jdGlvbih0KXtjbGVhck9wdHMoKTtoYW5kbGVyKHQpfSxwaHx8J+KApm9yIHR5cGUgeW91ciBhbnN3ZXInKTsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gb25TZW5kKCl7CiAgICB2YXIgdD1pbnAudmFsdWUudHJpbSgpOwogICAgaWYoIXR8fCFleHBlY3QpcmV0dXJuOwogICAgaW5wLnZhbHVlPScnO3VzZXJNc2codCk7CiAgICB2YXIgaD1leHBlY3Q7c2V0RXhwZWN0KG51bGwpO2godCk7CiAgfQogIHNlbmQub25jbGljaz1vblNlbmQ7CiAgaW5wLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLGZ1bmN0aW9uKGUpe2lmKGUua2V5PT09J0VudGVyJyl7ZS5wcmV2ZW50RGVmYXVsdCgpO29uU2VuZCgpfX0pOwoKICAvKiDilIDilIAgZnVubmVsIOKUgOKUgCAqLwogIGZ1bmN0aW9uIHN0YXJ0KCl7CiAgICBhPXt9OwogICAgYXNrKCdIaSEg8J+RiyBJ4oCZbSBCbHVlIERvb3LigJlzIGF1dG9tYXRlZCBhc3Npc3RhbnQuIEFuc3dlciBhIGZldyBxdWljayB0YXBzIGFuZCB5b3VyIGJyaWVmIGdvZXMgc3RyYWlnaHQgdG8gb3VyIHRlYW0uIEEgcmVhbCBhZ2VudCBmb2xsb3dzIHVwIHBlcnNvbmFsbHkuXG5cbldoYXQgYnJpbmdzIHlvdSBoZXJlIHRvZGF5PycsCiAgICAgIFsn8J+PoCBCdXlpbmcgYSBob21lJywn8J+UkSBSZW50aW5nJywn8J+SsCBTZWxsaW5nIG15IHByb3BlcnR5Jywn8J+TiCBJbnZlc3RpbmcnLCfwn5KsIFNvbWV0aGluZyBlbHNlJ10sCiAgICAgIGZ1bmN0aW9uKHQpewogICAgICAgIHZhciBzPXQudG9Mb3dlckNhc2UoKTsKICAgICAgICBpZihzLmluZGV4T2YoJ3NlbGwnKT4tMSl7YS5zdHJlYW09J3NlbGxlcl9tYW5kYXRlJzthLmludGVudD0nU2VsbGluZyc7c2VsbFR5cGUoKTt9CiAgICAgICAgZWxzZSBpZihzLmluZGV4T2YoJ3JlbnQnKT4tMSl7YS5zdHJlYW09J3RlbmFudCc7YS5pbnRlbnQ9J1JlbnRpbmcnO2Fza1R5cGUocmVudEFyZWEpO30KICAgICAgICBlbHNlIGlmKHMuaW5kZXhPZignaW52ZXN0Jyk+LTEpe2Euc3RyZWFtPSdpbnZlc3Rvcic7YS5pbnRlbnQ9J0ludmVzdGluZyc7aW52ZXN0R29hbCgpO30KICAgICAgICBlbHNlIGlmKHMuaW5kZXhPZignYnV5Jyk+LTF8fHMuaW5kZXhPZignaG9tZScpPi0xKXthLnN0cmVhbT0nYnV5ZXInO2EuaW50ZW50PSdCdXlpbmcnO2Fza1R5cGUoYnV5QXJlYSk7fQogICAgICAgIGVsc2V7YS5zdHJlYW09J2J1eWVyJzthLmludGVudD0nR2VuZXJhbCBlbnF1aXJ5JztvdGhlcih0KTt9CiAgICAgIH0pOwogIH0KICBmdW5jdGlvbiBhc2tUeXBlKG5leHQpe2Fza011bHRpKCdHcmVhdCwgd2hhdCB0eXBlIG9mIHByb3BlcnR5IGFyZSB5b3UgYWZ0ZXI\/IFRhcCBhbGwgdGhhdCBhcHBseSwgdGhlbiBEb25lLicsVFlQRVMsZnVuY3Rpb24odCl7YS5wdHlwZT10O25leHQoKX0pfQogIGZ1bmN0aW9uIGFza0FyZWEobmV4dCl7CiAgICBhc2tNdWx0aSgnV2hpY2ggYXJlYSBvciBzdWJ1cmI\/IFRhcCBhbGwgdGhhdCBpbnRlcmVzdCB5b3UsIHRoZW4gRG9uZS4nLFNVQlVSQlMsZnVuY3Rpb24odCl7CiAgICAgIGlmKC9zb21ld2hlcmUgZWxzZS9pLnRlc3QodCkpewogICAgICAgIHZhciBwaWNrZWQ9dC5zcGxpdCgnLCAnKS5maWx0ZXIoZnVuY3Rpb24ocyl7cmV0dXJuICEvc29tZXdoZXJlIGVsc2UvaS50ZXN0KHMpfSk7CiAgICAgICAgYXNrKHBpY2tlZC5sZW5ndGg\/J0dvdCBpdCwgd2hpY2ggb3RoZXIgYXJlYSBvciBhcmVhcz8nOidObyBwcm9ibGVtLCB3aGljaCBhcmVhPycsbnVsbCxmdW5jdGlvbih0Mil7CiAgICAgICAgICBhLmFyZWE9cGlja2VkLmNvbmNhdChbdDJdKS5qb2luKCcsICcpO25leHQoKTsKICAgICAgICB9LCdUeXBlIHRoZSBhcmVh4oCmJyk7CiAgICAgIH0KICAgICAgZWxzZXthLmFyZWE9dDtuZXh0KCk7fQogICAgfSk7CiAgfQogIC8qIGJ1eWVyICovCiAgZnVuY3Rpb24gYnV5QXJlYSgpe2Fza0FyZWEoYnV5QnVkZ2V0KX0KICBmdW5jdGlvbiBidXlCdWRnZXQoKXthc2tNdWx0aSgnV2hhdOKAmXMgeW91ciBidWRnZXQ\/IFRhcCBhIHJhbmdlLCBvciBtb3JlIHRoYW4gb25lIGlmIHlvdeKAmXJlIGZsZXhpYmxlLCB0aGVuIERvbmUuJyxCVVlfQlVER0VUUyxmdW5jdGlvbih0KXthLmJ1ZGdldD10O2J1eVByb2ZpbGUoKX0pfQogIGZ1bmN0aW9uIGJ1eVByb2ZpbGUoKXthc2soJ0lzIHRoaXMgeW91ciBmaXJzdCBob21lPycsWydGaXJzdC10aW1lIGJ1eWVyJywnTW92aW5nIC8gdXBncmFkaW5nJywnQnV5aW5nIHRvIGludmVzdCddLGZ1bmN0aW9uKHQpe2EucHJvZmlsZT10O2J1eUJvbmQoKX0pfQogIGZ1bmN0aW9uIGJ1eUJvbmQoKXsKICAgIGFzaygnTGFzdCBvbmUgb24gdGhlIHByb3BlcnR5OiBoYXZlIHlvdSBzb3J0ZWQgYm9uZCBwcmUtYXBwcm92YWw\/JyxbJ1llcywgcHJlLWFwcHJvdmVkJywnTm90IHlldCcsJ0Nhc2ggYnV5ZXInXSxmdW5jdGlvbih0KXsKICAgICAgYS5ib25kPXQ7CiAgICAgIGlmKC9ub3QgeWV0L2kudGVzdCh0KSl7Ym90KCdObyBzdHJlc3MsIG91ciBib25kIG9yaWdpbmF0b3IgcGFydG5lciBjYW4gaGVscCB3aXRoIHByZS1hcHByb3ZhbCBhdCBubyBjb3N0LiBJ4oCZbGwgbm90ZSBpdCBvbiB5b3VyIGJyaWVmLicsYXNrTmFtZSk7fQogICAgICBlbHNlIGFza05hbWUoKTsKICAgIH0pOwogIH0KICAvKiB0ZW5hbnQgKi8KICBmdW5jdGlvbiByZW50QXJlYSgpe2Fza0FyZWEocmVudEJ1ZGdldCl9CiAgZnVuY3Rpb24gcmVudEJ1ZGdldCgpe2Fza011bHRpKCdXaGF0IG1vbnRobHkgcmVudCBhcmUgeW91IGNvbWZvcnRhYmxlIHdpdGg\/IFRhcCBhbGwgcmFuZ2VzIHRoYXQgY291bGQgd29yaywgdGhlbiBEb25lLicsUkVOVF9CVURHRVRTLGZ1bmN0aW9uKHQpe2EuYnVkZ2V0PXQ7cmVudE1vdmUoKX0pfQogIGZ1bmN0aW9uIHJlbnRNb3ZlKCl7YXNrKCdXaGVuIGRvIHlvdSBuZWVkIHRvIG1vdmUgaW4\/JyxbJ0FTQVAnLCcx4oCTMiBtb250aHMnLCczKyBtb250aHMnXSxmdW5jdGlvbih0KXthLnRpbWVsaW5lPXQ7YXNrTmFtZSgpfSl9CiAgLyogc2VsbGVyICovCiAgZnVuY3Rpb24gc2VsbFR5cGUoKXthc2soJ1doYXQgdHlwZSBvZiBwcm9wZXJ0eSBhcmUgeW91IHNlbGxpbmc\/JyxUWVBFUyxmdW5jdGlvbih0KXthLnB0eXBlPXQ7c2VsbEFyZWEoKX0pfQogIGZ1bmN0aW9uIHNlbGxBcmVhKCl7YXNrQXJlYShzZWxsV2hlbil9CiAgZnVuY3Rpb24gc2VsbFdoZW4oKXsKICAgIGFzaygnV2hlbiBhcmUgeW91IGhvcGluZyB0byBzZWxsPycsWydBcyBzb29uIGFzIHBvc3NpYmxlJywnMeKAkzMgbW9udGhzJywnSnVzdCBleHBsb3JpbmcnXSxmdW5jdGlvbih0KXsKICAgICAgYS50aW1lbGluZT10OwogICAgICBib3QoJ0dvb2QgdG8ga25vdy4gV2XigJlsbCBsaW5lIHVwIGEgZnJlZSwgbm8tb2JsaWdhdGlvbiB2YWx1YXRpb24gYXMgYSBmaXJzdCBzdGVwLicsYXNrTmFtZSk7CiAgICB9KTsKICB9CiAgLyogaW52ZXN0b3IgKi8KICBmdW5jdGlvbiBpbnZlc3RHb2FsKCl7CiAgICBhc2soJ0FyZSB5b3Ugc3RhcnRpbmcgb3V0IG9yIGdyb3dpbmcgYSBwb3J0Zm9saW8\/JyxbJ0ZpcnN0IGludmVzdG1lbnQnLCdHcm93aW5nIGEgcG9ydGZvbGlvJywnSnVzdCByZXNlYXJjaGluZyddLGZ1bmN0aW9uKHQpewogICAgICBhLnByb2ZpbGU9dDthc2tUeXBlKGZ1bmN0aW9uKCl7YXNrQXJlYShidXlCdWRnZXQyKX0pOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIGJ1eUJ1ZGdldDIoKXthc2tNdWx0aSgnV2hhdOKAmXMgeW91ciBidWRnZXQ\/IFRhcCBhIHJhbmdlLCBvciBtb3JlIHRoYW4gb25lIGlmIHlvdeKAmXJlIGZsZXhpYmxlLCB0aGVuIERvbmUuJyxCVVlfQlVER0VUUyxmdW5jdGlvbih0KXthLmJ1ZGdldD10O2Fza05hbWUoKX0pfQogIC8qIHNvbWV0aGluZyBlbHNlICovCiAgZnVuY3Rpb24gb3RoZXIoKXthc2soJ05vIHByb2JsZW0sIHRlbGwgbWUgYSBsaXR0bGUgYWJvdXQgd2hhdCB5b3UgbmVlZC4nLG51bGwsZnVuY3Rpb24odCl7YS5mcmVlVGV4dD10O2Fza05hbWUoKX0sJ1R5cGUgeW91ciBtZXNzYWdl4oCmJyl9CgogIC8qIOKUgOKUgCBjb250YWN0IOKUgOKUgCAqLwogIGZ1bmN0aW9uIGFza05hbWUoKXthc2soJ05lYXJseSBkb25lLiBXaGF04oCZcyB5b3VyIG5hbWU\/JyxudWxsLGZ1bmN0aW9uKHQpe2EubmFtZT10O2Fza0VtYWlsKCl9LCdZb3VyIG5hbWXigKYnKX0KICBmdW5jdGlvbiBhc2tFbWFpbCgpewogICAgYXNrKCdBbmQgeW91ciBlbWFpbCBhZGRyZXNzLCBzbyB3ZSBjYW4gc2VuZCB5b3VyIG1hdGNoZXM\/JyxudWxsLGZ1bmN0aW9uKHQpewogICAgICBpZighL15cUytAXFMrXC5cUyskLy50ZXN0KHQpKXtib3QoJ1RoYXQgZG9lc27igJl0IGxvb2sgbGlrZSBhbiBlbWFpbCBhZGRyZXNzLiBNaW5kIHRyeWluZyBhZ2Fpbj8nLGZ1bmN0aW9uKCl7YXNrRW1haWwoKX0pO3JldHVybn0KICAgICAgYS5lbWFpbD10O2NvbnNlbnQoKTsKICAgIH0sJ3lvdUBlbWFpbC5jb20nKTsKICB9CiAgZnVuY3Rpb24gY29uc2VudCgpewogICAgYXNrKCdMYXN0IHRoaW5nOiBpcyBpdCBPSyBmb3IgQmx1ZSBEb29yIHRvIGNvbnRhY3QgeW91IGFib3V0IHRoaXMgZW5xdWlyeSBieSBlbWFpbCwgU01TLCBXaGF0c0FwcCBvciBwaG9uZSwgYW5kIGtlZXAgeW91ciBkZXRhaWxzIGZvciB0aGF0IHB1cnBvc2U\/JywKICAgICAgWyfinJMgSSBhZ3JlZSwgY29udGFjdCBtZScsJ05vIHRoYW5rcyddLAogICAgICBmdW5jdGlvbih0KXsKICAgICAgICBpZigvYWdyZWUvaS50ZXN0KHQpKXthLmNvbnNlbnQ9dHJ1ZTtzdWJtaXQoKTt9CiAgICAgICAgZWxzZSBib3QoJ05vIHByb2JsZW0sIG5vdGhpbmcgaXMgc2VudCB3aXRob3V0IHlvdXIgcGVybWlzc2lvbi4gSWYgeW91IGNoYW5nZSB5b3VyIG1pbmQsIGVtYWlsIGluZm9AdGhlYmx1ZWRvb3IuY28uemEgb3IgY2FsbCArMjcgNzIgMTcyIDcwNjguJyxmdW5jdGlvbigpewogICAgICAgICAgdmFyIHc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7dy5jbGFzc05hbWU9J2JkYy1vcHRzJzsKICAgICAgICAgIHZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO2IudHlwZT0nYnV0dG9uJztiLmNsYXNzTmFtZT0nYmRjLW9wdCc7Yi50ZXh0Q29udGVudD0nU3RhcnQgb3Zlcic7CiAgICAgICAgICBiLm9uY2xpY2s9ZnVuY3Rpb24oKXtjbGVhck9wdHMoKTtzdGFydCgpfTt3LmFwcGVuZENoaWxkKGIpO21zZ3MuYXBwZW5kQ2hpbGQodyk7c2Nyb2xsKCk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogIH0KCiAgLyog4pSA4pSAIHN1Ym1pdCDilIDilIAgKi8KICBmdW5jdGlvbiBicmllZigpewogICAgdmFyIHA9WydXZWJzaXRlIGNoYXQgZW5xdWlyeTogJythLmludGVudCsnOiddOwogICAgaWYoYS5wdHlwZSlwLnB1c2goYS5wdHlwZSk7CiAgICBpZihhLmFyZWEpcC5wdXNoKCdpbiAnK2EuYXJlYSk7CiAgICBpZihhLmJ1ZGdldClwLnB1c2goJ2J1ZGdldCAnK2EuYnVkZ2V0KTsKICAgIGlmKGEucHJvZmlsZSlwLnB1c2goYS5wcm9maWxlLnRvTG93ZXJDYXNlKCkpOwogICAgaWYoYS5ib25kKXAucHVzaCgnYm9uZCBzdGF0dXM6ICcrYS5ib25kLnRvTG93ZXJDYXNlKCkpOwogICAgaWYoYS50aW1lbGluZSlwLnB1c2goJ3RpbWVsaW5lOiAnK2EudGltZWxpbmUudG9Mb3dlckNhc2UoKSk7CiAgICB2YXIgcz1wWzBdKycgJytwLnNsaWNlKDEpLmpvaW4oJywgJykrJy4nOwogICAgaWYoYS5mcmVlVGV4dClzKz0nXG5NZXNzYWdlOiAnK2EuZnJlZVRleHQ7CiAgICByZXR1cm4gczsKICB9CiAgZnVuY3Rpb24gc3VibWl0KCl7CiAgICB2YXIgdHA9dHlwaW5nKCk7CiAgICB2YXIgbmFtZXM9KGEubmFtZXx8JycpLnRyaW0oKS5zcGxpdCgvXHMrLyk7CiAgICB2YXIgcT1uZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCk7CiAgICB2YXIgcGF5bG9hZD17CiAgICAgIGZpcnN0X25hbWU6bmFtZXNbMF18fG51bGwsCiAgICAgIGxhc3RfbmFtZTpuYW1lcy5zbGljZSgxKS5qb2luKCcgJyl8fG51bGwsCiAgICAgIGVtYWlsOmEuZW1haWx8fG51bGwsCiAgICAgIG1vYmlsZTpudWxsLAogICAgICBzdHJlYW06YS5zdHJlYW0sCiAgICAgIG1lc3NhZ2U6YnJpZWYoKSwKICAgICAgcG9waWFfY29uc2VudF9nZW5lcmFsOnRydWUsCiAgICAgIHBvcGlhX2NvbnNlbnRfYm9uZF9yZWZlcnJhbDpmYWxzZSwKICAgICAgcGFnZV91cmw6bG9jYXRpb24uaHJlZiwKICAgICAgdXRtX3NvdXJjZTpxLmdldCgndXRtX3NvdXJjZScpLAogICAgICB1dG1fY2FtcGFpZ246cS5nZXQoJ3V0bV9jYW1wYWlnbicpCiAgICB9OwogICAgZmV0Y2goV0VCSE9PSyx7bWV0aG9kOidQT1NUJyxoZWFkZXJzOnsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbid9LGJvZHk6SlNPTi5zdHJpbmdpZnkocGF5bG9hZCl9KQogICAgICAudGhlbihmdW5jdGlvbihyKXtpZighci5vayl0aHJvdyBuZXcgRXJyb3IoJ0hUVFAgJytyLnN0YXR1cyk7dHAucmVtb3ZlKCk7CiAgICAgICAgYm90TXNnKCdUaGFua3MgJysobmFtZXNbMF18fCcnKSsnISBZb3VyIGJyaWVmIGlzIHdpdGggb3VyIHRlYW0uIEV4cGVjdCB0byBoZWFyIGZyb20gdXMgc2hvcnRseSBhdCAnK2EuZW1haWwrJy4nKTsKICAgICAgICB2YXIgdz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTt3LmNsYXNzTmFtZT0nYmRjLW9wdHMnOwogICAgICAgIHZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO2IudHlwZT0nYnV0dG9uJztiLmNsYXNzTmFtZT0nYmRjLW9wdCc7Yi50ZXh0Q29udGVudD0nU2VuZCBhbm90aGVyIGVucXVpcnknOwogICAgICAgIGIub25jbGljaz1mdW5jdGlvbigpe2NsZWFyT3B0cygpO3N0YXJ0KCl9O3cuYXBwZW5kQ2hpbGQoYik7bXNncy5hcHBlbmRDaGlsZCh3KTtzY3JvbGwoKTsKICAgICAgfSkKICAgICAgLmNhdGNoKGZ1bmN0aW9uKCl7dHAucmVtb3ZlKCk7CiAgICAgICAgYm90TXNnKCdTb3JyeSwgc29tZXRoaW5nIHdlbnQgd3Jvbmcgc2VuZGluZyB5b3VyIGJyaWVmLiBQbGVhc2UgZW1haWwgaW5mb0B0aGVibHVlZG9vci5jby56YSBvciBjYWxsICsyNyA3MiAxNzIgNzA2OCBhbmQgd2XigJlsbCB0YWtlIGl0IGZyb20gdGhlcmUuJyk7CiAgICAgIH0pOwogIH0KCiAgLyog4pSA4pSAIG9wZW4vY2xvc2Ug4pSA4pSAICovCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JkYy1vcGVuJykub25jbGljaz1mdW5jdGlvbigpewogICAgcm9vdC5jbGFzc0xpc3QuYWRkKCdiZGMtb3BlbicpOwogICAgaWYoIXN0YXJ0ZWQpe3N0YXJ0ZWQ9dHJ1ZTtzZXRFeHBlY3QobnVsbCk7c3RhcnQoKTt9CiAgfTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmRjLWNsb3NlJykub25jbGljaz1mdW5jdGlvbigpe3Jvb3QuY2xhc3NMaXN0LnJlbW92ZSgnYmRjLW9wZW4nKX07CiAgc2V0RXhwZWN0KG51bGwpOwp9KSgpOwo=\"><\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>BLUE DOORREAL ESTATE Developments The Wedge Amalinda Downs Bengal Heights Bengal Views Services About Team Contact Book a valuation East London \u00b7&nbsp;Sales \u00b7 Rentals \u00b7 Home loans Let\u2019s open the Blue Door. Buying your first home, selling for the best price, renting or sorting a bond: whatever\u2019s behind your door, we\u2019ll help you open it. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-10","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/thebluedoor.co.za\/index.php?rest_route=\/wp\/v2\/pages\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thebluedoor.co.za\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/thebluedoor.co.za\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/thebluedoor.co.za\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thebluedoor.co.za\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10"}],"version-history":[{"count":90,"href":"https:\/\/thebluedoor.co.za\/index.php?rest_route=\/wp\/v2\/pages\/10\/revisions"}],"predecessor-version":[{"id":125,"href":"https:\/\/thebluedoor.co.za\/index.php?rest_route=\/wp\/v2\/pages\/10\/revisions\/125"}],"wp:attachment":[{"href":"https:\/\/thebluedoor.co.za\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}