self.AMP_CONFIG = {
  v: "012008150009001",
  type: "production",
  "allow-doc-opt-in": [
    "amp-next-page",
    "analytics-chunks",
    "analytics-chunks-inabox",
  ],
  "allow-url-opt-in": ["pump-early-frame"],
  canary: 0,
  a4aProfilingRate: 0.01,
  "adsense-ad-size-optimization": 0.05,
  "amp-access-iframe": 1,
  "amp-action-macro": 1,
  "amp-ad-ff-adx-ady": 0.01,
  "amp-auto-ads-adsense-holdout": 0.1,
  "ampdoc-fie": 0.1,
  "amp-mega-menu": 1,
  "amp-nested-menu": 1,
  "amp-playbuzz": 1,
  "amp-sidebar-swipe-to-dismiss": 1,
  "amp-story-responsive-units": 1,
  "amp-story-v1": 1,
  "chunked-amp": 1,
  doubleclickSraExp: 0.01,
  doubleclickSraReportExcludedBlock: 0.1,
  "expand-json-targeting": 1,
  "fix-inconsistent-responsive-height-selection": 0,
  "fixed-elements-in-lightbox": 1,
  flexAdSlots: 0.05,
  "intersect-resources": 1,
  "ios-fixed-no-transfer": 0,
  "protocol-adapters": 1,
  "pump-early-frame": 1,
  "swg-gpay-api": 1,
  "swg-gpay-native": 1,
  "version-locking": 1,
  "amp-ad-no-center-css": 0,
  "analytics-chunks": 1,
  "sticky-ad-padding-bottom": 1,
  "render-on-idle-fix": 1,
  "ad-adsense-gam-round-params": 0.1,
};
/*AMP_CONFIG*/ var global = self;
self.AMP = self.AMP || [];
try {
  (function (_) {
    var f,
      aa =
        "function" == typeof Object.create
          ? Object.create
          : function (a) {
              function b() {}
              b.prototype = a;
              return new b();
            };
    function ba(a) {
      for (
        var b = [
            "object" == typeof globalThis && globalThis,
            a,
            "object" == typeof window && window,
            "object" == typeof self && self,
            "object" == typeof global && global,
          ],
          c = 0;
        c < b.length;
        ++c
      ) {
        var d = b[c];
        if (d && d.Math == Math) return d;
      }
      return (function () {
        throw Error("Cannot find global object");
      })();
    }
    var ca = ba(this);
    "function" === typeof Symbol && Symbol("x");
    var da;
    if ("function" == typeof Object.setPrototypeOf) da = Object.setPrototypeOf;
    else {
      var ea;
      a: {
        var fa = { a: !0 },
          ha = {};
        try {
          ha.__proto__ = fa;
          ea = ha.a;
          break a;
        } catch (a) {}
        ea = !1;
      }
      da = ea
        ? function (a, b) {
            a.__proto__ = b;
            if (a.__proto__ !== b)
              throw new TypeError(a + " is not extensible");
            return a;
          }
        : null;
    }
    var ia = da;
    function m(a, b) {
      a.prototype = aa(b.prototype);
      a.prototype.constructor = a;
      if (ia) ia(a, b);
      else
        for (var c in b)
          if ("prototype" != c)
            if (Object.defineProperties) {
              var d = Object.getOwnPropertyDescriptor(b, c);
              d && Object.defineProperty(a, c, d);
            } else a[c] = b[c];
      a.Xh = b.prototype;
    }
    function ja(a, b) {
      var c = b || 0,
        d = this.length;
      for (b = 0 <= c ? c : Math.max(d + c, 0); b < d; b++) {
        var e = this[b];
        if (e === a || (a !== a && e !== e)) return !0;
      }
      return !1;
    }
    var ka;
    function q() {
      return ka ? ka : (ka = Promise.resolve(void 0));
    }
    var la = /^[a-z][a-z0-9._]*-[a-z0-9._-]*$/,
      ma = "annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(
        " "
      ),
      na = { childList: !0, subtree: !0 };
    function oa(a, b) {
      if (!la.test(b) || ma.includes(b))
        throw new a('invalid custom element name "' + b + '"');
    }
    function pa(a) {
      setTimeout(function () {
        self.__AMP_REPORT_ERROR(a);
        throw a;
      });
    }
    function qa(a, b) {
      this.w = a;
      this.Hc = b;
      this.Nf = Object.create(null);
    }
    qa.prototype.define = function (a, b, c) {
      this.Hc.define(a, b, c);
      var d = this.Nf,
        e = d[a];
      e && (e.resolve(), delete d[a]);
    };
    qa.prototype.get = function (a) {
      var b = this.Hc.getByName(a);
      if (b) return b.ctor;
    };
    qa.prototype.whenDefined = function (a) {
      var b = this.w,
        c = b.Promise;
      oa(b.SyntaxError, a);
      if (this.Hc.getByName(a)) return q();
      b = this.Nf;
      var d = b[a];
      if (d) return d.promise;
      var e,
        g = new c(function (a) {
          return (e = a);
        });
      b[a] = { promise: g, resolve: e };
      return g;
    };
    qa.prototype.upgrade = function (a) {
      this.Hc.upgrade(a);
    };
    function ra(a) {
      this.w = a;
      this.wd = Object.create(null);
      this.Ma = "";
      this.ja = this.vd = null;
      this.le = [a.document];
    }
    f = ra.prototype;
    f.current = function () {
      var a = this.vd;
      this.vd = null;
      return a;
    };
    f.getByName = function (a) {
      var b = this.wd[a];
      if (b) return b;
    };
    f.getByConstructor = function (a) {
      var b = this.wd,
        c;
      for (c in b) {
        var d = b[c];
        if (d.ctor === a) return d;
      }
    };
    f.define = function (a, b, c) {
      var d = this,
        e = this.w,
        g = e.Error;
      e = e.SyntaxError;
      if (c) throw new g("Extending native custom elements is not supported");
      oa(e, a);
      if (this.getByName(a) || this.getByConstructor(b))
        throw new g('duplicate definition "' + a + '"');
      this.wd[a] = { name: a, ctor: b };
      ta(this, a);
      this.le.forEach(function (b) {
        d.upgrade(b, a);
      });
    };
    f.upgrade = function (a, b) {
      var c = !!b,
        d = ua(a, b || this.Ma);
      for (a = 0; a < d.length; a++) {
        var e = d[a];
        c ? va(this, e) : this.upgradeSelf(e);
      }
    };
    f.upgradeSelf = function (a) {
      var b = this.getByName(a.localName);
      b && xa(this, a, b);
    };
    function ua(a, b) {
      return b && a.querySelectorAll ? a.querySelectorAll(b) : [];
    }
    function xa(a, b, c) {
      c = c.ctor;
      if (!(b instanceof c)) {
        a.vd = b;
        try {
          if (new c() !== b)
            throw new a.w.Error(
              "Constructor illegally returned a different instance."
            );
        } catch (d) {
          pa(d);
        }
      }
    }
    function va(a, b) {
      var c = a.getByName(b.localName);
      if (c && (xa(a, b, c), b.connectedCallback))
        try {
          b.connectedCallback();
        } catch (d) {
          pa(d);
        }
    }
    function ta(a, b) {
      if (a.Ma) a.Ma += "," + b;
      else {
        a.Ma = b;
        var c = new a.w.MutationObserver(function (b) {
          b && ya(a, b);
        });
        a.ja = c;
        a.le.forEach(function (a) {
          c.observe(a, na);
        });
        za(a.w, a);
      }
    }
    f.observe = function (a) {
      this.le.push(a);
      this.ja && this.ja.observe(a, na);
    };
    f.sync = function () {
      this.ja && ya(this, this.ja.takeRecords());
    };
    function ya(a, b) {
      for (var c = 0; c < b.length; c++) {
        var d = b[c];
        if (d) {
          var e = d,
            g = e.addedNodes,
            h = e.removedNodes;
          for (e = 0; e < g.length; e++) {
            var k = g[e],
              l = ua(k, a.Ma);
            va(a, k);
            for (k = 0; k < l.length; k++) va(a, l[k]);
          }
          for (e = 0; e < h.length; e++) {
            k = h[e];
            var n = ua(k, a.Ma);
            if (k.disconnectedCallback)
              try {
                k.disconnectedCallback();
              } catch (t) {
                pa(t);
              }
            for (k = 0; k < n.length; k++) {
              var u = n[k];
              if (u.disconnectedCallback)
                try {
                  u.disconnectedCallback();
                } catch (t) {
                  pa(t);
                }
            }
          }
        }
      }
    }
    function za(a, b) {
      var c = a.document,
        d = a.Document.prototype,
        e = a.Element.prototype,
        g = a.Node.prototype,
        h = d.createElement,
        k = d.importNode,
        l = g.appendChild,
        n = g.cloneNode,
        u = g.insertBefore,
        t = g.removeChild,
        w = g.replaceChild;
      d.createElement = function (a) {
        var c = b.getByName(a);
        return c ? new c.ctor() : h.apply(this, arguments);
      };
      d.importNode = function () {
        var a = k.apply(this, arguments);
        a && this === c && (b.upgradeSelf(a), b.upgrade(a));
        return a;
      };
      g.appendChild = function () {
        var a = l.apply(this, arguments);
        b.sync();
        return a;
      };
      g.insertBefore = function () {
        var a = u.apply(this, arguments);
        b.sync();
        return a;
      };
      g.removeChild = function () {
        var a = t.apply(this, arguments);
        b.sync();
        return a;
      };
      g.replaceChild = function () {
        var a = w.apply(this, arguments);
        b.sync();
        return a;
      };
      g.cloneNode = function () {
        var a = n.apply(this, arguments);
        a.ownerDocument === c && (b.upgradeSelf(a), b.upgrade(a));
        return a;
      };
      var x = e,
        r = Object.getOwnPropertyDescriptor(x, "innerHTML");
      r ||
        ((x = Object.getPrototypeOf(a.HTMLElement.prototype)),
        (r = Object.getOwnPropertyDescriptor(x, "innerHTML")));
      if (r && r.configurable) {
        var p = r.set;
        r.set = function (a) {
          p.call(this, a);
          b.upgrade(this);
        };
        Object.defineProperty(x, "innerHTML", r);
      }
    }
    function Aa() {
      function a() {
        var a = this.constructor,
          b = h.current();
        b || ((b = h.getByConstructor(a)), (b = g.call(e, b.name)));
        Ba(b, a.prototype);
        return b;
      }
      var b = Ca,
        c = b.Element,
        d = b.HTMLElement,
        e = b.document,
        g = e.createElement,
        h = new ra(b),
        k = new qa(b, h);
      Object.defineProperty(b, "customElements", {
        enumerable: !0,
        configurable: !0,
        value: k,
      });
      c = c.prototype;
      var l = c.attachShadow,
        n = c.createShadowRoot;
      l &&
        ((c.attachShadow = function (a) {
          var b = l.apply(this, arguments);
          h.observe(b);
          return b;
        }),
        (c.attachShadow.toString = function () {
          return l.toString();
        }));
      n &&
        ((c.createShadowRoot = function () {
          var a = n.apply(this, arguments);
          h.observe(a);
          return a;
        }),
        (c.createShadowRoot.toString = function () {
          return n.toString();
        }));
      Da(d, a);
      b.HTMLElement = a;
      a.call ||
        ((a.apply = b.Function.apply),
        (a.bind = b.Function.bind),
        (a.call = b.Function.call));
    }
    function Ea() {
      function a() {
        return d.construct(c, [], this.constructor);
      }
      var b = Ca,
        c = b.HTMLElement,
        d = b.Reflect;
      Da(c, a);
      b.HTMLElement = a;
    }
    function Da(a, b) {
      b.prototype = Object.create(a.prototype, {
        constructor: { configurable: !0, writable: !0, value: b },
      });
      Ba(b, a);
    }
    function Ba(a, b) {
      if (Object.setPrototypeOf) Object.setPrototypeOf(a, b);
      else if ({ __proto__: { test: !0 } }.test) a.__proto__ = b;
      else
        for (; null !== b && !Object.isPrototypeOf.call(b, a); ) {
          for (
            var c = Object.getOwnPropertyNames(b), d = 0;
            d < c.length;
            d++
          ) {
            var e = c[d];
            if (!Object.hasOwnProperty.call(a, e)) {
              var g = Object.getOwnPropertyDescriptor(b, e);
              Object.defineProperty(a, e, g);
            }
          }
          b = Object.getPrototypeOf(b);
        }
    }
    function Fa(a, b) {
      if (void 0 === b ? this.contains(a) : !b) return this.remove(a), !1;
      this.add(a);
      return !0;
    }
    function Ga() {
      var a = self;
      if (
        /Trident|MSIE|IEMobile/i.test(a.navigator.userAgent) &&
        a.DOMTokenList
      ) {
        a.Object.defineProperty(a.DOMTokenList.prototype, "toggle", {
          enumerable: !1,
          configurable: !0,
          writable: !0,
          value: Fa,
        });
        var b = a.DOMTokenList.prototype.add;
        a.DOMTokenList.prototype.add = function () {
          for (var a = 0; a < arguments.length; a++) b.call(this, arguments[a]);
        };
      }
    }
    function Ha(a) {
      return a == this || this.documentElement.contains(a);
    }
    function Ia(a, b) {
      b = void 0 === b ? "" : b;
      try {
        return decodeURIComponent(a);
      } catch (c) {
        return b;
      }
    }
    var Ja = /(?:^[#?]?|&)([^=&]+)(?:=([^&]*))?/g;
    function v(a) {
      var b = Object.create(null);
      if (!a) return b;
      for (var c; (c = Ja.exec(a)); ) {
        var d = Ia(c[1], c[1]),
          e = c[2] ? Ia(c[2].replace(/\+/g, " "), c[2]) : "";
        b[d] = e;
      }
      return b;
    }
    var Ka = "";
    function y(a) {
      var b = a || self;
      if (b.__AMP_MODE) b = b.__AMP_MODE;
      else {
        var c = v(b.location.originalHash || b.location.hash);
        var d = v(b.location.search);
        Ka ||
          (Ka =
            b.AMP_CONFIG && b.AMP_CONFIG.v
              ? b.AMP_CONFIG.v
              : "012008150009001");
        c = {
          localDev: !1,
          development: !!(
            0 <=
              ["1", "actions", "amp", "amp4ads", "amp4email"].indexOf(
                c.development
              ) || b.AMP_DEV_MODE
          ),
          examiner: "2" == c.development,
          esm: !1,
          geoOverride: c["amp-geo"],
          minified: !0,
          lite: void 0 != d.amp_lite,
          test: !1,
          log: c.log,
          version: "2008150009001",
          rtvVersion: Ka,
        };
        b = b.__AMP_MODE = c;
      }
      return b;
    }
    var La = Object.prototype.toString;
    function z(a) {
      return Array.isArray(a);
    }
    function Ma(a) {
      return a ? Array.prototype.slice.call(a) : [];
    }
    function Na(a) {
      return "[object Object]" === La.call(a);
    }
    function Oa(a) {
      return "number" === typeof a && isFinite(a);
    }
    function Pa(a) {
      var b = !1,
        c = null,
        d = a;
      return function (a) {
        for (var e = [], h = 0; h < arguments.length; ++h)
          e[h - 0] = arguments[h];
        b || ((c = d.apply(self, e)), (b = !0), (d = null));
        return c;
      };
    }
    var A = self.AMP_CONFIG || {},
      Qa =
        ("string" == typeof A.cdnProxyRegex
          ? new RegExp(A.cdnProxyRegex)
          : A.cdnProxyRegex) ||
        /^https:\/\/([a-zA-Z0-9_-]+\.)?cdn\.ampproject\.org$/;
    function Ra(a) {
      if (
        !self.document ||
        !self.document.head ||
        (self.location && Qa.test(self.location.origin))
      )
        return null;
      var b = self.document.head.querySelector('meta[name="' + a + '"]');
      return (b && b.getAttribute("content")) || null;
    }
    var B = {
        thirdParty: A.thirdPartyUrl || "https://3p.ampproject.net",
        thirdPartyFrameHost: A.thirdPartyFrameHost || "ampproject.net",
        thirdPartyFrameRegex:
          ("string" == typeof A.thirdPartyFrameRegex
            ? new RegExp(A.thirdPartyFrameRegex)
            : A.thirdPartyFrameRegex) || /^d-\d+\.ampproject\.net$/,
        cdn: A.cdnUrl || Ra("runtime-host") || "https://cdn.ampproject.org",
        cdnProxyRegex: Qa,
        localhostRegex: /^https?:\/\/localhost(:\d+)?$/,
        errorReporting:
          A.errorReportingUrl ||
          "https://us-central1-amp-error-reporting.cloudfunctions.net/r",
        betaErrorReporting:
          A.betaErrorReportingUrl ||
          "https://us-central1-amp-error-reporting.cloudfunctions.net/r-beta",
        localDev: A.localDev || !1,
        trustedViewerHosts: [
          /(^|\.)google\.(com?|[a-z]{2}|com?\.[a-z]{2}|cat)$/,
          /(^|\.)gmail\.(com|dev)$/,
        ],
        geoApi: A.geoApiUrl || Ra("amp-geo-api"),
      },
      Sa = { urls: B };
    function Ta() {}
    function Ua(a) {
      return 0 <= a.indexOf("\u200b\u200b\u200b");
    }
    var Va = void 0;
    function Wa(a) {
      Va = a;
    }
    function Xa(a, b) {
      return b.reduce(function (a, b) {
        return a + "&s[]=" + encodeURIComponent(String(Ya(b)));
      }, "https://log.amp.dev/?v=012008150009001&id=" + encodeURIComponent(a));
    }
    function Za(a, b, c) {
      var d = this;
      c = void 0 === c ? "" : c;
      this.win = a;
      this.bh = b;
      this.dh =
        this.win.console && this.win.console.log && "0" != y().log
          ? this.bh(parseInt(y().log, 10), y().development)
          : 0;
      this.Qc = c;
      this.vc = null;
      this.Jg = Pa(function () {
        a.fetch(B.cdn + "/rtv/012008150009001/log-messages.simple.json")
          .then(function (a) {
            return a.json();
          }, Ta)
          .then(function (a) {
            a && (d.vc = a);
          });
      });
    }
    function $a(a) {
      return void 0 !== Va ? Va : a.dh;
    }
    function ab(a, b, c, d) {
      if (0 != $a(a)) {
        var e = a.win.console.log;
        "ERROR" == c
          ? (e = a.win.console.error || e)
          : "INFO" == c
          ? (e = a.win.console.info || e)
          : "WARN" == c && (e = a.win.console.warn || e);
        c = z(d[0]) ? bb(a, d[0]) : d;
        b = "[" + b + "]";
        "string" === typeof c[0] ? (c[0] = b + " " + c[0]) : c.unshift(b);
        e.apply(a.win.console, c);
      }
    }
    f = Za.prototype;
    f.isEnabled = function () {
      return 0 != $a(this);
    };
    f.fine = function (a, b) {
      4 <= $a(this) &&
        ab(this, a, "FINE", Array.prototype.slice.call(arguments, 1));
    };
    f.info = function (a, b) {
      3 <= $a(this) &&
        ab(this, a, "INFO", Array.prototype.slice.call(arguments, 1));
    };
    f.warn = function (a, b) {
      2 <= $a(this) &&
        ab(this, a, "WARN", Array.prototype.slice.call(arguments, 1));
    };
    f.Ia = function (a, b) {
      if (1 <= $a(this))
        ab(this, a, "ERROR", Array.prototype.slice.call(arguments, 1));
      else {
        var c = cb.apply(null, Array.prototype.slice.call(arguments, 1));
        db(this, c);
        return c;
      }
    };
    f.error = function (a, b) {
      var c = this.Ia.apply(this, arguments);
      c && ((c.name = a || c.name), self.__AMP_REPORT_ERROR(c));
    };
    f.expectedError = function (a, b) {
      var c = this.Ia.apply(this, arguments);
      c && ((c.expected = !0), self.__AMP_REPORT_ERROR(c));
    };
    f.createError = function (a) {
      var b = cb.apply(null, arguments);
      db(this, b);
      return b;
    };
    f.createExpectedError = function (a) {
      var b = cb.apply(null, arguments);
      db(this, b);
      b.expected = !0;
      return b;
    };
    f.assert = function (a, b, c) {
      var d;
      if (z(b)) return this.assert.apply(this, [a].concat(bb(this, b)));
      if (!a) {
        var e = (b || "Assertion failed").split("%s"),
          g = e.shift(),
          h = g,
          k = [],
          l = 2;
        for ("" != g && k.push(g); 0 < e.length; ) {
          var n = e.shift(),
            u = arguments[l++];
          u && u.tagName && (d = u);
          k.push(u);
          g = n.trim();
          "" != g && k.push(g);
          h += Ya(u) + n;
        }
        l = Error(h);
        l.fromAssert = !0;
        l.associatedElement = d;
        l.messageArray = k;
        db(this, l);
        self.__AMP_REPORT_ERROR(l);
        throw l;
      }
      return a;
    };
    f.assertElement = function (a, b) {
      gb(this, a, a && 1 == a.nodeType, "Element expected", b);
      return a;
    };
    f.assertString = function (a, b) {
      gb(this, a, "string" == typeof a, "String expected", b);
      return a;
    };
    f.assertNumber = function (a, b) {
      gb(this, a, "number" == typeof a, "Number expected", b);
      return a;
    };
    f.assertArray = function (a, b) {
      gb(this, a, z(a), "Array expected", b);
      return a;
    };
    f.assertBoolean = function (a, b) {
      gb(this, a, !!a === a, "Boolean expected", b);
      return a;
    };
    f.assertEnumValue = function (a, b, c) {
      a: {
        for (var d in a)
          if (a[d] === b) {
            a = !0;
            break a;
          }
        a = !1;
      }
      if (a) return b;
      this.assert(!1, 'Unknown %s value: "%s"', c || "enum", b);
    };
    function db(a, b) {
      b = hb(b);
      a.Qc
        ? b.message
          ? -1 == b.message.indexOf(a.Qc) && (b.message += a.Qc)
          : (b.message = a.Qc)
        : Ua(b.message) &&
          (b.message = b.message.replace("\u200b\u200b\u200b", ""));
    }
    function bb(a, b) {
      var c = b.shift();
      y(a.win).development && a.Jg();
      return a.vc && c in a.vc
        ? [a.vc[c]].concat(b)
        : ["More info at " + Xa(c, b)];
    }
    function gb(a, b, c, d, e) {
      z(e) ? a.assert(c, e.concat(b)) : a.assert(c, (e || d) + ": %s", b);
    }
    function Ya(a) {
      return a && 1 == a.nodeType
        ? a.tagName.toLowerCase() + (a.id ? "#" + a.id : "")
        : a;
    }
    function hb(a) {
      var b = Object.getOwnPropertyDescriptor(a, "message");
      if (b && b.writable) return a;
      var c = a.stack,
        d = Error(a.message),
        e;
      for (e in a) d[e] = a[e];
      d.stack = c;
      return d;
    }
    function cb(a) {
      for (var b = null, c = "", d = 0; d < arguments.length; d++) {
        var e = arguments[d];
        e instanceof Error && !b ? (b = hb(e)) : (c && (c += " "), (c += e));
      }
      b ? c && (b.message = c + ": " + b.message) : (b = Error(c));
      return b;
    }
    function ib(a) {
      var b = cb.apply(null, arguments);
      setTimeout(function () {
        self.__AMP_REPORT_ERROR(b);
        throw b;
      });
    }
    self.__AMP_LOG = self.__AMP_LOG || {
      user: null,
      dev: null,
      userForEmbed: null,
    };
    var jb = self.__AMP_LOG,
      kb = null;
    function D(a) {
      jb.user || (jb.user = lb("\u200b\u200b\u200b"));
      var b = jb.user.win;
      return a && a.ownerDocument.defaultView != b
        ? jb.userForEmbed
          ? jb.userForEmbed
          : (jb.userForEmbed = lb("\u200b\u200b\u200b\u200b"))
        : jb.user;
    }
    function lb(a) {
      if (!kb) throw Error("failed to call initLogConstructor");
      return new kb(
        self,
        function (a, c) {
          return c || 1 <= a ? 4 : 2;
        },
        a
      );
    }
    function E() {
      if (jb.dev) return jb.dev;
      if (!kb) throw Error("failed to call initLogConstructor");
      return (jb.dev = new kb(self, function (a) {
        return 3 <= a ? 4 : 2 <= a ? 3 : 0;
      }));
    }
    function F(a, b, c, d, e, g) {
      return D().assert(
        a,
        b,
        c,
        d,
        e,
        g,
        void 0,
        void 0,
        void 0,
        void 0,
        void 0
      );
    }
    var mb = Object.prototype.hasOwnProperty;
    function I(a) {
      var b = Object.create(null);
      a && Object.assign(b, a);
      return b;
    }
    function K(a) {
      return a || {};
    }
    function L() {
      var a, b;
      this.promise = new Promise(function (c, d) {
        a = c;
        b = d;
      });
      this.resolve = a;
      this.reject = b;
    }
    function nb(a) {
      return new Promise(function (b) {
        b(a());
      });
    } /*
 https://mths.be/cssescape v1.5.1 by @mathias | MIT license */
    var ob = /(\0)|^(-)$|([\x01-\x1f\x7f]|^-?[0-9])|([\x80-\uffff0-9a-zA-Z_-]+)|[^]/g;
    function pb(a, b, c, d, e) {
      return e
        ? e
        : b
        ? "\ufffd"
        : d
        ? a.slice(0, -1) + "\\" + a.slice(-1).charCodeAt(0).toString(16) + " "
        : "\\" + a;
    }
    var qb;
    function rb(a) {
      try {
        var b = a.ownerDocument,
          c = b.createElement("div"),
          d = b.createElement("div");
        c.appendChild(d);
        return c.querySelector(":scope div") === d;
      } catch (e) {
        return !1;
      }
    }
    function sb(a, b) {
      var c = a.length - b.length;
      return 0 <= c && a.indexOf(b, c) == c;
    }
    function M(a, b) {
      return b.length > a.length ? !1 : 0 == a.lastIndexOf(b, 0);
    }
    function tb(a) {
      return a.trimStart ? a.trimStart() : (a + "_").trim().slice(0, -1);
    }
    function ub(a, b, c) {
      if (b(a)) c();
      else {
        var d = a.ownerDocument.defaultView;
        if (d.MutationObserver) {
          var e = new d.MutationObserver(function () {
            b(a) && (e.disconnect(), c());
          });
          e.observe(a, { childList: !0 });
        } else
          var g = d.setInterval(function () {
            b(a) && (d.clearInterval(g), c());
          }, 5);
      }
    }
    function vb(a, b) {
      return new Promise(function (c) {
        ub(a, b, c);
      });
    }
    function wb(a, b) {
      ub(
        a.documentElement,
        function () {
          return !!a.body;
        },
        b
      );
    }
    function xb(a) {
      return new Promise(function (b) {
        return wb(a, b);
      });
    }
    function yb(a) {
      a.parentElement && a.parentElement.removeChild(a);
    }
    function zb(a) {
      var b = K({ src: "about:blank", style: "display:none" });
      a = a.createElement("iframe");
      for (var c in b) a.setAttribute(c, b[c]);
      return a;
    }
    function Ab(a) {
      var b = a.isConnected;
      if (void 0 !== b) return b;
      do
        if (((a = Bb(a)), a.host)) a = a.host;
        else break;
      while (1);
      return a.nodeType === Node.DOCUMENT_NODE;
    }
    function Bb(a) {
      if (Node.prototype.getRootNode) return a.getRootNode() || a;
      for (; a.parentNode && !Cb(a); a = a.parentNode);
      return a;
    }
    function Cb(a) {
      return a
        ? "I-AMPHTML-SHADOW-ROOT" == a.tagName
          ? !0
          : 11 == a.nodeType &&
            "[object ShadowRoot]" === Object.prototype.toString.call(a)
        : !1;
    }
    function Db(a, b) {
      for (; a && void 0 !== a; a = a.parentElement) if (b(a)) return a;
      return null;
    }
    function Eb(a, b) {
      for (; a; a = a.parentNode) if (b(a)) return a;
      return null;
    }
    function Fb(a, b) {
      return a.closest
        ? a.closest(b)
        : Db(a, function (a) {
            return Gb(a, b);
          });
    }
    function Hb(a, b) {
      var c = [];
      for (a = a.firstElementChild; a; a = a.nextElementSibling)
        b(a) && c.push(a);
      return c;
    }
    function Ib(a, b) {
      for (a = a.lastElementChild; a; a = a.previousElementSibling)
        if (b(a)) return a;
      return null;
    }
    function Jb(a, b) {
      var c = [];
      for (a = a.firstChild; a; a = a.nextSibling) b(a) && c.push(a);
      return c;
    }
    function Kb(a, b) {
      /^[\w-]+$/.test(b);
      return Lb(a, "> [" + b + "]");
    }
    function Gb(a, b) {
      var c =
        a.matches ||
        a.webkitMatchesSelector ||
        a.mozMatchesSelector ||
        a.msMatchesSelector ||
        a.oMatchesSelector;
      return c ? c.call(a, b) : !1;
    }
    function Mb(a, b) {
      a.classList.add("i-amphtml-scoped");
      var c = b.replace(/^|,/g, "$&.i-amphtml-scoped "),
        d = a.querySelectorAll(c);
      a.classList.remove("i-amphtml-scoped");
      return d;
    }
    function Lb(a, b) {
      if (void 0 !== qb ? qb : (qb = rb(a)))
        return a.querySelector(b.replace(/^|,/g, "$&:scope "));
      var c = Mb(a, b);
      return void 0 === c[0] ? null : c[0];
    }
    function Nb(a, b) {
      for (var c = a.length, d = 0; d < c; d++) b(a[d], d);
    }
    function Ob(a, b, c, d) {
      try {
        var e = a.open(b, c, d);
      } catch (h) {
        E().error("DOM", "Failed to open url on target: ", c, h);
      }
      if (!(c = e || "_top" == c)) {
        c = d || "";
        var g;
        "number" !== typeof g && (g = 0);
        c = g + 8 > c.length ? !1 : -1 !== c.indexOf("noopener", g);
      }
      c || (e = a.open(b, "_top"));
      return e;
    }
    function Pb(a) {
      try {
        a.focus();
      } catch (b) {}
    }
    function Qb(a) {
      return a.parent && a.parent != a;
    }
    function Rb(a) {
      var b = Object.create(null),
        c;
      for (c in a)
        if (Sb(a, c)) {
          var d = a[c];
          b[c] = Na(d) ? Rb(d) : d;
        }
      return b;
    }
    function Tb(a) {
      return JSON.parse(a);
    }
    function Sb(a, b) {
      return null == a || "object" != typeof a
        ? !1
        : Object.prototype.hasOwnProperty.call(a, b);
    }
    function Ub(a) {
      return "undefined" !== typeof TextEncoder
        ? new TextEncoder("utf-8").encode(a)
        : Vb(unescape(encodeURIComponent(a)));
    }
    function Vb(a) {
      for (var b = new Uint8Array(a.length), c = 0; c < a.length; c++) {
        var d = a.charCodeAt(c);
        b[c] = d;
      }
      return b;
    }
    function Wb(a) {
      for (var b = Array(a.length), c = 0; c < a.length; c++)
        b[c] = String.fromCharCode(a[c]);
      return b.join("");
    }
    var Xb = { document: 1, text: 2 },
      Yb = ["GET", "POST"];
    function Zb(a, b) {
      b = void 0 === b ? {} : b;
      return new Promise(function (c, d) {
        var e = $b(b.method || "GET"),
          g = ac(e, a);
        "include" == b.credentials && (g.withCredentials = !0);
        b.responseType in Xb && (g.responseType = b.responseType);
        b.headers &&
          Object.keys(b.headers).forEach(function (a) {
            g.setRequestHeader(a, b.headers[a]);
          });
        g.onreadystatechange = function () {
          2 > g.readyState ||
            (100 > g.status || 599 < g.status
              ? ((g.onreadystatechange = null),
                d(D().createExpectedError("Unknown HTTP status " + g.status)))
              : 4 == g.readyState && c(new bc(g)));
        };
        g.onerror = function () {
          d(D().createExpectedError("Network failure"));
        };
        g.onabort = function () {
          d(D().createExpectedError("Request aborted"));
        };
        "POST" == e ? g.send(b.body) : g.send();
      });
    }
    function ac(a, b) {
      var c = new XMLHttpRequest();
      if ("withCredentials" in c) c.open(a, b, !0);
      else throw E().createExpectedError("CORS is not supported");
      return c;
    }
    function bc(a) {
      this.Qa = a;
      this.status = this.Qa.status;
      this.statusText = this.Qa.statusText;
      this.ok = 200 <= this.status && 300 > this.status;
      this.headers = new cc(a);
      this.bodyUsed = !1;
      this.body = null;
      this.url = a.responseURL;
    }
    bc.prototype.clone = function () {
      return new bc(this.Qa);
    };
    function dc(a) {
      a.bodyUsed = !0;
      return Promise.resolve(a.Qa.responseText);
    }
    bc.prototype.text = function () {
      return dc(this);
    };
    bc.prototype.json = function () {
      return dc(this).then(Tb);
    };
    bc.prototype.arrayBuffer = function () {
      return dc(this).then(Ub);
    };
    function $b(a) {
      if (void 0 === a) return "GET";
      a = a.toUpperCase();
      Yb.includes(a);
      return a;
    }
    function cc(a) {
      this.Qa = a;
    }
    cc.prototype.get = function (a) {
      return this.Qa.getResponseHeader(a);
    };
    cc.prototype.has = function (a) {
      return null != this.Qa.getResponseHeader(a);
    };
    function ec(a, b) {
      b = void 0 === b ? {} : b;
      var c = I();
      a = Object.assign(
        {},
        {
          status: 200,
          statusText: "OK",
          responseText: a ? String(a) : "",
          getResponseHeader: function (a) {
            var b = String(a).toLowerCase();
            return mb.call(c, b) ? c[b] : null;
          },
        },
        b
      );
      a.status = void 0 === b.status ? 200 : parseInt(b.status, 10);
      if (z(b.headers))
        b.headers.forEach(function (a) {
          var b = a[1];
          c[String(a[0]).toLowerCase()] = String(b);
        });
      else if (Na(b.headers))
        for (var d in b.headers)
          c[String(d).toLowerCase()] = String(b.headers[d]);
      b.statusText && (a.statusText = String(b.statusText));
      bc.call(this, a);
    }
    m(ec, bc);
    function fc(a, b, c, d) {
      return {
        left: a,
        top: b,
        width: c,
        height: d,
        bottom: b + d,
        right: a + c,
        x: a,
        y: b,
      };
    }
    function gc(a) {
      for (
        var b = -Infinity, c = Infinity, d = -Infinity, e = Infinity, g = 0;
        g < arguments.length;
        g++
      ) {
        var h = arguments[g];
        if (
          h &&
          ((b = Math.max(b, h.left)),
          (c = Math.min(c, h.left + h.width)),
          (d = Math.max(d, h.top)),
          (e = Math.min(e, h.top + h.height)),
          c < b || e < d)
        )
          return null;
      }
      return Infinity == c ? null : fc(b, d, c - b, e - d);
    }
    function hc(a, b) {
      return fc(
        a.left - 0.25 * a.width,
        a.top - a.height * b,
        1.5 * a.width,
        a.height * (1 + 2 * b)
      );
    }
    function ic(a, b, c) {
      return (0 == b && 0 == c) || (0 == a.width && 0 == a.height)
        ? a
        : fc(a.left + b, a.top + c, a.width, a.height);
    }
    var jc;
    function kc() {
      return Ab(this) ? jc.call(this) : fc(0, 0, 0, 0);
    }
    function lc() {
      var a = mc;
      if (!a.document) return !1;
      try {
        return (
          0 !== a.document.createElement("div").getBoundingClientRect().top
        );
      } catch (b) {
        return !0;
      }
    }
    function nc() {
      this.Cg = 100;
      this.cd = this.Y = 0;
      this.Sa = Object.create(null);
    }
    nc.prototype.has = function (a) {
      return !!this.Sa[a];
    };
    nc.prototype.get = function (a) {
      var b = this.Sa[a];
      if (b) return (b.access = ++this.cd), b.payload;
    };
    nc.prototype.put = function (a, b) {
      this.has(a) || this.Y++;
      this.Sa[a] = { payload: b, access: this.cd };
      if (!(this.Y <= this.Cg)) {
        E().warn("lru-cache", "Trimming LRU cache");
        a = this.Sa;
        var c = this.cd + 1,
          d;
        for (d in a) {
          var e = a[d].access;
          if (e < c) {
            c = e;
            var g = d;
          }
        }
        void 0 !== g && (delete a[g], this.Y--);
      }
    };
    var oc = K({ c: !0, v: !0, a: !0, ad: !0, action: !0 }),
      pc,
      qc,
      rc = /[?&]amp_js[^&]*/,
      sc = /[?&]amp_gsa[^&]*/,
      tc = /[?&]amp_r[^&]*/,
      uc = /[?&]amp_kit[^&]*/,
      vc = /[?&]usqp[^&]*/,
      yc = ["javascript:", "data:", "vbscript:"];
    function N(a, b) {
      pc ||
        ((pc = self.document.createElement("a")),
        (qc = self.__AMP_URL_CACHE || (self.__AMP_URL_CACHE = new nc())));
      return zc(pc, a, b ? null : qc);
    }
    function zc(a, b, c) {
      if (c && c.has(b)) return c.get(b);
      a.href = b;
      a.protocol || (a.href = a.href);
      var d = {
        href: a.href,
        protocol: a.protocol,
        host: a.host,
        hostname: a.hostname,
        port: "0" == a.port ? "" : a.port,
        pathname: a.pathname,
        search: a.search,
        hash: a.hash,
        origin: null,
      };
      "/" !== d.pathname[0] && (d.pathname = "/" + d.pathname);
      if (
        ("http:" == d.protocol && 80 == d.port) ||
        ("https:" == d.protocol && 443 == d.port)
      )
        (d.port = ""), (d.host = d.hostname);
      d.origin =
        a.origin && "null" != a.origin
          ? a.origin
          : "data:" != d.protocol && d.host
          ? d.protocol + "//" + d.host
          : d.href;
      c && c.put(b, d);
      return d;
    }
    function Ac(a, b, c) {
      if (!b) return a;
      var d = a.split("#", 2),
        e = d[0].split("?", 2),
        g =
          e[0] +
          (e[1] ? (c ? "?" + b + "&" + e[1] : "?" + e[1] + "&" + b) : "?" + b);
      return (g += d[1] ? "#" + d[1] : "");
    }
    function Bc(a, b) {
      return Ac(a, Cc(b));
    }
    function Cc(a) {
      var b = [],
        c;
      for (c in a) {
        var d = a[c];
        if (null != d)
          if (z(d))
            for (var e = 0; e < d.length; e++) {
              var g = d[e];
              b.push(encodeURIComponent(c) + "=" + encodeURIComponent(g));
            }
          else b.push(encodeURIComponent(c) + "=" + encodeURIComponent(d));
      }
      return b.join("&");
    }
    function Dc(a) {
      "string" == typeof a && (a = N(a));
      return (
        "https:" == a.protocol ||
        "localhost" == a.hostname ||
        "127.0.0.1" == a.hostname ||
        sb(a.hostname, ".localhost")
      );
    }
    function Ec(a, b, c) {
      c = void 0 === c ? "source" : c;
      F(null != a, "%s %s must be available", b, c);
      F(
        Dc(a) || /^(\/\/)/.test(a),
        '%s %s must start with "https://" or "//" or be relative and served from either https or from localhost. Invalid value: %s',
        b,
        c,
        a
      );
      return a;
    }
    function Fc(a) {
      var b = a.indexOf("#");
      return -1 == b ? a : a.substring(0, b);
    }
    function O(a) {
      "string" == typeof a && (a = N(a));
      return B.cdnProxyRegex.test(a.origin);
    }
    function Gc(a) {
      if (!a) return !0;
      "string" == typeof a && (a = N(a));
      return !yc.includes(a.protocol);
    }
    function Hc(a) {
      var b = N(a),
        c = Ic(b.search);
      return b.origin + b.pathname + c + b.hash;
    }
    function Ic(a) {
      if (!a || "?" == a) return "";
      var b = a
        .replace(rc, "")
        .replace(sc, "")
        .replace(tc, "")
        .replace(uc, "")
        .replace(vc, "")
        .replace(/^[?&]/, "");
      return b ? "?" + b : "";
    }
    function Jc(a) {
      "string" == typeof a && (a = N(a));
      if (!O(a)) return a.href;
      var b = a.pathname.split("/");
      F(oc[b[1]], "Unknown path prefix in url %s", a.href);
      var c = b[2],
        d =
          "s" == c
            ? "https://" + decodeURIComponent(b[3])
            : "http://" + decodeURIComponent(c);
      F(0 < d.indexOf("."), "Expected a . in origin %s", d);
      b.splice(1, "s" == c ? 3 : 2);
      return d + b.join("/") + Ic(a.search) + (a.hash || "");
    }
    function Kc(a) {
      return N(Jc(a)).origin;
    }
    function Lc(a, b) {
      Mc(b);
      var c = Kc(a.location.href);
      a =
        encodeURIComponent("__amp_source_origin") + "=" + encodeURIComponent(c);
      return Ac(b, a, void 0);
    }
    function Mc(a) {
      var b = N(a),
        c = v(b.search);
      F(!("__amp_source_origin" in c), "Source origin is not allowed in %s", a);
    }
    function P(a, b) {
      return !!Nc(a)[b];
    }
    function Oc(a, b, c, d) {
      var e = P(a, b),
        g = !(void 0 !== c ? !c : e);
      if (g != e && ((Nc(a)[b] = g), !d)) {
        var h = Pc(a);
        h[b] = g;
        var k = [],
          l;
        for (l in h) k.push((!1 === h[l] ? "-" : "") + l);
        try {
          "localStorage" in a &&
            a.localStorage.setItem("amp-experiment-toggles", k.join(","));
        } catch (n) {
          D().error(
            "EXPERIMENTS",
            "Failed to save experiments to localStorage."
          );
        }
        D().warn(
          "EXPERIMENTS",
          '"%s" experiment %s for the domain "%s". See: https://amp.dev/documentation/guides-and-tutorials/learn/experimental',
          b,
          g ? "enabled" : "disabled",
          a.location.hostname
        );
      }
      return g;
    }
    function Nc(a) {
      if (a.__AMP__EXPERIMENT_TOGGLES) return a.__AMP__EXPERIMENT_TOGGLES;
      a.__AMP__EXPERIMENT_TOGGLES = Object.create(null);
      var b = a.__AMP__EXPERIMENT_TOGGLES;
      if (a.AMP_CONFIG)
        for (var c in a.AMP_CONFIG) {
          var d = a.AMP_CONFIG[c];
          "number" === typeof d &&
            0 <= d &&
            1 >= d &&
            (b[c] = Math.random() < d);
        }
      if (
        a.AMP_CONFIG &&
        Array.isArray(a.AMP_CONFIG["allow-doc-opt-in"]) &&
        0 < a.AMP_CONFIG["allow-doc-opt-in"].length
      ) {
        var e = a.AMP_CONFIG["allow-doc-opt-in"],
          g = a.document.head.querySelector(
            'meta[name="amp-experiments-opt-in"]'
          );
        if (g) {
          var h = g.getAttribute("content").split(",");
          for (c = 0; c < h.length; c++)
            -1 != e.indexOf(h[c]) && (b[h[c]] = !0);
        }
      }
      Object.assign(b, Pc(a));
      if (
        a.AMP_CONFIG &&
        Array.isArray(a.AMP_CONFIG["allow-url-opt-in"]) &&
        0 < a.AMP_CONFIG["allow-url-opt-in"].length
      ) {
        c = a.AMP_CONFIG["allow-url-opt-in"];
        a = v(a.location.originalHash || a.location.hash);
        for (var k = 0; k < c.length; k++) {
          var l = a["e-" + c[k]];
          "1" == l && (b[c[k]] = !0);
          "0" == l && (b[c[k]] = !1);
        }
      }
      return b;
    }
    function Pc(a) {
      var b = "";
      try {
        "localStorage" in a &&
          (b = a.localStorage.getItem("amp-experiment-toggles"));
      } catch (e) {
        E().warn(
          "EXPERIMENTS",
          "Failed to retrieve experiments from localStorage."
        );
      }
      var c = b ? b.split(/\s*,\s*/g) : [];
      a = Object.create(null);
      for (var d = 0; d < c.length; d++)
        0 != c[d].length &&
          ("-" == c[d][0] ? (a[c[d].substr(1)] = !1) : (a[c[d]] = !0));
      return a;
    }
    function Qc(a, b) {
      a.__AMP_EXPERIMENT_BRANCHES = a.__AMP_EXPERIMENT_BRANCHES || {};
      for (var c = 0; c < b.length; c++) {
        var d = b[c],
          e = d.experimentId;
        mb.call(a.__AMP_EXPERIMENT_BRANCHES, e) ||
          (d.isTrafficEligible && d.isTrafficEligible(a)
            ? !a.__AMP_EXPERIMENT_BRANCHES[e] &&
              P(a, e) &&
              ((d = d.branches),
              (a.__AMP_EXPERIMENT_BRANCHES[e] =
                d[Math.floor(Math.random() * d.length)] || null))
            : (a.__AMP_EXPERIMENT_BRANCHES[e] = null));
      }
    }
    var Rc = [
      {
        experimentId: "ampdoc-fie",
        isTrafficEligible: function () {
          return !0;
        },
        branches: ["21066823", "21066824"],
      },
    ];
    function Sc(a) {
      if (!P(a, "ampdoc-fie")) return !1;
      Qc(a, Rc);
      return (
        "21066824" ===
        (a.__AMP_EXPERIMENT_BRANCHES
          ? a.__AMP_EXPERIMENT_BRANCHES["ampdoc-fie"]
          : null)
      );
    }
    function Tc(a, b) {
      var c = a.ownerDocument.defaultView,
        d = Uc(c),
        e = c != d,
        g = Sc(d);
      e && !g
        ? (b = Vc(c, b) ? Wc(c, b) : null)
        : ((a = Xc(a)), (a = Yc(a)), (b = Vc(a, b) ? Wc(a, b) : null));
      return b;
    }
    function Zc(a, b, c) {
      var d = Uc(a);
      Vc(a, b);
      if (Sc(d)) {
        var e = Xc(a.document);
        $c(
          Yc(e),
          e,
          b,
          function () {
            return c;
          },
          !0
        );
      } else
        $c(a, a, b, function () {
          return c;
        }),
          Wc(a, b);
    }
    function Q(a, b, c) {
      a = Uc(a);
      $c(a, a, b, c);
    }
    function R(a, b, c, d) {
      var e = Xc(a),
        g = Yc(e);
      $c(g, e, b, c);
      d && Wc(g, b);
    }
    function S(a, b) {
      a = Uc(a);
      return Wc(a, b);
    }
    function ad(a) {
      a = Uc(a);
      return Vc(a, "performance") ? Wc(a, "performance") : null;
    }
    function bd(a, b) {
      var c = Xc(a);
      c = Yc(c);
      return Wc(c, b);
    }
    function cd(a, b) {
      return dd(Yc(a), b);
    }
    function Uc(a) {
      return a.__AMP_TOP || (a.__AMP_TOP = a);
    }
    function ed(a, b) {
      var c = (a.ownerDocument || a).defaultView;
      a = b || Uc(c);
      if (c && c != a && Uc(c) == a)
        try {
          return c.frameElement;
        } catch (d) {}
      return null;
    }
    function Xc(a) {
      return a.nodeType
        ? S((a.ownerDocument || a).defaultView, "ampdoc").getAmpDoc(a)
        : a;
    }
    function Yc(a) {
      a = Xc(a);
      return a.isSingleDoc() ? a.win : a;
    }
    function Wc(a, b) {
      Vc(a, b);
      a = fd(a)[b];
      a.obj ||
        ((a.obj = new a.ctor(a.context)),
        (a.ctor = null),
        (a.context = null),
        a.resolve && a.resolve(a.obj));
      return a.obj;
    }
    function $c(a, b, c, d, e) {
      var g = fd(a),
        h = g[c];
      h ||
        (h = g[c] = {
          obj: null,
          promise: null,
          resolve: null,
          reject: null,
          context: null,
          ctor: null,
        });
      if (e || (!h.ctor && !h.obj))
        (h.ctor = d), (h.context = b), h.resolve && Wc(a, c);
    }
    function gd(a, b) {
      var c = dd(a, b);
      if (c) return c;
      a = fd(a);
      a[b] = hd();
      return a[b].promise;
    }
    function dd(a, b) {
      var c = fd(a)[b];
      if (c) {
        if (c.promise) return c.promise;
        Wc(a, b);
        return (c.promise = Promise.resolve(c.obj));
      }
      return null;
    }
    function fd(a) {
      var b = a.__AMP_SERVICES;
      b || (b = a.__AMP_SERVICES = {});
      return b;
    }
    function id(a, b) {
      var c = Wc(Yc(a.getParent()), b);
      $c(Yc(a), a, b, function () {
        return c;
      });
    }
    function Vc(a, b) {
      a = a.__AMP_SERVICES && a.__AMP_SERVICES[b];
      return !(!a || (!a.ctor && !a.obj));
    }
    function hd() {
      var a = new L(),
        b = a.promise,
        c = a.resolve;
      a = a.reject;
      b.catch(function () {});
      return {
        obj: null,
        promise: b,
        resolve: c,
        reject: a,
        context: null,
        ctor: null,
      };
    }
    function jd(a, b, c) {
      return kd(a, b, c, void 0).then(function (a) {
        return F(
          a,
          "Service %s was requested to be provided through %s, but %s is not loaded in the current page. To fix this problem load the JavaScript file for %s in this page.",
          b,
          c,
          c,
          c
        );
      });
    }
    function kd(a, b, c, d) {
      var e = cd(a, b);
      if (e) return e;
      var g = Xc(a);
      return g
        .waitForBodyOpen()
        .then(function () {
          return ld(g.win, c, g.win.document.head);
        })
        .then(function () {
          if (d) var e = cd(a, b);
          else
            (e = g.win),
              (e =
                e.__AMP_EXTENDED_ELEMENTS && e.__AMP_EXTENDED_ELEMENTS[c]
                  ? gd(Yc(a), b)
                  : null);
          return e;
        });
    }
    function md(a) {
      var b = Tc(a, "bind");
      if (b) return Promise.resolve(b);
      b = a.ownerDocument.defaultView;
      var c = Uc(b);
      return b !== c ? nd(b) : kd(a, "bind", "amp-bind");
    }
    function od(a) {
      if (!a) return [];
      for (
        var b = {},
          c = a.querySelectorAll(
            "script[custom-element],script[custom-template]"
          ),
          d = 0;
        d < c.length;
        d++
      ) {
        var e = c[d];
        e =
          e.getAttribute("custom-element") || e.getAttribute("custom-template");
        b[e] = !0;
      }
      return Object.keys(b);
    }
    function pd(a) {
      return a.waitForBodyOpen().then(function () {
        var b = a.getHeadNode();
        return od(b).includes("amp-form");
      });
    }
    function ld(a, b, c) {
      return od(c).includes(b)
        ? S(a, "extensions").waitForExtension(a, b)
        : q();
    }
    function nd(a) {
      return xb(a.document)
        .then(function () {
          return ld(a, "amp-bind", a.document.head);
        })
        .then(function () {
          return a.__AMP_EXTENDED_ELEMENTS &&
            a.__AMP_EXTENDED_ELEMENTS["amp-bind"]
            ? gd(a, "bind")
            : null;
        });
    }
    function qd(a) {
      return S(a, "ampdoc");
    }
    function rd(a) {
      return bd(a, "documentInfo").get();
    }
    function sd(a) {
      return S(a, "extensions");
    }
    function td(a) {
      return bd(a, "mutator");
    }
    function T(a) {
      return S(a, "platform");
    }
    function ud(a) {
      return bd(a, "resources");
    }
    function U(a) {
      return S(a, "timer");
    }
    function V(a) {
      return bd(a, "viewer");
    }
    function vd(a) {
      return S(a, "vsync");
    }
    function wd(a) {
      return bd(a, "viewport");
    }
    function xd(a, b) {
      this.Bg = a;
      this.Gb = Object.assign(
        {},
        { root: null, rootMargin: "0px 0px 0px 0px" },
        b
      );
      if ((a = this.Gb.root) && 1 !== a.nodeType)
        throw Error("root must be an Element");
      this.Ha = [];
      this.S = null;
      xd._upgraders.push(this.Th.bind(this));
    }
    f = xd.prototype;
    f.disconnect = function () {
      this.S ? this.S.disconnect() : (this.Ha.length = 0);
    };
    f.takeRecords = function () {
      return this.S ? this.S.takeRecords() : [];
    };
    f.observe = function (a) {
      this.S ? this.S.observe(a) : -1 == this.Ha.indexOf(a) && this.Ha.push(a);
    };
    f.unobserve = function (a) {
      this.S
        ? this.S.unobserve(a)
        : ((a = this.Ha.indexOf(a)), -1 != a && this.Ha.splice(a, 1));
    };
    f.Th = function (a) {
      var b = new a(this.Bg, this.Gb);
      this.S = b;
      this.Ha.forEach(function (a) {
        return b.observe(a);
      });
      this.Ha = null;
    };
    ca.Object.defineProperties(xd.prototype, {
      root: {
        configurable: !0,
        enumerable: !0,
        get: function () {
          return this.S ? this.S.root : this.Gb.root || null;
        },
      },
      rootMargin: {
        configurable: !0,
        enumerable: !0,
        get: function () {
          return this.S ? this.S.rootMargin : this.Gb.rootMargin;
        },
      },
      thresholds: {
        configurable: !0,
        enumerable: !0,
        get: function () {
          return this.S ? this.S.thresholds : [].concat(this.Gb.threshold || 0);
        },
      },
    });
    xd._upgraders = [];
    function yd() {
      var a = zd;
      !a.IntersectionObserverEntry ||
        "isIntersecting" in a.IntersectionObserverEntry.prototype ||
        Object.defineProperty(
          a.IntersectionObserverEntry.prototype,
          "isIntersecting",
          {
            enumerable: !0,
            configurable: !0,
            get: function () {
              return 0 < this.intersectionRatio;
            },
          }
        );
    }
    function Ad(a) {
      return (a = Number(a)) ? (0 < a ? 1 : -1) : a;
    }
    var Bd = Object.prototype.hasOwnProperty;
    function Cd(a, b) {
      if (null == a)
        throw new TypeError("Cannot convert undefined or null to object");
      for (var c = Object(a), d = 1; d < arguments.length; d++) {
        var e = arguments[d];
        if (null != e) for (var g in e) Bd.call(e, g) && (c[g] = e[g]);
      }
      return c;
    }
    function Dd(a) {
      return Object.keys(a).map(function (b) {
        return a[b];
      });
    }
    function Ed(a) {
      if (!(this instanceof Ed))
        throw new TypeError("Constructor Promise requires `new`");
      if (!Fd(a)) throw new TypeError("Must pass resolver function");
      this._state = Gd;
      this._value = [];
      this._isChainEnd = !0;
      Hd(this, Id(this, Jd), Id(this, Kd), { then: a });
    }
    Ed.prototype.then = function (a, b) {
      a = Fd(a) ? a : void 0;
      b = Fd(b) ? b : void 0;
      if (a || b) this._isChainEnd = !1;
      return this._state(this._value, a, b);
    };
    Ed.prototype.catch = function (a) {
      return this.then(void 0, a);
    };
    function Ld(a) {
      return a === Object(a) && a instanceof this
        ? a
        : new this(function (b) {
            b(a);
          });
    }
    function Md(a) {
      return new this(function (b, c) {
        c(a);
      });
    }
    function Nd(a) {
      var b = this;
      return new b(function (c, d) {
        var e = a.length,
          g = Array(e);
        if (0 === e) return c(g);
        Od(a, function (a, k) {
          b.resolve(a).then(function (a) {
            g[k] = a;
            0 === --e && c(g);
          }, d);
        });
      });
    }
    function Pd(a) {
      var b = this;
      return new b(function (c, d) {
        for (var e = 0; e < a.length; e++) b.resolve(a[e]).then(c, d);
      });
    }
    function Jd(a, b, c, d) {
      if (!b)
        return d && ((b = d.promise), (b._state = Jd), (b._value = a)), this;
      d || (d = new Qd(this.constructor));
      Rd(Sd(d, b, a));
      return d.promise;
    }
    function Kd(a, b, c, d) {
      if (!c)
        return d && ((b = d.promise), (b._state = Kd), (b._value = a)), this;
      d || (d = new Qd(this.constructor));
      Rd(Sd(d, c, a));
      return d.promise;
    }
    function Gd(a, b, c, d) {
      if (!d) {
        if (!b && !c) return this;
        d = new Qd(this.constructor);
      }
      a.push({
        deferred: d,
        onFulfilled: b || d.resolve,
        onRejected: c || d.reject,
      });
      return d.promise;
    }
    function Qd(a) {
      var b = this;
      this.promise = new a(function (a, d) {
        b.resolve = a;
        b.reject = d;
      });
      return b;
    }
    function Vd(a, b, c, d) {
      var e = a._value;
      a._state = b;
      a._value = c;
      d &&
        b === Gd &&
        d._state(c, void 0, void 0, {
          promise: a,
          resolve: void 0,
          reject: void 0,
        });
      for (var g = 0; g < e.length; g++) {
        var h = e[g];
        a._state(c, h.onFulfilled, h.onRejected, h.deferred);
      }
      e.length = 0;
      b === Kd &&
        a._isChainEnd &&
        setTimeout(function () {
          if (a._isChainEnd) throw c;
        }, 0);
    }
    function Id(a, b) {
      return function (c) {
        Vd(a, b, c);
      };
    }
    function Wd() {}
    function Fd(a) {
      return "function" === typeof a;
    }
    function Od(a, b) {
      for (var c = 0; c < a.length; c++) b(a[c], c);
    }
    function Sd(a, b, c) {
      var d = a.promise,
        e = a.resolve,
        g = a.reject;
      return function () {
        try {
          var a = b(c);
          Hd(d, e, g, a, a);
        } catch (k) {
          g(k);
        }
      };
    }
    var Rd = (function () {
      function a() {
        for (var a = 0; a < d; a++) {
          var b = c[a];
          c[a] = null;
          b();
        }
        d = 0;
      }
      if ("undefined" !== typeof window && window.postMessage) {
        window.addEventListener("message", a);
        var b = function () {
          window.postMessage("macro-task", "*");
        };
      } else
        b = function () {
          setTimeout(a, 0);
        };
      var c = Array(16),
        d = 0;
      return function (a) {
        0 === d && b();
        c[d++] = a;
      };
    })();
    function Hd(a, b, c, d, e) {
      var g = c,
        h;
      try {
        if (d === a) throw new TypeError("Cannot fulfill promise with itself");
        var k = d === Object(d);
        if (k && d instanceof a.constructor) Vd(a, d._state, d._value, d);
        else if (k && (h = d.then) && Fd(h)) {
          var l = function (d) {
            l = g = Wd;
            Hd(a, b, c, d, d);
          };
          g = function (a) {
            l = g = Wd;
            c(a);
          };
          h.call(
            e,
            function (a) {
              l(a);
            },
            function (a) {
              g(a);
            }
          );
        } else b(d);
      } catch (n) {
        g(n);
      }
    }
    (function (a) {
      a.fetch ||
        (Object.defineProperty(a, "fetch", {
          value: Zb,
          writable: !0,
          enumerable: !0,
          configurable: !0,
        }),
        Object.defineProperty(a, "Response", {
          value: ec,
          writable: !0,
          enumerable: !1,
          configurable: !0,
        }));
    })(self);
    (function (a) {
      a.Math.sign ||
        a.Object.defineProperty(a.Math, "sign", {
          enumerable: !1,
          configurable: !0,
          writable: !0,
          value: Ad,
        });
    })(self);
    (function (a) {
      a.Object.assign ||
        a.Object.defineProperty(a.Object, "assign", {
          enumerable: !1,
          configurable: !0,
          writable: !0,
          value: Cd,
        });
    })(self);
    (function (a) {
      a.Object.values ||
        a.Object.defineProperty(a.Object, "values", {
          configurable: !0,
          writable: !0,
          value: Dd,
        });
    })(self);
    (function (a) {
      a.Promise ||
        ((a.Promise = Ed),
        Ed.default && (a.Promise = Ed.default),
        (a.Promise.resolve = Ld),
        (a.Promise.reject = Md),
        (a.Promise.all = Nd),
        (a.Promise.race = Pd));
    })(self);
    (function (a) {
      a.Array.prototype.includes ||
        a.Object.defineProperty(a.Array.prototype, "includes", {
          enumerable: !1,
          configurable: !0,
          writable: !0,
          value: ja,
        });
    })(self);
    (function (a) {
      var b = a.Map,
        c = new b();
      if (c.set(0, 0) !== c) {
        var d = c.set;
        a.Object.defineProperty(b.prototype, "set", {
          enumerable: !1,
          configurable: !0,
          writable: !0,
          value: function () {
            d.apply(this, arguments);
            return this;
          },
        });
      }
    })(self);
    (function (a) {
      var b = a.WeakMap,
        c = new b();
      if (c.set({}, 0) !== c) {
        var d = c.set;
        a.Object.defineProperty(b.prototype, "set", {
          enumerable: !1,
          configurable: !0,
          writable: !0,
          value: function () {
            d.apply(this, arguments);
            return this;
          },
        });
      }
    })(self);
    (function (a) {
      var b = a.Set,
        c = new b();
      if (c.add(0) !== c) {
        var d = c.add;
        a.Object.defineProperty(b.prototype, "add", {
          enumerable: !1,
          configurable: !0,
          writable: !0,
          value: function () {
            d.apply(this, arguments);
            return this;
          },
        });
      }
    })(self);
    if (self.document) {
      Ga();
      var Xd = self,
        Yd = Xd.HTMLDocument || Xd.Document;
      Yd &&
        !Yd.prototype.contains &&
        Xd.Object.defineProperty(Yd.prototype, "contains", {
          enumerable: !1,
          configurable: !0,
          writable: !0,
          value: Ha,
        });
      var mc = self;
      lc() &&
        ((jc = Element.prototype.getBoundingClientRect),
        mc.Object.defineProperty(
          mc.Element.prototype,
          "getBoundingClientRect",
          { value: kc }
        ));
      var Zd = function () {},
        Ca = self,
        $d = Ca.document,
        ae,
        be = Ca.customElements;
      ae = !!(be && be.define && be.get && be.whenDefined);
      var ce;
      if (!(ce = !$d)) {
        var de;
        if ((de = ae))
          de = -1 === Ca.HTMLElement.toString().indexOf("[native code]");
        ce = de;
      }
      if (!ce) {
        var ee = !0,
          fe = !1;
        if (Zd && ae)
          try {
            var ge = Ca.Reflect,
              he = Object.create(Zd.prototype);
            Function.call.call(Zd, he);
            fe = !(!ge || !ge.construct);
          } catch (a) {
            ee = !1;
          }
        fe ? Ea() : ee && Aa();
      }
      var zd = self;
      zd.IntersectionObserver || (zd.IntersectionObserver = xd);
      yd();
    }
    var ie;
    function je(a) {
      a = a.ownerDocument || a;
      (ie && ie.ownerDocument === a) || (ie = a.createElement("div"));
      return ke;
    }
    function ke(a) {
      var b = ie;
      b.innerHTML = a[0];
      a = b.firstElementChild;
      b.removeChild(a);
      return a;
    }
    var le,
      me = "Webkit webkit Moz moz ms O o".split(" ");
    function ne(a, b, c) {
      if (M(b, "--")) return b;
      le || (le = I());
      var d = le[b];
      if (!d || c) {
        d = b;
        if (void 0 === a[b]) {
          var e = b.charAt(0).toUpperCase() + b.slice(1);
          a: {
            for (var g = 0; g < me.length; g++) {
              var h = me[g] + e;
              if (void 0 !== a[h]) {
                e = h;
                break a;
              }
            }
            e = "";
          }
          var k = e;
          void 0 !== a[k] && (d = k);
        }
        c || (le[b] = d);
      }
      return d;
    }
    function oe(a, b) {
      a = a.style;
      for (var c in b) a.setProperty(ne(a, c), b[c].toString(), "important");
    }
    function X(a, b, c, d) {
      if ((b = ne(a.style, b, void 0))) {
        var e = d ? c + d : c;
        M(b, "--") ? a.style.setProperty(b, e) : (a.style[b] = e);
      }
    }
    function pe(a, b) {
      for (var c in b) X(a, c, b[c]);
    }
    function qe(a, b) {
      void 0 === b && (b = a.hasAttribute("hidden"));
      b ? a.removeAttribute("hidden") : a.setAttribute("hidden", "");
    }
    function re(a) {
      if (!a.hasAttribute("src") && 0 == "srcset" in a) {
        var b = a.getAttribute("srcset"),
          c = /\S+/.exec(b);
        null != c && a.setAttribute("src", c[0]);
      }
    }
    function se(a, b, c) {
      var d = a.createElement("canvas");
      d.width = b;
      d.height = c;
      return d.toDataURL();
    }
    var te = [
        '<i-amphtml-sizer class=i-amphtml-sizer slot=i-amphtml-svc><img alt="" role=presentation aria-hidden=true class=i-amphtml-intrinsic-sizer></i-amphtml-sizer>',
      ],
      ue = {
        NODISPLAY: "nodisplay",
        FIXED: "fixed",
        FIXED_HEIGHT: "fixed-height",
        RESPONSIVE: "responsive",
        CONTAINER: "container",
        FILL: "fill",
        FLEX_ITEM: "flex-item",
        FLUID: "fluid",
        INTRINSIC: "intrinsic",
      },
      ve = {
        "AMP-PIXEL": { width: "0px", height: "0px" },
        "AMP-ANALYTICS": { width: "1px", height: "1px" },
        "AMP-AUDIO": null,
        "AMP-SOCIAL-SHARE": { width: "60px", height: "44px" },
      },
      we = {
        "AMP-AD": !0,
        "AMP-ANIM": !0,
        "AMP-EMBED": !0,
        "AMP-FACEBOOK": !0,
        "AMP-FACEBOOK-COMMENTS": !0,
        "AMP-FACEBOOK-PAGE": !0,
        "AMP-GOOGLE-DOCUMENT-EMBED": !0,
        "AMP-IFRAME": !0,
        "AMP-IMG": !0,
        "AMP-INSTAGRAM": !0,
        "AMP-LIST": !0,
        "AMP-PINTEREST": !0,
        "AMP-PLAYBUZZ": !0,
        "AMP-TWITTER": !0,
      },
      xe = /^amp\-(video|.+player)|AMP-BRIGHTCOVE|AMP-DAILYMOTION|AMP-YOUTUBE|AMP-VIMEO|AMP-IMA-VIDEO/i;
    function ye(a) {
      for (var b in ue) if (ue[b] == a) return ue[b];
    }
    function ze(a) {
      return (
        "fixed" == a ||
        "fixed-height" == a ||
        "responsive" == a ||
        "fill" == a ||
        "flex-item" == a ||
        "fluid" == a ||
        "intrinsic" == a
      );
    }
    function Ae(a) {
      if ("number" == typeof a) return a + "px";
      if (
        a &&
        /^\d+(\.\d+)?(px|em|rem|vh|vw|vmin|vmax|cm|mm|q|in|pc|pt)?$/.test(a)
      )
        return /^\d+(\.\d+)?$/.test(a) ? a + "px" : a;
    }
    function Be(a) {
      F(
        /^\d+(\.\d+)?(px|em|rem|vh|vw|vmin|vmax|cm|mm|q|in|pc|pt)$/.test(a),
        "Invalid length value: %s",
        a
      );
      return a;
    }
    function Ce(a) {
      F(
        /^\d+(\.\d+)?(px|em|rem|vh|vw|vmin|vmax|%)$/.test(a),
        "Invalid length or percent value: %s",
        a
      );
      return a;
    }
    function De(a) {
      Be(a);
      return F(/[a-z]+/i.exec(a), "Failed to read units from %s", a)[0];
    }
    function Ee(a) {
      a = parseFloat(a);
      return Oa(a) ? a : void 0;
    }
    var Fe;
    function Ge(a, b, c, d) {
      var e = a,
        g = c;
      var h = function (a) {
        try {
          return g(a);
        } catch (u) {
          throw (self.__AMP_REPORT_ERROR(u), u);
        }
      };
      var k = He(),
        l = !1;
      d && (l = d.capture);
      e.addEventListener(b, h, k ? d : l);
      return function () {
        e && e.removeEventListener(b, h, k ? d : l);
        h = e = g = null;
      };
    }
    function He() {
      if (void 0 !== Fe) return Fe;
      Fe = !1;
      try {
        var a = {
          get capture() {
            Fe = !0;
          },
        };
        self.addEventListener("test-options", null, a);
        self.removeEventListener("test-options", null, a);
      } catch (b) {}
      return Fe;
    }
    function Ie(a, b) {
      var c = { detail: b };
      Object.assign(c, void 0);
      if ("function" == typeof a.CustomEvent)
        return new a.CustomEvent("perf", c);
      a = a.document.createEvent("CustomEvent");
      a.initCustomEvent("perf", !!c.bubbles, !!c.cancelable, b);
      return a;
    }
    function Je(a, b, c, d) {
      return Ge(a, b, c, d);
    }
    function Ke(a, b, c, d) {
      var e = c,
        g = Ge(
          a,
          b,
          function (a) {
            try {
              e(a);
            } finally {
              (e = null), g();
            }
          },
          d
        );
      return g;
    }
    function Le(a, b) {
      var c,
        d = new Promise(function (b) {
          c = Ke(a, "click", b, void 0);
        });
      d.then(c, c);
      b && b(c);
      return d;
    }
    function Me(a) {
      return !!(
        a.complete ||
        "complete" == a.readyState ||
        (Ne(a) && 0 < a.readyState) ||
        (a.document && "complete" == a.document.readyState)
      );
    }
    function Oe(a) {
      var b, c;
      if (Me(a)) return Promise.resolve(a);
      var d = Ne(a);
      return d && a.__AMP_MEDIA_LOAD_FAILURE_SRC === a.currentSrc
        ? Promise.reject(a)
        : new Promise(function (e, g) {
            b = d
              ? Ke(a, "loadedmetadata", e, { capture: !0 })
              : Ke(a, "load", e);
            if (a.tagName) {
              var h = a;
              if (
                d &&
                !a.hasAttribute("src") &&
                ((h = Ib(a, function (a) {
                  return "SOURCE" === a.tagName;
                })),
                !h)
              )
                return g(Error("Media has no source."));
              c = Ke(h, "error", g);
            }
          }).then(
            function () {
              c && c();
              return a;
            },
            function () {
              b && b();
              Ne(a) && (a.__AMP_MEDIA_LOAD_FAILURE_SRC = a.currentSrc || !0);
              var c = a;
              c && c.src && (c = c.src);
              throw D().createError("Failed to load:", c);
            }
          );
    }
    function Ne(a) {
      return "AUDIO" === a.tagName || "VIDEO" === a.tagName;
    }
    function Pe(a) {
      this.element = a;
      this.layout_ = "nodisplay";
      this.inViewport_ = !1;
      this.win = a.ownerDocument.defaultView;
      this.defaultActionAlias_ = this.actionMap_ = null;
    }
    f = Pe.prototype;
    f.signals = function () {
      return this.element.signals();
    };
    f.getDefaultActionAlias = function () {
      return this.defaultActionAlias_;
    };
    f.getLayoutPriority = function () {
      return 0;
    };
    f.updateLayoutPriority = function (a) {
      this.element.getResources().updateLayoutPriority(this.element, a);
    };
    f.getLayout = function () {
      return this.layout_;
    };
    f.getLayoutBox = function () {
      return this.element.getLayoutBox();
    };
    f.getPageLayoutBox = function () {
      return this.element.getPageLayoutBox();
    };
    f.getWin = function () {
      return this.win;
    };
    f.getAmpDoc = function () {
      return this.element.getAmpDoc();
    };
    f.getVsync = function () {
      return vd(this.win);
    };
    f.getConsentPolicy = function () {
      var a = null;
      this.element.hasAttribute("data-block-on-consent") &&
        (a = this.element.getAttribute("data-block-on-consent") || "default");
      return a;
    };
    f.isLayoutSupported = function (a) {
      return "nodisplay" == a;
    };
    f.isAlwaysFixed = function () {
      return !1;
    };
    f.isInViewport = function () {
      return this.inViewport_;
    };
    f.upgradeCallback = function () {
      return null;
    };
    f.createdCallback = function () {};
    f.firstAttachedCallback = function () {};
    f.buildCallback = function () {};
    f.preconnectCallback = function () {};
    f.detachedCallback = function () {};
    f.prerenderAllowed = function () {
      return !1;
    };
    f.isBuildRenderBlocking = function () {
      return !1;
    };
    f.createPlaceholderCallback = function () {
      return null;
    };
    f.createLoaderLogoCallback = function () {
      return {};
    };
    f.renderOutsideViewport = function () {
      return "inabox" == y(this.win).runtime || 3;
    };
    f.idleRenderOutsideViewport = function () {
      return !1;
    };
    f.isRelayoutNeeded = function () {
      return !1;
    };
    f.layoutCallback = function () {
      return q();
    };
    f.firstLayoutCompleted = function () {
      this.togglePlaceholder(!1);
    };
    f.viewportCallback = function () {};
    f.pauseCallback = function () {};
    f.resumeCallback = function () {};
    f.unlayoutCallback = function () {
      return !1;
    };
    f.unlayoutOnPause = function () {
      return !1;
    };
    f.reconstructWhenReparented = function () {
      return !0;
    };
    f.loadPromise = function (a) {
      return Oe(a);
    };
    function Qe(a) {
      a.actionMap_ || (a.actionMap_ = a.win.Object.create(null));
    }
    f.registerAction = function (a, b, c) {
      c = void 0 === c ? 2 : c;
      Qe(this);
      this.actionMap_[a] = { handler: b, minTrust: c };
    };
    f.registerDefaultAction = function (a, b, c) {
      b = void 0 === b ? "activate" : b;
      this.registerAction(b, a, void 0 === c ? 2 : c);
      this.defaultActionAlias_ = b;
    };
    f.executeAction = function (a) {
      var b = a.method;
      "activate" === b && (b = this.defaultActionAlias_ || b);
      Qe(this);
      var c = this.actionMap_[b];
      F(c, "Method not found: " + b + " in " + this.element.tagName);
      b = c.handler;
      if (a.satisfiesTrust(c.minTrust)) return b(a);
    };
    f.propagateAttributes = function (a, b, c) {
      a = z(a) ? a : [a];
      for (var d = 0; d < a.length; d++) {
        var e = a[d],
          g = this.element.getAttribute(e);
        null !== g ? b.setAttribute(e, g) : c && b.removeAttribute(e);
      }
    };
    f.propagateDataset = function (a) {
      for (var b in a.dataset) b in this.element.dataset || delete a.dataset[b];
      for (var c in this.element.dataset)
        a.dataset[c] !== this.element.dataset[c] &&
          (a.dataset[c] = this.element.dataset[c]);
    };
    f.forwardEvents = function (a, b) {
      var c = this,
        d = (z(a) ? a : [a]).map(function (a) {
          return Je(b, a, function (b) {
            c.element.dispatchCustomEvent(a, b.data || {});
          });
        });
      return function () {
        return d.forEach(function (a) {
          return a();
        });
      };
    };
    f.getPlaceholder = function () {
      return this.element.getPlaceholder();
    };
    f.togglePlaceholder = function (a) {
      this.element.togglePlaceholder(a);
    };
    f.getFallback = function () {
      return this.element.getFallback();
    };
    f.toggleFallback = function (a) {
      this.element.toggleFallback(a);
    };
    f.toggleLoading = function (a) {
      this.element.toggleLoading(a);
    };
    f.isLoadingReused = function () {
      return !1;
    };
    f.getOverflowElement = function () {
      return this.element.getOverflowElement();
    };
    f.renderStarted = function () {
      this.element.renderStarted();
    };
    f.getRealChildNodes = function () {
      return this.element.getRealChildNodes();
    };
    f.getRealChildren = function () {
      return this.element.getRealChildren();
    };
    f.applyFillContent = function (a, b) {
      a.classList.add("i-amphtml-fill-content");
      b && a.classList.add("i-amphtml-replaced-content");
    };
    f.getViewport = function () {
      return wd(this.getAmpDoc());
    };
    f.getIntersectionElementLayoutBox = function () {
      return this.getLayoutBox();
    };
    f.collapse = function () {
      td(this.getAmpDoc()).collapseElement(this.element);
    };
    f.attemptCollapse = function () {
      return td(this.getAmpDoc()).attemptCollapse(this.element);
    };
    f.forceChangeHeight = function (a) {
      td(this.getAmpDoc()).forceChangeSize(this.element, a, void 0);
    };
    f.attemptChangeHeight = function (a) {
      return td(this.getAmpDoc()).requestChangeSize(this.element, a, void 0);
    };
    f.attemptChangeSize = function (a, b, c) {
      return td(this.getAmpDoc()).requestChangeSize(
        this.element,
        a,
        b,
        void 0,
        c
      );
    };
    f.measureElement = function (a) {
      return td(this.getAmpDoc()).measureElement(a);
    };
    f.mutateElement = function (a, b) {
      return this.measureMutateElement(null, a, b);
    };
    f.measureMutateElement = function (a, b, c) {
      return td(this.getAmpDoc()).measureMutateElement(c || this.element, a, b);
    };
    f.mutateElementSkipRemeasure = function (a) {
      return td(this.getAmpDoc()).mutateElement(this.element, a, !0);
    };
    f.collapsedCallback = function () {};
    f.expand = function () {
      td(this.getAmpDoc()).expandElement(this.element);
    };
    f.expandedCallback = function () {};
    f.mutatedAttributesCallback = function () {};
    f.onLayoutMeasure = function () {};
    f.onMeasureChanged = function () {};
    f.user = function () {
      return D(this.element);
    };
    function Re(a, b) {
      this.element = a;
      this.win = a.ownerDocument.defaultView || b;
      this.j = V(this.element);
      this.compileCallback();
    }
    f = Re.prototype;
    f.compileCallback = function () {};
    f.setHtml = function () {
      throw Error("Not implemented");
    };
    f.render = function () {
      throw Error("Not implemented");
    };
    function Se(a, b) {
      for (a = a.firstChild; null != a; a = a.nextSibling)
        if (3 == a.nodeType) {
          var c = a.textContent.trim();
          c && b(c);
        } else 8 != a.nodeType && 1 == a.nodeType && b(a);
    }
    f.tryUnwrap = function (a) {
      var b;
      Se(a, function (a) {
        b = void 0 === b && a.nodeType ? a : null;
      });
      return b || a;
    };
    f.unwrapChildren = function (a) {
      var b = this,
        c = [];
      Se(a, function (a) {
        if ("string" == typeof a) {
          var d = b.win.document.createElement("div");
          d.textContent = a;
          c.push(d);
        } else c.push(a);
      });
      return c;
    };
    f.viewerCanRenderTemplates = function () {
      return this.j.hasCapability("viewerRenderTemplate");
    };
    function Te(a) {
      this.w = a;
      this.Tb = {};
      this.se = {};
    }
    f = Te.prototype;
    f.setHtmlForTemplate = function (a, b) {
      return Ue(this, a).then(function (a) {
        return a.setHtml(b);
      });
    };
    f.renderTemplate = function (a, b) {
      return Ue(this, a).then(function (a) {
        return a.render(b);
      });
    };
    f.renderTemplateArray = function (a, b) {
      return 0 == b.length
        ? Promise.resolve([])
        : Ue(this, a).then(function (a) {
            return b.map(function (b) {
              return a.render(b);
            });
          });
    };
    f.findAndRenderTemplate = function (a, b, c) {
      return this.renderTemplate(this.findTemplate(a, c), b);
    };
    f.findAndSetHtmlForTemplate = function (a, b, c) {
      return this.setHtmlForTemplate(this.findTemplate(a, c), b);
    };
    f.findAndRenderTemplateArray = function (a, b, c) {
      return this.renderTemplateArray(this.findTemplate(a, c), b);
    };
    f.hasTemplate = function (a, b) {
      return !!this.maybeFindTemplate(a, b);
    };
    f.findTemplate = function (a, b) {
      b = this.maybeFindTemplate(a, b);
      F(b, "Template not found for %s", a);
      var c = b.tagName;
      F(
        "TEMPLATE" == c ||
          ("SCRIPT" == c && "text/plain" === b.getAttribute("type")),
        'Template must be defined in a <template> or <script type="text/plain"> tag'
      );
      return b;
    };
    f.maybeFindTemplate = function (a, b) {
      var c = a.getAttribute("template");
      return c
        ? Bb(a).getElementById(c)
        : b
        ? Lb(a, b)
        : a.querySelector('template, script[type="text/plain"]');
    };
    function Ue(a, b) {
      var c = b.__AMP_IMPL_;
      if (c) return Promise.resolve(c);
      c = "";
      var d = b.tagName;
      "TEMPLATE" == d
        ? (c = b.getAttribute("type"))
        : "SCRIPT" == d && (c = b.getAttribute("template"));
      F(c, "Type must be specified: %s", b);
      if ((d = b.__AMP_WAIT_)) return d;
      d = Ve(a, c).then(function (c) {
        var d = (b.__AMP_IMPL_ = new c(b, a.w));
        delete b.__AMP_WAIT_;
        return d;
      });
      return (b.__AMP_WAIT_ = d);
    }
    function Ve(a, b) {
      if (a.Tb[b]) return a.Tb[b];
      var c = new L(),
        d = c.promise;
      c = c.resolve;
      a.Tb[b] = d;
      a.se[b] = c;
      return d;
    }
    var We = {
      PRERENDER: "prerender",
      VISIBLE: "visible",
      HIDDEN: "hidden",
      PAUSED: "paused",
      INACTIVE: "inactive",
    }; /*

 Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
 Use of this source code is governed by a BSD-style
 license that can be found in the LICENSE file or at
 https://developers.google.com/open-source/licenses/bsd */
    var Xe;
    function Ye() {
      if (void 0 === Xe) {
        var a = Element;
        Xe = a.prototype.attachShadow
          ? "v1"
          : a.prototype.createShadowRoot
          ? "v0"
          : "none";
      }
      return Xe;
    }
    var Ze = {
      "amp-dynamic-css-classes": "[custom-element=amp-dynamic-css-classes]",
      variant: "amp-experiment",
      "amp-story-render": "amp-story[standalone]",
    };
    function $e(a) {
      var b = af(a).map(function (b) {
        var c = gd(a, b).then(function (a) {
          return a && "function" == typeof a.whenReady
            ? a.whenReady().then(function () {
                return a;
              })
            : a;
        });
        return U(a).timeoutPromise(
          3e3,
          c,
          "Render timeout waiting for service " + b + " to be ready."
        );
      });
      return Promise.all(b);
    }
    function af(a) {
      var b = a.document;
      return Object.keys(Ze).filter(function (a) {
        return b.querySelector(Ze[a]);
      });
    }
    function bf(a, b, c, d, e) {
      var g = a.getHeadNode(),
        h = cf(g, df(g, b), d || !1, e || null);
      if (c) {
        var k = a.getRootNode();
        if (ef(k, h)) c(h);
        else
          var l = setInterval(function () {
            ef(k, h) && (clearInterval(l), c(h));
          }, 4);
      }
    }
    function cf(a, b, c, d) {
      var e = a.__AMP_CSS_SM;
      e || (e = a.__AMP_CSS_SM = I());
      var g = !c && d && "amp-custom" != d && "amp-keyframes" != d,
        h = c ? "amp-runtime" : g ? "amp-extension=" + d : null;
      if (h) {
        var k = ff(a, e, h);
        if (k) return k.textContent !== b && (k.textContent = b), k;
      }
      var l = (a.ownerDocument || a).createElement("style");
      l.textContent = b;
      var n = null;
      c
        ? l.setAttribute("amp-runtime", "")
        : g
        ? (l.setAttribute("amp-extension", d || ""),
          (n = ff(a, e, "amp-runtime")))
        : (d && l.setAttribute(d, ""), (n = a.lastChild));
      b = n;
      (b = void 0 === b ? null : b)
        ? a.insertBefore(l, b.nextSibling)
        : a.insertBefore(l, a.firstChild);
      h && (e[h] = l);
      return l;
    }
    function ff(a, b, c) {
      return b[c]
        ? b[c]
        : (a = a.querySelector("style[" + c + "]"))
        ? (b[c] = a)
        : null;
    }
    function df(a, b) {
      return (a = a.__AMP_CSS_TR) ? a(b) : b;
    }
    var gf = !1;
    function hf() {
      var a = self.document,
        b = a.defaultView;
      xb(a)
        .then(function () {
          return $e(b);
        })
        .catch(function (a) {
          ib(a);
          return [];
        })
        .then(function (c) {
          gf = !0;
          jf(a);
          Xc(a).signals().signal("render-start");
          0 < c.length && ud(a.documentElement).schedulePass(1, !0);
          try {
            var d = S(b, "performance");
            d.tick("mbv");
            d.flush();
          } catch (e) {}
        });
    }
    function kf(a) {
      gf || ((gf = !0), jf(a));
    }
    function jf(a) {
      pe(a.body, { opacity: 1, visibility: "visible", animation: "none" });
    }
    function ef(a, b) {
      var c = a.styleSheets;
      for (a = 0; a < c.length; a++) if (c[a].ownerNode == b) return !0;
      return !1;
    }
    var lf = { composed: !1 };
    function mf(a) {
      return "none" != Ye() && Node.prototype.getRootNode
        ? a.getRootNode(lf)
        : Eb(a, function (a) {
            return Cb(a);
          });
    }
    function nf(a) {
      var b = a.match(/^(.*)\/(.*)-([0-9.]+|latest)(\.max)?\.(?:js|mjs)$/i);
      return {
        extensionId: b ? b[2] : void 0,
        extensionVersion: b ? b[3] : void 0,
      };
    }
    var of =
      "html{overflow-x:hidden!important}html.i-amphtml-fie{height:100%!important;width:100%!important}html:not([amp4ads]),html:not([amp4ads]) body{height:auto!important}html:not([amp4ads]) body{margin:0!important}body{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}html.i-amphtml-singledoc.i-amphtml-embedded{-ms-touch-action:pan-y;touch-action:pan-y}html.i-amphtml-fie>body,html.i-amphtml-singledoc>body{overflow:visible!important}html.i-amphtml-fie:not(.i-amphtml-inabox)>body,html.i-amphtml-singledoc:not(.i-amphtml-inabox)>body{position:relative!important}html.i-amphtml-webview>body{overflow-x:hidden!important;overflow-y:visible!important;min-height:100vh!important}html.i-amphtml-ios-embed-legacy>body{overflow-x:hidden!important;overflow-y:auto!important;position:absolute!important}html.i-amphtml-ios-embed{overflow-y:auto!important;position:static}#i-amphtml-wrapper{overflow-x:hidden!important;overflow-y:auto!important;position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;margin:0!important;display:block!important}html.i-amphtml-ios-embed.i-amphtml-ios-overscroll,html.i-amphtml-ios-embed.i-amphtml-ios-overscroll>#i-amphtml-wrapper{-webkit-overflow-scrolling:touch!important}#i-amphtml-wrapper>body{position:relative!important;border-top:1px solid transparent!important}#i-amphtml-wrapper+body{visibility:visible}#i-amphtml-wrapper+body .i-amphtml-lightbox-element,#i-amphtml-wrapper+body[i-amphtml-lightbox]{visibility:hidden}#i-amphtml-wrapper+body[i-amphtml-lightbox] .i-amphtml-lightbox-element{visibility:visible}#i-amphtml-wrapper.i-amphtml-scroll-disabled,.i-amphtml-scroll-disabled{overflow-x:hidden!important;overflow-y:hidden!important}amp-instagram{padding:54px 0px 0px!important;background-color:#fff}amp-iframe iframe{box-sizing:border-box!important}[amp-access][amp-access-hide]{display:none}[subscriptions-dialog],body:not(.i-amphtml-subs-ready) [subscriptions-action],body:not(.i-amphtml-subs-ready) [subscriptions-section]{display:none!important}amp-experiment,amp-live-list>[update]{display:none}.i-amphtml-jank-meter{position:fixed;background-color:rgba(232,72,95,0.5);bottom:0;right:0;color:#fff;font-size:16px;z-index:1000;padding:5px}amp-list[resizable-children]>.i-amphtml-loading-container.amp-hidden{display:none!important}amp-list [fetch-error],amp-list[load-more] [load-more-button],amp-list[load-more] [load-more-end],amp-list[load-more] [load-more-failed],amp-list[load-more] [load-more-loading]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[standalone]{min-height:1px!important;display:block!important;height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;width:100%!important}amp-story[standalone]{background-color:#202125!important;position:relative!important}amp-story-page{background-color:#757575}amp-story .amp-active>div,amp-story .i-amphtml-loader-background{display:none!important}amp-story-page:not(:first-of-type):not([distance]):not([active]){transform:translateY(1000vh)!important}amp-autocomplete{position:relative!important;display:inline-block!important}amp-autocomplete>input,amp-autocomplete>textarea{padding:0.5rem;border:1px solid rgba(0,0,0,0.33)}.i-amphtml-autocomplete-results,amp-autocomplete>input,amp-autocomplete>textarea{font-size:1rem;line-height:1.5rem}[amp-fx^=fly-in]{visibility:hidden}amp-script[nodom]{position:fixed!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;visibility:hidden}\n/*# sourceURL=/css/ampdoc.css*/";
    var pf =
      "[hidden]{display:none!important}.i-amphtml-element{display:inline-block}.i-amphtml-blurry-placeholder{transition:opacity 0.3s cubic-bezier(0.0,0.0,0.2,1)!important;pointer-events:none}[layout=nodisplay]:not(.i-amphtml-element){display:none!important}.i-amphtml-layout-fixed,[layout=fixed][width][height]:not(.i-amphtml-layout-fixed){display:inline-block;position:relative}.i-amphtml-layout-responsive,[layout=responsive][width][height]:not(.i-amphtml-layout-responsive),[width][height][heights]:not([layout]):not(.i-amphtml-layout-responsive),[width][height][sizes]:not([layout]):not(.i-amphtml-layout-responsive){display:block;position:relative}.i-amphtml-layout-intrinsic,[layout=intrinsic][width][height]:not(.i-amphtml-layout-intrinsic){display:inline-block;position:relative;max-width:100%}.i-amphtml-layout-intrinsic .i-amphtml-sizer{max-width:100%}.i-amphtml-intrinsic-sizer{max-width:100%;display:block!important}.i-amphtml-layout-container,.i-amphtml-layout-fixed-height,[layout=container],[layout=fixed-height][height]:not(.i-amphtml-layout-fixed-height){display:block;position:relative}.i-amphtml-layout-fill,[layout=fill]:not(.i-amphtml-layout-fill){display:block;overflow:hidden!important;position:absolute;top:0;left:0;bottom:0;right:0}.i-amphtml-layout-flex-item,[layout=flex-item]:not(.i-amphtml-layout-flex-item){display:block;position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.i-amphtml-layout-fluid{position:relative}.i-amphtml-layout-size-defined{overflow:hidden!important}.i-amphtml-layout-awaiting-size{position:absolute!important;top:auto!important;bottom:auto!important}i-amphtml-sizer{display:block!important}.i-amphtml-blurry-placeholder,.i-amphtml-fill-content{display:block;height:0;max-height:100%;max-width:100%;min-height:100%;min-width:100%;width:0;margin:auto}.i-amphtml-layout-size-defined .i-amphtml-fill-content{position:absolute;top:0;left:0;bottom:0;right:0}.i-amphtml-replaced-content,.i-amphtml-screen-reader{padding:0!important;border:none!important}.i-amphtml-screen-reader{position:fixed!important;top:0px!important;left:0px!important;width:4px!important;height:4px!important;opacity:0!important;overflow:hidden!important;margin:0!important;display:block!important;visibility:visible!important}.i-amphtml-screen-reader~.i-amphtml-screen-reader{left:8px!important}.i-amphtml-screen-reader~.i-amphtml-screen-reader~.i-amphtml-screen-reader{left:12px!important}.i-amphtml-screen-reader~.i-amphtml-screen-reader~.i-amphtml-screen-reader~.i-amphtml-screen-reader{left:16px!important}.i-amphtml-unresolved{position:relative;overflow:hidden!important}.i-amphtml-select-disabled{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.i-amphtml-notbuilt,[layout]:not(.i-amphtml-element),[width][height][heights]:not([layout]):not(.i-amphtml-element),[width][height][sizes]:not([layout]):not(.i-amphtml-element){position:relative;overflow:hidden!important;color:transparent!important}.i-amphtml-notbuilt:not(.i-amphtml-layout-container)>*,[layout]:not([layout=container]):not(.i-amphtml-element)>*,[width][height][heights]:not([layout]):not(.i-amphtml-element)>*,[width][height][sizes]:not([layout]):not(.i-amphtml-element)>*{display:none}.i-amphtml-notbuilt:not(.i-amphtml-layout-container),[layout]:not([layout=container]):not(.i-amphtml-element),[width][height][heights]:not([layout]):not(.i-amphtml-element),[width][height][sizes]:not([layout]):not(.i-amphtml-element){color:transparent!important;line-height:0!important}.i-amphtml-ghost{visibility:hidden!important}.i-amphtml-element>[placeholder],[layout]:not(.i-amphtml-element)>[placeholder],[width][height][heights]:not([layout]):not(.i-amphtml-element)>[placeholder],[width][height][sizes]:not([layout]):not(.i-amphtml-element)>[placeholder]{display:block}.i-amphtml-element>[placeholder].amp-hidden,.i-amphtml-element>[placeholder].hidden{visibility:hidden}.i-amphtml-element:not(.amp-notsupported)>[fallback],.i-amphtml-layout-container>[placeholder].amp-hidden,.i-amphtml-layout-container>[placeholder].hidden{display:none}.i-amphtml-layout-size-defined>[fallback],.i-amphtml-layout-size-defined>[placeholder]{position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;z-index:1}.i-amphtml-notbuilt>[placeholder]{display:block!important}.i-amphtml-hidden-by-media-query{display:none!important}.i-amphtml-element-error{background:red!important;color:#fff!important;position:relative!important}.i-amphtml-element-error:before{content:attr(error-message)}i-amp-scroll-container,i-amphtml-scroll-container{position:absolute;top:0;left:0;right:0;bottom:0;display:block}i-amp-scroll-container.amp-active,i-amphtml-scroll-container.amp-active{overflow:auto;-webkit-overflow-scrolling:touch}.i-amphtml-loading-container{display:block!important;pointer-events:none;z-index:1}.i-amphtml-notbuilt>.i-amphtml-loading-container{display:block!important}.i-amphtml-loading-container.amp-hidden{visibility:hidden}.i-amphtml-element>[overflow]{cursor:pointer;position:relative;z-index:2;visibility:hidden;display:initial;line-height:normal}.i-amphtml-element>[overflow].amp-visible{visibility:visible}template{display:none!important}.amp-border-box,.amp-border-box *,.amp-border-box :after,.amp-border-box :before{box-sizing:border-box}amp-pixel{display:none!important}amp-analytics,amp-auto-ads,amp-story-auto-ads{position:fixed!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;visibility:hidden}html.i-amphtml-fie>amp-analytics{position:initial!important}[visible-when-invalid]:not(.visible),form [submit-error],form [submit-success],form [submitting]{display:none}amp-accordion{display:block!important}amp-accordion>section{float:none!important}amp-accordion>section>*{float:none!important;display:block!important;overflow:hidden!important;position:relative!important}amp-accordion,amp-accordion>section{margin:0}amp-accordion>section>:last-child{display:none!important}amp-accordion>section[expanded]>:last-child{display:block!important}\n/*# sourceURL=/css/ampshared.css*/";
    function qf(a, b, c) {
      function d(d) {
        h = null;
        g = a.setTimeout(e, c);
        b.apply(null, d);
      }
      function e() {
        g = 0;
        h && d(h);
      }
      var g = 0,
        h = null;
      return function (a) {
        for (var b = [], c = 0; c < arguments.length; ++c)
          b[c - 0] = arguments[c];
        g ? (h = b) : d(b);
      };
    }
    function rf(a, b) {
      function c() {
        d = 0;
        var h = 300 - (a.Date.now() - e);
        if (0 < h) d = a.setTimeout(c, h);
        else {
          var k = g;
          g = null;
          b.apply(null, k);
        }
      }
      var d = 0,
        e = 0,
        g = null;
      return function (b) {
        for (var h = [], l = 0; l < arguments.length; ++l)
          h[l - 0] = arguments[l];
        e = a.Date.now();
        g = h;
        d || (d = a.setTimeout(c, 300));
      };
    }
    function sf(a, b) {
      var c = b.documentElement;
      return a.some(function (a) {
        return c.hasAttribute(a);
      });
    }
    function tf() {
      var a = uf();
      return function (b) {
        return setTimeout(b, a());
      };
    }
    function uf() {
      var a = 0;
      return function () {
        var b = Math.pow(1.5, a++);
        var c = b * (c || 0.3) * Math.random();
        0.5 < Math.random() && (c *= -1);
        b += c;
        return 1e3 * b;
      };
    }
    function vf(a, b) {
      var c = !1;
      b = void 0 === b ? {} : b;
      c = void 0 === c ? !0 : c;
      kd(a, "amp-analytics-instrumentation", "amp-analytics").then(function (
        d
      ) {
        d && d.triggerEventForTarget(a, "user-error", b, c);
      });
    }
    var wf = self.__AMP_ERRORS || [];
    self.__AMP_ERRORS = wf;
    function xf(a) {
      xf = tf();
      return xf(a);
    }
    function yf(a) {
      try {
        return JSON.stringify(a);
      } catch (b) {
        return String(a);
      }
    }
    var zf;
    function Af(a, b) {
      try {
        if (a)
          if (void 0 !== a.message) a = hb(a);
          else {
            var c = a;
            a = Error(yf(c));
            a.origError = c;
          }
        else a = Error("Unknown error");
        if (a.reported) return a;
        a.reported = !0;
        var d = b || a.associatedElement;
        d &&
          d.classList &&
          (d.classList.add("i-amphtml-error"),
          y().development &&
            (d.classList.add("i-amphtml-element-error"),
            d.setAttribute("error-message", a.message)));
        if (self.console) {
          var e = console.error || console.log;
          a.messageArray
            ? e.apply(console, a.messageArray)
            : d
            ? e.call(console, a.message, d)
            : e.call(console, a.message);
        }
        d && d.za && d.za("amp:error", a.message);
        Bf.call(self, void 0, void 0, void 0, void 0, a);
      } catch (g) {
        setTimeout(function () {
          throw g;
        });
      }
      return a;
    }
    function Cf(a) {
      return a
        ? "string" == typeof a
          ? M(a, "BLOCK_BY_CONSENT")
          : "string" == typeof a.message
          ? M(a.message, "BLOCK_BY_CONSENT")
          : !1
        : !1;
    }
    function Df() {
      var a = self;
      a.onerror = Bf;
      a.addEventListener("unhandledrejection", function (a) {
        !a.reason ||
        ("CANCELLED" !== a.reason.message &&
          "BLOCK_BY_CONSENT" !== a.reason.message &&
          "AbortError" !== a.reason.message)
          ? Af(a.reason || Error("rejected promise " + a))
          : a.preventDefault();
      });
    }
    function Bf(a, b, c, d, e) {
      var g = this;
      !this || !this.document || (e && e.expected) || kf(this.document);
      if (!y().development) {
        var h = !1;
        try {
          h = Ef();
        } catch (l) {}
        if (!(h && 0.01 < Math.random())) {
          var k = Ff(a, b, c, d, e, h);
          k &&
            xf(function () {
              try {
                return Gf(g, k).catch(function () {});
              } catch (l) {}
            });
        }
      }
    }
    function Gf(a, b) {
      return b.pt && 0.9 > Math.random()
        ? q()
        : Hf(a, b).then(function (a) {
            if (!a) {
              var c = new XMLHttpRequest();
              c.open(
                "POST",
                0.1 > Math.random() ? B.betaErrorReporting : B.errorReporting,
                !0
              );
              c.send(JSON.stringify(b));
            }
          });
    }
    function Hf(a, b) {
      a = qd(a);
      if (!a.isSingleDoc()) return Promise.resolve(!1);
      var c = a.getSingleDoc();
      if (
        !c.getRootNode().documentElement.hasAttribute("report-errors-to-viewer")
      )
        return Promise.resolve(!1);
      var d = V(c);
      return d.hasCapability("errorReporter")
        ? d.isTrustedViewer().then(function (a) {
            if (!a) return !1;
            d.sendMessage(
              "error",
              K({
                m: b.m,
                a: b.a,
                s: b.s,
                el: b.el,
                ex: b.ex,
                v: b.v,
                pt: b.pt,
                jse: b.jse,
              })
            );
            return !0;
          })
        : Promise.resolve(!1);
    }
    function Ff(a, b, c, d, e, g) {
      var h = a;
      e && (h = e.message ? e.message : String(e));
      h || (h = "Unknown error");
      a = h;
      var k = !(!e || !e.expected);
      if (!/_reported_/.test(a) && "CANCELLED" != a) {
        var l = !(self && self.window),
          n = Math.random();
        if (-1 != a.indexOf("Failed to load:") || "Script error." == a || l)
          if (((k = !0), 0.001 < n)) return;
        var u = Ua(a);
        if (!(u && 0.1 < n)) {
          h = Object.create(null);
          h.v = y().rtvVersion;
          h.noAmp = g ? "1" : "0";
          h.m = a.replace("\u200b\u200b\u200b", "");
          h.a = u ? "1" : "0";
          h.ex = k ? "1" : "0";
          h.dw = l ? "1" : "0";
          var t = "1p";
          self.context && self.context.location
            ? ((h["3p"] = "1"), (t = "3p"))
            : y().runtime && (t = y().runtime);
          h.rt = t;
          "inabox" === t && (h.adid = y().a4aId);
          g = self;
          h.ca = g.AMP_CONFIG && g.AMP_CONFIG.canary ? "1" : "0";
          g = self;
          h.bt =
            g.AMP_CONFIG && g.AMP_CONFIG.type ? g.AMP_CONFIG.type : "unknown";
          self.location.ancestorOrigins &&
            self.location.ancestorOrigins[0] &&
            (h.or = self.location.ancestorOrigins[0]);
          self.viewerState && (h.vs = self.viewerState);
          self.parent && self.parent != self && (h.iem = "1");
          if (self.AMP && self.AMP.viewer) {
            var w = self.AMP.viewer.getResolvedViewerUrl(),
              x = self.AMP.viewer.maybeGetMessagingOrigin();
            w && (h.rvu = w);
            x && (h.mso = x);
          }
          zf || (zf = If());
          h.jse = zf;
          var r = [];
          g = self.__AMP__EXPERIMENT_TOGGLES || null;
          for (var p in g) r.push(p + "=" + (g[p] ? "1" : "0"));
          h.exps = r.join(",");
          e
            ? ((h.el = e.associatedElement ? e.associatedElement.tagName : "u"),
              e.args && (h.args = JSON.stringify(e.args)),
              u || e.ignoreStack || !e.stack || (h.s = e.stack),
              e.message && (e.message += " _reported_"))
            : ((h.f = b || ""), (h.l = c || ""), (h.c = d || ""));
          h.r = self.document ? self.document.referrer : "";
          h.ae = wf.join(",");
          h.fr = self.location.originalHash || self.location.hash;
          "production" === h.bt && (h.pt = "1");
          b = a;
          25 <= wf.length && wf.splice(0, wf.length - 25 + 1);
          wf.push(b);
          return h;
        }
      }
    }
    function Ef() {
      var a = self;
      if (!a.document) return !1;
      a = a.document.querySelectorAll("script[src]");
      for (var b = 0; b < a.length; b++)
        if (!O(a[b].src.toLowerCase())) return !0;
      return !1;
    }
    function If() {
      function a() {}
      a.prototype.t = function () {
        throw Error("message");
      };
      var b = new a();
      try {
        b.t();
      } catch (d) {
        b = d.stack;
        if (M(b, "t@")) return "Safari";
        if (-1 < b.indexOf(".prototype.t@")) return "Firefox";
        var c = b.split("\n").pop();
        if (/\bat .* \(/i.test(c)) return "IE";
        if (M(b, "Error: message")) return "Chrome";
      }
      return "unknown";
    }
    var Jf = "__AMP_ACTION_MAP__" + Math.random(),
      Kf = { form: ["submit", "clear"] },
      Lf = [
        { tagOrTarget: "AMP", method: "setState" },
        { tagOrTarget: "*", method: "focus" },
        { tagOrTarget: "*", method: "hide" },
        { tagOrTarget: "*", method: "show" },
        { tagOrTarget: "*", method: "toggleClass" },
        { tagOrTarget: "*", method: "toggleVisibility" },
      ],
      Mf = {
        button: !0,
        checkbox: !0,
        link: !0,
        listbox: !0,
        menuitem: !0,
        menuitemcheckbox: !0,
        menuitemradio: !0,
        option: !0,
        radio: !0,
        scrollbar: !0,
        slider: !0,
        spinbutton: !0,
        switch: !0,
        tab: !0,
        treeitem: !0,
      };
    function Nf(a, b, c, d, e, g, h, k, l, n) {
      k = void 0 === k ? "?" : k;
      l = void 0 === l ? null : l;
      n = void 0 === n ? Math.random() : n;
      this.node = a;
      this.method = b;
      this.args = c;
      this.source = d;
      this.caller = e;
      this.event = g;
      this.trust = h;
      this.actionEventType = k;
      this.tagOrTarget = l || a.tagName;
      this.sequenceId = n;
    }
    Nf.prototype.satisfiesTrust = function (a) {
      if (!Oa(this.trust))
        return (
          E().error(
            "Action",
            "Invalid trust for '" + this.method + "': " + this.trust
          ),
          !1
        );
      if (this.trust < a) {
        a: switch (this.trust) {
          case 1:
            var b = "low";
            break a;
          case 3:
            b = "high";
            break a;
          default:
            b = "default";
        }
        D().error(
          "Action",
          '"' +
            this.actionEventType +
            '" event with "' +
            b +
            '" trust is not allowed to invoke "' +
            (this.tagOrTarget.toLowerCase() + "." + this.method + '".')
        );
        return !1;
      }
      return !0;
    };
    function Of(a, b) {
      this.ampdoc = a;
      this.T = b || a.getRootNode();
      this.ha = (this.wf =
        this.ampdoc.isSingleDoc() && sf(["\u26a14email", "amp4email"], this.T))
        ? Lf
        : null;
      this.Dd = I();
      this.nf = I();
      this.addEvent("tap");
      this.addEvent("submit");
      this.addEvent("change");
      this.addEvent("input-debounced");
      this.addEvent("input-throttled");
      this.addEvent("valid");
      this.addEvent("invalid");
    }
    Of.installInEmbedWindow = function (a, b) {
      Zc(a, "action", new Of(b, a.document));
    };
    f = Of.prototype;
    f.addEvent = function (a) {
      var b = this;
      if ("tap" == a)
        this.T.addEventListener("click", function (c) {
          c.defaultPrevented || b.trigger(c.target, a, c, 3);
        }),
          this.T.addEventListener("keydown", function (c) {
            var d = c.key,
              e = c.target;
            if ("Enter" == d || " " == d) {
              var k = e.getAttribute("role");
              if ((d = k)) (d = k.toLowerCase()), (d = mb.call(Mf, d));
              var l = d;
              !c.defaultPrevented &&
                l &&
                b.trigger(e, a, c, 3) &&
                c.preventDefault();
            }
          });
      else if ("submit" == a)
        this.T.addEventListener(a, function (c) {
          b.trigger(c.target, a, c, 3);
        });
      else if ("change" == a)
        this.T.addEventListener(a, function (c) {
          var d = c.target;
          Pf(c);
          b.trigger(d, a, c, 3);
        });
      else if ("input-debounced" == a) {
        var c = rf(this.ampdoc.win, function (c) {
          b.trigger(c.target, a, c, 3);
        });
        this.T.addEventListener("input", function (a) {
          var b = new Qf(a);
          Pf(b);
          c(b);
        });
      } else if ("input-throttled" == a) {
        var d = qf(
          this.ampdoc.win,
          function (c) {
            b.trigger(c.target, a, c, 3);
          },
          100
        );
        this.T.addEventListener("input", function (a) {
          a = new Qf(a);
          Pf(a);
          d(a);
        });
      } else
        ("valid" != a && "invalid" != a) ||
          this.T.addEventListener(a, function (c) {
            b.trigger(c.target, a, c, 3);
          });
    };
    f.addGlobalTarget = function (a, b) {
      this.Dd[a] = b;
    };
    f.addGlobalMethodHandler = function (a, b, c) {
      this.nf[a] = { handler: b, minTrust: void 0 === c ? 2 : c };
    };
    f.trigger = function (a, b, c, d, e) {
      return Rf(this, a, b, c, d, e);
    };
    f.execute = function (a, b, c, d, e, g, h) {
      a = new Nf(a, b, c, d, e, g, h);
      Sf(this, a);
    };
    f.installActionHandler = function (a, b) {
      "amp-" === (a.getAttribute("id") || "").substring(0, 4) ||
        a.tagName.toLowerCase();
      if (a.__AMP_ACTION_HANDLER__)
        E().error("Action", "Action handler already installed for " + a);
      else {
        a.__AMP_ACTION_HANDLER__ = b;
        var c = a.__AMP_ACTION_QUEUE__;
        z(c) &&
          U(a.ownerDocument.defaultView).delay(function () {
            c.forEach(function (a) {
              try {
                b(a);
              } catch (e) {
                E().error("Action", "Action execution failed:", a, e);
              }
            });
            a.__AMP_ACTION_QUEUE__.length = 0;
          }, 1);
      }
    };
    f.hasAction = function (a, b, c) {
      return !!Tf(a, b, c);
    };
    f.hasResolvableAction = function (a, b, c) {
      var d = this,
        e = Tf(a, b, c);
      return e
        ? e.actionInfos.some(function (a) {
            return !!Uf(d, a.target);
          })
        : !1;
    };
    f.hasResolvableActionForTarget = function (a, b, c, d) {
      var e = this;
      return (a = Tf(a, b, d))
        ? a.actionInfos.some(function (a) {
            return Uf(e, a.target) == c;
          })
        : !1;
    };
    function Uf(a, b) {
      return a.Dd[b] ? a.T : a.T.getElementById(b);
    }
    f.setAllowlist = function (a) {
      a.every(function (a) {
        return a.tagOrTarget && a.method;
      });
      this.ha = a;
    };
    f.addToAllowlist = function (a, b, c) {
      var d = this;
      (c && c.includes("email") !== this.wf) ||
        (this.ha || (this.ha = []),
        z(b) || (b = [b]),
        b.forEach(function (b) {
          d.ha.some(function (c) {
            return c.tagOrTarget == a && c.method == b;
          }) || d.ha.push({ tagOrTarget: a, method: b });
        }));
    };
    function Rf(a, b, c, d, e, g) {
      var h = Tf(b, c);
      if (!h) return !1;
      var k = Math.random(),
        l = null;
      h.actionInfos.forEach(function (n) {
        function u() {
          var g = Uf(a, t);
          if (g)
            return (
              (g = new Nf(g, w, r, b, h.node, d, e, c, g.tagName || t, k)),
              Sf(a, g)
            );
          a.Ia('Target "' + t + '" not found for action [' + x + "].");
        }
        var t = n.target,
          w = n.method,
          x = n.str,
          r = Vf(n.args, d, g);
        l = l ? l.then(u) : u();
      });
      return 1 <= h.actionInfos.length;
    }
    f.Ia = function (a, b) {
      if (b) throw ((a = D().createError("[Action] " + a)), Af(a, b), a);
      D().error("Action", a);
    };
    function Sf(a, b) {
      var c = b.method,
        d = b.tagOrTarget;
      if (a.ha && !Wf(b, a.ha))
        return (
          a.Ia(
            '"' +
              d +
              "." +
              c +
              '" is not allowlisted ' +
              JSON.stringify(a.ha) +
              "."
          ),
          null
        );
      var e = a.Dd[d];
      if (e) return e(b);
      var g = b.node,
        h = a.nf[c];
      if (h && b.satisfiesTrust(h.minTrust)) return h.handler(b);
      var k = g.tagName.toLowerCase();
      if ("amp-" === k.substring(0, 4))
        return (
          g.enqueAction
            ? g.enqueAction(b)
            : a.Ia('Unrecognized AMP element "' + k + '".', g),
          null
        );
      var l = Kf[k];
      if (
        "amp-" === (g.getAttribute("id") || "").substring(0, 4) ||
        (l && -1 < l.indexOf(c))
      )
        return (
          (a = g.__AMP_ACTION_HANDLER__)
            ? a(b)
            : ((g.__AMP_ACTION_QUEUE__ = g.__AMP_ACTION_QUEUE__ || []),
              g.__AMP_ACTION_QUEUE__.push(b)),
          null
        );
      a.Ia("Target (" + d + ") doesn't support \"" + c + '" action.', b.caller);
      return null;
    }
    function Tf(a, b, c) {
      for (; a && (!c || a != c); ) {
        var d = b;
        var e = a;
        var g = d,
          h = e[Jf];
        void 0 === h &&
          ((h = null),
          e.hasAttribute("on")
            ? ((g = e.getAttribute("on")), (h = Xf(g, e)), (e[Jf] = h))
            : e.hasAttribute("execute") &&
              ((h = e.getAttribute("execute")),
              (h = Xf(g + ":" + h, e)),
              (e[Jf] = h)));
        var k = (e = h) ? e[d] || null : null;
        if (k && !a.disabled && !Gb(a, ":disabled"))
          return { node: a, actionInfos: k };
        a = a.parentElement;
      }
      return null;
    }
    f.setActions = function (a, b) {
      a.setAttribute("on", b);
      delete a[Jf];
    };
    function Pf(a) {
      var b = I(),
        c = a.target;
      void 0 !== c.value && (b.value = c.value);
      "INPUT" == c.tagName && (b.valueAsNumber = Number(c.value));
      void 0 !== c.checked && (b.checked = c.checked);
      if (void 0 !== c.min || void 0 !== c.max)
        (b.min = c.min), (b.max = c.max);
      c.files &&
        (b.files = Ma(c.files).map(function (a) {
          return { name: a.name, size: a.size, type: a.type };
        }));
      if (0 < Object.keys(b).length)
        try {
          a.detail = b;
        } catch (d) {}
    }
    function Wf(a, b) {
      var c = a.method,
        d = a.node;
      a = a.tagOrTarget;
      "activate" === c &&
        "function" == typeof d.getDefaultActionAlias &&
        (c = d.getDefaultActionAlias());
      var e = c.toLowerCase(),
        g = a.toLowerCase();
      return b.some(function (a) {
        return (a.tagOrTarget.toLowerCase() !== g && "*" !== a.tagOrTarget) ||
          a.method.toLowerCase() !== e
          ? !1
          : !0;
      });
    }
    function Qf(a) {
      this.detail = null;
      var b = this || I(),
        c;
      for (c in a) b[c] = "function" === typeof a[c] ? Yf : a[c];
    }
    function Yf() {}
    function Xf(a, b) {
      var c = Zf.bind(null, a, b),
        d = $f.bind(null, a, b);
      b = null;
      var e = new ag(a);
      do {
        var g = e.next();
        if (g.type != bg && (g.type != cg || ";" != g.value))
          if (g.type == dg || g.type == eg) {
            var h = g.value;
            d(e.next(), [cg], ":");
            var k = [];
            do {
              var l = d(e.next(), [dg, eg]).value,
                n = "activate",
                u = null;
              var t = e.peek();
              if (
                t.type == cg &&
                "." == t.value &&
                (e.next(),
                (n = d(e.next(), [dg, eg]).value || n),
                (t = e.peek()),
                t.type == cg && "(" == t.value)
              ) {
                e.next();
                u = e;
                var w = d,
                  x = c,
                  r = u.peek(),
                  p = null;
                if (r.type == fg) {
                  p = I();
                  var J = u.next().value;
                  p.__AMP_OBJECT_STRING__ = J;
                  w(u.next(), [cg], ")");
                } else {
                  do {
                    var H = (J = u.next());
                    r = H.type;
                    H = H.value;
                    if (r != cg || ("," != H && ")" != H))
                      if (r == dg || r == eg) {
                        w(u.next(), [cg], "=");
                        J = w(u.next(!0), [dg, eg]);
                        var sa = [J];
                        if (J.type == eg)
                          for (
                            r = u.peek();
                            r.type == cg && "." == r.value;
                            r = u.peek()
                          )
                            u.next(), (J = w(u.next(!1), [eg])), sa.push(J);
                        r = gg(sa);
                        p || (p = I());
                        p[H] = r;
                        r = u.peek();
                        x(
                          r.type == cg && ("," == r.value || ")" == r.value),
                          "Expected either [,] or [)]"
                        );
                      } else
                        x(!1, "; unexpected token [" + (J.value || "") + "]");
                  } while (J.type != cg || ")" != J.value);
                }
                u = p;
              }
              k.push({ event: h, target: l, method: n, args: u, str: a });
              t = e.peek();
            } while (t.type == cg && "," == t.value && e.next());
            b || (b = I());
            b[h] = k;
          } else c(!1, "; unexpected token [" + (g.value || "") + "]");
      } while (g.type != bg);
      return b;
    }
    function gg(a) {
      return 0 == a.length
        ? null
        : 1 == a.length
        ? a[0].value
        : {
            expression: a
              .map(function (a) {
                return a.value;
              })
              .join("."),
          };
    }
    function Vf(a, b, c) {
      if (!a) return a;
      var d = c || K({});
      b && (b = b.detail) && (d.event = b);
      var e = I();
      Object.keys(a).forEach(function (b) {
        var c = a[b];
        if ("object" == typeof c && c.expression) {
          c = c.expression;
          if ("." == c) c = d;
          else {
            c = c.split(".");
            for (var g = d, l = 0; l < c.length; l++) {
              var n = c[l];
              if (n && g && void 0 !== g[n] && Sb(g, n)) g = g[n];
              else {
                g = void 0;
                break;
              }
            }
            c = g;
          }
          var u = c;
          c = void 0 === u ? null : u;
        }
        e[b] = d[c] ? d[c] : c;
      });
      return e;
    }
    function Zf(a, b, c, d) {
      return F(c, "Invalid action definition in %s: [%s] %s", b, a, d || "");
    }
    function $f(a, b, c, d, e) {
      void 0 !== e
        ? Zf(a, b, d.includes(c.type) && c.value == e, "; expected [" + e + "]")
        : Zf(a, b, d.includes(c.type));
      return c;
    }
    var bg = 1,
      cg = 2,
      dg = 3,
      eg = 4,
      fg = 5;
    function ag(a) {
      this.L = a;
      this.Hd = -1;
    }
    ag.prototype.next = function (a) {
      var b = hg(this, a || !1);
      this.Hd = b.index;
      return b;
    };
    ag.prototype.peek = function (a) {
      return hg(this, a || !1);
    };
    function hg(a, b) {
      var c = a.Hd + 1;
      if (c >= a.L.length) return { type: bg, index: a.Hd };
      var d = a.L.charAt(c);
      if (-1 != " \t\n\r\f\v\u00a0\u2028\u2029".indexOf(d)) {
        for (
          c++;
          c < a.L.length &&
          -1 != " \t\n\r\f\v\u00a0\u2028\u2029".indexOf(a.L.charAt(c));
          c++
        );
        if (c >= a.L.length) return { type: bg, index: c };
        d = a.L.charAt(c);
      }
      if (b && (ig(d) || ("." == d && c + 1 < a.L.length && ig(a.L[c + 1])))) {
        for (var e = "." == d, g = c + 1; g < a.L.length; g++) {
          var h = a.L.charAt(g);
          if ("." == h) e = !0;
          else if (!ig(h)) break;
        }
        a = a.L.substring(c, g);
        a = e ? parseFloat(a) : parseInt(a, 10);
        c = g - 1;
        return { type: dg, value: a, index: c };
      }
      if (-1 != ";:.()=,|!".indexOf(d)) return { type: cg, value: d, index: c };
      if (-1 != "\"'".indexOf(d)) {
        g = -1;
        for (var k = c + 1; k < a.L.length; k++)
          if (a.L.charAt(k) == d) {
            g = k;
            break;
          }
        if (-1 == g) return { type: 0, index: c };
        a = a.L.substring(c + 1, g);
        c = g;
        return { type: dg, value: a, index: c };
      }
      if ("{" == d) {
        var l = 1;
        g = -1;
        for (d = c + 1; d < a.L.length; d++) {
          var n = a.L[d];
          "{" == n ? l++ : "}" == n && l--;
          if (0 >= l) {
            g = d;
            break;
          }
        }
        if (-1 == g) return { type: 0, index: c };
        a = a.L.substring(c, g + 1);
        c = g;
        return { type: fg, value: a, index: c };
      }
      for (
        g = c + 1;
        g < a.L.length &&
        -1 ==
          " \t\n\r\f\x0B\u00a0\u2028\u2029;:.()=,|!\"'{}".indexOf(
            a.L.charAt(g)
          );
        g++
      );
      a = a.L.substring(c, g);
      c = g - 1;
      return !b || ("true" != a && "false" != a)
        ? ig(a.charAt(0))
          ? { type: dg, value: a, index: c }
          : { type: eg, value: a, index: c }
        : { type: dg, value: "true" == a, index: c };
    }
    function ig(a) {
      return "0" <= a && "9" >= a;
    }
    function jg(a, b) {
      for (var c = [], d = 0, e = 0; e < a.length; e++) {
        var g = a[e];
        b(g, e, a) ? c.push(g) : (d < e && (a[d] = g), d++);
      }
      d < a.length && (a.length = d);
    }
    function kg(a, b) {
      for (var c = 0; c < a.length; c++) if (b(a[c], c, a)) return c;
      return -1;
    }
    function lg(a) {
      return !!a && "function" == typeof a.getFormData;
    }
    var mg = ["GET", "POST"],
      ng = [z, Na];
    function og(a, b) {
      var c = Object.assign({}, b);
      if (lg(b.body)) {
        var d = b.body;
        c.headers["Content-Type"] = "multipart/form-data;charset=utf-8";
        b = d.entries();
        for (var e = [], g = b.next(); !g.done; g = b.next()) e.push(g.value);
        c.body = e;
      }
      return { input: a, init: c };
    }
    function pg(a, b) {
      F(Na(a), "Object expected: %s", a);
      if ("document" != b) return new Response(a.body, a.init);
      var c = I(),
        d = {
          status: 200,
          statusText: "OK",
          getResponseHeader: function (a) {
            return c[String(a).toLowerCase()] || null;
          },
        };
      if (a.init) {
        var e = a.init;
        z(e.headers) &&
          e.headers.forEach(function (a) {
            var b = a[1];
            c[String(a[0]).toLowerCase()] = String(b);
          });
        e.status && (d.status = parseInt(e.status, 10));
        e.statusText && (d.statusText = String(e.statusText));
      }
      return new Response(a.body ? String(a.body) : "", d);
    }
    function qg(a, b, c, d) {
      if (!b) return q();
      var e = d.prerenderSafe ? q() : b.whenFirstVisible(),
        g = V(b),
        h = O(c),
        k = g.hasCapability("xhrInterceptor"),
        l = d.bypassInterceptorForDev && !1;
      return h ||
        !k ||
        l ||
        !b.getRootNode().documentElement.hasAttribute("allow-xhr-interception")
        ? e
        : e
            .then(function () {
              return g.isTrustedViewer();
            })
            .then(function (b) {
              if (b || P(a, "untrusted-xhr-interception")) {
                var e = K({ originalRequest: og(c, d) });
                return g.sendMessageAwaitResponse("xhr", e).then(function (a) {
                  return pg(a, d.responseType);
                });
              }
            });
    }
    function rg(a, b, c) {
      !1 !== c.ampCors && (b = Lc(a, b));
      return b;
    }
    function sg(a, b) {
      a = a || {};
      var c = a.method;
      void 0 === c ? (c = "GET") : ((c = c.toUpperCase()), mg.includes(c));
      a.method = c;
      a.headers = a.headers || K({});
      b && (a.headers.Accept = b);
      return a;
    }
    function tg(a, b, c) {
      c = c || {};
      var d = a.origin || N(a.location.href).origin;
      a = N(b).origin;
      d == a &&
        ((c.headers = c.headers || {}),
        (c.headers["AMP-Same-Origin"] = "true"));
      return c;
    }
    function ug(a) {
      var b = sg(a, "application/json");
      "POST" != b.method ||
        lg(b.body) ||
        (ng.some(function (a) {
          return a(b.body);
        }),
        (b.headers["Content-Type"] =
          b.headers["Content-Type"] || "text/plain;charset=utf-8"),
        (b.body =
          "application/x-www-form-urlencoded" === b.headers["Content-Type"]
            ? Cc(b.body)
            : JSON.stringify(b.body)));
      return b;
    }
    function vg(a) {
      return new Promise(function (b) {
        if (a.ok) return b(a);
        b = a.status;
        var c = D().createError("HTTP error " + b);
        c.retriable = 415 == b || (500 <= b && 600 > b);
        c.response = a;
        throw c;
      });
    }
    function wg(a) {
      this.win = a;
      a = qd(a);
      this.rg = a.isSingleDoc() ? a.getSingleDoc() : null;
    }
    f = wg.prototype;
    f.Kg = function (a, b) {
      var c = arguments,
        d = this;
      return qg(this.win, this.rg, a, b).then(function (a) {
        if (a) return a;
        lg(b.body) && (b.body = b.body.getFormData());
        return d.win.fetch.apply(null, c);
      });
    };
    function xg(a, b, c) {
      c = void 0 === c ? {} : c;
      b = rg(a.win, b, c);
      c = tg(a.win, b, c);
      return a.Kg(b, c).then(
        function (a) {
          return a;
        },
        function (a) {
          var c = N(b).origin;
          throw D().createExpectedError(
            "XHR",
            "Failed fetching (" + c + "/...):",
            a && a.message
          );
        }
      );
    }
    f.fetchJson = function (a, b) {
      return this.fetch(a, ug(b));
    };
    f.fetchText = function (a, b) {
      return this.fetch(a, sg(b, "text/plain"));
    };
    f.xssiJson = function (a, b) {
      return b
        ? a.text().then(function (a) {
            return M(a, b)
              ? Tb(a.slice(b.length))
              : (D().warn(
                  "XHR",
                  'Failed to strip missing prefix "' +
                    b +
                    '" in fetch response.'
                ),
                Tb(a));
          })
        : a.json();
    };
    f.fetch = function (a, b) {
      b = sg(b);
      return xg(this, a, b).then(function (a) {
        return vg(a);
      });
    };
    f.sendSignal = function (a, b) {
      return xg(this, a, b).then(function (a) {
        return vg(a);
      });
    };
    f.getCorsUrl = function (a, b) {
      return Lc(a, b);
    };
    function yg(a) {
      wg.call(this, a);
      this.ub = I();
    }
    m(yg, wg);
    yg.prototype.fetch = function (a, b) {
      var c = this,
        d = !b || !b.method || "GET" === b.method,
        e = zg(this, a, (b && b.headers && b.headers.Accept) || ""),
        g = !!this.ub[e];
      if (d && g)
        return this.ub[e].then(function (a) {
          return a.clone();
        });
      var h = wg.prototype.fetch.call(this, a, b);
      d &&
        (this.ub[e] = h.then(
          function (a) {
            delete c.ub[e];
            return a.clone();
          },
          function (a) {
            delete c.ub[e];
            throw a;
          }
        ));
      return h;
    };
    function zg(a, b, c) {
      a = Kc(a.win.location);
      "string" == typeof a && (a = N(a));
      if ("function" == typeof URL) b = new URL(b, a.href).toString();
      else {
        "string" == typeof a && (a = N(a));
        b = b.replace(/\\/g, "/");
        var d = N(b);
        b = M(b.toLowerCase(), d.protocol)
          ? d.href
          : M(b, "//")
          ? a.protocol + b
          : M(b, "/")
          ? a.origin + b
          : a.origin + a.pathname.replace(/\/[^/]*$/, "/") + b;
      }
      return Fc(b) + c;
    }
    function Ag(a, b) {
      var c = Bg(a);
      if (!c) return null;
      var d = c.split(";");
      for (a = 0; a < d.length; a++) {
        var e = d[a].trim(),
          g = e.indexOf("="),
          h;
        if ((h = -1 != g))
          (h = e.substring(0, g).trim()), (h = Ia(h, void 0) == b);
        if (h) return (b = e.substring(g + 1).trim()), Ia(b, b);
      }
      return null;
    }
    function Bg(a) {
      try {
        return a.document.cookie;
      } catch (b) {
        return "";
      }
    }
    function Cg(a, b, c, d) {
      var e = { highestAvailableDomain: !0 };
      e = void 0 === e ? {} : e;
      if (e.allowOnProxyOrigin)
        F(
          !e.highestAvailableDomain,
          "Could not support highestAvailable Domain on proxy origin, specify domain explicitly"
        );
      else {
        F(
          !O(a.location.href),
          "Should never attempt to set cookie on proxy origin: " + b
        );
        var g = N(a.location.href).hostname.toLowerCase(),
          h = N(B.cdn).hostname.toLowerCase();
        F(
          !(g == h || sb(g, "." + h)),
          "Should never attempt to set cookie on proxy origin. (in depth check): " +
            b
        );
      }
      g = void 0;
      if (e.domain) g = e.domain;
      else if (e.highestAvailableDomain)
        a: if (
          (g =
            a.document.head &&
            a.document.head.querySelector("meta[name='amp-cookie-scope']"))
        )
          (g = g.getAttribute("content") || ""),
            (h = Kc(a.location.href)),
            (g = sb(h, "." + g) ? g : h.split("://")[1]);
        else {
          if (!O(a.location.href)) {
            g = a.location.hostname.split(".");
            h = g[g.length - 1];
            var k;
            for (k = "-test-amp-cookie-tmp"; Ag(a, k); )
              k = "-test-amp-cookie-tmp0";
            for (var l = g.length - 2; 0 <= l; l--)
              if (
                ((h = g[l] + "." + h),
                Dg(a, k, "delete", Date.now() + 1e3, h),
                "delete" == Ag(a, k))
              ) {
                Dg(a, k, "delete", Date.now() - 1e3, h);
                g = h;
                break a;
              }
          }
          g = null;
        }
      Dg(a, b, c, d, g, e.sameSite, e.secure);
    }
    function Dg(a, b, c, d, e, g, h) {
      "ampproject.org" == e && ((c = "delete"), (d = 0));
      b =
        encodeURIComponent(b) +
        "=" +
        encodeURIComponent(c) +
        "; path=/" +
        (e ? "; domain=" + e : "") +
        "; expires=" +
        new Date(d).toUTCString() +
        (g ? "; SameSite=" + g : "") +
        (h ? "; Secure" : "");
      try {
        a.document.cookie = b;
      } catch (k) {}
    }
    function Eg(a) {
      this.w = a.win;
      this.O = U(this.w);
      this.sd = {};
      var b = rd(a).canonicalUrl;
      this.rd = b ? N(b).origin : null;
    }
    Eg.prototype.getScopedCid = function (a, b) {
      var c = this;
      if (this.sd[b]) return this.sd[b];
      var d;
      return (this.sd[b] = this.O.poll(200, function () {
        d = Ag(c.w, "AMP_TOKEN");
        return "$RETRIEVING" !== d;
      }).then(function () {
        if ("$OPT_OUT" === d) return "$OPT_OUT";
        if (
          ("$NOT_FOUND" !== d || !O(c.w.document.referrer)) &&
          d &&
          "$" === d[0]
        )
          return null;
        (d && (!d || "$" !== d[0])) || Fg(c, "$RETRIEVING", 3e4);
        return c
          .tb(
            "https://ampcid.google.com/v1/publisher:getClientId?key=" + a,
            b,
            d
          )
          .then(function (e) {
            var g = c.qf(e);
            return !g && e.alternateUrl
              ? c.tb(e.alternateUrl + "?key=" + a, b, d).then(c.qf.bind(c))
              : g;
          })
          .catch(function (a) {
            Fg(c, "$ERROR", 3e4);
            a && a.response
              ? a.response.json().then(function (a) {
                  E().error("GoogleCidApi", JSON.stringify(a));
                })
              : E().error("GoogleCidApi", a);
            return null;
          });
      }));
    };
    Eg.prototype.tb = function (a, b, c) {
      b = K({ originScope: b, canonicalOrigin: this.rd });
      c && (b.securityToken = c);
      return this.O.timeoutPromise(
        3e4,
        S(this.w, "xhr")
          .fetchJson(a, {
            method: "POST",
            ampCors: !1,
            credentials: "include",
            mode: "cors",
            body: b,
          })
          .then(function (a) {
            return a.json();
          })
      );
    };
    Eg.prototype.qf = function (a) {
      if (a.optOut) return Fg(this, "$OPT_OUT", 31536e6), "$OPT_OUT";
      if (a.clientId) return Fg(this, a.securityToken, 31536e6), a.clientId;
      if (a.alternateUrl) return null;
      Fg(this, "$NOT_FOUND", 36e5);
      return null;
    };
    function Fg(a, b, c) {
      if (b) {
        var d = a.w;
        a = a.w.Date.now() + c;
        Cg(d, "AMP_TOKEN", b, a);
      }
    }
    function Gg(a) {
      this.B = a;
      this.j = V(this.B);
      this.ke = null;
      this.O = U(this.B.win);
    }
    Gg.prototype.isSupported = function () {
      return this.j.isCctEmbedded() && this.j.isProxyOrigin();
    };
    Gg.prototype.getScopedCid = function (a) {
      var b = this;
      if (!this.j.isCctEmbedded()) return Promise.resolve(null);
      this.ke ||
        (this.ke = this.tb(
          "https://ampcid.google.com/v1/cache:getClientId?key=AIzaSyDKtqGxnoeIqVM33Uf7hRSa3GJxuzR7mLc"
        ));
      return this.ke.then(function (c) {
        return c ? Hg(b, c, a) : null;
      });
    };
    Gg.prototype.tb = function (a, b) {
      var c = this;
      b = void 0 === b ? !0 : b;
      var d = K({ publisherOrigin: Kc(this.B.win.location) });
      return this.O.timeoutPromise(
        3e4,
        S(this.B.win, "xhr").fetchJson(a, {
          method: "POST",
          ampCors: !1,
          credentials: "include",
          mode: "cors",
          body: d,
        }),
        "fetchCidTimeout"
      )
        .then(function (a) {
          return a.json().then(function (a) {
            if (a.optOut) return null;
            var d = a.publisherClientId;
            return !d && b && a.alternateUrl
              ? c.tb(
                  a.alternateUrl +
                    "?key=AIzaSyDKtqGxnoeIqVM33Uf7hRSa3GJxuzR7mLc",
                  !1
                )
              : d;
          });
        })
        .catch(function (a) {
          a && a.response
            ? a.response.json().then(function (a) {
                E().error("CacheCidApi", JSON.stringify(a));
              })
            : a && "fetchCidTimeout" == a.message
            ? E().expectedError("CacheCidApi", a)
            : E().error("CacheCidApi", a);
          return null;
        });
    };
    function Hg(a, b, c) {
      b = b + ";" + c;
      return S(a.B.win, "crypto")
        .sha384Base64(b)
        .then(function (a) {
          return "amp-" + a;
        });
    }
    function Ig(a) {
      this.B = a;
      this.j = V(this.B);
      this.rd = (a = rd(this.B).canonicalUrl) ? N(a).origin : null;
    }
    Ig.prototype.isSupported = function () {
      return this.j.hasCapability("cid")
        ? this.j.isTrustedViewer()
        : Promise.resolve(!1);
    };
    Ig.prototype.getScopedCid = function (a, b) {
      b = K({ scope: b, clientIdApi: !!a, canonicalOrigin: this.rd });
      a && (b.apiKey = a);
      return this.j.sendMessageAwaitResponse("cid", b);
    };
    var Jg = { "+": "-", "/": "_", "=": "." };
    function Kg(a) {
      a = Wb(a);
      return btoa(a).replace(/[+/=]/g, function (a) {
        return Jg[a];
      });
    }
    var Lg = /^[a-zA-Z0-9-_.]+$/,
      Mg = { googleanalytics: "AMP_ECID_GOOGLE" },
      Ng = { googleanalytics: "AIzaSyA65lEHUEizIsNtlbNo-l2K18dT680nsaM" };
    function Og(a) {
      this.ampdoc = a;
      this.hd = null;
      this.Ad = Object.create(null);
      this.Ve = new Gg(a);
      this.ng = new Ig(a);
      this.Dg = new Eg(a);
      this.gd = null;
    }
    Og.prototype.get = function (a, b, c) {
      var d = this;
      F(
        Lg.test(a.scope) && Lg.test(a.cookieName),
        "The CID scope and cookie name must only use the characters [a-zA-Z0-9-_.]+\nInstead found: %s",
        a.scope
      );
      return b
        .then(function () {
          return d.ampdoc.whenFirstVisible();
        })
        .then(function () {
          return Pg(d.ampdoc);
        })
        .then(function (e) {
          if (e) return "";
          var g = Qg(d, a, c || b);
          return U(d.ampdoc.win)
            .timeoutPromise(
              1e4,
              g,
              'Getting cid for "' + a.scope + '" timed out'
            )
            .catch(function (a) {
              ib(a);
            });
        });
    };
    Og.prototype.optOut = function () {
      return Rg(this.ampdoc);
    };
    function Qg(a, b, c) {
      var d = b.scope,
        e = N(a.ampdoc.win.location.href);
      if (!O(e)) {
        var g = Sg(a, d);
        return g
          ? a.Dg.getScopedCid(g, d).then(function (e) {
              return "$OPT_OUT" == e
                ? null
                : e
                ? (Tg(a.ampdoc.win, b.cookieName || d, e), e)
                : Ug(a, b, c);
            })
          : Ug(a, b, c);
      }
      return a.ng.isSupported().then(function (b) {
        if (b) {
          var g = Sg(a, d);
          return a.ng.getScopedCid(g, d);
        }
        return a.Ve.isSupported() && Sg(a, d)
          ? a.Ve.getScopedCid(d).then(function (b) {
              return b ? b : Wg(a, c, d, e);
            })
          : Wg(a, c, d, e);
      });
    }
    function Wg(a, b, c, d) {
      return Xg(a, b).then(function (b) {
        return S(a.ampdoc.win, "crypto").sha384Base64(b + Yg(d) + c);
      });
    }
    function Sg(a, b) {
      a.gd || (a.gd = Zg(a));
      return a.gd[b];
    }
    function Zg(a) {
      var b = {},
        c = a.ampdoc.getMetaByName("amp-google-client-id-api");
      c &&
        c.split(",").forEach(function (a) {
          a = a.trim();
          if (0 < a.indexOf("=")) {
            var c = a.split("=");
            a = c[0].trim();
            b[a] = c[1].trim();
          } else {
            var d = a;
            (a = Mg[d])
              ? (b[a] = Ng[d])
              : D().warn(
                  "CID",
                  "Unsupported client for Google CID API: " +
                    d +
                    '.Please remove or correct meta[name="amp-google-client-id-api"]'
                );
          }
        });
      return b;
    }
    function Rg(a) {
      V(a).sendMessage("cidOptOut", {});
      return gd(Yc(a), "storage").then(function (a) {
        return a.set("amp-cid-optout", !0);
      });
    }
    function Pg(a) {
      return gd(Yc(a), "storage")
        .then(function (a) {
          return a.get("amp-cid-optout").then(function (a) {
            return !!a;
          });
        })
        .catch(function () {
          return !1;
        });
    }
    function Tg(a, b, c) {
      var d = Date.now() + 31536e6;
      Cg(a, b, c, d);
    }
    function Ug(a, b, c) {
      var d = a.ampdoc.win,
        e = b.scope,
        g = b.cookieName || e,
        h = Ag(d, g);
      if (!h && !b.createCookieIfNotPresent) return Promise.resolve(null);
      if (h) return /^amp-/.test(h) && Tg(d, g, h), Promise.resolve(h);
      if (a.Ad[e]) return a.Ad[e];
      var k = $g(d).then(function (a) {
        return "amp-" + a;
      });
      Promise.all([k, c]).then(function (a) {
        var b = a[0];
        Ag(d, g) || Tg(d, g, b);
      });
      return (a.Ad[e] = k);
    }
    function Yg(a) {
      F(O(a), "Expected proxy origin %s", a.origin);
      return Kc(a);
    }
    function Xg(a, b) {
      if (a.hd) return a.hd;
      var c = a.ampdoc.win;
      return (a.hd = ah(a.ampdoc).then(function (d) {
        var e = !1;
        if (d && !bh(d)) {
          var g = Promise.resolve(d.cid);
          ch(d) && (e = !0);
        } else (g = S(c, "crypto").sha384Base64(dh(c))), (e = !0);
        e &&
          g.then(function (c) {
            eh(a.ampdoc, b, c);
          });
        return g;
      }));
    }
    function eh(a, b, c) {
      var d = a.win;
      Qb(d)
        ? fh(a, gh(c))
        : b.then(function () {
            try {
              d.localStorage.setItem("amp-cid", gh(c));
            } catch (e) {}
          });
    }
    function fh(a, b) {
      var c = V(a);
      return c.isTrustedViewer().then(function (a) {
        if (a)
          return (
            E().expectedError("CID", "Viewer does not provide cap=cid"),
            c.sendMessageAwaitResponse("cid", b).then(function (a) {
              var b;
              if ((b = a)) {
                try {
                  var c = Tb(a);
                } catch (k) {
                  c = null;
                }
                b = !c;
              }
              return b
                ? (E().expectedError("CID", "invalid cid format"),
                  JSON.stringify(K({ time: Date.now(), cid: a })))
                : a;
            })
          );
      });
    }
    function gh(a) {
      return JSON.stringify(K({ time: Date.now(), cid: a }));
    }
    function ah(a) {
      var b = a.win;
      try {
        var c = b.localStorage.getItem("amp-cid");
      } catch (e) {}
      var d = Promise.resolve(c);
      !c && Qb(b) && (d = fh(a));
      return d.then(function (a) {
        if (!a) return null;
        a = Tb(a);
        return { time: a.time, cid: a.cid };
      });
    }
    function bh(a) {
      var b = a.time,
        c = Date.now();
      return b + 31536e6 < c;
    }
    function ch(a) {
      a = a.time;
      var b = Date.now();
      return a + 864e5 < b;
    }
    function dh(a) {
      var b;
      if ((b = a.crypto || a.msCrypto) && b.getRandomValues) {
        var c = new Uint8Array(16);
        b.getRandomValues(c);
        b = c;
      } else b = null;
      return b
        ? b
        : String(
            a.location.href +
              Date.now() +
              a.Math.random() +
              a.screen.width +
              a.screen.height
          );
    }
    function $g(a) {
      var b = dh(a);
      return "string" == typeof b
        ? S(a, "crypto").sha384Base64(b)
        : nb(function () {
            return Kg(b).replace(/\.+$/, "");
          });
    }
    function hh(a) {
      this.w = a;
      var b = null,
        c = !1;
      a.crypto &&
        (a.crypto.subtle
          ? (b = a.crypto.subtle)
          : a.crypto.webkitSubtle && ((b = a.crypto.webkitSubtle), (c = !0)));
      this.pkcsAlgo = { name: "RSASSA-PKCS1-v1_5", hash: { name: "SHA-256" } };
      this.subtle = b;
      this.Zg = c;
      this.Kb = null;
    }
    f = hh.prototype;
    f.sha384 = function (a) {
      var b = this;
      "string" === typeof a && (a = Vb(a));
      if (!this.subtle || this.Kb)
        return (this.Kb || ih(this)).then(function (b) {
          return b(a);
        });
      try {
        return this.subtle.digest({ name: "SHA-384" }, a).then(
          function (a) {
            return new Uint8Array(a);
          },
          function (c) {
            c.message &&
              0 > c.message.indexOf("secure origin") &&
              D().error(
                "Crypto",
                "SubtleCrypto failed, fallback to closure lib.",
                c
              );
            return ih(b).then(function () {
              return b.sha384(a);
            });
          }
        );
      } catch (c) {
        return (
          E().error(
            "Crypto",
            "SubtleCrypto failed, fallback to closure lib.",
            c
          ),
          ih(this).then(function () {
            return b.sha384(a);
          })
        );
      }
    };
    f.sha384Base64 = function (a) {
      return this.sha384(a).then(function (a) {
        return Kg(a);
      });
    };
    f.uniform = function (a) {
      return this.sha384(a).then(function (a) {
        for (var b = 0, d = 2; 0 <= d; d--) b = (b + a[d]) / 256;
        return b;
      });
    };
    function ih(a) {
      return a.Kb
        ? a.Kb
        : (a.Kb = sd(a.w)
            .preloadExtension("amp-crypto-polyfill")
            .then(function () {
              return S(a.w, "crypto-polyfill");
            }));
    }
    f.isPkcsAvailable = function () {
      return !!this.subtle && !1 !== this.w.isSecureContext;
    };
    f.importPkcsKey = function (a) {
      this.isPkcsAvailable();
      var b = this.Zg ? Ub(JSON.stringify(a)) : a;
      return this.subtle.importKey("jwk", b, this.pkcsAlgo, !0, ["verify"]);
    };
    f.verifyPkcs = function (a, b, c) {
      this.isPkcsAvailable();
      return this.subtle.verify(this.pkcsAlgo, a, b, c);
    };
    var jh = ["prefetch", "preload", "preconnect", "dns-prefetch"];
    function kh(a) {
      this.B = a;
      this.ge = this.Id = null;
    }
    kh.prototype.get = function () {
      if (this.Id) return this.Id;
      var a = this.B,
        b = a.getUrl(),
        c = Jc(b),
        d = a.getRootNode();
      b = d && d.AMP && d.AMP.canonicalUrl;
      if (!b) {
        var e = d.querySelector("link[rel=canonical]");
        b = e ? N(e.href).href : c;
      }
      var g = String(Math.floor(1e4 * a.win.Math.random())),
        h = lh(a.win.document);
      d = mh(a.win.document);
      var k = nh(a);
      return (this.Id = {
        get sourceUrl() {
          return Jc(a.getUrl());
        },
        canonicalUrl: b,
        pageViewId: g,
        get pageViewId64() {
          this.ge || (this.ge = $g(a.win));
          return this.ge;
        },
        linkRels: h,
        viewport: d,
        replaceParams: k,
      });
    };
    function lh(a) {
      var b = I();
      if (a.head) {
        a = a.head.querySelectorAll("link[rel]");
        for (var c = {}, d = 0; d < a.length; c = { jb: c.jb }, d++) {
          var e = a[d];
          c.jb = e.href;
          var g = e.getAttribute("rel");
          g &&
            c.jb &&
            g.split(/\s+/).forEach(
              (function (a) {
                return function (c) {
                  if (-1 == jh.indexOf(c)) {
                    var d = b[c];
                    d
                      ? (z(d) || (d = b[c] = [d]), d.push(a.jb))
                      : (b[c] = a.jb);
                  }
                };
              })(c)
            );
        }
      }
      return b;
    }
    function mh(a) {
      var b = a.head.querySelector('meta[name="viewport"]');
      return b ? b.getAttribute("content") : null;
    }
    function nh(a) {
      var b;
      (b = !a.isSingleDoc()) ||
        ((b = a.win.location.href),
        "string" == typeof b && (b = N(b)),
        (b = "a" != (O(b) ? b.pathname.split("/", 2)[1] : null)));
      if (b) return null;
      a = N(a.win.location.href);
      var c = v(a.search).amp_r;
      return void 0 === c ? null : v(c);
    }
    var oh = null,
      ph = ["gclid", "gclsrc"],
      qh = [/^t.co$/];
    function rh() {
      return F(oh, "E#19457 trackImpressionPromise");
    }
    function sh() {
      var a = self,
        b = new L(),
        c = b.promise,
        d = b.resolve;
      oh = U(a)
        .timeoutPromise(8e3, c, "TrackImpressionPromise timeout")
        .catch(function (a) {
          E().warn("IMPRESSION", a);
        });
      b = V(a.document.documentElement);
      var e = b.isTrustedViewer(),
        g = b.getReferrerUrl().then(function (a) {
          return th(a);
        });
      Promise.all([e, g]).then(function (b) {
        var c = b[1];
        if (b[0] || c || P(a, "alp")) {
          var e = uh(a),
            g = vh(a);
          Promise.all([e, g]).then(
            function () {
              d();
            },
            function () {}
          );
        } else d();
      });
    }
    function uh(a) {
      var b = V(a.document.documentElement);
      return b.getParam("replaceUrl")
        ? b.hasCapability("replaceUrl")
          ? b.sendMessageAwaitResponse("getReplaceUrl", void 0).then(
              function (a) {
                a && "object" == typeof a
                  ? b.replaceUrl(a.replaceUrl || null)
                  : E().warn("IMPRESSION", "get invalid replaceUrl response");
              },
              function (a) {
                E().warn(
                  "IMPRESSION",
                  "Error request replaceUrl from viewer",
                  a
                );
              }
            )
          : (b.replaceUrl(b.getParam("replaceUrl") || null), q())
        : q();
    }
    function th(a) {
      var b = N(a);
      return "https:" != b.protocol
        ? !1
        : qh.some(function (a) {
            return a.test(b.hostname);
          });
    }
    function vh(a) {
      var b = Xc(a.document.documentElement),
        c = V(b).getParam("click");
      if (!c) return q();
      if (0 != c.indexOf("https://"))
        return (
          D().warn(
            "IMPRESSION",
            "click fragment param should start with https://. Found ",
            c
          ),
          q()
        );
      a.location.hash && (a.location.hash = "");
      return b
        .whenFirstVisible()
        .then(function () {
          return wh(a, c);
        })
        .then(function (b) {
          if (b) {
            var c = b.location;
            (b = b.tracking_url || c) && !O(b) && (new Image().src = b);
            if (c && a.history.replaceState) {
              b = V(a.document.documentElement);
              var d = a.location.href;
              c = N(c);
              c = v(c.search);
              c = Bc(d, c);
              a.history.replaceState(null, "", c);
              b.maybeUpdateFragmentForCct();
            }
          }
        })
        .catch(function (a) {
          D().warn("IMPRESSION", "Error on request clickUrl: ", a);
        });
    }
    function wh(a, b) {
      return S(a, "xhr")
        .fetchJson(b, { credentials: "include" })
        .then(function (a) {
          return 204 == a.status ? null : a.json();
        });
    }
    function xh(a) {
      return a.whenReady().then(function () {
        return !!a
          .getBody()
          .querySelector("amp-analytics[type=googleanalytics]");
      });
    }
    function yh() {
      this.D = [];
    }
    yh.prototype.peek = function () {
      var a = this.D.length;
      return a ? this.D[a - 1].item : null;
    };
    yh.prototype.enqueue = function (a, b) {
      if (isNaN(b)) throw Error("Priority must not be NaN.");
      for (var c = -1, d = 0, e = this.D.length; d <= e; ) {
        c = Math.floor((d + e) / 2);
        if (c === this.D.length) break;
        if (this.D[c].priority < b) d = c + 1;
        else if (0 < c && this.D[c - 1].priority >= b) e = c - 1;
        else break;
      }
      this.D.splice(c, 0, { item: a, priority: b });
    };
    yh.prototype.forEach = function (a) {
      for (var b = this.D.length; b--; ) a(this.D[b].item);
    };
    yh.prototype.dequeue = function () {
      return this.D.length ? this.D.pop().item : null;
    };
    ca.Object.defineProperties(yh.prototype, {
      length: {
        configurable: !0,
        enumerable: !0,
        get: function () {
          return this.D.length;
        },
      },
    });
    var zh = ["_top", "_blank"];
    function Ah(a, b) {
      var c = this;
      this.ampdoc = a;
      this.la = b || a.getRootNode();
      this.H = wd(this.ampdoc);
      this.j = V(this.ampdoc);
      this.N = bd(this.ampdoc, "history");
      this.qa = T(this.ampdoc.win);
      this.Yg = this.qa.isIos() && this.qa.isSafari();
      this.Ab = Qb(this.ampdoc.win) && this.j.isOvertakeHistory();
      this.Md =
        this.la != this.ampdoc.getRootNode() || !!this.ampdoc.getParent();
      this.Xg = "inabox" == y(this.ampdoc.win).runtime;
      this.Wf =
        this.la.nodeType == Node.DOCUMENT_NODE
          ? this.la.documentElement
          : this.la;
      this.nb = this.Rg.bind(this);
      this.la.addEventListener("click", this.nb);
      this.la.addEventListener("contextmenu", this.nb);
      this.Fe = !1;
      xh(this.ampdoc).then(function (a) {
        c.Fe = a;
      });
      this.xf = this.Wa = !1;
      Promise.all([this.j.isTrustedViewer(), this.j.getViewerOrigin()]).then(
        function (a) {
          c.Wa = a[0];
          a = a[1];
          "string" == typeof a && (a = N(a));
          a = B.localhostRegex.test(a.origin);
          c.xf = a;
        }
      );
      this.bd = null;
      this.Ee = new yh();
      this.Jf = new yh();
    }
    Ah.installInEmbedWindow = function (a, b) {
      Zc(a, "navigation", new Ah(b, a.document));
    };
    f = Ah.prototype;
    f.cleanup = function () {
      this.nb &&
        (this.la.removeEventListener("click", this.nb),
        this.la.removeEventListener("contextmenu", this.nb));
    };
    f.openWindow = function (a, b, c, d) {
      var e = "";
      (!this.qa.isIos() && this.qa.isChrome()) || d || (e += "noopener");
      var g = Ob(a, b, c, e);
      g && !d && (g.opener = null);
    };
    f.navigateTo = function (a, b, c, d) {
      var e = void 0 === d ? {} : d;
      d = void 0 === e.target ? "_top" : e.target;
      e = void 0 === e.opener ? !1 : e.opener;
      b = Bh(this, b);
      var g = Tc(this.Wf, "url");
      if (g.isProtocolValid(b))
        if (
          (F(zh.includes(d), "Target '" + d + "' not supported."),
          (b = g.getSourceUrl(b)),
          "_blank" == d)
        )
          this.openWindow(a, b, d, e);
        else {
          if (
            c &&
            (this.bd || (this.bd = Ch(this)),
            this.bd.includes(c) && this.navigateToAmpUrl(b, c))
          )
            return;
          a.top.location.href = b;
        }
      else D().error("navigation", "Cannot navigate to invalid protocol: " + b);
    };
    f.navigateToAmpUrl = function (a, b) {
      return this.j.hasCapability("a2a")
        ? (this.j.sendMessage("a2aNavigate", K({ url: a, requestedBy: b })), !0)
        : !1;
    };
    function Ch(a) {
      return (a = a.la.querySelector('meta[name="amp-to-amp-navigation"]')) &&
        a.hasAttribute("content")
        ? a
            .getAttribute("content")
            .split(",")
            .map(function (a) {
              return a.trim();
            })
        : [];
    }
    f.Rg = function (a) {
      if (!a.defaultPrevented) {
        var b = Fb(a.__AMP_CUSTOM_LINKER_TARGET__ || a.target, "A");
        if (b && b.href)
          if ("click" == a.type) {
            Dh(this, b);
            var c = Eh(this, b.href),
              d;
            if ((d = !Fh(this, a, b, c))) {
              if (this.Ab) {
                d = b.ownerDocument.defaultView;
                var e = b.href,
                  g = c.protocol;
                "ftp:" == g
                  ? (Ob(d, e, "_blank"), a.preventDefault(), (d = !0))
                  : ((g = /^(https?|mailto):$/.test(g)),
                    this.Yg && !g
                      ? (Ob(d, e, "_top"), a.preventDefault(), (d = !0))
                      : (d = !1));
              } else d = !1;
              d = !d;
            }
            if (d)
              if (
                ((d = Eh(this, "")),
                Gh(c) != Gh(d) && (Hh(this, b, a), (c = Eh(this, b.href))),
                (e = c),
                (c = Gh(e)),
                (g = Gh(d)),
                e.hash && c == g)
              )
                Ih(this, a, e, d);
              else {
                e = (b.getAttribute("target") || "").toLowerCase();
                (this.Md || this.Xg) &&
                  "_top" != e &&
                  "_blank" != e &&
                  ((e = "_blank"), b.setAttribute("target", e));
                g = this.ampdoc.win;
                var h = T(g);
                b = V(b);
                d.search &&
                  h.isSafari() &&
                  13 <= h.getMajorVersion() &&
                  b.isProxyOrigin() &&
                  b.isEmbedded() &&
                  Jh(g, d, e);
                this.viewerInterceptsNavigation(c, "intercept_click") &&
                  a.preventDefault();
              }
          } else "contextmenu" == a.type && (Dh(this, b), Hh(this, b, a));
      }
    };
    function Hh(a, b, c) {
      a.Ee.forEach(function (a) {
        a(b, c);
      });
    }
    function Bh(a, b) {
      a.Jf.forEach(function (a) {
        b = a(b);
      });
      return b;
    }
    function Dh(a, b) {
      var c = null;
      if (a.Fe && !a.Md) {
        a = N(a.ampdoc.win.location.href);
        var d = v(a.search);
        a = [];
        for (var e = 0; e < ph.length; e++) {
          var g = ph[e];
          "undefined" !== typeof d[g] && a.push(g);
        }
        d = b.getAttribute("data-amp-addparams");
        e = b.href;
        d && (e = Bc(e, v(d)));
        d = N(e);
        d = v(d.search);
        for (e = a.length - 1; 0 <= e; e--)
          "undefined" !== typeof d[a[e]] && a.splice(e, 1);
        d = "";
        for (e = 0; e < a.length; e++)
          (g = a[e]),
            (d +=
              0 == e
                ? g + "=QUERY_PARAM(" + g + ")"
                : "&" + g + "=QUERY_PARAM(" + g + ")");
        c = d;
      }
      Tc(b, "url-replace").maybeExpandLink(b, c);
    }
    function Fh(a, b, c, d) {
      return c.hasAttribute("rel") &&
        c
          .getAttribute("rel")
          .split(" ")
          .map(function (a) {
            return a.trim();
          })
          .includes("amphtml")
        ? a.navigateToAmpUrl(d.href, "<a rel=amphtml>")
          ? (b.preventDefault(), !0)
          : !1
        : !1;
    }
    function Jh(a, b, c) {
      function d() {
        var b = a.location.href;
        b == g
          ? (E().info(
              "navigation",
              "Restored iframe URL with query string:",
              e
            ),
            a.history.replaceState(null, "", e))
          : E().error("navigation", "Unexpected iframe URL change:", b, g);
      }
      E().info(
        "navigation",
        "Removing iframe query string before navigation:",
        b.search
      );
      var e = b.href,
        g = "" + b.origin + b.pathname + b.hash;
      a.history.replaceState(null, "", g);
      "_blank" === c
        ? a.setTimeout(d, 0)
        : a.addEventListener("pageshow", function l(b) {
            b.persisted && (d(), a.removeEventListener("pageshow", l));
          });
    }
    function Ih(a, b, c, d) {
      if (T(a.ampdoc.win).isIe()) {
        var e = c.hash.substring(1),
          g = a.ampdoc.getElementById(e);
        g &&
          (/^(?:a|select|input|button|textarea)$/i.test(g.tagName) ||
            (g.tabIndex = -1),
          Pb(g));
      }
      b.preventDefault();
      if (!a.Md) {
        var h = c.hash.slice(1),
          k = null;
        if (h) {
          var l = String(h).replace(ob, pb);
          k =
            a.la.getElementById(h) || a.la.querySelector('a[name="' + l + '"]');
        }
        c.hash != d.hash
          ? a.N.replaceStateForTarget(c.hash).then(function () {
              Kh(a, k, h);
            })
          : Kh(a, k, h);
      }
    }
    f.registerAnchorMutator = function (a, b) {
      this.Ee.enqueue(a, b);
    };
    f.registerNavigateToMutator = function (a, b) {
      this.Jf.enqueue(a, b);
    };
    function Kh(a, b, c) {
      b
        ? (a.H.scrollIntoView(b),
          U(a.ampdoc.win).delay(function () {
            return a.H.scrollIntoView(b);
          }, 1))
        : E().warn(
            "navigation",
            "failed to find element with id=" + c + " or a[name=" + c + "]"
          );
    }
    function Eh(a, b) {
      return Tc(a.Wf, "url").parse(b);
    }
    f.viewerInterceptsNavigation = function (a, b) {
      var c = this.j.hasCapability("interceptNavigation"),
        d = this.ampdoc
          .getRootNode()
          .documentElement.hasAttribute("allow-navigation-interception");
      if (!c || !d || (!this.Wa && !this.xf)) return !1;
      this.j.sendMessage("navigateTo", K({ url: a, requestedBy: b }));
      return !0;
    };
    function Gh(a) {
      return "" + a.origin + a.pathname + a.search;
    }
    function Lh(a) {
      pd(a).then(function (b) {
        b && a.getRootNode().addEventListener("submit", Mh, !0);
      });
    }
    function Mh(a) {
      if (!a.defaultPrevented) {
        var b = a.target;
        if (b && "FORM" == b.tagName) {
          (b.classList.contains("i-amphtml-form")
            ? b.hasAttribute("amp-novalidate")
            : b.hasAttribute("novalidate")) ||
            !b.checkValidity ||
            b.checkValidity() ||
            a.preventDefault();
          for (var c = b.elements, d = 0; d < c.length; d++)
            F(
              !c[d].name || "__amp_source_origin" != c[d].name,
              "Illegal input name, %s found: %s",
              "__amp_source_origin",
              c[d]
            );
          c = b.getAttribute("action");
          var e = b.getAttribute("action-xhr");
          d = (b.getAttribute("method") || "GET").toUpperCase();
          e &&
            (Ec(e, b, "action-xhr"),
            F(!O(e), "form action-xhr should not be on AMP CDN: %s", b),
            Mc(e));
          c &&
            (Ec(c, b, "action"),
            F(!O(c), "form action should not be on AMP CDN: %s", b),
            Mc(c));
          "GET" == d
            ? F(
                e || c,
                "form action-xhr or action attribute is required for method=GET: %s",
                b
              )
            : "POST" == d &&
              (c &&
                D().error(
                  "form",
                  "action attribute is invalid for method=POST: %s",
                  b
                ),
              e ||
                (a.preventDefault(),
                F(
                  !1,
                  "Only XHR based (via action-xhr attribute) submissions are support for POST requests. %s",
                  b
                )));
          (c = b.getAttribute("target"))
            ? F(
                "_blank" == c || "_top" == c,
                "form target=%s is invalid can only be _blank or _top: %s",
                c,
                b
              )
            : b.setAttribute("target", "_top");
          e &&
            (a.preventDefault(),
            a.stopImmediatePropagation(),
            Tc(b, "action").execute(b, "submit", null, b, b, a, 3));
        }
      }
    }
    function Y() {
      this.Z = null;
    }
    f = Y.prototype;
    f.add = function (a) {
      var b = this;
      this.Z || (this.Z = []);
      this.Z.push(a);
      return function () {
        b.remove(a);
      };
    };
    f.remove = function (a) {
      this.Z && ((a = this.Z.indexOf(a)), -1 < a && this.Z.splice(a, 1));
    };
    f.removeAll = function () {
      this.Z && (this.Z.length = 0);
    };
    f.fire = function (a) {
      if (this.Z) for (var b = this.Z, c = 0; c < b.length; c++) (0, b[c])(a);
    };
    f.getHandlerCount = function () {
      return this.Z ? this.Z.length : 0;
    };
    var Nh = { attributes: !0, attributeFilter: ["hidden"], subtree: !0 };
    function Oh(a, b) {
      this.T = b || a.getRootNode();
      this.w = (this.T.ownerDocument || this.T).defaultView;
      this.cb = this.ja = null;
    }
    Oh.installInEmbedWindow = function (a, b) {
      Zc(a, "hidden-observer", new Oh(b, a.document));
    };
    Oh.prototype.add = function (a) {
      var b = this;
      Ph(this);
      var c = this.cb.add(a);
      return function () {
        c();
        0 === b.cb.getHandlerCount() && b.dispose();
      };
    };
    function Ph(a) {
      if (!a.ja) {
        a.cb = new Y();
        var b = new a.w.MutationObserver(function (b) {
          b && a.cb.fire(b);
        });
        a.ja = b;
        b.observe(a.T, Nh);
      }
    }
    Oh.prototype.dispose = function () {
      this.ja &&
        (this.ja.disconnect(), this.cb.removeAll(), (this.cb = this.ja = null));
    };
    function Qh(a) {
      try {
        return a.state;
      } catch (b) {
        return null;
      }
    }
    function Rh(a, b) {
      this.B = a;
      this.O = U(a.win);
      this.o = b;
      this.A = 0;
      this.Oa = [];
      this.D = [];
      this.o.setOnStateUpdated(this.ba.bind(this));
    }
    f = Rh.prototype;
    f.cleanup = function () {
      this.o.cleanup();
    };
    f.push = function (a, b) {
      var c = this;
      return Sh(
        this,
        function () {
          return c.o.push(b).then(function (b) {
            c.ba(b);
            a && (c.Oa[b.stackIndex] = a);
            return b.stackIndex;
          });
        },
        "push"
      );
    };
    f.pop = function (a) {
      var b = this;
      return Sh(
        this,
        function () {
          return b.o.pop(a).then(function (a) {
            b.ba(a);
          });
        },
        "pop"
      );
    };
    f.replace = function (a) {
      var b = this;
      return Sh(
        this,
        function () {
          return b.o.replace(a);
        },
        "replace"
      );
    };
    f.get = function () {
      var a = this;
      return Sh(
        this,
        function () {
          return a.o.get();
        },
        "get"
      );
    };
    f.goBack = function (a) {
      var b = this;
      return Sh(
        this,
        function () {
          return 0 >= b.A && !a
            ? q()
            : b.o.pop(b.A).then(function (a) {
                b.ba(a);
              });
        },
        "goBack"
      );
    };
    f.replaceStateForTarget = function (a) {
      var b = this,
        c = this.B.win.location.hash;
      return this.push(function () {
        b.B.win.location.replace(c || "#");
      }).then(function () {
        b.o.replaceStateForTarget(a);
      });
    };
    f.getFragment = function () {
      return this.o.getFragment();
    };
    f.updateFragment = function (a) {
      "#" == a[0] && (a = a.substr(1));
      return this.o.updateFragment(a);
    };
    f.ba = function (a) {
      this.A = a.stackIndex;
      Th(this, a);
    };
    function Th(a, b) {
      if (!(a.A >= a.Oa.length - 1)) {
        for (var c = [], d = a.Oa.length - 1; d > a.A; d--)
          a.Oa[d] && (c.push(a.Oa[d]), (a.Oa[d] = void 0));
        a.Oa.splice(a.A + 1);
        if (0 < c.length)
          for (d = { kb: 0 }; d.kb < c.length; d = { kb: d.kb }, d.kb++)
            a.O.delay(
              (function (a) {
                return function () {
                  return c[a.kb](b);
                };
              })(d),
              1
            );
      }
    }
    function Sh(a, b, c) {
      var d = new L(),
        e = d.promise;
      a.D.push({
        callback: b,
        resolve: d.resolve,
        reject: d.reject,
        trace: Error("history trace for " + c + ": "),
      });
      1 == a.D.length && Uh(a);
      return e;
    }
    function Uh(a) {
      if (0 != a.D.length) {
        var b = a.D[0];
        try {
          var c = b.callback();
        } catch (d) {
          c = Promise.reject(d);
        }
        c.then(
          function (a) {
            b.resolve(a);
          },
          function (a) {
            E().error("History", "failed to execute a task:", a);
            b.trace && ((b.trace.message += a), E().error("History", b.trace));
            b.reject(a);
          }
        ).then(function () {
          a.D.splice(0, 1);
          Uh(a);
        });
      }
    }
    function Vh(a) {
      var b = this;
      this.win = a;
      this.O = U(a);
      a = this.win.history;
      this.Pa = a.length - 1;
      var c = Qh(a);
      c &&
        void 0 !== c["AMP.History"] &&
        (this.Pa = Math.min(c["AMP.History"], this.Pa));
      this.A = this.Pa;
      this.ba = null;
      this.Nh = "state" in a;
      this.hb = Wh(this, this.A);
      if (a.pushState && a.replaceState) {
        this.yc = a.originalPushState || a.pushState.bind(a);
        this.Hb = a.originalReplaceState || a.replaceState.bind(a);
        var d = function (a, c, d) {
          b.hb = a;
          b.yc(a, c, d || null);
        };
        var e = function (a, c, d) {
          b.hb = a;
          void 0 !== d ? b.Hb(a, c, d) : b.Hb(a, c);
        };
        a.originalPushState || (a.originalPushState = this.yc);
        a.originalReplaceState || (a.originalReplaceState = this.Hb);
      } else
        (d = function (a) {
          b.hb = a;
        }),
          (e = function (a) {
            b.hb = a;
          });
      this.vh = d;
      this.Jc = e;
      try {
        this.Jc(Wh(this, this.A, !0));
      } catch (g) {
        E().error("History", "Initial replaceState failed: " + g.message);
      }
      a.pushState = this.tf.bind(this);
      a.replaceState = this.Gd.bind(this);
      this.Fc = function (a) {
        a = a.state;
        E().fine(
          "History",
          "popstate event: " + b.win.history.length + ", " + JSON.stringify(a)
        );
        a = Xh(b);
        E().fine(
          "History",
          "history event: " + b.win.history.length + ", " + JSON.stringify(a)
        );
        var c = a ? a["AMP.History"] : void 0,
          d = b.A,
          e = b.Zc;
        b.Zc = void 0;
        d > b.win.history.length - 2 &&
          ((d = b.win.history.length - 2), b.wa(Yh(a, { stackIndex: d })));
        d =
          void 0 == c
            ? d + 1
            : c < b.win.history.length
            ? c
            : b.win.history.length - 1;
        a || (a = {});
        a["AMP.History"] = d;
        b.Jc(a, void 0, void 0);
        d != b.A && b.wa(Yh(a, { stackIndex: d }));
        d < b.Pa && (b.Pa = d);
        e && e.resolve();
      };
      this.win.addEventListener("popstate", this.Fc);
    }
    f = Vh.prototype;
    f.cleanup = function () {
      this.yc && (this.win.history.pushState = this.yc);
      this.Hb && (this.win.history.replaceState = this.Hb);
      this.win.removeEventListener("popstate", this.Fc);
    };
    function Wh(a, b, c) {
      a = I(c ? Xh(a) : void 0);
      a["AMP.History"] = b;
      return a;
    }
    f.setOnStateUpdated = function (a) {
      this.ba = a;
    };
    f.push = function (a) {
      var b = this;
      return Zh(this, function () {
        var c = Yh(Xh(b), a || {});
        b.tf(c, void 0, c.fragment ? "#" + c.fragment : void 0);
        return nb(function () {
          return Yh(c, { stackIndex: b.A });
        });
      });
    };
    f.pop = function (a) {
      var b = this;
      a = Math.max(a, this.Pa);
      return Zh(this, function () {
        return $h(b, b.A - a + 1);
      }).then(function (a) {
        return Yh(Xh(b), { stackIndex: a });
      });
    };
    f.replace = function (a) {
      var b = this;
      a = void 0 === a ? {} : a;
      return Zh(this, function () {
        var c = Yh(Xh(b), a || {}),
          d = (c.url || "").replace(/#.*/, ""),
          e = c.fragment ? "#" + c.fragment : "";
        b.Gd(c, c.title, d || e ? d + e : void 0);
        return nb(function () {
          return Yh(c, { stackIndex: b.A });
        });
      });
    };
    f.get = function () {
      var a = this;
      return nb(function () {
        return Yh(Xh(a), { stackIndex: a.A });
      });
    };
    f.backTo = function (a) {
      var b = this;
      a = Math.max(a, this.Pa);
      return Zh(this, function () {
        return $h(b, b.A - a);
      });
    };
    function Xh(a) {
      return a.Nh ? Qh(a.win.history) : a.hb;
    }
    function Zh(a, b) {
      return a.Zc ? a.Zc.promise.then(b, b) : b();
    }
    function ai(a) {
      var b = new L(),
        c = b.resolve,
        d = b.reject;
      b = a.O.timeoutPromise(500, b.promise);
      a.Zc = { promise: b, resolve: c, reject: d };
      return b;
    }
    function $h(a, b) {
      if (0 >= b) return Promise.resolve(a.A);
      a.hb = Wh(a, a.A - b);
      var c = ai(a);
      a.win.history.go(-b);
      return c.then(function () {
        return Promise.resolve(a.A);
      });
    }
    f.tf = function (a, b, c) {
      a || (a = {});
      var d = this.A + 1;
      a["AMP.History"] = d;
      this.vh(a, b, c);
      d != this.win.history.length - 1 &&
        ((d = this.win.history.length - 1), (a["AMP.History"] = d), this.Jc(a));
      a = Yh(a, { stackIndex: d });
      this.wa(a);
    };
    f.replaceStateForTarget = function (a) {
      var b = this;
      Zh(this, function () {
        b.win.removeEventListener("popstate", b.Fc);
        try {
          b.win.location.replace(a);
        } finally {
          b.win.addEventListener("popstate", b.Fc);
        }
        b.Gd();
        return q();
      });
    };
    f.Gd = function (a, b, c) {
      a || (a = {});
      var d = Math.min(this.A, this.win.history.length - 1);
      a["AMP.History"] = d;
      this.Jc(a, b, c);
      a = Yh(a, { stackIndex: d });
      this.wa(a);
    };
    f.wa = function (a) {
      a.stackIndex = Math.min(a.stackIndex, this.win.history.length - 1);
      this.A != a.stackIndex &&
        (E().fine(
          "History",
          "stack index changed: " + this.A + " -> " + a.stackIndex
        ),
        (this.A = a.stackIndex),
        this.ba && this.ba(a));
    };
    f.getFragment = function () {
      var a = this.win.location.hash;
      a = a.substr(1);
      return Promise.resolve(a);
    };
    f.updateFragment = function (a) {
      return this.replace({ fragment: a });
    };
    function Yh(a, b) {
      var c = Object.assign({}, (a && a.data) || {}, b.data || {});
      return Object.assign({}, a || {}, b, { data: c });
    }
    function bi(a, b) {
      var c = this;
      this.win = a;
      this.j = b;
      this.A = 0;
      this.ba = null;
      this.Rh = this.j.onMessage("historyPopped", function (a) {
        void 0 !== a.newStackIndex && (a.stackIndex = a.newStackIndex);
        ci(a)
          ? c.wa(a)
          : E().warn("History", 'Ignored unexpected "historyPopped" data:', a);
      });
    }
    f = bi.prototype;
    f.replaceStateForTarget = function (a) {
      this.win.location.replace(a);
    };
    f.cleanup = function () {
      this.Rh();
    };
    f.setOnStateUpdated = function (a) {
      this.ba = a;
    };
    function di(a, b, c) {
      if (ci(a)) return a;
      E().warn("History", 'Ignored unexpected "%s" data:', c, a);
      return b;
    }
    function ci(a) {
      return !!a && void 0 !== a.stackIndex;
    }
    f.push = function (a) {
      var b = this,
        c = Object.assign({}, { stackIndex: this.A + 1 }, a || {});
      return this.j
        .sendMessageAwaitResponse("pushHistory", c)
        .then(function (a) {
          a = di(a, c, "pushHistory");
          b.wa(a);
          return a;
        });
    };
    f.pop = function (a) {
      var b = this;
      if (a > this.A) return this.get();
      a = K({ stackIndex: this.A });
      return this.j
        .sendMessageAwaitResponse("popHistory", a)
        .then(function (a) {
          var c = K({ stackIndex: b.A - 1 });
          a = di(a, c, "popHistory");
          b.wa(a);
          return a;
        });
    };
    f.replace = function (a) {
      var b = this;
      if (a && a.url) {
        if (!this.j.hasCapability("fullReplaceHistory")) {
          var c = K({ stackIndex: this.A });
          return Promise.resolve(c);
        }
        var d = a.url.replace(/#.*/, "");
        a.url = d;
      }
      var e = Object.assign({}, { stackIndex: this.A }, a || {});
      return this.j
        .sendMessageAwaitResponse("replaceHistory", e, !0)
        .then(function (a) {
          a = di(a, e, "replaceHistory");
          b.wa(a);
          return a;
        });
    };
    f.get = function () {
      return Promise.resolve({
        data: void 0,
        fragment: "",
        stackIndex: this.A,
        title: "",
      });
    };
    f.wa = function (a) {
      var b = a.stackIndex;
      this.A != b &&
        (E().fine("History", "stackIndex: " + this.A + " -> " + b),
        (this.A = b),
        this.ba && this.ba(a));
    };
    f.getFragment = function () {
      return this.j.hasCapability("fragment")
        ? this.j
            .sendMessageAwaitResponse("getFragment", void 0, !0)
            .then(function (a) {
              if (!a) return "";
              "#" == a[0] && (a = a.substr(1));
              return a;
            })
        : Promise.resolve("");
    };
    f.updateFragment = function (a) {
      return this.j.hasCapability("fragment")
        ? this.j.sendMessageAwaitResponse(
            "replaceHistory",
            K({ fragment: a }),
            !0
          )
        : q();
    };
    function ei(a) {
      var b = V(a);
      b.isOvertakeHistory() || a.win.__AMP_TEST_IFRAME
        ? (b = new bi(a.win, b))
        : (Q(a.win, "global-history-binding", Vh),
          (b = S(a.win, "global-history-binding")));
      return new Rh(a, b);
    }
    var fi = [];
    function gi(a) {
      Pe.call(this, a);
      fi.push(this);
    }
    m(gi, Pe);
    gi.prototype.getLayoutPriority = function () {
      return 0;
    };
    gi.prototype.isLayoutSupported = function () {
      return !0;
    };
    gi.prototype.reconstructWhenReparented = function () {
      return !1;
    };
    var hi = { 0: "cld", 2: "adld" };
    function ii(a, b) {
      this.w = a;
      this.Ec = ad(a);
      this.dc = this.cc = null;
      this.ef = !1;
      this.kc = hi[b];
    }
    ii.prototype.enterViewport = function () {
      this.kc && !this.cc && ((this.cc = this.w.Date.now()), ji(this));
    };
    ii.prototype.startLayout = function () {
      this.kc && !this.dc && ((this.dc = this.w.Date.now()), ji(this));
    };
    function ji(a) {
      if (a.Ec && a.Ec.isPerformanceTrackingOn() && !a.ef && a.cc && a.dc) {
        var b = a.w.Math.max(a.dc - a.cc, 0);
        a.kc && a.Ec.tickDelta(a.kc, b);
        a.Ec.throttledFlush();
        a.ef = !0;
      }
    }
    function ki(a, b, c) {
      b.__AMP__RESOURCE = this;
      this.Tg = a;
      this.element = b;
      this.debugid = b.tagName.toLowerCase() + "#" + a;
      this.hostWin = b.ownerDocument.defaultView;
      this.h = c;
      this.$g = b.hasAttribute("placeholder");
      this.yb = !1;
      this.eb = void 0;
      this.C = b.isBuilt() ? 1 : 0;
      0 == this.C && b.isBuilding() && this.build();
      this.je = -1;
      this.aa = 0;
      this.Bf = null;
      this.jc = !1;
      this.$ = fc(-1e4, -1e4, 0, 0);
      this.Jd = null;
      this.Qd = !1;
      this.Xa = this.ma = null;
      this.ie = void 0;
      this.Ef = !1;
      a = new L();
      this.eh = a.promise;
      this.Vd = a.resolve;
      this.Ja = c.isIntersectionExperimentOn();
      this.Lb = null;
    }
    function Z(a) {
      return a.__AMP__RESOURCE;
    }
    f = ki.prototype;
    f.getId = function () {
      return this.Tg;
    };
    f.updateOwner = function (a) {
      this.eb = a;
    };
    f.getOwner = function () {
      if (void 0 === this.eb) {
        for (var a = this.element; a; a = a.parentElement)
          if (a.__AMP__OWNER) {
            this.eb = a.__AMP__OWNER;
            break;
          }
        void 0 === this.eb && (this.eb = null);
      }
      return this.eb;
    };
    f.hasOwner = function () {
      return !!this.getOwner();
    };
    f.getLayoutPriority = function () {
      return -1 != this.je ? this.je : this.element.getLayoutPriority();
    };
    f.updateLayoutPriority = function (a) {
      this.je = a;
    };
    f.getState = function () {
      return this.C;
    };
    f.isBuilt = function () {
      return this.element.isBuilt();
    };
    f.isBuilding = function () {
      return this.yb;
    };
    f.whenBuilt = function () {
      return this.element.signals().whenSignal("res-built");
    };
    f.build = function () {
      var a = this;
      if (this.yb || !this.element.isUpgraded()) return null;
      this.yb = !0;
      return this.element.build().then(
        function () {
          a.yb = !1;
          a.Ja && a.hasBeenMeasured()
            ? ((a.C = 2), a.element.onMeasure(!0))
            : (a.C = 1);
          a.element.signals().signal("res-built");
        },
        function (b) {
          a.maybeReportErrorOnBuildFailure(b);
          a.yb = !1;
          a.element.signals().rejectSignal("res-built", b);
          throw b;
        }
      );
    };
    f.maybeReportErrorOnBuildFailure = function (a) {
      Cf(a) || E().error("Resource", "failed to build:", this.debugid, a);
    };
    f.applySizesAndMediaQuery = function () {
      this.element.applySizesAndMediaQuery();
    };
    f.changeSize = function (a, b, c) {
      this.element.applySize(a, b, c);
      this.requestMeasure();
    };
    f.overflowCallback = function (a, b, c, d) {
      a && (this.ie = { height: b, width: c, margins: d });
      this.element.overflowCallback(a, b, c, d);
    };
    f.resetPendingChangeSize = function () {
      this.ie = void 0;
    };
    f.getPendingChangeSize = function () {
      return this.ie;
    };
    f.getUpgradeDelayMs = function () {
      return this.element.getUpgradeDelayMs();
    };
    f.premeasure = function (a) {
      this.Lb = a;
    };
    f.measure = function (a) {
      a = void 0 === a ? !1 : a;
      if (
        !(
          this.$g &&
          this.element.parentElement &&
          M(this.element.parentElement.tagName, "AMP-")
        ) ||
        "__AMP__RESOURCE" in this.element.parentElement
      )
        if (
          this.element.ownerDocument &&
          this.element.ownerDocument.defaultView
        ) {
          this.Qd = !1;
          var b = this.$;
          a ? (li(this, this.Lb), (this.Lb = null)) : li(this);
          var c = this.$,
            d = !(b.width == c.width && b.height === c.height);
          (1 == this.C || b.top != c.top || d) &&
            this.element.isUpgraded() &&
            (1 == this.C
              ? (this.C = 2)
              : (4 != this.C && 5 != this.C) ||
                !this.element.isRelayoutNeeded() ||
                (this.C = 2));
          this.hasBeenMeasured() || (this.Jd = c);
          this.element.updateLayoutBox(c, d);
        } else this.C = 1;
    };
    function li(a, b) {
      var c = wd(a.element);
      a.$ = c.getLayoutRect(a.element, b);
      var d = !1;
      if (c.supportsPositionFixed() && a.isDisplayed())
        for (
          var e = a.h.getAmpdoc().win, g = e.document.body, h = a.element;
          h && h != g;
          h = h.offsetParent
        ) {
          if (h.isAlwaysFixed && h.isAlwaysFixed()) {
            d = !0;
            break;
          }
          if (
            c.isDeclaredFixed(h) &&
            "fixed" == (e.getComputedStyle(h) || I()).position
          ) {
            d = !0;
            break;
          }
        }
      if ((a.jc = d)) a.$ = ic(a.$, -c.getScrollLeft(), -c.getScrollTop());
    }
    f.completeCollapse = function () {
      qe(this.element, !1);
      this.$ = fc(this.$.left, this.$.top, 0, 0);
      this.jc = !1;
      this.element.updateLayoutBox(this.getLayoutBox());
      var a = this.getOwner();
      a && a.collapsedCallback(this.element);
    };
    f.completeExpand = function () {
      qe(this.element, !0);
      this.requestMeasure();
    };
    f.isMeasureRequested = function () {
      return this.Qd;
    };
    f.hasBeenMeasured = function () {
      return !!this.Jd;
    };
    f.hasBeenPremeasured = function () {
      return !!this.Lb;
    };
    f.requestMeasure = function () {
      this.Qd = !0;
    };
    f.getLayoutBox = function () {
      if (!this.jc) return this.$;
      var a = wd(this.element);
      return ic(this.$, a.getScrollLeft(), a.getScrollTop());
    };
    f.getPageLayoutBox = function () {
      return this.$;
    };
    f.getPageLayoutBoxAsync = function () {
      var a = this;
      return this.hasBeenMeasured()
        ? nb(function () {
            return a.getPageLayoutBox();
          })
        : vd(this.hostWin).measurePromise(function () {
            a.measure();
            return a.getPageLayoutBox();
          });
    };
    f.getInitialLayoutBox = function () {
      return this.Jd || this.$;
    };
    f.isDisplayed = function (a) {
      a = void 0 === a ? !1 : a;
      if (
        !this.element.ownerDocument ||
        !this.element.ownerDocument.defaultView
      )
        return !1;
      var b = "fluid" == this.element.getLayout(),
        c = a ? this.Lb : this.getLayoutBox(),
        d = 0 < c.height && 0 < c.width;
      return b || d;
    };
    f.isFixed = function () {
      return this.jc;
    };
    f.overlaps = function (a) {
      var b = this.getLayoutBox();
      return (
        b.top <= a.bottom &&
        a.top <= b.bottom &&
        b.left <= a.right &&
        a.left <= b.right
      );
    };
    f.prerenderAllowed = function () {
      return this.element.prerenderAllowed();
    };
    f.isBuildRenderBlocking = function () {
      return this.element.isBuildRenderBlocking();
    };
    f.whenWithinViewport = function (a) {
      if (!this.isLayoutPending() || !0 === a) return q();
      var b = String(a);
      if (this.ma && this.ma[b]) return this.ma[b].promise;
      if (this.isWithinViewportRatio(a)) return q();
      this.ma = this.ma || {};
      this.ma[b] = new L();
      return this.ma[b].promise;
    };
    function mi(a) {
      if (a.ma) {
        var b = a.getDistanceViewportRatio(),
          c;
        for (c in a.ma)
          a.isWithinViewportRatio(parseFloat(c), b) &&
            (a.ma[c].resolve(), delete a.ma[c]);
      }
    }
    f.getDistanceViewportRatio = function () {
      var a = wd(this.element).getRect(),
        b = this.getLayoutBox(),
        c = this.h.getScrollDirection(),
        d = 1,
        e = 0;
      if (a.right < b.left || a.left > b.right) return { distance: !1 };
      if (a.bottom < b.top) (e = b.top - a.bottom), -1 == c && (d = 2);
      else if (a.top > b.bottom) (e = a.top - b.bottom), 1 == c && (d = 2);
      else return { distance: !0 };
      return { distance: e, scrollPenalty: d, viewportHeight: a.height };
    };
    f.isWithinViewportRatio = function (a, b) {
      if ("boolean" === typeof a) return a;
      var c = b || this.getDistanceViewportRatio(),
        d = c.distance;
      return "boolean" == typeof d
        ? d
        : d < (c.viewportHeight * a) / c.scrollPenalty;
    };
    f.renderOutsideViewport = function () {
      mi(this);
      return (
        this.hasOwner() ||
        this.isWithinViewportRatio(this.element.renderOutsideViewport())
      );
    };
    f.idleRenderOutsideViewport = function () {
      return this.isWithinViewportRatio(
        this.element.idleRenderOutsideViewport()
      );
    };
    f.layoutScheduled = function (a) {
      this.C = 3;
      this.element.layoutScheduleTime = a;
    };
    f.layoutCanceled = function () {
      this.C = this.hasBeenMeasured() ? 2 : 1;
    };
    f.startLayout = function () {
      var a = this;
      if (this.Xa) return this.Xa;
      if (4 == this.C) return q();
      if (5 == this.C) return Promise.reject(this.Bf);
      this.isDisplayed();
      if (3 != this.C) {
        var b = E().createError(
          "startLayout called but not LAYOUT_SCHEDULED",
          "currently: ",
          this.C
        );
        b.associatedElement = this.element;
        Af(b);
        return Promise.reject(b);
      }
      if (0 < this.aa && !this.element.isRelayoutNeeded())
        return (
          E().fine(
            "Resource",
            "layout canceled since it wasn't requested:",
            this.debugid,
            this.C
          ),
          (this.C = 4),
          q()
        );
      E().fine("Resource", "start layout:", this.debugid, "count:", this.aa);
      this.aa++;
      this.C = 3;
      return (this.Xa = new Promise(function (b, d) {
        vd(a.hostWin).mutate(function () {
          try {
            b(a.element.layoutCallback());
          } catch (e) {
            d(e);
          }
        });
      }).then(
        function () {
          return ni(a, !0);
        },
        function (b) {
          return ni(a, !1, b);
        }
      ));
    };
    function ni(a, b, c) {
      a.Vd && (a.Vd(), (a.Vd = null));
      a.Xa = null;
      a.Ef = !0;
      a.C = b ? 4 : 5;
      a.Bf = c;
      if (b) E().fine("Resource", "layout complete:", a.debugid);
      else
        return (
          E().fine("Resource", "loading failed:", a.debugid, c),
          Promise.reject(c)
        );
    }
    f.isLayoutPending = function () {
      return 4 != this.C && 5 != this.C;
    };
    f.loadedOnce = function () {
      return this.eh;
    };
    f.hasLoadedOnce = function () {
      return this.Ef;
    };
    f.isInViewport = function () {
      var a = this.element.isInViewport();
      a && mi(this);
      return a;
    };
    f.setInViewport = function (a) {
      this.element.viewportCallback(a);
    };
    f.unlayout = function () {
      0 != this.C &&
        1 != this.C &&
        (this.setInViewport(!1),
        this.element.unlayoutCallback() &&
          (this.element.togglePlaceholder(!0),
          (this.C = this.Ja ? 2 : 1),
          (this.aa = 0),
          (this.Xa = null)));
    };
    f.getTaskId = function (a) {
      return this.debugid + "#" + a;
    };
    f.pause = function () {
      this.element.pauseCallback();
      this.element.unlayoutOnPause() && this.unlayout();
    };
    f.pauseOnRemove = function () {
      this.element.pauseCallback();
    };
    f.resume = function () {
      this.element.resumeCallback();
    };
    f.unload = function () {
      this.pause();
      this.unlayout();
    };
    f.disconnect = function () {
      delete this.element.__AMP__RESOURCE;
      this.element.disconnect(!0);
    };
    function oi() {
      this.Ba = I();
      this.da = null;
    }
    f = oi.prototype;
    f.get = function (a) {
      a = this.Ba[a];
      return null == a ? null : a;
    };
    f.whenSignal = function (a) {
      var b = this.da && this.da[a];
      if (!b) {
        var c = this.Ba[a];
        null != c
          ? (b = {
              promise:
                "number" == typeof c ? Promise.resolve(c) : Promise.reject(c),
            })
          : ((c = new L()),
            (b = { promise: c.promise, resolve: c.resolve, reject: c.reject }));
        this.da || (this.da = I());
        this.da[a] = b;
      }
      return b.promise;
    };
    f.signal = function (a, b) {
      if (null == this.Ba[a]) {
        var c = void 0 == b ? Date.now() : b;
        this.Ba[a] = c;
        (a = this.da && this.da[a]) &&
          a.resolve &&
          (a.resolve(c), (a.resolve = void 0), (a.reject = void 0));
      }
    };
    f.rejectSignal = function (a, b) {
      null == this.Ba[a] &&
        ((this.Ba[a] = b),
        (a = this.da && this.da[a]) &&
          a.reject &&
          (a.reject(b),
          a.promise.catch(function () {}),
          (a.resolve = void 0),
          (a.reject = void 0)));
    };
    f.reset = function (a) {
      this.Ba[a] && delete this.Ba[a];
      var b = this.da && this.da[a];
      b && !b.resolve && delete this.da[a];
    };
    function pi(a, b) {
      return sd(a.win)
        .installExtensionForDoc(a, "amp-loader")
        .then(function () {
          return jd(b, "loader", "amp-loader");
        });
    }
    function qi(a, b, c, d, e) {
      e = void 0 === e ? a.win.Date.now() : e;
      var g = b.ownerDocument.createElement("div");
      pi(a, b).then(function (h) {
        var k = a.win.Date.now() - e;
        h.initializeLoader(b, g, k, c, d);
      });
      return g;
    }
    var ri = Date.now();
    function si(a, b) {
      var c = a.split(",");
      F(0 < c.length, "sizes has to have at least one size");
      var d = [];
      c.forEach(function (a) {
        a = a.replace(/\s+/g, " ").trim();
        if (0 != a.length) {
          var c,
            e = !1;
          if (")" == a.charAt(a.length - 1)) {
            e = !0;
            var k = 1;
            for (c = a.length - 2; 0 <= c; c--) {
              var l = a.charAt(c);
              "(" == l ? k-- : ")" == l && k++;
              if (0 == k) break;
            }
            var n = c - 1;
            if (0 < c)
              for (
                c--;
                0 <= c &&
                ((l = a.charAt(c)),
                "%" == l ||
                  "-" == l ||
                  "_" == l ||
                  ("a" <= l && "z" >= l) ||
                  ("A" <= l && "Z" >= l) ||
                  ("0" <= l && "9" >= l));
                c--
              );
            F(c < n, 'Invalid CSS function in "%s"', a);
          } else
            for (
              c = a.length - 2;
              0 <= c &&
              ((l = a.charAt(c)),
              "%" == l ||
                "." == l ||
                ("a" <= l && "z" >= l) ||
                ("A" <= l && "Z" >= l) ||
                ("0" <= l && "9" >= l));
              c--
            );
          if (0 <= c) {
            var u = a.substring(0, c + 1).trim();
            var t = a.substring(c + 1).trim();
          } else (t = a), (u = void 0);
          d.push({ mediaQuery: u, size: e ? t : b ? Ce(t) : Be(t) });
        }
      });
      return new ti(d);
    }
    function ti(a) {
      F(0 < a.length, "SizeList must have at least one option");
      this.Kh = a;
      for (var b = 0; b < a.length; b++) {
        var c = a[b];
        b < a.length - 1
          ? F(
              c.mediaQuery,
              "All options except for the last must have a media condition"
            )
          : F(!c.mediaQuery, "The last option must not have a media condition");
      }
    }
    ti.prototype.select = function (a) {
      for (var b = this.Kh, c = b.length - 1, d = 0; d < c; d++) {
        var e = b[d];
        if (a.matchMedia(e.mediaQuery).matches) return e.size;
      }
      return b[c].size;
    };
    var ui = /nochunking=1/.test(self.location.hash),
      vi = q();
    function wi(a) {
      R(a, "chunk", xi);
      return bd(a, "chunk");
    }
    function yi(a, b, c) {
      if (ui) vi.then(b);
      else {
        var d = wi(a.documentElement || a);
        d.runForStartup(b);
        c &&
          d.runForStartup(function () {
            d.Je = !0;
          });
      }
    }
    function zi(a, b) {
      ui ? vi.then(b) : wi(a).run(b, 10);
    }
    function Ai(a) {
      this.state = "not_run";
      this.Bd = a;
    }
    function Bi(a, b) {
      if ("run" != a.state) {
        a.state = "run";
        try {
          a.Bd(b);
        } catch (c) {
          throw (a.Mf(), c);
        }
      }
    }
    Ai.prototype.Mf = function () {};
    Ai.prototype.uf = function () {
      return !1;
    };
    Ai.prototype.mg = function () {
      return !1;
    };
    function Ci(a, b, c) {
      Ai.call(this, a);
      this.Ze = c;
    }
    m(Ci, Ai);
    Ci.prototype.Mf = function () {
      kf(self.document);
    };
    Ci.prototype.uf = function () {
      return this.Ze.ampdoc.isVisible();
    };
    Ci.prototype.mg = function () {
      return this.Ze.af;
    };
    function xi(a) {
      var b = this;
      this.ampdoc = a;
      this.w = a.win;
      this.K = new yh();
      this.Le = this.gf.bind(this);
      this.Va = 0;
      this.Lc = !1;
      this.Je = this.w.document.documentElement.hasAttribute(
        "i-amphtml-no-boilerplate"
      );
      this.w.addEventListener("message", function (a) {
        "amp-macro-task" == a.data && b.gf(null);
      });
      this.af = !1;
      gd(Yc(a), "viewer").then(function () {
        b.af = !0;
      });
      a.onVisibilityChanged(function () {
        a.isVisible() && b.ua();
      });
    }
    xi.prototype.run = function (a, b) {
      a = new Ai(a);
      this.K.enqueue(a, b);
      this.ua();
    };
    xi.prototype.runForStartup = function (a) {
      a = new Ci(a, this.w, this);
      this.K.enqueue(a, Number.POSITIVE_INFINITY);
      this.ua();
    };
    function Di(a, b) {
      for (var c = a.K.peek(); c && "not_run" !== c.state; )
        a.K.dequeue(), (c = a.K.peek());
      c && b && a.K.dequeue();
      return c;
    }
    xi.prototype.gf = function (a) {
      var b = this,
        c = Di(this, !0);
      if (!c) return (this.Lc = !1), (this.Va = 0), !1;
      try {
        var d = Date.now();
        Bi(c, a);
      } finally {
        vi.then()
          .then()
          .then()
          .then()
          .then()
          .then()
          .then()
          .then()
          .then(function () {
            b.Lc = !1;
            b.Va += Date.now() - d;
            E().fine(
              "CHUNK",
              c.Bd.displayName || c.Bd.name,
              "Chunk duration",
              Date.now() - d,
              b.Va
            );
            b.ua();
          });
      }
      return !0;
    };
    function Ei(a) {
      a.Je && 5 < a.Va
        ? ((a.Va = 0), Fi(a))
        : vi.then(function () {
            a.Le(null);
          });
    }
    xi.prototype.ua = function () {
      if (!this.Lc) {
        var a = Di(this);
        a &&
          (a.uf()
            ? ((this.Lc = !0), Ei(this))
            : a.mg() && this.w.requestIdleCallback
            ? Gi(this.w, this.Le)
            : Fi(this));
      }
    };
    function Fi(a) {
      a.w.postMessage("amp-macro-task", "*");
    }
    function Gi(a, b) {
      function c(e) {
        if (15 > e.timeRemaining()) {
          var g = 2e3 - (Date.now() - d);
          0 >= g || e.didTimeout
            ? (E().fine("CHUNK", "Timed out", 2e3, e.didTimeout), b(e))
            : (E().fine("CHUNK", "Rescheduling with", g, e.timeRemaining()),
              a.requestIdleCallback(c, { timeout: g }));
        } else E().fine("CHUNK", "Running idle callback with ", 15), b(e);
      }
      var d = Date.now();
      a.requestIdleCallback(c, { timeout: 2e3 });
    }
    var Hi = [
        '<div class="i-amphtml-loading-container i-amphtml-fill-content amp-hidden"></div>',
      ],
      Ii;
    function Ji(a) {
      function b() {
        return c.apply(this, arguments) || this;
      }
      var c = Ki(a);
      m(b, c);
      return b;
    }
    function Ki(a) {
      function b() {
        var a = c.call(this) || this;
        a.createdCallback();
        return a;
      }
      if (a.__AMP_BASE_CE_CLASS) return a.__AMP_BASE_CE_CLASS;
      var c = a.HTMLElement;
      m(b, c);
      b.prototype.createdCallback = function () {
        this.ic = this.Ue = !1;
        this.ac = null;
        this.readyState = "loading";
        this.everAttached = !1;
        this.h = this.B = null;
        this.layout_ = "nodisplay";
        this.Df = this.pc = -1;
        this.aa = 0;
        this.Jb = this.Cb = this.Nd = !1;
        this.fc = this.Oc = this.tc = void 0;
        this.warnOnMissingOverflow = !0;
        this.qc = this.Wd = this.sizerElement = void 0;
        this.Xd = this.Ka = null;
        this.layoutScheduleTime = this.ka = void 0;
        this.implementation_ = new (a.__AMP_EXTENDED_ELEMENTS &&
          a.__AMP_EXTENDED_ELEMENTS[this.localName])(this);
        this.ib = 1;
        this.kg = 0;
        this.Bb = this.Ga = void 0;
        this.J = new oi();
        var b = ad(a);
        this.Of = b && b.isPerformanceTrackingOn();
        this.Ud = null;
        this.__AMP_UPG_RES &&
          (this.__AMP_UPG_RES(this),
          delete this.__AMP_UPG_RES,
          delete this.__AMP_UPG_PRM);
      };
      b.prototype.signals = function () {
        return this.J;
      };
      b.prototype.getAmpDoc = function () {
        return this.B;
      };
      b.prototype.getResources = function () {
        return this.h;
      };
      b.prototype.isUpgraded = function () {
        return 2 == this.ib;
      };
      b.prototype.whenUpgraded = function () {
        return this.J.whenSignal("upgraded");
      };
      b.prototype.upgrade = function (a) {
        this.Bb ||
          1 != this.ib ||
          ((this.implementation_ = new a(this)),
          this.everAttached && this.hg());
      };
      b.prototype.getUpgradeDelayMs = function () {
        return this.kg;
      };
      b.prototype.ud = function (b, c) {
        this.kg = a.Date.now() - c;
        this.ib = 2;
        this.implementation_ = b;
        this.classList.remove("amp-unresolved");
        this.classList.remove("i-amphtml-unresolved");
        this.implementation_.createdCallback();
        this.tg();
        this.implementation_.layout_ = this.layout_;
        this.implementation_.firstAttachedCallback();
        this.za("amp:attached");
        this.getResources().upgraded(this);
        this.J.signal("upgraded");
      };
      b.prototype.tg = function () {
        "nodisplay" == this.layout_ ||
          this.implementation_.isLayoutSupported(this.layout_) ||
          (F(
            this.getAttribute("layout"),
            "The element did not specify a layout attribute. Check https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/control_layout and the respective element documentation for details."
          ),
          F(!1, "Layout not supported: " + this.layout_));
      };
      b.prototype.isBuilt = function () {
        return this.Ue;
      };
      b.prototype.whenBuilt = function () {
        return this.J.whenSignal("built");
      };
      b.prototype.getLayoutPriority = function () {
        this.isUpgraded();
        return this.implementation_.getLayoutPriority();
      };
      b.prototype.getLayoutWidth = function () {
        return this.pc;
      };
      b.prototype.getDefaultActionAlias = function () {
        this.isUpgraded();
        return this.implementation_.getDefaultActionAlias();
      };
      b.prototype.isBuilding = function () {
        return !!this.ac;
      };
      b.prototype.build = function () {
        var a = this;
        this.isUpgraded();
        return this.ac
          ? this.ac
          : (this.ac = new Promise(function (b, c) {
              var d = a.Lg();
              d
                ? kd(a, "consentPolicyManager", "amp-consent")
                    .then(function (a) {
                      return a ? a.whenPolicyUnblock(d) : !0;
                    })
                    .then(function (d) {
                      d
                        ? b(a.implementation_.buildCallback())
                        : c(Error("BLOCK_BY_CONSENT"));
                    })
                : b(a.implementation_.buildCallback());
            }).then(
              function () {
                a.preconnect(!1);
                a.Ue = !0;
                a.classList.remove("i-amphtml-notbuilt");
                a.classList.remove("amp-notbuilt");
                a.J.signal("built");
                a.Cb && a.ig(!0);
                a.Ga && U(a.ownerDocument.defaultView).delay(a.Fg.bind(a), 1);
                if (!a.getPlaceholder()) {
                  var b = a.createPlaceholder();
                  b && a.appendChild(b);
                }
              },
              function (b) {
                a.J.rejectSignal("built", b);
                Cf(b) || Af(b, a);
                throw b;
              }
            ));
      };
      b.prototype.preconnect = function (a) {
        var b = this;
        a
          ? this.implementation_.preconnectCallback(a)
          : yi(this.getAmpDoc(), function () {
              var c = b.tagName;
              b.ownerDocument
                ? b.ownerDocument.defaultView
                  ? b.implementation_.preconnectCallback(a)
                  : E().error(c, "preconnect without defaultView")
                : E().error(c, "preconnect without ownerDocument");
            });
      };
      b.prototype.isAlwaysFixed = function () {
        return this.implementation_.isAlwaysFixed();
      };
      b.prototype.updateLayoutBox = function (a, b) {
        b = void 0 === b ? !1 : b;
        this.pc = a.width;
        this.Df = a.height;
        if (this.isBuilt()) this.onMeasure(b);
      };
      b.prototype.onMeasure = function (a) {
        a = void 0 === a ? !1 : a;
        this.isBuilt();
        try {
          if ((this.implementation_.onLayoutMeasure(), a))
            this.implementation_.onMeasureChanged();
        } catch (e) {
          Af(e, this);
        }
      };
      b.prototype.mf = function () {
        void 0 !== this.sizerElement ||
          ("responsive" !== this.layout_ && "intrinsic" !== this.layout_) ||
          (this.sizerElement = this.querySelector("i-amphtml-sizer"));
        return this.sizerElement || null;
      };
      b.prototype.Bh = function (a) {
        if ("responsive" === this.layout_) X(a, "paddingTop", "0");
        else if ("intrinsic" === this.layout_) {
          var b = a.querySelector(".i-amphtml-intrinsic-sizer");
          b && b.setAttribute("src", "");
        }
      };
      b.prototype.applySizesAndMediaQuery = function () {
        void 0 === this.tc && (this.tc = this.getAttribute("media") || null);
        this.tc &&
          this.classList.toggle(
            "i-amphtml-hidden-by-media-query",
            !this.ownerDocument.defaultView.matchMedia(this.tc).matches
          );
        if (void 0 === this.Oc) {
          var a = this.getAttribute("sizes");
          this.Oc =
            !this.hasAttribute("disable-inline-width") && a ? si(a) : null;
        }
        this.Oc &&
          X(this, "width", this.Oc.select(this.ownerDocument.defaultView));
        void 0 === this.fc &&
          "responsive" === this.layout_ &&
          (this.fc = (a = this.getAttribute("heights")) ? si(a, !0) : null);
        this.fc &&
          (a = this.mf()) &&
          X(a, "paddingTop", this.fc.select(this.ownerDocument.defaultView));
      };
      b.prototype.applySize = function (a, b, c) {
        var d = this.mf();
        d &&
          ((this.sizerElement = null),
          this.Bh(d),
          this.Zd(function () {
            d && yb(d);
          }));
        void 0 !== a && X(this, "height", a, "px");
        void 0 !== b && X(this, "width", b, "px");
        c &&
          (null != c.top && X(this, "marginTop", c.top, "px"),
          null != c.right && X(this, "marginRight", c.right, "px"),
          null != c.bottom && X(this, "marginBottom", c.bottom, "px"),
          null != c.left && X(this, "marginLeft", c.left, "px"));
        this.Vg() && this.Jh();
        this.dispatchCustomEvent("amp:size-changed");
      };
      b.prototype.connectedCallback = function () {
        void 0 === Ii &&
          (Ii = "content" in self.document.createElement("template"));
        Ii || void 0 !== this.Bb || (this.Bb = !!Fb(this, "template"));
        if (!this.Bb && !this.ic && Ab(this)) {
          this.ic = !0;
          this.everAttached ||
            (this.classList.add("i-amphtml-element"),
            this.classList.add("i-amphtml-notbuilt"),
            this.classList.add("amp-notbuilt"));
          if (!this.B) {
            var a = this.ownerDocument.defaultView,
              b = qd(a).getAmpDoc(this);
            this.B = b;
            var c = this.tagName.toLowerCase();
            this.implementation_ instanceof gi &&
              !b.declaresExtension(c) &&
              sd(a).installExtensionForDoc(b, c);
          }
          this.h || (this.h = ud(this.B));
          this.getResources().add(this);
          if (this.everAttached) {
            var h = this.reconstructWhenReparented();
            h && this.Tf();
            this.isUpgraded() &&
              (h && this.getResources().upgraded(this),
              this.za("amp:attached"));
          } else {
            this.everAttached = !0;
            try {
              var k = T(this.ownerDocument.defaultView).isIe();
              k = void 0 === k ? !1 : k;
              var l = this.getAttribute("i-amphtml-layout");
              if (l) {
                var n = ye(l);
                ("responsive" != n && "intrinsic" != n) ||
                !this.firstElementChild
                  ? "nodisplay" == n &&
                    (qe(this, !1), (this.style.display = ""))
                  : (this.sizerElement =
                      this.querySelector("i-amphtml-sizer") || void 0) &&
                    this.sizerElement.setAttribute("slot", "i-amphtml-svc");
                var u = n;
              } else {
                var t = this.getAttribute("layout"),
                  w = this.getAttribute("width"),
                  x = this.getAttribute("height"),
                  r = this.getAttribute("sizes"),
                  p = this.getAttribute("heights"),
                  J = t ? ye(t) : null;
                F(void 0 !== J, 'Invalid "layout" value: %s, %s', t, this);
                var H = w && "auto" != w ? Ae(w) : w;
                F(void 0 !== H, 'Invalid "width" value: %s, %s', w, this);
                var sa = x && "fluid" != x ? Ae(x) : x;
                F(void 0 !== sa, 'Invalid "height" value: %s, %s', x, this);
                var eb;
                if (
                  !(eb =
                    (J && "fixed" != J && "fixed-height" != J) || (H && sa))
                ) {
                  var wa = this.tagName;
                  wa = wa.toUpperCase();
                  eb = void 0 === ve[wa];
                }
                if (eb) {
                  var C = H;
                  var W = sa;
                } else {
                  var wc = this.tagName.toUpperCase();
                  if (!ve[wc]) {
                    var Td = this.ownerDocument,
                      xl = wc.replace(/^AMP\-/, ""),
                      fb = Td.createElement(xl);
                    fb.controls = !0;
                    pe(fb, { position: "absolute", visibility: "hidden" });
                    Td.body.appendChild(fb);
                    ve[wc] = {
                      width: (fb.offsetWidth || 1) + "px",
                      height: (fb.offsetHeight || 1) + "px",
                    };
                    Td.body.removeChild(fb);
                  }
                  var Vg = ve[wc];
                  C = H || "fixed-height" == J ? H : Vg.width;
                  W = sa || Vg.height;
                }
                var G = J
                  ? J
                  : C || W
                  ? "fluid" == W
                    ? "fluid"
                    : !W || (C && "auto" != C)
                    ? W && C && (r || p)
                      ? "responsive"
                      : "fixed"
                    : "fixed-height"
                  : "container";
                ("fixed" != G &&
                  "fixed-height" != G &&
                  "responsive" != G &&
                  "intrinsic" != G) ||
                  F(W, 'The "height" attribute is missing: %s', this);
                "fixed-height" == G &&
                  F(
                    !C || "auto" == C,
                    'The "width" attribute must be missing or "auto": %s',
                    this
                  );
                ("fixed" != G && "responsive" != G && "intrinsic" != G) ||
                  F(
                    C && "auto" != C,
                    'The "width" attribute must be present and not "auto": %s',
                    this
                  );
                "responsive" == G || "intrinsic" == G
                  ? F(
                      De(C) == De(W),
                      'Length units should be the same for "width" and "height": %s, %s, %s',
                      w,
                      x,
                      this
                    )
                  : F(
                      null === p,
                      '"heights" attribute must be missing: %s',
                      this
                    );
                this.classList.add("i-amphtml-layout-" + G);
                ze(G) && this.classList.add("i-amphtml-layout-size-defined");
                if ("nodisplay" == G) qe(this, !1), (this.style.display = "");
                else if ("fixed" == G) pe(this, { width: C, height: W });
                else if ("fixed-height" == G) X(this, "height", W);
                else if ("responsive" == G) {
                  var xc = this.ownerDocument.createElement("i-amphtml-sizer");
                  xc.setAttribute("slot", "i-amphtml-svc");
                  pe(xc, { paddingTop: (Ee(W) / Ee(C)) * 100 + "%" });
                  this.insertBefore(xc, this.firstChild);
                  this.sizerElement = xc;
                } else if ("intrinsic" == G) {
                  var Ud = je(this)(te);
                  Ud.firstElementChild.setAttribute(
                    "src",
                    k && this.ownerDocument
                      ? se(this.ownerDocument, Ee(C), Ee(W))
                      : 'data:image/svg+xml;charset=utf-8,<svg height="' +
                          W +
                          '" width="' +
                          C +
                          '" xmlns="http://www.w3.org/2000/svg" version="1.1"/>'
                  );
                  this.insertBefore(Ud, this.firstChild);
                  this.sizerElement = Ud;
                } else
                  "fill" != G &&
                    "container" != G &&
                    ("flex-item" == G
                      ? (C && X(this, "width", C), W && X(this, "height", W))
                      : "fluid" == G &&
                        (this.classList.add("i-amphtml-layout-awaiting-size"),
                        C && X(this, "width", C),
                        X(this, "height", 0)));
                this.setAttribute("i-amphtml-layout", G);
                u = G;
              }
              this.layout_ = u;
            } catch (yl) {
              Af(yl, this);
            }
            this.implementation_ instanceof gi || this.hg();
            this.isUpgraded() ||
              (this.classList.add("amp-unresolved"),
              this.classList.add("i-amphtml-unresolved"),
              this.za("amp:stubbed"));
            this.getResources().isIntersectionExperimentOn() &&
              this.applySizesAndMediaQuery();
          }
        }
      };
      b.prototype.Vg = function () {
        return this.classList.contains("i-amphtml-layout-awaiting-size");
      };
      b.prototype.Jh = function () {
        this.classList.remove("i-amphtml-layout-awaiting-size");
      };
      b.prototype.attachedCallback = function () {
        this.connectedCallback();
      };
      b.prototype.hg = function () {
        var b = this,
          c = this.implementation_;
        if (1 == this.ib) {
          this.ib = 4;
          var g = a.Date.now(),
            h = c.upgradeCallback();
          h
            ? "function" == typeof h.then
              ? h
                  .then(function (a) {
                    b.ud(a || c, g);
                  })
                  .catch(function (a) {
                    b.ib = 3;
                    ib(a);
                  })
              : this.ud(h, g)
            : this.ud(c, g);
        }
      };
      b.prototype.disconnectedCallback = function () {
        this.disconnect(!1);
      };
      b.prototype.detachedCallback = function () {
        this.disconnectedCallback();
      };
      b.prototype.disconnect = function (a) {
        this.Bb ||
          !this.ic ||
          (!a && Ab(this)) ||
          (a && this.classList.remove("i-amphtml-element"),
          (this.ic = !1),
          this.getResources().remove(this),
          this.implementation_.detachedCallback());
      };
      b.prototype.dispatchCustomEvent = function (a, b) {
        b = b || {};
        var c = this.ownerDocument.createEvent("Event");
        c.data = b;
        c.initEvent(a, !0, !0);
        this.dispatchEvent(c);
      };
      b.prototype.za = function () {};
      b.prototype.prerenderAllowed = function () {
        return this.implementation_.prerenderAllowed();
      };
      b.prototype.isBuildRenderBlocking = function () {
        return this.implementation_.isBuildRenderBlocking();
      };
      b.prototype.createPlaceholder = function () {
        return this.implementation_.createPlaceholderCallback();
      };
      b.prototype.createLoaderLogo = function () {
        return this.implementation_.createLoaderLogoCallback();
      };
      b.prototype.renderOutsideViewport = function () {
        return this.implementation_.renderOutsideViewport();
      };
      b.prototype.idleRenderOutsideViewport = function () {
        return this.implementation_.idleRenderOutsideViewport();
      };
      b.prototype.getLayoutBox = function () {
        return this.wb().getLayoutBox();
      };
      b.prototype.getPageLayoutBox = function () {
        return this.wb().getPageLayoutBox();
      };
      b.prototype.getOwner = function () {
        return this.wb().getOwner();
      };
      b.prototype.getIntersectionChangeEntry = function () {
        var a = this.implementation_.getIntersectionElementLayoutBox(),
          b = this.getOwner(),
          c = this.implementation_.getViewport().getRect(),
          h = b && b.getLayoutBox(),
          k = gc(a, h, c) || fc(0, 0, 0, 0);
        b = k.width * k.height;
        var l = a.width * a.height;
        b = 0 === l ? 0 : b / l;
        if ((l = c))
          (k = ic(k, -c.left, -c.top)),
            (a = ic(a, -c.left, -c.top)),
            (l = ic(l, -c.left, -c.top));
        return {
          time:
            "undefined" !== typeof performance && performance.now
              ? performance.now()
              : Date.now() - ri,
          rootBounds: l,
          boundingClientRect: a,
          intersectionRect: k,
          intersectionRatio: b,
        };
      };
      b.prototype.wb = function () {
        return this.getResources().getResourceForElement(this);
      };
      b.prototype.getResourceId = function () {
        return this.wb().getId();
      };
      b.prototype.isRelayoutNeeded = function () {
        return this.implementation_.isRelayoutNeeded();
      };
      b.prototype.getImpl = function (a) {
        var b = this;
        a = void 0 === a ? !0 : a;
        return (a ? this.whenBuilt() : this.whenUpgraded()).then(function () {
          return b.implementation_;
        });
      };
      b.prototype.getLayout = function () {
        return this.layout_;
      };
      b.prototype.layoutCallback = function () {
        var a = this;
        this.isBuilt();
        this.za("amp:load-start");
        var b = 0 == this.aa;
        this.J.reset("unload");
        b && this.J.signal("load-start");
        this.Of && this.lf().startLayout();
        var c = nb(function () {
          return a.implementation_.layoutCallback();
        });
        this.preconnect(!0);
        this.classList.add("i-amphtml-layout");
        return c.then(
          function () {
            b && a.J.signal("load-end");
            a.readyState = "complete";
            a.aa++;
            a.toggleLoading(!1, { cleanup: !0 });
            a.Nd ||
              (a.implementation_.firstLayoutCompleted(),
              (a.Nd = !0),
              a.za("amp:load-end"));
          },
          function (c) {
            b && a.J.rejectSignal("load-end", c);
            a.aa++;
            a.toggleLoading(!1, { cleanup: !0 });
            throw c;
          }
        );
      };
      b.prototype.isInViewport = function () {
        return this.Cb;
      };
      b.prototype.viewportCallback = function (b) {
        var c = this;
        if (
          b != this.Cb &&
          this.ownerDocument &&
          this.ownerDocument.defaultView
        ) {
          this.Cb = b;
          if (0 == this.aa)
            if (b) {
              var d = a.Date.now();
              U(this.ownerDocument.defaultView).delay(function () {
                c.Cb &&
                  c.ownerDocument &&
                  c.ownerDocument.defaultView &&
                  0 === c.aa &&
                  c.toggleLoading(!0, { startTime: d });
              }, 100);
            } else this.toggleLoading(!1);
          this.isBuilt() && this.ig(b);
        }
      };
      b.prototype.ig = function (a) {
        this.implementation_.inViewport_ = a;
        this.implementation_.viewportCallback(a);
        a && this.Of && this.lf().enterViewport();
      };
      b.prototype.isPaused = function () {
        return this.Jb;
      };
      b.prototype.pauseCallback = function () {
        this.Jb ||
          ((this.Jb = !0),
          this.viewportCallback(!1),
          this.isBuilt() && this.implementation_.pauseCallback());
      };
      b.prototype.resumeCallback = function () {
        this.Jb &&
          ((this.Jb = !1),
          this.isBuilt() && this.implementation_.resumeCallback());
      };
      b.prototype.unlayoutCallback = function () {
        if (!this.isBuilt()) return !1;
        this.J.signal("unload");
        var a = this.implementation_.unlayoutCallback();
        a && this.Tf();
        this.za("amp:unload");
        return a;
      };
      b.prototype.Tf = function () {
        this.aa = 0;
        this.Nd = !1;
        this.J.reset("render-start");
        this.J.reset("load-start");
        this.J.reset("load-end");
        this.J.reset("ini-load");
      };
      b.prototype.unlayoutOnPause = function () {
        return this.implementation_.unlayoutOnPause();
      };
      b.prototype.reconstructWhenReparented = function () {
        return this.implementation_.reconstructWhenReparented();
      };
      b.prototype.collapse = function () {
        this.implementation_.collapse();
      };
      b.prototype.collapsedCallback = function (a) {
        this.implementation_.collapsedCallback(a);
      };
      b.prototype.expand = function () {
        this.implementation_.expand();
      };
      b.prototype.expandedCallback = function (a) {
        this.implementation_.expandedCallback(a);
      };
      b.prototype.mutatedAttributesCallback = function (a) {
        this.implementation_.mutatedAttributesCallback(a);
      };
      b.prototype.enqueAction = function (a) {
        this.isBuilt()
          ? this.hf(a, !1)
          : (void 0 === this.Ga && (this.Ga = []), this.Ga.push(a));
      };
      b.prototype.Fg = function () {
        var a = this;
        if (this.Ga) {
          var b = this.Ga;
          this.Ga = null;
          b.forEach(function (b) {
            a.hf(b, !0);
          });
        }
      };
      b.prototype.hf = function (a, b) {
        try {
          this.implementation_.executeAction(a, b);
        } catch (g) {
          ib("Action execution failed:", g, a.node.tagName, a.method);
        }
      };
      b.prototype.Lg = function () {
        var a = this.getAttribute("data-block-on-consent");
        if (null === a)
          if (
            ((a = this.getAmpDoc().getMetaByName("amp-consent-blocking"))
              ? ((a = a.toUpperCase().replace(/\s+/g, "")),
                (a = a.split(",").includes(this.tagName)))
              : (a = !1),
            a)
          )
            (a = "default"), this.setAttribute("data-block-on-consent", a);
          else return null;
        return "" == a || "default" == a
          ? this.implementation_.getConsentPolicy()
          : a;
      };
      b.prototype.getRealChildNodes = function () {
        return Jb(this, function (a) {
          return !Li(a);
        });
      };
      b.prototype.getRealChildren = function () {
        return Hb(this, function (a) {
          return !Li(a);
        });
      };
      b.prototype.getPlaceholder = function () {
        return Ib(this, function (a) {
          return a.hasAttribute("placeholder") && !("placeholder" in a);
        });
      };
      b.prototype.togglePlaceholder = function (a) {
        if (a) {
          var b = this.getPlaceholder();
          b && b.classList.remove("amp-hidden");
        } else {
          /^[\w-]+$/.test("placeholder");
          b = (void 0 !== qb ? qb : (qb = rb(this)))
            ? this.querySelectorAll(
                "> [placeholder]".replace(/^|,/g, "$&:scope ")
              )
            : Mb(this, "> [placeholder]");
          for (var c = 0; c < b.length; c++)
            "placeholder" in b[c] || b[c].classList.add("amp-hidden");
        }
      };
      b.prototype.getFallback = function () {
        return Kb(this, "fallback");
      };
      b.prototype.toggleFallback = function (a) {
        var b = this.wb().getState();
        if (!a || (0 != b && 1 != b && 2 != b))
          if ((this.classList.toggle("amp-notsupported", a), 1 == a)) {
            var c = this.getFallback();
            c && bd(this.getAmpDoc(), "owners").scheduleLayout(this, c);
          }
      };
      b.prototype.renderStarted = function () {
        this.J.signal("render-start");
        this.togglePlaceholder(!1);
        this.toggleLoading(!1);
      };
      b.prototype.Od = function () {
        if (this.isInA4A()) return !1;
        void 0 === this.Wd && (this.Wd = this.hasAttribute("noloading"));
        var a = 0 < this.aa || this.J.get("render-start"),
          b;
        (b =
          this.Wd ||
          (a && !this.implementation_.isLoadingReused()) ||
          0 >= this.pc) ||
          ((b = this.tagName.toUpperCase()),
          (b = !(we[b] || ("AMP-VIDEO" == b ? 0 : xe.test(b)))));
        return b || Li(this) || "nodisplay" == this.layout_ ? !1 : !0;
      };
      b.prototype.isInA4A = function () {
        return (
          (this.B && this.B.win != this.ownerDocument.defaultView) ||
          "inabox" == y().runtime
        );
      };
      b.prototype.sh = function (a) {
        if (this.Od() && !this.Ka) {
          var b = je(this.ownerDocument)(Hi),
            c = qi(this.getAmpDoc(), this, this.pc, this.Df, a);
          b.appendChild(c);
          this.appendChild(b);
          this.Ka = b;
          this.Xd = c;
        }
      };
      b.prototype.toggleLoading = function (a, b) {
        var c = this,
          d = b && b.cleanup,
          e = b && b.startTime;
        if (a !== this.qc || b)
          if ((this.qc = a) || this.Ka)
            a && !this.Od()
              ? (this.qc = !1)
              : this.Zd(
                  function () {
                    var a = c.qc;
                    a && !c.Od() && (a = !1);
                    a && c.sh(e);
                    if (
                      c.Ka &&
                      (c.Ka.classList.toggle("amp-hidden", !a),
                      c.Xd.classList.toggle("amp-active", a),
                      !a && d && !c.implementation_.isLoadingReused())
                    ) {
                      var b = c.Ka;
                      c.Ka = null;
                      c.Xd = null;
                      c.Zd(
                        function () {
                          yb(b);
                        },
                        void 0,
                        !0
                      );
                    }
                  },
                  void 0,
                  !0
                );
      };
      b.prototype.lf = function () {
        this.Ud ||
          (this.Ud = new ii(
            this.ownerDocument.defaultView,
            this.getLayoutPriority()
          ));
        return this.Ud;
      };
      b.prototype.getOverflowElement = function () {
        void 0 === this.ka &&
          (this.ka = Kb(this, "overflow")) &&
          (this.ka.hasAttribute("tabindex") ||
            this.ka.setAttribute("tabindex", "0"),
          this.ka.hasAttribute("role") ||
            this.ka.setAttribute("role", "button"));
        return this.ka;
      };
      b.prototype.overflowCallback = function (a, b, c) {
        var d = this;
        this.getOverflowElement();
        this.ka
          ? (this.ka.classList.toggle("amp-visible", a),
            (this.ka.onclick = a
              ? function () {
                  var a = td(d.getAmpDoc());
                  a.forceChangeSize(d, b, c);
                  a.mutateElement(d, function () {
                    d.overflowCallback(!1, b, c);
                  });
                }
              : null))
          : a &&
            this.warnOnMissingOverflow &&
            D().warn(
              "CustomElement",
              "Cannot resize element and overflow is not available",
              this
            );
      };
      b.prototype.Zd = function (a, b, c) {
        c = void 0 === c ? !1 : c;
        this.B ? td(this.getAmpDoc()).mutateElement(b || this, a, c) : a();
      };
      a.__AMP_BASE_CE_CLASS = b;
      return a.__AMP_BASE_CE_CLASS;
    }
    function Li(a) {
      var b = "string" == typeof a ? a : a.tagName;
      return (b && M(b.toLowerCase(), "i-")) ||
        (a.tagName &&
          (a.hasAttribute("placeholder") ||
            a.hasAttribute("fallback") ||
            a.hasAttribute("overflow")))
        ? !0
        : !1;
    }
    function Mi(a) {
      a.__AMP_EXTENDED_ELEMENTS || (a.__AMP_EXTENDED_ELEMENTS = {});
      return a.__AMP_EXTENDED_ELEMENTS;
    }
    function Ni(a, b) {
      try {
        a.upgrade(b);
      } catch (c) {
        Af(c, a);
      }
    }
    function Oi(a) {
      od(a.getHeadNode()).forEach(function (b) {
        a.declareExtension(b);
        Pi(a.win, b);
      });
    }
    function Pi(a, b) {
      Mi(a)[b] || Qi(a, b, gi);
    }
    function Qi(a, b, c) {
      Mi(a)[b] = c;
      var d = Ji(a);
      a.customElements.define(b, d);
    }
    var Ri = "alt aria-describedby aria-label aria-labelledby crossorigin referrerpolicy sizes src srcset title".split(
      " "
    );
    function Si(a) {
      Pe.call(this, a);
      this.Pf = this.Zb = !0;
      this.Wc = this.Xc = this.I = null;
      this.$f = 0;
    }
    m(Si, Pe);
    f = Si.prototype;
    f.mutatedAttributesCallback = function (a) {
      if (this.I) {
        var b = Ri.filter(function (b) {
          return void 0 !== a[b];
        });
        a.src &&
          !a.srcset &&
          this.element.hasAttribute("srcset") &&
          (this.element.removeAttribute("srcset"),
          b.push("srcset"),
          this.user().warn(
            "amp-img",
            "Removed [srcset] since [src] was mutated. Recommend adding a [srcset] binding to support responsive images.",
            this.element
          ));
        this.propagateAttributes(b, this.I, !0);
        this.propagateDataset(this.I);
        re(this.I);
      }
    };
    f.onMeasureChanged = function () {
      Ti(this, !1);
    };
    f.preconnectCallback = function (a) {
      var b = this.element.getAttribute("src");
      b
        ? S(this.win, "preconnect").url(this.getAmpDoc(), b, a)
        : (b = this.element.getAttribute("srcset")) &&
          (b = /\S+/.exec(b)) &&
          S(this.win, "preconnect").url(this.getAmpDoc(), b[0], a);
    };
    f.firstAttachedCallback = function () {
      this.element.hasAttribute("noprerender") && (this.Pf = !1);
    };
    f.isLayoutSupported = function (a) {
      return ze(a);
    };
    f.hc = function () {
      if (!this.I) {
        this.Zb = !this.element.hasAttribute("fallback");
        this.element.hasAttribute("i-amphtml-ssr") &&
          (this.I = Lb(this.element, "> img:not([placeholder])"));
        this.I = this.I || new Image();
        this.I.setAttribute("decoding", "async");
        this.element.id && this.I.setAttribute("amp-img-id", this.element.id);
        "img" == this.element.getAttribute("role") &&
          (this.element.removeAttribute("role"),
          this.user().error(
            "amp-img",
            "Setting role=img on amp-img elements breaks screen readers please just set alt or ARIA attributes, they will be correctly propagated for the underlying <img> element."
          ));
        Ti(this, !0);
        this.propagateAttributes(Ri, this.I);
        this.propagateDataset(this.I);
        re(this.I);
        this.applyFillContent(this.I, !0);
        var a = this.element,
          b = this.I;
        a.hasAttribute("object-fit") &&
          X(b, "object-fit", a.getAttribute("object-fit"));
        a.hasAttribute("object-position") &&
          X(b, "object-position", a.getAttribute("object-position"));
        this.element.appendChild(this.I);
      }
    };
    function Ti(a, b) {
      if (a.I && !a.element.getAttribute("sizes")) {
        var c = a.element.getAttribute("srcset");
        if (
          c &&
          !/[0-9]+x(?:,|$)/.test(c) &&
          ((c = a.element.getLayoutWidth()), Ui(a, c))
        ) {
          var d = a.getViewport().getWidth(),
            e = "(max-width: " + d + "px) " + c + "px, ",
            g = c + "px";
          "fixed" !== a.getLayout() &&
            (g = Math.max(Math.round((100 * c) / d), 100) + "vw");
          var h = e + g;
          b
            ? a.I.setAttribute("sizes", h)
            : a.mutateElement(function () {
                a.I.setAttribute("sizes", h);
              });
          a.$f = c;
        }
      }
    }
    function Ui(a, b) {
      return a.I.hasAttribute("sizes") ? b > a.$f : !0;
    }
    f.prerenderAllowed = function () {
      return this.Pf;
    };
    f.reconstructWhenReparented = function () {
      return !1;
    };
    f.layoutCallback = function () {
      var a = this;
      this.hc();
      var b = this.I;
      this.Xc = Je(b, "load", function () {
        return Vi(a);
      });
      this.Wc = Je(b, "error", function () {
        return Wi(a);
      });
      return 0 >= this.element.getLayoutWidth() ? q() : this.loadPromise(b);
    };
    f.unlayoutCallback = function () {
      this.Wc && (this.Wc(), (this.Wc = null));
      this.Xc && (this.Xc(), (this.Xc = null));
      var a = this.I;
      a &&
        !a.complete &&
        ((a.src =
          "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs="),
        yb(a),
        (this.I = null));
      return !0;
    };
    f.firstLayoutCompleted = function () {
      var a = this.getPlaceholder();
      a && a.classList.contains("i-amphtml-blurry-placeholder")
        ? oe(a, { opacity: 0 })
        : this.togglePlaceholder(!1);
    };
    function Vi(a) {
      !a.Zb &&
        a.I.classList.contains("i-amphtml-ghost") &&
        a.getVsync().mutate(function () {
          a.I.classList.remove("i-amphtml-ghost");
          a.toggleFallback(!1);
        });
    }
    function Wi(a) {
      a.Zb &&
        (a.getVsync().mutate(function () {
          a.I.classList.add("i-amphtml-ghost");
          a.toggleFallback(!0);
          a.togglePlaceholder(!1);
        }),
        (a.Zb = !1));
    }
    function Xi(a) {
      this.win = a;
      this.ug = this.ih.bind(this);
      this.wg = this.jh.bind(this);
      this.kd = this.Me = this.ld = null;
      this.ec =
        "ontouchstart" in a ||
        (void 0 !== a.navigator.maxTouchPoints &&
          0 < a.navigator.maxTouchPoints) ||
        void 0 !== a.DocumentTouch;
      E().fine("Input", "touch detected:", this.ec);
      this.Eb = !1;
      this.win.document.addEventListener("keydown", this.ug);
      this.win.document.addEventListener("mousedown", this.wg);
      this.Ed = !0;
      this.Hf = 0;
      this.Ph = new Y();
      this.If = new Y();
      this.Sd = new Y();
      this.ec &&
        ((this.Ed = !this.ec),
        (this.ld = this.kh.bind(this)),
        Ke(a.document, "mousemove", this.ld));
    }
    f = Xi.prototype;
    f.setupInputModeClasses = function (a) {
      var b = this;
      this.onTouchDetected(function (c) {
        Yi(b, a, "amp-mode-touch", c);
      }, !0);
      this.onMouseDetected(function (c) {
        Yi(b, a, "amp-mode-mouse", c);
      }, !0);
      this.onKeyboardStateChanged(function (c) {
        Yi(b, a, "amp-mode-keyboard-active", c);
      }, !0);
    };
    f.isTouchDetected = function () {
      return this.ec;
    };
    f.onTouchDetected = function (a, b) {
      b && a(this.isTouchDetected());
      return this.Ph.add(a);
    };
    f.isMouseDetected = function () {
      return this.Ed;
    };
    f.onMouseDetected = function (a, b) {
      b && a(this.isMouseDetected());
      return this.If.add(a);
    };
    f.isKeyboardActive = function () {
      return this.Eb;
    };
    f.onKeyboardStateChanged = function (a, b) {
      b && a(this.isKeyboardActive());
      return this.Sd.add(a);
    };
    function Yi(a, b, c, d) {
      b.waitForBodyOpen().then(function (b) {
        vd(a.win).mutate(function () {
          b.classList.toggle(c, d);
        });
      });
    }
    f.ih = function (a) {
      this.Eb ||
        a.defaultPrevented ||
        ((a = a.target),
        a &&
          ("INPUT" == a.tagName ||
            "TEXTAREA" == a.tagName ||
            "SELECT" == a.tagName ||
            "OPTION" == a.tagName ||
            a.hasAttribute("contenteditable"))) ||
        ((this.Eb = !0),
        this.Sd.fire(!0),
        E().fine("Input", "keyboard activated"));
    };
    f.jh = function () {
      this.Eb &&
        ((this.Eb = !1),
        this.Sd.fire(!1),
        E().fine("Input", "keyboard deactivated"));
    };
    f.kh = function (a) {
      var b = this;
      if (a.sourceCapabilities && a.sourceCapabilities.firesTouchEvents)
        this.Gf();
      else {
        this.kd ||
          ((this.kd = this.hh.bind(this)), (this.Me = this.Gf.bind(this)));
        var c,
          d = Le(this.win.document, function (a) {
            c = a;
          });
        return U(this.win)
          .timeoutPromise(300, d)
          .then(this.Me, function () {
            c && c();
            b.kd();
          });
      }
    };
    f.hh = function () {
      this.Ed = !0;
      this.If.fire(!0);
      E().fine("Input", "mouse detected");
    };
    f.Gf = function () {
      this.Hf++;
      3 >= this.Hf
        ? Ke(this.win.document, "mousemove", this.ld)
        : E().fine("Input", "mouse detection failed");
    };
    function Zi() {
      Pe.apply(this, arguments);
    }
    m(Zi, Pe);
    Zi.prototype.isLayoutSupported = function (a) {
      return "container" == a || ze(a);
    };
    Zi.prototype.buildCallback = function () {
      if ("container" != this.getLayout()) {
        var a = this.win.document.createElement("div");
        this.applyFillContent(a);
        this.getRealChildNodes().forEach(function (b) {
          a.appendChild(b);
        });
        this.element.appendChild(a);
      }
    };
    Zi.prototype.prerenderAllowed = function () {
      return !0;
    };
    function $i(a) {
      var b = this;
      this.win = a;
      this.uh = 6e4;
      this.N = [];
      this.Kf = new Y();
      this.Xe = function (a) {
        a.target && 1 == a.target.nodeType && aj(b, a.target);
      };
      this.We = function () {
        U(a).delay(function () {
          b.win.document.activeElement && aj(b, b.win.document.activeElement);
        }, 500);
      };
      this.win.document.addEventListener("focus", this.Xe, !0);
      this.win.addEventListener("blur", this.We);
    }
    f = $i.prototype;
    f.Wh = function () {
      this.win.document.removeEventListener("focus", this.Xe, !0);
      this.win.removeEventListener("blur", this.We);
    };
    f.onFocus = function (a) {
      return this.Kf.add(a);
    };
    function aj(a, b) {
      var c = Date.now();
      0 == a.N.length || a.N[a.N.length - 1].el != b
        ? a.N.push({ el: b, time: c })
        : (a.N[a.N.length - 1].time = c);
      a.purgeBefore(c - a.uh);
      a.Kf.fire(b);
    }
    f.getLast = function () {
      return 0 == this.N.length ? null : this.N[this.N.length - 1].el;
    };
    f.purgeBefore = function (a) {
      for (var b = this.N.length - 1, c = 0; c < this.N.length; c++)
        if (this.N[c].time >= a) {
          b = c - 1;
          break;
        }
      -1 != b && this.N.splice(0, b + 1);
    };
    f.hasDescendantsOf = function (a) {
      this.win.document.activeElement &&
        aj(this, this.win.document.activeElement);
      for (var b = 0; b < this.N.length; b++)
        if (a.contains(this.N[b].el)) return !0;
      return !1;
    };
    function bj(a) {
      var b = this;
      this.ampdoc = a;
      this.win = a.win;
      this.h = ud(a);
      this.H = wd(this.ampdoc);
      this.F = vd(this.win);
      this.ed = new $i(this.win);
      this.ed.onFocus(function (a) {
        cj(b, a);
      });
      this.Ja = this.h.isIntersectionExperimentOn();
    }
    f = bj.prototype;
    f.forceChangeSize = function (a, b, c, d, e) {
      dj(this, Z(a), b, c, e, void 0, !0, d);
    };
    f.requestChangeSize = function (a, b, c, d, e) {
      var g = this;
      return new Promise(function (h, k) {
        dj(g, Z(a), b, c, d, e, !1, function (a) {
          a ? h() : k(Error("changeSize attempt denied"));
        });
      });
    };
    f.expandElement = function (a) {
      var b = Z(a);
      b.completeExpand();
      var c = b.getOwner();
      c && c.expandedCallback(a);
      this.h.schedulePass(70);
    };
    f.attemptCollapse = function (a) {
      var b = this;
      return new Promise(function (c, d) {
        dj(b, Z(a), 0, 0, void 0, void 0, !1, function (b) {
          b
            ? (Z(a).completeCollapse(), c())
            : d(E().createExpectedError("collapse attempt denied"));
        });
      });
    };
    f.collapseElement = function (a) {
      if (!this.Ja) {
        var b = this.H.getLayoutRect(a);
        0 != b.width &&
          0 != b.height &&
          (P(this.win, "dirty-collapse-element")
            ? this.dirtyElement(a)
            : this.h.setRelayoutTop(b.top));
      }
      Z(a).completeCollapse();
      this.Ja || this.h.schedulePass(70);
    };
    f.measureElement = function (a) {
      return this.F.measurePromise(a);
    };
    f.mutateElement = function (a, b, c) {
      return ej(this, a, null, b, c);
    };
    f.measureMutateElement = function (a, b, c) {
      return ej(this, a, b, c);
    };
    function ej(a, b, c, d, e) {
      function g() {
        var c = a.H.getLayoutRect(b);
        return 0 != c.width && 0 != c.height ? c.top : -1;
      }
      e = void 0 === e ? !1 : e;
      var h = -1;
      return a.F.runPromise({
        measure: function () {
          c && c();
          a.Ja || e || (h = g());
        },
        mutate: function () {
          d();
          if (!e) {
            b.classList.contains("i-amphtml-element") && Z(b).requestMeasure();
            for (
              var c = b.getElementsByClassName("i-amphtml-element"), l = 0;
              l < c.length;
              l++
            )
              Z(c[l]).requestMeasure();
            a.h.schedulePass(70);
            a.Ja
              ? a.h.maybeHeightChanged()
              : (-1 != h && a.h.setRelayoutTop(h),
                a.F.measure(function () {
                  var b = g();
                  -1 != b &&
                    b != h &&
                    (a.h.setRelayoutTop(b), a.h.schedulePass(70));
                  a.h.maybeHeightChanged();
                }));
          }
        },
      });
    }
    f.dirtyElement = function (a) {
      var b = !1;
      a.classList.contains("i-amphtml-element")
        ? ((a = Z(a)), this.h.setRelayoutTop(a.getLayoutBox().top))
        : (b = !0);
      this.h.schedulePass(70, b);
    };
    function cj(a, b) {
      var c = Db(b, function (a) {
        return !!Z(a);
      });
      if (c) {
        b = Z(c);
        var d = b.getPendingChangeSize();
        void 0 !== d && dj(a, b, d.height, d.width, d.margins, void 0, !0);
      }
    }
    function dj(a, b, c, d, e, g, h, k) {
      b.hasBeenMeasured() && !e
        ? fj(a, b, c, d, void 0, g, h, k)
        : a.F.measure(function () {
            b.hasBeenMeasured() || b.measure();
            if (e) {
              var l = a.win.getComputedStyle(b.element) || I();
              l = {
                top: parseInt(l.marginTop, 10) || 0,
                right: parseInt(l.marginRight, 10) || 0,
                bottom: parseInt(l.marginBottom, 10) || 0,
                left: parseInt(l.marginLeft, 10) || 0,
              };
              l = { newMargins: e, currentMargins: l };
            } else l = void 0;
            fj(a, b, c, d, l, g, h, k);
          });
    }
    function fj(a, b, c, d, e, g, h, k) {
      b.resetPendingChangeSize();
      var l = b.getPageLayoutBox();
      if (
        !(l =
          (void 0 !== c && c != l.height) || (void 0 !== d && d != l.width)) &&
        (l = void 0 !== e)
      ) {
        l = e.currentMargins;
        var n = e.newMargins;
        l =
          (void 0 !== n.top && n.top != l.top) ||
          (void 0 !== n.right && n.right != l.right) ||
          (void 0 !== n.bottom && n.bottom != l.bottom) ||
          (void 0 !== n.left && n.left != l.left);
      }
      l
        ? (a.h.updateOrEnqueueMutateTask(b, {
            resource: b,
            newHeight: c,
            newWidth: d,
            marginChange: e,
            event: g,
            force: h,
            callback: k,
          }),
          a.h.schedulePassVsync())
        : (void 0 === c &&
            void 0 === d &&
            void 0 === e &&
            E().error(
              "Mutator",
              "attempting to change size with undefined dimensions",
              b.debugid
            ),
          k && k(!0));
    }
    function gj(a) {
      return z(a) ? a : [a];
    }
    function hj(a) {
      this.h = ud(a);
    }
    f = hj.prototype;
    f.setOwner = function (a, b) {
      b.contains(a);
      Z(a) && Z(a).updateOwner(b);
      a.__AMP__OWNER = b;
      a = a.getElementsByClassName("i-amphtml-element");
      for (b = 0; b < a.length; b++) {
        var c = a[b];
        Z(c) && Z(c).updateOwner(void 0);
      }
    };
    f.schedulePreload = function (a, b) {
      ij(this, this.h.getResourceForElement(a), !1, gj(b));
    };
    f.scheduleLayout = function (a, b) {
      ij(this, this.h.getResourceForElement(a), !0, gj(b));
    };
    f.schedulePause = function (a, b) {
      var c = this.h.getResourceForElement(a);
      b = gj(b);
      jj(this, c, b, function (a) {
        a.pause();
      });
    };
    f.scheduleResume = function (a, b) {
      a = this.h.getResourceForElement(a);
      b = gj(b);
      jj(this, a, b, function (a) {
        a.resume();
      });
    };
    f.scheduleUnlayout = function (a, b) {
      a = this.h.getResourceForElement(a);
      b = gj(b);
      jj(this, a, b, function (a) {
        a.unlayout();
      });
    };
    f.updateInViewport = function (a, b, c) {
      kj(this, this.h.getResourceForElement(a), gj(b), c);
    };
    f.requireLayout = function (a, b) {
      var c = this,
        d = [];
      lj(this, a, function (a) {
        4 != a.getState() &&
          (3 != a.getState()
            ? d.push(
                a.whenBuilt().then(function () {
                  a.measure();
                  if (a.isDisplayed())
                    return (
                      c.h.scheduleLayoutOrPreload(a, !0, b, !0), a.loadedOnce()
                    );
                })
              )
            : a.isDisplayed() && d.push(a.loadedOnce()));
      });
      return Promise.all(d);
    };
    function jj(a, b, c, d) {
      c.forEach(function (c) {
        b.element.contains(c);
        lj(a, c, d);
      });
    }
    function lj(a, b, c) {
      if (b.classList.contains("i-amphtml-element"))
        c(a.h.getResourceForElement(b)),
          (b = b.getPlaceholder()) && lj(a, b, c);
      else {
        b = b.getElementsByClassName("i-amphtml-element");
        for (var d = [], e = 0; e < b.length; e++) {
          for (var g = b[e], h = !1, k = 0; k < d.length; k++)
            if (d[k].contains(g)) {
              h = !0;
              break;
            }
          h || (d.push(g), c(a.h.getResourceForElement(g)));
        }
      }
    }
    function ij(a, b, c, d) {
      jj(a, b, d, function (d) {
        0 === d.getState()
          ? d.whenBuilt().then(function () {
              mj(a, d, !c, b.getLayoutPriority());
            })
          : mj(a, d, !c, b.getLayoutPriority());
      });
    }
    function mj(a, b, c, d) {
      b.measure();
      2 === b.getState() &&
        b.isDisplayed() &&
        a.h.scheduleLayoutOrPreload(b, !c, d);
    }
    function kj(a, b, c, d) {
      var e = b.isInViewport() && d;
      jj(a, b, c, function (a) {
        a.setInViewport(e);
      });
    }
    function nj(a, b) {
      if ("referrerPolicy" in Image.prototype) return oj(a, b, !0);
      var c = zb(a.document);
      c.onload = function () {
        oj(c.contentWindow, b);
      };
      a.document.body.appendChild(c);
      return c;
    }
    function oj(a, b, c) {
      c = void 0 === c ? !1 : c;
      a = new a.Image();
      c && (a.referrerPolicy = "no-referrer");
      a.src = b;
      return a;
    }
    function pj(a) {
      Pe.call(this, a);
      this.ve = null;
    }
    m(pj, Pe);
    pj.prototype.isLayoutSupported = function () {
      return !0;
    };
    pj.prototype.buildCallback = function () {
      this.element.setAttribute("aria-hidden", "true");
      (this.Gc = this.element.getAttribute("referrerpolicy")) &&
        F(
          "no-referrer" == this.Gc,
          'amp-pixel: invalid "referrerpolicy" value "' +
            this.Gc +
            '". Only "no-referrer" is supported'
        );
      this.element.hasAttribute("i-amphtml-ssr") &&
      this.element.querySelector("img")
        ? E().info("amp-pixel", "inabox img already present")
        : this.getAmpDoc().whenFirstVisible().then(this.Qh.bind(this));
    };
    pj.prototype.Qh = function () {
      var a = this;
      if (this.ve) return E().error("amp-pixel", "duplicate pixel"), this.ve;
      this.ve = U(this.win)
        .promise(1)
        .then(function () {
          var b = a.element.getAttribute("src");
          if (b)
            return Tc(a.element, "url-replace")
              .expandUrlAsync(qj(b))
              .then(function (b) {
                if (a.win) {
                  var c = a.win;
                  var e = a.Gc;
                  e &&
                    "no-referrer" !== e &&
                    D().error("pixel", "Unsupported referrerPolicy: %s", e);
                  c = "no-referrer" === e ? nj(c, b) : oj(c, b);
                  E().info("amp-pixel", "pixel triggered: ", b);
                  return c;
                }
              });
        });
    };
    function qj(a) {
      F(
        /^(https:\/\/|\/\/)/i.test(a),
        'The <amp-pixel> src attribute must start with "https://" or "//". Invalid value: ' +
          a
      );
      return a;
    }
    function rj(a) {
      this.R = a.navigator;
      this.w = a;
    }
    f = rj.prototype;
    f.isAndroid = function () {
      return /Android/i.test(this.R.userAgent);
    };
    f.isIos = function () {
      return /iPhone|iPad|iPod/i.test(this.R.userAgent);
    };
    f.isSafari = function () {
      return (
        /Safari/i.test(this.R.userAgent) &&
        !this.isChrome() &&
        !this.isIe() &&
        !this.isEdge() &&
        !this.isFirefox() &&
        !this.isOpera()
      );
    };
    f.isChrome = function () {
      return (
        /Chrome|CriOS/i.test(this.R.userAgent) &&
        !this.isEdge() &&
        !this.isOpera()
      );
    };
    f.isFirefox = function () {
      return /Firefox|FxiOS/i.test(this.R.userAgent) && !this.isEdge();
    };
    f.isOpera = function () {
      return /OPR\/|Opera|OPiOS/i.test(this.R.userAgent);
    };
    f.isIe = function () {
      return /Trident|MSIE|IEMobile/i.test(this.R.userAgent);
    };
    f.isEdge = function () {
      return /Edge/i.test(this.R.userAgent);
    };
    f.isWebKit = function () {
      return /WebKit/i.test(this.R.userAgent) && !this.isEdge();
    };
    f.isWindows = function () {
      return /Windows/i.test(this.R.userAgent);
    };
    f.isStandalone = function () {
      return (
        (this.isIos() && this.R.standalone) ||
        (this.isChrome() &&
          this.w.matchMedia("(display-mode: standalone)").matches)
      );
    };
    f.isBot = function () {
      return /bot/i.test(this.R.userAgent);
    };
    f.getMajorVersion = function () {
      return this.isSafari()
        ? this.isIos()
          ? this.getIosMajorVersion() || 0
          : sj(this, /\sVersion\/(\d+)/, 1)
        : this.isChrome()
        ? sj(this, /(Chrome|CriOS)\/(\d+)/, 2)
        : this.isFirefox()
        ? sj(this, /(Firefox|FxiOS)\/(\d+)/, 2)
        : this.isOpera()
        ? sj(this, /(OPR|Opera|OPiOS)\/(\d+)/, 2)
        : this.isIe()
        ? sj(this, /MSIE\s(\d+)/, 1)
        : this.isEdge()
        ? sj(this, /Edge\/(\d+)/, 1)
        : 0;
    };
    function sj(a, b, c) {
      if (!a.R.userAgent) return 0;
      a = a.R.userAgent.match(b);
      return !a || c >= a.length ? 0 : parseInt(a[c], 10);
    }
    f.getIosVersionString = function () {
      if (!this.R.userAgent || !this.isIos()) return "";
      var a = this.R.userAgent.match(/OS ([0-9]+[_.][0-9]+([_.][0-9]+)?)\b/);
      return a ? (a = a[1].replace(/_/g, ".")) : "";
    };
    f.getIosMajorVersion = function () {
      var a = this.getIosVersionString();
      return "" == a ? null : Number(a.split(".")[0]);
    };
    function tj(a) {
      return "loading" != a.readyState && "uninitialized" != a.readyState;
    }
    function uj(a) {
      return "complete" == a.readyState;
    }
    function vj(a, b) {
      wj(a, tj, b);
    }
    function wj(a, b, c) {
      var d = b(a);
      if (d) c(a);
      else {
        var e = function () {
          b(a) &&
            (d || ((d = !0), c(a)),
            a.removeEventListener("readystatechange", e));
        };
        a.addEventListener("readystatechange", e);
      }
    }
    function xj(a) {
      return new Promise(function (b) {
        vj(a, b);
      });
    }
    function yj(a) {
      return new Promise(function (b) {
        wj(a, uj, b);
      });
    }
    var zj = ["<link rel=preload referrerpolicy=origin>"],
      Aj = null;
    function Bj(a) {
      this.xd = a.document;
      this.Fd = a.document.head;
      this.Ib = {};
      this.lg = {};
      this.qa = T(a);
      this.Ib[N(a.location.href).origin] = !0;
      a: {
        if (!Aj) {
          var b = a.document.createElement("link");
          var c = b.relList;
          b.as = "invalid-value";
          if (!c || !c.supports) {
            b = {};
            break a;
          }
          Aj = {
            preconnect: c.supports("preconnect"),
            preload: c.supports("preload"),
            onlyValidAs: "invalid-value" != b.as,
          };
        }
        b = Aj;
      }
      this.bc = b;
      this.O = U(a);
    }
    Bj.prototype.url = function (a, b, c) {
      var d = this;
      a.whenFirstVisible().then(function () {
        d.Vb(a, b, c);
      });
    };
    Bj.prototype.Vb = function (a, b, c) {
      if (Cj(b)) {
        a = N(b).origin;
        b = Date.now();
        var d = this.Ib[a];
        if (d && b < d) c && (this.Ib[a] = b + 18e4);
        else {
          this.Ib[a] = b + (c ? 18e4 : 1e4);
          if (!this.bc.preconnect) {
            var e = this.xd.createElement("link");
            e.setAttribute("rel", "dns-prefetch");
            e.setAttribute("href", a);
            this.Fd.appendChild(e);
          }
          var g = this.xd.createElement("link");
          g.setAttribute("rel", "preconnect");
          g.setAttribute("href", a);
          g.setAttribute("referrerpolicy", "origin");
          this.Fd.appendChild(g);
          this.O.delay(function () {
            e && e.parentNode && e.parentNode.removeChild(e);
            g.parentNode && g.parentNode.removeChild(g);
          }, 1e4);
          Dj(this, a);
        }
      }
    };
    Bj.prototype.preload = function (a, b, c) {
      var d = this;
      Cj(b) &&
        !this.lg[b] &&
        ((this.lg[b] = !0),
        this.url(a, b, !0),
        this.bc.preload &&
          (("document" == c && this.qa.isSafari()) ||
            a.whenFirstVisible().then(function () {
              var a = je(d.xd)(zj);
              a.setAttribute("href", b);
              a.as = d.bc.onlyValidAs ? "fetch" : "";
              d.Fd.appendChild(a);
            })));
    };
    function Cj(a) {
      return M(a, "https:") || M(a, "http:") ? !0 : !1;
    }
    function Dj(a, b) {
      if (!a.bc.preconnect && (a.qa.isSafari() || a.qa.isIos())) {
        var c = Date.now();
        a.Ib[b] = c + 18e4;
        a = new XMLHttpRequest();
        a.open(
          "HEAD",
          b +
            "/robots.txt?_AMP_safari_preconnect_polyfill_cachebust=" +
            (c - (c % 18e4)),
          !0
        );
        a.withCredentials = !0;
        a.send();
      }
    }
    function Ej() {
      var a = self.document;
      yj(a).then(function () {
        var b = a.defaultView;
        if (b) {
          b = S(b, "preconnect");
          var c = rd(a.documentElement),
            d = Xc(a);
          b.url(d, c.sourceUrl);
          b.url(d, c.canonicalUrl);
        }
      });
    }
    function Fj(a) {
      this.C = a;
      this.gg = Object.create(null);
    }
    Fj.prototype.addTransition = function (a, b, c) {
      this.gg[a + "|" + b] = c;
    };
    Fj.prototype.setState = function (a) {
      var b = this.C;
      this.C = a;
      (a = this.gg[b + "|" + a]) && a();
    };
    function Gj(a, b, c) {
      var d = this;
      this.O = U(a);
      this.Sg = b;
      this.Eg = c || 0;
      this.ra = -1;
      this.de = 0;
      this.Na = !1;
      this.xg = function () {
        d.Dc();
      };
    }
    Gj.prototype.isPending = function () {
      return -1 != this.ra;
    };
    Gj.prototype.schedule = function (a) {
      a = a || this.Eg;
      this.Na && 10 > a && (a = 10);
      var b = Date.now() + a;
      return !this.isPending() || -10 > b - this.de
        ? (this.cancel(),
          (this.de = b),
          (this.ra = this.O.delay(this.xg, a)),
          !0)
        : !1;
    };
    Gj.prototype.Dc = function () {
      this.ra = -1;
      this.de = 0;
      this.Na = !0;
      this.Sg();
      this.Na = !1;
    };
    Gj.prototype.cancel = function () {
      this.isPending() && (this.O.cancel(this.ra), (this.ra = -1));
    };
    function Hj() {
      this.K = [];
      this.Sb = {};
      this.zf = this.Af = 0;
    }
    f = Hj.prototype;
    f.getSize = function () {
      return this.K.length;
    };
    f.getLastEnqueueTime = function () {
      return this.Af;
    };
    f.getLastDequeueTime = function () {
      return this.zf;
    };
    f.getTaskById = function (a) {
      return this.Sb[a] || null;
    };
    f.enqueue = function (a) {
      this.K.push(a);
      this.Sb[a.id] = a;
      this.Af = Date.now();
    };
    f.dequeue = function (a) {
      if (!this.removeAtIndex(a, this.K.indexOf(this.Sb[a.id]))) return !1;
      this.zf = Date.now();
      return !0;
    };
    f.peek = function (a) {
      for (var b = 1e6, c = null, d = 0; d < this.K.length; d++) {
        var e = this.K[d],
          g = a(e);
        g < b && ((b = g), (c = e));
      }
      return c;
    };
    f.forEach = function (a) {
      this.K.forEach(a);
    };
    f.removeAtIndex = function (a, b) {
      var c = this.Sb[a.id];
      if (!c || this.K[b] != c) return !1;
      this.K.splice(b, 1);
      delete this.Sb[a.id];
      return !0;
    };
    f.purge = function (a) {
      for (var b = this.K.length; b--; )
        a(this.K[b]) && this.removeAtIndex(this.K[b], b);
    };
    function Ij(a) {
      if (T(a).isIe()) {
        a = a.document;
        for (
          var b = a.querySelectorAll(
              ".i-amphtml-intrinsic-sizer[src^=data:image/svg]"
            ),
            c = 0;
          c < b.length;
          c++
        ) {
          var d = b[c],
            e = Fb(d, ".i-amphtml-element");
          if (e) {
            var g = Ee(e.getAttribute("width"));
            e = Ee(e.getAttribute("height"));
            g && e && (d.src = se(a, g, e));
          }
        }
      }
    }
    function Jj(a) {
      return !T(a).isIe() || Kj(a)
        ? null
        : new Promise(function (b) {
            var c = Date.now() + 2e3,
              d = a.setInterval(function () {
                var e = Date.now(),
                  g = Kj(a);
                if (g || e > c)
                  a.clearInterval(d),
                    b(),
                    g || E().error("ie-media-bug", "IE media never resolved");
              }, 10);
          });
    }
    function Kj(a) {
      var b =
        "(min-width: " +
        (a.innerWidth - 1) +
        "px) AND (max-width: " +
        (a.innerWidth + 1 + "px)");
      try {
        return a.matchMedia(b).matches;
      } catch (c) {
        return E().error("ie-media-bug", "IE matchMedia failed: ", c), !0;
      }
    }
    function Lj(a) {
      var b = this;
      this.ampdoc = a;
      this.win = a.win;
      this.j = V(a);
      this.ia = this.j.isRuntimeOn();
      this.Wg = !1;
      this.Eh = 0;
      this.h = [];
      this.pd = this.Te = this.Ce = 0;
      this.ga = this.ampdoc.isVisible();
      this.rb = !1;
      this.jf = !0;
      this.fd = !1;
      this.vb = -1;
      this.Ca = !0;
      this.fb = -1;
      this.Td = this.oc = 0;
      this.Dc = new Gj(this.win, function () {
        return b.doPass();
      });
      this.Sf = new Gj(this.win, function () {
        b.Ca = !0;
        b.schedulePass();
      });
      this.oa = new Hj();
      this.D = new Hj();
      this.od = this.Ag.bind(this);
      this.ea = [];
      this.sa = [];
      this.Ld = !1;
      this.H = wd(this.ampdoc);
      this.F = vd(this.win);
      this.ed = new $i(this.win);
      this.Be = !1;
      this.Ta = 0;
      this.Ya = !1;
      this.Cc = [];
      this.yd = [];
      this.rh = P(this.win, "build-close-to-viewport");
      this.zg = P(this.win, "build-in-chunks");
      this.zh = P(this.win, "render-on-idle-fix");
      this.Ic = P(this.win, "remove-task-timeout");
      this.df = !1;
      this.kf = new L();
      this.pg = new Fj(this.ampdoc.getVisibilityState());
      this.ue = this.bg = 0;
      this.W = null;
      this.vf = !1;
      if (P(this.win, "intersect-resources")) {
        var c = Qb(this.win);
        a = this.ampdoc.isSingleDoc() && c ? this.win.document : null;
        try {
          (this.W = new IntersectionObserver(
            function (a) {
              return b.intersect(a);
            },
            { root: a, rootMargin: "250% 31.25%" }
          )),
            (this.Ca = !1);
        } catch (d) {
          E().warn("Resources", "Falling back to classic Resources:", d);
        }
      }
      this.H.onChanged(function (a) {
        b.oc = Date.now();
        b.Td = a.velocity;
        a.relayoutAll && ((b.Ca = !0), (b.Ya = !0));
        (!b.Ca && b.W) || b.schedulePass();
      });
      this.H.onScroll(function () {
        b.oc = Date.now();
      });
      this.ampdoc.onVisibilityChanged(function () {
        -1 == b.vb && b.ampdoc.isVisible() && (b.vb = Date.now());
        b.schedulePass();
      });
      this.j.onRuntimeState(function (a) {
        E().fine("Resources", "Runtime state:", a);
        b.ia = a;
        b.schedulePass(1);
      });
      yi(this.ampdoc, function () {
        Mj(b, b.pg);
        b.schedulePass(0);
      });
      Nj(this);
      this.W ||
        ((this.Tc = qf(
          this.win,
          function (a) {
            a = a.target;
            a.nodeType !== Node.ELEMENT_NODE ||
              a === b.H.getScrollingElement() ||
              b.yd.includes(a) ||
              (b.yd.push(a), b.schedulePass(70));
          },
          250
        )),
        Je(this.win.document, "scroll", this.Tc, { capture: !0, passive: !0 }));
    }
    f = Lj.prototype;
    f.isIntersectionExperimentOn = function () {
      return !!this.W;
    };
    f.intersect = function (a) {
      this.vf = !0;
      a.forEach(function (a) {
        var b = a.boundingClientRect;
        Z(a.target).premeasure(b);
      });
      this.schedulePass();
    };
    function Nj(a) {
      a.ampdoc.whenReady().then(function () {
        a.rb = !0;
        Oj(a);
        a.sa = null;
        S(a.win, "input").setupInputModeClasses(a.ampdoc);
        Ij(a.win);
        if (!a.W) {
          var b = Jj(a.win),
            c = function () {
              return a.Sf.schedule();
            };
          b ? b.then(c) : c();
          Promise.race([Oe(a.win), U(a.win).promise(3100)]).then(c);
          a.win.document.fonts &&
            "loaded" != a.win.document.fonts.status &&
            a.win.document.fonts.ready.then(c);
        }
      });
    }
    f.get = function () {
      return this.h.slice(0);
    };
    f.getAmpdoc = function () {
      return this.ampdoc;
    };
    f.getResourceForElement = function (a) {
      return Z(a);
    };
    f.getResourceForElementOptional = function (a) {
      return Z(a);
    };
    f.getScrollDirection = function () {
      return Math.sign(this.Td) || 1;
    };
    f.add = function (a) {
      this.Ce++;
      1 == this.Ce && this.H.ensureReadyForElements();
      var b = Z(a);
      b && 0 != b.getState() && !a.reconstructWhenReparented()
        ? (b.requestMeasure(),
          E().fine("Resources", "resource reused:", b.debugid))
        : ((b = new ki(++this.Eh, a, this)),
          E().fine("Resources", "resource added:", b.debugid));
      this.h.push(b);
      this.W ? this.W.observe(a) : this.Sf.schedule(1e3);
    };
    function Pj(a, b, c, d) {
      c = void 0 === c ? !1 : c;
      d = void 0 === d ? !1 : d;
      if (a.ia || a.Wg)
        if (
          "prerender" != a.ampdoc.getVisibilityState() ||
          b.prerenderAllowed()
        )
          if (
            !a.rh ||
            d ||
            b.isBuildRenderBlocking() ||
            b.renderOutsideViewport() ||
            (Qj(a) && b.idleRenderOutsideViewport())
          )
            a.rb
              ? Rj(a, b, d)
              : b.isBuilt() ||
                b.isBuilding() ||
                (c && a.sa.includes(b)) ||
                (a.sa.push(b), Oj(a));
    }
    function Oj(a) {
      if (!a.Ld)
        try {
          a.Ld = !0;
          for (var b = 0; b < a.sa.length; b++) {
            var c = a.sa[b],
              d;
            if (!(d = a.rb))
              a: {
                var e = a.ampdoc.getRootNode(),
                  g = c.element;
                do
                  if (g.nextSibling) {
                    d = !0;
                    break a;
                  }
                while ((g = g.parentNode) && g != e);
                d = !1;
              }
            d && (a.sa.splice(b--, 1), Rj(a, c));
          }
        } finally {
          a.Ld = !1;
        }
    }
    function Rj(a, b, c) {
      if (
        (void 0 === c ? 0 : c) ||
        (a.zg && 10 <= a.pd ? 0 : 20 > a.Te || a.ampdoc.hasBeenVisible()) ||
        b.isBuildRenderBlocking()
      )
        if ((c = b.build()))
          E().fine("Resources", "build resource:", b.debugid),
            a.Te++,
            a.pd++,
            c.then(
              function () {
                return a.schedulePass();
              },
              function (c) {
                Sj(a, b);
                if (!Cf(c)) throw c;
              }
            );
    }
    f.remove = function (a) {
      (a = Z(a)) && Sj(this, a);
    };
    function Sj(a, b) {
      var c = a.h.indexOf(b);
      -1 != c && a.h.splice(c, 1);
      b.isBuilt() && b.pauseOnRemove();
      a.W && a.W.unobserve(b.element);
      Tj(a, b, !0);
      E().fine("Resources", "resource removed:", b.debugid);
    }
    f.upgraded = function (a) {
      a = Z(a);
      Pj(this, a);
      E().fine("Resources", "resource upgraded:", a.debugid);
    };
    f.updateLayoutPriority = function (a, b) {
      var c = Z(a);
      c.updateLayoutPriority(b);
      this.D.forEach(function (a) {
        a.resource == c && (a.priority = b);
      });
      this.schedulePass();
    };
    f.schedulePass = function (a) {
      return this.Dc.schedule(a);
    };
    f.updateOrEnqueueMutateTask = function (a, b) {
      for (var c = null, d = 0; d < this.ea.length; d++)
        if (this.ea[d].resource == a) {
          c = this.ea[d];
          break;
        }
      c
        ? ((c.newHeight = b.newHeight),
          (c.newWidth = b.newWidth),
          (c.marginChange = b.marginChange),
          (c.event = b.event),
          (c.force = b.force || c.force),
          (c.callback = b.callback))
        : this.ea.push(b);
    };
    f.schedulePassVsync = function () {
      var a = this;
      this.Be ||
        ((this.Be = !0),
        this.F.mutate(function () {
          return a.doPass();
        }));
    };
    f.ampInitComplete = function () {
      this.fd = !0;
      E().fine("Resources", "ampInitComplete");
      this.schedulePass();
    };
    f.setRelayoutTop = function (a) {
      this.fb = -1 == this.fb ? a : Math.min(a, this.fb);
    };
    f.maybeHeightChanged = function () {
      this.Ya = !0;
    };
    f.onNextPass = function (a) {
      this.Cc.push(a);
    };
    f.doPass = function () {
      var a = this;
      if (this.ia) {
        this.ga = this.ampdoc.isVisible();
        this.pd = 0;
        if (this.rb && this.jf && this.fd) {
          this.jf = !1;
          var b = this.win.document,
            c = rd(this.ampdoc);
          this.j.sendMessage(
            "documentLoaded",
            K({
              title: b.title,
              sourceUrl: Jc(this.ampdoc.getUrl()),
              serverLayout: b.documentElement.hasAttribute("i-amphtml-element"),
              linkRels: c.linkRels,
              metaTags: { viewport: c.viewport },
              viewport: c.viewport,
            }),
            !0
          );
          this.Ta = this.H.getContentHeight();
          this.j.sendMessage("documentHeight", K({ height: this.Ta }), !0);
          E().fine("Resources", "document height on load: %s", this.Ta);
        }
        var d = this.H.getSize();
        E().fine(
          "Resources",
          "PASS: visible=",
          this.ga,
          ", relayoutAll=",
          this.Ca,
          ", relayoutTop=",
          this.fb,
          ", viewportSize=",
          d.width,
          d.height
        );
        this.Dc.cancel();
        this.Be = !1;
        this.pg.setState(this.ampdoc.getVisibilityState());
        !this.rb ||
          !this.fd ||
          (this.W && !this.vf) ||
          this.ampdoc.signals().get("ready-scan") ||
          (this.ampdoc.signals().signal("ready-scan"),
          E().fine("Resources", "signal: ready-scan"));
        this.Ya &&
          ((this.Ya = !1),
          this.F.measure(function () {
            var b = a.H.getContentHeight();
            b != a.Ta &&
              (a.j.sendMessage("documentHeight", K({ height: b }), !0),
              (a.Ta = b),
              E().fine("Resources", "document height changed: %s", a.Ta),
              a.H.contentHeightChanged());
          }));
        for (b = 0; b < this.Cc.length; b++) (0, this.Cc[b])();
        this.Cc.length = 0;
      } else E().fine("Resources", "runtime is off");
    };
    f.getSlowElementRatio = function () {
      return 0 === this.ue ? 0 : this.bg / this.ue;
    };
    function Uj(a) {
      var b = Date.now(),
        c = a.H.getRect(),
        d = c.height / 10,
        e = c.height / 10,
        g = (0.01 > Math.abs(a.Td) && 500 < b - a.oc) || 1e3 < b - a.oc;
      if (0 < a.ea.length) {
        E().fine("Resources", "change size requests:", a.ea.length);
        var h = a.ea;
        a.ea = [];
        var k = -1,
          l = [],
          n = 0;
        b = {};
        for (
          var u = 0;
          u < h.length;
          b = { Ra: b.Ra, Xb: b.Xb, G: b.G, P: b.P }, u++
        ) {
          b.G = h[u];
          var t = b.G;
          b.Ra = t.resource;
          t = t.event;
          var w = b.Ra.getLayoutBox(),
            x = 0,
            r = 0,
            p = 0,
            J = 0,
            H = w,
            sa = H.top,
            eb = H.bottom;
          b.P = void 0;
          b.G.marginChange &&
            ((b.P = b.G.marginChange.newMargins),
            (H = b.G.marginChange.currentMargins),
            void 0 != b.P.top && (x = b.P.top - H.top),
            void 0 != b.P.bottom && (r = b.P.bottom - H.bottom),
            void 0 != b.P.left && (p = b.P.left - H.left),
            void 0 != b.P.right && (J = b.P.right - H.right),
            x && (sa = w.top - H.top),
            r && (eb = w.bottom + H.bottom));
          var wa = b.G.newHeight - w.height;
          b.Xb = b.G.newWidth - w.width;
          var C = !1;
          if (0 != wa || 0 != x || 0 != r || 0 != b.Xb || 0 != p || 0 != J)
            if (b.G.force || !a.ga) C = !0;
            else if (
              a.ed.hasDescendantsOf(b.Ra.element) ||
              (t && t.userActivation && t.userActivation.hasBeenActive)
            )
              C = !0;
            else if (
              sa >= c.bottom - e ||
              (0 == x && w.bottom + Math.min(wa, 0) >= c.bottom - e)
            )
              C = !0;
            else if (1 < c.top && eb <= c.top + d) {
              if (0 > wa && c.top + n < -wa) continue;
              g ? ((n += wa), l.push(b.G)) : a.ea.push(b.G);
              continue;
            } else
              Vj(a, b.Ra, w)
                ? (C = !0)
                : 0 > wa ||
                  0 > x ||
                  0 > r ||
                  (b.G.newHeight == w.height
                    ? a.F.run(
                        {
                          measure: (function (a) {
                            return function (b) {
                              b.resize = !1;
                              var c = a.Ra.element.parentElement;
                              if (c) {
                                for (
                                  var d =
                                      (c.getLayoutWidth &&
                                        c.getLayoutWidth()) ||
                                      c.offsetWidth,
                                    e = a.Xb,
                                    g = 0;
                                  g < c.childElementCount;
                                  g++
                                )
                                  if (((e += c.children[g].offsetWidth), e > d))
                                    return;
                                b.resize = !0;
                              }
                            };
                          })(b),
                          mutate: (function (a) {
                            return function (b) {
                              b.resize &&
                                a.G.resource.changeSize(
                                  a.G.newHeight,
                                  a.G.newWidth,
                                  a.P
                                );
                              a.G.resource.overflowCallback(
                                !b.resize,
                                a.G.newHeight,
                                a.G.newWidth,
                                a.P
                              );
                            };
                          })(b),
                        },
                        {}
                      )
                    : b.G.resource.overflowCallback(
                        !0,
                        b.G.newHeight,
                        b.G.newWidth,
                        b.P
                      ));
          C &&
            (0 <= w.top && (k = -1 == k ? w.top : Math.min(k, w.top)),
            b.G.resource.changeSize(b.G.newHeight, b.G.newWidth, b.P),
            b.G.resource.overflowCallback(!1, b.G.newHeight, b.G.newWidth, b.P),
            (a.Ya = !0));
          b.G.callback && b.G.callback(C);
        }
        -1 != k && a.setRelayoutTop(k);
        0 < l.length &&
          a.F.run(
            {
              measure: function (b) {
                b.scrollHeight = a.H.getScrollHeight();
                b.scrollTop = a.H.getScrollTop();
              },
              mutate: function (b) {
                var c = -1;
                l.forEach(function (a) {
                  var b = a.resource.getLayoutBox();
                  c = -1 == c ? b.top : Math.min(c, b.top);
                  a.resource.changeSize(
                    a.newHeight,
                    a.newWidth,
                    a.marginChange ? a.marginChange.newMargins : void 0
                  );
                  a.callback && a.callback(!0);
                });
                -1 != c && a.setRelayoutTop(c);
                var d = a.H.getScrollHeight();
                d != b.scrollHeight &&
                  a.H.setScrollTop(b.scrollTop + (d - b.scrollHeight));
                a.Ya = !0;
              },
            },
            {}
          );
      }
    }
    function Vj(a, b, c) {
      var d = a.H.getContentHeight(),
        e = Math.max(0.85 * d, d - 1e3);
      a = c || b.getLayoutBox();
      var g = b.getInitialLayoutBox();
      return a.bottom >= e || g.bottom >= e;
    }
    function Wj(a, b) {
      b = void 0 === b ? !1 : b;
      var c = a.isDisplayed();
      a.measure(b);
      return !(c && !a.isDisplayed());
    }
    function Xj(a, b) {
      b.length &&
        a.F.mutate(function () {
          b.forEach(function (b) {
            b.unload();
            Tj(a, b);
          });
          E().fine("Resources", "unload:", b);
        });
    }
    function Yj(a) {
      a.df ||
        ((a.df = !0),
        Qc(a.win, [
          {
            experimentId: "render-on-idle-fix",
            isTrafficEligible: function () {
              return !0;
            },
            branches: ["21066311", "21066312"],
          },
        ]));
    }
    function Qj(a, b) {
      b = void 0 === b ? Date.now() : b;
      Yj(a);
      var c = a.oa.getLastDequeueTime();
      (b = 0 == a.oa.getSize() && 0 == a.D.getSize() && b > c + 5e3) &&
        !(b = 0 < c || !a.zh) &&
        ((a = a.win),
        (b =
          "21066311" ===
          (a.__AMP_EXPERIMENT_BRANCHES
            ? a.__AMP_EXPERIMENT_BRANCHES["render-on-idle-fix"]
            : null)));
      return b;
    }
    f.Ag = function (a) {
      var b = this.H.getRect(),
        c = a.resource.getLayoutBox(),
        d = Math.floor((c.top - b.top) / b.height);
      Math.sign(d) != this.getScrollDirection() && (d *= 2);
      d = Math.abs(d);
      return 10 * a.priority + d;
    };
    function Zj(a, b) {
      var c = Date.now();
      if (0 == a.oa.getSize())
        return -1 === a.vb ? 0 : Math.max(1e3 * b.priority - (c - a.vb), 0);
      var d = 0;
      a.oa.forEach(function (a) {
        d = Math.max(
          d,
          Math.max(1e3 * (b.priority - a.priority), 0) - (c - a.startTime)
        );
      });
      return d;
    }
    f.Ah = function (a) {
      this.D.getTaskById(a.id) || this.D.enqueue(a);
    };
    f.dg = function (a, b, c) {
      this.ue++;
      a.resource.isInViewport() && 0 <= this.vb && this.bg++;
      this.oa.dequeue(a);
      this.schedulePass(1e3);
      if (!b)
        return (
          E().info("Resources", "task failed:", a.id, a.resource.debugid, c),
          Promise.reject(c)
        );
    };
    function ak(a, b, c) {
      return 0 != b.getState() &&
        b.isDisplayed() &&
        (a.ga ||
          ("prerender" == a.ampdoc.getVisibilityState() &&
            b.prerenderAllowed())) &&
        (c ||
          b.isInViewport() ||
          b.renderOutsideViewport() ||
          b.idleRenderOutsideViewport())
        ? !0
        : !1;
    }
    f.scheduleLayoutOrPreload = function (a, b, c, d) {
      a.getState();
      a.isDisplayed();
      d = d || !1;
      ak(this, a, d) &&
        (b
          ? this.ua(a, "L", 0, c || 0, d, a.startLayout.bind(a))
          : this.ua(a, "P", 2, c || 0, d, a.startLayout.bind(a)));
    };
    f.ua = function (a, b, c, d, e, g) {
      b = a.getTaskId(b);
      a = {
        id: b,
        resource: a,
        priority: Math.max(a.getLayoutPriority(), d) + c,
        forceOutsideViewport: e,
        callback: g,
        scheduleTime: Date.now(),
        startTime: 0,
        promise: null,
      };
      E().fine("Resources", "schedule:", a.id, "at", a.scheduleTime);
      var h = this.D.getTaskById(b);
      if (!h || a.priority < h.priority)
        h && this.D.dequeue(h),
          this.D.enqueue(a),
          this.Ic ? this.schedulePass() : this.schedulePass(Zj(this, a));
      a.resource.layoutScheduled(a.scheduleTime);
    };
    f.whenFirstPass = function () {
      return this.kf.promise;
    };
    function Mj(a, b) {
      function c() {
        a.h.forEach(function (a) {
          return a.resume();
        });
        h();
      }
      function d() {
        a.h.forEach(function (b) {
          b.unload();
          Tj(a, b);
        });
        try {
          a.win.getSelection().removeAllRanges();
        } catch (k) {}
      }
      function e() {
        a.h.forEach(function (a) {
          return a.pause();
        });
      }
      function g() {}
      function h() {
        var b = a.H.getSize();
        if (0 < b.height && 0 < b.width) {
          0 < a.ea.length && Uj(a);
          b = Date.now();
          var c = a.Ca,
            d = a.fb,
            e = a.yd;
          a.Ca = !1;
          a.fb = -1;
          for (var g = 0, h = 0, x = 0; x < a.h.length; x++) {
            var r = a.h[x];
            0 != r.getState() || r.isBuilding() || Pj(a, r, !0);
            if (a.W)
              c &&
                (r.applySizesAndMediaQuery(),
                E().fine("Resources", "apply sizes/media query:", r.debugid));
            else if (c || !r.hasBeenMeasured() || 1 == r.getState())
              r.applySizesAndMediaQuery(),
                E().fine("Resources", "apply sizes/media query:", r.debugid),
                g++;
            r.isMeasureRequested() && h++;
          }
          var p;
          if (a.W)
            for (c = 0; c < a.h.length; c++) {
              if (
                ((d = a.h[c]), (g = d.isMeasureRequested()), !d.hasOwner() || g)
              )
                (h = d.hasBeenPremeasured()),
                  g && E().fine("Resources", "force remeasure:", d.debugid),
                  (x = !d.hasBeenMeasured() && "AMP-AD" == d.element.tagName),
                  (h || g || a.Ca || x) &&
                    !Wj(d, h) &&
                    (d.getState(), p || (p = []), p.push(d));
            }
          else if (0 < g || 0 < h || c || -1 != d || 0 < e.length)
            for (g = 0; g < a.h.length; g++)
              if (((h = a.h[g]), !h.hasOwner() || h.isMeasureRequested())) {
                x =
                  c ||
                  1 == h.getState() ||
                  !h.hasBeenMeasured() ||
                  h.isMeasureRequested() ||
                  (-1 != d && h.getLayoutBox().bottom >= d);
                if (!x)
                  for (r = 0; r < e.length; r++)
                    if (e[r].contains(h.element)) {
                      x = !0;
                      break;
                    }
                x && !Wj(h) && (p || (p = []), p.push(h));
              }
          e.length = 0;
          p && Xj(a, p);
          e = a.H.getRect();
          p = a.ga ? hc(e, 2) : e;
          e = a.ga ? hc(e, 0.25) : e;
          for (c = 0; c < a.h.length; c++)
            (d = a.h[c]),
              0 == d.getState() ||
                d.hasOwner() ||
                ((g = a.ga && d.isDisplayed() && d.overlaps(e)),
                d.setInViewport(g));
          if (p)
            for (e = 0; e < a.h.length; e++)
              (c = a.h[e]),
                !c.isBuilt() &&
                  !c.isBuilding() &&
                  !c.hasOwner() &&
                  c.hasBeenMeasured() &&
                  c.isDisplayed() &&
                  c.overlaps(p) &&
                  Pj(a, c, !0, !0),
                2 != c.getState() ||
                  c.hasOwner() ||
                  (c.isDisplayed() &&
                    c.overlaps(p) &&
                    a.scheduleLayoutOrPreload(c, !0));
          if (a.ga && Qj(a, b)) {
            for (p = b = 0; p < a.h.length && 4 > b; p++)
              (e = a.h[p]),
                2 == e.getState() &&
                  !e.hasOwner() &&
                  e.isDisplayed() &&
                  e.idleRenderOutsideViewport() &&
                  (E().fine(
                    "Resources",
                    "idleRenderOutsideViewport layout:",
                    e.debugid
                  ),
                  a.scheduleLayoutOrPreload(e, !1),
                  b++);
            for (p = 0; p < a.h.length && 4 > b; p++)
              (e = a.h[p]),
                2 == e.getState() &&
                  !e.hasOwner() &&
                  e.isDisplayed() &&
                  (E().fine("Resources", "idle layout:", e.debugid),
                  a.scheduleLayoutOrPreload(e, !1),
                  b++);
          }
          b = Date.now();
          e = -1;
          for (p = a.D.peek(a.od); p; ) {
            a.Ic || (e = Zj(a, p));
            E().fine(
              "Resources",
              "peek from queue:",
              p.id,
              "sched at",
              p.scheduleTime,
              "score",
              a.od(p),
              "timeout",
              e
            );
            if (!a.Ic && 16 < e) break;
            a.D.dequeue(p);
            (e = a.oa.getTaskById(p.id))
              ? ((p = a.Ah.bind(a, p)), e.promise.then(p, p))
              : ((e = p.resource),
                (c = !0),
                a.W
                  ? e.hasBeenPremeasured() && (c = e.isDisplayed(!0))
                  : e.measure(),
                c && ak(a, e, p.forceOutsideViewport)
                  ? ((p.promise = p.callback()),
                    (p.startTime = b),
                    E().fine("Resources", "exec:", p.id, "at", p.startTime),
                    a.oa.enqueue(p),
                    p.promise
                      .then(a.dg.bind(a, p, !0), a.dg.bind(a, p, !1))
                      .catch(Af))
                  : (E().fine("Resources", "cancelled", p.id),
                    e.layoutCanceled()));
            p = a.D.peek(a.od);
            e = -1;
          }
          E().fine(
            "Resources",
            "queue size:",
            a.D.getSize(),
            "exec size:",
            a.oa.getSize()
          );
          !a.Ic && 0 <= e
            ? (b = e)
            : ((b = 2 * (b - a.oa.getLastDequeueTime())),
              (b = Math.max(Math.min(3e4, b), 5e3)));
          0 < a.ea.length && (b = Math.min(b, 500));
          a.ga
            ? a.schedulePass(b)
              ? E().fine("Resources", "next pass:", b)
              : E().fine("Resources", "pass already scheduled")
            : E().fine("Resources", "document is not visible: no scheduling");
          a.kf.resolve();
        }
      }
      b.addTransition("prerender", "prerender", h);
      b.addTransition("prerender", "visible", h);
      b.addTransition("prerender", "hidden", h);
      b.addTransition("prerender", "inactive", h);
      b.addTransition("prerender", "paused", h);
      b.addTransition("visible", "visible", h);
      b.addTransition("visible", "hidden", h);
      b.addTransition("visible", "inactive", d);
      b.addTransition("visible", "paused", e);
      b.addTransition("hidden", "visible", h);
      b.addTransition("hidden", "hidden", h);
      b.addTransition("hidden", "inactive", d);
      b.addTransition("hidden", "paused", e);
      b.addTransition("inactive", "visible", c);
      b.addTransition("inactive", "hidden", c);
      b.addTransition("inactive", "inactive", g);
      b.addTransition("inactive", "paused", h);
      b.addTransition("paused", "visible", c);
      b.addTransition("paused", "hidden", h);
      b.addTransition("paused", "inactive", d);
      b.addTransition("paused", "paused", g);
    }
    function Tj(a, b, c) {
      1 == b.getState() &&
        (a.D.purge(function (a) {
          return a.resource == b;
        }),
        a.oa.purge(function (a) {
          return a.resource == b;
        }),
        jg(a.ea, function (a) {
          return a.resource === b;
        }));
      if (0 == b.getState() && c && a.sa) {
        var d = a.sa.indexOf(b);
        -1 != d && a.sa.splice(d, 1);
      }
    }
    var bk = /^i-amphtml-/;
    function ck(a, b) {
      this.ampdoc = a;
      b = b ? b.document.documentElement : a.getHeadNode();
      this.bb = td(a);
      this.H = wd(a);
      a = Tc(b, "action");
      a.addGlobalTarget("AMP", this.Mg.bind(this));
      a.addGlobalMethodHandler("hide", this.pf.bind(this));
      a.addGlobalMethodHandler("show", this.sf.bind(this));
      a.addGlobalMethodHandler("toggleVisibility", this.Qg.bind(this));
      a.addGlobalMethodHandler("scrollTo", this.rf.bind(this));
      a.addGlobalMethodHandler("focus", this.Ng.bind(this));
      a.addGlobalMethodHandler("toggleClass", this.Pg.bind(this));
    }
    ck.installInEmbedWindow = function (a, b) {
      Zc(a, "standard-actions", new ck(b, a));
    };
    f = ck.prototype;
    f.Mg = function (a) {
      if (!a.satisfiesTrust(2)) return null;
      var b = a.node,
        c = a.method,
        d = a.args,
        e = (b.ownerDocument || b).defaultView;
      switch (c) {
        case "pushState":
        case "setState":
          return md(
            b.nodeType === Node.DOCUMENT_NODE ? b.documentElement : b
          ).then(function (b) {
            F(b, "AMP-BIND is not installed.");
            return b.invoke(a);
          });
        case "navigateTo":
          return dk(this, a);
        case "closeOrNavigateTo":
          return ek(this, a);
        case "scrollTo":
          return (
            F(d.id, "AMP.scrollTo must provide element ID"),
            (a.node = Xc(b).getElementById(d.id)),
            this.rf(a)
          );
        case "goBack":
          return (
            bd(this.ampdoc, "history").goBack(!(!d || !0 !== d.navigate)), null
          );
        case "print":
          return e.print(), null;
        case "optoutOfCid":
          return gd(Yc(this.ampdoc), "cid")
            .then(function (a) {
              return a.optOut();
            })
            .catch(function (a) {
              E().error("STANDARD-ACTIONS", "Failed to opt out of CID", a);
            });
      }
      throw D().createError("Unknown AMP action ", c);
    };
    function dk(a, b) {
      var c = b.node,
        d = b.caller,
        e = b.method,
        g = b.args,
        h = (c.ownerDocument || c).defaultView;
      b = q();
      M(d.tagName, "AMP-") &&
        (b = d.getImpl().then(function (a) {
          "function" == typeof a.throwIfCannotNavigate &&
            a.throwIfCannotNavigate();
        }));
      return b.then(
        function () {
          bd(a.ampdoc, "navigation").navigateTo(h, g.url, "AMP." + e, {
            target: g.target,
            opener: g.opener,
          });
        },
        function (a) {
          D().error("STANDARD-ACTIONS", a.message);
        }
      );
    }
    function ek(a, b) {
      var c = b.node;
      c = (c.ownerDocument || c).defaultView;
      var d = c.parent != c,
        e = !1;
      c.opener && a.ampdoc.isSingleDoc() && !d && (c.close(), (e = c.closed));
      return e ? q() : dk(a, b);
    }
    f.rf = function (a) {
      var b = a.node,
        c = (a = a.args) && a.position,
        d = a && a.duration;
      c && !["top", "bottom", "center"].includes(c) && (c = void 0);
      Oa(d) || (d = void 0);
      return this.H.animateScrollIntoView(b, c, d);
    };
    f.Ng = function (a) {
      Pb(a.node);
      return null;
    };
    f.pf = function (a) {
      var b = a.node;
      b.classList.contains("i-amphtml-element")
        ? this.bb.mutateElement(
            b,
            function () {
              return b.collapse();
            },
            !0
          )
        : this.bb.mutateElement(b, function () {
            return qe(b, !1);
          });
      return null;
    };
    f.sf = function (a) {
      var b = a.node,
        c = b.ownerDocument.defaultView;
      if (b.classList.contains("i-amphtml-layout-nodisplay"))
        return (
          D().warn(
            "STANDARD-ACTIONS",
            "Elements with layout=nodisplay cannot be dynamically shown.",
            b
          ),
          null
        );
      this.bb.measureElement(function () {
        "none" != (c.getComputedStyle(b) || I()).display ||
          b.hasAttribute("hidden") ||
          D().warn(
            "STANDARD-ACTIONS",
            'Elements can only be dynamically shown when they have the "hidden" attribute set or when they were dynamically hidden.',
            b
          );
      });
      var d = b.hasAttribute("autofocus") ? b : b.querySelector("[autofocus]");
      d && T(c).isIos()
        ? (fk(b, d), this.bb.mutateElement(b, function () {}))
        : this.bb.mutateElement(b, function () {
            fk(b, d);
          });
      return null;
    };
    function fk(a, b) {
      a.classList.contains("i-amphtml-element") ? a.expand() : qe(a, !0);
      b && Pb(b);
    }
    f.Qg = function (a) {
      return a.node.hasAttribute("hidden") ? this.sf(a) : this.pf(a);
    };
    f.Pg = function (a) {
      var b = a.node,
        c = a.args,
        d = D().assertString(c["class"], "Argument 'class' must be a string.");
      if (bk.test(d)) return null;
      this.bb.mutateElement(b, function () {
        if (void 0 !== c.force) {
          var a = D().assertBoolean(
            c.force,
            "Optional argument 'force' must be a boolean."
          );
          b.classList.toggle(d, a);
        } else b.classList.toggle(d);
      });
      return null;
    };
    function gk(a, b, c) {
      this.ampdoc = a;
      this.j = b;
      this.o = c;
      this.zc = Kc(this.ampdoc.win.location);
      this.Pc = null;
    }
    f = gk.prototype;
    f.get = function (a) {
      return hk(this).then(function (b) {
        return b.get(a);
      });
    };
    f.set = function (a, b, c) {
      return this.setNonBoolean(a, b, c);
    };
    f.setNonBoolean = function (a, b, c) {
      return ik(this, function (d) {
        return d.set(a, b, c);
      });
    };
    f.remove = function (a) {
      return ik(this, function (b) {
        return b.remove(a);
      });
    };
    function hk(a) {
      a.Pc ||
        (a.Pc = a.o
          .loadBlob(a.zc)
          .then(function (a) {
            return a ? Tb(atob(a)) : {};
          })
          .catch(function (a) {
            E().expectedError("Storage", "Failed to load store: ", a);
            return {};
          })
          .then(function (a) {
            return new jk(a);
          }));
      return a.Pc;
    }
    function ik(a, b) {
      return hk(a)
        .then(function (c) {
          b(c);
          c = btoa(JSON.stringify(c.obj));
          return a.o.saveBlob(a.zc, c);
        })
        .then(a.yg.bind(a));
    }
    function kk(a) {
      a.j.onBroadcast(function (b) {
        "amp-storage-reset" == b.type &&
          b.origin == a.zc &&
          (E().fine("Storage", "Received reset message"), (a.Pc = null));
      });
    }
    f.yg = function () {
      E().fine("Storage", "Broadcasted reset message");
      this.j.broadcast({ type: "amp-storage-reset", origin: this.zc });
    };
    function jk(a) {
      this.obj = Rb(a);
      this.fh = 8;
      this.xa = this.obj.vv || Object.create(null);
      this.obj.vv || (this.obj.vv = this.xa);
    }
    jk.prototype.get = function (a) {
      return (a = this.xa[a]) ? a.v : void 0;
    };
    jk.prototype.set = function (a, b, c) {
      if (void 0 !== this.xa[a]) {
        a = this.xa[a];
        var d = Date.now();
        c && (d = a.t);
        a.v = b;
        a.t = d;
      } else this.xa[a] = K({ v: b, t: Date.now() });
      b = Object.keys(this.xa);
      if (b.length > this.fh) {
        var e = Infinity,
          g = null;
        for (c = 0; c < b.length; c++)
          (a = this.xa[b[c]]), a.t < e && ((g = b[c]), (e = a.t));
        g && delete this.xa[g];
      }
    };
    jk.prototype.remove = function (a) {
      delete this.xa[a];
    };
    function lk(a) {
      this.win = a;
      try {
        if ("localStorage" in this.win) {
          this.win.localStorage.getItem("test");
          var b = !0;
        } else b = !1;
      } catch (c) {
        b = !1;
      }
      this.Pd = b;
      this.Pd ||
        ((a = Error("localStorage not supported.")),
        E().expectedError("Storage", a));
    }
    lk.prototype.loadBlob = function (a) {
      var b = this;
      return new Promise(function (c) {
        b.Pd ? c(b.win.localStorage.getItem("amp-store:" + a)) : c(null);
      });
    };
    lk.prototype.saveBlob = function (a, b) {
      var c = this;
      return new Promise(function (d) {
        c.Pd && c.win.localStorage.setItem("amp-store:" + a, b);
        d();
      });
    };
    function mk(a) {
      this.j = a;
    }
    mk.prototype.loadBlob = function (a) {
      return this.j
        .sendMessageAwaitResponse("loadStore", K({ origin: a }))
        .then(function (a) {
          return a.blob;
        });
    };
    mk.prototype.saveBlob = function (a, b) {
      return this.j
        .sendMessageAwaitResponse("saveStore", K({ origin: a, blob: b }))
        .catch(function (a) {
          throw E().createExpectedError("Storage", "Failed to save store: ", a);
        });
    };
    function nk(a) {
      R(
        a,
        "storage",
        function () {
          var b = V(a),
            c = parseInt(b.getParam("storage"), 10) ? new mk(b) : new lk(a.win);
          b = new gk(a, b, c);
          kk(b);
          return b;
        },
        !0
      );
    }
    function ok(a) {
      this.win = a;
      this.Dh = this.win.Promise.resolve();
      this.Oh = 0;
      this.qd = {};
      this.qe = Date.now();
    }
    f = ok.prototype;
    f.timeSinceStart = function () {
      return Date.now() - this.qe;
    };
    f.delay = function (a, b) {
      var c = this;
      if (!b) {
        var d = "p" + this.Oh++;
        this.Dh.then(function () {
          c.qd[d] ? delete c.qd[d] : a();
        }).catch(Af);
        return d;
      }
      return this.win.setTimeout(function () {
        try {
          a();
        } catch (e) {
          throw (Af(e), e);
        }
      }, b);
    };
    f.cancel = function (a) {
      "string" == typeof a ? (this.qd[a] = !0) : this.win.clearTimeout(a);
    };
    f.promise = function (a) {
      var b = this;
      return new this.win.Promise(function (c) {
        if (-1 == b.delay(c, a)) throw Error("Failed to schedule timer.");
      });
    };
    f.timeoutPromise = function (a, b, c) {
      function d() {
        e.cancel(g);
      }
      var e = this,
        g,
        h = new this.win.Promise(function (b, d) {
          g = e.delay(function () {
            d(D().createError(c || "timeout"));
          }, a);
          if (-1 == g) throw Error("Failed to schedule timer.");
        });
      if (!b) return h;
      b.then(d, d);
      return this.win.Promise.race([h, b]);
    };
    f.poll = function (a, b) {
      var c = this;
      return new this.win.Promise(function (d) {
        var e = c.win.setInterval(function () {
          b() && (c.win.clearInterval(e), d());
        }, a);
      });
    };
    function pk(a, b) {
      a = b || a.getRootNode();
      this.sg = (a.ownerDocument || a).createElement("a");
      this.Sa = new nc();
    }
    pk.installInEmbedWindow = function (a, b) {
      Zc(a, "url", new pk(b, a.document));
    };
    f = pk.prototype;
    f.parse = function (a, b) {
      return zc(this.sg, a, b ? null : this.Sa);
    };
    function qk(a, b) {
      return "string" !== typeof b ? b : a.parse(b);
    }
    f.isProtocolValid = function (a) {
      return Gc(a);
    };
    f.getSourceOrigin = function (a) {
      return Kc(qk(this, a));
    };
    f.getSourceUrl = function (a) {
      return Jc(qk(this, a));
    };
    f.assertHttpsUrl = function (a, b, c) {
      return Ec(a, b, void 0 === c ? "source" : c);
    };
    f.assertAbsoluteHttpOrHttpsUrl = function (a) {
      F(
        /^https?:/i.test(a),
        'URL must start with "http://" or "https://". Invalid value: %s',
        a
      );
      return N(a).href;
    };
    f.isProxyOrigin = function (a) {
      return O(qk(this, a));
    };
    f.isSecure = function (a) {
      return Dc(qk(this, a));
    };
    f.getWinOrigin = function (a) {
      return a.origin || qk(this, a.location.href).origin;
    };
    f.getCdnUrlOnOrigin = function (a) {
      if (O(a)) return a;
      var b = qk(this, a),
        c = b.hash,
        d = b.pathname,
        e = b.search,
        g = encodeURIComponent(b.host);
      return B.cdn + "/c/" + g + d + e + c;
    };
    var rk = {
      navigationStart: 1,
      redirectStart: 1,
      redirectEnd: 1,
      fetchStart: 1,
      domainLookupStart: 1,
      domainLookupEnd: 1,
      connectStart: 1,
      secureConnectionStart: 1,
      connectEnd: 1,
      requestStart: 1,
      responseStart: 1,
      responseEnd: 1,
      domLoading: 2,
      domInteractive: 2,
      domContentLoaded: 2,
      domComplete: 2,
      loadEventStart: 3,
      loadEventEnd: 4,
    };
    function sk(a, b, c) {
      var d = rk[b] || 3,
        e = Math.max(d, c ? rk[c] || 3 : d);
      if (1 === e) var g = q();
      else if (2 === e) g = yj(a.document);
      else if (3 === e) g = Oe(a);
      else if (4 === e) {
        var h = U(a);
        g = Oe(a).then(function () {
          return h.promise(1);
        });
      }
      return g.then(function () {
        return tk(a, b, c);
      });
    }
    function tk(a, b, c) {
      var d = a.performance && a.performance.timing;
      if (d && 0 != d.navigationStart) {
        var e = void 0 === c ? d[b] : d[c] - d[b];
        if (Oa(e) && !(0 > e)) return e;
      }
    }
    function uk(a, b) {
      var c = a.performance && a.performance.navigation;
      if (c && void 0 !== c[b]) return c[b];
    }
    function vk(a) {
      this.ampdoc = a;
      this.Da = Object.create(null);
      this.Kd = !1;
      wk(this);
    }
    f = vk.prototype;
    f.hc = function () {
      this.initialize();
      this.Kd = !0;
    };
    f.initialize = function () {};
    f.get = function (a) {
      this.Kd || this.hc();
      return this.Da[a];
    };
    f.set = function (a, b) {
      a.indexOf("RETURN");
      this.Da[a] = this.Da[a] || { sync: void 0, async: void 0 };
      this.Da[a].sync = b;
      return this;
    };
    f.setAsync = function (a, b) {
      a.indexOf("RETURN");
      this.Da[a] = this.Da[a] || { sync: void 0, async: void 0 };
      this.Da[a].async = b;
      return this;
    };
    f.setBoth = function (a, b, c) {
      return this.set(a, b).setAsync(a, c);
    };
    f.getExpr = function (a, b) {
      this.Kd || this.hc();
      var c = Object.assign({}, this.Da, a);
      return xk(this, Object.keys(c), b);
    };
    function xk(a, b, c) {
      wk(a) &&
        (b = b.filter(function (b) {
          return wk(a).includes(b);
        }));
      c &&
        (b = b.filter(function (a) {
          return c[a];
        }));
      if (0 === b.length) return /_^/g;
      b.sort(function (a, b) {
        return b.length - a.length;
      });
      var d =
        "\\$?(" +
        b
          .map(function (a) {
            return "$" === a[0] ? "\\" + a : a;
          })
          .join("|") +
        ")";
      return new RegExp(d, "g");
    }
    function wk(a) {
      if (a.ye) return a.ye;
      if (a.ampdoc.isSingleDoc()) {
        var b = a.ampdoc.getRootNode();
        if (sf(["\u26a14email", "amp4email"], b)) return (a.ye = [""]), a.ye;
      }
    }
    function yk(a, b, c, d, e, g) {
      this.fa = a;
      this.lb = b;
      this.$e = c;
      this.gb = d;
      this.ha = e;
      this.Ig = !g;
    }
    yk.prototype.expand = function (a) {
      if (!a.length) return this.gb ? a : Promise.resolve(a);
      var b = this.fa.getExpr(this.lb, this.ha);
      b = zk(a, b);
      return b.length ? Ak(this, a, b) : this.gb ? a : Promise.resolve(a);
    };
    yk.prototype.getMacroNames = function (a) {
      var b = this.fa.getExpr(this.lb, this.ha);
      return (a = a.match(b)) ? a : [];
    };
    function zk(a, b) {
      var c = [];
      a.replace(b, function (a, b, g) {
        a = a.length;
        c.push({ start: g, stop: a + g - 1, name: b, length: a });
      });
      return c;
    }
    function Ak(a, b, c) {
      function d(u) {
        for (var t = "", w = [], x = []; g < b.length && h <= c.length; ) {
          var r = t.trim();
          if (k && g === k.start)
            r && w.push(l ? tb(t) : t),
              (t = void 0),
              (t =
                a.lb && mb.call(a.lb, k.name)
                  ? { name: k.name, prioritized: a.lb[k.name], encode: u }
                  : Object.assign({}, a.fa.get(k.name), {
                      name: k.name,
                      encode: u,
                    })),
              (g = k.stop + 1),
              (k = c[++h]),
              "(" === b[g]
                ? (g++, l++, e.push(t), w.push(d(!1)))
                : w.push(Bk(a, t)),
              (t = "");
          else {
            if ("`" === b[g])
              n
                ? ((n = !1), t.length && w.push(t))
                : ((n = !0), r && w.push(r)),
                (t = "");
            else if (l && "," === b[g] && !n)
              r && w.push(r),
                x.push(w),
                (w = []),
                "," === b[g + 1] && (x.push([""]), g++),
                (t = "");
            else {
              if (l && ")" === b[g] && !n)
                return (
                  g++,
                  l--,
                  (t = e.pop()),
                  r && w.push(r),
                  x.push(w),
                  Bk(a, t, x)
                );
              t += b[g];
            }
            g++;
          }
          g === b.length && t.length && w.push(t);
        }
        return a.gb
          ? w.join("")
          : Promise.all(w)
              .then(function (a) {
                return a.join("");
              })
              .catch(function (a) {
                ib(a);
                return "";
              });
      }
      var e = [],
        g = 0,
        h = 0,
        k = c[h],
        l = 0,
        n = !1;
      return d(a.Ig);
    }
    function Bk(a, b, c) {
      var d = b.encode,
        e = b.name;
      if (void 0 != b.prioritized) var g = b.prioritized;
      else
        a.gb && void 0 != b.sync
          ? (g = b.sync)
          : a.gb
          ? (D().error("Expander", "ignoring async replacement key: ", b.name),
            (g = ""))
          : (g = b.async || b.sync);
      return a.gb
        ? ((a = Ck(a, g, e, c)), d ? encodeURIComponent(a) : a)
        : Dk(a, g, e, c).then(function (a) {
            return d ? encodeURIComponent(a) : a;
          });
    }
    function Dk(a, b, c, d) {
      try {
        var e =
          "function" === typeof b
            ? d
              ? Ek(d).then(function (a) {
                  return b.apply(null, a);
                })
              : nb(b)
            : Promise.resolve(b);
        return e
          .then(function (b) {
            Fk(a, c, b, d);
            return null == b ? "" : b;
          })
          .catch(function (b) {
            ib(b);
            Fk(a, c, "", d);
            return Promise.resolve("");
          });
      } catch (g) {
        return ib(g), Fk(a, c, "", d), Promise.resolve("");
      }
    }
    function Ek(a) {
      return Promise.all(
        a.map(function (a) {
          return Promise.all(a).then(function (a) {
            return a.join("");
          });
        })
      );
    }
    function Ck(a, b, c, d) {
      try {
        var e = b;
        "function" === typeof b && (e = b.apply(null, Gk(d)));
        if (e && e.then) {
          D().error("Expander", "ignoring async macro resolution");
          var g = "";
        } else
          "string" === typeof e ||
          "number" === typeof e ||
          "boolean" === typeof e
            ? (Fk(a, c, e, d), (g = e.toString()))
            : (Fk(a, c, "", d), (g = ""));
        return g;
      } catch (h) {
        return ib(h), Fk(a, c, "", d), "";
      }
    }
    function Gk(a) {
      return a
        ? a.map(function (a) {
            return a.join("");
          })
        : a;
    }
    function Fk(a, b, c, d) {
      if (a.$e) {
        var e = "";
        d &&
          (e =
            "(" +
            d
              .filter(function (a) {
                return "" !== a;
              })
              .join(",") +
            ")");
        a.$e["" + b + e] = c || "";
      }
    }
    function Hk(a) {
      return function () {
        return new Date()[a]();
      };
    }
    function Ik(a, b) {
      return function () {
        return a[b];
      };
    }
    function Jk() {
      vk.apply(this, arguments);
    }
    m(Jk, vk);
    function Kk(a, b, c, d) {
      a.setBoth(
        b,
        function () {
          return tk(a.ampdoc.win, c, d);
        },
        function () {
          return sk(a.ampdoc.win, c, d);
        }
      );
    }
    Jk.prototype.initialize = function () {
      function a() {
        var a = Lk(b);
        return Fc(Mk(b, a.sourceUrl));
      }
      var b = this,
        c = this.ampdoc.win,
        d = this.ampdoc.getHeadNode(),
        e = wd(this.ampdoc);
      this.set("RANDOM", function () {
        return Math.random();
      });
      var g = Object.create(null);
      this.set("COUNTER", function (a) {
        return (g[a] = (g[a] | 0) + 1);
      });
      this.set("CANONICAL_URL", function () {
        return Lk(b).canonicalUrl;
      });
      this.set("CANONICAL_HOST", function () {
        return N(Lk(b).canonicalUrl).host;
      });
      this.set("CANONICAL_HOSTNAME", function () {
        return N(Lk(b).canonicalUrl).hostname;
      });
      this.set("CANONICAL_PATH", function () {
        return N(Lk(b).canonicalUrl).pathname;
      });
      this.setAsync("DOCUMENT_REFERRER", function () {
        return V(b.ampdoc).getReferrerUrl();
      });
      this.setAsync("EXTERNAL_REFERRER", function () {
        return V(b.ampdoc)
          .getReferrerUrl()
          .then(function (a) {
            return a
              ? N(Jc(a)).hostname === c.location.hostname
                ? null
                : a
              : null;
          });
      });
      this.set("TITLE", function () {
        var a = c.document;
        return a.originalTitle || a.title;
      });
      this.set("AMPDOC_URL", function () {
        return Fc(Mk(b, c.location.href));
      });
      this.set("AMPDOC_HOST", function () {
        var a = N(c.location.href);
        return a && a.host;
      });
      this.set("AMPDOC_HOSTNAME", function () {
        var a = N(c.location.href);
        return a && a.hostname;
      });
      this.setBoth(
        "SOURCE_URL",
        function () {
          return a();
        },
        function () {
          return rh().then(function () {
            return a();
          });
        }
      );
      this.set("SOURCE_HOST", function () {
        return N(Lk(b).sourceUrl).host;
      });
      this.set("SOURCE_HOSTNAME", function () {
        return N(Lk(b).sourceUrl).hostname;
      });
      this.set("SOURCE_PATH", function () {
        return N(Lk(b).sourceUrl).pathname;
      });
      this.set("PAGE_VIEW_ID", function () {
        return Lk(b).pageViewId;
      });
      this.setAsync("PAGE_VIEW_ID_64", function () {
        return Lk(b).pageViewId64;
      });
      this.setBoth(
        "QUERY_PARAM",
        function (a, c) {
          return Nk(b, a, void 0 === c ? "" : c);
        },
        function (a, c) {
          c = void 0 === c ? "" : c;
          return rh().then(function () {
            return Nk(b, a, c);
          });
        }
      );
      this.set("FRAGMENT_PARAM", function (a, c) {
        c = void 0 === c ? "" : c;
        F(
          a,
          "The first argument to FRAGMENT_PARAM, the fragment string param is required"
        );
        F("string" == typeof a, "param should be a string");
        var d = v(b.ampdoc.win.location.originalHash);
        return void 0 === d[a] ? c : d[a];
      });
      var h = null;
      this.setBoth(
        "CLIENT_ID",
        function (a) {
          return h ? h[a] : null;
        },
        function (a, c, e) {
          F(
            a,
            "The first argument to CLIENT_ID, the fallback Cookie name, is required"
          );
          var g = q();
          c &&
            (g = jd(d, "userNotificationManager", "amp-user-notification").then(
              function (a) {
                return a.get(c);
              }
            ));
          return gd(Yc(b.ampdoc), "cid")
            .then(function (b) {
              return b.get(
                { scope: a, createCookieIfNotPresent: !0, cookieName: e },
                g
              );
            })
            .then(function (b) {
              h || (h = Object.create(null));
              var c = e || a;
              b &&
                "_ga" == c &&
                ("string" === typeof b
                  ? (b = b.replace(/^(GA1|1)\.[\d-]+\./, ""))
                  : E().error(
                      "UrlReplacements",
                      "non-string cid, what is it?",
                      Object.keys(b)
                    ));
              return (h[a] = b);
            });
        }
      );
      this.setAsync("VARIANT", function (a) {
        return Ok(
          b,
          function (b) {
            var c = b[a];
            F(
              void 0 !== c,
              "The value passed to VARIANT() is not a valid experiment in <amp-experiment>:" +
                a
            );
            return null === c ? "none" : c;
          },
          "VARIANT"
        );
      });
      this.setAsync("VARIANTS", function () {
        return Ok(
          b,
          function (a) {
            var b = [],
              c;
            for (c in a) b.push(c + "." + (a[c] || "none"));
            return b.join("!");
          },
          "VARIANTS"
        );
      });
      this.setAsync("AMP_GEO", function (a) {
        return Pk(b, function (b) {
          return a
            ? (F(
                "ISOCountry" === a,
                "The value passed to AMP_GEO() is not valid name:" + a
              ),
              b[a] || "unknown")
            : b.matchedISOCountryGroups.join(",");
        });
      });
      this.set("TIMESTAMP", Hk("getTime"));
      this.set("TIMESTAMP_ISO", Hk("toISOString"));
      this.set("TIMEZONE", Hk("getTimezoneOffset"));
      this.set("SCROLL_HEIGHT", function () {
        return e.getScrollHeight();
      });
      this.set("SCROLL_WIDTH", function () {
        return e.getScrollWidth();
      });
      this.set("VIEWPORT_HEIGHT", function () {
        return e.getHeight();
      });
      this.set("VIEWPORT_WIDTH", function () {
        return e.getWidth();
      });
      var k = c.screen;
      this.set("SCREEN_WIDTH", Ik(k, "width"));
      this.set("SCREEN_HEIGHT", Ik(k, "height"));
      this.set("AVAILABLE_SCREEN_HEIGHT", Ik(k, "availHeight"));
      this.set("AVAILABLE_SCREEN_WIDTH", Ik(k, "availWidth"));
      this.set("SCREEN_COLOR_DEPTH", Ik(k, "colorDepth"));
      this.set("DOCUMENT_CHARSET", function () {
        var a = c.document;
        return a.characterSet || a.charset;
      });
      this.set("BROWSER_LANGUAGE", function () {
        var a = c.navigator;
        return (
          a.language ||
          a.userLanguage ||
          a.browserLanguage ||
          ""
        ).toLowerCase();
      });
      this.set("USER_AGENT", function () {
        return c.navigator.userAgent;
      });
      Kk(this, "PAGE_LOAD_TIME", "navigationStart", "loadEventStart");
      Kk(this, "DOMAIN_LOOKUP_TIME", "domainLookupStart", "domainLookupEnd");
      Kk(this, "TCP_CONNECT_TIME", "connectStart", "connectEnd");
      Kk(this, "SERVER_RESPONSE_TIME", "requestStart", "responseStart");
      Kk(this, "PAGE_DOWNLOAD_TIME", "responseStart", "responseEnd");
      Kk(this, "REDIRECT_TIME", "navigationStart", "fetchStart");
      Kk(this, "DOM_INTERACTIVE_TIME", "navigationStart", "domInteractive");
      Kk(
        this,
        "CONTENT_LOAD_TIME",
        "navigationStart",
        "domContentLoadedEventStart"
      );
      this.setAsync("ACCESS_READER_ID", function () {
        return Qk(
          b,
          function (a) {
            return a.getAccessReaderId();
          },
          "ACCESS_READER_ID"
        );
      });
      this.setAsync("AUTHDATA", function (a) {
        F(a, "The first argument to AUTHDATA, the field, is required");
        return Qk(
          b,
          function (b) {
            return b.getAuthdataField(a);
          },
          "AUTHDATA"
        );
      });
      this.setAsync("VIEWER", function () {
        return V(b.ampdoc)
          .getViewerOrigin()
          .then(function (a) {
            return void 0 == a ? "" : a;
          });
      });
      this.setAsync("TOTAL_ENGAGED_TIME", function () {
        return jd(d, "activity", "amp-analytics").then(function (a) {
          return a.getTotalEngagedTime();
        });
      });
      this.setAsync("INCREMENTAL_ENGAGED_TIME", function (a, b) {
        return jd(d, "activity", "amp-analytics").then(function (c) {
          return c.getIncrementalEngagedTime(a, "false" !== b);
        });
      });
      this.set("NAV_TIMING", function (a, b) {
        F(
          a,
          "The first argument to NAV_TIMING, the start attribute name, is required"
        );
        return tk(c, a, b);
      });
      this.setAsync("NAV_TIMING", function (a, b) {
        F(
          a,
          "The first argument to NAV_TIMING, the start attribute name, is required"
        );
        return sk(c, a, b);
      });
      this.set("NAV_TYPE", function () {
        return uk(c, "type");
      });
      this.set("NAV_REDIRECT_COUNT", function () {
        return uk(c, "redirectCount");
      });
      this.set("AMP_VERSION", function () {
        return "2008150009001";
      });
      this.set("BACKGROUND_STATE", function () {
        return b.ampdoc.isVisible() ? "0" : "1";
      });
      this.setAsync("VIDEO_STATE", function (a, c) {
        return bd(b.ampdoc, "video-manager").getVideoStateProperty(a, c);
      });
      this.setAsync("AMP_STATE", function (a) {
        var c = b.ampdoc.getRootNode();
        return md(c.documentElement || c).then(function (b) {
          return b ? b.getStateValue(a) || "" : "";
        });
      });
    };
    function Mk(a, b) {
      if ((a = Lk(a).replaceParams)) {
        b = Hc(b);
        var c = N(b);
        c = v(c.search);
        for (var d = K({}), e = Object.keys(a), g = 0; g < e.length; g++)
          mb.call(c, e[g]) || (d[e[g]] = a[e[g]]);
        a = Bc(b, d);
      } else a = b;
      return a;
    }
    function Lk(a) {
      return rd(a.ampdoc);
    }
    function Qk(a, b, c) {
      a = a.ampdoc.getHeadNode();
      return Promise.all([
        kd(a, "access", "amp-access"),
        kd(a, "subscriptions", "amp-subscriptions"),
      ]).then(function (a) {
        a = a[0] || a[1];
        return a
          ? b(a)
          : (D().error(
              "UrlReplacements",
              "Access or subsciptions service is not installed to access: ",
              c
            ),
            null);
      });
    }
    function Nk(a, b, c) {
      F(
        b,
        "The first argument to QUERY_PARAM, the query string param is required"
      );
      var d = N(Hc(a.ampdoc.win.location.href));
      d = v(d.search);
      a = Lk(a).replaceParams;
      return "undefined" !== typeof d[b]
        ? d[b]
        : a && "undefined" !== typeof a[b]
        ? a[b]
        : c;
    }
    function Ok(a, b, c) {
      return kd(a.ampdoc.getHeadNode(), "variant", "amp-experiment", !0)
        .then(function (a) {
          F(a, "To use variable %s, amp-experiment should be configured", c);
          return a.getVariants();
        })
        .then(function (a) {
          return b(a);
        });
    }
    function Pk(a, b) {
      a = a.ampdoc.getHeadNode();
      return kd(a, "geo", "amp-geo", !0).then(function (a) {
        F(a, "To use variable %s, amp-geo should be configured", "AMP_GEO");
        return b(a);
      });
    }
    function Rk(a, b) {
      this.ampdoc = a;
      this.fa = b;
    }
    f = Rk.prototype;
    f.expandStringSync = function (a, b, c) {
      return new yk(this.fa, b, void 0, !0, c, !0).expand(a);
    };
    f.expandStringAsync = function (a, b, c) {
      return new yk(this.fa, b, void 0, void 0, c, !0).expand(a);
    };
    f.expandUrlSync = function (a, b, c) {
      return Sk(a, new yk(this.fa, b, void 0, !0, c).expand(a));
    };
    f.expandUrlAsync = function (a, b, c, d) {
      return new yk(this.fa, b, void 0, void 0, c, d)
        .expand(a)
        .then(function (b) {
          return Sk(a, b);
        });
    };
    f.expandInputValueAsync = function (a) {
      return Tk(this, a, !1);
    };
    f.expandInputValueSync = function (a) {
      return Tk(this, a, !0);
    };
    function Tk(a, b, c) {
      "INPUT" == b.tagName && (b.getAttribute("type") || "").toLowerCase();
      var d = Uk(b);
      if (!d) return c ? b.value : Promise.resolve(b.value);
      void 0 === b["amp-original-value"] && (b["amp-original-value"] = b.value);
      a = new yk(a.fa, void 0, void 0, c, d).expand(
        b["amp-original-value"] || b.value
      );
      return c
        ? (b.value = a)
        : a.then(function (a) {
            return (b.value = a);
          });
    }
    function Uk(a, b) {
      if ((a = a.getAttribute("data-amp-replace"))) {
        var c = {};
        a.trim()
          .split(/\s+/)
          .forEach(function (a) {
            !b || mb.call(b, a)
              ? (c[a] = !0)
              : D().warn("URL", "Ignoring unsupported replacement", a);
          });
        return c;
      }
    }
    f.maybeExpandLink = function (a, b) {
      var c = a.getAttribute("data-amp-addparams") || "",
        d = Uk(a, {
          CLIENT_ID: !0,
          QUERY_PARAM: !0,
          PAGE_VIEW_ID: !0,
          PAGE_VIEW_ID_64: !0,
          NAV_TIMING: !0,
        });
      if (d || c || b) {
        var e = a["amp-original-href"] || a.getAttribute("href"),
          g = N(e);
        null == a["amp-original-href"] && (a["amp-original-href"] = e);
        a: {
          var h = rd(this.ampdoc);
          if (
            g.origin == N(h.canonicalUrl).origin ||
            g.origin == N(h.sourceUrl).origin
          )
            g = !0;
          else {
            if (
              (h = this.ampdoc.getMetaByName(
                "amp-link-variable-allowed-origin"
              ))
            ) {
              h = h.trim().split(/\s+/);
              for (var k = 0; k < h.length; k++)
                if (g.origin == N(h[k]).origin) {
                  g = !0;
                  break a;
                }
            }
            g = !1;
          }
        }
        var l = g;
        c &&
          (l
            ? ((g = c), (g = d ? this.expandUrlSync(g, void 0, d) : g))
            : (g = c),
          (c = g),
          (e = Bc(e, v(c))));
        if (!l)
          return (
            d &&
              D().warn(
                "URL",
                "Ignoring link replacement %s because the link does not go to the document's source, canonical, or allowlisted origin.",
                e
              ),
            (a.href = e)
          );
        b &&
          ((d && d.QUERY_PARAM) ||
            (b = this.expandUrlSync(b, void 0, { QUERY_PARAM: !0 })),
          (e = Bc(e, v(b))));
        e = d ? this.expandUrlSync(e, void 0, d) : e;
        return (a.href = e);
      }
    };
    f.collectVars = function (a, b) {
      var c = Object.create(null);
      return new yk(this.fa, b, c).expand(a).then(function () {
        return c;
      });
    };
    f.collectDisallowedVarsSync = function (a) {
      var b = a.getAttribute("src"),
        c = new yk(this.fa).getMacroNames(b),
        d = Uk(a);
      return d
        ? c.filter(function (a) {
            return !d[a];
          })
        : c;
    };
    function Sk(a, b) {
      var c = N(b, !0).protocol,
        d = N(a, !0).protocol;
      if (c != d)
        return (
          D().error(
            "UrlReplacements",
            "Illegal replacement of the protocol: ",
            a
          ),
          a
        );
      F(Gc(b), "The replacement url has invalid protocol: %s", b);
      return b;
    }
    f.getVariableSource = function () {
      return this.fa;
    };
    function Vk(a) {
      R(a, "url-replace", function (a) {
        return new Rk(a, new Jk(a));
      });
    }
    var Wk = /^(https?:\/\/)((www[0-9]*|web|ftp|wap|home|mobile|amp|m)\.)+/i;
    function Xk(a) {
      var b = this;
      this.ampdoc = a;
      this.win = a.win;
      this.Ab = Qb(this.win);
      this.ia = !0;
      this.Ac = !1;
      this.Yd = I();
      this.uc = I();
      this.Vf = new Y();
      this.Se = new Y();
      this.wc = this.Za = null;
      this.$a = [];
      this.xb = I();
      a.isSingleDoc() && Object.assign(this.xb, v(this.win.location.hash));
      this.ia = !parseInt(a.getParam("off"), 10);
      E().fine("Viewer", "- runtimeOn:", this.ia);
      this.Ac = !(!parseInt(a.getParam("history"), 10) && !this.Ac);
      E().fine("Viewer", "- history:", this.Ac);
      E().fine(
        "Viewer",
        "- visibilityState:",
        this.ampdoc.getVisibilityState()
      );
      this.zb = null;
      this.ah = O(N(this.ampdoc.win.location.href));
      var c = new L();
      this.gh = c.resolve;
      this.La = Yk(this, c.promise);
      this.ze = this.Wa = null;
      var d = a.getParam("referrer");
      this.Vc =
        this.isEmbedded() && null != d && !1 !== Zk(this)
          ? d
          : this.win.document.referrer;
      this.xh = new Promise(function (c) {
        b.isEmbedded() && null != a.getParam("referrer")
          ? b.isTrustedViewer().then(function (d) {
              d
                ? c(a.getParam("referrer"))
                : (c(b.win.document.referrer),
                  b.Vc != b.win.document.referrer &&
                    (E().expectedError(
                      "Viewer",
                      "Untrusted viewer referrer override: " +
                        b.Vc +
                        " at " +
                        b.wc
                    ),
                    (b.Vc = b.win.document.referrer)));
            })
          : c(b.win.document.referrer);
      });
      this.Kc = Fc(this.win.location.href || "");
      this.Vh = new Promise(function (c) {
        var d = a.getParam("viewerUrl");
        b.isEmbedded() && d
          ? b.isTrustedViewer().then(function (a) {
              a
                ? (b.Kc = d)
                : E().expectedError(
                    "Viewer",
                    "Untrusted viewer url override: " + d + " at " + b.wc
                  );
              c(b.Kc);
            })
          : c(b.Kc);
      });
      if (this.xb.click) {
        var e = Fc(this.win.location.href);
        e != this.win.location.href &&
          this.win.history.replaceState &&
          (this.win.location.originalHash ||
            (this.win.location.originalHash = this.win.location.hash),
          this.win.history.replaceState({}, "", e),
          delete this.xb.click,
          E().fine("Viewer", "replace fragment:" + this.win.location.href));
      }
      this.ampdoc.whenFirstVisible().then(function () {
        b.maybeUpdateFragmentForCct();
      });
      this.ampdoc.isSingleDoc() && $k(this);
    }
    function Yk(a, b) {
      return (a.Ab &&
        !a.win.__AMP_TEST_IFRAME &&
        (a.ampdoc.getParam("origin") ||
          a.ampdoc.getParam("visibilityState") ||
          -1 != a.win.location.search.indexOf("amp_js_v"))) ||
        a.isWebviewEmbedded() ||
        a.isCctEmbedded() ||
        !a.ampdoc.isSingleDoc()
        ? U(a.win)
            .timeoutPromise(2e4, b, "initMessagingChannel timeout")
            .catch(function (a) {
              (a = al(a)) &&
                sb(a.message, "initMessagingChannel timeout") &&
                (a = E().createExpectedError(a));
              Af(a);
              throw a;
            })
        : null;
    }
    f = Xk.prototype;
    f.getAmpDoc = function () {
      return this.ampdoc;
    };
    f.getParam = function (a) {
      return this.ampdoc.getParam(a);
    };
    f.hasCapability = function (a) {
      var b = this.ampdoc.getParam("cap");
      return b ? -1 != b.split(",").indexOf(a) : !1;
    };
    f.isEmbedded = function () {
      return !!this.La;
    };
    f.isWebviewEmbedded = function () {
      return !this.Ab && "1" == this.ampdoc.getParam("webview");
    };
    f.isCctEmbedded = function () {
      if (null != this.zb) return this.zb;
      this.zb = !1;
      if (!this.Ab) {
        var a = v(this.win.location.search);
        this.zb = "1" === a.amp_gsa && M(a.amp_js_v || "", "a");
      }
      return this.zb;
    };
    f.isProxyOrigin = function () {
      return this.ah;
    };
    f.maybeUpdateFragmentForCct = function () {
      if (this.isCctEmbedded() && this.win.history.replaceState) {
        var a = Kc(this.win.location.href),
          b = rd(this.ampdoc).canonicalUrl,
          c = Kc(b);
        bl(a, c) &&
          ((this.xb.ampshare = b),
          this.win.history.replaceState({}, "", "#" + Cc(this.xb)));
      }
    };
    function bl(a, b) {
      function c(a) {
        return 2 < a.split(".").length ? a.replace(Wk, "$1") : a;
      }
      return c(a) == c(b);
    }
    f.isRuntimeOn = function () {
      return this.ia;
    };
    f.toggleRuntime = function () {
      this.ia = !this.ia;
      E().fine("Viewer", "Runtime state:", this.ia);
      this.Vf.fire(this.ia);
    };
    f.onRuntimeState = function (a) {
      return this.Vf.add(a);
    };
    f.isOvertakeHistory = function () {
      return this.Ac;
    };
    f.getVisibilityState = function () {
      return this.ampdoc.getVisibilityState();
    };
    f.isVisible = function () {
      return this.ampdoc.isVisible();
    };
    f.hasBeenVisible = function () {
      return this.ampdoc.hasBeenVisible();
    };
    f.whenFirstVisible = function () {
      return this.ampdoc.whenFirstVisible();
    };
    f.whenNextVisible = function () {
      return this.ampdoc.whenNextVisible();
    };
    f.getFirstVisibleTime = function () {
      return this.ampdoc.getFirstVisibleTime();
    };
    f.getLastVisibleTime = function () {
      return this.ampdoc.getLastVisibleTime();
    };
    f.onVisibilityChanged = function (a) {
      return this.ampdoc.onVisibilityChanged(a);
    };
    function cl(a, b) {
      b &&
        ((b = E().assertEnumValue(We, b, "VisibilityState")),
        "hidden" === b &&
          (b =
            null != a.ampdoc.getLastVisibleTime() ? "inactive" : "prerender"),
        a.ampdoc.overrideVisibilityState(b),
        E().fine(
          "Viewer",
          "visibilitychange event:",
          a.ampdoc.getVisibilityState()
        ));
    }
    f.getResolvedViewerUrl = function () {
      return this.Kc;
    };
    f.getViewerUrl = function () {
      return this.Vh;
    };
    f.maybeGetMessagingOrigin = function () {
      return this.wc;
    };
    f.getUnconfirmedReferrerUrl = function () {
      return this.Vc;
    };
    f.getReferrerUrl = function () {
      return this.xh;
    };
    f.isTrustedViewer = function () {
      if (!this.Wa) {
        var a = Zk(this);
        this.Wa =
          void 0 !== a
            ? Promise.resolve(a)
            : this.La.then(function (a) {
                return a ? dl(a) : !1;
              });
      }
      return this.Wa;
    };
    function Zk(a) {
      if (!a.isEmbedded()) return !1;
      if (
        a.win.location.ancestorOrigins &&
        !a.isWebviewEmbedded() &&
        !a.isCctEmbedded()
      )
        return (
          0 < a.win.location.ancestorOrigins.length &&
          dl(a.win.location.ancestorOrigins[0])
        );
    }
    f.getViewerOrigin = function () {
      if (!this.ze) {
        var a;
        this.isEmbedded()
          ? this.win.location.ancestorOrigins &&
            0 < this.win.location.ancestorOrigins.length &&
            (a = this.win.location.ancestorOrigins[0])
          : (a = "");
        this.ze =
          void 0 !== a
            ? Promise.resolve(a)
            : U(this.win)
                .timeoutPromise(1e3, this.La)
                .catch(function () {
                  return "";
                });
      }
      return this.ze;
    };
    function dl(a) {
      var b = N(a);
      a = b.protocol;
      return "x-thread:" == a
        ? !0
        : "https:" != a
        ? !1
        : B.trustedViewerHosts.some(function (a) {
            return a.test(b.hostname);
          });
    }
    f.onMessage = function (a, b) {
      var c = this.Yd[a];
      c || ((c = new Y()), (this.Yd[a] = c));
      return c.add(b);
    };
    f.onMessageRespond = function (a, b) {
      var c = this;
      this.uc[a] = b;
      return function () {
        c.uc[a] === b && delete c.uc[a];
      };
    };
    f.receiveMessage = function (a, b) {
      if ("visibilitychange" == a) return cl(this, b.state), q();
      if ("broadcast" == a) return this.Se.fire(b), q();
      var c = this.Yd[a];
      c && c.fire(b);
      var d = this.uc[a];
      if (d) return d(b);
      if (c) return q();
      E().fine("Viewer", "unknown message:", a);
    };
    f.setMessageDeliverer = function (a, b) {
      var c = this;
      if (this.Za) throw Error("message channel can only be initialized once");
      if (null == b) throw Error("message channel must have an origin");
      E().fine("Viewer", "message channel established with origin: ", b);
      this.Za = a;
      this.wc = b;
      this.gh(b);
      0 < this.$a.length &&
        ((a = this.$a.slice(0)),
        (this.$a = []),
        a.forEach(function (a) {
          var b = c.Za(a.eventType, a.data, a.awaitResponse);
          a.awaitResponse && a.responseResolver(b);
        }));
    };
    f.sendMessage = function (a, b, c) {
      el(this, a, b, void 0 === c ? !1 : c, !1);
    };
    f.sendMessageAwaitResponse = function (a, b, c) {
      return el(this, a, b, void 0 === c ? !1 : c, !0);
    };
    function el(a, b, c, d, e) {
      if (a.Za)
        return nb(function () {
          return a.Za(b, c, e);
        });
      if (!a.La) return e ? Promise.reject(al()) : q();
      if (!d)
        return a.La.then(function () {
          return a.Za(b, c, e);
        });
      var g = kg(a.$a, function (a) {
        return a.eventType == b;
      });
      -1 != g
        ? ((d = a.$a.splice(g, 1)[0]),
          (d.data = c),
          (d.awaitResponse = d.awaitResponse || e))
        : ((d = new L()),
          (d = {
            eventType: b,
            data: c,
            awaitResponse: e,
            responsePromise: d.promise,
            responseResolver: d.resolve,
          }));
      a.$a.push(d);
      return d.responsePromise;
    }
    f.broadcast = function (a) {
      return this.La
        ? el(this, "broadcast", a, !1, !1).then(
            function () {
              return !0;
            },
            function () {
              return !1;
            }
          )
        : Promise.resolve(!1);
    };
    f.onBroadcast = function (a) {
      return this.Se.add(a);
    };
    f.whenMessagingReady = function () {
      return this.La;
    };
    f.replaceUrl = function (a) {
      if (a && this.ampdoc.isSingleDoc() && this.win.history.replaceState)
        try {
          var b = N(this.win.location.href),
            c = N(Fc(a) + this.win.location.hash);
          b.origin == c.origin &&
            Kc(b) == Kc(c) &&
            (this.win.history.replaceState({}, "", c.href),
            (this.win.location.originalHref = b.href),
            E().fine("Viewer", "replace url:" + c.href));
        } catch (d) {
          E().error("Viewer", "replaceUrl failed", d);
        }
    };
    function $k(a) {
      if ("visible" != a.ampdoc.getVisibilityState()) {
        var b = [],
          c = function () {
            return b.forEach(function (a) {
              return a();
            });
          },
          d = function () {
            cl(a, "visible");
            c();
            E().expectedError(
              "Viewer",
              "Received user action in non-visible doc"
            );
          },
          e = { capture: !0, passive: !0 };
        b.push(
          Ge(a.win, "keydown", d, e),
          Ge(a.win, "touchstart", d, e),
          Ge(a.win, "mousedown", d, e)
        );
        a.whenFirstVisible().then(c);
      }
    }
    function al(a) {
      if (a instanceof Error) {
        a = hb(a);
        a.message = "No messaging channel: " + a.message;
        var b = a;
      } else b = Error("No messaging channel: " + a);
      b.message = b.message.replace("\u200b\u200b\u200b", "");
      return b;
    }
    function fl(a, b, c, d) {
      var e = new gl(a, b, c, d);
      return e.solveYValueFromXValue.bind(e);
    }
    function gl(a, b, c, d) {
      this.y0 = this.x0 = 0;
      this.x1 = a;
      this.y1 = b;
      this.x2 = c;
      this.y2 = d;
      this.y3 = this.x3 = 1;
    }
    f = gl.prototype;
    f.solveYValueFromXValue = function (a) {
      return this.getPointY(this.solvePositionFromXValue(a));
    };
    f.solvePositionFromXValue = function (a) {
      var b = (a - this.x0) / (this.x3 - this.x0);
      if (0 >= b) return 0;
      if (1 <= b) return 1;
      for (var c = 0, d = 1, e = 0, g = 0; 8 > g; g++) {
        e = this.getPointX(b);
        var h = (this.getPointX(b + 1e-6) - e) / 1e-6;
        if (1e-6 > Math.abs(e - a)) return b;
        if (1e-6 > Math.abs(h)) break;
        else e < a ? (c = b) : (d = b), (b -= (e - a) / h);
      }
      for (g = 0; 1e-6 < Math.abs(e - a) && 8 > g; g++)
        e < a ? ((c = b), (b = (b + d) / 2)) : ((d = b), (b = (b + c) / 2)),
          (e = this.getPointX(b));
      return b;
    };
    f.getPointX = function (a) {
      if (0 == a) return this.x0;
      if (1 == a) return this.x3;
      var b = this.lerp(this.x0, this.x1, a),
        c = this.lerp(this.x1, this.x2, a),
        d = this.lerp(this.x2, this.x3, a);
      b = this.lerp(b, c, a);
      c = this.lerp(c, d, a);
      return this.lerp(b, c, a);
    };
    f.getPointY = function (a) {
      if (0 == a) return this.y0;
      if (1 == a) return this.y3;
      var b = this.lerp(this.y0, this.y1, a),
        c = this.lerp(this.y1, this.y2, a),
        d = this.lerp(this.y2, this.y3, a);
      b = this.lerp(b, c, a);
      c = this.lerp(c, d, a);
      return this.lerp(b, c, a);
    };
    f.lerp = function (a, b, c) {
      return a + c * (b - a);
    };
    var hl = fl(0.25, 0.1, 0.25, 1),
      il = fl(0.42, 0, 1, 1),
      jl = fl(0, 0, 0.58, 1),
      kl = fl(0.42, 0, 0.58, 1),
      ll = {
        linear: function (a) {
          return a;
        },
        ease: hl,
        "ease-in": il,
        "ease-out": jl,
        "ease-in-out": kl,
      };
    function ml(a) {
      if (!a) return null;
      if ("string" == typeof a) {
        if (-1 != a.indexOf("cubic-bezier")) {
          var b = a.match(/cubic-bezier\((.+)\)/);
          if (b && ((b = b[1].split(",").map(parseFloat)), 4 == b.length)) {
            for (var c = 0; 4 > c; c++) if (isNaN(b[c])) return null;
            return fl(b[0], b[1], b[2], b[3]);
          }
          return null;
        }
        return ll[a];
      }
      return a;
    }
    function nl() {}
    function ol(a) {
      this.qb = a;
      this.F = vd(self);
      this.bf = null;
      this.U = [];
    }
    function pl(a, b, c, d) {
      return new ol(a).setCurve(d).add(0, b, 1).start(c);
    }
    ol.prototype.setCurve = function (a) {
      a && (this.bf = ml(a));
      return this;
    };
    ol.prototype.add = function (a, b, c, d) {
      this.U.push({ delay: a, func: b, duration: c, curve: ml(d) });
      return this;
    };
    ol.prototype.start = function (a) {
      return new ql(this.F, this.qb, this.U, this.bf, a);
    };
    function ql(a, b, c, d, e) {
      this.F = a;
      this.qb = b;
      this.U = [];
      for (a = 0; a < c.length; a++) {
        var g = c[a];
        this.U.push({
          delay: g.delay,
          func: g.func,
          duration: g.duration,
          curve: g.curve || d,
          started: !1,
          completed: !1,
        });
      }
      this.Hg = e;
      this.qe = Date.now();
      this.Na = !0;
      this.C = {};
      c = new L();
      this.Qf = c.promise;
      this.Ch = c.resolve;
      this.yh = c.reject;
      this.eg = this.F.createAnimTask(this.qb, { mutate: this.Lh.bind(this) });
      this.F.canAnimate(this.qb)
        ? this.eg(this.C)
        : (E().warn("Animation", "cannot animate"), rl(this, !1, 0));
    }
    ql.prototype.then = function (a, b) {
      return a || b ? this.Qf.then(a, b) : this.Qf;
    };
    ql.prototype.thenAlways = function (a) {
      a = a || nl;
      return this.then(a, a);
    };
    ql.prototype.halt = function (a) {
      rl(this, !1, a || 0);
    };
    function rl(a, b, c) {
      if (a.Na) {
        a.Na = !1;
        if (0 != c) {
          1 < a.U.length &&
            a.U.sort(function (a, b) {
              return a.delay + a.duration - (b.delay + b.duration);
            });
          try {
            if (0 < c) for (c = 0; c < a.U.length; c++) a.U[c].func(1, !0);
            else for (var d = a.U.length - 1; 0 <= d; d--) a.U[d].func(0, !1);
          } catch (e) {
            E().error("Animation", "completion failed: " + e, e), (b = !1);
          }
        }
        b ? a.Ch() : a.yh();
      }
    }
    ql.prototype.Lh = function () {
      if (this.Na) {
        for (
          var a = Date.now(), b = Math.min((a - this.qe) / this.Hg, 1), c = 0;
          c < this.U.length;
          c++
        ) {
          var d = this.U[c];
          !d.started && b >= d.delay && (d.started = !0);
        }
        for (c = 0; c < this.U.length; c++)
          if (((d = this.U[c]), d.started && !d.completed))
            a: {
              var e;
              if (0 < d.duration) {
                var g = (e = Math.min((b - d.delay) / d.duration, 1));
                if (d.curve && 1 != g)
                  try {
                    g = d.curve(e);
                  } catch (h) {
                    E().error("Animation", "step curve failed: " + h, h);
                    rl(this, !1, 0);
                    break a;
                  }
              } else g = e = 1;
              1 == e && (d.completed = !0);
              try {
                d.func(g, d.completed);
              } catch (h) {
                E().error("Animation", "step mutate failed: " + h, h),
                  rl(this, !1, 0);
              }
            }
        1 == b
          ? rl(this, !0, 0)
          : this.F.canAnimate(this.qb)
          ? this.eg(this.C)
          : (E().warn("Animation", "cancel animation"), rl(this, !1, 0));
      }
    };
    function sl(a, b) {
      for (b = b.lastElementChild; b; b = b.previousElementSibling)
        if (0 < b.getBoundingClientRect().height) {
          var c = a.getComputedStyle(b) || I();
          if ("static" == c.position || "relative" == c.position) {
            var d = c;
            break;
          }
        }
      return d ? parseInt(d.marginBottom, 10) : 0;
    }
    function tl(a) {
      var b = this;
      this.win = a;
      this.F = vd(a);
      a = this.win.document;
      var c = a.documentElement,
        d = c.className;
      c.classList.add("i-amphtml-ios-embed");
      var e = a.createElement("html");
      this.V = e;
      e.id = "i-amphtml-wrapper";
      e.className = d;
      this.Fa = new Y();
      this.Ea = new Y();
      this.pb = this.Lf.bind(this);
      this.ob = function () {
        return b.Ea.fire();
      };
      this.X = 0;
      this.Xf = !1;
      wb(a, this.Yf.bind(this));
      xj(a).then(function () {
        c.classList.add("i-amphtml-ios-overscroll");
      });
      E().fine("Viewport", "initialized ios-embed-wrapper viewport");
    }
    f = tl.prototype;
    f.ensureReadyForElements = function () {
      this.Yf();
    };
    f.Yf = function () {
      if (!this.Xf) {
        this.Xf = !0;
        var a = this.win.document,
          b = a.body;
        a.documentElement.appendChild(this.V);
        this.V.appendChild(b);
        Object.defineProperty(a, "body", {
          get: function () {
            return b;
          },
        });
        this.Lf();
      }
    };
    f.connect = function () {
      this.win.addEventListener("resize", this.ob);
      this.V.addEventListener("scroll", this.pb);
    };
    f.disconnect = function () {
      this.win.removeEventListener("resize", this.ob);
      this.V.removeEventListener("scroll", this.pb);
    };
    f.getBorderTop = function () {
      return 1;
    };
    f.requiresFixedLayerTransfer = function () {
      return P(this.win, "ios-fixed-no-transfer")
        ? 12.2 > parseFloat(T(this.win).getIosVersionString())
        : !0;
    };
    f.overrideGlobalScrollTo = function () {
      return !0;
    };
    f.supportsPositionFixed = function () {
      return !0;
    };
    f.onScroll = function (a) {
      this.Fa.add(a);
    };
    f.onResize = function (a) {
      this.Ea.add(a);
    };
    f.updatePaddingTop = function (a) {
      this.X = a;
      oe(this.V, { "padding-top": a + "px" });
    };
    f.hideViewerHeader = function (a) {
      a || this.updatePaddingTop(0);
    };
    f.showViewerHeader = function (a, b) {
      a || this.updatePaddingTop(b);
    };
    f.disableScroll = function () {
      this.V.classList.add("i-amphtml-scroll-disabled");
    };
    f.resetScroll = function () {
      this.V.classList.remove("i-amphtml-scroll-disabled");
    };
    f.updateLightboxMode = function () {
      return q();
    };
    f.getSize = function () {
      return { width: this.win.innerWidth, height: this.win.innerHeight };
    };
    f.getScrollTop = function () {
      return this.V.scrollTop;
    };
    f.getScrollLeft = function () {
      return 0;
    };
    f.getScrollWidth = function () {
      return this.V.scrollWidth;
    };
    f.getScrollHeight = function () {
      return this.V.scrollHeight;
    };
    f.getContentHeight = function () {
      var a = this.win.document.body,
        b = a.getBoundingClientRect().height,
        c = sl(this.win, a);
      a = this.win.getComputedStyle(a) || I();
      return (
        parseInt(a.marginTop, 10) +
        this.X +
        b +
        c +
        parseInt(a.marginBottom, 10)
      );
    };
    f.contentHeightChanged = function () {};
    f.getLayoutRect = function (a, b, c, d) {
      a = d || a.getBoundingClientRect();
      var e = void 0 != c ? c : this.getScrollTop(),
        g = void 0 != b ? b : this.getScrollLeft();
      return fc(
        Math.round(a.left + g),
        Math.round(a.top + e),
        Math.round(a.width),
        Math.round(a.height)
      );
    };
    f.getRootClientRectAsync = function () {
      return Promise.resolve(null);
    };
    f.setScrollTop = function (a) {
      this.V.scrollTop = a || 1;
    };
    f.Lf = function (a) {
      0 == this.V.scrollTop &&
        ((this.V.scrollTop = 1), a && a.preventDefault());
      a && this.Fa.fire();
    };
    f.getScrollingElement = function () {
      return this.V;
    };
    f.getScrollingElementScrollsLikeViewport = function () {
      return !1;
    };
    function ul(a) {
      var b = this;
      this.ampdoc = a;
      this.win = a.win;
      this.qa = T(this.win);
      this.Fa = new Y();
      this.Ea = new Y();
      this.pb = this.Og.bind(this);
      this.ob = function () {
        return b.Ea.fire();
      };
      E().fine("Viewport", "initialized natural viewport");
    }
    f = ul.prototype;
    f.Og = function () {
      this.Fa.fire();
    };
    f.connect = function () {
      this.win.addEventListener("scroll", this.pb);
      this.win.addEventListener("resize", this.ob);
    };
    f.disconnect = function () {
      this.win.removeEventListener("scroll", this.pb);
      this.win.removeEventListener("resize", this.ob);
    };
    f.ensureReadyForElements = function () {};
    f.getBorderTop = function () {
      return 0;
    };
    f.requiresFixedLayerTransfer = function () {
      return !1;
    };
    f.overrideGlobalScrollTo = function () {
      return !1;
    };
    f.supportsPositionFixed = function () {
      return !0;
    };
    f.onScroll = function (a) {
      this.Fa.add(a);
    };
    f.onResize = function (a) {
      this.Ea.add(a);
    };
    f.updatePaddingTop = function (a) {
      oe(this.win.document.documentElement, { "padding-top": a + "px" });
    };
    f.hideViewerHeader = function (a) {
      a || this.updatePaddingTop(0);
    };
    f.showViewerHeader = function (a, b) {
      a || this.updatePaddingTop(b);
    };
    f.disableScroll = function () {
      this.win.document.documentElement.classList.add(
        "i-amphtml-scroll-disabled"
      );
    };
    f.resetScroll = function () {
      this.win.document.documentElement.classList.remove(
        "i-amphtml-scroll-disabled"
      );
    };
    f.updateLightboxMode = function () {
      return q();
    };
    f.getSize = function () {
      var a = this.win.innerWidth,
        b = this.win.innerHeight;
      if (a && b) return { width: a, height: b };
      var c = this.win.document.documentElement;
      return { width: c.clientWidth, height: c.clientHeight };
    };
    f.getScrollTop = function () {
      var a = this.getScrollingElement().scrollTop || this.win.pageYOffset,
        b = this.ampdoc.getRootNode().host;
      return b ? a - b.offsetTop : a;
    };
    f.getScrollLeft = function () {
      return 0;
    };
    f.getScrollWidth = function () {
      return this.getScrollingElement().scrollWidth;
    };
    f.getScrollHeight = function () {
      return this.getScrollingElement().scrollHeight;
    };
    f.getContentHeight = function () {
      var a = this.getScrollingElement(),
        b = a.getBoundingClientRect(),
        c = b.top + this.getScrollTop(),
        d = T(this.win).isSafari() ? sl(this.win, a) : 0;
      a = this.win.getComputedStyle(a) || I();
      return (
        c +
        parseInt(a.marginTop, 10) +
        b.height +
        d +
        parseInt(a.marginBottom, 10)
      );
    };
    f.contentHeightChanged = function () {};
    f.getLayoutRect = function (a, b, c, d) {
      a = d || a.getBoundingClientRect();
      c = void 0 != c ? c : this.getScrollTop();
      b = void 0 != b ? b : this.getScrollLeft();
      return fc(
        Math.round(a.left + b),
        Math.round(a.top + c),
        Math.round(a.width),
        Math.round(a.height)
      );
    };
    f.getRootClientRectAsync = function () {
      return Promise.resolve(null);
    };
    f.setScrollTop = function (a) {
      this.getScrollingElement().scrollTop = a;
    };
    f.getScrollingElement = function () {
      var a = this.win.document;
      return a.scrollingElement
        ? a.scrollingElement
        : a.body && this.qa.isWebKit()
        ? a.body
        : a.documentElement;
    };
    f.getScrollingElementScrollsLikeViewport = function () {
      return !0;
    };
    function vl(a, b) {
      return function (c) {
        return a + (b - a) * c;
      };
    }
    function wl(a, b, c) {
      var d = this,
        e = a.win;
      this.ampdoc = a;
      this.Cd = this.ampdoc.win.document;
      this.o = b;
      this.j = c;
      this.va = this.Y = this.Pb = null;
      this.me = !1;
      this.Mc = null;
      this.X = Number(c.getParam("paddingTop") || 0);
      this.nc = 0;
      this.O = U(e);
      this.F = vd(e);
      this.ne = !1;
      this.oe = null;
      this.Gh = 0;
      this.Ye = new Y();
      this.Fa = new Y();
      this.Ea = new Y();
      this.fe = this.Wb = void 0;
      this.M = null;
      this.j.onMessage("viewport", this.Sh.bind(this));
      this.j.onMessage("scroll", this.Uh.bind(this));
      this.j.onMessage("disableScroll", this.Gg.bind(this));
      this.j.isEmbedded() && this.o.updatePaddingTop(this.X);
      this.o.onScroll(this.Hh.bind(this));
      this.o.onResize(this.Uf.bind(this));
      this.onScroll(this.Ih.bind(this));
      this.ga = !1;
      this.ampdoc.onVisibilityChanged(this.jg.bind(this));
      this.jg();
      var g = this.Cd.documentElement;
      a.isSingleDoc() && g.classList.add("i-amphtml-singledoc");
      c.isEmbedded()
        ? g.classList.add("i-amphtml-embedded")
        : g.classList.add("i-amphtml-standalone");
      Qb(e) && g.classList.add("i-amphtml-iframed");
      "1" === c.getParam("webview") && g.classList.add("i-amphtml-webview");
      Qb(e) &&
        "scrollRestoration" in e.history &&
        (e.history.scrollRestoration = "manual");
      if (this.o.overrideGlobalScrollTo())
        try {
          Object.defineProperty(e, "scrollTo", {
            value: function (a, b) {
              return d.setScrollTop(b);
            },
          }),
            ["pageYOffset", "scrollY"].forEach(function (a) {
              Object.defineProperty(e, a, {
                get: function () {
                  return d.getScrollTop();
                },
              });
            });
        } catch (h) {}
    }
    f = wl.prototype;
    f.dispose = function () {
      this.o.disconnect();
    };
    f.ensureReadyForElements = function () {
      this.o.ensureReadyForElements();
    };
    f.jg = function () {
      var a = this.ampdoc.isVisible();
      a != this.ga &&
        ((this.ga = a)
          ? (this.o.connect(),
            this.Y && this.Uf(),
            this.va && ((this.va = null), this.getScrollTop()))
          : this.o.disconnect());
    };
    f.getPaddingTop = function () {
      return this.X;
    };
    f.getScrollTop = function () {
      null == this.va && (this.va = this.o.getScrollTop());
      return this.va;
    };
    f.getScrollLeft = function () {
      null == this.Mc && (this.Mc = this.o.getScrollLeft());
      return this.Mc;
    };
    f.setScrollTop = function (a) {
      this.va = null;
      this.o.setScrollTop(a);
    };
    f.updatePaddingBottom = function (a) {
      this.ampdoc.waitForBodyOpen().then(function (b) {
        X(b, "borderBottom", a + "px solid transparent");
      });
    };
    f.getSize = function () {
      if (this.Y) return this.Y;
      this.Y = this.o.getSize();
      if (0 == this.Y.width || 0 == this.Y.height) {
        var a = this.ampdoc.getVisibilityState();
        ("prerender" == a || "visible" == a) &&
          0.01 > Math.random() &&
          E().error("Viewport", "viewport has zero dimensions");
      }
      return this.Y;
    };
    f.getHeight = function () {
      return this.getSize().height;
    };
    f.getWidth = function () {
      return this.getSize().width;
    };
    f.getScrollWidth = function () {
      return this.o.getScrollWidth();
    };
    f.getScrollHeight = function () {
      return this.o.getScrollHeight();
    };
    f.getContentHeight = function () {
      return this.o.getContentHeight();
    };
    f.contentHeightChanged = function () {
      this.o.contentHeightChanged();
    };
    f.getRect = function () {
      if (null == this.Pb) {
        var a = this.getScrollTop(),
          b = this.getScrollLeft(),
          c = this.getSize();
        this.Pb = fc(b, a, c.width, c.height);
      }
      return this.Pb;
    };
    f.getLayoutRect = function (a, b) {
      var c = this.getScrollLeft(),
        d = this.getScrollTop(),
        e = ed(a, this.ampdoc.win);
      return e
        ? ((a = this.o.getLayoutRect(a, 0, 0, b)),
          (c = this.o.getLayoutRect(e, c, d)),
          fc(
            Math.round(a.left + c.left),
            Math.round(a.top + c.top),
            Math.round(a.width),
            Math.round(a.height)
          ))
        : this.o.getLayoutRect(a, c, d, b);
    };
    f.getClientRectAsync = function (a) {
      var b = this.F.measurePromise(function () {
          return a.getBoundingClientRect();
        }),
        c = this.o.getRootClientRectAsync(),
        d = ed(a, this.ampdoc.win);
      d &&
        (c = this.F.measurePromise(function () {
          return d.getBoundingClientRect();
        }));
      return Promise.all([b, c]).then(function (a) {
        var b = a[0];
        return (a = a[1])
          ? ic(b, a.left, a.top)
          : fc(
              Number(b.left),
              Number(b.top),
              Number(b.width),
              Number(b.height)
            );
      });
    };
    f.supportsPositionFixed = function () {
      return this.o.supportsPositionFixed();
    };
    f.isDeclaredFixed = function (a) {
      return this.M ? this.M.isDeclaredFixed(a) : !1;
    };
    f.scrollIntoView = function (a) {
      var b = this;
      return zl(this, a).then(function (c) {
        return Al(b, a, c);
      });
    };
    function Al(a, b, c) {
      var d = a.o.getLayoutRect(b).top;
      nb(function () {
        return Math.max(0, d - a.X);
      }).then(function (b) {
        return Bl(a, c, b);
      });
    }
    f.animateScrollIntoView = function (a, b, c, d) {
      var e = this;
      b = void 0 === b ? "top" : b;
      return zl(this, a).then(function (g) {
        return e.animateScrollWithinParent(a, g, b, c, d);
      });
    };
    f.animateScrollWithinParent = function (a, b, c, d, e) {
      var g = this,
        h = this.o.getLayoutRect(a),
        k = (b == this.o.getScrollingElement()
          ? this.getSize()
          : this.getLayoutRect(b)
        ).height;
      switch (c) {
        case "bottom":
          var l = -k + h.height;
          break;
        case "center":
          l = -k / 2 + h.height / 2;
          break;
        default:
          l = 0;
      }
      return Cl(this, b).then(function (a) {
        var c = Math.max(0, h.top - g.X + l);
        if (c != a) return Dl(g, b, a, c, d, e);
      });
    };
    function Dl(a, b, c, d, e, g) {
      g = void 0 === g ? "ease-in" : g;
      e =
        void 0 !== e
          ? e
          : Math.floor(Math.min(Math.max(0.65 * Math.abs(c - d), 0), 500));
      var h = vl(c, d);
      return pl(
        b,
        function (c) {
          Bl(a, b, h(c));
        },
        e,
        g
      ).thenAlways(function () {
        Bl(a, b, d);
      });
    }
    function zl(a, b) {
      return a.F.measurePromise(function () {
        return Fb(b, ".i-amphtml-scrollable") || a.o.getScrollingElement();
      });
    }
    function Bl(a, b, c) {
      b == a.o.getScrollingElement()
        ? a.o.setScrollTop(c)
        : a.F.mutate(function () {
            b.scrollTop = c;
          });
    }
    function Cl(a, b) {
      return b == a.o.getScrollingElement()
        ? nb(function () {
            return a.getScrollTop();
          })
        : a.F.measurePromise(function () {
            return b.scrollTop;
          });
    }
    f.getScrollingElement = function () {
      return this.oe ? this.oe : (this.oe = this.o.getScrollingElement());
    };
    f.onChanged = function (a) {
      return this.Ye.add(a);
    };
    f.onScroll = function (a) {
      return this.Fa.add(a);
    };
    f.onResize = function (a) {
      return this.Ea.add(a);
    };
    f.enterLightboxMode = function (a, b) {
      this.j.sendMessage("requestFullOverlay", {}, !0);
      this.enterOverlayMode();
      this.M && this.M.enterLightbox(a, b);
      a && this.maybeEnterFieLightboxMode(a);
      return this.o.updateLightboxMode(!0);
    };
    f.leaveLightboxMode = function (a) {
      this.j.sendMessage("cancelFullOverlay", {}, !0);
      this.M && this.M.leaveLightbox();
      this.leaveOverlayMode();
      a && this.maybeLeaveFieLightboxMode(a);
      return this.o.updateLightboxMode(!1);
    };
    f.isLightboxExperimentOn = function () {
      return P(this.ampdoc.win, "amp-lightbox-a4a-proto");
    };
    f.maybeEnterFieLightboxMode = function (a) {
      var b = El(this, a);
      b && (this.isLightboxExperimentOn(), b.enterFullOverlayMode());
    };
    f.maybeLeaveFieLightboxMode = function (a) {
      (a = El(this, a)) && a.leaveFullOverlayMode();
    };
    function El(a, b) {
      var c = ed(b, a.ampdoc.win);
      return c && c.__AMP_EMBED__;
    }
    f.enterOverlayMode = function () {
      this.disableTouchZoom();
      this.disableScroll();
    };
    f.leaveOverlayMode = function () {
      this.resetScroll();
      this.restoreOriginalTouchZoom();
    };
    f.disableScroll = function () {
      var a = this,
        b = this.ampdoc.win,
        c = b.document.documentElement,
        d;
      this.F.measure(function () {
        var e = (b.getComputedStyle(c) || I()).marginRight;
        var g = a.ampdoc.win;
        g = g.innerWidth - g.document.documentElement.clientWidth;
        d = parseInt(e, 10) + g;
      });
      this.F.mutate(function () {
        X(c, "margin-right", d, "px");
        a.o.disableScroll();
      });
    };
    f.resetScroll = function () {
      var a = this,
        b = this.ampdoc.win.document.documentElement;
      this.F.mutate(function () {
        X(b, "margin-right", "");
        a.o.resetScroll();
      });
    };
    f.resetTouchZoom = function () {
      var a = this,
        b = this.ampdoc.win.innerHeight,
        c = this.Cd.documentElement.clientHeight;
      (b && c && b === c) ||
        (this.disableTouchZoom() &&
          this.O.delay(function () {
            a.restoreOriginalTouchZoom();
          }, 50));
    };
    f.disableTouchZoom = function () {
      var a = Fl(this);
      if (!a) return !1;
      var b = a.content,
        c = { "maximum-scale": "1", "user-scalable": "no" };
      var d = Object.create(null);
      if (b)
        for (var e = b.split(/,|;/), g = 0; g < e.length; g++) {
          var h = e[g].split("="),
            k = h[0].trim();
          h = h[1];
          h = (h || "").trim();
          k && (d[k] = h);
        }
      e = !1;
      for (var l in c)
        d[l] !== c[l] &&
          ((e = !0), void 0 !== c[l] ? (d[l] = c[l]) : delete d[l]);
      if (e) {
        b = "";
        for (var n in d)
          0 < b.length && (b += ","), (b = d[n] ? b + (n + "=" + d[n]) : b + n);
        d = b;
      } else d = b;
      return Gl(this, d);
    };
    f.restoreOriginalTouchZoom = function () {
      return void 0 !== this.fe ? Gl(this, this.fe) : !1;
    };
    f.updateFixedLayer = function () {
      return this.M ? this.M.update() : q();
    };
    f.addToFixedLayer = function (a, b) {
      return this.M ? this.M.addElement(a, b) : q();
    };
    f.removeFromFixedLayer = function (a) {
      this.M && this.M.removeElement(a);
    };
    f.createFixedLayer = function (a) {
      var b = this;
      this.M = new a(
        this.ampdoc,
        this.F,
        this.o.getBorderTop(),
        this.X,
        this.o.requiresFixedLayerTransfer()
      );
      this.ampdoc.whenReady().then(function () {
        return b.M.setup();
      });
    };
    function Gl(a, b) {
      return (a = Fl(a)) && a.content != b
        ? (E().fine("Viewport", "changed viewport meta to:", b),
          (a.content = b),
          !0)
        : !1;
    }
    function Fl(a) {
      if (Qb(a.ampdoc.win)) return null;
      void 0 === a.Wb &&
        ((a.Wb = a.Cd.querySelector("meta[name=viewport]")),
        a.Wb && (a.fe = a.Wb.content));
      return a.Wb;
    }
    f.Uh = function (a) {
      this.setScrollTop(a.scrollTop);
    };
    f.Sh = function (a) {
      var b = this,
        c = a.paddingTop,
        d = a.duration || 0,
        e = a.curve,
        g = a["transient"];
      if (void 0 != c && c != this.X) {
        this.nc = this.X;
        this.X = c;
        var h = Hl(this, d, e, g);
        c < this.nc
          ? this.o.hideViewerHeader(g, this.nc)
          : h.then(function () {
              b.o.showViewerHeader(g, c);
            });
      }
    };
    f.Gg = function (a) {
      a ? this.disableScroll() : this.resetScroll();
    };
    function Hl(a, b, c, d) {
      a.M.updatePaddingTop(a.X, d);
      if (0 >= b) return q();
      var e = vl(a.nc - a.X, 0);
      return pl(
        a.ampdoc.getRootNode(),
        function (b) {
          b = e(b);
          a.M.transformMutate("translateY(" + b + "px)");
        },
        b,
        c
      ).thenAlways(function () {
        a.M.transformMutate(null);
      });
    }
    function Il(a, b, c) {
      var d = a.getSize(),
        e = a.getScrollTop(),
        g = a.getScrollLeft();
      E().fine(
        "Viewport",
        "changed event:",
        "relayoutAll=",
        b,
        "top=",
        e,
        "left=",
        g,
        "bottom=",
        e + d.height,
        "velocity=",
        c
      );
      a.Ye.fire({
        relayoutAll: b,
        top: e,
        left: g,
        width: d.width,
        height: d.height,
        velocity: c,
      });
    }
    f.Hh = function () {
      var a = this;
      this.Pb = null;
      this.Gh++;
      this.Mc = this.o.getScrollLeft();
      var b = this.o.getScrollTop();
      if (!(0 > b)) {
        this.va = b;
        if (!this.ne) {
          this.ne = !0;
          var c = Date.now();
          this.O.delay(function () {
            a.F.measure(function () {
              a.Tc(c, b);
            });
          }, 36);
        }
        this.Fa.fire();
      }
    };
    f.Tc = function (a, b) {
      var c = this,
        d = (this.va = this.o.getScrollTop()),
        e = Date.now(),
        g = 0;
      e != a && (g = (d - b) / (e - a));
      E().fine("Viewport", "scroll: scrollTop=" + d + "; velocity=" + g);
      0.03 > Math.abs(g)
        ? (Il(this, !1, g), (this.ne = !1))
        : this.O.delay(function () {
            return c.F.measure(c.Tc.bind(c, e, d));
          }, 20);
    };
    f.Ih = function () {
      var a = this;
      this.me ||
        ((this.me = !0),
        this.F.measure(function () {
          a.me = !1;
          a.j.sendMessage("scroll", K({ scrollTop: a.getScrollTop() }), !0);
        }));
    };
    f.Uf = function () {
      var a = this;
      this.Pb = null;
      var b = this.Y;
      this.Y = null;
      var c = this.getSize();
      this.updateFixedLayer().then(function () {
        var d = !b || b.width != c.width;
        Il(a, d, 0);
        (d || b.height != c.height) &&
          a.Ea.fire({ relayoutAll: d, width: c.width, height: c.height });
      });
    };
    function Jl(a) {
      var b = V(a),
        c = a.win;
      c =
        a.isSingleDoc() &&
        (T(c).isIos() &&
        Qb(c) &&
        b.isEmbedded() &&
        !b.hasCapability("iframeScroll")
          ? Kl
          : Ll) == Kl
          ? new tl(c)
          : new ul(a);
      return new wl(a, c, b);
    }
    var Ll = "natural",
      Kl = "natural-ios-embed";
    var Ml = ["<div class=i-amphtml-jank-meter></div>"];
    function Nl(a) {
      this.w = a;
      this.sc = this.rc = this.Ub = this.$b = 0;
      this.Qb = null;
      this.ta = ad(a);
      this.Fb = this.He = this.Ie = null;
      Ol(this);
    }
    Nl.prototype.onScheduled = function () {
      Pl(this) && null == this.Qb && (this.Qb = this.w.Date.now());
    };
    Nl.prototype.onRun = function () {
      if (Pl(this) && null != this.Qb) {
        var a = this.w.Date.now() - this.Qb;
        this.Qb = null;
        this.Ub++;
        16 < a && (this.$b++, E().info("JANK", "Paint latency: " + a + "ms"));
        if (this.ta && 200 == this.Ub) {
          var b = this.w.Math.floor(((this.Ub - this.$b) / this.Ub) * 100);
          this.ta.tickDelta("gfp", b);
          this.ta.tickDelta("bf", this.$b);
          this.Fb &&
            (this.ta.tickDelta("lts", this.sc),
            this.ta.tickDelta("ltc", this.rc),
            this.Fb.disconnect(),
            (this.Fb = null));
          var c = 0;
          this.Ie &&
            null != this.He &&
            ((c = this.w.Math.max(
              0,
              this.w.Math.floor(100 * this.Ie.level - this.He)
            )),
            this.ta.tickDelta("bd", c));
          this.ta.flush();
          if (P(this.w, "jank-meter")) {
            var d = c,
              e = this.w.document,
              g = je(e)(Ml);
            g.textContent =
              "bf:" +
              this.$b +
              ", lts: " +
              this.sc +
              ", ltc:" +
              (this.rc + ", bd:" + d);
            e.body.appendChild(g);
          }
        }
      }
    };
    function Pl(a) {
      return (
        P(a.w, "jank-meter") ||
        (a.ta && a.ta.isPerformanceTrackingOn() && 200 > a.Ub)
      );
    }
    function Ol(a) {
      Pl(a) &&
        Ql(a.w) &&
        ((a.Fb = new a.w.PerformanceObserver(function (b) {
          for (var c = b.getEntries(), d = 0; d < c.length; d++)
            if ("longtask" == c[d].entryType) {
              var e = a.w.Math.floor(c[d].duration / 50);
              "cross-origin-descendant" == c[d].name
                ? ((a.rc += e),
                  D().info(
                    "LONGTASK",
                    "from child frame " + c[d].duration + "ms"
                  ))
                : ((a.sc += e),
                  E().info(
                    "LONGTASK",
                    "from self frame " + c[d].duration + "ms"
                  ));
            }
        })),
        a.Fb.observe({ entryTypes: ["longtask"] }));
    }
    function Ql(a) {
      return (
        !!a.PerformanceObserver &&
        !!a.TaskAttributionTiming &&
        "containerName" in a.TaskAttributionTiming.prototype
      );
    }
    function Rl(a) {
      var b = ne(a, "visibilityState", !0);
      if (a[b]) return a[b];
      var c = ne(a, "hidden", !0);
      return a[c] ? (a[c] ? "hidden" : "visible") : "visible";
    }
    function Sl(a, b) {
      if (a.addEventListener) {
        var c = Tl(a);
        c && a.addEventListener(c, b);
      }
    }
    function Ul(a, b) {
      if (a.removeEventListener) {
        var c = Tl(a);
        c && a.removeEventListener(c, b);
      }
    }
    function Tl(a) {
      a = ne(a, "hidden", !0);
      var b = a.indexOf("Hidden");
      return -1 != b
        ? a.substring(0, b) + "Visibilitychange"
        : "visibilitychange";
    }
    function Vl(a) {
      this.win = a;
      this.ya = qd(this.win);
      this.wh = Wl(this);
      this.K = [];
      this.ce = [];
      this.re = [];
      this.be = [];
      this.ra = !1;
      this.$d = this.xc = null;
      this.nd = this.Fh.bind(this);
      this.Ug = new Gj(this.win, this.nd, 16);
      this.Ge = new Gj(this.win, this.nd, 40);
      this.md = this.qh.bind(this);
      if (this.ya.isSingleDoc())
        this.ya.getSingleDoc().onVisibilityChanged(this.md);
      else Sl(this.win.document, this.md);
      this.yf = new Nl(this.win);
    }
    f = Vl.prototype;
    f.dispose = function () {
      Ul(this.win.document, this.md);
    };
    f.qh = function () {
      this.ra && Xl(this);
    };
    f.run = function (a, b) {
      this.K.push(a);
      this.re.push(b || void 0);
      this.ua();
    };
    f.runPromise = function (a, b) {
      this.run(a, b);
      if (this.xc) return this.xc;
      a = new L();
      this.$d = a.resolve;
      return (this.xc = a.promise);
    };
    f.createTask = function (a) {
      var b = this;
      return function (c) {
        b.run(a, c);
      };
    };
    f.mutate = function (a) {
      this.run({ measure: void 0, mutate: a });
    };
    f.mutatePromise = function (a) {
      return this.runPromise({ measure: void 0, mutate: a });
    };
    f.measure = function (a) {
      this.run({ measure: a, mutate: void 0 });
    };
    f.measurePromise = function (a) {
      var b = this;
      return new Promise(function (c) {
        b.measure(function () {
          c(a());
        });
      });
    };
    f.canAnimate = function (a) {
      return Yl(this, a);
    };
    function Yl(a, b) {
      return "visible" != Rl(a.win.document)
        ? !1
        : a.ya.isSingleDoc()
        ? a.ya.getSingleDoc().isVisible()
        : b
        ? ((a = a.ya.getAmpDocIfAvailable(b)), !a || a.isVisible())
        : !0;
    }
    f.runAnim = function (a, b, c) {
      if (!Yl(this, a))
        return (
          E().warn(
            "VSYNC",
            "Did not schedule a vsync request, because document was invisible"
          ),
          !1
        );
      this.run(b, c);
      return !0;
    };
    f.createAnimTask = function (a, b) {
      var c = this;
      return function (d) {
        return c.runAnim(a, b, d);
      };
    };
    f.runAnimMutateSeries = function (a, b, c) {
      var d = this;
      return Yl(this, a)
        ? new Promise(function (e, g) {
            var h = Date.now(),
              k = 0,
              l = d.createAnimTask(a, {
                mutate: function (a) {
                  var d = Date.now() - h;
                  b(d, d - k, a)
                    ? c && d > c
                      ? g(Error("timeout"))
                      : ((k = d), l(a))
                    : e();
                },
              });
            l({});
          })
        : Promise.reject(Error("CANCELLED"));
    };
    f.ua = function () {
      this.ra || ((this.ra = !0), this.yf.onScheduled(), Xl(this));
    };
    function Xl(a) {
      Yl(a) ? (a.wh(a.nd), a.Ge.schedule()) : a.Ug.schedule();
    }
    f.Fh = function () {
      this.Ge.cancel();
      this.ra = !1;
      this.yf.onRun();
      var a = this.K,
        b = this.re,
        c = this.$d;
      this.xc = this.$d = null;
      this.K = this.ce;
      this.re = this.be;
      for (var d = 0; d < a.length; d++)
        a[d].measure && !Zl(a[d].measure, b[d]) && (a[d].mutate = void 0);
      for (d = 0; d < a.length; d++) a[d].mutate && Zl(a[d].mutate, b[d]);
      this.ce = a;
      this.be = b;
      this.ce.length = 0;
      this.be.length = 0;
      c && c();
    };
    function Wl(a) {
      var b = a.win.requestAnimationFrame || a.win.webkitRequestAnimationFrame;
      if (b) return b.bind(a.win);
      var c = 0;
      return function (b) {
        var d = Date.now(),
          g = Math.max(0, 16 - (d - c));
        c = d + g;
        a.win.setTimeout(b, g);
      };
    }
    function Zl(a, b) {
      try {
        void 0 !== a(b) &&
          E().error(
            "VSYNC",
            "callback returned a value but vsync cannot propogate it: %s",
            a.toString()
          );
      } catch (c) {
        return ib(c), !1;
      }
      return !0;
    }
    function $l(a) {
      Q(a, "crypto", hh);
      Q(a, "batched-xhr", yg);
      Q(a, "platform", rj);
      Q(a, "templates", Te);
      Q(a, "timer", ok);
      Q(a, "timer", ok);
      Q(a, "vsync", Vl);
      Q(a, "xhr", wg);
      Q(a, "input", Xi);
      Q(a, "preconnect", Bj);
    }
    function am(a) {
      var b = !!a.getParent();
      R(a, "url", pk, !0);
      b ? id(a, "documentInfo") : R(a, "documentInfo", kh);
      b ? id(a, "cid") : R(a, "cid", Og);
      b ? id(a, "viewer") : R(a, "viewer", Xk, !0);
      b ? id(a, "viewport") : R(a, "viewport", Jl, !0);
      R(a, "hidden-observer", Oh);
      b ? id(a, "history") : R(a, "history", ei);
      b ? id(a, "resources") : R(a, "resources", Lj);
      b ? id(a, "owners") : R(a, "owners", hj);
      b ? id(a, "mutator") : R(a, "mutator", bj);
      b ? id(a, "url-replace") : Vk(a);
      R(a, "action", Of, !0);
      R(a, "standard-actions", ck, !0);
      b ? id(a, "storage") : nk(a);
      R(a, "navigation", Ah, !0);
      Lh(a);
    }
    var bm = ["amp-ad", "amp-embed", "amp-video"],
      cm = ["amp-mustache"];
    function dm(a) {
      this.win = a;
      this.ya = qd(a);
      this.zd = {};
      this.Ua = null;
    }
    f = dm.prototype;
    f.registerExtension = function (a, b, c) {
      var d = em(this, a, !0);
      try {
        (this.Ua = a),
          b(c, c._),
          (d.loaded = !0),
          d.resolve && d.resolve(d.extension);
      } catch (e) {
        throw ((d.error = e), d.reject && d.reject(e), e);
      } finally {
        this.Ua = null;
      }
    };
    f.waitForExtension = function (a, b, c) {
      return U(a).timeoutPromise(
        c || 16e3,
        fm(em(this, b, !1)),
        "Render timeout waiting for extension " + b + " to be load."
      );
    };
    f.preloadExtension = function (a, b) {
      "amp-embed" == a && (a = "amp-ad");
      var c = em(this, a, !1);
      if (c.loaded || c.error) var d = !1;
      else
        void 0 === c.scriptPresent &&
          ((d = gm(this, a)), (c.scriptPresent = 0 < d.length)),
          (d = !c.scriptPresent);
      if (d) {
        d = b;
        b = this.win.document.createElement("script");
        b.async = !0;
        M(a, "_")
          ? (d = "")
          : b.setAttribute(
              0 <= cm.indexOf(a) ? "custom-template" : "custom-element",
              a
            );
        b.setAttribute("data-script", a);
        b.setAttribute("i-amphtml-inserted", "");
        var e = this.win.document.head.querySelector("script[nonce]");
        e && b.setAttribute("nonce", e.getAttribute("nonce"));
        b.setAttribute("crossorigin", "anonymous");
        e = y().esm ? ".mjs" : ".js";
        var g = B.cdn;
        var h = y().rtvVersion;
        null == d && (d = "0.1");
        b.src = g + "/rtv/" + h + "/v0/" + a + (d ? "-" + d : "") + e;
        this.win.document.head.appendChild(b);
        c.scriptPresent = !0;
      }
      return fm(c);
    };
    f.installExtensionForDoc = function (a, b, c) {
      var d = this,
        e = a.getRootNode(),
        g = e.__AMP_EXT_LDR;
      g || (g = e.__AMP_EXT_LDR = I());
      if (g[b]) return g[b];
      Pi(a.win, b);
      return (g[b] = this.preloadExtension(b, c).then(function () {
        return d.installExtensionInDoc(a, b);
      }));
    };
    f.reloadExtension = function (a) {
      var b = gm(this, a, !1);
      if (!b.length)
        return (
          D().error(
            "reloadExtension",
            'Extension script for "%s" is missing or was already reloaded.',
            a
          ),
          null
        );
      var c = this.zd[a];
      c && (c.scriptPresent = !1);
      b.forEach(function (b) {
        return b.setAttribute("i-amphtml-loaded-new-version", a);
      });
      c = nf(b[0].src);
      return this.preloadExtension(a, c.extensionVersion);
    };
    function gm(a, b, c) {
      c = void 0 === c ? !0 : c;
      a = a.win.document.head.querySelectorAll(
        'script[src*="/' +
          b +
          '-"]:not([i-amphtml-loaded-new-version])' +
          (c ? "" : ":not([i-amphtml-inserted])")
      );
      for (var d = [], e = 0; e < a.length; e++) {
        var g = a[e];
        nf(g.src).extensionId === b && d.push(g);
      }
      return d;
    }
    f.loadElementClass = function (a) {
      return this.preloadExtension(a).then(function (b) {
        return b.elements[a].implementationClass;
      });
    };
    f.addElement = function (a, b, c) {
      hm(this, a).extension.elements[a] = { implementationClass: b, css: c };
      this.addDocFactory(function (d) {
        im(d, a, b, c);
      });
    };
    function im(a, b, c, d) {
      d
        ? bf(
            a,
            d,
            function () {
              jm(a.win, b, c);
            },
            !1,
            b
          )
        : jm(a.win, b, c);
    }
    function jm(a, b, c) {
      var d = Mi(a);
      if (!d[b]) Qi(a, b, c);
      else if (d[b] != c)
        for (
          F(
            d[b] == gi,
            "%s is already registered. The script tag for %s is likely included twice in the page.",
            b,
            b
          ),
            d[b] = c,
            d = 0;
          d < fi.length;
          d++
        ) {
          var e = fi[d].element;
          e.tagName.toLowerCase() == b &&
            e.ownerDocument.defaultView == a &&
            (Ni(e, c), fi.splice(d--, 1));
        }
      Q(a, b, km);
    }
    f.addService = function (a, b) {
      hm(this).extension.services.push({ serviceName: a, serviceClass: b });
      this.addDocFactory(function (c) {
        R(c, a, b, !0);
      });
    };
    f.addDocFactory = function (a, b) {
      var c = hm(this, b);
      c.docFactories.push(a);
      if (this.Ua && this.ya.isSingleDoc()) {
        var d = this.ya.getAmpDoc(this.win.document);
        (d.declaresExtension(this.Ua) || c.auto) && a(d);
      }
    };
    f.preinstallEmbed = function (a, b) {
      var c = a.win;
      lm(this.win, c);
      mm(c);
      b.forEach(function (a) {
        bm.includes(a) || Pi(c, a);
      });
    };
    f.installExtensionsInDoc = function (a, b) {
      var c = this;
      return Promise.all(
        b.map(function (b) {
          return c.installExtensionInDoc(a, b);
        })
      );
    };
    f.installExtensionInDoc = function (a, b) {
      var c = em(this, b, !1);
      return fm(c).then(function () {
        a.declareExtension(b);
        c.docFactories.forEach(function (c) {
          try {
            c(a);
          } catch (e) {
            ib("Doc factory failed: ", e, b);
          }
        });
      });
    };
    function em(a, b, c) {
      var d = a.zd[b];
      d ||
        ((d = {
          extension: { elements: {}, services: [] },
          auto: c,
          docFactories: [],
          promise: void 0,
          resolve: void 0,
          reject: void 0,
          loaded: void 0,
          error: void 0,
          scriptPresent: void 0,
        }),
        (a.zd[b] = d));
      return d;
    }
    function hm(a, b) {
      a.Ua || E().error("extensions", "unknown extension for ", b);
      return em(a, a.Ua || "_UNKNOWN_", !0);
    }
    function fm(a) {
      if (!a.promise)
        if (a.loaded) a.promise = Promise.resolve(a.extension);
        else if (a.error) a.promise = Promise.reject(a.error);
        else {
          var b = new L();
          a.promise = b.promise;
          a.resolve = b.resolve;
          a.reject = b.reject;
        }
      return a.promise;
    }
    function mm(a) {
      bm.forEach(function (b) {
        Pi(a, b);
      });
    }
    function lm(a, b) {
      var c = Mi(a)["amp-img"];
      Qi(b, "amp-img", c || gi);
      a = Mi(a)["amp-pixel"];
      Qi(b, "amp-pixel", a || gi);
    }
    function km() {
      return {};
    }
    (function () {
      kb = Za;
      E();
      D();
    })();
    (function (a) {
      self.__AMP_REPORT_ERROR = a;
    })(
      function (a, b, c) {
        Af(b, c);
        b &&
          a &&
          Ua(b.message) &&
          !(0 <= b.message.indexOf("\u200b\u200b\u200b\u200b")) &&
          qd(a).isSingleDoc() &&
          ((b = K({ errorName: b.name, errorMessage: b.message })),
          (a = qd(a).getSingleDoc().getRootNode()),
          vf(a.documentElement || a.body || a, b));
      }.bind(null, self)
    );
    function nm(a) {
      function b(a) {
        function b() {
          g.then(function () {
            "function" == typeof a
              ? a(c.AMP, c.AMP._)
              : e.registerExtension(a.n, a.f, c.AMP);
          });
        }
        "function" != typeof a && a.i
          ? om(e, a).then(function () {
              return pm(c, a, b);
            })
          : pm(c, a, b);
      }
      var c = self;
      if (c.__AMP_TAG) q();
      else {
        c.__AMP_TAG = !0;
        var d = c.AMP || [];
        Q(c, "extensions", dm);
        var e = sd(c);
        $l(c);
        mm(c);
        c.AMP = { win: c, _: c.AMP ? c.AMP._ : void 0 };
        c.AMP.config = Sa;
        c.AMP.BaseElement = Pe;
        c.AMP.BaseTemplate = Re;
        c.AMP.registerElement = e.addElement.bind(e);
        c.AMP.registerTemplate = function (a, b) {
          var d = S(c, "templates");
          if (d.Tb[a]) {
            var e = d.se[a];
            F(e, "Duplicate template type: %s", a);
            delete d.se[a];
            e(b);
          } else d.Tb[a] = Promise.resolve(b);
        };
        c.AMP.registerServiceForDoc = e.addService.bind(e);
        c.AMP.isExperimentOn = P.bind(null, c);
        c.AMP.toggleExperiment = Oc.bind(null, c);
        c.AMP.setLogLevel = Wa.bind(null);
        c.AMP.setTickFunction = function () {};
        var g = a(c, e);
        for (a = 0; a < d.length; a++) {
          var h = d[a];
          if (qm(c, h)) d.splice(a--, 1);
          else if ("function" == typeof h || "high" == h.p) {
            try {
              b(h);
            } catch (k) {
              E().error("runtime", "Extension failed: ", k, h.n);
            }
            d.splice(a--, 1);
          }
        }
        rm(c, function () {
          c.AMP.push = function (a) {
            qm(c, a) || b(a);
          };
          for (var a = 0; a < d.length; a++) {
            var e = d[a];
            if (!qm(c, e))
              try {
                b(e);
              } catch (n) {
                E().error("runtime", "Extension failed: ", n, e.n);
              }
          }
          d.length = 0;
        });
        c.AMP.push || (c.AMP.push = d.push.bind(d));
        T(c).isIos() && X(c.document.documentElement, "cursor", "pointer");
        (c.IntersectionObserver &&
          c.IntersectionObserver !== xd &&
          c.IntersectionObserverEntry) ||
          sd(c).preloadExtension("amp-intersection-observer-polyfill");
      }
    }
    function om(a, b) {
      if (Array.isArray(b.i))
        return (
          (b = b.i.map(function (b) {
            return a.preloadExtension(b);
          })),
          Promise.all(b)
        );
      if ("string" == typeof b.i) return a.preloadExtension(b.i);
      E().error("RUNTIME", "dependency is neither an array or a string", b.i);
      return q();
    }
    function pm(a, b, c) {
      "function" == typeof b || "high" == b.p
        ? q().then(c)
        : ((c.displayName = b.n), yi(a.document, c));
    }
    function sm() {
      nm(function (a) {
        tm(a);
        um(a);
        return xb(a.document).then(function () {
          Oi(a.AMP.ampdoc);
        });
      });
    }
    function tm(a) {
      var b = a.document.documentElement,
        c = qd(a).getSingleDoc();
      a.AMP.ampdoc = c;
      c = V(b);
      a.AMP.viewer = c;
      y().development &&
        ((a.AMP.toggleRuntime = c.toggleRuntime.bind(c)),
        (a.AMP.resources = ud(b)));
      b = wd(b);
      a.AMP.viewport = {};
      a.AMP.viewport.getScrollLeft = b.getScrollLeft.bind(b);
      a.AMP.viewport.getScrollWidth = b.getScrollWidth.bind(b);
      a.AMP.viewport.getWidth = b.getWidth.bind(b);
    }
    function um(a) {
      a.AMP.installAmpdocServices = am.bind(null);
      a.AMP.combinedCss = of + pf;
    }
    function qm(a, b) {
      if (
        !P(a, "version-locking") ||
        "function" == typeof b ||
        "2008150009001" == b.v
      )
        return !1;
      sd(a).reloadExtension(b.n);
      return !0;
    }
    function rm(a, b) {
      P(a, "pump-early-frame")
        ? a.document.body
          ? 0 < af(a).length
            ? b()
            : U(a).delay(b, 1)
          : b()
        : b();
    }
    function vm() {
      var a = self;
      vj(a.document, function () {
        return wm(a);
      });
    }
    function wm(a) {
      var b = 1500,
        c = a.performance;
      c &&
        c.timing &&
        c.timing.navigationStart &&
        (b = Date.now() - c.timing.navigationStart);
      var d = Math.max(1, 2100 - b);
      a.setTimeout(function () {
        xm(a);
        var b = a.document.styleSheets;
        if (b) {
          for (
            var c = a.document.querySelectorAll(
                'link[rel~="stylesheet"]:not([href^="' +
                  String(B.cdn).replace(ob, pb) +
                  '"])'
              ),
              h = [],
              k = 0;
            k < c.length;
            k++
          ) {
            for (var l = c[k], n = !1, u = 0; u < b.length; u++)
              if (b[u].ownerNode == l) {
                n = !0;
                break;
              }
            n || h.push(l);
          }
          k = {};
          for (l = 0; l < h.length; k = { na: k.na, $c: k.$c }, l++)
            (k.na = h[l]),
              (k.$c = k.na.media || "all"),
              (k.na.media = "print"),
              (k.na.onload = (function (b) {
                return function () {
                  b.na.media = b.$c;
                  xm(a);
                };
              })(k)),
              k.na.setAttribute("i-amphtml-timeout", d),
              k.na.parentNode.insertBefore(k.na, k.na.nextSibling);
        }
      }, d);
    }
    function xm(a) {
      a = a.document;
      if (a.fonts && a.fonts.values)
        for (var b = a.fonts.values(); (a = b.next()); ) {
          var c = a.value;
          if (!c) break;
          "loading" == c.status &&
            "display" in c &&
            "auto" == c.display &&
            (c.display = "swap");
        }
    }
    function ym(a) {
      return a.waitForBodyOpen().then(function () {
        var b = a.getBody(),
          c = vb(b, function () {
            return !!b.firstElementChild;
          });
        return U(a.win)
          .timeoutPromise(2e3, c)
          .then(
            function () {
              return "AMP-STORY" === b.firstElementChild.tagName;
            },
            function () {
              return !1;
            }
          );
      });
    }
    function zm(a) {
      var b = a.win;
      sf(["\u26a1", "amp"], b.document) &&
        a.isSingleDoc() &&
        zi(a, function () {
          ym(a).then(function (c) {
            c || sd(b).installExtensionForDoc(a, "amp-auto-lightbox");
          });
        });
    }
    function Am(a) {
      this.win = a;
      this.Rb = null;
      var b = I();
      a.name &&
        0 == a.name.indexOf("__AMP__") &&
        Object.assign(b, v(a.name.substring(7)));
      a.location && a.location.hash && Object.assign(b, v(a.location.hash));
      this.Rb = new Bm(a, { params: b });
      a.document.__AMPDOC = this.Rb;
      this.qg = Sc(a);
      this.Ff = !1;
    }
    f = Am.prototype;
    f.isSingleDoc = function () {
      return !!this.Rb;
    };
    f.getSingleDoc = function () {
      return this.Rb;
    };
    f.getAmpDocIfAvailable = function (a) {
      if (this.qg) {
        for (var b = a; b; ) {
          var c =
            a.everAttached && "function" === typeof a.getAmpDoc
              ? a.getAmpDoc()
              : null;
          if (c) return c;
          b = Bb(b);
          if (!b) break;
          var d = b.__AMPDOC;
          if (d) return d;
          b = b.host ? b.host : ed(b, this.win);
        }
        return null;
      }
      for (b = a; b; ) {
        if (
          (d =
            a.everAttached && "function" === typeof a.getAmpDoc
              ? a.getAmpDoc()
              : null)
        )
          return d;
        if ((d = ed(b, this.win))) b = d;
        else {
          if (!this.Ff) break;
          b = 9 == b.nodeType ? b : mf(b);
          if (!b) break;
          if ((d = b.__AMPDOC)) return d;
          b = b.host;
        }
      }
      return this.Rb;
    };
    f.getAmpDoc = function (a) {
      var b = this.getAmpDocIfAvailable(a);
      if (!b) throw E().createError("No ampdoc found for", a);
      return b;
    };
    f.installShadowDoc = function (a, b, c) {
      this.Ff = !0;
      a = new Cm(this.win, a, b, c);
      return (b.__AMPDOC = a);
    };
    f.installFieDoc = function (a, b, c) {
      var d = b.document;
      a = new Dm(b, a, this.getAmpDoc(b.frameElement), c);
      return (d.__AMPDOC = a);
    };
    function Em(a, b, c) {
      var d = this;
      this.win = a;
      this.Rf = I();
      this.Bc = b;
      this.J = (c && c.signals) || new oi();
      this.he = (c && c.params) || I();
      this.pa = null;
      this.cf = [];
      this.Ae =
        (c && c.visibilityState) ||
        (this.he.visibilityState &&
          E().assertEnumValue(
            We,
            this.he.visibilityState,
            "VisibilityState"
          )) ||
        null;
      this.Yc = null;
      this.og = new Y();
      this.Cf = null;
      this.we = [];
      var e = this.xe.bind(this);
      this.Bc && this.we.push(this.Bc.onVisibilityChanged(e));
      Sl(this.win.document, e);
      this.we.push(function () {
        return Ul(d.win.document, e);
      });
      this.xe();
    }
    f = Em.prototype;
    f.dispose = function () {
      this.we.forEach(function (a) {
        return a();
      });
    };
    f.isSingleDoc = function () {
      return null;
    };
    f.getParent = function () {
      return this.Bc;
    };
    f.getWin = function () {
      return this.win;
    };
    f.signals = function () {
      return this.J;
    };
    f.getParam = function (a) {
      a = this.he[a];
      return null == a ? null : a;
    };
    f.getMeta = function () {
      var a = this;
      if (this.pa) return I(this.pa);
      this.pa = I();
      var b = this.win.document.head.querySelectorAll("meta[name]");
      Nb(b, function (b) {
        var c = b.getAttribute("name");
        b = b.getAttribute("content");
        c && null !== b && void 0 === a.pa[c] && (a.pa[c] = b);
      });
      return I(this.pa);
    };
    f.getMetaByName = function (a) {
      if (!a) return null;
      a = this.getMeta()[a];
      return void 0 !== a ? a : null;
    };
    f.setMetaByName = function () {};
    f.declaresExtension = function (a) {
      return -1 != this.cf.indexOf(a);
    };
    f.declareExtension = function (a) {
      this.declaresExtension(a) || this.cf.push(a);
    };
    f.getRootNode = function () {
      return null;
    };
    f.getHeadNode = function () {};
    f.isBodyAvailable = function () {
      return !1;
    };
    f.getBody = function () {
      return null;
    };
    f.waitForBodyOpen = function () {
      return null;
    };
    f.isReady = function () {
      return null;
    };
    f.whenReady = function () {
      return null;
    };
    f.getUrl = function () {
      return null;
    };
    f.getElementById = function (a) {
      return this.getRootNode().getElementById(a);
    };
    f.contains = function (a) {
      return this.getRootNode().contains(a);
    };
    f.overrideVisibilityState = function (a) {
      this.Ae != a && ((this.Ae = a), this.xe());
    };
    f.xe = function () {
      for (
        var a = Rl(this.win.document), b = "visible", c = this.Bc;
        c;
        c = c.getParent()
      )
        if ("visible" != c.getVisibilityState()) {
          b = c.getVisibilityState();
          break;
        }
      var d = this.Ae || "visible";
      c =
        "visible" == d && "visible" == b && "visible" == a
          ? "visible"
          : "hidden" == a && "paused" == d
          ? a
          : "paused" == d || "inactive" == d
          ? d
          : "paused" == b || "inactive" == b
          ? b
          : "prerender" == d || "prerender" == a || "prerender" == b
          ? "prerender"
          : "hidden";
      this.Yc != c &&
        ((this.Yc = c),
        "visible" == c
          ? ((this.Cf = Date.now()),
            this.J.signal("-ampdoc-first-visible"),
            this.J.signal("-ampdoc-next-visible"))
          : this.J.reset("-ampdoc-next-visible"),
        this.og.fire());
    };
    f.whenFirstVisible = function () {
      return this.J.whenSignal("-ampdoc-first-visible").then(function () {});
    };
    f.whenNextVisible = function () {
      return this.J.whenSignal("-ampdoc-next-visible").then(function () {});
    };
    f.getFirstVisibleTime = function () {
      return this.J.get("-ampdoc-first-visible");
    };
    f.getLastVisibleTime = function () {
      return this.Cf;
    };
    f.getVisibilityState = function () {
      return this.Yc;
    };
    f.isVisible = function () {
      return "visible" == this.Yc;
    };
    f.hasBeenVisible = function () {
      return null != this.getLastVisibleTime();
    };
    f.onVisibilityChanged = function (a) {
      return this.og.add(a);
    };
    f.registerSingleton = function (a) {
      return this.Rf[a] ? !1 : (this.Rf[a] = !0);
    };
    function Bm(a, b) {
      Em.call(this, a, null, b);
      var c = this;
      this.mb = this.win.document.body
        ? Promise.resolve(this.win.document.body)
        : xb(this.win.document).then(function () {
            return c.getBody();
          });
      this.Mb = xj(this.win.document);
    }
    m(Bm, Em);
    f = Bm.prototype;
    f.isSingleDoc = function () {
      return !0;
    };
    f.getRootNode = function () {
      return this.win.document;
    };
    f.getUrl = function () {
      return this.win.location.href;
    };
    f.getHeadNode = function () {
      return this.win.document.head;
    };
    f.isBodyAvailable = function () {
      return !!this.win.document.body;
    };
    f.getBody = function () {
      return this.win.document.body;
    };
    f.waitForBodyOpen = function () {
      return this.mb;
    };
    f.isReady = function () {
      return tj(this.win.document);
    };
    f.whenReady = function () {
      return this.Mb;
    };
    function Cm(a, b, c, d) {
      Em.call(this, a, null, d);
      this.Vb = b;
      this.Zf = c;
      this.jd = null;
      var e = new L();
      this.mb = e.promise;
      this.Ke = e.resolve;
      this.Ob = !1;
      var g = new L();
      this.Mb = g.promise;
      this.Nb = g.resolve;
    }
    m(Cm, Em);
    f = Cm.prototype;
    f.isSingleDoc = function () {
      return !1;
    };
    f.getRootNode = function () {
      return this.Zf;
    };
    f.getUrl = function () {
      return this.Vb;
    };
    f.getHeadNode = function () {
      return this.Zf;
    };
    f.isBodyAvailable = function () {
      return !!this.jd;
    };
    f.getBody = function () {
      return this.jd;
    };
    f.setBody = function (a) {
      this.jd = a;
      this.Ke(a);
      this.Ke = void 0;
    };
    f.waitForBodyOpen = function () {
      return this.mb;
    };
    f.isReady = function () {
      return this.Ob;
    };
    f.setReady = function () {
      this.Ob = !0;
      this.Nb();
      this.Nb = void 0;
    };
    f.whenReady = function () {
      return this.Mb;
    };
    f.getMeta = function () {
      return I(this.pa);
    };
    f.setMetaByName = function (a, b) {
      this.pa || (this.pa = I());
      this.pa[a] = b;
    };
    function Dm(a, b, c, d) {
      Em.call(this, a, c, d);
      var e = this;
      this.Vb = b;
      this.mb = this.win.document.body
        ? Promise.resolve(this.win.document.body)
        : xb(this.win.document).then(function () {
            return e.getBody();
          });
      this.Ob = !1;
      a = new L();
      this.Mb = a.promise;
      this.Nb = a.resolve;
    }
    m(Dm, Em);
    f = Dm.prototype;
    f.isSingleDoc = function () {
      return !1;
    };
    f.getRootNode = function () {
      return this.win.document;
    };
    f.getUrl = function () {
      return this.Vb;
    };
    f.getHeadNode = function () {
      return this.win.document.head;
    };
    f.isBodyAvailable = function () {
      return !!this.win.document.body;
    };
    f.getBody = function () {
      return this.win.document.body;
    };
    f.waitForBodyOpen = function () {
      return this.mb;
    };
    f.isReady = function () {
      return this.Ob;
    };
    f.whenReady = function () {
      return this.Mb;
    };
    f.setReady = function () {
      this.Ob = !0;
      this.Nb();
      this.Nb = void 0;
    };
    function Fm() {
      var a = self;
      Q(a, "ampdoc", function () {
        return new Am(a);
      });
    }
    var Gm = ["AMP-AD", "AMP-ANALYTICS", "AMP-PIXEL", "AMP-AD-EXIT"];
    function Hm(a, b, c) {
      a = Xc(a);
      return Im(a, b, function (a) {
        return a.isDisplayed() &&
          (a.overlaps(c) || a.isFixed()) &&
          a.prerenderAllowed()
          ? !0
          : !1;
      }).then(function (a) {
        var b = [];
        a.forEach(function (a) {
          Gm.includes(a.element.tagName) || b.push(a.loadedOnce());
        });
        return Promise.all(b);
      });
    }
    function Im(a, b, c) {
      return a
        .signals()
        .whenSignal("ready-scan")
        .then(function () {
          var c = [];
          ud(a)
            .get()
            .forEach(function (a) {
              a.hasBeenMeasured() ||
                a.hostWin != b ||
                a.hasOwner() ||
                c.push(a.getPageLayoutBoxAsync());
            });
          return Promise.all(c);
        })
        .then(function () {
          return ud(a)
            .get()
            .filter(function (a) {
              return (
                a.hostWin == b && !a.hasOwner() && a.hasBeenMeasured() && c(a)
              );
            });
        });
    }
    function Jm(a) {
      var b = this;
      this.win = a;
      this.sb = [];
      this.te =
        a.performance.timeOrigin || a.performance.timing.navigationStart;
      this.h = this.j = this.B = null;
      this.Db = this.Rd = !1;
      this.ff = I();
      this.De = "";
      this.ab = new oi();
      this.Yb = this.Nc = 0;
      this.ag = !1;
      var c =
        (this.win.PerformanceObserver &&
          this.win.PerformanceObserver.supportedEntryTypes) ||
        [];
      c.includes("paint") ||
        this.ab.rejectSignal(
          "fcp",
          E().createExpectedError("First Contentful Paint not supported")
        );
      (this.Sc = c.includes("layout-shift")) ||
        this.ab.rejectSignal(
          "cls",
          E().createExpectedError("Cumulative Layout Shift not supported")
        );
      (this.cg = c.includes("first-input")) ||
        this.ab.rejectSignal(
          "fid",
          E().createExpectedError("First Input Delay not supported")
        );
      (this.Rc = c.includes("largest-contentful-paint")) ||
        this.ab.rejectSignal(
          "lcpv",
          E().createExpectedError("Largest Contentful Paint not supported")
        );
      this.Mh = c.includes("navigation");
      this.mc = this.lc = null;
      this.Ne = this.ph.bind(this);
      this.ee = this.ee.bind(this);
      this.addEnabledExperiment("rtv-" + y(this.win).rtvVersion);
      xj(a.document).then(function () {
        b.tick("dr");
        b.flush();
      });
      yj(a.document).then(function () {
        b.tick("ol");
        if (
          !b.win.PerformancePaintTiming &&
          b.win.chrome &&
          "function" == typeof b.win.chrome.loadTimes
        ) {
          var a =
            1e3 * b.win.chrome.loadTimes().firstPaintTime -
            b.win.performance.timing.navigationStart;
          1 >= a || b.tickDelta("fp", a);
        }
        b.flush();
      });
      Km(this);
      Lm(this);
    }
    f = Jm.prototype;
    f.coreServicesAvailable = function () {
      var a = this,
        b = this.win.document.documentElement;
      this.B = Xc(b);
      this.j = V(b);
      this.h = ud(b);
      this.Db = this.j.isEmbedded() && "1" === this.j.getParam("csi");
      this.B.onVisibilityChanged(this.flush.bind(this));
      Mm(this);
      var c = this.j.whenMessagingReady();
      this.B.whenFirstVisible().then(function () {
        a.tick("ofv");
        a.flush();
      });
      if (this.Rc || this.Sc)
        this.win.addEventListener("visibilitychange", this.Ne, { capture: !0 }),
          this.B.onVisibilityChanged(this.ee);
      return c
        ? c
            .then(function () {
              a.tickDelta("msr", a.win.performance.now());
              a.tick("timeOrigin", void 0, a.te);
              return Nm(a);
            })
            .then(function () {
              a.Rd = !0;
              Om(a);
              a.flush();
            })
        : q();
    };
    function Nm(a) {
      var b = qd(a.win).getSingleDoc();
      return ym(b).then(function (b) {
        b && a.addEnabledExperiment("story");
      });
    }
    function Km(a) {
      if ("inabox" !== y(a.win).runtime) {
        var b = !1,
          c = !1,
          d = !1,
          e = !1,
          g = function (g) {
            if ("first-paint" != g.name || b)
              if ("first-contentful-paint" != g.name || c)
                "first-input" !== g.entryType || d
                  ? "layout-shift" === g.entryType
                    ? g.hadRecentInput || (a.Yb += g.value)
                    : "largest-contentful-paint" === g.entryType
                    ? (g.loadTime && (a.lc = g.loadTime),
                      g.renderTime && (a.mc = g.renderTime))
                    : "navigation" != g.entryType ||
                      e ||
                      ("domComplete domContentLoadedEventEnd domContentLoadedEventStart domInteractive loadEventEnd loadEventStart requestStart responseStart"
                        .split(" ")
                        .forEach(function (b) {
                          return a.tick(b, g[b]);
                        }),
                      (e = !0))
                  : (a.tickDelta("fid", g.processingStart - g.startTime),
                    (d = !0));
              else {
                var h = g.startTime + g.duration;
                a.tickDelta("fcp", h);
                a.tickSinceVisible("fcpv", h);
                c = !0;
              }
            else a.tickDelta("fp", g.startTime + g.duration), (b = !0);
          },
          h = [];
        a.win.PerformancePaintTiming &&
          (a.win.performance.getEntriesByType("paint").forEach(g),
          h.push("paint"));
        a.cg && Pm(a, g).observe({ type: "first-input", buffered: !0 });
        a.Sc && Pm(a, g).observe({ type: "layout-shift", buffered: !0 });
        a.Rc &&
          Pm(a, g).observe({ type: "largest-contentful-paint", buffered: !0 });
        a.Mh && Pm(a, g).observe({ type: "navigation", buffered: !0 });
        if (0 !== h.length) {
          var k = Pm(a, g);
          try {
            k.observe({ entryTypes: h });
          } catch (l) {
            E().warn(l);
          }
        }
      }
    }
    function Pm(a, b) {
      return new a.win.PerformanceObserver(function (c) {
        c.getEntries().forEach(b);
        a.flush();
      });
    }
    function Lm(a) {
      if (a.win.perfMetrics && a.win.perfMetrics.onFirstInputDelay)
        a.win.perfMetrics.onFirstInputDelay(function (b) {
          a.tickDelta("fid-polyfill", b);
          a.flush();
        });
    }
    f.ph = function () {
      "hidden" === this.win.document.visibilityState && Qm(this);
    };
    f.ee = function () {
      "inactive" === this.B.getVisibilityState() && Qm(this);
    };
    function Qm(a) {
      a.Sc &&
        (0 === a.Nc
          ? (a.tickDelta("cls", a.Yb), a.flush(), (a.Nc = 1))
          : 1 === a.Nc &&
            (a.tickDelta("cls-2", a.Yb),
            a.flush(),
            (a.Nc = 2),
            a.win.removeEventListener("visibilitychange", a.Ne, {
              capture: !0,
            })));
      if (a.Rc) {
        if (null !== a.lc) {
          a.tickDelta("lcpl", a.lc);
          var b = a.lc;
        }
        null !== a.mc && (a.tickDelta("lcpr", a.mc), (b = b || a.mc));
        null !== b && a.tickSinceVisible("lcpv", b);
        a.flush();
      }
      a.ag ||
        (a.h
          ? ((a.ag = !0),
            a.tickDelta("ser", a.h.getSlowElementRatio()),
            a.flush())
          : E().error(
              "Performance",
              "Failed to tick ser due to null resources"
            ));
    }
    function Mm(a) {
      var b = !a.B.hasBeenVisible(),
        c = -1;
      a.B.whenFirstVisible().then(function () {
        c = a.win.performance.now();
        a.mark("visible");
      });
      Rm(a).then(function () {
        if (b) {
          var d = -1 < c ? a.win.performance.now() - c : 0;
          a.B.whenFirstVisible().then(function () {
            a.tickDelta("pc", d);
          });
          Sm(a, d);
          a.mark("pc");
        } else a.tick("pc"), Sm(a, a.win.performance.now() - c);
        a.flush();
      });
    }
    function Rm(a) {
      return a.h.whenFirstPass().then(function () {
        var b = a.win.document.documentElement,
          c = wd(b).getSize();
        c = fc(0, 0, c.width, c.height);
        return Hm(b, a.win, c);
      });
    }
    f.tick = function (a, b, c) {
      var d = K({ label: a }),
        e;
      void 0 != b
        ? (d.delta = e = Math.max(b, 0))
        : void 0 != c
        ? (d.value = c)
        : (this.mark(a),
          (e = this.win.performance.now()),
          (d.value = this.te + e));
      this.win.dispatchEvent(Ie(this.win, { label: a, delta: e }));
      this.Rd && this.Db
        ? this.j.sendMessage("tick", d)
        : (50 <= this.sb.length && this.sb.shift(), this.sb.push(d));
      this.ab.signal(a, e);
    };
    f.mark = function (a) {
      this.win.performance &&
        this.win.performance.mark &&
        1 == arguments.length &&
        this.win.performance.mark(a);
    };
    f.tickDelta = function (a, b) {
      this.tick(a, b);
    };
    f.tickSinceVisible = function (a, b) {
      b = void 0 == b ? this.win.performance.now() : b;
      b = this.te + b;
      var c = this.B && this.B.getFirstVisibleTime();
      this.tickDelta(a, c ? Math.max(b - c, 0) : 0);
    };
    f.flush = function () {
      this.Rd &&
        this.Db &&
        this.j.sendMessage("sendCsi", K({ ampexp: this.De }), !0);
    };
    f.throttledFlush = function () {
      this.fg || (this.fg = qf(this.win, this.flush.bind(this), 100));
      this.fg();
    };
    f.addEnabledExperiment = function (a) {
      this.ff[a] = !0;
      this.De = Object.keys(this.ff).join(",");
    };
    function Om(a) {
      a.j &&
        (a.Db &&
          a.sb.forEach(function (b) {
            a.j.sendMessage("tick", b);
          }),
        (a.sb.length = 0));
    }
    function Sm(a, b) {
      a.j && a.j.sendMessage("prerenderComplete", K({ value: b }), !0);
    }
    f.isPerformanceTrackingOn = function () {
      return this.Db;
    };
    f.getMetric = function (a) {
      return this.ab.whenSignal(a);
    };
    function Tm(a, b) {
      this.Aa = a;
      this.H = b;
      this.Uc = !1;
      this.pe = 0;
      this.Re = this.oh.bind(this);
      this.Qe = this.nh.bind(this);
      this.Pe = this.mh.bind(this);
      this.Oe = this.lh.bind(this);
      this.Aa.addEventListener("touchstart", this.Re, !0);
    }
    f = Tm.prototype;
    f.cleanup = function () {
      Um(this);
      this.Aa.removeEventListener("touchstart", this.Re, !0);
    };
    f.oh = function (a) {
      this.Uc ||
        !a.touches ||
        1 != a.touches.length ||
        0 < this.H.getScrollTop() ||
        ((a = a.touches[0].clientY),
        (this.Uc = !0),
        (this.pe = a),
        this.Aa.addEventListener("touchmove", this.Qe, !0),
        this.Aa.addEventListener("touchend", this.Pe, !0),
        this.Aa.addEventListener("touchcancel", this.Oe, !0));
    };
    function Um(a) {
      a.Uc = !1;
      a.pe = 0;
      a.Aa.removeEventListener("touchmove", a.Qe, !0);
      a.Aa.removeEventListener("touchend", a.Pe, !0);
      a.Aa.removeEventListener("touchcancel", a.Oe, !0);
    }
    f.nh = function (a) {
      if (this.Uc) {
        var b = a.touches[0].clientY - this.pe;
        0 < b && a.preventDefault();
        0 != b && Um(this);
      }
    };
    f.mh = function () {
      Um(this);
    };
    f.lh = function () {
      Um(this);
    };
    function Vm(a) {
      var b = a.win;
      sf(["\u26a1", "amp"], b.document) &&
        T(a.win).isStandalone() &&
        zi(a, function () {
          sd(b)
            .installExtensionForDoc(a, "amp-standalone")
            .then(function () {
              return jd(a.getBody(), "standalone", "amp-standalone");
            })
            .then(function (a) {
              return a.initialize();
            });
        });
    }
    function Wm() {
      var a = self,
        b = a.location.href;
      if (!M(b, "about:")) {
        var c = !1;
        y().development &&
          (c = "0" !== v(a.location.originalHash || a.location.hash).validate);
        c
          ? Xm(a.document, B.cdn + "/v0/validator.js").then(function () {
              amp.validator.validateUrlAndLog(b, a.document);
            })
          : y().examiner && Xm(a.document, B.cdn + "/examiner.js");
      }
    }
    function Xm(a, b) {
      var c = a.createElement("script");
      c.src = b;
      (b = a.head.querySelector("script[nonce]")) &&
        c.setAttribute("nonce", b.getAttribute("nonce"));
      b = Oe(c).then(
        function () {
          a.head.removeChild(c);
        },
        function () {}
      );
      a.head.appendChild(c);
      return b;
    }
    function Ym(a, b) {
      yi(self.document, function () {
        $l(self);
        am(a);
        b.coreServicesAvailable();
        sh();
      });
      yi(self.document, function () {
        sm();
      });
      yi(self.document, function () {
        var a = self;
        Qi(a, "amp-img", Si);
        Qi(a, "amp-pixel", pj);
        Qi(a, "amp-layout", Zi);
      });
      yi(self.document, function () {
        Oi(a);
      });
      yi(
        self.document,
        function () {
          var b = self,
            d = b.document.documentElement;
          "0" == V(d).getParam("p2r") &&
            T(b).isChrome() &&
            new Tm(b.document, wd(d));
          zm(a);
          Vm(a);
          Wm();
          hf();
          Ej();
        },
        !0
      );
      yi(self.document, function () {
        b.tick("e_is");
        ud(a).ampInitComplete();
        b.flush();
      });
    }
    if (!self.IS_AMP_ALT) {
      self.location && (self.location.originalHash = self.location.hash);
      var ampdocService;
      try {
        Df(), Fm(), (ampdocService = qd(self));
      } catch (a) {
        throw (kf(self.document), a);
      }
      yi(self.document, function () {
        var a = ampdocService.getAmpDoc(self.document);
        Q(self, "platform", rj);
        Q(self, "performance", Jm);
        var b = S(self, "performance");
        self.document.documentElement.hasAttribute(
          "i-amphtml-no-boilerplate"
        ) && b.addEnabledExperiment("no-boilerplate");
        y().esm && b.addEnabledExperiment("esm");
        vm();
        b.tick("is");
        bf(
          a,
          of + pf,
          function () {
            return Ym(a, b);
          },
          !0,
          "amp-runtime"
        );
      });
      self.console &&
        (console.info || console.log).call(
          console,
          "Powered by AMP \u26a1 HTML \u2013 Version 2008150009001",
          self.location.href
        );
      self.document.documentElement.setAttribute(
        "amp-version",
        "2008150009001"
      );
    }
  })((AMP._ = AMP._ || {}));
} catch (e) {
  setTimeout(function () {
    var s = document.body.style;
    s.opacity = 1;
    s.visibility = "visible";
    s.animation = "none";
    s.WebkitAnimation = "none;";
  }, 1000);
  throw e;
}

//# sourceMappingURL=v0.js.map
