AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The marquee-loop skill provides a structured approach to implementing infinite scrolling animations in web design. By duplicating content sequences and applying linear transforms, it ensures a smooth, continuous loop effect. The workflow emphasizes performance and accessibility, advising on item stability, edge masking, and respecting user motion preferences.
What it does
- Guides the duplication of content to ensure a seamless transition between the end and start of a loop.
- Defines the animation logic using linear transforms.
- Provides best practices for maintaining stable item widths to prevent visual jumps.
- Suggests techniques for masking or fading edges for a polished look.
- Includes accessibility considerations for reduced motion settings.
- Outlines performance guardrails to avoid CPU-heavy effects.
When to use it
- When implementing infinite scrolling carousels for logos or testimonials.
- When displaying short feature chips or tags in a continuous loop.
- When creating dynamic background elements that require seamless repetition.
- When you need to ensure animations remain performant and accessible.
Advantages
- Ensures visual continuity through a proven duplication workflow.
- Promotes accessible design by incorporating reduced motion support.
- Improves performance by discouraging heavy filters on moving elements.
- Provides clear steps for achieving a professional, glitch-free animation.
Usage examples
- “Create a seamless infinite marquee for a list of client logos.”
- The agent will guide you through duplicating the logo list, setting the linear transform to -50%, and applying edge masks for a smooth, continuous loop.
- “How do I make my testimonial slider loop without jumping?”
- The agent will instruct you to ensure consistent item widths and use the specified duplication technique to align the start and end points perfectly.
Install
3 of its files are not mirrored here, so install it from its source:
https://github.com/MengTo/Skills/tree/5ea1661a0e05d82b054553daaa6baf6d0233c33c/agent-skills/web-design/marquee-loop
Documentation by Meng To
Marquee Skill
Use When
A design needs a seamless infinite loop for logos, testimonials, screenshots, tags, or short feature chips.
Workflow
Duplicate the item sequence so the end and beginning match perfectly.
Animate the track with a linear transform from 0 to -50%.
Keep item widths stable to prevent jumps during the loop.
Mask or fade the edges when the marquee enters or exits a section.
Pause or slow the marquee on hover only when interaction is useful.
Respect prefers-reduced-motion with a static wrap or very slow movement.
Guardrails
Do not animate unique content that users must read carefully.
Do not use large CPU-heavy shadows or filters on every moving item.
Files
- ATTRIBUTION.mdAdded by AutoGineer846 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md818 B
- demo/PROMPT.md2.5 KiB
- demo/assets/page-01-6b97b0cc-6b81-4451-aacc-6b928e7d0a69-3840w.jpg(opens on GitHub)Not mirrored: opens on GitHub1.3 MiB
- demo/assets/page-02-193e1472-0514-44eb-893a-1376091263f3-3840w.jpg(opens on GitHub)Not mirrored: opens on GitHub1.0 MiB
- demo/assets/page-03-5180d964-2425-4134-8220-c1528af09124-800w.jpg53.8 KiB
- demo/assets/page-04-4f5668c5-fc4a-44e0-bc5e-a664189d3c31-1600w.jpg212.3 KiB
- demo/assets/page-05-fbddf75f-e2e3-4552-a710-55e2a5f4d6af-800w.jpg33.0 KiB
- demo/assets/page-06-16d38370-5873-45cf-bab1-60a7b923dc6e-800w.jpg56.4 KiB
- demo/assets/page-07-8e802a98-b83c-4c5d-99d1-e24406eb4ec9-3840w.jpg(opens on GitHub)Not mirrored: opens on GitHub2.2 MiB
- demo/assets/source-preview.jpg120.0 KiB
- demo/index.html28.9 KiB
- demo/preview.jpg114.2 KiB
- demo/source.json4.4 KiB
demo/index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="neuform-sandboxed-demo" content="1">
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; connect-src 'self'; frame-src 'self'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'; object-src 'none'">
<title>Sandboxed Neuform demo</title>
<style>
html, body, iframe { width: 100%; height: 100%; margin: 0; border: 0; }
body { overflow: hidden; background: #0b0b0b; }
iframe { display: block; background: white; }
.error { box-sizing: border-box; min-height: 100%; padding: 32px; color: #fff; font: 16px/1.5 system-ui, sans-serif; }
</style>
</head>
<body>
<iframe id="neuform-demo" title="Sandboxed Neuform design demo" sandbox="allow-scripts" referrerpolicy="no-referrer"></iframe>
<script>
const encodedHtml = "PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJkZWZhdWx0LXNyYyAnbm9uZSc7IGJhc2UtdXJpICdub25lJzsgY29ubmVjdC1zcmMgJ25vbmUnOyBmb250LXNyYyBkYXRhOiBodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tOyBmb3JtLWFjdGlvbiAnbm9uZSc7IGZyYW1lLXNyYyAnbm9uZSc7IGltZy1zcmMgYmxvYjo7IG1lZGlhLXNyYyBibG9iOjsgbmF2aWdhdGUtdG8gJ25vbmUnOyBvYmplY3Qtc3JjICdub25lJzsgc2NyaXB0LXNyYyAndW5zYWZlLWlubGluZScgX19ORVVGT1JNX1JVTlRJTUVfU09VUkNFU19fOyBzdHlsZS1zcmMgJ3Vuc2FmZS1pbmxpbmUnIGh0dHBzOi8vYXBpLmZvbnRzaGFyZS5jb20gaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbTsgd29ya2VyLXNyYyAnbm9uZSciPgo8c2NyaXB0IGRhdGEtbmV1Zm9ybS1hc3NldC1ib290c3RyYXA+CigoKSA9PiB7CiAgbGV0IHJlY2VpdmVkID0gZmFsc2U7CiAgY29uc3Qgb2JqZWN0VXJscyA9IFtdOwogIGNvbnN0IHJlcGxhY2VBbGwgPSAodmFsdWUsIHJlcGxhY2VtZW50cykgPT4gewogICAgbGV0IG5leHQgPSBTdHJpbmcodmFsdWUgfHwgIiIpOwogICAgZm9yIChjb25zdCBbZmlsZSwgb2JqZWN0VXJsXSBvZiByZXBsYWNlbWVudHMpIG5leHQgPSBuZXh0LnNwbGl0KGZpbGUpLmpvaW4ob2JqZWN0VXJsKTsKICAgIHJldHVybiBuZXh0OwogIH07CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgIGlmIChyZWNlaXZlZCB8fCBldmVudC5zb3VyY2UgIT09IHBhcmVudCB8fCBldmVudC5kYXRhPy50eXBlICE9PSAibmV1Zm9ybS1hc3NldHMtdjEiKSByZXR1cm47CiAgICByZWNlaXZlZCA9IHRydWU7CiAgICBjb25zdCByZXBsYWNlbWVudHMgPSBbXTsKICAgIGZvciAoY29uc3QgYXNzZXQgb2YgZXZlbnQuZGF0YS5hc3NldHMgfHwgW10pIHsKICAgICAgaWYgKCFhc3NldCB8fCB0eXBlb2YgYXNzZXQuZmlsZSAhPT0gInN0cmluZyIgfHwgdHlwZW9mIGFzc2V0LmJhc2U2NCAhPT0gInN0cmluZyIpIGNvbnRpbnVlOwogICAgICBjb25zdCBiaW5hcnkgPSBhdG9iKGFzc2V0LmJhc2U2NCk7CiAgICAgIGNvbnN0IGJ5dGVzID0gVWludDhBcnJheS5mcm9tKGJpbmFyeSwgKGNoYXJhY3RlcikgPT4gY2hhcmFjdGVyLmNoYXJDb2RlQXQoMCkpOwogICAgICBjb25zdCBvYmplY3RVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtieXRlc10sIHsgdHlwZTogYXNzZXQuY29udGVudFR5cGUgfHwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgfSkpOwogICAgICBvYmplY3RVcmxzLnB1c2gob2JqZWN0VXJsKTsKICAgICAgcmVwbGFjZW1lbnRzLnB1c2goW2Fzc2V0LmZpbGUsIG9iamVjdFVybF0pOwogICAgfQogICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSkgewogICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgWyJzcmMiLCAicG9zdGVyIiwgInNyY3NldCIsICJzdHlsZSJdKSB7CiAgICAgICAgY29uc3QgdmFsdWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShuYW1lKTsKICAgICAgICBpZiAodmFsdWUpIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHJlcGxhY2VBbGwodmFsdWUsIHJlcGxhY2VtZW50cykpOwogICAgICB9CiAgICB9CiAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIikpIHsKICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSByZXBsYWNlQWxsKHN0eWxlLnRleHRDb250ZW50LCByZXBsYWNlbWVudHMpOwogICAgfQogIH0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsICgpID0+IHsKICAgIGZvciAoY29uc3Qgb2JqZWN0VXJsIG9mIG9iamVjdFVybHMpIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTsKICB9LCB7IG9uY2U6IHRydWUgfSk7Cn0pKCk7Cjwvc2NyaXB0PgoKPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPHRpdGxlPkxhbmRpbmcgUGFnZTwvdGl0bGU+CiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vYXNzZXRzL3J1bnRpbWUvcnVudGltZS1jY2M4ODk0YjM0MTgtcnVudGltZS5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vYXNzZXRzL3J1bnRpbWUvcnVudGltZS0xNjNlYmQwODdjZmMtaWNvbmlmeS1pY29uLW1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vYXNzZXRzL3J1bnRpbWUvcnVudGltZS0wMjcwNTFlZmZhNDctZ3NhcC1taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Fzc2V0cy9ydW50aW1lL3J1bnRpbWUtNjg5Y2E4ZGRhNDRjLXNjcm9sbHRyaWdnZXItbWluLmpzIj48L3NjcmlwdD4KICAgIDxzdHlsZT4KICAgICAgICAvKiBHcmFpbiBvdmVybGF5IGZvciBpbWFnZXMgdG8gbWF0Y2ggcmVmZXJlbmNlIHRleHR1cmUgKi8KICAgICAgICAudGV4dHVyZS1vdmVybGF5IHsKICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHZpZXdCb3g9JzAgMCAyMDAgMjAwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDZmlsdGVyIGlkPSdub2lzZUZpbHRlciclM0UlM0NmZVR1cmJ1bGVuY2UgdHlwZT0nZnJhY3RhbE5vaXNlJyBiYXNlRnJlcXVlbmN5PScwLjg1JyBudW1PY3RhdmVzPSczJyBzdGl0Y2hUaWxlcz0nc3RpdGNoJy8lM0UlM0MvZmlsdGVyJTNFJTNDcmVjdCB3aWR0aD0nMTAwJTI1JyBoZWlnaHQ9JzEwMCUyNScgZmlsdGVyPSd1cmwoJTIzbm9pc2VGaWx0ZXIpJyBvcGFjaXR5PScwLjE1Jy8lM0UlM0Mvc3ZnJTNFIik7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBTdWJ0bGUgZGlhZ29uYWwgYmFja2dyb3VuZCBsaW5lcyBmb3IgRnJhbWVkIEdyaWQgTGF5b3V0ICovCiAgICAgICAgLmJnLWRpYWdvbmFsIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgwLDAsMCwwLjAyKSAwcHgsIHJnYmEoMCwwLDAsMC4wMikgMXB4LCB0cmFuc3BhcmVudCAxcHgsIHRyYW5zcGFyZW50IDEwcHgpOwogICAgICAgIH0KCiAgICAgICAgLyogU2VhbWxlc3MgaW5maW5pdGUgbWFycXVlZSBsb29wICovCiAgICAgICAgQGtleWZyYW1lcyBtYXJxdWVlIHsKICAgICAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpOyB9CiAgICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7IH0KICAgICAgICB9CiAgICAgICAgLmFuaW1hdGUtbWFycXVlZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFuaW1hdGlvbjogbWFycXVlZSAyNXMgbGluZWFyIGluZmluaXRlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHkgY2xhc3M9ImJnLVsjZTdlN2U3XSBiZy1kaWFnb25hbCBtaW4taC1zY3JlZW4gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC02IG1kOnAtMTIgYW50aWFsaWFzZWQgdGV4dC16aW5jLTkwMCBmb250LXNhbnMgc2VsZWN0aW9uOmJnLXppbmMtMzAwIHNlbGVjdGlvbjp0ZXh0LWJsYWNrIj4KCiAgICA8IS0tIEZyYW1lZCBHcmlkIExheW91dCBDb250YWluZXIgLS0+CiAgICA8bWFpbiBjbGFzcz0icmVsYXRpdmUgdy1mdWxsIG1heC13LTd4bCBteC1hdXRvIGJvcmRlciBib3JkZXItemluYy0zMDAvNjAgcC02IG1kOnAtMTAgYmctWyNlN2U3ZTddLzUwIGJhY2tkcm9wLWJsdXItc20iPgogICAgICAgIAogICAgICAgIDwhLS0gTC1zaGFwZWQgY29ybmVyIGJyYWNrZXRzIC0tPgogICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIC10b3AtWzFweF0gLWxlZnQtWzFweF0gdy01IGgtNSBib3JkZXItdC0yIGJvcmRlci1sLTIgYm9yZGVyLXppbmMtNDAwIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSAtdG9wLVsxcHhdIC1yaWdodC1bMXB4XSB3LTUgaC01IGJvcmRlci10LTIgYm9yZGVyLXItMiBib3JkZXItemluYy00MDAiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIC1ib3R0b20tWzFweF0gLWxlZnQtWzFweF0gdy01IGgtNSBib3JkZXItYi0yIGJvcmRlci1sLTIgYm9yZGVyLXppbmMtNDAwIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSAtYm90dG9tLVsxcHhdIC1yaWdodC1bMXB4XSB3LTUgaC01IGJvcmRlci1iLTIgYm9yZGVyLXItMiBib3JkZXItemluYy00MDAiPjwvZGl2PgoKICAgICAgICA8IS0tIE1hcnF1ZWUgSGVhZGVyIC0tPgogICAgICAgIDxkaXYgY2xhc3M9ImJvcmRlci1iIGJvcmRlci16aW5jLTMwMC82MCBtYi02IG1kOm1iLTEwIHBiLTQgb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlIGZsZXggc2VsZWN0LW5vbmUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhbmltYXRlLW1hcnF1ZWUgZmxleCB3aGl0ZXNwYWNlLW5vd3JhcCI+CiAgICAgICAgICAgICAgICA8IS0tIEdyb3VwIDEgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtOCBweC00IHRleHQteHMgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LXppbmMtNTAwIGZvbnQtbm9ybWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5sdW1pbmEuc3R1ZGlvPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMSBoLTEgcm91bmRlZC1mdWxsIGJnLXppbmMtMzAwIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5kaWdpdGFsIGFyY2hpdGVjdHVyZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEgaC0xIHJvdW5kZWQtZnVsbCBiZy16aW5jLTMwMCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+dXNlciBleHBlcmllbmNlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMSBoLTEgcm91bmRlZC1mdWxsIGJnLXppbmMtMzAwIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj52aXN1YWwgc3lzdGVtczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEgaC0xIHJvdW5kZWQtZnVsbCBiZy16aW5jLTMwMCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+bHVtaW5hLnN0dWRpbzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEgaC0xIHJvdW5kZWQtZnVsbCBiZy16aW5jLTMwMCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+ZGlnaXRhbCBhcmNoaXRlY3R1cmU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0xIGgtMSByb3VuZGVkLWZ1bGwgYmctemluYy0zMDAiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxzcGFuPnVzZXIgZXhwZXJpZW5jZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEgaC0xIHJvdW5kZWQtZnVsbCBiZy16aW5jLTMwMCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+dmlzdWFsIHN5c3RlbXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0xIGgtMSByb3VuZGVkLWZ1bGwgYmctemluYy0zMDAiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8IS0tIEdyb3VwIDIgKER1cGxpY2F0ZSBmb3Igc2VhbWxlc3MgbG9vcCkgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtOCBweC00IHRleHQteHMgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LXppbmMtNTAwIGZvbnQtbm9ybWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5sdW1pbmEuc3R1ZGlvPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMSBoLTEgcm91bmRlZC1mdWxsIGJnLXppbmMtMzAwIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5kaWdpdGFsIGFyY2hpdGVjdHVyZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEgaC0xIHJvdW5kZWQtZnVsbCBiZy16aW5jLTMwMCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+dXNlciBleHBlcmllbmNlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMSBoLTEgcm91bmRlZC1mdWxsIGJnLXppbmMtMzAwIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj52aXN1YWwgc3lzdGVtczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEgaC0xIHJvdW5kZWQtZnVsbCBiZy16aW5jLTMwMCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+bHVtaW5hLnN0dWRpbzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEgaC0xIHJvdW5kZWQtZnVsbCBiZy16aW5jLTMwMCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+ZGlnaXRhbCBhcmNoaXRlY3R1cmU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0xIGgtMSByb3VuZGVkLWZ1bGwgYmctemluYy0zMDAiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxzcGFuPnVzZXIgZXhwZXJpZW5jZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEgaC0xIHJvdW5kZWQtZnVsbCBiZy16aW5jLTMwMCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+dmlzdWFsIHN5c3RlbXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0xIGgtMSByb3VuZGVkLWZ1bGwgYmctemluYy0zMDAiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0xIGxnOmdyaWQtY29scy0zIGdhcC00IG1kOmdhcC02Ij4KCiAgICAgICAgICAgIDwhLS0gQ2FyZCAxIChQcmV2aW91c2x5IENhcmQgMykgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIHJvdW5kZWQtMnhsIGJnLWdyYWRpZW50LXRvLWIgZnJvbS13aGl0ZS8xMCB0by10cmFuc3BhcmVudCBwLVsxcHhdIHNoYWRvdy1bMF8yLjhweF8yLjJweF9yZ2JhKDAsXzAsXzAsXzAuMDM0KSxfMF82LjdweF81LjNweF9yZ2JhKDAsXzAsXzAsXzAuMDQ4KSxfMF8xMi41cHhfMTBweF9yZ2JhKDAsXzAsXzAsXzAuMDYpLF8wXzIyLjNweF8xNy45cHhfcmdiYSgwLF8wLF8wLF8wLjA3MiksXzBfNDEuOHB4XzMzLjRweF9yZ2JhKDAsXzAsXzAsXzAuMDg2KSxfMF8xMDBweF84MHB4X3JnYmEoMCxfMCxfMCxfMC4xMildIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaC1mdWxsIGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLVsxNXB4XSBiZy1bIzExMTExMV0iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIGgtNjQgdy1mdWxsIG1kOmgtNzIgc2hyaW5rLTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzL3BhZ2UtMDEtNmI5N2IwY2MtNmI4MS00NDUxLWFhY2MtNmI5MjhlN2QwYTY5LTM4NDB3LmpwZyIgYWx0PSJDb2FzdGxpbmUgbGFuZHNjYXBlIiBjbGFzcz0iaC1mdWxsIHctZnVsbCBvYmplY3QtY292ZXIgZ3JheXNjYWxlIGNvbnRyYXN0LVsxLjJdIGJyaWdodG5lc3MtNzUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBpbnNldC0wIHRleHR1cmUtb3ZlcmxheSBtaXgtYmxlbmQtb3ZlcmxheSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE92ZXJsYXk6IFVJIENhcmQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBtYXgtdy1bMjYwcHhdIHJvdW5kZWQteGwgYmctd2hpdGUgcC00IHNoYWRvdy1bMHB4XzJweF8zcHhfLTFweF9yZ2JhKDAsMCwwLDAuMSksMHB4XzFweF8wcHhfMHB4X3JnYmEoMjUsMjgsMzMsMC4wMiksMHB4XzBweF8wcHhfMXB4X3JnYmEoMjUsMjgsMzMsMC4wOCldIHJpbmctMSByaW5nLWJsYWNrLzUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtc20gZm9udC1tZWRpdW0gdHJhY2tpbmctdGlnaHQgdGV4dC16aW5jLTkwMCI+UHJvZHVjdCAmYW1wOyBBcHA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZ2FwLTAuNSBvcGFjaXR5LTQwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctWzNweF0gaC1bM3B4XSByb3VuZGVkLWZ1bGwgYmctYmxhY2siPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1bM3B4XSBoLVszcHhdIHJvdW5kZWQtZnVsbCBiZy1ibGFjayI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LVszcHhdIGgtWzNweF0gcm91bmRlZC1mdWxsIGJnLWJsYWNrIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItNCByb3VuZGVkLWxnIGJnLXppbmMtMTAwLzgwIHAtMyByaW5nLTEgcmluZy1ibGFjay81Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHRleHQteHMgdGV4dC16aW5jLTQwMCBtYi0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgZm9udC1ub3JtYWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6Y2xvY2stY2lyY2xlLWxpbmVhciIgY2xhc3M9InRleHQtc20iPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgcHJvY2VzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9udC1tZWRpdW0gdGV4dC16aW5jLTkwMCI+OTIlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaC0xLjUgdy1mdWxsIHJvdW5kZWQtZnVsbCBiZy16aW5jLTIwMCBvdmVyZmxvdy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaC1mdWxsIHctWzkyJV0gYmctemluYy0zMDAgcm91bmRlZC1mdWxsIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBnYXAtMiBwdC0xIHRleHQteHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXppbmMtNDAwIGZvbnQtbm9ybWFsIj5VcGRhdGVzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC16aW5jLTQwMCI+TGFzdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb250LW5vcm1hbCB0ZXh0LXppbmMtOTAwIj5PY3QgMDQsIDIwMjU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtemluYy00MDAiPk5leHQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9udC1ub3JtYWwgdGV4dC16aW5jLTkwMCI+T2N0IDA5LCAyMDI1PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGZsZXgtMSBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gcC02IG1kOnAtOCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaC0yLjUgdy1bMnB4XSBiZy16aW5jLTQwMCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIHRleHQtemluYy00MDAgZm9udC1ub3JtYWwiPlJlc2VhcmNoIMK3IERlc2lnbiDCtyBCdWlsZCDCtyBMYXVuY2g8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iZ3MtcmV2ZWFsIG10LTUgdGV4dC14bCBtZDp0ZXh0LTJ4bCBmb250LW1lZGl1bSB0cmFja2luZy10aWdodCB0ZXh0LXdoaXRlIGxlYWRpbmctWzEuMTVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIHByb2R1Y3QgaXMgeW91ciBwcm9taXNlLiBFbnN1cmUgaXQgZGVsaXZlcnMgb24gZXZlcnkgaW50ZXJhY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im10LTQgdGV4dC14cyBtZDp0ZXh0LXNtIHRleHQtemluYy00MDAgbGVhZGluZy1yZWxheGVkIGZvbnQtbGlnaHQgcHItNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2UgZW5naW5lZXIgcGxhdGZvcm1zIHRoYXQgcGVyZm9ybSBmbGF3bGVzc2x5IHdoZW4gdGhlIHN0YWtlcyBhcmUgaGlnaGVzdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im10LTggdGV4dC14cyB0ZXh0LXppbmMtNjAwIGZvbnQtbm9ybWFsIj5sdW1pbmEuc3R1ZGlvPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIENhcmQgMiAoUHJldmlvdXNseSBDYXJkIDEpIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWxhdGl2ZSByb3VuZGVkLTJ4bCBiZy1ncmFkaWVudC10by1iIGZyb20td2hpdGUvMTAgdG8tdHJhbnNwYXJlbnQgcC1bMXB4XSBzaGFkb3ctWzBfMi44cHhfMi4ycHhfcmdiYSgwLF8wLF8wLF8wLjAzNCksXzBfNi43cHhfNS4zcHhfcmdiYSgwLF8wLF8wLF8wLjA0OCksXzBfMTIuNXB4XzEwcHhfcmdiYSgwLF8wLF8wLF8wLjA2KSxfMF8yMi4zcHhfMTcuOXB4X3JnYmEoMCxfMCxfMCxfMC4wNzIpLF8wXzQxLjhweF8zMy40cHhfcmdiYSgwLF8wLF8wLF8wLjA4NiksXzBfMTAwcHhfODBweF9yZ2JhKDAsXzAsXzAsXzAuMTIpXSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGgtZnVsbCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1bMTVweF0gYmctWyMxMTExMTFdIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWxhdGl2ZSBoLTY0IHctZnVsbCBtZDpoLTcyIHNocmluay0wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTAyLTE5M2UxNDcyLTA1MTQtNDRlYi04OTNhLTEzNzYwOTEyNjNmMy0zODQwdy5qcGciIGFsdD0iUnVnZ2VkIGxhbmRzY2FwZSIgY2xhc3M9ImgtZnVsbCB3LWZ1bGwgb2JqZWN0LWNvdmVyIGdyYXlzY2FsZSBjb250cmFzdC1bMS4yXSBicmlnaHRuZXNzLTc1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCB0ZXh0dXJlLW92ZXJsYXkgbWl4LWJsZW5kLW92ZXJsYXkiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBPdmVybGF5OiBBdmF0YXJzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggLXNwYWNlLXgtMiBzaGFkb3ctWzBweF8ycHhfM3B4Xy0xcHhfcmdiYSgwLDAsMCwwLjEpLDBweF8xcHhfMHB4XzBweF9yZ2JhKDI1LDI4LDMzLDAuMDIpLDBweF8wcHhfMHB4XzFweF9yZ2JhKDI1LDI4LDMzLDAuMDgpXSByb3VuZGVkLWZ1bGwgcC0xIGJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0iaW5saW5lLWJsb2NrIGgtMTAgdy0xMCByb3VuZGVkLWZ1bGwgcmluZy0yIHJpbmctWyMxMTFdIGdyYXlzY2FsZSBvYmplY3QtY292ZXIiIHNyYz0iYXNzZXRzL3BhZ2UtMDMtNTE4MGQ5NjQtMjQyNS00MTM0LTgyMjAtYzE1MjhhZjA5MTI0LTgwMHcuanBnIiBhbHQ9IkF2YXRhciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0iaW5saW5lLWJsb2NrIGgtMTAgdy0xMCByb3VuZGVkLWZ1bGwgcmluZy0yIHJpbmctWyMxMTFdIGdyYXlzY2FsZSBvYmplY3QtY292ZXIiIHNyYz0iYXNzZXRzL3BhZ2UtMDQtNGY1NjY4YzUtZmM0YS00NGUwLWJjNWUtYTY2NDE4OWQzYzMxLTE2MDB3LmpwZyIgYWx0PSJBdmF0YXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImlubGluZS1ibG9jayBoLTEwIHctMTAgcm91bmRlZC1mdWxsIHJpbmctMiByaW5nLVsjMTExXSBncmF5c2NhbGUgb2JqZWN0LWNvdmVyIiBzcmM9ImFzc2V0cy9wYWdlLTA1LWZiZGRmNzVmLWUyZTMtNDU1Mi1hNzEwLTU1ZTJhNWY0ZDZhZi04MDB3LmpwZyIgYWx0PSJBdmF0YXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImlubGluZS1ibG9jayBoLTEwIHctMTAgcm91bmRlZC1mdWxsIHJpbmctMiByaW5nLVsjMTExXSBncmF5c2NhbGUgb2JqZWN0LWNvdmVyIiBzcmM9ImFzc2V0cy9wYWdlLTA2LTE2ZDM4MzcwLTU4NzMtNDVjZi1iYWIxLTYwYTdiOTIzZGM2ZS04MDB3LmpwZyIgYWx0PSJBdmF0YXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaC0xMCB3LTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYmctWyNlN2U3ZTddIHJpbmctMiByaW5nLVsjMTExXSB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRyYWNraW5nLXRpZ2h0IHRleHQtYmxhY2siPjQwKzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZmxleC0xIGZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBwLTYgbWQ6cC04Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoLTIuNSB3LVsycHhdIGJnLXppbmMtNDAwIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIgdGV4dC16aW5jLTQwMCBmb250LW5vcm1hbCI+Q3JhZnRlZCB3aXRoIHByZWNpc2lvbi4gU2hpcHBlZCB3aXRoIGNvbmZpZGVuY2UuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImdzLXJldmVhbCBtdC01IHRleHQteGwgbWQ6dGV4dC0yeGwgZm9udC1tZWRpdW0gdHJhY2tpbmctdGlnaHQgdGV4dC13aGl0ZSBsZWFkaW5nLVsxLjE1XSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hvc2VuIGJ5IHZpc2lvbmFyaWVzIHdobyBkZW1hbmQgZXhjZWxsZW5jZSBpbiBldmVyeSBwaXhlbC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0ibXQtNCB0ZXh0LXhzIG1kOnRleHQtc20gdGV4dC16aW5jLTQwMCBsZWFkaW5nLXJlbGF4ZWQgZm9udC1saWdodCBwci00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcmlsbGlhbnQgaWRlYS4gRXhlY3V0aW9uIHRoYXQgZmFsbHMgc2hvcnQuIFdlIGJyaWRnZSB0aGF0IGdhcCBhbmQgZW5zdXJlIGl0IHN0YXlzIGNsb3NlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im10LTggdGV4dC14cyB0ZXh0LXppbmMtNjAwIGZvbnQtbm9ybWFsIj5sdW1pbmEuc3R1ZGlvPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIENhcmQgMyAoUHJldmlvdXNseSBDYXJkIDIpIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWxhdGl2ZSByb3VuZGVkLTJ4bCBiZy1ncmFkaWVudC10by1iIGZyb20td2hpdGUvMTAgdG8tdHJhbnNwYXJlbnQgcC1bMXB4XSBzaGFkb3ctWzBfMi44cHhfMi4ycHhfcmdiYSgwLF8wLF8wLF8wLjAzNCksXzBfNi43cHhfNS4zcHhfcmdiYSgwLF8wLF8wLF8wLjA0OCksXzBfMTIuNXB4XzEwcHhfcmdiYSgwLF8wLF8wLF8wLjA2KSxfMF8yMi4zcHhfMTcuOXB4X3JnYmEoMCxfMCxfMCxfMC4wNzIpLF8wXzQxLjhweF8zMy40cHhfcmdiYSgwLF8wLF8wLF8wLjA4NiksXzBfMTAwcHhfODBweF9yZ2JhKDAsXzAsXzAsXzAuMTIpXSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGgtZnVsbCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1bMTVweF0gYmctWyMxMTExMTFdIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWxhdGl2ZSBoLTY0IHctZnVsbCBtZDpoLTcyIHNocmluay0wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTA3LThlODAyYTk4LWI4M2MtNGM1ZC05OWQxLWUyNDQwNmViNGVjOS0zODQwdy5qcGciIGFsdD0iVmFzdCBsYW5kc2NhcGUiIGNsYXNzPSJoLWZ1bGwgdy1mdWxsIG9iamVjdC1jb3ZlciBncmF5c2NhbGUgY29udHJhc3QtWzEuMl0gYnJpZ2h0bmVzcy05MCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAgdGV4dHVyZS1vdmVybGF5IG1peC1ibGVuZC1vdmVybGF5IG9wYWNpdHktNzAiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZmxleC0xIGZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBwLTYgbWQ6cC04Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXQtOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImdzLXJldmVhbCB0ZXh0LXhsIG1kOnRleHQtMnhsIGZvbnQtbWVkaXVtIHRyYWNraW5nLXRpZ2h0IHRleHQtd2hpdGUgbGVhZGluZy1bMS4xNV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlbmdpbmUgcG93ZXJpbmcgdGhlIGV4cGVyaWVuY2UuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im10LTQgdGV4dC14cyBtZDp0ZXh0LXNtIHRleHQtemluYy00MDAgbGVhZGluZy1yZWxheGVkIGZvbnQtbGlnaHQgcHItNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlnaXRhbCBhcmNoaXRlY3R1cmUsIHVzZXIgZXhwZXJpZW5jZSwgYW5kIHZpc3VhbCBzeXN0ZW1zIGJ1aWx0IGZyb20gdGhlIGdyb3VuZCB1cC4gVW5pZmllZCBhbmQgZGVsaWJlcmF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im10LTggdGV4dC14cyB0ZXh0LXppbmMtNjAwIGZvbnQtbm9ybWFsIG9wYWNpdHktMCBzZWxlY3Qtbm9uZSI+bHVtaW5hLnN0dWRpbzwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvbWFpbj4KCiAgICA8c2NyaXB0PgogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCAoKSA9PiB7CiAgICAgICAgICAgIGdzYXAucmVnaXN0ZXJQbHVnaW4oU2Nyb2xsVHJpZ2dlcik7CgogICAgICAgICAgICBjb25zdCByZXZlYWxFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ncy1yZXZlYWwiKTsKCiAgICAgICAgICAgIHJldmVhbEVsZW1lbnRzLmZvckVhY2goKGVsZW0pID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSBlbGVtLmlubmVyVGV4dDsKICAgICAgICAgICAgICAgIGVsZW0uaW5uZXJIVE1MID0gIiI7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIFNwbGl0IHRleHQgYnkgd29yZHMKICAgICAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gdGV4dC5zcGxpdCgiICIpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB3b3Jkcy5mb3JFYWNoKCh3b3JkLCBpbmRleCkgPT4gewogICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBvdXRlciBtYXNrIGNvbnRhaW5lcgogICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmRXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgICAgIHdvcmRXcmFwcGVyLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIjsKICAgICAgICAgICAgICAgICAgICB3b3JkV3JhcHBlci5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwogICAgICAgICAgICAgICAgICAgIHdvcmRXcmFwcGVyLnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAidG9wIjsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgaW5uZXIgYW5pbWF0ZWQgc3BhbgogICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgICAgIHdvcmRTcGFuLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIjsKICAgICAgICAgICAgICAgICAgICB3b3JkU3Bhbi5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlWSgxMDAlKSI7CiAgICAgICAgICAgICAgICAgICAgd29yZFNwYW4uc3R5bGUub3BhY2l0eSA9ICIwIjsKICAgICAgICAgICAgICAgICAgICB3b3JkU3Bhbi5pbm5lckhUTUwgPSB3b3JkOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHdvcmRXcmFwcGVyLmFwcGVuZENoaWxkKHdvcmRTcGFuKTsKICAgICAgICAgICAgICAgICAgICBlbGVtLmFwcGVuZENoaWxkKHdvcmRXcmFwcGVyKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gQWRkIHNwYWNlIGFmdGVyIHdvcmQgdW5sZXNzIGl0J3MgdGhlIGxhc3Qgb25lCiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgd29yZHMubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQoc3BhY2UpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vIEFuaW1hdGUgd29yZHMKICAgICAgICAgICAgICAgIGdzYXAudG8oZWxlbS5xdWVyeVNlbGVjdG9yQWxsKCJzcGFuID4gc3BhbiIpLCB7CiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVHJpZ2dlcjogewogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiBlbGVtLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogInRvcCA5MCUiLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgeTogIjAlIiwKICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLAogICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAwLjcsCiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcjogMC4wMiwKICAgICAgICAgICAgICAgICAgICBlYXNlOiAicG93ZXIzLm91dCIKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIDwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+Cg==";
const assetFiles = ["assets/page-01-6b97b0cc-6b81-4451-aacc-6b928e7d0a69-3840w.jpg","assets/page-02-193e1472-0514-44eb-893a-1376091263f3-3840w.jpg","assets/page-03-5180d964-2425-4134-8220-c1528af09124-800w.jpg","assets/page-04-4f5668c5-fc4a-44e0-bc5e-a664189d3c31-1600w.jpg","assets/page-05-fbddf75f-e2e3-4552-a710-55e2a5f4d6af-800w.jpg","assets/page-06-16d38370-5873-45cf-bab1-60a7b923dc6e-800w.jpg","assets/page-07-8e802a98-b83c-4c5d-99d1-e24406eb4ec9-3840w.jpg"];
const runtimeFiles = ["../../../../assets/runtime/runtime-027051effa47-gsap-min.js","../../../../assets/runtime/runtime-163ebd087cfc-iconify-icon-min.js","../../../../assets/runtime/runtime-689ca8dda44c-scrolltrigger-min.js","../../../../assets/runtime/runtime-ccc8894b3418-runtime.js"];
const frame = document.getElementById("neuform-demo");
const decodeBytes = (value) => Uint8Array.from(atob(value), (character) => character.charCodeAt(0));
const decode = (value) => new TextDecoder().decode(decodeBytes(value));
const encodeBytes = (bytes) => {
let binary = "";
for (let index = 0; index < bytes.length; index += 32768) {
binary += String.fromCharCode(...bytes.subarray(index, index + 32768));
}
return btoa(binary);
};
const mediaTypes = {
avif: "image/avif",
gif: "image/gif",
jpg: "image/jpeg",
jpeg: "image/jpeg",
mp4: "video/mp4",
png: "image/png",
webm: "video/webm",
webp: "image/webp"
};
const loadAsset = async (file) => {
const response = await fetch(file, { cache: "no-store", credentials: "omit", redirect: "error" });
if (!response.ok) throw new Error("Could not load local demo asset: " + file);
const extension = file.split(".").pop().toLowerCase();
const contentType = mediaTypes[extension] || "application/octet-stream";
const bytes = new Uint8Array(await response.arrayBuffer());
return { base64: encodeBytes(bytes), contentType, file, kind: "asset" };
};
Promise.allSettled(assetFiles.map(loadAsset)).then((results) => {
const runtimeSources = runtimeFiles.map((file) => new URL(file, location.href).href).join(" ");
const source = decode(encodedHtml).replace("__NEUFORM_RUNTIME_SOURCES__", runtimeSources);
const mediaAssets = [];
for (const result of results) {
if (result.status !== "fulfilled") continue;
mediaAssets.push(result.value);
}
frame.addEventListener("load", () => {
frame.contentWindow.postMessage({ type: "neuform-assets-v1", assets: mediaAssets }, "*");
}, { once: true });
frame.srcdoc = source;
}).catch((error) => {
document.body.innerHTML = '<div class="error">Unable to load this sandboxed demo.</div>';
console.error(error);
});
</script>
</body>
</html>
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Meng To
- Publisher
- Meng To (Community)
- Source
- MengTo/Skills · agent-skills/web-design/marquee-loop · commit 5ea1661
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Meng To.
Get it from the source
3 of this skill’s files are not mirrored here, so there is no ZIP. Get the complete skill from its source: MengTo/Skills