(function(){

        try {

        // find the <script> that loaded this file
        var me = document.currentScript;
        if (!me) {
            var scripts = document.getElementsByTagName('script');
            for (var i=0;i<scripts.length;i++){
                if ((scripts[i].src||'').indexOf('https://deploy.schemacdn.com') === 0) {
                    me = scripts[i]; break;
                }
            }
        }

        var u = encodeURIComponent(location.href);
        var
            brand = "",
            contactPhone = "",
            contactEmail = "",
            ratingValue = "",
            ratingCount = "",
            addressStreet = "",
            addressStreet2 = "",
            addressCity = "",
            addressState = "",
            addressZip = "",
            addressCountry = "";

        if (me && me.dataset) {
            brand = me.dataset.brandName || me.dataset.brand || me.getAttribute('data-brand_name') || "";
            contactPhone = me.dataset.brandContactPhone || me.getAttribute('data-brand_contact_phone') || "";
            contactEmail = me.dataset.brandContactEmail || me.getAttribute('data-brand_contact_email') || "";
            ratingValue = me.dataset.brandRatingValue || me.getAttribute('data-brand_rating_value') || "";
            ratingCount = me.dataset.brandRatingCount || me.getAttribute('data-brand_rating_count') || "";
            addressStreet = me.dataset.brandAddressStreet || me.getAttribute('data-brand_address_street') || "";
            addressStreet2 = me.dataset.brandAddressStreet2 || me.getAttribute('data-brand_address_street2') || "";
            addressCity = me.dataset.brandAddressCity || me.getAttribute('data-city') || "";
            addressState = me.dataset.brandAddressState || me.getAttribute('data-brand_address_state') || "";
            addressZip = me.dataset.brandAddressZip || me.getAttribute('data-brand_address_zip') || "";
            addressCountry = me.dataset.brandAddressCountry || me.getAttribute('data-brand_address_country') || "";
        }

        // detect og:image ---
        var og = "";
            try {
            var ogEl =
                document.querySelector('meta[property="og:image"]') ||
                document.querySelector('meta[name="og:image"]') ||
                document.querySelector('meta[property="og:image:url"]') ||
                document.querySelector('meta[name="og:image:url"]');
            if (ogEl && ogEl.content) og = ogEl.content.trim();
        } catch (e) {}

        // capture meta description ---
        var desc = "";
        try {
            var descEl = document.querySelector('meta[name="description"]');
            if (descEl && descEl.content) desc = descEl.content.trim();
        } catch(e){}

        // guard against runaway reloads
        if (window.__schema_injected__) return;
        window.__schema_injected__ = true;

        var s = document.createElement('script');

        // Stable version tied to path + brand
        var v = encodeURIComponent((brand || "") + "|" + location.pathname);
        s.src = 'https://deploy.schemacdn.com?mode=inject&url=' + u +
            (brand ? '&brand=' + encodeURIComponent(brand) : '') +
            (contactPhone ? '&contactPhone=' + encodeURIComponent(contactPhone) : '') +
            (contactEmail ? '&contactEmail=' + encodeURIComponent(contactEmail) : '') +
            (ratingValue ? '&ratingValue=' + encodeURIComponent(ratingValue) : '') +
            (ratingCount ? '&ratingCount=' + encodeURIComponent(ratingCount) : '') +
            (og ? '&og=' + encodeURIComponent(og) : '') +
            (desc ? '&desc=' + encodeURIComponent(desc) : '') +
            (addressStreet ? '&addressStreet=' + encodeURIComponent(addressStreet) : '') +
            (addressStreet2 ? '&addressStreet2=' + encodeURIComponent(addressStreet2) : '') +
            (addressCity ? '&addressCity=' + encodeURIComponent(addressCity) : '') +
            (addressState ? '&addressState=' + encodeURIComponent(addressState) : '') +
            (addressZip ? '&addressZip=' + encodeURIComponent(addressZip) : '') +
            (addressCountry ? '&addressCountry=' + encodeURIComponent(addressCountry) : '') +
            '&v=' + v;

        document.head.appendChild(s);

        } catch(e){}
        
    })();