<!-- DFM_FINAL_REPAIR_V21 -->
<style>
html.dfm-final-live,html.dfm-final-live body{margin:0!important;max-width:none!important;overflow-x:hidden!important;background:#f6f7f2!important;color:#121815!important;font-family:Arial,Helvetica,sans-serif!important}
html.dfm-final-pending body{visibility:hidden!important}
html.dfm-final-live *{box-sizing:border-box!important;letter-spacing:0!important}
.dfm-final{--ink:#121815;--muted:#59635e;--paper:#f6f7f2;--line:#d7ded8;--green:#147a4f;--yellow:#f4c928;--white:#fff;min-height:100vh;background:var(--paper);color:var(--ink)}
.dfm-final a{color:inherit}.dfm-wrap{width:min(1180px,calc(100% - 40px));margin:auto}.dfm-head{position:sticky;top:0;z-index:1000;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 8px 24px rgba(18,24,21,.06)}.dfm-head-in{min-height:74px;display:flex;align-items:center;justify-content:space-between;gap:20px}.dfm-logo img{display:block;width:178px;max-width:48vw;height:auto}.dfm-nav{display:flex;align-items:center;gap:18px;font-size:14px;font-weight:850}.dfm-nav a{text-decoration:none}.dfm-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 16px;border-radius:6px;border:1px solid var(--yellow);background:var(--yellow);color:var(--ink);font-weight:900;text-decoration:none;cursor:pointer}.dfm-btn.green{background:var(--green);border-color:var(--green);color:#fff}.dfm-btn.ghost{background:#fff;border-color:var(--line)}
.dfm-hero{background:var(--ink);color:#fff;border-bottom:5px solid var(--yellow);padding:72px 0 54px}.dfm-hero.home{position:relative;isolation:isolate;overflow:hidden;background:#101711}.dfm-hero.home:before{content:"";position:absolute;inset:0;background-image:var(--dfm-hero-bg);background-size:cover;background-position:center;opacity:.28;z-index:-2}.dfm-hero.home:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(16,23,17,.96) 0%,rgba(16,23,17,.88) 54%,rgba(16,23,17,.68) 100%);z-index:-1}.dfm-hero.home .dfm-hero-grid{grid-template-columns:minmax(0,780px)}.dfm-hero.home .dfm-hero-img,.dfm-hero.home .dfm-hero-grid>div:nth-child(n+2){display:none!important}.dfm-hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(320px,.8fr);gap:34px;align-items:center}.dfm-kicker{margin:0 0 12px;color:var(--yellow);font-size:13px;font-weight:900;text-transform:uppercase}.dfm-hero h1{margin:0 0 18px;max-width:850px;color:#fff;font-size:clamp(42px,6vw,76px);line-height:.98;font-weight:900}.dfm-lead{max-width:760px;margin:0;color:rgba(255,255,255,.82);font-size:18px;line-height:1.55}.dfm-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}.dfm-tag{display:none!important}
.dfm-band{padding:54px 0}.dfm-band.white{background:#fff}.dfm-section-head{display:flex;justify-content:space-between;align-items:end;gap:22px;margin-bottom:22px}.dfm-section-head h2,.dfm-page h1{margin:0;color:var(--ink);font-size:clamp(32px,4vw,52px);line-height:1.05}.dfm-section-head p,.dfm-page-lead{max-width:720px;margin:8px 0 0;color:var(--muted);line-height:1.55}.dfm-grid{display:grid;gap:14px}.dfm-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.dfm-grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.dfm-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:20px;box-shadow:0 10px 24px rgba(18,24,21,.05)}.dfm-card.dark{background:#202722;border-color:#35413a;color:#fff}.dfm-card h3{margin:0 0 10px;font-size:21px;line-height:1.15}.dfm-card p,.dfm-card li{color:var(--muted);font-size:15px;line-height:1.52}.dfm-card.dark h3,.dfm-card.dark li{color:#fff}.dfm-card.dark p{color:rgba(255,255,255,.86)}.dfm-rate{margin-top:8px;color:var(--green);font-size:28px;font-weight:900}.dfm-card.dark .dfm-rate{color:var(--yellow)}
.dfm-bike-card{display:flex;flex-direction:column;overflow:hidden;padding:0;contain:layout paint}.dfm-bike-photo{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;background:#e6ece7;border-bottom:1px solid var(--line);transform:translateZ(0)}.dfm-bike-body{padding:16px}.dfm-bike-body b{display:block;margin-bottom:6px;font-size:18px}.dfm-bike-body span{display:block;color:var(--muted);font-size:14px;line-height:1.42}.dfm-chip-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.dfm-chip{display:inline-flex;border-radius:999px;background:#fff4bf;color:#443800;padding:6px 9px;font-size:12px;font-weight:900}.dfm-bike-links{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.dfm-bike-links .dfm-btn{min-height:40px;padding:0 10px;font-size:13px}.dfm-bike-links .dfm-btn:only-child{grid-column:1/-1}.dfm-final [data-bookable=false]{opacity:.58}.dfm-final [data-bookable=false] .dfm-bike-photo{filter:grayscale(.55)}.dfm-status-chip{display:inline-flex;margin-top:10px;border-radius:999px;padding:6px 9px;background:#eef1ed;color:#27312c;font-size:12px;font-weight:900}.dfm-status-chip.ok{background:#edf8ef;color:#12633f}.dfm-status-chip.bad{background:#fff0ed;color:#9b2b1d}.dfm-next-booking{display:block;margin-top:7px;color:#59635e;font-size:12px;font-weight:850;line-height:1.35}.dfm-next-booking strong{color:#27312c}
.dfm-page{padding:54px 0}.dfm-two{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}.dfm-book-two{grid-template-columns:minmax(0,1fr) minmax(430px,.78fr)}.dfm-book-side{position:static}.dfm-before-collection{margin-top:18px;border-top:1px solid var(--line);padding-top:18px}.dfm-side{position:sticky;top:96px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:20px}.dfm-side ul{padding-left:18px;color:var(--muted);line-height:1.55}.dfm-bike-select{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0 24px}.dfm-bike-option{overflow:hidden;min-height:100%;padding:0;border:1px solid var(--line);border-radius:8px;background:#fbfbf8;text-align:left;cursor:pointer}.dfm-bike-option[data-selected=true]{border-color:var(--green);box-shadow:inset 0 0 0 2px var(--green);background:#eff8f2}.dfm-bike-option[data-bookable=false]{cursor:not-allowed}.dfm-bike-option .dfm-bike-body{padding:13px}.dfm-bike-option b{display:block;margin-bottom:5px;font-size:16px}.dfm-book-form,.dfm-proof-form{display:grid;gap:14px}.dfm-form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.dfm-book-form label,.dfm-proof-form label{display:grid;gap:6px;color:#27312c;font-size:13px;font-weight:900}.dfm-book-form input,.dfm-book-form select,.dfm-book-form textarea,.dfm-proof-form input,.dfm-proof-form textarea{width:100%;min-height:46px;border:1px solid #cbd3cd;border-radius:6px;background:#fff;color:var(--ink);font:inherit;font-size:15px;padding:10px 12px}.dfm-book-form input[type=file],.dfm-proof-form input[type=file]{padding:9px;background:#fbfcfb}.dfm-book-form textarea,.dfm-proof-form textarea{min-height:90px;resize:vertical}.dfm-address-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 24px}.dfm-address-grid label{align-content:start}.dfm-address-grid input,.dfm-address-grid select{min-height:54px}.dfm-unit-row{display:grid;grid-template-columns:46px minmax(0,1fr)46px minmax(0,1fr);align-items:stretch}.dfm-unit-row span{display:flex;align-items:center;justify-content:center;border:1px solid #cbd3cd;background:#f3f4f2;color:#4c5550;font-size:18px;font-weight:900}.dfm-unit-row span:first-child{border-radius:6px 0 0 6px}.dfm-unit-row span:nth-child(3){border-left:0;border-right:0}.dfm-unit-row input{border-radius:0!important}.dfm-unit-row input:last-child{border-radius:0 6px 6px 0!important}.dfm-doc-note{display:block;color:#647069;font-size:12px;font-weight:750;line-height:1.35}.dfm-proof-panel{display:none;margin-top:18px;border:1px solid #bedfc8;border-radius:8px;background:#f4fbf6;padding:18px}.dfm-proof-panel[data-open=true]{display:block}.dfm-proof-panel h3{margin:0 0 8px}.dfm-proof-panel p{margin:0 0 14px;color:var(--muted);line-height:1.5}.dfm-payment-box{white-space:pre-wrap;border:1px solid #dce2dd;border-radius:7px;background:#fff;padding:12px;color:#27312c;font-size:13px;line-height:1.45;max-height:210px;overflow:auto}.dfm-paynow-qr{display:grid;grid-template-columns:190px minmax(0,1fr);gap:16px;align-items:center;margin:14px 0;border:2px solid var(--yellow);border-radius:8px;background:#fffdf0;padding:14px}.dfm-paynow-qr img{display:block;width:190px;max-width:100%;border:1px solid #e1d385;border-radius:6px;background:#fff}.dfm-paynow-qr h4{margin:0 0 7px;font-size:18px}.dfm-paynow-qr p{margin:0 0 10px!important;color:#3b423d!important}.dfm-paynow-actions{display:flex;gap:10px;flex-wrap:wrap}.dfm-paynow-actions .dfm-btn{min-height:40px;font-size:13px}.dfm-payment-warning{border-left:5px solid var(--yellow);background:#fff;padding:12px 13px;border-radius:6px;margin:10px 0 14px;color:#2f342f;font-size:13px;line-height:1.45;font-weight:800}.dfm-status{border:1px solid #dce2dd;border-radius:7px;background:#eef1ed;padding:13px 14px;color:var(--ink);font-weight:800;line-height:1.45}.dfm-status.ok{border-color:#bedfc8;background:#edf8ef;color:#12633f}.dfm-status.bad{border-color:#f1c5bd;background:#fff0ed;color:#9b2b1d}
.dfm-review-panel{margin-top:18px;border:1px solid #d8dfd9;border-radius:8px;background:#fff;padding:18px}.dfm-review-panel h3{margin:0 0 8px}.dfm-review-panel p{margin:0 0 14px;color:var(--muted);line-height:1.5}.dfm-review-form{display:grid;gap:14px}.dfm-review-form label{display:grid;gap:6px;color:#27312c;font-size:13px;font-weight:900}.dfm-review-form input,.dfm-review-form select,.dfm-review-form textarea{width:100%;min-height:46px;border:1px solid #cbd3cd;border-radius:6px;background:#fff;color:var(--ink);font:inherit;font-size:15px;padding:10px 12px}.dfm-review-form textarea{min-height:110px;resize:vertical}.dfm-review-consent{display:flex!important;align-items:flex-start;gap:9px!important;color:#4f5c55!important;font-size:12px!important;font-weight:800!important;line-height:1.4}.dfm-review-consent input{width:auto!important;min-height:0!important;margin-top:2px}.dfm-review-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;border:1px solid #e1e7e2;border-radius:7px;background:#fbfcfb;padding:10px}.dfm-review-score{display:grid;gap:2px;color:#27312c;font-size:12px;font-weight:900}.dfm-review-score small{color:#647069;font-weight:800}.dfm-stars{color:#b88a00;white-space:nowrap}.dfm-review-toggle{display:inline-flex;align-items:center;justify-content:center;min-height:34px;border:1px solid var(--line);border-radius:6px;background:#fff;color:#27312c;font:inherit;font-size:12px;font-weight:900;padding:0 10px;cursor:pointer}.dfm-review-modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:rgba(18,24,21,.58);padding:20px}.dfm-review-dialog{width:min(560px,100%);max-height:min(720px,86vh);overflow:auto;border-radius:8px;background:#fff;border:1px solid var(--line);box-shadow:0 24px 80px rgba(18,24,21,.25)}.dfm-review-dialog-head{position:sticky;top:0;display:flex;align-items:flex-start;justify-content:space-between;gap:14px;background:#fff;border-bottom:1px solid var(--line);padding:16px}.dfm-review-dialog-head h3{margin:0;font-size:20px}.dfm-review-dialog-head p{margin:4px 0 0;color:var(--muted);font-size:13px}.dfm-review-close{flex:0 0 auto;width:36px;height:36px;border:1px solid var(--line);border-radius:6px;background:#fff;color:#27312c;font-size:22px;line-height:1;cursor:pointer}.dfm-public-reviews{display:grid;gap:10px;padding:16px}.dfm-public-review{border:1px solid #e1e7e2;border-radius:7px;background:#fbfcfb;padding:12px}.dfm-public-review-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;font-size:12px;font-weight:900}.dfm-public-review p{margin:0;color:#3f4943;font-size:13px;line-height:1.45}
.dfm-process{counter-reset:step}.dfm-process .dfm-card{position:relative;padding-top:54px}.dfm-process .dfm-card:before{counter-increment:step;content:counter(step);position:absolute;left:20px;top:16px;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--yellow);color:var(--ink);font-weight:900}.dfm-faq{display:grid;gap:12px}.dfm-faq details{background:#fff;border:1px solid var(--line);border-radius:8px;padding:18px}.dfm-faq summary{font-size:17px;font-weight:900;cursor:pointer}.dfm-faq p{margin:10px 0 0;color:var(--muted);line-height:1.55}.dfm-legal{display:grid;gap:14px}.dfm-legal-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:22px}.dfm-legal-card h2{margin:0 0 10px;color:var(--ink);font-size:24px;line-height:1.15}.dfm-legal-card p,.dfm-legal-card li{color:var(--muted);font-size:15px;line-height:1.62}.dfm-legal-card p{margin:0 0 10px}.dfm-legal-card p:last-child{margin-bottom:0}.dfm-legal-card ul{margin:6px 0 0;padding-left:20px}.dfm-policy-links{display:grid;gap:9px}.dfm-policy-links a{display:block;border:1px solid var(--line);border-radius:7px;background:#fff;padding:11px 12px;text-decoration:none;font-size:13px;font-weight:900;color:#27312c}.dfm-policy-links a[data-active=true]{border-color:var(--green);background:#eff8f2;color:var(--green)}
.dfm-foot{background:var(--ink);color:#fff;border-top:5px solid var(--yellow);padding:38px 0 24px}.dfm-foot-grid{display:grid;grid-template-columns:1.2fr repeat(3,minmax(0,.65fr));gap:24px}.dfm-foot img{display:block;width:190px;max-width:60vw;height:auto;margin-bottom:12px;filter:brightness(0) invert(1)}.dfm-foot p,.dfm-foot a,.dfm-foot span{color:rgba(255,255,255,.78);line-height:1.55;text-decoration:none}.dfm-foot h3{margin:0 0 10px;color:var(--yellow);font-size:15px;text-transform:uppercase}.dfm-foot-links{display:grid;gap:8px}.dfm-fine{border-top:1px solid #344039;margin-top:24px;padding-top:18px;color:rgba(255,255,255,.62);font-size:13px;line-height:1.5}
@media(max-width:960px){.dfm-hero-grid,.dfm-two{grid-template-columns:1fr}.dfm-grid.cols-3,.dfm-grid.cols-4,.dfm-bike-select{grid-template-columns:repeat(2,minmax(0,1fr))}.dfm-side{position:static}.dfm-foot-grid{grid-template-columns:1fr 1fr}.dfm-nav{display:none}}
@media(max-width:620px){.dfm-address-grid{grid-template-columns:1fr}.dfm-wrap,.dfm-head-in{width:calc(100% - 28px)}.dfm-logo img{width:150px}.dfm-head-in{min-height:64px}.dfm-hero{padding:44px 0 34px}.dfm-hero h1{font-size:40px}.dfm-lead{font-size:16px}.dfm-section-head{display:block}.dfm-grid.cols-3,.dfm-grid.cols-4,.dfm-bike-select,.dfm-form-row,.dfm-foot-grid,.dfm-paynow-qr{grid-template-columns:1fr}.dfm-paynow-qr img{width:100%;max-width:280px;margin:auto}.dfm-band,.dfm-page{padding:38px 0}.dfm-card,.dfm-side{padding:16px}.dfm-btn{width:100%}.dfm-actions{display:grid}.dfm-bike-links{grid-template-columns:1fr}}
</style>
<script>
(function(){
var DFM_NO_HANG_VERSION="20260810-v16";
function dfmIsSquarespaceAdminOrEditor_(){
var href=String(location.href||"").toLowerCase();
var ref=String(document.referrer||"").toLowerCase();
if(href.indexOf("/config")>=0||href.indexOf("/admin")>=0||href.indexOf("/pages/")>=0)return true;
if(ref.indexOf("squarespace.com/config")>=0||ref.indexOf("squarespace.com/pages")>=0)return true;
try{
if(window.top!==window.self&&ref.indexOf("squarespace.com")>=0)return true;
}catch(e){
return true;
}
return false;
}
if(dfmIsSquarespaceAdminOrEditor_()){
document.documentElement.classList.remove("dfm-final-pending","dfm-final-live");
document.documentElement.setAttribute("data-dfm-admin-safe-skip",DFM_NO_HANG_VERSION);
return;
}
if(document.documentElement.getAttribute("data-dfm-final-running"))return;
document.documentElement.setAttribute("data-dfm-final-running",DFM_NO_HANG_VERSION);
var MARKER="DFM_FINAL_REPAIR_V21";
var BIKE_STATUS_CACHE_KEY="dfmPortalBikesCacheV19";
var BIKE_STATUS_CACHE_MS=1800000;
var initialPath=(location.pathname.replace(/\/$/,"")||"/").toLowerCase();
var managedPath=(initialPath==="/"||initialPath==="/home"||initialPath==="/book"||initialPath==="/faq"||initialPath==="/about"||initialPath==="/contact"||initialPath==="/privacy"||initialPath==="/terms"||initialPath==="/terms-and-conditions"||initialPath==="/refund-cancellation-policy"||initialPath==="/shipping-delivery-collection-policy"||initialPath.indexOf("/shop")===0||initialPath.indexOf("/services-store")===0);
if(managedPath)document.documentElement.classList.add("dfm-final-pending");
function forcePolicyFooterAndFaqCleanup(){
try{
var policyHtml='<div><h3>Policies</h3><div class="dfm-foot-links"><a href="/terms-and-conditions">Terms and Conditions</a><a href="/refund-cancellation-policy">Refund and Cancellation</a><a href="/shipping-delivery-collection-policy">Shipping, Delivery and Collection</a></div></div>';
var removedFaq=["How is insurance"," excess calculated?"].join("");
Array.prototype.slice.call(document.querySelectorAll("summary,h2,h3,h4,a,span,div")).forEach(function(el){
if((el.textContent||"").trim()===removedFaq){
var box=el.closest("details,.dfm-card,li,section,div");
if(box)box.remove();else el.remove();
}
});
var foot=document.querySelector(".dfm-foot-grid");
if(foot&&!foot.innerHTML.includes("/terms-and-conditions"))foot.insertAdjacentHTML("beforeend",policyHtml);
}catch(e){}
}
var PAYNOW_QR_FILE="https://drive.google.com/file/d/1yHeOHGThzIB3D6Fc3MElVsLFy_mTmIUh/view?usp=sharing";
var PAYNOW_QR_IMG="https://drive.google.com/thumbnail?id=1yHeOHGThzIB3D6Fc3MElVsLFy_mTmIUh&sz=w900";
var PHONE="+65 8853 3518";
var WA_BASE="https://wa.me/6588533518";
var HERO_STOCK="https://images.unsplash.com/photo-1609630875171-b1321377ee65?auto=format&fit=crop&w=1800&q=80";
var bikes=[
["Yoshi 5649","FBN5649Z","Honda CB400 Spec 3","CB400 Spec 3","Class 2A","45","220","https://www.carousell.sg/p/honda-cb400-super-4-spec-3-rental-%F0%9F%94%A5-young-riders-welcome-grab-foodpanda-1442820621/","https://media.karousell.com/media/photos/products/2026/6/9/honda_cb400_super_4_spec_3_ren_1780996874_46880f50.jpg"],
["Yoshi 4749","FY4749U","Honda CB400 Spec 3","CB400 Spec 3","Class 2A","45","220","https://carousell.app.link/tcHmIiD9v5b","https://media.karousell.com/media/photos/products/2026/8/11/honda_cb400_super_4_spec_3_ren_1786454669_dfc2ab19.jpg"],
["Yoshi 6958","FBA6958T","Honda CB400 Spec 3","CB400 Spec 3","Class 2A","45","220","https://www.carousell.sg/p/honda-cb400-super-4-spec-3-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1414712427/","https://media.karousell.com/media/photos/products/2026/5/15/honda_cb400_super_4_spec_3_ren_1778867024_1b7f33c2.jpg"],
["Revo 1 ABS Moriwaki","FBC6480T","Revo 1 ABS Moriwaki","CB400 Revo","Class 2A","52","260","https://www.carousell.sg/p/honda-cb400-super-4-revo-rental-moriwaki-exhaust-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1444128731/","https://media.karousell.com/media/photos/products/2026/6/16/honda_cb400_super_4_revo_renta_1781577651_130da38a.jpg"],
["Yoshi 4528","FBA4528P","Honda CB400 Spec 3","CB400 Spec 3","Class 2A","45","220","https://www.carousell.sg/p/honda-cb400-super-4-spec-3-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1436410401/","https://media.karousell.com/media/photos/products/2026/5/15/honda_cb400_super_4_spec_3_ren_1778867221_01620a7b.jpg"],
["Blueflame 7166","FBA7166E","Honda CB400 Spec 3","CB400 Spec 3","Class 2A","45","220","https://www.carousell.sg/p/honda-cb400-super-4-spec-3-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1441390311/","https://media.karousell.com/media/photos/products/2026/6/2/honda_cb400_super_4_spec_3_ren_1780365174_19ad3e72.jpg"],
["Yoshi 6446","FBA6446D","Honda CB400 Spec 3","CB400 Spec 3","Class 2A","45","220","https://www.carousell.sg/p/honda-cb400-super-4-spec-3-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1446888593/","https://media.karousell.com/media/photos/products/2026/6/30/honda_cb400_super_4_spec_3_ren_1782837335_91aa195f.jpg"],
["Yoshi 9763","FBJ9763X","Honda CB400 Spec 3","CB400 Spec 3","Class 2A","45","220","https://www.carousell.sg/p/honda-cb400-super-4-spec-3-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1438130679/","https://media.karousell.com/media/photos/products/2026/5/16/honda_cb400_super_4_spec_3_ren_1778900677_31b61928.jpg"],
["Blueflame 99","AL99R","Honda CB400 Spec 3","CB400 Spec 3","Class 2A","45","220","https://www.carousell.sg/p/honda-cb400-super-4-spec-3-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1438006583/","https://media.karousell.com/media/photos/products/2026/5/15/honda_cb400_super_4_spec_3_ren_1778866145_c02df8b8.jpg"],
["Blueflame 3226","FY3226T","Honda CB400 Spec 3","CB400 Spec 3","Class 2A","45","220","https://www.carousell.sg/p/honda-cb400-super-4-spec-3-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1437773536/","https://media.karousell.com/media/photos/products/2026/5/15/honda_cb400_super_4_spec_3_ren_1778866402_64b78f35.jpg"],
["Revo 2","FBK4684T","Honda CB400 Revo 2","CB400 Revo","Class 2A","55","280","https://www.carousell.sg/p/honda-cb400-super-4-revo-2-rental%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1432960059/","https://media.karousell.com/media/photos/products/2026/5/15/honda_cb400_super_4_revo_2_ren_1778866732_8bc52098.jpg"],
["Revo 1 R77","FBH2731U","Honda CB400 Revo 1","CB400 Revo","Class 2A","50","250","https://www.carousell.sg/p/honda-cb400-super-4-revo-1-rental-r77-exhaust-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1426245839/","https://media.karousell.com/media/photos/products/2026/5/15/honda_cb400_super_4_revo_renta_1778867459_57974b80.jpg"],
["CB400X","FBU171E","Honda CB400X","Touring","Class 2A","45","220","https://www.carousell.sg/p/honda-400x-rental-%F0%9F%94%A5-touring-ready-p-plate-welcome-1438865161/","https://media.karousell.com/media/photos/products/2026/5/19/honda_400x_rental__touring_rea_1779211215_e77f3e17.jpg"],
["Yamaha Jupiter","FBH9164K","Yamaha Jupiter","Commuter","Class 2B","25","140","https://www.carousell.sg/p/yamaha-jupiter-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1442934684/","https://media.karousell.com/media/photos/products/2026/6/10/yamaha_jupiter_rental__pplate__1781055322_da8f9277.jpg"],
["Yamaha Jupiter","FBH9994G","Yamaha Jupiter","Commuter","Class 2B","25","140","https://www.carousell.sg/p/yamaha-jupiter-rental-1414701242/","https://media.karousell.com/media/photos/products/2026/6/10/yamaha_jupiter_rental_1781056418_42353466.jpg"],
["YS-125 2108","FBR2108S","Yamaha YS-125","Commuter","Class 2B","25","100","","data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAjCgAwAEAAAAAQAAAaQAAAAA/8AAEQgBpAIwAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMABwcHBwcHDAcHDBEMDAwRFxEREREXHhcXFxcXHiQeHh4eHh4kJCQkJCQkJCsrKysrKzIyMjIyODg4ODg4ODg4OP/bAEMBCQkJDg0OGQ0NGTsoISg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//dAAQAI//aAAwDAQACEQMRAD8A7scUuKdinV61zzrCAU8CgCnYpXGJRinUYpAMIpNtSYoxTuFhm2jbUlFFwsNAp2KXFQ3FwtuvPLHhVHUmlcLErOkal3OAO5qn9tMh/wBGiaT36CiO0eZhNeHJ7J/CK0QoAwKLjsUAuoSckrEPbk1TvtEh1GMR3crtg564rfFIRU+o7GXp+kWGmgi1jCk9T1JrVoApSKAIjTcVIRTaYhhFKOKWlxTuKw9HIq/HcbRis2ng4qJRTLjJo3UulPFR3ASQdayQ5FP3k1l7OzujT2lxkigN8tRGpSajNbIyY3FKBS04U2ItQRqT81TzRoi8VUR9tPeXeMVk07mqasVSKULmpAuasRpzntVORKiQpEx6U4RtnFa8Qj7Uskat0rL2mpp7MoJEV+ar6SjGKhYhBg1EhGc0nqNaF7rUm0YqBWAFTId1Zs0Q0pgZqmVdnrQNMIxyKFITRGFwMU/5WG3vUJ3l+OlWUjGdxoYIprZ4fe3Sr+xSvSpcAmlOBScmylFIiCgUuKMikJqRjSBTdgNOzSFsVQiFrZGOTUD20ag8VO0oWqr3AqlzEuxReMK2FoB28mpQ+WzikcZ6VtfoZWIg7HpSv86YNM6U3JqrE3KzIRUZFWX5qIitEyGiHFGKkIpMU7k2GYpcU/FGKLhYbingUmKcBSbHYXFKBSilxUlWHKanVQagGKduNS0UmSugUVXb0pxcmmGhIGz/0PQttLitOPT5HXd0qOayeIZ616PtI7HH7N7lICnYpQKXFO5NhuKXFOxS4ouFhuKTFPxRincLDMUuKsRwGQcUx4mQ4NLmQ+V7kEjrEhkfoBmqlpC8jfa5x8zfdHoKLr9/PHajp95voK0sYoJG4paWigYU6kpwpDCqv2pQ5RhjFc34h1K6s51ihbaCM1kWWqzXsqCRsnOKzqT5di4RvudlJeKM7WHFSpPuUHrn0rlVACXHmgt83QU+S7e1sPPjBAU9DXP7WRt7OJ14IxmkDKehrjIdTkuHUl+vYVd0877vLuevHNbRr3aTMpUtLo6jFFPxSEVvcyEFOFNAp9ACGkp+KQigBlKKXFGKACnU2nUgHA4qQOcYqKlpNFXLSSlamE5qiDS5qXFFKTLLNk81LHg8VSyaswkCpktBp6lpqasoU4qOSQEcVVBJOTUqOmpTlZ6Gssop/mbjiskyMOKnjkJPJpOA1M0wo608cc1R88H5QaGucDFRysvmRcMgzUbzCs9ps1EZDTUBOZoiXml80E8VmeYakWUCnyC5jR3Z6VIE3CqKyiraTgCoaaKTI5LUvVaSzwOOtaayg0jOppqTQOKMR4mjqIlgM1enKg5qgxLVtF33MZKxESabmnkU3FaEDTTdtS7RUiqByaLhYQxJ5eaq4rQYqyYqoRSixyRHijFOxS4qrk2EWMucCpxbNmiIkHitBTxzWcpNGkYpmd5RDYpjDBxWi6AjI4qnjmiMrg42IKKl2E9qayFetVcmxFRmlNJimI//0fcFZcYpCgcYPSqaSYq2kqkVq00TcqmyhBqjNasr4QZFbYweaOO9UqjRLppnOMrKcEUgFbEluHbdSm3j24xzWvtUZ+zZj4pyrk1M8RQ0eWQM1fMRyj0yh4qSX5hyKYr4qwHUjms3vc0W1jnrZN9zPMfXaPwq/inWEcbxO3q7VK6BTgValchxK+KMVJikxVXIsNFOFLilouOx554xDCeJgOMGuT0bzFvl4OAetdz4yX9xE2O9cLp8n+moCT16DpXPWVzWmdjFIC9zuzgc8VX1JxJospTP49amQYkufm2nHX0qvPzok2X38dawNzH0ptoj6c10GltJ/aOJGHsPWua0gb1jOK6mxgEl2nGNpz7imviRL2O7xSYqTFJiu65y2GUtLilxRcLCYpKfijFFwsR4oxUmKMUXFYZiinYpcUXHYZS07FGKVwsApaXFLii47CU4EikopAKWzSA46UlGKAFLE03dilxSEUAAYik3GjFGKYBuNPU0zFKBSAdmkzRijFAD1YipA5qClBpNDuXlkwOtMMxqtmjNTyormJS2etRkjtTaKqxNxpFIKcaBimA2jk0UA4piJI4yx56VY+zoOagEhFOMjGody1Yc0SjpURRRSliajIJoVwdhy4BzTxJzUYU0YIpiuTl80DHpUaqT0qcDjBFQylqKMdajkjL8ipMYp2am5Vir5FIYPSrmRS8U+di5Uf/S9TD1MkmO9cVpni/R9QAUyeU5/hbiuqjljdd0bBh6g12yhbc5ozT2NJZj0zUyy1l+YPUU7zVH8QqOQtTNfzRTdwJrK+0xjq4pftkI6uPzpcg+c03CkVWLADFVDe2/eQVEb61HJkFNRE5Fg9aUHiqR1GzH8dMOp2Y/iqzMXTHPlyD0kar5JPWub0zUYAZwSceYSK0jqlv1AJpDNDFJisw6vABna1NOrJ0EbVVxGrijFZR1U/8API1Guru2dsXSgRkeMV/0JD7153YsEuo/mxlhx613niG7e9tFjdNoz1rhIYxFMJIzjbzzWVQ0gdmuTczrxyvfpUU6kaROpA6H7vSqS3pkuH+UHclJ58otXtwoVHBrCxtcytG/1EZXjmuw00Yulwdxz+NcjYqsMKsg/ixW5aXEq3OQcEHrTtqK+h6h5ZppSudkvrxE3mSq7ajIVz5/NdNznOq2U4pXIHUckZnPvSpdvNLsjmY8U7gdYRim8etcyBKWO52496TazMRubj3piudQSgHJFN3Rj+IfnXLLGz8sx4PrTkiBBznv3oQNnS+bF/fH503z4B1dfzrl5YlEeRnNSeQnl5xzigDoftVt/wA9BR9stR/y0FYDRIAOB1FNaIeYowKAudD9ttcffFN/tC0/vVjrGAeB2pRGPMPFILmqdRtB3J/Cmf2nbY/i/KsuNR83sakRev40DNE6lABnDflSjUosZ2NWc4/dH6Ug5jGPSkBebVEHSNqifVQo3GI4qts+T8KiuYyYvypgXTqh4xEeaRtTlQZMXt1qmUwFpZk+X8aBE7arKpC+WBn3o/tS5B/1a8nFUZFHmR59anZSCPTdQBYbULsYwq8nFQSardRuiMF+c44pZF6AetULtQksTns2aGNHYAEjmlAo3IEVicbh3pDNAOrilcdh1JUf2q2zjeKmxTuFhKSpAhIyKQrRcLEdFPxVW8uo7KAzy52j0ouInoxWGNdia7W1RCdyb8+1Vxr7NbpOkX3pNnWlcdjpcUv0oXlQfUVIFB6mi4WI8GngDvUoQetI0fvSuVYaOKULuPNJgin5wOKTGiZVA6U7FRB+OaeDUMoQgU3FOIptACUhNFJxTA//0/LSvrV+11XU7NQLadlHoTkVzsWsXGdtwgcDqehq9De2M52hije9evHFU56M8iWFqw1id3Z+MZY8JfIW/wBpTXT2Ot6feq2yXDehNeWeQxwUIb6VAYiCTghhVOjCWsWJYicdJo912q0YYc9O9HlgyqCO1eRWmu6pYHbHKWX+63NddZ+NLeRkF8hjI6sOlYyoyRvCvF6HaiJA/TtTHjBjOABTLTUbG9w9vKGyPWrpX5GGKxem5stSuIx5akAU91QEHiq888hj8qOM5x1rNWG7C8qSazlVtsaRp33JdObbcXG7purXWRNuKwNOWb7RMGHfkVs7ZABxWftGi+RdR7KGjUjsalZMFfrVZPPVdm3IJyauSOuR9a1jNW1M5Q10Apkj6VDDH9761P5y5ApsTFN3uc0+dC5WZOsJiz3Ds1cPEAS2f7vSvR72H7XbmFTg5zXOp4edCS0gGQRUSkmVGLMu2AM/T+DpU6DEY7Zz1qaGHSkn2NfRCQDaRuFXotEt5AhNxvCnOQRzWZoYMP8Ax7HA/jrVswVufm45FaK6RZopjEuATnrT106zSTzPP5+tAGrchTFh/u45rnXa1ktzNbcgHGavI2/zVjbzAAe9c5pasthKbpgqCQ/lmqbvqSlbQs79w4qxZsRfxBT1psU+iquTOv51YgvdHSZZklGV6GhS1BxOnCfM1AXEpxWQ2vWC5JlFRf8ACRaeDkS849K05/Iz5fM24lwGz61Kg4OPeubPiLT0UsZD68Cof+EoshnBb8qFPshuKW7OikGIyTUvLRdO1cxH4ktJW2KrsfpU6a/DK4ihjcmjmfYOVdzoGHyj6imyL8yn3rDvNYNnF5skRI9jVE+JocbjGazdZIfIdcuQefSsTUtbs9LlBmOd3pXO3HjKFXa3WJg2Oteb3d/LLcs7MXLE4HWsK+JcdI7jVNHc6h4xWQulqCuTlTWU3i6/jZTI2VzyB1rmIbKeRC8/yEnvVsWqxHdw3oTXBLESb+IvlR11x4ynmtjHGu3IxnvWTF4g1WPHzEp1rEkkj8wK4CnrVJr9uQgzjvT9rUlq2NRR2Y8XaiFBBHpzW1Z+MY5YhHdDBOBkV5jFdyEYlT5T3qZjErLknnpVKtUi9xcqPeYL22vIBJbsDxUgZmTEnXNeP2epy6cN0Em3PauitNW1a/TdbvuI6gCu+jXc7K+pm0kdy+4zqw+6KtPKhxjPBzXBpc+I9wEiNgHk4HSpmj8QTRny2ZGH05rXmY7I7Vp04xng5qnORNLE3OEbJrhjY+JyctK/6VPaaXr0k6i5mdU7nNNuXcSt2PRdSu4JmDQtnanT0rl9O1CS+MgcAbDgYqlp32mGW6t7k7igJBPXFQ+HGLeeT/eqd02N7o6mP76/UV6AkSbQfauAj++v1ruVc7R9KUblFjheBVeRQxyKdvo3VS0B2ZH5VYfiBP8AiWyA10QasHxI2NLcqMninzMVkcpbxk6lCR/z7kU21j22KA8/vj/OpLUzNqUOMAeQaIlkFghJGfOP86Lisd4gARfoKOtOQHYv0FKR6U7gMyRS5NRh42YqrAkdRT+aBAWozTthxSbadx2DNOD0zFZ32iYyBcADOKQGmXpu81k3eoLbMFxuJrNfULmSQDIVc9BRoFzqd1IWrnJLqZUO1jmp7e4JiXzH5NFwP//U8gmsJyCcBgKz5Y5oOI49g9a7q21GyvkZWh2N2KngmoGmVsrKmeabQkzlQsxCyRllb+dSx6rcwuVmxIPQjmvTbLTLK/tI9gUtg5A6iuI1rR/s920MRKnPFOLlHZiaT3K6X1vcZeRTEasBFk5iYOPasSbTb21yxO4nrVVY5I2EgzGe4rphjJx0epzTwdOWq0OmRpbdsxM0Z9jiujsfFGqWgCyHzl/2utcjFdzw8SsGB6Zp66lbbtsy7DnqOlbfWaVRWkrGCw1Wm7wdz0JPGM0pwoVT6GrsetarJ80YVh7c15rE0Mz/ALpw2R0rStLu7sj+5YqP0qvYQavAX1iadp6HftdXsfmTQcyNgkAVU/tPXXOBG35VBZa1dIhudod3ODV//hJrxW2tEvNcvI0nodfOm1qM+2a6w4VvyqgZvFU2cErg+lXp/Et7HE8qovyjOKqQeJtUniEmFXNTCLb0Q5ySWrFS28TO4LynHfFXRBrcLZIeUemcUlpqmq3Lsu4DAz0qB9Y1foH6egq1B3asQ5qydx72uuyuditED0+aua1DUrhEe3llZyeCQx/pUl/4k1OBnhkkyGXG3oea4K5u5XY/w+1YzbWhtBJq4+QgMSDtH1/xpsOrXFmwMMrL/un+nSstjnk81CTnioNDv7DXJ7yQK6+Yx/iT5W/EdD+VdgkUcjHzS0eBycEj8cZxXAaIgs0+1k4K8g1YfxXrCS7o52YZ6NzxWim0RKCe56zoWnNZrMBMsyuMjHasFoZW0a+RsH5jXL2/i+bdm5jGT/EnFb0XiSxu4Wt3YbZPvbuD+dArbHDx2ctvbCS3UNL6HmvStF0e2uNKje7dUc8nGBXOnRtw8ywuyc8hHx+jDg/iBW7aaPNNp6AAmVT8wJpxvfcmVrbGqdB0sdZx+dMGiaMzAmcHHvVFfD9/2Tj61i3ekzaXKWmOA/OPetJ3t8VzOmlf4bHWf2PoS4BlHHvTfsfh6PrKPzri0QyTosZ5PFaetaVc2GlXF+Nv7uMtUwt1dip30tG5cfWPC9jcGKLdLIvXYOB7EnApYNc0UPvWBlPruFeGxTMhznmtiDUSMBqjnb3NORLod3qNjqN1uu7P5rcHJCtlh9RXL/2oyzCI884rX0rVTG2UbrwapeIDhf7QhUbs7Xx6noa46uGT95FXLj3azwOiqN4FYVnDKLvzZ8gqOKyoJ5WO9XGT1rR/tBVAjQ9a5HGSXKBdnup5gQPur371S81roqigjHXmoLu82BY4jk9zWeZrmLoQM9acKegzfu7i3WP5DyOD9KyvtcCtheVx0PrVTek0fI68ZqskMaNufJA61rCmktQNRJ5mfgjb79Ku2U/mExy444FU5LmIQFFXI/rTbGSOV9znnpik1dN2EWWmIkMZ+ZkPFdboGoTadIZQwAboDXn8+yOZmiPKn861NOkkup0jcnaDzTUGmnEGesDxNfGUKNrA56U9fEd64wAAduenesGQWcUojszkhf1p8EiCVXkGUHJx6V6K80Z9NzW/tzUz95x+VMOsakzYEuPwrXGraKF4hJP0pP7Z0jtAc/St7r+Uxs/5ypZC7+13TXB3Hyhz+FN8MKMTnGPmrD1XxC0F/I9mvysm0qaw9O8Q3trkRgYY5Oa4/bJXVjdp3TPZEGJF+tdqoO0fSvONMvor6GOdXB5G4+9ekowKAjngVrB9hsf5RxmmYxTy5xTMmqDQcMVheJCq6VIx7Vt5rC8TMBo8pPQYoAwLMr/aMC562+aqS3sVtpHmnkpKciuN1vxBDGI5LZijiMJx1rkotSkmjImkyGPAz/OuOpibXUUCR6ZrHj+LyEGmlvMQjPHBq9P4vuBocs8m0TFfkIPc15BA4ikaWYjjt2qxE8bSG4tySQpwD0NZxxDe47HV+HfE09ncvd3rM7OPu+telx+LtNLbZGC/LuP+FfPglMyFmVlkPHHpUkAZJ9zP8vZc1EK8orcGj6gsrxL23FxFna3TNWScDNcb4U1db21FvEgVIhjOetbesapb6XaGaZh1Ax35r0YTTipEmjNKsUZlY4ArzoeJXOr/AGY7BCrEbs816Gjw3dqHGHR1zXj9ppdm3iJgI8Dc5z2qwLtzf3tzO0kTgR7jg0Ri7dtxlP54qvJ+7fZu2ISeaIRbkkLKze56UgLjxXLYzMfzqOS3Yk/v8cf3qo3M+nwDM0o496yZde09W226GVh0xyTSA//V8vg1Lw8ZI5F8y3K846g1q2ms2ZlPmbZEPT1rzWQwzSDYSPrVyPS5JeYH59Ke4bHtGh3Wn/2ijWgIZgRg10V1Db3TZvbcE+uOa8At21rS51nhLBk6d66q2+Ieu2/y3cayj3GDVxkluTJX2PQbrw9p1wuA7IW6d6o33htXtxHb7HK49qybf4j6ZPhb23aM+orftte8P3/zQ3QQns3FVaLJ95Fe+8KQvZAhMEJzj1rzWXTmi+RhnHr1r3OFg4HkzpIvsRVK7sbWdiJYlx64rGraNjSmnI8LeKaFsouB+taVhJcEhdx2+/NejXHhvTblQ0EmPoc81WtdCFvbyRqVkbdlTVR5kuaJMrbMl02GCFA1w+VBDEAfpWnqV7pU0Gy2TbJnrinQ6YqTCCSTAdcn2q0NE04klrgY+tbXTWrMbNNWRyokQDMgyo6/Sulg1XSViXZDkY9Km/snRujTcfWkFjoEagCXge9TG3UqfN0HLrlkDthtzn2FR/23aqc/Z+ao6lJptlAZtPkHnDpmuaLXsh35GTV2jfqQ+e3Q57xRcC41aWXgbguF6Y46Zrm2d0wrjI9D/Q1d1WRnvJS5yQcH8OKxi7Lwp49O1c8t9DojsrkreWT3Q+h6fnRFE/mAkfL6jkfnVczDGCOPTqKv6fcwxSDEhiPqeV/z+FCGbks+21WJaxlP7zJ7V0U91bSRBJrZZB/z2tm5/Ecj9BWcbKBziGbYx/hmG0+3IyKYirvHSnb1IxSyWV1CN7Rkr/eX5h+YzVMk9aANOC6u7dswSEe2a6S08UXdsQ045H8S8GuMjmIOKkeQk9cgUJhY9ettfvtQhNxaSMYxweOh9DXL6xq11cyBNxYqe9UdN1w2ehvYQrtZpCxf64H9KoCTK7ics5wKyrVr+4kZqFne5pWs80biWU4C88dak1HXZ7y3mtt7CJ1KkH0NYU06ouMkf1qGGZFBd+c9q541ZpaFuJzckcsP+sU47HsaYJgveumkuIjwucGqcr2zHYiDcfYVpGs+qKM6DUTA+4V0dpdf2pA9mJMO/Kqf4iOcVkLaXO7aVHqMVWktbiKTzcFWBzkcGtFVT0YiNw2TGqsrA4IPBFNEExcMuc9sVuR3S6nEyhVW8C4yeBJj/wBm/nUNrbXflEqmG7g9c/Ss5txEUEhfkyHFTQQIWMmc/Wt2PS4SVa6Y5POO1S29pY7yqHLDuelc8q6GcvNuIEiAcdQKiWRpfv8AArU1SFlb90MBepHSqixKYxzk961jJONxDSqeRnOTUEUqp+8AwB2pZo2VgmODQ1sgj561StbUC7p1umoT+WX2bjxmvVNJ8IRWkvmvcptIHFeWWjmMgLjKniumi/te4Ae2kGPSqhNKVhNJ7npreH9MaXzftQBxinjRdPT/AJeeP6V5tImrWPlT30y7JX2BRwc/4V1Go3C20xhH3CBgjiurmb1FyxSsbkmm6LAGla4OAK4DVNQgP72wcjYeQa61PDcWraLLqUd9t2ZDRvgHIrzq/tbOGKO1Dt5snU44FRUnUelyfZxT0RQ86e9na434JqREbBM5z6Yqmym2ygPK8VCl0xIjOR71zONyzq4b+7S3S1tWIjU8496+gfDdzLJp8a3RG4KAB+FfO2lKLeQmcZyMgHuK9m8I6taTCUuNipgDd/StaOjEz0jgUmaarK6hlPB6UuV6ZH510gGK5zxYAdDmzxxWnd6hHabRjeWPY9K5/wAW3CzaLIkTgEgd6U9mB81as1wZiz8belO0iCdh55wFPc+1MuCZ7l4Zn+Ve9TM7xwjyXDKPwrzW3y8pRqySWzsdwPHHtVOGVfPVYH4HUGuee8yx80HI4GK39E0qWe0k1J2GyJ9pB681VOg0DIpL6ZZMuo2n0pyurPm4OAegHcVnCG5ikYqrOmeMVPHp13LIGJCgcgN1oVPmd0B2dr4wnsbMW9nGEUHGe9M1DWLrVSLiVufTPFYK2MasHdiQePQVch8mIHZghew5rT2VR7sSsdho3iC/sozEC8oxgKelWrTW7OwuPtd2ecHK9etcAkeovOS8oCDjAPY1YjsEQF5SX+vFdMItdQbTNO98RxSbjaRl8HOW96q2I17XZGgsY2zjjbwB9SeK1NG0SCaUO/7uLuFG529h/jXqNu0sEAttNthBGP755PuQKvVgcjpvw6hA8zXroyMeTFEf5t/hXZQW+iaCmLKGK3/2mwWP4nmmG1u5h/pNwQD/AAx/KPz602PT7GI7wm5vU8n8zRYLn//W8EFlCemTWrbQNblWDcHsTXX3fg288gm1ADY/vVjxeCdbch3K8f7X/wBapszS6J7bV4wvlT4ariQWl+CyKDVODwNqj/vXkjVD6tV+HwsbKRDcXyKDxxVK5LcSjcaHEqlzGKzX0seV5agBG7V2MNvpkWVub9X/AAqkb/SbfMZcNtbg+ooaQJnJxW15ZMHtnk49GIrTj8Sa7ApjwWUnkMc1dn17TUjKwpuPqaWPU9JuozmEkjGfTJpNIE2WrTxY6OPOt1298Gt628W+H3fYXMLnqG6VhW+lWl2rAWpf+7tanz+GRHbbTprbyMiQHOKuMpImSTO1imjlulkDgqy8E+lYet3Ytbzy0KYK5xms28tpJLPyo8q5QKPauBvrHWbbDTBmCjG7k04zbRMoJM78Xcbod6leOqnIrTs47O4QRmZUI9RXj0V7qMbBUBPsK6JtUubaFDcplm6D0qlUcGJ0edX6I9E1XQwLBrmOVX24PFZMd8NgG37tUdH1e0uSba6cxKepJ4reNnCDm1dZ1x681UazvdszlRjayR5XfybryZvVz/OsxjXY6vos5me5hjO1jkr6H2rlJYHQkHgjsaxe5stikTVmIDbzVdlIOCMVaXCrSGNClG3wsUYd1OKmS9ux8smJBwcHjp71GDk07p0pgWor9Y33IZLc/wCycj+laAvvPH71Yrr3HyP+mP61icdxTDHG3ai4G6qafO20M9s3o43D8xg/pTX0+5ClosSr6xkH9Ov6ViLPcwthHJA6A81Y84yyKqIVkPAKHHNFwNiQ+XaLEVwcfN65qdVjjghmY5GKqSbsbbh2cnuepqzcSKmmxLsGORXGtb2JKN3OqSrIBkfpUcsolwQNtVXu4zEExyKr+ezAEVSi7Aavyv8AKT0Hakt4gsnmbScd/Ss9Z2jIJ71rWU4Y4A3E9fQVEk4oDTjkA3OzcgVTlneTORkZ/SrjGFDsdcs3YVUknFupQJgdM1itXsMf/ZEEq+YWK8dutaS3D2222lbfu4SU9fZW/ofzrES5M0ZB+6D2NRXsyFFK9RgdauKk3yy1QG5BdR3L+XPwV61nzxJHKX8zAzgAVHD5v2iRY4t+Dkkc9eetBt7h5Hkkhk2AEkbTwBS9k1J2AuxzxspilG7I/Os++EZU+QpGOuKgW7t1cGME49auXU5eESqQPWhRcWgMTLyRFW4PbPWhZBGo3KTmpJZGdxIeQOOKhZww3ckV0JCLSneqgHBNdLp2qX2mN/ooVif7wzXKDKuARwRwa6mxm0212vdBnl/gUcBj2yaSi7qwEupXGs+IZY/7T2W8Ntli+MAZx27njisqfXZZHAJyEG0E9wK7ey1zwxOuL5JriUA5UL8q+uB3+prF1mw8OsTJZ280BIDKD93FdmyAuaKdSvrUyQ2rywF9rMvQVV8UjTpdQ32StH5KgMDxyKrWuuXtmUtNOd4YhwQDx9ay9Ya4e7kO7zCeS3rWcpXQWKj+TPL5xJAIOR79qvWdnG8Yk+XINZAcGA+dwaUP5Sg7yAe1QDR7H4U0eKaFru8QMWOFB5AFdcLciF0WNUI4XbXiNl4iu4baO1gYqEbPBr0vQ/En2q2Y3ZAkH3QO9XCS2EagtdSC5kndQP8Aa6Viw6lGbqSCad9wON244qrrHih1ja2XALjHTpXmstwyOZd/XtUVKtnaI9T2SyntY7ra8wcuvByTXFeI5LglhbEkZNcvaak/mKWPTkV1RvbW5jbYMHGc/wA6Sqcy5ZaAeY3QeNW3/eJ5NS2KTXmIlGAgqzdFJbhnVSUX+dO026jgMjTR5DjAAqY2ejBlxdDWRjJM4HoFrbtZ4bC1Ono2Y3bLdyTXN3Oql+IowuOg61VW7uHA3MfUgcVvFxWwrM6reI4S4IAzxuOOKyZ9VtQ27zecciMZ/WueJkclF+bPc81JFZgHJ61XMPlJ5NVUgJHEW5yC5zUb316/yg7VPpxVyGyLnCrV9dPRR89XGnKRMpxiZ0WpXsMQihAyO/eun8N6Dq2v3AlvJWS3U89s1Noujf2ldCGMYjXl39B/jXsUBs7CFLSBAFUYAJAzVygo6ERk3qT29va2MQht1CgfmalMkrfdU/yrPv8AW7DTAv2t9hcZCgZNc7P42s1H7iGR/QtwKXoUdjiQ/eYL+tN2J/EzN+leaXHjXUWJEEMaD1OSawLrxNq0/Et0UHouFp2FzH//1/LF8QalJGWDKfYtVFfFOqyfuvNWLHc11Vxp3hYoRbQtuPc1ais/CYjAktCWxyaRRxTazqTLsW8XH5VUeS+l5kuUb6tXoj23hUL+7scmqa2+hCTd9jXA7EUnZBqcbC0kSsGZCWB+Yc4rMis55o/OMqYz0J5r0/Ojfdhs1Bz1oCaUo2myQ89cUluN3OA+yoQCoFOk/c27bM7q9QW9sQNqWKce1MN1bBy62kefTFKxV/I87068vOR5rpj0OKuHW9Sjn2SXMvlDqc130d0rFm+yRjP+zUw1S0jQRT2Mbgewp9RX02OU0/UZbtS6yfd6Fv61qLdXd1OtmjIXZtoZCCp+oq68+lXYMEViIVP3tvGR6VkvYWltI02m2U0ciAOhB4Hv1qnsStzrL7QbXT9LkunVWn43OBivML1oJn2sOh4r1LVr2abw2zzgo5ABB45ryJQ8soUIzAsMlRnA9aSk+a52JL6vKBDNZRyDCt161AltdwNutZ2Q+ma7K503w+u0Lf4Y9Qwxg/lVOPSLeZykF2hA7k1bdzgSsZMeta5bIY5W81T2YU+9kuNSgS4jgCup5IHDD0roo/D9xhts0UoUZwDzT7GSS3Q7V/d55z0pXXUq3Y86kZD8sgKMPyqkZ8fKea9A13T7a8he7tnSJk6q3Ab/AOvXn6oDJsIGfrxR6C9SWOVG+6D+AzTvMRuhpiyzR58rC8dj6/SozcFziVA1MCzTiKrK8DfdLJ+o/WpGLLg5Dj8j+VAEhOK0dKs5p3a5iGdvA/rWYgeZhFGpLHjGK76J00uwEUABZRz7+prCvV5VZbsDEuba5jY71JPXIqCdN2mxnJ4c9a2YdTe4jLv8q1LfwLPYh7fB2HccVywqOOkhWOFEBdzkdKBmPgjHpVmSSVMlBipk27FecAsa6OZ9RGXnefmNXbObZN5TNgYokiikyU4psPmofKhj8wnsoyf8apWkrDLrXIaZGGSAeTTblZ3yoDFSc4IroLTw54pmi3+UtrGeQ1w6xfjhiD+lPn0eOIbL/XLVXP8ADH5kn6hcU1RSA5+3VwvKZ4yQeg5I/pTLmeERmHy8uxByO31rorPw1pmRLda5bpF32KxbGfQ4rH1GDQrWWRLS6a4w2VkAIyPcdBWqirAYzPJnY6sjKAGz396tWbFZQGON3H50wyvcSMM72YH6nj1qLTJYLa9We9DFU6qpwx+hpgbPkwW8gXOdw5q1cND9kYLjgcVBqFqzTRTQ8wSDcrZz16g+4qrJshJjZs54rgdN81m9QKEAkZST0NWIbdVbE3A7VJDbzOGTIAxkE0qjJAkJO2uhRk9hGhJLaWyJuAZW9at3LW81ioslCuW3F2PRR7Y454zVLcJANwBA9a7XSLW2udKaUIpliOzoM46j9K3hSstRcxS0CxtryVnm2wTEsm1iQCM9fxrrdb15dN0waIYIZfNXAkHJArNSKG4iKzIue+AAee/FYmpWdzje9nI8KcedDgn8QM4/EVc4tLQSdzE1e6+2TBowsYwAdowOKyGuCF2K3C96neK1mfZFdEH+7IuD+Y/wrPYW0Lcsc/pWD8yyGS6V/l25qyyh4clc4qg6LksvQ1JHcNCPmOQe1JrsBIs0YX5RtIre0y9ms0M0L7mYdu1c86hkLxjhulWbVmAjhY4LMBxUzXRAamoXMl64aRjv7msl5FXB2Hjj616CumaRCu2U7iOuea07zTrG30Y30EStggDI9T1NXHDy6kOaPNbTyy+GJ56D0q7B8vmBXyxH5V1Wk28l5MWMUaQr1bHJ9hXdNoNmpDQQryOSaqeFa3Yo1ObY8Qjt5RncCd3UVKtkSuAhr2htMRCFKIMj0qZdOjAB2J+VEaFtWVzHh8tp9nXzJUIH0qgUeY4AwvpXr3iq1hi0wnABJ5xXmAkUv5SDB9TTklEpSuT6fpE95J5VuoJAzz6V1dr4TkGGnYA+3Nc/4f1RdJv5bq5LOu0qAK2rz4hRqD5FsTj+8cVrGy1IeuhvxeG40OHJI/KtEaHp0CGRlBC8knmvMX+IOsSuEhSOME46ZNWNQ1/U/sYtrqYtJc8kDgLGPp61TqN9RciXQ3ZdXu52aLST5FuDgMowWx3+lT+HbOW51YT3MrSeQN3Jz8x6V56+pXWwRwEgeg9K9W8GRSDS/tM4w8rE/gOBSuCTuc/4yvlGtGEn/Voo/PmuLutTZm2o+AOOBWn4qSWTxBdyjJUNgfgBXHvBcZyc80mx21LT3jn+NjVVpi3JpsdpcSZ4PFKbOUfeOPrU3Ksf/9Dm4rMuQEStGLTPlzIADWjYx5lI9K1/KzxQkO55X4khvIJ1isGKnHNco1nrrcl+T716V4kTZfKQD93rWQiMVzik2NIo+F7S5S8ZL9t28YXvzXoi6bGO1ctpqFdQhJ/vCvSvLApx1EznzYIozigWS9xXRCIGgQDFPlC5n21irZGO1Z95Y28TZlYLn14rpUZYD6k8AVxHj6M/Y4n6MG5osK5mXb2u9Y43BIbHFYcV9qltKQrk5XA57Cm6XhrZHfr5lWZYALpT23EfnUtaDuWLjVdUvLY21wMqw79qo6NJqGn3LPbHYSME4zWykYkRdoyelSpHsOM4NZtSvoaqq1FxLeqwWciLFrbg+cu75VAPPvXNrp3htAYLdXfcemetT+NInfTLOZtxPKgnvXC+HY5RrMBPKh8GrVzJ+Z6NYWem2LmSG3kDEEcntWvBLZwxGIWrEHnk1vm1QnpTvsielLUeh534nt1utMLWtuY/LYO3uorLXSNJv9EfU9PTy5beMllDE/MPUH19a9bNvbqmJQCCOQfSvGNUkOj3l1baaSLO5BjOe3t+B6U12DzCHRdHuNNW9u70xTOWxEsYcjHQ9RgGufm09IyGtplnzwR0I/A9fwNRt9oEXlBSWPT0P0NQxvyVcEEdRVkmjcLZIUSe2a2b+IrkA/RXyPyau28K6TosgkllZLtiMLG64KjucHOSfauGguZYfuPx/dPK/keK6C00+01FPPs2Ftdpyuw7VJHqO34flRYLno01jY2Ns862UaRJyQvFeb3rRS3BEOdkn3fau0udbu/sEenarCUeVdvmfwkj3HHPauKvFNmR5a7vc9BWFaCQLUhaJYQI9wA6GrliXjmW3iy6vx+dYKyeY5dwQO9dHpFnJNPG6ZGTgH+tYezvowG65oMmnWn2kAli2W9ga4pTIX3E8V9C6xYXN1YiIr5rbMNjvivB7zTr21JjeF054yK6YwtoaVOXRxKBlKuea6WTxfeiKO303FoiIEJjADN7lgM1yfl4Xcw5zSCLJAUE57Dk1fLYzLclzNO5klkZ29WOapu7s2WNdZpnhW8vIvPnlitYTwWdwT78DP64rZfwzo0aeXYyfb5vTzVjz9Bgn9atQbJckjz2OQxZ75q35aMnmEdq6NDounTGLVdLkDehkJx74IGfzq6lr4U1F8WTm3J/hdmGD+O4frUuHYdzlmAKfKAT6rTR5TKRMcN1Df41u33h2e1P+hypI3oGGfz6VgSxTK5FxGUYdiMf/rrPksBPBcXViHjlhEkcnVW9OuVPbHqKiuo4Qont5fNVjhVP3wT6j+tTwX32PNtNloz90+me30pIkhS7iuolChXU4B4IzW1guNhg1MR+X5MgXtkEVcS0uNwDLtHGSSOP1q/MCsjIf4SRUVVYhyJ4bVVfEsqAA4yGBrstO1LSNOtpI1lJZyDjaSOM1w9FO4jr5NVsGYskuOPQ9fyqvcXsNwFkguWhkQ8FSRnPrx61y9LTbvuJaHotqia7F9m+0Q3cqJlknjwR/uyDkVh6l4OtEUfaPNs2z94jzojn/aXDD8RUfhMt/bMUKfelyo+vX+le3tY3rR8KA3vUNItM+Y77SpNNuGilJeHPyygHay+ozTG0a42eciEoeR64r1nxet6bJknt9qxMCWPfntWTodtHqEolWbaRztPTjtipUVew3c5bRrOGS5httVURQHP3uOa7ltK8KxjKOjMvIIOcGr2s+GtO1dIxPcbPL6bcVBaeE7aGJzbzOQw5464pqImZM0emo5d5FJJyea6KL/SNLFpAMxN/EP5VyhaxQMph3OM9q7HR5mXTkMcZOew7VanfYnltuUrbTGgcOhJx0BPFb4vLyQeWsQGByc0klzPGPM8kgD1xUKXtyzMwgOGxg5FU23qwSS0ImjvCwDbiw6c05DfxsdqDp3NPM+odfIP51QvNRv7WI3M0YVV/hz1pJjaRz/ixrr+zma7I28YArzATNO+OgxgYrttU8QQ63C1nPGVCnnBrY0nwzpc9ikjw8tnqazlT5ndDTseZA4kaEcHrzVV7GWdS6jcueor2xfD+lWoyttEfc9a4HxBFePdedYQj7MgKDYOMg81bi7Cv2OW0/Sw1wzTKfLhG9z0wB/j0qaKG41WSS4Vcc4A9AOgqOW7vgGtNpQS43rjk46Vt6RoniK6i2xR+Qhx8z8cfTrUpIbbsZqWmpR4SCJjjqQM17dpsX2axhh7qig/XvWBYeF4oNsl7O8rr2U7Vz7+tdQu1VGTQwiu54N4nmn/tu8G4hfNOK59HdDuD8iu/8Y6FqP8Aa8k9rA00M+HUoM8kcg4rnk8Pa5IMLZSf980mirmI1zO/WQ1XYluSxNdgPCWvumFs2BPrtH9anj8E+INvNsoJ6lnXj9aLBc//0bVjHGJ2kjBAdQa1sVUjjEOH/urj8qsW8y3ESzLwGqgOd8RQF9j1gwoFGDXW66B5SGuSUkHFRJalJlq3iAuo3HQMK77AIrzxpvKjMnTaM12+mT/arGKfO7cvWnETL6CpNtNUHNRvOiXC25+84JH4VRJJBDmfce1ct47hzpm7+6a7O1YCcfSvHvFuq3c+oz2c8n7pCQqijYLXM/S1xYqT/frSukRJg5GRuU1naXIqWIV+pfity5VWUe6/ypMEKGWGPcvGGqVFeQ7jjB9at/2dPdgKjKgIDBnOBWo1joNvbqLnUUEoPzBBuFTZjucn4ykV9CtIt33WYZFeeaHJ9mv4uQfnBr2GfSNA1iEWcUlzOoOcomB+Zpt54M8LaKlvPPLPGX5HAOCPWhxYro6eNwyB8dRU6/NUmnwWF1GsdpO2ccB0I/WrcmmXkTbdhb3XmnZjuZssIEDkDJIri/ECi10eO1liDR3EoUkjoetekW9heFyHibHvWX4h0K9v7FrKKFiH9B0I5B/A0rFI+aZJLzSrl4Oynp2I7cGq892s0SPs2yqzbj6qen5V0viS3mjdJZo9ko+SRGHKsvWuX2CTJI5P5VRJIjhxkVraekkk4CMV9xXPKTBJg9DW9ZzeUAw75oQmd/baheRR+S7rKnQh1BzVonTbhCs8G0t3QnH5GuNivijAtyK6ezeO5TdGc+taaPRi1WxXezsLcFktfNXuQx/UVe0u6tjMi+QFA+6QeRVtEZTuFUruxKt9pgOwdWAHf2qZQtsEX3O6h1yOzO+fOzoa2obvSdQgfdGJDz1HNeaCCeaHy3y27H3uBUSamLIkpJtdeKG7agtTLk0PTzdyoFBBYkA9ua5/VtQ03Tley0lR533XlA4A7hff3qXXNTaCdorWUvNMMscY2Z9Pc/pXKOIo4sHBP86XMnsVazsRxTyopiRiFY5I7EiryMzjMRD+w4b8j/Ssx12YZfu54NSPhlEqd+o96QHSRawZohZakPtEI6BuJE91PX8DxVSexgDieCQmM91HP0I7H/IrLF0SAlyvmj16MPoev51dWKR4y9m5kAH3ejD6+tPcRaXUvs8hVJRIhb7hUjH41tR39vPGEABHdH5U/SrmheBtR8Uwi5cLaL0Msn8WOMhev5111r8HlMTvaauHdev7vC59DlqXMkPlbPJ7iyWaOQJ/ATj+lY0czRqVPbqK6C4iutH1d7K/TaQdreh9CKy9Sh8mfzUHD9RT8xeR0LN54SdR/rFVvzHP60qwTMMhGx64pNClle3Fu27ywwwVJ6t6gc4H61rX/h2ZDGs0gljlzsbqWx6d+KdyeUydm04d0T/edR/Wgm3U4a4iB9ASf5CrUegWguFtLdVuZW6oQVweeM5xmm2/hWC7m3w3BtyTzE33l+hyMj0NPULIgYWyfeuEX/eDL/NafFCJnWOGSN2YZADcn6Zrb1Xwd5u0LduQFGPM5Gf0ptn4OkMS3YjCtHtDspON3+z/AJ60ahZCaXa31rqUE6Lho3B6ivXJdTvTD5hmWM46GuChsZbSCC48wl5FcsT/AHs8cfT+Vb/hmfRZtOOq63MXy5RY0JxgHGT9acpKKuxxjd2RNrj3kvhQtMfMllfGQPfiuIsLO9soC9xGY3c8e4r2C7tNHksWOm3ZhAG5BL8y5/mK8me8kkEj3Um8IxBIOeh5x7VnKzV0ykmnZlySC4VsZ5+tUbq61K0lVI5ipPXB4xWPNq0jZETkjJ7c4qra3VzesZC+FVsZbrgVEVZlt3R0UssD4JB967DS7uGCz8wAsewWuMh+zYzIwANMvbo2M0TQudrLgDOB9atStqyZJNWRrane6rcyErGYkJHGaia81EGIAf6vtng1xV7LqzzkwSEo2G+YnrVFV1drkTXLnaeuCaqdbm8gow9ne+rPXE1G7dC7Hb6gkVyF7eXslwzzcQ4wozn8a46KWeVDK8jbjx1NWImlVG3S5xgfnWMEk7jkrkUsjLc4Qck84r0LTPE+kw6VHb3UuHAIYAVyFtDsvNzEZCnr64rn32ruBAJfgexraM+qJdPTc9HbXNGuUeGwZ3mbgZzgVdtgs1xDpyYKLgvjv61yulabHp9+InikkLAHGOeRXSaNpV3ZapJqF0QqzEqiZyRmr5m9TLlV7HR3VtG91HLtX92MA4q+GwPWlMYJ5NSBV6AgVmanK3l3rLaxHbQJstQRufufWovGEkkeiuYiVbegBXrya66VHK48zA+lQyWSzrslkLLkHBUYyOlAjN0y9mIS1kGCkYySec1tLlhkVVXTolma4DtvbgnAqVYEZynmvkfSmBNt9SKQ8dCKT7HH3dz+NNNnF/ff/vqgD//S4+98do6lLRSMjGSK1PD/AIssGgW0vH8tx0LdCK8gQdzTpACMN0q7HN7R3se+ajcW19bgQSoSp9RXKT3Nra/62ZAfrmvKA8kXyhjj60pJbk0rF88j0GTWtPk3RhztPG7HFegaTq2liyijilUkAAgcc14KvypinpcPGcjpW9KnCW5n7WfQ+mBcW+M7hism4vrKPUo55JVVVjYEk9zXhZ12+SPyopXAPbNQpcXMx8yZiR79629hT2TYvbT3aPpXT9QsZplMcqnPHWvFvGcLR6zcOASpYHPbpUEEMssaz+YV45x7VBcX6XdsglYknKHPPI6UTwitowjin1RLYPizX2evYNCn0n+y45NR8pGDdHGTg14jCZYikLKeua2552ml2OfuAACvPOzqd7eaj4Mjk/0iH7SVLDEeQMdqt6cnhv8A11taFFlH3d1eUv1rtPCkN3qUiW8IyqZBPYU7hynqlve6PY2ZOxk9AO5rFuNdtXAH2VH2nIMnPNOm8N6zcv8AMUVV4UZ6Cqr+CdUlbInjQVqrdTN36Es/i99PgEkzwW4bhRt5/AVS/wCExvrlS9vcqQOygDH4UX/wzm1SFUurwCRMlGC9D+fSuVk+GXiW2k/e6nbRov3XYnJ9sH/GlzJMOV2NW48c6xEwWG6QnPTivRbDxIsfhX+19buI4JZFO0k4J9MDqT9K+W9YsbnSL57G+a3nKcl4Wzz7kcg+1ZE98xAKE8cLk5wPb0pOSY1Gx1/iHVtP1S78yLexc/Oz8bj0yB1rj54/s0uw/dPQ1T895Mn9a1I7uGeBIyB5qf3v4vpUN63KS0KUsSyJx1otZSAEbqvFOErQNuMfH905x/iKhuZIp5Va0jMbEfMu7dk+opgaok7VPFcywN5kLFSPSsQSzRf6xTj1qdJg3Q07iO6tPFOzC3UW4f3gcGt6LX9HnwBL5Z/2uK8r30haqU2JxPYzqWmPt/0qLjr8wrkPEV1Y2mJLd0mV8smO59/9kfr0rh+p4qW9KyTrNJyPLXA9ccVLY7FVnmdmmf5pJOST71WKOfvGpGlZjmo2Ppz/AEpDFEm3g8qeCKnhi3BthyuOvofeqR/OnxySI25DikBLjHFSRyPEweMkEelRtJ5jkkYz1+vrSjPTvTA9D0TxlNZxLDOpkC9g2Dj0B5rbj8WaXbgzWyTh5MllLDBJ/rXnSaNLs84SYYccLkA+hOe3c4wKynmuE3o6/MDg/UdazlSjJ3ZcakoqyJ9Y1WTV71rxhsJACr6AdOfWtKK0Oq2qSA/PH8rf0NcsTzn1rY0nUm065DON0TYDr7eo+laRM3qdJ4W+0WesrZuQrbhgnkEZH/6672e1N5qTPfwIY5WZrcw8BecY/PGR61yeppA1smqWX+ttiJFI/ijPUfWuh8LyTTXc0kLFoo185R6l+FPPcd/pViPQ7C2tNKkDLGsl5twXb5hEuM4GerHPU9M1rrpGn3AMuoIkpPBYjnPsR75/CuWvRe2rLJnJcZYjn0zXQ6ZrkSwD7QnmKmWG44ww70BYuLoOgZBiRiOcBmO0AHk4/pW2kFiLeOFY/wB1F8y7eFDdce/vWYb/AEm5KMA2VJUIxwMDr0FT/b0MfkGMYHOF55PJ/oKAOXutLh8q5MXSG6J57BgTgewry5ZNY0Oe4itYI3t2dioZc9Tn8K9HvvtCadcHcdsl1k8+mcD8sVQFkCgDcnv9aU1dWY4Ozujy6+8Raxfyrb3JFvE5w3ljb+tZNyggSSKFyUHO4HpmvYW0q3b70anPqKz5/DdjcAo67VbqBxUWSVkVd3uzyAQXCqHJOD0Y10UYiEccVmfMfbuf6967N/CdqYxECSg7E1DF4eXT5DLZoVfHXOaNw2OfnmMKAhSP97irF1p2o6rbRSWURcIoye2aszafcXiGG9ZQcnDdxmu10kfZbZbZZk2gAcCpVOz1G53PNY7W/uH+z20Yd0GGGenrUkuk6mBtkMSeuW5r0Cy0GysbuW8t52Ly53cZHJzxTZ/DmmTytNKZGZjk80KmwU+55NcaLcWVkZXkVk3YO3nk0RWM40/7SF3AkFQOvFepnQbEQm32MYyc4JPWq0nh6Ep5UKsqjoM1Sg76kuXY8x+zTS6fPeyhgytx7D3rFs1R7uNQerjr9a9cTSQkT6Uw/dyn5iTzzVG78D2NnbST27fMilhzmiPUqdrI6wSR7Y3jIyAPmHpVdgGuIAxzl8/pWboQ/wCJZFE53eX8uT7VpbwL6CIDqSfyq2yEjaOwDvQEcjI/KoLy5hsrd7u5O1IxuJrhNP8AiJb3OorbyQGOJ22q5OfpkUhnfkrwAc96kQcDnmo3AL5HHekUEd6AJ5ZBBG0jnheawIdRJuw2CRN90Adhxz6VstuIIzWZaWzxzysW/i/Piqi1Zkta6GsJXpJJWCHNR/jUcn3ako//0/CYYZriQJEpY+1biaE2N93MsQ9OppftMdhbZiGPT1PvXOXN7PcHfIx56UOTexCpRW5vPY6Kh2PdM30FWorPQiMJIc+r5rj0uZIxkAVfh1i7i7DH0FS0y0orodFNYWqgtsJX+9G2f0rPfTw0Ra2cSqPzH1FSW2sWky7bqHZnjenBFLNDJD/plm/mKP4h1H1FVCpKLFKlGRmJEiHLrTpZoyyqucDkmtMiO9j89AFYff8A8atx6ZbiLzCdxxxW31tpWMVhm3csadcReQ0QkG4A8Gsq30u5njIK4y+7JIAxWLdJM9wpRTkentWpGZdvzMR7VVTFSaVhRoKJ0kej3LRr+/VnXgc81I1s0brPc7hkhDx6VmaVbT3N4kMD4kb7uTxmujk1FrB5LHWoxIh+VivbPcVxuTbuddNpLUVbfQ5ZkQzOqMRvY9vpXq0fiTwhotollYZQqOynJPqa820bwjHdatDukMtjMCfRh7GvZV8K6VFCv9nwoHQYyeSR+NUvIq8ftIyV8W2vleeyuqdiQaoP4/sf+WTNx7VvXGircW7284xkcEDpXPx+CrVVw7n8q0VurMW3fREUvxIskUko+QM+leJ+J/E2pa/dfaLuQqgOEjU8KP8AGtvx39j0+5/syyYuYx+9b/aPb8BXmijJJNJ+Q15k80j/AOrPOOuaqOm4jf8AKB6VeMAEHnMwB/u96q4kxk85qRi29u9zMtrAMk9T6D1NdTpen6ra3ax2nkvk4GQD175IrI0UolyVXdkqS2On41r3V/8AZDtGdzdCO1AGvrvg+/ghlvJ7mJ8ZcAnBJPUc8fSuIa3hgZB1Yjn/AOtV+41G8u5UkeQusP8Ae5HvkHj8Kx5Z2ubh5iAvsOnPpTEXd+PlbkHof8feo3tUflPkPqK0XtVa3Fzb8pj5lNUNzJ7r+opgVSJof9YMj1FO8xSMg1qIFccGqs8EYbJUZoEUvMJOEGT7UGKdyHdsYGAOuBVlcDpxSmQGgZnOrIfnH4jpTAhY81pM2Fzjgdc1UOCMjA9qAItgQ/MKf8pHynFOCSMM9RTfJJ5PGKAGEFeDT1YowYdQaMEcUDHSgDabWNykbW+Y5KEjbnOevXHtWUWe4m3nuST7k1Ft5+WnKw60AQ3MJjf2qVIt9o04+9EQCPY/4GrJTzo2U8sRkfUUaSrTSTWijJmiYAe6jcP5UWA0NE1cWzfZbk5hf1/hJ/oe9dz4XlTT9TOmTHbEWCh/+mcnTn25ryZGHQ9a39N1CZJ4klb5FGwHuATkfkeRTT6CsfU0mhJ5sMchMY3BODgYbp+vFX7vw3p1gqyySZlSJtsb/dYjknHsOlUtF1a18QaNCizo91Em11DZIZcEHH4Y+tUnu7iOSNZGLwMSyZGfmb36/XmqEUNTkR4WSEqrb88HPysP5dK0NI1CK4dbe4hIxxvVsfiQazJUt4MiQhcggAdT+FLBI8I8xTsA5yen40xFjWv3dzDp4P3W3MB7Ln/2YVV2k81Vj1GLWr651GH7ikRqR0Prj8hV1Qo5JwazbLSFA4pjBelT5Q00lR0pDsRbe1RmM5yKs7hUTPg9KAKz2sD/AOsUGoG02zb7oKfQ1otz0poGPvUegGWdOvYDm0kBFBm1eD/WruHsK1tyDoaBNj7p/OleS8x2RkjVV6TKVNWUvrWUYVuffip5vInBWVRz3FY19a2kahk3DPTAJoUl1Qcr6Mw7jUJRfFAfkMoH4V113bKLaQjpsP8AKuBnsrjAdQWwc8A024vdWZSMvtPHIIrKjre51YtRSjymba+KI7K8kspI/N3ONpX1NdbBJK+q25kjMXB4PevMm0tY5xcRblcHOfeuz0iW78lbx2M88bEAMcDFdBxE3xDvGi06GzQ485+foteXQxtHGJFjOw/xY712Piqe41XUbO3khaMjIwTnJJ7Vp6j9n/s6ONIWyiGIjHTJ4oQM7HQLxr7R4J5Dlwu1j7rxWqGrifAVwZdNlt26xyfzFdusQJIZwtIZWuppIot8eM57jNZH9rzjIMYyDz1rektRIpXehB98VTOlt0Tn6NVLzEy1u4zUUjfL+VO+z3CjBRjUMqyKpypH1FSM/9TxvUbdpJ44APlVMmsyGBJpWD5G3gCu22pcbJMHcY8HAJ6VlSaVdNJ51qvmqepWp1GnFmUthE52KD6dK2ZvDBjtzMXHyjOMU6O3lh/1sZzWl507xbH3YbsaF5gcpFp5lUliAvoODUhMmnTxyIfkccitZ0ghG+ZgvsOpqjuXUHPTHQAdhUpalehMIxBqAEf+quEJx6U21mkAeKNgxB4HarR2BvNz8sS7VJ7k1gQbVuThuScmmlfcG7bHS2bSqrLIqEnOT6VlSxtFIQ5DE88Vca3mkIWF9ueSaxsvHMRK2SaLaEt3NCGeSKUPCcOOhq5c3dzaOLlyzqw+bcMj8KywwEwPuK6iC6e5f+zbiEyQ44YDoT70klfUhtrY1/DWpLqEy26ysSQcDOAK9Jije0Qfvdme+Sa8XHhrUtLmOoWT7AAcL359Kxb/AFnW4SsN3NMjYzgkc04pbI0TdtT6MlMsUTTT3IVFBYsTwAO9eYX3jG8neR9IDG2ixvmYEnk4BxzjJ6d684l8Q3V3bPayFtuOSWJJAqGyndCTuwTjK9BgdBVoTNa9ha7RphDMGYkknBBJ74zmudWPEfI6npXa295uHT8qq3tkkgFzCMOvLD196GCOaMEjL5jdu1ael6TPqTOI2WOOJS0ksnCIO2SO57Dqazpr1ZXFvajcT1PQVZn1OZLdbKJgEXk7RgbvX3PuaQFxXg0+3MFth5GOZJX4BPbaOuPrisi7mkf95Iytj+52qoRIwDEE56E9KmaMJF5svQgiMj1pgUzKyrsRsgjr0OPQ1Esq4AIwR+tWYElml2oC7P1qS6tYLf7jeYx64+6p9M9/woET2t3Jbk7DkMMc9PrSpnIrIjkw2D0Nacb5+U0wLke1DujH1X+o/wAKimkDcjvSr1z0xVuZIXtBcKv7wNtb09jimIzMnvxT0APSo8E1aSP5AO7fypAQOARub7i/qazXZt5bsav3Tc+WvRf51mOccUhlhHx8wNSM+4Z/SqcZ7GpsN1oAbvYdfyqXacZIoAxzx+NPMi4wxwaAGBT2pCGFOEg+tLvPTigB8btGQw5weD/jT7qF7a7EsWVRwHRhxwwz19ulQ+aic559qFn85ktx8qM2DznGeMgdqdwsF5YS2Vy9rcfLJG20j3qONJweFyPfpXW+JrGaMwXucvcW0UhP+0v7t/1XP41yCI0rk5wqd6GgRr297PaTrNbztBKvQg5/UV32m/ES8ikT+1EjuHQ8NnB+pxxXlUiOspVST9K0LTw/rV6QLa1kIP8AERtX8zihMD2iHxRp17OBZwNLcyEkRqRyepwAP6Vz1t4mGvaoul3ZZIC2Ci/KGOcBfXHr6+1c9o1heeGPFGnve7Q6SxSHacja52mvXoNE0/S7mdIYUEizPufGWzn1PTj0p30uJLUtJAsCrHEAsa8ADgD8KlOcUYB5FODY461BYoYDgilOzjiodwz/AEo3EHFAExVCM00gLTNw70EHsaADch4wRTWHGVoxzg0FcHigCH5VPIxUgiDjINDKSOaYpdTyaAG+SyN97NOQSdDzUpYmmHce9IY7Dr/CfwpDhvvoG+oqN3KDO/H1qE3kS/ekA/Gk0nuNOwSWNhMP3kIB9RVJtHtk5tSV9qlbUIO8yfnUDatZJ9+VR+NLla2YXXVHF6/pd7DqVndMRtLbF7c9RVq7kMGmvetyRhZAvOCehpfFGo2l5pmLeYF4nWQDPXFcZfauBZPFbu3+kKBIvYY7CtYXtqZy30Lng3VPslzNE3CyjI+orvZdfjiIAGc+vFeHR3UluQYjhgcg+hrudIe/vVimv7yJYm67gCwFJsaPQLXWIrlN+Mc4xV5b6E96wo7LSAuILtMnrjA/TNRvbKpxFcxn6nFSqkR8jOnF2p+61K15LsOHP51yW6SLh3U/Q5/kaha9kBKAg/jVpk2P/9XyW11K8hVvJYBW+8i9R9KuR+JvsKNEqeZkcMPlI+or1/8A4Rjw/bSealsquO4PNZ9xp3hNSWa3j3DrnvU+0Jlh10PKLTxJEZiL1SyN14yRUk15pN1vNv5wlZvlRW4xXoslvoIX/RrKMn6YqJLWAEMkUcYHTCjNPmv0BUrO9zzP7Jb71M0cgLf32q20ljbqY4Ryf4Ywcn8a9IFtDIeU8w/Sr0elOW8wosQ9cc1DaXxM2Sb2PHp9P1bUFCxxGOPsOlEfhO/ZwQ2P1r2xdPty37wlsVdjit4vuKBU+0/lQ+TuzyK38K626BRKEAOc96efA98XJa4U56kivXPlxwMUzYtJObHaKPMo/BTjG+44HoK6q3txptsIWckDvjk10uwdhSlc8YFO3cS02OHudRmBIt4nc+pFcjq+n6nrJVvIYMvQ47V7MUVRz1pPkA5/SrWmwn5ngcXhDW8nZETkY5rNvLS40648q4Uo69Qa+j+T90GuU8SeHU1a3M0K/wCkoPl/2gO3+FO5LR5dbySeWswBCnjPbI61sRTh1rlN8tnMUkBXsQexrVin6MDwelWSJqFmERprVApP38dcVzpwetdgJWcfKa56+tltpklPEZPI9DmhoDVE7XWmNHH0i6D1A7fzrCeASOBGSFfla1tMeIXskULDyipOGPU4zilaCCym2riVAd+0H+Enkd+2OaAMSSYRqbW3yOzMOrf/AFqmt4GERNwQiHpnrn2FXb2ae4uRcRwqHlbbGiDj6D1qLWNM1LSLiMX/AC0ihwRyPcfhSAyZxbISIc49T1ohk3fUUXEeXyOrc1AN0bYxk0AbSPkVYikVWKP9x+G/ofwrKjmXHPBqws0ZGCRTuBZWA+eYW4xyfp61bKnaWU8twPQU+xkt7hlilIJHAOecHtVW5juLNfmIkjBABJwRQIpzoq9Og71mqN7EAZJ6VPLcITz83sOn50x22pxgM/XHYUhjdiZODkDvS/dID8Z6VBExR93Ud/p3qWbBO/ORgY/z7UAWVjGM1NcR74w47r19COKowyMBhuRW1DiS3ZByQc/gaYHP8g43GpCItgC5L55JIxilKYJReOeaYcgY/DJFICa3tpbqdLa3BMkh2qvqfSnSQSWdz5U6FJEI3Keop0Pm2bx3Dx/KeU3A7W/z7VbitLy7Q3ZRn3tt3nkluv1JxQM9Lksp9Y8NC6CAm0EkRxydsi7xn6Mn61xWkWkk2p2ts4UxmVDswNp55yO/FesfDt2ubS+0u4AHmWxbn1U4P/oVcz4X00Nq8k78i2U/99H5R/Wqe1yVvY7tLKztj+4hjjP+yij+QqwMUFhnNMByPl4rO5ocV4wti1za3KjqjJ+KkMP5mvUdXjCalI6fdmVJR/wJf/rVw/iaPOmrcgcwSq34H5T/ADrorjW9NvV0/wAu4jM/2YLJGGBZSDxkds/1q1sS9yXNJnDfPnFLj25oPPfFRcojILDpgimHB9jU2M/hTCADg/nRcBFyeadn+6aYqkfjT9i54GKAFySMDrUZ9Gp/Qc0nXrQBF8w6dKfweDRgg8Co2x16EUAOIx0NQvHu65pVOMnODTi2T60gKjWaMNpJOfU1gXeiuDutzn2NdOSjcMtRlAeBmmnYGjz+W3mhOJFIqs0O/qK9EaFiMNgj3rPl062kJyu0+o4quYnlOCk0+F8hh1rDm8PqzZikI9iM16PNo55MLgj0NZstjcx8snHqKd0Kx51JoFwvRwagfT75BjPAr0IxN0OKiaH1FAHm7QXidSfzqItdL1Zvzr0VreNuGFUpdOhbotFgOF+0XA/jb8zS/arj/no351082kg/dFZkulSDoKAP/9bDeW8uG3TTs3sKkt9Lv5zm3t2bPdq6QW9tF1I4qys6jhXYj2NZ83ZGnL3ZUt/DF+w3zsqD0Bq8uk21uM7xI3pUf2liNozg0BsDk0m2+o0kiwqlBgAD6U4l2PIziog5zwKk81QalRSG5NiD34p4AJyabuTnoKh84845HtVCuWioPQUn3euKoi5mP8GAPWpYw7tuc4HpTsK5Z3+wFMLpnOM5pGhBBOTiojGe0nTsKYFgYPOMUE4PGKgLKhCkkk08hTgkH86AJSx7mmM/OFBoGB0wKN/X5hQB5t460YSxjVrdMMvyy8dR2b+leZo7IpgLbQ3Ksex/z1r3/WrmODSrqZ/mAibg9DkYr5/KiRePqPb1FUiGWLbUXt5PKuhhhxW6fKvYdso3Kw/zisSA214gt7ofMOFbofpmtSKCSyGxGLxeh6r7j1FUIwp7e505hsBG7o3qPShH8oGYEgnqOhrq2jEqeVJyp5H+INYV9p8kLAEghvukkDOPr3osB1/giCC/mfU7qQPNB8kcf9xf72Pfsam8dz2Nxbm1En+k2rK20jqr8HH04JrgrKW/025FzaHa47qQc+x9RU2qX13ql2b26TY7KEYD5RgVNtR30KIVGiSRz0H4n2FEq/QfSgzKcJsUY4BPTFMZnfgFR+FUIZEE5U9etWJ/sy5MK7c4wD29aqmKVjy6io5IJEBbcGA9DmkAyOOSST93nj0/nWrLa6gVeHc7gY46/wD16rW0A8lZ85JYgr6Vr2zmJWABBkwN3oKYGSmn3WwyOmQDgg8H8uuPerMSwMVjkgYTg8FjlG54ypH4cV1EGSmx+f5kVi6nayRkTRAsoPUfypAOvPsQh+y3MaRMPmBRcHPcD6/5xXOFV3YOABz/APWqeV3uAsrtypxt5z9ahYHvRYZIFDLuXvUkLSRSfuz9R2NQwuqZVunrUjP5ZAHVjQIW5ZWkYgYY9utQxQyTkrEpfAJwvoOSfwFb9nYLqFxBGTsLuqkgZ4J966bxZLb6XANItVjE8wDXLxrsyo+6MZ4z3/8Ar0XGcTbmfUDb2Us52Idqbz8qKx5PtXo/hODTG1udLdmZYV3QBjnGcKzexPX6Gqtl4dWy8NT6nexAzTBSoI5RMj9TXU2ug2mnal/a9mSu9MFO2TSY0efal4mdLzUBp6FY7gSREtwdr43cD3GRXO6feXcZzayPHKO6Eg4/CtHxTYGy1WeNOUk/ergdA5PB+hrmopDFIJB261SJZ103jPX4ofsm9d3/AD02jf8A4fjiuel1fV7gkzXUzfVz/SorwB5Q68hhkVTMbrz60MLmtDqWo/KqzOwBDbHOVJHqD1H1rrtK1EyT+beWOJGG0ywjax+q9D+Argorh4X6Z7c10thqtx5TWyy7Ef2GV/PnH0qouwmj2Gz1iORF8w5jwAJf/ih2Pv0+lbue1eR6UZLGQx5wrdVJyOfr1rt9NujEDA5+T+D2Hp9PSiUL6oFO2jOjLde9AKleeKj+8Bn9KQYz6+1YmhJwB9aTaScg80FVboKibKD5efamA8HPDUxnVeKBtbnGKRsqfUUAPUpggc0MARx3qBmU8mmmVE57UASMobhcZphRh+FLvXg8UhYE5J4oAUg49OKbgkUhZD0OaTcMZ6GkAZxwaa3qBQZAD1pC2T94CgBpVT7VHs2+4qQMM4NP6/hQBTktYJfvoD71mzaRGcmJtvsea2mzSDPUincRyM2m3Cc7cj2qkYSv3uDXcEf3fxzUMkccgw6Aj6VXMLlOIaMVC0Q9K6x9Ngb7mVqhLpk6crhhTuJo/9eisU54JJPqavxQTDlmq2SkY4xmgTx/WszQb5b9AanRNp3MO1Qi43jIBx7CmmaUHCoTRYC55hHBPFN3ZPyc/WoFWT7zKKnXzCvPH0oAXY/PAoVQpwxxQFJwSTTjFjlnpgOwrcZxikyv3ByfpT1P9wbvek+Z2IzQIaY5GIBbAqURGMZU5+tRNGyfMNzj0zinh5AMzAKD2HNAD8BR8pJ+lRhCxJ2/nQdxH7o7frSmObOd4x34oAa2wEAt+HSjco4xTGjJIJYn8BUiov8AHx+NAHI+N5jHoDqOPMkRf1z/AErxiN9rBD0b+devePzjSI1HQzD+VeOSDuKpEslIAfn5TWlHeXAjVPN2EdGIBH0Of51mR5m+Vj83OPwpNjplJPu+9O4jYt9Ru7a5MOoqWR+dyjpnuMdq6QpazxmG6+eGTkMOo9GX3HcVx9ney2p/dHzE7o3p7V11jNZ6gmYjsP8AEh9fUe9MDj9QsJtMuDHMQytyjjow9f8A61NtInuHZo2+4M5zzXY31tvj+wXi7o25R/Q+3vXHLbXVhdtHCN+ODg9R/jQBXlidG2sB7ehrZ02whmUGdNx8kyck+px+gqhdB8FpQyEjuP510enlpkkmClVSERqP91fb3NAGOLWzjnRZ5MxsA3HJHsfek1J4XYfY02J8oP8AU/ic1RvI5bVtkoKuMjB9e/5UsQYRKcZZjjdSAWPBypPFaEYH2SZWPQqV+ucH9KoqrzP8uM9MU4SbQAx+QnJxTA2rEbdsjfe296d9oEkpjHRiQRnjjgEfWqD3EccqrG3mRnoRxwP5GrEcNrcK/kht4GQCf/rUAUrvT5YwXXJTPXHQ1nQxMSMEAse/5VvWVxKbjy5R83Tn27VZv7KNR5kP8Q9aQHMCJEkKtj5T0Hr9asNFDIgVAd7NwDzioWgjUt5wO4/dIPStLSrbDGaTOB0zRYDXtJYNPnhuZvuRMHPqdvOPxrn5rq6v9Ra+cZnmk3gYzyTwMeg6VZ1BmmcRxdAQT7113gqytHvpZ5eZYQCikdN2efqP0oGd/NBPfaQ1ndECWWHa2PuhiO341haJq8Zg/svUD5d3a/KynuF7/gOv/wBeupLBa4DxhYFVbV4WMcqKoDDv/Cyn6g/pUoo4u/lS7N5OhJ3lmBJycZ4H4VzJGD7Vr2bBraRT1w1Z0MPnSrHnG4gfnTi+gpDFk2gbui9KDLGx5NNmiaKQxy/eXtVqx0y71GXybWPcRyewA9SaZJWOxx1H1pEaS3cOOcUTW8ttPJBIMPExVvqDinRqH+U8Ht9aAO70y5hurIMSdyH5PYd1Pt3FdFZzgwbGyNp4b3JryiEX1u5ETsh74rftNZ12NGgWQFHGDuRSfwJGa0UyHE9j027W4XyW++v8q1ScZFZOjpa/Y4bqNR5siDcc857jn3rXJBHzj86yk7u5qloMUe5pDuHKmgMgOC3B9KUFC21DzjNIY1j19cUmCamAI4cU07exH0oAjAUggdaYRG3Xip2QEEj9Kq+VKxzkc9RQACIbfk5HTrQME5+77GnLGwXbgUxkJOQMYoENaME8Ng0gXaRu5BpSeMGlCsMbeRQMjIXLEDBoWMNzjNPbdnJpo56UAIyrnmhcCn54x1ppKjg0ANJJ604nIxmmEZ+7yKaTtA4NADuQeaYTx2p3zH2pCAPvGgCEpzSfN/CfzqbB7UxgO4xTEf/QescrHLNnFT+Q5OWOKMZztbmpVLKACrGoNA2sf4vwFSomPmIzRv7CnH5vlyBRYBFcZ2+tPJU8jj8aYO4B/wAKCABwcUCHGcD5cZ+lRtIePlHPrSLgdhz3pCfm5IoAnWT+4uSeKcCM8A802LAHy09gR83YUAAD85Py/rTzn+E9PWow2OhOPej5jjGD9aAHKSAc8/rTvNk244pMgHJOPao2ZnO0NjFAC5TuSTRvA4RaaUCfe4xSFoyBgn8OKAOM8eK0mjg/3JFJH1Brx0jIP0r3fxPB9q0S4QDJUbh6/Kc/yrwknHTtVREy3pEKXGoJG52hiF3em7itC9sprSd7S8Qh0P5+4PcVlaadt4gYkAnHHr2r3mMwX9rHM6q25QTuUHB79aGCPAZ0jjcBCcnsOTRHO8UglB5Hcd812lhbpJ46mG3Ijd2/8dx/WvRLrSNNvObm2jbPfaAfzGDRcLHltnrkZg+ySqqR5zjt+vI9aqy6XI2+7i3SK5zx978PWt/xB4Y0nT7OS+glePZj923zAk9getcpZajcWu3Y5KA8KadxWNGG8SUYYklRggjniie6tHAUhgV9D/hUc92Lu5E7x8kfMBxkVKNAknK3ensWUEeYOpUeuOvFK4WOe1HeyRM/TBGT65pEuMxqg9cn2Ndfe+HonlPl6hDNgfxZXk9eormp9MlhlCzDbHjIdSMHPTFO4WKq3PkS7wMj0oG6Q8cBqhnjKsF+8B1x3qMyMgCDdx0B6UCLIjMM2QOcd617BglykxOADyPrWEZiuQo+YgZz/SpIbpkcMVyf0oA37yaNLwyDgcfnimnWlji+zyR+ZjOGB/pWXNcmdiHRVJ7g1EEAcHr7UAW5JI7hF4OQeM9qv+dsRY1HXgD19/oKrxW4A81+n+eKeJSWHA3HhRQAk2bZBIimQngAevevS/DGiG1gTULr/j5kXIA6IrdseprnfDOkyajc/aZ1H2eFuR/ebrj/ABr1PjtSbKSGZJbkVyHjeXy9BbaR80iA/TPb8q7E524WvOfH0uLS3ts/fkLEeyjH9alDZ5lFLJEzIv8AGOvpUm6SERTYzubGfoRTXwPKcY+7z9a0reMS2MynkxMHFWkQ2VL64e/vXu2QRknBA6ZHGa9e8PaUlroHlklJblC7MPvfMPl/IV5NIsB1ERSOEjdwSfQNgk8e1e5Wk1tLAJLN1kjxgFTkcdqTKR4TDYXd7evpyqfPkIHz8HPvmrWv6aNH1IWo6iONjjkEleSPxrpdVkNv4y84fLwjfkB/hUvxCt0S/s7kDh0ZD/wE5/kaYjKs4U1C2W4AwY8K5Hc9jW/awRRgxqAXUbwf7w71y+gPJFqD6c52iYbc+ncGulgkaJ18wjKNjI4we2aF2A63S2jEnlZYhxuXB4z3/Suk2noR+dcVbzGGTKceWQR9DyP6iuyWVXA+YnIyPxpSGgaMDg0eWAdyn8akZeAc8Cmkjpn3pDEyw4604Kmd/ApCVbB7UgVR/F1oAk3gcKcmmEjkkgYpSW9OaZg4wo5NAASwXdjNMeVduehp4yRn14xUZRckcH6jmgBhfBJI4PUdj70KoPKE89s0hTv2qIiRenIoAslmToODUajJOePSoRKeCcg1KJVJ5OR7UCI5N0fJO76U35mJX2z1qVtv8WAKaADyfWgCM5QYzzR6k804oD1BNM2imAmR3zR/KnEMePxqNs9j+dAD/lI5OKQuFHyDPvUROE9u1O3BRzwDQB//0bI35x0Ap/mhuGYZ7Vkx3iTyBUYj+VaKFCcDt6cVBZIHPII/GpAh/jJ5qsWkBAQjHfinlz2Jz1zTAm4Vx3H1p7N2xj61CrAfebJ7UcYwAaAJMZ+anDjlsYqFdxByOlIZFTljigCZWQNuXnFTFiy/MeTWc97bRfMSPwqnJrVqpAjzkevFFhXN3dgY4pC2Tg1y762GPCgE/jUR1ads84/DFOwXOsOxz8xIx70mYo0O5uPfmuKe/uJMjzT9OtRG5ZlwRnFHKFzuGvYQP9Yv51Cb61K8uCfrXGJJx1xTTLxiiwXOyd7a4Voy4YEEdR3rwTUbVrK+ltn6oxFejmYk5A5Ncv4gsjKBeIOTw2P0oSsJu5yijPzj+Hrjt6GvU/CerLPE1pMw8z7wHqfUex/nXlaM8bbo+o6irEdwiuHjJiYHOOcA+xHIp2EnY77RWz4w1CQjoH/mor0F54VQyuyqoGWY9Bjua8MsdYu9NvJL2NlkaUENvBOc/lTdQ1rUtTO24kwh/gXgH8B/WpsVc0fEus/2xd+VbEm3jJ2Z7nufp6Vy0/3ti9F4qdj5SkcbiPyqtjPPrTETwXE6MFXLZ4A9TXoFxp+tWIWR4mK7Rl4Scj2OORiovBug+ZKurXi/In+qB7n+99B2r1TdtwByM84NJspI8gTUVedZLmRmdT0P+B4rprfUrN7bbJ5eMkBTGh4/EV189hY3Rzcwxvn+8oJrA1Dwpp1zLutma3PcIMr9cH/Gi4WKUNvpE8hDWNvJkYyBtPP6VyGqeGtRtrmSS0h3wE7kTO5gtdG3hnWbOQSWcyTKD0Pyn+o/WmG/1vS94uoZF3d8ZH5jij0D1PNioEhSVSjjqCMYqRI487mrqbq+02+mIuoucY3dD+dWrDWrfSLaS0jhS5jc5VZRkL6/gaok4lQNxC1rQQIqea/bnmi3ga7ufLhQb5W+VFHGT2FddL4YtpJY9LnkmWcpvZ48GMH+6ePQetD0A5e5guzZm9k/dRjAjDcbyT29T61Y0fSpL64VICRK3Jf+4O5/oK2F8EXIcKsoYepHOPYZr0DTNLg0m3EEILN/Gx/iNTcdjQsbODTrWO0thiOMYHv6k/U1OTg44HvTCxIO1h16fWotzDg9QcZ/rSGTHk8A/WvOfF2i6tqN6Li2j8yGOLg7gCO7cHFeiF9ox1560h29H5znj1FAHzbMpEfPQcD8K2dKbe8kfaWP+lP12CCC9uoYUCosrhVHQYJqvpjeVNCxI7g4960RDMaRGMrEAkLwa6fw9qU+kXuH3Bc4ljPHH9CKwrkOjuqnjPzD6Gnx3JYL5oBJbJc8tnpyfSkxo6vxW6r4gt54m3LLChBHcHIFbvjTF3oNpfDqroc+zLg/rXB3kd1cvHMhLeUoUD0APSuz1G9WTw3JpcyfMibkcHOSrbsY7cUW0A5a6BhhsdTi6kFGI/vIeP0rpZTK83nDayzruHbPqMVzcP8ApPhyUdTBIrj8eDWnaTmbSoHCkmJymR6HkDFD3EtjoIJFby2/vDbn6cj+tdxpcwltACclCV/DtXm8ErAEg8blb8eh/nXZ6HKD5kZ7gN/Sm9ho6NiRyefpRxjJpmSTkDnvTXGcdR2+tQUS7xjg5FM3qxAHB9aYOByfrR5q8kc/SgCTgZINCsjDPI71CJgSAp/PmkDOVJAHrigROpJBw3vTAQD97P8AjSkKV3Ee9M+UqRQMHHIOKZjj29KMHcfm+maRmx05FABsUDGPxqMJg9etSgkj9M/WkIAyAaBEDZBO9sj6UpBUcHinO4bIbt+tQMwOBimA/cG4PI4oHJwP1qLauQMkcd6HV1wwbOenegB5G04JP/1qU7cdcc/zqByPxpFJQ4bnHBoAe2AcdTUZLH+GpPMRumBjio8jGeQfyoEf/9JsSwKS8aYPv6VKzkjBA4qsq9XOSfapAz9CDipKJgeQXPHp3qQnd0zVdXO7PTtUjOuBhuetAybd36UjM3XOMUxM4AwPxpGVeOQxoAMlh36/hWddi4k+4A3HStIKSpHIFQ7MN3Hv6UAcxKtyhIlUr9ao7iSeDXYPawO26TO4jrmqMulFsmJ1x79aq5NjmWdl+5waFDPw/Fa8mkXQBMe1h7Gs+W1khOJEIJ7mgQR5BwpNWJJOPuc+vSqDZAGOSKTzXQcHrQBIX9DTDMF4DZqvI+/uaiwTyOKALTTIepqtPcoIzGwyrDBB5zVZ0brVcxSPwoJFAHOXKIkmSfl7N/jUe1iM/Kw+ta9xZh//AK1Y76dKp/dnNACiPHLFVxTWlRMiLknjJqBra4XqpNKkUm7DgqPpQAgyTk8muq0DRYriZZtTOyIEYXu319BVOzS3h+ZFBb1bk1uR3WOccmgD0YXliihBIi7RgAY4/Cp4b0THZGyEHrivN1nVm3jGeta8erXKpsyAB6gZqeUrmO7WRF5b60hlTJA9MVwy38jHMjll5yAf0q7BqdikmWRh7nmiw7nWiRTlTuY+nWl8wFcdOf0rn/7ZiJ/dnI6c8Vbt7ozLuJA54AYHIpWAra7pMOq2hiVQsygmN/Q+n0PevHryJkcyQrtCY81D1Ruh/DP8xXuXmQxgtK+D6etYuo6Yuo+cLJkh89QsxZNxb6f1+lCYNFHSYdIlWK8sYlQKkZ9SJN/IJPfj8q7BYz5olbsTnHfIwK8t0WQ+HtYbSNQO6MsGRv4T/davVg+RwePamwRIPlHB78+1PbDYLtj1qLOwY98/nTWw/BHXt2pDJvlI9D7VG5dSAG5HQmkBGeV5prb+cYweuaBD9zNwozmopA4Uc4B5+lOIC/MML2xmmzbcAP0PcCgDw/xM2dZu4/8Apqx/rVBGiKq4TAXGcdzWn4rjEeuTkdH2uMe4qrYNZi2m+0KzNgFcdPQ5qyShqKhpC68Buaht1ZWGRuDDirUzlyrKOABxVNTKGVORg9PrQI6myu47YrN1Drzntmli1iwsInhIdwzFgM56jsazpFjNgViOQvAOMd6wzCztgHj1PahMbNW41iSWWT7HEIVnUI4Xnd/hn2rW0aUf2dcQ9SCGwB0960fBcJgvzJFbecyY+d+FAPpn+lZ2lBbe7vYnIAIcc9ODSbCxownLNz95Tn644NddokgN0no6Ef1ribaQ+dGT3wtdPobsJ7fHYYP5GqEjvjtII4BHNACIcNnHoDiockfKoyPpQW4x2NQWOLncFUHH54peeWIxjvUTDJycE54xx1pu5STzkH8s0xE3yEZwB3p6lVP9arFju3ZGPSpA3AYgHg5+lAE3AUAdTyaixtJPrzUbSHOQOnHtSh2PL4oAkZj1GTSb8fepoLdS3B7Ghl53D5vWgBwOSeeKRiq8jn6cVCxJySMAdxS4IHBoAFA2gY/xpGTOdp/OldRgHvTiuV6cjpQBVYOz4NGwEYIyRUyFguSAQaichlPzY55oAiMgXC7Tj3pu7HK9uBU4XcAc0xY+TtwCeKYhmNxwOophLAHkZ/SnsCD83IPf0qMt3z05oA//02E9ckjNNXP8JLVGWUEA8mpEBJyWwKRQrkj7wx+tSIQeDjj1/pQvy9xjFI0iZIKk4pDJC2FBZuSO3pS4DHIOcH+VMXOWOB1peNpBBzQApJyADjigKcgkk9jSDJA2rn2zTySR2Un8aBDQE5JOOeM0u8cqce9OGXGBjPr6UFBnDetADB83IqvPHNKoVGx7+1WMKoyrDk8fSpA6hSwGMcdKAOZm0yZcsMPVKSznGT5Z/KuzY5O3gAdeOtM/hLDjbTuFjhGhKn5hj6jFQPFjoMV6CcH5XAx71XazhkGSi89sUXFY4MxZByfeonjYcoTzXayaRA5wh2k+n/16pNomTlZfzFO4WOMMLt70wwE8EGuvfRZVB2MrfpVV9MuUH3Awz2NArHJGAD61GYhXTPYyqfmjYD6VXe1C8YH4UAc+I9oyKmDt3OBWm1uueBUXkgdRQBTyRzQbhivzDNTmA/w1CbdyeFoAFucnvTxcsBgfrUJiYE57VGUPU0AXvPOMcc1YW7cLs7VlKvPFIQ65xnFAG2l6wYEcn35rUGt3BAUttA9K5FGOealAduhNFgua+tRtqtusiMpmgGVPcjutaXh7Wob2yEF3nzo+DyeR2zz2rm1hLD7zAd8VNaafFbzGaGV0Y9enf3xRYdz02K4QjG9SoHzEn9KsLNHIcrzx/npXD2zPbEmNi3PO7nrV+C/EZzICAOTt/wAKmw7nVYIOW/zn1pDI3QjI7f5xWKmprvKsrYxwScGrkd6txkFcKM8Z7UWHc0jJgbWX8arDy9+VxyMe1P8AmkByQQOv1qTKqck8Y6Z/CkB5P45t9l/DMP448fip/wDr1y1nkc/wnKH8ea9D8cxxy2EUqdYpPXPDDH8xXnlksbl1dtpC7l9yKpbEvcSWOUN5MeS2eAO4PSnpbsqNdyEBYyMjvnFWcCXZOpOe/wDUVP5cbNdDJ2D/AFQ2/eB4yfcCgCs8irpe3+LGfzOau6J4fuNWmQPlbcAM7+3oPc1La6adYWe3jyrxxGRQO5GMD8ea6vwZcg2QgA6ZGPf/ADmgDuQsSIqRgKFAUfh0rxzTiP7Yu84IzL15716/IwRDIHx9fQV4tpbiS4uJjxlXb8zSGW4mAmTHQkcehzXVaG4M8ODjn9Oa46E4lTnjg/ka6zw8u+5iX0G7B+n/ANerJPQFDZwe/wCtB4+6fmIP5Um4+3pn0pu3dkrhcfrUlApZgHAwaRxg5U4J49ak5UHac4NRrk4Ug49BQAoVAMdeKQAKS3b05pcDPTikZyrZBAycc55oAcGBGcdfemKpI54xxQ2/ccgYxyaaMDJztzzQA4vjGRgDrTnJDggcCm7t/wDKnowA+7nvz7UABDHqe+T70pcjjbnv9KWQ5GUwGz6etR7Zm4kZfYgUmx2EYOME9O//ANeo/mICnGD2qYoQfmPNR4AO4856HrTQhNockKe5pjKVfgDNOBVTyMHpStn720cGgBAwAwecc0L8/wAwG3HNBU4ypxio3x5ZGcnOOKAFIP1qHZ1OMVLkMvGfamOeAyMTmmI//9SJgCV2g5/pQ+MhWJAqMBegOc8YqUg5+dgTjvUlAHGMA4HfFSBfMGV7flUOMqQvU/lUoRmXH8A+9j+QoGOXKtywI9AKVyxxk54waiyoyVPPenZPc9aBEiuQAeSc5xQMDllwBTQwPQ5+ntTeA21j1pjJPmPAwKepw2V69OaiUknbx0zzTg4KH1HUj0oEKyDdkHBHNGOPkPA7U0sTyDkd80E5U+X+lAAWDDbg57mjkgbe3rT9uTwc5HQdePWoSxC8cZoAkPy96Qtk9uag3KSAeT/hUuUzjqfagACoSeCAORTmB6r064NR+UzNuY9O47Cnsqr82SxFIZFhs/N9fanNGuDuyD1OMGpCSvBOexqKQYGWOD0GBmgCCVGxmIbj9apz2ss3+uCL+pq5NbTSLgyEDFUW07Of3gIHQkU0Iqy2FsifLJz74xVL7FK3MW18f3eta509iAA4+mKhNg8Z/dtz+XSmKxjm32ArISv1WqjQ84romhun4kIP1PP8qgNswbHl8DuDnmgRzrW7ZwOlRfZ/73et4wMTuXp71C0ag/PTAxTBtPFMaPtmtlo1YcVF5IzxQBj+VgDjrSqjdq1WiJPAFMKYIO3BoAqJkdeCBxVoNleQDihoz1xjI603y9mSeg65oAlSUHjP5VPDOVJC4I6euKq5LYIGMD9aCzI+N2CenegDSadVIOOParqzp5eE4PQn61h78cMM+nXikjPzZJ9sUrAdJDKqDDytu/MHFW4fOlJYOB9a5ZZznC/rWjHMwTey+3qKVh3NDUdLa+s5oXl3MyEKPpyP1FeLqxhlVsfdPI/mK9khacpvEWAOhrzTxBZta6gz7diT/Ov49f1oQMrSPFC5C8o3zD6GtfStOvNUfFsBt6kscDHTpWBFsmh8rH71Mlfde4/Cuk8Pak9vIkIO1lOYye4PVadhXO+0vRI9JcyW7l2cAPnHbrj29q5qIf2N4ie2A2w3H7yP6+n8xXcxzRzIsqdG6gevofeuc8VWkk1kl9bj95ZtvHrt/i/xqVuUzS1+6FppNzNxymFx6twP515VpgEcMznjC4z9a2fEetR3tja2cBzkb5PbHQVjwJssNxOPMbp7CnYLiocNkfwg/qK7rwtDulkmbOFUL+f/AOquBQ8fXH6c16h4ZhaLTzKesjEj6DimxI6NRjjIJFGTyMEd+1IOTye2aUMo5PSkMOpzjj270jcH5uh/XFK4yPm6nvTOQScdKAEYnGV60rAEgt7YpWYA8DJ9qU89Me3rQBFuGCFNClt2OnvT8leoB9utQuQH55x2FAEp2jO786a+5SApOD0qFtw5bgelPLeZhV7elAEgJXlhUu7gc4B9arqx6Ebh9fypgLORtwSaYE5csBj15NRh88DOBTOr5kyMelDORJkdCOvpQBK0ny7yc89qjWVSMKfQc/zpuS2Qen8hTJVVUUAk45oAkLBWI5Ab8aYPvFencc4zTMfMe2eeKVcgbW45oAfu2kh+cAU0NGQcDjOTxSGQLwQDj/PFRgrj5jg98n/GgR//1anA6jbUyc/Pu79BwcVADtXD8cUnmoEJ4OcDFIosb4z0+macCchWOVA6VWSVAcDB70jsT938/wBO9AFwcKOBnBzioxuB3txUIWRByMZ71JkuDg8DrmgCUSErgDdz601jhgTzRsdVDccdBThHzjJJ96AGh8YSM89Oac7uwKbgABxTRESxy2Oe1TYTZheff+tADWBjCg4INPOUwB+XtTSwT5SPx7impwd5BoARfYc1LuIAGMA9eKj27jnkk0AlflYYoAfhQBuHNGwhgWA59KUk8hgcjoOlOR41JDDJHP8Ak0ARBGGTyB79Kn69Og56daiZyuNynB/Sm43MMcYoARm3f6o54Gc0CPJwc8U7cT8xGD09vwpy4K4kG09eT/hQMbnGSxzmozgj5gcDtUu5T0PFINinA70ARknHHSmNnGQuTjoal3KAxbOOlL8pbdnjFIDKZ7uT5Vjx2qIPe/cC4BPtW0dsmeenHPel2EDHAGM5p3FYxmspn4L/AI9KabHC8Nz34rWOF6kHsMUHHPFFwsYo04dyBQ9pn7oH0z6VsKADj17+1OKKMH1ouFjmZLORBuPT1qqyqABjmt6W5kRmVVxjj5hmqbwvM3meX+QpiMposjLD/wCtUAjIJNbn2a4mJJjGB7Y/So/sM7jIAIXqKYjGKFxjHFRlQvJ7dK1pLOZcHaSD6A96rPEVOGQ7hzjFAGeY36de/NMGRkLyO9XdhfjkVE0RRcseCOKAK7l8ZA+tRpceW2WwfSnsATj+dQyxdWwKQF5dV3/KxIXuATVfWZLXUrHyxu86L5kJP5j8ayJQyArjJNUJJnHIGKLDuZallIdThhWgpS5+aPCy906BvdT61nSP+83dCaXAbpwfQ0COv07xJcWBEd0nmgdc8N+OeD9a0r7xlbNbtHBA5LqQQ+AvIx25NcB5k+Nu5sfXiowOfm/KhjuORSzD1ati4YKVhHRBj8e9QWyeShuH5J+6D60i8tnH/wCugDQsrd7m4SBBkswH5nn8hXsVvEltGtvBkKqgflXJeGdLe3T7fOCGYfICOx6n8a67HICZ5H60mxolXk8nvzxTCw4UcZPOKQKzqc5A9adswuMgj0H9aAJQTwcfnURYNjnj+VKSij5O3Q4/OkyrDJ6dqAEJ5C9/cUoEe3dxkelSHlgp4xz7VE/LbVHGe3TmgCTIzhBjPJphVRz0PSosSKMqefSmh9y/OcEUAOIAyc8/zppVl6cfTvTzJ1DYBHrTevPpQA0YIwR19e9RMwDbUBz/AIUqyBwAwxj8PrUhkJyqdef1pgIJV25I6+tPG5+BjpUTJ1I4A5oHJDHOPb+tAD2cHpxxzUZLKpPQUpgx/Ge3503cFGGPPQ5oEOXDuAxwOMnrig7IzgHcM46c/rUO5hxwCOPr6U5ZG6KQcjmgBjkMwY9qY6lskdehqRFBIdiVINNZQcEYOeooA//Wpb2OThQrdyKFU7eccnAp65IxJ87HgDHAqTZglSNuD3pFCFCuIo+gOePWkClJAG6d6cSACSwAz/8Aqp5yVHIHfNABtUgK+RilDEsWVQe/HtQpBYMCfTGO4ppIb5cHJ70AKH8z5u+OpGDSEled31qRMFwDjpzj8qeRGScZ5oAZGVyR0/rUp2tkpxn86jbOOB19fzpQSFBk46/SgBmDnDZ4z780qnbjL/pUgAKluDwKbuXcMkDPc+lAD/l270yT7VHjqBgkU1ZNxIDY7g0753IPagB5LSKM446/SmjDbQxKk9c9KCTkA8gdfpTwuDubp27CgBvTOWyB26GmtnceeDzyO9LtJJIwAehNAIVVJH4E9fyoAU8gAgE0EAqWAyR0/wD1VHt5IAPHpTlyduxcH36UAIpRcY4PsKRgFjznaefTmnfPg4OR+FMHmF8E8Ac460hjSpX5m5/GpMgoC3ymm4O4MWJIGBThwoQEdepPagA82PhBxnnNOUAsQc4xUKfO6oTgjoe1TBDHmPduKHnnnNAEbMeFAyD06dqaeMDGTjp1JzUi8lieO3HWlygUgY5HegRDsQnIUg9jzzUhAZSynOPUetObGMDqew7fjR5aHaSOD1x1BoGIcn8eOe1REsPmXhlPPpxU6oFyoO4gnJPFR8lyM4z6UAOf95ls9/zpFkSL5h05yPWkAkVdo4bHtUeJGAz39e1ACk7zgDhsdsfjUU1r5jkzPvx1J7055WKhEIBB70yT7ase1NpXv+NAFGXTlCl4Tkg8A96x5oJIThxgH16VtCG7dSGLAdueKVra5I+blB9cH86q5JzEsbRk9MH1qttXluoFdL/Zkhxlh/Pv3qCfTLhQGQA5zyOf0ouKxzMsQPOMZqjNaluMV0rWsqDc4IGcZ7VDJbqWIH4cimBxk+nlhnbisqSGaA4YZFd+1urHuMVQmtE3HIyKAOK8wEdKljdAct+Vb0mkxyZIGDVI6SyHI5pAECXF9II4ULnsFGcV3uieFyP9I1ADIGRGD0+uO/tXP6U81s4CMV+lekW115tuhbr34pMpF2M/JsLAgdiP89KjaQB8bQR69DS+fgYwTk5NSjG0OQMqTkHjP0oGQ78FlDP67cfy6U/zHLEYbaeAR6+xobdywBBxnH+NKhBUvwQO3pmgQq8HHGfwpQA3CvtYcgYqGZmIYofzBzT94C4ClmHTvmgB5DIGBySBkZo3MByvbt196YZGcHchRs8n1FNkErEMGJOOmR24oAVWyfXPIzSkH7wOOO3XNViCTtHOOaesyAYOeuME4oAewHJIB9P6dKjABYAjaAMGnsEU71z064prMH+6Mg/0pgKpUjI+Yf5/lUbFGIAG3+ePpSvIm7Yo+X09RSQlCNrcDmgQ2P7mCKlQhUHqDimlB3xk+nFJsdcheQx6+lAxNxkwvXr3x9KjYMOvI9KeCUYqCODjNRjkMCeh/PFAh67XGD9QTxSugJ3gsPp0zTUDZAU/MM0gEhf2B5oAdIY1H7wkH+lI+1lygOe3SmpyTvO7sc0qJvjIIwM8EdiKAP/XrrIw9lx37Uqjb8wGT9e9KFxwo5H4AduSaUSYfC4LYxjHQDuaRQxhKMFSAOmKkSPBJYZ6AfhTlKuu6TO716UwFQ2EJ56/l/jQAqARkAjac5FPQknd97B+mfwqDhvn4yuOM1KSV98+ntQBIrsp3MQOewpd6gk4zznj3qujk5BHQ8d/zqXzFwC3BPGOlAD2f5VJ6EcikZiqqB1bk560hjbecAccjHFPeULgyrntj/GgBdpUE4IAHP8ASoSPNGVXntn0oMh8tUhwFXjHPT8RUitJwRgEg4wM5oGRNGyAhDyORtOaUAonPP8AP0qXeHHm78cZwR19MVGHCNhhjgnj2+vSgQMPLyCecZx6ipQwYcZBbtj9aYrIX3MMmQ5JPHJ7/wCeKVQ0rFBwq8AfT+tAEhKJ8rg4OM8ZqNl3fvB83A4zjGe9SYaNgdxJIpoKoo9RSGLh2wAcZGMf/XqEjorHAwc5P51OiMylgeBzx+A5qJlX5mYcjsMf5xQAmHIK+gx9e3WkKlWHByRj9OKTYCTk9Tj36VIpfGd/TnJ9qAEj2hT8vHU80jpkMABxk4P9Kdgu2VOQSScetLIzMoYsNxPOBn3oEQDBy7Lzjv8A/WqTIJLbThhngjvUY+Zvnwre59P8anG5UwCDnsB6/WgCuPlPzHJHp6U132HOQV4I5xUpDEjCj8fSmzguoDFTkg469KBjlcycLnoSARSYOzBUZyeP/wBVDKGCoPunn3P5UeUO+5QOOPSgRJuKD95wSaVpEK8nkimsscrFACwOf0P86UhUUHccKeecdfrQMQeX5mGYlSMZ9fz96XKxZA+f2pSUAMfzEgjGTwD6471EWkyG2qGPUj24/HNACLKkkhVQVJGeP1qXJ2EFCBnAPr+NOLAISASV7cH8KaJUdtp+UrzigB0eB80jceg9fSlkRAhLMRjkYNRlWDrKFBRuT6n8aX7THGmwBQTjjHc96AFb94oZRn698fSopfMZS0DfMvHTOTjuKkaSUfLEVxnGP6HFVoUZzmX5D/d9/XdQBAA75STDt1PH/wBaq39nQyAlowhboV6VrTbIGKscKx3dcU3MLEhJCSeqryKAsYT6NLzsbIJxWedHuTwoBHr7V1+11yCDTD6YOc8H0xTuKxx66RdEHgLjpyOadFpMrHLAD6811Bj655HuacIkGNy44P4UXFYxYNHSJwzDdnt0rdjhWNY5NoxjGOnI9cVEDEAVAOAB0PP1qVAh+Rm2ex6c0mNE3loQxzgdQBUSnJOTkEYwTnH4UjvsmKEjsCWFKzIxP3GDDBH/ANegY5pF6bc47g9KSUq2QAPm465IoR0U5WPIOOfrTlBU7mB6fXr/AIUxDYiM5yOB6GgsxH3uM4yKewIyYc9MkEY4qJpX4yPmB9efqKAFy/JLZOTUSFlO9l6dac00s6DdIe/B4P51G7F35YnOOT16etAFkhcZbtz6VC0a4AfG08gnvSkdSgGFP5U0MATtTGeuTx7UAL5ZYYRu3B9hUallOGyCc/SnlVBEoAztwSKcshJJlV/93imAjKzHcSXx169BTF2qGwM96UBdu1CQe4pgzuzgsAaAGs391enrxilUsWz3H8qkYfL5i4wTj1xjr+NQEOO/H9KAFaQBufmx3xzTw4LEkYz3xxTWXafmH3h9OKi3XKhlABXGfXGKBE6qeHJ57ZNDOQwYc+oqAMSAjrz1qQRbcsM/N/KgY9SGOcHd3pJnU4XA5zyvFSqFVgsYPqc/0qnOGLr3759jQI//0IVDqQAdik449PXNRJGcnPzA89eAfrQyq67SuD0G49fzqUhQDGWywAGO23uOMGkUQs2Dtx7g9c+v5U4lmcE88Y49KURoG2HAxjPrzzwO9OAUZXkHHXIwPTP+FAETLIoKoobIA3D+fNNSGcSAyyMB2HH61OWDDIO4YPQYz/8AWpfOIBYDPpnJ/nQALHhjhw2PamfMhzx64I9qkCTkKgG3cdx+gp8oUkMpzweT0P0oAVgQwDAgkZA4Axj3NKTIXZkG/jA3nnNQ+QeWByQMLn/HGeKdwoPzDnnOe/pQA7A2AOSvPT369qaJATuQllC88dqi80bscHI+XjjGamRyGI649OKAHYZkDKCw/iA65/zzmkZVGdiknHIB9KccO6ncFIBzjv7H/JqKMnczoBuPBJBH5UgHNvAXKkL/AHjjFSmdI4x0Cg/mPb3priN3+8SBwyk8fhTh87lY147DgdaAI5Jyp2R5wejdevOead5sCgs2HIGPxqKJn3+ayYHPyn0qISMYjLGQqt1oGX8LtDfd9O1BX5v3ZD5x2xVOGGfyyd+EbGDjNTn91EZWKsx6dQTz1oENPUMG2jrjjHNDNtwTyM4A+tK7sYwUUED8qrK5d9vl4A+7gYyT7daALwxGcx899ppBGhZWbgcfLnNR7vl3BfmHOD7+/wCFPEiOUI6kHODnigZC3yjDgEBuM9qam4EEFQGz+nWnAPuBcA5wMd6kDIuCV6Z4PP48UCFVNzYY7j1zSON25lAOQOtMjJZtqjAJ6+9TMx4JP4c+lAyKMFRvPRT17VON8jAupxjAqoFw7R4I5znrUhLbSqHawwQSM0AOB2puwAcH35+tODFh8wGTxnpSKHZQ7PuUdscfl0qszR7gh5PIA9DQBYKR539++KFMeS0g4HH+c96cGWWLhcbeScc0HBbAz257f5NADT8wLRMOpz9BTy21cEYwM59PypAMjGeR7UH5cjgHtyf5GgCKRrlwI1+71yBn2xSO0AbEuGYDgY560pM3l7iFdunp/U80NdRZEAVlcc8g+nTIzQA8XcJw5Qg4xk9v/rGklkJG9BxxyM01dnUudw4oXZEwY5G7kn+tAD1KunDH3Bx1qMw4lJPydwffFDmFx5QyM+ox096VFdYdhYuCRnPOaAEwJByxYHnPGPelEbEAnkDHAzxTl8tOCCM8jHPTpn3psZG1gG7YOR/9egBpd43LHB9P61C4jJLHIPHAq0IUJKoAuF79Dj9aAAQcHbkHnjqO3vQIjVFJCkgEdAaiZJpe4wp+lSpI7IpA3Dr6fzpHQRg+Xn15oAY0UjNtzwBzTBFGH3nrnoMcfSn71YHyyWJHbnrTWCjbEOCR265+tMAVtz/ISuc4zxmpmY4JPPOen+QajCyYBznj6flT8AKADjAyQeRk/wBPWgAcbwH2MA3Q5wPxpBEygBVUDIOCcH8+1KifwgjsQPY9akYAqOn4+n1oARQhOCu05yOSf8iomKszKuPTBpksjIAwA+bn1x7elNkYPhjw4xnAxQBKADHn5uPlwB3HvTduWyjkdjkEVH5pPOec9/X0qQgtlgCQDzQIPmJwxA6c9KkwQQWPP14P1pjTfN8vPzDqP8KY8gLlQDk+vFAxWl3Fn2hQuMn6nimsC53Y6n5j7HvSlVwHOOmM+tKxdNrrgK4PHc468enrTEQkZU88ZHGOc+/rSvtA+nUU+VUMmJFwAeo5qJk4POCcEGgBAqMR3Pb8am8+MAZGSPrioDsx5ZG7g80nllAOOKAHlBu+8R709SS3lnkHoT0/Gq8UgViMEkdz0zSSPsUGRMF+R+HWkMssVJ2knIPGOlNUkLwen9aYZZAi7eCR6Z600PJJ97Ab3piP/9GrIi+UXxyeM063iV9+c8AgfpRJ/qfxFSWv8f4/0pFMQDnP+zUDttg8xQASwH55qx/8TVWX/j1H++v9aAJZCscQcKCfeqpkbIjXC5A5HXmrFx/x7iqn/LVfotAFss0YVASd+VJzzg8dsVpwRloTEzsQpGOeePfrWVL9+L/e/rWzb/df60AVpl2qm0kbs/h34qnHIxkZW+bnuAavT/di/H+VZ0X+ub8aAFhdpIzMx5YkdgKswKJphE/Rh2+uKp23/HsP941es/8Aj6X6f+zCgCsWKbihKndgEcEfSnHesIk3MW2buT3pknRv+un+NSP/AMew/wCuRoAcpO05wSVHJA/wqMSGRwGA+XpxTx93/gIqGP8A1lIC2pMbeWp4BPPfjFZ0FxJJdvEfurjpWgf9d/31/Ssi1/5CEv0FAM1opGOQSeMgcnsOKmQKIXDKG3HbzVaHq31b+VWR/qj/AL1AxZI0URGMbcnkDpUcoQIJFUBsgH3ycfyqeX7sP+9UE3+p/Ff/AEKgCCeeVZVGcgqSc/jTIpHG8ZPXFMuf9an+5/jRH1b/AHv8KYh5LB8Ek5x19xSmWRWXBzvODn25pr/6wfh/I01/vR/71JjLKHdHnAzmmuzHIJyF4FLH/qj9aa3Vvr/SmIDhQJABkc/pUccmUHA55PHrUj/6ofT+lV4vuD6CkMlceRIEiOAQD+pH9KQyOgXaeoNOuf8AXD6D/wBCNRP0T6UxFpcudxJ7GlcFypyRwenHSki6H6Cnf3fo386Qxq5EQkzzjP8AShWYNnrn1/H/AAoX/j3H+6P50g6j/PY0wLTW8QljIGNygnFVmJSKScHJ4XBxjBq+3+sh/wBxf5VQl/49JP8AeWgRXjdpS8bYwi7hgetOt7uVjsYKRjIyOlRW3+sl/wBwVFbff/A/zoAuELKcSqGGehFWBEhZYhwpGcDtj0qunX8auJ/rk/3TSGV4IRGHKlsHJxngU63lY3BTjHIp8f3G/H+dV7f/AI+z9WoENkkIO8AA4pwdmDFuT8v61FJ938Kcv3W/4B/WgZIiox8sjjn1pbdVBXA4yeOcdaWL/W/jRB1X6n+dAFKciDmMDKnr9alciaTa4HFQXvRv94VKv+uNMQ9VGwAcYNJuYhjnoQKev3P+BVF/C/8AvCmBPuKliMZxmkMrFHJwdvTNI38X+7TD/q5KQDSAAQOO1RzARhNv8YyR7+1St0P1/pUdz0h+lAD1C7mGPuuR9aeijG5fl256d8etNX77/wC/Ukf3G/4FTEVw5IU4AzyfyqbzHlQM57AfgarL0T6f0qaP/VD/AIDQAhd1fbnI96aMPLhh7fpQ/wDrf8+lIn+u/L+VAEc8hhXy1GQQOT1qyUXIHtVO96j/AHRV4/eH0NAAoHoDnB/Omzkxo0qHDLwDTh2/CmXX+of6mgCPAKbeygY/GhY1VpD124ABpR0b6LTh1l/z3pgVYyBN5agANniiQfMBnjb/AFpE/wCPlfx/lTpPvj/d/qKQj//Z"],
["KTM Duke 200","FBL1086J","KTM Duke 200","Street Bike","Class 2B","35","170","https://www.carousell.sg/p/ktm-duke-200-rental-%F0%9F%94%A5-p-plate-welcome-sin-ming-1442936045/","https://media.karousell.com/media/photos/products/2026/6/10/ktm_duke_200_rental__pplate_we_1781056022_8f132c55.jpg"],
["Honda Wave","FBQ6030K","Honda Wave","Commuter","Class 2B","25","140","https://www.carousell.sg/p/honda-wave-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1414712944/","https://media.karousell.com/media/photos/products/2026/5/15/honda_wave_rental__pplate_welc_1778868115_961f26d3.jpg"],
["Vespa LX150","FBJ9193R","Vespa LX150","Scooter","Class 2B","35","170","https://www.carousell.sg/p/vespa-lx150-150cc-for-rent-easy-ride-instant-bookin-1446862740/","https://media.karousell.com/media/photos/products/2026/6/30/vespa_lx150_150cc_for_rent__ea_1782827945_5316fab9.jpg"],
["Honda ADV150","FBR8683H","Honda ADV150","Scooter","Class 2B","35","170","https://www.carousell.sg/p/honda-adv150-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1427832341/","https://media.karousell.com/media/photos/products/2026/5/15/honda_adv150_rental__pplate_we_1778867657_dcc79e3a.jpg"],
["Aerox 2624","FBZ2624B","Yamaha Aerox 155","Scooter","Class 2B","30","170","https://www.carousell.sg/p/yamaha-aerox-155-keyless-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1443911373/","https://media.karousell.com/media/photos/products/2026/8/11/yamaha_aerox_155_keyless_renta_1786441513_edd35c5b.jpg"],
["Aerox 9118","FBQ9118Y","Yamaha Aerox 155","Scooter","Class 2B","30","170","https://www.carousell.sg/p/yamaha-aerox-155-keyless-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1432961995/","https://media.karousell.com/media/photos/products/2026/5/15/yamaha_aerox_155_keyless_renta_1778867891_ae51bf12.jpg"],
["Aerox 3224","FBR3224H","Yamaha Aerox 155","Scooter","Class 2B","30","170","https://www.carousell.sg/p/yamaha-aerox-155-keyless-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1432961995/","https://media.karousell.com/media/photos/products/2026/5/15/yamaha_aerox_155_keyless_renta_1778867891_ae51bf12.jpg"],
["Aerox 4860","FBR4860P","Yamaha Aerox 155 Keyless","Scooter","Class 2B","35","170","https://carousell.app.link/w6nen8V4v5b","https://media.karousell.com/media/photos/products/2026/8/11/yamaha_aerox_155_keyless_renta_1786441513_edd35c5b.jpg"],
["Aerox v2","FBS4752M","Yamaha Aerox 155 v2","Scooter","Class 2B","38","180","https://www.carousell.sg/p/yamaha-aerox-155-v2-keyless-rental-%F0%9F%94%A5-p-plate-welcome-grab-foodpanda-1447238165/","https://media.karousell.com/media/photos/products/2026/7/2/yamaha_aerox_155_v2_keyless_re_1782998914_8916cf79.jpg"],
["Yamaha X1R Yoshimura","FBD6933Z","Yamaha X1R","Sport / Commuter","Class 2B","40","200","https://www.carousell.sg/p/yamaha-x1r-yoshimura-pipe-%E2%80%93-bike-rental-class-2b-sporty-ride-1449660813/","https://media.karousell.com/media/photos/products/2026/7/14/yamaha_x1r_yoshimura_pipe__bik_1784030453_070359a0.jpg"],
["Yamaha Sniper T150","FBM4083S","Yamaha Sniper T150 / Y15 v1","Commuter","Class 2B","30","150","https://www.carousell.sg/p/yamaha-sniper-t150-%E2%80%93-daily-rental-fuel-efficient-class-2b-1452246044/","https://media.karousell.com/media/photos/products/2026/7/27/yamaha_sniper_t150__daily_rent_1785155589_d7920427.jpg"],
["Yamaha XMAX 300","FBZ4542R","Yamaha XMAX 300","Scooter","Class 2A","50","250","https://www.carousell.sg/p/yamaha-xmax-300-rental-%F0%9F%94%A5-young-riders-welcome-1454221964/","https://media.karousell.com/media/photos/products/2026/8/7/yamaha_xmax300_rental__young_r_1786077366_68dc3947.jpg"],
["Yamaha NMAX V2","FBU616P","Yamaha NMAX V2","Scooter","Class 2B","38","180","https://www.carousell.sg/p/yamaha-nmax-v2-ready-to-ride-1453746691/","https://media.karousell.com/media/photos/products/2026/8/4/yamaha_nmax_v2__ready_to_ride_1785845119_855cd6dd.jpg"],
["Yamaha XSR155","FBR9416G","Yamaha XSR155","Retro / Commuter","Class 2B","40","200","https://www.carousell.sg/p/yamaha-xsr155-%E2%80%93-retro-style-fuel-efficient-class-2b-daily-rental-1453744938/","https://media.karousell.com/media/photos/products/2026/8/4/yamaha_xsr155__retro_style__fu_1785844548_5cddc474.jpg"],
["Yamaha R15 V3","FBS8289H","Yamaha R15 V3","Sport Bike","Class 2B","35","170","https://www.carousell.sg/p/yamaha-r15-v3-sporty-fuel-efficient-well-maintained-1453746055/","https://media.karousell.com/media/photos/products/2026/8/4/yamaha_r15_v3__sporty__fuel_ef_1785844901_7e130d80.jpg"]
];
var faq=[
["What do I need to rent a motorcycle?","Bring your original NRIC/FIN or passport where applicable, a valid Singapore riding licence for the bike class, contact details, required payment proof and any documents requested before collection."],
["Are P-plate and younger riders welcome?","Yes, subject to the correct licence class, bike availability, riding history, agreement acceptance and insurance terms."],
["Is my booking confirmed immediately?","You can submit a booking request directly if the bike is available. The booking is only secured after DF Motohub reviews the required payment proof and prepares the agreement."],
["How much do I need to pay to secure a booking?","For same-day or next-day collection, the full rental fee and full security deposit must be paid before confirmation. For advance bookings, 50% of the security deposit is required to reserve the bike. This booking hold is strictly non-refundable and cannot be rescheduled or transferred."],
["Can I extend my rental?","Extensions must be requested before return time. They are subject to availability and payment before the extension is treated as active."],
["When is the security deposit refunded?","Security deposit review starts after return, inspection, payment reconciliation and checks for fines, ERP/tolls, damage, missing items, late return or other outstanding balances."]
];
var bikeStatus={};
var bikeStatusLoaded=false;
var bikeReviews={};
var bikeReviewsLoaded=false;
var selected=bikes[0];
var bookingBusy=false;
var SG_PUBLIC_HOLIDAYS={"2026-01-01":"New Year's Day","2026-02-17":"Chinese New Year","2026-02-18":"Chinese New Year","2026-03-21":"Hari Raya Puasa","2026-04-03":"Good Friday","2026-05-01":"Labour Day","2026-05-27":"Hari Raya Haji","2026-05-31":"Vesak Day","2026-08-09":"National Day","2026-08-10":"National Day observed","2026-11-08":"Deepavali","2026-11-09":"Deepavali observed","2026-12-25":"Christmas Day"};
var requestedBike="";
try{requestedBike=decodeURIComponent((location.search.match(/[?&]bike=([^&]+)/)||[])[1]||"").toUpperCase();if(requestedBike)selected=bikes.find(function(b){return b[1].toUpperCase()===requestedBike||b[0].toUpperCase()===requestedBike})||selected}catch(e){}
function queryParam(name){try{return new URLSearchParams(location.search).get(name)||""}catch(e){var m=location.search.match(new RegExp("[?&]"+name+"=([^&]+)"));return m?decodeURIComponent(m[1]||""):""}}
function partnerPayload(){var p={};["partner","code","partnerCode","channel"].forEach(function(k){var v=queryParam(k);if(v)p[k]=v});return p}
function hasLiveBikeStatus(){for(var k in bikeStatus){return true}return false}
function visibleBikes(){if(!hasLiveBikeStatus())return bikes.slice();return bikes.filter(function(b){return Object.prototype.hasOwnProperty.call(bikeStatus,b[1].toUpperCase())})}
function esc(s){return String(s||"").replace(/[&<>"]/g,function(c){return {"&":"&","<":"<",">":">",'"':"""}[c]})}
function wa(t){return WA_BASE+"?text="+encodeURIComponent(t)}
function path(){return (location.pathname.replace(/\/$/,"")||"/").toLowerCase()}
function money(v){var s=String(v||"").trim();return s.charAt(0)==="$"?s:"$"+s}
function totalFromMessage(t){var m=String(t||"").match(/Amount required now:\s*\$?([0-9,.]+)/i)||String(t||"").match(/Please PayNow\s*\$?([0-9,.]+)/i)||String(t||"").match(/Total payable:\s*\$?([0-9,.]+)/i);return m?m[1].replace(/,/g,""):""}
function fileData(file){return new Promise(function(resolve,reject){if(!file)return resolve({});var r=new FileReader();r.onload=function(){resolve({fileBase64:String(r.result||""),fileName:file.name||"payment-proof",mimeType:file.type||"application/octet-stream"})};r.onerror=function(){reject(new Error("Could not read the selected file."))};r.readAsDataURL(file)})}
function collectDocs(form){function take(name,kind){var input=form.querySelector('[name="'+name+'"]');return Array.prototype.slice.call((input&&input.files)||[]).map(function(file){return{file:file,kind:kind}})}return take("nricFrontFiles","NRIC Front").concat(take("nricBackFiles","NRIC Back"),take("licenceFrontFiles","Driving Licence Front"),take("licenceBackFiles","Driving Licence Back"),take("licenceFiles","Driving Licence"))}
function docPayload(form,bookingId){var docs=collectDocs(form);var tooLarge=docs.filter(function(item){return item.file.size>4500000});if(tooLarge.length)return Promise.reject(new Error("Each NRIC/licence photo must be below 4.5MB. Please compress: "+tooLarge.map(function(item){return item.file.name}).join(", ")));return Promise.all(docs.map(function(item){return fileData(item.file).then(function(file){file.kind=item.kind;return file})})).then(function(documents){return{bookingId:bookingId,documents:documents}})}
function api(action,payload){payload=Object.assign(partnerPayload(),payload||{});payload.action=action;var body=JSON.stringify(payload);if(window.fetch){return fetch(API,{method:"POST",mode:"cors",credentials:"omit",headers:{"Content-Type":"text/plain;charset=utf-8"},body:body}).then(function(r){return r.json()})}return new Promise(function(resolve,reject){var x=new XMLHttpRequest();x.open("POST",API,true);x.setRequestHeader("Content-Type","text/plain;charset=utf-8");x.onload=function(){try{resolve(JSON.parse(x.responseText||"{}"))}catch(e){reject(new Error("Booking server replied in an unexpected format."))}};x.onerror=function(){reject(new Error("Could not reach booking server."))};x.send(body)})}
function readBikeStatusCache(){try{var raw=localStorage.getItem(BIKE_STATUS_CACHE_KEY);if(!raw)return null;var data=JSON.parse(raw);if(!data||!data.savedAt||!data.bikes)return null;if(Date.now()-data.savedAt>BIKE_STATUS_CACHE_MS)return null;return data}catch(e){return null}}
function readBikeStatusCacheAny_(){try{var raw=localStorage.getItem(BIKE_STATUS_CACHE_KEY);if(!raw)return null;var data=JSON.parse(raw);if(!data||!data.bikes)return null;return data}catch(e){return null}}
function writeBikeStatusCache(data){try{if(data&&data.bikes)localStorage.setItem(BIKE_STATUS_CACHE_KEY,JSON.stringify({ok:true,savedAt:Date.now(),bikes:data.bikes}))}catch(e){}}
function applyBikeStatusData(data,fromCache){if(!data||!data.bikes)return false;if(!data.ok)data.ok=true;bikeStatus={};data.bikes.forEach(function(b){bikeStatus[String(b.vrn||"").toUpperCase()]=normalizeStatus(b)});bikes.forEach(function(b){var vrn=String(b[1]||"").toUpperCase();if(vrn==="FY4749U"&&!bikeStatus[vrn])bikeStatus[vrn]={vrn:b[1],bookable:true,availabilityNow:"Available now"}});bikeStatusLoaded=true;if(!requestedBike){selected=orderedBikes().filter(function(b){return (bikeStatus[b[1].toUpperCase()]||{}).bookable!==false})[0]||selected}var p=path();if(p==="/book"){refreshBookBikesInPlace();var status=document.querySelector("#dfmBookStatus");if(status&&fromCache&&!/Selected /i.test(status.textContent||"")){status.className="dfm-status";status.textContent="Live availability loaded. Refreshing latest sheet status in the background."}return true}if(p==="/"||p==="/home"){render(true)}return true}
function header(){return '<header class="dfm-head"><div class="dfm-wrap dfm-head-in"><a class="dfm-logo" href="/"><img src="'+LOGO+'" alt="DF Motohub"></a><nav class="dfm-nav"><a href="/">Home</a><a href="/#bikes">Bikes</a><a href="/book">Book</a><a href="/faq">FAQ</a><a href="/contact">Contact</a><a class="dfm-btn green" href="'+wa("Hi DF Motohub, I would like to check motorcycle rental availability.")+'">WhatsApp</a></nav></div></header>'}
function footer(){return '<footer class="dfm-foot"><div class="dfm-wrap"><div class="dfm-foot-grid"><div><img src="'+LOGO+'" alt="DF Motohub"><p>Motorcycle rental, retail and workshop support for Singapore riders.</p></div><div><h3>Rental</h3><div class="dfm-foot-links"><a href="/book">Book a motorcycle</a><a href="/#bikes">Bike categories</a><a href="/faq">Rental FAQ</a></div></div><div><h3>Policies</h3><div class="dfm-foot-links"><a href="/terms-and-conditions">Terms and Conditions</a><a href="/refund-cancellation-policy">Refund and Cancellation</a><a href="/shipping-delivery-collection-policy">Shipping, Delivery and Collection</a></div></div><div><h3>Contact</h3><div class="dfm-foot-links"><a href="tel:+6588533518">'+PHONE+'</a><a href="'+wa("Hi DF Motohub, I need help with a rental.")+'">WhatsApp DF Motohub</a><span>32 Sin Ming Drive #01-331 (S)575706</span></div></div></div><div class="dfm-fine">Copyright 2026 DF Motohub Pte Ltd. All rights reserved.</div></div></footer>'}
function nextDateLabel(s){var d=s.nextAvailableDate||s.currentUntil||"";return d?("Available from "+d):""}
function normalizeStatus(s){s=s||{};var now=String(s.availabilityNow||"").toLowerCase();var notes=String(s.notes||s.availabilityNotes||"").toLowerCase();if(/out on rental/.test(now)){s.bookable=false;s.reason=nextDateLabel(s)||"This bike is currently out on rental.";s.availabilityNow=s.reason}if(/renewal hold|expired - renew now/.test(now+" "+notes)){s.bookable=false;s.reason=s.reason||"Renewal/admin clearance required before booking.";s.availabilityNow=s.availabilityNow||"Renewal hold"}if(/missing expiry info/.test(notes)){s.bookable=false;s.reason=s.reason||"Expiry information needs to be checked before online booking.";s.availabilityNow=s.availabilityNow||"Admin check needed"}return s}
function parseReleaseText(v){var t=String(v||"").replace(/^Available from\s*/i,"").trim();if(!t)return 0;var m=t.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})(?:\s+(\d{1,2})(?::(\d{2}))?\s*(AM|PM)?)?/i);if(m){var h=Number(m[4]||0),min=Number(m[5]||0),ap=String(m[6]||"").toUpperCase();if(ap==="PM"&&h<12)h+=12;if(ap==="AM"&&h===12)h=0;return new Date(Number(m[3]),Number(m[2])-1,Number(m[1]),h,min,0,0).getTime()}var iso=t.match(/^(\d{4})-(\d{2})-(\d{2})(?:[ T](\d{1,2})(?::(\d{2}))?)?/);if(iso)return new Date(Number(iso[1]),Number(iso[2])-1,Number(iso[3]),Number(iso[4]||0),Number(iso[5]||0),0,0).getTime();var d=Date.parse(t);return isNaN(d)?0:d}
function bikeReleaseMs(s){s=s||{};var n=Number(s.nextAvailableReleaseMs||0);if(n)return n;return parseReleaseText(s.nextAvailableDate||s.availabilityNow||s.currentUntil||s.reason||"")}
function selectedStartMs(){var f=document.querySelector("#dfmBookForm");if(!f||!f.startDate||!f.collectionTime||!f.startDate.value||!f.collectionTime.value)return 0;var p=f.startDate.value.split("-"),tm=f.collectionTime.value.split(":");return new Date(Number(p[0]),Number(p[1])-1,Number(p[2]),Number(tm[0]||0),Number(tm[1]||0),0,0).getTime()}
function isFutureReleaseStatus(s){return /available from|out on rental/i.test(String((s&&s.availabilityNow)||"")+" "+String((s&&s.reason)||""))}
function bikeSelectable(b){if(!bikeStatusLoaded)return false;var s=bikeStatus[b[1].toUpperCase()]||{};if(s.bookable!==false)return true;if(!isFutureReleaseStatus(s))return false;var start=selectedStartMs(),release=bikeReleaseMs(s);return !!(start&&release&&start>=release)}
function bikeBlockedMessage(s){s=s||{};if(isFutureReleaseStatus(s)){var label=nextDateLabel(s)||s.availabilityNow||s.reason||"the next available timing";return "This motorcycle can be booked for collection on or after "+label.replace(/^Available from\s*/i,"")+". Please choose a collection date/time after that, then select the motorcycle again."}return s.reason||"This motorcycle is not bookable right now."}
function nextBookingLabel(s,ok){s=s||{};var start=s.nextBookingStart||s.nextBookingFrom||s.nextBookingDate||s.upcomingBookingStart||s.nextStart||s.next_start||"";var end=s.nextBookingEnd||s.nextBookingUntil||s.upcomingBookingEnd||s.nextEnd||s.next_end||"";var until=s.currentUntil||s.nextAvailableDate||"";if(!until&&/^Available from\s+/i.test(String(s.availabilityNow||"")))until=String(s.availabilityNow||"").replace(/^Available from\s+/i,"");var html="";if(!ok&&until)html+='<span class="dfm-next-booking"><strong>Currently rented until:</strong> '+esc(until)+'</span>';if(start&&end)html+='<span class="dfm-next-booking"><strong>Next booking:</strong> '+esc(start)+' to '+esc(end)+'</span>';else if(start)html+='<span class="dfm-next-booking"><strong>Next booking:</strong> '+esc(start)+'</span>';return html}
function statusLabel(b){var s=bikeStatus[b[1].toUpperCase()];if(!bikeStatusLoaded||!s)return '<span class="dfm-status-chip bad">Checking live availability...</span>';var ok=bikeSelectable(b);return '<span class="dfm-status-chip '+(ok?'ok':'bad')+'">'+esc(ok?(s.bookable===false?"Available for selected time":(s.availabilityNow||"Available now")):(s.availabilityNow||s.reason||"Not bookable now"))+'</span>'+nextBookingLabel(s,ok)}
function reviewStars(n){n=Math.max(1,Math.min(5,Number(n)||0));return "★★★★★".slice(0,n)+"☆☆☆☆☆".slice(0,5-n)}
function reviewRows(vrn){return bikeReviews[String(vrn||"").toUpperCase()]||[]}
function reviewAverage(rows){if(!rows.length)return 0;var total=rows.reduce(function(sum,r){return sum+(Number(r.rating)||0)},0);return Math.round(total/rows.length*10)/10}
function reviewSummary(vrn){var rows=reviewRows(vrn);if(!rows.length)return "";var avg=reviewAverage(rows),key=esc(String(vrn||"").toUpperCase());return '<div class="dfm-review-summary"><div class="dfm-review-score"><span class="dfm-stars">'+esc(reviewStars(Math.round(avg)))+'</span><small>'+esc(avg.toFixed(1))+' / 5 from '+rows.length+' review'+(rows.length>1?'s':'')+'</small></div><button class="dfm-review-toggle" type="button" data-review-vrn="'+key+'">View reviews</button></div>'}
function publicReviewList(vrn){var rows=reviewRows(vrn);if(!rows.length)return '<div class="dfm-public-reviews"><div class="dfm-public-review"><p>No reviews yet.</p></div></div>';return '<div class="dfm-public-reviews">'+rows.map(function(r){var name=r.customerName||"DF rider";var txt=String(r.reviewText||"");return '<div class="dfm-public-review"><div class="dfm-public-review-head"><span>'+esc(name)+'</span><span class="dfm-stars">'+esc(reviewStars(r.rating))+'</span></div><p>'+esc(txt)+'</p></div>'}).join("")+'</div>'}
function dateScore(v){var d=Date.parse(String(v||"").replace(/-/g," "));return isNaN(d)?9999999999999:d}
function bikeScore(b){if(!bikeStatusLoaded)return[2,0,bikes.indexOf(b)];var s=bikeStatus[b[1].toUpperCase()]||{};var label=String(s.availabilityNow||"").toLowerCase();if(s.bookable===false)return[bikeSelectable(b)?1:3,bikeReleaseMs(s)||dateScore(s.nextAvailableDate||s.currentUntil||label),bikes.indexOf(b)];if(/available now/.test(label))return[0,0,bikes.indexOf(b)];return[1,dateScore(s.nextAvailableDate||s.currentUntil||label),bikes.indexOf(b)]}
function orderedBikes(){return visibleBikes().sort(function(a,b){var x=bikeScore(a),y=bikeScore(b);return x[0]-y[0]||x[1]-y[1]||x[2]-y[2]})}
function dateParts(v){var m=String(v||"").match(/^(\d{4})-(\d{2})-(\d{2})$/);return m?new Date(Number(m[1]),Number(m[2])-1,Number(m[3])):null}
function operatingWindow(dateStr){var d=dateParts(dateStr);if(!d)return{ok:false,msg:"Please choose the start date before selecting collection time."};var ph=SG_PUBLIC_HOLIDAYS[dateStr];if(ph)return{ok:false,msg:"Collection is closed on public holidays ("+ph+"). Please choose another collection date."};var day=d.getDay();if(day===0)return{ok:false,msg:"Collection is closed on Sundays. Please choose Monday to Saturday within operating hours."};if(day===6)return{ok:true,min:"09:00",max:"14:00",label:"Saturday 9am to 2pm"};return{ok:true,min:"09:00",max:"18:00",label:"Monday to Friday 9am to 6pm"}}
function timeInWindow(timeStr,win){if(!win||!win.ok)return false;return String(timeStr||"")>=win.min&&String(timeStr||"")<=win.max}
function collectionError(form){var start=form.startDate&&form.startDate.value;var time=form.collectionTime&&form.collectionTime.value;var win=operatingWindow(start);if(!win.ok)return win.msg;if(!time)return"Please choose a collection time. Operating hours: Monday-Friday 9am-6pm, Saturday 9am-2pm. Sunday and PH closed.";if(!timeInWindow(time,win))return"Collection time must be within "+win.label+". Sunday and Singapore public holidays are closed.";return""}
function updateCollectionTimeLimits(form){if(!form||!form.collectionTime)return;var win=operatingWindow(form.startDate&&form.startDate.value);if(win.ok){form.collectionTime.min=win.min;form.collectionTime.max=win.max;form.collectionTime.disabled=false;form.collectionTime.title="Collection hours: "+win.label}else{form.collectionTime.removeAttribute("min");form.collectionTime.removeAttribute("max");form.collectionTime.disabled=false;form.collectionTime.title=win.msg}}
function bikeCard(b,option){var s=bikeStatus[b[1].toUpperCase()]||{};var bookable=bikeSelectable(b);var day=s.oneDayRate||b[5];var week=s.oneWeekRate||b[6];var bookLink=bookable?'<a class="dfm-btn green" href="/book?bike='+encodeURIComponent(b[1])+'">Book</a>':'<span class="dfm-btn ghost" aria-disabled="true">'+(bikeStatusLoaded?'Not bookable now':'Checking...')+'</span>';var common='<img class="dfm-bike-photo" src="'+esc(b[8])+'" alt="'+esc(b[0])+'" width="800" height="600" loading="lazy" decoding="async" fetchpriority="low" data-stable-vrn="'+esc(b[1])+'"><div class="'+(option?'dfm-bike-body':'dfm-bike-body')+'"><b>'+esc(b[0])+'</b><span>'+esc(b[1])+' - '+esc(b[4])+' - '+esc(b[2])+'</span>'+statusLabel(b)+'<div class="dfm-chip-row"><span class="dfm-chip">'+esc(b[3])+'</span><span class="dfm-chip">'+esc(money(day))+'/day</span><span class="dfm-chip">'+esc(money(week))+'/week</span></div>'+reviewSummary(b[1]);if(option)return common+'</div>';return common+'<div class="dfm-bike-links">'+bookLink+'<a class="dfm-btn ghost" href="'+esc(b[7])+'" target="_blank" rel="noopener">Listing</a></div></div>'}
function home(){document.title="DF Motohub | Motorcycle Rental Singapore";return header()+'<main><section class="dfm-hero home" style="--dfm-hero-bg:url('+HERO_STOCK+')"><div class="dfm-wrap dfm-hero-grid"><div><p class="dfm-kicker">Motorcycle rental Singapore</p><h1>Book the right rental bike without the messy back-and-forth.</h1><p class="dfm-lead">Browse the rental fleet, choose your bike, submit your details online and let DF Motohub prepare payment proof review, agreement follow-up and collection.</p><div class="dfm-actions"><a class="dfm-btn" href="/book">Book available bikes</a><a class="dfm-btn green" href="'+wa("Hi DF Motohub, I want to check bike availability.")+'">WhatsApp availability</a></div></div></div></section><section class="dfm-band white" id="bikes"><div class="dfm-wrap"><div class="dfm-section-head"><div><p class="dfm-kicker">Rental fleet</p><h2>Browse by bike type.</h2><p>Photos are matched from the rental listings. Available bikes are shown first after the live sheet status loads.</p></div><a class="dfm-btn ghost" href="/book">Open booking portal</a></div><div class="dfm-grid cols-4"><div class="dfm-card dark"><h3>Commuter</h3><p>Wave, Jupiter and daily-use bikes.</p><div class="dfm-rate">from $25/day</div></div><div class="dfm-card dark"><h3>Scooter</h3><p>Aerox, ADV150 and Vespa options.</p><div class="dfm-rate">from $30/day</div></div><div class="dfm-card dark"><h3>Street bikes</h3><p>KTM Duke and similar Class 2B bikes.</p><div class="dfm-rate">from $35/day</div></div><div class="dfm-card dark"><h3>CB400 / Class 2A</h3><p>Spec 3, Revo and CB400X rentals.</p><div class="dfm-rate">from $45/day</div></div></div><div class="dfm-grid cols-3" style="margin-top:14px">'+orderedBikes().map(function(b){var s=bikeStatus[b[1].toUpperCase()]||{};return '<article class="dfm-card dfm-bike-card" data-vrn="'+esc(b[1])+'" data-bookable="'+(bikeStatusLoaded&&s.bookable!==false)+'">'+bikeCard(b,false)+'</article>'}).join("")+'</div></div></section><section class="dfm-band"><div class="dfm-wrap"><div class="dfm-section-head"><div><p class="dfm-kicker">How rental works</p><h2>Simple flow, cleaner handover.</h2></div></div><div class="dfm-grid cols-4 dfm-process"><div class="dfm-card"><h3>Choose</h3><p>Pick a bike and rental period.</p></div><div class="dfm-card"><h3>Book</h3><p>Submit rider details and collection timing.</p></div><div class="dfm-card"><h3>Confirm</h3><p>Payment proof is reviewed and the agreement is prepared.</p></div><div class="dfm-card"><h3>Collect</h3><p>Bring original documents and inspect the bike.</p></div></div></div></section></main>'+footer()}
function faqPage(){document.title="FAQ | DF Motohub";return header()+'<main class="dfm-page"><div class="dfm-wrap"><p class="dfm-kicker">Rental help</p><h1>DF Motohub FAQ</h1><p class="dfm-page-lead">Clear answers before booking, collection and return.</p><div class="dfm-faq" style="margin-top:22px">'+faq.map(function(f,i){return '<details '+(i<3?'open':'')+'><summary>'+esc(f[0])+'</summary><p>'+esc(f[1])+'</p></details>'}).join("")+'</div></div></main>'+footer()}
function paynowQrBlock(){return '<div class="dfm-paynow-qr"><a href="'+esc(PAYNOW_QR_FILE)+'" target="_blank" rel="noopener"><img src="'+esc(PAYNOW_QR_IMG)+'" alt="DF Motohub PayNow QR code"></a><div><h4>PayNow QR before proof upload</h4><p>Save or screenshot this QR first. Pay the amount shown under <b>Amount required now</b>, then return here to upload your payment screenshot.</p><div class="dfm-paynow-actions"><a class="dfm-btn" href="'+esc(PAYNOW_QR_FILE)+'" target="_blank" rel="noopener">Open / save QR</a><a class="dfm-btn ghost" href="#dfmProofForm">Upload proof after payment</a></div></div></div><div class="dfm-payment-warning">Same-day and next-day bookings require full rental plus full security deposit before confirmation. Advance bookings require 50% of the security deposit as a strictly non-refundable booking hold. No rescheduling or transfer is allowed for this booking hold.</div>'}
function proofPanel(){return '<div class="dfm-proof-panel" id="dfmProofPanel"><h3>Secure your booking</h3><p>Your details are saved first. Pay only the amount shown below, then upload the screenshot so DF Motohub can review and secure the booking.</p>'+paynowQrBlock()+'<div class="dfm-payment-box" id="dfmPaymentBox"></div><form class="dfm-proof-form" id="dfmProofForm"><label>Booking ID<input name="bookingId" placeholder="e.g. DFR-2026-0109" required><span class="dfm-doc-note">Use the booking ID shown after submission. If you left the page, reopen this booking page and enter it here before uploading proof.</span></label><div class="dfm-form-row"><label>Amount paid<input name="amount" inputmode="decimal" placeholder="e.g. 85"></label><label>Payment date<input name="paymentDate" type="date"></label></div><label>Reference / note<input name="reference" placeholder="PayNow ref, sender name, last 4 digits, etc."></label><label>Payment screenshot<input name="proofFile" type="file" accept="image/*,.pdf" required></label><div class="dfm-status" id="dfmProofStatus">Upload the screenshot after payment. Booking is confirmed only after DF Motohub reviews the proof.</div><button class="dfm-btn green" type="submit">Submit payment proof</button></form></div>'}
function reviewBikeOptions(){return orderedBikes().map(function(b){return '<option value="'+esc(b[1])+'" data-model="'+esc(b[2])+'" '+(b[1]===selected[1]?'selected':'')+'>'+esc(b[0])+' - '+esc(b[1])+' - '+esc(b[2])+'</option>'}).join("")}
function reviewPanel(){return '<div class="dfm-review-panel" id="dfmBikeReviewPanel"><h3>Review a rental bike</h3><p>Rented from DF Motohub before? Leave feedback for the specific bike you rode. Reviews with publish consent appear on the site automatically. Mobile numbers are kept internal.</p><form class="dfm-review-form" id="dfmBikeReviewForm"><label>Bike reviewed<select name="selectedVrn" required>'+reviewBikeOptions()+'</select></label><input type="hidden" name="bikeModel" value="'+esc(selected[2])+'"><div class="dfm-form-row"><label>Rating<select name="rating" required><option value="">Choose rating</option><option value="5">5 - Excellent</option><option value="4">4 - Good</option><option value="3">3 - Okay</option><option value="2">2 - Needs improvement</option><option value="1">1 - Poor</option></select></label><label>Booking ID, if you remember<input name="bookingId" placeholder="e.g. DFR-2026-0109"></label></div><div class="dfm-form-row"><label>Your name<input name="customerName" autocomplete="name"></label><label>Mobile number<input name="mobile" inputmode="tel" autocomplete="tel" placeholder="+65 8xxx xxxx"></label></div><label>Your review<textarea name="review" required placeholder="Share how the bike felt, condition, comfort, pickup/return experience, or anything DF Motohub should improve."></textarea></label><label class="dfm-review-consent"><input name="consentToPublish" type="checkbox" value="Yes"> I allow DF Motohub to publish this review. My mobile number will not be published.</label><div class="dfm-status" id="dfmReviewStatus">Choose the bike and submit your review. Reviews with publish consent appear automatically.</div><button class="dfm-btn green" type="submit">Submit bike review</button></form></div>'}
function book(){document.title="Book a Motorcycle Rental | DF Motohub";var cards=orderedBikes().map(function(b){var bookable=bikeSelectable(b);return '<article class="dfm-bike-option" data-vrn="'+esc(b[1])+'" data-model="'+esc(b[2])+'" data-name="'+esc(b[0])+'" data-bookable="'+bookable+'" data-selected="'+(b[1]===selected[1]?'true':'false')+'" aria-disabled="'+(!bookable)+'">'+bikeCard(b,true)+'</article>'}).join("");return header()+'<main><section class="dfm-hero"><div class="dfm-wrap dfm-hero-grid"><div><p class="dfm-kicker">Online rental booking</p><h1>Book your rental bike.</h1><p class="dfm-lead">Select your preferred available motorcycle, complete the rider information, and upload the required documents. Once submitted, please make sure the required payment to confirm and secure your booking.</p></div><div class="dfm-card dark"><h3>*Important*</h3><p>Bookings are <b>not reserved</b> until payment has been received. If payment is <b>not received within 10 minutes</b> of submitting the form, your booking request will be automatically released, and the motorcycle will remain available on a <b>first-come, first served</b> basis. Reservations are only confirmed upon successful receipt of payment via the portal.</p></div></div></section><section class="dfm-page"><div class="dfm-wrap dfm-two dfm-book-two"><section class="dfm-card"><h2>Available bikes</h2><p class="dfm-page-lead">Motorcycle availability is updated in real time. Only available motorcycles can be selected. If a motorcycle is currently rented or reserved, the next available date will be shown.</p><div class="dfm-bike-select">'+cards+'</div></section><aside class="dfm-side dfm-book-side"><h2>Hirer details</h2><p class="dfm-page-lead">Fill in your rental details and upload clear photos of your NRIC/FIN and driving licence. Your booking is secured only after payment proof is reviewed.</p><form class="dfm-book-form" id="dfmBookForm"><div class="dfm-form-row"><label>Start date<input name="startDate" type="date" required></label><label>Return date<input name="endDate" type="date" required></label></div><div class="dfm-form-row"><label>Collection time<input name="collectionTime" type="time" required></label><label>Licence class<select name="licenceClass"><option>Class 2A</option><option>Class 2B</option><option>Class 2</option></select></label></div><div class="dfm-form-row"><label>Full name<input name="customerName" autocomplete="name" required></label><label>Mobile number<input name="mobile" inputmode="tel" autocomplete="tel" required placeholder="+65 8xxx xxxx"></label></div><div class="dfm-form-row"><label>Email<input name="email" type="email" autocomplete="email"></label><label>NRIC / FIN<input name="nric" autocomplete="off"></label></div><div class="dfm-form-row"><label>Date of birth<input name="dob" type="date"></label><label>Licence issue date<input name="licenceIssueDate" type="date"></label></div><div class="dfm-form-row"><label>NRIC / FIN - front image<input name="nricFrontFiles" type="file" accept="image/*,.pdf" multiple required><span class="dfm-doc-note">Upload a clear photo or PDF of the front. You may select more than one file if needed.</span></label><label>NRIC / FIN - back image<input name="nricBackFiles" type="file" accept="image/*,.pdf" multiple required><span class="dfm-doc-note">Upload a clear photo or PDF of the back. You may select more than one file if needed.</span></label></div><div class="dfm-form-row"><label>Driving licence - front image<input name="licenceFrontFiles" type="file" accept="image/*,.pdf" multiple required><span class="dfm-doc-note">Upload the front of your driving licence. Multiple files accepted if the image is split or unclear.</span></label><label>Driving licence - back image<input name="licenceBackFiles" type="file" accept="image/*,.pdf" multiple required><span class="dfm-doc-note">Upload the back of your driving licence. Add extra files here if needed.</span></label></div><div class="dfm-address-grid"><label>Postal Code:<input name="postalCode" inputmode="numeric" autocomplete="postal-code"></label><label>Address Type:<select name="addressType"><option value="">Please Select</option><option>HDB</option><option>Condo</option><option>Landed</option><option>Commercial</option><option>Industrial</option><option>Other</option></select></label><label>Street Name:<input name="streetName" autocomplete="address-line1" placeholder="-"></label><label>Blk/House No.:<input name="blockHouseNo" autocomplete="address-line2" placeholder="-"></label><label>Unit No.:<span class="dfm-unit-row"><span>#</span><input name="unitLevel" inputmode="numeric" aria-label="Unit level"><span>-</span><input name="unitNumber" inputmode="numeric" aria-label="Unit number"></span></label><label>Building Name:(Optional):<input name="buildingName" autocomplete="address-line3"></label></div><input type="hidden" name="address"><label>Notes<textarea name="notes" placeholder="Delivery use, preferred collection details, questions, etc."></textarea></label><input type="hidden" name="selectedVrn" value="'+esc(selected[1])+'"><input type="hidden" name="bikeModel" value="'+esc(selected[2])+'"><input type="hidden" name="purpose" value="Portal booking"><div class="dfm-status" id="dfmBookStatus">'+(bikeStatusLoaded?'Selected '+esc(selected[0])+' ('+esc(selected[1])+'). Enter dates and submit to check availability.':'Checking live bike availability from DF Motohub Main Sheet. Please wait before selecting a bike.')+'</div><button class="dfm-btn" type="submit" '+(!bikeStatusLoaded?'disabled':'')+'>'+(bikeStatusLoaded?'Check availability and book':'Loading live availability...')+'</button></form>'+proofPanel()+reviewPanel()+'<div class="dfm-before-collection"><h2>Before collection</h2><ul><li>Payment proof must be reviewed before the bike is reserved.</li><li>Same-day or next-day collection requires full rental plus full security deposit.</li><li>Advance bookings require 50% of the security deposit as a strictly non-refundable booking hold. No rescheduling or transfer is allowed.</li><li>Bring your original NRIC/FIN and riding licence for verification.</li><li>The remaining balance, if any, must be cleared before handover.</li></ul><button class="dfm-btn" type="button" id="dfmOpenProofUpload">Already paid? Upload proof</button><a class="dfm-btn green" href="'+wa("Hi DF Motohub, I need help with online booking.")+'">Chat with DF</a></div></aside></div></section></main>'+footer()}
function replaceStatusChip(node,b){var old=node.querySelector(".dfm-status-chip");if(!old)return;Array.prototype.slice.call(node.querySelectorAll(".dfm-next-booking")).forEach(function(oldExtra){oldExtra.remove()});var tmp=document.createElement("div");tmp.innerHTML=statusLabel(b);var frag=document.createDocumentFragment();while(tmp.firstChild)frag.appendChild(tmp.firstChild);old.replaceWith(frag)}
function replacePublicReviews(node,b,limit){var body=node.querySelector(".dfm-bike-body");if(!body)return;Array.prototype.slice.call(body.querySelectorAll(".dfm-public-reviews,.dfm-review-summary")).forEach(function(old){old.remove()});var html=reviewSummary(b[1]);if(html)body.insertAdjacentHTML("beforeend",html)}
function openReviewModal(vrn){var rows=reviewRows(vrn),bike=bikes.find(function(b){return String(b[1]).toUpperCase()===String(vrn||"").toUpperCase()});var existing=document.querySelector(".dfm-review-modal");if(existing)existing.remove();var title=bike?(bike[0]+" - "+bike[1]):String(vrn||"Bike");document.body.insertAdjacentHTML("beforeend",'<div class="dfm-review-modal" role="dialog" aria-modal="true"><div class="dfm-review-dialog"><div class="dfm-review-dialog-head"><div><h3>'+esc(title)+'</h3><p>'+esc(rows.length+' review'+(rows.length===1?'':'s'))+'</p></div><button class="dfm-review-close" type="button" aria-label="Close reviews">×</button></div>'+publicReviewList(vrn)+'</div></div>');var modal=document.querySelector(".dfm-review-modal");modal.addEventListener("click",function(e){if(e.target===modal||e.target.closest(".dfm-review-close"))modal.remove()});document.addEventListener("keydown",function close(e){if(e.key==="Escape"&&document.body.contains(modal)){modal.remove();document.removeEventListener("keydown",close)}})}
window.DFM_OPEN_REVIEW=openReviewModal;
function wireReviewToggles(root){if(!document.documentElement.getAttribute("data-review-delegate")){document.documentElement.setAttribute("data-review-delegate","true");document.addEventListener("click",function(e){var btn=e.target&&e.target.closest&&e.target.closest(".dfm-review-toggle");if(!btn)return;e.preventDefault();e.stopPropagation();openReviewModal(btn.getAttribute("data-review-vrn"))},true)}Array.prototype.slice.call((root||document).querySelectorAll(".dfm-review-toggle")).forEach(function(btn){btn.setAttribute("data-wired","true")})}
function updateBikeNode(node,b,option){var bookable=bikeSelectable(b);node.setAttribute("data-bookable",String(bookable));node.setAttribute("data-selected",String(b[1]===selected[1]));if(option)node.setAttribute("aria-disabled",String(!bookable));var img=node.querySelector(".dfm-bike-photo");if(img){img.setAttribute("src",b[8]);img.setAttribute("alt",b[0]);img.setAttribute("width","800");img.setAttribute("height","600");img.setAttribute("loading","lazy");img.setAttribute("decoding","async");img.setAttribute("fetchpriority","low");img.setAttribute("data-stable-vrn",b[1])}replaceStatusChip(node,b);replacePublicReviews(node,b,option?1:2)}
function refreshBookBikesInPlace(){if(path()!=="/book")return false;var grid=document.querySelector(".dfm-bike-select");if(!grid)return false;var nodes={};Array.prototype.slice.call(grid.querySelectorAll(".dfm-bike-option")).forEach(function(n){var vrn=String(n.getAttribute("data-vrn")||"").toUpperCase();if(vrn)nodes[vrn]=n});var keep={};var frag=document.createDocumentFragment();orderedBikes().forEach(function(b){var vrn=b[1].toUpperCase();keep[vrn]=true;var node=nodes[vrn];if(!node){var bookable=bikeSelectable(b);node=document.createElement("article");node.className="dfm-bike-option";node.setAttribute("data-vrn",b[1]);node.setAttribute("data-model",b[2]);node.setAttribute("data-name",b[0]);node.innerHTML=bikeCard(b,true);node.setAttribute("aria-disabled",String(!bookable))}updateBikeNode(node,b,true);frag.appendChild(node)});grid.appendChild(frag);Array.prototype.slice.call(grid.querySelectorAll(".dfm-bike-option")).forEach(function(n){var vrn=String(n.getAttribute("data-vrn")||"").toUpperCase();if(vrn&&!keep[vrn])n.remove()});var form=document.querySelector("#dfmBookForm"),btn=form&&form.querySelector("button[type=submit]"),status=document.querySelector("#dfmBookStatus");if(btn&&!bookingBusy){btn.disabled=!bikeStatusLoaded;btn.textContent=bikeStatusLoaded?"Check availability and book":"Loading live availability..."}if(status&&bikeStatusLoaded&&/Checking live bike availability/i.test(status.textContent||"")){status.className="dfm-status";status.textContent="Selected "+selected[0]+" ("+selected[1]+"). Enter dates and submit to check availability."}syncReviewBike();wireReviewToggles(grid);return true}
var policyPages={
"terms-and-conditions":{title:"Terms and Conditions",doc:"DF Motohub Pte. Ltd. (UEN 202554383C)",lead:"These Terms and Conditions govern your use of DF Motohub's website and your purchase or booking of products and services from us.",sections:[
["About these terms",["These Terms and Conditions govern your use of DF Motohub's website and your purchase or booking of products and services from us. By submitting an order, making a booking or completing payment, you agree to these terms and any service-specific terms presented before payment.","For motorcycle rentals, the signed Rental Agreement and DF Motohub Supplementary Terms and Conditions also apply. Those documents contain the detailed operational, safety, insurance, vehicle-use and liability terms for the rental. If there is any inconsistency, the specific terms in the signed Rental Agreement will prevail, followed by the Supplementary Terms and Conditions, to the extent permitted by law."]],
["Eligibility and account information",["You must provide complete and accurate information when placing an order or booking. Motorcycle hirers must meet all applicable licensing, identity-verification, insurance and legal requirements. We may decline or cancel a transaction where information is incomplete, inaccurate, fraudulent or cannot be verified."]],
["Bookings and payments",["Prices are shown in Singapore dollars unless stated otherwise. Payment must be made through a payment method accepted at checkout, including an approved payment gateway or buy-now-pay-later provider where available.","A booking is not confirmed until the required payment has been received and DF Motohub issues a confirmation. Availability is subject to change until confirmation. Same-day or next-day rental bookings may require full payment in advance."]],
["Rental services",["The minimum motorcycle rental charge is three days. Vehicle availability, collection time, rental period, fees and security deposit will be stated during booking or in the Rental Agreement.","The hirer must inspect the vehicle at collection and promptly report any issue. The vehicle must be used lawfully, safely and only by an authorised rider. Detailed conditions concerning accidents, breakdowns, overseas use, servicing, insurance excess, damage, fines, late return and prohibited use are contained in the Rental Agreement and Supplementary Terms and Conditions."]],
["Use of vehicles",["A rental vehicle remains the property of DF Motohub. The hirer must return it at the agreed time, place and condition, fair wear and tear excepted. Additional amounts may become payable for extensions, late return, damage, loss, fines, recovery, fuel, breach or other charges allowed under the applicable rental documents."]],
["Physical products",["Where physical products are offered, product descriptions and images are provided as accurately as reasonably possible. Minor differences in colour, packaging or appearance may occur. Product availability is not guaranteed until the order is confirmed."]],
["Cancellations and refunds",["The Refund and Cancellation Policy forms part of these terms. In summary, payments made to secure a motorcycle rental booking are non-refundable when the customer cancels. A security deposit is separate from the booking payment and is generally refundable after the vehicle is returned, subject to deductions allowed under the Rental Agreement and Supplementary Terms and Conditions.","For physical products, any return or refund eligibility is governed by the Refund and Cancellation Policy and applicable Singapore law."]],
["Security deposits",["A rental security deposit is held as security and is not a payment toward the rental unless expressly agreed. DF Motohub may deduct outstanding amounts permitted under the rental documents before returning any balance."]],
["BNPL and payment-provider arrangements",["If you choose a buy-now-pay-later or other third-party payment service, you also agree to that provider's terms. Approval, payment schedules, credit limits, late fees and account decisions are controlled by the provider.","Any approved refund will be sent back through the original payment method where practicable. A refund from DF Motohub does not automatically cancel or amend your payment plan until the payment provider processes it. You remain responsible for scheduled instalments until the provider confirms otherwise."]],
["Website use and intellectual property",["You may use this website only for lawful personal or business transactions with DF Motohub. Website content, branding, photographs, graphics and text belong to DF Motohub or its licensors and may not be copied, republished or commercially used without permission."]],
["Third-party services",["Our website may link to payment processors, BNPL providers, signing services, maps or other third-party services. Their separate terms and privacy practices apply. DF Motohub is not responsible for outages or decisions made by those providers, except where liability cannot be excluded by law."]],
["Liability",["Nothing in these terms excludes rights or remedies that cannot lawfully be excluded. To the maximum extent permitted by law, DF Motohub is not responsible for indirect or consequential loss arising from website use, delayed third-party processing or circumstances outside our reasonable control."]],
["Privacy",["We collect, use and disclose personal data for purposes connected with bookings, payments, identity verification, vehicle management, service delivery, insurance, claims, fraud prevention, debt recovery and legal or regulatory compliance. Further details may be provided in our privacy notice or rental documents."]],
["Changes to these terms",["We may update these website terms from time to time. The version displayed when you place an order or booking will apply to that transaction unless a change is required by law or agreed with you."]],
["Governing law",["These terms are governed by the laws of Singapore. The courts of Singapore will have jurisdiction, subject to any rights that cannot be excluded under applicable law."]],
["Contact us",["DF Motohub Pte. Ltd.","32 Sin Ming Drive, Singapore 575706","Email: sales@dfmotohub.com"]]
]},
"refund-cancellation-policy":{title:"Refund and Cancellation Policy",doc:"DF Motohub Pte. Ltd. (UEN 202554383C)",lead:"This policy explains how cancellations, returns and refunds are handled for motorcycle rentals and physical products purchased from DF Motohub.",sections:[
["Scope of this policy",["This policy explains how cancellations, returns and refunds are handled for motorcycle rentals and physical products purchased from DF Motohub. It should be read together with our Website Terms and Conditions.","For rentals, the signed Rental Agreement and DF Motohub Supplementary Terms and Conditions also apply. They contain the detailed rules for deposits, damage, outstanding amounts, late return, early termination and other rental-related charges."]],
["Rental booking payments",["Payments made to secure or confirm a motorcycle rental booking are non-refundable if the customer cancels, changes their mind, does not attend collection, fails eligibility or verification checks, or cannot provide the required documents.","Same-day or next-day bookings may require full payment before confirmation. A rental that ends early at the customer's request does not automatically entitle the customer to a refund for the unused period."]],
["Customer cancellations",["To cancel a booking, contact DF Motohub as soon as possible and provide the booking reference and hirer's name. Cancellation does not remove any amount already due under the booking or rental documents.","Where a cancellation is made less than 24 hours before the agreed rental commencement time, the additional cancellation charge stated in the Supplementary Terms and Conditions may apply."]],
["Changes and rescheduling",["A request to change the rental dates, vehicle or collection time is subject to availability and DF Motohub's approval. Any rescheduling offered is a goodwill arrangement unless expressly stated otherwise. Price differences and applicable charges must be paid before the revised booking is confirmed."]],
["Cancellation by DF Motohub",["If DF Motohub cannot provide the booked vehicle, we may offer a reasonably suitable replacement vehicle, subject to availability. If we cancel the booking and do not provide an accepted replacement, the hire charges and security deposit paid for that booking will be refunded without interest. This will be the customer's remedy for the unavailable vehicle, except where applicable law provides otherwise."]],
["Security-deposit refunds",["The rental security deposit is separate from the non-refundable booking payment. Subject to the Rental Agreement and Supplementary Terms and Conditions, the remaining security-deposit balance will normally be refunded within 24 hours after the vehicle is returned and checked.","DF Motohub may deduct or withhold amounts for damage, outstanding rental, fines, penalties, fuel, late fees, towing, recovery, loss, administrative charges, breach of the rental documents or other amounts properly payable by the hirer. If a final amount cannot reasonably be determined within 24 hours, we may retain the affected portion while the matter is assessed and provide the outcome when available."]],
["Physical goods",["You may request a return for a physical product that is defective, damaged on delivery, materially different from the confirmed order or incorrectly supplied. Contact us promptly after receipt with your order number, a description of the issue, and clear photographs where relevant.","The item must be unused, in its original condition and returned with its original packaging and accessories unless this is unreasonable because of the defect. Change-of-mind returns are not guaranteed and require DF Motohub's written approval before the item is sent back.","Approved remedies may include repair, replacement, store credit or a refund, depending on the circumstances and applicable law. Delivery charges are refundable only where required by law or where the return results from our error."]],
["BNPL refunds",["Approved refunds for purchases made through a buy-now-pay-later provider will normally be returned through the same provider. Processing time depends on the provider and the customer's bank.","Customers must continue to meet scheduled instalments until the BNPL provider confirms that the payment plan has been adjusted or cancelled. Any provider late fee, account restriction or financing decision is governed by the provider's own terms."]],
["How to request a refund",["Email sales@dfmotohub.com with:"],["Your full name","Booking or order number","Contact number","Reason for the request","Supporting photographs or documents, if applicable","Preferred contact method"]],
["Refund timing and method",["Once approved, DF Motohub will initiate the refund through the original payment method where practicable. Banks, card issuers and BNPL providers may require additional processing time after we submit the refund.","Nothing in this policy limits any non-excludable rights available under Singapore law."]],
["Contact us",["DF Motohub Pte. Ltd.","32 Sin Ming Drive, Singapore 575706","Email: sales@dfmotohub.com"]]
]},
"shipping-delivery-collection-policy":{title:"Shipping, Delivery and Collection Policy",doc:"DF Motohub Pte. Ltd. (UEN 202554383C)",lead:"This policy explains how motorcycle collection and return, optional vehicle delivery, and delivery of physical products are handled.",sections:[
["Scope of this policy",["This policy explains how motorcycle collection and return, optional vehicle delivery, and delivery of physical products are handled. Rental arrangements are also subject to the signed Rental Agreement and DF Motohub Supplementary Terms and Conditions."]],
["Rental vehicle collection",["Motorcycle rentals are normally collected in person from DF Motohub's designated collection location in Singapore. The confirmed collection date, time and location will be provided with the booking confirmation or Rental Agreement.","The hirer must present the required identification, valid riding licence and any other requested documents before the vehicle is released. DF Motohub may refuse release where payment, verification, documentation or eligibility requirements have not been completed. Such refusal does not create a right to a refund where the issue is attributable to the customer.","The hirer should inspect the vehicle at handover and promptly record or report any visible issue. Responsibility for the vehicle begins when it is handed over or otherwise released to the hirer."]],
["Optional vehicle delivery",["Delivery or collection of a rental vehicle may be available by prior arrangement and may involve an additional charge. Availability, location, timing and cost must be confirmed in writing before payment or dispatch.","Delivery times are estimates and may be affected by traffic, weather, access restrictions or other circumstances outside our reasonable control. The hirer or an approved recipient must be present, complete verification and acknowledge handover."]],
["Vehicle return",["The vehicle must be returned at the date, time, location, fuel level and condition stated in the booking or Rental Agreement. A 15-minute grace period applies unless otherwise stated. Late return, after-hours return, unapproved extension, fuel shortfall, recovery or other applicable charges may be imposed under the Supplementary Terms and Conditions."]],
["Physical goods: order processing",["For physical products, orders are processed only after payment and required verification are complete. In-stock orders are generally prepared within one to three business days, excluding weekends and public holidays. This is an estimate, not a guaranteed dispatch time.","If an item is unavailable after payment, we will contact the customer to offer a replacement, revised fulfilment date or refund."]],
["Physical goods: delivery areas and timing",["Delivery is available only to addresses accepted during checkout or confirmed by DF Motohub. Estimated delivery times will be shown at checkout or communicated after confirmation. Delays may occur because of courier operations, peak periods, weather, customs, address issues or events outside our reasonable control."]],
["Delivery charges",["Any delivery or shipping charge will be displayed before checkout or confirmed before payment. Additional charges may apply for urgent delivery, restricted-access locations, redelivery, overseas delivery or special handling."]],
["Tracking and receipt",["Where tracking is available, the tracking details will be sent to the customer. The customer is responsible for providing an accurate address and contact number and for ensuring that someone is available to receive the parcel when required.","An order may be treated as delivered when the courier records successful delivery to the stated address, approved recipient or agreed safe place."]],
["Failed or refused delivery",["If delivery fails because of an incorrect address, unavailable recipient, refusal, restricted access or another customer-related reason, the customer may need to pay redelivery or return charges. We will contact the customer where reasonably possible to arrange the next step."]],
["Damaged, incorrect or missing goods",["Inspect the parcel promptly after delivery. If an item is damaged, incorrect or missing, contact sales@dfmotohub.com as soon as reasonably possible with the order number, photographs of the parcel and item, and a description of the issue. Keep all packaging until the matter is resolved."]],
["Risk and title",["Risk in a physical product passes to the customer upon delivery to the stated address or collection by the customer or authorised recipient. Ownership passes only after full payment has been received, subject to applicable law."]],
["Contact us",["DF Motohub Pte. Ltd.","32 Sin Ming Drive, Singapore 575706","Email: sales@dfmotohub.com"]]
]}
};
function policySlug(){var p=path().replace(/^\//,"");return p==="terms"?"terms-and-conditions":p}
function policyPage(kind){var p=policyPages[kind]||policyPages["terms-and-conditions"];document.title=p.title+" | DF Motohub";var cards=p.sections.map(function(s){var body=(s[1]||[]).map(function(t){return '<p>'+esc(t)+'</p>'}).join("");var list=s[2]?'<ul>'+s[2].map(function(t){return '<li>'+esc(t)+'</li>'}).join("")+'</ul>':"";return '<article class="dfm-legal-card"><h2>'+esc(s[0])+'</h2>'+body+list+'</article>'}).join("");return header()+'<main><section class="dfm-hero"><div class="dfm-wrap"><p class="dfm-kicker">DF Motohub policy</p><h1>'+esc(p.title)+'</h1><p class="dfm-lead">'+esc(p.doc)+'</p></div></section><section class="dfm-page"><div class="dfm-wrap"><p class="dfm-page-lead">'+esc(p.lead)+'</p><div class="dfm-legal" style="margin-top:22px">'+cards+'</div></div></section></main>'+footer()}
function info(kind){var title=kind==="contact"?"Contact DF Motohub":"DF Motohub rental terms";document.title=title+" | DF Motohub";return header()+'<main class="dfm-page"><div class="dfm-wrap dfm-two"><section><p class="dfm-kicker">'+esc(kind)+'</p><h1>'+esc(title)+'</h1><p class="dfm-page-lead">DF Motohub provides motorcycle rental support with online booking, payment proof review, agreement follow-up, collection and return checks.</p><div class="dfm-grid cols-2" style="margin-top:22px"><div class="dfm-card"><h3>Booking</h3><p>Availability and rider eligibility are checked before confirmation. A booking is secured only after the required payment proof is reviewed.</p></div><div class="dfm-card"><h3>Payment to reserve</h3><p>Same-day and next-day bookings require the full rental fee and full security deposit. Advance bookings require 50% of the security deposit as a strictly non-refundable booking hold. No rescheduling or transfer is allowed.</p></div><div class="dfm-card"><h3>Security deposit</h3><p>Security deposit review starts after the motorcycle is returned, inspected and checked for outstanding balances, fines, ERP/tolls, damage, missing items or late return.</p></div><div class="dfm-card"><h3>Location</h3><p>32 Sin Ming Drive #01-331 (S)575706.</p></div></div></section><aside class="dfm-side"><h2>Need help?</h2><p class="dfm-page-lead">Send your preferred bike and rental dates.</p><a class="dfm-btn green" href="'+wa("Hi DF Motohub, I need help with rental booking.")+'">WhatsApp DF</a></aside></div></main>'+footer()}
function showProofPanel(data){var panel=document.querySelector("#dfmProofPanel"),proof=document.querySelector("#dfmProofForm"),box=document.querySelector("#dfmPaymentBox");if(!panel||!proof)return;var msg=data.paymentMessage||"Booking ID: "+(data.bookingId||"")+"\nPlease make payment using the QR above, then upload your screenshot proof here.";panel.setAttribute("data-open","true");proof.bookingId.value=data.bookingId||"";proof.amount.value=totalFromMessage(msg);box.textContent=msg;if(data.paymentWhatsappUrl){box.innerHTML=esc(msg)+'\n\n<a href="'+esc(data.paymentWhatsappUrl)+'" target="_blank" rel="noopener">Open payment instructions in WhatsApp</a>'}panel.scrollIntoView({behavior:"smooth",block:"start"})}
function wireProofForm(){var proof=document.querySelector("#dfmProofForm");if(!proof||proof.getAttribute("data-wired"))return;proof.setAttribute("data-wired","true");var status=document.querySelector("#dfmProofStatus");proof.addEventListener("submit",function(e){e.preventDefault();var btn=proof.querySelector("button[type=submit]");var file=proof.proofFile.files&&proof.proofFile.files[0];if(!file){status.className="dfm-status bad";status.textContent="Please choose a payment screenshot first.";return}if(file.size>7*1024*1024){status.className="dfm-status bad";status.textContent="Please upload a file below 7MB.";return}status.className="dfm-status";status.textContent="Uploading payment proof...";btn.disabled=true;fileData(file).then(function(filePayload){return api("portalSubmitPaymentProof",Object.assign({bookingId:proof.bookingId.value,amount:proof.amount.value,paymentDate:proof.paymentDate.value,reference:proof.reference.value,source:"dfmotohub.com/book payment proof"},filePayload))}).then(function(data){if(!data.ok)throw new Error(data.error||"Could not submit payment proof.");status.className="dfm-status ok";status.innerHTML="Payment proof received. Proof ID: <b>"+esc(data.proofId||"")+"</b>. DF Motohub will verify it before confirming payment.";btn.disabled=true}).catch(function(err){btn.disabled=false;status.className="dfm-status bad";status.innerHTML=esc(err.message||String(err))+'<br><a href="'+wa("Hi DF Motohub, I tried uploading payment proof for booking "+proof.bookingId.value+" but need help.")+'">Send by WhatsApp instead</a>'})})}
function syncReviewBike(){var review=document.querySelector("#dfmBikeReviewForm");if(!review)return;if(review.selectedVrn)review.selectedVrn.value=selected[1]||review.selectedVrn.value;if(review.bikeModel)review.bikeModel.value=selected[2]||""}
function wireReviewForm(){var review=document.querySelector("#dfmBikeReviewForm");if(!review||review.getAttribute("data-wired"))return;review.setAttribute("data-wired","true");syncReviewBike();if(review.selectedVrn){review.selectedVrn.addEventListener("change",function(){var opt=review.selectedVrn.options[review.selectedVrn.selectedIndex];review.bikeModel.value=(opt&&opt.getAttribute("data-model"))||""})}var status=document.querySelector("#dfmReviewStatus");review.addEventListener("submit",function(e){e.preventDefault();var btn=review.querySelector("button[type=submit]");var text=String(review.review.value||"").trim();if(!review.selectedVrn.value){status.className="dfm-status bad";status.textContent="Please choose the bike you are reviewing.";return}if(!review.rating.value){status.className="dfm-status bad";status.textContent="Please choose a rating.";return}if(text.length<8){status.className="dfm-status bad";status.textContent="Please write a slightly longer review.";return}btn.disabled=true;status.className="dfm-status";status.textContent="Submitting review...";api("portalSubmitBikeReview",{selectedVrn:review.selectedVrn.value,bikeModel:review.bikeModel.value,rating:review.rating.value,bookingId:review.bookingId.value,customerName:review.customerName.value,mobile:review.mobile.value,review:text,consentToPublish:review.consentToPublish&&review.consentToPublish.checked?"Yes":"No",source:"dfmotohub.com/book bike review"}).then(function(data){if(!data.ok)throw new Error(data.error||"Could not submit review.");status.className="dfm-status ok";status.innerHTML=data.published?"Thank you. Your review for <b>"+esc(data.selectedVrn||review.selectedVrn.value)+"</b> is now published on the site.":"Thank you. Review received for <b>"+esc(data.selectedVrn||review.selectedVrn.value)+"</b>. It will stay internal because publish consent was not selected.";btn.disabled=true;if(data.published)refreshBikeReviews()}).catch(function(err){btn.disabled=false;status.className="dfm-status bad";status.innerHTML=esc(err.message||String(err))+'<br><a href="'+wa("Hi DF Motohub, I tried submitting a bike review but need help.")+'">Send review by WhatsApp instead</a>'})})}
function scrollBookingForm(){var form=document.querySelector("#dfmBookForm");if(!form)return;setTimeout(function(){form.scrollIntoView({behavior:"smooth",block:"start"});var first=form.querySelector("input[name=startDate]");if(first)first.focus({preventScroll:true})},80)}
function setBookingBusy(form,busy,msg){bookingBusy=!!busy;var btn=form&&form.querySelector("button[type=submit]");if(btn){btn.disabled=!!busy;btn.textContent=busy?"Submitting... please wait":"Check availability and book"}if(msg){var status=document.querySelector("#dfmBookStatus");if(status){status.className="dfm-status";status.textContent=msg}}}
function dfmPostalSetValue(input,value){if(!input)return;value=String(value||"").trim();if(!value||/^NIL$/i.test(value))return;input.value=value;input.dispatchEvent(new Event("input",{bubbles:true}));input.dispatchEvent(new Event("change",{bubbles:true}))}
function dfmPostalLookupUrl(postal){return "https://www.onemap.gov.sg/api/common/elastic/search?searchVal="+encodeURIComponent(postal)+"&returnGeom=N&getAddrDetails=Y&pageNum=1"}
function dfmPostalLookup(postal){return fetch(dfmPostalLookupUrl(postal),{method:"GET"}).then(function(res){return res.json()}).then(function(data){if(!data||data.error||!data.results||!data.results.length)return null;return data.results.find(function(r){return String(r.POSTAL||"")===postal})||data.results[0]})}
function wirePostalLookup(form){if(!form||!form.postalCode||form.postalCode.getAttribute("data-dfm-postal-wired"))return;var postal=form.postalCode;postal.setAttribute("data-dfm-postal-wired","true");postal.setAttribute("maxlength","6");postal.setAttribute("pattern","[0-9]{6}");var note=document.createElement("span");note.className="dfm-doc-note dfm-postal-note";postal.parentNode&&postal.parentNode.appendChild(note);var timer=0,last="";function run(){var code=String(postal.value||"").replace(/D/g,"").slice(0,6);if(postal.value!==code)postal.value=code;if(code.length!==6){note.textContent="";return}if(code===last)return;last=code;note.textContent="Looking up address...";dfmPostalLookup(code).then(function(row){if(String(postal.value||"").replace(/D/g,"").slice(0,6)!==code)return;if(!row){note.textContent="Address not found. Please enter manually.";return}dfmPostalSetValue(form.streetName,row.ROAD_NAME);dfmPostalSetValue(form.blockHouseNo,row.BLK_NO);dfmPostalSetValue(form.buildingName,row.BUILDING);note.textContent="Address filled from postal code."}).catch(function(){if(String(postal.value||"").replace(/D/g,"").slice(0,6)===code)note.textContent="Address lookup unavailable. Please enter manually."})}postal.addEventListener("input",function(){clearTimeout(timer);timer=setTimeout(run,450)});postal.addEventListener("blur",run)}
function wireBook(){var form=document.querySelector("#dfmBookForm");wireReviewToggles(document);if(!form)return;wirePostalLookup(form);wireProofForm();wireReviewForm();var openProof=document.querySelector("#dfmOpenProofUpload");if(openProof&&!openProof.getAttribute("data-wired")){openProof.setAttribute("data-wired","true");openProof.addEventListener("click",function(){var panel=document.querySelector("#dfmProofPanel");if(panel){panel.setAttribute("data-open","true");panel.scrollIntoView({behavior:"smooth",block:"start"});var id=panel.querySelector("input[name=bookingId]");if(id){try{id.focus({preventScroll:true})}catch(e){id.focus()}}}})}var status=document.querySelector("#dfmBookStatus");updateCollectionTimeLimits(form);if(form.startDate&&!form.startDate.getAttribute("data-hours-wired")){form.startDate.setAttribute("data-hours-wired","true");form.startDate.addEventListener("change",function(){updateCollectionTimeLimits(form);var msg=collectionError(form);refreshBookBikesInPlace();if(msg&&form.collectionTime&&form.collectionTime.value){status.className="dfm-status bad";status.textContent=msg}})}if(form.collectionTime&&!form.collectionTime.getAttribute("data-hours-wired")){form.collectionTime.setAttribute("data-hours-wired","true");form.collectionTime.addEventListener("change",function(){var msg=collectionError(form);refreshBookBikesInPlace();if(msg){status.className="dfm-status bad";status.textContent=msg}else{status.className="dfm-status";status.textContent="Collection time is within operating hours. Bike availability has been refreshed for this timing."}})}if(location.search.indexOf("bike=")>=0&&bikeStatusLoaded&&!form.getAttribute("data-deep-linked")){form.setAttribute("data-deep-linked","true");setTimeout(scrollBookingForm,520)}document.querySelectorAll(".dfm-bike-option").forEach(function(btn){btn.addEventListener("keydown",function(e){if(e.key==="Enter"||e.key===" "){e.preventDefault();btn.click()}});btn.addEventListener("click",function(){if(bookingBusy){status.className="dfm-status bad";status.textContent="Booking is still submitting. Please wait until it completes before changing bike or leaving this page.";return}if(!bikeStatusLoaded){status.className="dfm-status bad";status.textContent="Live availability is still loading. Please wait a moment before selecting a bike.";return}var vrn=btn.getAttribute("data-vrn");var s=bikeStatus[String(vrn||"").toUpperCase()];var bike=bikes.find(function(b){return b[1]===vrn})||selected;if(!s||!bikeSelectable(bike)){status.className="dfm-status bad";status.textContent=bikeBlockedMessage(s);return}document.querySelectorAll(".dfm-bike-option").forEach(function(b){b.setAttribute("data-selected","false")});btn.setAttribute("data-selected","true");selected=bikes.find(function(b){return b[1]===vrn})||selected;form.selectedVrn.value=selected[1];form.bikeModel.value=selected[2];syncReviewBike();status.className="dfm-status";status.textContent="Selected "+selected[0]+" ("+selected[1]+"). Enter dates and submit to check availability.";scrollBookingForm()})});form.addEventListener("submit",function(e){e.preventDefault();if(bookingBusy)return;if(!bikeStatusLoaded){status.className="dfm-status bad";status.textContent="Live bike availability is still loading. Please wait before submitting.";return}updateCollectionTimeLimits(form);var hoursMsg=collectionError(form);if(hoursMsg){status.className="dfm-status bad";status.textContent=hoursMsg;return}var addressParts=[];function addAddressPart(label,value){value=String(value||"").trim();if(value)addressParts.push(label+": "+value)}var unitValue=((form.unitLevel&&form.unitLevel.value)||(form.unitNumber&&form.unitNumber.value))?("#"+String((form.unitLevel&&form.unitLevel.value)||"").trim()+"-"+String((form.unitNumber&&form.unitNumber.value)||"").trim()):"";addAddressPart("Postal Code",form.postalCode&&form.postalCode.value);addAddressPart("Address Type",form.addressType&&form.addressType.value);addAddressPart("Street Name",form.streetName&&form.streetName.value);addAddressPart("Blk/House No.",form.blockHouseNo&&form.blockHouseNo.value);addAddressPart("Unit No.",unitValue);addAddressPart("Building Name",form.buildingName&&form.buildingName.value);if(form.address)form.address.value=addressParts.join("\n");var payload={};new FormData(form).forEach(function(v,k){if(v&&typeof File!=="undefined"&&v instanceof File)return;payload[k]=String(v||"").trim()});var docs=collectDocs(form);var has=function(kind){return docs.some(function(d){return d.kind===kind})};if(!has("NRIC Front")||!has("NRIC Back")||!has("Driving Licence Front")||!has("Driving Licence Back")){status.className="dfm-status bad";status.textContent="Please upload NRIC/FIN front and back, plus driving licence front and back.";return}setBookingBusy(form,true,"Checking availability. Please keep this page open until your booking ID appears.");api("portalAvailability",payload).then(function(data){if(!data.ok)throw new Error(data.error||"Could not check availability.");if(!data.availability||!data.availability.available)throw new Error((data.availability&&data.availability.message)||"This bike is not available for those dates.");status.textContent="Bike is available. Saving booking details... Please do not close or refresh.";return api("portalSubmit",payload)}).then(function(data){if(!data.ok)throw new Error(data.error||"Could not save booking.");status.textContent="Booking saved. Uploading NRIC/FIN and driving licence images. This can take 1-2 minutes on mobile data.";return docPayload(form,data.bookingId||"").then(function(dp){return api("portalUploadBookingDocuments",dp).then(function(upload){return{booking:data,upload:upload}})})}).then(function(result){var data=result.booking;if(!result.upload||!result.upload.ok)throw new Error((result.upload&&result.upload.error)||"Booking saved, but document upload failed. Please WhatsApp your NRIC/licence images with the booking ID.");bookingBusy=false;status.className="dfm-status ok";status.innerHTML="Booking received. Your booking ID is <b>"+esc(data.bookingId||"")+"</b>. NRIC/FIN and driving licence images uploaded. Make payment, then upload the screenshot proof below.";var btn=form.querySelector("button[type=submit]");if(btn){btn.disabled=true;btn.textContent="Booking submitted"}showProofPanel(data)}).catch(function(err){bookingBusy=false;var btn=form.querySelector("button[type=submit]");if(btn){btn.disabled=false;btn.textContent="Check availability and book"}status.className="dfm-status bad";status.innerHTML=esc(err.message||String(err))+'<br>If you already saw a booking ID before this error, do not submit again. WhatsApp us with that booking ID.<br><a href="'+wa("Hi DF Motohub, I tried booking but need help. "+(err.message||String(err)))+'">Continue by WhatsApp</a>'})})}
function refreshBikeStatus(){var cached=readBikeStatusCache(),staleCache=cached?null:readBikeStatusCacheAny_(),usedCache=cached||staleCache;if(usedCache)applyBikeStatusData(usedCache,true);var status=document.querySelector("#dfmBookStatus"),slowTimer=null;function setStatus(msg){status=document.querySelector("#dfmBookStatus");if(status){status.className="dfm-status";status.textContent=msg}}function showSelectedMessage(){status=document.querySelector("#dfmBookStatus");if(status&&!bookingBusy&&/Live availability|cached availability|Checking live|refreshing latest/i.test(status.textContent||"")){status.className="dfm-status";status.textContent="Selected "+selected[0]+" ("+selected[1]+"). Enter dates and submit to check availability."}}if(staleCache)setStatus("Showing cached availability while refreshing latest sheet status.");else if(cached)setStatus("Live availability loaded from cache. Refreshing latest sheet status in the background.");function fallback(msg){if(usedCache||bikeStatusLoaded)return;bikeStatusLoaded=true;bikeStatus={};bikes.forEach(function(b){bikeStatus[String(b[1]||"").toUpperCase()]={vrn:b[1],bookable:true,availabilityNow:"Final availability checked on submit"}});refreshBookBikesInPlace();setStatus(msg)}slowTimer=window.setTimeout(function(){fallback("Live availability is taking longer than usual. You can still choose a bike and send the booking request; DF Motohub will confirm final availability.")},6500);api("portalBikes",{}).then(function(data){if(slowTimer)window.clearTimeout(slowTimer);if(applyBikeStatusData(data,false)){writeBikeStatusCache(data);showSelectedMessage()}}).catch(function(){if(slowTimer)window.clearTimeout(slowTimer);if(usedCache){setStatus("Showing cached availability. Latest refresh is slow, but cached status is still available.");return}fallback("Live availability is slow right now. You can still choose a bike and send the booking request; DF Motohub will confirm final availability.")})}
function refreshBikeReviews(){api("portalBikeReviews",{limit:80}).then(function(data){if(!data.ok||!data.reviews)return;bikeReviews={};data.reviews.forEach(function(r){var vrn=String(r.selectedVrn||"").toUpperCase();if(!vrn)return;(bikeReviews[vrn]=bikeReviews[vrn]||[]).push(r)});bikeReviewsLoaded=true;var p=path();if(p==="/book"){wireReviewToggles(document.querySelector(".dfm-bike-select"));return}if(p==="/"||p==="/home"){render(true)}}).catch(function(){bikeReviewsLoaded=false})}
function render(force){var p=path();var html;if(p==="/"||p==="/home")html=home();else if(p==="/book")html=book();else if(p==="/faq")html=faqPage();else if(p==="/terms"||p==="/terms-and-conditions"||p==="/refund-cancellation-policy"||p==="/shipping-delivery-collection-policy")html=policyPage(policySlug());else if(p==="/about"||p==="/contact"||p==="/privacy")html=info(p.slice(1));else if(p.indexOf("/shop")===0||p.indexOf("/services-store")===0)html=info("shop");else{document.documentElement.classList.remove("dfm-final-pending");forcePolicyFooterAndFaqCleanup();return}if(!force&&document.querySelector("[data-dfm-final='"+MARKER+"']")){document.documentElement.classList.remove("dfm-final-pending");forcePolicyFooterAndFaqCleanup();return}document.documentElement.classList.add("dfm-final-live");document.body.innerHTML='<div class="dfm-final" data-dfm-final="'+MARKER+'">'+html+'</div>';document.documentElement.classList.remove("dfm-final-pending");wireBook();forcePolicyFooterAndFaqCleanup()}
function boot(){render(false)}
window.addEventListener("beforeunload",function(e){if(!bookingBusy)return;var msg="Your booking is still uploading. Please stay on this page until the booking ID appears.";e.preventDefault();e.returnValue=msg;return msg});
function scheduleReviewRefresh(){var run=function(){if(path()==="/book")return;refreshBikeReviews()};if("requestIdleCallback" in window)requestIdleCallback(run,{timeout:4500});else setTimeout(run,3000)}
if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",function(){boot();refreshBikeStatus();scheduleReviewRefresh()});else{boot();refreshBikeStatus();scheduleReviewRefresh()}window.addEventListener("pageshow",boot);
})();
</script>
<!-- /DFM_FINAL_REPAIR_V16 -->
<!-- DFM_POLICY_FOOTER_HOTFIX_V1 -->
<style>
.dfm-policy-page{background:#f6f7f2;color:#121815;font-family:Arial,Helvetica,sans-serif;min-height:100vh}
.dfm-policy-page *{box-sizing:border-box;letter-spacing:0}
.dfm-policy-wrap{width:min(1080px,calc(100% - 40px));margin:auto}
.dfm-policy-hero{background:#121815;color:#fff;border-bottom:5px solid #f4c928;padding:60px 0 44px}
.dfm-policy-hero p{margin:0 0 10px;color:#f4c928;font-size:13px;font-weight:900;text-transform:uppercase}
.dfm-policy-hero h1{margin:0;font-size:clamp(34px,5vw,58px);line-height:1.02}
.dfm-policy-main{padding:38px 0}
.dfm-policy-card{background:#fff;border:1px solid #d7ded8;border-radius:8px;padding:20px;margin-bottom:14px}
.dfm-policy-card h2{margin:0 0 10px;font-size:22px;color:#121815}
.dfm-policy-card p,.dfm-policy-card li{color:#59635e;font-size:15px;line-height:1.62}
.dfm-policy-card a{color:#147a4f;font-weight:900}
</style>
<script>
(function(){
var MARKER="DFM_POLICY_FOOTER_HOTFIX_V1";
var badFaq=["How is insurance"," excess calculated?"].join("");
var policyLinks='<div data-dfm-policy-links="true"><h3>Policies</h3><div class="dfm-foot-links"><a href="/terms-and-conditions">Terms and Conditions</a><a href="/refund-cancellation-policy">Refund and Cancellation</a><a href="/shipping-delivery-collection-policy">Shipping, Delivery and Collection</a></div></div>';
var policyData={
"/terms-and-conditions":["Terms and Conditions","These Terms and Conditions govern website use, motorcycle rental booking, payment, security deposit, product purchase and service arrangements with DF Motohub.","For motorcycle rentals, the signed Rental Agreement and DF Motohub Supplementary Terms and Conditions also apply. A booking is confirmed only after required payment is received and DF Motohub issues confirmation."],
"/refund-cancellation-policy":["Refund and Cancellation Policy","Payments made to secure or confirm a motorcycle rental booking are non-refundable if the customer cancels, changes their mind, does not attend collection, fails eligibility checks, or cannot provide required documents.","Security deposit refund review starts after the vehicle is returned and checked. DF Motohub may deduct properly payable amounts for damage, outstanding rental, fines, fuel, late fees, recovery, breach or other charges."],
"/shipping-delivery-collection-policy":["Shipping, Delivery and Collection Policy","Motorcycle rentals are normally collected in person from DF Motohub's designated collection location. Optional delivery or collection may be arranged separately, subject to availability, timing and charges.","The vehicle must be returned at the agreed date, time, location, fuel level and condition. Late return, after-hours return, fuel shortfall or recovery charges may apply under the rental terms."]
};
function cleanFaq(){
Array.prototype.slice.call(document.querySelectorAll("summary,h2,h3,h4,a,span,div")).forEach(function(el){
if((el.textContent||"").trim()===badFaq){
var box=el.closest("details,.dfm-card,li,section,div");
if(box)box.remove();else el.remove();
}
});
}
function addFooterLinks(){
var foot=document.querySelector(".dfm-foot-grid");
if(foot&&!foot.querySelector('[data-dfm-policy-links="true"]')&&!foot.innerHTML.includes("/terms-and-conditions"))foot.insertAdjacentHTML("beforeend",policyLinks);
}
function renderPolicyPage(){
var path=(location.pathname.replace(/\/$/,"")||"/").toLowerCase();
var p=policyData[path];
if(!p)return false;
document.title=p[0]+" | DF Motohub";
document.body.innerHTML='<div class="dfm-policy-page" data-dfm-policy-page="'+MARKER+'"><section class="dfm-policy-hero"><div class="dfm-policy-wrap"><p>DF Motohub policy</p><h1>'+p[0]+'</h1></div></section><main class="dfm-policy-main"><div class="dfm-policy-wrap"><article class="dfm-policy-card"><h2>Overview</h2><p>'+p[1]+'</p><p>'+p[2]+'</p></article><article class="dfm-policy-card"><h2>Contact</h2><p>DF Motohub Pte. Ltd.<br>32 Sin Ming Drive, Singapore 575706<br>Email: <a href="mailto:sales@dfmotohub.com">sales@dfmotohub.com</a></p></article><article class="dfm-policy-card"><p><a href="/">Back to DF Motohub</a></p></article></div></main></div>';
return true;
}
function run(){
if(renderPolicyPage())return;
cleanFaq();
addFooterLinks();
}
if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",run);else run();
setTimeout(run,400);
setTimeout(run,1200);
setTimeout(run,2600);
try{new MutationObserver(function(){run()}).observe(document.documentElement,{childList:true,subtree:true})}catch(e){}
})();
</script>
<!-- /DFM_POLICY_FOOTER_HOTFIX_V1 -->
The Yamaha Aerox v2 is perfect for riders who want style + performance + comfort.
The KTM Duke 200 is known for its sharp handling, lightweight chassis, and sporty riding experience.
This Honda CB400 Super 4 Revo is one of the most popular choices for both delivery riders & daily commuters.
The Honda 400X is a powerful touring-style motorcycle with upright riding posture, excellent comfort, and smooth performance.
Commitment to Automotive Excellence
Founded by industry veterans, the organization prioritizes evidence-based methodologies that align with evolving engineering standards.