1<!DOCTYPE html> 2 3<html class="no-js css-scroll eds-theme-light" lang="en"> 4 <head> 5 <meta charset="utf-8" /> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 7 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 8 <meta name="apple-mobile-web-app-status-bar-style" content="black"> 9 <meta name="mobile-web-app-capable" content="yes"> 10 11 12 <title>Szechuan Opera - Rochester in NY | Location and Hours</title> 13 <meta name="keywords" content="szechuan opera, szechuan opera rochester, szechuan opera menu, rochester chinese takeout, rochester chinese food, rochester chinese restaurants, chinese takeout, best chinese food in rochester, chinese restaurants in rochester, chinese restaurants near me, chinese food near me" /> 14 <meta name="description" content="Learn what hours Szechuan Opera - Rochester is open for takeout, and our Rochester, NY address."> 15 16 <meta property="og:type" content="website"> 17 <meta property="og:title" content="Szechuan Opera - Rochester in NY | Location and Hours"> 18 <meta property="og:description" content="Learn what hours Szechuan Opera - Rochester is open for takeout, and our Rochester, NY address."> 19 <meta property="og:image" content="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/95b565fc-a41a-4e05-b649-574269401100/public" /> 20 21 <meta name="twitter:card" content="summary_large_image"> 22 <meta name="twitter:title" content="Szechuan Opera - Rochester in NY | Location and Hours"> 23 <meta name="twitter:description" content="Learn what hours Szechuan Opera - Rochester is open for takeout, and our Rochester, NY address."> 24 <meta name="twitter:image" content="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/95b565fc-a41a-4e05-b649-574269401100/public" /> 25 26 <link rel="shortcut icon" href="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/255b860a-4bdd-4b26-4ff1-0df6b6525e00/public" type="image/x-icon" /> 27 28 <link rel="canonical" href="https://www.szechuanoperany.com/locationinfo"/> 29 30 <link type="text/css" rel="stylesheet" href="/min/g=eds_css&1788377785" /> 31 <link type="text/css" rel="stylesheet" href="/min/g=css4.0&1788377785" /> 32 <link href="https://fonts.googleapis.com/css?family=Nunito:400,700|Open+Sans:400,600,700" rel="stylesheet" /> 33 <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/minified/jquery-ui.min.css" /> 34
34<script src="https://kit.fontawesome.com/0208faa9a2.js" crossorigin="anonymous"></script>
34 35 36 <style> 37 .home_hero, .menu_hero{ background-image: url(https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/1c5ba0f2-d569-4f5c-7004-63835a781b00/public); } 38 @media 39 (-webkit-min-device-pixel-ratio: 1.25), 40 (min-resolution: 120dpi){ 41 /* Retina header*/ 42 .home_hero, .menu_hero{ background-image: url(https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/3a272f0b-4cef-41b9-e95f-90a2ef6aa800/public); } 43 } 44 /*body{ } */ 45 46 47 </style> 48 49 50
50<script type="text/javascript"> 51 var UrlTag = "szechuanopera"; 52 var template = 'defaultv4'; 53 var formname = 'locationinfo'; 54 var menulink = 'https://www.szechuanoperany.com/order/main'; 55 var checkoutlink = 'https://www.szechuanoperany.com/checkout'; 56 </script>
56 57
57<script> 58 /* http://writing.colin-gourlay.com/safely-using-ready-before-including-jquery/ */ 59 (function(w,d,u){w.readyQ=[];w.bindReadyQ=[];function p(x,y){if(x=="ready"){w.bindReadyQ.push(y);}else{w.readyQ.push(x);}};var a={ready:p,bind:p};w.$=w.jQuery=function(f){if(f===d||f===u){return a}else{p(f)}}})(window,document) 60 </script>
60 61 62
62<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Restaurant","@id":"https://www.szechuanoperany.com/#restaurant","name":"Szechuan Opera - Rochester","url":"https://www.szechuanoperany.com/","telephone":"+15853406133","address":{"@type":"PostalAddress","streetAddress":"630 Park Ave","addressLocality":"Rochester","addressRegion":"NY","postalCode":"14607","addressCountry":"US"},"hasMap":"https://maps.google.com/?q=Szechuan Opera - Rochester, 630 Park Ave, Rochester, NY, 14607","priceRange":"$$","potentialAction":{"@type":"OrderAction","target":"https://www.szechuanoperany.com"},"servesCuisine":"Chinese","amenityFeature":[{"@type":"LocationFeatureSpecification","name":"Pick up","value":true}],"image":{"@type":"ImageObject","contentLocation":"Rochester, NY","url":"https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/95b565fc-a41a-4e05-b649-574269401100/public"},"geo":{"@type":"GeoCoordinates","name":"Szechuan Opera - Rochester","latitude":43.1487435,"longitude":-77.5786881},"hasMenu":[{"@id":"https://www.szechuanoperany.com/order/main#menu"}],"sameAs":["https://www.tripadvisor.com/Restaurant_Review-g48503-d17806809-Reviews-Szechuan_Opera-Rochester_Finger_Lakes_New_York.html"],"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","opens":"11:00","closes":"21:45","dayOfWeek":["https://schema.org/Monday","https://schema.org/Tuesday","https://schema.org/Wednesday","https://schema.org/Thursday","https://schema.org/Friday","https://schema.org/Saturday","https://schema.org/Sunday"]}]},{"@type":"Menu","@id":"https://www.szechuanoperany.com/order/main#menu","url":"https://www.szechuanoperany.com/order/main","name":"Main","description":"Please note: requests for additional items or special preparation may incur an extra charge not calculated on your online order."}]}</script>
62 63<!-- Google Tag Manager -->
64<script> 65 window.dataLayer = window.dataLayer || []; 66 window.gtag = window.gtag || function gtag() { dataLayer.push(arguments); }; 67 gtag('js', new Date()); 68 69 let data = { 70 account: 'szechuanopera', 71 context: 'direct', 72 templateVersion: 4, 73 rid: 66, 74 } 75 dataLayer.push({ ...data, event: 'app_data_ready' });
vendor: 337 bytes, lines 75-81
75 76 77 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 78 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 79 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 80 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 81 })(window,document,'script','dataLayer','
81GTM-K9P93M
vendor: 4 bytes, line 81
81');
82</script>
vendor: 67 bytes, lines 82-84
82 83 84 <script async src="https://www.googletagmanager.com/gtag/js?id=
84G-B1YZD1B6VV
vendor: 15 bytes, lines 84-86
84"></script> 85 86
86<script> 87 88 gtag('config', "G-B1YZD1B6VV"); 89 </script>
89 90 91 92 93 <meta name="smartbanner:title" content="Szechuan Opera - Rochester"> 94 <meta name="smartbanner:author" content="Online Ordering"> 95 <meta name="smartbanner:price" content="FREE"> 96 <meta name="smartbanner:price-suffix-google" content=" "> 97 <meta name="smartbanner:button" content="VIEW"> 98 <meta name="smartbanner:button-url-google" content="https://play.google.com/store/apps/details?id=com.szechuanopera.ordering"> 99 <meta name="smartbanner:enabled-platforms" content="android"> 100 <meta name="smartbanner:icon-google" content="https://ehc-west-0-bucket.s3.us-west-2.amazonaws.com/web/documents/szechuanopera/"> 101 </head> 102 103 <body 104 data-event-on:customer_registered="window.location.reload()" 105 data-event-on:customer_logged_in="window.location.reload()" 106 data-event-on:customer_logged_out="window.location.reload()" 107 > 108 <a class="skip-to-content-link" href="#main">Skip to content</a> 109 <!-- Google Tag Manager (noscript) -->
vendor: 70 bytes, lines 109-110
109 110 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
110GTM-K9P93M
vendor: 85 bytes, lines 110-111
110" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 111
111<!-- End Google Tag Manager (noscript) --> 112 <!-- wrapper starts --> 113 <div class="wrapper"> 114 <section style="grid-area: header-announcements" aria-label="Announcement"> 115 <div id="upgradeBrowserBanner" class="alert alert-warning mb-0 rounded-0 py-4" style="display:none;"> 116 <div class="alert-icon"><i class="fas fa-warning" aria-hidden="true"></i></div> 117 <div> 118 <strong>We're sorry, but the Web browser you are using is not supported.</strong> <br/> Please upgrade your browser or try a different one to use this Website. Supported browsers include:<br/> 119 <ul class="list-unstyled"> 120 <li class="mt-2"><a href="https://www.google.com/chrome" target="_blank" rel="noopener noreferrer" class="simple-link"><i class="fab fa-chrome"></i> Chrome</a></li> 121 <li class="mt-2"><a href="https://www.mozilla.com/firefox/upgrade.html" target="_blank" rel="noopener noreferrer" class="simple-link"><i class="fab fa-firefox"></i> Firefox</a></li> 122 <li class="mt-2"><a href="https://www.microsoft.com/en-us/windows/microsoft-edge" target="_blank" rel="noopener noreferrer" class="simple-link"><i class="fab fa-edge"></i> Edge</a></li> 123 <li class="mt-2"><a href="http://www.apple.com/safari/" target="_blank" rel="noopener noreferrer" class="simple-link"><i class="fab fa-safari"></i> Safari</a></li> 124 </ul> 125 </div> 126</div>
127<script> 128 var ua = navigator.userAgent; 129 var match = ua.match(/Firefox\/([0-9]+)\./); 130 var firefoxVersion = match ? parseInt(match[1]) : 1000; 131 var match = ua.match(/Chrome\/([0-9]+)\./); 132 var chromeVersion = match ? parseInt(match[1]) : 1000; 133 var isIE = ua.indexOf('MSIE') > -1 || ua.indexOf('Trident') > -1; 134 var upgradeBrowserBanner = document.getElementById('upgradeBrowserBanner'); 135 var isMatchesSupported = typeof(upgradeBrowserBanner.matches)!="undefined"; 136 var isEntriesSupported = typeof(Object.entries)!="undefined"; 137 //Safari version is verified with isEntriesSupported 138 if (isIE || !isMatchesSupported || !isEntriesSupported || firefoxVersion <= 46 || chromeVersion <= 53) { 139 upgradeBrowserBanner.style.display = 'flex'; 140 } 141</script>
141 142 <!-- get closed sign if applicable. --> 143 144 145 </section> 146 147 <!-- Header Starts --> 148 <div class="headerAndWtype" style="grid-area: header"> 149 <header class="header" > 150 <div class="d-flex flex-column align-items-start flex-md-row align-items-md-center"> 151 <div class="logo_name_alt flex-shrink-0 d-flex align-items-center align-self-stretch pe-6 pe-md-0"> 152 <button class="eds_button btn btn-outline eds_menu_button" style="color: inherit" aria-label="Main menu" aria-expanded="false" data-bs-toggle="offcanvas" data-bs-target="#side-menu" aria-controls="side-menu" type="button"><span aria-hidden="true"></span><span aria-hidden="true"></span><span aria-hidden="true"></span></button> 153 <div class="d-flex flex-column align-items-center mx-auto align-items-md-start mx-md-0"> 154 <a 155 class="eds-display-text-title-xs text-truncate title-container" 156 href="https://www.szechuanoperany.com" 157 aria-current="false" 158 > 159 Szechuan Opera - Rochester </a> 160 161 <span class="eds-copy-text-s-regular text-center text-md-start address-container" title="630 Park Ave Rochester, NY 14607"> 162 630 Park Ave Rochester, NY 14607 </span> 163 </div> 164 </div> 165 166 167 <div class="position-absolute top-0 end-0 p-2"> 168 169 <div id="login-status" > 170 <button class="eds_button btn btn-outline px-2 text-nowrap" aria-label="Log in" style="color: currentColor" data-bs-toggle="modal" data-bs-target="#login-modal" type="button"><i class="eds_icon fa fa-lg fa-user-circle d-block d-lg-none" style="" aria-hidden="true"></i> <div class="d-none d-lg-flex align-items-baseline gap-2"><i class="eds_icon fa fa-user-circle" style="" aria-hidden="true"></i><div class="profile-container text-truncate">Log in</div></div></button> </div> 171 172 </div> 173 </div> 174 175 176 <div data-eds-id="6ac4449358856" 177 class="eds_side_menu offcanvas offcanvas-start " 178 tabindex="-1" 179 aria-label="Side navigation" 180 id="side-menu" data-event-on:menu_selected="this.dispatchEvent(new CustomEvent('eds.hide'))" data-event-on:category_selected="this.dispatchEvent(new CustomEvent('eds.hide'))" > 181 182 <div class="eds_side_menu-body offcanvas-body d-flex flex-column pt-0 px-0 css-scroll" style="padding-bottom: 115px; scroll-padding-bottom: 115px;"> 183 <div 184 class="eds_side_menu-close position-absolute top-0 end-0 pt-3 pe-3 " 185 style="z-index: 1" 186 > 187 <button data-bs-dismiss="offcanvas" data-bs-target="[data-eds-id="6ac4449358856"]" aria-label="Close" class="eds_button btn btn-outline-secondary eds_button--shape-circle" type="button"><i class="eds_icon fa fa-close" style="" aria-hidden="true"></i></button> </div> 188 189 <nav aria-labelledby="header-navigation-title"> 190 <h2 id="header-navigation-title" class="eds-display-text-title-m m-0 p-3">Pages</h2> 191<ul class="eds_list eds_list--border-none border-bottom"> 192 <li class="eds_list-item"> 193 <a class="d-block p-3 " href="https://www.szechuanoperany.com" aria-current="false"> 194 Home </a> 195 </li> 196 197 <li class="eds_list-item"> 198 <a 199 class="d-block p-3 " 200 href="https://www.szechuanoperany.com/order/main" 201 aria-current="false" 202 > 203 Menu </a> 204 </li> 205 206 207 208 <li class="eds_list-item"> 209 <a class="d-block p-3 active" href="https://www.szechuanoperany.com/locationinfo" aria-current="page"> 210 Location & Hours </a> 211 </li> 212 213 <li class="eds_list-item"> 214 <a class="d-block p-3 " href="https://www.szechuanoperany.com/contact" aria-current="false"> 215 Contact 216 </a> 217 </li> 218</ul> 219 </nav> 220 221 222 <div class="border-bottom border-light p-3"> 223 224 225 <details 226 class="eds_list eds_list--border-none" open data-menu-id="15784" 227 data-event-on:document_ready="this.open = localStorage.getItem('menu-open-15784') !== 'false'" 228 onclick="localStorage.setItem('menu-open-15784', !this.open)" 229 > 230 <summary class="eds-copy-text-l-regular list-unstyled rounded-3 mb-1 " tabindex="0"> 231 <h2 class="eds-display-text-title-m m-0 p-0"> 232 <i class="eds_icon fas fa-chevron-right" style="" aria-hidden="true"></i> Menu <span class="sr-only">25 categories</span> 233 </h2> 234 </summary> 235 <div class="mb-3"></div> 236 237 238 <a 239 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 240 data-event-on:category_pinned="(category) => { 241 const isCurrent = category.id === '202130'; 242 $(this).toggleClass('active', isCurrent); 243 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 244 }" 245 href="https://www.szechuanoperany.com/order/main/szechuan-appetizers" 246 aria-current="false" 247 onclick="if (!event.ctrlKey) { 248 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 249 if (currentMenuIsActive) { 250 app.event.emit('category_selected', { id: '202130' }); 251 } else { 252 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202130' }); 253 } 254 }" 255 > 256 Szechuan Appetizers<span class="sr-only"> menu category</span> 257 <span class="ms-auto">16<span class="sr-only"> items available</span></span> 258 </a> 259 <a 260 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 261 data-event-on:category_pinned="(category) => { 262 const isCurrent = category.id === '202132'; 263 $(this).toggleClass('active', isCurrent); 264 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 265 }" 266 href="https://www.szechuanoperany.com/order/main/soups" 267 aria-current="false" 268 onclick="if (!event.ctrlKey) { 269 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 270 if (currentMenuIsActive) { 271 app.event.emit('category_selected', { id: '202132' }); 272 } else { 273 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202132' }); 274 } 275 }" 276 > 277 Soups<span class="sr-only"> menu category</span> 278 <span class="ms-auto">8<span class="sr-only"> items available</span></span> 279 </a> 280 <a 281 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 282 data-event-on:category_pinned="(category) => { 283 const isCurrent = category.id === '202133'; 284 $(this).toggleClass('active', isCurrent); 285 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 286 }" 287 href="https://www.szechuanoperany.com/order/main/noodle-soup" 288 aria-current="false" 289 onclick="if (!event.ctrlKey) { 290 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 291 if (currentMenuIsActive) { 292 app.event.emit('category_selected', { id: '202133' }); 293 } else { 294 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202133' }); 295 } 296 }" 297 > 298 Noodle Soup<span class="sr-only"> menu category</span> 299 <span class="ms-auto">5<span class="sr-only"> items available</span></span> 300 </a> 301 <a 302 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 303 data-event-on:category_pinned="(category) => { 304 const isCurrent = category.id === '202131'; 305 $(this).toggleClass('active', isCurrent); 306 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 307 }" 308 href="https://www.szechuanoperany.com/order/main/classic-appetizers" 309 aria-current="false" 310 onclick="if (!event.ctrlKey) { 311 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 312 if (currentMenuIsActive) { 313 app.event.emit('category_selected', { id: '202131' }); 314 } else { 315 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202131' }); 316 } 317 }" 318 > 319 Classic Appetizers<span class="sr-only"> menu category</span> 320 <span class="ms-auto">10<span class="sr-only"> items available</span></span> 321 </a> 322 <a 323 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 324 data-event-on:category_pinned="(category) => { 325 const isCurrent = category.id === '276030'; 326 $(this).toggleClass('active', isCurrent); 327 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 328 }" 329 href="https://www.szechuanoperany.com/order/main/dim-sum" 330 aria-current="false" 331 onclick="if (!event.ctrlKey) { 332 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 333 if (currentMenuIsActive) { 334 app.event.emit('category_selected', { id: '276030' }); 335 } else { 336 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '276030' }); 337 } 338 }" 339 > 340 Dim Sum<span class="sr-only"> menu category</span> 341 <span class="ms-auto">19<span class="sr-only"> items available</span></span> 342 </a> 343 <a 344 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 345 data-event-on:category_pinned="(category) => { 346 const isCurrent = category.id === '276031'; 347 $(this).toggleClass('active', isCurrent); 348 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 349 }" 350 href="https://www.szechuanoperany.com/order/main/spicy-crispy-style" 351 aria-current="false" 352 onclick="if (!event.ctrlKey) { 353 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 354 if (currentMenuIsActive) { 355 app.event.emit('category_selected', { id: '276031' }); 356 } else { 357 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '276031' }); 358 } 359 }" 360 > 361 Spicy Crispy Style<span class="sr-only"> menu category</span> 362 <span class="ms-auto">6<span class="sr-only"> items available</span></span> 363 </a> 364 <a 365 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 366 data-event-on:category_pinned="(category) => { 367 const isCurrent = category.id === '202135'; 368 $(this).toggleClass('active', isCurrent); 369 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 370 }" 371 href="https://www.szechuanoperany.com/order/main/cumin-style" 372 aria-current="false" 373 onclick="if (!event.ctrlKey) { 374 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 375 if (currentMenuIsActive) { 376 app.event.emit('category_selected', { id: '202135' }); 377 } else { 378 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202135' }); 379 } 380 }" 381 > 382 Cumin Style<span class="sr-only"> menu category</span> 383 <span class="ms-auto">4<span class="sr-only"> items available</span></span> 384 </a> 385 <a 386 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 387 data-event-on:category_pinned="(category) => { 388 const isCurrent = category.id === '202137'; 389 $(this).toggleClass('active', isCurrent); 390 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 391 }" 392 href="https://www.szechuanoperany.com/order/main/soupy-style" 393 aria-current="false" 394 onclick="if (!event.ctrlKey) { 395 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 396 if (currentMenuIsActive) { 397 app.event.emit('category_selected', { id: '202137' }); 398 } else { 399 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202137' }); 400 } 401 }" 402 > 403 Soupy Style<span class="sr-only"> menu category</span> 404 <span class="ms-auto">6<span class="sr-only"> items available</span></span> 405 </a> 406 <a 407 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 408 data-event-on:category_pinned="(category) => { 409 const isCurrent = category.id === '202136'; 410 $(this).toggleClass('active', isCurrent); 411 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 412 }" 413 href="https://www.szechuanoperany.com/order/main/garlic-sauce-style" 414 aria-current="false" 415 onclick="if (!event.ctrlKey) { 416 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 417 if (currentMenuIsActive) { 418 app.event.emit('category_selected', { id: '202136' }); 419 } else { 420 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202136' }); 421 } 422 }" 423 > 424 Garlic Sauce Style<span class="sr-only"> menu category</span> 425 <span class="ms-auto">7<span class="sr-only"> items available</span></span> 426 </a> 427 <a 428 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 429 data-event-on:category_pinned="(category) => { 430 const isCurrent = category.id === '202138'; 431 $(this).toggleClass('active', isCurrent); 432 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 433 }" 434 href="https://www.szechuanoperany.com/order/main/dry-pot-style" 435 aria-current="false" 436 onclick="if (!event.ctrlKey) { 437 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 438 if (currentMenuIsActive) { 439 app.event.emit('category_selected', { id: '202138' }); 440 } else { 441 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202138' }); 442 } 443 }" 444 > 445 Dry Pot Style<span class="sr-only"> menu category</span> 446 <span class="ms-auto">14<span class="sr-only"> items available</span></span> 447 </a> 448 <a 449 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 450 data-event-on:category_pinned="(category) => { 451 const isCurrent = category.id === '202140'; 452 $(this).toggleClass('active'
452, isCurrent); 453 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 454 }" 455 href="https://www.szechuanoperany.com/order/main/whole-fish" 456 aria-current="false" 457 onclick="if (!event.ctrlKey) { 458 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 459 if (currentMenuIsActive) { 460 app.event.emit('category_selected', { id: '202140' }); 461 } else { 462 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202140' }); 463 } 464 }" 465 > 466 Whole Fish<span class="sr-only"> menu category</span> 467 <span class="ms-auto">6<span class="sr-only"> items available</span></span> 468 </a> 469 <a 470 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 471 data-event-on:category_pinned="(category) => { 472 const isCurrent = category.id === '202143'; 473 $(this).toggleClass('active', isCurrent); 474 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 475 }" 476 href="https://www.szechuanoperany.com/order/main/tradition-chicken" 477 aria-current="false" 478 onclick="if (!event.ctrlKey) { 479 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 480 if (currentMenuIsActive) { 481 app.event.emit('category_selected', { id: '202143' }); 482 } else { 483 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202143' }); 484 } 485 }" 486 > 487 Tradition Chicken<span class="sr-only"> menu category</span> 488 <span class="ms-auto">8<span class="sr-only"> items available</span></span> 489 </a> 490 <a 491 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 492 data-event-on:category_pinned="(category) => { 493 const isCurrent = category.id === '202144'; 494 $(this).toggleClass('active', isCurrent); 495 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 496 }" 497 href="https://www.szechuanoperany.com/order/main/tradition-beef" 498 aria-current="false" 499 onclick="if (!event.ctrlKey) { 500 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 501 if (currentMenuIsActive) { 502 app.event.emit('category_selected', { id: '202144' }); 503 } else { 504 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202144' }); 505 } 506 }" 507 > 508 Tradition Beef<span class="sr-only"> menu category</span> 509 <span class="ms-auto">7<span class="sr-only"> items available</span></span> 510 </a> 511 <a 512 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 513 data-event-on:category_pinned="(category) => { 514 const isCurrent = category.id === '202146'; 515 $(this).toggleClass('active', isCurrent); 516 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 517 }" 518 href="https://www.szechuanoperany.com/order/main/tradition-shrimp" 519 aria-current="false" 520 onclick="if (!event.ctrlKey) { 521 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 522 if (currentMenuIsActive) { 523 app.event.emit('category_selected', { id: '202146' }); 524 } else { 525 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202146' }); 526 } 527 }" 528 > 529 Tradition Shrimp<span class="sr-only"> menu category</span> 530 <span class="ms-auto">5<span class="sr-only"> items available</span></span> 531 </a> 532 <a 533 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 534 data-event-on:category_pinned="(category) => { 535 const isCurrent = category.id === '202145'; 536 $(this).toggleClass('active', isCurrent); 537 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 538 }" 539 href="https://www.szechuanoperany.com/order/main/tradition-pork" 540 aria-current="false" 541 onclick="if (!event.ctrlKey) { 542 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 543 if (currentMenuIsActive) { 544 app.event.emit('category_selected', { id: '202145' }); 545 } else { 546 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202145' }); 547 } 548 }" 549 > 550 Tradition Pork<span class="sr-only"> menu category</span> 551 <span class="ms-auto">6<span class="sr-only"> items available</span></span> 552 </a> 553 <a 554 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 555 data-event-on:category_pinned="(category) => { 556 const isCurrent = category.id === '202141'; 557 $(this).toggleClass('active', isCurrent); 558 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 559 }" 560 href="https://www.szechuanoperany.com/order/main/vegetable" 561 aria-current="false" 562 onclick="if (!event.ctrlKey) { 563 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 564 if (currentMenuIsActive) { 565 app.event.emit('category_selected', { id: '202141' }); 566 } else { 567 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202141' }); 568 } 569 }" 570 > 571 Vegetable<span class="sr-only"> menu category</span> 572 <span class="ms-auto">18<span class="sr-only"> items available</span></span> 573 </a> 574 <a 575 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 576 data-event-on:category_pinned="(category) => { 577 const isCurrent = category.id === '202134'; 578 $(this).toggleClass('active', isCurrent); 579 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 580 }" 581 href="https://www.szechuanoperany.com/order/main/rice-noodle-mei-fun" 582 aria-current="false" 583 onclick="if (!event.ctrlKey) { 584 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 585 if (currentMenuIsActive) { 586 app.event.emit('category_selected', { id: '202134' }); 587 } else { 588 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202134' }); 589 } 590 }" 591 > 592 Rice, Noodle & Mei Fun<span class="sr-only"> menu category</span> 593 <span class="ms-auto">24<span class="sr-only"> items available</span></span> 594 </a> 595 <a 596 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 597 data-event-on:category_pinned="(category) => { 598 const isCurrent = category.id === '202142'; 599 $(this).toggleClass('active', isCurrent); 600 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 601 }" 602 href="https://www.szechuanoperany.com/order/main/classic-szechuan-food" 603 aria-current="false" 604 onclick="if (!event.ctrlKey) { 605 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 606 if (currentMenuIsActive) { 607 app.event.emit('category_selected', { id: '202142' }); 608 } else { 609 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202142' }); 610 } 611 }" 612 > 613 Classic Szechuan Food<span class="sr-only"> menu category</span> 614 <span class="ms-auto">35<span class="sr-only"> items available</span></span> 615 </a> 616 <a 617 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 618 data-event-on:category_pinned="(category) => { 619 const isCurrent = category.id === '325552'; 620 $(this).toggleClass('active', isCurrent); 621 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 622 }" 623 href="https://www.szechuanoperany.com/order/main/crispy-magic-chili-style" 624 aria-current="false" 625 onclick="if (!event.ctrlKey) { 626 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 627 if (currentMenuIsActive) { 628 app.event.emit('category_selected', { id: '325552' }); 629 } else { 630 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '325552' }); 631 } 632 }" 633 > 634 Crispy Magic Chili Style<span class="sr-only"> menu category</span> 635 <span class="ms-auto">5<span class="sr-only"> items available</span></span> 636 </a> 637 <a 638 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 639 data-event-on:category_pinned="(category) => { 640 const isCurrent = category.id === '202147'; 641 $(this).toggleClass('active', isCurrent); 642 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 643 }" 644 href="https://www.szechuanoperany.com/order/main/lunch-special" 645 aria-current="false" 646 onclick="if (!event.ctrlKey) { 647 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 648 if (currentMenuIsActive) { 649 app.event.emit('category_selected', { id: '202147' }); 650 } else { 651 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202147' }); 652 } 653 }" 654 > 655 Lunch Special<span class="sr-only"> menu category</span> 656 <span class="ms-auto">0<span class="sr-only"> items available</span></span> 657 </a> 658 <a 659 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 660 data-event-on:category_pinned="(category) => { 661 const isCurrent = category.id === '311716'; 662 $(this).toggleClass('active', isCurrent); 663 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 664 }" 665 href="https://www.szechuanoperany.com/order/main/daily-special" 666 aria-current="false" 667 onclick="if (!event.ctrlKey) { 668 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 669 if (currentMenuIsActive) { 670 app.event.emit('category_selected', { id: '311716' }); 671 } else { 672 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '311716' }); 673 } 674 }" 675 > 676 Daily Special<span class="sr-only"> menu category</span> 677 <span class="ms-auto">15<span class="sr-only"> items available</span></span> 678 </a> 679 <a 680 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 681 data-event-on:category_pinned="(category) => { 682 const isCurrent = category.id === '202148';
683 $(this).toggleClass('active', isCurrent); 684 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 685 }" 686 href="https://www.szechuanoperany.com/order/main/dessert" 687 aria-current="false" 688 onclick="if (!event.ctrlKey) { 689 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 690 if (currentMenuIsActive) { 691 app.event.emit('category_selected', { id: '202148' }); 692 } else { 693 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '202148' }); 694 } 695 }" 696 > 697 Dessert<span class="sr-only"> menu category</span> 698 <span class="ms-auto">9<span class="sr-only"> items available</span></span> 699 </a> 700 <a 701 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 702 data-event-on:category_pinned="(category) => { 703 const isCurrent = category.id === '237286'; 704 $(this).toggleClass('active', isCurrent); 705 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 706 }" 707 href="https://www.szechuanoperany.com/order/main/slush-milk-tea" 708 aria-current="false" 709 onclick="if (!event.ctrlKey) { 710 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 711 if (currentMenuIsActive) { 712 app.event.emit('category_selected', { id: '237286' }); 713 } else { 714 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '237286' }); 715 } 716 }" 717 > 718 Slush / Milk Tea<span class="sr-only"> menu category</span> 719 <span class="ms-auto">7<span class="sr-only"> items available</span></span> 720 </a> 721 <a 722 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 723 data-event-on:category_pinned="(category) => { 724 const isCurrent = category.id === '235008'; 725 $(this).toggleClass('active', isCurrent); 726 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 727 }" 728 href="https://www.szechuanoperany.com/order/main/drinks" 729 aria-current="false" 730 onclick="if (!event.ctrlKey) { 731 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 732 if (currentMenuIsActive) { 733 app.event.emit('category_selected', { id: '235008' }); 734 } else { 735 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '235008' }); 736 } 737 }" 738 > 739 Drinks<span class="sr-only"> menu category</span> 740 <span class="ms-auto">17<span class="sr-only"> items available</span></span> 741 </a> 742 <a 743 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 d-flex " 744 data-event-on:category_pinned="(category) => { 745 const isCurrent = category.id === '307529'; 746 $(this).toggleClass('active', isCurrent); 747 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 748 }" 749 href="https://www.szechuanoperany.com/order/main/fruit-sparking-water" 750 aria-current="false" 751 onclick="if (!event.ctrlKey) { 752 const currentMenuIsActive = true || $(this).closest('details').find('summary').hasClass('active'); 753 if (currentMenuIsActive) { 754 app.event.emit('category_selected', { id: '307529' }); 755 } else { 756 app.event.emit('menu_selected', { menu_id: '15784', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '307529' }); 757 } 758 }" 759 > 760 Fruit Sparking Water<span class="sr-only"> menu category</span> 761 <span class="ms-auto">3<span class="sr-only"> items available</span></span> 762 </a> 763 </details> 764 765 </div> 766 767 768 <div class="restaurant-info border-top border-light p-3 position-absolute bottom-0 left-0 w-100"> 769 <h2 class="eds-display-text-title-xs mb-0 me-2 pe-4"><span class="sr-only">Location: You're currently ordering from </span>Szechuan Opera - Rochester</h2> 770 771 <address class="eds-copy-text-s-regular mb-0"> 772 630 Park Ave Rochester, NY 14607 </address> 773 </div> 774 775 <div class="eds-copy-text-s-regular p-3 d-lg-none"> 776 <h2 class="eds-display-text-title-m m-0 pb-3">Additional info</h2> 777 <ul class="list-unstyled" aria-label="App store links"> 778 <li><a href="https://play.google.com/store/apps/details?id=com.szechuanopera.ordering"><span class="sr-only">Download from the Google Play Store</span><img src="/web/default4.0/images/google-play-badge.svg" alt="" aria-hidden="true"></a></li> 779 </ul> 780 781 <ul class="list-unstyled d-flex gap-2" aria-label="Social network links"> 782 <li><a href="https://www.tripadvisor.com/Restaurant_Review-g48503-d17806809-Reviews-Szechuan_Opera-Rochester_Finger_Lakes_New_York.html" target="new" title="Opens in new tab" class="icon" title="TripAdvisor"><i class="fak fa-tripadvisor"></i><span class="sr-only">TripAdvisor</span></a></li> 783 </ul> 784 785<div>© 2026 Online Ordering by <a href="http://chinesemenuonline.com">Chinese Menu Online</a></div> 786 <div>Experience authentic Chinese flavors at <a href="https://www.springroll.com" target="_blank" title="Opens in new tab" >Springroll</a></div> 787 788<ul class="list-unstyled mb-0 pt-3" aria-label="Legal and support"> 789 <li><a href="https://www.szechuanoperany.com/reportbug">Technical Support</a></li> 790 <li><a href="https://www.szechuanoperany.com/privacy">Privacy Policy</a></li> 791 <li><a href="https://www.szechuanoperany.com/tos">Terms of Service</a></li> 792 <li><a href="https://www.szechuanoperany.com/accessibility">Accessibility</a></li> 793</ul> 794
795This site is protected by reCAPTCHA and <a href="https://policies.google.com/privacy">Google's Privacy Policy</a> and <a href="https://policies.google.com/terms">Google's Terms of Service</a> apply. 796 </div> </div> 797 798
798<script> 799 { 800 const container = document.querySelector('[data-eds-id="6ac4449358856"]'); 801 802 ['show', 'hide', 'toggle', 'dispose'].forEach((eventName) => { 803 container.addEventListener(`eds.${eventName}`, (e) => { 804 bootstrap.Offcanvas.getOrCreateInstance(container)[eventName]( 805 ...(Array.isArray(e.detail) ? e.detail : [e.detail]) 806 ); 807 }); 808 }); 809 } 810 </script>
810 811 </div> 812 813 </header> 814 </div> 815 816 <aside class="container p-0" style="grid-area: hero" aria-labelledby="hero-section-title"> 817 <section class="hero"> 818 <div class="menu_hero backbgbox position-relative"> 819 <div class="logo"> 820 <a class="logo-image" href="https://www.szechuanoperany.com" aria-current="false" > 821 <img 822 src="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/95b565fc-a41a-4e05-b649-574269401100/public" 823 srcset="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/95b565fc-a41a-4e05-b649-574269401100/public 1x, https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/95b565fc-a41a-4e05-b649-574269401100/public 2x" alt="Go to Home" 824 onerror="this.closest('.logo').style.setProperty('display', 'none', 'important')" 825 /> 826 </a> 827 </div> 828 </div> 829 830 <div class="p-3"> 831 <div class="pb-1"> 832 <h1 id="hero-section-title" class="eds-display-text-title-s m-0 p-0">Szechuan Opera - Rochester</h1> 833 </div> 834 835 <div class="d-sm-flex align-items-baseline"> 836 <div class="mt-2"> 837 838 <span 839 class="eds_label eds_label--variant-success eds-interface-text-m-bold me-1 text-nowrap" 840 > 841 Open </span> 842 843 11:00AM - 9:45PM </div> 844 845 <div class="d-flex gap-2 ms-sm-auto mt-2"> 846 847 <a 848 class="eds_button btn btn-outline-secondary btn-sm col text-nowrap" 849 href="https://www.szechuanoperany.com/locationinfo?lid=12965" 850 > 851 <i class="eds_icon fa fa-info-circle" style="" aria-hidden="true"></i> Store info </a> 852 853 854 855 <a 856 class="eds_button btn btn-outline-secondary btn-sm col d-lg-none text-nowrap" 857 href="tel:(585) 340-6133" 858 > 859 <i class="eds_icon fa fa-phone" style="" aria-hidden="true"></i> Call us </a> 860 861 862 </div> 863 </div> 864 </div> 865 </section> 866 </aside> 867 868 869 870 <div class="container" style="grid-area: messages"> 871 </div> 872 <!-- Header ends --> 873 874<main class="main_content" id="main"> 875 <div class="container menu_page locationinfo"> 876 <div class="row menu_wrapper"> 877 <div class="col-md-12"> 878 <h1 class="eds-display-text-title-m">Location and Hours</h1> 879 880 <style> 881 .location-info-box.image-failed .location-info-logo { display: none !important; } 882 .location-info-box.image-failed .location-info-map { display: block !important; } 883 .location-info-box.image-failed .location-info-map .account_logo, 884 .location-info-box.image-failed .location-info-map .restaurant_img, 885 .location-info-box.image-failed .location-info-map img { display: none !important; } 886 </style> 887 <div class="location-info-boxes"> 888 <div class="location-info-box"> 889 <div class="location-info-image location-info-logo hidden-sm-down"> 890 <div class="account_logo" role="presentation"><img src="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/95b565fc-a41a-4e05-b649-574269401100/public" alt="Szechuan Opera - Rochester Logo" onerror="this.closest('.location-info-box').classList.add('image-failed')" /></div> </div> 891 892 <a 893 class="location-info-image location-info-map hidden-md-up" 894 style="background-image: url('https://maps.googleapis.com/maps/api/staticmap?key=AIzaSyBmllVcXZm3D1OIEXKJ5RA39qYpXx_jWvw¢er=43.1487435%2C-77.5786881&zoom=15&size=740x178&scale=2&language=en&markers=anchor%3Acenter%7C43.1487435%2C-77.5786881&signature=c1KVUd9ulwXFNjmpYNAUcj8mkV0='); background-position: center; background-size: cover" 895 target="_blank" 896 title="Szechuan Opera - Rochester" 897 href="https://www.google.com/maps/search/Szechuan+Opera+-+Rochester/@43.148744,-77.578688,20z" 898 > 899 <div class="account_logo" role="presentation"><img src="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/95b565fc-a41a-4e05-b649-574269401100/public" alt="Szechuan Opera - Rochester Logo" onerror="this.closest('.location-info-box').classList.add('image-failed')" /></div> </a> 900 901 <div class="location-info-box-header"> 902 <h2>Szechuan Opera - Rochester</h2> 903 904 <span> 905 630 Park Ave<br/>Rochester, NY 14607 <span class="hidden-sm-down">(<a href="?form=map&lid=12965">see on map</a>)</span> 906 <span class="hidden-md-up">(<a href="https://www.google.com/maps/search/Szechuan+Opera+-+Rochester/@43.148744,-77.578688,20z">see on map</a>)</span> 907 </span> 908 909 <span>Phone: (585) 340-6133</span> 910 911 <div class="todays-hours"> 912 <h3>Today's Hours (Monday, October 5th)</h3> 913 914 <span class="hours"> 915 <div>Pick up:</div> 916 <span> <strong>11:00 AM - 9:45 PM</strong> 917 </span> 918 </span> 919 920 921 <a href="#" role="button" class="btn btn-sm btn-outline-secondary" data-bs-toggle="modal" data-bs-target="#locationModal-12965">View All Hours</a> 922 923 <span class="current_time">Current local time: 8:45 PM Eastern Time</span> 924 </div> 925 926 <div class="card_com"> 927 <ul> 928 <li><img src="/web/default4.0/images/creditcards/visa.svg" alt="We accept VISA" title="We accept VISA" /></li> 929 <li><img src="/web/default4.0/images/creditcards/mc.svg" alt="We accept MasterCard" title="We accept MasterCard" /></li> 930 <li><img src="/web/default4.0/images/creditcards/amex.svg" alt="We accept American Express" title="We accept American Express" /></li> 931 <li><img src="/web/default4.0/images/creditcards/disc.svg" alt="We accept Discover/Novus" title="We accept Discover/Novus" /></li> 932 <li><img src="/web/default4.0/images/creditcards/cash.svg" alt="We accept Cash" title="We accept Cash" /></li> 933 </ul> 934 </div> 935 936 <div class="modal fade location_modal" id="locationModal-12965" tabindex="-1" role="dialog" aria-labelledby="locationModalTitle-12965" aria-hidden="true"> 937 <div class="modal-dialog modal-dialog-centered" role="document"> 938 <div class="modal-content"> 939 <button class="close" type="button" data-bs-dismiss="modal" aria-label="Close"></button> 940 <div class="modal-header"> 941 <h5 class="modal-title" id="locationModalTitle-12965">Hours</h5> 942 </div> 943 <div class="modal-body"> 944 <table class="section"> 945 <tr> 946 <th colspan="2" scope="col"><h3>Pick up Hours</h3></th> 947 </tr> 948 <tr class="row-day active"> 949 <td class="label-day">Monday</td> 950 <td class="day-hours"> 951 <strong>11:00 AM - 9:45 PM</strong> 952 </td> 953 </tr> 954 <tr class="row-day "> 955 <td class="label-day">Tuesday</td> 956 <td class="day-hours"> 957 <strong>11:00 AM - 9:45 PM</strong> 958 </td> 959 </tr> 960 <tr class="row-day "> 961 <td class="label-day">Wednesday</td> 962 <td class="day-hours"> 963 <strong>11:00 AM - 9:45 PM</strong> 964 </td> 965 </tr> 966 <tr class="row-day "> 967 <td class="label-day">Thursday</td> 968 <td class="day-hours"> 969 <strong>11:00 AM - 9:45 PM</strong> 970 </td> 971 </tr> 972 <tr class="row-day "> 973 <td class="label-day">Friday</td> 974 <td class="day-hours"> 975 <strong>11:00 AM - 9:45 PM</strong> 976 </td> 977 </tr> 978 <tr class="row-day "> 979 <td class="label-day">Saturday</td> 980 <td class="day-hours"> 981 <strong>11:00 AM - 9:45 PM</strong> 982 </td> 983 </tr> 984 <tr class="row-day "> 985 <td class="label-day">Sunday</td> 986 <td class="day-hours"> 987 <strong>11:00 AM - 9:45 PM</strong> 988 </td> 989 </tr> 990 </table> 991 </div> 992 </div> 993 </div> 994 </div> 995 </div> 996 997 <div class="location-info-box-footer"> 998 <a href="?form=ordering&lid=12965" class="btn btn-primary w-100" role="button"> 999 Order from here </a> 1000 </div> 1001 </div> 1002 </div> 1003 </div> 1004 </div> 1005 </div> 1006</main> 1007 1008<footer class="footer bg-white" style="grid-area: footer"> 1009 <div class="container"> 1010 <div class="social_wrapper"> 1011 <div class="social_links"> 1012 <ul class="d-flex align-items-start"> 1013 <li> 1014 <a class="icon" href="https://www.tripadvisor.com/Restaurant_Review-g48503-d17806809-Reviews-Szechuan_Opera-Rochester_Finger_Lakes_New_York.html" target="_blank" title="TripAdvisor (opens in new tab)"> 1015 <span class="sr-only">TripAdvisor</span> 1016 <img class="eds_icon fab fa-tripadvisor" style="" aria-hidden="true" src="/web/website/assets/svg/icons/social/tripadvisor.svg" alt="Tripadvisor" /> </a> 1017 </li> 1018 </ul> 1019 </div> 1020 <div class="d_app"> 1021 <ul> 1022 <li><a href="https://play.google.com/store/apps/details?id=com.szechuanopera.ordering"><span class="sr-only">Download from the Google Play Store</span><img src="/web/default4.0/images/google-play-badge.svg" alt="Get it on Google Play" aria-hidden="true"></a></li> 1023 </ul> 1024 </div> 1025 </div> 1026 1027 <div class="d-flex flex-wrap justify-content-between gap-2 mt-2" style="--bs-link-color: var(--bs-body-color); --bs-link-hover-color: var(--bs-gray-dark)"> 1028 <ul class="list-unstyled d-flex gap-3 mb-0 eds-interface-text-l-regular"> 1029 <li><a class="text-decoration-none" href="https://www.szechuanoperany.com" aria-current="false">Home</a></li> 1030 <li><a class="text-decoration-none" href="https://www.szechuanoperany.com/order/main" aria-current="false">Menu</a></li> 1031 <li><a class="text-decoration-none" href="https://www.szechuanoperany.com/locationinfo" aria-current="page">Location & Hours</a></li> 1032 <li><a class="text-decoration-none" href="https://www.szechuanoperany.com/contact" aria-current="false">Contact</a></li> 1033 </ul> 1034 1035 <ul class="list-unstyled d-flex mb-0 eds-interface-text-m-regular"> 1036 <li class="bullet-separated"><a href="https://www.szechuanoperany.com/reportbug" class="errorLink">Technical Support</a></li> 1037 <li class="bullet-separated"><a href="https://www.szechuanoperany.com/privacy">Privacy Policy</a></li> 1038 <li class="bullet-separated"><a href="https://www.szechuanoperany.com/tos">Terms of Service</a></li> 1039 <li class="bullet-separated"><a href="https://www.szechuanoperany.com/accessibility">Accessibility</a></li> 1040 </ul> 1041 </div> 1042 1043 <div class="d-flex justify-content-between gap-3 border-top mt-3 pt-3" style="--bs-link-color: var(--bs-body-color); --bs-link-hover-color: var(--bs-gray-dark)"> 1044 <p class="eds-copy-text-m-regular"> 1045 This site is protected by reCAPTCHA and <a href="https://policies.google.com/privacy">Google's Privacy Policy</a> and <a href="https://policies.google.com/terms">Google's Terms of Service</a> apply. 1046 </p> 1047 1048 <p class="eds-copy-text-m-regular text-end"> 1049 © 2026 Online Ordering by <a href="http://chinesemenuonline.com">Chinese Menu Online</a> <br>Experience authentic Chinese flavors at <a href="https://www.springroll.com" target="_blank" title="Opens in new tab" >Springroll</a> </p> 1050 </div> 1051 </div> 1052</footer> 1053<!-- footer ends --> 1054 1055 1056</div> 1057<!-- wrapper ends --> 1058 1059 1060 1061 <div 1062 data-eds-id="6ac444935a63d" 1063 class="eds_dialog modal fade " 1064 tabindex="-1" 1065 aria-labelledby="eds-dialog-title-6ac444935a63d" 1066 aria-hidden="true" 1067 id="forgot-password-modal" >
1068 <div class="modal-dialog modal-dialog-centered modal-fullscreen-sm-down modal-md"> 1069 <div class="modal-content "> 1070 1071 <div class="modal-header d-flex justify-content-between gap-3 eds-display-text-title-m "> 1072 <h2 id="eds-dialog-title-6ac444935a63d" class="eds_dialog-title modal-title eds-display-text-title-m pe-5" style="max-width: 100%"> 1073 Forgot Password </h2> 1074 1075 <button class="eds_button btn btn-outline-secondary btn-lg eds_button--shape-circle position-absolute top-0 end-0 border d-sm-none" style="width: 3rem; height: 3rem; margin-top: 6px; margin-right: 6px" data-bs-dismiss="modal" aria-label="Close" type="button"><i class="eds_icon fa fa-close" style="" aria-hidden="true"></i></button> </div> 1076 1077 <div class="eds_dialog-body modal-body css-scroll eds-copy-text-l-regular "> 1078 <form 1079 id="forgot-password-form" 1080 name="forgot-password" 1081 data-async-on-submit 1082 method="post" 1083 action="https://www.szechuanoperany.com/auth/forgotpassword" 1084 data-async-block="#forgot-password-modal .modal-content" 1085 data-async-target="#forgot-password-modal .eds_dialog-body" 1086 data-async-recaptcha 1087 novalidate 1088 > 1089 1090 1091 <label 1092 data-eds-id="6ac444935a604" 1093 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-3" 1094 > 1095 <div class="eds_formfield-label"> 1096 Your email <span aria-hidden="true">*</span> </div> 1097 1098 <div class="position-relative d-flex flex-column"> 1099 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1100 1101 <input 1102 type="email" 1103 class="eds-copy-text-l-regular " 1104 placeholder=" " name="email" autocomplete="email" required value="" /> 1105 1106 1107 1108 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1109 </div> 1110 1111 1112
1112<script> 1113 { 1114 const container = document.querySelector('[data-eds-id="6ac444935a604"]'); 1115 const input = container.querySelector('input, textarea, select'); 1116 const error = container.querySelector('.eds_formfield-error'); 1117 1118 1119 input.addEventListener('eds.validation.reset', () => { 1120 input.removeAttribute('data-validation'); 1121 input.setCustomValidity(''); 1122 error.innerHTML = ''; 1123 }); 1124 1125 input.addEventListener('eds.validation.hide', () => { 1126 input.removeAttribute('data-validation'); 1127 }); 1128 1129 input.addEventListener('eds.validation.success', (e) => { 1130 input.setCustomValidity(''); 1131 input.setAttribute('data-validation', ''); 1132 error.innerHTML = ''; 1133 }); 1134 1135 input.addEventListener('eds.validation.warning', (e) => { 1136 input.setCustomValidity(''); 1137 input.setAttribute('data-validation', ''); 1138 error.innerHTML = e.detail; 1139 }); 1140 1141 input.addEventListener('eds.validation.error', (e) => { 1142 input.setCustomValidity(e.detail); 1143 input.checkValidity(); input.setAttribute('data-validation', ''); 1144 }); 1145 1146 input.addEventListener('invalid', (e) => { 1147 error.innerHTML = input.validationMessage; 1148 }); 1149 1150 } 1151 </script>
1151 1152 </label> 1153 1154 1155 <button class="eds_button btn btn-primary w-100 mb-3" type="submit" form="forgot-password-form">Reset password</button> 1156 <div class="text-center"> 1157 <button data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#login-modal" class="eds_button btn btn-link btn-text-link border-0 p-0 text-inherit text-decoration-none" type="button">< Back</button> </div> 1158 </form> </div> 1159 1160 1161 </div> 1162 </div> 1163 1164
1164<script> 1165 { 1166 const container = document.querySelector('[data-eds-id="6ac444935a63d"]'); 1167 let edsMethodsDisabled = false; 1168 1169 ['show', 'hide', 'toggle', 'dispose'].forEach((eventName) => { 1170 container.addEventListener(`eds.${eventName}`, (e) => { 1171 if (edsMethodsDisabled) return; 1172 1173 bootstrap.Modal.getOrCreateInstance(container)[eventName]( 1174 ...(Array.isArray(e.detail) ? e.detail : [e.detail]) 1175 ); 1176 }); 1177 }); 1178 1179 ['show', 'shown', 'hide', 'hidden'].forEach((eventName) => { 1180 container.addEventListener(`${eventName}.bs.modal`, (e) => { 1181 if (edsMethodsDisabled) return; 1182 1183 edsMethodsDisabled = true; // Prevent infinite loop of triggering events 1184 container.dispatchEvent(new CustomEvent(`eds.${eventName}`)); 1185 edsMethodsDisabled = false; 1186 }); 1187 }); 1188 1189 1190 ['show.bs.modal', 'shown.bs.modal'].forEach((eventName) => { 1191 container.addEventListener(eventName, () => { 1192 const autofocusInput = container.querySelector('[autofocus]'); 1193 if (autofocusInput) { 1194 container.style.display = 'block'; 1195 autofocusInput.focus(); 1196 } 1197 }); 1198 }); 1199 1200 } 1201 </script>
1201 1202 </div> 1203 1204 1205 <div 1206 data-eds-id="6ac444935a76a" 1207 class="eds_dialog modal fade " 1208 tabindex="-1" 1209 aria-labelledby="eds-dialog-title-6ac444935a76a" 1210 aria-hidden="true" 1211 id="login-modal" > 1212 <div class="modal-dialog modal-dialog-centered modal-fullscreen-sm-down modal-md"> 1213 <div class="modal-content "> 1214 1215 <div class="modal-header d-flex justify-content-between gap-3 eds-display-text-title-m "> 1216 <h2 id="eds-dialog-title-6ac444935a76a" class="eds_dialog-title modal-title eds-display-text-title-m pe-5" style="max-width: 100%"> 1217 Log in </h2> 1218 1219 <button class="eds_button btn btn-outline-secondary btn-lg eds_button--shape-circle position-absolute top-0 end-0 border d-sm-none" style="width: 3rem; height: 3rem; margin-top: 6px; margin-right: 6px" data-bs-dismiss="modal" aria-label="Close" type="button"><i class="eds_icon fa fa-close" style="" aria-hidden="true"></i></button> </div> 1220 1221 <div class="eds_dialog-body modal-body css-scroll eds-copy-text-l-regular "> 1222 <form 1223 id="login-form" 1224 name="login" 1225 data-async-on-submit 1226 method="post" 1227 action="https://www.szechuanoperany.com/auth" 1228 data-async-block="#login-modal .modal-content" 1229 data-async-target="#login-modal .eds_dialog-body" 1230 data-async-then="document.querySelector('#login-modal').dispatchEvent(new CustomEvent('eds.hide'))" 1231 data-async-recaptcha 1232 novalidate 1233 > 1234 1235 1236 <label 1237 data-eds-id="6ac444935a692" 1238 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-3" 1239 > 1240 <div class="eds_formfield-label"> 1241 Your email <span aria-hidden="true">*</span> </div> 1242 1243 <div class="position-relative d-flex flex-column"> 1244 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1245 1246 <input 1247 type="email" 1248 class="eds-copy-text-l-regular " 1249 placeholder=" " name="email" autocomplete="username" required value="" /> 1250 1251 1252 1253 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1254 </div> 1255 1256 1257
1257<script> 1258 { 1259 const container = document.querySelector('[data-eds-id="6ac444935a692"]'); 1260 const input = container.querySelector('input, textarea, select'); 1261 const error = container.querySelector('.eds_formfield-error'); 1262 1263 1264 input.addEventListener('eds.validation.reset', () => { 1265 input.removeAttribute('data-validation'); 1266 input.setCustomValidity(''); 1267 error.innerHTML = ''; 1268 }); 1269 1270 input.addEventListener('eds.validation.hide', () => { 1271 input.removeAttribute('data-validation'); 1272 }); 1273 1274 input.addEventListener('eds.validation.success', (e) => { 1275 input.setCustomValidity(''); 1276 input.setAttribute('data-validation', ''); 1277 error.innerHTML = ''; 1278 }); 1279 1280 input.addEventListener('eds.validation.warning', (e) => { 1281 input.setCustomValidity(''); 1282 input.setAttribute('data-validation', ''); 1283 error.innerHTML = e.detail; 1284 }); 1285 1286 input.addEventListener('eds.validation.error', (e) => { 1287 input.setCustomValidity(e.detail); 1288 input.checkValidity(); input.setAttribute('data-validation', ''); 1289 }); 1290 1291 input.addEventListener('invalid', (e) => { 1292 error.innerHTML = input.validationMessage; 1293 }); 1294 1295 } 1296 </script>
1296 1297 </label> 1298 1299 1300 1301 <label 1302 data-eds-id="6ac444935a6a7" 1303 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-2" 1304 > 1305 <div class="eds_formfield-label"> 1306 Your password <span aria-hidden="true">*</span> </div> 1307 1308 <div class="position-relative d-flex flex-column"> 1309 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1310 1311 <input 1312 type="password" 1313 class="eds-copy-text-l-regular pe-6" 1314 data-event-on:toggle_password_6ac444935a6a7="(shown) => $(this).attr('type', shown ? 'text' : 'password')" placeholder=" " name="password" autocomplete="current-password" required value="" /> 1315 1316 1317 <button class="eds_button btn btn-outline eds_formfield-toggle_password position-absolute end-0 px-2" style="--bs-btn-bg: transparent" title="Show password" aria-label="Show password" onclick="app.event.emit('toggle_password_6ac444935a6a7', !$(this).data('password-shown'))" data-event-on:toggle_password_6ac444935a6a7="(shown) => $(this).data('password-shown', shown).attr('title', shown ? 'Hide password' : 'Show password').attr('aria-label', shown ? 'Hide password' : 'Show password')" type="button"><i class="eds_icon fas fa-sm fa-eye" style="" aria-hidden="true" data-event-on:toggle_password_6ac444935a6a7="(shown) => this.hidden = shown"></i> <i class="eds_icon fas fa-sm fa-eye-slash" style="" aria-hidden="true" data-event-on:toggle_password_6ac444935a6a7="(shown) => this.hidden = !shown" hidden></i></button> 1318 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1319 </div> 1320 1321 1322
1322<script> 1323 { 1324 const container = document.querySelector('[data-eds-id="6ac444935a6a7"]'); 1325 const input = container.querySelector('input, textarea, select'); 1326 const error = container.querySelector('.eds_formfield-error'); 1327 1328 1329 input.addEventListener('eds.validation.reset', () => { 1330 input.removeAttribute('data-validation'); 1331 input.setCustomValidity(''); 1332 error.innerHTML = ''; 1333 }); 1334 1335 input.addEventListener('eds.validation.hide', () => { 1336 input.removeAttribute('data-validation'); 1337 }); 1338 1339 input.addEventListener('eds.validation.success', (e) => { 1340 input.setCustomValidity(''); 1341 input.setAttribute('data-validation', ''); 1342 error.innerHTML = ''; 1343 }); 1344 1345 input.addEventListener('eds.validation.warning', (e) => { 1346 input.setCustomValidity(''); 1347 input.setAttribute('data-validation', ''); 1348 error.innerHTML = e.detail; 1349 }); 1350 1351 input.addEventListener('eds.validation.error', (e) => { 1352 input.setCustomValidity(e.detail); 1353 input.checkValidity(); input.setAttribute('data-validation', ''); 1354 }); 1355 1356 input.addEventListener('invalid', (e) => { 1357 error.innerHTML = input.validationMessage; 1358 }); 1359 1360 } 1361 </script>
1361 1362 </label> 1363 1364 1365 <div class="text-end mb-3"> 1366 <button data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#forgot-password-modal" class="eds_button btn btn-link btn-text-link border-0 p-0 text-inherit text-decoration-none" type="button">Forgot your password?</button> </div> 1367 1368 1369 <button class="eds_button btn btn-primary w-100 mb-3" type="submit">Log in</button> 1370 <div class="d-flex align-items-center mb-3"><hr class="flex-grow-1"><span class="mx-3 text-muted eds-interface-text-s-regular">OR</span><hr class="flex-grow-1"></div> <div class="google-signin-container text-center mb-2"> 1371 <a href="https://sso.onlineorderingsecure.com/auth/google/redirect?return_to=https%3A%2F%2Fwww.szechuanoperany.com%2Fauth%2Fgoogle&redirect=%2Flocationinfo" class="btn btn-outline-secondary w-100 eds_button eds_button--shape-default d-flex align-items-center justify-content-center gap-2" onclick="var url = new URL(this.href); url.searchParams.set('redirect', window.location.pathname + window.location.search); this.href = url.toString();"> 1372 <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path d="M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844a4.14 4.14 0 0 1-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615Z" fill="#4285F4"/><path d="M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18Z" fill="#34A853"/><path d="M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.997 8.997 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332Z" fill="#FBBC05"/><path d="M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 6.29C4.672 4.163 6.656 2.58 9 2.58Z" fill="#EA4335"/></svg> 1373 Continue with Google 1374 </a> 1375 </div> 1376 <div class="apple-signin-container text-center mb-2"> 1377 <a href="https://sso.onlineorderingsecure.com/auth/apple/redirect?return_to=https%3A%2F%2Fwww.szechuanoperany.com%2Fauth%2Fapple&redirect=%2Flocationinfo" class="btn btn-outline-secondary w-100 eds_button eds_button--shape-default d-flex align-items-center justify-content-center gap-2" onclick="var url = new URL(this.href); url.searchParams.set('redirect', window.location.pathname + window.location.search); this.href = url.toString();"> 1378 <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path d="M15.1 6.2c-.1.1-2.1 1.2-2.1 3.7 0 2.9 2.5 3.9 2.6 3.9 0 0 0 .1-.4 1.3-.6 1.5-1.7 3-2.9 3-1.3 0-1.6-.7-3.1-.7s-2 .8-3.1.8c-1.2 0-2.2-1.3-3-2.8C2 13.3 1.4 10.9 1.4 8.6c0-3.7 2.4-5.6 4.7-5.6 1.2 0 2.3.8 3 .8.7 0 1.9-.9 3.3-.9.5 0 2.4.1 3.7 1.3zM11.7 1.5c.6-.7 1-1.7 1-2.7 0-.1 0-.3 0-.4-1 0-2.1.6-2.8 1.4-.6.6-1.1 1.6-1.1 2.6 0 .2 0 .3 0 .4.1 0 .2 0 .3 0 .9 0 1.9-.6 2.6-1.3z" fill="currentColor"/></svg> 1379 Continue with Apple 1380 </a> 1381 </div> 1382 <small class="d-block mt-2 eds-interface-text-s-regular"> 1383 By continuing, you agree to our <a href="https://www.szechuanoperany.com/tos" target="_blank" rel="noopener" title="Opens in new tab">Terms of Service</a> & <a href="https://www.szechuanoperany.com/privacy" target="_blank" rel="noopener" title="Opens in new tab">Privacy Policy</a> and consent to receive automated promotional emails. See our <a href="https://www.szechuanoperany.com/privacy#section-7-7" target="_blank" rel="noopener" title="Opens in new tab">Notice of Financial Incentive</a> regarding how we use your data for rewards and offers. 1384 </small> 1385 1386 <div class="text-center mt-3"> 1387 Don't have an account? 1388 <button data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#register-modal" class="eds_button btn btn-link btn-text-link border-0 p-0 text-inherit text-decoration-none" type="button">Sign up</button> </div> 1389 </form> </div> 1390 1391 1392 </div> 1393 </div> 1394 1395
1395<script> 1396 { 1397 const container = document.querySelector('[data-eds-id="6ac444935a76a"]'); 1398 let edsMethodsDisabled = false; 1399 1400 ['show', 'hide', 'toggle', 'dispose'].forEach((eventName) => { 1401 container.addEventListener(`eds.${eventName}`, (e) => { 1402 if (edsMethodsDisabled) return; 1403 1404 bootstrap.Modal.getOrCreateInstance(container)[eventName]( 1405 ...(Array.isArray(e.detail) ? e.detail : [e.detail]) 1406 ); 1407 }); 1408 }); 1409 1410 ['show', 'shown', 'hide', 'hidden'].forEach((eventName) => { 1411 container.addEventListener(`${eventName}.bs.modal`, (e) => { 1412 if (edsMethodsDisabled) return; 1413 1414 edsMethodsDisabled = true; // Prevent infinite loop of triggering events 1415 container.dispatchEvent(new CustomEvent(`eds.${eventName}`)); 1416 edsMethodsDisabled = false; 1417 }); 1418 }); 1419 1420 1421 ['show.bs.modal', 'shown.bs.modal'].forEach((eventName) => { 1422 container.addEventListener(eventName, () => { 1423 const autofocusInput = container.querySelector('[autofocus]'); 1424 if (autofocusInput) { 1425 container.style.display = 'block'; 1426 autofocusInput.focus(); 1427 } 1428 }); 1429 }); 1430 1431 } 1432 </script>
1432 1433 </div> 1434 1435 1436 <div 1437 data-eds-id="6ac444935aa9e" 1438 class="eds_dialog modal fade " 1439 tabindex="-1" 1440 aria-labelledby="eds-dialog-title-6ac444935aa9e" 1441 aria-hidden="true" 1442 id="register-modal" > 1443 <div class="modal-dialog modal-dialog-centered modal-fullscreen-sm-down modal-md"> 1444 <div class="modal-content "> 1445 1446 <div class="modal-header d-flex justify-content-between gap-3 eds-display-text-title-m "> 1447 <h2 id="eds-dialog-title-6ac444935aa9e" class="eds_dialog-title modal-title eds-display-text-title-m pe-5" style="max-width: 100%"> 1448 Sign up </h2> 1449 1450 <button class="eds_button btn btn-outline-secondary btn-lg eds_button--shape-circle position-absolute top-0 end-0 border d-sm-none" style="width: 3rem; height: 3rem; margin-top: 6px; margin-right: 6px" data-bs-dismiss="modal" aria-label="Close" type="button"><i class="eds_icon fa fa-close" style="" aria-hidden="true"></i></button> </div> 1451 1452 <div class="eds_dialog-body modal-body css-scroll eds-copy-text-l-regular p-0"> 1453 <form 1454 id="register-form" 1455 name="register" 1456 data-async-on-submit 1457 method="post" 1458 action="https://www.szechuanoperany.com/auth/register" 1459 data-async-block="#register-modal .modal-content" 1460 data-async-target="#register-modal .eds_dialog-body" 1461 data-async-then="document.querySelector('#register-modal').dispatchEvent(new CustomEvent('eds.hide'))" 1462 data-async-recaptcha 1463 novalidate 1464 > 1465 1466 <div class="p-3 pt-0"> 1467 1468 <label 1469 data-eds-id="6ac444935a993" 1470 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-2p5" 1471 > 1472 <div class="eds_formfield-label"> 1473 First name <span aria-hidden="true">*</span> </div> 1474 1475 <div class="position-relative d-flex flex-column"> 1476 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1477 1478 <input 1479 type="text" 1480 class="eds-copy-text-l-regular " 1481 placeholder=" " name="firstname" autocomplete="given-name" required value="" /> 1482 1483 1484 1485 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1486 </div> 1487 1488 1489
1489<script> 1490 { 1491 const container = document.querySelector('[data-eds-id="6ac444935a993"]'); 1492 const input = container.querySelector('input, textarea, select'); 1493 const error = container.querySelector('.eds_formfield-error'); 1494 1495 1496 input.addEventListener('eds.validation.reset', () => { 1497 input.removeAttribute('data-validation'); 1498 input.setCustomValidity(''); 1499 error.innerHTML = ''; 1500 }); 1501 1502 input.addEventListener('eds.validation.hide', () => { 1503 input.removeAttribute('data-validation'); 1504 }); 1505 1506 input.addEventListener('eds.validation.success', (e) => { 1507 input.setCustomValidity(''); 1508 input.setAttribute('data-validation', ''); 1509 error.innerHTML = ''; 1510 }); 1511 1512 input.addEventListener('eds.validation.warning', (e) => { 1513 input.setCustomValidity(''); 1514 input.setAttribute('data-validation', ''); 1515 error.innerHTML = e.detail; 1516 }); 1517 1518 input.addEventListener('eds.validation.error', (e) => { 1519 input.setCustomValidity(e.detail); 1520 input.checkValidity(); input.setAttribute('data-validation', ''); 1521 }); 1522 1523 input.addEventListener('invalid', (e) => { 1524 error.innerHTML = input.validationMessage; 1525 }); 1526 1527 } 1528 </script>
1528 1529 </label> 1530 1531 1532 1533 <label 1534 data-eds-id="6ac444935a9ac" 1535 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-2p5" 1536 > 1537 <div class="eds_formfield-label"> 1538 Last name <span aria-hidden="true">*</span> </div> 1539 1540 <div class="position-relative d-flex flex-column"> 1541 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1542 1543 <input 1544 type="text" 1545 class="eds-copy-text-l-regular " 1546 placeholder=" " name="lastname" autocomplete="family-name" required value="" /> 1547 1548 1549 1550 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1551 </div> 1552 1553 1554
1554<script> 1555 { 1556 const container = document.querySelector('[data-eds-id="6ac444935a9ac"]'); 1557 const input = container.querySelector('input, textarea, select'); 1558 const error = container.querySelector('.eds_formfield-error'); 1559 1560 1561 input.addEventListener('eds.validation.reset', () => { 1562 input.removeAttribute('data-validation'); 1563 input.setCustomValidity(''); 1564 error.innerHTML = ''; 1565 }); 1566 1567 input.addEventListener('eds.validation.hide', () => { 1568 input.removeAttribute('data-validation'); 1569 }); 1570 1571 input.addEventListener('eds.validation.success', (e) => { 1572 input.setCustomValidity(''); 1573 input.setAttribute('data-validation', ''); 1574 error.innerHTML = ''; 1575 }); 1576 1577 input.addEventListener('eds.validation.warning', (e) => { 1578 input.setCustomValidity(''); 1579 input.setAttribute('data-validation', ''); 1580 error.innerHTML = e.detail; 1581 }); 1582 1583 input.addEventListener('eds.validation.error', (e) => { 1584 input.setCustomValidity(e.detail); 1585 input.checkValidity(); input.setAttribute('data-validation', ''); 1586 }); 1587 1588 input.addEventListener('invalid', (e) => { 1589 error.innerHTML = input.validationMessage; 1590 }); 1591 1592 } 1593 </script>
1593 1594 </label> 1595 1596 1597 1598 <label 1599 data-eds-id="6ac444935a9be" 1600 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-2p5" 1601 > 1602 <div class="eds_formfield-label"> 1603 Email <span aria-hidden="true">*</span> </div> 1604 1605 <div class="position-relative d-flex flex-column"> 1606 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1607 1608 <input 1609 type="email" 1610 class="eds-copy-text-l-regular " 1611 placeholder=" " name="email" autocomplete="username" required value="" /> 1612 1613 1614 1615 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1616 </div> 1617 1618 1619
1619<script> 1620 { 1621 const container = document.querySelector('[data-eds-id="6ac444935a9be"]'); 1622 const input = container.querySelector('input, textarea, select'); 1623 const error = container.querySelector('.eds_formfield-error'); 1624 1625 1626 input.addEventListener('eds.validation.reset', () => { 1627 input.removeAttribute('data-validation'); 1628 input.setCustomValidity(''); 1629 error.innerHTML = ''; 1630 }); 1631 1632 input.addEventListener('eds.validation.hide', () => { 1633 input.removeAttribute('data-validation'); 1634 }); 1635 1636 input.addEventListener('eds.validation.success', (e) => { 1637 input.setCustomValidity(''); 1638 input.setAttribute('data-validation', ''); 1639 error.innerHTML = ''; 1640 }); 1641 1642 input.addEventListener('eds.validation.warning', (e) => { 1643 input.setCustomValidity(''); 1644 input.setAttribute('data-validation', ''); 1645 error.innerHTML = e.detail; 1646 }); 1647 1648 input.addEventListener('eds.validation.error', (e) => { 1649 input.setCustomValidity(e.detail); 1650 input.checkValidity(); input.setAttribute('data-validation', ''); 1651 }); 1652 1653 input.addEventListener('invalid', (e) => { 1654 error.innerHTML = input.validationMessage; 1655 }); 1656 1657 } 1658 </script>
1658 1659 </label> 1660 1661 1662 1663 <label 1664 data-eds-id="6ac444935a9cc" 1665 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-2p5" 1666 > 1667 <div class="eds_formfield-label"> 1668 Password <span aria-hidden="true">*</span> </div> 1669 1670 <div class="position-relative d-flex flex-column"> 1671 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1672 1673 <input 1674 type="password" 1675 class="eds-copy-text-l-regular pe-6" 1676 data-event-on:toggle_password_6ac444935a9cc="(shown) => $(this).attr('type', shown ? 'text' : 'password')" placeholder=" " name="password" autocomplete="current-password" required value="" /> 1677 1678 1679 <button class="eds_button btn btn-outline eds_formfield-toggle_password position-absolute end-0 px-2" style="--bs-btn-bg: transparent" title="Show password" aria-label="Show password" onclick="app.event.emit('toggle_password_6ac444935a9cc', !$(this).data('password-shown'))" data-event-on:toggle_password_6ac444935a9cc="(shown) => $(this).data('password-shown', shown).attr('title', shown ? 'Hide password' : 'Show password').attr('aria-label', shown ? 'Hide password' : 'Show password')" type="button"><i class="eds_icon fas fa-sm fa-eye" style="" aria-hidden="true" data-event-on:toggle_password_6ac444935a9cc="(shown) => this.hidden = shown"></i> <i class="eds_icon fas fa-sm fa-eye-slash" style="" aria-hidden="true" data-event-on:toggle_password_6ac444935a9cc="(shown) => this.hidden = !shown" hidden></i></button> 1680 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1681 </div> 1682 1683 1684
1684<script> 1685 { 1686 const container = document.querySelector('[data-eds-id="6ac444935a9cc"]'); 1687 const input = container.querySelector('input, textarea, select'); 1688 const error = container.querySelector('.eds_formfield-error'); 1689 1690 1691 input.addEventListener('eds.validation.reset', () => { 1692 input.removeAttribute('data-validation'); 1693 input.setCustomValidity(''); 1694 error.innerHTML = ''; 1695 }); 1696 1697 input.addEventListener('eds.validation.hide', () => { 1698 input.removeAttribute('data-validation'); 1699 }); 1700 1701 input.addEventListener('eds.validation.success', (e) => { 1702 input.setCustomValidity(''); 1703 input.setAttribute('data-validation', ''); 1704 error.innerHTML = ''; 1705 }); 1706 1707 input.addEventListener('eds.validation.warning', (e) => { 1708 input.setCustomValidity(''); 1709 input.setAttribute('data-validation', ''); 1710 error.innerHTML = e.detail; 1711 }); 1712 1713 input.addEventListener('eds.validation.error', (e) => { 1714 input.setCustomValidity(e.detail); 1715 input.checkValidity(); input.setAttribute('data-validation', ''); 1716 }); 1717 1718 input.addEventListener('invalid', (e) => { 1719 error.innerHTML = input.validationMessage; 1720 }); 1721 1722 } 1723 </script>
1723 1724 </label> 1725 1726 1727 1728 <label 1729 data-eds-id="6ac444935a9fa" 1730 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-3" 1731 > 1732 <div class="eds_formfield-label"> 1733 Phone number <span aria-hidden="true">*</span> </div> 1734 1735 <div class="position-relative d-flex flex-column"> 1736 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1737 1738 <input 1739 type="text" 1740 class="eds-copy-text-l-regular " 1741 placeholder=" " name="primary_phone" autocomplete="tel-national" required value="" /> 1742 1743 1744 1745 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1746 </div> 1747 1748 <div class="eds-interface-text-s-regular mt-2"> 1749 <i class="eds_icon fa fa-info-circle text-muted" style="" aria-hidden="true"></i> We require a phone number in case we need to contact you about your order. </div> 1750 1751
1751<script> 1752 { 1753 const container = document.querySelector('[data-eds-id="6ac444935a9fa"]'); 1754 const input = container.querySelector('input, textarea, select'); 1755 const error = container.querySelector('.eds_formfield-error'); 1756 1757 1758 input.addEventListener('eds.validation.reset', () => { 1759 input.removeAttribute('data-validation'); 1760 input.setCustomValidity(''); 1761 error.innerHTML = ''; 1762 }); 1763 1764 input.addEventListener('eds.validation.hide', () => { 1765 input.removeAttribute('data-validation'); 1766 }); 1767 1768 input.addEventListener('eds.validation.success', (e) => { 1769 input.setCustomValidity(''); 1770 input.setAttribute('data-validation', ''); 1771 error.innerHTML = ''; 1772 }); 1773 1774 input.addEventListener('eds.validation.warning', (e) => { 1775 input.setCustomValidity(''); 1776 input.setAttribute('data-validation', ''); 1777 error.innerHTML = e.detail; 1778 }); 1779 1780 input.addEventListener('eds.validation.error', (e) => { 1781 input.setCustomValidity(e.detail); 1782 input.checkValidity(); input.setAttribute('data-validation', ''); 1783 }); 1784 1785 input.addEventListener('invalid', (e) => { 1786 error.innerHTML = input.validationMessage; 1787 }); 1788 1789 } 1790 </script>
1790 1791 </label> 1792 1793 1794 1795 <div class="eds_checkable d-inline-block mb-2" > 1796 <input id="eds-checkable-6ac444935aa0c" name="receive_promotions" value="1" checked type="checkbox" /> 1797 <label for="eds-checkable-6ac444935aa0c" class="eds_checkable-text eds-interface-text-l-regular "> 1798 Receive Promotional Offers & Updates </label> 1799 </div> 1800 1801 1802 <button class="eds_button btn btn-primary w-100 mt-1 mb-3" type="submit">Sign up</button> 1803 <div class="d-flex align-items-center mb-3"><hr class="flex-grow-1"><span class="mx-3 text-muted eds-interface-text-s-regular">OR</span><hr class="flex-grow-1"></div> <div class="google-signin-container text-center mb-2"> 1804 <a href="https://sso.onlineorderingsecure.com/auth/google/redirect?return_to=https%3A%2F%2Fwww.szechuanoperany.com%2Fauth%2Fgoogle&redirect=%2Flocationinfo" class="btn btn-outline-secondary w-100 eds_button eds_button--shape-default d-flex align-items-center justify-content-center gap-2" onclick="var url = new URL(this.href); url.searchParams.set('redirect', window.location.pathname + window.location.search); this.href = url.toString();"> 1805 <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path d="M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844a4.14 4.14 0 0 1-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615Z" fill="#4285F4"/><path d="M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18Z" fill="#34A853"/><path d="M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.997 8.997 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332Z" fill="#FBBC05"/><path d="M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 6.29C4.672 4.163 6.656 2.58 9 2.58Z" fill="#EA4335"/></svg> 1806 Continue with Google 1807 </a> 1808 </div> 1809 <div class="apple-signin-container text-center mb-2"> 1810 <a href="https://sso.onlineorderingsecure.com/auth/apple/redirect?return_to=https%3A%2F%2Fwww.szechuanoperany.com%2Fauth%2Fapple&redirect=%2Flocationinfo" class="btn btn-outline-secondary w-100 eds_button eds_button--shape-default d-flex align-items-center justify-content-center gap-2" onclick="var url = new URL(this.href); url.searchParams.set('redirect', window.location.pathname + window.location.search); this.href = url.toString();"> 1811 <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path d="M15.1 6.2c-.1.1-2.1 1.2-2.1 3.7 0 2.9 2.5 3.9 2.6 3.9 0 0 0 .1-.4 1.3-.6 1.5-1.7 3-2.9 3-1.3 0-1.6-.7-3.1-.7s-2 .8-3.1.8c-1.2 0-2.2-1.3-3-2.8C2 13.3 1.4 10.9 1.4 8.6c0-3.7 2.4-5.6 4.7-5.6 1.2 0 2.3.8 3 .8.7 0 1.9-.9 3.3-.9.5 0 2.4.1 3.7 1.3zM11.7 1.5c.6-.7 1-1.7 1-2.7 0-.1 0-.3 0-.4-1 0-2.1.6-2.8 1.4-.6.6-1.1 1.6-1.1 2.6 0 .2 0 .3 0 .4.1 0 .2 0 .3 0 .9 0 1.9-.6 2.6-1.3z" fill="currentColor"/></svg> 1812 Continue with Apple 1813 </a> 1814 </div> 1815 <small class="d-block mt-2 eds-interface-text-s-regular"> 1816 By continuing, you agree to our <a href="https://www.szechuanoperany.com/tos" target="_blank" rel="noopener" title="Opens in new tab">Terms of Service</a> & <a href="https://www.szechuanoperany.com/privacy" target="_blank" rel="noopener" title="Opens in new tab">Privacy Policy</a> and consent to receive automated promotional emails. See our <a href="https://www.szechuanoperany.com/privacy#section-7-7" target="_blank" rel="noopener" title="Opens in new tab">Notice of Financial Incentive</a> regarding how we use your data for rewards and offers. 1817 </small> 1818 1819 <div class="text-center mt-3"> 1820 Already have an account? 1821 <button data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#login-modal" class="eds_button btn btn-link btn-text-link border-0 p-0 text-inherit text-decoration-none" type="button">Log in</button> </div> 1822 </div> 1823 </form> </div> 1824 1825 1826 </div> 1827 </div> 1828 1829
1829<script> 1830 { 1831 const container = document.querySelector('[data-eds-id="6ac444935aa9e"]'); 1832 let edsMethodsDisabled = false; 1833 1834 ['show', 'hide', 'toggle', 'dispose'].forEach((eventName) => { 1835 container.addEventListener(`eds.${eventName}`, (e) => { 1836 if (edsMethodsDisabled) return; 1837 1838 bootstrap.Modal.getOrCreateInstance(container)[eventName]( 1839 ...(Array.isArray(e.detail) ? e.detail : [e.detail]) 1840 ); 1841 }); 1842 }); 1843 1844 ['show', 'shown', 'hide', 'hidden'].forEach((eventName) => { 1845 container.addEventListener(`${eventName}.bs.modal`, (e) => { 1846 if (edsMethodsDisabled) return; 1847 1848 edsMethodsDisabled = true; // Prevent infinite loop of triggering events 1849 container.dispatchEvent(new CustomEvent(`eds.${eventName}`)); 1850 edsMethodsDisabled = false; 1851 }); 1852 }); 1853 1854 1855 ['show.bs.modal', 'shown.bs.modal'].forEach((eventName) => { 1856 container.addEventListener(eventName, () => { 1857 const autofocusInput = container.querySelector('[autofocus]'); 1858 if (autofocusInput) { 1859 container.style.display = 'block'; 1860 autofocusInput.focus(); 1861 } 1862 }); 1863 }); 1864 1865 } 1866 </script>
1866 1867 </div> 1868 1869 1870
1870<script> 1871 window.__ssoConfig = { 1872 google: { 1873 pendingUrl: "https:\/\/www.szechuanoperany.com\/auth\/google\/pending", 1874 registerModalId: "register-modal", 1875 loginModalId: "login-modal" }, 1876 apple: { 1877 pendingUrl: "https:\/\/www.szechuanoperany.com\/auth\/apple\/pending", 1878 registerModalId: "register-modal", 1879 loginModalId: "login-modal" } 1880 }; 1881 </script>
1881 1882 1883 1884<div class="modal fade" id="modal-order-time" tabindex="-1" role="dialog" 1885 aria-hidden="true"> 1886 <div class="modal-dialog modal-fullscreen-md-down mt-md-6" role="document"> 1887 <div class="modal-content"> 1888 <button class="d-md-none close" type="button" data-bs-dismiss="modal" aria-label="Close"></button> 1889 <div class="modal-header"> 1890 <h2 class="modal-title eds-display-text-title-m">Order time</h2> 1891 </div> 1892 <div class="modal-body"> 1893 <div class="btn-group w-100 btn-group-order-time-type mb-3" > 1894 <input type="radio" name="param_order~time~type_i_n_1" id="order_time_type_0-" value="0" class="btn-check beforetimeswitch orderTimeTypeOption" 1895 checked> 1896 <label for="order_time_type_0-" class="d-flex align-items-center justify-content-center btn btn-outline-secondary w-50">ASAP</label> 1897 1898 <input type="radio" name="param_order~time~type_i_n_1" id="order_time_type_1-" value="1" class="btn-check timeswitch orderTimeTypeOption" 1899 /> 1900 <label for="order_time_type_1-" class="d-flex align-items-center justify-content-center btn btn-outline-secondary w-50"> 1901 <span> 1902 Later 1903 <span class="d-block small fw-normal">Later</span> 1904 </span> 1905 </label> 1906 </div> 1907 <div id="asapContent" class=""> 1908 <p class="mt-3 mb-0">Your order will be ready as soon as possible.</p> 1909 </div> 1910 <div id="laterContent" class="d-none"> 1911 <div class="select-time-container"> 1912 <div class="selecttime showcheck_parent "> 1913 <div class="select-time-header clearfix"> 1914 <h3 class="bold fl fs-5">Pick a day and time</h3> 1915 </div> 1916 <div class="select-time-content clearfix"> 1917 <div class="row select-time-row"> 1918 <div class="datepicker col-md-8" style="min-height: 248px;"> 1919 <div class="datepicker-days" style="display: block;"> 1920 <div data-datetimepicker data-datepicker-min-date="2026-10-05" class="errorable"></div> 1921 </div> 1922 </div> 1923 <div class="timepicker col-md-4"> 1924 <div class="timepicker-picker"> 1925 <ul class="ready-at-time css-scroll"> 1926 <br/>No Time Slots Available 1927 </ul> 1928 </div> 1929 </div> 1930 </div> 1931 </div> 1932</div> 1933</div> 1934<input type="hidden" name="param_ready~at_s_n_100" class="hid-ready-at" value="" /> 1935<input type="hidden" class="hid-ready-at-date" value="2026-10-05" /> 1936<input type="hidden" class="hid-eot" value="1969-12-31 16:00:00" /> </div> 1937 </div> 1938 <div class="modal-footer"> 1939 <input type="hidden" id="hid-order-time-type" value="0" /> 1940 <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Cancel</button> 1941 <button type="button" class="btn btn-primary" data-save-time-modal>Save</button> 1942 </div> 1943 </div> 1944 </div> 1945</div> 1946 1947<!-- www modal start --> 1948<div class="modal fade mob_full_modal www_modal order-options" id="modal-order-options" tabindex="-1" role="dialog" 1949 aria-hidden="true" data-update-otype-on-modal-close> 1950 <div class="modal-dialog modal-fullscreen-sm-down mt-sm-6" role="document"> 1951 <div class="modal-content"> 1952 <button class="d-md-none close" type="button" data-bs-dismiss="modal" aria-label="Close"></button> 1953 <div class="modal-header"> 1954 <h2 class="modal-title eds-display-text-title-m">Order details</h2> 1955 </div> 1956 <div class="modal-body"> 1957 <div class="www_moda_content"> 1958 <div class="cs_box order_type" onchange="app.event.emit('order_type_changed', { order_type: event.target.value })"> 1959 <div class="h5">What:</div> 1960 <div class="position-relative"> 1961 <div class="mdropbtn" data-toggle-mdrop role="button"> 1962 <span class="visually-hidden">Order type:</span> 1963 <span data-order-type-label> 1964 Pick up </span> 1965 </div> 1966 <ul data-mdrop-ul> 1967 <li class="selected "> 1968 <input data-order-type-on-change type="radio" name="param_order~type_s_n_10" id="order-type-pickup-1" 1969 class="orderTypeOption css-checkbox " data-name="Pick up" checked value="PICKUP" 1970 data-constant="1" data-base="PICKUP" > 1971 <label for="order-type-pickup-1" class="css-label" data-update-mdrop-on-click> 1972 Pick up </label> 1973 </li> 1974 </ul> 1975</div> 1976 </div> 1977 <form class=""> 1978 <div class="cs_box guest_checkout_address checkout_address deliveryAddressContainer" style="display:none;"> 1979 <label for="street-address-bar" class="h5">Enter your address:</label> 1980 <div class="form-group street-address-container"> 1981 <input name="param_full~address_s_n_255" id="street-address-bar" placeholder="Enter your address" 1982 data-autocomplete-address data-autocomplete-success="autoCompleteSuccess" 1983 onkeyup="scheduleFormStateSave(this.name, this.value)" onchange="validateAddress($('#modal
1983-order-options .deliveryAddressContainer'))" 1984 type="search" class="form-control input-search input-validate-address input-street-address user-address-field" 1985 value="" data-required-field /> 1986 </div> 1987 <input type="hidden" name="param_street~address_s_n_255" data-autocompleted-street-address /> 1988 <input type="hidden" name="param_city_s_n_90" data-autocompleted-city /> 1989 <input type="hidden" name="param_state_s_n_2" data-autocompleted-state /> 1990 <input type="hidden" name="param_zip~code_z_n_10" data-autocompleted-zip /> 1991 </div> 1992 </form> 1993 <!-- <div class="form-submit-wrapper"> 1994 <input type="submit" class="form-submit btn btn-primary" value="Save" data-close-modal data-select-later-date data-saveotype-modal> 1995 </div> --> 1996 </div> 1997 </div> 1998 <div 1999 data-async-on-event="order_type_changed" 2000 data-async-action="https://www.szechuanoperany.com/ajax/?form=minimum_order_value_warning&component=order_type" 2001 data-async-method="get" 2002 > 2003 </div> 2004 <div class="modal-footer"> 2005 <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Close</button> 2006 <button type="button" class="btn btn-primary" data-close-modal data-saveotype-modal>Save</button> 2007 </div> 2008 </div> 2009 </div> 2010</div> 2011<!-- www modal end --> 2012 2013<!-- menu item modal --> 2014<div class="modal fade add_menu" id="add_menu_item" tabindex="-1" role="dialog" aria-hidden="true" aria-labelledby="item_name"> 2015 <div class="modal-dialog modal-dialog-centered modal-fullscreen-md-down" role="document"> 2016 <div class="modal-content menu-item-container-wrapper"> 2017 <div class="modal-body menu-item-container "> 2018 <p id="item_name">Menu item dialog</p> 2019 </div> 2020 </div> 2021 </div> 2022</div> 2023<!-- menu item modal end --> 2024 2025 2026 <div 2027 data-eds-id="6ac444935e474" 2028 class="eds_dialog modal fade " 2029 tabindex="-1" 2030 aria-labelledby="eds-dialog-title-6ac444935e474" 2031 aria-hidden="true" 2032 data-event-on:coupon_modal_shown="(shown) => $(this).data(`coupon_modal_shown`, shown)" data-event-on:show_coupon_restrictions="({ coupon, errors }) => { 2033 if ($(this).data(`coupon_modal_shown`)) return; 2034 2035 $(this).find(`.eds_dialog-title`).html(`<div class="text-truncate">${coupon}</div>`); 2036 $(this).find(`.eds_dialog-body`).html(errors); 2037 this.dispatchEvent(new CustomEvent(`eds.show`)); 2038 }" data-event-on:restore_coupon_modal="this.dispatchEvent(new CustomEvent(`eds.hide`))" > 2039 <div class="modal-dialog modal-dialog-scrollable modal-dialog-centered modal-fullscreen-sm-down modal-md"> 2040 <div class="modal-content "> 2041 2042 <div class="modal-header d-flex justify-content-between gap-3 eds-display-text-title-m "> 2043 <h2 id="eds-dialog-title-6ac444935e474" class="eds_dialog-title modal-title eds-display-text-title-m pe-5" style="max-width: 100%"> 2044 Coupon restrictions </h2> 2045 2046 <button class="eds_button btn btn-outline-secondary btn-lg eds_button--shape-circle position-absolute top-0 end-0 border" style="width: 3rem; height: 3rem; margin-top: 6px; margin-right: 6px" data-bs-dismiss="modal" aria-label="Close" type="button"><i class="eds_icon fa fa-close" style="" aria-hidden="true"></i></button> </div> 2047 2048 <div class="eds_dialog-body modal-body css-scroll eds-copy-text-l-regular vh-100"> 2049 </div> 2050 2051 2052 </div> 2053 </div> 2054 2055
2055<script> 2056 { 2057 const container = document.querySelector('[data-eds-id="6ac444935e474"]'); 2058 let edsMethodsDisabled = false; 2059 2060 ['show', 'hide', 'toggle', 'dispose'].forEach((eventName) => { 2061 container.addEventListener(`eds.${eventName}`, (e) => { 2062 if (edsMethodsDisabled) return; 2063 2064 bootstrap.Modal.getOrCreateInstance(container)[eventName]( 2065 ...(Array.isArray(e.detail) ? e.detail : [e.detail]) 2066 ); 2067 }); 2068 }); 2069 2070 ['show', 'shown', 'hide', 'hidden'].forEach((eventName) => { 2071 container.addEventListener(`${eventName}.bs.modal`, (e) => { 2072 if (edsMethodsDisabled) return; 2073 2074 edsMethodsDisabled = true; // Prevent infinite loop of triggering events 2075 container.dispatchEvent(new CustomEvent(`eds.${eventName}`)); 2076 edsMethodsDisabled = false; 2077 }); 2078 }); 2079 2080 2081 ['show.bs.modal', 'shown.bs.modal'].forEach((eventName) => { 2082 container.addEventListener(eventName, () => { 2083 const autofocusInput = container.querySelector('[autofocus]'); 2084 if (autofocusInput) { 2085 container.style.display = 'block'; 2086 autofocusInput.focus(); 2087 } 2088 }); 2089 }); 2090 2091 } 2092 </script>
2092 2093 </div> 2094 2095 2096<!-- location modal mobile start--> 2097<div class="modal fade location-picker" id="locationModal" tabindex="-1" role="dialog" aria-hidden="true"> 2098 <div class="backdrop" data-bs-dismiss="modal"></div> 2099 <div class="modal-dialog modal-sm modal-dialog-centered" role="document"> 2100 <div class="modal-content"> 2101 <div class="modal-header"> 2102 <h2 class="modal-title eds-display-text-title-m">Change Location</h2> 2103 </div> 2104 2105 <div class="modal-body"> 2106 2107<div class="change_location-locations"> 2108 <input 2109 type="radio" 2110 class="css-checkbox" 2111 id="locations-1-location-12965" 2112 name="locations-1" 2113 value="https://www.szechuanoperany.com/order" 2114 checked /> 2115 <label class="css-label" for="locations-1-location-12965"> 2116 <div style="line-height: normal"> 2117 <strong>Szechuan Opera - Rochester</strong> 2118 <br /> 2119 630 Park Ave Rochester, NY 14607 </div> 2120 </label> 2121 </div> 2122 2123 </div> 2124 2125 <div class="modal-footer"> 2126 <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Close</button> 2127 <button type="button" class="btn btn-warning" data-go-to-url-on-click="[name='locations-1']:checked"> 2128 Change location </button> 2129 </div> 2130 </div> 2131 </div> 2132</div> 2133<!-- location modal mobile end --> 2134 2135<div class="modal fade add_new_card_modal" id="modal-add-new-card" tabindex="-1" role="dialog" aria-modal="true"> 2136 <div class="modal-dialog modal-dialog-centered modal-fullscreen-sm-down" role="document"> 2137 <div class="modal-content"> 2138 <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"></button> 2139 <div class="modal-header"> 2140 <h2 class="modal-title eds-display-text-title-m">Add new card</h2> 2141 </div> 2142 <div class="modal-body pb-6"> 2143 <div class="ajax-creditcards"> 2144 <div class="fa fa-spinner fa-spin fa-4x"> 2145 </div> 2146 </div> 2147 </div> 2148 </div> 2149 </div> 2150</div> 2151 2152<div class="modal fade" id="modal-payment-change" tabindex="-1" role="dialog" aria-modal="true"> 2153 <div class="modal-dialog modal-dialog-centered" role="document"> 2154 <div class="modal-content"> 2155 <div class="modal-header"> 2156 <h2 class="modal-title modal-title-accent eds-display-text-title-m">Confirm <span data-confirm-payment-name>Pay with cash</span></h2> 2157 </div> 2158 <div class="modal-body"> 2159 <p>You've just changed your payment type to <strong data-confirm-payment-name>Pay with cash</strong>. Please confirm that to proceed.</p> 2160 <button class="btn btn-primary w-100" data-bs-dismiss="modal" data-confirm-payment-switch>Confirm and proceed</button> 2161 <button class="btn eh-btn-silent w-100 mt-2" data-bs-dismiss="modal" data-cancel-payment-switch>Cancel</button> 2162 </div> 2163 </div> 2164 </div> 2165</div> 2166 2167<div class="modal fade modal_over_modal" id="modal-confirm-no-number-address" tabindex="-1" role="dialog" aria-modal="true" style="z-index: 2000;"> 2168 <div class="modal-dialog modal-dialog-centered" role="document"> 2169 <div class="modal-content"> 2170 <div class="modal-header"> 2171 <h2 class="modal-title modal-title-accent eds-display-text-title-m">Confirm Address</h2> 2172 </div> 2173 <div class="modal-body"> 2174 <p>This address doesn't start with a street number. Please confirm the address is correct.</p> 2175 <button class="btn btn-warning w-100" data-bs-dismiss="modal" data-confirm-no-number-address>Yes, it's correct</button> 2176 <button class="btn btn-secondary w-100 mt-2" data-bs-dismiss="modal" data-cancel-no-number-address>No, let me edit it</button> 2177 </div> 2178 </div> 2179 </div> 2180</div> 2181 2182<div class="modal fade mob_full_modal" id="modal-invalid-address" tabindex="-1" role="dialog" aria-modal="true"> 2183 <div class="modal-dialog modal-dialog-centered" role="document"> 2184 <div class="modal-content"> 2185 <button class="close" type="button" data-bs-dismiss="modal" aria-label="Close"></button> 2186 <div class="modal-header"> 2187 <h2 class="modal-title eds-display-text-title-m">Sorry we do not deliver to your address!</h2> 2188 </div> 2189 <div class="modal-body"> 2190 <div class="www_moda_content"> 2191 <div class="cs_box pickup_when showcheck_parent"> 2192 <div>You can Pick up your order at this location</div> 2193 <div class="pickup_locbox"> 2194 <div class="rest_loc"> 2195 <p> 2196 Szechuan Opera - Rochester<br/> 2197 630 Park Ave<br/>Rochester, NY 14607 </p> 2198 </div> 2199</div> </div> 2200 <div class="form-submit-wrapper"> 2201 <input type="submit" class="form-submit" value="Switch to pickup" data-bs-dismiss="modal" data-switch-to-pickup> 2202 </div> 2203 </div> 2204 </div> 2205 </div> 2206 </div> 2207</div> 2208 2209<div class="modal fade mob_full_modal" id="modal-view-delivery-zone" tabindex="-1" role="dialog" aria-modal="true"> 2210 <div class="modal-dialog modal-dialog-centered" role="document"> 2211 <div class="modal-content">
2212 <div class="modal-body modal-body-view-delivery-zone" style="min-height: 75px;"> 2213 <div id="loading-view-delivery-area" class="loading-ajax-spinner"><i class="fa fa-spin fa-spinner fa-3x "></i></div> 2214 <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"></button> 2215 <div id="modal-view-delivery-zone-content" style="display:none;"> 2216 <div class="h4 mt15">View our delivery area</div> 2217 <div class="mb15"></div> 2218 <style> 2219 #iframe-view-delivery-area { 2220 width:100%; 2221 height:100%; 2222 min-height:556px; 2223 } 2224 @media screen and (max-width: 768px) { 2225 #iframe-view-delivery-area { 2226 height: calc(100vh - 90px); 2227 } 2228 } 2229 </style> 2230 <iframe id="iframe-view-delivery-area" name="iframe-deliveryzone" frameborder="0" hspace="0" scrolling="auto" 2231 data-src="https://www.szechuanoperany.com/viewdeliveryzone/altdoc/1/vdz/1" title="Map of delivery areas"></iframe> 2232 </div> 2233 </div> 2234 </div> 2235 </div> 2236</div> 2237 2238<!-- Alert modal --> 2239<div class="modal fade" id="modal-alert" tabindex="-1" aria-labelledby="modal-alert" aria-hidden="true"> 2240 <div class="modal-dialog"> 2241 <div class="modal-content"> 2242 <div class="modal-header"> 2243 <h2 class="modal-title fs-5 eds-display-text-title-m">Error</h2> 2244 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> 2245 </div> 2246 <div class="modal-body"> 2247 Description 2248 </div> 2249 <div class="modal-footer"> 2250 <button type="button" class="btn btn-primary btn-close-modal" data-bs-dismiss="modal">Close</button> 2251 <button type="button" class="btn btn-primary hidden">Save changes</button> 2252 </div> 2253 </div> 2254 </div> 2255</div> 2256 2257 2258 2259 2260 2261 <div 2262 id="toasts" 2263 class="toast-container position-fixed start-50 translate-middle-x" 2264 style="bottom: calc(var(--eds-fixed-cta-height, 0) * 1px); max-width: calc(100% - 2rem)" 2265 > 2266 </div> 2267 2268
2268<script> 2269 $(() => { 2270 const ctas = document.querySelectorAll('[data-fixed-cta]'); 2271 if (!ctas.length) { 2272 return; 2273 } 2274 2275 function updateFixedCTAHeight() { 2276 document.documentElement.style.setProperty( 2277 '--eds-fixed-cta-height', 2278 Math.max(0, ...Array.from(ctas, (element) => { 2279 const rect = element.getBoundingClientRect(); 2280 return rect.height > 0 && getComputedStyle(element).position === 'fixed' 2281 ? Math.max(0, window.innerHeight - rect.top) 2282 : 0; 2283 })) 2284 ); 2285 } 2286 2287 if ('ResizeObserver' in window) { 2288 ctas.forEach((cta) => new ResizeObserver(updateFixedCTAHeight).observe(cta)); 2289 } else { 2290 updateFixedCTAHeight(); 2291 } 2292 2293 window.addEventListener('resize', app.throttle(updateFixedCTAHeight)); 2294 }); 2295 </script>
2295 2296 2297 <div class="visually-hidden"> 2298 <div id="announcements-polite" aria-live="polite" aria-atomic="true"> 2299 <div id="announcement-polite"></div> 2300 </div> 2301 2302 <div id="announcements-assertive" aria-live="assertive" aria-atomic="true"> 2303 <div id="announcement-assertive"></div> 2304 </div> 2305 </div> 2306 2307
2308<script type="text/javascript" src="/share42/share42.js"></script>
2308 2309 2310<!-- SET: SCRIPTS -->
2311<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 2311
2311
2312<script>window.jQuery || document.write('
2312<script src="/web/default3.0/js/vendor/jquery-3.6.0.min.js"><\/script>')</script>
vendor: 1 bytes, line 2312
2312
2313<script src="https://code.jquery.com/jquery-migrate-3.3.2.js" integrity="sha384-KwAndHbPSueZ9+pG1mDjru/Q6KT6cliBs+/SCGpcOO6XvhrkbF0cBzkSs3+Pl2Zz" crossorigin="anonymous"></script>
2313 2314<!--
2314<script src="https://code.jquery.com/jquery-migrate-3.3.2.min.js" integrity="sha256-Ap4KLoCf1rXb52q+i3p0k2vjBsmownyBTE1EqlRiMwA=" crossorigin="anonymous"></script>
2314-->
2315<script> 2316 /* http://writing.colin-gourlay.com/safely-using-ready-before-including-jquery/ */ 2317 (function($,d){$.each(readyQ,function(i,f){$(f)});$.each(bindReadyQ,function(i,f){$(d).bind("ready",f)})})(jQuery,document) 2318</script>
vendor: 1 bytes, line 2318
2318
2319<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js" integrity="sha256-lSjKY0/srUM9BE3dPm+c4fBo1dky2v27Gdjm2uoZaL0=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 2319
2319
2320<script type="text/javascript" src="/min/g=js4.0&1788675044"></script>
2320 2321<!-- END: SCRIPTS --> 2322 2323
2324<script> 2325 function closeAnnouncementModal(){ 2326 $("#announcementBox").hide(); 2327 setAnnouncementSession("<p style=\"text-align:center;\"><span style=\"color:#FF0000;\">We are closed for kitchen remodeling around 1 week, we apologize for the inconvenience. 8\/21\/2021<\/span><\/p>"); 2328 } 2329 2330 $('body').on('click', '#closeAnnouncement', function(e) { 2331 e.preventDefault(); 2332 setAnnouncementSession("<p style=\"text-align:center;\"><span style=\"color:#FF0000;\">We are closed for kitchen remodeling around 1 week, we apologize for the inconvenience. 8\/21\/2021<\/span><\/p>"); 2333 }); 2334</script>
vendor: 1 bytes, line 2334
2334
2335<script> 2336$(() => { 2337 const stickyHeader = document.querySelector('.headerAndWtype'); 2338 if (!stickyHeader) { 2339 return; 2340 } 2341 2342 function updateHeaderHeight() { 2343 const gap = parseFloat(getComputedStyle(document.documentElement).fontSize) || 16; 2344 const offset = stickyHeader.offsetHeight + gap; 2345 document.documentElement.style.scrollPaddingTop = offset + 'px'; 2346 2347 document.documentElement.style.setProperty('--sticky-header-offset', offset + 'px'); 2348 } 2349 2350 updateHeaderHeight(); 2351 if ('ResizeObserver' in window) { 2352 new ResizeObserver(updateHeaderHeight).observe(stickyHeader); 2353 } else { 2354 window.addEventListener('resize', app.throttle(updateHeaderHeight)); 2355 } 2356}); 2357</script>
2357 2358 2359 <div id="recaptcha" class="g-recaptcha" data-callback="submitAjaxForm" data-size="invisible"></div> 2360 <div id="async-recaptcha" class="g-recaptcha" data-callback="recaptchaAsyncCallback" data-size="invisible"></div> 2361 2362
2362<script> 2363 var ajaxRecaptcha; 2364 var asyncRecaptcha; 2365 var checkoutRecaptcha; 2366 2367 function initRecaptchas() { 2368 const options = { 2369 sitekey: "6LeS6lMUAAAAADOPnBKluMb49PS1NyzPT1kR87Re", 2370 size: 'invisible', 2371 }; 2372 2373 $('[data-recaptcha]').not('[data-ajax-form]').each(function (k, v) { 2374 const submit = $(v).find('[type="submit"]'); 2375 grecaptcha.render(submit[0], { 2376 ...options, 2377 callback(token) { 2378 $(v).submit(); 2379 }, 2380 }); 2381 }); 2382 2383 ajaxRecaptcha = grecaptcha.render('recaptcha', options); 2384 asyncRecaptcha = grecaptcha.render('async-recaptcha', options); 2385 } 2386 </script>
vendor: 119 bytes, lines 2386-2388
2386 2387 <script src="https://www.google.com/recaptcha/api.js?render=explicit&onload=initRecaptchas" async defer></script> 2388
2389</body> 2390</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.