{"0":{"message":"experiment %s must have a `cleanupIssue` field."},"1":{"message":"Video.JS not imported or initializer undefined."},"2":{"message":"Invalid method %s."},"3":{"message":"`listenTo` is meant to be used once per page."},"4":{"message":"listenTo('jwplayer', opt_instance) does not take an initializer."},"5":{"message":"listenTo('videojs', element) expects a second argument"},"6":{"message":"Invalid listener type [%s]."},"7":{"message":"listenTo('jwplayer', myjwplayer) takes a jwplayer instance as "},"8":{"message":"listenTo('jwplayer') expects a global jwplayer() in window."},"9":{"message":"video-iframe-integration-v0.js should only be included once."},"10":{"message":"Parent origin mismatch: %s, %s"},"11":{"message":"3p type for custom iframe not allowed: %s"},"12":{"message":"The data-gistid attribute is required for <amp-gist> %s"},"13":{"message":"Fake user error!"},"14":{"message":"wrong container"},"15":{"message":"The formula attribute is required for <amp-mathml> %s"},"16":{"message":"You are using a deprecated Criteo integration"},"17":{"message":"You are using an unknown Criteo integration"},"18":{"message":"TagDeliveryContent object not loaded on page"},"19":{"message":"Unknown HTTP status %s"},"20":{"message":"The value passed to VARIANT() is not a valid experiment in <amp-experiment>:%s"},"21":{"message":"The first argument to AUTHDATA, the field, is required"},"22":{"message":"The first argument to NAV_TIMING, the start attribute name, is required"},"23":{"message":"Access or subsciptions service is not installed to access: "},"24":{"message":"The first argument to QUERY_PARAM, the query string param is required"},"25":{"message":"The first argument to FRAGMENT_PARAM, the fragment string param is required"},"26":{"message":"param should be a string"},"27":{"message":"To use variable %s, amp-experiment should be configured"},"28":{"message":"To use variable %s, amp-geo should be configured"},"29":{"message":"Input value expansion only works on hidden input fields: %s"},"30":{"message":"3p iframe url must not be on the same origin as the current document %s (%s) in element %s. See https://github.com/ampproject/amphtml/blob/main/docs/spec/amp-iframe-origin-policy.md for details."},"31":{"message":"The use of doubleclick.js has been deprecated. Please switch to Fast Fetch. See documentation here: https://github.com/ampproject/amphtml/issues/11834"},"32":{"message":"Improper html template tag usage."},"33":{"message":"Invalid template strings array"},"34":{"message":"No elements in template"},"35":{"message":"Too many root elements in template"},"36":{"message":"Empty ref attr"},"37":{"message":"Duplicate ref"},"38":{"message":"Invalid multi-size data format '%s'."},"39":{"message":"Invalid length value: %s"},"40":{"message":"<amp-experiment> should contain exactly one <script type=\"application/json\"> child."},"41":{"message":"Attribute data-embed-as for <amp-facebook> value is wrong, should be \"post\" or \"video\" but was: %s"},"42":{"message":"Invalid date: %s"},"43":{"message":"One of datetime, timestamp-ms, or timestamp-seconds is required"},"44":{"message":"localeOptions"},"45":{"message":"The data-partner attribute is required for <amp-brid-player> %s"},"46":{"message":"The data-player attribute is required for <amp-brid-player> %s"},"47":{"message":"Either the data-video, data-playlist, data-carousel or data-outstream attributes must be specified for <amp-brid-player> %s"},"48":{"message":"Referrer timeout!"},"49":{"message":"setModelRotation failed: %s"},"50":{"message":"XHR country request failed"},"51":{"message":" country %s not valid, will be ignored"},"52":{"message":"The data-videoid attribute is required for <amp-dailymotion> %s"},"53":{"message":"placeholder required with layout=\"container\""},"54":{"message":"Attempting to expand fluid creative without a properly set up friendly frame. Slot id: %s"},"55":{"message":"Attempted to expand slot without flexible ad slot data."},"56":{"message":"this.getCreativeSize returned null"},"57":{"message":"ad URL does not exist yet"},"58":{"message":"No element found with id:%s"},"59":{"message":"Only pixel or vh are valid as units for exclusion margins: %s"},"60":{"message":"Story refers to page \"%s\", but no such page exists."},"61":{"message":"Page at index %s exists, but is missing from the array."},"62":{"message":"Inserting ads automatically is disallowed."},"63":{"message":"The data-riddle-id attribute is required for <amp-riddle-quiz> %s"},"64":{"message":"The data-videoid attribute is required for <amp-viqeo-player> %s"},"65":{"message":"The data-profileid attribute is required for <amp-viqeo-player> %s"},"66":{"message":"data-trackid or data-playlistid is required for <amp-soundcloud> %s"},"67":{"message":"The data-app-key attribute is required for <amp-yotpo> %s"},"68":{"message":"The data-widget-type attribute is required for <amp-yotpo> %s"},"69":{"message":"The data-src attribute is required for <amp-reddit> %s"},"70":{"message":"UACH timeout!"},"71":{"message":"Upgrade failed"},"72":{"message":"Convert to container width state failed"},"73":{"message":"Invalid signature header: %s"},"74":{"message":"Keyset for service %s not loaded before verification"},"75":{"message":"Failed to verify signature: %s"},"76":{"message":"Fast Fetch keyset spec requires status code 200"},"77":{"message":"Fast Fetch keyset spec requires Content-Type: application/jwk-set+json"},"78":{"message":"Signing service error for %s: %s"},"79":{"message":"\"amp-state:\" URLs require amp-bind to be installed."},"80":{"message":"Invalid 'state' parameter"},"81":{"message":"Recognizer is not currently allowed: %s"},"82":{"message":"amp-story must contain id to use the live story functionality"},"83":{"message":"Factory for media type `%s` unset."},"84":{"message":"Cannot deallocate unallocated media element."},"85":{"message":"No media element %s to put back into DOM aftereviction."},"86":{"message":"Cannot play unregistered element."},"87":{"message":"Blessing all media failed: "},"88":{"message":"failed fetching JSON data"},"89":{"message":"URL variable substitutions in CORS fetches from dynamic URLs (e.g. via amp-bind) require opt-in. Please add data-amp-replace=\"%s\" to the <%s> element. See https://bit.ly/amp-var-subs."},"90":{"message":"Element is not an animation: \"%s\""},"91":{"message":"No target specified"},"92":{"message":"Keyframes not found in stylesheet: \"%s\""},"93":{"message":"keyframes not found"},"94":{"message":"unknown animation type: must have \"animation\", \"animations\" or \"keyframes\" field"},"95":{"message":"Property is not allowlisted for animation: %s"},"96":{"message":"Both \"selector\" and \"target\" are not allowed"},"97":{"message":"string targets are deprecated"},"98":{"message":"Target not found: \"%s\""},"99":{"message":"Only one \"index\" or \"selector\" must be specified"},"a":{"message":"The sitekey is required for the <amp-recaptcha-input> iframe"},"b":{"message":"The global property is required for the <amp-recaptcha-input> iframe"},"c":{"message":"Error processing inabox message"},"d":{"message":"%s %s must be available"},"e":{"message":"%s %s must start with \"https://\" or \"//\" or be relative and served from either https or from localhost. Invalid value: %s"},"f":{"message":"URL must start with \"http://\" or \"https://\". Invalid value: %s"},"g":{"message":"Unknown path prefix in url %s"},"h":{"message":"Expected a . in origin %s"},"i":{"message":"Source origin is not allowed in %s"},"j":{"message":"Failed to save experiments to localStorage."},"k":{"message":"Could not support highestAvailable Domain on proxy origin, specify domain explicitly"},"l":{"message":"Should never attempt to set cookie on proxy origin: %s"},"m":{"message":"Should never attempt to set cookie on proxy origin. (in depth check): %s"},"n":{"message":"Parent frame must supply vendor name as type in %s"},"o":{"message":"Vendor name cannot be empty in %s"},"p":{"message":"Invalid/missing sentinel on iframe name attribute%s"},"q":{"message":"Received malformed events list in %s"},"r":{"message":"Received empty events list in %s"},"s":{"message":"Received malformed event in %s"},"t":{"message":"Exception in callback passed to onAnalyticsEvent"},"u":{"message":"Must implement onNewContextInstance in %s"},"v":{"message":"Passed in document must have a defaultView"},"w":{"message":"Double registration %s"},"x":{"message":"Unknown 3p: %s"},"y":{"message":"Missing attribute for %s: %s."},"z":{"message":"%s must contain exactly one of attributes: %s."},"A":{"message":"Should not construct AbstractAmpContext instances directly"},"B":{"message":"Could not setup metadata."},"C":{"message":"Incorrect sentinel format"},"D":{"message":"No ampdoc found for"},"E":{"message":"The shadow root already contains ampdoc"},"F":{"message":"The fie already contains ampdoc"},"G":{"message":"not implemented"},"H":{"message":"extension already declared %s"},"I":{"message":"body not available"},"J":{"message":"Duplicate body"},"K":{"message":"Duplicate ready state"},"L":{"message":"Attempted to store invalid meta name/content pair"},"M":{"message":"%s is already registered. The script tag for %s is likely included twice in the page."},"N":{"message":"Cannot navigate to invalid protocol: %s"},"O":{"message":"Target '%s' not supported."},"P":{"message":"Unexpected iframe URL change:"},"Q":{"message":"First Contentful Paint not supported"},"R":{"message":"Cumulative Layout Shift not supported"},"S":{"message":"First Input Delay not supported"},"T":{"message":"Largest Contentful Paint not supported"},"U":{"message":"Interaction to next paint not supported"},"V":{"message":"You may not set both opt_delta and opt_value."},"W":{"message":"Extension failed: "},"X":{"message":"E#19457 trackImpressionPromise"},"Y":{"message":"Embed type %s not allowed with tag %s"},"Z":{"message":"Expected configuration to be passed as first argument"},"1a":{"message":"Network failure"},"1b":{"message":"Request aborted"},"1c":{"message":"CORS is not supported"},"1d":{"message":"Body already used"},"1e":{"message":"Only one of %s is currently allowed. Got %s"},"1f":{"message":"Expected service %s to be registered"},"1g":{"message":"Service %s registered without ctor nor impl."},"1h":{"message":"Service %s registered without context."},"1i":{"message":"Service %s constructed to null."},"1j":{"message":"required to implement Disposable"},"1k":{"message":"failed to dispose service"},"1l":{"message":"Expected \"%s\" to be a CSS name composed of alphanumerics and hyphens."},"1m":{"message":"JSON missing in %s"},"1n":{"message":"Failed to open url on target: "},"1o":{"message":"Initial display value must not be \"none\". Use toggle instead."},"1p":{"message":"setInitialDisplay MUST NOT be used for resetting the display style. If you are looking for display:none toggling, use toggle instead."},"1q":{"message":"Illegal input name, %s found: %s"},"1r":{"message":"form action-xhr should not be on AMP CDN: %s"},"1s":{"message":"form action should not be on AMP CDN: %s"},"1t":{"message":"form action-xhr or action attribute is required for method=GET: %s"},"1u":{"message":"action attribute is invalid for method=POST: %s"},"1v":{"message":"Only XHR based (via action-xhr attribute) submissions are support for POST requests. %s"},"1w":{"message":"form target=%s is invalid can only be _blank or _top: %s"},"1x":{"message":"Invalid trust for '%s': %s"},"1y":{"message":"\"%s\" event with \"%s\" trust is not allowed to invoke \"%s.%s\"."},"1z":{"message":"AMP or special element expected: %s"},"1A":{"message":"Action handler already installed for %s"},"1B":{"message":"Action execution failed:"},"1C":{"message":"Action allowlist entries should be of shape { tagOrTarget: string, method: string }"},"1D":{"message":"[%s] %s"},"1E":{"message":"Deferred events cannot access native event functions."},"1F":{"message":"Invalid action definition in %s: [%s] %s"},"1G":{"message":"target should start with a #"},"1H":{"message":"failed to execute a task:"},"1I":{"message":"pushState failed: %s"},"1J":{"message":"replaceState failed: %s"},"1K":{"message":"Initial replaceState failed: %s"},"1L":{"message":"The history must not be in the waiting state"},"1M":{"message":"Template not found for %s"},"1N":{"message":"Template must be defined in a <template> or <script type=\"text/plain\"> tag"},"1O":{"message":"Type must be specified: %s"},"1P":{"message":"Duplicate template type: %s"},"1Q":{"message":"AMP-BIND is not installed."},"1R":{"message":"AMP.scrollTo must provide element ID"},"1S":{"message":"scrollTo element ID must exist on page"},"1T":{"message":"Failed to opt out of CID"},"1U":{"message":"Unknown AMP action "},"1V":{"message":"Argument 'class' must be a string."},"1W":{"message":"Optional argument 'force' must be a boolean."},"1X":{"message":"The value passed to AMP_GEO() is not valid name:%s"},"1Y":{"message":"The first argument to CLIENT_ID, the fallback Cookie name, is required"},"1Z":{"message":"non-string cid, what is it?"},"2a":{"message":"Illegal replacement of the protocol: "},"2b":{"message":"The replacement url has invalid protocol: %s"},"2c":{"message":"Host should send targetRect"},"2d":{"message":"%s: invalid \"referrerpolicy\" value \"%s\". Only \"no-referrer\" is supported"},"2e":{"message":"duplicate pixel"},"2f":{"message":"The <amp-pixel> src attribute must start with \"https://\" or \"//\". Invalid value: %s"},"2g":{"message":"The CID scope and cookie name must only use the characters [a-zA-Z0-9-_.]+\nInstead found: %s"},"2h":{"message":"Expected proxy origin %s"},"2i":{"message":"Viewer does not provide cap=cid"},"2j":{"message":"invalid cid format"},"2k":{"message":"SubtleCrypto failed, fallback to closure lib."},"2l":{"message":"collapse attempt denied"},"2m":{"message":"attempting to change size with undefined dimensions"},"2n":{"message":"Not ready for layout: %s (%s)"},"2o":{"message":"Only boolean values accepted"},"2p":{"message":"Failed to load store: "},"2q":{"message":"Name is not allowed: %s"},"2r":{"message":"Untrusted viewer referrer override: %s at %s"},"2s":{"message":"Untrusted viewer url override: %s at %s"},"2t":{"message":"replaceUrl failed"},"2u":{"message":"Received user action in non-visible doc"},"2v":{"message":"viewport has zero dimensions"},"2w":{"message":"Curve without duration doesn't make sense."},"2x":{"message":"Lightbox mode for A4A is only available when 'amp-lightbox-a4a-proto' experiment is on"},"2y":{"message":"callback returned a value but vsync cannot propagate it: %s"},"2z":{"message":"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."},"2A":{"message":"Both CTA Type & CTA Url are required in ad response."},"2B":{"message":"no ampdoc yet, since element is not attached"},"2C":{"message":"no resources yet, since element is not attached"},"2D":{"message":"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."},"2E":{"message":"Layout not supported: %s"},"2F":{"message":"Cannot get default action alias of unupgraded element"},"2G":{"message":"Cannot build unupgraded element"},"2H":{"message":"Implementation must not be a stub"},"2I":{"message":"Must be built to receive viewport events"},"2J":{"message":"Must never be called in template"},"2K":{"message":"Characters must be in range [0,255]"},"2L":{"message":"Waited over 16s to load extension %s."},"2M":{"message":"Element not found: %s"},"2N":{"message":"unknown extension for "},"2O":{"message":"- unknown script: "},"2P":{"message":"- unallowed inline javascript: "},"2Q":{"message":"- UNKNOWN head element:"},"2R":{"message":"Default action \"%s\" already registered."},"2S":{"message":"Method not found: %s in %s"},"2T":{"message":"only iframes with src supported"},"2U":{"message":"cannot register events on an attached iframe. It will cause hair-pulling bugs like #2942"},"2V":{"message":"Not available."},"2W":{"message":"Attribute type required for <amp-ad>: %s"},"2X":{"message":"Parent element must be in DOM"},"2Y":{"message":"Error parsing JSON in json attribute in element %s"},"2Z":{"message":"3p iframe url must not include query string %s in element %s."},"3a":{"message":"Invalid length or percent value: %s"},"3b":{"message":"Failed to read units from %s"},"3c":{"message":"waitForEvent not supported %s"},"3d":{"message":"ignoring async replacement key: "},"3e":{"message":"ignoring async macro resolution"},"3f":{"message":"Missing resource prop on %s"},"3g":{"message":"Owner must contain the element"},"3h":{"message":"failed to build:"},"3i":{"message":"Not ready to start layout: %s (%s)"},"3j":{"message":"Not displayed for layout: %s"},"3k":{"message":"startLayout called but not LAYOUT_SCHEDULED"},"3l":{"message":"layoutComplete race"},"3m":{"message":"Unsupported referrerPolicy: %s"},"3n":{"message":"Task already enqueued: %s"},"3o":{"message":"cannot define a duplicate transition callback"},"3p":{"message":"Minimum value is greater than the maximum."},"3q":{"message":"Lower bound is greater than the upper bound."},"3r":{"message":"body is not available"},"3s":{"message":"completion failed: %s"},"3t":{"message":"step curve failed: %s"},"3u":{"message":"step mutate failed: %s"},"3v":{"message":"Object expected: %s"},"3w":{"message":"Only URL supported: %s"},"3x":{"message":"Only credentials=include|omit support: %s"},"3y":{"message":"fetch `body` can not be `null`"},"3z":{"message":"body must be of type object or array. %s"},"3A":{"message":"HTTP error %s"},"3B":{"message":"getRGBFromCssColorValue expects a parameter in the form of 'rgba(0, 0, 0, 1)' or 'rgb(0, 0, 0)' but got %s"},"3C":{"message":"Unsupported protocol for URL %s"},"3D":{"message":"element is not AmpElement"},"3E":{"message":"Invalid \"layout\" value: %s, %s"},"3F":{"message":"Invalid \"width\" value: %s, %s"},"3G":{"message":"Invalid \"height\" value: %s, %s"},"3H":{"message":"The \"height\" attribute is missing: %s"},"3I":{"message":"The \"width\" attribute must be missing or \"auto\": %s"},"3J":{"message":"The \"width\" attribute must be present and not \"auto\": %s"},"3K":{"message":"Length units should be the same for \"width\" and \"height\": %s, %s, %s"},"3L":{"message":"\"heights\" attribute must be missing: %s"},"3M":{"message":"Cannot switch away from UIType_Enum.VERTICAL"},"3N":{"message":"Unknown action %s."},"3O":{"message":"Unknown state %s."},"3P":{"message":"Can't subscribe to unknown state %s."},"3Q":{"message":"Expected data-r attribte on amp-ad tag"},"3R":{"message":"data-playlist or data-episode is required for <amp-megaphone> %s"},"3S":{"message":"/The data-mediaid attribute is required for <amp-mowplayer> %s"},"3T":{"message":"The Dianomi request parameter ID provided is invalid"},"3U":{"message":"The Dianomi %s parameter '%s' is not a valid input"},"3V":{"message":"Variable argument name \"%s\" is not defined in %s"},"3W":{"message":"Action macro with ID \"%s\" cannot reference itself or macros defined after it"},"3X":{"message":"Attribute src or srcdoc required for <amp-ad type=\"fake\">: %s"},"3Y":{"message":"No longer available. Use `amp-carousel` with `type=\"slides\"` for an alternative"},"3Z":{"message":"Invalid analytics"},"4a":{"message":"Missing type attribute"},"4b":{"message":"No AdNetworkConfig for type: %s"},"4c":{"message":"Either the data-media-id or the data-playlist-id attributes must be specified for <amp-jwplayer> %s"},"4d":{"message":"The data-player-id attribute is required for <amp-jwplayer> %s"},"4e":{"message":"The data-id attribute is required for <amp-3q-player> %s"},"4f":{"message":"expected global \"bento\" or specific \"bento-audio\" experiment to be enabled"},"4g":{"message":"The data-account attribute is required for <amp-brightcove> %s"},"4h":{"message":"The data-eid attribute is required for <amp-hulu> %s"},"4i":{"message":"The data-player-id attribute is required for <amp-connatix-player> %s"},"4j":{"message":"The data-partner attribute is required for <amp-kaltura-player> %s"},"4k":{"message":"The data-videoid attribute is required for <amp-izlesene> %s"},"4l":{"message":"Invalid <amp-iframe> src. Must start with https://. Found %s"},"4m":{"message":"Origin of <amp-iframe> must not be equal to container %s if allow-same-origin is set. See https://github.com/ampproject/amphtml/blob/main/docs/spec/amp-iframe-origin-policy.md for details."},"4n":{"message":"amp-iframe does not allow embedding of frames from ampproject.*: %s"},"4o":{"message":"<amp-iframe> elements must be positioned outside the first 75% of the viewport or 600px from the top (whichever is smaller): %s  Current position %s. Min: %sPositioning rules don't apply for iframes that use `placeholder`.See https://github.com/ampproject/amphtml/blob/main/extensions/amp-iframe/amp-iframe.md#iframe-with-placeholder for details."},"4p":{"message":"allow-same-origin is not allowed with the srcdoc attribute %s."},"4q":{"message":"amp-iframe is not used for displaying fixed ad. Please use amp-sticky-ad and amp-ad instead."},"4r":{"message":"Overflow element must be defined for resizable frames: %s"},"4s":{"message":"\"AMP.navigateTo\" is only allowed on <amp-iframe> when its \"sandbox\" attribute contains \"allow-top-navigation\"."},"4t":{"message":"\"postMessage\" action is only allowed with \"src\"attribute with an origin."},"4u":{"message":"\"message\" received from unexpected origin: %s. Only allowed from: %s"},"4v":{"message":"\"message\" event may only be triggered from a user gesture."},"4w":{"message":"Too many non-gesture-triggered \"message\" events; detaching event listener."},"4x":{"message":"Data from \"message\" event must be JSON."},"4y":{"message":"<%s> requires either \"data-id\" or a pair of \"data-url\" and \"data-key\" attributes for %s"},"4z":{"message":"Iframely data-key must also be set when you specify data-url parameter at <%s> %s"},"4A":{"message":"Iframely data-url must also be set when you specify data-key parameter at <%s> %s"},"4B":{"message":"Iframely data-id should not be set when there is already a pair of data-url and data-key for <%s> %s"},"4C":{"message":"Only one way of setting either data-id or data-url and data-key supported for <%s> %s"},"4D":{"message":"One of end-date, timeleft-ms, timestamp-ms, timestamp-seconds is required"},"4E":{"message":"Invalid locale %s, return empty locale word"},"4F":{"message":"Experiment amp-experiment-1.0 is not enabled."},"4G":{"message":"The data-imgur-id attribute is required for <amp-imgur> %s"},"4H":{"message":"Failed to load. Is \"%s\" a correct id?"},"4I":{"message":"data-iframe-src (%s) should be a URL on the same origin as the source (%s) or canonical URL (%s) of the AMP-document."},"4J":{"message":"Both, \"%s\" and \"%s\" must be specified for url-rewrite"},"4K":{"message":"Invalid \"data-no-service-worker-fallback-url-match\" expression"},"4L":{"message":"Shell source origin \"%s\" must be the same as source origin \"%s\""},"4M":{"message":"ServiceWorker registration failed:"},"4N":{"message":"expected global \"bento\" or specific \"bento-list\" experiment to be enabled"},"4O":{"message":"The font-family attribute is required for <amp-font> %s"},"4P":{"message":"Multiple amp-mraid scripts."},"4Q":{"message":"Missing amp-mraid scripts."},"4R":{"message":"The data-gfyid attribute is required for <amp-gfycat> %s"},"4S":{"message":"The src attribute is required for <amp-google-document-embed> %s"},"4T":{"message":"The data-content-type must be specified for <amp-minute-media-player> %s"},"4U":{"message":"The data-content-id must be specified for %s data-content-type in <amp-minute-media-player> %s"},"4V":{"message":"GEONOTPATCHED: amp-geo served unpatched, ISO country not set"},"4W":{"message":"GEONOTPATCHED: amp-geo served unpatched and API response not valid, ISO country not set"},"4X":{"message":"geoApiUrl must be a string URL"},"4Y":{"message":"geoApiUrl must be secure (https)"},"4Z":{"message":"Invalid API response, expected schema not matched for property \"country\""},"5a":{"message":"Ratios must be a decimal between 0 and 1: %s"},"5b":{"message":"The data-embedcode attribute is required for %s"},"5c":{"message":"The data-pcode attribute is required for %s"},"5d":{"message":"The data-playerid attribute is required for %s"},"5e":{"message":"The current browser doesn't support the `window.DeviceOrientationEvent`"},"5f":{"message":"The data-apikey attribute is required for <amp-slikeplayer> %s"},"5g":{"message":"The data-videoid attribute is required for <amp-slikeplayer> %s"},"5h":{"message":"data-pid attribute is required for <amp-o2-player> %s"},"5i":{"message":"data-bcid attribute is required for <amp-o2-player> %s"},"5j":{"message":"The data-videoid attribute is required for <amp-vimeo> %s"},"5k":{"message":"Decode error in %s"},"5l":{"message":"Can't find source element for currentSrc %s"},"5m":{"message":"Tried to reset amp-video without an underlying <video>."},"5n":{"message":"The data-account attribute is required for <amp-powr-player> %s"},"5o":{"message":"The data-player attribute is required for <amp-powr-player> %s"},"5p":{"message":"The data-video or data-terms attribute is required for <amp-powr-player> %s"},"5q":{"message":"Content cannot be empty. Found in: %s"},"5r":{"message":"The data-mode attribute is required for <amp-springboard-player> %s"},"5s":{"message":"The data-content-id attribute is required for<amp-springboard-player> %s"},"5t":{"message":"The data-domain attribute is required for <amp-springboard-player> %s"},"5u":{"message":"The data-site-id attribute is required for<amp-springboard-player> %s"},"5v":{"message":"The data-player-id attribute is required for<amp-springboard-player> %s"},"5w":{"message":"The data-embedtype attribute is required for <amp-vk> %s"},"5x":{"message":"Unknown data-embedtype: %s"},"5y":{"message":"The data-owner-id attribute is required for <amp-vk> Post %s"},"5z":{"message":"The data-post-id attribute is required for <amp-vk> Post %s"},"5A":{"message":"The data-hash attribute is required for <amp-vk> Post %s"},"5B":{"message":"The data-api-id attribute is required for <amp-vk> Poll %s"},"5C":{"message":"The data-poll-id attribute is required for <amp-vk> Poll %s"},"5D":{"message":"One and only one of 'target' and 'variable' must be specified"},"5E":{"message":"Variable target not found, variable:'%s', default:'%s'"},"5F":{"message":"Exit target not found: '%s'"},"5G":{"message":"Unexpected null event"},"5H":{"message":"Invalid IFRAME_TRANSPORT_SIGNAL format:%s (perhaps there is a space after a comma?)"},"5I":{"message":"The tag should contain exactly one <script> child."},"5J":{"message":"The amp-ad-exit config should be inside a <script> tag with type=\"application/json\""},"5K":{"message":"Unlistener should not already exist."},"5L":{"message":"Received empty response from 3p analytics frame"},"5M":{"message":"Received malformed message from 3p analytics frame: creativeId missing"},"5N":{"message":"Received malformed message from 3p analytics frame: vendor missing"},"5O":{"message":"Invalid origin for vendor %s: %s"},"5P":{"message":"Unknown method `%s`."},"5Q":{"message":"`eventType` missing in analytics event"},"5R":{"message":"Invalid analytics `eventType`. Value must start with `%s`."},"5S":{"message":"The data-vineid attribute is required for <amp-vine> %s"},"5T":{"message":"Exactly one of data-videoid or data-live-channelid should be present for <amp-youtube> %s"},"5U":{"message":"The data-media-hashed-id attribute is required for <amp-wistia-player> %s"},"5V":{"message":"One of data-client or data-domain-id attributes is required for <amp-nexxtv-player> %s"},"5W":{"message":"The data-mediaid attribute is required for <amp-nexxtv-player> %s"},"5X":{"message":"Duplicate amp-story-page ID %s"},"5Y":{"message":"amp-consent must have an amp-story-consent child"},"5Z":{"message":"amp-consent only allows tags: %s"},"6a":{"message":"The data-embedtype attribute is required for <amp-reddit> %s"},"6b":{"message":"The src attribute must be specified for <amp-bodymovin-animation>"},"6c":{"message":"Error determining consent state"},"6d":{"message":"Error determining consent string"},"6e":{"message":"Error determining consent metadata"},"6f":{"message":"Error determining consent shared data"},"6g":{"message":"Null promise in layoutCallback"},"6h":{"message":"%s: requires <amp-geo> to use `block-rtc`"},"6i":{"message":"Invalid size header: %s"},"6j":{"message":"missing minified creative"},"6k":{"message":"missing owner document?!"},"6l":{"message":"Unrecognized A4A cross-domain rendering mode: %s"},"6m":{"message":"A4A received unrecognized cross-domain name attribute iframe rendering mode request: %s.  Unable to render a creative for slot %s."},"6n":{"message":"cross-origin render mode header %s"},"6o":{"message":"%s not registered to VideoManager"},"6p":{"message":"Could not find an element with id=\"%s\" for VIDEO_STATE"},"6q":{"message":"Only interactive videos are allowed to enter fullscreen on rotate. Set the `controls` attribute on %s to enable."},"6r":{"message":"Config must have triggers defined"},"6s":{"message":"CustomEventReporter config must specify trigger eventType"},"6t":{"message":"Cannot trigger non initiated eventType"},"6u":{"message":"customEventReporterBuilder should not track same eventType twice"},"6v":{"message":"CustomEventReporter already built"},"6w":{"message":"Notification not found: %s"},"6x":{"message":"Missing experiment variants config."},"6y":{"message":"Invalid percentage %s:%s. Has to be greater than 0 and less than 100"},"6z":{"message":"Total percentage is bigger than 100: %s"},"6A":{"message":"Invalid name: %s. Allowed chars are [a-zA-Z0-9-_]."},"6B":{"message":"CONSENT_METADATA macro must contain a key"},"6C":{"message":"Unknown macro: %s for vendor: %s"},"6D":{"message":"AMP-SCRIPT is not installed."},"6E":{"message":"RTC Config must specify vendors or urls"},"6F":{"message":"RTC invalid vendors"},"6G":{"message":"RTC invalid urls"},"6H":{"message":"refresh metadata config must be of the form `network_type=refresh_interval`"},"6I":{"message":"visiblePercentageMin for refresh must be in the range [0, 100]"},"6J":{"message":"BundleID is incorrect or not provided."},"6K":{"message":"ItemID is not provided."},"6L":{"message":"No element with id #poool found to render paywall into, got"},"6M":{"message":"No ad element"},"6N":{"message":"The value attribute is required for <%s>"},"6O":{"message":"The data-url attribute is required for <%s> %s"},"6P":{"message":"Missing variants object from experiment."},"6Q":{"message":"%s.variants.%s must be an object."},"6R":{"message":"%s.variants.%s must have a number weight."},"6S":{"message":"Invalid weight percentage %s. %s.variants.%s Has to be greater than 0 and less than 100"},"6T":{"message":"%s.variants.%s must have a mutations array."},"6U":{"message":"Mutation %s has an an unsupported value."},"6V":{"message":"childList mutations not supported in the current experiment state."},"6W":{"message":"Crypto is unavailable."},"6X":{"message":"Failed to verify experiment token:"},"6Y":{"message":"Missing content for experiment token: "},"6Z":{"message":"Removing \"%s\" attribute with invalid value in <%s %s=\"%s\">."},"7a":{"message":"'amp-state' element with id '%s' was not found."},"7b":{"message":"[%s] No data was found at provided uri: %s"},"7c":{"message":"AMP-SCRIPT is not installed"},"7d":{"message":"Failed to parse srcset: "},"7e":{"message":"Removed invalid attribute %s[%s=\"%s\"]."},"7f":{"message":"Removed invalid <use>. use[href] must start with \"#\"."},"7g":{"message":"Frame contentWindow unavailable."},"7h":{"message":"Invalid expand values."},"7i":{"message":"Invalid resize values."},"7j":{"message":"Resizing failed: %s"},"7k":{"message":"Missing evaluator for scope: %s"},"7l":{"message":"Unrecognized method: %s"},"7m":{"message":"<amp-skimlinks> Invalid option => %s"},"7n":{"message":"cannot unobserve unobserved element"},"7o":{"message":"PositionObserver should always trigger entry with clientRect"},"7p":{"message":"Invalid amp-fx type `%s`"},"7q":{"message":"No value provided for `amp-fx` attribute"},"7r":{"message":"Aborting setup due to null stylesheet."},"7s":{"message":"Failed to mutate fixed elements:"},"7t":{"message":"Failed to setup fixed elements:"},"7u":{"message":"Inline styles with `top`, `bottom` and other CSS rules are not supported yet for fixed or sticky elements (#14186). Unexpected behavior may occur."},"7v":{"message":"Failed to test query match:"},"7w":{"message":"Video cache not properly configured"},"7x":{"message":"Invalid ClickDelay spec"},"7y":{"message":"Unknown transport option: '%s'"},"7z":{"message":"Filter specification '%s' is malformed"},"7A":{"message":"Supported filters: %s"},"7B":{"message":"'targets' must be an object"},"7C":{"message":"finalUrl of target '%s' must be a string"},"7D":{"message":"filter '%s' not defined"},"7E":{"message":"'%s' must match the pattern '%s'"},"7F":{"message":"Unknown or invalid vendor %s, note that vendor must use transport: iframe"},"7G":{"message":"Invalid InactiveElementspec"},"7H":{"message":"The advancement is expected to be time-based in preview mode"},"7I":{"message":"amp-story-page must be a descendant of amp-story."},"7J":{"message":"Invalid embed config for target"},"7K":{"message":"The tooltip url is invalid"},"7L":{"message":"No config matching provided target."},"7M":{"message":"The tooltip icon url is invalid"},"7N":{"message":"Don't use Fragment (<></>) with #core/dom/jsx. Use a root node or an array of nodes instead."},"7O":{"message":"%s config should be put in a <script> tag with type=\"application/json\""},"7P":{"message":"%s: config requires a title"},"7Q":{"message":"%s: config requires a message"},"7R":{"message":"%s: config requires an array of vendors"},"7S":{"message":"%s: config requires \"onlyAccept\" to be a boolean"},"7T":{"message":"%s: config requires \"externalLink.title\" to be a string"},"7U":{"message":"%s: config requires \"externalLink.href\" to be an absolute URL"},"7V":{"message":"Link was too large; skipped for navigation. For more information, see https://github.com/ampproject/amphtml/issues/31108"},"7W":{"message":"Element with ID %s is not a media element supported for automatic advancement."},"7X":{"message":"Media element was unspecified."},"7Y":{"message":"Failed to load the amp-img or amp-video."},"7Z":{"message":"Unknown data source %s."},"8a":{"message":"DomTransformStream.transferBody should only be called once"},"8b":{"message":"At most %s may be requested."},"8c":{"message":"Invalid selector: %s"},"8d":{"message":"CSS selector may match at most %s elements."},"8e":{"message":"Only <amp-ad> is allowed to enter lightbox mode."},"8f":{"message":"amp-link-rewriter: output config property is required"},"8g":{"message":"maxAncestorsToVisit must be a positive value."},"8h":{"message":"Attempted to execute callback on completed visitor."},"8i":{"message":"Must provide Component"},"8j":{"message":"The AMP element cannot be rendered in detached mode when \"props\" are configured with \"children\" property."},"8k":{"message":"Inconsistent Bento API shape: imperative API gained a \"%s\" key for %s"},"8l":{"message":"Inconsistent Bento API shape: imperative API lost a \"%s\" key for %s"},"8m":{"message":"Mutation %s must be an object."},"8n":{"message":"Mutation %s must have a type."},"8o":{"message":"Mutation %s must have a valid type."},"8p":{"message":"Mutation %s must have a target."},"8q":{"message":"target %s cannot select i-amphtml-"},"8r":{"message":"No element on the document matches the selector, %s ."},"8s":{"message":"Unsupported style mutation property: %s, value: %s"},"8t":{"message":"Either non-empty \"srcset\" or \"src\" attribute must be specified: %s"},"8u":{"message":"Srcset must have at least one source"},"8v":{"message":"Srcset must have width or dpr sources, but not both"},"8w":{"message":"width=%s"},"8x":{"message":"Duplicate width: %s"},"8y":{"message":"Duplicate dpr: %s"},"8z":{"message":"Invalid response from provided \"resolveUnknownLinks\" function.\"resolveUnknownLinks\" should return an instance of TwoStepsResponse"},"8A":{"message":"data-margin-start must be a percentage value and be between 0% and 100% for: %s"},"8B":{"message":"data-parallax-factor=<number> attribute must be provided for: %s"},"8C":{"message":"data-parallax-factor must be a number and greater than 0 for: %s"},"8D":{"message":"data-margin-end must be a percentage value and be between 0% and 100% for: %s"},"8E":{"message":"data-margin-end must be greater than data-margin-start for: %s"},"8F":{"message":"All custom bezier curves should be specified by following the `cubic-bezier()` function notation."},"8G":{"message":"missing valid match"},"8H":{"message":"Invaid ClickLocation spec"},"8I":{"message":"relativeTo element %s not found."},"8J":{"message":"media must start paused"},"8K":{"message":"First keyframe offset for animation preset should be 0 or undefined"},"8L":{"message":"Negative delays are not allowed in amp-story \"animate-in\" animations."},"8M":{"message":"Tried to execute playbackWhenReady_ before runner was resolved."},"8N":{"message":"Executed before applyFirstFrameOrFinish"},"8O":{"message":"Invalid segment-id passed to progress-bar"},"8P":{"message":"Detached doc already closed."},"8Q":{"message":"Only allowed value for \"trigger\" is \"visibility\": %s"},"8R":{"message":"Mutation %s must have a value."},"8S":{"message":"Mutation %s must have a attributeName."},"8T":{"message":"Listed function name \"%s\" doesn't match name property \"%s\"."},"8U":{"message":"\"scale-end\" value must be greater than \"scale-start\" value when using \"zoom-in\" animation."},"8V":{"message":"\"scale-start\" value must be higher than \"scale-end\" value when using \"zoom-out\" animation."},"8W":{"message":"Element expected"},"8X":{"message":"unknown animation type: must have \"animations\" or \"keyframes\" field"},"8Y":{"message":"Recursive animations are not allowed: \"%s\""},"8Z":{"message":"Animation not found: \"%s\""},"9a":{"message":"Bad subtarget selector: \"%s\""},"9b":{"message":"\"iterations\" is invalid: %s"},"9c":{"message":"\"iterationStart\" is invalid: %s"},"9d":{"message":"Unknown direction: %s"},"9e":{"message":"Unknown fill: %s"},"9f":{"message":"\"%s\" is invalid: %s"},"9g":{"message":"Bad query selector: \"%s\""},"9h":{"message":"Only allowed when target is specified"},"9i":{"message":"Recursive variable: \"%s\""},"9j":{"message":"Unknown selection method: %s"},"9k":{"message":"expected global \"bento\" or specific \"bento-video\" experiment to be enabled"},"9l":{"message":"expected global \"bento\" or specific \"bento-video-iframe\" experiment to be enabled"},"9m":{"message":"Minimize-to-corner (`dock`) does not support portrait video."},"9n":{"message":"`dock` attribute can only be set on video components."},"9o":{"message":"Dock slot must be an <amp-layout> element."},"9p":{"message":"%s should have its target element as its one and only child"},"9q":{"message":"%s is not supported by %s"},"9r":{"message":"expected global \"bento\" or specific \"bento-twitter\" experiment to be enabled"},"9s":{"message":"expected global \"bento\" or specific \"bento-timeago\" experiment to be enabled"},"9t":{"message":"\"src\" or \"script\" attribute is required."},"9u":{"message":"Maximum total script size exceeded (%s). %s is disabled. See https://amp.dev/documentation/components/amp-script/#size-of-javascript-code."},"9v":{"message":"%s\n    at (%s:%s)"},"9w":{"message":"[%s] %s could not find element with #%s."},"9x":{"message":"[%s] script#%s must have target=\"amp-script\"."},"9y":{"message":"%s was terminated due to illegal mutation."},"9z":{"message":"[%s]: \"amp-script\" URIs must be of the format \"scriptId.functionIdentifier\"."},"9A":{"message":"[%s]: could not find <amp-script> with script set to %s"},"9B":{"message":"Invalid AMP.setState() argument: %s"},"9C":{"message":"Storage.clear() is not supported in amp-script."},"9D":{"message":"Invalid \"amp-\" prefix for storage key: %s"},"9E":{"message":"Unsupported element: %s"},"9F":{"message":"Page config is null"},"9G":{"message":"Services not configured in service config"},"9H":{"message":"Page config is not yet fetched"},"9I":{"message":"No matching services for the ID found"},"9J":{"message":"Failed to parse \"amp-subscriptions\" JSON: "},"9K":{"message":"fetch entitlements failed for %s"},"9L":{"message":"Entitlement is null"},"9M":{"message":"Viewer auth failed:"},"9N":{"message":"Platform is not registered"},"9O":{"message":"Experiment \"amp-list-layout-container\" is not turned on."},"9P":{"message":"amp-list[layout=container] should have a placeholder to establish an initial size. See https://go.amp.dev/c/amp-list/#placeholder-and-fallback. %s"},"9Q":{"message":"%s initialized with layout=container does not support infinite scrolling with [load-more]. %s"},"9R":{"message":"[amp-list]: \"amp-state\" URIs cannot be used in SSR mode."},"9S":{"message":"[amp-list] No data was found at provided uri: %s"},"9T":{"message":"[amp-list]: \"amp-script\" URIs cannot be used in SSR mode."},"9U":{"message":"[amp-list] %s must return json, but instead returned: %s"},"9V":{"message":"[amp-list] \"[src]\" may not be bound in SSR mode."},"9W":{"message":"Response must contain an array or object at \"%s\". %s"},"9X":{"message":"Failed fetching JSON data: XHR Failed fetching (%s): received no response."},"9Y":{"message":"Failed fetching JSON data (%s): HTTP error"},"9Z":{"message":"Failed fetching JSON data: XHR Failed fetching (%s): Expected response with format {html: <string>}. Received: "},"a0":{"message":"Failed fetching JSON data: XHR Failed fetching (%s)"},"a1":{"message":"Nothing to render."},"a2":{"message":"Mismatched nodeName."},"a3":{"message":"The %s element must have an id."},"a4":{"message":"Cannot execute action because the GWD service is not registered."},"a5":{"message":"Could not retrieve AmpStoryStoreService"},"a6":{"message":"<%s> should be child of <amp-story>"},"a7":{"message":"Player does not support `playerExperiments` message"},"a8":{"message":"Turning on the amp-sidebar-v2 experiment is necessary to use the new sidebar component."},"a9":{"message":"form proxy failed to install"},"aa":{"message":"form %s should not be on AMP CDN: %s"},"ab":{"message":"Sending analytics failed:"},"ac":{"message":"Form submit service failed: %s"},"ad":{"message":"Failed to parse response JSON: %s"},"ae":{"message":"Form submission failed: %s"},"af":{"message":"Only XHR based (via action-xhr attribute) submissions are supported for POST requests. %s"},"ag":{"message":"[amp-form]: viewerRenderTemplate | %s"},"ah":{"message":"input[type=password] or input[type=file] may only appear in form[method=post]"},"ai":{"message":"Redirects not supported in AMP4Email."},"aj":{"message":"Redirecting to target=_blank using AMP-Redirect-To is currently not supported, use target=_top instead. %s"},"ak":{"message":"The `AMP-Redirect-To` header value must be an absolute URL starting with https://. Found %s"},"al":{"message":"amp-live-list must have an \"update\" slot."},"am":{"message":"amp-live-list must have an \"items\" slot."},"an":{"message":"amp-live-list must have an id."},"ao":{"message":"amp-live-list # %s must have data-max-items-per-page attribute with numeric value. Found %s."},"ap":{"message":"The data-do attribute is required for <amp-pinterest> %s"},"aq":{"message":"Invalid type: %s"},"ar":{"message":"expected global \"bento\" or specific \"bento-sidbar\" experiment to be enabled"},"as":{"message":"'index' must be specified"},"at":{"message":"expected global \"bento\" or specific \"bento-selector\" experiment to be enabled"},"au":{"message":"Unknown keyboard-select-mode: %s"},"av":{"message":"[keyboard-select-mode=select] not supported for multiple selection amp-selector"},"aw":{"message":"'index' must be greater than 0"},"ax":{"message":"'index' must be less than the length of options in the <amp-selector>"},"ay":{"message":"The type attribute is required. %s"},"az":{"message":"expected global \"bento\" or specific \"bento-social-share\" experiment to be enabled"},"aA":{"message":"The data-sitekey attribute is required for <amp-recaptcha-input> %s"},"aB":{"message":"The data-action attribute is required for <amp-recaptcha-input> %s"},"aC":{"message":"The %s attribute is required for <amp-recaptcha-input> %s"},"aD":{"message":"Either the data-apester-media-id or the data-apester-channel-token attributes must be specified for <amp-apester-media> %s"},"aE":{"message":"Display"},"aF":{"message":"Failed to load the amp-img."},"aG":{"message":"\"lock-bounds\" requires \"width\" and \"height\" to be set on the amp-img child."},"aH":{"message":"<amp-fx-flying-carpet> elements must be positioned after the 75% of first viewport: %s Current position: %s. Min: %s"},"aI":{"message":"<amp-fx-flying-carpet> elements must be positioned before the last viewport: %s Current position: %s. Max: %s"},"aJ":{"message":"%s requires the \"type\" attribute to be \"text\" or \"search\" if present on <input>. %s"},"aK":{"message":"%s requires data to be provided via \"src\" attribute for server-side rendering. %s"},"aL":{"message":"%s should provide a <template> or <script type=\"plain/text\"> element."},"aM":{"message":"%s does not support client-side filter when server-side render is required."},"aN":{"message":"Unexpected filter: %s. %s"},"aO":{"message":"%s should contain exactly one <input> or <textarea> descendant %s"},"aP":{"message":"Unexpected \"src\" type: %s"},"aQ":{"message":"%s data must provide template for non-string items. %s"},"aR":{"message":"%s data property \"%s\" must map to string type. %s"},"aS":{"message":"expected global \"bento\" or specific \"bento-brightcove\" experiment to be enabled"},"aT":{"message":"amp-user-notification should have an id."},"aU":{"message":"Only one \"data-show-if-*\" attribute allowed"},"aV":{"message":"requires <amp-geo> to use promptIfUnknownForGeoGroup"},"aW":{"message":"`showNotification` should be a boolean. Got \"%s\" which is of type %s."},"aX":{"message":"Failed to opt out of Cid"},"aY":{"message":"Failed to read storage"},"aZ":{"message":"expected global \"bento\" or specific \"bento-soundcloud\" experiment to be enabled"},"b0":{"message":"expected global \"bento\" or specific \"bento-carousel\" experiment to be enabled"},"b1":{"message":"E#19457 this.container_"},"b2":{"message":"Widget id or product code is required for <amp-addthis> %s"},"b3":{"message":"Only widget id or product code is required <amp-addthis> %s"},"b4":{"message":"The data-pub-id attribute is required for <amp-addthis> %s"},"b5":{"message":"The number of pages should be at least 4 to enable subscriptions feature, got %s"},"b6":{"message":"The data-shortcode attribute is required for <amp-instagram> %s"},"b7":{"message":"expected global \"bento\" or specific \"bento-pan-zoom\" experiment to be enabled"},"b8":{"message":"amp-consent should have an id"},"b9":{"message":"consent-response message missing required info"},"ba":{"message":"consent-response info only supports string, %s, treated as undefined"},"bb":{"message":"notification ui manager not found"},"bc":{"message":"Attempt to show an already displayed prompt UI"},"bd":{"message":"%s no consent ui to hide"},"be":{"message":"No consent state manager"},"bf":{"message":"Must have arugments for `setPurpose`."},"bg":{"message":"Could not parse the `checkConsentHref` response."},"bh":{"message":"consent config not found"},"bi":{"message":"`setPurpose` values must be booleans."},"bj":{"message":"CMP tcfPolicyVersion must be a valid number (integer)."},"bk":{"message":"CMP metadata is not an object."},"bl":{"message":"The data-content-id attribute is required"},"bm":{"message":"expected global \"bento\" or specific \"bento-facebook\" experiment to be enabled"},"bn":{"message":"expected global \"bento\" or specific \"bento-accordion\" experiment to be enabled"},"bo":{"message":"The data-webcare-id attribute is required for <%s> %s"},"bp":{"message":"The data-label attribute is required for <%s> %s"},"bq":{"message":"expected global \"bento\" or specific \"bento-embedly-card\" experiment to be enabled"},"br":{"message":"expected global \"bento\" or specific \"bento-iframe\" experiment to be enabled"},"bs":{"message":"<amp-iframe> elements must be positioned outside the first 75% of the viewport or 600px from the top (whichever is smaller): %s  Current position: %s. Min: %sPositioning rules don't apply for iframes that use `placeholder`.See https://github.com/ampproject/amphtml/blob/main/extensions/amp-iframe/amp-iframe.md#iframe-with-placeholder for details."},"bt":{"message":"expected global \"bento\" or specific \"bento-dailymotion\" experiment to be enabled"},"bu":{"message":"expected global \"bento\" or specific \"bento-mathml\" experiment to be enabled"},"bv":{"message":"submenu open/close buttons should not have tap actions registered."},"bw":{"message":"%s requires each submenu open button to have a submenu as its sibling"},"bx":{"message":"%s requires each submenu to contain at least one submenu close button"},"by":{"message":"%s: submenu close buttons are only allowed inside submenus"},"bz":{"message":"Experiment amp-next-page disabled"},"bA":{"message":"%s should contain at most one <div separator> child"},"bB":{"message":"%s only supports type=adsense"},"bC":{"message":"%s AdSense client should be of the format 'ca-pub-123456'"},"bD":{"message":"%s AdSense slot should be a number"},"bE":{"message":"error fetching config"},"bF":{"message":"%s should contain a <script> child, a URL specified in [src], or a [type]"},"bG":{"message":"%s should contain at most one <script> child"},"bH":{"message":"%s config should be inside a <script> tag with type=\"application/json\""},"bI":{"message":"failed to parse config"},"bJ":{"message":"amp-app-banner should have an id."},"bK":{"message":"<button open-button> is required inside %s: %s"},"bL":{"message":"The url in app-argument has invalid protocol: %s"},"bM":{"message":"<meta name=\"apple-itunes-app\">'s content should contain app-argument to allow opening an already installed application on iOS."},"bN":{"message":"expected global \"bento\" or specific \"bento-stream-gallery\" experiment to be enabled"},"bO":{"message":"expected global \"bento\" or specific \"bento-app-banner\" experiment to be enabled"},"bP":{"message":"Either src or data-item attribute is required for <amp-playbuzz> %s"},"bQ":{"message":"expected global \"bento\" or specific \"bento-lightbox-gallery\" experiment to be enabled"},"bR":{"message":"expected global \"bento\" or specific \"bento-date-countdown\" experiment to be enabled"},"bS":{"message":"Gyroscope permission error: %s"},"bT":{"message":"amp-story-360 must contain an amp-img or amp-video element."},"bU":{"message":"Failed to load the amp-video."},"bV":{"message":"amp-story-360 is either not configured to play an animation or still loading content."},"bW":{"message":"expected global \"bento\" or specific \"bento-lightbox\" experiment to be enabled"},"bX":{"message":"expected global \"bento\" or specific \"bento-fit-text\" experiment to be enabled"},"bY":{"message":"Unknown ad type \"%s\""},"bZ":{"message":"Sections should be enclosed in a <section> tag, See https://github.com/ampproject/amphtml/blob/main/extensions/amp-accordion/amp-accordion.md. Found in: %s"},"c0":{"message":"Each section must have exactly two children. See https://github.com/ampproject/amphtml/blob/main/extensions/amp-accordion/amp-accordion.md. Found in: %s"},"c1":{"message":"The \"expanded\" attribute cannot be used with amp-bind in version 0.1 of amp-accordion. Please bind to [data-expand] instead. Found in: %s"},"c2":{"message":"amp-accordion headings should not have tap actions registered."},"c3":{"message":"No element found with id: %s"},"c4":{"message":"expected global \"bento\" or specific \"bento-vimeo\" experiment to be enabled"},"c5":{"message":"expected global \"bento\" or specific \"bento-youtube\" experiment to be enabled"},"c6":{"message":"expected global \"bento\" or specific \"bento-date-display\" experiment to be enabled"},"c7":{"message":"Should not contain more than 2 images."},"c8":{"message":"Should not contain <div>s without \"first\" or \"second\" attributes."},"c9":{"message":"2 images must be provided for comparison"},"ca":{"message":"value to seek to must be a number"},"cb":{"message":"expected global \"bento\" or specific \"bento-jwplayer\" experiment to be enabled"},"cc":{"message":"expected global \"bento\" or specific \"bento-image-slider\" experiment to be enabled"},"cd":{"message":"expected global \"bento\" or specific \"bento-gist\" experiment to be enabled"},"ce":{"message":"Could not require external module %s. Did you import the bundle in the extension?"},"cf":{"message":"%s requires each expandable item to include a button that toggles it."},"cg":{"message":"expected global \"bento\" or specific \"bento-instagram\" experiment to be enabled"},"ch":{"message":"expected global \"bento\" or specific \"bento-date-picker\" experiment to be enabled"},"ci":{"message":"Unexpected slide index for goToSlide action: %s. %s"},"cj":{"message":"The amp-stream-gallery experiment must be enabled to use the component"},"ck":{"message":"amp-lightbox-gallery.open: element with id: %s not found"},"cl":{"message":"At most one sticky ad can be loaded per page"},"cm":{"message":"amp-sticky-ad must have a single amp-ad child"},"cn":{"message":"Failed to parse \"amp-access\" JSON: %s"},"co":{"message":"Namespace required"},"cp":{"message":"Namespace already used: %s"},"cq":{"message":"Access vendor \"%s\" can only be used for \"type=vendor\", but none found"},"cr":{"message":"Template failed: "},"cs":{"message":"Invalid index: %d"},"ct":{"message":"Login must match namespace: %s"},"cu":{"message":"expected global \"bento\" or specific \"bento-inline-gallery\" experiment to be enabled"},"cv":{"message":"Space characters are not allowed in type attribute value. %s"},"cw":{"message":"The data-share-endpoint attribute is required. %s"},"cx":{"message":"Clicked before href is set."},"cy":{"message":"enableLAA and enableMetering are mutually exclusive."},"cz":{"message":"skuMap does not contain subscribe.google.com section"},"cA":{"message":"fetch skuMap failed for %s"},"cB":{"message":"enableLAA cannot be used when the document is encrypted"},"cC":{"message":"subscribe-smartbutton must have a language attribute"},"cD":{"message":"Trying to set real time config on element '%s' with missing 'subscriptions-google-rtc' attrbute"},"cE":{"message":"amp-date-picker mode must be \"static\" to use fullscreen attribute"},"cF":{"message":"Overlay single pickers must specify \"input-selector\" to an existing input element."},"cG":{"message":"Overlay range pickers must \"start-input-selector\" and \"end-input-selector\" to existing start and end input elements."},"cH":{"message":"Invalid date picker type"},"cI":{"message":"transitonTo called before state machine is initialized"},"cJ":{"message":"Multiple date-pickers with implicit %s fields need to have IDs"},"cK":{"message":"Failed fetching date src data"},"cL":{"message":"Should not expand while a longTask is already ongoing."},"cM":{"message":"Could not find page with index %s."},"cN":{"message":"Invalid maxCount parameter: %s"},"cO":{"message":"Event name required but not specified."},"cP":{"message":"Could not get receiver with id %s."},"cQ":{"message":"No config could be discovered in the page"},"cR":{"message":"Platform for id %s is not resolved"},"cS":{"message":"Platform %s has not yet resolved with entitlements"},"cT":{"message":"Platform %s is not declared"},"cU":{"message":"All platforms are not resolved yet"},"cV":{"message":"Refused to attempt SSR in untrusted viewer: "},"cW":{"message":"Skipping template rendering due to failed fetch"},"cX":{"message":"%s Error reading config. Top level JSON should have an \"ad-attributes\" key"},"cY":{"message":"The %s should be inside a <script> tag with type=\"application/json\""},"cZ":{"message":"error determining if remote config is valid json: bad url or bad json"},"d0":{"message":"%s \"%s\" ad type is missing or not supported"},"d1":{"message":"%s id must start with i-amphtml-demo- to use fake ads"},"d2":{"message":"%s all created ads consumed."},"d3":{"message":"for 'autoscroll', 'nav [toolbar]' element must be set to overflow\n        'scroll' or 'auto' for 'autoscroll' to work."},"d4":{"message":"Current product is not set"},"d5":{"message":"Product id is null"},"d6":{"message":"The mismatching \"aud\" field: %s"},"d7":{"message":"Payload is expired"},"d8":{"message":"\"toolbar-target\" is required"},"d9":{"message":"Could not find the toolbar-target element with an id: %s"},"da":{"message":"unknown property access type: %s"},"db":{"message":"Verification errors must have a name property"},"dc":{"message":"Verification errors must have a message property"},"dd":{"message":"Verification error name property must match a field name"},"de":{"message":"The data-href attribute is required for follow buttons"},"df":{"message":"The data-label attribute is required for follow buttons"},"dg":{"message":"The data-url attribute is required for Save buttons"},"dh":{"message":"The data-media attribute is required for Save buttons"},"di":{"message":"The data-description attribute is required for Save buttons"},"dj":{"message":"The data-url attribute is required for Pin widgets"},"dk":{"message":"Invalid pinterest url: %s"},"dl":{"message":"amp-live-list#%s found but did not exist on original page load."},"dm":{"message":"Expected an element"},"dn":{"message":"The %s attribute is required for <%s>"},"do":{"message":"<%s> must have a valid helper-iframe-url attribute. It should begin with the https:// protocol and point to the provided lightweight template page provided for AMP messaging."},"dp":{"message":"<%s> must have a valid permission-dialog-url attribute. It should begin with the https:// protocol and point to the provided template page for showing the permission prompt."},"dq":{"message":"<%s> must have a valid service-worker-url attribute. It should begin with the https:// protocol and point to the service worker JavaScript file to be installed."},"dr":{"message":"<%s> URL attributes service-worker-url, permission-dialog-url, and helper-iframe-url must all share the same origin."},"ds":{"message":"<%s> must have an id attribute with value '%s'."},"dt":{"message":"Only one <%s> element may exist on a page."},"du":{"message":"The controlling service worker replied to amp-web-push with an unexpected value."},"dv":{"message":"Empty value for the \"inline\" attr is unsupported, %s. %s"},"dw":{"message":"AutocompleteBindingInline does not support an empty value in the constructor."},"dx":{"message":"CloseWatcher failed:"},"dy":{"message":"Attribute data-embed-as for <amp-facebook> value is wrong, should be \"post\", \"video\", \"comments\", \"like\", or \"page\", but was: %s"},"dz":{"message":"%s: only single consent instance is supported"},"dA":{"message":"%s: Inline config not found"},"dB":{"message":"%s: consentInstanceId to store consent info is required"},"dC":{"message":"%s: requires <amp-geo> to use `geoOverride`"},"dD":{"message":"consentInstanceId cannot be overriden in geoGroup:"},"dE":{"message":"`consentRequired` is required"},"dF":{"message":"%s: `checkConsentHref` must be specified if `consentRequired` is remote"},"dG":{"message":"%s: `promptUiSrc` cannot be specified while using %s."},"dH":{"message":"%s: invalid CMP type %s"},"dI":{"message":"CMP config must specify %s"},"dJ":{"message":"Paused page does not have a placeholder"},"dK":{"message":"failed to attach shadow document for page"},"dL":{"message":"failed to fetch %s"},"dM":{"message":"%s should contain a <script> child or a URL specified in [src]"},"dN":{"message":"Failed to queue page due to error:"},"dO":{"message":"%s page list should be inside a <script> tag with type=\"application/json\""},"dP":{"message":"failed to parse inline page list"},"dQ":{"message":"error fetching page list from remote server"},"dR":{"message":"postPromptUI element with id=%s not found"},"dS":{"message":"child element of <amp-consent> with promptUI id %s not found"},"dT":{"message":"`promptUI` element contains an <amp-iframe>. This may cause content flashing when consent is not required. Consider using `promptUISrc` instead. See https://go.amp.dev/c/amp-analytics"},"dU":{"message":"Inavlid initial height: %s.Minimum: %svh. Maximum: %svh."},"dV":{"message":"Inavlid initial height: %s.Must be a string in \"vh\" units."},"dW":{"message":"The sandbox attribute \"%s\" is not allowed"},"dX":{"message":"Invalid stored consent value"},"dY":{"message":"Consent metadata value \"%s\" is invalid."},"dZ":{"message":"cookies config must be an object"},"e0":{"message":"invalid cookieMaxAge %s, falling back to default value (1 year)"},"e1":{"message":"cookieValue must be configured in an object"},"e2":{"message":"value is required in the cookieValue object"},"e3":{"message":"Error expanding cookie string"},"e4":{"message":"invalid waitFor value, consent policy will never resolve"},"e5":{"message":"can not find policy %s, only predefined policies are supported"},"e6":{"message":"unsupported fallbackAction %s"},"e7":{"message":"invalid timeout value %s"},"e8":{"message":"Cannot register consent instance %s, instance %s has already been registered."},"e9":{"message":"instance not registered"},"ea":{"message":"%s: cannot find the instance"},"eb":{"message":"%s: Duplicate consent change handler, will be ignored"},"ec":{"message":"\"tcfapiCall\" is not an object: %s"},"ed":{"message":"Unsupported command found in \"tcfapiCall\": %s"},"ee":{"message":"Unsupported parameter found in \"tcfapiCall\": %s"},"ef":{"message":"Found incorrect version in \"tcfapiCall\": %s"},"eg":{"message":"No merchant domains have been matched for this article, or no paid content configurations are setup."},"eh":{"message":"No article title element found with selector %s"},"ei":{"message":"No element found with id %s"},"ej":{"message":"amp-next-page config must be specified"},"ek":{"message":"pages must be an array"},"el":{"message":"amp-next-page hideSelectors should be an array"},"em":{"message":"amp-next-page hideSelector value should be a string"},"en":{"message":"amp-next-page hideSelector %s not allowed"},"eo":{"message":"ampUrl must be a string"},"ep":{"message":"pages must be from the same origin as the current document"},"eq":{"message":"image must be a string"},"er":{"message":"title must be a string"},"es":{"message":"ampUrl resolved to a different origin from the origin of the current document"},"et":{"message":"failed to attach shadow document for %s"},"eu":{"message":"Request failure"},"ev":{"message":"No element found with given id"},"ew":{"message":"Type \"%s\" is not supported in amp-ad"},"ex":{"message":"Ad units with data-full-width must have width=\"100vw\"."},"ey":{"message":"Ad network does not support full width ads."},"ez":{"message":"<amp-ad> is not allowed to be placed in elements with position:fixed: %s unless it has sticky attribute"},"eA":{"message":"E#19457 this.slideIndex_"},"eB":{"message":"Attempting to access a non-existant slide %s / %s"},"eC":{"message":"Action for a button does not map to enum."},"eD":{"message":"Found more than one images or none in slide!"},"eE":{"message":"The element %s isn't supported in lightbox yet."},"eF":{"message":"Unsupported access type: "},"eG":{"message":"Unknown access type: %s"},"eH":{"message":"\"login\" must be either a single URL or a map of URLs"},"eI":{"message":"Authorization failed: "},"eJ":{"message":"Pingback failed: "},"eK":{"message":"Login URL is not configured: %s"},"eL":{"message":"Login URL is not ready: %s"},"eM":{"message":"Invalid story url"},"eN":{"message":"Invalid config url."},"eO":{"message":"Invalid HTTP response"},"eP":{"message":"Animation has infinite timeline, we can not seek to a relative position within an infinite timeline. Use \"time\" for seekTo or remove infinite iterations"},"eQ":{"message":"One of attributes [%s] is required"},"eR":{"message":"Invalid date attribute \"%s\""},"eS":{"message":"Too many children"},"eT":{"message":"Improper number of options. Expected %s <= options <= %s but got %s."},"eU":{"message":"Invalid interactive response, expected { data: InteractiveResponseType, ...} but received %s"},"eV":{"message":"Duplicate interactive ID %s"},"eW":{"message":"Service config does not have authorization Url"},"eX":{"message":"pingbackUrl is null"},"eY":{"message":"iframe initialized called without iframe config type"},"eZ":{"message":"\"iframeSrc\" URL must be specified"},"f0":{"message":"\"iframeVars\" must be an array"},"f1":{"message":"LINKER_PARAM requires two params, name and id"},"f2":{"message":"Invalid page URL supplied to amp-next-page, pages must be from the same origin as the current document"},"f3":{"message":"page url must be a string"},"f4":{"message":"page image must be a string"},"f5":{"message":"page title must be a string"},"f6":{"message":"\"authorization\" URL must be specified"},"f7":{"message":"\"pingback\" URL must be specified"},"f8":{"message":"\"authorizationTimeout\" must be a number"},"f9":{"message":"amp-ad sticky is deprecating empty attribute value, please use <amp-ad sticky=\"bottom\" instead"},"fa":{"message":"Invalid sticky ad type: %s"},"fb":{"message":"multiple invocations of init without destroy!"},"fc":{"message":"element clientRect should intersects with root clientRect"},"fd":{"message":"Dialog already opened"},"fe":{"message":"No authorization data available"},"ff":{"message":"\"defaultResponse\" must be specified"},"fg":{"message":"failed to restore access response: "},"fh":{"message":"failed to store access response: "},"fi":{"message":"Cannot authorize for proxy origin"},"fj":{"message":"\"publicKey\" or \"publicKeyUrl\" must be specified"},"fk":{"message":"\"amp_authdata\" must be present in JWT"},"fl":{"message":"JWT fetch or validation failed: "},"fm":{"message":"\"exp\" field must be specified"},"fn":{"message":"token has expired: %s"},"fo":{"message":"\"aud\" field must be specified"},"fp":{"message":"\"aud\" must be \"%s\": %s"},"fq":{"message":"\"vendor\" name must be specified"},"fr":{"message":"Vendor has already been registered"},"fs":{"message":"Actions have not been defined in the service config"},"ft":{"message":"Action \"login\" is not present in action map"},"fu":{"message":"Action \"subscribe\" is not present in action map"},"fv":{"message":"LINKER_PARAM value checksum not valid"},"fw":{"message":"Invalid linker_param value %s"},"fx":{"message":"Invalid version number %s"},"fy":{"message":"Invalid linker key: %s"},"fz":{"message":"Invalid linker key %s, value ignored"},"fA":{"message":"Action URL is not configured: %s"},"fB":{"message":"Action URL is not ready: %s"},"fC":{"message":"Invalid threshold for sampling."},"fD":{"message":"Error loading vendor config: "},"fE":{"message":"Error loading remote config: "},"fF":{"message":"Error rewriting configuration: "},"fG":{"message":"The tag should contain only one <script> child."},"fH":{"message":"Inline or remote config should not overwrite vendor transport settings"},"fI":{"message":"Inline configs are not allowed to specify transport iframe"},"fJ":{"message":"Remote configs are not allowed to specify transport iframe"},"fK":{"message":"optout property is only available to vendor config."},"fL":{"message":"iframePing config is only available to vendor config."},"fM":{"message":"Cannot have duplicate selectors in selectors list: %s"},"fN":{"message":"expected global \"analytics-browser-events\" experiment to be enabled"},"fO":{"message":"Missing required selector on browser event trigger"},"fP":{"message":"Missing required selector on click trigger"},"fQ":{"message":"Missing scrollSpec on scroll trigger."},"fR":{"message":"Boundaries are required for the scroll trigger to work."},"fS":{"message":"Scroll trigger boundaries must be finite."},"fT":{"message":"Timer interval specification required"},"fU":{"message":"Bad timer interval specification"},"fV":{"message":"Bad maxTimerLength specification"},"fW":{"message":"Bad timer specification"},"fX":{"message":"Bad timer start specification"},"fY":{"message":"Bad timer stop specification"},"fZ":{"message":"Cannot track timer start"},"g0":{"message":"Cannot track timer stop"},"g1":{"message":"Missing required selector on video trigger"},"g2":{"message":"video-seconds-played requires interval spec with non-zero value"},"g3":{"message":"video-percentage-played requires percentages spec."},"g4":{"message":"Percentages must be set in increments of %s with non-zero values"},"g5":{"message":"No target specified by video session event."},"g6":{"message":"reportWhen and repeat are mutually exclusive."},"g7":{"message":"ReportWhen should not be defined when eventType is \"hidden\""},"g8":{"message":"reportWhen value \"%s\" not supported."},"g9":{"message":"waitFor for non-AMP elements must be none or null. Found %s"},"ga":{"message":"waitFor value %s not supported"},"gb":{"message":"Sessions can only be accessed with a vendor type."},"gc":{"message":"Invalid stored session value"},"gd":{"message":"Could not expand URL \"%s\": %s"},"ge":{"message":"iframePing is only available on page view requests."},"gf":{"message":"Invalid batchInterval value: %s"},"gg":{"message":"Invalid batchInterval value: %s, interval value must be greater than %s ms."},"gh":{"message":"Should not start batchInterval without pointer"},"gi":{"message":"\"ids\" is a required field for use of \"linkers\"."},"gj":{"message":"iframe transport was inadvertently deleted"},"gk":{"message":"No friendly amp-ad ancestor element was found for amp-analytics tag with iframe transport."},"gl":{"message":"Request not sent. Contents empty."},"gm":{"message":"Origin of iframe request must not be equal to the document origin. See https://github.com/ampproject/amphtml/blob/main/docs/spec/amp-iframe-origin-policy.md for details."},"gn":{"message":"Start index %sin substr macro should be a number"},"go":{"message":"Length %s in substr macro should be a number"},"gp":{"message":"Third argument in MATCH macro must be a number >= 0"},"gq":{"message":"CALC macro - left operand must be a number"},"gr":{"message":"CALC macro - right operand must be a number"},"gs":{"message":"CALC macro - cannot divide by 0"},"gt":{"message":"CALC macro - Invalid operation"},"gu":{"message":"Macro \"%s\" already registered."},"gv":{"message":"Maximum depth reached while expanding variables. Please ensure that the variables are not recursive."},"gw":{"message":"Variable with invalid format found: %s"},"gx":{"message":"Trigger type \"%s\" is not allowed in the %s"},"gy":{"message":"Element \"%s\" not found"},"gz":{"message":"Invalid query selector %s"},"gA":{"message":"Cannot have selectionMethod %s defined with an array selector."},"gB":{"message":"Element \"%s\" is required to be an AMP element"},"gC":{"message":"Bad query selector."},"gD":{"message":"Must supply iframe URL to constructor!"},"gE":{"message":"Trying to use non-existent frame"},"gF":{"message":"Long Task: Vendor: \"%s\""},"gG":{"message":"Marked the %s frame as done, but there is no record of it existing."},"gH":{"message":"Trying to send message to non-existent frame"},"gI":{"message":"Event queue is missing for messages from %s to creative ID %s"},"gJ":{"message":"Attempted to enqueue malformed message for: %s"},"gK":{"message":"invalid visiblePercentageThresholds"},"gL":{"message":"visiblePercentageThresholds entry length is not 2"},"gM":{"message":"visiblePercentageThresholds entry is not valid number"},"gN":{"message":"visiblePercentageThresholds entry invalid min/max value"},"gO":{"message":"Attempt to refresh visible event before previous one resolve"},"gP":{"message":"invalid visibility value: %s"},"gQ":{"message":"Failed to merge result from AMP.setState()."},"gR":{"message":"One state action allowed per event."},"gS":{"message":"Unrecognized method: %s.%s"},"gT":{"message":"Please use the object-literal syntax, e.g. \"AMP.setState({foo: 'bar'})\" instead of \"AMP.setState(foo='bar')\"."},"gU":{"message":"Maximum number of bindings reached (%s). Additional elements with bindings will be ignored."},"gV":{"message":"%s: Binding to [%s] on <%s> is not allowed."},"gW":{"message":"%s: Expression evaluation error in \"%s\". %s"},"gX":{"message":"%s: Applying expression results (%s) failed with error,"},"gY":{"message":"%s: \"%s\" is not a valid result for [class]."},"gZ":{"message":"%s: \"%s\" is not a valid result for [%]"},"h0":{"message":"Failed to copy JSON (%s) with error: %s"},"h1":{"message":"ownerDocument is null."},"h2":{"message":"Can't refresh <amp-state> without \"src\" attribute."},"h3":{"message":"ampdoc must be visible before mutation."},"h4":{"message":"<amp-state> must have an id."},"h5":{"message":"Received unexpected message (%s, %s) from worker."},"h6":{"message":"Received mismatched method (%s, %s), expected %s."},"h7":{"message":"clickio: siteId and unitId are required"}}
