diff --git a/src/Pass/TwitterTransformPass.php b/src/Pass/TwitterTransformPass.php index e586bdcd..7e88ba9a 100644 --- a/src/Pass/TwitterTransformPass.php +++ b/src/Pass/TwitterTransformPass.php @@ -142,7 +142,7 @@ protected function getTweetId(DOMQuery $el) $matches = []; if (preg_match('&(*UTF8)twitter.com/.*/status(?:es)?/([^/]+)&i', $href, $matches)) { if (!empty($matches[1])) { - $tweet_id = $matches[1]; + $tweet_id = strtok($matches[1], "?"); break; } } diff --git a/src/Spec/validator-generated.php b/src/Spec/validator-generated.php index 082bb58a..9ce67bb3 100644 --- a/src/Spec/validator-generated.php +++ b/src/Spec/validator-generated.php @@ -1045,1060 +1045,1056 @@ public static function createValidationRules() { $o_0->tags[] = $o_186; $o_188 = new TagSpec(); $o_188->tag_name = 'span'; + $o_189 = new AttrSpec(); + $o_189->name = 'visible-when-invalid'; + $o_188->attrs[] = $o_189; + $o_190 = new AttrSpec(); + $o_190->name = 'validation-for'; + $o_188->attrs[] = $o_190; $o_0->tags[] = $o_188; - $o_189 = new TagSpec(); - $o_189->tag_name = 'br'; - $o_0->tags[] = $o_189; - $o_190 = new TagSpec(); - $o_190->tag_name = 'wbr'; - $o_0->tags[] = $o_190; $o_191 = new TagSpec(); - $o_191->tag_name = 'ins'; - $o_192 = new AttrSpec(); - $o_192->name = 'datetime'; - $o_191->attrs[] = $o_192; - $o_191->attr_lists = ['cite-attr']; + $o_191->tag_name = 'br'; $o_0->tags[] = $o_191; + $o_192 = new TagSpec(); + $o_192->tag_name = 'wbr'; + $o_0->tags[] = $o_192; $o_193 = new TagSpec(); - $o_193->tag_name = 'del'; + $o_193->tag_name = 'ins'; $o_194 = new AttrSpec(); $o_194->name = 'datetime'; $o_193->attrs[] = $o_194; $o_193->attr_lists = ['cite-attr']; $o_0->tags[] = $o_193; $o_195 = new TagSpec(); - $o_195->tag_name = 'img'; + $o_195->tag_name = 'del'; $o_196 = new AttrSpec(); - $o_196->name = 'alt'; + $o_196->name = 'datetime'; $o_195->attrs[] = $o_196; - $o_197 = new AttrSpec(); - $o_197->name = 'ismap'; - $o_195->attrs[] = $o_197; + $o_195->attr_lists = ['cite-attr']; + $o_0->tags[] = $o_195; + $o_197 = new TagSpec(); + $o_197->tag_name = 'img'; $o_198 = new AttrSpec(); - $o_198->name = 'longdesc'; - $o_199 = new UrlSpec(); - $o_199->allowed_protocol = ['http', 'https']; - $o_199->allow_relative = true; - $o_198->value_url = $o_199; - $o_195->attrs[] = $o_198; + $o_198->name = 'alt'; + $o_197->attrs[] = $o_198; + $o_199 = new AttrSpec(); + $o_199->name = 'ismap'; + $o_197->attrs[] = $o_199; $o_200 = new AttrSpec(); - $o_200->name = 'src'; - $o_200->alternative_names = ['srcset']; - $o_200->mandatory = true; + $o_200->name = 'longdesc'; $o_201 = new UrlSpec(); - $o_201->allowed_protocol = ['data', 'https']; + $o_201->allowed_protocol = ['http', 'https']; $o_201->allow_relative = true; $o_200->value_url = $o_201; - $o_195->attrs[] = $o_200; + $o_197->attrs[] = $o_200; $o_202 = new AttrSpec(); - $o_202->name = 'border'; - $o_195->attrs[] = $o_202; - $o_203 = new AttrSpec(); - $o_203->name = 'height'; - $o_195->attrs[] = $o_203; + $o_202->name = 'src'; + $o_202->alternative_names = ['srcset']; + $o_202->mandatory = true; + $o_203 = new UrlSpec(); + $o_203->allowed_protocol = ['data', 'https']; + $o_203->allow_relative = true; + $o_202->value_url = $o_203; + $o_197->attrs[] = $o_202; $o_204 = new AttrSpec(); - $o_204->name = 'width'; - $o_195->attrs[] = $o_204; - $o_195->spec_url = 'https://www.ampproject.org/docs/reference/amp-img.html'; - $o_195->mandatory_ancestor = 'noscript'; - $o_195->mandatory_ancestor_suggested_alternative = 'amp-img'; - $o_0->tags[] = $o_195; - $o_205 = new TagSpec(); - $o_205->tag_name = 'video'; + $o_204->name = 'border'; + $o_197->attrs[] = $o_204; + $o_205 = new AttrSpec(); + $o_205->name = 'height'; + $o_197->attrs[] = $o_205; $o_206 = new AttrSpec(); - $o_206->name = 'autoplay'; - $o_205->attrs[] = $o_206; - $o_207 = new AttrSpec(); - $o_207->name = 'controls'; - $o_205->attrs[] = $o_207; + $o_206->name = 'width'; + $o_197->attrs[] = $o_206; + $o_197->spec_url = 'https://www.ampproject.org/docs/reference/amp-img.html'; + $o_197->mandatory_ancestor = 'noscript'; + $o_197->mandatory_ancestor_suggested_alternative = 'amp-img'; + $o_0->tags[] = $o_197; + $o_207 = new TagSpec(); + $o_207->tag_name = 'video'; $o_208 = new AttrSpec(); - $o_208->name = 'height'; - $o_205->attrs[] = $o_208; + $o_208->name = 'autoplay'; + $o_207->attrs[] = $o_208; $o_209 = new AttrSpec(); - $o_209->name = 'loop'; - $o_205->attrs[] = $o_209; + $o_209->name = 'controls'; + $o_207->attrs[] = $o_209; $o_210 = new AttrSpec(); - $o_210->name = 'muted'; - $o_205->attrs[] = $o_210; + $o_210->name = 'height'; + $o_207->attrs[] = $o_210; $o_211 = new AttrSpec(); - $o_211->name = 'poster'; - $o_205->attrs[] = $o_211; + $o_211->name = 'loop'; + $o_207->attrs[] = $o_211; $o_212 = new AttrSpec(); - $o_212->name = 'preload'; - $o_205->attrs[] = $o_212; + $o_212->name = 'muted'; + $o_207->attrs[] = $o_212; $o_213 = new AttrSpec(); - $o_213->name = 'src'; - $o_214 = new UrlSpec(); - $o_214->allowed_protocol = ['data', 'https']; - $o_214->allow_relative = false; - $o_213->value_url = $o_214; - $o_205->attrs[] = $o_213; + $o_213->name = 'poster'; + $o_207->attrs[] = $o_213; + $o_214 = new AttrSpec(); + $o_214->name = 'preload'; + $o_207->attrs[] = $o_214; $o_215 = new AttrSpec(); - $o_215->name = 'width'; - $o_205->attrs[] = $o_215; - $o_205->spec_url = 'https://www.ampproject.org/docs/reference/amp-video.html'; - $o_205->mandatory_ancestor = 'noscript'; - $o_205->mandatory_ancestor_suggested_alternative = 'amp-video'; - $o_0->tags[] = $o_205; - $o_216 = new TagSpec(); - $o_216->tag_name = 'audio'; + $o_215->name = 'src'; + $o_216 = new UrlSpec(); + $o_216->allowed_protocol = ['data', 'https']; + $o_216->allow_relative = false; + $o_215->value_url = $o_216; + $o_207->attrs[] = $o_215; $o_217 = new AttrSpec(); - $o_217->name = 'autoplay'; - $o_216->attrs[] = $o_217; - $o_218 = new AttrSpec(); - $o_218->name = 'controls'; - $o_216->attrs[] = $o_218; + $o_217->name = 'width'; + $o_207->attrs[] = $o_217; + $o_207->spec_url = 'https://www.ampproject.org/docs/reference/amp-video.html'; + $o_207->mandatory_ancestor = 'noscript'; + $o_207->mandatory_ancestor_suggested_alternative = 'amp-video'; + $o_0->tags[] = $o_207; + $o_218 = new TagSpec(); + $o_218->tag_name = 'audio'; $o_219 = new AttrSpec(); - $o_219->name = 'loop'; - $o_216->attrs[] = $o_219; + $o_219->name = 'autoplay'; + $o_218->attrs[] = $o_219; $o_220 = new AttrSpec(); - $o_220->name = 'muted'; - $o_216->attrs[] = $o_220; + $o_220->name = 'controls'; + $o_218->attrs[] = $o_220; $o_221 = new AttrSpec(); - $o_221->name = 'preload'; - $o_216->attrs[] = $o_221; + $o_221->name = 'loop'; + $o_218->attrs[] = $o_221; $o_222 = new AttrSpec(); - $o_222->name = 'src'; - $o_223 = new UrlSpec(); - $o_223->allowed_protocol = ['data', 'https']; - $o_223->allow_relative = false; - $o_222->value_url = $o_223; - $o_216->attrs[] = $o_222; - $o_216->spec_url = 'https://www.ampproject.org/docs/reference/extended/amp-audio.html'; - $o_216->mandatory_ancestor = 'noscript'; - $o_216->mandatory_ancestor_suggested_alternative = 'amp-audio'; - $o_0->tags[] = $o_216; - $o_224 = new TagSpec(); - $o_224->tag_name = 'source'; - $o_224->spec_name = 'amp-video > source'; - $o_224->mandatory_parent = 'amp-video'; - $o_225 = new AttrSpec(); - $o_225->name = 'src'; - $o_226 = new UrlSpec(); - $o_226->allowed_protocol = ['https']; - $o_226->allow_relative = true; - $o_225->value_url = $o_226; - $o_224->attrs[] = $o_225; + $o_222->name = 'muted'; + $o_218->attrs[] = $o_222; + $o_223 = new AttrSpec(); + $o_223->name = 'preload'; + $o_218->attrs[] = $o_223; + $o_224 = new AttrSpec(); + $o_224->name = 'src'; + $o_225 = new UrlSpec(); + $o_225->allowed_protocol = ['data', 'https']; + $o_225->allow_relative = false; + $o_224->value_url = $o_225; + $o_218->attrs[] = $o_224; + $o_218->spec_url = 'https://www.ampproject.org/docs/reference/extended/amp-audio.html'; + $o_218->mandatory_ancestor = 'noscript'; + $o_218->mandatory_ancestor_suggested_alternative = 'amp-audio'; + $o_0->tags[] = $o_218; + $o_226 = new TagSpec(); + $o_226->tag_name = 'source'; + $o_226->spec_name = 'amp-video > source'; + $o_226->mandatory_parent = 'amp-video'; $o_227 = new AttrSpec(); - $o_227->name = 'media'; - $o_224->attrs[] = $o_227; - $o_228 = new AttrSpec(); - $o_228->name = 'type'; - $o_224->attrs[] = $o_228; - $o_224->spec_url = 'https://www.ampproject.org/docs/reference/amp-video.html'; - $o_0->tags[] = $o_224; - $o_229 = new TagSpec(); - $o_229->tag_name = 'source'; - $o_229->spec_name = 'amp-audio > source'; - $o_229->mandatory_parent = 'amp-audio'; + $o_227->name = 'src'; + $o_228 = new UrlSpec(); + $o_228->allowed_protocol = ['https']; + $o_228->allow_relative = true; + $o_227->value_url = $o_228; + $o_226->attrs[] = $o_227; + $o_229 = new AttrSpec(); + $o_229->name = 'media'; + $o_226->attrs[] = $o_229; $o_230 = new AttrSpec(); - $o_230->name = 'src'; - $o_231 = new UrlSpec(); - $o_231->allowed_protocol = ['https']; - $o_231->allow_relative = true; - $o_230->value_url = $o_231; - $o_229->attrs[] = $o_230; + $o_230->name = 'type'; + $o_226->attrs[] = $o_230; + $o_226->spec_url = 'https://www.ampproject.org/docs/reference/amp-video.html'; + $o_0->tags[] = $o_226; + $o_231 = new TagSpec(); + $o_231->tag_name = 'source'; + $o_231->spec_name = 'amp-audio > source'; + $o_231->mandatory_parent = 'amp-audio'; $o_232 = new AttrSpec(); - $o_232->name = 'media'; - $o_229->attrs[] = $o_232; - $o_233 = new AttrSpec(); - $o_233->name = 'type'; - $o_229->attrs[] = $o_233; - $o_229->spec_url = 'https://www.ampproject.org/docs/reference/extended/amp-audio.html'; - $o_0->tags[] = $o_229; - $o_234 = new TagSpec(); - $o_234->tag_name = 'source'; - $o_234->spec_name = 'audio > source'; - $o_234->mandatory_parent = 'audio'; + $o_232->name = 'src'; + $o_233 = new UrlSpec(); + $o_233->allowed_protocol = ['https']; + $o_233->allow_relative = true; + $o_232->value_url = $o_233; + $o_231->attrs[] = $o_232; + $o_234 = new AttrSpec(); + $o_234->name = 'media'; + $o_231->attrs[] = $o_234; $o_235 = new AttrSpec(); - $o_235->name = 'src'; - $o_235->mandatory = true; - $o_236 = new UrlSpec(); - $o_236->allowed_protocol = ['https']; - $o_236->allow_relative = true; - $o_235->value_url = $o_236; - $o_234->attrs[] = $o_235; + $o_235->name = 'type'; + $o_231->attrs[] = $o_235; + $o_231->spec_url = 'https://www.ampproject.org/docs/reference/extended/amp-audio.html'; + $o_0->tags[] = $o_231; + $o_236 = new TagSpec(); + $o_236->tag_name = 'source'; + $o_236->spec_name = 'audio > source'; + $o_236->mandatory_parent = 'audio'; $o_237 = new AttrSpec(); - $o_237->name = 'type'; + $o_237->name = 'src'; $o_237->mandatory = true; - $o_234->attrs[] = $o_237; - $o_238 = new AttrSpec(); - $o_238->name = 'media'; - $o_234->attrs[] = $o_238; - $o_0->tags[] = $o_234; - $o_239 = new TagSpec(); - $o_239->tag_name = 'source'; - $o_239->spec_name = 'video > source'; - $o_239->mandatory_parent = 'video'; + $o_238 = new UrlSpec(); + $o_238->allowed_protocol = ['https']; + $o_238->allow_relative = true; + $o_237->value_url = $o_238; + $o_236->attrs[] = $o_237; + $o_239 = new AttrSpec(); + $o_239->name = 'type'; + $o_239->mandatory = true; + $o_236->attrs[] = $o_239; $o_240 = new AttrSpec(); - $o_240->name = 'src'; - $o_240->mandatory = true; - $o_241 = new UrlSpec(); - $o_241->allowed_protocol = ['https']; - $o_241->allow_relative = true; - $o_240->value_url = $o_241; - $o_239->attrs[] = $o_240; + $o_240->name = 'media'; + $o_236->attrs[] = $o_240; + $o_0->tags[] = $o_236; + $o_241 = new TagSpec(); + $o_241->tag_name = 'source'; + $o_241->spec_name = 'video > source'; + $o_241->mandatory_parent = 'video'; $o_242 = new AttrSpec(); - $o_242->name = 'type'; + $o_242->name = 'src'; $o_242->mandatory = true; - $o_239->attrs[] = $o_242; - $o_243 = new AttrSpec(); - $o_243->name = 'media'; - $o_239->attrs[] = $o_243; - $o_0->tags[] = $o_239; - $o_244 = new TagSpec(); - $o_244->tag_name = 'track'; - $o_244->spec_name = 'audio > track'; - $o_244->mandatory_parent = 'audio'; - $o_244->attr_lists = ['track-attrs-no-subtitles']; - $o_0->tags[] = $o_244; - $o_245 = new TagSpec(); - $o_245->tag_name = 'track'; - $o_245->spec_name = 'audio > track[kind=subtitles]'; - $o_245->mandatory_parent = 'audio'; - $o_245->attr_lists = ['track-attrs-subtitles']; - $o_0->tags[] = $o_245; + $o_243 = new UrlSpec(); + $o_243->allowed_protocol = ['https']; + $o_243->allow_relative = true; + $o_242->value_url = $o_243; + $o_241->attrs[] = $o_242; + $o_244 = new AttrSpec(); + $o_244->name = 'type'; + $o_244->mandatory = true; + $o_241->attrs[] = $o_244; + $o_245 = new AttrSpec(); + $o_245->name = 'media'; + $o_241->attrs[] = $o_245; + $o_0->tags[] = $o_241; $o_246 = new TagSpec(); $o_246->tag_name = 'track'; - $o_246->spec_name = 'video > track'; - $o_246->mandatory_parent = 'video'; + $o_246->spec_name = 'audio > track'; + $o_246->mandatory_parent = 'audio'; $o_246->attr_lists = ['track-attrs-no-subtitles']; $o_0->tags[] = $o_246; $o_247 = new TagSpec(); $o_247->tag_name = 'track'; - $o_247->spec_name = 'video > track[kind=subtitles]'; - $o_247->mandatory_parent = 'video'; + $o_247->spec_name = 'audio > track[kind=subtitles]'; + $o_247->mandatory_parent = 'audio'; $o_247->attr_lists = ['track-attrs-subtitles']; $o_0->tags[] = $o_247; $o_248 = new TagSpec(); $o_248->tag_name = 'track'; - $o_248->spec_name = 'amp-audio > track'; - $o_248->mandatory_parent = 'amp-audio'; + $o_248->spec_name = 'video > track'; + $o_248->mandatory_parent = 'video'; $o_248->attr_lists = ['track-attrs-no-subtitles']; $o_0->tags[] = $o_248; $o_249 = new TagSpec(); $o_249->tag_name = 'track'; - $o_249->spec_name = 'amp-audio > track[kind=subtitles]'; - $o_249->mandatory_parent = 'amp-audio'; + $o_249->spec_name = 'video > track[kind=subtitles]'; + $o_249->mandatory_parent = 'video'; $o_249->attr_lists = ['track-attrs-subtitles']; $o_0->tags[] = $o_249; $o_250 = new TagSpec(); $o_250->tag_name = 'track'; - $o_250->spec_name = 'amp-video > track'; - $o_250->mandatory_parent = 'amp-video'; + $o_250->spec_name = 'amp-audio > track'; + $o_250->mandatory_parent = 'amp-audio'; $o_250->attr_lists = ['track-attrs-no-subtitles']; $o_0->tags[] = $o_250; $o_251 = new TagSpec(); $o_251->tag_name = 'track'; - $o_251->spec_name = 'amp-video > track[kind=subtitles]'; - $o_251->mandatory_parent = 'amp-video'; + $o_251->spec_name = 'amp-audio > track[kind=subtitles]'; + $o_251->mandatory_parent = 'amp-audio'; $o_251->attr_lists = ['track-attrs-subtitles']; $o_0->tags[] = $o_251; $o_252 = new TagSpec(); - $o_252->tag_name = 'g'; - $o_253 = new AttrSpec(); - $o_253->name = 'class'; - $o_252->attrs[] = $o_253; - $o_254 = new AttrSpec(); - $o_254->name = 'externalresourcesrequired'; - $o_252->attrs[] = $o_254; - $o_255 = new AttrSpec(); - $o_255->name = 'transform'; - $o_252->attrs[] = $o_255; - $o_252->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_252->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_252->mandatory_ancestor = 'svg'; + $o_252->tag_name = 'track'; + $o_252->spec_name = 'amp-video > track'; + $o_252->mandatory_parent = 'amp-video'; + $o_252->attr_lists = ['track-attrs-no-subtitles']; $o_0->tags[] = $o_252; - $o_256 = new TagSpec(); - $o_256->tag_name = 'glyph'; + $o_253 = new TagSpec(); + $o_253->tag_name = 'track'; + $o_253->spec_name = 'amp-video > track[kind=subtitles]'; + $o_253->mandatory_parent = 'amp-video'; + $o_253->attr_lists = ['track-attrs-subtitles']; + $o_0->tags[] = $o_253; + $o_254 = new TagSpec(); + $o_254->tag_name = 'g'; + $o_255 = new AttrSpec(); + $o_255->name = 'class'; + $o_254->attrs[] = $o_255; + $o_256 = new AttrSpec(); + $o_256->name = 'externalresourcesrequired'; + $o_254->attrs[] = $o_256; $o_257 = new AttrSpec(); - $o_257->name = 'arabic-form'; - $o_256->attrs[] = $o_257; - $o_258 = new AttrSpec(); - $o_258->name = 'class'; - $o_256->attrs[] = $o_258; + $o_257->name = 'transform'; + $o_254->attrs[] = $o_257; + $o_254->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_254->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_254->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_254; + $o_258 = new TagSpec(); + $o_258->tag_name = 'glyph'; $o_259 = new AttrSpec(); - $o_259->name = 'd'; - $o_256->attrs[] = $o_259; + $o_259->name = 'arabic-form'; + $o_258->attrs[] = $o_259; $o_260 = new AttrSpec(); - $o_260->name = 'glyph-name'; - $o_256->attrs[] = $o_260; + $o_260->name = 'class'; + $o_258->attrs[] = $o_260; $o_261 = new AttrSpec(); - $o_261->name = 'horiz-adv-x'; - $o_256->attrs[] = $o_261; + $o_261->name = 'd'; + $o_258->attrs[] = $o_261; $o_262 = new AttrSpec(); - $o_262->name = 'orientation'; - $o_256->attrs[] = $o_262; + $o_262->name = 'glyph-name'; + $o_258->attrs[] = $o_262; $o_263 = new AttrSpec(); - $o_263->name = 'unicode'; - $o_256->attrs[] = $o_263; + $o_263->name = 'horiz-adv-x'; + $o_258->attrs[] = $o_263; $o_264 = new AttrSpec(); - $o_264->name = 'vert-origin-x'; - $o_256->attrs[] = $o_264; + $o_264->name = 'orientation'; + $o_258->attrs[] = $o_264; $o_265 = new AttrSpec(); - $o_265->name = 'vert-origin-y'; - $o_256->attrs[] = $o_265; + $o_265->name = 'unicode'; + $o_258->attrs[] = $o_265; $o_266 = new AttrSpec(); - $o_266->name = 'vert-adv-y'; - $o_256->attrs[] = $o_266; - $o_256->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes']; - $o_256->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_256->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_256; - $o_267 = new TagSpec(); - $o_267->tag_name = 'glyphref'; + $o_266->name = 'vert-origin-x'; + $o_258->attrs[] = $o_266; + $o_267 = new AttrSpec(); + $o_267->name = 'vert-origin-y'; + $o_258->attrs[] = $o_267; $o_268 = new AttrSpec(); - $o_268->name = 'class'; - $o_267->attrs[] = $o_268; - $o_269 = new AttrSpec(); - $o_269->name = 'dx'; - $o_267->attrs[] = $o_269; + $o_268->name = 'vert-adv-y'; + $o_258->attrs[] = $o_268; + $o_258->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes']; + $o_258->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_258->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_258; + $o_269 = new TagSpec(); + $o_269->tag_name = 'glyphref'; $o_270 = new AttrSpec(); - $o_270->name = 'dy'; - $o_267->attrs[] = $o_270; + $o_270->name = 'class'; + $o_269->attrs[] = $o_270; $o_271 = new AttrSpec(); - $o_271->name = 'format'; - $o_267->attrs[] = $o_271; + $o_271->name = 'dx'; + $o_269->attrs[] = $o_271; $o_272 = new AttrSpec(); - $o_272->name = 'glyphref'; - $o_267->attrs[] = $o_272; + $o_272->name = 'dy'; + $o_269->attrs[] = $o_272; $o_273 = new AttrSpec(); - $o_273->name = 'x'; - $o_267->attrs[] = $o_273; + $o_273->name = 'format'; + $o_269->attrs[] = $o_273; $o_274 = new AttrSpec(); - $o_274->name = 'y'; - $o_267->attrs[] = $o_274; - $o_267->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; - $o_267->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_267->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_267; - $o_275 = new TagSpec(); - $o_275->tag_name = 'marker'; + $o_274->name = 'glyphref'; + $o_269->attrs[] = $o_274; + $o_275 = new AttrSpec(); + $o_275->name = 'x'; + $o_269->attrs[] = $o_275; $o_276 = new AttrSpec(); - $o_276->name = 'class'; - $o_275->attrs[] = $o_276; - $o_277 = new AttrSpec(); - $o_277->name = 'externalresourcesrequired'; - $o_275->attrs[] = $o_277; + $o_276->name = 'y'; + $o_269->attrs[] = $o_276; + $o_269->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; + $o_269->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_269->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_269; + $o_277 = new TagSpec(); + $o_277->tag_name = 'marker'; $o_278 = new AttrSpec(); - $o_278->name = 'markerunits'; - $o_275->attrs[] = $o_278; + $o_278->name = 'class'; + $o_277->attrs[] = $o_278; $o_279 = new AttrSpec(); - $o_279->name = 'markerwidth'; - $o_275->attrs[] = $o_279; + $o_279->name = 'externalresourcesrequired'; + $o_277->attrs[] = $o_279; $o_280 = new AttrSpec(); - $o_280->name = 'markerheight'; - $o_275->attrs[] = $o_280; + $o_280->name = 'markerunits'; + $o_277->attrs[] = $o_280; $o_281 = new AttrSpec(); - $o_281->name = 'orient'; - $o_275->attrs[] = $o_281; + $o_281->name = 'markerwidth'; + $o_277->attrs[] = $o_281; $o_282 = new AttrSpec(); - $o_282->name = 'preserveaspectratio'; - $o_275->attrs[] = $o_282; + $o_282->name = 'markerheight'; + $o_277->attrs[] = $o_282; $o_283 = new AttrSpec(); - $o_283->name = 'refx'; - $o_275->attrs[] = $o_283; + $o_283->name = 'orient'; + $o_277->attrs[] = $o_283; $o_284 = new AttrSpec(); - $o_284->name = 'refy'; - $o_275->attrs[] = $o_284; + $o_284->name = 'preserveaspectratio'; + $o_277->attrs[] = $o_284; $o_285 = new AttrSpec(); - $o_285->name = 'transform'; - $o_275->attrs[] = $o_285; + $o_285->name = 'refx'; + $o_277->attrs[] = $o_285; $o_286 = new AttrSpec(); - $o_286->name = 'viewbox'; - $o_275->attrs[] = $o_286; - $o_275->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes']; - $o_275->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_275->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_275; - $o_287 = new TagSpec(); - $o_287->tag_name = 'path'; + $o_286->name = 'refy'; + $o_277->attrs[] = $o_286; + $o_287 = new AttrSpec(); + $o_287->name = 'transform'; + $o_277->attrs[] = $o_287; $o_288 = new AttrSpec(); - $o_288->name = 'class'; - $o_287->attrs[] = $o_288; - $o_289 = new AttrSpec(); - $o_289->name = 'd'; - $o_287->attrs[] = $o_289; + $o_288->name = 'viewbox'; + $o_277->attrs[] = $o_288; + $o_277->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes']; + $o_277->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_277->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_277; + $o_289 = new TagSpec(); + $o_289->tag_name = 'path'; $o_290 = new AttrSpec(); - $o_290->name = 'externalresourcesrequired'; - $o_287->attrs[] = $o_290; + $o_290->name = 'class'; + $o_289->attrs[] = $o_290; $o_291 = new AttrSpec(); - $o_291->name = 'pathlength'; - $o_287->attrs[] = $o_291; + $o_291->name = 'd'; + $o_289->attrs[] = $o_291; $o_292 = new AttrSpec(); - $o_292->name = 'sketch:type'; - $o_287->attrs[] = $o_292; + $o_292->name = 'externalresourcesrequired'; + $o_289->attrs[] = $o_292; $o_293 = new AttrSpec(); - $o_293->name = 'transform'; - $o_287->attrs[] = $o_293; - $o_287->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_287->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_287->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_287; - $o_294 = new TagSpec(); - $o_294->tag_name = 'svg'; + $o_293->name = 'pathlength'; + $o_289->attrs[] = $o_293; + $o_294 = new AttrSpec(); + $o_294->name = 'sketch:type'; + $o_289->attrs[] = $o_294; $o_295 = new AttrSpec(); - $o_295->name = 'class'; - $o_294->attrs[] = $o_295; - $o_296 = new AttrSpec(); - $o_296->name = 'contentscripttype'; - $o_294->attrs[] = $o_296; + $o_295->name = 'transform'; + $o_289->attrs[] = $o_295; + $o_289->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_289->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_289->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_289; + $o_296 = new TagSpec(); + $o_296->tag_name = 'svg'; $o_297 = new AttrSpec(); - $o_297->name = 'contentstyletype'; - $o_294->attrs[] = $o_297; + $o_297->name = 'class'; + $o_296->attrs[] = $o_297; $o_298 = new AttrSpec(); - $o_298->name = 'externalresourcesrequired'; - $o_294->attrs[] = $o_298; + $o_298->name = 'contentscripttype'; + $o_296->attrs[] = $o_298; $o_299 = new AttrSpec(); - $o_299->name = 'height'; - $o_294->attrs[] = $o_299; + $o_299->name = 'contentstyletype'; + $o_296->attrs[] = $o_299; $o_300 = new AttrSpec(); - $o_300->name = 'preserveaspectratio'; - $o_294->attrs[] = $o_300; + $o_300->name = 'externalresourcesrequired'; + $o_296->attrs[] = $o_300; $o_301 = new AttrSpec(); - $o_301->name = 'version'; - $o_301->value_regex = '(1.0|1.1)'; - $o_294->attrs[] = $o_301; + $o_301->name = 'height'; + $o_296->attrs[] = $o_301; $o_302 = new AttrSpec(); - $o_302->name = 'viewbox'; - $o_294->attrs[] = $o_302; + $o_302->name = 'preserveaspectratio'; + $o_296->attrs[] = $o_302; $o_303 = new AttrSpec(); - $o_303->name = 'width'; - $o_294->attrs[] = $o_303; + $o_303->name = 'version'; + $o_303->value_regex = '(1.0|1.1)'; + $o_296->attrs[] = $o_303; $o_304 = new AttrSpec(); - $o_304->name = 'x'; - $o_294->attrs[] = $o_304; + $o_304->name = 'viewbox'; + $o_296->attrs[] = $o_304; $o_305 = new AttrSpec(); - $o_305->name = 'y'; - $o_294->attrs[] = $o_305; + $o_305->name = 'width'; + $o_296->attrs[] = $o_305; $o_306 = new AttrSpec(); - $o_306->name = 'zoomandpan'; - $o_294->attrs[] = $o_306; - $o_294->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_294->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_294->disallowed_ancestor = ['svg']; - $o_0->tags[] = $o_294; - $o_307 = new TagSpec(); - $o_307->tag_name = 'view'; + $o_306->name = 'x'; + $o_296->attrs[] = $o_306; + $o_307 = new AttrSpec(); + $o_307->name = 'y'; + $o_296->attrs[] = $o_307; $o_308 = new AttrSpec(); - $o_308->name = 'externalresourcesrequired'; - $o_307->attrs[] = $o_308; - $o_309 = new AttrSpec(); - $o_309->name = 'preserveaspectratio'; - $o_307->attrs[] = $o_309; + $o_308->name = 'zoomandpan'; + $o_296->attrs[] = $o_308; + $o_296->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_296->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_296->disallowed_ancestor = ['svg']; + $o_0->tags[] = $o_296; + $o_309 = new TagSpec(); + $o_309->tag_name = 'view'; $o_310 = new AttrSpec(); - $o_310->name = 'viewbox'; - $o_307->attrs[] = $o_310; + $o_310->name = 'externalresourcesrequired'; + $o_309->attrs[] = $o_310; $o_311 = new AttrSpec(); - $o_311->name = 'viewtarget'; - $o_307->attrs[] = $o_311; + $o_311->name = 'preserveaspectratio'; + $o_309->attrs[] = $o_311; $o_312 = new AttrSpec(); - $o_312->name = 'zoomandpan'; - $o_307->attrs[] = $o_312; - $o_307->attr_lists = ['svg-core-attributes']; - $o_307->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_307->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_307; - $o_313 = new TagSpec(); - $o_313->tag_name = 'circle'; + $o_312->name = 'viewbox'; + $o_309->attrs[] = $o_312; + $o_313 = new AttrSpec(); + $o_313->name = 'viewtarget'; + $o_309->attrs[] = $o_313; $o_314 = new AttrSpec(); - $o_314->name = 'class'; - $o_313->attrs[] = $o_314; - $o_315 = new AttrSpec(); - $o_315->name = 'cx'; - $o_313->attrs[] = $o_315; + $o_314->name = 'zoomandpan'; + $o_309->attrs[] = $o_314; + $o_309->attr_lists = ['svg-core-attributes']; + $o_309->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_309->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_309; + $o_315 = new TagSpec(); + $o_315->tag_name = 'circle'; $o_316 = new AttrSpec(); - $o_316->name = 'cy'; - $o_313->attrs[] = $o_316; + $o_316->name = 'class'; + $o_315->attrs[] = $o_316; $o_317 = new AttrSpec(); - $o_317->name = 'externalresourcesrequired'; - $o_313->attrs[] = $o_317; + $o_317->name = 'cx'; + $o_315->attrs[] = $o_317; $o_318 = new AttrSpec(); - $o_318->name = 'r'; - $o_313->attrs[] = $o_318; + $o_318->name = 'cy'; + $o_315->attrs[] = $o_318; $o_319 = new AttrSpec(); - $o_319->name = 'sketch:type'; - $o_313->attrs[] = $o_319; + $o_319->name = 'externalresourcesrequired'; + $o_315->attrs[] = $o_319; $o_320 = new AttrSpec(); - $o_320->name = 'transform'; - $o_313->attrs[] = $o_320; - $o_313->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_313->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_313->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_313; - $o_321 = new TagSpec(); - $o_321->tag_name = 'line'; + $o_320->name = 'r'; + $o_315->attrs[] = $o_320; + $o_321 = new AttrSpec(); + $o_321->name = 'sketch:type'; + $o_315->attrs[] = $o_321; $o_322 = new AttrSpec(); - $o_322->name = 'class'; - $o_321->attrs[] = $o_322; - $o_323 = new AttrSpec(); - $o_323->name = 'externalresourcesrequired'; - $o_321->attrs[] = $o_323; + $o_322->name = 'transform'; + $o_315->attrs[] = $o_322; + $o_315->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_315->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_315->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_315; + $o_323 = new TagSpec(); + $o_323->tag_name = 'line'; $o_324 = new AttrSpec(); - $o_324->name = 'sketch:type'; - $o_321->attrs[] = $o_324; + $o_324->name = 'class'; + $o_323->attrs[] = $o_324; $o_325 = new AttrSpec(); - $o_325->name = 'transform'; - $o_321->attrs[] = $o_325; + $o_325->name = 'externalresourcesrequired'; + $o_323->attrs[] = $o_325; $o_326 = new AttrSpec(); - $o_326->name = 'x1'; - $o_321->attrs[] = $o_326; + $o_326->name = 'sketch:type'; + $o_323->attrs[] = $o_326; $o_327 = new AttrSpec(); - $o_327->name = 'x2'; - $o_321->attrs[] = $o_327; + $o_327->name = 'transform'; + $o_323->attrs[] = $o_327; $o_328 = new AttrSpec(); - $o_328->name = 'y1'; - $o_321->attrs[] = $o_328; + $o_328->name = 'x1'; + $o_323->attrs[] = $o_328; $o_329 = new AttrSpec(); - $o_329->name = 'y2'; - $o_321->attrs[] = $o_329; - $o_321->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_321->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_321->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_321; - $o_330 = new TagSpec(); - $o_330->tag_name = 'polygon'; + $o_329->name = 'x2'; + $o_323->attrs[] = $o_329; + $o_330 = new AttrSpec(); + $o_330->name = 'y1'; + $o_323->attrs[] = $o_330; $o_331 = new AttrSpec(); - $o_331->name = 'class'; - $o_330->attrs[] = $o_331; - $o_332 = new AttrSpec(); - $o_332->name = 'externalresourcesrequired'; - $o_330->attrs[] = $o_332; + $o_331->name = 'y2'; + $o_323->attrs[] = $o_331; + $o_323->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_323->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_323->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_323; + $o_332 = new TagSpec(); + $o_332->tag_name = 'polygon'; $o_333 = new AttrSpec(); - $o_333->name = 'points'; - $o_330->attrs[] = $o_333; + $o_333->name = 'class'; + $o_332->attrs[] = $o_333; $o_334 = new AttrSpec(); - $o_334->name = 'sketch:type'; - $o_330->attrs[] = $o_334; + $o_334->name = 'externalresourcesrequired'; + $o_332->attrs[] = $o_334; $o_335 = new AttrSpec(); - $o_335->name = 'transform'; - $o_330->attrs[] = $o_335; - $o_330->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_330->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_330->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_330; - $o_336 = new TagSpec(); - $o_336->tag_name = 'polyline'; + $o_335->name = 'points'; + $o_332->attrs[] = $o_335; + $o_336 = new AttrSpec(); + $o_336->name = 'sketch:type'; + $o_332->attrs[] = $o_336; $o_337 = new AttrSpec(); - $o_337->name = 'class'; - $o_336->attrs[] = $o_337; - $o_338 = new AttrSpec(); - $o_338->name = 'externalresourcesrequired'; - $o_336->attrs[] = $o_338; + $o_337->name = 'transform'; + $o_332->attrs[] = $o_337; + $o_332->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_332->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_332->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_332; + $o_338 = new TagSpec(); + $o_338->tag_name = 'polyline'; $o_339 = new AttrSpec(); - $o_339->name = 'points'; - $o_336->attrs[] = $o_339; + $o_339->name = 'class'; + $o_338->attrs[] = $o_339; $o_340 = new AttrSpec(); - $o_340->name = 'sketch:type'; - $o_336->attrs[] = $o_340; + $o_340->name = 'externalresourcesrequired'; + $o_338->attrs[] = $o_340; $o_341 = new AttrSpec(); - $o_341->name = 'transform'; - $o_336->attrs[] = $o_341; - $o_336->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_336->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_336->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_336; - $o_342 = new TagSpec(); - $o_342->tag_name = 'rect'; + $o_341->name = 'points'; + $o_338->attrs[] = $o_341; + $o_342 = new AttrSpec(); + $o_342->name = 'sketch:type'; + $o_338->attrs[] = $o_342; $o_343 = new AttrSpec(); - $o_343->name = 'class'; - $o_342->attrs[] = $o_343; - $o_344 = new AttrSpec(); - $o_344->name = 'externalresourcesrequired'; - $o_342->attrs[] = $o_344; + $o_343->name = 'transform'; + $o_338->attrs[] = $o_343; + $o_338->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_338->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_338->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_338; + $o_344 = new TagSpec(); + $o_344->tag_name = 'rect'; $o_345 = new AttrSpec(); - $o_345->name = 'height'; - $o_342->attrs[] = $o_345; + $o_345->name = 'class'; + $o_344->attrs[] = $o_345; $o_346 = new AttrSpec(); - $o_346->name = 'rx'; - $o_342->attrs[] = $o_346; + $o_346->name = 'externalresourcesrequired'; + $o_344->attrs[] = $o_346; $o_347 = new AttrSpec(); - $o_347->name = 'ry'; - $o_342->attrs[] = $o_347; + $o_347->name = 'height'; + $o_344->attrs[] = $o_347; $o_348 = new AttrSpec(); - $o_348->name = 'sketch:type'; - $o_342->attrs[] = $o_348; + $o_348->name = 'rx'; + $o_344->attrs[] = $o_348; $o_349 = new AttrSpec(); - $o_349->name = 'transform'; - $o_342->attrs[] = $o_349; + $o_349->name = 'ry'; + $o_344->attrs[] = $o_349; $o_350 = new AttrSpec(); - $o_350->name = 'width'; - $o_342->attrs[] = $o_350; + $o_350->name = 'sketch:type'; + $o_344->attrs[] = $o_350; $o_351 = new AttrSpec(); - $o_351->name = 'x'; - $o_342->attrs[] = $o_351; + $o_351->name = 'transform'; + $o_344->attrs[] = $o_351; $o_352 = new AttrSpec(); - $o_352->name = 'y'; - $o_342->attrs[] = $o_352; - $o_342->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_342->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_342->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_342; - $o_353 = new TagSpec(); - $o_353->tag_name = 'text'; + $o_352->name = 'width'; + $o_344->attrs[] = $o_352; + $o_353 = new AttrSpec(); + $o_353->name = 'x'; + $o_344->attrs[] = $o_353; $o_354 = new AttrSpec(); - $o_354->name = 'class'; - $o_353->attrs[] = $o_354; - $o_355 = new AttrSpec(); - $o_355->name = 'dx'; - $o_353->attrs[] = $o_355; + $o_354->name = 'y'; + $o_344->attrs[] = $o_354; + $o_344->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_344->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_344->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_344; + $o_355 = new TagSpec(); + $o_355->tag_name = 'text'; $o_356 = new AttrSpec(); - $o_356->name = 'dy'; - $o_353->attrs[] = $o_356; + $o_356->name = 'class'; + $o_355->attrs[] = $o_356; $o_357 = new AttrSpec(); - $o_357->name = 'externalresourcesrequired'; - $o_353->attrs[] = $o_357; + $o_357->name = 'dx'; + $o_355->attrs[] = $o_357; $o_358 = new AttrSpec(); - $o_358->name = 'lengthadjust'; - $o_353->attrs[] = $o_358; + $o_358->name = 'dy'; + $o_355->attrs[] = $o_358; $o_359 = new AttrSpec(); - $o_359->name = 'rotate'; - $o_353->attrs[] = $o_359; + $o_359->name = 'externalresourcesrequired'; + $o_355->attrs[] = $o_359; $o_360 = new AttrSpec(); - $o_360->name = 'text-anchor'; - $o_353->attrs[] = $o_360; + $o_360->name = 'lengthadjust'; + $o_355->attrs[] = $o_360; $o_361 = new AttrSpec(); - $o_361->name = 'textlength'; - $o_353->attrs[] = $o_361; + $o_361->name = 'rotate'; + $o_355->attrs[] = $o_361; $o_362 = new AttrSpec(); - $o_362->name = 'transform'; - $o_353->attrs[] = $o_362; + $o_362->name = 'text-anchor'; + $o_355->attrs[] = $o_362; $o_363 = new AttrSpec(); - $o_363->name = 'x'; - $o_353->attrs[] = $o_363; + $o_363->name = 'textlength'; + $o_355->attrs[] = $o_363; $o_364 = new AttrSpec(); - $o_364->name = 'y'; - $o_353->attrs[] = $o_364; - $o_353->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_353->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_353->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_353; - $o_365 = new TagSpec(); - $o_365->tag_name = 'textpath'; + $o_364->name = 'transform'; + $o_355->attrs[] = $o_364; + $o_365 = new AttrSpec(); + $o_365->name = 'x'; + $o_355->attrs[] = $o_365; $o_366 = new AttrSpec(); - $o_366->name = 'class'; - $o_365->attrs[] = $o_366; - $o_367 = new AttrSpec(); - $o_367->name = 'externalresourcesrequired'; - $o_365->attrs[] = $o_367; + $o_366->name = 'y'; + $o_355->attrs[] = $o_366; + $o_355->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_355->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_355->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_355; + $o_367 = new TagSpec(); + $o_367->tag_name = 'textpath'; $o_368 = new AttrSpec(); - $o_368->name = 'method'; - $o_365->attrs[] = $o_368; + $o_368->name = 'class'; + $o_367->attrs[] = $o_368; $o_369 = new AttrSpec(); - $o_369->name = 'spacing'; - $o_365->attrs[] = $o_369; + $o_369->name = 'externalresourcesrequired'; + $o_367->attrs[] = $o_369; $o_370 = new AttrSpec(); - $o_370->name = 'startoffset'; - $o_365->attrs[] = $o_370; - $o_365->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; - $o_365->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_365->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_365; - $o_371 = new TagSpec(); - $o_371->tag_name = 'tref'; + $o_370->name = 'method'; + $o_367->attrs[] = $o_370; + $o_371 = new AttrSpec(); + $o_371->name = 'spacing'; + $o_367->attrs[] = $o_371; $o_372 = new AttrSpec(); - $o_372->name = 'class'; - $o_371->attrs[] = $o_372; - $o_373 = new AttrSpec(); - $o_373->name = 'externalresourcesrequired'; - $o_371->attrs[] = $o_373; - $o_371->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; - $o_371->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_371->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_371; - $o_374 = new TagSpec(); - $o_374->tag_name = 'tspan'; + $o_372->name = 'startoffset'; + $o_367->attrs[] = $o_372; + $o_367->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; + $o_367->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_367->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_367; + $o_373 = new TagSpec(); + $o_373->tag_name = 'tref'; + $o_374 = new AttrSpec(); + $o_374->name = 'class'; + $o_373->attrs[] = $o_374; $o_375 = new AttrSpec(); - $o_375->name = 'class'; - $o_374->attrs[] = $o_375; - $o_376 = new AttrSpec(); - $o_376->name = 'dx'; - $o_374->attrs[] = $o_376; + $o_375->name = 'externalresourcesrequired'; + $o_373->attrs[] = $o_375; + $o_373->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; + $o_373->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_373->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_373; + $o_376 = new TagSpec(); + $o_376->tag_name = 'tspan'; $o_377 = new AttrSpec(); - $o_377->name = 'dy'; - $o_374->attrs[] = $o_377; + $o_377->name = 'class'; + $o_376->attrs[] = $o_377; $o_378 = new AttrSpec(); - $o_378->name = 'externalresourcesrequired'; - $o_374->attrs[] = $o_378; + $o_378->name = 'dx'; + $o_376->attrs[] = $o_378; $o_379 = new AttrSpec(); - $o_379->name = 'rotate'; - $o_374->attrs[] = $o_379; + $o_379->name = 'dy'; + $o_376->attrs[] = $o_379; $o_380 = new AttrSpec(); - $o_380->name = 'lengthadjust'; - $o_374->attrs[] = $o_380; + $o_380->name = 'externalresourcesrequired'; + $o_376->attrs[] = $o_380; $o_381 = new AttrSpec(); - $o_381->name = 'textlength'; - $o_374->attrs[] = $o_381; + $o_381->name = 'rotate'; + $o_376->attrs[] = $o_381; $o_382 = new AttrSpec(); - $o_382->name = 'x'; - $o_374->attrs[] = $o_382; + $o_382->name = 'lengthadjust'; + $o_376->attrs[] = $o_382; $o_383 = new AttrSpec(); - $o_383->name = 'y'; - $o_374->attrs[] = $o_383; - $o_374->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_374->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_374->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_374; - $o_384 = new TagSpec(); - $o_384->tag_name = 'clippath'; + $o_383->name = 'textlength'; + $o_376->attrs[] = $o_383; + $o_384 = new AttrSpec(); + $o_384->name = 'x'; + $o_376->attrs[] = $o_384; $o_385 = new AttrSpec(); - $o_385->name = 'class'; - $o_384->attrs[] = $o_385; - $o_386 = new AttrSpec(); - $o_386->name = 'clippathunits'; - $o_384->attrs[] = $o_386; + $o_385->name = 'y'; + $o_376->attrs[] = $o_385; + $o_376->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_376->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_376->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_376; + $o_386 = new TagSpec(); + $o_386->tag_name = 'clippath'; $o_387 = new AttrSpec(); - $o_387->name = 'externalresourcesrequired'; - $o_384->attrs[] = $o_387; + $o_387->name = 'class'; + $o_386->attrs[] = $o_387; $o_388 = new AttrSpec(); - $o_388->name = 'transform'; - $o_384->attrs[] = $o_388; - $o_384->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_384->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_384->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_384; - $o_389 = new TagSpec(); - $o_389->tag_name = 'filter'; + $o_388->name = 'clippathunits'; + $o_386->attrs[] = $o_388; + $o_389 = new AttrSpec(); + $o_389->name = 'externalresourcesrequired'; + $o_386->attrs[] = $o_389; $o_390 = new AttrSpec(); - $o_390->name = 'class'; - $o_389->attrs[] = $o_390; - $o_391 = new AttrSpec(); - $o_391->name = 'externalresourcesrequired'; - $o_389->attrs[] = $o_391; + $o_390->name = 'transform'; + $o_386->attrs[] = $o_390; + $o_386->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_386->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_386->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_386; + $o_391 = new TagSpec(); + $o_391->tag_name = 'filter'; $o_392 = new AttrSpec(); - $o_392->name = 'filterres'; - $o_389->attrs[] = $o_392; + $o_392->name = 'class'; + $o_391->attrs[] = $o_392; $o_393 = new AttrSpec(); - $o_393->name = 'filterunits'; - $o_389->attrs[] = $o_393; + $o_393->name = 'externalresourcesrequired'; + $o_391->attrs[] = $o_393; $o_394 = new AttrSpec(); - $o_394->name = 'height'; - $o_389->attrs[] = $o_394; + $o_394->name = 'filterres'; + $o_391->attrs[] = $o_394; $o_395 = new AttrSpec(); - $o_395->name = 'primitiveunits'; - $o_389->attrs[] = $o_395; + $o_395->name = 'filterunits'; + $o_391->attrs[] = $o_395; $o_396 = new AttrSpec(); - $o_396->name = 'width'; - $o_389->attrs[] = $o_396; + $o_396->name = 'height'; + $o_391->attrs[] = $o_396; $o_397 = new AttrSpec(); - $o_397->name = 'x'; - $o_389->attrs[] = $o_397; + $o_397->name = 'primitiveunits'; + $o_391->attrs[] = $o_397; $o_398 = new AttrSpec(); - $o_398->name = 'y'; - $o_389->attrs[] = $o_398; - $o_389->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; - $o_389->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_389->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_389; - $o_399 = new TagSpec(); - $o_399->tag_name = 'hkern'; + $o_398->name = 'width'; + $o_391->attrs[] = $o_398; + $o_399 = new AttrSpec(); + $o_399->name = 'x'; + $o_391->attrs[] = $o_399; $o_400 = new AttrSpec(); - $o_400->name = 'g1'; - $o_399->attrs[] = $o_400; - $o_401 = new AttrSpec(); - $o_401->name = 'g2'; - $o_399->attrs[] = $o_401; + $o_400->name = 'y'; + $o_391->attrs[] = $o_400; + $o_391->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; + $o_391->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_391->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_391; + $o_401 = new TagSpec(); + $o_401->tag_name = 'hkern'; $o_402 = new AttrSpec(); - $o_402->name = 'k'; - $o_399->attrs[] = $o_402; + $o_402->name = 'g1'; + $o_401->attrs[] = $o_402; $o_403 = new AttrSpec(); - $o_403->name = 'u1'; - $o_399->attrs[] = $o_403; + $o_403->name = 'g2'; + $o_401->attrs[] = $o_403; $o_404 = new AttrSpec(); - $o_404->name = 'u2'; - $o_399->attrs[] = $o_404; - $o_399->attr_lists = ['svg-core-attributes']; - $o_399->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_399->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_399; - $o_405 = new TagSpec(); - $o_405->tag_name = 'lineargradient'; + $o_404->name = 'k'; + $o_401->attrs[] = $o_404; + $o_405 = new AttrSpec(); + $o_405->name = 'u1'; + $o_401->attrs[] = $o_405; $o_406 = new AttrSpec(); - $o_406->name = 'class'; - $o_405->attrs[] = $o_406; - $o_407 = new AttrSpec(); - $o_407->name = 'externalresourcesrequired'; - $o_405->attrs[] = $o_407; + $o_406->name = 'u2'; + $o_401->attrs[] = $o_406; + $o_401->attr_lists = ['svg-core-attributes']; + $o_401->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_401->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_401; + $o_407 = new TagSpec(); + $o_407->tag_name = 'lineargradient'; $o_408 = new AttrSpec(); - $o_408->name = 'gradientunits'; - $o_405->attrs[] = $o_408; + $o_408->name = 'class'; + $o_407->attrs[] = $o_408; $o_409 = new AttrSpec(); - $o_409->name = 'gradientransform'; - $o_405->attrs[] = $o_409; + $o_409->name = 'externalresourcesrequired'; + $o_407->attrs[] = $o_409; $o_410 = new AttrSpec(); - $o_410->name = 'spreadmethod'; - $o_405->attrs[] = $o_410; + $o_410->name = 'gradientunits'; + $o_407->attrs[] = $o_410; $o_411 = new AttrSpec(); - $o_411->name = 'x1'; - $o_405->attrs[] = $o_411; + $o_411->name = 'gradientransform'; + $o_407->attrs[] = $o_411; $o_412 = new AttrSpec(); - $o_412->name = 'y1'; - $o_405->attrs[] = $o_412; + $o_412->name = 'spreadmethod'; + $o_407->attrs[] = $o_412; $o_413 = new AttrSpec(); - $o_413->name = 'x2'; - $o_405->attrs[] = $o_413; + $o_413->name = 'x1'; + $o_407->attrs[] = $o_413; $o_414 = new AttrSpec(); - $o_414->name = 'y2'; - $o_405->attrs[] = $o_414; - $o_405->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; - $o_405->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_405->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_405; - $o_415 = new TagSpec(); - $o_415->tag_name = 'mask'; + $o_414->name = 'y1'; + $o_407->attrs[] = $o_414; + $o_415 = new AttrSpec(); + $o_415->name = 'x2'; + $o_407->attrs[] = $o_415; $o_416 = new AttrSpec(); - $o_416->name = 'class'; - $o_415->attrs[] = $o_416; - $o_417 = new AttrSpec(); - $o_417->name = 'externalresourcesrequired'; - $o_415->attrs[] = $o_417; + $o_416->name = 'y2'; + $o_407->attrs[] = $o_416; + $o_407->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; + $o_407->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_407->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_407; + $o_417 = new TagSpec(); + $o_417->tag_name = 'mask'; $o_418 = new AttrSpec(); - $o_418->name = 'height'; - $o_415->attrs[] = $o_418; + $o_418->name = 'class'; + $o_417->attrs[] = $o_418; $o_419 = new AttrSpec(); - $o_419->name = 'maskcontentunits'; - $o_415->attrs[] = $o_419; + $o_419->name = 'externalresourcesrequired'; + $o_417->attrs[] = $o_419; $o_420 = new AttrSpec(); - $o_420->name = 'maskunits'; - $o_415->attrs[] = $o_420; + $o_420->name = 'height'; + $o_417->attrs[] = $o_420; $o_421 = new AttrSpec(); - $o_421->name = 'width'; - $o_415->attrs[] = $o_421; + $o_421->name = 'maskcontentunits'; + $o_417->attrs[] = $o_421; $o_422 = new AttrSpec(); - $o_422->name = 'x'; - $o_415->attrs[] = $o_422; + $o_422->name = 'maskunits'; + $o_417->attrs[] = $o_422; $o_423 = new AttrSpec(); - $o_423->name = 'y'; - $o_415->attrs[] = $o_423; - $o_415->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_415->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_415->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_415; - $o_424 = new TagSpec(); - $o_424->tag_name = 'pattern'; + $o_423->name = 'width'; + $o_417->attrs[] = $o_423; + $o_424 = new AttrSpec(); + $o_424->name = 'x'; + $o_417->attrs[] = $o_424; $o_425 = new AttrSpec(); - $o_425->name = 'class'; - $o_424->attrs[] = $o_425; - $o_426 = new AttrSpec(); - $o_426->name = 'externalresourcesrequired'; - $o_424->attrs[] = $o_426; + $o_425->name = 'y'; + $o_417->attrs[] = $o_425; + $o_417->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_417->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_417->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_417; + $o_426 = new TagSpec(); + $o_426->tag_name = 'pattern'; $o_427 = new AttrSpec(); - $o_427->name = 'height'; - $o_424->attrs[] = $o_427; + $o_427->name = 'class'; + $o_426->attrs[] = $o_427; $o_428 = new AttrSpec(); - $o_428->name = 'patternunits'; - $o_424->attrs[] = $o_428; + $o_428->name = 'externalresourcesrequired'; + $o_426->attrs[] = $o_428; $o_429 = new AttrSpec(); - $o_429->name = 'patterncontentunits'; - $o_424->attrs[] = $o_429; + $o_429->name = 'height'; + $o_426->attrs[] = $o_429; $o_430 = new AttrSpec(); - $o_430->name = 'patterntransform'; - $o_424->attrs[] = $o_430; + $o_430->name = 'patternunits'; + $o_426->attrs[] = $o_430; $o_431 = new AttrSpec(); - $o_431->name = 'preserveaspectratio'; - $o_424->attrs[] = $o_431; + $o_431->name = 'patterncontentunits'; + $o_426->attrs[] = $o_431; $o_432 = new AttrSpec(); - $o_432->name = 'viewbox'; - $o_424->attrs[] = $o_432; + $o_432->name = 'patterntransform'; + $o_426->attrs[] = $o_432; $o_433 = new AttrSpec(); - $o_433->name = 'width'; - $o_424->attrs[] = $o_433; + $o_433->name = 'preserveaspectratio'; + $o_426->attrs[] = $o_433; $o_434 = new AttrSpec(); - $o_434->name = 'x'; - $o_424->attrs[] = $o_434; + $o_434->name = 'viewbox'; + $o_426->attrs[] = $o_434; $o_435 = new AttrSpec(); - $o_435->name = 'y'; - $o_424->attrs[] = $o_435; - $o_424->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; - $o_424->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_424->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_424; - $o_436 = new TagSpec(); - $o_436->tag_name = 'radialgradient'; + $o_435->name = 'width'; + $o_426->attrs[] = $o_435; + $o_436 = new AttrSpec(); + $o_436->name = 'x'; + $o_426->attrs[] = $o_436; $o_437 = new AttrSpec(); - $o_437->name = 'class'; - $o_436->attrs[] = $o_437; - $o_438 = new AttrSpec(); - $o_438->name = 'cx'; - $o_436->attrs[] = $o_438; + $o_437->name = 'y'; + $o_426->attrs[] = $o_437; + $o_426->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; + $o_426->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_426->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_426; + $o_438 = new TagSpec(); + $o_438->tag_name = 'radialgradient'; $o_439 = new AttrSpec(); - $o_439->name = 'cy'; - $o_436->attrs[] = $o_439; + $o_439->name = 'class'; + $o_438->attrs[] = $o_439; $o_440 = new AttrSpec(); - $o_440->name = 'externalresourcesrequired'; - $o_436->attrs[] = $o_440; + $o_440->name = 'cx'; + $o_438->attrs[] = $o_440; $o_441 = new AttrSpec(); - $o_441->name = 'fx'; - $o_436->attrs[] = $o_441; + $o_441->name = 'cy'; + $o_438->attrs[] = $o_441; $o_442 = new AttrSpec(); - $o_442->name = 'fy'; - $o_436->attrs[] = $o_442; + $o_442->name = 'externalresourcesrequired'; + $o_438->attrs[] = $o_442; $o_443 = new AttrSpec(); - $o_443->name = 'gradientunits'; - $o_436->attrs[] = $o_443; + $o_443->name = 'fx'; + $o_438->attrs[] = $o_443; $o_444 = new AttrSpec(); - $o_444->name = 'gradienttransform'; - $o_436->attrs[] = $o_444; + $o_444->name = 'fy'; + $o_438->attrs[] = $o_444; $o_445 = new AttrSpec(); - $o_445->name = 'r'; - $o_436->attrs[] = $o_445; + $o_445->name = 'gradientunits'; + $o_438->attrs[] = $o_445; $o_446 = new AttrSpec(); - $o_446->name = 'spreadmethod'; - $o_436->attrs[] = $o_446; - $o_436->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; - $o_436->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_436->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_436; - $o_447 = new TagSpec(); - $o_447->tag_name = 'stop'; - $o_447->spec_name = 'lineargradient > stop'; + $o_446->name = 'gradienttransform'; + $o_438->attrs[] = $o_446; + $o_447 = new AttrSpec(); + $o_447->name = 'r'; + $o_438->attrs[] = $o_447; $o_448 = new AttrSpec(); - $o_448->name = 'offset'; - $o_447->attrs[] = $o_448; - $o_449 = new AttrSpec(); - $o_449->name = 'stop-color'; - $o_447->attrs[] = $o_449; + $o_448->name = 'spreadmethod'; + $o_438->attrs[] = $o_448; + $o_438->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; + $o_438->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_438->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_438; + $o_449 = new TagSpec(); + $o_449->tag_name = 'stop'; + $o_449->spec_name = 'lineargradient > stop'; $o_450 = new AttrSpec(); - $o_450->name = 'stop-opacity'; - $o_447->attrs[] = $o_450; - $o_447->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_447->mandatory_ancestor = 'lineargradient'; - $o_0->tags[] = $o_447; - $o_451 = new TagSpec(); - $o_451->tag_name = 'stop'; - $o_451->spec_name = 'radialgradient > stop'; + $o_450->name = 'offset'; + $o_449->attrs[] = $o_450; + $o_451 = new AttrSpec(); + $o_451->name = 'stop-color'; + $o_449->attrs[] = $o_451; $o_452 = new AttrSpec(); - $o_452->name = 'offset'; - $o_451->attrs[] = $o_452; - $o_453 = new AttrSpec(); - $o_453->name = 'stop-color'; - $o_451->attrs[] = $o_453; + $o_452->name = 'stop-opacity'; + $o_449->attrs[] = $o_452; + $o_449->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_449->mandatory_ancestor = 'lineargradient'; + $o_0->tags[] = $o_449; + $o_453 = new TagSpec(); + $o_453->tag_name = 'stop'; + $o_453->spec_name = 'radialgradient > stop'; $o_454 = new AttrSpec(); - $o_454->name = 'stop-opacity'; - $o_451->attrs[] = $o_454; - $o_451->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_451->mandatory_ancestor = 'radialgradient'; - $o_0->tags[] = $o_451; - $o_455 = new TagSpec(); - $o_455->tag_name = 'vkern'; + $o_454->name = 'offset'; + $o_453->attrs[] = $o_454; + $o_455 = new AttrSpec(); + $o_455->name = 'stop-color'; + $o_453->attrs[] = $o_455; $o_456 = new AttrSpec(); - $o_456->name = 'g1'; - $o_455->attrs[] = $o_456; - $o_457 = new AttrSpec(); - $o_457->name = 'g2'; - $o_455->attrs[] = $o_457; + $o_456->name = 'stop-opacity'; + $o_453->attrs[] = $o_456; + $o_453->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_453->mandatory_ancestor = 'radialgradient'; + $o_0->tags[] = $o_453; + $o_457 = new TagSpec(); + $o_457->tag_name = 'vkern'; $o_458 = new AttrSpec(); - $o_458->name = 'k'; - $o_455->attrs[] = $o_458; + $o_458->name = 'g1'; + $o_457->attrs[] = $o_458; $o_459 = new AttrSpec(); - $o_459->name = 'u1'; - $o_455->attrs[] = $o_459; + $o_459->name = 'g2'; + $o_457->attrs[] = $o_459; $o_460 = new AttrSpec(); - $o_460->name = 'u2'; - $o_455->attrs[] = $o_460; - $o_455->attr_lists = ['svg-core-attributes']; - $o_455->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_455->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_455; - $o_461 = new TagSpec(); - $o_461->tag_name = 'defs'; + $o_460->name = 'k'; + $o_457->attrs[] = $o_460; + $o_461 = new AttrSpec(); + $o_461->name = 'u1'; + $o_457->attrs[] = $o_461; $o_462 = new AttrSpec(); - $o_462->name = 'class'; - $o_461->attrs[] = $o_462; - $o_463 = new AttrSpec(); - $o_463->name = 'externalresourcesrequired'; - $o_461->attrs[] = $o_463; + $o_462->name = 'u2'; + $o_457->attrs[] = $o_462; + $o_457->attr_lists = ['svg-core-attributes']; + $o_457->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_457->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_457; + $o_463 = new TagSpec(); + $o_463->tag_name = 'defs'; $o_464 = new AttrSpec(); - $o_464->name = 'transform'; - $o_461->attrs[] = $o_464; - $o_461->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_461->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_461->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_461; - $o_465 = new TagSpec(); - $o_465->tag_name = 'symbol'; + $o_464->name = 'class'; + $o_463->attrs[] = $o_464; + $o_465 = new AttrSpec(); + $o_465->name = 'externalresourcesrequired'; + $o_463->attrs[] = $o_465; $o_466 = new AttrSpec(); - $o_466->name = 'class'; - $o_465->attrs[] = $o_466; - $o_467 = new AttrSpec(); - $o_467->name = 'externalresourcesrequired'; - $o_465->attrs[] = $o_467; + $o_466->name = 'transform'; + $o_463->attrs[] = $o_466; + $o_463->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_463->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_463->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_463; + $o_467 = new TagSpec(); + $o_467->tag_name = 'symbol'; $o_468 = new AttrSpec(); - $o_468->name = 'preserveaspectratio'; - $o_465->attrs[] = $o_468; + $o_468->name = 'class'; + $o_467->attrs[] = $o_468; $o_469 = new AttrSpec(); - $o_469->name = 'viewbox'; - $o_465->attrs[] = $o_469; - $o_465->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes']; - $o_465->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_465->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_465; - $o_470 = new TagSpec(); - $o_470->tag_name = 'use'; + $o_469->name = 'externalresourcesrequired'; + $o_467->attrs[] = $o_469; + $o_470 = new AttrSpec(); + $o_470->name = 'preserveaspectratio'; + $o_467->attrs[] = $o_470; $o_471 = new AttrSpec(); - $o_471->name = 'class'; - $o_470->attrs[] = $o_471; - $o_472 = new AttrSpec(); - $o_472->name = 'externalresourcesrequired'; - $o_470->attrs[] = $o_472; + $o_471->name = 'viewbox'; + $o_467->attrs[] = $o_471; + $o_467->attr_lists = ['svg-core-attributes', 'svg-presentation-attributes']; + $o_467->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_467->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_467; + $o_472 = new TagSpec(); + $o_472->tag_name = 'use'; $o_473 = new AttrSpec(); - $o_473->name = 'height'; - $o_470->attrs[] = $o_473; + $o_473->name = 'class'; + $o_472->attrs[] = $o_473; $o_474 = new AttrSpec(); - $o_474->name = 'transform'; - $o_470->attrs[] = $o_474; + $o_474->name = 'externalresourcesrequired'; + $o_472->attrs[] = $o_474; $o_475 = new AttrSpec(); - $o_475->name = 'width'; - $o_470->attrs[] = $o_475; + $o_475->name = 'height'; + $o_472->attrs[] = $o_475; $o_476 = new AttrSpec(); - $o_476->name = 'x'; - $o_470->attrs[] = $o_476; + $o_476->name = 'transform'; + $o_472->attrs[] = $o_476; $o_477 = new AttrSpec(); - $o_477->name = 'y'; - $o_470->attrs[] = $o_477; - $o_470->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; - $o_470->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_470->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_470; - $o_478 = new TagSpec(); - $o_478->tag_name = 'foreignobject'; + $o_477->name = 'width'; + $o_472->attrs[] = $o_477; + $o_478 = new AttrSpec(); + $o_478->name = 'x'; + $o_472->attrs[] = $o_478; $o_479 = new AttrSpec(); - $o_479->name = 'class'; - $o_478->attrs[] = $o_479; - $o_480 = new AttrSpec(); - $o_480->name = 'externalresourcesrequired'; - $o_478->attrs[] = $o_480; + $o_479->name = 'y'; + $o_472->attrs[] = $o_479; + $o_472->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes', 'svg-xlink-attributes']; + $o_472->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_472->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_472; + $o_480 = new TagSpec(); + $o_480->tag_name = 'foreignobject'; $o_481 = new AttrSpec(); - $o_481->name = 'height'; - $o_478->attrs[] = $o_481; + $o_481->name = 'class'; + $o_480->attrs[] = $o_481; $o_482 = new AttrSpec(); - $o_482->name = 'transform'; - $o_478->attrs[] = $o_482; + $o_482->name = 'externalresourcesrequired'; + $o_480->attrs[] = $o_482; $o_483 = new AttrSpec(); - $o_483->name = 'width'; - $o_478->attrs[] = $o_483; + $o_483->name = 'height'; + $o_480->attrs[] = $o_483; $o_484 = new AttrSpec(); - $o_484->name = 'x'; - $o_478->attrs[] = $o_484; + $o_484->name = 'transform'; + $o_480->attrs[] = $o_484; $o_485 = new AttrSpec(); - $o_485->name = 'y'; - $o_478->attrs[] = $o_485; - $o_478->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; - $o_478->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_478->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_478; - $o_486 = new TagSpec(); - $o_486->tag_name = 'desc'; + $o_485->name = 'width'; + $o_480->attrs[] = $o_485; + $o_486 = new AttrSpec(); + $o_486->name = 'x'; + $o_480->attrs[] = $o_486; $o_487 = new AttrSpec(); - $o_487->name = 'class'; - $o_486->attrs[] = $o_487; - $o_486->attr_lists = ['svg-core-attributes']; - $o_486->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; - $o_486->mandatory_ancestor = 'svg'; - $o_0->tags[] = $o_486; + $o_487->name = 'y'; + $o_480->attrs[] = $o_487; + $o_480->attr_lists = ['svg-conditional-processing-attributes', 'svg-core-attributes', 'svg-presentation-attributes']; + $o_480->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_480->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_480; $o_488 = new TagSpec(); - $o_488->tag_name = 'title'; - $o_488->spec_name = 'svg title'; + $o_488->tag_name = 'desc'; $o_489 = new AttrSpec(); $o_489->name = 'class'; $o_488->attrs[] = $o_489; @@ -2107,843 +2103,790 @@ public static function createValidationRules() { $o_488->mandatory_ancestor = 'svg'; $o_0->tags[] = $o_488; $o_490 = new TagSpec(); - $o_490->tag_name = 'table'; + $o_490->tag_name = 'title'; + $o_490->spec_name = 'svg title'; $o_491 = new AttrSpec(); - $o_491->name = 'sortable'; + $o_491->name = 'class'; $o_490->attrs[] = $o_491; - $o_492 = new AttrSpec(); - $o_492->name = 'align'; - $o_490->attrs[] = $o_492; + $o_490->attr_lists = ['svg-core-attributes']; + $o_490->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#svg'; + $o_490->mandatory_ancestor = 'svg'; + $o_0->tags[] = $o_490; + $o_492 = new TagSpec(); + $o_492->tag_name = 'table'; $o_493 = new AttrSpec(); - $o_493->name = 'border'; - $o_493->value_regex = '0|1'; - $o_490->attrs[] = $o_493; + $o_493->name = 'sortable'; + $o_492->attrs[] = $o_493; $o_494 = new AttrSpec(); - $o_494->name = 'bgcolor'; - $o_490->attrs[] = $o_494; + $o_494->name = 'align'; + $o_492->attrs[] = $o_494; $o_495 = new AttrSpec(); - $o_495->name = 'cellpadding'; - $o_490->attrs[] = $o_495; + $o_495->name = 'border'; + $o_495->value_regex = '0|1'; + $o_492->attrs[] = $o_495; $o_496 = new AttrSpec(); - $o_496->name = 'cellspacing'; - $o_490->attrs[] = $o_496; + $o_496->name = 'bgcolor'; + $o_492->attrs[] = $o_496; $o_497 = new AttrSpec(); - $o_497->name = 'width'; - $o_490->attrs[] = $o_497; - $o_0->tags[] = $o_490; - $o_498 = new TagSpec(); - $o_498->tag_name = 'caption'; - $o_0->tags[] = $o_498; - $o_499 = new TagSpec(); - $o_499->tag_name = 'colgroup'; - $o_500 = new AttrSpec(); - $o_500->name = 'span'; - $o_499->attrs[] = $o_500; - $o_0->tags[] = $o_499; + $o_497->name = 'cellpadding'; + $o_492->attrs[] = $o_497; + $o_498 = new AttrSpec(); + $o_498->name = 'cellspacing'; + $o_492->attrs[] = $o_498; + $o_499 = new AttrSpec(); + $o_499->name = 'width'; + $o_492->attrs[] = $o_499; + $o_0->tags[] = $o_492; + $o_500 = new TagSpec(); + $o_500->tag_name = 'caption'; + $o_0->tags[] = $o_500; $o_501 = new TagSpec(); - $o_501->tag_name = 'col'; + $o_501->tag_name = 'colgroup'; $o_502 = new AttrSpec(); $o_502->name = 'span'; $o_501->attrs[] = $o_502; $o_0->tags[] = $o_501; $o_503 = new TagSpec(); - $o_503->tag_name = 'tbody'; + $o_503->tag_name = 'col'; + $o_504 = new AttrSpec(); + $o_504->name = 'span'; + $o_503->attrs[] = $o_504; $o_0->tags[] = $o_503; - $o_504 = new TagSpec(); - $o_504->tag_name = 'thead'; - $o_0->tags[] = $o_504; $o_505 = new TagSpec(); - $o_505->tag_name = 'tfoot'; + $o_505->tag_name = 'tbody'; $o_0->tags[] = $o_505; $o_506 = new TagSpec(); - $o_506->tag_name = 'tr'; - $o_507 = new AttrSpec(); - $o_507->name = 'align'; - $o_506->attrs[] = $o_507; - $o_508 = new AttrSpec(); - $o_508->name = 'bgcolor'; - $o_506->attrs[] = $o_508; + $o_506->tag_name = 'thead'; + $o_0->tags[] = $o_506; + $o_507 = new TagSpec(); + $o_507->tag_name = 'tfoot'; + $o_0->tags[] = $o_507; + $o_508 = new TagSpec(); + $o_508->tag_name = 'tr'; $o_509 = new AttrSpec(); - $o_509->name = 'height'; - $o_506->attrs[] = $o_509; + $o_509->name = 'align'; + $o_508->attrs[] = $o_509; $o_510 = new AttrSpec(); - $o_510->name = 'valign'; - $o_506->attrs[] = $o_510; - $o_0->tags[] = $o_506; - $o_511 = new TagSpec(); - $o_511->tag_name = 'td'; + $o_510->name = 'bgcolor'; + $o_508->attrs[] = $o_510; + $o_511 = new AttrSpec(); + $o_511->name = 'height'; + $o_508->attrs[] = $o_511; $o_512 = new AttrSpec(); - $o_512->name = 'colspan'; - $o_511->attrs[] = $o_512; - $o_513 = new AttrSpec(); - $o_513->name = 'headers'; - $o_511->attrs[] = $o_513; + $o_512->name = 'valign'; + $o_508->attrs[] = $o_512; + $o_0->tags[] = $o_508; + $o_513 = new TagSpec(); + $o_513->tag_name = 'td'; $o_514 = new AttrSpec(); - $o_514->name = 'rowspan'; - $o_511->attrs[] = $o_514; + $o_514->name = 'colspan'; + $o_513->attrs[] = $o_514; $o_515 = new AttrSpec(); - $o_515->name = 'align'; - $o_511->attrs[] = $o_515; + $o_515->name = 'headers'; + $o_513->attrs[] = $o_515; $o_516 = new AttrSpec(); - $o_516->name = 'bgcolor'; - $o_511->attrs[] = $o_516; + $o_516->name = 'rowspan'; + $o_513->attrs[] = $o_516; $o_517 = new AttrSpec(); - $o_517->name = 'height'; - $o_511->attrs[] = $o_517; + $o_517->name = 'align'; + $o_513->attrs[] = $o_517; $o_518 = new AttrSpec(); - $o_518->name = 'valign'; - $o_511->attrs[] = $o_518; + $o_518->name = 'bgcolor'; + $o_513->attrs[] = $o_518; $o_519 = new AttrSpec(); - $o_519->name = 'width'; - $o_511->attrs[] = $o_519; - $o_0->tags[] = $o_511; - $o_520 = new TagSpec(); - $o_520->tag_name = 'th'; + $o_519->name = 'height'; + $o_513->attrs[] = $o_519; + $o_520 = new AttrSpec(); + $o_520->name = 'valign'; + $o_513->attrs[] = $o_520; $o_521 = new AttrSpec(); - $o_521->name = 'abbr'; - $o_520->attrs[] = $o_521; - $o_522 = new AttrSpec(); - $o_522->name = 'colspan'; - $o_520->attrs[] = $o_522; + $o_521->name = 'width'; + $o_513->attrs[] = $o_521; + $o_0->tags[] = $o_513; + $o_522 = new TagSpec(); + $o_522->tag_name = 'th'; $o_523 = new AttrSpec(); - $o_523->name = 'headers'; - $o_520->attrs[] = $o_523; + $o_523->name = 'abbr'; + $o_522->attrs[] = $o_523; $o_524 = new AttrSpec(); - $o_524->name = 'rowspan'; - $o_520->attrs[] = $o_524; + $o_524->name = 'colspan'; + $o_522->attrs[] = $o_524; $o_525 = new AttrSpec(); - $o_525->name = 'scope'; - $o_520->attrs[] = $o_525; + $o_525->name = 'headers'; + $o_522->attrs[] = $o_525; $o_526 = new AttrSpec(); - $o_526->name = 'sorted'; - $o_520->attrs[] = $o_526; + $o_526->name = 'rowspan'; + $o_522->attrs[] = $o_526; $o_527 = new AttrSpec(); - $o_527->name = 'align'; - $o_520->attrs[] = $o_527; + $o_527->name = 'scope'; + $o_522->attrs[] = $o_527; $o_528 = new AttrSpec(); - $o_528->name = 'bgcolor'; - $o_520->attrs[] = $o_528; + $o_528->name = 'sorted'; + $o_522->attrs[] = $o_528; $o_529 = new AttrSpec(); - $o_529->name = 'height'; - $o_520->attrs[] = $o_529; + $o_529->name = 'align'; + $o_522->attrs[] = $o_529; $o_530 = new AttrSpec(); - $o_530->name = 'valign'; - $o_520->attrs[] = $o_530; + $o_530->name = 'bgcolor'; + $o_522->attrs[] = $o_530; $o_531 = new AttrSpec(); - $o_531->name = 'width'; - $o_520->attrs[] = $o_531; - $o_0->tags[] = $o_520; - $o_532 = new TagSpec(); - $o_532->tag_name = 'button'; + $o_531->name = 'height'; + $o_522->attrs[] = $o_531; + $o_532 = new AttrSpec(); + $o_532->name = 'valign'; + $o_522->attrs[] = $o_532; $o_533 = new AttrSpec(); - $o_533->name = 'disabled'; - $o_533->value = ''; - $o_532->attrs[] = $o_533; - $o_534 = new AttrSpec(); - $o_534->name = 'name'; - $o_532->attrs[] = $o_534; + $o_533->name = 'width'; + $o_522->attrs[] = $o_533; + $o_0->tags[] = $o_522; + $o_534 = new TagSpec(); + $o_534->tag_name = 'button'; $o_535 = new AttrSpec(); - $o_535->name = 'role'; - $o_535->implicit = true; - $o_532->attrs[] = $o_535; + $o_535->name = 'disabled'; + $o_535->value = ''; + $o_534->attrs[] = $o_535; $o_536 = new AttrSpec(); - $o_536->name = 'tabindex'; - $o_536->implicit = true; - $o_532->attrs[] = $o_536; + $o_536->name = 'name'; + $o_534->attrs[] = $o_536; $o_537 = new AttrSpec(); - $o_537->name = 'type'; - $o_532->attrs[] = $o_537; + $o_537->name = 'role'; + $o_537->implicit = true; + $o_534->attrs[] = $o_537; $o_538 = new AttrSpec(); - $o_538->name = 'value'; - $o_532->attrs[] = $o_538; - $o_0->tags[] = $o_532; - $o_539 = new TagSpec(); - $o_539->tag_name = 'script'; - $o_539->spec_name = 'amphtml engine v0.js script'; - $o_539->mandatory = true; - $o_539->unique = true; - $o_539->mandatory_parent = 'head'; + $o_538->name = 'tabindex'; + $o_538->implicit = true; + $o_534->attrs[] = $o_538; + $o_539 = new AttrSpec(); + $o_539->name = 'type'; + $o_534->attrs[] = $o_539; $o_540 = new AttrSpec(); - $o_540->name = 'async'; - $o_540->mandatory = true; - $o_540->value = ''; - $o_539->attrs[] = $o_540; - $o_541 = new AttrSpec(); - $o_541->name = 'src'; - $o_541->mandatory = true; - $o_541->value = 'https://cdn.ampproject.org/v0.js'; - $o_541->dispatch_key = true; - $o_539->attrs[] = $o_541; + $o_540->name = 'value'; + $o_534->attrs[] = $o_540; + $o_0->tags[] = $o_534; + $o_541 = new TagSpec(); + $o_541->tag_name = 'form'; $o_542 = new AttrSpec(); - $o_542->name = 'type'; - $o_542->value = 'text/javascript'; - $o_539->attrs[] = $o_542; - $o_539->spec_url = 'https://www.ampproject.org/docs/reference/spec.html#required-markup'; - $o_543 = new CdataSpec(); - $o_544 = new BlackListedCDataRegex(); - $o_544->regex = '.'; - $o_544->error_message = 'contents'; - $o_543->blacklisted_cdata_regex[] = $o_544; - $o_539->cdata = $o_543; - $o_0->tags[] = $o_539; - $o_545 = new TagSpec(); - $o_545->tag_name = 'script'; - $o_545->spec_name = 'script type=application/ld+json'; + $o_542->name = 'accept'; + $o_541->attrs[] = $o_542; + $o_543 = new AttrSpec(); + $o_543->name = 'accept-charset'; + $o_541->attrs[] = $o_543; + $o_544 = new AttrSpec(); + $o_544->name = 'action-xhr'; + $o_544->mandatory = true; + $o_544->blacklisted_value_regex = '__amp_source_origin'; + $o_545 = new UrlSpec(); + $o_545->allowed_protocol = ['https']; + $o_545->allow_relative = true; + $o_544->value_url = $o_545; + $o_541->attrs[] = $o_544; $o_546 = new AttrSpec(); - $o_546->name = 'type'; - $o_546->mandatory = true; - $o_546->value = 'application/ld+json'; - $o_546->dispatch_key = true; - $o_545->attrs[] = $o_546; - $o_547 = new CdataSpec(); - $o_548 = new BlackListedCDataRegex(); - $o_548->regex = '

BBC

-

+

This is a sample

sample
paragraph @@ -55,11 +55,6 @@ FAIL [code: INVALID_ATTR_VALUE category: DISALLOWED_HTML] ACTION TAKEN: a.target attribute was removed due to validation issues. - on line 6 -- The tag 'input' is disallowed. - [code: DISALLOWED_TAG category: DISALLOWED_HTML] - ACTION TAKEN: input tag was removed due to validation issues. -
on line 7 - The attribute 'onmouseover' may not appear in tag 'div'. [code: DISALLOWED_ATTR category: DISALLOWED_HTML] diff --git a/tests/test-data/fragment-html/show_lines_no_orig_and_warn.html.out b/tests/test-data/fragment-html/show_lines_no_orig_and_warn.html.out index a90e7d21..4330df99 100644 --- a/tests/test-data/fragment-html/show_lines_no_orig_and_warn.html.out +++ b/tests/test-data/fragment-html/show_lines_no_orig_and_warn.html.out @@ -1,7 +1,7 @@ Line 1:

Run

Line 2:

CNN

Line 3:

BBC

-Line 4:

+Line 4:

Line 5: Line 6: Line 7: