From 8923496d223fd74394fb833ad05b9a739f1fb6f8 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:47:16 +0000 Subject: [PATCH 01/34] chore: add wrapper for `DedicatedWorker` --- .../client/utils/DedicatedWorker.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/DedicatedWorker.java diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/DedicatedWorker.java b/appinventor/appengine/src/com/google/appinventor/client/utils/DedicatedWorker.java new file mode 100644 index 00000000000..44ef3a9b2a9 --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/DedicatedWorker.java @@ -0,0 +1,31 @@ +package com.google.appinventor.client.utils; + +import jsinterop.annotations.JsConstructor; +import jsinterop.annotations.JsMethod; +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsProperty; +import jsinterop.annotations.JsType; + +@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Worker") +public class DedicatedWorker { + @JsMethod + public native void postMessage(Object message); + + @JsMethod + public native void addEventListener(String type, EventListener listener); + + @JsConstructor + public DedicatedWorker(String scriptURL) {} + + @JsType + public interface EventListener { + void handleEvent(MessageEvent event); + } + + @JsType + public interface MessageEvent { + @JsProperty(name = "data") + Object getData(); + } +} + From 4d66526f9ec2bb3044d55b1a8ed85fdeff7c99a9 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:49:52 +0000 Subject: [PATCH 02/34] chore: add ability to pack mock scripts with extensions --- .../scripts/ExternalComponentGenerator.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java b/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java index 1d8d7e72ca4..c2ab4d7e44d 100644 --- a/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java +++ b/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java @@ -108,6 +108,7 @@ private static void generateAllExtensions() throws IOException, JSONException { copyIcon(name, info.descriptor); copyLicense(name, info.descriptor); copyAssets(name, info.descriptor); + copyMock(name, info.descriptor); } generateExternalComponentBuildFiles(name, entry.getValue()); generateExternalComponentOtherFiles(name); @@ -289,6 +290,31 @@ private static void copyAssets(String packageName, JSONObject componentDescripto } } + public static void copyMock(String packageName, JSONObject componentDescriptor) throws JSONException, IOException { + boolean nonVisible = componentDescriptor.getBoolean("nonVisible"); + if (nonVisible) { + return; + } + + String packagePath = packageName.replace('.', File.separatorChar); + File sourceDir = new File(externalComponentsDirPath + File.separator + ".." + File.separator + ".." + File.separator + "src", File.separator + packagePath); + File mockFile = new File(sourceDir, "mocks" + File.separator + componentDescriptor.getString("name") + ".mock.js"); + + if (!mockFile.exists()) { + System.out.println("Extensions : Skipping missing mock file " + mockFile.getAbsolutePath()); + return; + } + + File destDir = new File(externalComponentsDirPath + File.separator + packageName + File.separator); + File mockDestDir = new File(destDir, "mocks"); + ensureFreshDirectory(mockDestDir.getPath(), + "Unable to delete the mock directory for the extension."); + + File mockDestFile = new File(mockDestDir, componentDescriptor.getString("name") + ".mock.js"); + System.out.println("Extensions : " + "Copying mock file " + mockFile.getAbsolutePath()); + copyFile(mockFile.getAbsolutePath(), mockDestFile.getAbsolutePath()); + } + private static void generateExternalComponentOtherFiles(String packageName) throws IOException { String extensionDirPath = externalComponentsDirPath + File.separator + packageName; From 16d6b16729435a4229332cd749bdf6e2ce40f013 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:54:10 +0000 Subject: [PATCH 03/34] chore: add test mock for visible extensions --- .../components/MockVisibleExtension.java | 41 ++++++++ .../palette/SimpleComponentDescriptor.java | 97 ++++++++++--------- 2 files changed, 94 insertions(+), 44 deletions(-) create mode 100644 appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java new file mode 100644 index 00000000000..d8f17a7afdc --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -0,0 +1,41 @@ +package com.google.appinventor.client.editor.simple.components; + +import com.google.appinventor.client.editor.simple.SimpleEditor; +import com.google.appinventor.client.utils.DedicatedWorker; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.Image; + +import java.util.logging.Logger; + +public class MockVisibleExtension extends MockComponent { + private final String mockScript; + + private DedicatedWorker worker; + private Button button; + + public MockVisibleExtension(SimpleEditor editor, String type, Image iconImage, String mockScript) { + super(editor, type, iconImage); + this.mockScript = mockScript; + + button = new Button(); + button.setText("waiting for something..."); + button.setStylePrimaryName("ode-SimpleMockComponent"); + button.setStyleName("ode-SimpleMockButton"); + } + + @Override + public boolean isVisibleComponent() { + return true; + } + + @Override + public void onCreateFromPalette() { + worker = new DedicatedWorker(mockScript); + worker.postMessage("ode: hello worker!"); + worker.addEventListener("message", event -> { + button.setText(event.getData().toString()); + Logger.getGlobal().fine(event.getData().toString()); + }); + } +} diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java index ddcd819f17c..14b6e94e50b 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java @@ -15,9 +15,9 @@ import com.google.appinventor.client.editor.simple.components.MockBall; import com.google.appinventor.client.editor.simple.components.MockButton; import com.google.appinventor.client.editor.simple.components.MockCanvas; -import com.google.appinventor.client.editor.simple.components.MockChatBot; import com.google.appinventor.client.editor.simple.components.MockChart; import com.google.appinventor.client.editor.simple.components.MockChartData2D; +import com.google.appinventor.client.editor.simple.components.MockChatBot; import com.google.appinventor.client.editor.simple.components.MockCheckBox; import com.google.appinventor.client.editor.simple.components.MockCircle; import com.google.appinventor.client.editor.simple.components.MockCircularProgress; @@ -31,10 +31,6 @@ import com.google.appinventor.client.editor.simple.components.MockFilePicker; import com.google.appinventor.client.editor.simple.components.MockFirebaseDB; import com.google.appinventor.client.editor.simple.components.MockFusionTablesControl; -import com.google.appinventor.client.editor.simple.components.MockTrendline; -import com.google.appinventor.client.editor.simple.components.MockTwitter; -import com.google.appinventor.client.editor.simple.components.MockLinearProgress; -import com.google.appinventor.client.editor.simple.components.MockSpreadsheet; import com.google.appinventor.client.editor.simple.components.MockHorizontalArrangement; import com.google.appinventor.client.editor.simple.components.MockImage; import com.google.appinventor.client.editor.simple.components.MockImageBot; @@ -42,6 +38,7 @@ import com.google.appinventor.client.editor.simple.components.MockImageSprite; import com.google.appinventor.client.editor.simple.components.MockLabel; import com.google.appinventor.client.editor.simple.components.MockLineString; +import com.google.appinventor.client.editor.simple.components.MockLinearProgress; import com.google.appinventor.client.editor.simple.components.MockListPicker; import com.google.appinventor.client.editor.simple.components.MockListView; import com.google.appinventor.client.editor.simple.components.MockMap; @@ -56,15 +53,18 @@ import com.google.appinventor.client.editor.simple.components.MockScrollVerticalArrangement; import com.google.appinventor.client.editor.simple.components.MockSlider; import com.google.appinventor.client.editor.simple.components.MockSpinner; +import com.google.appinventor.client.editor.simple.components.MockSpreadsheet; import com.google.appinventor.client.editor.simple.components.MockSwitch; import com.google.appinventor.client.editor.simple.components.MockTableArrangement; import com.google.appinventor.client.editor.simple.components.MockTextBox; import com.google.appinventor.client.editor.simple.components.MockTimePicker; import com.google.appinventor.client.editor.simple.components.MockTranslator; +import com.google.appinventor.client.editor.simple.components.MockTrendline; +import com.google.appinventor.client.editor.simple.components.MockTwitter; import com.google.appinventor.client.editor.simple.components.MockVerticalArrangement; import com.google.appinventor.client.editor.simple.components.MockVideoPlayer; +import com.google.appinventor.client.editor.simple.components.MockVisibleExtension; import com.google.appinventor.client.editor.simple.components.MockWebViewer; - import com.google.appinventor.client.editor.youngandroid.YaFormEditor; import com.google.appinventor.shared.storage.StorageUtil; @@ -80,7 +80,6 @@ /** * Descriptor for components on the component palette panel. * This class is immutable. - * */ public final class SimpleComponentDescriptor { @@ -231,7 +230,7 @@ private static void initBundledImages() { /** * Creates a new component descriptor. * - * @param name component display name + * @param name component display name */ public SimpleComponentDescriptor(String name, SimpleEditor editor, @@ -270,7 +269,7 @@ public SimpleComponentDescriptor(String name, boolean external) { // TODO: Remove editor and component database attributes this.name = name; - this.editor = (YaFormEditor)Ode.getInstance().getCurrentFileEditor(); + this.editor = (YaFormEditor) Ode.getInstance().getCurrentFileEditor(); this.version = version; this.versionName = versionName; this.dateBuilt = dateBuilt; @@ -315,11 +314,13 @@ public String getHelpUrl() { /** * Returns the origin of the component + * * @return true if component is external */ public boolean getExternal() { return external; } + /** * Returns the categoryDocUrl string for the component. For more detail, see * javadoc for @@ -356,7 +357,7 @@ public boolean getNonVisible() { /** * Returns an image for display on the component palette. * - * @return image for component + * @return image for component */ public Image getImage() { if (nonVisible) { @@ -372,7 +373,7 @@ public Image getImage() { /** * Returns the version of the component, if any. * - * @return component version string + * @return component version string */ public int getVersion() { return version; @@ -381,7 +382,7 @@ public int getVersion() { /** * Returns the custom version name of the component, if any. * - * @return component version name + * @return component version name */ public String getVersionName() { return versionName; @@ -390,7 +391,7 @@ public String getVersionName() { /** * Returns the date the component was built, if any. * - * @return ISO 8601 formated date the component was built + * @return ISO 8601 formated date the component was built */ public String getDateBuilt() { return dateBuilt; @@ -412,7 +413,7 @@ public String getLicense() { * Returns a draggable image for the component. Used when dragging a * component from the palette onto the form. * - * @return draggable widget for component + * @return draggable widget for component */ public Widget getDragWidget() { return createMockComponent(name, COMPONENT_DATABASE.getComponentType(name), editor); @@ -421,7 +422,7 @@ public Widget getDragWidget() { /** * Instantiates the corresponding mock component. * - * @return mock component + * @return mock component */ public MockComponent createMockComponentFromPalette() { MockComponent mockComponent = createMockComponent(name, @@ -469,7 +470,7 @@ public static String getLicenseURLFromPath(String licensePath, String packageNam // License file is inside aiwebres return StorageUtil.getFileUrl(projectId, "assets/external_comps/" + packageName + "/" + licensePath) + "&inline"; - } else if(licensePath.startsWith("http:") || licensePath.startsWith("https:")) { + } else if (licensePath.startsWith("http:") || licensePath.startsWith("https:")) { // The license is an external URL return licensePath; } else { @@ -483,38 +484,38 @@ public static String getLicenseURLFromPath(String licensePath, String packageNam */ public static MockComponent createMockComponent(String name, String type, SimpleEditor editor) { if (SimpleComponentDatabase.getInstance(editor.getProjectId()).getNonVisible(name)) { - if(name.equals(MockFirebaseDB.TYPE)) { + if (name.equals(MockFirebaseDB.TYPE)) { return new MockFirebaseDB(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); - } else if(name.equals(MockCloudDB.TYPE)) { + getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), + null, editor.getProjectId())); + } else if (name.equals(MockCloudDB.TYPE)) { return new MockCloudDB(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); - } else if(name.equals(MockFusionTablesControl.TYPE)) { + getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), + null, editor.getProjectId())); + } else if (name.equals(MockFusionTablesControl.TYPE)) { return new MockFusionTablesControl(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); - } else if(name.equals(MockTwitter.TYPE)) { + getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), + null, editor.getProjectId())); + } else if (name.equals(MockTwitter.TYPE)) { return new MockTwitter(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); - } else if(name.equals(MockTranslator.TYPE)) { + getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), + null, editor.getProjectId())); + } else if (name.equals(MockTranslator.TYPE)) { return new MockTranslator(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); - } else if(name.equals(MockChatBot.TYPE)) { + getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), + null, editor.getProjectId())); + } else if (name.equals(MockChatBot.TYPE)) { return new MockChatBot(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); - } else if(name.equals(MockImageBot.TYPE)) { + getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), + null, editor.getProjectId())); + } else if (name.equals(MockImageBot.TYPE)) { return new MockImageBot(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); - } else if(name.equals(MockSpreadsheet.TYPE)) { + getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), + null, editor.getProjectId())); + } else if (name.equals(MockSpreadsheet.TYPE)) { return new MockSpreadsheet(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); + getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), + null, editor.getProjectId())); } else if (name.equals(MockDataFile.TYPE)) { return new MockDataFile(editor, name, getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()) @@ -523,8 +524,8 @@ public static MockComponent createMockComponent(String name, String type, Simple } else { String pkgName = type.contains(".") ? type.substring(0, type.lastIndexOf('.')) : null; return new MockNonVisibleComponent(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - pkgName, editor.getProjectId())); + getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), + pkgName, editor.getProjectId())); } } else if (name.equals(MockButton.TYPE)) { return new MockButton(editor); @@ -611,8 +612,16 @@ public static MockComponent createMockComponent(String name, String type, Simple } else if (name.equals(MockTrendline.TYPE)) { return new MockTrendline(editor); } else { - // TODO(user): add 3rd party mock component proxy here - throw new UnsupportedOperationException("unknown component: " + name); + boolean isExternal = SimpleComponentDatabase.getInstance(editor.getProjectId()).getComponentExternal(name); + if (!isExternal) { + throw new UnsupportedOperationException("unknown component: " + name); + } + + Image icon = getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), type, editor.getProjectId()); + String packagePath = type.substring(0, type.lastIndexOf(".")); + String mockScriptPath = "assets/external_comps/" + packagePath + "/mocks/" + name + ".mock.js"; + String mockScript = StorageUtil.getFileUrl(editor.getProjectId(), mockScriptPath); + return new MockVisibleExtension(editor, type, icon, mockScript); } } } From 6e33fb8388c963bdbaac8b4be910db9268841f84 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 24 Jun 2024 19:44:14 +0530 Subject: [PATCH 04/34] chore(poc): add `Blob` and `URL` JS types --- .../google/appinventor/client/utils/Blob.java | 23 +++++++++++++++++++ .../appinventor/client/utils/JsURL.java | 11 +++++++++ 2 files changed, 34 insertions(+) create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/Blob.java create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/JsURL.java diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/Blob.java b/appinventor/appengine/src/com/google/appinventor/client/utils/Blob.java new file mode 100644 index 00000000000..9f0cbba1e3c --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/Blob.java @@ -0,0 +1,23 @@ +package com.google.appinventor.client.utils; + +import jsinterop.annotations.JsConstructor; +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsProperty; +import jsinterop.annotations.JsType; + +@JsType(isNative = true, namespace = JsPackage.GLOBAL) +public class Blob { + + @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object") + public static class BlobOptions { + @JsProperty private String type; + + @JsProperty private String ending; + + @JsConstructor + public BlobOptions(String type, String ending) {} + } + + @JsConstructor + public Blob(Object[] parts, BlobOptions options) {} +} diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/JsURL.java b/appinventor/appengine/src/com/google/appinventor/client/utils/JsURL.java new file mode 100644 index 00000000000..32d1f0dae7b --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/JsURL.java @@ -0,0 +1,11 @@ +package com.google.appinventor.client.utils; + +import jsinterop.annotations.JsMethod; +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsType; + +@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "URL") +public class JsURL { + @JsMethod + public static native String createObjectURL(Object object); +} From 3bbdf27d859c3dcc5aa1cb3ef7a66662b094ac28 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 24 Jun 2024 19:45:36 +0530 Subject: [PATCH 05/34] chore(poc): enhance `Worker`'s API --- .../client/utils/DedicatedWorker.java | 31 ----------------- .../appinventor/client/utils/Worker.java | 34 +++++++++++++++++++ 2 files changed, 34 insertions(+), 31 deletions(-) delete mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/DedicatedWorker.java create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/Worker.java diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/DedicatedWorker.java b/appinventor/appengine/src/com/google/appinventor/client/utils/DedicatedWorker.java deleted file mode 100644 index 44ef3a9b2a9..00000000000 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/DedicatedWorker.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.google.appinventor.client.utils; - -import jsinterop.annotations.JsConstructor; -import jsinterop.annotations.JsMethod; -import jsinterop.annotations.JsPackage; -import jsinterop.annotations.JsProperty; -import jsinterop.annotations.JsType; - -@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Worker") -public class DedicatedWorker { - @JsMethod - public native void postMessage(Object message); - - @JsMethod - public native void addEventListener(String type, EventListener listener); - - @JsConstructor - public DedicatedWorker(String scriptURL) {} - - @JsType - public interface EventListener { - void handleEvent(MessageEvent event); - } - - @JsType - public interface MessageEvent { - @JsProperty(name = "data") - Object getData(); - } -} - diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/Worker.java b/appinventor/appengine/src/com/google/appinventor/client/utils/Worker.java new file mode 100644 index 00000000000..75b083fa241 --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/Worker.java @@ -0,0 +1,34 @@ +package com.google.appinventor.client.utils; + +import jsinterop.annotations.JsFunction; +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsProperty; +import jsinterop.annotations.JsType; + +@JsType(isNative = true, namespace = JsPackage.GLOBAL) +public class Worker { + + @JsFunction + public interface EventListener { + void handleEvent(T event); + } + + @JsType(isNative = true, namespace = JsPackage.GLOBAL) + public interface Event {} + + @JsType(isNative = true, namespace = JsPackage.GLOBAL) + public interface MessageEvent extends Event { + @JsProperty(name = "data") + Object getData(); + } + + public Worker(String scriptURL) {} + + public native void postMessage(Object message); + + public native void terminate(); + + public native void addEventListener(String type, EventListener listener); + + public native void removeEventListener(String type, EventListener listener); +} From bfa71f71f51126e9dc0d6bd3b17d2f3f3564be76 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 24 Jun 2024 19:46:46 +0530 Subject: [PATCH 06/34] chore(poc): very bare, unsafe POC implementation --- .../components/MockVisibleComponent.java | 4 + .../components/MockVisibleExtension.java | 117 +++++++++++++----- .../palette/SimpleComponentDescriptor.java | 67 ++++------ appinventor/appengine/war/static/css/Ya.css | 18 +++ 4 files changed, 138 insertions(+), 68 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleComponent.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleComponent.java index 01da3fc8ddc..77e8f8d880d 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleComponent.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleComponent.java @@ -92,6 +92,10 @@ public abstract class MockVisibleComponent extends MockComponent { super(editor, type, new Image(icon)); } + MockVisibleComponent(SimpleEditor editor, String type, Image icon) { + super(editor, type, icon); + } + @Override public final void initComponent(Widget widget) { super.initComponent(widget); diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index d8f17a7afdc..218f4001f0e 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -1,41 +1,102 @@ package com.google.appinventor.client.editor.simple.components; +import com.google.appinventor.client.Ode; +import com.google.appinventor.client.OdeAsyncCallback; import com.google.appinventor.client.editor.simple.SimpleEditor; -import com.google.appinventor.client.utils.DedicatedWorker; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.Image; +import com.google.appinventor.client.utils.Blob; +import com.google.appinventor.client.utils.Blob.BlobOptions; +import com.google.appinventor.client.utils.Worker; +import com.google.appinventor.client.utils.JsURL; +import com.google.appinventor.client.utils.Promise; +import com.google.appinventor.client.utils.Worker.MessageEvent; +import com.google.appinventor.client.widgets.dnd.DragSource; +import com.google.appinventor.shared.rpc.project.ChecksumedFileException; +import com.google.appinventor.shared.rpc.project.ChecksumedLoadFile; +import com.google.gwt.user.client.ui.*; -import java.util.logging.Logger; +public class MockVisibleExtension extends MockVisibleComponent { + private final long projectId; + private final String mockFileId; + private final HorizontalPanel rootPanel; -public class MockVisibleExtension extends MockComponent { - private final String mockScript; + private Worker worker = null; - private DedicatedWorker worker; - private Button button; + public MockVisibleExtension( + SimpleEditor editor, String type, Image iconImage, String mockFileId) { + super(editor, type, iconImage); - public MockVisibleExtension(SimpleEditor editor, String type, Image iconImage, String mockScript) { - super(editor, type, iconImage); - this.mockScript = mockScript; + this.mockFileId = mockFileId; + this.projectId = editor.getProjectId(); - button = new Button(); - button.setText("waiting for something..."); - button.setStylePrimaryName("ode-SimpleMockComponent"); - button.setStyleName("ode-SimpleMockButton"); - } + rootPanel = new HorizontalPanel(); + rootPanel.setStylePrimaryName("ode-MockVisibleExtensionLoading"); + + iconImage.setWidth("24px"); + rootPanel.add(iconImage); + + InlineHTML label = new InlineHTML("Loading " + type + "..."); + rootPanel.add(label); + + Ode.CLog("constructor..."); + initComponent(rootPanel); + } - @Override - public boolean isVisibleComponent() { - return true; + @Override + public void onCreateFromPalette() { + super.onCreateFromPalette(); + Ode.CLog("initing..."); + Promise.call( + "Server error: could not mock script for component: " + getVisibleTypeName(), + cb -> Ode.getInstance().getProjectService().load2(projectId, mockFileId, cb)) + .then( + result -> { + Blob blob; + try { + String[] parts = new String[] {result.getContent()}; + BlobOptions options = new BlobOptions("text/javascript", "transparent"); + blob = new Blob(parts, options); + } catch (ChecksumedFileException e) { + return Promise.reject(e.getMessage()); + } + + worker = new Worker(JsURL.createObjectURL(blob)); + worker.postMessage("ping"); + worker.addEventListener( + "message", + (MessageEvent event) -> { + HTMLPanel html = new HTMLPanel(event.getData().toString()); + rootPanel.clear(); + rootPanel.setStylePrimaryName("ode-SimpleMockComponent"); + rootPanel.add(html); + }); + return Promise.resolve(result); + }); + } + + @Override + public void delete() { + super.delete(); + if (worker != null) { + worker.terminate(); } + } - @Override - public void onCreateFromPalette() { - worker = new DedicatedWorker(mockScript); - worker.postMessage("ode: hello worker!"); - worker.addEventListener("message", event -> { - button.setText(event.getData().toString()); - Logger.getGlobal().fine(event.getData().toString()); - }); + @Override + public void onPropertyChange(String propertyName, String newValue) { + super.onPropertyChange(propertyName, newValue); + if (worker != null) { + String msg = propertyName + ": " + newValue; + worker.postMessage(msg); } + } + + @Override + public int getPreferredWidth() { + return 128; + } + + @Override + public int getPreferredHeight() { + return 48; + } } diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java index 14b6e94e50b..3ba3b38e09f 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java @@ -479,53 +479,41 @@ public static String getLicenseURLFromPath(String licensePath, String packageNam } } - /** - * Instantiates mock component by name. - */ + /** Instantiates mock component by name. */ public static MockComponent createMockComponent(String name, String type, SimpleEditor editor) { - if (SimpleComponentDatabase.getInstance(editor.getProjectId()).getNonVisible(name)) { + SimpleComponentDatabase scd = SimpleComponentDatabase.getInstance(editor.getProjectId()); + if (scd.getNonVisible(name)) { if (name.equals(MockFirebaseDB.TYPE)) { - return new MockFirebaseDB(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); + return new MockFirebaseDB( + editor, name, getImageFromPath(scd.getIconName(name), null, editor.getProjectId())); } else if (name.equals(MockCloudDB.TYPE)) { - return new MockCloudDB(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); + return new MockCloudDB( + editor, name, getImageFromPath(scd.getIconName(name), null, editor.getProjectId())); } else if (name.equals(MockFusionTablesControl.TYPE)) { - return new MockFusionTablesControl(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); + return new MockFusionTablesControl( + editor, name, getImageFromPath(scd.getIconName(name), null, editor.getProjectId())); } else if (name.equals(MockTwitter.TYPE)) { - return new MockTwitter(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); + return new MockTwitter( + editor, name, getImageFromPath(scd.getIconName(name), null, editor.getProjectId())); } else if (name.equals(MockTranslator.TYPE)) { - return new MockTranslator(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); + return new MockTranslator( + editor, name, getImageFromPath(scd.getIconName(name), null, editor.getProjectId())); } else if (name.equals(MockChatBot.TYPE)) { - return new MockChatBot(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); + return new MockChatBot( + editor, name, getImageFromPath(scd.getIconName(name), null, editor.getProjectId())); } else if (name.equals(MockImageBot.TYPE)) { - return new MockImageBot(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); + return new MockImageBot( + editor, name, getImageFromPath(scd.getIconName(name), null, editor.getProjectId())); } else if (name.equals(MockSpreadsheet.TYPE)) { - return new MockSpreadsheet(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - null, editor.getProjectId())); + return new MockSpreadsheet( + editor, name, getImageFromPath(scd.getIconName(name), null, editor.getProjectId())); } else if (name.equals(MockDataFile.TYPE)) { - return new MockDataFile(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()) - .getIconName(name), - null, editor.getProjectId())); + return new MockDataFile( + editor, name, getImageFromPath(scd.getIconName(name), null, editor.getProjectId())); } else { String pkgName = type.contains(".") ? type.substring(0, type.lastIndexOf('.')) : null; - return new MockNonVisibleComponent(editor, name, - getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), - pkgName, editor.getProjectId())); + return new MockNonVisibleComponent( + editor, name, getImageFromPath(scd.getIconName(name), pkgName, editor.getProjectId())); } } else if (name.equals(MockButton.TYPE)) { return new MockButton(editor); @@ -612,16 +600,15 @@ public static MockComponent createMockComponent(String name, String type, Simple } else if (name.equals(MockTrendline.TYPE)) { return new MockTrendline(editor); } else { - boolean isExternal = SimpleComponentDatabase.getInstance(editor.getProjectId()).getComponentExternal(name); + boolean isExternal = scd.getComponentExternal(name); if (!isExternal) { throw new UnsupportedOperationException("unknown component: " + name); } - Image icon = getImageFromPath(SimpleComponentDatabase.getInstance(editor.getProjectId()).getIconName(name), type, editor.getProjectId()); + Image icon = getImageFromPath(scd.getIconName(name), type, editor.getProjectId()); String packagePath = type.substring(0, type.lastIndexOf(".")); - String mockScriptPath = "assets/external_comps/" + packagePath + "/mocks/" + name + ".mock.js"; - String mockScript = StorageUtil.getFileUrl(editor.getProjectId(), mockScriptPath); - return new MockVisibleExtension(editor, type, icon, mockScript); + String mockFileId = "assets/external_comps/" + packagePath + "/mocks/" + name + ".mock.js"; + return new MockVisibleExtension(editor, name, icon, mockFileId); } } } diff --git a/appinventor/appengine/war/static/css/Ya.css b/appinventor/appengine/war/static/css/Ya.css index 5d679f7605c..7d3789a18e0 100755 --- a/appinventor/appengine/war/static/css/Ya.css +++ b/appinventor/appengine/war/static/css/Ya.css @@ -1401,6 +1401,24 @@ select.ode-PropertyEditor[disabled] { border: 2px solid #8fc202; } +.ode-MockVisibleExtensionLoading { + box-sizing: border-box; + border: 2px dashed #383d41; + border-radius: 5px; + padding: 4px; + font-size: 12px; + font-weight: normal; + font-style: italic; +} + +.ode-MockVisibleExtensionLoading-selected { + border: 2px dashed #8fc202; +} + +.ode-MockVisibleExtensionLoading img { + opacity: 0.75; +} + .ode-SimpleMockMapFeature-selected svg * { stroke: #8fc202; stroke-opacity: 1; From ede08cbc1c706371c2281dfe6d9b7dbb3c8bd07f Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 15 Jul 2024 22:15:32 +0530 Subject: [PATCH 07/34] refactor: move JS interop code to `jstypes` subpackage --- .../client/utils/{ => jstypes}/Blob.java | 2 +- .../utils/jstypes/PropertyChangeMessage.java | 19 +++++++++++++++++++ .../utils/{JsURL.java => jstypes/URL.java} | 6 +++--- .../client/utils/{ => jstypes}/Worker.java | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) rename appinventor/appengine/src/com/google/appinventor/client/utils/{ => jstypes}/Blob.java (91%) create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java rename appinventor/appengine/src/com/google/appinventor/client/utils/{JsURL.java => jstypes/URL.java} (58%) rename appinventor/appengine/src/com/google/appinventor/client/utils/{ => jstypes}/Worker.java (94%) diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/Blob.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java similarity index 91% rename from appinventor/appengine/src/com/google/appinventor/client/utils/Blob.java rename to appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java index 9f0cbba1e3c..de4a6072104 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/Blob.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java @@ -1,4 +1,4 @@ -package com.google.appinventor.client.utils; +package com.google.appinventor.client.utils.jstypes; import jsinterop.annotations.JsConstructor; import jsinterop.annotations.JsPackage; diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java new file mode 100644 index 00000000000..57e36d18ea1 --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java @@ -0,0 +1,19 @@ +package com.google.appinventor.client.utils.jstypes; + +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsProperty; +import jsinterop.annotations.JsType; + +@JsType(namespace = JsPackage.GLOBAL) +public class PropertyChangeMessage { + @JsProperty(name = "propertyName") + public final String propertyName; + + @JsProperty(name = "newValue") + public final String newValue; + + public PropertyChangeMessage(String propertyName, String newValue) { + this.propertyName = propertyName; + this.newValue = newValue; + } +} diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/JsURL.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/URL.java similarity index 58% rename from appinventor/appengine/src/com/google/appinventor/client/utils/JsURL.java rename to appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/URL.java index 32d1f0dae7b..231e0f014ee 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/JsURL.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/URL.java @@ -1,11 +1,11 @@ -package com.google.appinventor.client.utils; +package com.google.appinventor.client.utils.jstypes; import jsinterop.annotations.JsMethod; import jsinterop.annotations.JsPackage; import jsinterop.annotations.JsType; -@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "URL") -public class JsURL { +@JsType(isNative = true, namespace = JsPackage.GLOBAL) +public class URL { @JsMethod public static native String createObjectURL(Object object); } diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/Worker.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java similarity index 94% rename from appinventor/appengine/src/com/google/appinventor/client/utils/Worker.java rename to appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java index 75b083fa241..c7ad9477955 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/Worker.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java @@ -1,4 +1,4 @@ -package com.google.appinventor.client.utils; +package com.google.appinventor.client.utils.jstypes; import jsinterop.annotations.JsFunction; import jsinterop.annotations.JsPackage; From 757bff099a5bbae946ff206713eef59d2ae72023 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 15 Jul 2024 22:17:14 +0530 Subject: [PATCH 08/34] chore: add `DOMPurify` and `linkedom` JS libs --- appinventor/appengine/build.xml | 5 +++++ appinventor/appengine/war/index.jsp | 2 ++ appinventor/lib/dompurify/purify.min.js | 3 +++ appinventor/lib/linkedom/linkedom.js | 18 ++++++++++++++++++ appinventor/lib/linkedom/linkedom.min.js | 8 ++++++++ appinventor/lib/linkedom/linkedom.min.js.map | 1 + 6 files changed, 37 insertions(+) create mode 100644 appinventor/lib/dompurify/purify.min.js create mode 100644 appinventor/lib/linkedom/linkedom.js create mode 100644 appinventor/lib/linkedom/linkedom.min.js create mode 100644 appinventor/lib/linkedom/linkedom.min.js.map diff --git a/appinventor/appengine/build.xml b/appinventor/appengine/build.xml index 682c9cdd3e5..1907d67e531 100644 --- a/appinventor/appengine/build.xml +++ b/appinventor/appengine/build.xml @@ -190,6 +190,10 @@ + + + + @@ -633,6 +637,7 @@ + diff --git a/appinventor/appengine/war/index.jsp b/appinventor/appengine/war/index.jsp index 4908ff159ed..a8f68121dfb 100644 --- a/appinventor/appengine/war/index.jsp +++ b/appinventor/appengine/war/index.jsp @@ -88,5 +88,7 @@ document.getElementById("unsupported").style.display = 'block'; } + + diff --git a/appinventor/lib/dompurify/purify.min.js b/appinventor/lib/dompurify/purify.min.js new file mode 100644 index 00000000000..a30c02bf514 --- /dev/null +++ b/appinventor/lib/dompurify/purify.min.js @@ -0,0 +1,3 @@ +/*! @license DOMPurify 3.1.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.6/LICENSE */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).DOMPurify=t()}(this,(function(){"use strict";const{entries:e,setPrototypeOf:t,isFrozen:n,getPrototypeOf:o,getOwnPropertyDescriptor:r}=Object;let{freeze:i,seal:a,create:l}=Object,{apply:c,construct:s}="undefined"!=typeof Reflect&&Reflect;i||(i=function(e){return e}),a||(a=function(e){return e}),c||(c=function(e,t,n){return e.apply(t,n)}),s||(s=function(e,t){return new e(...t)});const u=b(Array.prototype.forEach),m=b(Array.prototype.pop),p=b(Array.prototype.push),f=b(String.prototype.toLowerCase),d=b(String.prototype.toString),h=b(String.prototype.match),g=b(String.prototype.replace),T=b(String.prototype.indexOf),y=b(String.prototype.trim),E=b(Object.prototype.hasOwnProperty),_=b(RegExp.prototype.test),A=(N=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n1?n-1:0),r=1;r2&&void 0!==arguments[2]?arguments[2]:f;t&&t(e,null);let i=o.length;for(;i--;){let t=o[i];if("string"==typeof t){const e=r(t);e!==t&&(n(o)||(o[i]=e),t=e)}e[t]=!0}return e}function R(e){for(let t=0;t/gm),B=a(/\${[\w\W]*}/gm),W=a(/^data-[\-\w.\u00B7-\uFFFF]/),G=a(/^aria-[\-\w]+$/),Y=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),j=a(/^(?:\w+script|data):/i),X=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),q=a(/^html$/i),$=a(/^[a-z][.\w]*(-[.\w]+)+$/i);var K=Object.freeze({__proto__:null,MUSTACHE_EXPR:H,ERB_EXPR:z,TMPLIT_EXPR:B,DATA_ATTR:W,ARIA_ATTR:G,IS_ALLOWED_URI:Y,IS_SCRIPT_OR_DATA:j,ATTR_WHITESPACE:X,DOCTYPE_NAME:q,CUSTOM_ELEMENT:$});const V=1,Z=3,J=7,Q=8,ee=9,te=function(){return"undefined"==typeof window?null:window};var ne=function t(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:te();const o=e=>t(e);if(o.version="3.1.6",o.removed=[],!n||!n.document||n.document.nodeType!==ee)return o.isSupported=!1,o;let{document:r}=n;const a=r,c=a.currentScript,{DocumentFragment:s,HTMLTemplateElement:N,Node:b,Element:R,NodeFilter:H,NamedNodeMap:z=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:B,DOMParser:W,trustedTypes:G}=n,j=R.prototype,X=C(j,"cloneNode"),$=C(j,"remove"),ne=C(j,"nextSibling"),oe=C(j,"childNodes"),re=C(j,"parentNode");if("function"==typeof N){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let ie,ae="";const{implementation:le,createNodeIterator:ce,createDocumentFragment:se,getElementsByTagName:ue}=r,{importNode:me}=a;let pe={};o.isSupported="function"==typeof e&&"function"==typeof re&&le&&void 0!==le.createHTMLDocument;const{MUSTACHE_EXPR:fe,ERB_EXPR:de,TMPLIT_EXPR:he,DATA_ATTR:ge,ARIA_ATTR:Te,IS_SCRIPT_OR_DATA:ye,ATTR_WHITESPACE:Ee,CUSTOM_ELEMENT:_e}=K;let{IS_ALLOWED_URI:Ae}=K,Ne=null;const be=S({},[...L,...D,...v,...x,...M]);let Se=null;const Re=S({},[...I,...U,...P,...F]);let we=Object.seal(l(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ce=null,Le=null,De=!0,ve=!0,Oe=!1,xe=!0,ke=!1,Me=!0,Ie=!1,Ue=!1,Pe=!1,Fe=!1,He=!1,ze=!1,Be=!0,We=!1,Ge=!0,Ye=!1,je={},Xe=null;const qe=S({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let $e=null;const Ke=S({},["audio","video","img","source","image","track"]);let Ve=null;const Ze=S({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Je="http://www.w3.org/1998/Math/MathML",Qe="http://www.w3.org/2000/svg",et="http://www.w3.org/1999/xhtml";let tt=et,nt=!1,ot=null;const rt=S({},[Je,Qe,et],d);let it=null;const at=["application/xhtml+xml","text/html"];let lt=null,ct=null;const st=r.createElement("form"),ut=function(e){return e instanceof RegExp||e instanceof Function},mt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!ct||ct!==e){if(e&&"object"==typeof e||(e={}),e=w(e),it=-1===at.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,lt="application/xhtml+xml"===it?d:f,Ne=E(e,"ALLOWED_TAGS")?S({},e.ALLOWED_TAGS,lt):be,Se=E(e,"ALLOWED_ATTR")?S({},e.ALLOWED_ATTR,lt):Re,ot=E(e,"ALLOWED_NAMESPACES")?S({},e.ALLOWED_NAMESPACES,d):rt,Ve=E(e,"ADD_URI_SAFE_ATTR")?S(w(Ze),e.ADD_URI_SAFE_ATTR,lt):Ze,$e=E(e,"ADD_DATA_URI_TAGS")?S(w(Ke),e.ADD_DATA_URI_TAGS,lt):Ke,Xe=E(e,"FORBID_CONTENTS")?S({},e.FORBID_CONTENTS,lt):qe,Ce=E(e,"FORBID_TAGS")?S({},e.FORBID_TAGS,lt):{},Le=E(e,"FORBID_ATTR")?S({},e.FORBID_ATTR,lt):{},je=!!E(e,"USE_PROFILES")&&e.USE_PROFILES,De=!1!==e.ALLOW_ARIA_ATTR,ve=!1!==e.ALLOW_DATA_ATTR,Oe=e.ALLOW_UNKNOWN_PROTOCOLS||!1,xe=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,ke=e.SAFE_FOR_TEMPLATES||!1,Me=!1!==e.SAFE_FOR_XML,Ie=e.WHOLE_DOCUMENT||!1,Fe=e.RETURN_DOM||!1,He=e.RETURN_DOM_FRAGMENT||!1,ze=e.RETURN_TRUSTED_TYPE||!1,Pe=e.FORCE_BODY||!1,Be=!1!==e.SANITIZE_DOM,We=e.SANITIZE_NAMED_PROPS||!1,Ge=!1!==e.KEEP_CONTENT,Ye=e.IN_PLACE||!1,Ae=e.ALLOWED_URI_REGEXP||Y,tt=e.NAMESPACE||et,we=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&ut(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(we.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&ut(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(we.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(we.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ke&&(ve=!1),He&&(Fe=!0),je&&(Ne=S({},M),Se=[],!0===je.html&&(S(Ne,L),S(Se,I)),!0===je.svg&&(S(Ne,D),S(Se,U),S(Se,F)),!0===je.svgFilters&&(S(Ne,v),S(Se,U),S(Se,F)),!0===je.mathMl&&(S(Ne,x),S(Se,P),S(Se,F))),e.ADD_TAGS&&(Ne===be&&(Ne=w(Ne)),S(Ne,e.ADD_TAGS,lt)),e.ADD_ATTR&&(Se===Re&&(Se=w(Se)),S(Se,e.ADD_ATTR,lt)),e.ADD_URI_SAFE_ATTR&&S(Ve,e.ADD_URI_SAFE_ATTR,lt),e.FORBID_CONTENTS&&(Xe===qe&&(Xe=w(Xe)),S(Xe,e.FORBID_CONTENTS,lt)),Ge&&(Ne["#text"]=!0),Ie&&S(Ne,["html","head","body"]),Ne.table&&(S(Ne,["tbody"]),delete Ce.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw A('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw A('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ie=e.TRUSTED_TYPES_POLICY,ae=ie.createHTML("")}else void 0===ie&&(ie=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(G,c)),null!==ie&&"string"==typeof ae&&(ae=ie.createHTML(""));i&&i(e),ct=e}},pt=S({},["mi","mo","mn","ms","mtext"]),ft=S({},["foreignobject","annotation-xml"]),dt=S({},["title","style","font","a","script"]),ht=S({},[...D,...v,...O]),gt=S({},[...x,...k]),Tt=function(e){p(o.removed,{element:e});try{re(e).removeChild(e)}catch(t){$(e)}},yt=function(e,t){try{p(o.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){p(o.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Se[e])if(Fe||He)try{Tt(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},Et=function(e){let t=null,n=null;if(Pe)e=""+e;else{const t=h(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===it&&tt===et&&(e=''+e+"");const o=ie?ie.createHTML(e):e;if(tt===et)try{t=(new W).parseFromString(o,it)}catch(e){}if(!t||!t.documentElement){t=le.createDocument(tt,"template",null);try{t.documentElement.innerHTML=nt?ae:o}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),tt===et?ue.call(t,Ie?"html":"body")[0]:Ie?t.documentElement:i},_t=function(e){return ce.call(e.ownerDocument||e,e,H.SHOW_ELEMENT|H.SHOW_COMMENT|H.SHOW_TEXT|H.SHOW_PROCESSING_INSTRUCTION|H.SHOW_CDATA_SECTION,null)},At=function(e){return e instanceof B&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof z)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Nt=function(e){return"function"==typeof b&&e instanceof b},bt=function(e,t,n){pe[e]&&u(pe[e],(e=>{e.call(o,t,n,ct)}))},St=function(e){let t=null;if(bt("beforeSanitizeElements",e,null),At(e))return Tt(e),!0;const n=lt(e.nodeName);if(bt("uponSanitizeElement",e,{tagName:n,allowedTags:Ne}),e.hasChildNodes()&&!Nt(e.firstElementChild)&&_(/<[/\w]/g,e.innerHTML)&&_(/<[/\w]/g,e.textContent))return Tt(e),!0;if(e.nodeType===J)return Tt(e),!0;if(Me&&e.nodeType===Q&&_(/<[/\w]/g,e.data))return Tt(e),!0;if(!Ne[n]||Ce[n]){if(!Ce[n]&&wt(n)){if(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,n))return!1;if(we.tagNameCheck instanceof Function&&we.tagNameCheck(n))return!1}if(Ge&&!Xe[n]){const t=re(e)||e.parentNode,n=oe(e)||e.childNodes;if(n&&t){for(let o=n.length-1;o>=0;--o){const r=X(n[o],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,ne(e))}}}return Tt(e),!0}return e instanceof R&&!function(e){let t=re(e);t&&t.tagName||(t={namespaceURI:tt,tagName:"template"});const n=f(e.tagName),o=f(t.tagName);return!!ot[e.namespaceURI]&&(e.namespaceURI===Qe?t.namespaceURI===et?"svg"===n:t.namespaceURI===Je?"svg"===n&&("annotation-xml"===o||pt[o]):Boolean(ht[n]):e.namespaceURI===Je?t.namespaceURI===et?"math"===n:t.namespaceURI===Qe?"math"===n&&ft[o]:Boolean(gt[n]):e.namespaceURI===et?!(t.namespaceURI===Qe&&!ft[o])&&!(t.namespaceURI===Je&&!pt[o])&&!gt[n]&&(dt[n]||!ht[n]):!("application/xhtml+xml"!==it||!ot[e.namespaceURI]))}(e)?(Tt(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!_(/<\/no(script|embed|frames)/i,e.innerHTML)?(ke&&e.nodeType===Z&&(t=e.textContent,u([fe,de,he],(e=>{t=g(t,e," ")})),e.textContent!==t&&(p(o.removed,{element:e.cloneNode()}),e.textContent=t)),bt("afterSanitizeElements",e,null),!1):(Tt(e),!0)},Rt=function(e,t,n){if(Be&&("id"===t||"name"===t)&&(n in r||n in st))return!1;if(ve&&!Le[t]&&_(ge,t));else if(De&&_(Te,t));else if(!Se[t]||Le[t]){if(!(wt(e)&&(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,e)||we.tagNameCheck instanceof Function&&we.tagNameCheck(e))&&(we.attributeNameCheck instanceof RegExp&&_(we.attributeNameCheck,t)||we.attributeNameCheck instanceof Function&&we.attributeNameCheck(t))||"is"===t&&we.allowCustomizedBuiltInElements&&(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,n)||we.tagNameCheck instanceof Function&&we.tagNameCheck(n))))return!1}else if(Ve[t]);else if(_(Ae,g(n,Ee,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==T(n,"data:")||!$e[e]){if(Oe&&!_(ye,g(n,Ee,"")));else if(n)return!1}else;return!0},wt=function(e){return"annotation-xml"!==e&&h(e,_e)},Ct=function(e){bt("beforeSanitizeAttributes",e,null);const{attributes:t}=e;if(!t)return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Se};let r=t.length;for(;r--;){const i=t[r],{name:a,namespaceURI:l,value:c}=i,s=lt(a);let p="value"===a?c:y(c);if(n.attrName=s,n.attrValue=p,n.keepAttr=!0,n.forceKeepAttr=void 0,bt("uponSanitizeAttribute",e,n),p=n.attrValue,Me&&_(/((--!?|])>)|<\/(style|title)/i,p)){yt(a,e);continue}if(n.forceKeepAttr)continue;if(yt(a,e),!n.keepAttr)continue;if(!xe&&_(/\/>/i,p)){yt(a,e);continue}ke&&u([fe,de,he],(e=>{p=g(p,e," ")}));const f=lt(e.nodeName);if(Rt(f,s,p)){if(!We||"id"!==s&&"name"!==s||(yt(a,e),p="user-content-"+p),ie&&"object"==typeof G&&"function"==typeof G.getAttributeType)if(l);else switch(G.getAttributeType(f,s)){case"TrustedHTML":p=ie.createHTML(p);break;case"TrustedScriptURL":p=ie.createScriptURL(p)}try{l?e.setAttributeNS(l,a,p):e.setAttribute(a,p),At(e)?Tt(e):m(o.removed)}catch(e){}}}bt("afterSanitizeAttributes",e,null)},Lt=function e(t){let n=null;const o=_t(t);for(bt("beforeSanitizeShadowDOM",t,null);n=o.nextNode();)bt("uponSanitizeShadowNode",n,null),St(n)||(n.content instanceof s&&e(n.content),Ct(n));bt("afterSanitizeShadowDOM",t,null)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,i=null,l=null;if(nt=!e,nt&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Nt(e)){if("function"!=typeof e.toString)throw A("toString is not a function");if("string"!=typeof(e=e.toString()))throw A("dirty is not a string, aborting")}if(!o.isSupported)return e;if(Ue||mt(t),o.removed=[],"string"==typeof e&&(Ye=!1),Ye){if(e.nodeName){const t=lt(e.nodeName);if(!Ne[t]||Ce[t])throw A("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof b)n=Et("\x3c!----\x3e"),r=n.ownerDocument.importNode(e,!0),r.nodeType===V&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!Fe&&!ke&&!Ie&&-1===e.indexOf("<"))return ie&&ze?ie.createHTML(e):e;if(n=Et(e),!n)return Fe?null:ze?ae:""}n&&Pe&&Tt(n.firstChild);const c=_t(Ye?e:n);for(;i=c.nextNode();)St(i)||(i.content instanceof s&&Lt(i.content),Ct(i));if(Ye)return e;if(Fe){if(He)for(l=se.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(Se.shadowroot||Se.shadowrootmode)&&(l=me.call(a,l,!0)),l}let m=Ie?n.outerHTML:n.innerHTML;return Ie&&Ne["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&_(q,n.ownerDocument.doctype.name)&&(m="\n"+m),ke&&u([fe,de,he],(e=>{m=g(m,e," ")})),ie&&ze?ie.createHTML(m):m},o.setConfig=function(){mt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Ue=!0},o.clearConfig=function(){ct=null,Ue=!1},o.isValidAttribute=function(e,t,n){ct||mt({});const o=lt(e),r=lt(t);return Rt(o,r,n)},o.addHook=function(e,t){"function"==typeof t&&(pe[e]=pe[e]||[],p(pe[e],t))},o.removeHook=function(e){if(pe[e])return m(pe[e])},o.removeHooks=function(e){pe[e]&&(pe[e]=[])},o.removeAllHooks=function(){pe={}},o}();return ne})); +//# sourceMappingURL=purify.min.js.map diff --git a/appinventor/lib/linkedom/linkedom.js b/appinventor/lib/linkedom/linkedom.js new file mode 100644 index 00000000000..9a14a3728cc --- /dev/null +++ b/appinventor/lib/linkedom/linkedom.js @@ -0,0 +1,18 @@ +const xt=Symbol("changed"),$e=Symbol("classList"),Z=Symbol("CustomElements"),yt=Symbol("content"),fu=Symbol("dataset"),ke=Symbol("doctype"),bu=Symbol("DOMParser"),m=Symbol("end"),ut=Symbol("EventTarget"),Ct=Symbol("globals"),Y=Symbol("image"),Ve=Symbol("mime"),ye=Symbol("MutationObserver"),p=Symbol("next"),Hs=Symbol("ownerElement"),D=Symbol("prev"),H=Symbol("private"),Ue=Symbol("sheet"),G=Symbol("start"),pu=Symbol("style"),st=Symbol("upgrade"),R=Symbol("value");var Bs=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(t=>t.charCodeAt(0))),$s=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(t=>t.charCodeAt(0))),gu;const Ta=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),mu=(gu=String.fromCodePoint)!==null&&gu!==void 0?gu:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|t&1023),e+=String.fromCharCode(t),e};function Na(t){var e;return t>=55296&&t<=57343||t>1114111?65533:(e=Ta.get(t))!==null&&e!==void 0?e:t}var O;(function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"})(O||(O={}));const Aa=32;var Ce;(function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"})(Ce||(Ce={}));function Su(t){return t>=O.ZERO&&t<=O.NINE}function Ra(t){return t>=O.UPPER_A&&t<=O.UPPER_F||t>=O.LOWER_A&&t<=O.LOWER_F}function Da(t){return t>=O.UPPER_A&&t<=O.UPPER_Z||t>=O.LOWER_A&&t<=O.LOWER_Z||Su(t)}function ka(t){return t===O.EQUALS||Da(t)}var _;(function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"})(_||(_={}));var re;(function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"})(re||(re={}));class Vs{constructor(e,u,s){this.decodeTree=e,this.emitCodePoint=u,this.errors=s,this.state=_.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=re.Strict}startEntity(e){this.decodeMode=e,this.state=_.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(e,u){switch(this.state){case _.EntityStart:return e.charCodeAt(u)===O.NUM?(this.state=_.NumericStart,this.consumed+=1,this.stateNumericStart(e,u+1)):(this.state=_.NamedEntity,this.stateNamedEntity(e,u));case _.NumericStart:return this.stateNumericStart(e,u);case _.NumericDecimal:return this.stateNumericDecimal(e,u);case _.NumericHex:return this.stateNumericHex(e,u);case _.NamedEntity:return this.stateNamedEntity(e,u)}}stateNumericStart(e,u){return u>=e.length?-1:(e.charCodeAt(u)|Aa)===O.LOWER_X?(this.state=_.NumericHex,this.consumed+=1,this.stateNumericHex(e,u+1)):(this.state=_.NumericDecimal,this.stateNumericDecimal(e,u))}addToNumericResult(e,u,s,n){if(u!==s){const r=s-u;this.result=this.result*Math.pow(n,r)+parseInt(e.substr(u,r),n),this.consumed+=r}}stateNumericHex(e,u){const s=u;for(;u>14;for(;u>14,r!==0){if(i===O.SEMI)return this.emitNamedEntityData(this.treeIndex,r,this.consumed+this.excess);this.decodeMode!==re.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var e;const{result:u,decodeTree:s}=this,n=(s[u]&Ce.VALUE_LENGTH)>>14;return this.emitNamedEntityData(u,n,this.consumed),(e=this.errors)===null||e===void 0||e.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,u,s){const{decodeTree:n}=this;return this.emitCodePoint(u===1?n[e]&~Ce.VALUE_LENGTH:n[e+1],s),u===3&&this.emitCodePoint(n[e+2],s),s}end(){var e;switch(this.state){case _.NamedEntity:return this.result!==0&&(this.decodeMode!==re.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case _.NumericDecimal:return this.emitNumericEntity(0,2);case _.NumericHex:return this.emitNumericEntity(0,3);case _.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case _.EntityStart:return 0}}}function Us(t){let e="";const u=new Vs(t,s=>e+=mu(s));return function(n,r){let i=0,a=0;for(;(a=n.indexOf("&",a))>=0;){e+=n.slice(i,a),u.startEntity(r);const c=u.write(n,a+1);if(c<0){i=a+u.end();break}i=a+c,a=c===0?i+1:i}const o=e+n.slice(i);return e="",o}}function La(t,e,u,s){const n=(e&Ce.BRANCH_LENGTH)>>7,r=e&Ce.JUMP_TABLE;if(n===0)return r!==0&&s===r?u:-1;if(r){const o=s-r;return o<0||o>=n?-1:t[u+o]-1}let i=u,a=i+n-1;for(;i<=a;){const o=i+a>>>1,c=t[o];if(cs)a=o-1;else return t[o+n]}return-1}Us(Bs),Us($s);var x;(function(t){t[t.Tab=9]="Tab",t[t.NewLine=10]="NewLine",t[t.FormFeed=12]="FormFeed",t[t.CarriageReturn=13]="CarriageReturn",t[t.Space=32]="Space",t[t.ExclamationMark=33]="ExclamationMark",t[t.Number=35]="Number",t[t.Amp=38]="Amp",t[t.SingleQuote=39]="SingleQuote",t[t.DoubleQuote=34]="DoubleQuote",t[t.Dash=45]="Dash",t[t.Slash=47]="Slash",t[t.Zero=48]="Zero",t[t.Nine=57]="Nine",t[t.Semi=59]="Semi",t[t.Lt=60]="Lt",t[t.Eq=61]="Eq",t[t.Gt=62]="Gt",t[t.Questionmark=63]="Questionmark",t[t.UpperA=65]="UpperA",t[t.LowerA=97]="LowerA",t[t.UpperF=70]="UpperF",t[t.LowerF=102]="LowerF",t[t.UpperZ=90]="UpperZ",t[t.LowerZ=122]="LowerZ",t[t.LowerX=120]="LowerX",t[t.OpeningSquareBracket=91]="OpeningSquareBracket"})(x||(x={}));var h;(function(t){t[t.Text=1]="Text",t[t.BeforeTagName=2]="BeforeTagName",t[t.InTagName=3]="InTagName",t[t.InSelfClosingTag=4]="InSelfClosingTag",t[t.BeforeClosingTagName=5]="BeforeClosingTagName",t[t.InClosingTagName=6]="InClosingTagName",t[t.AfterClosingTagName=7]="AfterClosingTagName",t[t.BeforeAttributeName=8]="BeforeAttributeName",t[t.InAttributeName=9]="InAttributeName",t[t.AfterAttributeName=10]="AfterAttributeName",t[t.BeforeAttributeValue=11]="BeforeAttributeValue",t[t.InAttributeValueDq=12]="InAttributeValueDq",t[t.InAttributeValueSq=13]="InAttributeValueSq",t[t.InAttributeValueNq=14]="InAttributeValueNq",t[t.BeforeDeclaration=15]="BeforeDeclaration",t[t.InDeclaration=16]="InDeclaration",t[t.InProcessingInstruction=17]="InProcessingInstruction",t[t.BeforeComment=18]="BeforeComment",t[t.CDATASequence=19]="CDATASequence",t[t.InSpecialComment=20]="InSpecialComment",t[t.InCommentLike=21]="InCommentLike",t[t.BeforeSpecialS=22]="BeforeSpecialS",t[t.BeforeSpecialT=23]="BeforeSpecialT",t[t.SpecialStartSequence=24]="SpecialStartSequence",t[t.InSpecialTag=25]="InSpecialTag",t[t.InEntity=26]="InEntity"})(h||(h={}));function he(t){return t===x.Space||t===x.NewLine||t===x.Tab||t===x.FormFeed||t===x.CarriageReturn}function Et(t){return t===x.Slash||t===x.Gt||he(t)}function Ma(t){return t>=x.LowerA&&t<=x.LowerZ||t>=x.UpperA&&t<=x.UpperZ}var X;(function(t){t[t.NoValue=0]="NoValue",t[t.Unquoted=1]="Unquoted",t[t.Single=2]="Single",t[t.Double=3]="Double"})(X||(X={}));const P={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])};class Gs{constructor({xmlMode:e=!1,decodeEntities:u=!0},s){this.cbs=s,this.state=h.Text,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=h.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.xmlMode=e,this.decodeEntities=u,this.entityDecoder=new Vs(e?$s:Bs,(n,r)=>this.emitCodePoint(n,r))}reset(){this.state=h.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=h.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=h.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===x.Amp&&this.startEntity()}stateSpecialStartSequence(e){const u=this.sequenceIndex===this.currentSequence.length;if(!(u?Et(e):(e|32)===this.currentSequence[this.sequenceIndex]))this.isSpecial=!1;else if(!u){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=h.InTagName,this.stateInTagName(e)}stateInSpecialTag(e){if(this.sequenceIndex===this.currentSequence.length){if(e===x.Gt||he(e)){const u=this.index-this.currentSequence.length;if(this.sectionStart=0?(this.state=this.baseState,e===0&&(this.index=this.entityStart)):this.index=this.offset+this.buffer.length-1}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===h.Text||this.state===h.InSpecialTag&&this.sequenceIndex===0?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===h.InAttributeValueDq||this.state===h.InAttributeValueSq||this.state===h.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index=e||(this.state===h.InCommentLike?this.currentSequence===P.CdataEnd?this.cbs.oncdata(this.sectionStart,e,0):this.cbs.oncomment(this.sectionStart,e,0):this.state===h.InTagName||this.state===h.BeforeAttributeName||this.state===h.BeforeAttributeValue||this.state===h.AfterAttributeName||this.state===h.InAttributeName||this.state===h.InAttributeValueSq||this.state===h.InAttributeValueDq||this.state===h.InAttributeValueNq||this.state===h.InClosingTagName||this.cbs.ontext(this.sectionStart,e))}emitCodePoint(e,u){this.baseState!==h.Text&&this.baseState!==h.InSpecialTag?(this.sectionStart0&&i.has(this.stack[0]);){const a=this.stack.shift();(s=(u=this.cbs).onclosetag)===null||s===void 0||s.call(u,a,!0)}this.isVoidElement(e)||(this.stack.unshift(e),this.htmlMode&&(Ks.has(e)?this.foreignContext.unshift(!0):Js.has(e)&&this.foreignContext.unshift(!1))),(r=(n=this.cbs).onopentagname)===null||r===void 0||r.call(n,e),this.cbs.onopentag&&(this.attribs={})}endOpenTag(e){var u,s;this.startIndex=this.openTagStart,this.attribs&&((s=(u=this.cbs).onopentag)===null||s===void 0||s.call(u,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1}onclosetag(e,u){var s,n,r,i,a,o,c,d;this.endIndex=u;let b=this.getSlice(e,u);if(this.lowerCaseTagNames&&(b=b.toLowerCase()),this.htmlMode&&(Ks.has(b)||Js.has(b))&&this.foreignContext.shift(),this.isVoidElement(b))this.htmlMode&&b==="br"&&((i=(r=this.cbs).onopentagname)===null||i===void 0||i.call(r,"br"),(o=(a=this.cbs).onopentag)===null||o===void 0||o.call(a,"br",{},!0),(d=(c=this.cbs).onclosetag)===null||d===void 0||d.call(c,"br",!1));else{const S=this.stack.indexOf(b);if(S!==-1)for(let y=0;y<=S;y++){const w=this.stack.shift();(n=(s=this.cbs).onclosetag)===null||n===void 0||n.call(s,w,y!==S)}else this.htmlMode&&b==="p"&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=u+1}onselfclosingtag(e){this.endIndex=e,this.recognizeSelfClosing||this.foreignContext[0]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)}closeCurrentTag(e){var u,s;const n=this.tagname;this.endOpenTag(e),this.stack[0]===n&&((s=(u=this.cbs).onclosetag)===null||s===void 0||s.call(u,n,!e),this.stack.shift())}onattribname(e,u){this.startIndex=e;const s=this.getSlice(e,u);this.attribname=this.lowerCaseAttributeNames?s.toLowerCase():s}onattribdata(e,u){this.attribvalue+=this.getSlice(e,u)}onattribentity(e){this.attribvalue+=mu(e)}onattribend(e,u){var s,n;this.endIndex=u,(n=(s=this.cbs).onattribute)===null||n===void 0||n.call(s,this.attribname,this.attribvalue,e===X.Double?'"':e===X.Single?"'":e===X.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(e){const u=e.search(_a);let s=u<0?e:e.substr(0,u);return this.lowerCaseTagNames&&(s=s.toLowerCase()),s}ondeclaration(e,u){this.endIndex=u;const s=this.getSlice(e,u);if(this.cbs.onprocessinginstruction){const n=this.getInstructionName(s);this.cbs.onprocessinginstruction(`!${n}`,`!${s}`)}this.startIndex=u+1}onprocessinginstruction(e,u){this.endIndex=u;const s=this.getSlice(e,u);if(this.cbs.onprocessinginstruction){const n=this.getInstructionName(s);this.cbs.onprocessinginstruction(`?${n}`,`?${s}`)}this.startIndex=u+1}oncomment(e,u,s){var n,r,i,a;this.endIndex=u,(r=(n=this.cbs).oncomment)===null||r===void 0||r.call(n,this.getSlice(e,u-s)),(a=(i=this.cbs).oncommentend)===null||a===void 0||a.call(i),this.startIndex=u+1}oncdata(e,u,s){var n,r,i,a,o,c,d,b,S,y;this.endIndex=u;const w=this.getSlice(e,u-s);!this.htmlMode||this.options.recognizeCDATA?((r=(n=this.cbs).oncdatastart)===null||r===void 0||r.call(n),(a=(i=this.cbs).ontext)===null||a===void 0||a.call(i,w),(c=(o=this.cbs).oncdataend)===null||c===void 0||c.call(o)):((b=(d=this.cbs).oncomment)===null||b===void 0||b.call(d,`[CDATA[${w}]]`),(y=(S=this.cbs).oncommentend)===null||y===void 0||y.call(S)),this.startIndex=u+1}onend(){var e,u;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let s=0;s=this.buffers[0].length;)this.shiftBuffer();let s=this.buffers[0].slice(e-this.bufferOffset,u-this.bufferOffset);for(;u-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),s+=this.buffers[0].slice(0,u-this.bufferOffset);return s}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(e){var u,s;if(this.ended){(s=(u=this.cbs).onerror)===null||s===void 0||s.call(u,new Error(".write() after done!"));return}this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++)}end(e){var u,s;if(this.ended){(s=(u=this.cbs).onerror)===null||s===void 0||s.call(u,new Error(".end() after done!"));return}e&&this.write(e),this.ended=!0,this.tokenizer.end()}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(e){this.children=e}}class ln extends Cu{constructor(){super(...arguments),this.type=T.CDATA}get nodeType(){return 4}}let Eu=class extends Cu{constructor(){super(...arguments),this.type=T.Root}get nodeType(){return 9}},dn=class extends Cu{constructor(e,u,s=[],n=e==="script"?T.Script:e==="style"?T.Style:T.Tag){super(s),this.name=e,this.attribs=u,this.type=n}get nodeType(){return 1}get tagName(){return this.name}set tagName(e){this.name=e}get attributes(){return Object.keys(this.attribs).map(e=>{var u,s;return{name:e,value:this.attribs[e],namespace:(u=this["x-attribsNamespace"])===null||u===void 0?void 0:u[e],prefix:(s=this["x-attribsPrefix"])===null||s===void 0?void 0:s[e]}})}};function z(t){return Qs(t)}function vt(t){return t.type===T.CDATA}function Le(t){return t.type===T.Text}function wu(t){return t.type===T.Comment}function Pa(t){return t.type===T.Directive}function hn(t){return t.type===T.Root}function Ee(t){return Object.prototype.hasOwnProperty.call(t,"children")}function fn(t,e=!1){let u;if(Le(t))u=new yu(t.data);else if(wu(t))u=new cn(t.data);else if(z(t)){const s=e?vu(t.children):[],n=new dn(t.name,{...t.attribs},s);s.forEach(r=>r.parent=n),t.namespace!=null&&(n.namespace=t.namespace),t["x-attribsNamespace"]&&(n["x-attribsNamespace"]={...t["x-attribsNamespace"]}),t["x-attribsPrefix"]&&(n["x-attribsPrefix"]={...t["x-attribsPrefix"]}),u=n}else if(vt(t)){const s=e?vu(t.children):[],n=new ln(s);s.forEach(r=>r.parent=n),u=n}else if(hn(t)){const s=e?vu(t.children):[],n=new Eu(s);s.forEach(r=>r.parent=n),t["x-mode"]&&(n["x-mode"]=t["x-mode"]),u=n}else if(Pa(t)){const s=new on(t.name,t.data);t["x-name"]!=null&&(s["x-name"]=t["x-name"],s["x-publicId"]=t["x-publicId"],s["x-systemId"]=t["x-systemId"]),u=s}else throw new Error(`Not implemented yet: ${t.type}`);return u.startIndex=t.startIndex,u.endIndex=t.endIndex,t.sourceCodeLocation!=null&&(u.sourceCodeLocation=t.sourceCodeLocation),u}function vu(t){const e=t.map(u=>fn(u,!0));for(let u=1;u$\x80-\uFFFF]/g,Fa=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),Ha=String.prototype.codePointAt!=null?(t,e)=>t.codePointAt(e):(t,e)=>(t.charCodeAt(e)&64512)===55296?(t.charCodeAt(e)-55296)*1024+t.charCodeAt(e+1)-56320+65536:t.charCodeAt(e);function gn(t){let e="",u=0,s;for(;(s=pn.exec(t))!==null;){const n=s.index,r=t.charCodeAt(n),i=Fa.get(r);i!==void 0?(e+=t.substring(u,n)+i,u=n+1):(e+=`${t.substring(u,n)}&#x${Ha(t,n).toString(16)};`,u=pn.lastIndex+=+((r&64512)===55296))}return e+t.substr(u)}function mn(t,e){return function(s){let n,r=0,i="";for(;n=t.exec(s);)r!==n.index&&(i+=s.substring(r,n.index)),i+=e.get(n[0].charCodeAt(0)),r=n.index+1;return i+s.substring(r)}}const Ba=mn(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),$a=mn(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])),Va=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(t=>[t.toLowerCase(),t])),Ua=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(t=>[t.toLowerCase(),t])),Ga=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function ja(t){return t.replace(/"/g,""")}function Wa(t,e){var u;if(!t)return;const s=((u=e.encodeEntities)!==null&&u!==void 0?u:e.decodeEntities)===!1?ja:e.xmlMode||e.encodeEntities!=="utf8"?gn:Ba;return Object.keys(t).map(n=>{var r,i;const a=(r=t[n])!==null&&r!==void 0?r:"";return e.xmlMode==="foreign"&&(n=(i=Ua.get(n))!==null&&i!==void 0?i:n),!e.emptyAttrs&&!e.xmlMode&&a===""?n:`${n}="${s(a)}"`}).join(" ")}const Sn=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);function Tu(t,e={}){const u="length"in t?t:[t];let s="";for(let n=0;n0&&(s+=Tu(t.children,e)),(e.xmlMode||!Sn.has(t.name))&&(s+=``)),s}function Za(t){return`<${t.data}>`}function Ya(t,e){var u;let s=t.data||"";return((u=e.encodeEntities)!==null&&u!==void 0?u:e.decodeEntities)!==!1&&!(!e.xmlMode&&t.parent&&Ga.has(t.parent.name))&&(s=e.xmlMode||e.encodeEntities!=="utf8"?gn(s):$a(s)),s}function Xa(t){return``}function e0(t){return``}function xn(t,e){return Tu(t,e)}function t0(t,e){return Ee(t)?t.children.map(u=>xn(u,e)).join(""):""}function Tt(t){return Array.isArray(t)?t.map(Tt).join(""):z(t)?t.name==="br"?` +`:Tt(t.children):vt(t)?Tt(t.children):Le(t)?t.data:""}function Nt(t){return Array.isArray(t)?t.map(Nt).join(""):Ee(t)&&!wu(t)?Nt(t.children):Le(t)?t.data:""}function Nu(t){return Array.isArray(t)?t.map(Nu).join(""):Ee(t)&&(t.type===T.Tag||vt(t))?Nu(t.children):Le(t)?t.data:""}function yn(t){return Ee(t)?t.children:[]}function Cn(t){return t.parent||null}function u0(t){const e=Cn(t);if(e!=null)return yn(e);const u=[t];let{prev:s,next:n}=t;for(;s!=null;)u.unshift(s),{prev:s}=s;for(;n!=null;)u.push(n),{next:n}=n;return u}function s0(t,e){var u;return(u=t.attribs)===null||u===void 0?void 0:u[e]}function n0(t,e){return t.attribs!=null&&Object.prototype.hasOwnProperty.call(t.attribs,e)&&t.attribs[e]!=null}function r0(t){return t.name}function i0(t){let{next:e}=t;for(;e!==null&&!z(e);)({next:e}=e);return e}function a0(t){let{prev:e}=t;for(;e!==null&&!z(e);)({prev:e}=e);return e}function rt(t){if(t.prev&&(t.prev.next=t.next),t.next&&(t.next.prev=t.prev),t.parent){const e=t.parent.children,u=e.lastIndexOf(t);u>=0&&e.splice(u,1)}t.next=null,t.prev=null,t.parent=null}function c0(t,e){const u=e.prev=t.prev;u&&(u.next=e);const s=e.next=t.next;s&&(s.prev=e);const n=e.parent=t.parent;if(n){const r=n.children;r[r.lastIndexOf(t)]=e,t.parent=null}}function o0(t,e){if(rt(e),e.next=null,e.parent=t,t.children.push(e)>1){const u=t.children[t.children.length-2];u.next=e,e.prev=u}else e.prev=null}function l0(t,e){rt(e);const{parent:u}=t,s=t.next;if(e.next=s,e.prev=t,t.next=e,e.parent=u,s){if(s.prev=e,u){const n=u.children;n.splice(n.lastIndexOf(s),0,e)}}else u&&u.children.push(e)}function d0(t,e){if(rt(e),e.parent=t,e.prev=null,t.children.unshift(e)!==1){const u=t.children[1];u.prev=e,e.next=u}else e.next=null}function h0(t,e){rt(e);const{parent:u}=t;if(u){const s=u.children;s.splice(s.indexOf(t),0,e)}t.prev&&(t.prev.next=e),e.parent=u,e.prev=t.prev,e.next=t,t.prev=e}function At(t,e,u=!0,s=1/0){return En(t,Array.isArray(e)?e:[e],u,s)}function En(t,e,u,s){const n=[],r=[e],i=[0];for(;;){if(i[0]>=r[0].length){if(i.length===1)return n;r.shift(),i.shift();continue}const a=r[0][i[0]++];if(t(a)&&(n.push(a),--s<=0))return n;u&&Ee(a)&&a.children.length>0&&(i.unshift(0),r.unshift(a.children))}}function f0(t,e){return e.find(t)}function Au(t,e,u=!0){let s=null;for(let n=0;n0&&(s=Au(t,r.children,!0));else continue}return s}function wn(t,e){return e.some(u=>z(u)&&(t(u)||wn(t,u.children)))}function b0(t,e){const u=[],s=[e],n=[0];for(;;){if(n[0]>=s[0].length){if(s.length===1)return u;s.shift(),n.shift();continue}const r=s[0][n[0]++];z(r)&&(t(r)&&u.push(r),r.children.length>0&&(n.unshift(0),s.unshift(r.children)))}}const Rt={tag_name(t){return typeof t=="function"?e=>z(e)&&t(e.name):t==="*"?z:e=>z(e)&&e.name===t},tag_type(t){return typeof t=="function"?e=>t(e.type):e=>e.type===t},tag_contains(t){return typeof t=="function"?e=>Le(e)&&t(e.data):e=>Le(e)&&e.data===t}};function vn(t,e){return typeof e=="function"?u=>z(u)&&e(u.attribs[t]):u=>z(u)&&u.attribs[t]===e}function p0(t,e){return u=>t(u)||e(u)}function Tn(t){const e=Object.keys(t).map(u=>{const s=t[u];return Object.prototype.hasOwnProperty.call(Rt,u)?Rt[u](s):vn(u,s)});return e.length===0?null:e.reduce(p0)}function g0(t,e){const u=Tn(t);return u?u(e):!0}function m0(t,e,u,s=1/0){const n=Tn(t);return n?At(n,e,u,s):[]}function S0(t,e,u=!0){return Array.isArray(e)||(e=[e]),Au(vn("id",t),e,u)}function je(t,e,u=!0,s=1/0){return At(Rt.tag_name(t),e,u,s)}function x0(t,e,u=!0,s=1/0){return At(Rt.tag_type(t),e,u,s)}function y0(t){let e=t.length;for(;--e>=0;){const u=t[e];if(e>0&&t.lastIndexOf(u,e-1)>=0){t.splice(e,1);continue}for(let s=u.parent;s;s=s.parent)if(t.includes(s)){t.splice(e,1);break}}return t}var Q;(function(t){t[t.DISCONNECTED=1]="DISCONNECTED",t[t.PRECEDING=2]="PRECEDING",t[t.FOLLOWING=4]="FOLLOWING",t[t.CONTAINS=8]="CONTAINS",t[t.CONTAINED_BY=16]="CONTAINED_BY"})(Q||(Q={}));function Nn(t,e){const u=[],s=[];if(t===e)return 0;let n=Ee(t)?t:t.parent;for(;n;)u.unshift(n),n=n.parent;for(n=Ee(e)?e:e.parent;n;)s.unshift(n),n=n.parent;const r=Math.min(u.length,s.length);let i=0;for(;io.indexOf(d)?a===e?Q.FOLLOWING|Q.CONTAINED_BY:Q.FOLLOWING:a===t?Q.PRECEDING|Q.CONTAINS:Q.PRECEDING}function C0(t){return t=t.filter((e,u,s)=>!s.includes(e,u+1)),t.sort((e,u)=>{const s=Nn(e,u);return s&Q.PRECEDING?-1:s&Q.FOLLOWING?1:0}),t}function Ru(t){const e=Dt(N0,t);return e?e.name==="feed"?E0(e):w0(e):null}function E0(t){var e;const u=t.children,s={type:"atom",items:je("entry",u).map(i=>{var a;const{children:o}=i,c={media:An(o)};j(c,"id","id",o),j(c,"title","title",o);const d=(a=Dt("link",o))===null||a===void 0?void 0:a.attribs.href;d&&(c.link=d);const b=we("summary",o)||we("content",o);b&&(c.description=b);const S=we("updated",o);return S&&(c.pubDate=new Date(S)),c})};j(s,"id","id",u),j(s,"title","title",u);const n=(e=Dt("link",u))===null||e===void 0?void 0:e.attribs.href;n&&(s.link=n),j(s,"description","subtitle",u);const r=we("updated",u);return r&&(s.updated=new Date(r)),j(s,"author","email",u,!0),s}function w0(t){var e,u;const s=(u=(e=Dt("channel",t.children))===null||e===void 0?void 0:e.children)!==null&&u!==void 0?u:[],n={type:t.name.substr(0,3),id:"",items:je("item",t.children).map(i=>{const{children:a}=i,o={media:An(a)};j(o,"id","guid",a),j(o,"title","title",a),j(o,"link","link",a),j(o,"description","description",a);const c=we("pubDate",a)||we("dc:date",a);return c&&(o.pubDate=new Date(c)),o})};j(n,"title","title",s),j(n,"link","link",s),j(n,"description","description",s);const r=we("lastBuildDate",s);return r&&(n.updated=new Date(r)),j(n,"author","managingEditor",s,!0),n}const v0=["url","type","lang"],T0=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];function An(t){return je("media:content",t).map(e=>{const{attribs:u}=e,s={medium:u.medium,isDefault:!!u.isDefault};for(const n of v0)u[n]&&(s[n]=u[n]);for(const n of T0)u[n]&&(s[n]=parseInt(u[n],10));return u.expression&&(s.expression=u.expression),s})}function Dt(t,e){return je(t,e,!0,1)[0]}function we(t,e,u=!1){return Nt(je(t,e,u,1)).trim()}function j(t,e,u,s,n=!1){const r=we(u,s,n);r&&(t[e]=r)}function N0(t){return t==="rss"||t==="feed"||t==="rdf:RDF"}var Du=Object.freeze({__proto__:null,get DocumentPosition(){return Q},append:l0,appendChild:o0,compareDocumentPosition:Nn,existsOne:wn,filter:At,find:En,findAll:b0,findOne:Au,findOneChild:f0,getAttributeValue:s0,getChildren:yn,getElementById:S0,getElements:m0,getElementsByTagName:je,getElementsByTagType:x0,getFeed:Ru,getInnerHTML:t0,getName:r0,getOuterHTML:xn,getParent:Cn,getSiblings:u0,getText:Tt,hasAttrib:n0,hasChildren:Ee,innerText:Nu,isCDATA:vt,isComment:wu,isDocument:hn,isTag:z,isText:Le,nextElementSibling:i0,prepend:h0,prependChild:d0,prevElementSibling:a0,removeElement:rt,removeSubsets:y0,replaceElement:c0,testElement:g0,textContent:Nt,uniqueSort:C0});function Rn(t,e){const u=new nt(void 0,e);return new wt(u,e).end(t),u.root}function Dn(t,e){return Rn(t,e).children}function A0(t,e,u){const s=new nt(n=>t(n,s.root),e,u);return new wt(s,e)}function R0(t,e,u){const s=new nt(t,e,u);return new wt(s,e)}const D0={xmlMode:!0};function k0(t,e=D0){return Ru(Dn(t,e))}var L0=Object.freeze({__proto__:null,DefaultHandler:nt,DomHandler:nt,DomUtils:Du,ElementType:qa,Parser:wt,get QuoteType(){return X},Tokenizer:Gs,createDocumentStream:A0,createDomStream:R0,getFeed:Ru,parseDOM:Dn,parseDocument:Rn,parseFeed:k0});const fe=-1,v=1,q=2,F=3,ie=4,ae=8,ve=9,Me=10,ee=11,M0=new Set(["ARTICLE","ASIDE","BLOCKQUOTE","BODY","BR","BUTTON","CANVAS","CAPTION","COL","COLGROUP","DD","DIV","DL","DT","EMBED","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","LI","UL","OL","P"]),kn=-1,Ln=1,Mn=4,In=8,On=128,I0=1,_n=2,qn=4,O0=8,_0=16,q0=32,kt="http://www.w3.org/2000/svg",{assign:P0,create:F0,defineProperties:H0,entries:B0,getOwnPropertyDescriptors:No,keys:$0,setPrototypeOf:$}=Object,Ie=String,K=t=>t.nodeType===v?t[m]:t,Te=({ownerDocument:t})=>t[Ve].ignoreCase,te=(t,e)=>{t[p]=e,e[D]=t},ku=(t,e,u)=>{te(t,e),te(K(e),u)},V0=(t,e,u,s)=>{te(t,e),te(K(u),s)},We=(t,e,u)=>{te(t,e),te(e,u)},Lu=({localName:t,ownerDocument:e})=>e[Ve].ignoreCase?t.toUpperCase():t,Pn=(t,e)=>{t&&(t[p]=e),e&&(e[D]=t)},Ne=new WeakMap;let Lt=!1;const ze=new WeakMap,Oe=new WeakMap,Mt=(t,e,u,s)=>{Lt&&Oe.has(t)&&t.attributeChangedCallback&&t.constructor.observedAttributes.includes(e)&&t.attributeChangedCallback(e,u,s)},Fn=(t,e)=>u=>{if(Oe.has(u)){const s=Oe.get(u);s.connected!==e&&u.isConnected===e&&(s.connected=e,t in u&&u[t]())}},Hn=Fn("connectedCallback",!0),Mu=t=>{if(Lt){Hn(t),Ne.has(t)&&(t=Ne.get(t).shadowRoot);let{[p]:e,[m]:u}=t;for(;e!==u;)e.nodeType===v&&Hn(e),e=e[p]}},Bn=Fn("disconnectedCallback",!1),U0=t=>{if(Lt){Bn(t),Ne.has(t)&&(t=Ne.get(t).shadowRoot);let{[p]:e,[m]:u}=t;for(;e!==u;)e.nodeType===v&&Bn(e),e=e[p]}};class G0{constructor(e){this.ownerDocument=e,this.registry=new Map,this.waiting=new Map,this.active=!1}define(e,u,s={}){const{ownerDocument:n,registry:r,waiting:i}=this;if(r.has(e))throw new Error("unable to redefine "+e);if(ze.has(u))throw new Error("unable to redefine the same class: "+u);this.active=Lt=!0;const{extends:a}=s;ze.set(u,{ownerDocument:n,options:{is:a?e:""},localName:a||e});const o=a?c=>c.localName===a&&c.getAttribute("is")===e:c=>c.localName===e;if(r.set(e,{Class:u,check:o}),i.has(e)){for(const c of i.get(e))c(u);i.delete(e)}n.querySelectorAll(a?`${a}[is="${e}"]`:e).forEach(this.upgrade,this)}upgrade(e){if(Oe.has(e))return;const{ownerDocument:u,registry:s}=this,n=e.getAttribute("is")||e.localName;if(s.has(n)){const{Class:r,check:i}=s.get(n);if(i(e)){const{attributes:a,isConnected:o}=e;for(const d of a)e.removeAttributeNode(d);const c=B0(e);for(const[d]of c)delete e[d];$(e,r.prototype),u[st]={element:e,values:c},new r(u,n),Oe.set(e,{connected:o});for(const d of a)e.setAttributeNode(d);o&&e.connectedCallback&&e.connectedCallback()}}}whenDefined(e){const{registry:u,waiting:s}=this;return new Promise(n=>{u.has(e)?n(u.get(e).Class):(s.has(e)||s.set(e,[]),s.get(e).push(n))})}get(e){const u=this.registry.get(e);return u&&u.Class}getName(e){if(ze.has(e)){const{localName:u}=ze.get(e);return u}return null}}const{Parser:j0}=L0,_e=(t,e,u)=>{const s=t[m];return e.parentNode=t,ku(s[D],e,s),u&&e.nodeType===v&&Mu(e),e},W0=(t,e,u,s,n)=>{u[R]=s,u.ownerElement=t,We(e[D],u,e),u.name==="class"&&(t.className=s),n&&Mt(t,u.name,null,s)},$n=(t,e,u)=>{const{active:s,registry:n}=t[Z];let r=t,i=null,a=!1;const o=new j0({onprocessinginstruction(c,d){c.toLowerCase()==="!doctype"&&(t.doctype=d.slice(c.length).trim())},onopentag(c,d){let b=!0;if(e){if(i)r=_e(r,t.createElementNS(kt,c),s),r.ownerSVGElement=i,b=!1;else if(c==="svg"||c==="SVG")i=t.createElementNS(kt,c),r=_e(r,i,s),b=!1;else if(s){const y=c.includes("-")?c:d.is||"";if(y&&n.has(y)){const{Class:w}=n.get(y);r=_e(r,new w,s),delete d.is,b=!1}}}b&&(r=_e(r,t.createElement(c),!1));let S=r[m];for(const y of $0(d))W0(r,S,t.createAttribute(y),d[y],s)},oncomment(c){_e(r,t.createComment(c),s)},ontext(c){a?_e(r,t.createCDATASection(c),s):_e(r,t.createTextNode(c),s)},oncdatastart(){a=!0},oncdataend(){a=!1},onclosetag(){e&&r===i&&(i=null),r=r.parentNode}},{lowerCaseAttributeNames:!1,decodeEntities:!0,xmlMode:!e});return o.write(u),o.end(),t},Ke=new Map,L=(t,e)=>{for(const u of[].concat(t))Ke.set(u,e),Ke.set(u.toUpperCase(),e)},z0=globalThis.performance,Vn=({[p]:t,[m]:e},u)=>{for(;t!==e;){switch(t.nodeType){case q:Un(t,u);break;case F:case ae:case ie:Gn(t,u);break;case v:Wn(t,u),t=K(t);break;case Me:jn(t,u);break}t=t[p]}const s=u.length-1,n=u[s];typeof n=="number"&&n<0?u[s]+=fe:u.push(fe)},Un=(t,e)=>{e.push(q,t.name);const u=t[R].trim();u&&e.push(u)},Gn=(t,e)=>{const u=t[R];u.trim()&&e.push(t.nodeType,u)},K0=(t,e)=>{e.push(t.nodeType),Vn(t,e)},jn=({name:t,publicId:e,systemId:u},s)=>{s.push(Me,t),e&&s.push(e),u&&s.push(u)},Wn=(t,e)=>{e.push(v,t.localName),Vn(t,e)},zn=(t,e,u,s,n,r)=>({type:t,target:e,addedNodes:u,removedNodes:s,attributeName:n,oldValue:r}),Kn=(t,e,u,s,n,r)=>{if(!s||s.includes(u)){const{callback:i,records:a,scheduled:o}=t;a.push(zn("attributes",e,[],[],u,n?r:void 0)),o||(t.scheduled=!0,Promise.resolve().then(()=>{t.scheduled=!1,i(a.splice(0),t)}))}},Iu=(t,e,u)=>{const{ownerDocument:s}=t,{active:n,observers:r}=s[ye];if(n){for(const i of r)for(const[a,{childList:o,subtree:c,attributes:d,attributeFilter:b,attributeOldValue:S}]of i.nodes)if(o){if(c&&(a===s||a.contains(t))||!c&&a.children.includes(t)){Kn(i,t,e,b,S,u);break}}else if(d&&a===t){Kn(i,t,e,b,S,u);break}}},it=(t,e)=>{const{ownerDocument:u}=t,{active:s,observers:n}=u[ye];if(s){for(const r of n)for(const[i,{subtree:a,childList:o,characterData:c}]of r.nodes)if(o&&(e&&(i===e||a&&i.contains(e))||!e&&(a&&(i===u||i.contains(t))||!a&&i[c?"childNodes":"children"].includes(t)))){const{callback:d,records:b,scheduled:S}=r;b.push(zn("childList",i,e?[]:[t],e?[t]:[])),S||(r.scheduled=!0,Promise.resolve().then(()=>{r.scheduled=!1,d(b.splice(0),r)}));break}}};class J0{constructor(e){const u=new Set;this.observers=u,this.active=!1,this.class=class{constructor(n){this.callback=n,this.nodes=new Map,this.records=[],this.scheduled=!1}disconnect(){this.records.splice(0),this.nodes.clear(),u.delete(this),e[ye].active=!!u.size}observe(n,r={subtree:!1,childList:!1,attributes:!1,attributeFilter:null,attributeOldValue:!1,characterData:!1}){("attributeOldValue"in r||"attributeFilter"in r)&&(r.attributes=!0),r.childList=!!r.childList,r.subtree=!!r.subtree,this.nodes.set(n,r),u.add(this),e[ye].active=!0}takeRecords(){return this.records.splice(0)}}}}const Q0=new Set(["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","class","contenteditable","controls","default","defer","disabled","draggable","formnovalidate","hidden","id","ismap","itemscope","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected","style","truespeed"]),Ou=(t,e)=>{const{[R]:u,name:s}=e;e.ownerElement=t,We(t,e,t[p]),s==="class"&&(t.className=u),Iu(t,s,null),Mt(t,s,null,u)},Jn=(t,e)=>{const{[R]:u,name:s}=e;te(e[D],e[p]),e.ownerElement=e[D]=e[p]=null,s==="class"&&(t[$e]=null),Iu(t,s,u),Mt(t,s,u,null)},N={get(t,e){return t.hasAttribute(e)},set(t,e,u){u?t.setAttribute(e,""):t.removeAttribute(e)}},Ae={get(t,e){return parseFloat(t.getAttribute(e)||0)},set(t,e,u){t.setAttribute(e,u)}},f={get(t,e){return t.getAttribute(e)||""},set(t,e,u){t.setAttribute(e,u)}},It=new WeakMap;function Z0(t,e){return typeof e=="function"?e.call(t.target,t):e.handleEvent(t),t._stopImmediatePropagationFlag}function Y0({currentTarget:t,target:e}){const u=It.get(t);if(u&&u.has(this.type)){const s=u.get(this.type);t===e?this.eventPhase=this.AT_TARGET:this.eventPhase=this.BUBBLING_PHASE,this.currentTarget=t,this.target=e;for(const[n,r]of s)if(r&&r.once&&s.delete(n),Z0(this,n))break;return delete this.currentTarget,delete this.target,this.cancelBubble}}class Ot{constructor(){It.set(this,new Map)}_getParent(){return null}addEventListener(e,u,s){const n=It.get(this);n.has(e)||n.set(e,new Map),n.get(e).set(u,s)}removeEventListener(e,u){const s=It.get(this);if(s.has(e)){const n=s.get(e);n.delete(u)&&!n.size&&s.delete(e)}}dispatchEvent(e){let u=this;for(e.eventPhase=e.CAPTURING_PHASE;u;)u.dispatchEvent&&e._path.push({currentTarget:u,target:this}),u=e.bubbles&&u._getParent&&u._getParent();return e._path.some(Y0,e),e._path=[],e.eventPhase=e.NONE,!e.defaultPrevented}}class ue extends Array{item(e){return e{let e=0;for(;t;)e++,t=t.parentNode;return e};let qe=class extends Ot{static get ELEMENT_NODE(){return v}static get ATTRIBUTE_NODE(){return q}static get TEXT_NODE(){return F}static get CDATA_SECTION_NODE(){return ie}static get COMMENT_NODE(){return ae}static get DOCUMENT_NODE(){return ve}static get DOCUMENT_FRAGMENT_NODE(){return ee}static get DOCUMENT_TYPE_NODE(){return Me}constructor(e,u,s){super(),this.ownerDocument=e,this.localName=u,this.nodeType=s,this.parentNode=null,this[p]=null,this[D]=null}get ELEMENT_NODE(){return v}get ATTRIBUTE_NODE(){return q}get TEXT_NODE(){return F}get CDATA_SECTION_NODE(){return ie}get COMMENT_NODE(){return ae}get DOCUMENT_NODE(){return ve}get DOCUMENT_FRAGMENT_NODE(){return ee}get DOCUMENT_TYPE_NODE(){return Me}get baseURI(){const e=this.nodeType===ve?this:this.ownerDocument;if(e){const u=e.querySelector("base");if(u)return u.getAttribute("href");const{location:s}=e.defaultView;if(s)return s.href}return null}get isConnected(){return!1}get nodeName(){return this.localName}get parentElement(){return null}get previousSibling(){return null}get previousElementSibling(){return null}get nextSibling(){return null}get nextElementSibling(){return null}get childNodes(){return new ue}get firstChild(){return null}get lastChild(){return null}get nodeValue(){return null}set nodeValue(e){}get textContent(){return null}set textContent(e){}normalize(){}cloneNode(){return null}contains(){return!1}insertBefore(e,u){return e}appendChild(e){return e}replaceChild(e,u){return u}removeChild(e){return e}toString(){return""}hasChildNodes(){return!!this.lastChild}isSameNode(e){return this===e}compareDocumentPosition(e){let u=0;if(this!==e){let s=Qn(this),n=Qn(e);if(sn.isEqualNode(s[r]))}}return this.toString()===e.toString()}return!1}_getParent(){return this.parentNode}getRootNode(){let e=this;for(;e.parentNode;)e=e.parentNode;return e}};const{replace:X0}="",ec=/[<>&\xA0]/g,tc={"\xA0":" ","&":"&","<":"<",">":">"},uc=t=>tc[t],_u=t=>X0.call(t,ec,uc),sc=/"/g;let Je=class xa extends qe{constructor(e,u,s=""){super(e,u,q),this.ownerElement=null,this.name=Ie(u),this[R]=Ie(s),this[xt]=!1}get value(){return this[R]}set value(e){const{[R]:u,name:s,ownerElement:n}=this;this[R]=Ie(e),this[xt]=!0,n&&(Iu(n,s,u),Mt(n,s,u,this[R]))}cloneNode(){const{ownerDocument:e,name:u,[R]:s}=this;return new xa(e,u,s)}toString(){const{name:e,[R]:u}=this;if(Q0.has(e)&&!u)return Te(this)?e:`${e}=""`;const s=(Te(this)?u:_u(u)).replace(sc,""");return`${e}="${s}"`}toJSON(){const e=[];return Un(this,e),e}};const Zn=({ownerDocument:t,parentNode:e})=>{for(;e;){if(e===t)return!0;e=e.parentNode||e.host}return!1},Yn=({parentNode:t})=>{if(t)switch(t.nodeType){case ve:case ee:return null}return t},at=({[D]:t})=>{switch(t?t.nodeType:0){case fe:return t[G];case F:case ae:case ie:return t}return null},Pe=t=>{const e=K(t)[p];return e&&(e.nodeType===fe?null:e)},qu=t=>{let e=Pe(t);for(;e&&e.nodeType!==v;)e=Pe(e);return e},Xn=t=>{let e=at(t);for(;e&&e.nodeType!==v;)e=at(e);return e},Pu=(t,e)=>{const u=t.createDocumentFragment();return u.append(...e),u},er=(t,e)=>{const{ownerDocument:u,parentNode:s}=t;s&&s.insertBefore(Pu(u,e),t)},tr=(t,e)=>{const{ownerDocument:u,parentNode:s}=t;s&&s.insertBefore(Pu(u,e),K(t)[p])},Fu=(t,e)=>{const{ownerDocument:u,parentNode:s}=t;s&&(e.includes(t)&&Fu(t,[t=t.cloneNode()]),s.insertBefore(Pu(u,e),t),t.remove())},ur=(t,e,u)=>{const{parentNode:s,nodeType:n}=e;(t||u)&&(Pn(t,u),e[D]=null,K(e)[p]=null),s&&(e.parentNode=null,it(e,s),n===v&&U0(e))};let ct=class extends qe{constructor(e,u,s,n){super(e,u,s),this[R]=Ie(n)}get isConnected(){return Zn(this)}get parentElement(){return Yn(this)}get previousSibling(){return at(this)}get nextSibling(){return Pe(this)}get previousElementSibling(){return Xn(this)}get nextElementSibling(){return qu(this)}before(...e){er(this,e)}after(...e){tr(this,e)}replaceWith(...e){Fu(this,e)}remove(){ur(this[D],this,this[p])}get data(){return this[R]}set data(e){this[R]=Ie(e),it(this,this.parentNode)}get nodeValue(){return this.data}set nodeValue(e){this.data=e}get textContent(){return this.data}set textContent(e){this.data=e}get length(){return this.data.length}substringData(e,u){return this.data.substr(e,u)}appendData(e){this.data+=e}insertData(e,u){const{data:s}=this;this.data=s.slice(0,e)+u+s.slice(e)}deleteData(e,u){const{data:s}=this;this.data=s.slice(0,e)+s.slice(e+u)}replaceData(e,u,s){const{data:n}=this;this.data=n.slice(0,e)+s+n.slice(e+u)}toJSON(){const e=[];return Gn(this,e),e}},_t=class ya extends ct{constructor(e,u=""){super(e,"#cdatasection",ie,u)}cloneNode(){const{ownerDocument:e,[R]:u}=this;return new ya(e,u)}toString(){return``}},qt=class Ca extends ct{constructor(e,u=""){super(e,"#comment",ae,u)}cloneNode(){const{ownerDocument:e,[R]:u}=this;return new Ca(e,u)}toString(){return``}};function nc(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var rc={trueFunc:function(){return!0},falseFunc:function(){return!1}},E=nc(rc),C;(function(t){t.Attribute="attribute",t.Pseudo="pseudo",t.PseudoElement="pseudo-element",t.Tag="tag",t.Universal="universal",t.Adjacent="adjacent",t.Child="child",t.Descendant="descendant",t.Parent="parent",t.Sibling="sibling",t.ColumnCombinator="column-combinator"})(C||(C={}));var M;(function(t){t.Any="any",t.Element="element",t.End="end",t.Equals="equals",t.Exists="exists",t.Hyphen="hyphen",t.Not="not",t.Start="start"})(M||(M={}));const sr=/^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,ic=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,ac=new Map([[126,M.Element],[94,M.Start],[36,M.End],[42,M.Any],[33,M.Not],[124,M.Hyphen]]),cc=new Set(["has","not","matches","is","where","host","host-context"]);function oc(t){switch(t.type){case C.Adjacent:case C.Child:case C.Descendant:case C.Parent:case C.Sibling:case C.ColumnCombinator:return!0;default:return!1}}const lc=new Set(["contains","icontains"]);function dc(t,e,u){const s=parseInt(e,16)-65536;return s!==s||u?e:s<0?String.fromCharCode(s+65536):String.fromCharCode(s>>10|55296,s&1023|56320)}function ot(t){return t.replace(ic,dc)}function Hu(t){return t===39||t===34}function nr(t){return t===32||t===9||t===10||t===12||t===13}function rr(t){const e=[],u=ir(e,`${t}`,0);if(u0&&u0&&oc(s[s.length-1]))throw new Error("Did not expect successive traversals.")}function c(S){if(s.length>0&&s[s.length-1].type===C.Descendant){s[s.length-1].type=S;return}o(),s.push({type:S})}function d(S,y){s.push({type:C.Attribute,name:S,action:y,value:n(1),namespace:null,ignoreCase:"quirks"})}function b(){if(s.length&&s[s.length-1].type===C.Descendant&&s.pop(),s.length===0)throw new Error("Empty sub-selector");t.push(s)}if(r(0),e.length===u)return u;e:for(;u=0&&s>=1)):t.type===C.Pseudo&&(t.data?t.name==="has"||t.name==="contains"?s=0:Array.isArray(t.data)?(s=Math.min(...t.data.map(n=>Math.min(...n.map(cr)))),s<0&&(s=0)):s=2:s=3),s}const bc=/[-[\]{}()*+?.,\\^$|#\s]/g;function or(t){return t.replace(bc,"\\$&")}const pc=new Set(["accept","accept-charset","align","alink","axis","bgcolor","charset","checked","clear","codetype","color","compact","declare","defer","dir","direction","disabled","enctype","face","frame","hreflang","http-equiv","lang","language","link","media","method","multiple","nohref","noresize","noshade","nowrap","readonly","rel","rev","rules","scope","scrolling","selected","shape","target","text","type","valign","valuetype","vlink"]);function Fe(t,e){return typeof t.ignoreCase=="boolean"?t.ignoreCase:t.ignoreCase==="quirks"?!!e.quirksMode:!e.xmlMode&&pc.has(t.name)}const gc={equals(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;return Fe(e,u)?(r=r.toLowerCase(),i=>{const a=s.getAttributeValue(i,n);return a!=null&&a.length===r.length&&a.toLowerCase()===r&&t(i)}):i=>s.getAttributeValue(i,n)===r&&t(i)},hyphen(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;const i=r.length;return Fe(e,u)?(r=r.toLowerCase(),function(o){const c=s.getAttributeValue(o,n);return c!=null&&(c.length===i||c.charAt(i)==="-")&&c.substr(0,i).toLowerCase()===r&&t(o)}):function(o){const c=s.getAttributeValue(o,n);return c!=null&&(c.length===i||c.charAt(i)==="-")&&c.substr(0,i)===r&&t(o)}},element(t,e,u){const{adapter:s}=u,{name:n,value:r}=e;if(/\s/.test(r))return E.falseFunc;const i=new RegExp(`(?:^|\\s)${or(r)}(?:$|\\s)`,Fe(e,u)?"i":"");return function(o){const c=s.getAttributeValue(o,n);return c!=null&&c.length>=r.length&&i.test(c)&&t(o)}},exists(t,{name:e},{adapter:u}){return s=>u.hasAttrib(s,e)&&t(s)},start(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;const i=r.length;return i===0?E.falseFunc:Fe(e,u)?(r=r.toLowerCase(),a=>{const o=s.getAttributeValue(a,n);return o!=null&&o.length>=i&&o.substr(0,i).toLowerCase()===r&&t(a)}):a=>{var o;return!!(!((o=s.getAttributeValue(a,n))===null||o===void 0)&&o.startsWith(r))&&t(a)}},end(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;const i=-r.length;return i===0?E.falseFunc:Fe(e,u)?(r=r.toLowerCase(),a=>{var o;return((o=s.getAttributeValue(a,n))===null||o===void 0?void 0:o.substr(i).toLowerCase())===r&&t(a)}):a=>{var o;return!!(!((o=s.getAttributeValue(a,n))===null||o===void 0)&&o.endsWith(r))&&t(a)}},any(t,e,u){const{adapter:s}=u,{name:n,value:r}=e;if(r==="")return E.falseFunc;if(Fe(e,u)){const i=new RegExp(or(r),"i");return function(o){const c=s.getAttributeValue(o,n);return c!=null&&c.length>=r.length&&i.test(c)&&t(o)}}return i=>{var a;return!!(!((a=s.getAttributeValue(i,n))===null||a===void 0)&&a.includes(r))&&t(i)}},not(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;return r===""?i=>!!s.getAttributeValue(i,n)&&t(i):Fe(e,u)?(r=r.toLowerCase(),i=>{const a=s.getAttributeValue(i,n);return(a==null||a.length!==r.length||a.toLowerCase()!==r)&&t(i)}):i=>s.getAttributeValue(i,n)!==r&&t(i)}},mc=new Set([9,10,12,13,32]),lr=48,Sc=57;function xc(t){if(t=t.trim().toLowerCase(),t==="even")return[2,0];if(t==="odd")return[2,1];let e=0,u=0,s=r(),n=i();if(e=lr&&t.charCodeAt(e)<=Sc;)c=c*10+(t.charCodeAt(e)-lr),e++;return e===o?null:c}function a(){for(;er<=u;if(e===0)return r=>r===u;if(e===1)return u<0?E.trueFunc:r=>r>=u;const s=Math.abs(e),n=(u%s+s)%s;return e>1?r=>r>=u&&r%s===n:r=>r<=u&&r%s===n}function Pt(t){return yc(xc(t))}function Ft(t,e){return u=>{const s=e.getParent(u);return s!=null&&e.isTag(s)&&t(u)}}const $u={contains(t,e,{adapter:u}){return function(n){return t(n)&&u.getText(n).includes(e)}},icontains(t,e,{adapter:u}){const s=e.toLowerCase();return function(r){return t(r)&&u.getText(r).toLowerCase().includes(s)}},"nth-child"(t,e,{adapter:u,equals:s}){const n=Pt(e);return n===E.falseFunc?E.falseFunc:n===E.trueFunc?Ft(t,u):function(i){const a=u.getSiblings(i);let o=0;for(let c=0;c=0&&!s(i,a[c]);c--)u.isTag(a[c])&&o++;return n(o)&&t(i)}},"nth-of-type"(t,e,{adapter:u,equals:s}){const n=Pt(e);return n===E.falseFunc?E.falseFunc:n===E.trueFunc?Ft(t,u):function(i){const a=u.getSiblings(i);let o=0;for(let c=0;c=0;c--){const d=a[c];if(s(i,d))break;u.isTag(d)&&u.getName(d)===u.getName(i)&&o++}return n(o)&&t(i)}},root(t,e,{adapter:u}){return s=>{const n=u.getParent(s);return(n==null||!u.isTag(n))&&t(s)}},scope(t,e,u,s){const{equals:n}=u;return!s||s.length===0?$u.root(t,e,u):s.length===1?r=>n(s[0],r)&&t(r):r=>s.includes(r)&&t(r)},hover:Vu("isHovered"),visited:Vu("isVisited"),active:Vu("isActive")};function Vu(t){return function(u,s,{adapter:n}){const r=n[t];return typeof r!="function"?E.falseFunc:function(a){return r(a)&&u(a)}}}const dr={empty(t,{adapter:e}){return!e.getChildren(t).some(u=>e.isTag(u)||e.getText(u)!=="")},"first-child"(t,{adapter:e,equals:u}){if(e.prevElementSibling)return e.prevElementSibling(t)==null;const s=e.getSiblings(t).find(n=>e.isTag(n));return s!=null&&u(t,s)},"last-child"(t,{adapter:e,equals:u}){const s=e.getSiblings(t);for(let n=s.length-1;n>=0;n--){if(u(t,s[n]))return!0;if(e.isTag(s[n]))break}return!1},"first-of-type"(t,{adapter:e,equals:u}){const s=e.getSiblings(t),n=e.getName(t);for(let r=0;r=0;r--){const i=s[r];if(u(t,i))return!0;if(e.isTag(i)&&e.getName(i)===n)break}return!1},"only-of-type"(t,{adapter:e,equals:u}){const s=e.getName(t);return e.getSiblings(t).every(n=>u(t,n)||!e.isTag(n)||e.getName(n)!==s)},"only-child"(t,{adapter:e,equals:u}){return e.getSiblings(t).every(s=>u(t,s)||!e.isTag(s))}};function hr(t,e,u,s){if(u===null){if(t.length>s)throw new Error(`Pseudo-class :${e} requires an argument`)}else if(t.length===s)throw new Error(`Pseudo-class :${e} doesn't have any arguments`)}const Cc={"any-link":":is(a, area, link)[href]",link:":any-link:not(:visited)",disabled:`:is( + :is(button, input, select, textarea, optgroup, option)[disabled], + optgroup[disabled] > option, + fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *) + )`,enabled:":not(:disabled)",checked:":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",required:":is(input, select, textarea)[required]",optional:":is(input, select, textarea):not([required])",selected:"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",checkbox:"[type=checkbox]",file:"[type=file]",password:"[type=password]",radio:"[type=radio]",reset:"[type=reset]",image:"[type=image]",submit:"[type=submit]",parent:":not(:empty)",header:":is(h1, h2, h3, h4, h5, h6)",button:":is(button, input[type=button])",input:":is(input, textarea, select, button)",text:"input:is(:not([type!='']), [type=text])"},fr={};function br(t,e){return t===E.falseFunc?E.falseFunc:u=>e.isTag(u)&&t(u)}function Ec(t,e){const u=e.getSiblings(t);if(u.length<=1)return[];const s=u.indexOf(t);return s<0||s===u.length-1?[]:u.slice(s+1).filter(e.isTag)}function Uu(t){return{xmlMode:!!t.xmlMode,lowerCaseAttributeNames:!!t.lowerCaseAttributeNames,lowerCaseTags:!!t.lowerCaseTags,quirksMode:!!t.quirksMode,cacheResults:!!t.cacheResults,pseudos:t.pseudos,adapter:t.adapter,equals:t.equals}}const Gu=(t,e,u,s,n)=>{const r=n(e,Uu(u),s);return r===E.trueFunc?t:r===E.falseFunc?E.falseFunc:i=>r(i)&&t(i)},ju={is:Gu,matches:Gu,where:Gu,not(t,e,u,s,n){const r=n(e,Uu(u),s);return r===E.falseFunc?t:r===E.trueFunc?E.falseFunc:i=>!r(i)&&t(i)},has(t,e,u,s,n){const{adapter:r}=u,i=Uu(u);i.relativeSelector=!0;const a=e.some(d=>d.some(Bu))?[fr]:void 0,o=n(e,i,a);if(o===E.falseFunc)return E.falseFunc;const c=br(o,r);if(a&&o!==E.trueFunc){const{shouldTestNextSiblings:d=!1}=o;return b=>{if(!t(b))return!1;a[0]=b;const S=r.getChildren(b),y=d?[...S,...Ec(b,r)]:S;return r.existsOne(c,y)}}return d=>t(d)&&r.existsOne(c,r.getChildren(d))}};function wc(t,e,u,s,n){var r;const{name:i,data:a}=e;if(Array.isArray(a)){if(!(i in ju))throw new Error(`Unknown pseudo-class :${i}(${a})`);return ju[i](t,a,u,s,n)}const o=(r=u.pseudos)===null||r===void 0?void 0:r[i],c=typeof o=="string"?o:Cc[i];if(typeof c=="string"){if(a!=null)throw new Error(`Pseudo ${i} doesn't have any arguments`);const d=rr(c);return ju.is(t,d,u,s,n)}if(typeof o=="function")return hr(o,i,a,1),d=>o(d,a)&&t(d);if(i in $u)return $u[i](t,a,u,s);if(i in dr){const d=dr[i];return hr(d,i,a,2),b=>d(b,u,a)&&t(b)}throw new Error(`Unknown pseudo-class :${i}`)}function Wu(t,e){const u=e.getParent(t);return u&&e.isTag(u)?u:null}function vc(t,e,u,s,n){const{adapter:r,equals:i}=u;switch(e.type){case C.PseudoElement:throw new Error("Pseudo-elements are not supported by css-select");case C.ColumnCombinator:throw new Error("Column combinators are not yet supported by css-select");case C.Attribute:{if(e.namespace!=null)throw new Error("Namespaced attributes are not yet supported by css-select");return(!u.xmlMode||u.lowerCaseAttributeNames)&&(e.name=e.name.toLowerCase()),gc[e.action](t,e,u)}case C.Pseudo:return wc(t,e,u,s,n);case C.Tag:{if(e.namespace!=null)throw new Error("Namespaced tag names are not yet supported by css-select");let{name:a}=e;return(!u.xmlMode||u.lowerCaseTags)&&(a=a.toLowerCase()),function(c){return r.getName(c)===a&&t(c)}}case C.Descendant:{if(u.cacheResults===!1||typeof WeakSet>"u")return function(c){let d=c;for(;d=Wu(d,r);)if(t(d))return!0;return!1};const a=new WeakSet;return function(c){let d=c;for(;d=Wu(d,r);)if(!a.has(d)){if(r.isTag(d)&&t(d))return!0;a.add(d)}return!1}}case"_flexibleDescendant":return function(o){let c=o;do if(t(c))return!0;while(c=Wu(c,r));return!1};case C.Parent:return function(o){return r.getChildren(o).some(c=>r.isTag(c)&&t(c))};case C.Child:return function(o){const c=r.getParent(o);return c!=null&&r.isTag(c)&&t(c)};case C.Sibling:return function(o){const c=r.getSiblings(o);for(let d=0;de.some(gr)))}const Nc={type:C.Descendant},Ac={type:"_flexibleDescendant"},Rc={type:C.Pseudo,name:"scope",data:null};function Dc(t,{adapter:e},u){const s=!!u?.every(n=>{const r=e.isTag(n)&&e.getParent(n);return n===fr||r&&e.isTag(r)});for(const n of t){if(!(n.length>0&&Bu(n[0])&&n[0].type!==C.Descendant))if(s&&!n.some(gr))n.unshift(Nc);else continue;n.unshift(Rc)}}function mr(t,e,u){var s;t.forEach(fc),u=(s=e.context)!==null&&s!==void 0?s:u;const n=Array.isArray(u),r=u&&(Array.isArray(u)?u:[u]);if(e.relativeSelector!==!1)Dc(t,e,r);else if(t.some(o=>o.length>0&&Bu(o[0])))throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");let i=!1;const a=t.map(o=>{if(o.length>=2){const[c,d]=o;c.type!==C.Pseudo||c.name!=="scope"||(n&&d.type===C.Descendant?o[1]=Ac:(d.type===C.Adjacent||d.type===C.Sibling)&&(i=!0))}return kc(o,e,r)}).reduce(Lc,E.falseFunc);return a.shouldTestNextSiblings=i,a}function kc(t,e,u){var s;return t.reduce((n,r)=>n===E.falseFunc?E.falseFunc:vc(n,r,e,u,mr),(s=e.rootFunc)!==null&&s!==void 0?s:E.trueFunc)}function Lc(t,e){return e===E.falseFunc||t===E.trueFunc?t:t===E.falseFunc||e===E.trueFunc?e:function(s){return t(s)||e(s)}}const Sr=(t,e)=>t===e,Mc={adapter:Du,equals:Sr};function xr(t){var e,u,s,n;const r=t??Mc;return(e=r.adapter)!==null&&e!==void 0||(r.adapter=Du),(u=r.equals)!==null&&u!==void 0||(r.equals=(n=(s=r.adapter)===null||s===void 0?void 0:s.equals)!==null&&n!==void 0?n:Sr),r}function Ic(t){return function(u,s,n){const r=xr(s);return t(u,r,n)}}const Oc=Ic(pr);function _c(t,e,u){const s=xr(u);return(typeof e=="function"?e:pr(e,s))(t)}const{isArray:qc}=Array,Ht=({nodeType:t})=>t===v,yr=(t,e)=>e.some(u=>Ht(u)&&(t(u)||yr(t,Qe(u)))),Pc=(t,e)=>e==="class"?t.classList.value:t.getAttribute(e),Qe=({childNodes:t})=>t,Fc=t=>{const{localName:e}=t;return Te(t)?e.toLowerCase():e},Hc=({parentNode:t})=>t,Bc=t=>{const{parentNode:e}=t;return e?Qe(e):t},zu=t=>qc(t)?t.map(zu).join(""):Ht(t)?zu(Qe(t)):t.nodeType===F?t.data:"",$c=(t,e)=>t.hasAttribute(e),Vc=t=>{let{length:e}=t;for(;e--;){const u=t[e];if(e&&-1{const u=[];for(const s of e)Ht(s)&&(t(s)&&u.push(s),u.push(...Cr(t,Qe(s))));return u},Er=(t,e)=>{for(let u of e)if(t(u)||(u=Er(t,Qe(u))))return u;return null},wr={isTag:Ht,existsOne:yr,getAttributeValue:Pc,getChildren:Qe,getName:Fc,getParent:Hc,getSiblings:Bc,getText:zu,hasAttrib:$c,removeSubsets:Vc,findAll:Cr,findOne:Er},Ku=(t,e)=>Oc(e,{context:e.includes(":scope")?t:void 0,xmlMode:!Te(t),adapter:wr}),Uc=(t,e)=>_c(t,e,{strict:!0,context:e.includes(":scope")?t:void 0,xmlMode:!Te(t),adapter:wr});let Ze=class Ea extends ct{constructor(e,u=""){super(e,"#text",F,u)}get wholeText(){const e=[];let{previousSibling:u,nextSibling:s}=this;for(;u&&u.nodeType===F;){e.unshift(u[R]);u=u.previousSibling}for(e.push(this[R]);s&&s.nodeType===F;){e.push(s[R]);s=s.nextSibling}return e.join("")}cloneNode(){const{ownerDocument:e,[R]:u}=this;return new Ea(e,u)}toString(){return _u(this[R])}};const Gc=t=>t instanceof qe,Ju=(t,e,u)=>{const{ownerDocument:s}=t;for(const n of u)t.insertBefore(Gc(n)?n:new Ze(s,n),e)};class vr extends qe{constructor(e,u,s){super(e,u,s),this[H]=null,this[p]=this[m]={[p]:null,[D]:this,[G]:this,nodeType:fe,ownerDocument:this.ownerDocument,parentNode:null}}get childNodes(){const e=new ue;let{firstChild:u}=this;for(;u;)e.push(u),u=Pe(u);return e}get children(){const e=new ue;let{firstElementChild:u}=this;for(;u;)e.push(u),u=qu(u);return e}get firstChild(){let{[p]:e,[m]:u}=this;for(;e.nodeType===q;)e=e[p];return e===u?null:e}get firstElementChild(){let{firstChild:e}=this;for(;e;){if(e.nodeType===v)return e;e=Pe(e)}return null}get lastChild(){const e=this[m][D];switch(e.nodeType){case fe:return e[G];case q:return null}return e===this?null:e}get lastElementChild(){let{lastChild:e}=this;for(;e;){if(e.nodeType===v)return e;e=at(e)}return null}get childElementCount(){return this.children.length}prepend(...e){Ju(this,this.firstChild,e)}append(...e){Ju(this,this[m],e)}replaceChildren(...e){let{[p]:u,[m]:s}=this;for(;u!==s&&u.nodeType===q;)u=u[p];for(;u!==s;){const n=K(u)[p];u.remove(),u=n}e.length&&Ju(this,s,e)}getElementsByClassName(e){const u=new ue;let{[p]:s,[m]:n}=this;for(;s!==n;)s.nodeType===v&&s.hasAttribute("class")&&s.classList.has(e)&&u.push(s),s=s[p];return u}getElementsByTagName(e){const u=new ue;let{[p]:s,[m]:n}=this;for(;s!==n;)s.nodeType===v&&(s.localName===e||Lu(s)===e)&&u.push(s),s=s[p];return u}querySelector(e){const u=Ku(this,e);let{[p]:s,[m]:n}=this;for(;s!==n;){if(s.nodeType===v&&u(s))return s;s=s.nodeType===v&&s.localName==="template"?s[m]:s[p]}return null}querySelectorAll(e){const u=Ku(this,e),s=new ue;let{[p]:n,[m]:r}=this;for(;n!==r;)n.nodeType===v&&u(n)&&s.push(n),n=n.nodeType===v&&n.localName==="template"?n[m]:n[p];return s}appendChild(e){return this.insertBefore(e,this[m])}contains(e){let u=e;for(;u&&u!==this;)u=u.parentNode;return u===this}insertBefore(e,u=null){if(e===u)return e;if(e===this)throw new Error("unable to append a node to itself");const s=u||this[m];switch(e.nodeType){case v:e.remove(),e.parentNode=this,ku(s[D],e,s),it(e,null),Mu(e);break;case ee:{let{[H]:n,firstChild:r,lastChild:i}=e;if(r){V0(s[D],r,i,s),te(e,e[m]),n&&n.replaceChildren();do r.parentNode=this,it(r,null),r.nodeType===v&&Mu(r);while(r!==i&&(r=Pe(r)))}break}case F:case ae:case ie:e.remove();default:e.parentNode=this,We(s[D],e,s),it(e,null);break}return e}normalize(){let{[p]:e,[m]:u}=this;for(;e!==u;){const{[p]:s,[D]:n,nodeType:r}=e;r===F&&(e[R]?n&&n.nodeType===F&&(n.textContent+=e.textContent,e.remove()):e.remove()),e=s}}removeChild(e){if(e.parentNode!==this)throw new Error("node is not a child");return e.remove(),e}replaceChild(e,u){const s=K(u)[p];return u.remove(),this.insertBefore(e,s),u}}class Qu extends vr{getElementById(e){let{[p]:u,[m]:s}=this;for(;u!==s;){if(u.nodeType===v&&u.id===e)return u;u=u[p]}return null}cloneNode(e){const{ownerDocument:u,constructor:s}=this,n=new s(u);if(e){const{[m]:r}=n;for(const i of this.childNodes)n.insertBefore(i.cloneNode(e),r)}return n}toString(){const{childNodes:e,localName:u}=this;return`<${u}>${e.join("")}`}toJSON(){const e=[];return K0(this,e),e}}let Zu=class extends Qu{constructor(e){super(e,"#document-fragment",ee)}},lt=class wa extends qe{constructor(e,u,s="",n=""){super(e,"#document-type",Me),this.name=u,this.publicId=s,this.systemId=n}cloneNode(){const{ownerDocument:e,name:u,publicId:s,systemId:n}=this;return new wa(e,u,s,n)}toString(){const{name:e,publicId:u,systemId:s}=this,n=0`}toJSON(){const e=[];return jn(this,e),e}};const Tr=t=>t.childNodes.join(""),Nr=(t,e)=>{const{ownerDocument:u}=t,{constructor:s}=u,n=new s;n[Z]=u[Z];const{childNodes:r}=$n(n,Te(t),e);t.replaceChildren(...r.map(Ar,u))};function Ar(t){switch(t.ownerDocument=this,t.nodeType){case v:case ee:t.childNodes.forEach(Ar,this);break}return t}var Bt=t=>t.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g,"$2$5-$3$6").toLowerCase();const $t=new WeakMap,Yu=t=>`data-${Bt(t)}`,jc=t=>t.slice(5).replace(/-([a-z])/g,(e,u)=>u.toUpperCase()),Wc={get(t,e){if(e in t)return $t.get(t).getAttribute(Yu(e))},set(t,e,u){return t[e]=u,$t.get(t).setAttribute(Yu(e),u),!0},deleteProperty(t,e){return e in t&&$t.get(t).removeAttribute(Yu(e)),delete t[e]}};class Rr{constructor(e){for(const{name:u,value:s}of e.attributes)/^data-/.test(u)&&(this[jc(u)]=s);return $t.set(this,e),new Proxy(this,Wc)}}$(Rr.prototype,null);const{add:zc}=Set.prototype,Dr=(t,e)=>{for(const u of e)u&&zc.call(t,u)},dt=({[Hs]:t,value:e})=>{const u=t.getAttributeNode("class");u?u.value=e:Ou(t,new Je(t.ownerDocument,"class",e))};class Kc extends Set{constructor(e){super(),this[Hs]=e;const u=e.getAttributeNode("class");u&&Dr(this,u.value.split(/\s+/))}get length(){return this.size}get value(){return[...this].join(" ")}add(...e){Dr(this,e),dt(this)}contains(e){return this.has(e)}remove(...e){for(const u of e)this.delete(u);dt(this)}toggle(e,u){if(this.has(e)){if(u)return!0;this.delete(e),dt(this)}else if(u||arguments.length===1)return super.add(e),dt(this),!0;return!1}replace(e,u){return this.has(e)?(this.delete(e),super.add(u),dt(this),!0):!1}supports(){return!0}}const Vt=new WeakMap,Xu=t=>[...t.keys()].filter(e=>e!==H),Ut=t=>{const e=Vt.get(t).getAttributeNode("style");if((!e||e[xt]||t.get(H)!==e)&&(t.clear(),e)){t.set(H,e);for(const u of e[R].split(/\s*;\s*/)){let[s,...n]=u.split(":");if(n.length>0){s=s.trim();const r=n.join(":").trim();s&&r&&t.set(s,r)}}}return e},Gt={get(t,e){return e in Jc?t[e]:(Ut(t),e==="length"?Xu(t).length:/^\d+$/.test(e)?Xu(t)[e]:t.get(Bt(e)))},set(t,e,u){if(e==="cssText")t[e]=u;else{let s=Ut(t);if(u==null?t.delete(Bt(e)):t.set(Bt(e),u),!s){const n=Vt.get(t);s=n.ownerDocument.createAttribute("style"),n.setAttributeNode(s),t.set(H,s)}s[xt]=!1,s[R]=t.toString()}return!0}};let kr=class extends Map{constructor(e){return super(),Vt.set(this,e),new Proxy(this,Gt)}get cssText(){return this.toString()}set cssText(e){Vt.get(this).setAttribute("style",e)}getPropertyValue(e){const u=this[H];return Gt.get(u,e)}setProperty(e,u){const s=this[H];Gt.set(s,e,u)}removeProperty(e){const u=this[H];Gt.set(u,e,null)}[Symbol.iterator](){const e=this[H];Ut(e);const u=Xu(e),{length:s}=u;let n=0;return{next(){const r=n===s;return{done:r,value:r?null:u[n++]}}}}get[H](){return this}toString(){const e=this[H];Ut(e);const u=[];return e.forEach(Qc,u),u.join(";")}};const{prototype:Jc}=kr;function Qc(t,e){e!==H&&this.push(`${e}:${t}`)}const Lr=3,Mr=2,Ir=1,Or=0;function Zc(t){return t.currentTarget}class Re{static get BUBBLING_PHASE(){return Lr}static get AT_TARGET(){return Mr}static get CAPTURING_PHASE(){return Ir}static get NONE(){return Or}constructor(e,u={}){this.type=e,this.bubbles=!!u.bubbles,this.cancelBubble=!1,this._stopImmediatePropagationFlag=!1,this.cancelable=!!u.cancelable,this.eventPhase=this.NONE,this.timeStamp=Date.now(),this.defaultPrevented=!1,this.originalTarget=null,this.returnValue=null,this.srcElement=null,this.target=null,this._path=[]}get BUBBLING_PHASE(){return Lr}get AT_TARGET(){return Mr}get CAPTURING_PHASE(){return Ir}get NONE(){return Or}preventDefault(){this.defaultPrevented=!0}composedPath(){return this._path.map(Zc)}stopPropagation(){this.cancelBubble=!0}stopImmediatePropagation(){this.stopPropagation(),this._stopImmediatePropagationFlag=!0}}class _r extends Array{constructor(e){super(),this.ownerElement=e}getNamedItem(e){return this.ownerElement.getAttributeNode(e)}setNamedItem(e){this.ownerElement.setAttributeNode(e),this.unshift(e)}removeNamedItem(e){const u=this.getNamedItem(e);this.ownerElement.removeAttribute(e),this.splice(this.indexOf(u),1)}item(e){return eu===e)}},qr=(t,e,u)=>{if("ownerSVGElement"in e){const s=t.createElementNS(kt,u);return s.ownerSVGElement=e.ownerSVGElement,s}return t.createElement(u)},Xc=({localName:t,ownerDocument:e})=>e[Ve].voidElements.test(t);let ht=class extends vr{constructor(e,u){super(e,u,v),this[$e]=null,this[fu]=null,this[pu]=null}get isConnected(){return Zn(this)}get parentElement(){return Yn(this)}get previousSibling(){return at(this)}get nextSibling(){return Pe(this)}get namespaceURI(){return"http://www.w3.org/1999/xhtml"}get previousElementSibling(){return Xn(this)}get nextElementSibling(){return qu(this)}before(...e){er(this,e)}after(...e){tr(this,e)}replaceWith(...e){Fu(this,e)}remove(){ur(this[D],this,this[m][p])}get id(){return f.get(this,"id")}set id(e){f.set(this,"id",e)}get className(){return this.classList.value}set className(e){const{classList:u}=this;u.clear(),u.add(...Ie(e).split(/\s+/))}get nodeName(){return Lu(this)}get tagName(){return Lu(this)}get classList(){return this[$e]||(this[$e]=new Kc(this))}get dataset(){return this[fu]||(this[fu]=new Rr(this))}getBoundingClientRect(){return{x:0,y:0,bottom:0,height:0,left:0,right:0,top:0,width:0}}get nonce(){return f.get(this,"nonce")}set nonce(e){f.set(this,"nonce",e)}get style(){return this[pu]||(this[pu]=new kr(this))}get tabIndex(){return Ae.get(this,"tabindex")||-1}set tabIndex(e){Ae.set(this,"tabindex",e)}get slot(){return f.get(this,"slot")}set slot(e){f.set(this,"slot",e)}get innerText(){const e=[];let{[p]:u,[m]:s}=this;for(;u!==s;)u.nodeType===F?e.push(u.textContent.replace(/\s+/g," ")):e.length&&u[p]!=s&&M0.has(u.tagName)&&e.push(` +`),u=u[p];return e.join("")}get textContent(){const e=[];let{[p]:u,[m]:s}=this;for(;u!==s;)u.nodeType===F&&e.push(u.textContent),u=u[p];return e.join("")}set textContent(e){this.replaceChildren(),e!=null&&e!==""&&this.appendChild(new Ze(this.ownerDocument,e))}get innerHTML(){return Tr(this)}set innerHTML(e){Nr(this,e)}get outerHTML(){return this.toString()}set outerHTML(e){const u=this.ownerDocument.createElement("");u.innerHTML=e,this.replaceWith(...u.childNodes)}get attributes(){const e=new _r(this);let u=this[p];for(;u.nodeType===q;)e.push(u),u=u[p];return new Proxy(e,Yc)}focus(){this.dispatchEvent(new Re("focus"))}getAttribute(e){if(e==="class")return this.className;const u=this.getAttributeNode(e);return u&&(Te(this)?u.value:_u(u.value))}getAttributeNode(e){let u=this[p];for(;u.nodeType===q;){if(u.name===e)return u;u=u[p]}return null}getAttributeNames(){const e=new ue;let u=this[p];for(;u.nodeType===q;)e.push(u.name),u=u[p];return e}hasAttribute(e){return!!this.getAttributeNode(e)}hasAttributes(){return this[p].nodeType===q}removeAttribute(e){e==="class"&&this[$e]&&this[$e].clear();let u=this[p];for(;u.nodeType===q;){if(u.name===e){Jn(this,u);return}u=u[p]}}removeAttributeNode(e){let u=this[p];for(;u.nodeType===q;){if(u===e){Jn(this,u);return}u=u[p]}}setAttribute(e,u){if(e==="class")this.className=u;else{const s=this.getAttributeNode(e);s?s.value=u:Ou(this,new Je(this.ownerDocument,e,u))}}setAttributeNode(e){const{name:u}=e,s=this.getAttributeNode(u);if(s!==e){s&&this.removeAttributeNode(s);const{ownerElement:n}=e;n&&n.removeAttributeNode(e),Ou(this,e)}return s}toggleAttribute(e,u){return this.hasAttribute(e)?u?!0:(this.removeAttribute(e),!1):u||arguments.length===1?(this.setAttribute(e,""),!0):!1}get shadowRoot(){if(Ne.has(this)){const{mode:e,shadowRoot:u}=Ne.get(this);if(e==="open")return u}return null}attachShadow(e){if(Ne.has(this))throw new Error("operation not supported");const u=new es(this);return Ne.set(this,{mode:e.mode,shadowRoot:u}),u}matches(e){return Uc(this,e)}closest(e){let u=this;const s=Ku(u,e);for(;u&&!s(u);)u=u.parentElement;return u}insertAdjacentElement(e,u){const{parentElement:s}=this;switch(e){case"beforebegin":if(s){s.insertBefore(u,this);break}return null;case"afterbegin":this.insertBefore(u,this.firstChild);break;case"beforeend":this.insertBefore(u,null);break;case"afterend":if(s){s.insertBefore(u,this.nextSibling);break}return null}return u}insertAdjacentHTML(e,u){const s=this.ownerDocument.createElement("template");s.innerHTML=u,this.insertAdjacentElement(e,s.content)}insertAdjacentText(e,u){const s=this.ownerDocument.createTextNode(u);this.insertAdjacentElement(e,s)}cloneNode(e=!1){const{ownerDocument:u,localName:s}=this,n=d=>{d.parentNode=i,te(a,d),a=d},r=qr(u,this,s);let i=r,a=r,{[p]:o,[m]:c}=this;for(;o!==c&&(e||o.nodeType===q);){switch(o.nodeType){case fe:te(a,i[m]),a=i[m],i=i.parentNode;break;case v:{const d=qr(u,o,o.localName);n(d),i=d;break}case q:{const d=o.cloneNode(e);d.ownerElement=i,n(d);break}case F:case ae:case ie:n(o.cloneNode(e));break}o=o[p]}return te(a,r[m]),r}toString(){const e=[],{[m]:u}=this;let s={[p]:this},n=!1;do switch(s=s[p],s.nodeType){case q:{const r=" "+s;switch(r){case" id":case" class":case" style":break;default:e.push(r)}break}case fe:{const r=s[G];n?("ownerSVGElement"in r?e.push(" />"):Xc(r)?e.push(Te(r)?">":" />"):e.push(`>`),n=!1):e.push(``);break}case v:n&&e.push(">"),s.toString!==this.toString?(e.push(s.toString()),s=s[m],n=!1):(e.push(`<${s.localName}`),n=!0);break;case F:case ae:case ie:e.push((n?">":"")+s),n=!1;break}while(s!==u);return e.join("")}toJSON(){const e=[];return Wn(this,e),e}getAttributeNS(e,u){return this.getAttribute(u)}getElementsByTagNameNS(e,u){return this.getElementsByTagName(u)}hasAttributeNS(e,u){return this.hasAttribute(u)}removeAttributeNS(e,u){this.removeAttribute(u)}setAttributeNS(e,u,s){this.setAttribute(u,s)}setAttributeNodeNS(e){return this.setAttributeNode(e)}};const ts=new WeakMap,eo={get(t,e){return t[e]},set(t,e,u){return t[e]=u,!0}};let Ye=class extends ht{constructor(e,u,s=null){super(e,u),this.ownerSVGElement=s}get className(){return ts.has(this)||ts.set(this,new Proxy({baseVal:"",animVal:""},eo)),ts.get(this)}set className(e){const{classList:u}=this;u.clear(),u.add(...Ie(e).split(/\s+/))}get namespaceURI(){return"http://www.w3.org/2000/svg"}getAttribute(e){return e==="class"?[...this.classList].join(" "):super.getAttribute(e)}setAttribute(e,u){if(e==="class")this.className=u;else if(e==="style"){const{className:s}=this;s.baseVal=s.animVal=u}super.setAttribute(e,u)}};const W=()=>{throw new TypeError("Illegal constructor")};function jt(){W()}$(jt,Je),jt.prototype=Je.prototype;function Wt(){W()}$(Wt,_t),Wt.prototype=_t.prototype;function zt(){W()}$(zt,ct),zt.prototype=ct.prototype;function Kt(){W()}$(Kt,qt),Kt.prototype=qt.prototype;function Jt(){W()}$(Jt,Zu),Jt.prototype=Zu.prototype;function Qt(){W()}$(Qt,lt),Qt.prototype=lt.prototype;function Zt(){W()}$(Zt,ht),Zt.prototype=ht.prototype;function Yt(){W()}$(Yt,qe),Yt.prototype=qe.prototype;function Xt(){W()}$(Xt,es),Xt.prototype=es.prototype;function eu(){W()}$(eu,Ze),eu.prototype=Ze.prototype;function tu(){W()}$(tu,Ye),tu.prototype=Ye.prototype;const Pr={Attr:jt,CDATASection:Wt,CharacterData:zt,Comment:Kt,DocumentFragment:Jt,DocumentType:Qt,Element:Zt,Node:Yt,ShadowRoot:Xt,Text:eu,SVGElement:tu},ft=new WeakMap,l={get(t,e){return ft.has(t)&&ft.get(t)[e]||null},set(t,e,u){ft.has(t)||ft.set(t,{});const s=ft.get(t),n=e.slice(2);s[e]&&t.removeEventListener(n,s[e],!1),(s[e]=u)&&t.addEventListener(n,u,!1)}};class g extends ht{static get observedAttributes(){return[]}constructor(e=null,u=""){super(e,u);const s=!e;let n;if(s){const{constructor:r}=this;if(!ze.has(r))throw new Error("unable to initialize this Custom Element");({ownerDocument:e,localName:u,options:n}=ze.get(r))}if(e[st]){const{element:r,values:i}=e[st];e[st]=null;for(const[a,o]of i)r[a]=o;return r}s&&(this.ownerDocument=this[m].ownerDocument=e,this.localName=u,Oe.set(this,{connected:!1}),n.is&&this.setAttribute("is",n.is))}blur(){this.dispatchEvent(new Re("blur"))}click(){const e=new Re("click",{bubbles:!0,cancelable:!0});e.button=0,this.dispatchEvent(e)}get accessKeyLabel(){const{accessKey:e}=this;return e&&`Alt+Shift+${e}`}get isContentEditable(){return this.hasAttribute("contenteditable")}get contentEditable(){return N.get(this,"contenteditable")}set contentEditable(e){N.set(this,"contenteditable",e)}get draggable(){return N.get(this,"draggable")}set draggable(e){N.set(this,"draggable",e)}get hidden(){return N.get(this,"hidden")}set hidden(e){N.set(this,"hidden",e)}get spellcheck(){return N.get(this,"spellcheck")}set spellcheck(e){N.set(this,"spellcheck",e)}get accessKey(){return f.get(this,"accesskey")}set accessKey(e){f.set(this,"accesskey",e)}get dir(){return f.get(this,"dir")}set dir(e){f.set(this,"dir",e)}get lang(){return f.get(this,"lang")}set lang(e){f.set(this,"lang",e)}get title(){return f.get(this,"title")}set title(e){f.set(this,"title",e)}get onabort(){return l.get(this,"onabort")}set onabort(e){l.set(this,"onabort",e)}get onblur(){return l.get(this,"onblur")}set onblur(e){l.set(this,"onblur",e)}get oncancel(){return l.get(this,"oncancel")}set oncancel(e){l.set(this,"oncancel",e)}get oncanplay(){return l.get(this,"oncanplay")}set oncanplay(e){l.set(this,"oncanplay",e)}get oncanplaythrough(){return l.get(this,"oncanplaythrough")}set oncanplaythrough(e){l.set(this,"oncanplaythrough",e)}get onchange(){return l.get(this,"onchange")}set onchange(e){l.set(this,"onchange",e)}get onclick(){return l.get(this,"onclick")}set onclick(e){l.set(this,"onclick",e)}get onclose(){return l.get(this,"onclose")}set onclose(e){l.set(this,"onclose",e)}get oncontextmenu(){return l.get(this,"oncontextmenu")}set oncontextmenu(e){l.set(this,"oncontextmenu",e)}get oncuechange(){return l.get(this,"oncuechange")}set oncuechange(e){l.set(this,"oncuechange",e)}get ondblclick(){return l.get(this,"ondblclick")}set ondblclick(e){l.set(this,"ondblclick",e)}get ondrag(){return l.get(this,"ondrag")}set ondrag(e){l.set(this,"ondrag",e)}get ondragend(){return l.get(this,"ondragend")}set ondragend(e){l.set(this,"ondragend",e)}get ondragenter(){return l.get(this,"ondragenter")}set ondragenter(e){l.set(this,"ondragenter",e)}get ondragleave(){return l.get(this,"ondragleave")}set ondragleave(e){l.set(this,"ondragleave",e)}get ondragover(){return l.get(this,"ondragover")}set ondragover(e){l.set(this,"ondragover",e)}get ondragstart(){return l.get(this,"ondragstart")}set ondragstart(e){l.set(this,"ondragstart",e)}get ondrop(){return l.get(this,"ondrop")}set ondrop(e){l.set(this,"ondrop",e)}get ondurationchange(){return l.get(this,"ondurationchange")}set ondurationchange(e){l.set(this,"ondurationchange",e)}get onemptied(){return l.get(this,"onemptied")}set onemptied(e){l.set(this,"onemptied",e)}get onended(){return l.get(this,"onended")}set onended(e){l.set(this,"onended",e)}get onerror(){return l.get(this,"onerror")}set onerror(e){l.set(this,"onerror",e)}get onfocus(){return l.get(this,"onfocus")}set onfocus(e){l.set(this,"onfocus",e)}get oninput(){return l.get(this,"oninput")}set oninput(e){l.set(this,"oninput",e)}get oninvalid(){return l.get(this,"oninvalid")}set oninvalid(e){l.set(this,"oninvalid",e)}get onkeydown(){return l.get(this,"onkeydown")}set onkeydown(e){l.set(this,"onkeydown",e)}get onkeypress(){return l.get(this,"onkeypress")}set onkeypress(e){l.set(this,"onkeypress",e)}get onkeyup(){return l.get(this,"onkeyup")}set onkeyup(e){l.set(this,"onkeyup",e)}get onload(){return l.get(this,"onload")}set onload(e){l.set(this,"onload",e)}get onloadeddata(){return l.get(this,"onloadeddata")}set onloadeddata(e){l.set(this,"onloadeddata",e)}get onloadedmetadata(){return l.get(this,"onloadedmetadata")}set onloadedmetadata(e){l.set(this,"onloadedmetadata",e)}get onloadstart(){return l.get(this,"onloadstart")}set onloadstart(e){l.set(this,"onloadstart",e)}get onmousedown(){return l.get(this,"onmousedown")}set onmousedown(e){l.set(this,"onmousedown",e)}get onmouseenter(){return l.get(this,"onmouseenter")}set onmouseenter(e){l.set(this,"onmouseenter",e)}get onmouseleave(){return l.get(this,"onmouseleave")}set onmouseleave(e){l.set(this,"onmouseleave",e)}get onmousemove(){return l.get(this,"onmousemove")}set onmousemove(e){l.set(this,"onmousemove",e)}get onmouseout(){return l.get(this,"onmouseout")}set onmouseout(e){l.set(this,"onmouseout",e)}get onmouseover(){return l.get(this,"onmouseover")}set onmouseover(e){l.set(this,"onmouseover",e)}get onmouseup(){return l.get(this,"onmouseup")}set onmouseup(e){l.set(this,"onmouseup",e)}get onmousewheel(){return l.get(this,"onmousewheel")}set onmousewheel(e){l.set(this,"onmousewheel",e)}get onpause(){return l.get(this,"onpause")}set onpause(e){l.set(this,"onpause",e)}get onplay(){return l.get(this,"onplay")}set onplay(e){l.set(this,"onplay",e)}get onplaying(){return l.get(this,"onplaying")}set onplaying(e){l.set(this,"onplaying",e)}get onprogress(){return l.get(this,"onprogress")}set onprogress(e){l.set(this,"onprogress",e)}get onratechange(){return l.get(this,"onratechange")}set onratechange(e){l.set(this,"onratechange",e)}get onreset(){return l.get(this,"onreset")}set onreset(e){l.set(this,"onreset",e)}get onresize(){return l.get(this,"onresize")}set onresize(e){l.set(this,"onresize",e)}get onscroll(){return l.get(this,"onscroll")}set onscroll(e){l.set(this,"onscroll",e)}get onseeked(){return l.get(this,"onseeked")}set onseeked(e){l.set(this,"onseeked",e)}get onseeking(){return l.get(this,"onseeking")}set onseeking(e){l.set(this,"onseeking",e)}get onselect(){return l.get(this,"onselect")}set onselect(e){l.set(this,"onselect",e)}get onshow(){return l.get(this,"onshow")}set onshow(e){l.set(this,"onshow",e)}get onstalled(){return l.get(this,"onstalled")}set onstalled(e){l.set(this,"onstalled",e)}get onsubmit(){return l.get(this,"onsubmit")}set onsubmit(e){l.set(this,"onsubmit",e)}get onsuspend(){return l.get(this,"onsuspend")}set onsuspend(e){l.set(this,"onsuspend",e)}get ontimeupdate(){return l.get(this,"ontimeupdate")}set ontimeupdate(e){l.set(this,"ontimeupdate",e)}get ontoggle(){return l.get(this,"ontoggle")}set ontoggle(e){l.set(this,"ontoggle",e)}get onvolumechange(){return l.get(this,"onvolumechange")}set onvolumechange(e){l.set(this,"onvolumechange",e)}get onwaiting(){return l.get(this,"onwaiting")}set onwaiting(e){l.set(this,"onwaiting",e)}get onauxclick(){return l.get(this,"onauxclick")}set onauxclick(e){l.set(this,"onauxclick",e)}get ongotpointercapture(){return l.get(this,"ongotpointercapture")}set ongotpointercapture(e){l.set(this,"ongotpointercapture",e)}get onlostpointercapture(){return l.get(this,"onlostpointercapture")}set onlostpointercapture(e){l.set(this,"onlostpointercapture",e)}get onpointercancel(){return l.get(this,"onpointercancel")}set onpointercancel(e){l.set(this,"onpointercancel",e)}get onpointerdown(){return l.get(this,"onpointerdown")}set onpointerdown(e){l.set(this,"onpointerdown",e)}get onpointerenter(){return l.get(this,"onpointerenter")}set onpointerenter(e){l.set(this,"onpointerenter",e)}get onpointerleave(){return l.get(this,"onpointerleave")}set onpointerleave(e){l.set(this,"onpointerleave",e)}get onpointermove(){return l.get(this,"onpointermove")}set onpointermove(e){l.set(this,"onpointermove",e)}get onpointerout(){return l.get(this,"onpointerout")}set onpointerout(e){l.set(this,"onpointerout",e)}get onpointerover(){return l.get(this,"onpointerover")}set onpointerover(e){l.set(this,"onpointerover",e)}get onpointerup(){return l.get(this,"onpointerup")}set onpointerup(e){l.set(this,"onpointerup",e)}}const Fr="template";class us extends g{constructor(e){super(e,Fr);const u=this.ownerDocument.createDocumentFragment();(this[yt]=u)[H]=this}get content(){if(this.hasChildNodes()&&!this[yt].hasChildNodes())for(const e of this.childNodes)this[yt].appendChild(e.cloneNode(!0));return this[yt]}}L(Fr,us);class Hr extends g{constructor(e,u="html"){super(e,u)}}const{toString:to}=g.prototype;class uu extends g{get innerHTML(){return this.textContent}set innerHTML(e){this.textContent=e}toString(){return to.call(this.cloneNode()).replace(/>${this.textContent}<`)}}const Br="script";class ss extends uu{constructor(e,u=Br){super(e,u)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get defer(){return N.get(this,"defer")}set defer(e){N.set(this,"defer",e)}get crossOrigin(){return f.get(this,"crossorigin")}set crossOrigin(e){f.set(this,"crossorigin",e)}get nomodule(){return N.get(this,"nomodule")}set nomodule(e){N.set(this,"nomodule",e)}get referrerPolicy(){return f.get(this,"referrerpolicy")}set referrerPolicy(e){f.set(this,"referrerpolicy",e)}get nonce(){return f.get(this,"nonce")}set nonce(e){f.set(this,"nonce",e)}get async(){return N.get(this,"async")}set async(e){N.set(this,"async",e)}get text(){return this.textContent}set text(e){this.textContent=e}}L(Br,ss);class $r extends g{constructor(e,u="frame"){super(e,u)}}const Vr="iframe";class ns extends g{constructor(e,u=Vr){super(e,u)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get srcdoc(){return f.get(this,"srcdoc")}set srcdoc(e){f.set(this,"srcdoc",e)}get name(){return f.get(this,"name")}set name(e){f.set(this,"name",e)}get allow(){return f.get(this,"allow")}set allow(e){f.set(this,"allow",e)}get allowFullscreen(){return N.get(this,"allowfullscreen")}set allowFullscreen(e){N.set(this,"allowfullscreen",e)}get referrerPolicy(){return f.get(this,"referrerpolicy")}set referrerPolicy(e){f.set(this,"referrerpolicy",e)}get loading(){return f.get(this,"loading")}set loading(e){f.set(this,"loading",e)}}L(Vr,ns);class Ur extends g{constructor(e,u="object"){super(e,u)}}class Gr extends g{constructor(e,u="head"){super(e,u)}}class jr extends g{constructor(e,u="body"){super(e,u)}}var rs={},is={},as={},Wr={},zr={};zr.StyleSheet=function(){this.parentStyleSheet=null},Wr.StyleSheet=zr.StyleSheet;var cs={},J={},k={};k.CSSRule=function(){this.parentRule=null,this.parentStyleSheet=null},k.CSSRule.UNKNOWN_RULE=0,k.CSSRule.STYLE_RULE=1,k.CSSRule.CHARSET_RULE=2,k.CSSRule.IMPORT_RULE=3,k.CSSRule.MEDIA_RULE=4,k.CSSRule.FONT_FACE_RULE=5,k.CSSRule.PAGE_RULE=6,k.CSSRule.KEYFRAMES_RULE=7,k.CSSRule.KEYFRAME_RULE=8,k.CSSRule.MARGIN_RULE=9,k.CSSRule.NAMESPACE_RULE=10,k.CSSRule.COUNTER_STYLE_RULE=11,k.CSSRule.SUPPORTS_RULE=12,k.CSSRule.DOCUMENT_RULE=13,k.CSSRule.FONT_FEATURE_VALUES_RULE=14,k.CSSRule.VIEWPORT_RULE=15,k.CSSRule.REGION_STYLE_RULE=16,k.CSSRule.prototype={constructor:k.CSSRule},J.CSSRule=k.CSSRule;var Kr;function su(){if(Kr)return cs;Kr=1;var t={CSSStyleDeclaration:et().CSSStyleDeclaration,CSSRule:J.CSSRule};return t.CSSStyleRule=function(){t.CSSRule.call(this),this.selectorText="",this.style=new t.CSSStyleDeclaration,this.style.parentRule=this},t.CSSStyleRule.prototype=new t.CSSRule,t.CSSStyleRule.prototype.constructor=t.CSSStyleRule,t.CSSStyleRule.prototype.type=1,Object.defineProperty(t.CSSStyleRule.prototype,"cssText",{get:function(){var e;return this.selectorText?e=this.selectorText+" {"+this.style.cssText+"}":e="",e},set:function(e){var u=t.CSSStyleRule.parse(e);this.style=u.style,this.selectorText=u.selectorText}}),t.CSSStyleRule.parse=function(e){for(var u=0,s="selector",n,r=u,i="",a={selector:!0,value:!0},o=new t.CSSStyleRule,c,d="",b;b=e.charAt(u);u++)switch(b){case" ":case" ":case"\r":case` +`:case"\f":if(a[s])switch(e.charAt(u-1)){case" ":case" ":case"\r":case` +`:case"\f":break;default:i+=" ";break}break;case'"':if(r=u+1,n=e.indexOf('"',r)+1,!n)throw'" is missing';i+=e.slice(u,n),u=n-1;break;case"'":if(r=u+1,n=e.indexOf("'",r)+1,!n)throw"' is missing";i+=e.slice(u,n),u=n-1;break;case"/":if(e.charAt(u+1)==="*"){if(u+=2,n=e.indexOf("*/",u),n===-1)throw new SyntaxError("Missing */");u=n+1}else i+=b;break;case"{":s==="selector"&&(o.selectorText=i.trim(),i="",s="name");break;case":":s==="name"?(c=i.trim(),i="",s="value"):i+=b;break;case"!":s==="value"&&e.indexOf("!important",u)===u?(d="important",u+=9):i+=b;break;case";":s==="value"?(o.style.setProperty(c,i.trim(),d),d="",i="",s="name"):i+=b;break;case"}":if(s==="value")o.style.setProperty(c,i.trim(),d),d="",i="";else{if(s==="name")break;i+=b}s="selector";break;default:i+=b;break}return o},cs.CSSStyleRule=t.CSSStyleRule,cs}var Jr;function nu(){if(Jr)return as;Jr=1;var t={StyleSheet:Wr.StyleSheet,CSSStyleRule:su().CSSStyleRule};return t.CSSStyleSheet=function(){t.StyleSheet.call(this),this.cssRules=[]},t.CSSStyleSheet.prototype=new t.StyleSheet,t.CSSStyleSheet.prototype.constructor=t.CSSStyleSheet,t.CSSStyleSheet.prototype.insertRule=function(e,u){if(u<0||u>this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");var s=t.parse(e).cssRules[0];return s.parentStyleSheet=this,this.cssRules.splice(u,0,s),u},t.CSSStyleSheet.prototype.deleteRule=function(e){if(e<0||e>=this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");this.cssRules.splice(e,1)},t.CSSStyleSheet.prototype.toString=function(){for(var e="",u=this.cssRules,s=0;sthis.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");var s=ce.parse(e).cssRules[0];return s.parentRule=this,this.cssRules.splice(u,0,s),u},ce.CSSGroupingRule.prototype.deleteRule=function(e){if(e<0||e>=this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");this.cssRules.splice(e,1)[0].parentRule=null},Xe.CSSGroupingRule=ce.CSSGroupingRule;var ds={},bt={},be={CSSRule:J.CSSRule,CSSGroupingRule:Xe.CSSGroupingRule};be.CSSConditionRule=function(){be.CSSGroupingRule.call(this),this.cssRules=[]},be.CSSConditionRule.prototype=new be.CSSGroupingRule,be.CSSConditionRule.prototype.constructor=be.CSSConditionRule,be.CSSConditionRule.prototype.conditionText="",be.CSSConditionRule.prototype.cssText="",bt.CSSConditionRule=be.CSSConditionRule;var oe={CSSRule:J.CSSRule,CSSGroupingRule:Xe.CSSGroupingRule,CSSConditionRule:bt.CSSConditionRule,MediaList:ls.MediaList};oe.CSSMediaRule=function(){oe.CSSConditionRule.call(this),this.media=new oe.MediaList},oe.CSSMediaRule.prototype=new oe.CSSConditionRule,oe.CSSMediaRule.prototype.constructor=oe.CSSMediaRule,oe.CSSMediaRule.prototype.type=4,Object.defineProperties(oe.CSSMediaRule.prototype,{conditionText:{get:function(){return this.media.mediaText},set:function(t){this.media.mediaText=t},configurable:!0,enumerable:!0},cssText:{get:function(){for(var t=[],e=0,u=this.cssRules.length;e$/,/<$/,/\&$/,/\|$/,/\^$/,/\~$/,/\?$/,/\,$/,/delete$/,/in$/,/instanceof$/,/new$/,/typeof$/,/void$/],n=s.some(function(i){return i.test(u)});if(n){var r="/";return this._parseJSString(t,e,r)}else return!1},se.CSSValueExpression.prototype._findMatchedIdx=function(t,e,u){for(var s=e,n,r=-1;;)if(n=t.indexOf(u,s+1),n===-1){n=r;break}else{var i=t.substring(e+1,n),a=i.match(/\\+$/);if(!a||a[0]%2===0)break;s=n}var o=t.indexOf(` +`,e+1);return o0;S.length>0;){if(b=S.pop(),b.constructor.name==="CSSMediaRule"||b.constructor.name==="CSSSupportsRule"){w=d,d=b,d.cssRules.push(w);break}S.length===0&&(y=!1)}y||(d.__ends=s+1,c.cssRules.push(d),d=c,b=null),i="",n="before-selector";break}break;default:switch(n){case"before-selector":n="selector",I=new t.CSSStyleRule,I.__starts=s;break;case"before-name":n="name";break;case"before-value":n="value";break;case"importRule-begin":n="importRule";break}i+=U;break}return c},is.parse=t.parse,t.CSSStyleSheet=nu().CSSStyleSheet,t.CSSStyleRule=su().CSSStyleRule,t.CSSImportRule=Zr().CSSImportRule,t.CSSGroupingRule=Xe.CSSGroupingRule,t.CSSMediaRule=ds.CSSMediaRule,t.CSSConditionRule=bt.CSSConditionRule,t.CSSSupportsRule=hs.CSSSupportsRule,t.CSSFontFaceRule=Xr().CSSFontFaceRule,t.CSSHostRule=ei.CSSHostRule,t.CSSStyleDeclaration=et().CSSStyleDeclaration,t.CSSKeyframeRule=ps().CSSKeyframeRule,t.CSSKeyframesRule=gs.CSSKeyframesRule,t.CSSValueExpression=ui.CSSValueExpression,t.CSSDocumentRule=ni.CSSDocumentRule,is}var ai;function et(){if(ai)return rs;ai=1;var t={};return t.CSSStyleDeclaration=function(){this.length=0,this.parentRule=null,this._importants={}},t.CSSStyleDeclaration.prototype={constructor:t.CSSStyleDeclaration,getPropertyValue:function(e){return this[e]||""},setProperty:function(e,u,s){if(this[e]){var n=Array.prototype.indexOf.call(this,e);n<0&&(this[this.length]=e,this.length++)}else this[this.length]=e,this.length++;this[e]=u+"",this._importants[e]=s},removeProperty:function(e){if(!(e in this))return"";var u=Array.prototype.indexOf.call(this,e);if(u<0)return"";var s=this[e];return this[e]="",Array.prototype.splice.call(this,u,1),s},getPropertyCSSValue:function(){},getPropertyPriority:function(e){return this._importants[e]||""},getPropertyShorthand:function(){},isPropertyImplicit:function(){},get cssText(){for(var e=[],u=0,s=this.length;unew so(t,e)};const{createCanvas:ro}=no,Ni="canvas";class Es extends g{constructor(e,u=Ni){super(e,u),this[Y]=ro(300,150)}get width(){return this[Y].width}set width(e){Ae.set(this,"width",e),this[Y].width=e}get height(){return this[Y].height}set height(e){Ae.set(this,"height",e),this[Y].height=e}getContext(e){return this[Y].getContext(e)}toDataURL(...e){return this[Y].toDataURL(...e)}}L(Ni,Es);class Ai extends g{constructor(e,u="legend"){super(e,u)}}const Ri="option";class ws extends g{constructor(e,u=Ri){super(e,u)}get value(){return f.get(this,"value")}set value(e){f.set(this,"value",e)}get selected(){return N.get(this,"selected")}set selected(e){const u=this.parentElement?.querySelector("option[selected]");u&&u!==this&&(u.selected=!1),N.set(this,"selected",e)}}L(Ri,ws);class Di extends g{constructor(e,u="span"){super(e,u)}}class ki extends g{constructor(e,u="meter"){super(e,u)}}class Li extends g{constructor(e,u="video"){super(e,u)}}class Mi extends g{constructor(e,u="td"){super(e,u)}}const Ii="title";class vs extends uu{constructor(e,u=Ii){super(e,u)}}L(Ii,vs);class Oi extends g{constructor(e,u="output"){super(e,u)}}class _i extends g{constructor(e,u="tr"){super(e,u)}}class qi extends g{constructor(e,u="data"){super(e,u)}}class Pi extends g{constructor(e,u="menu"){super(e,u)}}const Fi="select";class Ts extends g{constructor(e,u=Fi){super(e,u)}get options(){let e=new ue,{firstElementChild:u}=this;for(;u;)u.tagName==="OPTGROUP"?e.push(...u.children):e.push(u),u=u.nextElementSibling;return e}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}get value(){return this.querySelector("option[selected]")?.value}}L(Fi,Ts);class Hi extends g{constructor(e,u="br"){super(e,u)}}const Bi="button";class Ns extends g{constructor(e,u=Bi){super(e,u)}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}get type(){return this.getAttribute("type")}set type(e){this.setAttribute("type",e)}}L(Bi,Ns);class $i extends g{constructor(e,u="map"){super(e,u)}}class Vi extends g{constructor(e,u="optgroup"){super(e,u)}}class Ui extends g{constructor(e,u="dl"){super(e,u)}}const Gi="textarea";class As extends uu{constructor(e,u=Gi){super(e,u)}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}get placeholder(){return this.getAttribute("placeholder")}set placeholder(e){this.setAttribute("placeholder",e)}get type(){return this.getAttribute("type")}set type(e){this.setAttribute("type",e)}get value(){return this.textContent}set value(e){this.textContent=e}}L(Gi,As);class ji extends g{constructor(e,u="font"){super(e,u)}}class Wi extends g{constructor(e,u="div"){super(e,u)}}const zi="link";class Rs extends g{constructor(e,u=zi){super(e,u)}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get href(){return f.get(this,"href")}set href(e){f.set(this,"href",e)}get hreflang(){return f.get(this,"hreflang")}set hreflang(e){f.set(this,"hreflang",e)}get media(){return f.get(this,"media")}set media(e){f.set(this,"media",e)}get rel(){return f.get(this,"rel")}set rel(e){f.set(this,"rel",e)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}}L(zi,Rs);const Ki="slot";class Ds extends g{constructor(e,u=Ki){super(e,u)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}assign(){}assignedNodes(e){const u=!!this.name,s=this.getRootNode().host?.childNodes??[];let n;if(u?n=[...s].filter(r=>r.slot===this.name):n=[...s].filter(r=>!r.slot),e?.flatten){const r=[];for(let i of n)i.localName==="slot"?r.push(...i.assignedNodes({flatten:!0})):r.push(i);n=r}return n.length?n:[...this.childNodes]}assignedElements(e){const u=this.assignedNodes(e).filter(s=>s.nodeType===1);return u.length?u:[...this.children]}}L(Ki,Ds);class Ji extends g{constructor(e,u="form"){super(e,u)}}const Qi="img";class cu extends g{constructor(e,u=Qi){super(e,u)}get alt(){return f.get(this,"alt")}set alt(e){f.set(this,"alt",e)}get sizes(){return f.get(this,"sizes")}set sizes(e){f.set(this,"sizes",e)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get srcset(){return f.get(this,"srcset")}set srcset(e){f.set(this,"srcset",e)}get title(){return f.get(this,"title")}set title(e){f.set(this,"title",e)}get width(){return Ae.get(this,"width")}set width(e){Ae.set(this,"width",e)}get height(){return Ae.get(this,"height")}set height(e){Ae.set(this,"height",e)}}L(Qi,cu);class Zi extends g{constructor(e,u="pre"){super(e,u)}}class Yi extends g{constructor(e,u="ul"){super(e,u)}}const Xi="meta";class ks extends g{constructor(e,u=Xi){super(e,u)}get name(){return f.get(this,"name")}set name(e){f.set(this,"name",e)}get httpEquiv(){return f.get(this,"http-equiv")}set httpEquiv(e){f.set(this,"http-equiv",e)}get content(){return f.get(this,"content")}set content(e){f.set(this,"content",e)}get charset(){return f.get(this,"charset")}set charset(e){f.set(this,"charset",e)}get media(){return f.get(this,"media")}set media(e){f.set(this,"media",e)}}L(Xi,ks);class ea extends g{constructor(e,u="picture"){super(e,u)}}class ta extends g{constructor(e,u="area"){super(e,u)}}class ua extends g{constructor(e,u="ol"){super(e,u)}}class sa extends g{constructor(e,u="caption"){super(e,u)}}const na="a";class Ls extends g{constructor(e,u=na){super(e,u)}get href(){return encodeURI(decodeURI(f.get(this,"href")))}set href(e){f.set(this,"href",decodeURI(e))}get download(){return encodeURI(decodeURI(f.get(this,"download")))}set download(e){f.set(this,"download",decodeURI(e))}get target(){return f.get(this,"target")}set target(e){f.set(this,"target",e)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}get rel(){return f.get(this,"rel")}set rel(e){f.set(this,"rel",e)}}L(na,Ls);class ra extends g{constructor(e,u="label"){super(e,u)}}class ia extends g{constructor(e,u="unknown"){super(e,u)}}class aa extends g{constructor(e,u="mod"){super(e,u)}}class ca extends g{constructor(e,u="details"){super(e,u)}}const oa="source";class Ms extends g{constructor(e,u=oa){super(e,u)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get srcset(){return f.get(this,"srcset")}set srcset(e){f.set(this,"srcset",e)}get sizes(){return f.get(this,"sizes")}set sizes(e){f.set(this,"sizes",e)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}}L(oa,Ms);class la extends g{constructor(e,u="track"){super(e,u)}}class da extends g{constructor(e,u="marquee"){super(e,u)}}const ha={HTMLElement:g,HTMLTemplateElement:us,HTMLHtmlElement:Hr,HTMLScriptElement:ss,HTMLFrameElement:$r,HTMLIFrameElement:ns,HTMLObjectElement:Ur,HTMLHeadElement:Gr,HTMLBodyElement:jr,HTMLStyleElement:Ss,HTMLTimeElement:xs,HTMLFieldSetElement:oi,HTMLEmbedElement:li,HTMLHRElement:di,HTMLProgressElement:hi,HTMLParagraphElement:fi,HTMLTableElement:bi,HTMLFrameSetElement:pi,HTMLLIElement:gi,HTMLBaseElement:mi,HTMLDataListElement:Si,HTMLInputElement:ys,HTMLParamElement:yi,HTMLMediaElement:Ci,HTMLAudioElement:Ei,HTMLHeadingElement:Cs,HTMLDirectoryElement:vi,HTMLQuoteElement:Ti,HTMLCanvasElement:Es,HTMLLegendElement:Ai,HTMLOptionElement:ws,HTMLSpanElement:Di,HTMLMeterElement:ki,HTMLVideoElement:Li,HTMLTableCellElement:Mi,HTMLTitleElement:vs,HTMLOutputElement:Oi,HTMLTableRowElement:_i,HTMLDataElement:qi,HTMLMenuElement:Pi,HTMLSelectElement:Ts,HTMLBRElement:Hi,HTMLButtonElement:Ns,HTMLMapElement:$i,HTMLOptGroupElement:Vi,HTMLDListElement:Ui,HTMLTextAreaElement:As,HTMLFontElement:ji,HTMLDivElement:Wi,HTMLLinkElement:Rs,HTMLSlotElement:Ds,HTMLFormElement:Ji,HTMLImageElement:cu,HTMLPreElement:Zi,HTMLUListElement:Yi,HTMLMetaElement:ks,HTMLPictureElement:ea,HTMLAreaElement:ta,HTMLOListElement:ua,HTMLTableCaptionElement:sa,HTMLAnchorElement:Ls,HTMLLabelElement:ra,HTMLUnknownElement:ia,HTMLModElement:aa,HTMLDetailsElement:ca,HTMLSourceElement:Ms,HTMLTrackElement:la,HTMLMarqueeElement:da},ou={test:()=>!0},io={"text/html":{docType:"",ignoreCase:!0,voidElements:/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i},"image/svg+xml":{docType:'',ignoreCase:!1,voidElements:ou},"text/xml":{docType:'',ignoreCase:!1,voidElements:ou},"application/xml":{docType:'',ignoreCase:!1,voidElements:ou},"application/xhtml+xml":{docType:'',ignoreCase:!1,voidElements:ou}};class Is extends Re{constructor(e,u={}){super(e,u),this.detail=u.detail}}class fa extends Re{constructor(e,u={}){super(e,u),this.inputType=u.inputType,this.data=u.data,this.dataTransfer=u.dataTransfer,this.isComposing=u.isComposing||!1,this.ranges=u.ranges}}const ao=t=>class extends cu{constructor(u,s){switch(super(t),arguments.length){case 1:this.height=u,this.width=u;break;case 2:this.height=s,this.width=u;break}}},ba=({[G]:t,[m]:e},u=null)=>{Pn(t[D],e[p]);do{const s=K(t),n=s===e?s:s[p];u?u.insertBefore(t,u[m]):t.remove(),t=n}while(t!==e)};class Os{constructor(){this[G]=null,this[m]=null,this.commonAncestorContainer=null}insertNode(e){this[m].parentNode.insertBefore(e,this[G])}selectNode(e){this[G]=e,this[m]=K(e)}selectNodeContents(e){this.selectNode(e),this.commonAncestorContainer=e}surroundContents(e){e.replaceChildren(this.extractContents())}setStartBefore(e){this[G]=e}setStartAfter(e){this[G]=e.nextSibling}setEndBefore(e){this[m]=K(e.previousSibling)}setEndAfter(e){this[m]=K(e)}cloneContents(){let{[G]:e,[m]:u}=this;const s=e.ownerDocument.createDocumentFragment();for(;e!==u;)s.insertBefore(e.cloneNode(!0),s[m]),e=K(e),e!==u&&(e=e[p]);return s}deleteContents(){ba(this)}extractContents(){const e=this[G].ownerDocument.createDocumentFragment();return ba(this,e),e}createContextualFragment(e){const{commonAncestorContainer:u}=this,s="ownerSVGElement"in u,n=s?u.ownerDocument:u,r=n.createElement("template");r.innerHTML=e;let{content:i}=r;if(s){const a=[...i.childNodes];i=n.createDocumentFragment(),Object.setPrototypeOf(i,Ye.prototype),i.ownerSVGElement=n;for(const o of a)Object.setPrototypeOf(o,Ye.prototype),o.ownerSVGElement=n,i.appendChild(o)}else this.selectNode(i);return i}cloneRange(){const e=new Os;return e[G]=this[G],e[m]=this[m],e}}const co=({nodeType:t},e)=>{switch(t){case v:return e&Ln;case F:return e&Mn;case ae:return e&On;case ie:return e&In}return 0};class oo{constructor(e,u=kn){this.root=e,this.currentNode=e,this.whatToShow=u;let{[p]:s,[m]:n}=e;if(e.nodeType===ve){const{documentElement:i}=e;s=i,n=i[m]}const r=[];for(;s!==n;)co(s,u)&&r.push(s),s=s[p];this[H]={i:0,nodes:r}}nextNode(){const e=this[H];return this.currentNode=e.i{let{[p]:s,[m]:n}=e;return t.call({ownerDocument:e,[p]:s,[m]:n},u)},ga=P0({},Pr,ha,{CustomEvent:Is,Event:Re,EventTarget:Ot,InputEvent:fa,NamedNodeMap:_r,NodeList:ue}),lu=new WeakMap;let He=class extends Qu{constructor(e){super(null,"#document",ve),this[Z]={active:!1,registry:null},this[ye]={active:!1,class:null},this[Ve]=io[e],this[ke]=null,this[bu]=null,this[Ct]=null,this[Y]=null,this[st]=null}get defaultView(){return lu.has(this)||lu.set(this,new Proxy(globalThis,{set:(e,u,s)=>{switch(u){case"addEventListener":case"removeEventListener":case"dispatchEvent":this[ut][u]=s;break;default:e[u]=s;break}return!0},get:(e,u)=>{switch(u){case"addEventListener":case"removeEventListener":case"dispatchEvent":if(!this[ut]){const s=this[ut]=new Ot;s.dispatchEvent=s.dispatchEvent.bind(s),s.addEventListener=s.addEventListener.bind(s),s.removeEventListener=s.removeEventListener.bind(s)}return this[ut][u];case"document":return this;case"navigator":return{userAgent:"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36"};case"window":return lu.get(this);case"customElements":return this[Z].registry||(this[Z]=new G0(this)),this[Z];case"performance":return z0;case"DOMParser":return this[bu];case"Image":return this[Y]||(this[Y]=ao(this)),this[Y];case"MutationObserver":return this[ye].class||(this[ye]=new J0(this)),this[ye].class}return this[Ct]&&this[Ct][u]||ga[u]||e[u]}})),lu.get(this)}get doctype(){const e=this[ke];if(e)return e;const{firstChild:u}=this;return u&&u.nodeType===Me?this[ke]=u:null}set doctype(e){if(/^([a-z:]+)(\s+system|\s+public(\s+"([^"]+)")?)?(\s+"([^"]+)")?/i.test(e)){const{$1:u,$4:s,$6:n}=RegExp;this[ke]=new lt(this,u,s,n),We(this,this[ke],this[p])}}get documentElement(){return this.firstElementChild}get isConnected(){return!0}_getParent(){return this[ut]}createAttribute(e){return new Je(this,e)}createCDATASection(e){return new _t(this,e)}createComment(e){return new qt(this,e)}createDocumentFragment(){return new Zu(this)}createDocumentType(e,u,s){return new lt(this,e,u,s)}createElement(e){return new ht(this,e)}createRange(){const e=new Os;return e.commonAncestorContainer=this,e}createTextNode(e){return new Ze(this,e)}createTreeWalker(e,u=-1){return new oo(e,u)}createNodeIterator(e,u=-1){return this.createTreeWalker(e,u)}createEvent(e){const u=F0(e==="Event"?new Re(""):new Is(""));return u.initEvent=u.initCustomEvent=(s,n=!1,r=!1,i)=>{u.bubbles=!!n,H0(u,{type:{value:s},canBubble:{value:n},cancelable:{value:r},detail:{value:i}})},u}cloneNode(e=!1){const{constructor:u,[Z]:s,[ke]:n}=this,r=new u;if(r[Z]=s,e){const i=r[m],{childNodes:a}=this;for(let{length:o}=a,c=0;c{const{ownerDocument:o,nodeType:c}=a;a.ownerDocument=this,r&&o!==this&&c===v&&n.upgrade(a)};if(i(s),u)switch(s.nodeType){case v:case ee:{let{[p]:a,[m]:o}=s;for(;a!==o;)a.nodeType===v&&i(a),a=a[p];break}}return s}toString(){return this.childNodes.join("")}querySelector(e){return pa(super.querySelector,this,e)}querySelectorAll(e){return pa(super.querySelectorAll,this,e)}getElementsByTagNameNS(e,u){return this.getElementsByTagName(u)}createAttributeNS(e,u){return this.createAttribute(u)}createElementNS(e,u,s){return e===kt?new Ye(this,u,null):this.createElement(u,s)}};$(ga.Document=function(){W()},He).prototype=He.prototype;const lo=(t,e,u,s)=>{if(!e&&Ke.has(u)){const i=Ke.get(u);return new i(t,u)}const{[Z]:{active:n,registry:r}}=t;if(n){const i=e?s.is:u;if(r.has(i)){const{Class:a}=r.get(i),o=new a(t,u);return Oe.set(o,{connected:!1}),o}}return new g(t,u)};class ma extends He{constructor(){super("text/html")}get all(){const e=new ue;let{[p]:u,[m]:s}=this;for(;u!==s;){switch(u.nodeType){case v:e.push(u);break}u=u[p]}return e}get head(){const{documentElement:e}=this;let{firstElementChild:u}=e;return(!u||u.tagName!=="HEAD")&&(u=this.createElement("head"),e.prepend(u)),u}get body(){const{head:e}=this;let{nextElementSibling:u}=e;return(!u||u.tagName!=="BODY")&&(u=this.createElement("body"),e.after(u)),u}get title(){const{head:e}=this;return e.getElementsByTagName("title").at(0)?.textContent||""}set title(e){const{head:u}=this;let s=u.getElementsByTagName("title").at(0);s?s.textContent=e:u.insertBefore(this.createElement("title"),u.firstChild).textContent=e}createElement(e,u){const s=!!(u&&u.is),n=lo(this,s,e,u);return s&&n.setAttribute("is",u.is),n}}class ho extends He{constructor(){super("image/svg+xml")}toString(){return this[Ve].docType+super.toString()}}class fo extends He{constructor(){super("text/xml")}toString(){return this[Ve].docType+super.toString()}}class hu{parseFromString(e,u,s=null){let n=!1,r;return u==="text/html"?(n=!0,r=new ma):u==="image/svg+xml"?r=new ho:r=new fo,r[bu]=hu,s&&(r[Ct]=s),n&&e==="..."&&(e=""),e?$n(r,n,e):r}}const{parse:bo}=JSON,du=(t,e,u)=>{e.parentNode=t,We(u[D],e,u)},po=(t,e)=>{if(Ke.has(e)){const u=Ke.get(e);return new u(t,e)}return new g(t,e)},go=t=>{const e=typeof t=="string"?bo(t):t,{length:u}=e,s=new ma;let n=s,r=n[m],i=!1,a=0;for(;at.toJSON();class So{static get SHOW_ALL(){return kn}static get SHOW_ELEMENT(){return Ln}static get SHOW_COMMENT(){return On}static get SHOW_CDATA_SECTION(){return In}static get SHOW_TEXT(){return Mn}}const xo=(t,e=null)=>new hu().parseFromString(t,"text/html",e).defaultView;function Sa(){W()}$(Sa,He).prototype=He.prototype;export{jt as Attr,Wt as CDATASection,zt as CharacterData,Kt as Comment,Is as CustomEvent,hu as DOMParser,Sa as Document,Jt as DocumentFragment,Qt as DocumentType,Zt as Element,Re as Event,Ot as EventTarget,Pr as Facades,Ls as HTMLAnchorElement,ta as HTMLAreaElement,Ei as HTMLAudioElement,Hi as HTMLBRElement,mi as HTMLBaseElement,jr as HTMLBodyElement,Ns as HTMLButtonElement,Es as HTMLCanvasElement,ha as HTMLClasses,Ui as HTMLDListElement,qi as HTMLDataElement,Si as HTMLDataListElement,ca as HTMLDetailsElement,vi as HTMLDirectoryElement,Wi as HTMLDivElement,g as HTMLElement,li as HTMLEmbedElement,oi as HTMLFieldSetElement,ji as HTMLFontElement,Ji as HTMLFormElement,$r as HTMLFrameElement,pi as HTMLFrameSetElement,di as HTMLHRElement,Gr as HTMLHeadElement,Cs as HTMLHeadingElement,Hr as HTMLHtmlElement,ns as HTMLIFrameElement,cu as HTMLImageElement,ys as HTMLInputElement,gi as HTMLLIElement,ra as HTMLLabelElement,Ai as HTMLLegendElement,Rs as HTMLLinkElement,$i as HTMLMapElement,da as HTMLMarqueeElement,Ci as HTMLMediaElement,Pi as HTMLMenuElement,ks as HTMLMetaElement,ki as HTMLMeterElement,aa as HTMLModElement,ua as HTMLOListElement,Ur as HTMLObjectElement,Vi as HTMLOptGroupElement,ws as HTMLOptionElement,Oi as HTMLOutputElement,fi as HTMLParagraphElement,yi as HTMLParamElement,ea as HTMLPictureElement,Zi as HTMLPreElement,hi as HTMLProgressElement,Ti as HTMLQuoteElement,ss as HTMLScriptElement,Ts as HTMLSelectElement,Ds as HTMLSlotElement,Ms as HTMLSourceElement,Di as HTMLSpanElement,Ss as HTMLStyleElement,sa as HTMLTableCaptionElement,Mi as HTMLTableCellElement,bi as HTMLTableElement,_i as HTMLTableRowElement,us as HTMLTemplateElement,As as HTMLTextAreaElement,xs as HTMLTimeElement,vs as HTMLTitleElement,la as HTMLTrackElement,Yi as HTMLUListElement,ia as HTMLUnknownElement,Li as HTMLVideoElement,fa as InputEvent,Yt as Node,So as NodeFilter,ue as NodeList,tu as SVGElement,Xt as ShadowRoot,eu as Text,W as illegalConstructor,xo as parseHTML,go as parseJSON,mo as toJSON}; diff --git a/appinventor/lib/linkedom/linkedom.min.js b/appinventor/lib/linkedom/linkedom.min.js new file mode 100644 index 00000000000..74df05a2730 --- /dev/null +++ b/appinventor/lib/linkedom/linkedom.min.js @@ -0,0 +1,8 @@ +/** + * Minified by jsDelivr using Terser v5.19.2. + * Original file: /npm/linkedom@0.18.4/cjs/index.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +"use strict";const{DOMParser:DOMParser}=require("./dom/parser.js"),{Document:_Document}=require("./interface/document.js"),{illegalConstructor:illegalConstructor}=require("./shared/facades.js"),{setPrototypeOf:setPrototypeOf}=require("./shared/object.js");(e=>{exports.parseJSON=e.parseJSON,exports.toJSON=e.toJSON})(require("./shared/parse-json.js")),(e=>{Object.keys(e).map((t=>"default"!==t&&(exports[t]=e[t])))})(require("./shared/facades.js")),(e=>{Object.keys(e).map((t=>"default"!==t&&(exports[t]=e[t])))})(require("./shared/html-classes.js")),exports.DOMParser=DOMParser,(e=>{exports.CustomEvent=e.CustomEvent})(require("./interface/custom-event.js")),(e=>{exports.Event=e.Event})(require("./interface/event.js")),(e=>{exports.EventTarget=e.EventTarget})(require("./interface/event-target.js")),(e=>{exports.InputEvent=e.InputEvent})(require("./interface/input-event.js")),(e=>{exports.NodeList=e.NodeList})(require("./interface/node-list.js")),(e=>{exports.NodeFilter=e.NodeFilter})(require("./interface/node-filter.js"));const parseHTML=(e,t=null)=>(new DOMParser).parseFromString(e,"text/html",t).defaultView;function Document(){illegalConstructor()}exports.parseHTML=parseHTML,exports.Document=Document,setPrototypeOf(Document,_Document).prototype=_Document.prototype; +//# sourceMappingURL=/sm/c6b47c97faeeb0d91f4f77d54bf0f83ddd42aa50364a6c8a303e39bb86fa25e4.map \ No newline at end of file diff --git a/appinventor/lib/linkedom/linkedom.min.js.map b/appinventor/lib/linkedom/linkedom.min.js.map new file mode 100644 index 00000000000..0c89c62f51c --- /dev/null +++ b/appinventor/lib/linkedom/linkedom.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bundle.min.js","sources":["esm/shared/symbols.js","node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js","node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js","node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js","node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js","node_modules/.pnpm/htmlparser2@9.1.0/node_modules/htmlparser2/lib/esm/Tokenizer.js","node_modules/.pnpm/htmlparser2@9.1.0/node_modules/htmlparser2/lib/esm/Parser.js","node_modules/.pnpm/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.js","node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.js","node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.js","node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/escape.js","node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js","node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/index.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/stringify.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/traversal.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/manipulation.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/querying.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/legacy.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/helpers.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/feeds.js","node_modules/.pnpm/htmlparser2@9.1.0/node_modules/htmlparser2/lib/esm/index.js","esm/shared/constants.js","esm/shared/object.js","esm/shared/utils.js","esm/shared/shadow-roots.js","esm/interface/custom-element-registry.js","esm/shared/parse-from-string.js","esm/shared/register-html-class.js","shim:perf_hooks","esm/shared/jsdon.js","esm/interface/mutation-observer.js","esm/shared/attributes.js","esm/interface/event-target.js","esm/interface/node-list.js","esm/interface/node.js","esm/shared/text-escaper.js","esm/interface/attr.js","esm/shared/node.js","esm/mixin/non-document-type-child-node.js","esm/mixin/child-node.js","esm/interface/character-data.js","esm/interface/cdata-section.js","esm/interface/comment.js","node_modules/.pnpm/boolbase@1.0.0/node_modules/boolbase/index.js","node_modules/.pnpm/css-what@6.1.0/node_modules/css-what/lib/es/types.js","node_modules/.pnpm/css-what@6.1.0/node_modules/css-what/lib/es/parse.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/sort.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/attributes.js","node_modules/.pnpm/nth-check@2.1.1/node_modules/nth-check/lib/esm/parse.js","node_modules/.pnpm/nth-check@2.1.1/node_modules/nth-check/lib/esm/index.js","node_modules/.pnpm/nth-check@2.1.1/node_modules/nth-check/lib/esm/compile.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/filters.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/aliases.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/subselects.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/general.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/index.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/compile.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/index.js","esm/shared/matches.js","esm/interface/text.js","esm/mixin/parent-node.js","esm/mixin/non-element-parent-node.js","esm/interface/document-fragment.js","esm/interface/document-type.js","esm/mixin/inner-html.js","node_modules/.pnpm/uhyphen@0.2.0/node_modules/uhyphen/esm/index.js","esm/dom/string-map.js","esm/dom/token-list.js","esm/interface/css-style-declaration.js","esm/interface/event.js","esm/interface/named-node-map.js","esm/interface/shadow-root.js","esm/interface/element.js","esm/svg/element.js","esm/shared/facades.js","esm/html/element.js","esm/html/template-element.js","esm/html/html-element.js","esm/html/text-element.js","esm/html/script-element.js","esm/html/frame-element.js","esm/html/i-frame-element.js","esm/html/object-element.js","esm/html/head-element.js","esm/html/body-element.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/StyleSheet.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSStyleRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSStyleSheet.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/MediaList.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSImportRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSGroupingRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSConditionRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSMediaRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSSupportsRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSFontFaceRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSHostRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSKeyframeRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSKeyframesRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSValue.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSValueExpression.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/MatcherList.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSDocumentRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/parse.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSStyleDeclaration.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/clone.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/index.js","esm/html/style-element.js","esm/html/time-element.js","esm/html/field-set-element.js","esm/html/embed-element.js","esm/html/hr-element.js","esm/html/progress-element.js","esm/html/paragraph-element.js","esm/html/table-element.js","esm/html/frame-set-element.js","esm/html/li-element.js","esm/html/base-element.js","esm/html/data-list-element.js","esm/html/input-element.js","esm/html/param-element.js","esm/html/media-element.js","esm/html/audio-element.js","esm/html/heading-element.js","esm/html/directory-element.js","esm/html/quote-element.js","shim:canvas","esm/html/canvas-element.js","esm/html/legend-element.js","esm/html/option-element.js","esm/html/span-element.js","esm/html/meter-element.js","esm/html/video-element.js","esm/html/table-cell-element.js","esm/html/title-element.js","esm/html/output-element.js","esm/html/table-row-element.js","esm/html/data-element.js","esm/html/menu-element.js","esm/html/select-element.js","esm/html/br-element.js","esm/html/button-element.js","esm/html/map-element.js","esm/html/opt-group-element.js","esm/html/d-list-element.js","esm/html/text-area-element.js","esm/html/font-element.js","esm/html/div-element.js","esm/html/link-element.js","esm/html/slot-element.js","esm/html/form-element.js","esm/html/image-element.js","esm/html/pre-element.js","esm/html/u-list-element.js","esm/html/meta-element.js","esm/html/picture-element.js","esm/html/area-element.js","esm/html/o-list-element.js","esm/html/table-caption-element.js","esm/html/anchor-element.js","esm/html/label-element.js","esm/html/unknown-element.js","esm/html/mod-element.js","esm/html/details-element.js","esm/html/source-element.js","esm/html/track-element.js","esm/html/marquee-element.js","esm/shared/html-classes.js","esm/shared/mime.js","esm/interface/custom-event.js","esm/interface/input-event.js","esm/interface/image.js","esm/interface/range.js","esm/interface/tree-walker.js","esm/interface/document.js","esm/html/document.js","esm/svg/document.js","esm/xml/document.js","esm/dom/parser.js","esm/shared/parse-json.js","esm/index.js","esm/interface/node-filter.js"],"sourcesContent":["// used in Attr to signal changes\nexport const CHANGED = Symbol('changed');\n\n// used in Element to setup once classList\nexport const CLASS_LIST = Symbol('classList');\n\n// used in Document to attach once customElements\nexport const CUSTOM_ELEMENTS = Symbol('CustomElements');\n\n// used in HTMLTemplateElement\nexport const CONTENT = Symbol('content');\n\n// used in Element for data attributes\nexport const DATASET = Symbol('dataset');\n\n// used in Document to attach the DocType\nexport const DOCTYPE = Symbol('doctype');\n\n// used in parser and Document to attach once a DOMParser\nexport const DOM_PARSER = Symbol('DOMParser');\n\n// used to reference an end node\nexport const END = Symbol('end');\n\n// used in Document to make the globalThis an event target\nexport const EVENT_TARGET = Symbol('EventTarget');\n\n// used to augment a created document defaultView\nexport const GLOBALS = Symbol('globals');\n\n// used in both Canvas and Document to provide images\nexport const IMAGE = Symbol('image');\n\n// used to define Document mime type\nexport const MIME = Symbol('mime');\n\n// used in Document to attach once MutationObserver\nexport const MUTATION_OBSERVER = Symbol('MutationObserver');\n\n// used to define next node reference\nexport const NEXT = Symbol('next');\n\n// used to define Attr owner elements\nexport const OWNER_ELEMENT = Symbol('ownerElement');\n\n// used to define previous node reference\nexport const PREV = Symbol('prev');\n\n// used to define various \"private\" properties\nexport const PRIVATE = Symbol('private');\n\n// used to define the CSSStyleSheet.sheet\nexport const SHEET = Symbol('sheet');\n\n// used to define start node reference\nexport const START = Symbol('start');\n\n// used to define special CSS style attribute\nexport const STYLE = Symbol('style');\n\n// used to upgrade Custom Elements\nexport const UPGRADE = Symbol('upgrade');\n\n// used to define generic values\nexport const VALUE = Symbol('value');\n","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","import { EntityDecoder, DecodingMode, htmlDecodeTree, xmlDecodeTree, } from \"entities/lib/decode.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"BeforeSpecialT\"] = 23] = \"BeforeSpecialT\";\n State[State[\"SpecialStartSequence\"] = 24] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 25] = \"InSpecialTag\";\n State[State[\"InEntity\"] = 26] = \"InEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // ` this.emitCodePoint(cp, consumed));\n }\n reset() {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.currentSequence = undefined;\n this.running = true;\n this.offset = 0;\n }\n write(chunk) {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n }\n end() {\n if (this.running)\n this.finish();\n }\n pause() {\n this.running = false;\n }\n resume() {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n }\n stateText(c) {\n if (c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For tags, also decode entities. */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (this.xmlMode) {\n this.state = State.InTagName;\n }\n else if (lower === Sequences.ScriptEnd[2]) {\n this.state = State.BeforeSpecialS;\n }\n else if (lower === Sequences.TitleEnd[2]) {\n this.state = State.BeforeSpecialT;\n }\n else {\n this.state = State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = this.index;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index + 1);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeSpecialT(c) {\n const lower = c | 0x20;\n if (lower === Sequences.TitleEnd[3]) {\n this.startSpecial(Sequences.TitleEnd, 4);\n }\n else if (lower === Sequences.TextareaEnd[3]) {\n this.startSpecial(Sequences.TextareaEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n startEntity() {\n this.baseState = this.state;\n this.state = State.InEntity;\n this.entityStart = this.index;\n this.entityDecoder.startEntity(this.xmlMode\n ? DecodingMode.Strict\n : this.baseState === State.Text ||\n this.baseState === State.InSpecialTag\n ? DecodingMode.Legacy\n : DecodingMode.Attribute);\n }\n stateInEntity() {\n const length = this.entityDecoder.write(this.buffer, this.index - this.offset);\n // If `length` is positive, we are done with the entity.\n if (length >= 0) {\n this.state = this.baseState;\n if (length === 0) {\n this.index = this.entityStart;\n }\n }\n else {\n // Mark buffer as consumed.\n this.index = this.offset + this.buffer.length - 1;\n }\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.BeforeSpecialT: {\n this.stateBeforeSpecialT(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InEntity: {\n this.stateInEntity();\n break;\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InEntity) {\n this.entityDecoder.end();\n this.state = this.baseState;\n }\n this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n // If there is no remaining data, we are done.\n if (this.sectionStart >= endIndex) {\n return;\n }\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitCodePoint(cp, consumed) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n if (this.sectionStart < this.entityStart) {\n this.cbs.onattribdata(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.onattribentity(cp);\n }\n else {\n if (this.sectionStart < this.entityStart) {\n this.cbs.ontext(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.ontextentity(cp, this.sectionStart);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/lib/decode.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e, _f;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.htmlMode = !this.options.xmlMode;\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;\n this.recognizeSelfClosing =\n (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;\n this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);\n this.foreignContext = [!this.htmlMode];\n (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp, endIndex) {\n var _a, _b;\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = endIndex;\n }\n /**\n * Checks if the current tag is a void element. Override this if you want\n * to specify your own additional void elements.\n */\n isVoidElement(name) {\n return this.htmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = this.htmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n const element = this.stack.shift();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.unshift(name);\n if (this.htmlMode) {\n if (foreignContextElements.has(name)) {\n this.foreignContext.unshift(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.unshift(false);\n }\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (this.htmlMode &&\n (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name))) {\n this.foreignContext.shift();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.indexOf(name);\n if (pos !== -1) {\n for (let index = 0; index <= pos; index++) {\n const element = this.stack.shift();\n // We know the stack has sufficient elements.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);\n }\n }\n else if (this.htmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (this.htmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\");\n (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", {}, true);\n (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.recognizeSelfClosing || this.foreignContext[0]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[0] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.shift();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (!this.htmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = 0; index < this.stack.length; index++) {\n this.cbs.onclosetag(this.stack[index], true);\n }\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.foreignContext.length = 0;\n this.foreignContext.unshift(!this.htmlMode);\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n","import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nexport function innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) {\n return innerText(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n//# sourceMappingURL=stringify.js.map","import { isTag, hasChildren, } from \"domhandler\";\n/**\n * Get a node's children.\n *\n * @category Traversal\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nexport function getChildren(elem) {\n return hasChildren(elem) ? elem.children : [];\n}\n/**\n * Get a node's parent.\n *\n * @category Traversal\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node, or `null` if `elem` is a root node.\n */\nexport function getParent(elem) {\n return elem.parent || null;\n}\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first. If we don't\n * have a parent (the element is a root node), we walk the element's `prev` &\n * `next` to get all remaining nodes.\n *\n * @category Traversal\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings, including `elem`.\n */\nexport function getSiblings(elem) {\n const parent = getParent(elem);\n if (parent != null)\n return getChildren(parent);\n const siblings = [elem];\n let { prev, next } = elem;\n while (prev != null) {\n siblings.unshift(prev);\n ({ prev } = prev);\n }\n while (next != null) {\n siblings.push(next);\n ({ next } = next);\n }\n return siblings;\n}\n/**\n * Gets an attribute from an element.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nexport function getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\n/**\n * Checks whether an element has an attribute.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nexport function hasAttrib(elem, name) {\n return (elem.attribs != null &&\n Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n elem.attribs[name] != null);\n}\n/**\n * Get the tag name of an element.\n *\n * @category Traversal\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nexport function getName(elem) {\n return elem.name;\n}\n/**\n * Returns the next element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag, or `null` if there is no next\n * sibling.\n */\nexport function nextElementSibling(elem) {\n let { next } = elem;\n while (next !== null && !isTag(next))\n ({ next } = next);\n return next;\n}\n/**\n * Returns the previous element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag, or `null` if there is no\n * previous sibling.\n */\nexport function prevElementSibling(elem) {\n let { prev } = elem;\n while (prev !== null && !isTag(prev))\n ({ prev } = prev);\n return prev;\n}\n//# sourceMappingURL=traversal.js.map","/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */\nexport function removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n const childs = elem.parent.children;\n const childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) {\n childs.splice(childsIndex, 1);\n }\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\n/**\n * Replace an element in the dom\n *\n * @category Manipulation\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nexport function replaceElement(elem, replacement) {\n const prev = (replacement.prev = elem.prev);\n if (prev) {\n prev.next = replacement;\n }\n const next = (replacement.next = elem.next);\n if (next) {\n next.prev = replacement;\n }\n const parent = (replacement.parent = elem.parent);\n if (parent) {\n const childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\n/**\n * Append a child to an element.\n *\n * @category Manipulation\n * @param parent The element to append to.\n * @param child The element to be added as a child.\n */\nexport function appendChild(parent, child) {\n removeElement(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n const sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n }\n else {\n child.prev = null;\n }\n}\n/**\n * Append an element after another.\n *\n * @category Manipulation\n * @param elem The element to append after.\n * @param next The element be added.\n */\nexport function append(elem, next) {\n removeElement(next);\n const { parent } = elem;\n const currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n }\n else if (parent) {\n parent.children.push(next);\n }\n}\n/**\n * Prepend a child to an element.\n *\n * @category Manipulation\n * @param parent The element to prepend before.\n * @param child The element to be added as a child.\n */\nexport function prependChild(parent, child) {\n removeElement(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n const sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n }\n else {\n child.next = null;\n }\n}\n/**\n * Prepend an element before another.\n *\n * @category Manipulation\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nexport function prepend(elem, prev) {\n removeElement(prev);\n const { parent } = elem;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\n//# sourceMappingURL=manipulation.js.map","import { isTag, hasChildren } from \"domhandler\";\n/**\n * Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function filter(test, node, recurse = true, limit = Infinity) {\n return find(test, Array.isArray(node) ? node : [node], recurse, limit);\n}\n/**\n * Search an array of nodes and their children for nodes passing a test function.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function find(test, nodes, recurse, limit) {\n const result = [];\n /** Stack of the arrays we are looking at. */\n const nodeStack = [nodes];\n /** Stack of the indices within the arrays. */\n const indexStack = [0];\n for (;;) {\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n return result;\n }\n if (recurse && hasChildren(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n/**\n * Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n * @deprecated Use `Array.prototype.find` directly.\n */\nexport function findOneChild(test, nodes) {\n return nodes.find(test);\n}\n/**\n * Finds one element in a tree that passes a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Node or array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first node that passes `test`.\n */\nexport function findOne(test, nodes, recurse = true) {\n let elem = null;\n for (let i = 0; i < nodes.length && !elem; i++) {\n const node = nodes[i];\n if (!isTag(node)) {\n continue;\n }\n else if (test(node)) {\n elem = node;\n }\n else if (recurse && node.children.length > 0) {\n elem = findOne(test, node.children, true);\n }\n }\n return elem;\n}\n/**\n * Checks if a tree of nodes contains at least one node passing a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing the test.\n */\nexport function existsOne(test, nodes) {\n return nodes.some((checked) => isTag(checked) &&\n (test(checked) || existsOne(test, checked.children)));\n}\n/**\n * Search an array of nodes and their children for elements passing a test function.\n *\n * Same as `find`, but limited to elements and with less options, leading to reduced complexity.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nexport function findAll(test, nodes) {\n const result = [];\n const nodeStack = [nodes];\n const indexStack = [0];\n for (;;) {\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (!isTag(elem))\n continue;\n if (test(elem))\n result.push(elem);\n if (elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n//# sourceMappingURL=querying.js.map","import { isTag, isText } from \"domhandler\";\nimport { filter, findOne } from \"./querying.js\";\n/**\n * A map of functions to check nodes against.\n */\nconst Checks = {\n tag_name(name) {\n if (typeof name === \"function\") {\n return (elem) => isTag(elem) && name(elem.name);\n }\n else if (name === \"*\") {\n return isTag;\n }\n return (elem) => isTag(elem) && elem.name === name;\n },\n tag_type(type) {\n if (typeof type === \"function\") {\n return (elem) => type(elem.type);\n }\n return (elem) => elem.type === type;\n },\n tag_contains(data) {\n if (typeof data === \"function\") {\n return (elem) => isText(elem) && data(elem.data);\n }\n return (elem) => isText(elem) && elem.data === data;\n },\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return (elem) => isTag(elem) && value(elem.attribs[attrib]);\n }\n return (elem) => isTag(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return (elem) => a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n const funcs = Object.keys(options).map((key) => {\n const value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * Checks whether a node matches the description in `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nexport function testElement(options, node) {\n const test = compileTest(options);\n return test ? test(node) : true;\n}\n/**\n * Returns all nodes that match `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nexport function getElements(options, nodes, recurse, limit = Infinity) {\n const test = compileTest(options);\n return test ? filter(test, nodes, recurse, limit) : [];\n}\n/**\n * Returns the node with the supplied ID.\n *\n * @category Legacy Query Functions\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nexport function getElementById(id, nodes, recurse = true) {\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return findOne(getAttribCheck(\"id\", id), nodes, recurse);\n}\n/**\n * Returns all nodes with the supplied `tagName`.\n *\n * @category Legacy Query Functions\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nexport function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\n/**\n * Returns all nodes with the supplied `type`.\n *\n * @category Legacy Query Functions\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nexport function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n//# sourceMappingURL=legacy.js.map","import { hasChildren } from \"domhandler\";\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nexport function removeSubsets(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nexport var DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nexport function compareDocumentPosition(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n let current = hasChildren(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = hasChildren(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nexport function uniqueSort(nodes) {\n nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1));\n nodes.sort((a, b) => {\n const relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","import { textContent } from \"./stringify.js\";\nimport { getElementsByTagName } from \"./legacy.js\";\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @category Feeds\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nexport function getFeed(doc) {\n const feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: getElementsByTagName(\"entry\", childs).map((item) => {\n var _a;\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n entry.link = href;\n }\n const description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n const pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: getElementsByTagName(\"item\", feedRoot.children).map((item) => {\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n const pubDate = fetch(\"pubDate\", children) || fetch(\"dc:date\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n const updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nconst MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return getElementsByTagName(\"media:content\", where).map((elem) => {\n const { attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"],\n };\n for (const attrib of MEDIA_KEYS_STRING) {\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (const attrib of MEDIA_KEYS_INT) {\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs[\"expression\"]) {\n media.expression = attribs[\"expression\"];\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return getElementsByTagName(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse = false) {\n return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n//# sourceMappingURL=feeds.js.map","import { Parser } from \"./Parser.js\";\nexport { Parser } from \"./Parser.js\";\nimport { DomHandler, } from \"domhandler\";\nexport { DomHandler, \n// Old name for DomHandler\nDomHandler as DefaultHandler, } from \"domhandler\";\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n */\nexport function parseDocument(data, options) {\n const handler = new DomHandler(undefined, options);\n new Parser(handler, options).end(data);\n return handler.root;\n}\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n * @deprecated Use `parseDocument` instead.\n */\nexport function parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with the resulting document.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nexport function createDocumentStream(callback, options, elementCallback) {\n const handler = new DomHandler((error) => callback(error, handler.root), options, elementCallback);\n return new Parser(handler, options);\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with an array of root nodes.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n * @deprecated Use `createDocumentStream` instead.\n */\nexport function createDomStream(callback, options, elementCallback) {\n const handler = new DomHandler(callback, options, elementCallback);\n return new Parser(handler, options);\n}\nexport { default as Tokenizer, QuoteType, } from \"./Tokenizer.js\";\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nexport * as ElementType from \"domelementtype\";\nimport { getFeed } from \"domutils\";\nexport { getFeed } from \"domutils\";\nconst parseFeedDefaultOptions = { xmlMode: true };\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nexport function parseFeed(feed, options = parseFeedDefaultOptions) {\n return getFeed(parseDOM(feed, options));\n}\nexport * as DomUtils from \"domutils\";\n//# sourceMappingURL=index.js.map","// Internal\nexport const NODE_END = -1;\n\n// Node\nexport const ELEMENT_NODE = 1;\nexport const ATTRIBUTE_NODE = 2;\nexport const TEXT_NODE = 3;\nexport const CDATA_SECTION_NODE = 4;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_TYPE_NODE = 10;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n\n// Elements\nexport const BLOCK_ELEMENTS = new Set(['ARTICLE', 'ASIDE', 'BLOCKQUOTE', 'BODY', 'BR', 'BUTTON', 'CANVAS', 'CAPTION', 'COL', 'COLGROUP', 'DD', 'DIV', 'DL', 'DT', 'EMBED', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'FORM', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'UL', 'OL', 'P']);\n\n// TreeWalker\nexport const SHOW_ALL = -1;\nexport const SHOW_ELEMENT = 1;\nexport const SHOW_TEXT = 4;\nexport const SHOW_CDATA_SECTION = 8;\nexport const SHOW_COMMENT = 128;\n\n// Document position\nexport const DOCUMENT_POSITION_DISCONNECTED = 0x01;\nexport const DOCUMENT_POSITION_PRECEDING = 0x02;\nexport const DOCUMENT_POSITION_FOLLOWING = 0x04;\nexport const DOCUMENT_POSITION_CONTAINS = 0x08;\nexport const DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nexport const DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\n// SVG\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n","const {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n} = Object;\n\nexport {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n};\n","import {ELEMENT_NODE} from './constants.js';\nimport {END, MIME, NEXT, PREV} from './symbols.js';\n\nconst $String = String;\nexport {$String as String};\n\nexport const getEnd = node => node.nodeType === ELEMENT_NODE ? node[END] : node;\n\nexport const ignoreCase = ({ownerDocument}) => ownerDocument[MIME].ignoreCase;\n\nexport const knownAdjacent = (prev, next) => {\n prev[NEXT] = next;\n next[PREV] = prev;\n};\n\nexport const knownBoundaries = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(getEnd(current), next);\n};\n\nexport const knownSegment = (prev, start, end, next) => {\n knownAdjacent(prev, start);\n knownAdjacent(getEnd(end), next);\n};\n\nexport const knownSiblings = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(current, next);\n};\n\nexport const localCase = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].ignoreCase ? localName.toUpperCase() : localName;\n};\n\nexport const setAdjacent = (prev, next) => {\n if (prev)\n prev[NEXT] = next;\n if (next)\n next[PREV] = prev;\n};\n","export const shadowRoots = new WeakMap;\n","import {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT, UPGRADE} from '../shared/symbols.js';\nimport {entries, setPrototypeOf} from '../shared/object.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nlet reactive = false;\n\nexport const Classes = new WeakMap;\n\nexport const customElements = new WeakMap;\n\nexport const attributeChangedCallback = (element, attributeName, oldValue, newValue) => {\n if (\n reactive &&\n customElements.has(element) &&\n element.attributeChangedCallback &&\n element.constructor.observedAttributes.includes(attributeName)\n ) {\n element.attributeChangedCallback(attributeName, oldValue, newValue);\n }\n};\n\nconst createTrigger = (method, isConnected) => element => {\n if (customElements.has(element)) {\n const info = customElements.get(element);\n if (info.connected !== isConnected && element.isConnected === isConnected) {\n info.connected = isConnected;\n if (method in element)\n element[method]();\n }\n }\n};\n\nconst triggerConnected = createTrigger('connectedCallback', true);\nexport const connectedCallback = element => {\n if (reactive) {\n triggerConnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerConnected(next);\n next = next[NEXT];\n }\n }\n};\n\nconst triggerDisconnected = createTrigger('disconnectedCallback', false);\nexport const disconnectedCallback = element => {\n if (reactive) {\n triggerDisconnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerDisconnected(next);\n next = next[NEXT];\n }\n }\n};\n\n/**\n * @implements globalThis.CustomElementRegistry\n */\nexport class CustomElementRegistry {\n\n /**\n * @param {Document} ownerDocument\n */\n constructor(ownerDocument) {\n /**\n * @private\n */\n this.ownerDocument = ownerDocument;\n\n /**\n * @private\n */\n this.registry = new Map;\n\n /**\n * @private\n */\n this.waiting = new Map;\n\n /**\n * @private\n */\n this.active = false;\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @param {Function} Class the custom element **Class** definition\n * @param {object?} options the optional object with an `extends` property\n */\n define(localName, Class, options = {}) {\n const {ownerDocument, registry, waiting} = this;\n\n if (registry.has(localName))\n throw new Error('unable to redefine ' + localName);\n\n if (Classes.has(Class))\n throw new Error('unable to redefine the same class: ' + Class);\n\n this.active = (reactive = true);\n\n const {extends: extend} = options;\n\n Classes.set(Class, {\n ownerDocument,\n options: {is: extend ? localName : ''},\n localName: extend || localName\n });\n\n const check = extend ?\n element => {\n return element.localName === extend &&\n element.getAttribute('is') === localName;\n } :\n element => element.localName === localName;\n registry.set(localName, {Class, check});\n if (waiting.has(localName)) {\n for (const resolve of waiting.get(localName))\n resolve(Class);\n waiting.delete(localName);\n }\n ownerDocument.querySelectorAll(\n extend ? `${extend}[is=\"${localName}\"]` : localName\n ).forEach(this.upgrade, this);\n }\n\n /**\n * @param {Element} element\n */\n upgrade(element) {\n if (customElements.has(element))\n return;\n const {ownerDocument, registry} = this;\n const ce = element.getAttribute('is') || element.localName;\n if (registry.has(ce)) {\n const {Class, check} = registry.get(ce);\n if (check(element)) {\n const {attributes, isConnected} = element;\n for (const attr of attributes)\n element.removeAttributeNode(attr);\n\n const values = entries(element);\n for (const [key] of values)\n delete element[key];\n\n setPrototypeOf(element, Class.prototype);\n ownerDocument[UPGRADE] = {element, values};\n new Class(ownerDocument, ce);\n\n customElements.set(element, {connected: isConnected});\n\n for (const attr of attributes)\n element.setAttributeNode(attr);\n\n if (isConnected && element.connectedCallback)\n element.connectedCallback();\n }\n }\n }\n\n /**\n * @param {string} localName the custom element definition name\n */\n whenDefined(localName) {\n const {registry, waiting} = this;\n return new Promise(resolve => {\n if (registry.has(localName))\n resolve(registry.get(localName).Class);\n else {\n if (!waiting.has(localName))\n waiting.set(localName, []);\n waiting.get(localName).push(resolve);\n }\n });\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @returns {Function?} the custom element **Class**, if any\n */\n get(localName) {\n const info = this.registry.get(localName);\n return info && info.Class;\n }\n\n /**\n * @param {Function} Class **Class** of custom element\n * @returns {string?} found tag name or null\n */\n getName(Class) {\n if (Classes.has(Class)) {\n const { localName } = Classes.get(Class);\n return localName;\n }\n return null;\n }\n}\n","import * as HTMLParser2 from 'htmlparser2';\n\nimport {ELEMENT_NODE, SVG_NAMESPACE} from './constants.js';\nimport {CUSTOM_ELEMENTS, PREV, END, VALUE} from './symbols.js';\nimport {keys} from './object.js';\n\nimport {knownBoundaries, knownSiblings} from './utils.js';\nimport {attributeChangedCallback, connectedCallback} from '../interface/custom-element-registry.js';\n\nconst {Parser} = HTMLParser2;\n\n// import {Mime} from './mime.js';\n// const VOID_SOURCE = Mime['text/html'].voidElements.source.slice(4, -2);\n// const VOID_ELEMENTS = new RegExp(`<(${VOID_SOURCE})([^>]*?)>`, 'gi');\n// const VOID_SANITIZER = (_, $1, $2) => `<${$1}${$2}${/\\/$/.test($2) ? '' : ' /'}>`;\n// const voidSanitizer = html => html.replace(VOID_ELEMENTS, VOID_SANITIZER);\n\nlet notParsing = true;\n\nconst append = (self, node, active) => {\n const end = self[END];\n node.parentNode = self;\n knownBoundaries(end[PREV], node, end);\n if (active && node.nodeType === ELEMENT_NODE)\n connectedCallback(node);\n return node;\n};\n\nconst attribute = (element, end, attribute, value, active) => {\n attribute[VALUE] = value;\n attribute.ownerElement = element;\n knownSiblings(end[PREV], attribute, end);\n if (attribute.name === 'class')\n element.className = value;\n if (active)\n attributeChangedCallback(element, attribute.name, null, value);\n};\n\nexport const isNotParsing = () => notParsing;\n\nexport const parseFromString = (document, isHTML, markupLanguage) => {\n const {active, registry} = document[CUSTOM_ELEMENTS];\n\n let node = document;\n let ownerSVGElement = null;\n let parsingCData = false;\n\n notParsing = false;\n\n const content = new Parser({\n // <!DOCTYPE ...>\n onprocessinginstruction(name, data) {\n if (name.toLowerCase() === '!doctype')\n document.doctype = data.slice(name.length).trim();\n },\n\n // <tagName>\n onopentag(name, attributes) {\n let create = true;\n if (isHTML) {\n if (ownerSVGElement) {\n node = append(node, document.createElementNS(SVG_NAMESPACE, name), active);\n node.ownerSVGElement = ownerSVGElement;\n create = false;\n }\n else if (name === 'svg' || name === 'SVG') {\n ownerSVGElement = document.createElementNS(SVG_NAMESPACE, name);\n node = append(node, ownerSVGElement, active);\n create = false;\n }\n else if (active) {\n const ce = name.includes('-') ? name : (attributes.is || '');\n if (ce && registry.has(ce)) {\n const {Class} = registry.get(ce);\n node = append(node, new Class, active);\n delete attributes.is;\n create = false;\n }\n }\n }\n\n if (create)\n node = append(node, document.createElement(name), false);\n\n let end = node[END];\n for (const name of keys(attributes))\n attribute(node, end, document.createAttribute(name), attributes[name], active);\n },\n\n // #text, #comment\n oncomment(data) { append(node, document.createComment(data), active); },\n ontext(text) {\n if (parsingCData) {\n append(node, document.createCDATASection(text), active);\n } else {\n append(node, document.createTextNode(text), active);\n }\n },\n\n // #cdata\n oncdatastart() { parsingCData = true; },\n oncdataend() { parsingCData = false; },\n\n // </tagName>\n onclosetag() {\n if (isHTML && node === ownerSVGElement)\n ownerSVGElement = null;\n node = node.parentNode;\n }\n }, {\n lowerCaseAttributeNames: false,\n decodeEntities: true,\n xmlMode: !isHTML\n });\n\n content.write(markupLanguage);\n content.end();\n\n notParsing = true;\n\n return document;\n};\n","export const htmlClasses = new Map;\n\nexport const registerHTMLClass = (names, Class) => {\n for (const name of [].concat(names)) {\n htmlClasses.set(name, Class);\n htmlClasses.set(name.toUpperCase(), Class);\n }\n};\n","\n export const performance = globalThis.performance;\n ","import {\n NODE_END,\n ATTRIBUTE_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_TYPE_NODE,\n ELEMENT_NODE,\n TEXT_NODE\n} from './constants.js';\n\nimport {END, NEXT, VALUE} from './symbols.js';\n\nimport {getEnd} from './utils.js';\n\nconst loopSegment = ({[NEXT]: next, [END]: end}, json) => {\n while (next !== end) {\n switch (next.nodeType) {\n case ATTRIBUTE_NODE:\n attrAsJSON(next, json);\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n characterDataAsJSON(next, json);\n break;\n case ELEMENT_NODE:\n elementAsJSON(next, json);\n next = getEnd(next);\n break;\n case DOCUMENT_TYPE_NODE:\n documentTypeAsJSON(next, json);\n break;\n }\n next = next[NEXT];\n }\n const last = json.length - 1;\n const value = json[last];\n if (typeof value === 'number' && value < 0)\n json[last] += NODE_END;\n else\n json.push(NODE_END);\n};\n\nexport const attrAsJSON = (attr, json) => {\n json.push(ATTRIBUTE_NODE, attr.name);\n const value = attr[VALUE].trim();\n if (value)\n json.push(value);\n};\n\nexport const characterDataAsJSON = (node, json) => {\n const value = node[VALUE];\n if (value.trim())\n json.push(node.nodeType, value);\n};\n\nexport const nonElementAsJSON = (node, json) => {\n json.push(node.nodeType);\n loopSegment(node, json);\n};\n\nexport const documentTypeAsJSON = ({name, publicId, systemId}, json) => {\n json.push(DOCUMENT_TYPE_NODE, name);\n if (publicId)\n json.push(publicId);\n if (systemId)\n json.push(systemId);\n};\n\nexport const elementAsJSON = (element, json) => {\n json.push(ELEMENT_NODE, element.localName);\n loopSegment(element, json);\n};\n","import {MUTATION_OBSERVER} from '../shared/symbols.js';\n\nconst createRecord =\n (type, target, addedNodes, removedNodes, attributeName, oldValue) =>\n ({type, target, addedNodes, removedNodes, attributeName, oldValue});\n\nconst queueAttribute = (\n observer, target, attributeName, attributeFilter, attributeOldValue, oldValue\n) => {\n if ((!attributeFilter || attributeFilter.includes(attributeName))) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'attributes', target,\n [], [],\n attributeName, attributeOldValue ? oldValue : void 0\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n }\n};\n\nexport const attributeChangedCallback = (element, attributeName, oldValue) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [\n target,\n {\n childList,\n subtree,\n attributes,\n attributeFilter,\n attributeOldValue\n }\n ] of observer.nodes) {\n if (childList) {\n if (\n (subtree && (target === ownerDocument || target.contains(element))) ||\n (!subtree && target.children.includes(element))\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n else if (\n attributes &&\n target === element\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n }\n }\n};\n\nexport const moCallback = (element, parentNode) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [target, {subtree, childList, characterData}] of observer.nodes) {\n if (childList) {\n if (\n (parentNode && (target === parentNode || /* c8 ignore next */(subtree && target.contains(parentNode)))) ||\n (!parentNode && ((subtree && (target === ownerDocument || /* c8 ignore next */target.contains(element))) ||\n (!subtree && target[characterData ? 'childNodes' : 'children'].includes(element))))\n ) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'childList', target,\n parentNode ? [] : [element], parentNode ? [element] : []\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n break;\n }\n }\n }\n }\n }\n};\n\nexport class MutationObserverClass {\n constructor(ownerDocument) {\n const observers = new Set;\n this.observers = observers;\n this.active = false;\n\n /**\n * @implements globalThis.MutationObserver\n */\n this.class = class MutationObserver {\n\n constructor(callback) {\n /**\n * @private\n */\n this.callback = callback;\n\n /**\n * @private\n */\n this.nodes = new Map;\n\n /**\n * @private\n */\n this.records = [];\n\n /**\n * @private\n */\n this.scheduled = false;\n }\n\n disconnect() {\n this.records.splice(0);\n this.nodes.clear();\n observers.delete(this);\n ownerDocument[MUTATION_OBSERVER].active = !!observers.size;\n }\n\n /**\n * @param {Element} target\n * @param {MutationObserverInit} options\n */\n observe(target, options = {\n subtree: false,\n childList: false,\n attributes: false,\n attributeFilter: null,\n attributeOldValue: false,\n characterData: false,\n // TODO: not implemented yet\n // characterDataOldValue: false\n }) {\n if (('attributeOldValue' in options) || ('attributeFilter' in options))\n options.attributes = true;\n // if ('characterDataOldValue' in options)\n // options.characterData = true;\n options.childList = !!options.childList;\n options.subtree = !!options.subtree;\n this.nodes.set(target, options);\n observers.add(this);\n ownerDocument[MUTATION_OBSERVER].active = true;\n }\n\n /**\n * @returns {MutationRecord[]}\n */\n takeRecords() { return this.records.splice(0); }\n }\n }\n}\n","import {CLASS_LIST, NEXT, PREV, VALUE} from './symbols.js';\n\nimport {knownAdjacent, knownSiblings} from './utils.js';\n\nimport {attributeChangedCallback as ceAttributes} from '../interface/custom-element-registry.js';\nimport {attributeChangedCallback as moAttributes} from '../interface/mutation-observer.js';\n\nexport const emptyAttributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'class',\n 'contenteditable',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'draggable',\n 'formnovalidate',\n 'hidden',\n 'id',\n 'ismap',\n 'itemscope',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected',\n 'style',\n 'truespeed'\n]);\n\nexport const setAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n attribute.ownerElement = element;\n knownSiblings(element, attribute, element[NEXT]);\n if (name === 'class')\n element.className = value;\n moAttributes(element, name, null);\n ceAttributes(element, name, null, value);\n};\n\nexport const removeAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n knownAdjacent(attribute[PREV], attribute[NEXT]);\n attribute.ownerElement = attribute[PREV] = attribute[NEXT] = null;\n if (name === 'class')\n element[CLASS_LIST] = null;\n moAttributes(element, name, value);\n ceAttributes(element, name, value, null);\n};\n\nexport const booleanAttribute = {\n get(element, name) {\n return element.hasAttribute(name);\n },\n set(element, name, value) {\n if (value)\n element.setAttribute(name, '');\n else\n element.removeAttribute(name);\n }\n};\n\nexport const numericAttribute = {\n get(element, name) {\n return parseFloat(element.getAttribute(name) || 0);\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\nexport const stringAttribute = {\n get(element, name) {\n return element.getAttribute(name) || '';\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\n/* oddly enough, this apparently is not a thing\nexport const nullableAttribute = {\n get(element, name) {\n return element.getAttribute(name);\n },\n set(element, name, value) {\n if (value === null)\n element.removeAttribute(name);\n else\n element.setAttribute(name, value);\n }\n};\n*/\n","// https://dom.spec.whatwg.org/#interface-eventtarget\n\nconst wm = new WeakMap();\n\nfunction dispatch(event, listener) {\n if (typeof listener === 'function')\n listener.call(event.target, event);\n else\n listener.handleEvent(event);\n return event._stopImmediatePropagationFlag;\n}\n\nfunction invokeListeners({currentTarget, target}) {\n const map = wm.get(currentTarget);\n if (map && map.has(this.type)) {\n const listeners = map.get(this.type);\n if (currentTarget === target) {\n this.eventPhase = this.AT_TARGET;\n } else {\n this.eventPhase = this.BUBBLING_PHASE;\n }\n\n this.currentTarget = currentTarget;\n this.target = target;\n for (const [listener, options] of listeners) {\n if (options && options.once)\n listeners.delete(listener);\n if (dispatch(this, listener))\n break;\n }\n delete this.currentTarget;\n delete this.target;\n return this.cancelBubble;\n }\n}\n\n\n/**\n * @implements globalThis.EventTarget\n */\nclass DOMEventTarget {\n\n constructor() {\n wm.set(this, new Map);\n }\n\n /**\n * @protected\n */\n _getParent() {\n return null;\n }\n\n addEventListener(type, listener, options) {\n const map = wm.get(this);\n if (!map.has(type)) \n map.set(type, new Map);\n map.get(type).set(listener, options);\n }\n\n removeEventListener(type, listener) {\n const map = wm.get(this);\n if (map.has(type)) {\n const listeners = map.get(type);\n if (listeners.delete(listener) && !listeners.size)\n map.delete(type);\n }\n }\n\n dispatchEvent(event) {\n let node = this;\n event.eventPhase = event.CAPTURING_PHASE;\n\n // intentionally simplified, specs imply way more code: https://dom.spec.whatwg.org/#event-path\n while (node) {\n if (node.dispatchEvent)\n event._path.push({currentTarget: node, target: this});\n node = event.bubbles && node._getParent && node._getParent();\n }\n event._path.some(invokeListeners, event);\n event._path = [];\n event.eventPhase = event.NONE;\n return !event.defaultPrevented;\n }\n\n}\n\nexport {DOMEventTarget as EventTarget};\n","// https://dom.spec.whatwg.org/#interface-nodelist\n\n/**\n * @implements globalThis.NodeList\n */\nexport class NodeList extends Array {\n item(i) { return i < this.length ? this[i] : null; }\n}\n","// https://dom.spec.whatwg.org/#node\n\nimport {\n ELEMENT_NODE,\n ATTRIBUTE_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n DOCUMENT_TYPE_NODE,\n DOCUMENT_POSITION_DISCONNECTED,\n DOCUMENT_POSITION_PRECEDING,\n DOCUMENT_POSITION_FOLLOWING,\n DOCUMENT_POSITION_CONTAINS,\n DOCUMENT_POSITION_CONTAINED_BY,\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n} from '../shared/constants.js';\n\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {EventTarget} from './event-target.js';\n\nimport {NodeList} from './node-list.js';\n\nconst getParentNodeCount = ({parentNode}) => {\n let count = 0;\n while (parentNode) {\n count++;\n parentNode = parentNode.parentNode;\n }\n return count;\n};\n\n/**\n * @implements globalThis.Node\n */\nexport class Node extends EventTarget {\n\n static get ELEMENT_NODE() { return ELEMENT_NODE; }\n static get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n static get TEXT_NODE() { return TEXT_NODE; }\n static get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n static get COMMENT_NODE() { return COMMENT_NODE; }\n static get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n static get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n static get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n constructor(ownerDocument, localName, nodeType) {\n super();\n this.ownerDocument = ownerDocument;\n this.localName = localName;\n this.nodeType = nodeType;\n this.parentNode = null;\n this[NEXT] = null;\n this[PREV] = null;\n }\n\n get ELEMENT_NODE() { return ELEMENT_NODE; }\n get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n get TEXT_NODE() { return TEXT_NODE; }\n get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n get COMMENT_NODE() { return COMMENT_NODE; }\n get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n get baseURI() {\n const ownerDocument = this.nodeType === DOCUMENT_NODE ?\n this : this.ownerDocument;\n if (ownerDocument) {\n const base = ownerDocument.querySelector('base');\n if (base)\n return base.getAttribute('href');\n\n const {location} = ownerDocument.defaultView;\n if (location)\n return location.href;\n }\n\n return null;\n }\n\n /* c8 ignore start */\n // mixin: node\n get isConnected() { return false; }\n get nodeName() { return this.localName; }\n get parentElement() { return null; }\n get previousSibling() { return null; }\n get previousElementSibling() { return null; }\n get nextSibling() { return null; }\n get nextElementSibling() { return null; }\n get childNodes() { return new NodeList; }\n get firstChild() { return null; }\n get lastChild() { return null; }\n\n // default values\n get nodeValue() { return null; }\n set nodeValue(value) {}\n get textContent() { return null; }\n set textContent(value) {}\n normalize() {}\n cloneNode() { return null; }\n contains() { return false; }\n /**\n * Inserts a node before a reference node as a child of this parent node.\n * @param {Node} newNode The node to be inserted.\n * @param {Node} referenceNode The node before which newNode is inserted. If this is null, then newNode is inserted at the end of node's child nodes.\n * @returns The added child\n */\n // eslint-disable-next-line no-unused-vars\n insertBefore(newNode, referenceNode) { return newNode }\n /**\n * Adds a node to the end of the list of children of this node.\n * @param {Node} child The node to append to the given parent node.\n * @returns The appended child.\n */\n appendChild(child) { return child }\n /**\n * Replaces a child node within this node\n * @param {Node} newChild The new node to replace oldChild.\n * @param {Node} oldChild The child to be replaced.\n * @returns The replaced Node. This is the same node as oldChild.\n */\n replaceChild(newChild, oldChild) { return oldChild }\n /**\n * Removes a child node from the DOM.\n * @param {Node} child A Node that is the child node to be removed from the DOM.\n * @returns The removed node.\n */\n removeChild(child) { return child }\n toString() { return ''; }\n /* c8 ignore stop */\n\n hasChildNodes() { return !!this.lastChild; }\n isSameNode(node) { return this === node; }\n\n // TODO: attributes?\n compareDocumentPosition(target) {\n let result = 0;\n if (this !== target) {\n let self = getParentNodeCount(this);\n let other = getParentNodeCount(target);\n if (self < other) {\n result += DOCUMENT_POSITION_FOLLOWING;\n if (this.contains(target))\n result += DOCUMENT_POSITION_CONTAINED_BY;\n }\n else if (other < self) {\n result += DOCUMENT_POSITION_PRECEDING;\n if (target.contains(this))\n result += DOCUMENT_POSITION_CONTAINS;\n }\n else if (self && other) {\n const {childNodes} = this.parentNode;\n if (childNodes.indexOf(this) < childNodes.indexOf(target))\n result += DOCUMENT_POSITION_FOLLOWING;\n else\n result += DOCUMENT_POSITION_PRECEDING;\n }\n if (!self || !other) {\n result += DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n result += DOCUMENT_POSITION_DISCONNECTED;\n }\n }\n return result;\n }\n\n isEqualNode(node) {\n if (this === node)\n return true;\n if (this.nodeType === node.nodeType) {\n switch (this.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n const aNodes = this.childNodes;\n const bNodes = node.childNodes;\n return aNodes.length === bNodes.length && aNodes.every((node, i) => node.isEqualNode(bNodes[i]));\n }\n }\n return this.toString() === node.toString();\n }\n return false;\n }\n\n /**\n * @protected\n */\n _getParent() {\n return this.parentNode;\n }\n\n /**\n * Calling it on an element inside a standard web page will return an HTMLDocument object representing the entire page (or <iframe>).\n * Calling it on an element inside a shadow DOM will return the associated ShadowRoot.\n * @return {ShadowRoot | HTMLDocument}\n */\n getRootNode() {\n let root = this;\n while (root.parentNode)\n root = root.parentNode;\n return root;\n }\n}\n","const {replace} = '';\n\n// escape\nconst ca = /[<>&\\xA0]/g;\n\nconst esca = {\n '\\xA0': ' ',\n '&': '&',\n '<': '<',\n '>': '>'\n};\n\nconst pe = m => esca[m];\n\n/**\n * Safely escape HTML entities such as `&`, `<`, `>` only.\n * @param {string} es the input to safely escape\n * @returns {string} the escaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const escape = es => replace.call(es, ca, pe);\n","import {ATTRIBUTE_NODE} from '../shared/constants.js';\nimport {CHANGED, VALUE} from '../shared/symbols.js';\nimport {String, ignoreCase} from '../shared/utils.js';\nimport {attrAsJSON} from '../shared/jsdon.js';\nimport {emptyAttributes} from '../shared/attributes.js';\n\nimport {attributeChangedCallback as moAttributes} from './mutation-observer.js';\nimport {attributeChangedCallback as ceAttributes} from './custom-element-registry.js';\n\nimport {Node} from './node.js';\nimport {escape} from '../shared/text-escaper.js';\n\nconst QUOTE = /\"/g;\n\n/**\n * @implements globalThis.Attr\n */\nexport class Attr extends Node {\n constructor(ownerDocument, name, value = '') {\n super(ownerDocument, name, ATTRIBUTE_NODE);\n this.ownerElement = null;\n this.name = String(name);\n this[VALUE] = String(value);\n this[CHANGED] = false;\n }\n\n get value() { return this[VALUE]; }\n set value(newValue) {\n const {[VALUE]: oldValue, name, ownerElement} = this;\n this[VALUE] = String(newValue);\n this[CHANGED] = true;\n if (ownerElement) {\n moAttributes(ownerElement, name, oldValue);\n ceAttributes(ownerElement, name, oldValue, this[VALUE]);\n }\n }\n\n cloneNode() {\n const {ownerDocument, name, [VALUE]: value} = this;\n return new Attr(ownerDocument, name, value);\n }\n\n toString() {\n const {name, [VALUE]: value} = this;\n if (emptyAttributes.has(name) && !value) {\n return ignoreCase(this) ? name : `${name}=\"\"`;\n }\n const escapedValue = (ignoreCase(this) ? value : escape(value)).replace(QUOTE, '"');\n return `${name}=\"${escapedValue}\"`;\n }\n\n toJSON() {\n const json = [];\n attrAsJSON(this, json);\n return json;\n }\n}\n","import {\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n TEXT_NODE,\n NODE_END\n} from './constants.js';\n\nimport {START, NEXT, PREV} from './symbols.js';\nimport {getEnd} from './utils.js';\n\nexport const isConnected = ({ownerDocument, parentNode}) => {\n while (parentNode) {\n if (parentNode === ownerDocument)\n return true;\n parentNode = parentNode.parentNode || parentNode.host;\n }\n return false;\n};\n\nexport const parentElement = ({parentNode}) => {\n if (parentNode) {\n switch (parentNode.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n return null;\n }\n }\n return parentNode;\n};\n\nexport const previousSibling = ({[PREV]: prev}) => {\n switch (prev ? prev.nodeType : 0) {\n case NODE_END:\n return prev[START];\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n return prev;\n }\n return null;\n};\n\nexport const nextSibling = node => {\n const next = getEnd(node)[NEXT];\n return next && (next.nodeType === NODE_END ? null : next);\n};\n","// https://dom.spec.whatwg.org/#nondocumenttypechildnode\n// CharacterData, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\n\nimport {nextSibling, previousSibling} from '../shared/node.js';\n\nexport const nextElementSibling = node => {\n let next = nextSibling(node);\n while (next && next.nodeType !== ELEMENT_NODE)\n next = nextSibling(next);\n return next;\n};\n\nexport const previousElementSibling = node => {\n let prev = previousSibling(node);\n while (prev && prev.nodeType !== ELEMENT_NODE)\n prev = previousSibling(prev);\n return prev;\n};\n","// https://dom.spec.whatwg.org/#childnode\n// CharacterData, DocumentType, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {disconnectedCallback} from '../interface/custom-element-registry.js';\n\nconst asFragment = (ownerDocument, nodes) => {\n const fragment = ownerDocument.createDocumentFragment();\n fragment.append(...nodes);\n return fragment;\n};\n\nexport const before = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n};\n\nexport const after = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n getEnd(node)[NEXT]\n );\n};\n\nexport const replaceWith = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode) {\n if (nodes.includes(node))\n replaceWith(node, [node = node.cloneNode()]);\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n node.remove();\n }\n};\n\nexport const remove = (prev, current, next) => {\n const {parentNode, nodeType} = current;\n if (prev || next) {\n setAdjacent(prev, next);\n current[PREV] = null;\n getEnd(current)[NEXT] = null;\n }\n if (parentNode) {\n current.parentNode = null;\n moCallback(current, parentNode);\n if (nodeType === ELEMENT_NODE)\n disconnectedCallback(current);\n }\n};\n","// https://dom.spec.whatwg.org/#interface-characterdata\n\nimport {NEXT, PREV, VALUE} from '../shared/symbols.js';\nimport {String} from '../shared/utils.js';\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {characterDataAsJSON} from '../shared/jsdon.js';\n\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\n\nimport {Node} from './node.js';\nimport {moCallback} from './mutation-observer.js';\n\n/**\n * @implements globalThis.CharacterData\n */\nexport class CharacterData extends Node {\n\n constructor(ownerDocument, localName, nodeType, data) {\n super(ownerDocument, localName, nodeType);\n this[VALUE] = String(data);\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[NEXT]); }\n // </Mixins>\n\n // CharacterData only\n /* c8 ignore start */\n get data() { return this[VALUE]; }\n set data(value) {\n this[VALUE] = String(value);\n moCallback(this, this.parentNode);\n }\n\n get nodeValue() { return this.data; }\n set nodeValue(value) { this.data = value; }\n\n get textContent() { return this.data; }\n set textContent(value) { this.data = value; }\n\n get length() { return this.data.length; }\n\n substringData(offset, count) {\n return this.data.substr(offset, count);\n }\n\n appendData(data) {\n this.data += data;\n }\n\n insertData(offset, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset);\n }\n\n deleteData(offset, count) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + t.slice(offset + count);\n }\n\n replaceData(offset, count, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset + count);\n }\n /* c8 ignore stop */\n\n toJSON() {\n const json = [];\n characterDataAsJSON(this, json);\n return json;\n }\n}\n","import {CDATA_SECTION_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.CDATASection\n */\nexport class CDATASection extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#cdatasection', CDATA_SECTION_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new CDATASection(ownerDocument, data);\n }\n\n toString() { return `<![CDATA[${this[VALUE]}]]>`; }\n}\n","import {COMMENT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Comment\n */\nexport class Comment extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#comment', COMMENT_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Comment(ownerDocument, data);\n }\n\n toString() { return `<!--${this[VALUE]}-->`; }\n}\n","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"Attribute\"] = \"attribute\";\n SelectorType[\"Pseudo\"] = \"pseudo\";\n SelectorType[\"PseudoElement\"] = \"pseudo-element\";\n SelectorType[\"Tag\"] = \"tag\";\n SelectorType[\"Universal\"] = \"universal\";\n // Traversals\n SelectorType[\"Adjacent\"] = \"adjacent\";\n SelectorType[\"Child\"] = \"child\";\n SelectorType[\"Descendant\"] = \"descendant\";\n SelectorType[\"Parent\"] = \"parent\";\n SelectorType[\"Sibling\"] = \"sibling\";\n SelectorType[\"ColumnCombinator\"] = \"column-combinator\";\n})(SelectorType || (SelectorType = {}));\n/**\n * Modes for ignore case.\n *\n * This could be updated to an enum, and the object is\n * the current stand-in that will allow code to be updated\n * without big changes.\n */\nexport const IgnoreCaseMode = {\n Unknown: null,\n QuirksMode: \"quirks\",\n IgnoreCase: true,\n CaseSensitive: false,\n};\nexport var AttributeAction;\n(function (AttributeAction) {\n AttributeAction[\"Any\"] = \"any\";\n AttributeAction[\"Element\"] = \"element\";\n AttributeAction[\"End\"] = \"end\";\n AttributeAction[\"Equals\"] = \"equals\";\n AttributeAction[\"Exists\"] = \"exists\";\n AttributeAction[\"Hyphen\"] = \"hyphen\";\n AttributeAction[\"Not\"] = \"not\";\n AttributeAction[\"Start\"] = \"start\";\n})(AttributeAction || (AttributeAction = {}));\n","import { SelectorType, AttributeAction, } from \"./types\";\nconst reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nconst reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nconst actionTypes = new Map([\n [126 /* Tilde */, AttributeAction.Element],\n [94 /* Circumflex */, AttributeAction.Start],\n [36 /* Dollar */, AttributeAction.End],\n [42 /* Asterisk */, AttributeAction.Any],\n [33 /* ExclamationMark */, AttributeAction.Not],\n [124 /* Pipe */, AttributeAction.Hyphen],\n]);\n// Pseudos, whose data property is parsed as well.\nconst unpackPseudos = new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nexport function isTraversal(selector) {\n switch (selector.type) {\n case SelectorType.Adjacent:\n case SelectorType.Child:\n case SelectorType.Descendant:\n case SelectorType.Parent:\n case SelectorType.Sibling:\n case SelectorType.ColumnCombinator:\n return true;\n default:\n return false;\n }\n}\nconst stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n const high = parseInt(escaped, 16) - 0x10000;\n // NaN means non-codepoint\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n}\nfunction isQuote(c) {\n return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;\n}\nfunction isWhitespace(c) {\n return (c === 32 /* Space */ ||\n c === 9 /* Tab */ ||\n c === 10 /* NewLine */ ||\n c === 12 /* FormFeed */ ||\n c === 13 /* CarriageReturn */);\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nexport function parse(selector) {\n const subselects = [];\n const endIndex = parseSelector(subselects, `${selector}`, 0);\n if (endIndex < selector.length) {\n throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);\n }\n return subselects;\n}\nfunction parseSelector(subselects, selector, selectorIndex) {\n let tokens = [];\n function getName(offset) {\n const match = selector.slice(selectorIndex + offset).match(reName);\n if (!match) {\n throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);\n }\n const [name] = match;\n selectorIndex += offset + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset) {\n selectorIndex += offset;\n while (selectorIndex < selector.length &&\n isWhitespace(selector.charCodeAt(selectorIndex))) {\n selectorIndex++;\n }\n }\n function readValueWithParenthesis() {\n selectorIndex += 1;\n const start = selectorIndex;\n let counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter++;\n }\n else if (selector.charCodeAt(selectorIndex) ===\n 41 /* RightParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n return unescapeCSS(selector.slice(start, selectorIndex - 1));\n }\n function isEscaped(pos) {\n let slashCount = 0;\n while (selector.charCodeAt(--pos) === 92 /* BackSlash */)\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n function addTraversal(type) {\n if (tokens.length > 0 &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens[tokens.length - 1].type = type;\n return;\n }\n ensureNotTraversal();\n tokens.push({ type });\n }\n function addSpecialAttribute(name, action) {\n tokens.push({\n type: SelectorType.Attribute,\n name,\n action,\n value: getName(1),\n namespace: null,\n ignoreCase: \"quirks\",\n });\n }\n /**\n * We have finished parsing the current part of the selector.\n *\n * Remove descendant tokens at the end if they exist,\n * and return the last index, so that parsing can be\n * picked up from here.\n */\n function finalizeSubselector() {\n if (tokens.length &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens.pop();\n }\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n }\n stripWhitespace(0);\n if (selector.length === selectorIndex) {\n return selectorIndex;\n }\n loop: while (selectorIndex < selector.length) {\n const firstChar = selector.charCodeAt(selectorIndex);\n switch (firstChar) {\n // Whitespace\n case 32 /* Space */:\n case 9 /* Tab */:\n case 10 /* NewLine */:\n case 12 /* FormFeed */:\n case 13 /* CarriageReturn */: {\n if (tokens.length === 0 ||\n tokens[0].type !== SelectorType.Descendant) {\n ensureNotTraversal();\n tokens.push({ type: SelectorType.Descendant });\n }\n stripWhitespace(1);\n break;\n }\n // Traversals\n case 62 /* GreaterThan */: {\n addTraversal(SelectorType.Child);\n stripWhitespace(1);\n break;\n }\n case 60 /* LessThan */: {\n addTraversal(SelectorType.Parent);\n stripWhitespace(1);\n break;\n }\n case 126 /* Tilde */: {\n addTraversal(SelectorType.Sibling);\n stripWhitespace(1);\n break;\n }\n case 43 /* Plus */: {\n addTraversal(SelectorType.Adjacent);\n stripWhitespace(1);\n break;\n }\n // Special attribute selectors: .class, #id\n case 46 /* Period */: {\n addSpecialAttribute(\"class\", AttributeAction.Element);\n break;\n }\n case 35 /* Hash */: {\n addSpecialAttribute(\"id\", AttributeAction.Equals);\n break;\n }\n case 91 /* LeftSquareBracket */: {\n stripWhitespace(1);\n // Determine attribute name and namespace\n let name;\n let namespace = null;\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {\n // Equivalent to no namespace\n name = getName(1);\n }\n else if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n name = getName(2);\n }\n else {\n name = getName(0);\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n namespace = name;\n name = getName(1);\n }\n }\n stripWhitespace(0);\n // Determine comparison operation\n let action = AttributeAction.Exists;\n const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n }\n else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {\n action = AttributeAction.Equals;\n stripWhitespace(1);\n }\n // Determine value\n let value = \"\";\n let ignoreCase = null;\n if (action !== \"exists\") {\n if (isQuote(selector.charCodeAt(selectorIndex))) {\n const quote = selector.charCodeAt(selectorIndex);\n let sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length &&\n (selector.charCodeAt(sectionEnd) !== quote ||\n isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charCodeAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n }\n else {\n const valueStart = selectorIndex;\n while (selectorIndex < selector.length &&\n ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&\n selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) ||\n isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n // See if we have a force ignore flag\n const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;\n // If the forceIgnore flag is set (either `i` or `s`), use that value\n if (forceIgnore === 115 /* LowerS */) {\n ignoreCase = false;\n stripWhitespace(1);\n }\n else if (forceIgnore === 105 /* LowerI */) {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n if (selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n const attributeSelector = {\n type: SelectorType.Attribute,\n name,\n action,\n value,\n namespace,\n ignoreCase,\n };\n tokens.push(attributeSelector);\n break;\n }\n case 58 /* Colon */: {\n if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {\n tokens.push({\n type: SelectorType.PseudoElement,\n name: getName(2).toLowerCase(),\n data: selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */\n ? readValueWithParenthesis()\n : null,\n });\n continue;\n }\n const name = getName(1).toLowerCase();\n let data = null;\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */) {\n if (unpackPseudos.has(name)) {\n if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n throw new Error(`Pseudo-selector ${name} cannot be quoted`);\n }\n data = [];\n selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n if (selector.charCodeAt(selectorIndex) !==\n 41 /* RightParenthesis */) {\n throw new Error(`Missing closing parenthesis in :${name} (${selector})`);\n }\n selectorIndex += 1;\n }\n else {\n data = readValueWithParenthesis();\n if (stripQuotesFromPseudos.has(name)) {\n const quot = data.charCodeAt(0);\n if (quot === data.charCodeAt(data.length - 1) &&\n isQuote(quot)) {\n data = data.slice(1, -1);\n }\n }\n data = unescapeCSS(data);\n }\n }\n tokens.push({ type: SelectorType.Pseudo, name, data });\n break;\n }\n case 44 /* Comma */: {\n finalizeSubselector();\n tokens = [];\n stripWhitespace(1);\n break;\n }\n default: {\n if (selector.startsWith(\"/*\", selectorIndex)) {\n const endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n // Remove leading whitespace\n if (tokens.length === 0) {\n stripWhitespace(0);\n }\n break;\n }\n let namespace = null;\n let name;\n if (firstChar === 42 /* Asterisk */) {\n selectorIndex += 1;\n name = \"*\";\n }\n else if (firstChar === 124 /* Pipe */) {\n name = \"\";\n if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {\n addTraversal(SelectorType.ColumnCombinator);\n stripWhitespace(2);\n break;\n }\n }\n else if (reName.test(selector.slice(selectorIndex))) {\n name = getName(0);\n }\n else {\n break loop;\n }\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {\n namespace = name;\n if (selector.charCodeAt(selectorIndex + 1) ===\n 42 /* Asterisk */) {\n name = \"*\";\n selectorIndex += 2;\n }\n else {\n name = getName(1);\n }\n }\n tokens.push(name === \"*\"\n ? { type: SelectorType.Universal, namespace }\n : { type: SelectorType.Tag, name, namespace });\n }\n }\n }\n finalizeSubselector();\n return selectorIndex;\n}\n","import { AttributeAction, SelectorType } from \"css-what\";\nconst procedure = new Map([\n [SelectorType.Universal, 50],\n [SelectorType.Tag, 30],\n [SelectorType.Attribute, 1],\n [SelectorType.Pseudo, 0],\n]);\nexport function isTraversal(token) {\n return !procedure.has(token.type);\n}\nconst attributes = new Map([\n [AttributeAction.Exists, 10],\n [AttributeAction.Equals, 8],\n [AttributeAction.Not, 7],\n [AttributeAction.Start, 6],\n [AttributeAction.End, 6],\n [AttributeAction.Any, 5],\n]);\n/**\n * Sort the parts of the passed selector,\n * as there is potential for optimization\n * (some types of selectors are faster than others)\n *\n * @param arr Selector to sort\n */\nexport default function sortByProcedure(arr) {\n const procs = arr.map(getProcedure);\n for (let i = 1; i < arr.length; i++) {\n const procNew = procs[i];\n if (procNew < 0)\n continue;\n for (let j = i - 1; j >= 0 && procNew < procs[j]; j--) {\n const token = arr[j + 1];\n arr[j + 1] = arr[j];\n arr[j] = token;\n procs[j + 1] = procs[j];\n procs[j] = procNew;\n }\n }\n}\nfunction getProcedure(token) {\n var _a, _b;\n let proc = (_a = procedure.get(token.type)) !== null && _a !== void 0 ? _a : -1;\n if (token.type === SelectorType.Attribute) {\n proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4;\n if (token.action === AttributeAction.Equals && token.name === \"id\") {\n // Prefer ID selectors (eg. #ID)\n proc = 9;\n }\n if (token.ignoreCase) {\n /*\n * IgnoreCase adds some overhead, prefer \"normal\" token\n * this is a binary operation, to ensure it's still an int\n */\n proc >>= 1;\n }\n }\n else if (token.type === SelectorType.Pseudo) {\n if (!token.data) {\n proc = 3;\n }\n else if (token.name === \"has\" || token.name === \"contains\") {\n proc = 0; // Expensive in any case\n }\n else if (Array.isArray(token.data)) {\n // Eg. :matches, :not\n proc = Math.min(...token.data.map((d) => Math.min(...d.map(getProcedure))));\n // If we have traversals, try to avoid executing this selector\n if (proc < 0) {\n proc = 0;\n }\n }\n else {\n proc = 2;\n }\n }\n return proc;\n}\n//# sourceMappingURL=sort.js.map","import boolbase from \"boolbase\";\n/**\n * All reserved characters in a regex, used for escaping.\n *\n * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license\n * https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794\n */\nconst reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\nfunction escapeRegex(value) {\n return value.replace(reChars, \"\\\\$&\");\n}\n/**\n * Attributes that are case-insensitive in HTML.\n *\n * @private\n * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors\n */\nconst caseInsensitiveAttributes = new Set([\n \"accept\",\n \"accept-charset\",\n \"align\",\n \"alink\",\n \"axis\",\n \"bgcolor\",\n \"charset\",\n \"checked\",\n \"clear\",\n \"codetype\",\n \"color\",\n \"compact\",\n \"declare\",\n \"defer\",\n \"dir\",\n \"direction\",\n \"disabled\",\n \"enctype\",\n \"face\",\n \"frame\",\n \"hreflang\",\n \"http-equiv\",\n \"lang\",\n \"language\",\n \"link\",\n \"media\",\n \"method\",\n \"multiple\",\n \"nohref\",\n \"noresize\",\n \"noshade\",\n \"nowrap\",\n \"readonly\",\n \"rel\",\n \"rev\",\n \"rules\",\n \"scope\",\n \"scrolling\",\n \"selected\",\n \"shape\",\n \"target\",\n \"text\",\n \"type\",\n \"valign\",\n \"valuetype\",\n \"vlink\",\n]);\nfunction shouldIgnoreCase(selector, options) {\n return typeof selector.ignoreCase === \"boolean\"\n ? selector.ignoreCase\n : selector.ignoreCase === \"quirks\"\n ? !!options.quirksMode\n : !options.xmlMode && caseInsensitiveAttributes.has(selector.name);\n}\n/**\n * Attribute selectors\n */\nexport const attributeRules = {\n equals(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length === value.length &&\n attr.toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) === value && next(elem);\n },\n hyphen(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function hyphenIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return function hyphen(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len) === value &&\n next(elem));\n };\n },\n element(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (/\\s/.test(value)) {\n return boolbase.falseFunc;\n }\n const regex = new RegExp(`(?:^|\\\\s)${escapeRegex(value)}(?:$|\\\\s)`, shouldIgnoreCase(data, options) ? \"i\" : \"\");\n return function element(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n },\n exists(next, { name }, { adapter }) {\n return (elem) => adapter.hasAttrib(elem, name) && next(elem);\n },\n start(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= len &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) &&\n next(elem);\n };\n },\n end(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = -value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n var _a;\n return ((_a = adapter\n .getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem);\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) &&\n next(elem);\n };\n },\n any(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (value === \"\") {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n const regex = new RegExp(escapeRegex(value), \"i\");\n return function anyIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) &&\n next(elem);\n };\n },\n not(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (value === \"\") {\n return (elem) => !!adapter.getAttributeValue(elem, name) && next(elem);\n }\n else if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return ((attr == null ||\n attr.length !== value.length ||\n attr.toLowerCase() !== value) &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) !== value && next(elem);\n },\n};\n//# sourceMappingURL=attributes.js.map","// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\n// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is \" \\t\\r\\n\\f\"\nconst whitespace = new Set([9, 10, 12, 13, 32]);\nconst ZERO = \"0\".charCodeAt(0);\nconst NINE = \"9\".charCodeAt(0);\n/**\n * Parses an expression.\n *\n * @throws An `Error` if parsing fails.\n * @returns An array containing the integer step size and the integer offset of the nth rule.\n * @example nthCheck.parse(\"2n+3\"); // returns [2, 3]\n */\nexport function parse(formula) {\n formula = formula.trim().toLowerCase();\n if (formula === \"even\") {\n return [2, 0];\n }\n else if (formula === \"odd\") {\n return [2, 1];\n }\n // Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\n let idx = 0;\n let a = 0;\n let sign = readSign();\n let number = readNumber();\n if (idx < formula.length && formula.charAt(idx) === \"n\") {\n idx++;\n a = sign * (number !== null && number !== void 0 ? number : 1);\n skipWhitespace();\n if (idx < formula.length) {\n sign = readSign();\n skipWhitespace();\n number = readNumber();\n }\n else {\n sign = number = 0;\n }\n }\n // Throw if there is anything else\n if (number === null || idx < formula.length) {\n throw new Error(`n-th rule couldn't be parsed ('${formula}')`);\n }\n return [a, sign * number];\n function readSign() {\n if (formula.charAt(idx) === \"-\") {\n idx++;\n return -1;\n }\n if (formula.charAt(idx) === \"+\") {\n idx++;\n }\n return 1;\n }\n function readNumber() {\n const start = idx;\n let value = 0;\n while (idx < formula.length &&\n formula.charCodeAt(idx) >= ZERO &&\n formula.charCodeAt(idx) <= NINE) {\n value = value * 10 + (formula.charCodeAt(idx) - ZERO);\n idx++;\n }\n // Return `null` if we didn't read anything.\n return idx === start ? null : value;\n }\n function skipWhitespace() {\n while (idx < formula.length &&\n whitespace.has(formula.charCodeAt(idx))) {\n idx++;\n }\n }\n}\n//# sourceMappingURL=parse.js.map","import { parse } from \"./parse.js\";\nimport { compile, generate } from \"./compile.js\";\nexport { parse, compile, generate };\n/**\n * Parses and compiles a formula to a highly optimized function.\n * Combination of {@link parse} and {@link compile}.\n *\n * If the formula doesn't match any elements,\n * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.\n * Otherwise, a function accepting an _index_ is returned, which returns\n * whether or not the passed _index_ matches the formula.\n *\n * Note: The nth-rule starts counting at `1`, the returned function at `0`.\n *\n * @param formula The formula to compile.\n * @example\n * const check = nthCheck(\"2n+3\");\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n */\nexport default function nthCheck(formula) {\n return compile(parse(formula));\n}\n/**\n * Parses and compiles a formula to a generator that produces a sequence of indices.\n * Combination of {@link parse} and {@link generate}.\n *\n * @param formula The formula to compile.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing</caption>\n *\n * ```js\n * const gen = nthCheck.sequence('2n+3')\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value</caption>\n *\n * ```js\n *\n * const gen = nthCheck.sequence('-2n+5');\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function sequence(formula) {\n return generate(parse(formula));\n}\n//# sourceMappingURL=index.js.map","import boolbase from \"boolbase\";\n/**\n * Returns a function that checks if an elements index matches the given rule\n * highly optimized to return the fastest solution.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A highly optimized function that returns whether an index matches the nth-check.\n * @example\n *\n * ```js\n * const check = nthCheck.compile([2, 3]);\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n * ```\n */\nexport function compile(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n const b = parsed[1] - 1;\n /*\n * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.\n * Besides, the specification states that no elements are\n * matched when `a` and `b` are 0.\n *\n * `b < 0` here as we subtracted 1 from `b` above.\n */\n if (b < 0 && a <= 0)\n return boolbase.falseFunc;\n // When `a` is in the range -1..1, it matches any element (so only `b` is checked).\n if (a === -1)\n return (index) => index <= b;\n if (a === 0)\n return (index) => index === b;\n // When `b <= 0` and `a === 1`, they match any element.\n if (a === 1)\n return b < 0 ? boolbase.trueFunc : (index) => index >= b;\n /*\n * Otherwise, modulo can be used to check if there is a match.\n *\n * Modulo doesn't care about the sign, so let's use `a`s absolute value.\n */\n const absA = Math.abs(a);\n // Get `b mod a`, + a if this is negative.\n const bMod = ((b % absA) + absA) % absA;\n return a > 1\n ? (index) => index >= b && index % absA === bMod\n : (index) => index <= b && index % absA === bMod;\n}\n/**\n * Returns a function that produces a monotonously increasing sequence of indices.\n *\n * If the sequence has an end, the returned function will return `null` after\n * the last index in the sequence.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing (2n+3)</caption>\n *\n * ```js\n * const gen = nthCheck.generate([2, 3])\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value (-2n+10)</caption>\n *\n * ```js\n *\n * const gen = nthCheck.generate([-2, 5]);\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function generate(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n let b = parsed[1] - 1;\n let n = 0;\n // Make sure to always return an increasing sequence\n if (a < 0) {\n const aPos = -a;\n // Get `b mod a`\n const minValue = ((b % aPos) + aPos) % aPos;\n return () => {\n const val = minValue + aPos * n++;\n return val > b ? null : val;\n };\n }\n if (a === 0)\n return b < 0\n ? // There are no result — always return `null`\n () => null\n : // Return `b` exactly once\n () => (n++ === 0 ? b : null);\n if (b < 0) {\n b += a * Math.ceil(-b / a);\n }\n return () => a * n++ + b;\n}\n//# sourceMappingURL=compile.js.map","import getNCheck from \"nth-check\";\nimport boolbase from \"boolbase\";\nfunction getChildFunc(next, adapter) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(elem);\n };\n}\nexport const filters = {\n contains(next, text, { adapter }) {\n return function contains(elem) {\n return next(elem) && adapter.getText(elem).includes(text);\n };\n },\n icontains(next, text, { adapter }) {\n const itext = text.toLowerCase();\n return function icontains(elem) {\n return (next(elem) &&\n adapter.getText(elem).toLowerCase().includes(itext));\n };\n },\n // Location specific methods\n \"nth-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n // TODO determine the actual root element\n root(next, _rule, { adapter }) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return (parent == null || !adapter.isTag(parent)) && next(elem);\n };\n },\n scope(next, rule, options, context) {\n const { equals } = options;\n if (!context || context.length === 0) {\n // Equivalent to :root\n return filters[\"root\"](next, rule, options);\n }\n if (context.length === 1) {\n // NOTE: can't be unpacked, as :has uses this for side-effects\n return (elem) => equals(context[0], elem) && next(elem);\n }\n return (elem) => context.includes(elem) && next(elem);\n },\n hover: dynamicStatePseudo(\"isHovered\"),\n visited: dynamicStatePseudo(\"isVisited\"),\n active: dynamicStatePseudo(\"isActive\"),\n};\n/**\n * Dynamic state pseudos. These depend on optional Adapter methods.\n *\n * @param name The name of the adapter method to call.\n * @returns Pseudo for the `filters` object.\n */\nfunction dynamicStatePseudo(name) {\n return function dynamicPseudo(next, _rule, { adapter }) {\n const func = adapter[name];\n if (typeof func !== \"function\") {\n return boolbase.falseFunc;\n }\n return function active(elem) {\n return func(elem) && next(elem);\n };\n };\n}\n//# sourceMappingURL=filters.js.map","// While filters are precompiled, pseudos get called when they are needed\nexport const pseudos = {\n empty(elem, { adapter }) {\n return !adapter.getChildren(elem).some((elem) => \n // FIXME: `getText` call is potentially expensive.\n adapter.isTag(elem) || adapter.getText(elem) !== \"\");\n },\n \"first-child\"(elem, { adapter, equals }) {\n if (adapter.prevElementSibling) {\n return adapter.prevElementSibling(elem) == null;\n }\n const firstChild = adapter\n .getSiblings(elem)\n .find((elem) => adapter.isTag(elem));\n return firstChild != null && equals(elem, firstChild);\n },\n \"last-child\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n return true;\n if (adapter.isTag(siblings[i]))\n break;\n }\n return false;\n },\n \"first-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"last-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"only-of-type\"(elem, { adapter, equals }) {\n const elemName = adapter.getName(elem);\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) ||\n !adapter.isTag(sibling) ||\n adapter.getName(sibling) !== elemName);\n },\n \"only-child\"(elem, { adapter, equals }) {\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) || !adapter.isTag(sibling));\n },\n};\nexport function verifyPseudoArgs(func, name, subselect, argIndex) {\n if (subselect === null) {\n if (func.length > argIndex) {\n throw new Error(`Pseudo-class :${name} requires an argument`);\n }\n }\n else if (func.length === argIndex) {\n throw new Error(`Pseudo-class :${name} doesn't have any arguments`);\n }\n}\n//# sourceMappingURL=pseudos.js.map","/**\n * Aliases are pseudos that are expressed as selectors.\n */\nexport const aliases = {\n // Links\n \"any-link\": \":is(a, area, link)[href]\",\n link: \":any-link:not(:visited)\",\n // Forms\n // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements\n disabled: `:is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )`,\n enabled: \":not(:disabled)\",\n checked: \":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)\",\n required: \":is(input, select, textarea)[required]\",\n optional: \":is(input, select, textarea):not([required])\",\n // JQuery extensions\n // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness\n selected: \"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)\",\n checkbox: \"[type=checkbox]\",\n file: \"[type=file]\",\n password: \"[type=password]\",\n radio: \"[type=radio]\",\n reset: \"[type=reset]\",\n image: \"[type=image]\",\n submit: \"[type=submit]\",\n parent: \":not(:empty)\",\n header: \":is(h1, h2, h3, h4, h5, h6)\",\n button: \":is(button, input[type=button])\",\n input: \":is(input, textarea, select, button)\",\n text: \"input:is(:not([type!='']), [type=text])\",\n};\n//# sourceMappingURL=aliases.js.map","import boolbase from \"boolbase\";\nimport { isTraversal } from \"../sort.js\";\n/** Used as a placeholder for :has. Will be replaced with the actual element. */\nexport const PLACEHOLDER_ELEMENT = {};\nexport function ensureIsTag(next, adapter) {\n if (next === boolbase.falseFunc)\n return boolbase.falseFunc;\n return (elem) => adapter.isTag(elem) && next(elem);\n}\nexport function getNextSiblings(elem, adapter) {\n const siblings = adapter.getSiblings(elem);\n if (siblings.length <= 1)\n return [];\n const elemIndex = siblings.indexOf(elem);\n if (elemIndex < 0 || elemIndex === siblings.length - 1)\n return [];\n return siblings.slice(elemIndex + 1).filter(adapter.isTag);\n}\nfunction copyOptions(options) {\n // Not copied: context, rootFunc\n return {\n xmlMode: !!options.xmlMode,\n lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,\n lowerCaseTags: !!options.lowerCaseTags,\n quirksMode: !!options.quirksMode,\n cacheResults: !!options.cacheResults,\n pseudos: options.pseudos,\n adapter: options.adapter,\n equals: options.equals,\n };\n}\nconst is = (next, token, options, context, compileToken) => {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.trueFunc\n ? next\n : func === boolbase.falseFunc\n ? boolbase.falseFunc\n : (elem) => func(elem) && next(elem);\n};\n/*\n * :not, :has, :is, :matches and :where have to compile selectors\n * doing this in src/pseudos.ts would lead to circular dependencies,\n * so we add them here\n */\nexport const subselects = {\n is,\n /**\n * `:matches` and `:where` are aliases for `:is`.\n */\n matches: is,\n where: is,\n not(next, token, options, context, compileToken) {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.falseFunc\n ? next\n : func === boolbase.trueFunc\n ? boolbase.falseFunc\n : (elem) => !func(elem) && next(elem);\n },\n has(next, subselect, options, _context, compileToken) {\n const { adapter } = options;\n const opts = copyOptions(options);\n opts.relativeSelector = true;\n const context = subselect.some((s) => s.some(isTraversal))\n ? // Used as a placeholder. Will be replaced with the actual element.\n [PLACEHOLDER_ELEMENT]\n : undefined;\n const compiled = compileToken(subselect, opts, context);\n if (compiled === boolbase.falseFunc)\n return boolbase.falseFunc;\n const hasElement = ensureIsTag(compiled, adapter);\n // If `compiled` is `trueFunc`, we can skip this.\n if (context && compiled !== boolbase.trueFunc) {\n /*\n * `shouldTestNextSiblings` will only be true if the query starts with\n * a traversal (sibling or adjacent). That means we will always have a context.\n */\n const { shouldTestNextSiblings = false } = compiled;\n return (elem) => {\n if (!next(elem))\n return false;\n context[0] = elem;\n const childs = adapter.getChildren(elem);\n const nextElements = shouldTestNextSiblings\n ? [...childs, ...getNextSiblings(elem, adapter)]\n : childs;\n return adapter.existsOne(hasElement, nextElements);\n };\n }\n return (elem) => next(elem) &&\n adapter.existsOne(hasElement, adapter.getChildren(elem));\n },\n};\n//# sourceMappingURL=subselects.js.map","import { attributeRules } from \"./attributes.js\";\nimport { compilePseudoSelector } from \"./pseudo-selectors/index.js\";\nimport { SelectorType } from \"css-what\";\nfunction getElementParent(node, adapter) {\n const parent = adapter.getParent(node);\n if (parent && adapter.isTag(parent)) {\n return parent;\n }\n return null;\n}\n/*\n * All available rules\n */\nexport function compileGeneralSelector(next, selector, options, context, compileToken) {\n const { adapter, equals } = options;\n switch (selector.type) {\n case SelectorType.PseudoElement: {\n throw new Error(\"Pseudo-elements are not supported by css-select\");\n }\n case SelectorType.ColumnCombinator: {\n throw new Error(\"Column combinators are not yet supported by css-select\");\n }\n case SelectorType.Attribute: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced attributes are not yet supported by css-select\");\n }\n if (!options.xmlMode || options.lowerCaseAttributeNames) {\n selector.name = selector.name.toLowerCase();\n }\n return attributeRules[selector.action](next, selector, options);\n }\n case SelectorType.Pseudo: {\n return compilePseudoSelector(next, selector, options, context, compileToken);\n }\n // Tags\n case SelectorType.Tag: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced tag names are not yet supported by css-select\");\n }\n let { name } = selector;\n if (!options.xmlMode || options.lowerCaseTags) {\n name = name.toLowerCase();\n }\n return function tag(elem) {\n return adapter.getName(elem) === name && next(elem);\n };\n }\n // Traversal\n case SelectorType.Descendant: {\n if (options.cacheResults === false ||\n typeof WeakSet === \"undefined\") {\n return function descendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (next(current)) {\n return true;\n }\n }\n return false;\n };\n }\n // @ts-expect-error `ElementNode` is not extending object\n const isFalseCache = new WeakSet();\n return function cachedDescendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (!isFalseCache.has(current)) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n isFalseCache.add(current);\n }\n }\n return false;\n };\n }\n case \"_flexibleDescendant\": {\n // Include element itself, only used while querying an array\n return function flexibleDescendant(elem) {\n let current = elem;\n do {\n if (next(current))\n return true;\n } while ((current = getElementParent(current, adapter)));\n return false;\n };\n }\n case SelectorType.Parent: {\n return function parent(elem) {\n return adapter\n .getChildren(elem)\n .some((elem) => adapter.isTag(elem) && next(elem));\n };\n }\n case SelectorType.Child: {\n return function child(elem) {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(parent);\n };\n }\n case SelectorType.Sibling: {\n return function sibling(elem) {\n const siblings = adapter.getSiblings(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && next(currentSibling)) {\n return true;\n }\n }\n return false;\n };\n }\n case SelectorType.Adjacent: {\n if (adapter.prevElementSibling) {\n return function adjacent(elem) {\n const previous = adapter.prevElementSibling(elem);\n return previous != null && next(previous);\n };\n }\n return function adjacent(elem) {\n const siblings = adapter.getSiblings(elem);\n let lastElement;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling)) {\n lastElement = currentSibling;\n }\n }\n return !!lastElement && next(lastElement);\n };\n }\n case SelectorType.Universal: {\n if (selector.namespace != null && selector.namespace !== \"*\") {\n throw new Error(\"Namespaced universal selectors are not yet supported by css-select\");\n }\n return next;\n }\n }\n}\n//# sourceMappingURL=general.js.map","import { parse } from \"css-what\";\nimport { filters } from \"./filters.js\";\nimport { pseudos, verifyPseudoArgs } from \"./pseudos.js\";\nimport { aliases } from \"./aliases.js\";\nimport { subselects } from \"./subselects.js\";\nexport { filters, pseudos, aliases };\nexport function compilePseudoSelector(next, selector, options, context, compileToken) {\n var _a;\n const { name, data } = selector;\n if (Array.isArray(data)) {\n if (!(name in subselects)) {\n throw new Error(`Unknown pseudo-class :${name}(${data})`);\n }\n return subselects[name](next, data, options, context, compileToken);\n }\n const userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];\n const stringPseudo = typeof userPseudo === \"string\" ? userPseudo : aliases[name];\n if (typeof stringPseudo === \"string\") {\n if (data != null) {\n throw new Error(`Pseudo ${name} doesn't have any arguments`);\n }\n // The alias has to be parsed here, to make sure options are respected.\n const alias = parse(stringPseudo);\n return subselects[\"is\"](next, alias, options, context, compileToken);\n }\n if (typeof userPseudo === \"function\") {\n verifyPseudoArgs(userPseudo, name, data, 1);\n return (elem) => userPseudo(elem, data) && next(elem);\n }\n if (name in filters) {\n return filters[name](next, data, options, context);\n }\n if (name in pseudos) {\n const pseudo = pseudos[name];\n verifyPseudoArgs(pseudo, name, data, 2);\n return (elem) => pseudo(elem, options, data) && next(elem);\n }\n throw new Error(`Unknown pseudo-class :${name}`);\n}\n//# sourceMappingURL=index.js.map","import { parse, SelectorType } from \"css-what\";\nimport boolbase from \"boolbase\";\nimport sortRules, { isTraversal } from \"./sort.js\";\nimport { compileGeneralSelector } from \"./general.js\";\nimport { ensureIsTag, PLACEHOLDER_ELEMENT, } from \"./pseudo-selectors/subselects.js\";\n/**\n * Compiles a selector to an executable function.\n *\n * @param selector Selector to compile.\n * @param options Compilation options.\n * @param context Optional context for the selector.\n */\nexport function compile(selector, options, context) {\n const next = compileUnsafe(selector, options, context);\n return ensureIsTag(next, options.adapter);\n}\nexport function compileUnsafe(selector, options, context) {\n const token = typeof selector === \"string\" ? parse(selector) : selector;\n return compileToken(token, options, context);\n}\nfunction includesScopePseudo(t) {\n return (t.type === SelectorType.Pseudo &&\n (t.name === \"scope\" ||\n (Array.isArray(t.data) &&\n t.data.some((data) => data.some(includesScopePseudo)))));\n}\nconst DESCENDANT_TOKEN = { type: SelectorType.Descendant };\nconst FLEXIBLE_DESCENDANT_TOKEN = {\n type: \"_flexibleDescendant\",\n};\nconst SCOPE_TOKEN = {\n type: SelectorType.Pseudo,\n name: \"scope\",\n data: null,\n};\n/*\n * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector\n * http://www.w3.org/TR/selectors4/#absolutizing\n */\nfunction absolutize(token, { adapter }, context) {\n // TODO Use better check if the context is a document\n const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => {\n const parent = adapter.isTag(e) && adapter.getParent(e);\n return e === PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));\n }));\n for (const t of token) {\n if (t.length > 0 &&\n isTraversal(t[0]) &&\n t[0].type !== SelectorType.Descendant) {\n // Don't continue in else branch\n }\n else if (hasContext && !t.some(includesScopePseudo)) {\n t.unshift(DESCENDANT_TOKEN);\n }\n else {\n continue;\n }\n t.unshift(SCOPE_TOKEN);\n }\n}\nexport function compileToken(token, options, context) {\n var _a;\n token.forEach(sortRules);\n context = (_a = options.context) !== null && _a !== void 0 ? _a : context;\n const isArrayContext = Array.isArray(context);\n const finalContext = context && (Array.isArray(context) ? context : [context]);\n // Check if the selector is relative\n if (options.relativeSelector !== false) {\n absolutize(token, options, finalContext);\n }\n else if (token.some((t) => t.length > 0 && isTraversal(t[0]))) {\n throw new Error(\"Relative selectors are not allowed when the `relativeSelector` option is disabled\");\n }\n let shouldTestNextSiblings = false;\n const query = token\n .map((rules) => {\n if (rules.length >= 2) {\n const [first, second] = rules;\n if (first.type !== SelectorType.Pseudo ||\n first.name !== \"scope\") {\n // Ignore\n }\n else if (isArrayContext &&\n second.type === SelectorType.Descendant) {\n rules[1] = FLEXIBLE_DESCENDANT_TOKEN;\n }\n else if (second.type === SelectorType.Adjacent ||\n second.type === SelectorType.Sibling) {\n shouldTestNextSiblings = true;\n }\n }\n return compileRules(rules, options, finalContext);\n })\n .reduce(reduceRules, boolbase.falseFunc);\n query.shouldTestNextSiblings = shouldTestNextSiblings;\n return query;\n}\nfunction compileRules(rules, options, context) {\n var _a;\n return rules.reduce((previous, rule) => previous === boolbase.falseFunc\n ? boolbase.falseFunc\n : compileGeneralSelector(previous, rule, options, context, compileToken), (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase.trueFunc);\n}\nfunction reduceRules(a, b) {\n if (b === boolbase.falseFunc || a === boolbase.trueFunc) {\n return a;\n }\n if (a === boolbase.falseFunc || b === boolbase.trueFunc) {\n return b;\n }\n return function combine(elem) {\n return a(elem) || b(elem);\n };\n}\n//# sourceMappingURL=compile.js.map","import * as DomUtils from \"domutils\";\nimport boolbase from \"boolbase\";\nimport { compile as compileRaw, compileUnsafe, compileToken, } from \"./compile.js\";\nimport { getNextSiblings } from \"./pseudo-selectors/subselects.js\";\nconst defaultEquals = (a, b) => a === b;\nconst defaultOptions = {\n adapter: DomUtils,\n equals: defaultEquals,\n};\nfunction convertOptionFormats(options) {\n var _a, _b, _c, _d;\n /*\n * We force one format of options to the other one.\n */\n // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.\n const opts = options !== null && options !== void 0 ? options : defaultOptions;\n // @ts-expect-error Same as above.\n (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);\n // @ts-expect-error `equals` does not exist on `Options`\n (_b = opts.equals) !== null && _b !== void 0 ? _b : (opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals);\n return opts;\n}\nfunction wrapCompile(func) {\n return function addAdapter(selector, options, context) {\n const opts = convertOptionFormats(options);\n return func(selector, opts, context);\n };\n}\n/**\n * Compiles the query, returns a function.\n */\nexport const compile = wrapCompile(compileRaw);\nexport const _compileUnsafe = wrapCompile(compileUnsafe);\nexport const _compileToken = wrapCompile(compileToken);\nfunction getSelectorFunc(searchFunc) {\n return function select(query, elements, options) {\n const opts = convertOptionFormats(options);\n if (typeof query !== \"function\") {\n query = compileUnsafe(query, opts, elements);\n }\n const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);\n return searchFunc(query, filteredElements, opts);\n };\n}\nexport function prepareContext(elems, adapter, shouldTestNextSiblings = false) {\n /*\n * Add siblings if the query requires them.\n * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692\n */\n if (shouldTestNextSiblings) {\n elems = appendNextSiblings(elems, adapter);\n }\n return Array.isArray(elems)\n ? adapter.removeSubsets(elems)\n : adapter.getChildren(elems);\n}\nfunction appendNextSiblings(elem, adapter) {\n // Order matters because jQuery seems to check the children before the siblings\n const elems = Array.isArray(elem) ? elem.slice(0) : [elem];\n const elemsLength = elems.length;\n for (let i = 0; i < elemsLength; i++) {\n const nextSiblings = getNextSiblings(elems[i], adapter);\n elems.push(...nextSiblings);\n }\n return elems;\n}\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns All matching elements.\n *\n */\nexport const selectAll = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? []\n : options.adapter.findAll(query, elems));\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns the first match, or null if there was no match.\n */\nexport const selectOne = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? null\n : options.adapter.findOne(query, elems));\n/**\n * Tests whether or not an element is matched by query.\n *\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elem The element to test if it matches the query.\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns\n */\nexport function is(elem, query, options) {\n const opts = convertOptionFormats(options);\n return (typeof query === \"function\" ? query : compileRaw(query, opts))(elem);\n}\n/**\n * Alias for selectAll(query, elems, options).\n * @see [compile] for supported selector queries.\n */\nexport default selectAll;\n// Export filters, pseudos and aliases to allow users to supply their own.\n/** @deprecated Use the `pseudos` option instead. */\nexport { filters, pseudos, aliases } from \"./pseudo-selectors/index.js\";\n//# sourceMappingURL=index.js.map","import * as CSSselect from 'css-select';\n\nimport {ELEMENT_NODE, TEXT_NODE} from './constants.js';\nimport {ignoreCase} from './utils.js';\n\nconst {isArray} = Array;\n\n/* c8 ignore start */\nconst isTag = ({nodeType}) => nodeType === ELEMENT_NODE;\n\nconst existsOne = (test, elements) => elements.some(\n element => isTag(element) && (\n test(element) ||\n existsOne(test, getChildren(element))\n )\n);\n\nconst getAttributeValue = (element, name) => name === 'class' ?\n element.classList.value : element.getAttribute(name);\n\nconst getChildren = ({childNodes}) => childNodes;\n\nconst getName = (element) => {\n const {localName} = element;\n return ignoreCase(element) ? localName.toLowerCase() : localName;\n};\n\nconst getParent = ({parentNode}) => parentNode;\n\nconst getSiblings = element => {\n const {parentNode} = element;\n return parentNode ? getChildren(parentNode) : element;\n};\n\nconst getText = node => {\n if (isArray(node))\n return node.map(getText).join('');\n if (isTag(node))\n return getText(getChildren(node));\n if (node.nodeType === TEXT_NODE)\n return node.data;\n return '';\n};\n\nconst hasAttrib = (element, name) => element.hasAttribute(name);\n\nconst removeSubsets = nodes => {\n let {length} = nodes;\n while (length--) {\n const node = nodes[length];\n if (length && -1 < nodes.lastIndexOf(node, length - 1)) {\n nodes.splice(length, 1);\n continue;\n }\n for (let {parentNode} = node; parentNode; parentNode = parentNode.parentNode) {\n if (nodes.includes(parentNode)) {\n nodes.splice(length, 1);\n break;\n }\n }\n }\n return nodes;\n};\n\nconst findAll = (test, nodes) => {\n const matches = [];\n for (const node of nodes) {\n if (isTag(node)) {\n if (test(node))\n matches.push(node);\n matches.push(...findAll(test, getChildren(node)));\n }\n }\n return matches;\n};\n\nconst findOne = (test, nodes) => {\n for (let node of nodes)\n if (test(node) || (node = findOne(test, getChildren(node))))\n return node;\n return null;\n};\n/* c8 ignore stop */\n\nconst adapter = {\n isTag,\n existsOne,\n getAttributeValue,\n getChildren,\n getName,\n getParent,\n getSiblings,\n getText,\n hasAttrib,\n removeSubsets,\n findAll,\n findOne\n};\n\nexport const prepareMatch = (element, selectors) => CSSselect.compile(\n selectors,\n {\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n\nexport const matches = (element, selectors) => CSSselect.is(\n element,\n selectors,\n {\n strict: true,\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n","import {TEXT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\nimport {escape} from '../shared/text-escaper.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Text\n */\nexport class Text extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#text', TEXT_NODE, data);\n }\n\n get wholeText() {\n const text = [];\n let {previousSibling, nextSibling} = this;\n while (previousSibling) {\n if (previousSibling.nodeType === TEXT_NODE)\n text.unshift(previousSibling[VALUE]);\n else\n break;\n previousSibling = previousSibling.previousSibling;\n }\n text.push(this[VALUE]);\n while (nextSibling) {\n if (nextSibling.nodeType === TEXT_NODE)\n text.push(nextSibling[VALUE]);\n else\n break;\n nextSibling = nextSibling.nextSibling;\n }\n return text.join('');\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Text(ownerDocument, data);\n }\n\n toString() { return escape(this[VALUE]); }\n}\n","// https://dom.spec.whatwg.org/#interface-parentnode\n// Document, DocumentFragment, Element\n\nimport {\n ATTRIBUTE_NODE,\n DOCUMENT_FRAGMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n NODE_END,\n CDATA_SECTION_NODE,\n COMMENT_NODE\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT, PREV, START, VALUE} from '../shared/symbols.js';\n\nimport {prepareMatch} from '../shared/matches.js';\nimport {previousSibling, nextSibling} from '../shared/node.js';\nimport {getEnd, knownAdjacent, knownBoundaries, knownSegment, knownSiblings, localCase} from '../shared/utils.js';\n\nimport {Node} from '../interface/node.js';\nimport {Text} from '../interface/text.js';\nimport {NodeList} from '../interface/node-list.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {connectedCallback} from '../interface/custom-element-registry.js';\n\nimport {nextElementSibling} from './non-document-type-child-node.js';\n\nconst isNode = node => node instanceof Node;\n\nconst insert = (parentNode, child, nodes) => {\n const {ownerDocument} = parentNode;\n for (const node of nodes)\n parentNode.insertBefore(\n isNode(node) ? node : new Text(ownerDocument, node),\n child\n );\n};\n\n/** @typedef { import('../interface/element.js').Element & {\n [typeof NEXT]: NodeStruct,\n [typeof PREV]: NodeStruct,\n [typeof START]: NodeStruct,\n nodeType: typeof ATTRIBUTE_NODE | typeof DOCUMENT_FRAGMENT_NODE | typeof ELEMENT_NODE | typeof TEXT_NODE | typeof NODE_END | typeof COMMENT_NODE | typeof CDATA_SECTION_NODE,\n ownerDocument: Document,\n parentNode: ParentNode,\n}} NodeStruct */\n\nexport class ParentNode extends Node {\n constructor(ownerDocument, localName, nodeType) {\n super(ownerDocument, localName, nodeType);\n this[PRIVATE] = null;\n /** @type {NodeStruct} */\n this[NEXT] = this[END] = {\n [NEXT]: null,\n [PREV]: this,\n [START]: this,\n nodeType: NODE_END,\n ownerDocument: this.ownerDocument,\n parentNode: null\n };\n }\n\n get childNodes() {\n const childNodes = new NodeList;\n let {firstChild} = this;\n while (firstChild) {\n childNodes.push(firstChild);\n firstChild = nextSibling(firstChild);\n }\n return childNodes;\n }\n\n get children() {\n const children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n children.push(firstElementChild);\n firstElementChild = nextElementSibling(firstElementChild);\n }\n return children;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstChild() {\n let {[NEXT]: next, [END]: end} = this;\n while (next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n return next === end ? null : next;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstElementChild() {\n let {firstChild} = this;\n while (firstChild) {\n if (firstChild.nodeType === ELEMENT_NODE)\n return firstChild;\n firstChild = nextSibling(firstChild);\n }\n return null;\n }\n\n get lastChild() {\n const prev = this[END][PREV];\n switch (prev.nodeType) {\n case NODE_END:\n return prev[START];\n case ATTRIBUTE_NODE:\n return null;\n }\n return prev === this ? null : prev;\n }\n\n get lastElementChild() {\n let {lastChild} = this;\n while (lastChild) {\n if (lastChild.nodeType === ELEMENT_NODE)\n return lastChild;\n lastChild = previousSibling(lastChild);\n }\n return null;\n }\n\n get childElementCount() {\n return this.children.length;\n }\n\n prepend(...nodes) {\n insert(this, this.firstChild, nodes);\n }\n\n append(...nodes) {\n insert(this, this[END], nodes);\n }\n\n replaceChildren(...nodes) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end && next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n while (next !== end) {\n const after = getEnd(next)[NEXT];\n next.remove();\n next = after;\n }\n if (nodes.length)\n insert(this, end, nodes);\n }\n\n getElementsByClassName(className) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (\n next.nodeType === ELEMENT_NODE &&\n next.hasAttribute('class') &&\n next.classList.has(className)\n )\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n getElementsByTagName(tagName) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && (\n next.localName === tagName ||\n localCase(next) === tagName\n ))\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n querySelector(selectors) {\n const matches = prepareMatch(this, selectors);\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n return next;\n next = next.nodeType === ELEMENT_NODE && next.localName === 'template' ? next[END] : next[NEXT];\n }\n return null;\n }\n\n querySelectorAll(selectors) {\n const matches = prepareMatch(this, selectors);\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n elements.push(next);\n next = next.nodeType === ELEMENT_NODE && next.localName === 'template' ? next[END] : next[NEXT];\n }\n return elements;\n }\n\n appendChild(node) {\n return this.insertBefore(node, this[END]);\n }\n\n contains(node) {\n let parentNode = node;\n while (parentNode && parentNode !== this)\n parentNode = parentNode.parentNode;\n return parentNode === this;\n }\n\n insertBefore(node, before = null) {\n if (node === before)\n return node;\n if (node === this)\n throw new Error('unable to append a node to itself');\n const next = before || this[END];\n switch (node.nodeType) {\n case ELEMENT_NODE:\n node.remove();\n node.parentNode = this;\n knownBoundaries(next[PREV], node, next);\n moCallback(node, null);\n connectedCallback(node);\n break;\n case DOCUMENT_FRAGMENT_NODE: {\n let {[PRIVATE]: parentNode, firstChild, lastChild} = node;\n if (firstChild) {\n knownSegment(next[PREV], firstChild, lastChild, next);\n knownAdjacent(node, node[END]);\n if (parentNode)\n parentNode.replaceChildren();\n do {\n firstChild.parentNode = this;\n moCallback(firstChild, null);\n if (firstChild.nodeType === ELEMENT_NODE)\n connectedCallback(firstChild);\n } while (\n firstChild !== lastChild &&\n (firstChild = nextSibling(firstChild))\n );\n }\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n node.remove();\n /* eslint no-fallthrough:0 */\n // this covers DOCUMENT_TYPE_NODE too\n default:\n node.parentNode = this;\n knownSiblings(next[PREV], node, next);\n moCallback(node, null);\n break;\n }\n return node;\n }\n\n normalize() {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n const {[NEXT]: $next, [PREV]: $prev, nodeType} = next;\n if (nodeType === TEXT_NODE) {\n if (!next[VALUE])\n next.remove();\n else if ($prev && $prev.nodeType === TEXT_NODE) {\n $prev.textContent += next.textContent;\n next.remove();\n }\n }\n next = $next;\n }\n }\n\n removeChild(node) {\n if (node.parentNode !== this)\n throw new Error('node is not a child');\n node.remove();\n return node;\n }\n\n replaceChild(node, replaced) {\n const next = getEnd(replaced)[NEXT];\n replaced.remove();\n this.insertBefore(node, next);\n return replaced;\n }\n}\n","// https://dom.spec.whatwg.org/#interface-nonelementparentnode\n// Document, DocumentFragment\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT} from '../shared/symbols.js';\nimport {nonElementAsJSON} from '../shared/jsdon.js';\n\nimport {ParentNode} from './parent-node.js';\n\nexport class NonElementParentNode extends ParentNode {\n getElementById(id) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && next.id === id)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n cloneNode(deep) {\n const {ownerDocument, constructor} = this;\n const nonEPN = new constructor(ownerDocument);\n if (deep) {\n const {[END]: end} = nonEPN;\n for (const node of this.childNodes)\n nonEPN.insertBefore(node.cloneNode(deep), end);\n }\n return nonEPN; \n }\n\n toString() {\n const {childNodes, localName} = this;\n return `<${localName}>${childNodes.join('')}</${localName}>`;\n }\n\n toJSON() {\n const json = [];\n nonElementAsJSON(this, json);\n return json;\n }\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.DocumentFragment\n */\nexport class DocumentFragment extends NonElementParentNode {\n constructor(ownerDocument) {\n super(ownerDocument, '#document-fragment', DOCUMENT_FRAGMENT_NODE);\n }\n}\n","import {DOCUMENT_TYPE_NODE} from '../shared/constants.js';\nimport {documentTypeAsJSON} from '../shared/jsdon.js';\n\nimport {Node} from './node.js';\n\n/**\n * @implements globalThis.DocumentType\n */\nexport class DocumentType extends Node {\n constructor(ownerDocument, name, publicId = '', systemId = '') {\n super(ownerDocument, '#document-type', DOCUMENT_TYPE_NODE);\n this.name = name;\n this.publicId = publicId;\n this.systemId = systemId;\n }\n\n cloneNode() {\n const {ownerDocument, name, publicId, systemId} = this;\n return new DocumentType(ownerDocument, name, publicId, systemId);\n }\n\n toString() {\n const {name, publicId, systemId} = this;\n const hasPublic = 0 < publicId.length;\n const str = [name];\n if (hasPublic)\n str.push('PUBLIC', `\"${publicId}\"`);\n if (systemId.length) {\n if (!hasPublic)\n str.push('SYSTEM');\n str.push(`\"${systemId}\"`);\n }\n return `<!DOCTYPE ${str.join(' ')}>`;\n }\n\n toJSON() {\n const json = [];\n documentTypeAsJSON(this, json);\n return json;\n }\n}\n","import {ELEMENT_NODE, DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {CUSTOM_ELEMENTS} from '../shared/symbols.js';\nimport {parseFromString} from '../shared/parse-from-string.js';\nimport {ignoreCase} from '../shared/utils.js';\n\n\n/**\n * @param {Node} node\n * @returns {String}\n */\nexport const getInnerHtml = node => node.childNodes.join('');\n\n/**\n * @param {Node} node\n * @param {String} html\n */\nexport const setInnerHtml = (node, html) => {\n const {ownerDocument} = node;\n const {constructor} = ownerDocument;\n const document = new constructor;\n document[CUSTOM_ELEMENTS] = ownerDocument[CUSTOM_ELEMENTS];\n const {childNodes} = parseFromString(document, ignoreCase(node), html);\n\n node.replaceChildren(...childNodes.map(setOwnerDocument, ownerDocument));\n};\n\nfunction setOwnerDocument(node) {\n node.ownerDocument = this;\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n node.childNodes.forEach(setOwnerDocument, this);\n break;\n }\n return node;\n}\n","export default camel => camel.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g, '$2$5-$3$6')\n .toLowerCase();\n","import uhyphen from 'uhyphen';\nimport {setPrototypeOf} from '../shared/object.js';\n\nconst refs = new WeakMap;\n\nconst key = name => `data-${uhyphen(name)}`;\nconst prop = name => name.slice(5).replace(/-([a-z])/g, (_, $1) => $1.toUpperCase());\n\nconst handler = {\n get(dataset, name) {\n if (name in dataset)\n return refs.get(dataset).getAttribute(key(name));\n },\n\n set(dataset, name, value) {\n dataset[name] = value;\n refs.get(dataset).setAttribute(key(name), value);\n return true;\n },\n\n deleteProperty(dataset, name) {\n if (name in dataset)\n refs.get(dataset).removeAttribute(key(name));\n return delete dataset[name];\n }\n};\n\n/**\n * @implements globalThis.DOMStringMap\n */\nexport class DOMStringMap {\n /**\n * @param {Element} ref\n */\n constructor(ref) {\n for (const {name, value} of ref.attributes) {\n if (/^data-/.test(name))\n this[prop(name)] = value;\n }\n refs.set(this, ref);\n return new Proxy(this, handler);\n }\n}\n\nsetPrototypeOf(DOMStringMap.prototype, null);\n","import {OWNER_ELEMENT} from '../shared/symbols.js';\nimport {setAttribute} from '../shared/attributes.js';\n\nimport {Attr} from '../interface/attr.js';\n\nconst {add} = Set.prototype;\nconst addTokens = (self, tokens) => {\n for (const token of tokens) {\n if (token)\n add.call(self, token);\n }\n};\n\nconst update = ({[OWNER_ELEMENT]: ownerElement, value}) => {\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n attribute.value = value;\n else\n setAttribute(\n ownerElement,\n new Attr(ownerElement.ownerDocument, 'class', value)\n );\n};\n\n/**\n * @implements globalThis.DOMTokenList\n */\nexport class DOMTokenList extends Set {\n\n constructor(ownerElement) {\n super();\n this[OWNER_ELEMENT] = ownerElement;\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n addTokens(this, attribute.value.split(/\\s+/));\n }\n\n get length() { return this.size; }\n\n get value() { return [...this].join(' '); }\n\n /**\n * @param {...string} tokens\n */\n add(...tokens) {\n addTokens(this, tokens);\n update(this);\n }\n\n /**\n * @param {string} token\n */\n contains(token) { return this.has(token); }\n\n /**\n * @param {...string} tokens\n */\n remove(...tokens) {\n for (const token of tokens)\n this.delete(token);\n update(this);\n }\n\n /**\n * @param {string} token\n * @param {boolean?} force\n */\n toggle(token, force) {\n if (this.has(token)) {\n if (force)\n return true;\n this.delete(token);\n update(this);\n }\n else if (force || arguments.length === 1) {\n super.add(token);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n * @param {string} newToken\n */\n replace(token, newToken) {\n if (this.has(token)) {\n this.delete(token);\n super.add(newToken);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n */\n supports() { return true; }\n}\n","import uhyphen from 'uhyphen';\n\nimport {CHANGED, PRIVATE, VALUE} from '../shared/symbols.js';\n\nconst refs = new WeakMap;\n\nconst getKeys = style => [...style.keys()].filter(key => key !== PRIVATE);\n\nconst updateKeys = style => {\n const attr = refs.get(style).getAttributeNode('style');\n if (!attr || attr[CHANGED] || style.get(PRIVATE) !== attr) {\n style.clear();\n if (attr) {\n style.set(PRIVATE, attr);\n for (const rule of attr[VALUE].split(/\\s*;\\s*/)) {\n let [key, ...rest] = rule.split(':');\n if (rest.length > 0) {\n key = key.trim();\n const value = rest.join(':').trim();\n if (key && value)\n style.set(key, value);\n }\n }\n }\n }\n return attr;\n};\n\nconst handler = {\n get(style, name) {\n if (name in prototype)\n return style[name];\n updateKeys(style);\n if (name === 'length')\n return getKeys(style).length;\n if (/^\\d+$/.test(name))\n return getKeys(style)[name];\n return style.get(uhyphen(name));\n },\n\n set(style, name, value) {\n if (name === 'cssText')\n style[name] = value;\n else {\n let attr = updateKeys(style);\n if (value == null)\n style.delete(uhyphen(name));\n else\n style.set(uhyphen(name), value);\n if (!attr) {\n const element = refs.get(style);\n attr = element.ownerDocument.createAttribute('style');\n element.setAttributeNode(attr);\n style.set(PRIVATE, attr);\n }\n attr[CHANGED] = false;\n attr[VALUE] = style.toString();\n }\n return true;\n }\n};\n\n/**\n * @implements globalThis.CSSStyleDeclaration\n */\nexport class CSSStyleDeclaration extends Map {\n constructor(element) {\n super();\n refs.set(this, element);\n /* c8 ignore start */\n return new Proxy(this, handler);\n /* c8 ignore stop */\n }\n\n get cssText() {\n return this.toString();\n }\n\n set cssText(value) {\n refs.get(this).setAttribute('style', value);\n }\n\n getPropertyValue(name) {\n const self = this[PRIVATE];\n return handler.get(self, name);\n }\n\n setProperty(name, value) {\n const self = this[PRIVATE];\n handler.set(self, name, value);\n }\n\n removeProperty(name) {\n const self = this[PRIVATE];\n handler.set(self, name, null);\n }\n\n [Symbol.iterator]() {\n const self = this[PRIVATE];\n updateKeys(self);\n const keys = getKeys(self);\n const {length} = keys;\n let i = 0;\n return {\n next() {\n const done = i === length;\n return {done, value: done ? null : keys[i++]};\n }\n };\n }\n\n get[PRIVATE]() { return this; }\n\n toString() {\n const self = this[PRIVATE];\n updateKeys(self);\n const cssText = [];\n self.forEach(push, cssText);\n return cssText.join(';');\n }\n}\n\nconst {prototype} = CSSStyleDeclaration;\n\nfunction push(value, key) {\n if (key !== PRIVATE)\n this.push(`${key}:${value}`);\n}\n","// https://dom.spec.whatwg.org/#interface-event\n\n/* c8 ignore start */\n\n// Node 15 has Event but 14 and 12 don't\nconst BUBBLING_PHASE = 3;\nconst AT_TARGET = 2;\nconst CAPTURING_PHASE = 1;\nconst NONE = 0;\n\nfunction getCurrentTarget(ev) {\n return ev.currentTarget;\n}\n\n/**\n * @implements globalThis.Event\n */\nclass GlobalEvent {\n static get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n static get AT_TARGET() { return AT_TARGET; }\n static get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n static get NONE() { return NONE; }\n\n constructor(type, eventInitDict = {}) {\n this.type = type;\n this.bubbles = !!eventInitDict.bubbles;\n this.cancelBubble = false;\n this._stopImmediatePropagationFlag = false;\n this.cancelable = !!eventInitDict.cancelable;\n this.eventPhase = this.NONE;\n this.timeStamp = Date.now();\n this.defaultPrevented = false;\n this.originalTarget = null;\n this.returnValue = null;\n this.srcElement = null;\n this.target = null;\n this._path = [];\n }\n\n get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n get AT_TARGET() { return AT_TARGET; }\n get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n get NONE() { return NONE; }\n\n preventDefault() { this.defaultPrevented = true; }\n\n // simplified implementation, should be https://dom.spec.whatwg.org/#dom-event-composedpath\n composedPath() {\n return this._path.map(getCurrentTarget);\n }\n\n stopPropagation() {\n this.cancelBubble = true;\n }\n \n stopImmediatePropagation() {\n this.stopPropagation();\n this._stopImmediatePropagationFlag = true;\n }\n }\n\nexport {GlobalEvent as Event};\n\n/* c8 ignore stop */\n","/**\n * @implements globalThis.NamedNodeMap\n */\nexport class NamedNodeMap extends Array {\n constructor(ownerElement) {\n super();\n this.ownerElement = ownerElement;\n }\n\n getNamedItem(name) {\n return this.ownerElement.getAttributeNode(name);\n }\n\n setNamedItem(attr) {\n this.ownerElement.setAttributeNode(attr);\n this.unshift(attr);\n }\n\n removeNamedItem(name) {\n const item = this.getNamedItem(name);\n this.ownerElement.removeAttribute(name);\n this.splice(this.indexOf(item), 1);\n }\n\n item(index) {\n return index < this.length ? this[index] : null;\n }\n\n /* c8 ignore start */\n getNamedItemNS(_, name) {\n return this.getNamedItem(name);\n }\n\n setNamedItemNS(_, attr) {\n return this.setNamedItem(attr);\n }\n\n removeNamedItemNS(_, name) {\n return this.removeNamedItem(name);\n }\n /* c8 ignore stop */\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.ShadowRoot\n */\nexport class ShadowRoot extends NonElementParentNode {\n constructor(host) {\n super(host.ownerDocument, '#shadow-root', DOCUMENT_FRAGMENT_NODE);\n this.host = host;\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n}\n","// https://dom.spec.whatwg.org/#interface-element\n\nimport {\n ATTRIBUTE_NODE,\n BLOCK_ELEMENTS,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n ELEMENT_NODE,\n NODE_END,\n TEXT_NODE,\n SVG_NAMESPACE\n} from '../shared/constants.js';\n\nimport {\n setAttribute, removeAttribute,\n numericAttribute, stringAttribute\n} from '../shared/attributes.js';\n\nimport {\n CLASS_LIST, DATASET, STYLE,\n END, NEXT, PREV, START,\n MIME\n} from '../shared/symbols.js';\n\nimport {\n ignoreCase,\n knownAdjacent,\n localCase,\n String\n} from '../shared/utils.js';\n\nimport {elementAsJSON} from '../shared/jsdon.js';\nimport {matches, prepareMatch} from '../shared/matches.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\n\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {ParentNode} from '../mixin/parent-node.js';\n\nimport {DOMStringMap} from '../dom/string-map.js';\nimport {DOMTokenList} from '../dom/token-list.js';\n\nimport {CSSStyleDeclaration} from './css-style-declaration.js';\nimport {Event} from './event.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {ShadowRoot} from './shadow-root.js';\nimport {NodeList} from './node-list.js';\nimport {Attr} from './attr.js';\nimport {Text} from './text.js';\nimport {escape} from '../shared/text-escaper.js';\n\n// <utils>\nconst attributesHandler = {\n get(target, key) {\n return key in target ? target[key] : target.find(({name}) => name === key);\n }\n};\n\nconst create = (ownerDocument, element, localName) => {\n if ('ownerSVGElement' in element) {\n const svg = ownerDocument.createElementNS(SVG_NAMESPACE, localName);\n svg.ownerSVGElement = element.ownerSVGElement;\n return svg;\n }\n return ownerDocument.createElement(localName);\n};\n\nconst isVoid = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].voidElements.test(localName);\n};\n\n// </utils>\n\n/**\n * @implements globalThis.Element\n */\nexport class Element extends ParentNode {\n constructor(ownerDocument, localName) {\n super(ownerDocument, localName, ELEMENT_NODE);\n this[CLASS_LIST] = null;\n this[DATASET] = null;\n this[STYLE] = null;\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n get namespaceURI() {\n return 'http://www.w3.org/1999/xhtml';\n }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[END][NEXT]); }\n // </Mixins>\n\n // <specialGetters>\n get id() { return stringAttribute.get(this, 'id'); }\n set id(value) { stringAttribute.set(this, 'id', value); }\n\n get className() { return this.classList.value; }\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n\n get nodeName() { return localCase(this); }\n get tagName() { return localCase(this); }\n\n get classList() {\n return this[CLASS_LIST] || (\n this[CLASS_LIST] = new DOMTokenList(this)\n );\n }\n\n get dataset() {\n return this[DATASET] || (\n this[DATASET] = new DOMStringMap(this)\n );\n }\n\n getBoundingClientRect() {\n return {\n x: 0,\n y: 0,\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0\n };\n }\n\n get nonce() { return stringAttribute.get(this, 'nonce'); }\n set nonce(value) { stringAttribute.set(this, 'nonce', value); }\n\n get style() {\n return this[STYLE] || (\n this[STYLE] = new CSSStyleDeclaration(this)\n );\n }\n\n get tabIndex() { return numericAttribute.get(this, 'tabindex') || -1; }\n set tabIndex(value) { numericAttribute.set(this, 'tabindex', value); }\n\n get slot() { return stringAttribute.get(this, 'slot'); }\n set slot(value) { stringAttribute.set(this, 'slot', value); }\n // </specialGetters>\n\n\n // <contentRelated>\n get innerText() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE) {\n text.push(next.textContent.replace(/\\s+/g, ' '));\n } else if(\n text.length && next[NEXT] != end &&\n BLOCK_ELEMENTS.has(next.tagName)\n ) {\n text.push('\\n');\n }\n next = next[NEXT];\n }\n return text.join('');\n }\n\n /**\n * @returns {String}\n */\n get textContent() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE)\n text.push(next.textContent);\n next = next[NEXT];\n }\n return text.join('');\n }\n\n set textContent(text) {\n this.replaceChildren();\n if (text != null && text !== '')\n this.appendChild(new Text(this.ownerDocument, text));\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n\n get outerHTML() { return this.toString(); }\n set outerHTML(html) {\n const template = this.ownerDocument.createElement('');\n template.innerHTML = html;\n this.replaceWith(...template.childNodes);\n }\n // </contentRelated>\n\n // <attributes>\n get attributes() {\n const attributes = new NamedNodeMap(this);\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next);\n next = next[NEXT];\n }\n return new Proxy(attributes, attributesHandler);\n }\n\n focus() { this.dispatchEvent(new Event('focus')); }\n\n getAttribute(name) {\n if (name === 'class')\n return this.className;\n const attribute = this.getAttributeNode(name);\n return attribute && (ignoreCase(this) ? attribute.value : escape(attribute.value));\n }\n\n getAttributeNode(name) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n getAttributeNames() {\n const attributes = new NodeList;\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next.name);\n next = next[NEXT];\n }\n return attributes;\n }\n\n hasAttribute(name) { return !!this.getAttributeNode(name); }\n hasAttributes() { return this[NEXT].nodeType === ATTRIBUTE_NODE; }\n\n removeAttribute(name) {\n if (name === 'class' && this[CLASS_LIST])\n this[CLASS_LIST].clear();\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n removeAttributeNode(attribute) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next === attribute) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else {\n const attribute = this.getAttributeNode(name);\n if (attribute)\n attribute.value = value;\n else\n setAttribute(this, new Attr(this.ownerDocument, name, value));\n }\n }\n\n setAttributeNode(attribute) {\n const {name} = attribute;\n const previously = this.getAttributeNode(name);\n if (previously !== attribute) {\n if (previously)\n this.removeAttributeNode(previously);\n const {ownerElement} = attribute;\n if (ownerElement)\n ownerElement.removeAttributeNode(attribute);\n setAttribute(this, attribute);\n }\n return previously;\n }\n\n toggleAttribute(name, force) {\n if (this.hasAttribute(name)) {\n if (!force) {\n this.removeAttribute(name);\n return false;\n }\n return true;\n }\n else if (force || arguments.length === 1) {\n this.setAttribute(name, '');\n return true;\n }\n return false;\n }\n // </attributes>\n\n // <ShadowDOM>\n get shadowRoot() {\n if (shadowRoots.has(this)) {\n const {mode, shadowRoot} = shadowRoots.get(this);\n if (mode === 'open')\n return shadowRoot;\n }\n return null;\n }\n\n attachShadow(init) {\n if (shadowRoots.has(this))\n throw new Error('operation not supported');\n // TODO: shadowRoot should be likely a specialized class that extends DocumentFragment\n // but until DSD is out, I am not sure I should spend time on this.\n const shadowRoot = new ShadowRoot(this);\n shadowRoots.set(this, {\n mode: init.mode,\n shadowRoot\n });\n return shadowRoot;\n }\n // </ShadowDOM>\n\n // <selectors>\n matches(selectors) { return matches(this, selectors); }\n closest(selectors) {\n let parentElement = this;\n const matches = prepareMatch(parentElement, selectors);\n while (parentElement && !matches(parentElement))\n parentElement = parentElement.parentElement;\n return parentElement;\n }\n // </selectors>\n\n // <insertAdjacent>\n insertAdjacentElement(position, element) {\n const {parentElement} = this;\n switch (position) {\n case 'beforebegin':\n if (parentElement) {\n parentElement.insertBefore(element, this);\n break;\n }\n return null;\n case 'afterbegin':\n this.insertBefore(element, this.firstChild);\n break;\n case 'beforeend':\n this.insertBefore(element, null);\n break;\n case 'afterend':\n if (parentElement) {\n parentElement.insertBefore(element, this.nextSibling);\n break;\n }\n return null;\n }\n return element;\n }\n\n insertAdjacentHTML(position, html) {\n const template = this.ownerDocument.createElement('template');\n template.innerHTML = html;\n this.insertAdjacentElement(position, template.content);\n }\n\n insertAdjacentText(position, text) {\n const node = this.ownerDocument.createTextNode(text);\n this.insertAdjacentElement(position, node);\n }\n // </insertAdjacent>\n\n cloneNode(deep = false) {\n const {ownerDocument, localName} = this;\n const addNext = next => {\n next.parentNode = parentNode;\n knownAdjacent($next, next);\n $next = next;\n };\n const clone = create(ownerDocument, this, localName);\n let parentNode = clone, $next = clone;\n let {[NEXT]: next, [END]: prev} = this;\n while (next !== prev && (deep || next.nodeType === ATTRIBUTE_NODE)) {\n switch (next.nodeType) {\n case NODE_END:\n knownAdjacent($next, parentNode[END]);\n $next = parentNode[END];\n parentNode = parentNode.parentNode;\n break;\n case ELEMENT_NODE: {\n const node = create(ownerDocument, next, next.localName);\n addNext(node);\n parentNode = node;\n break;\n }\n case ATTRIBUTE_NODE: {\n const attr = next.cloneNode(deep);\n attr.ownerElement = parentNode;\n addNext(attr);\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n addNext(next.cloneNode(deep));\n break;\n }\n next = next[NEXT];\n }\n knownAdjacent($next, clone[END]);\n return clone;\n }\n\n // <custom>\n toString() {\n const out = [];\n const {[END]: end} = this;\n let next = {[NEXT]: this};\n let isOpened = false;\n do {\n next = next[NEXT];\n switch (next.nodeType) {\n case ATTRIBUTE_NODE: {\n const attr = ' ' + next;\n switch (attr) {\n case ' id':\n case ' class':\n case ' style':\n break;\n default:\n out.push(attr);\n }\n break;\n }\n case NODE_END: {\n const start = next[START];\n if (isOpened) {\n if ('ownerSVGElement' in start)\n out.push(' />');\n else if (isVoid(start))\n out.push(ignoreCase(start) ? '>' : ' />');\n else\n out.push(`></${start.localName}>`);\n isOpened = false;\n }\n else\n out.push(`</${start.localName}>`);\n break;\n }\n case ELEMENT_NODE:\n if (isOpened)\n out.push('>');\n if (next.toString !== this.toString) {\n out.push(next.toString());\n next = next[END];\n isOpened = false;\n }\n else {\n out.push(`<${next.localName}`);\n isOpened = true;\n }\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n out.push((isOpened ? '>' : '') + next);\n isOpened = false;\n break;\n }\n } while (next !== end);\n return out.join('');\n }\n\n toJSON() {\n const json = [];\n elementAsJSON(this, json);\n return json;\n }\n // </custom>\n\n\n /* c8 ignore start */\n getAttributeNS(_, name) { return this.getAttribute(name); }\n getElementsByTagNameNS(_, name) { return this.getElementsByTagName(name); }\n hasAttributeNS(_, name) { return this.hasAttribute(name); }\n removeAttributeNS(_, name) { this.removeAttribute(name); }\n setAttributeNS(_, name, value) { this.setAttribute(name, value); }\n setAttributeNodeNS(attr) { return this.setAttributeNode(attr); }\n /* c8 ignore stop */\n}\n","import {Element} from '../interface/element.js';\nimport {String} from '../shared/utils.js';\n\nconst classNames = new WeakMap;\n\nconst handler = {\n get(target, name) {\n return target[name];\n },\n set(target, name, value) {\n target[name] = value;\n return true;\n }\n};\n\n/**\n * @implements globalThis.SVGElement\n */\nexport class SVGElement extends Element {\n constructor(ownerDocument, localName, ownerSVGElement = null) {\n super(ownerDocument, localName);\n this.ownerSVGElement = ownerSVGElement;\n }\n\n get className() {\n if (!classNames.has(this))\n classNames.set(this, new Proxy({baseVal: '', animVal: ''}, handler));\n return classNames.get(this);\n }\n\n /* c8 ignore start */\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n /* c8 ignore stop */\n\n get namespaceURI() {\n return 'http://www.w3.org/2000/svg';\n }\n\n getAttribute(name) {\n return name === 'class' ?\n [...this.classList].join(' ') :\n super.getAttribute(name);\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else if (name === 'style') {\n const {className} = this;\n className.baseVal = className.animVal = value;\n }\n super.setAttribute(name, value);\n }\n}\n","import {Attr as _Attr} from '../interface/attr.js';\nimport {CharacterData as _CharacterData} from '../interface/character-data.js';\nimport {CDATASection as _CDATASection} from '../interface/cdata-section.js';\nimport {Comment as _Comment} from '../interface/comment.js';\nimport {DocumentFragment as _DocumentFragment} from '../interface/document-fragment.js';\nimport {DocumentType as _DocumentType} from '../interface/document-type.js';\nimport {Element as _Element} from '../interface/element.js';\nimport {Node as _Node} from '../interface/node.js';\nimport {ShadowRoot as _ShadowRoot} from '../interface/shadow-root.js';\nimport {Text as _Text} from '../interface/text.js';\nimport {SVGElement as _SVGElement} from '../svg/element.js';\n\nimport {setPrototypeOf} from './object.js';\n\n/* c8 ignore start */\nexport const illegalConstructor = () => {\n throw new TypeError('Illegal constructor');\n};\n\nexport function Attr() { illegalConstructor(); }\nsetPrototypeOf(Attr, _Attr);\nAttr.prototype = _Attr.prototype;\n\nexport function CDATASection() { illegalConstructor(); }\nsetPrototypeOf(CDATASection, _CDATASection);\nCDATASection.prototype = _CDATASection.prototype;\n\nexport function CharacterData() { illegalConstructor(); }\nsetPrototypeOf(CharacterData, _CharacterData);\nCharacterData.prototype = _CharacterData.prototype;\n\nexport function Comment() { illegalConstructor(); }\nsetPrototypeOf(Comment, _Comment);\nComment.prototype = _Comment.prototype;\n\nexport function DocumentFragment() { illegalConstructor(); }\nsetPrototypeOf(DocumentFragment, _DocumentFragment);\nDocumentFragment.prototype = _DocumentFragment.prototype;\n\nexport function DocumentType() { illegalConstructor(); }\nsetPrototypeOf(DocumentType, _DocumentType);\nDocumentType.prototype = _DocumentType.prototype;\n\nexport function Element() { illegalConstructor(); }\nsetPrototypeOf(Element, _Element);\nElement.prototype = _Element.prototype;\n\nexport function Node() { illegalConstructor(); }\nsetPrototypeOf(Node, _Node);\nNode.prototype = _Node.prototype;\n\nexport function ShadowRoot() { illegalConstructor(); }\nsetPrototypeOf(ShadowRoot, _ShadowRoot);\nShadowRoot.prototype = _ShadowRoot.prototype;\n\nexport function Text() { illegalConstructor(); }\nsetPrototypeOf(Text, _Text);\nText.prototype = _Text.prototype;\n\nexport function SVGElement() { illegalConstructor(); }\nsetPrototypeOf(SVGElement, _SVGElement);\nSVGElement.prototype = _SVGElement.prototype;\n/* c8 ignore stop */\n\nexport const Facades = {\n Attr,\n CDATASection,\n CharacterData,\n Comment,\n DocumentFragment,\n DocumentType,\n Element,\n Node,\n ShadowRoot,\n Text,\n SVGElement\n};\n","import {END, UPGRADE} from '../shared/symbols.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {Event} from '../interface/event.js';\nimport {Element} from '../interface/element.js';\nimport {Classes, customElements} from '../interface/custom-element-registry.js';\n\nconst Level0 = new WeakMap;\nconst level0 = {\n get(element, name) {\n return Level0.has(element) && Level0.get(element)[name] || null;\n },\n set(element, name, value) {\n if (!Level0.has(element))\n Level0.set(element, {});\n const handlers = Level0.get(element);\n const type = name.slice(2);\n if (handlers[name])\n element.removeEventListener(type, handlers[name], false);\n if ((handlers[name] = value))\n element.addEventListener(type, value, false);\n }\n};\n\n/**\n * @implements globalThis.HTMLElement\n */\nexport class HTMLElement extends Element {\n\n static get observedAttributes() { return []; }\n\n constructor(ownerDocument = null, localName = '') {\n super(ownerDocument, localName);\n\n const ownerLess = !ownerDocument;\n let options;\n\n if (ownerLess) {\n const {constructor: Class} = this;\n if (!Classes.has(Class))\n throw new Error('unable to initialize this Custom Element');\n ({ownerDocument, localName, options} = Classes.get(Class));\n }\n\n if (ownerDocument[UPGRADE]) {\n const {element, values} = ownerDocument[UPGRADE];\n ownerDocument[UPGRADE] = null;\n for (const [key, value] of values)\n element[key] = value;\n return element;\n }\n\n if (ownerLess) {\n this.ownerDocument = this[END].ownerDocument = ownerDocument;\n this.localName = localName;\n customElements.set(this, {connected: false});\n if (options.is)\n this.setAttribute('is', options.is);\n }\n }\n\n /* c8 ignore start */\n\n /* TODO: what about these?\n offsetHeight\n offsetLeft\n offsetParent\n offsetTop\n offsetWidth\n */\n\n blur() { this.dispatchEvent(new Event('blur')); }\n click() {\n const clickEvent = new Event('click', {bubbles: true, cancelable: true});\n clickEvent.button = 0;\n\n this.dispatchEvent(clickEvent);\n }\n\n // Boolean getters\n get accessKeyLabel() {\n const {accessKey} = this;\n return accessKey && `Alt+Shift+${accessKey}`;\n }\n get isContentEditable() { return this.hasAttribute('contenteditable'); }\n\n // Boolean Accessors\n get contentEditable() { return booleanAttribute.get(this, 'contenteditable'); }\n set contentEditable(value) { booleanAttribute.set(this, 'contenteditable', value); }\n get draggable() { return booleanAttribute.get(this, 'draggable'); }\n set draggable(value) { booleanAttribute.set(this, 'draggable', value); }\n get hidden() { return booleanAttribute.get(this, 'hidden'); }\n set hidden(value) { booleanAttribute.set(this, 'hidden', value); }\n get spellcheck() { return booleanAttribute.get(this, 'spellcheck'); }\n set spellcheck(value) { booleanAttribute.set(this, 'spellcheck', value); }\n\n // String Accessors\n get accessKey() { return stringAttribute.get(this, 'accesskey'); }\n set accessKey(value) { stringAttribute.set(this, 'accesskey', value); }\n get dir() { return stringAttribute.get(this, 'dir'); }\n set dir(value) { stringAttribute.set(this, 'dir', value); }\n get lang() { return stringAttribute.get(this, 'lang'); }\n set lang(value) { stringAttribute.set(this, 'lang', value); }\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n // DOM Level 0\n get onabort() { return level0.get(this, 'onabort'); }\n set onabort(value) { level0.set(this, 'onabort', value); }\n\n get onblur() { return level0.get(this, 'onblur'); }\n set onblur(value) { level0.set(this, 'onblur', value); }\n\n get oncancel() { return level0.get(this, 'oncancel'); }\n set oncancel(value) { level0.set(this, 'oncancel', value); }\n\n get oncanplay() { return level0.get(this, 'oncanplay'); }\n set oncanplay(value) { level0.set(this, 'oncanplay', value); }\n\n get oncanplaythrough() { return level0.get(this, 'oncanplaythrough'); }\n set oncanplaythrough(value) { level0.set(this, 'oncanplaythrough', value); }\n\n get onchange() { return level0.get(this, 'onchange'); }\n set onchange(value) { level0.set(this, 'onchange', value); }\n\n get onclick() { return level0.get(this, 'onclick'); }\n set onclick(value) { level0.set(this, 'onclick', value); }\n\n get onclose() { return level0.get(this, 'onclose'); }\n set onclose(value) { level0.set(this, 'onclose', value); }\n\n get oncontextmenu() { return level0.get(this, 'oncontextmenu'); }\n set oncontextmenu(value) { level0.set(this, 'oncontextmenu', value); }\n\n get oncuechange() { return level0.get(this, 'oncuechange'); }\n set oncuechange(value) { level0.set(this, 'oncuechange', value); }\n\n get ondblclick() { return level0.get(this, 'ondblclick'); }\n set ondblclick(value) { level0.set(this, 'ondblclick', value); }\n\n get ondrag() { return level0.get(this, 'ondrag'); }\n set ondrag(value) { level0.set(this, 'ondrag', value); }\n\n get ondragend() { return level0.get(this, 'ondragend'); }\n set ondragend(value) { level0.set(this, 'ondragend', value); }\n\n get ondragenter() { return level0.get(this, 'ondragenter'); }\n set ondragenter(value) { level0.set(this, 'ondragenter', value); }\n\n get ondragleave() { return level0.get(this, 'ondragleave'); }\n set ondragleave(value) { level0.set(this, 'ondragleave', value); }\n\n get ondragover() { return level0.get(this, 'ondragover'); }\n set ondragover(value) { level0.set(this, 'ondragover', value); }\n\n get ondragstart() { return level0.get(this, 'ondragstart'); }\n set ondragstart(value) { level0.set(this, 'ondragstart', value); }\n\n get ondrop() { return level0.get(this, 'ondrop'); }\n set ondrop(value) { level0.set(this, 'ondrop', value); }\n\n get ondurationchange() { return level0.get(this, 'ondurationchange'); }\n set ondurationchange(value) { level0.set(this, 'ondurationchange', value); }\n\n get onemptied() { return level0.get(this, 'onemptied'); }\n set onemptied(value) { level0.set(this, 'onemptied', value); }\n\n get onended() { return level0.get(this, 'onended'); }\n set onended(value) { level0.set(this, 'onended', value); }\n\n get onerror() { return level0.get(this, 'onerror'); }\n set onerror(value) { level0.set(this, 'onerror', value); }\n\n get onfocus() { return level0.get(this, 'onfocus'); }\n set onfocus(value) { level0.set(this, 'onfocus', value); }\n\n get oninput() { return level0.get(this, 'oninput'); }\n set oninput(value) { level0.set(this, 'oninput', value); }\n\n get oninvalid() { return level0.get(this, 'oninvalid'); }\n set oninvalid(value) { level0.set(this, 'oninvalid', value); }\n\n get onkeydown() { return level0.get(this, 'onkeydown'); }\n set onkeydown(value) { level0.set(this, 'onkeydown', value); }\n\n get onkeypress() { return level0.get(this, 'onkeypress'); }\n set onkeypress(value) { level0.set(this, 'onkeypress', value); }\n\n get onkeyup() { return level0.get(this, 'onkeyup'); }\n set onkeyup(value) { level0.set(this, 'onkeyup', value); }\n\n get onload() { return level0.get(this, 'onload'); }\n set onload(value) { level0.set(this, 'onload', value); }\n\n get onloadeddata() { return level0.get(this, 'onloadeddata'); }\n set onloadeddata(value) { level0.set(this, 'onloadeddata', value); }\n\n get onloadedmetadata() { return level0.get(this, 'onloadedmetadata'); }\n set onloadedmetadata(value) { level0.set(this, 'onloadedmetadata', value); }\n\n get onloadstart() { return level0.get(this, 'onloadstart'); }\n set onloadstart(value) { level0.set(this, 'onloadstart', value); }\n\n get onmousedown() { return level0.get(this, 'onmousedown'); }\n set onmousedown(value) { level0.set(this, 'onmousedown', value); }\n\n get onmouseenter() { return level0.get(this, 'onmouseenter'); }\n set onmouseenter(value) { level0.set(this, 'onmouseenter', value); }\n\n get onmouseleave() { return level0.get(this, 'onmouseleave'); }\n set onmouseleave(value) { level0.set(this, 'onmouseleave', value); }\n\n get onmousemove() { return level0.get(this, 'onmousemove'); }\n set onmousemove(value) { level0.set(this, 'onmousemove', value); }\n\n get onmouseout() { return level0.get(this, 'onmouseout'); }\n set onmouseout(value) { level0.set(this, 'onmouseout', value); }\n\n get onmouseover() { return level0.get(this, 'onmouseover'); }\n set onmouseover(value) { level0.set(this, 'onmouseover', value); }\n\n get onmouseup() { return level0.get(this, 'onmouseup'); }\n set onmouseup(value) { level0.set(this, 'onmouseup', value); }\n\n get onmousewheel() { return level0.get(this, 'onmousewheel'); }\n set onmousewheel(value) { level0.set(this, 'onmousewheel', value); }\n\n get onpause() { return level0.get(this, 'onpause'); }\n set onpause(value) { level0.set(this, 'onpause', value); }\n\n get onplay() { return level0.get(this, 'onplay'); }\n set onplay(value) { level0.set(this, 'onplay', value); }\n\n get onplaying() { return level0.get(this, 'onplaying'); }\n set onplaying(value) { level0.set(this, 'onplaying', value); }\n\n get onprogress() { return level0.get(this, 'onprogress'); }\n set onprogress(value) { level0.set(this, 'onprogress', value); }\n\n get onratechange() { return level0.get(this, 'onratechange'); }\n set onratechange(value) { level0.set(this, 'onratechange', value); }\n\n get onreset() { return level0.get(this, 'onreset'); }\n set onreset(value) { level0.set(this, 'onreset', value); }\n\n get onresize() { return level0.get(this, 'onresize'); }\n set onresize(value) { level0.set(this, 'onresize', value); }\n\n get onscroll() { return level0.get(this, 'onscroll'); }\n set onscroll(value) { level0.set(this, 'onscroll', value); }\n\n get onseeked() { return level0.get(this, 'onseeked'); }\n set onseeked(value) { level0.set(this, 'onseeked', value); }\n\n get onseeking() { return level0.get(this, 'onseeking'); }\n set onseeking(value) { level0.set(this, 'onseeking', value); }\n\n get onselect() { return level0.get(this, 'onselect'); }\n set onselect(value) { level0.set(this, 'onselect', value); }\n\n get onshow() { return level0.get(this, 'onshow'); }\n set onshow(value) { level0.set(this, 'onshow', value); }\n\n get onstalled() { return level0.get(this, 'onstalled'); }\n set onstalled(value) { level0.set(this, 'onstalled', value); }\n\n get onsubmit() { return level0.get(this, 'onsubmit'); }\n set onsubmit(value) { level0.set(this, 'onsubmit', value); }\n\n get onsuspend() { return level0.get(this, 'onsuspend'); }\n set onsuspend(value) { level0.set(this, 'onsuspend', value); }\n\n get ontimeupdate() { return level0.get(this, 'ontimeupdate'); }\n set ontimeupdate(value) { level0.set(this, 'ontimeupdate', value); }\n\n get ontoggle() { return level0.get(this, 'ontoggle'); }\n set ontoggle(value) { level0.set(this, 'ontoggle', value); }\n\n get onvolumechange() { return level0.get(this, 'onvolumechange'); }\n set onvolumechange(value) { level0.set(this, 'onvolumechange', value); }\n\n get onwaiting() { return level0.get(this, 'onwaiting'); }\n set onwaiting(value) { level0.set(this, 'onwaiting', value); }\n\n get onauxclick() { return level0.get(this, 'onauxclick'); }\n set onauxclick(value) { level0.set(this, 'onauxclick', value); }\n\n get ongotpointercapture() { return level0.get(this, 'ongotpointercapture'); }\n set ongotpointercapture(value) { level0.set(this, 'ongotpointercapture', value); }\n\n get onlostpointercapture() { return level0.get(this, 'onlostpointercapture'); }\n set onlostpointercapture(value) { level0.set(this, 'onlostpointercapture', value); }\n\n get onpointercancel() { return level0.get(this, 'onpointercancel'); }\n set onpointercancel(value) { level0.set(this, 'onpointercancel', value); }\n\n get onpointerdown() { return level0.get(this, 'onpointerdown'); }\n set onpointerdown(value) { level0.set(this, 'onpointerdown', value); }\n\n get onpointerenter() { return level0.get(this, 'onpointerenter'); }\n set onpointerenter(value) { level0.set(this, 'onpointerenter', value); }\n\n get onpointerleave() { return level0.get(this, 'onpointerleave'); }\n set onpointerleave(value) { level0.set(this, 'onpointerleave', value); }\n\n get onpointermove() { return level0.get(this, 'onpointermove'); }\n set onpointermove(value) { level0.set(this, 'onpointermove', value); }\n\n get onpointerout() { return level0.get(this, 'onpointerout'); }\n set onpointerout(value) { level0.set(this, 'onpointerout', value); }\n\n get onpointerover() { return level0.get(this, 'onpointerover'); }\n set onpointerover(value) { level0.set(this, 'onpointerover', value); }\n\n get onpointerup() { return level0.get(this, 'onpointerup'); }\n set onpointerup(value) { level0.set(this, 'onpointerup', value); }\n /* c8 ignore stop */\n\n}\n","import {CONTENT, PRIVATE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'template';\n\n/**\n * @implements globalThis.HTMLTemplateElement\n */\nclass HTMLTemplateElement extends HTMLElement {\n constructor(ownerDocument) {\n super(ownerDocument, tagName);\n const content = this.ownerDocument.createDocumentFragment();\n (this[CONTENT] = content)[PRIVATE] = this;\n }\n\n get content() {\n if (this.hasChildNodes() && !this[CONTENT].hasChildNodes()) {\n for (const node of this.childNodes)\n this[CONTENT].appendChild(node.cloneNode(true));\n }\n return this[CONTENT];\n }\n}\n\nregisterHTMLClass(tagName, HTMLTemplateElement);\n\nexport {HTMLTemplateElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHtmlElement\n */\nexport class HTMLHtmlElement extends HTMLElement {\n constructor(ownerDocument, localName = 'html') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\nconst {toString} = HTMLElement.prototype;\n\nexport class TextElement extends HTMLElement {\n\n get innerHTML() { return this.textContent; }\n set innerHTML(html) { this.textContent = html; }\n\n toString() {\n const outerHTML = toString.call(this.cloneNode());\n return outerHTML.replace(/></, `>${this.textContent}<`);\n }\n}\n","import { booleanAttribute, stringAttribute } from '../shared/attributes.js';\nimport { registerHTMLClass } from '../shared/register-html-class.js';\n\nimport { TextElement } from './text-element.js';\n\nconst tagName = 'script';\n\n/**\n * @implements globalThis.HTMLScriptElement\n */\nclass HTMLScriptElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get type() {\n return stringAttribute.get(this, 'type');\n }\n set type(value) {\n stringAttribute.set(this, 'type', value);\n }\n\n get src() {\n return stringAttribute.get(this, 'src');\n }\n set src(value) {\n stringAttribute.set(this, 'src', value);\n }\n\n get defer() {\n return booleanAttribute.get(this, 'defer');\n }\n\n set defer(value) {\n booleanAttribute.set(this, 'defer', value);\n }\n\n get crossOrigin() {\n return stringAttribute.get(this, 'crossorigin');\n }\n set crossOrigin(value) {\n stringAttribute.set(this, 'crossorigin', value);\n }\n\n get nomodule() {\n return booleanAttribute.get(this, 'nomodule');\n }\n set nomodule(value) {\n booleanAttribute.set(this, 'nomodule', value);\n }\n\n get referrerPolicy() {\n return stringAttribute.get(this, 'referrerpolicy');\n }\n set referrerPolicy(value) {\n stringAttribute.set(this, 'referrerpolicy', value);\n }\n\n get nonce() {\n return stringAttribute.get(this, 'nonce');\n }\n set nonce(value) {\n stringAttribute.set(this, 'nonce', value);\n }\n\n get async() {\n return booleanAttribute.get(this, 'async');\n }\n set async(value) {\n booleanAttribute.set(this, 'async', value);\n }\n\n get text() { return this.textContent; }\n set text(content) { this.textContent = content; }\n}\n\nregisterHTMLClass(tagName, HTMLScriptElement);\n\nexport { HTMLScriptElement };\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameElement\n */\nexport class HTMLFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frame') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'iframe';\n\n/**\n * @implements globalThis.HTMLIFrameElement\n */\nclass HTMLIFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcdoc() { return stringAttribute.get(this, \"srcdoc\"); }\n set srcdoc(value) { stringAttribute.set(this, \"srcdoc\", value); }\n\n get name() { return stringAttribute.get(this, \"name\"); }\n set name(value) { stringAttribute.set(this, \"name\", value); }\n\n get allow() { return stringAttribute.get(this, \"allow\"); }\n set allow(value) { stringAttribute.set(this, \"allow\", value); }\n\n get allowFullscreen() { return booleanAttribute.get(this, \"allowfullscreen\"); }\n set allowFullscreen(value) { booleanAttribute.set(this, \"allowfullscreen\", value); }\n \n get referrerPolicy() { return stringAttribute.get(this, \"referrerpolicy\"); }\n set referrerPolicy(value) { stringAttribute.set(this, \"referrerpolicy\", value); }\n \n get loading() { return stringAttribute.get(this, \"loading\"); }\n set loading(value) { stringAttribute.set(this, \"loading\", value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLIFrameElement);\n\nexport {HTMLIFrameElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLObjectElement\n */\nexport class HTMLObjectElement extends HTMLElement {\n constructor(ownerDocument, localName = 'object') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHeadElement\n */\nexport class HTMLHeadElement extends HTMLElement {\n constructor(ownerDocument, localName = 'head') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBodyElement\n */\nexport class HTMLBodyElement extends HTMLElement {\n constructor(ownerDocument, localName = 'body') {\n super(ownerDocument, localName);\n }\n}\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-stylesheet-interface\n */\nCSSOM.StyleSheet = function StyleSheet() {\n\tthis.parentStyleSheet = null;\n};\n\n\n//.CommonJS\nexports.StyleSheet = CSSOM.StyleSheet;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-cssrule-interface\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSRule\n */\nCSSOM.CSSRule = function CSSRule() {\n\tthis.parentRule = null;\n\tthis.parentStyleSheet = null;\n};\n\nCSSOM.CSSRule.UNKNOWN_RULE = 0; // obsolete\nCSSOM.CSSRule.STYLE_RULE = 1;\nCSSOM.CSSRule.CHARSET_RULE = 2; // obsolete\nCSSOM.CSSRule.IMPORT_RULE = 3;\nCSSOM.CSSRule.MEDIA_RULE = 4;\nCSSOM.CSSRule.FONT_FACE_RULE = 5;\nCSSOM.CSSRule.PAGE_RULE = 6;\nCSSOM.CSSRule.KEYFRAMES_RULE = 7;\nCSSOM.CSSRule.KEYFRAME_RULE = 8;\nCSSOM.CSSRule.MARGIN_RULE = 9;\nCSSOM.CSSRule.NAMESPACE_RULE = 10;\nCSSOM.CSSRule.COUNTER_STYLE_RULE = 11;\nCSSOM.CSSRule.SUPPORTS_RULE = 12;\nCSSOM.CSSRule.DOCUMENT_RULE = 13;\nCSSOM.CSSRule.FONT_FEATURE_VALUES_RULE = 14;\nCSSOM.CSSRule.VIEWPORT_RULE = 15;\nCSSOM.CSSRule.REGION_STYLE_RULE = 16;\n\n\nCSSOM.CSSRule.prototype = {\n\tconstructor: CSSOM.CSSRule\n\t//FIXME\n};\n\n\n//.CommonJS\nexports.CSSRule = CSSOM.CSSRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssstylerule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule\n */\nCSSOM.CSSStyleRule = function CSSStyleRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.selectorText = \"\";\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSStyleRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule;\nCSSOM.CSSStyleRule.prototype.type = 1;\n\nObject.defineProperty(CSSOM.CSSStyleRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar text;\n\t\tif (this.selectorText) {\n\t\t\ttext = this.selectorText + \" {\" + this.style.cssText + \"}\";\n\t\t} else {\n\t\t\ttext = \"\";\n\t\t}\n\t\treturn text;\n\t},\n\tset: function(cssText) {\n\t\tvar rule = CSSOM.CSSStyleRule.parse(cssText);\n\t\tthis.style = rule.style;\n\t\tthis.selectorText = rule.selectorText;\n\t}\n});\n\n\n/**\n * NON-STANDARD\n * lightweight version of parse.js.\n * @param {string} ruleText\n * @return CSSStyleRule\n */\nCSSOM.CSSStyleRule.parse = function(ruleText) {\n\tvar i = 0;\n\tvar state = \"selector\";\n\tvar index;\n\tvar j = i;\n\tvar buffer = \"\";\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true\n\t};\n\n\tvar styleRule = new CSSOM.CSSStyleRule();\n\tvar name, priority=\"\";\n\n\tfor (var character; (character = ruleText.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\t// Squash 2 or more white-spaces in the row into 1\n\t\t\t\tswitch (ruleText.charAt(i - 1)) {\n\t\t\t\t\tcase \" \":\n\t\t\t\t\tcase \"\\t\":\n\t\t\t\t\tcase \"\\r\":\n\t\t\t\t\tcase \"\\n\":\n\t\t\t\t\tcase \"\\f\":\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbuffer += \" \";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf('\"', j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow '\" is missing';\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf(\"'\", j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow \"' is missing\";\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (ruleText.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = ruleText.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tthrow new SyntaxError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && ruleText.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t} else if (state === \"name\") {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tstate = \"selector\";\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\t}\n\t}\n\n\treturn styleRule;\n\n};\n\n\n//.CommonJS\nexports.CSSStyleRule = CSSOM.CSSStyleRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tStyleSheet: require(\"./StyleSheet\").StyleSheet,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet\n */\nCSSOM.CSSStyleSheet = function CSSStyleSheet() {\n\tCSSOM.StyleSheet.call(this);\n\tthis.cssRules = [];\n};\n\n\nCSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet();\nCSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet;\n\n\n/**\n * Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade.\n *\n * sheet = new Sheet(\"body {margin: 0}\")\n * sheet.toString()\n * -> \"body{margin:0;}\"\n * sheet.insertRule(\"img {border: none}\", 0)\n * -> 0\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n *\n * @param {string} rule\n * @param {number} index\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-insertRule\n * @return {number} The index within the style sheet's rule collection of the newly inserted rule.\n */\nCSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentStyleSheet = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n\n/**\n * Used to delete a rule from the style sheet.\n *\n * sheet = new Sheet(\"img{border:none} body{margin:0}\")\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n * sheet.deleteRule(0)\n * sheet.toString()\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the style sheet's rule list of the rule to remove.\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-deleteRule\n */\nCSSOM.CSSStyleSheet.prototype.deleteRule = function(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1);\n};\n\n\n/**\n * NON-STANDARD\n * @return {string} serialize stylesheet\n */\nCSSOM.CSSStyleSheet.prototype.toString = function() {\n\tvar result = \"\";\n\tvar rules = this.cssRules;\n\tfor (var i=0; i<rules.length; i++) {\n\t\tresult += rules[i].cssText + \"\\n\";\n\t}\n\treturn result;\n};\n\n\n//.CommonJS\nexports.CSSStyleSheet = CSSOM.CSSStyleSheet;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleSheet.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-medialist-interface\n */\nCSSOM.MediaList = function MediaList(){\n\tthis.length = 0;\n};\n\nCSSOM.MediaList.prototype = {\n\n\tconstructor: CSSOM.MediaList,\n\n\t/**\n\t * @return {string}\n\t */\n\tget mediaText() {\n\t\treturn Array.prototype.join.call(this, \", \");\n\t},\n\n\t/**\n\t * @param {string} value\n\t */\n\tset mediaText(value) {\n\t\tvar values = value.split(\",\");\n\t\tvar length = this.length = values.length;\n\t\tfor (var i=0; i<length; i++) {\n\t\t\tthis[i] = values[i].trim();\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tappendMedium: function(medium) {\n\t\tif (Array.prototype.indexOf.call(this, medium) === -1) {\n\t\t\tthis[this.length] = medium;\n\t\t\tthis.length++;\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tdeleteMedium: function(medium) {\n\t\tvar index = Array.prototype.indexOf.call(this, medium);\n\t\tif (index !== -1) {\n\t\t\tArray.prototype.splice.call(this, index, 1);\n\t\t}\n\t}\n\n};\n\n\n//.CommonJS\nexports.MediaList = CSSOM.MediaList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssimportrule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSImportRule\n */\nCSSOM.CSSImportRule = function CSSImportRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.href = \"\";\n\tthis.media = new CSSOM.MediaList();\n\tthis.styleSheet = new CSSOM.CSSStyleSheet();\n};\n\nCSSOM.CSSImportRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSImportRule.prototype.constructor = CSSOM.CSSImportRule;\nCSSOM.CSSImportRule.prototype.type = 3;\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"cssText\", {\n get: function() {\n var mediaText = this.media.mediaText;\n return \"@import url(\" + this.href + \")\" + (mediaText ? \" \" + mediaText : \"\") + \";\";\n },\n set: function(cssText) {\n var i = 0;\n\n /**\n * @import url(partial.css) screen, handheld;\n * || |\n * after-import media\n * |\n * url\n */\n var state = '';\n\n var buffer = '';\n var index;\n for (var character; (character = cssText.charAt(i)); i++) {\n\n switch (character) {\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n case '\\f':\n if (state === 'after-import') {\n state = 'url';\n } else {\n buffer += character;\n }\n break;\n\n case '@':\n if (!state && cssText.indexOf('@import', i) === i) {\n state = 'after-import';\n i += 'import'.length;\n buffer = '';\n }\n break;\n\n case 'u':\n if (state === 'url' && cssText.indexOf('url(', i) === i) {\n index = cssText.indexOf(')', i + 1);\n if (index === -1) {\n throw i + ': \")\" not found';\n }\n i += 'url('.length;\n var url = cssText.slice(i, index);\n if (url[0] === url[url.length - 1]) {\n if (url[0] === '\"' || url[0] === \"'\") {\n url = url.slice(1, -1);\n }\n }\n this.href = url;\n i = index;\n state = 'media';\n }\n break;\n\n case '\"':\n if (state === 'url') {\n index = cssText.indexOf('\"', i + 1);\n if (!index) {\n throw i + \": '\\\"' not found\";\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case \"'\":\n if (state === 'url') {\n index = cssText.indexOf(\"'\", i + 1);\n if (!index) {\n throw i + ': \"\\'\" not found';\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case ';':\n if (state === 'media') {\n if (buffer) {\n this.media.mediaText = buffer.trim();\n }\n }\n break;\n\n default:\n if (state === 'media') {\n buffer += character;\n }\n break;\n }\n }\n }\n});\n\n\n//.CommonJS\nexports.CSSImportRule = CSSOM.CSSImportRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/cssom/#the-cssgroupingrule-interface\n */\nCSSOM.CSSGroupingRule = function CSSGroupingRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSGroupingRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSGroupingRule.prototype.constructor = CSSOM.CSSGroupingRule;\n\n\n/**\n * Used to insert a new CSS rule to a list of CSS rules.\n *\n * @example\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n * cssGroupingRule.insertRule(\"img{border:none;}\", 1)\n * -> 1\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}img{border:none;}\"\n *\n * @param {string} rule\n * @param {number} [index]\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-insertrule\n * @return {number} The index within the grouping rule's collection of the newly inserted rule.\n */\n CSSOM.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentRule = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n/**\n * Used to delete a rule from the grouping rule.\n *\n * cssGroupingRule.cssText\n * -> \"img{border:none;}body{margin:0;}\"\n * cssGroupingRule.deleteRule(0)\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the grouping rule's rule list of the rule to remove.\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-deleterule\n */\n CSSOM.CSSGroupingRule.prototype.deleteRule = function deleteRule(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1)[0].parentRule = null;\n};\n\n//.CommonJS\nexports.CSSGroupingRule = CSSOM.CSSGroupingRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://www.w3.org/TR/css-conditional-3/#the-cssconditionrule-interface\n */\nCSSOM.CSSConditionRule = function CSSConditionRule() {\n CSSOM.CSSGroupingRule.call(this);\n this.cssRules = [];\n};\n\nCSSOM.CSSConditionRule.prototype = new CSSOM.CSSGroupingRule();\nCSSOM.CSSConditionRule.prototype.constructor = CSSOM.CSSConditionRule;\nCSSOM.CSSConditionRule.prototype.conditionText = ''\nCSSOM.CSSConditionRule.prototype.cssText = ''\n\n//.CommonJS\nexports.CSSConditionRule = CSSOM.CSSConditionRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssmediarule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule\n */\nCSSOM.CSSMediaRule = function CSSMediaRule() {\n\tCSSOM.CSSConditionRule.call(this);\n\tthis.media = new CSSOM.MediaList();\n};\n\nCSSOM.CSSMediaRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSMediaRule.prototype.constructor = CSSOM.CSSMediaRule;\nCSSOM.CSSMediaRule.prototype.type = 4;\n\n// https://opensource.apple.com/source/WebCore/WebCore-7611.1.21.161.3/css/CSSMediaRule.cpp\nObject.defineProperties(CSSOM.CSSMediaRule.prototype, {\n \"conditionText\": {\n get: function() {\n return this.media.mediaText;\n },\n set: function(value) {\n this.media.mediaText = value;\n },\n configurable: true,\n enumerable: true\n },\n \"cssText\": {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@media \" + this.media.mediaText + \" {\" + cssTexts.join(\"\") + \"}\";\n },\n configurable: true,\n enumerable: true\n }\n});\n\n\n//.CommonJS\nexports.CSSMediaRule = CSSOM.CSSMediaRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n CSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-conditional-3/#the-csssupportsrule-interface\n */\nCSSOM.CSSSupportsRule = function CSSSupportsRule() {\n CSSOM.CSSConditionRule.call(this);\n};\n\nCSSOM.CSSSupportsRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSSupportsRule.prototype.constructor = CSSOM.CSSSupportsRule;\nCSSOM.CSSSupportsRule.prototype.type = 12;\n\nObject.defineProperty(CSSOM.CSSSupportsRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n\n for (var i = 0, length = this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n\n return \"@supports \" + this.conditionText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n//.CommonJS\nexports.CSSSupportsRule = CSSOM.CSSSupportsRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#css-font-face-rule\n */\nCSSOM.CSSFontFaceRule = function CSSFontFaceRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSFontFaceRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSFontFaceRule.prototype.constructor = CSSOM.CSSFontFaceRule;\nCSSOM.CSSFontFaceRule.prototype.type = 5;\n//FIXME\n//CSSOM.CSSFontFaceRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSFontFaceRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSFontFaceRule.cpp\nObject.defineProperty(CSSOM.CSSFontFaceRule.prototype, \"cssText\", {\n get: function() {\n return \"@font-face {\" + this.style.cssText + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSFontFaceRule = CSSOM.CSSFontFaceRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/shadow-dom/#host-at-rule\n */\nCSSOM.CSSHostRule = function CSSHostRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSHostRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSHostRule.prototype.constructor = CSSOM.CSSHostRule;\nCSSOM.CSSHostRule.prototype.type = 1001;\n//FIXME\n//CSSOM.CSSHostRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSHostRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSHostRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar cssTexts = [];\n\t\tfor (var i=0, length=this.cssRules.length; i < length; i++) {\n\t\t\tcssTexts.push(this.cssRules[i].cssText);\n\t\t}\n\t\treturn \"@host {\" + cssTexts.join(\"\") + \"}\";\n\t}\n});\n\n\n//.CommonJS\nexports.CSSHostRule = CSSOM.CSSHostRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleDeclaration: require('./CSSStyleDeclaration').CSSStyleDeclaration\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframeRule\n */\nCSSOM.CSSKeyframeRule = function CSSKeyframeRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.keyText = '';\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSKeyframeRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframeRule.prototype.constructor = CSSOM.CSSKeyframeRule;\nCSSOM.CSSKeyframeRule.prototype.type = 8;\n//FIXME\n//CSSOM.CSSKeyframeRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframeRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframeRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframeRule.prototype, \"cssText\", {\n get: function() {\n return this.keyText + \" {\" + this.style.cssText + \"} \";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframeRule = CSSOM.CSSKeyframeRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframesRule\n */\nCSSOM.CSSKeyframesRule = function CSSKeyframesRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.name = '';\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSKeyframesRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframesRule.prototype.constructor = CSSOM.CSSKeyframesRule;\nCSSOM.CSSKeyframesRule.prototype.type = 7;\n//FIXME\n//CSSOM.CSSKeyframesRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframesRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframesRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframesRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(\" \" + this.cssRules[i].cssText);\n }\n return \"@\" + (this._vendorPrefix || '') + \"keyframes \" + this.name + \" { \\n\" + cssTexts.join(\"\\n\") + \"\\n}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframesRule = CSSOM.CSSKeyframesRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n *\n * TODO: add if needed\n */\nCSSOM.CSSValue = function CSSValue() {\n};\n\nCSSOM.CSSValue.prototype = {\n\tconstructor: CSSOM.CSSValue,\n\n\t// @see: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n\tset cssText(text) {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('DOMException: property \"cssText\" of \"' + name + '\" is readonly and can not be replaced with \"' + text + '\"!');\n\t},\n\n\tget cssText() {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('getter \"cssText\" of \"' + name + '\" is not implemented!');\n\t},\n\n\t_getConstructorName: function() {\n\t\tvar s = this.constructor.toString(),\n\t\t\t\tc = s.match(/function\\s([^\\(]+)/),\n\t\t\t\tname = c[1];\n\n\t\treturn name;\n\t}\n};\n\n\n//.CommonJS\nexports.CSSValue = CSSOM.CSSValue;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSValue: require('./CSSValue').CSSValue\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://msdn.microsoft.com/en-us/library/ms537634(v=vs.85).aspx\n *\n */\nCSSOM.CSSValueExpression = function CSSValueExpression(token, idx) {\n\tthis._token = token;\n\tthis._idx = idx;\n};\n\nCSSOM.CSSValueExpression.prototype = new CSSOM.CSSValue();\nCSSOM.CSSValueExpression.prototype.constructor = CSSOM.CSSValueExpression;\n\n/**\n * parse css expression() value\n *\n * @return {Object}\n * - error:\n * or\n * - idx:\n * - expression:\n *\n * Example:\n *\n * .selector {\n *\t\tzoom: expression(documentElement.clientWidth > 1000 ? '1000px' : 'auto');\n * }\n */\nCSSOM.CSSValueExpression.prototype.parse = function() {\n\tvar token = this._token,\n\t\t\tidx = this._idx;\n\n\tvar character = '',\n\t\t\texpression = '',\n\t\t\terror = '',\n\t\t\tinfo,\n\t\t\tparen = [];\n\n\n\tfor (; ; ++idx) {\n\t\tcharacter = token.charAt(idx);\n\n\t\t// end of token\n\t\tif (character === '') {\n\t\t\terror = 'css expression error: unfinished expression!';\n\t\t\tbreak;\n\t\t}\n\n\t\tswitch(character) {\n\t\t\tcase '(':\n\t\t\t\tparen.push(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase ')':\n\t\t\t\tparen.pop(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase '/':\n\t\t\t\tif ((info = this._parseJSComment(token, idx))) { // comment?\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\terror = 'css expression error: unfinished comment in expression!';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tidx = info.idx;\n\t\t\t\t\t\t// ignore the comment\n\t\t\t\t\t}\n\t\t\t\t} else if ((info = this._parseJSRexExp(token, idx))) { // regexp\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else { // other\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"'\":\n\t\t\tcase '\"':\n\t\t\t\tinfo = this._parseJSString(token, idx, character);\n\t\t\t\tif (info) { // string\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else {\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (error) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// end of expression\n\t\tif (paren.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tvar ret;\n\tif (error) {\n\t\tret = {\n\t\t\terror: error\n\t\t};\n\t} else {\n\t\tret = {\n\t\t\tidx: idx,\n\t\t\texpression: expression\n\t\t};\n\t}\n\n\treturn ret;\n};\n\n\n/**\n *\n * @return {Object|false}\n * - idx:\n * - text:\n * or\n * - error:\n * or\n * false\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSComment = function(token, idx) {\n\tvar nextChar = token.charAt(idx + 1),\n\t\t\ttext;\n\n\tif (nextChar === '/' || nextChar === '*') {\n\t\tvar startIdx = idx,\n\t\t\t\tendIdx,\n\t\t\t\tcommentEndChar;\n\n\t\tif (nextChar === '/') { // line comment\n\t\t\tcommentEndChar = '\\n';\n\t\t} else if (nextChar === '*') { // block comment\n\t\t\tcommentEndChar = '*/';\n\t\t}\n\n\t\tendIdx = token.indexOf(commentEndChar, startIdx + 1 + 1);\n\t\tif (endIdx !== -1) {\n\t\t\tendIdx = endIdx + commentEndChar.length - 1;\n\t\t\ttext = token.substring(idx, endIdx + 1);\n\t\t\treturn {\n\t\t\t\tidx: endIdx,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t} else {\n\t\t\tvar error = 'css expression error: unfinished comment in expression!';\n\t\t\treturn {\n\t\t\t\terror: error\n\t\t\t};\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\n\n/**\n *\n * @return {Object|false}\n *\t\t\t\t\t- idx:\n *\t\t\t\t\t- text:\n *\t\t\t\t\tor \n *\t\t\t\t\tfalse\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSString = function(token, idx, sep) {\n\tvar endIdx = this._findMatchedIdx(token, idx, sep),\n\t\t\ttext;\n\n\tif (endIdx === -1) {\n\t\treturn false;\n\t} else {\n\t\ttext = token.substring(idx, endIdx + sep.length);\n\n\t\treturn {\n\t\t\tidx: endIdx,\n\t\t\ttext: text\n\t\t};\n\t}\n};\n\n\n/**\n * parse regexp in css expression\n *\n * @return {Object|false}\n *\t\t\t\t- idx:\n *\t\t\t\t- regExp:\n *\t\t\t\tor \n *\t\t\t\tfalse\n */\n\n/*\n\nall legal RegExp\n \n/a/\n(/a/)\n[/a/]\n[12, /a/]\n\n!/a/\n\n+/a/\n-/a/\n* /a/\n/ /a/\n%/a/\n\n===/a/\n!==/a/\n==/a/\n!=/a/\n>/a/\n>=/a/\n</a/\n<=/a/\n\n&/a/\n|/a/\n^/a/\n~/a/\n<</a/\n>>/a/\n>>>/a/\n\n&&/a/\n||/a/\n?/a/\n=/a/\n,/a/\n\n\t\tdelete /a/\n\t\t\t\tin /a/\ninstanceof /a/\n\t\t\t\tnew /a/\n\t\ttypeof /a/\n\t\t\tvoid /a/\n\n*/\nCSSOM.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) {\n\tvar before = token.substring(0, idx).replace(/\\s+$/, \"\"),\n\t\t\tlegalRegx = [\n\t\t\t\t/^$/,\n\t\t\t\t/\\($/,\n\t\t\t\t/\\[$/,\n\t\t\t\t/\\!$/,\n\t\t\t\t/\\+$/,\n\t\t\t\t/\\-$/,\n\t\t\t\t/\\*$/,\n\t\t\t\t/\\/\\s+/,\n\t\t\t\t/\\%$/,\n\t\t\t\t/\\=$/,\n\t\t\t\t/\\>$/,\n\t\t\t\t/<$/,\n\t\t\t\t/\\&$/,\n\t\t\t\t/\\|$/,\n\t\t\t\t/\\^$/,\n\t\t\t\t/\\~$/,\n\t\t\t\t/\\?$/,\n\t\t\t\t/\\,$/,\n\t\t\t\t/delete$/,\n\t\t\t\t/in$/,\n\t\t\t\t/instanceof$/,\n\t\t\t\t/new$/,\n\t\t\t\t/typeof$/,\n\t\t\t\t/void$/\n\t\t\t];\n\n\tvar isLegal = legalRegx.some(function(reg) {\n\t\treturn reg.test(before);\n\t});\n\n\tif (!isLegal) {\n\t\treturn false;\n\t} else {\n\t\tvar sep = '/';\n\n\t\t// same logic as string\n\t\treturn this._parseJSString(token, idx, sep);\n\t}\n};\n\n\n/**\n *\n * find next sep(same line) index in `token`\n *\n * @return {Number}\n *\n */\nCSSOM.CSSValueExpression.prototype._findMatchedIdx = function(token, idx, sep) {\n\tvar startIdx = idx,\n\t\t\tendIdx;\n\n\tvar NOT_FOUND = -1;\n\n\twhile(true) {\n\t\tendIdx = token.indexOf(sep, startIdx + 1);\n\n\t\tif (endIdx === -1) { // not found\n\t\t\tendIdx = NOT_FOUND;\n\t\t\tbreak;\n\t\t} else {\n\t\t\tvar text = token.substring(idx + 1, endIdx),\n\t\t\t\t\tmatched = text.match(/\\\\+$/);\n\t\t\tif (!matched || matched[0] % 2 === 0) { // not escaped\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tstartIdx = endIdx;\n\t\t\t}\n\t\t}\n\t}\n\n\t// boundary must be in the same line(js sting or regexp)\n\tvar nextNewLineIdx = token.indexOf('\\n', idx + 1);\n\tif (nextNewLineIdx < endIdx) {\n\t\tendIdx = NOT_FOUND;\n\t}\n\n\n\treturn endIdx;\n};\n\n\n\n\n//.CommonJS\nexports.CSSValueExpression = CSSOM.CSSValueExpression;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.MatcherList = function MatcherList(){\n this.length = 0;\n};\n\nCSSOM.MatcherList.prototype = {\n\n constructor: CSSOM.MatcherList,\n\n /**\n * @return {string}\n */\n get matcherText() {\n return Array.prototype.join.call(this, \", \");\n },\n\n /**\n * @param {string} value\n */\n set matcherText(value) {\n // just a temporary solution, actually it may be wrong by just split the value with ',', because a url can include ','.\n var values = value.split(\",\");\n var length = this.length = values.length;\n for (var i=0; i<length; i++) {\n this[i] = values[i].trim();\n }\n },\n\n /**\n * @param {string} matcher\n */\n appendMatcher: function(matcher) {\n if (Array.prototype.indexOf.call(this, matcher) === -1) {\n this[this.length] = matcher;\n this.length++;\n }\n },\n\n /**\n * @param {string} matcher\n */\n deleteMatcher: function(matcher) {\n var index = Array.prototype.indexOf.call(this, matcher);\n if (index !== -1) {\n Array.prototype.splice.call(this, index, 1);\n }\n }\n\n};\n\n\n//.CommonJS\nexports.MatcherList = CSSOM.MatcherList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n MatcherList: require(\"./MatcherList\").MatcherList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.CSSDocumentRule = function CSSDocumentRule() {\n CSSOM.CSSRule.call(this);\n this.matcher = new CSSOM.MatcherList();\n this.cssRules = [];\n};\n\nCSSOM.CSSDocumentRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSDocumentRule.prototype.constructor = CSSOM.CSSDocumentRule;\nCSSOM.CSSDocumentRule.prototype.type = 10;\n//FIXME\n//CSSOM.CSSDocumentRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSDocumentRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSDocumentRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@-moz-document \" + this.matcher.matcherText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSDocumentRule = CSSOM.CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @param {string} token\n */\nCSSOM.parse = function parse(token) {\n\n\tvar i = 0;\n\n\t/**\n\t\t\"before-selector\" or\n\t\t\"selector\" or\n\t\t\"atRule\" or\n\t\t\"atBlock\" or\n\t\t\"conditionBlock\" or\n\t\t\"before-name\" or\n\t\t\"name\" or\n\t\t\"before-value\" or\n\t\t\"value\"\n\t*/\n\tvar state = \"before-selector\";\n\n\tvar index;\n\tvar buffer = \"\";\n\tvar valueParenthesisDepth = 0;\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true,\n\t\t\"value-parenthesis\": true,\n\t\t\"atRule\": true,\n\t\t\"importRule-begin\": true,\n\t\t\"importRule\": true,\n\t\t\"atBlock\": true,\n\t\t\"conditionBlock\": true,\n\t\t'documentRule-begin': true\n\t};\n\n\tvar styleSheet = new CSSOM.CSSStyleSheet();\n\n\t// @type CSSStyleSheet|CSSMediaRule|CSSSupportsRule|CSSFontFaceRule|CSSKeyframesRule|CSSDocumentRule\n\tvar currentScope = styleSheet;\n\n\t// @type CSSMediaRule|CSSSupportsRule|CSSKeyframesRule|CSSDocumentRule\n\tvar parentRule;\n\n\tvar ancestorRules = [];\n\tvar hasAncestors = false;\n\tvar prevScope;\n\n\tvar name, priority=\"\", styleRule, mediaRule, supportsRule, importRule, fontFaceRule, keyframesRule, documentRule, hostRule;\n\n\tvar atKeyframesRegExp = /@(-(?:\\w+-)+)?keyframes/g;\n\n\tvar parseError = function(message) {\n\t\tvar lines = token.substring(0, i).split('\\n');\n\t\tvar lineCount = lines.length;\n\t\tvar charCount = lines.pop().length + 1;\n\t\tvar error = new Error(message + ' (line ' + lineCount + ', char ' + charCount + ')');\n\t\terror.line = lineCount;\n\t\t/* jshint sub : true */\n\t\terror['char'] = charCount;\n\t\terror.styleSheet = styleSheet;\n\t\tthrow error;\n\t};\n\n\tfor (var character; (character = token.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf('\"', index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError('Unmatched \"');\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf(\"'\", index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError(\"Unmatched '\");\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (token.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = token.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tparseError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tif (state === \"importRule-begin\") {\n\t\t\t\tbuffer += \" \";\n\t\t\t\tstate = \"importRule\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// At-rule\n\t\tcase \"@\":\n\t\t\tif (token.indexOf(\"@-moz-document\", i) === i) {\n\t\t\t\tstate = \"documentRule-begin\";\n\t\t\t\tdocumentRule = new CSSOM.CSSDocumentRule();\n\t\t\t\tdocumentRule.__starts = i;\n\t\t\t\ti += \"-moz-document\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@media\", i) === i) {\n\t\t\t\tstate = \"atBlock\";\n\t\t\t\tmediaRule = new CSSOM.CSSMediaRule();\n\t\t\t\tmediaRule.__starts = i;\n\t\t\t\ti += \"media\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@supports\", i) === i) {\n\t\t\t\tstate = \"conditionBlock\";\n\t\t\t\tsupportsRule = new CSSOM.CSSSupportsRule();\n\t\t\t\tsupportsRule.__starts = i;\n\t\t\t\ti += \"supports\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@host\", i) === i) {\n\t\t\t\tstate = \"hostRule-begin\";\n\t\t\t\ti += \"host\".length;\n\t\t\t\thostRule = new CSSOM.CSSHostRule();\n\t\t\t\thostRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@import\", i) === i) {\n\t\t\t\tstate = \"importRule-begin\";\n\t\t\t\ti += \"import\".length;\n\t\t\t\tbuffer += \"@import\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@font-face\", i) === i) {\n\t\t\t\tstate = \"fontFaceRule-begin\";\n\t\t\t\ti += \"font-face\".length;\n\t\t\t\tfontFaceRule = new CSSOM.CSSFontFaceRule();\n\t\t\t\tfontFaceRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tatKeyframesRegExp.lastIndex = i;\n\t\t\t\tvar matchKeyframes = atKeyframesRegExp.exec(token);\n\t\t\t\tif (matchKeyframes && matchKeyframes.index === i) {\n\t\t\t\t\tstate = \"keyframesRule-begin\";\n\t\t\t\t\tkeyframesRule = new CSSOM.CSSKeyframesRule();\n\t\t\t\t\tkeyframesRule.__starts = i;\n\t\t\t\t\tkeyframesRule._vendorPrefix = matchKeyframes[1]; // Will come out as undefined if no prefix was found\n\t\t\t\t\ti += matchKeyframes[0].length - 1;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (state === \"selector\") {\n\t\t\t\t\tstate = \"atRule\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\" || state === \"atRule\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tstyleRule.style.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"atBlock\") {\n\t\t\t\tmediaRule.media.mediaText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = mediaRule;\n\t\t\t\tmediaRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"conditionBlock\") {\n\t\t\t\tsupportsRule.conditionText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = supportsRule;\n\t\t\t\tsupportsRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"hostRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = hostRule;\n\t\t\t\thostRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"fontFaceRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tfontFaceRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tfontFaceRule.parentStyleSheet = styleSheet;\n\t\t\t\tstyleRule = fontFaceRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"keyframesRule-begin\") {\n\t\t\t\tkeyframesRule.name = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tkeyframesRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tkeyframesRule.parentStyleSheet = styleSheet;\n\t\t\t\tcurrentScope = parentRule = keyframesRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t} else if (state === \"keyframeRule-begin\") {\n\t\t\t\tstyleRule = new CSSOM.CSSKeyframeRule();\n\t\t\t\tstyleRule.keyText = buffer.trim();\n\t\t\t\tstyleRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"documentRule-begin\") {\n\t\t\t\t// FIXME: what if this '{' is in the url text of the match function?\n\t\t\t\tdocumentRule.matcher.matcherText = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tdocumentRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tcurrentScope = parentRule = documentRule;\n\t\t\t\tdocumentRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"(\":\n\t\t\tif (state === 'value') {\n\t\t\t\t// ie css expression mode\n\t\t\t\tif (buffer.trim() === 'expression') {\n\t\t\t\t\tvar info = (new CSSOM.CSSValueExpression(token, i)).parse();\n\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\tparseError(info.error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuffer += info.expression;\n\t\t\t\t\t\ti = info.idx;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstate = 'value-parenthesis';\n\t\t\t\t\t//always ensure this is reset to 1 on transition\n\t\t\t\t\t//from value to value-parenthesis\n\t\t\t\t\tvalueParenthesisDepth = 1;\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t} else if (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth++;\n\t\t\t\tbuffer += character;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \")\":\n\t\t\tif (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth--;\n\t\t\t\tif (valueParenthesisDepth === 0) state = 'value';\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && token.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"atRule\":\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule\":\n\t\t\t\t\timportRule = new CSSOM.CSSImportRule();\n\t\t\t\t\timportRule.parentStyleSheet = importRule.styleSheet.parentStyleSheet = styleSheet;\n\t\t\t\t\timportRule.cssText = buffer + character;\n\t\t\t\t\tstyleSheet.cssRules.push(importRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbuffer += character;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"before-name\":\n\t\t\t\tcase \"name\":\n\t\t\t\t\tstyleRule.__ends = i + 1;\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tstyleRule.parentRule = parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule.parentStyleSheet = styleSheet;\n\t\t\t\t\tcurrentScope.cssRules.push(styleRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tif (currentScope.constructor === CSSOM.CSSKeyframesRule) {\n\t\t\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"keyframeRule-begin\":\n\t\t\t\tcase \"before-selector\":\n\t\t\t\tcase \"selector\":\n\t\t\t\t\t// End of media/supports/document rule.\n\t\t\t\t\tif (!parentRule) {\n\t\t\t\t\t\tparseError(\"Unexpected }\");\n\t\t\t\t\t}\n\n\t\t\t\t\t// Handle rules nested in @media or @supports\n\t\t\t\t\thasAncestors = ancestorRules.length > 0;\n\n\t\t\t\t\twhile (ancestorRules.length > 0) {\n\t\t\t\t\t\tparentRule = ancestorRules.pop();\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparentRule.constructor.name === \"CSSMediaRule\"\n\t\t\t\t\t\t\t|| parentRule.constructor.name === \"CSSSupportsRule\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tprevScope = currentScope;\n\t\t\t\t\t\t\tcurrentScope = parentRule;\n\t\t\t\t\t\t\tcurrentScope.cssRules.push(prevScope);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ancestorRules.length === 0) {\n\t\t\t\t\t\t\thasAncestors = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (!hasAncestors) {\n\t\t\t\t\t\tcurrentScope.__ends = i + 1;\n\t\t\t\t\t\tstyleSheet.cssRules.push(currentScope);\n\t\t\t\t\t\tcurrentScope = styleSheet;\n\t\t\t\t\t\tparentRule = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tswitch (state) {\n\t\t\t\tcase \"before-selector\":\n\t\t\t\t\tstate = \"selector\";\n\t\t\t\t\tstyleRule = new CSSOM.CSSStyleRule();\n\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-name\":\n\t\t\t\t\tstate = \"name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-value\":\n\t\t\t\t\tstate = \"value\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule-begin\":\n\t\t\t\t\tstate = \"importRule\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn styleSheet;\n};\n\n\n//.CommonJS\nexports.parse = CSSOM.parse;\n// The following modules cannot be included sooner due to the mutual dependency with parse.js\nCSSOM.CSSStyleSheet = require(\"./CSSStyleSheet\").CSSStyleSheet;\nCSSOM.CSSStyleRule = require(\"./CSSStyleRule\").CSSStyleRule;\nCSSOM.CSSImportRule = require(\"./CSSImportRule\").CSSImportRule;\nCSSOM.CSSGroupingRule = require(\"./CSSGroupingRule\").CSSGroupingRule;\nCSSOM.CSSMediaRule = require(\"./CSSMediaRule\").CSSMediaRule;\nCSSOM.CSSConditionRule = require(\"./CSSConditionRule\").CSSConditionRule;\nCSSOM.CSSSupportsRule = require(\"./CSSSupportsRule\").CSSSupportsRule;\nCSSOM.CSSFontFaceRule = require(\"./CSSFontFaceRule\").CSSFontFaceRule;\nCSSOM.CSSHostRule = require(\"./CSSHostRule\").CSSHostRule;\nCSSOM.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nCSSOM.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nCSSOM.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nCSSOM.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nCSSOM.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration\n */\nCSSOM.CSSStyleDeclaration = function CSSStyleDeclaration(){\n\tthis.length = 0;\n\tthis.parentRule = null;\n\n\t// NON-STANDARD\n\tthis._importants = {};\n};\n\n\nCSSOM.CSSStyleDeclaration.prototype = {\n\n\tconstructor: CSSOM.CSSStyleDeclaration,\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set.\n\t */\n\tgetPropertyValue: function(name) {\n\t\treturn this[name] || \"\";\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @param {string} value\n\t * @param {string} [priority=null] \"important\" or null\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty\n\t */\n\tsetProperty: function(name, value, priority) {\n\t\tif (this[name]) {\n\t\t\t// Property already exist. Overwrite it.\n\t\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\t\tif (index < 0) {\n\t\t\t\tthis[this.length] = name;\n\t\t\t\tthis.length++;\n\t\t\t}\n\t\t} else {\n\t\t\t// New property.\n\t\t\tthis[this.length] = name;\n\t\t\tthis.length++;\n\t\t}\n\t\tthis[name] = value + \"\";\n\t\tthis._importants[name] = priority;\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property.\n\t */\n\tremoveProperty: function(name) {\n\t\tif (!(name in this)) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\tif (index < 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar prevValue = this[name];\n\t\tthis[name] = \"\";\n\n\t\t// That's what WebKit and Opera do\n\t\tArray.prototype.splice.call(this, index, 1);\n\n\t\t// That's what Firefox does\n\t\t//this[index] = \"\"\n\n\t\treturn prevValue;\n\t},\n\n\tgetPropertyCSSValue: function() {\n\t\t//FIXME\n\t},\n\n\t/**\n\t *\n\t * @param {String} name\n\t */\n\tgetPropertyPriority: function(name) {\n\t\treturn this._importants[name] || \"\";\n\t},\n\n\n\t/**\n\t * element.style.overflow = \"auto\"\n\t * element.style.getPropertyShorthand(\"overflow-x\")\n\t * -> \"overflow\"\n\t */\n\tgetPropertyShorthand: function() {\n\t\t//FIXME\n\t},\n\n\tisPropertyImplicit: function() {\n\t\t//FIXME\n\t},\n\n\t// Doesn't work in IE < 9\n\tget cssText(){\n\t\tvar properties = [];\n\t\tfor (var i=0, length=this.length; i < length; ++i) {\n\t\t\tvar name = this[i];\n\t\t\tvar value = this.getPropertyValue(name);\n\t\t\tvar priority = this.getPropertyPriority(name);\n\t\t\tif (priority) {\n\t\t\t\tpriority = \" !\" + priority;\n\t\t\t}\n\t\t\tproperties[i] = name + \": \" + value + priority + \";\";\n\t\t}\n\t\treturn properties.join(\" \");\n\t},\n\n\tset cssText(text){\n\t\tvar i, name;\n\t\tfor (i = this.length; i--;) {\n\t\t\tname = this[i];\n\t\t\tthis[name] = \"\";\n\t\t}\n\t\tArray.prototype.splice.call(this, 0, this.length);\n\t\tthis._importants = {};\n\n\t\tvar dummyRule = CSSOM.parse('#bogus{' + text + '}').cssRules[0].style;\n\t\tvar length = dummyRule.length;\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\tname = dummyRule[i];\n\t\t\tthis.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));\n\t\t}\n\t}\n};\n\n\n//.CommonJS\nexports.CSSStyleDeclaration = CSSOM.CSSStyleDeclaration;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleDeclaration.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tCSSMediaRule: require(\"./CSSMediaRule\").CSSMediaRule,\n\tCSSSupportsRule: require(\"./CSSSupportsRule\").CSSSupportsRule,\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSKeyframeRule: require('./CSSKeyframeRule').CSSKeyframeRule,\n\tCSSKeyframesRule: require('./CSSKeyframesRule').CSSKeyframesRule\n};\n///CommonJS\n\n\n/**\n * Produces a deep copy of stylesheet — the instance variables of stylesheet are copied recursively.\n * @param {CSSStyleSheet|CSSOM.CSSStyleSheet} stylesheet\n * @nosideeffects\n * @return {CSSOM.CSSStyleSheet}\n */\nCSSOM.clone = function clone(stylesheet) {\n\n\tvar cloned = new CSSOM.CSSStyleSheet();\n\n\tvar rules = stylesheet.cssRules;\n\tif (!rules) {\n\t\treturn cloned;\n\t}\n\n\tfor (var i = 0, rulesLength = rules.length; i < rulesLength; i++) {\n\t\tvar rule = rules[i];\n\t\tvar ruleClone = cloned.cssRules[i] = new rule.constructor();\n\n\t\tvar style = rule.style;\n\t\tif (style) {\n\t\t\tvar styleClone = ruleClone.style = new CSSOM.CSSStyleDeclaration();\n\t\t\tfor (var j = 0, styleLength = style.length; j < styleLength; j++) {\n\t\t\t\tvar name = styleClone[j] = style[j];\n\t\t\t\tstyleClone[name] = style[name];\n\t\t\t\tstyleClone._importants[name] = style.getPropertyPriority(name);\n\t\t\t}\n\t\t\tstyleClone.length = style.length;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('keyText')) {\n\t\t\truleClone.keyText = rule.keyText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('selectorText')) {\n\t\t\truleClone.selectorText = rule.selectorText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('mediaText')) {\n\t\t\truleClone.mediaText = rule.mediaText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('conditionText')) {\n\t\t\truleClone.conditionText = rule.conditionText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('cssRules')) {\n\t\t\truleClone.cssRules = clone(rule).cssRules;\n\t\t}\n\t}\n\n\treturn cloned;\n\n};\n\n//.CommonJS\nexports.clone = CSSOM.clone;\n///CommonJS\n","'use strict';\n\nexports.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nexports.CSSRule = require('./CSSRule').CSSRule;\nexports.CSSGroupingRule = require('./CSSGroupingRule').CSSGroupingRule;\nexports.CSSConditionRule = require('./CSSConditionRule').CSSConditionRule;\nexports.CSSStyleRule = require('./CSSStyleRule').CSSStyleRule;\nexports.MediaList = require('./MediaList').MediaList;\nexports.CSSMediaRule = require('./CSSMediaRule').CSSMediaRule;\nexports.CSSSupportsRule = require('./CSSSupportsRule').CSSSupportsRule;\nexports.CSSImportRule = require('./CSSImportRule').CSSImportRule;\nexports.CSSFontFaceRule = require('./CSSFontFaceRule').CSSFontFaceRule;\nexports.CSSHostRule = require('./CSSHostRule').CSSHostRule;\nexports.StyleSheet = require('./StyleSheet').StyleSheet;\nexports.CSSStyleSheet = require('./CSSStyleSheet').CSSStyleSheet;\nexports.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nexports.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nexports.MatcherList = require('./MatcherList').MatcherList;\nexports.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\nexports.CSSValue = require('./CSSValue').CSSValue;\nexports.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nexports.parse = require('./parse').parse;\nexports.clone = require('./clone').clone;\n","import {parse} from 'cssom';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {SHEET} from '../shared/symbols.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'style';\n\n/**\n * @implements globalThis.HTMLStyleElement\n */\nclass HTMLStyleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[SHEET] = null;\n }\n\n get sheet() {\n const sheet = this[SHEET];\n if (sheet !== null) {\n return sheet;\n }\n return this[SHEET] = parse(this.textContent);\n }\n\n get innerHTML() {\n return super.innerHTML || '';\n }\n set innerHTML(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get innerText() {\n return super.innerText || '';\n }\n set innerText(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get textContent() {\n return super.textContent || '';\n }\n set textContent(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n}\n\nregisterHTMLClass(tagName, HTMLStyleElement);\n\nexport {HTMLStyleElement};\n","import {stringAttribute} from '../shared/attributes.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTimeElement\n */\nclass HTMLTimeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'time') {\n super(ownerDocument, localName);\n }\n\n /**\n * @type {string}\n */\n get dateTime() { return stringAttribute.get(this, 'datetime'); }\n set dateTime(value) { stringAttribute.set(this, 'datetime', value); }\n}\n\nregisterHTMLClass('time', HTMLTimeElement)\n\nexport {HTMLTimeElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFieldSetElement\n */\nexport class HTMLFieldSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'fieldset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLEmbedElement\n */\nexport class HTMLEmbedElement extends HTMLElement {\n constructor(ownerDocument, localName = 'embed') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHRElement\n */\nexport class HTMLHRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'hr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLProgressElement\n */\nexport class HTMLProgressElement extends HTMLElement {\n constructor(ownerDocument, localName = 'progress') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParagraphElement\n */\nexport class HTMLParagraphElement extends HTMLElement {\n constructor(ownerDocument, localName = 'p') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableElement\n */\nexport class HTMLTableElement extends HTMLElement {\n constructor(ownerDocument, localName = 'table') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameSetElement\n */\nexport class HTMLFrameSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frameset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLIElement\n */\nexport class HTMLLIElement extends HTMLElement {\n constructor(ownerDocument, localName = 'li') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBaseElement\n */\nexport class HTMLBaseElement extends HTMLElement {\n constructor(ownerDocument, localName = 'base') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataListElement\n */\nexport class HTMLDataListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'datalist') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'input';\n\n/**\n * @implements globalThis.HTMLInputElement\n */\nclass HTMLInputElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get autofocus() { return booleanAttribute.get(this, 'autofocus') || -1; }\n set autofocus(value) { booleanAttribute.set(this, 'autofocus', value); }\n\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLInputElement);\n\nexport {HTMLInputElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParamElement\n */\nexport class HTMLParamElement extends HTMLElement {\n constructor(ownerDocument, localName = 'param') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMediaElement\n */\nexport class HTMLMediaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'media') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAudioElement\n */\nexport class HTMLAudioElement extends HTMLElement {\n constructor(ownerDocument, localName = 'audio') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'h1';\n\n/**\n * @implements globalThis.HTMLHeadingElement\n */\nclass HTMLHeadingElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass([tagName, 'h2', 'h3', 'h4', 'h5', 'h6'], HTMLHeadingElement);\n\nexport {HTMLHeadingElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDirectoryElement\n */\nexport class HTMLDirectoryElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dir') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLQuoteElement\n */\nexport class HTMLQuoteElement extends HTMLElement {\n constructor(ownerDocument, localName = 'quote') {\n super(ownerDocument, localName);\n }\n}\n","\n class Canvas {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n }\n getContext() { return null; }\n toDataURL() { return ''; }\n }\n export default {createCanvas: (width, height) => new Canvas(width, height)};\n ","import {IMAGE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute} from '../shared/attributes.js';\n\nimport Canvas from '../../commonjs/canvas.cjs';\n\nimport {HTMLElement} from './element.js';\n\nconst {createCanvas} = Canvas;\n\nconst tagName = 'canvas';\n\n/**\n * @implements globalThis.HTMLCanvasElement\n */\nclass HTMLCanvasElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[IMAGE] = createCanvas(300, 150);\n }\n\n get width() {\n return this[IMAGE].width;\n }\n\n set width(value) {\n numericAttribute.set(this, 'width', value);\n this[IMAGE].width = value;\n }\n\n get height() {\n return this[IMAGE].height;\n }\n\n set height(value) {\n numericAttribute.set(this, 'height', value);\n this[IMAGE].height = value;\n }\n\n getContext(type) {\n return this[IMAGE].getContext(type);\n }\n\n toDataURL(...args) {\n return this[IMAGE].toDataURL(...args);\n }\n}\n\nregisterHTMLClass(tagName, HTMLCanvasElement);\n\nexport {HTMLCanvasElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLegendElement\n */\nexport class HTMLLegendElement extends HTMLElement {\n constructor(ownerDocument, localName = 'legend') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'option';\n\n/**\n * @implements globalThis.HTMLOptionElement\n */\nclass HTMLOptionElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n\n get selected() { return booleanAttribute.get(this, 'selected'); }\n set selected(value) {\n const option = this.parentElement?.querySelector('option[selected]');\n if (option && option !== this)\n option.selected = false;\n booleanAttribute.set(this, 'selected', value);\n }\n}\n\nregisterHTMLClass(tagName, HTMLOptionElement);\n\nexport {HTMLOptionElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLSpanElement\n */\nexport class HTMLSpanElement extends HTMLElement {\n constructor(ownerDocument, localName = 'span') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMeterElement\n */\nexport class HTMLMeterElement extends HTMLElement {\n constructor(ownerDocument, localName = 'meter') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLVideoElement\n */\nexport class HTMLVideoElement extends HTMLElement {\n constructor(ownerDocument, localName = 'video') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCellElement\n */\nexport class HTMLTableCellElement extends HTMLElement {\n constructor(ownerDocument, localName = 'td') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'title';\n\n/**\n * @implements globalThis.HTMLTitleElement\n */\nclass HTMLTitleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass(tagName, HTMLTitleElement);\n\nexport {HTMLTitleElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOutputElement\n */\nexport class HTMLOutputElement extends HTMLElement {\n constructor(ownerDocument, localName = 'output') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableRowElement\n */\nexport class HTMLTableRowElement extends HTMLElement {\n constructor(ownerDocument, localName = 'tr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataElement\n */\nexport class HTMLDataElement extends HTMLElement {\n constructor(ownerDocument, localName = 'data') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMenuElement\n */\nexport class HTMLMenuElement extends HTMLElement {\n constructor(ownerDocument, localName = 'menu') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\nimport {NodeList} from '../interface/node-list.js';\n\nconst tagName = 'select';\n\n/**\n * @implements globalThis.HTMLSelectElement\n */\nclass HTMLSelectElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get options() {\n let children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n if (firstElementChild.tagName === 'OPTGROUP')\n children.push(...firstElementChild.children);\n else\n children.push(firstElementChild);\n firstElementChild = firstElementChild.nextElementSibling;\n }\n return children;\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n /* c8 ignore stop */\n\n get value() { return this.querySelector('option[selected]')?.value; }\n}\n\nregisterHTMLClass(tagName, HTMLSelectElement);\n\nexport {HTMLSelectElement};\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBRElement\n */\nexport class HTMLBRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'br') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'button';\n\n/**\n * @implements globalThis.HTMLButtonElement\n */\nclass HTMLButtonElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLButtonElement);\n\nexport {HTMLButtonElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMapElement\n */\nexport class HTMLMapElement extends HTMLElement {\n constructor(ownerDocument, localName = 'map') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOptGroupElement\n */\nexport class HTMLOptGroupElement extends HTMLElement {\n constructor(ownerDocument, localName = 'optgroup') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDListElement\n */\nexport class HTMLDListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dl') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'textarea';\n\n/**\n * @implements globalThis.HTMLTextAreaElement\n */\nclass HTMLTextAreaElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return this.textContent; }\n set value(content) { this.textContent = content; }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLTextAreaElement);\n\nexport {HTMLTextAreaElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFontElement\n */\nexport class HTMLFontElement extends HTMLElement {\n constructor(ownerDocument, localName = 'font') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDivElement\n */\nexport class HTMLDivElement extends HTMLElement {\n constructor(ownerDocument, localName = 'div') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'link';\n\n/**\n * @implements globalThis.HTMLLinkElement\n */\nclass HTMLLinkElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get href() { return stringAttribute.get(this, 'href'); }\n set href(value) { stringAttribute.set(this, 'href', value); }\n\n get hreflang() { return stringAttribute.get(this, 'hreflang'); }\n set hreflang(value) { stringAttribute.set(this, 'hreflang', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n\n get rel() { return stringAttribute.get(this, 'rel'); }\n set rel(value) { stringAttribute.set(this, 'rel', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLLinkElement);\n\nexport {HTMLLinkElement};\n","import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'slot';\n\n/**\n * @implements globalThis.HTMLSlotElement\n */\nclass HTMLSlotElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n assign() {}\n\n assignedNodes(options) {\n const isNamedSlot = !!this.name;\n const hostChildNodes = this.getRootNode().host?.childNodes ?? [];\n let slottables;\n\n if (isNamedSlot) {\n slottables = [...hostChildNodes].filter(node => node.slot === this.name);\n } else {\n slottables = [...hostChildNodes].filter(node => !node.slot);\n }\n\n if (options?.flatten) {\n const result = [];\n\n // Element and Text nodes are slottables. A slot can be a slottable.\n for (let slottable of slottables) {\n if (slottable.localName === 'slot') {\n result.push(...slottable.assignedNodes({ flatten: true }));\n } else {\n result.push(slottable);\n }\n }\n\n slottables = result;\n }\n\n // If no assigned nodes are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.childNodes];\n }\n\n assignedElements(options) {\n const slottables = this.assignedNodes(options).filter(n => n.nodeType === 1);\n\n // If no assigned elements are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.children];\n }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSlotElement);\n\nexport {HTMLSlotElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFormElement\n */\nexport class HTMLFormElement extends HTMLElement {\n constructor(ownerDocument, localName = 'form') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'img';\n\n/**\n * @implements globalThis.HTMLImageElement\n */\nclass HTMLImageElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get alt() { return stringAttribute.get(this, 'alt'); }\n set alt(value) { stringAttribute.set(this, 'alt', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n get width() { return numericAttribute.get(this, 'width'); }\n set width(value) { numericAttribute.set(this, 'width', value); }\n\n get height() { return numericAttribute.get(this, 'height'); }\n set height(value) { numericAttribute.set(this, 'height', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLImageElement);\n\nexport {HTMLImageElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPreElement\n */\nexport class HTMLPreElement extends HTMLElement {\n constructor(ownerDocument, localName = 'pre') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUListElement\n */\nexport class HTMLUListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ul') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport { stringAttribute } from '../shared/attributes.js';\n\nconst tagName = 'meta'\n/**\n * @implements globalThis.HTMLMetaElement\n */\nexport class HTMLMetaElement extends HTMLElement {\n constructor(ownerDocument, localName =tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return stringAttribute.get(this, 'name'); }\n set name(value) { stringAttribute.set(this, 'name', value); }\n\n get httpEquiv() { return stringAttribute.get(this, 'http-equiv'); }\n set httpEquiv(value) { stringAttribute.set(this, 'http-equiv', value); }\n\n get content() { return stringAttribute.get(this, 'content'); }\n set content(value) { stringAttribute.set(this, 'content', value); }\n\n get charset() { return stringAttribute.get(this, 'charset'); }\n set charset(value) { stringAttribute.set(this, 'charset', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLMetaElement);\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPictureElement\n */\nexport class HTMLPictureElement extends HTMLElement {\n constructor(ownerDocument, localName = 'picture') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAreaElement\n */\nexport class HTMLAreaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'area') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOListElement\n */\nexport class HTMLOListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ol') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCaptionElement\n */\nexport class HTMLTableCaptionElement extends HTMLElement {\n constructor(ownerDocument, localName = 'caption') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'a';\n\n/**\n * @implements globalThis.HTMLAnchorElement\n */\nclass HTMLAnchorElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get href() { return encodeURI(decodeURI(stringAttribute.get(this, 'href'))); }\n set href(value) { stringAttribute.set(this, 'href', decodeURI(value)); }\n\n get download() { return encodeURI(decodeURI(stringAttribute.get(this, 'download'))); }\n set download(value) { stringAttribute.set(this, 'download', decodeURI(value)); }\n\n get target() { return stringAttribute.get(this, 'target'); }\n set target(value) { stringAttribute.set(this, 'target', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n\n get rel() { return stringAttribute.get(this, 'rel'); }\n set rel(value) { stringAttribute.set(this, 'rel', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLAnchorElement);\n\nexport {HTMLAnchorElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLabelElement\n */\nexport class HTMLLabelElement extends HTMLElement {\n constructor(ownerDocument, localName = 'label') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUnknownElement\n */\nexport class HTMLUnknownElement extends HTMLElement {\n constructor(ownerDocument, localName = 'unknown') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLModElement\n */\nexport class HTMLModElement extends HTMLElement {\n constructor(ownerDocument, localName = 'mod') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDetailsElement\n */\nexport class HTMLDetailsElement extends HTMLElement {\n constructor(ownerDocument, localName = 'details') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'source';\n\n/**\n * @implements globalThis.HTMLSourceElement\n */\nclass HTMLSourceElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSourceElement);\n\nexport {HTMLSourceElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTrackElement\n */\nexport class HTMLTrackElement extends HTMLElement {\n constructor(ownerDocument, localName = 'track') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMarqueeElement\n */\nexport class HTMLMarqueeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'marquee') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from '../html/element.js';\nimport {HTMLTemplateElement} from '../html/template-element.js';\nimport {HTMLHtmlElement} from '../html/html-element.js';\nimport {HTMLScriptElement} from '../html/script-element.js';\nimport {HTMLFrameElement} from '../html/frame-element.js';\nimport {HTMLIFrameElement} from '../html/i-frame-element.js';\nimport {HTMLObjectElement} from '../html/object-element.js';\nimport {HTMLHeadElement} from '../html/head-element.js';\nimport {HTMLBodyElement} from '../html/body-element.js';\nimport {HTMLStyleElement} from '../html/style-element.js';\nimport {HTMLTimeElement} from '../html/time-element.js';\nimport {HTMLFieldSetElement} from '../html/field-set-element.js';\nimport {HTMLEmbedElement} from '../html/embed-element.js';\nimport {HTMLHRElement} from '../html/hr-element.js';\nimport {HTMLProgressElement} from '../html/progress-element.js';\nimport {HTMLParagraphElement} from '../html/paragraph-element.js';\nimport {HTMLTableElement} from '../html/table-element.js';\nimport {HTMLFrameSetElement} from '../html/frame-set-element.js';\nimport {HTMLLIElement} from '../html/li-element.js';\nimport {HTMLBaseElement} from '../html/base-element.js';\nimport {HTMLDataListElement} from '../html/data-list-element.js';\nimport {HTMLInputElement} from '../html/input-element.js';\nimport {HTMLParamElement} from '../html/param-element.js';\nimport {HTMLMediaElement} from '../html/media-element.js';\nimport {HTMLAudioElement} from '../html/audio-element.js';\nimport {HTMLHeadingElement} from '../html/heading-element.js';\nimport {HTMLDirectoryElement} from '../html/directory-element.js';\nimport {HTMLQuoteElement} from '../html/quote-element.js';\nimport {HTMLCanvasElement} from '../html/canvas-element.js';\nimport {HTMLLegendElement} from '../html/legend-element.js';\nimport {HTMLOptionElement} from '../html/option-element.js';\nimport {HTMLSpanElement} from '../html/span-element.js';\nimport {HTMLMeterElement} from '../html/meter-element.js';\nimport {HTMLVideoElement} from '../html/video-element.js';\nimport {HTMLTableCellElement} from '../html/table-cell-element.js';\nimport {HTMLTitleElement} from '../html/title-element.js';\nimport {HTMLOutputElement} from '../html/output-element.js';\nimport {HTMLTableRowElement} from '../html/table-row-element.js';\nimport {HTMLDataElement} from '../html/data-element.js';\nimport {HTMLMenuElement} from '../html/menu-element.js';\nimport {HTMLSelectElement} from '../html/select-element.js';\nimport {HTMLBRElement} from '../html/br-element.js';\nimport {HTMLButtonElement} from '../html/button-element.js';\nimport {HTMLMapElement} from '../html/map-element.js';\nimport {HTMLOptGroupElement} from '../html/opt-group-element.js';\nimport {HTMLDListElement} from '../html/d-list-element.js';\nimport {HTMLTextAreaElement} from '../html/text-area-element.js';\nimport {HTMLFontElement} from '../html/font-element.js';\nimport {HTMLDivElement} from '../html/div-element.js';\nimport {HTMLLinkElement} from '../html/link-element.js';\nimport {HTMLSlotElement} from '../html/slot-element.js';\nimport {HTMLFormElement} from '../html/form-element.js';\nimport {HTMLImageElement} from '../html/image-element.js';\nimport {HTMLPreElement} from '../html/pre-element.js';\nimport {HTMLUListElement} from '../html/u-list-element.js';\nimport {HTMLMetaElement} from '../html/meta-element.js';\nimport {HTMLPictureElement} from '../html/picture-element.js';\nimport {HTMLAreaElement} from '../html/area-element.js';\nimport {HTMLOListElement} from '../html/o-list-element.js';\nimport {HTMLTableCaptionElement} from '../html/table-caption-element.js';\nimport {HTMLAnchorElement} from '../html/anchor-element.js';\nimport {HTMLLabelElement} from '../html/label-element.js';\nimport {HTMLUnknownElement} from '../html/unknown-element.js';\nimport {HTMLModElement} from '../html/mod-element.js';\nimport {HTMLDetailsElement} from '../html/details-element.js';\nimport {HTMLSourceElement} from '../html/source-element.js';\nimport {HTMLTrackElement} from '../html/track-element.js';\nimport {HTMLMarqueeElement} from '../html/marquee-element.js';\n\nexport {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n\nexport const HTMLClasses = {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n","// TODO: ensure all these are text only\n// /^(?:plaintext|script|style|textarea|title|xmp)$/i\n\nconst voidElements = {test: () => true};\nexport const Mime = {\n 'text/html': {\n docType: '<!DOCTYPE html>',\n ignoreCase: true,\n voidElements: /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i\n },\n 'image/svg+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'text/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xhtml+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n }\n};\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.CustomEvent\n */\nexport class CustomEvent extends Event {\n constructor(type, eventInitDict = {}) {\n super(type, eventInitDict);\n this.detail = eventInitDict.detail;\n }\n}\n\n/* c8 ignore stop */\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.InputEvent\n */\nexport class InputEvent extends Event {\n constructor(type, inputEventInit = {}) {\n super(type, inputEventInit);\n this.inputType = inputEventInit.inputType;\n this.data = inputEventInit.data;\n this.dataTransfer = inputEventInit.dataTransfer;\n this.isComposing = inputEventInit.isComposing || false;\n this.ranges = inputEventInit.ranges;\n }\n}\n/* c8 ignore stop */\n","import {HTMLImageElement} from '../html/image-element.js';\n\nexport const ImageClass = ownerDocument =>\n/**\n * @implements globalThis.Image\n */\nclass Image extends HTMLImageElement {\n constructor(width, height) {\n super(ownerDocument);\n switch (arguments.length) {\n case 1:\n this.height = width;\n this.width = width;\n break;\n case 2:\n this.height = height;\n this.width = width;\n break;\n }\n }\n};\n","// https://dom.spec.whatwg.org/#concept-live-range\n\nimport {END, NEXT, PREV, START} from '../shared/symbols.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nconst deleteContents = ({[START]: start, [END]: end}, fragment = null) => {\n setAdjacent(start[PREV], end[NEXT]);\n do {\n const after = getEnd(start);\n const next = after === end ? after : after[NEXT];\n if (fragment)\n fragment.insertBefore(start, fragment[END]);\n else\n start.remove();\n start = next;\n } while (start !== end);\n};\n\n/**\n * @implements globalThis.Range\n */\nexport class Range {\n constructor() {\n this[START] = null;\n this[END] = null;\n this.commonAncestorContainer = null;\n }\n\n /* TODO: this is more complicated than it looks\n setStart(node, offset) {\n this[START] = node.childNodes[offset];\n }\n\n setEnd(node, offset) {\n this[END] = getEnd(node.childNodes[offset]);\n }\n //*/\n\n insertNode(newNode) {\n this[END].parentNode.insertBefore(newNode, this[START]);\n }\n\n selectNode(node) {\n this[START] = node;\n this[END] = getEnd(node);\n }\n\n // TODO: SVG elements should then create contextual fragments\n // that return SVG nodes\n selectNodeContents(node) {\n this.selectNode(node);\n this.commonAncestorContainer = node;\n }\n\n surroundContents(parentNode) {\n parentNode.replaceChildren(this.extractContents());\n }\n\n setStartBefore(node) {\n this[START] = node;\n }\n\n setStartAfter(node) {\n this[START] = node.nextSibling;\n }\n\n setEndBefore(node) {\n this[END] = getEnd(node.previousSibling);\n }\n\n setEndAfter(node) {\n this[END] = getEnd(node);\n }\n\n cloneContents() {\n let {[START]: start, [END]: end} = this;\n const fragment = start.ownerDocument.createDocumentFragment();\n while (start !== end) {\n fragment.insertBefore(start.cloneNode(true), fragment[END]);\n start = getEnd(start);\n if (start !== end)\n start = start[NEXT];\n }\n return fragment;\n }\n\n deleteContents() {\n deleteContents(this);\n }\n\n extractContents() {\n const fragment = this[START].ownerDocument.createDocumentFragment();\n deleteContents(this, fragment);\n return fragment;\n }\n\n createContextualFragment(html) {\n const { commonAncestorContainer: doc } = this;\n const isSVG = 'ownerSVGElement' in doc;\n const document = isSVG ? doc.ownerDocument : doc;\n const template = document.createElement('template');\n template.innerHTML = html;\n let {content} = template;\n if (isSVG) {\n const childNodes = [...content.childNodes];\n content = document.createDocumentFragment();\n Object.setPrototypeOf(content, SVGElement.prototype);\n content.ownerSVGElement = document;\n for (const child of childNodes) {\n Object.setPrototypeOf(child, SVGElement.prototype);\n child.ownerSVGElement = document;\n content.appendChild(child);\n }\n }\n else\n this.selectNode(content);\n return content;\n }\n\n cloneRange() {\n const range = new Range;\n range[START] = this[START];\n range[END] = this[END];\n return range;\n }\n}\n","import {\n DOCUMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n SHOW_ALL,\n SHOW_ELEMENT,\n SHOW_CDATA_SECTION,\n SHOW_COMMENT,\n SHOW_TEXT\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT} from '../shared/symbols.js';\n\nconst isOK = ({nodeType}, mask) => {\n switch (nodeType) {\n case ELEMENT_NODE:\n return mask & SHOW_ELEMENT;\n case TEXT_NODE:\n return mask & SHOW_TEXT;\n case COMMENT_NODE:\n return mask & SHOW_COMMENT;\n case CDATA_SECTION_NODE:\n return mask & SHOW_CDATA_SECTION;\n }\n return 0;\n};\n\n/**\n * @implements globalThis.TreeWalker\n */\nexport class TreeWalker {\n constructor(root, whatToShow = SHOW_ALL) {\n this.root = root;\n this.currentNode = root;\n this.whatToShow = whatToShow;\n let {[NEXT]: next, [END]: end} = root;\n if (root.nodeType === DOCUMENT_NODE) {\n const {documentElement} = root;\n next = documentElement;\n end = documentElement[END];\n }\n const nodes = [];\n while (next !== end) {\n if (isOK(next, whatToShow))\n nodes.push(next);\n next = next[NEXT];\n }\n this[PRIVATE] = {i: 0, nodes};\n }\n\n nextNode() {\n const $ = this[PRIVATE];\n this.currentNode = $.i < $.nodes.length ? $.nodes[$.i++] : null;\n return this.currentNode;\n }\n}\n","import {performance} from '../../commonjs/perf_hooks.cjs';\n\nimport {DOCUMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, SVG_NAMESPACE} from '../shared/constants.js';\n\nimport {\n CUSTOM_ELEMENTS, DOM_PARSER, GLOBALS, IMAGE, MUTATION_OBSERVER,\n DOCTYPE, END, NEXT, MIME, EVENT_TARGET, UPGRADE\n} from '../shared/symbols.js';\n\nimport {Facades, illegalConstructor} from '../shared/facades.js';\nimport {HTMLClasses} from '../shared/html-classes.js';\nimport {Mime} from '../shared/mime.js';\nimport {knownSiblings} from '../shared/utils.js';\nimport {assign, create, defineProperties, setPrototypeOf} from '../shared/object.js';\n\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {Attr} from './attr.js';\nimport {CDATASection} from './cdata-section.js'\nimport {Comment} from './comment.js';\nimport {CustomElementRegistry} from './custom-element-registry.js';\nimport {CustomEvent} from './custom-event.js';\nimport {DocumentFragment} from './document-fragment.js';\nimport {DocumentType} from './document-type.js';\nimport {Element} from './element.js';\nimport {Event} from './event.js';\nimport {EventTarget} from './event-target.js';\nimport {InputEvent} from './input-event.js';\nimport {ImageClass} from './image.js';\nimport {MutationObserverClass} from './mutation-observer.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {NodeList} from './node-list.js';\nimport {Range} from './range.js';\nimport {Text} from './text.js';\nimport {TreeWalker} from './tree-walker.js';\n\nconst query = (method, ownerDocument, selectors) => {\n let {[NEXT]: next, [END]: end} = ownerDocument;\n return method.call({ownerDocument, [NEXT]: next, [END]: end}, selectors);\n};\n\nconst globalExports = assign(\n {},\n Facades,\n HTMLClasses,\n {\n CustomEvent,\n Event,\n EventTarget,\n InputEvent,\n NamedNodeMap,\n NodeList\n }\n);\n\nconst window = new WeakMap;\n\n/**\n * @implements globalThis.Document\n */\nexport class Document extends NonElementParentNode {\n constructor(type) {\n super(null, '#document', DOCUMENT_NODE);\n this[CUSTOM_ELEMENTS] = {active: false, registry: null};\n this[MUTATION_OBSERVER] = {active: false, class: null};\n this[MIME] = Mime[type];\n /** @type {DocumentType} */\n this[DOCTYPE] = null;\n this[DOM_PARSER] = null;\n this[GLOBALS] = null;\n this[IMAGE] = null;\n this[UPGRADE] = null;\n }\n\n /**\n * @type {globalThis.Document['defaultView']}\n */\n get defaultView() {\n if (!window.has(this))\n window.set(this, new Proxy(globalThis, {\n set: (target, name, value) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n this[EVENT_TARGET][name] = value;\n break;\n default:\n target[name] = value;\n break;\n }\n return true;\n },\n get: (globalThis, name) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n if (!this[EVENT_TARGET]) {\n const et = this[EVENT_TARGET] = new EventTarget;\n et.dispatchEvent = et.dispatchEvent.bind(et);\n et.addEventListener = et.addEventListener.bind(et);\n et.removeEventListener = et.removeEventListener.bind(et);\n }\n return this[EVENT_TARGET][name];\n case 'document':\n return this;\n /* c8 ignore start */\n case 'navigator':\n return {\n userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'\n };\n /* c8 ignore stop */\n case 'window':\n return window.get(this);\n case 'customElements':\n if (!this[CUSTOM_ELEMENTS].registry)\n this[CUSTOM_ELEMENTS] = new CustomElementRegistry(this);\n return this[CUSTOM_ELEMENTS];\n case 'performance':\n return performance;\n case 'DOMParser':\n return this[DOM_PARSER];\n case 'Image':\n if (!this[IMAGE])\n this[IMAGE] = ImageClass(this);\n return this[IMAGE];\n case 'MutationObserver':\n if (!this[MUTATION_OBSERVER].class)\n this[MUTATION_OBSERVER] = new MutationObserverClass(this);\n return this[MUTATION_OBSERVER].class;\n }\n return (this[GLOBALS] && this[GLOBALS][name]) ||\n globalExports[name] ||\n globalThis[name];\n }\n }));\n return window.get(this);\n }\n\n get doctype() {\n const docType = this[DOCTYPE];\n if (docType)\n return docType;\n const {firstChild} = this;\n if (firstChild && firstChild.nodeType === DOCUMENT_TYPE_NODE)\n return (this[DOCTYPE] = firstChild);\n return null;\n }\n\n set doctype(value) {\n if (/^([a-z:]+)(\\s+system|\\s+public(\\s+\"([^\"]+)\")?)?(\\s+\"([^\"]+)\")?/i.test(value)) {\n const {$1: name, $4: publicId, $6: systemId} = RegExp;\n this[DOCTYPE] = new DocumentType(this, name, publicId, systemId);\n knownSiblings(this, this[DOCTYPE], this[NEXT]);\n }\n }\n\n get documentElement() {\n return this.firstElementChild;\n }\n\n get isConnected() { return true; }\n\n /**\n * @protected\n */\n _getParent() {\n return this[EVENT_TARGET];\n }\n\n createAttribute(name) { return new Attr(this, name); }\n createCDATASection(data) { return new CDATASection(this, data); }\n createComment(textContent) { return new Comment(this, textContent); }\n createDocumentFragment() { return new DocumentFragment(this); }\n createDocumentType(name, publicId, systemId) { return new DocumentType(this, name, publicId, systemId); }\n createElement(localName) { return new Element(this, localName); }\n createRange() {\n const range = new Range;\n range.commonAncestorContainer = this;\n return range;\n }\n createTextNode(textContent) { return new Text(this, textContent); }\n createTreeWalker(root, whatToShow = -1) { return new TreeWalker(root, whatToShow); }\n createNodeIterator(root, whatToShow = -1) { return this.createTreeWalker(root, whatToShow); }\n\n createEvent(name) {\n const event = create(name === 'Event' ? new Event('') : new CustomEvent(''));\n event.initEvent = event.initCustomEvent = (\n type,\n canBubble = false,\n cancelable = false,\n detail\n ) => {\n event.bubbles = !!canBubble;\n\n defineProperties(event, {\n type: {value: type},\n canBubble: {value: canBubble},\n cancelable: {value: cancelable},\n detail: {value: detail}\n });\n };\n return event;\n }\n\n cloneNode(deep = false) {\n const {\n constructor,\n [CUSTOM_ELEMENTS]: customElements,\n [DOCTYPE]: doctype\n } = this;\n const document = new constructor();\n document[CUSTOM_ELEMENTS] = customElements;\n if (deep) {\n const end = document[END];\n const {childNodes} = this;\n for (let {length} = childNodes, i = 0; i < length; i++)\n document.insertBefore(childNodes[i].cloneNode(true), end);\n if (doctype)\n document[DOCTYPE] = childNodes[0];\n }\n return document;\n }\n\n importNode(externalNode) {\n // important: keep the signature length as *one*\n // or it would behave like old IE or Edge with polyfills\n const deep = 1 < arguments.length && !!arguments[1];\n const node = externalNode.cloneNode(deep);\n const {[CUSTOM_ELEMENTS]: customElements} = this;\n const {active} = customElements;\n const upgrade = element => {\n const {ownerDocument, nodeType} = element;\n element.ownerDocument = this;\n if (active && ownerDocument !== this && nodeType === ELEMENT_NODE)\n customElements.upgrade(element);\n };\n upgrade(node);\n if (deep) {\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n let {[NEXT]: next, [END]: end} = node;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n upgrade(next);\n next = next[NEXT];\n }\n break;\n }\n }\n }\n return node;\n }\n\n toString() { return this.childNodes.join(''); }\n\n querySelector(selectors) {\n return query(super.querySelector, this, selectors);\n }\n\n querySelectorAll(selectors) {\n return query(super.querySelectorAll, this, selectors);\n }\n\n /* c8 ignore start */\n getElementsByTagNameNS(_, name) {\n return this.getElementsByTagName(name);\n }\n createAttributeNS(_, name) {\n return this.createAttribute(name);\n }\n createElementNS(nsp, localName, options) {\n return nsp === SVG_NAMESPACE ?\n new SVGElement(this, localName, null) :\n this.createElement(localName, options);\n }\n /* c8 ignore stop */\n}\n\nsetPrototypeOf(\n globalExports.Document = function Document() {\n illegalConstructor();\n },\n Document\n).prototype = Document.prototype;\n","import {ELEMENT_NODE} from '../shared/constants.js';\nimport {CUSTOM_ELEMENTS, END, NEXT} from '../shared/symbols.js';\nimport {htmlClasses} from '../shared/register-html-class.js';\n\nimport {Document} from '../interface/document.js';\nimport {NodeList} from '../interface/node-list.js';\nimport {customElements} from '../interface/custom-element-registry.js';\n\nimport {HTMLElement} from './element.js';\n\nconst createHTMLElement = (ownerDocument, builtin, localName, options) => {\n if (!builtin && htmlClasses.has(localName)) {\n const Class = htmlClasses.get(localName);\n return new Class(ownerDocument, localName);\n }\n const {[CUSTOM_ELEMENTS]: {active, registry}} = ownerDocument;\n if (active) {\n const ce = builtin ? options.is : localName;\n if (registry.has(ce)) {\n const {Class} = registry.get(ce);\n const element = new Class(ownerDocument, localName);\n customElements.set(element, {connected: false});\n return element;\n }\n }\n return new HTMLElement(ownerDocument, localName);\n};\n\n/**\n * @implements globalThis.HTMLDocument\n */\nexport class HTMLDocument extends Document {\n constructor() { super('text/html'); }\n\n get all() {\n const nodeList = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n switch (next.nodeType) {\n case ELEMENT_NODE:\n nodeList.push(next);\n break;\n }\n next = next[NEXT];\n }\n return nodeList;\n }\n\n /**\n * @type HTMLHeadElement\n */\n get head() {\n const {documentElement} = this;\n let {firstElementChild} = documentElement;\n if (!firstElementChild || firstElementChild.tagName !== 'HEAD') {\n firstElementChild = this.createElement('head');\n documentElement.prepend(firstElementChild);\n }\n return firstElementChild;\n }\n\n /**\n * @type HTMLBodyElement\n */\n get body() {\n const {head} = this;\n let {nextElementSibling} = head;\n if (!nextElementSibling || nextElementSibling.tagName !== 'BODY') {\n nextElementSibling = this.createElement('body');\n head.after(nextElementSibling);\n }\n return nextElementSibling;\n }\n\n /**\n * @type HTMLTitleElement\n */\n get title() {\n const {head} = this;\n return head.getElementsByTagName('title').at(0)?.textContent || '';\n }\n\n set title(textContent) {\n const {head} = this;\n let title = head.getElementsByTagName('title').at(0);\n if (title)\n title.textContent = textContent;\n else {\n head.insertBefore(\n this.createElement('title'),\n head.firstChild\n ).textContent = textContent;\n }\n }\n\n createElement(localName, options) {\n const builtin = !!(options && options.is);\n const element = createHTMLElement(this, builtin, localName, options);\n if (builtin)\n element.setAttribute('is', options.is);\n return element;\n }\n}\n","import {MIME} from '../shared/symbols.js';\nimport {Document} from '../interface/document.js';\n\n/**\n * @implements globalThis.Document\n */\nexport class SVGDocument extends Document {\n constructor() { super('image/svg+xml'); }\n toString() {\n return this[MIME].docType + super.toString();\n }\n}\n","import {MIME} from '../shared/symbols.js';\nimport {Document} from '../interface/document.js';\n\n/**\n * @implements globalThis.XMLDocument\n */\nexport class XMLDocument extends Document {\n constructor() { super('text/xml'); }\n toString() {\n return this[MIME].docType + super.toString();\n }\n}\n","import {DOM_PARSER, GLOBALS} from '../shared/symbols.js';\nimport {parseFromString} from '../shared/parse-from-string.js';\n\nimport {HTMLDocument} from '../html/document.js';\nimport {SVGDocument} from '../svg/document.js';\nimport {XMLDocument} from '../xml/document.js';\n\n/**\n * @implements globalThis.DOMParser\n */\nexport class DOMParser {\n\n /** @typedef {{ \"text/html\": HTMLDocument, \"image/svg+xml\": SVGDocument, \"text/xml\": XMLDocument }} MimeToDoc */\n /**\n * @template {keyof MimeToDoc} MIME\n * @param {string} markupLanguage\n * @param {MIME} mimeType\n * @returns {MimeToDoc[MIME]}\n */\n parseFromString(markupLanguage, mimeType, globals = null) {\n let isHTML = false, document;\n if (mimeType === 'text/html') {\n isHTML = true;\n document = new HTMLDocument;\n }\n else if (mimeType === 'image/svg+xml')\n document = new SVGDocument;\n else\n document = new XMLDocument;\n document[DOM_PARSER] = DOMParser;\n if (globals)\n document[GLOBALS] = globals;\n if (isHTML && markupLanguage === '...')\n markupLanguage = '<!doctype html><html><head></head><body></body></html>';\n return markupLanguage ?\n parseFromString(document, isHTML, markupLanguage) :\n document;\n }\n}\n","import {\n NODE_END,\n ELEMENT_NODE,\n ATTRIBUTE_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_TYPE_NODE,\n DOCUMENT_FRAGMENT_NODE\n} from './constants.js';\n\nimport {END, PREV} from './symbols.js';\n\nimport {htmlClasses} from './register-html-class.js';\nimport {knownBoundaries, knownSiblings} from './utils.js';\n\nimport {Attr} from '../interface/attr.js';\nimport {CDATASection} from '../interface/cdata-section.js';\nimport {Comment} from '../interface/comment.js';\nimport {DocumentType} from '../interface/document-type.js';\nimport {Text} from '../interface/text.js';\n\nimport {HTMLDocument} from '../html/document.js';\nimport {HTMLElement} from '../html/element.js';\nimport {SVGElement} from '../svg/element.js';\n\nconst {parse} = JSON;\n\nconst append = (parentNode, node, end) => {\n node.parentNode = parentNode;\n knownSiblings(end[PREV], node, end);\n};\n\nconst createHTMLElement = (ownerDocument, localName) => {\n if (htmlClasses.has(localName)) {\n const Class = htmlClasses.get(localName);\n return new Class(ownerDocument, localName);\n }\n return new HTMLElement(ownerDocument, localName);\n};\n\n/**\n * @typedef {number|string} jsdonValue - either a node type or its content\n */\n\n/**\n * Given a stringified, or arrayfied DOM element, returns an HTMLDocument\n * that represent the content of such string, or array.\n * @param {string|jsdonValue[]} value\n * @returns {HTMLDocument}\n */\nexport const parseJSON = value => {\n const array = typeof value === 'string' ? parse(value) : value;\n const {length} = array;\n const document = new HTMLDocument;\n let parentNode = document, end = parentNode[END], svg = false, i = 0;\n while (i < length) {\n let nodeType = array[i++];\n switch (nodeType) {\n case ELEMENT_NODE: {\n const localName = array[i++];\n const isSVG = svg || localName === 'svg' || localName === 'SVG';\n const element = isSVG ?\n new SVGElement(document, localName, parentNode.ownerSVGElement || null) :\n createHTMLElement(document, localName);\n knownBoundaries(end[PREV], element, end);\n element.parentNode = parentNode;\n parentNode = element;\n end = parentNode[END];\n svg = isSVG;\n break;\n }\n case ATTRIBUTE_NODE: {\n const name = array[i++];\n const value = typeof array[i] === 'string' ? array[i++] : '';\n const attr = new Attr(document, name, value);\n attr.ownerElement = parentNode;\n knownSiblings(end[PREV], attr, end);\n break;\n }\n case TEXT_NODE:\n append(parentNode, new Text(document, array[i++]), end);\n break;\n case COMMENT_NODE:\n append(parentNode, new Comment(document, array[i++]), end);\n break;\n case CDATA_SECTION_NODE:\n append(parentNode, new CDATASection(document, array[i++]), end);\n break;\n case DOCUMENT_TYPE_NODE: {\n const args = [document];\n while (typeof array[i] === 'string')\n args.push(array[i++]);\n if (args.length === 3 && /\\.dtd$/i.test(args[2]))\n args.splice(2, 0, '');\n append(parentNode, new DocumentType(...args), end);\n break;\n }\n case DOCUMENT_FRAGMENT_NODE:\n parentNode = document.createDocumentFragment();\n end = parentNode[END];\n /* eslint no-fallthrough:0 */\n case DOCUMENT_NODE:\n break;\n default:\n do {\n nodeType -= NODE_END;\n if (svg && !parentNode.ownerSVGElement)\n svg = false;\n parentNode = parentNode.parentNode || parentNode;\n } while (nodeType < 0);\n end = parentNode[END];\n break;\n }\n }\n switch (i && array[0]) {\n case ELEMENT_NODE:\n return document.firstElementChild;\n case DOCUMENT_FRAGMENT_NODE:\n return parentNode;\n }\n return document;\n};\n\n/**\n * \n * @param {Document|Element} node the Document or Element to serialize\n * @returns {jsdonValue[]} the linear jsdon serialized array\n */\nexport const toJSON = node => node.toJSON();\n","import {DOMParser} from './dom/parser.js';\nimport {Document as _Document} from './interface/document.js';\n\nimport {illegalConstructor} from './shared/facades.js';\nimport {setPrototypeOf} from './shared/object.js';\nexport {parseJSON, toJSON} from './shared/parse-json.js';\n\nexport * from './shared/facades.js';\nexport * from './shared/html-classes.js';\n\nexport {DOMParser};\n\nexport {CustomEvent} from './interface/custom-event.js';\nexport {Event} from './interface/event.js';\nexport {EventTarget} from './interface/event-target.js';\nexport {InputEvent} from './interface/input-event.js';\nexport {NodeList} from './interface/node-list.js';\nexport {NodeFilter} from './interface/node-filter.js';\n\nexport const parseHTML = (html, globals = null) => (new DOMParser).parseFromString(\n html, 'text/html', globals\n).defaultView;\n\nexport function Document() {\n illegalConstructor();\n}\n\nsetPrototypeOf(Document, _Document).prototype = _Document.prototype;\n","import {\n SHOW_ALL,\n SHOW_ELEMENT,\n SHOW_COMMENT,\n SHOW_CDATA_SECTION,\n SHOW_TEXT\n} from '../shared/constants.js';\n\nexport class NodeFilter {\n static get SHOW_ALL() { return SHOW_ALL; }\n static get SHOW_ELEMENT() { return SHOW_ELEMENT; }\n static get SHOW_COMMENT() { return SHOW_COMMENT; }\n static get SHOW_CDATA_SECTION() { return SHOW_CDATA_SECTION; }\n static get SHOW_TEXT() { return SHOW_TEXT; }\n}\n"],"names":["version","exports","CHANGED","Symbol","CLASS_LIST","CUSTOM_ELEMENTS","CONTENT","DATASET","DOCTYPE","DOM_PARSER","END","EVENT_TARGET","GLOBALS","IMAGE","MIME","MUTATION_OBSERVER","NEXT","OWNER_ELEMENT","PREV","PRIVATE","SHEET","START","STYLE","UPGRADE","VALUE","_a","htmlDecodeTree","Uint16Array","split","map","c","charCodeAt","xmlDecodeTree","decodeMap","Map","fromCodePoint","String","codePoint","output","fromCharCode","CharCodes","NUM","SEMI","EQUALS","ZERO","NINE","LOWER_A","LOWER_F","LOWER_X","LOWER_Z","UPPER_A","UPPER_F","UPPER_Z","BinTrieFlags","EntityDecoderState","DecodingMode","State","QuoteType","isNumber","code","isHexadecimalCharacter","isEntityInAttributeInvalidEnd","isAsciiAlphaNumeric","VALUE_LENGTH","BRANCH_LENGTH","JUMP_TABLE","EntityStart","NumericStart","NumericDecimal","NumericHex","NamedEntity","Legacy","Strict","Attribute","EntityDecoder","constructor","decodeTree","emitCodePoint","errors","this","state","consumed","result","treeIndex","excess","decodeMode","startEntity","write","str","offset","stateNumericStart","stateNamedEntity","stateNumericDecimal","stateNumericHex","length","addToNumericResult","start","end","base","digitCount","Math","pow","parseInt","substr","startIdx","char","emitNumericEntity","lastCp","expectedLength","absenceOfDigitsInNumericCharacterReference","get","replaceCodePoint","missingSemicolonAfterCharacterReference","validateNumericCharacterReference","current","valueLength","determineBranch","max","emitNotTerminatedNamedEntity","emitNamedEntityData","getDecoder","ret","decoder","lastIndex","indexOf","slice","len","nodeIdx","branchCount","jumpOffset","value","lo","hi","mid","midVal","isWhitespace","Space","NewLine","Tab","FormFeed","CarriageReturn","isEndOfTagSection","Slash","Gt","ExclamationMark","Number","Amp","SingleQuote","DoubleQuote","Dash","Zero","Nine","Semi","Lt","Eq","Questionmark","UpperA","LowerA","UpperF","LowerF","UpperZ","LowerZ","LowerX","OpeningSquareBracket","Text","BeforeTagName","InTagName","InSelfClosingTag","BeforeClosingTagName","InClosingTagName","AfterClosingTagName","BeforeAttributeName","InAttributeName","AfterAttributeName","BeforeAttributeValue","InAttributeValueDq","InAttributeValueSq","InAttributeValueNq","BeforeDeclaration","InDeclaration","InProcessingInstruction","BeforeComment","CDATASequence","InSpecialComment","InCommentLike","BeforeSpecialS","BeforeSpecialT","SpecialStartSequence","InSpecialTag","InEntity","NoValue","Unquoted","Single","Double","Sequences","Cdata","Uint8Array","CdataEnd","CommentEnd","ScriptEnd","StyleEnd","TitleEnd","TextareaEnd","Tokenizer","xmlMode","decodeEntities","cbs","buffer","sectionStart","index","entityStart","baseState","isSpecial","running","currentSequence","sequenceIndex","entityDecoder","cp","reset","chunk","parse","finish","pause","resume","stateText","fastForwardTo","ontext","stateSpecialStartSequence","isEnd","stateInTagName","stateInSpecialTag","endOfText","actualIndex","stateInClosingTagName","stateCDATASequence","stateInDeclaration","stateInCommentLike","oncdata","oncomment","isTagStartChar","isASCIIAlpha","startSpecial","sequence","stateBeforeTagName","lower","onopentagname","stateBeforeAttributeName","stateBeforeClosingTagName","onclosetag","stateAfterClosingTagName","onopentagend","stateInSelfClosingTag","onselfclosingtag","stateInAttributeName","onattribname","stateAfterAttributeName","onattribend","stateBeforeAttributeValue","stateInAttributeValueNoQuotes","handleInAttributeValue","quote","onattribdata","stateInAttributeValueDoubleQuotes","stateInAttributeValueSingleQuotes","stateBeforeDeclaration","ondeclaration","stateInProcessingInstruction","onprocessinginstruction","stateBeforeComment","stateInSpecialComment","stateBeforeSpecialS","stateBeforeSpecialT","stateInEntity","cleanup","shouldContinue","handleTrailingData","onend","endIndex","onattribentity","ontextentity","formTags","Set","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","Parser$1","options","_b","_c","_d","_e","_f","startIndex","openTagStart","tagname","attribname","attribvalue","attribs","stack","buffers","bufferOffset","writeIndex","ended","htmlMode","lowerCaseTagNames","lowerCaseTags","lowerCaseAttributeNames","recognizeSelfClosing","tokenizer","foreignContext","onparserinit","call","data","getSlice","isVoidElement","name","has","toLowerCase","emitOpenTag","impliesClose","element","shift","unshift","onopentag","endOpenTag","isImplied","_g","_h","pos","closeCurrentTag","isOpenImplied","onattribute","Object","prototype","hasOwnProperty","getInstructionName","search","oncommentend","_j","_k","recognizeCDATA","oncdatastart","oncdataend","onreset","parseComplete","shiftBuffer","onerror","Error","push","parseChunk","done","ElementType","isTag","elem","type","Tag","Script","Style","Root","Directive","Comment","CDATA","Doctype","freeze","__proto__","CDATA$1","Comment$3","Text$3","isTag$2","Node$2","parent","prev","next","parentNode","previousSibling","nextSibling","cloneNode","recursive","DataNode","Node","super","nodeValue","arguments","nodeType","ProcessingInstruction","NodeWithChildren","children","firstChild","lastChild","childNodes","tagName","attributes","keys","namespace","prefix","node","isTagRaw","isCDATA","isText","isComment","isDocument","hasChildren","cloneChildren","clone","Element","forEach","child","Document","isDirective","instruction","sourceCodeLocation","childs","i","defaultOpts","withStartIndices","withEndIndices","DomHandler","callback","elementCB","dom","root","tagStack","lastNode","parser","handleCallback","error","pop","addNode","text","xmlReplacer","xmlCodeMap","getCodePoint","codePointAt","encodeXML","match","lastIdx","exec","substring","toString","getEscaper","regex","escapeAttribute","escapeText","elementNames","val","attributeNames","unencodedElements","replaceQuotes","replace","singleTag","render","nodes","renderNode","ElementType.Root","ElementType.Doctype","ElementType.Directive","renderDirective","ElementType.Comment","renderComment","ElementType.CDATA","renderCdata","ElementType.Script","ElementType.Style","ElementType.Tag","opts","foreignModeIntegrationPoints","foreignElements","tag","encode","encodeEntities","key","emptyAttrs","join","formatAttributes","selfClosingTags","renderTag","ElementType.Text","renderText","getOuterHTML","renderHTML","textContent","Array","isArray","getChildren","getParent","removeElement","childsIndex","lastIndexOf","splice","filter","test","recurse","limit","find","nodeStack","indexStack","findOne","Checks","tag_name","tag_type","tag_contains","getAttribCheck","attrib","combineFuncs","a","b","compileTest","funcs","reduce","getElementsByTagName","DocumentPosition","compareDocumentPosition","nodeA","nodeB","aParents","bParents","maxIdx","min","idx","DISCONNECTED","sharedParent","siblings","aSibling","bSibling","FOLLOWING","CONTAINED_BY","PRECEDING","CONTAINS","getFeed","doc","feedRoot","getOneElement","isValidFeed","feed","items","item","entry","media","getMediaElements","addConditionally","href","link","description","fetch","pubDate","Date","updated","getAtomFeed","id","getRssFeed","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","medium","isDefault","expression","trim","obj","prop","DomUtils","append","currNext","appendChild","sibling","existsOne","some","checked","findAll","findOne$1","findOneChild","getAttributeValue","getChildren$1","getElementById","getElements","getElementsByTagType","getInnerHTML","getName","getParent$1","getSiblings","getText","hasAttrib","innerText","isTag$1","nextElementSibling","prepend","prependChild","prevElementSibling","removeSubsets","ancestor","includes","replaceElement","replacement","testElement","uniqueSort","arr","sort","relative","parseDocument","handler","Parser","parseDOM","parseFeedDefaultOptions","HTMLParser2","DefaultHandler","createDocumentStream","elementCallback","createDomStream","parseFeed","NODE_END","ELEMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","BLOCK_ELEMENTS","SVG_NAMESPACE","assign","create","defineProperties","entries","getOwnPropertyDescriptors","setPrototypeOf","$String","getEnd","ignoreCase","ownerDocument","knownAdjacent","knownBoundaries","knownSiblings","localCase","localName","toUpperCase","setAdjacent","shadowRoots","WeakMap","reactive","Classes","customElements","attributeChangedCallback","attributeName","oldValue","newValue","observedAttributes","createTrigger","method","isConnected","info","connected","triggerConnected","connectedCallback","shadowRoot","p","S","triggerDisconnected","CustomElementRegistry","registry","waiting","active","define","Class","extends","extend","set","is","check","getAttribute","resolve","delete","querySelectorAll","upgrade","ce","attr","removeAttributeNode","values","setAttributeNode","whenDefined","Promise","self","attribute","ownerElement","className","parseFromString","document","isHTML","markupLanguage","ownerSVGElement","parsingCData","content","doctype","createElementNS","createElement","createAttribute","createComment","createCDATASection","createTextNode","htmlClasses","registerHTMLClass","names","concat","performance","globalThis","loopSegment","json","attrAsJSON","characterDataAsJSON","elementAsJSON","documentTypeAsJSON","last","publicId","systemId","createRecord","target","addedNodes","removedNodes","queueAttribute","observer","attributeFilter","attributeOldValue","records","scheduled","then","observers","childList","subtree","contains","moCallback","characterData","MutationObserverClass","class","disconnect","clear","size","observe","add","takeRecords","emptyAttributes","setAttribute","L","moAttributes","ceAttributes","removeAttribute","booleanAttribute","hasAttribute","numericAttribute","parseFloat","stringAttribute","wm","dispatch","event","listener","handleEvent","_stopImmediatePropagationFlag","invokeListeners","currentTarget","listeners","eventPhase","AT_TARGET","BUBBLING_PHASE","once","cancelBubble","DOMEventTarget","_getParent","addEventListener","removeEventListener","dispatchEvent","CAPTURING_PHASE","_path","bubbles","NONE","defaultPrevented","NodeList","getParentNodeCount","count","EventTarget","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT_NODE","baseURI","querySelector","location","defaultView","nodeName","parentElement","previousElementSibling","normalize","insertBefore","newNode","referenceNode","replaceChild","newChild","oldChild","removeChild","hasChildNodes","isSameNode","other","DOCUMENT_POSITION_CONTAINED_BY","isEqualNode","aNodes","bNodes","every","getRootNode","ca","esca","pe","m","escape","es","QUOTE","Attr","toJSON","host","M","asFragment","fragment","createDocumentFragment","before","after","replaceWith","remove","disconnectedCallback","substringData","appendData","insertData","t","deleteData","replaceData","CDATASection","CharacterData","SelectorType","AttributeAction","x","trueFunc","falseFunc","Pseudo","PseudoElement","Universal","Adjacent","Child","Descendant","Parent","Sibling","ColumnCombinator","Any","End","Equals","Exists","Hyphen","Not","Start","reName","reEscape","actionTypes","unpackPseudos","stripQuotesFromPseudos","funescape","_","escaped","escapedWhitespace","high","unescapeCSS","isQuote","selector","subselects","parseSelector","selectorIndex","tokens","stripWhitespace","readValueWithParenthesis","counter","isEscaped","slashCount","ensureNotTraversal","isTraversal","addTraversal","addSpecialAttribute","action","finalizeSubselector","loop","firstChar","startsWith","possibleAction","sectionEnd","valueStart","forceIgnore","attributeSelector","quot","procedure","token","sortByProcedure","procs","getProcedure","procNew","j","proc","d","reChars","escapeRegex","caseInsensitiveAttributes","shouldIgnoreCase","quirksMode","attributeRules","equals","adapter","hyphen","charAt","boolbase","RegExp","exists","endsWith","any","not","whitespace","nthCheck","formula","parsed","absA","abs","bMod","compile","sign","readSign","number","readNumber","skipWhitespace","getChildFunc","filters","icontains","itext","rule","func","getNCheck","currentSibling","_rule","scope","context","hover","dynamicStatePseudo","visited","pseudos","empty","elemName","verifyPseudoArgs","subselect","argIndex","aliases","disabled","enabled","required","optional","selected","checkbox","file","password","radio","image","submit","header","button","input","PLACEHOLDER_ELEMENT","ensureIsTag","getNextSiblings","elemIndex","copyOptions","cacheResults","compileToken","matches","_context","relativeSelector","s","compiled","hasElement","shouldTestNextSiblings","nextElements","getElementParent","compileGeneralSelector","userPseudo","stringPseudo","alias","pseudo","compilePseudoSelector","WeakSet","isFalseCache","previous","lastElement","compileUnsafe","includesScopePseudo","DESCENDANT_TOKEN","FLEXIBLE_DESCENDANT_TOKEN","SCOPE_TOKEN","sortRules","isArrayContext","finalContext","hasContext","e","absolutize","query","rules","first","second","rootFunc","compileRules","reduceRules","defaultEquals","defaultOptions","convertOptionFormats","wrapCompile","compileRaw","elements","classList","prepareMatch","selectors","CSSselect.compile","CSSselect.is","strict","wholeText","isNode","insert","ParentNode","U","firstElementChild","lastElementChild","childElementCount","replaceChildren","getElementsByClassName","B","knownSegment","$next","$prev","replaced","NonElementParentNode","deep","nonEPN","nonElementAsJSON","DocumentType","hasPublic","getInnerHtml","setInnerHtml","html","setOwnerDocument","uhyphen","camel","refs","$1","dataset","deleteProperty","DOMStringMap","ref","Proxy","addTokens","update","qs","getAttributeNode","DOMTokenList","toggle","force","newToken","supports","getKeys","style","updateKeys","rest","cssText","getPropertyValue","setProperty","removeProperty","iterator","CSSStyleDeclaration","getCurrentTarget","ev","GlobalEvent","eventInitDict","cancelable","timeStamp","now","originalTarget","returnValue","srcElement","preventDefault","composedPath","stopPropagation","stopImmediatePropagation","NamedNodeMap","getNamedItem","setNamedItem","removeNamedItem","getNamedItemNS","setNamedItemNS","removeNamedItemNS","innerHTML","attributesHandler","svg","isVoid","namespaceURI","getBoundingClientRect","y","bottom","height","left","right","top","width","nonce","tabIndex","slot","outerHTML","template","focus","Event","getAttributeNames","hasAttributes","previously","toggleAttribute","mode","attachShadow","init","ShadowRoot","closest","insertAdjacentElement","position","insertAdjacentHTML","insertAdjacentText","addNext","out","isOpened","getAttributeNS","getElementsByTagNameNS","hasAttributeNS","removeAttributeNS","setAttributeNS","setAttributeNodeNS","classNames","baseVal","animVal","illegalConstructor","TypeError","DocumentFragment","SVGElement","_Attr","_CDATASection","_CharacterData","_Comment","_DocumentFragment","_DocumentType","_Element","_Node","_ShadowRoot","_Text","_SVGElement","Facades","Level0","level0","handlers","HTMLElement","ownerLess","blur","click","clickEvent","accessKeyLabel","accessKey","isContentEditable","contentEditable","draggable","hidden","spellcheck","dir","lang","title","onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onresize","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","ontoggle","onvolumechange","onwaiting","onauxclick","ongotpointercapture","onlostpointercapture","onpointercancel","onpointerdown","onpointerenter","onpointerleave","onpointermove","onpointerout","onpointerover","onpointerup","HTMLTemplateElement","HTMLHtmlElement","TextElement","HTMLScriptElement","src","defer","crossOrigin","nomodule","referrerPolicy","async","HTMLFrameElement","HTMLIFrameElement","srcdoc","allow","allowFullscreen","loading","HTMLObjectElement","HTMLHeadElement","HTMLBodyElement","parse$2","CSSStyleSheet","StyleSheet","CSSOM","parentStyleSheet","CSSStyleRule","CSSRule","require$$0","require$$1","selectorText","parentRule","defineProperty","ruleText","character","SIGNIFICANT_WHITESPACE","styleRule","priority","SyntaxError","cssRules","insertRule","RangeError","cssRule","deleteRule","require$$2","UNKNOWN_RULE","STYLE_RULE","CHARSET_RULE","IMPORT_RULE","MEDIA_RULE","FONT_FACE_RULE","PAGE_RULE","KEYFRAMES_RULE","KEYFRAME_RULE","MARGIN_RULE","NAMESPACE_RULE","COUNTER_STYLE_RULE","SUPPORTS_RULE","DOCUMENT_RULE","FONT_FEATURE_VALUES_RULE","VIEWPORT_RULE","REGION_STYLE_RULE","CSSImportRule","MediaList","styleSheet","mediaText","url","appendMedium","deleteMedium","CSSGroupingRule","CSSMediaRule","CSSConditionRule","conditionText","require$$3","configurable","enumerable","cssTexts","CSSSupportsRule","CSSFontFaceRule","CSSHostRule","keyText","CSSKeyframeRule","CSSKeyframesRule","_vendorPrefix","CSSValueExpression","CSSValue","_getConstructorName","_token","_idx","paren","_parseJSComment","_parseJSRexExp","_parseJSString","nextChar","endIdx","commentEndChar","sep","_findMatchedIdx","reg","matched","CSSDocumentRule","MatcherList","matcherText","appendMatcher","matcher","deleteMatcher","prevScope","mediaRule","supportsRule","importRule","fontFaceRule","keyframesRule","documentRule","hostRule","valueParenthesisDepth","atRule","atBlock","conditionBlock","currentScope","ancestorRules","hasAncestors","atKeyframesRegExp","parseError","message","lines","lineCount","charCount","line","__starts","matchKeyframes","__ends","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","_importants","prevValue","getPropertyCSSValue","getPropertyPriority","getPropertyShorthand","isPropertyImplicit","properties","dummyRule","require$$14","require$$19","HTMLStyleElement","sheet","HTMLTimeElement","dateTime","HTMLFieldSetElement","HTMLEmbedElement","HTMLHRElement","HTMLProgressElement","HTMLParagraphElement","HTMLTableElement","HTMLFrameSetElement","HTMLLIElement","HTMLBaseElement","HTMLDataListElement","HTMLInputElement","autofocus","placeholder","HTMLParamElement","HTMLMediaElement","HTMLAudioElement","HTMLHeadingElement","HTMLDirectoryElement","HTMLQuoteElement","Canvas","getContext","toDataURL","Canvas$1","createCanvas","HTMLCanvasElement","args","HTMLLegendElement","HTMLOptionElement","option","HTMLSpanElement","HTMLMeterElement","HTMLVideoElement","HTMLTableCellElement","HTMLTitleElement","HTMLOutputElement","HTMLTableRowElement","HTMLDataElement","HTMLMenuElement","HTMLSelectElement","HTMLBRElement","HTMLButtonElement","HTMLMapElement","HTMLOptGroupElement","HTMLDListElement","HTMLTextAreaElement","HTMLFontElement","HTMLDivElement","HTMLLinkElement","hreflang","rel","HTMLSlotElement","assignedNodes","isNamedSlot","hostChildNodes","slottables","flatten","slottable","assignedElements","n","HTMLFormElement","HTMLImageElement","alt","sizes","srcset","HTMLPreElement","HTMLUListElement","HTMLMetaElement","httpEquiv","charset","HTMLPictureElement","HTMLAreaElement","HTMLOListElement","HTMLTableCaptionElement","HTMLAnchorElement","encodeURI","decodeURI","download","HTMLLabelElement","HTMLUnknownElement","HTMLModElement","HTMLDetailsElement","HTMLSourceElement","HTMLTrackElement","HTMLMarqueeElement","HTMLClasses","Mime","docType","CustomEvent","detail","InputEvent","inputEventInit","inputType","dataTransfer","isComposing","ranges","ImageClass","deleteContents","Range","commonAncestorContainer","insertNode","selectNode","selectNodeContents","surroundContents","extractContents","setStartBefore","setStartAfter","setEndBefore","setEndAfter","cloneContents","createContextualFragment","isSVG","cloneRange","range","isOK","mask","TreeWalker","whatToShow","currentNode","documentElement","nextNode","$","globalExports","window","et","bind","userAgent","$4","$6","createDocumentType","createRange","createTreeWalker","createNodeIterator","createEvent","initEvent","initCustomEvent","canBubble","Y","Me","importNode","externalNode","createAttributeNS","nsp","HTMLDocument","all","nodeList","head","body","at","builtin","createHTMLElement","SVGDocument","XMLDocument","DOMParser","mimeType","globals","JSON","_Document","NodeFilter","SHOW_ALL","SHOW_ELEMENT","SHOW_COMMENT","SHOW_CDATA_SECTION","SHOW_TEXT","parseHTML","parseJSON","array"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,66,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107]} \ No newline at end of file From 450185c35af226c05cadcdd20ae0ae48ea01a830 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Wed, 17 Jul 2024 22:41:14 +0530 Subject: [PATCH 09/34] chore: change worker type to `module` --- .../components/MockVisibleExtension.java | 94 +++++++++++-------- .../client/utils/jstypes/Blob.java | 12 --- .../client/utils/jstypes/BlobOptions.java | 17 ++++ .../utils/jstypes/PropertyChangeMessage.java | 4 +- .../client/utils/jstypes/Worker.java | 25 ++++- .../client/utils/jstypes/WorkerOptions.java | 17 ++++ 6 files changed, 113 insertions(+), 56 deletions(-) create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/BlobOptions.java create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerOptions.java diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 218f4001f0e..7f748cc36fa 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -1,18 +1,21 @@ package com.google.appinventor.client.editor.simple.components; import com.google.appinventor.client.Ode; -import com.google.appinventor.client.OdeAsyncCallback; import com.google.appinventor.client.editor.simple.SimpleEditor; -import com.google.appinventor.client.utils.Blob; -import com.google.appinventor.client.utils.Blob.BlobOptions; -import com.google.appinventor.client.utils.Worker; -import com.google.appinventor.client.utils.JsURL; import com.google.appinventor.client.utils.Promise; -import com.google.appinventor.client.utils.Worker.MessageEvent; -import com.google.appinventor.client.widgets.dnd.DragSource; +import com.google.appinventor.client.utils.jstypes.Blob; +import com.google.appinventor.client.utils.jstypes.BlobOptions; +import com.google.appinventor.client.utils.jstypes.PropertyChangeMessage; +import com.google.appinventor.client.utils.jstypes.URL; +import com.google.appinventor.client.utils.jstypes.Worker; +import com.google.appinventor.client.utils.jstypes.Worker.MessageEvent; +import com.google.appinventor.client.utils.jstypes.WorkerOptions; import com.google.appinventor.shared.rpc.project.ChecksumedFileException; import com.google.appinventor.shared.rpc.project.ChecksumedLoadFile; -import com.google.gwt.user.client.ui.*; +import com.google.gwt.user.client.ui.HTMLPanel; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.InlineHTML; public class MockVisibleExtension extends MockVisibleComponent { private final long projectId; @@ -37,55 +40,72 @@ public MockVisibleExtension( InlineHTML label = new InlineHTML("Loading " + type + "..."); rootPanel.add(label); - Ode.CLog("constructor..."); + Ode.CLog("MockVisibleExtension.constructor"); initComponent(rootPanel); } @Override public void onCreateFromPalette() { super.onCreateFromPalette(); - Ode.CLog("initing..."); + Ode.CLog("MockVisibleExtension.createFromPalette"); + Promise.<ChecksumedLoadFile>call( - "Server error: could not mock script for component: " + getVisibleTypeName(), - cb -> Ode.getInstance().getProjectService().load2(projectId, mockFileId, cb)) - .then( - result -> { - Blob blob; - try { - String[] parts = new String[] {result.getContent()}; - BlobOptions options = new BlobOptions("text/javascript", "transparent"); - blob = new Blob(parts, options); - } catch (ChecksumedFileException e) { - return Promise.reject(e.getMessage()); - } - - worker = new Worker(JsURL.createObjectURL(blob)); - worker.postMessage("ping"); - worker.addEventListener( - "message", - (MessageEvent event) -> { - HTMLPanel html = new HTMLPanel(event.getData().toString()); - rootPanel.clear(); - rootPanel.setStylePrimaryName("ode-SimpleMockComponent"); - rootPanel.add(html); - }); - return Promise.resolve(result); - }); + "Server error: could not load mock script for component: " + getVisibleTypeName(), + cb -> Ode.getInstance().getProjectService().load2(projectId, mockFileId, cb)) + .then( + result -> { + String mockScript; + try { + mockScript = result.getContent(); + } catch (ChecksumedFileException e) { + return Promise.reject(e.getMessage()); + } + initWorker(mockScript); + return Promise.resolve(result); + }); + } + + private void initWorker(String mockScript) { + String[] parts = new String[] {mockScript}; + BlobOptions blobOpts = BlobOptions.create("text/javascript", "transparent"); + Blob blob = new Blob(parts, blobOpts); + + WorkerOptions workerOpts = WorkerOptions.create("module"); + worker = new Worker(URL.createObjectURL(blob), workerOpts); + worker.addEventListener( + "message", + (MessageEvent event) -> { + Ode.CLog(event.getData().toString()); + HTMLPanel html = new HTMLPanel(event.getData().toString()); + rootPanel.clear(); + rootPanel.setStylePrimaryName("ode-SimpleMockComponent"); + rootPanel.add(html); + }); + + worker.addEventListener( + "error", + (Worker.ErrorEvent event) -> { + Ode.CLog(event.getMessage()); + Ode.CLog(event.getFileName()); + Ode.CLog(String.valueOf(event.getLineNo())); + Ode.CLog(String.valueOf(event.getColNo())); + Ode.CLog(event.getError().toString()); + }); } @Override public void delete() { - super.delete(); if (worker != null) { worker.terminate(); } + super.delete(); } @Override public void onPropertyChange(String propertyName, String newValue) { super.onPropertyChange(propertyName, newValue); if (worker != null) { - String msg = propertyName + ": " + newValue; + PropertyChangeMessage msg = new PropertyChangeMessage(propertyName, newValue); worker.postMessage(msg); } } diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java index de4a6072104..ba387e87899 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java @@ -2,22 +2,10 @@ import jsinterop.annotations.JsConstructor; import jsinterop.annotations.JsPackage; -import jsinterop.annotations.JsProperty; import jsinterop.annotations.JsType; @JsType(isNative = true, namespace = JsPackage.GLOBAL) public class Blob { - - @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object") - public static class BlobOptions { - @JsProperty private String type; - - @JsProperty private String ending; - - @JsConstructor - public BlobOptions(String type, String ending) {} - } - @JsConstructor public Blob(Object[] parts, BlobOptions options) {} } diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/BlobOptions.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/BlobOptions.java new file mode 100644 index 00000000000..0443f36a730 --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/BlobOptions.java @@ -0,0 +1,17 @@ +package com.google.appinventor.client.utils.jstypes; + +import jsinterop.annotations.*; + +@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object") +public class BlobOptions { + private String type; + private String ending; + + @JsOverlay + public static BlobOptions create(String type, String ending) { + final BlobOptions opts = new BlobOptions(); + opts.type = type; + opts.ending = ending; + return opts; + } +} diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java index 57e36d18ea1..fc65c58725f 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java @@ -6,10 +6,10 @@ @JsType(namespace = JsPackage.GLOBAL) public class PropertyChangeMessage { - @JsProperty(name = "propertyName") + @JsProperty(name = "name") public final String propertyName; - @JsProperty(name = "newValue") + @JsProperty(name = "value") public final String newValue; public PropertyChangeMessage(String propertyName, String newValue) { diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java index c7ad9477955..2d5db48b698 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java @@ -1,9 +1,6 @@ package com.google.appinventor.client.utils.jstypes; -import jsinterop.annotations.JsFunction; -import jsinterop.annotations.JsPackage; -import jsinterop.annotations.JsProperty; -import jsinterop.annotations.JsType; +import jsinterop.annotations.*; @JsType(isNative = true, namespace = JsPackage.GLOBAL) public class Worker { @@ -22,7 +19,25 @@ public interface MessageEvent extends Event { Object getData(); } - public Worker(String scriptURL) {} + @JsType(isNative = true, namespace = JsPackage.GLOBAL) + public interface ErrorEvent extends Event { + @JsProperty(name = "message") + String getMessage(); + + @JsProperty(name = "error") + Object getError(); + + @JsProperty(name = "fileno") + String getFileName(); + + @JsProperty(name = "lineno") + int getLineNo(); + + @JsProperty(name = "colno") + int getColNo(); + } + + public Worker(String scriptURL, WorkerOptions opts) {} public native void postMessage(Object message); diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerOptions.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerOptions.java new file mode 100644 index 00000000000..39ab9a711df --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerOptions.java @@ -0,0 +1,17 @@ +package com.google.appinventor.client.utils.jstypes; + +import jsinterop.annotations.JsOverlay; +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsType; + +@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object") +public class WorkerOptions { + private String type; + + @JsOverlay + public static WorkerOptions create(String type) { + final WorkerOptions opts = new WorkerOptions(); + opts.type = type; + return opts; + } +} \ No newline at end of file From 3269f9992438196b0b6b4a26b4f34eaa2d3a7583 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sun, 21 Jul 2024 15:48:45 +0530 Subject: [PATCH 10/34] chore: perform sanitization of mock & initiate mocks API impl --- .../components/MockVisibleExtension.java | 35 ++++++++++++++----- .../client/utils/jstypes/DOMPurify.java | 9 +++++ appinventor/appengine/war/index.jsp | 1 - appinventor/lib/dompurify/purify.min.js | 1 - 4 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/DOMPurify.java diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 7f748cc36fa..023a0fe53d9 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -5,6 +5,7 @@ import com.google.appinventor.client.utils.Promise; import com.google.appinventor.client.utils.jstypes.Blob; import com.google.appinventor.client.utils.jstypes.BlobOptions; +import com.google.appinventor.client.utils.jstypes.DOMPurify; import com.google.appinventor.client.utils.jstypes.PropertyChangeMessage; import com.google.appinventor.client.utils.jstypes.URL; import com.google.appinventor.client.utils.jstypes.Worker; @@ -12,6 +13,7 @@ import com.google.appinventor.client.utils.jstypes.WorkerOptions; import com.google.appinventor.shared.rpc.project.ChecksumedFileException; import com.google.appinventor.shared.rpc.project.ChecksumedLoadFile; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; @@ -66,7 +68,25 @@ public void onCreateFromPalette() { } private void initWorker(String mockScript) { - String[] parts = new String[] {mockScript}; + String baseUrl = Window.Location.getProtocol() + "//" + Window.Location.getHost(); + String[] parts = + new String[] { + "import { parseHTML } from '" + baseUrl + "/static/linkedom/linkedom.min.js';\n", + "self.Mock = {\n", + " document: undefined,\n", + " template: () => undefined,\n", + " onPropertyChange: (property) => undefined\n", + "};\n", + mockScript + "\n", + "const ____mockhtml = Mock.template();\n", + "self.postMessage(____mockhtml);\n", + "Mock.document = parseHTML(____mockhtml).document;\n", + "onmessage = (msg) => {\n", + " Mock.onPropertyChange(msg.data);\n", + " postMessage(Mock.document.toString());\n", + "};\n", + }; + BlobOptions blobOpts = BlobOptions.create("text/javascript", "transparent"); Blob blob = new Blob(parts, blobOpts); @@ -75,8 +95,10 @@ private void initWorker(String mockScript) { worker.addEventListener( "message", (MessageEvent event) -> { - Ode.CLog(event.getData().toString()); - HTMLPanel html = new HTMLPanel(event.getData().toString()); + Ode.CLog("worker.message: dirty: " + event.getData().toString()); + String sanitizedData = DOMPurify.sanitize(event.getData().toString()); + Ode.CLog("worker.message: clean: " + sanitizedData); + HTMLPanel html = new HTMLPanel(sanitizedData); rootPanel.clear(); rootPanel.setStylePrimaryName("ode-SimpleMockComponent"); rootPanel.add(html); @@ -85,11 +107,8 @@ private void initWorker(String mockScript) { worker.addEventListener( "error", (Worker.ErrorEvent event) -> { - Ode.CLog(event.getMessage()); - Ode.CLog(event.getFileName()); - Ode.CLog(String.valueOf(event.getLineNo())); - Ode.CLog(String.valueOf(event.getColNo())); - Ode.CLog(event.getError().toString()); + Ode.CLog("worker.error: " + event.getMessage()); + Ode.CLog(String.valueOf(event.getError())); }); } diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/DOMPurify.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/DOMPurify.java new file mode 100644 index 00000000000..9d3a6031c15 --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/DOMPurify.java @@ -0,0 +1,9 @@ +package com.google.appinventor.client.utils.jstypes; + +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsType; + +@JsType(isNative = true, namespace = JsPackage.GLOBAL) +public class DOMPurify { + public static native String sanitize(String dirty); +} diff --git a/appinventor/appengine/war/index.jsp b/appinventor/appengine/war/index.jsp index a8f68121dfb..08a0fa5deb3 100644 --- a/appinventor/appengine/war/index.jsp +++ b/appinventor/appengine/war/index.jsp @@ -89,6 +89,5 @@ } </script> <script type="text/javascript" src="static/dompurify/purify.min.js"></script> - <script type="text/javascript" src="static/linkedom/linkedom.min.js"></script> </body> </html> diff --git a/appinventor/lib/dompurify/purify.min.js b/appinventor/lib/dompurify/purify.min.js index a30c02bf514..d2a526e9dd5 100644 --- a/appinventor/lib/dompurify/purify.min.js +++ b/appinventor/lib/dompurify/purify.min.js @@ -1,3 +1,2 @@ /*! @license DOMPurify 3.1.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.6/LICENSE */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).DOMPurify=t()}(this,(function(){"use strict";const{entries:e,setPrototypeOf:t,isFrozen:n,getPrototypeOf:o,getOwnPropertyDescriptor:r}=Object;let{freeze:i,seal:a,create:l}=Object,{apply:c,construct:s}="undefined"!=typeof Reflect&&Reflect;i||(i=function(e){return e}),a||(a=function(e){return e}),c||(c=function(e,t,n){return e.apply(t,n)}),s||(s=function(e,t){return new e(...t)});const u=b(Array.prototype.forEach),m=b(Array.prototype.pop),p=b(Array.prototype.push),f=b(String.prototype.toLowerCase),d=b(String.prototype.toString),h=b(String.prototype.match),g=b(String.prototype.replace),T=b(String.prototype.indexOf),y=b(String.prototype.trim),E=b(Object.prototype.hasOwnProperty),_=b(RegExp.prototype.test),A=(N=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return s(N,t)});var N;function b(e){return function(t){for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return c(e,t,o)}}function S(e,o){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:f;t&&t(e,null);let i=o.length;for(;i--;){let t=o[i];if("string"==typeof t){const e=r(t);e!==t&&(n(o)||(o[i]=e),t=e)}e[t]=!0}return e}function R(e){for(let t=0;t<e.length;t++){E(e,t)||(e[t]=null)}return e}function w(t){const n=l(null);for(const[o,r]of e(t)){E(t,o)&&(Array.isArray(r)?n[o]=R(r):r&&"object"==typeof r&&r.constructor===Object?n[o]=w(r):n[o]=r)}return n}function C(e,t){for(;null!==e;){const n=r(e,t);if(n){if(n.get)return b(n.get);if("function"==typeof n.value)return b(n.value)}e=o(e)}return function(){return null}}const L=i(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),D=i(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),v=i(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),O=i(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),x=i(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),k=i(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),M=i(["#text"]),I=i(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),U=i(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),P=i(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),F=i(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),H=a(/\{\{[\w\W]*|[\w\W]*\}\}/gm),z=a(/<%[\w\W]*|[\w\W]*%>/gm),B=a(/\${[\w\W]*}/gm),W=a(/^data-[\-\w.\u00B7-\uFFFF]/),G=a(/^aria-[\-\w]+$/),Y=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),j=a(/^(?:\w+script|data):/i),X=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),q=a(/^html$/i),$=a(/^[a-z][.\w]*(-[.\w]+)+$/i);var K=Object.freeze({__proto__:null,MUSTACHE_EXPR:H,ERB_EXPR:z,TMPLIT_EXPR:B,DATA_ATTR:W,ARIA_ATTR:G,IS_ALLOWED_URI:Y,IS_SCRIPT_OR_DATA:j,ATTR_WHITESPACE:X,DOCTYPE_NAME:q,CUSTOM_ELEMENT:$});const V=1,Z=3,J=7,Q=8,ee=9,te=function(){return"undefined"==typeof window?null:window};var ne=function t(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:te();const o=e=>t(e);if(o.version="3.1.6",o.removed=[],!n||!n.document||n.document.nodeType!==ee)return o.isSupported=!1,o;let{document:r}=n;const a=r,c=a.currentScript,{DocumentFragment:s,HTMLTemplateElement:N,Node:b,Element:R,NodeFilter:H,NamedNodeMap:z=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:B,DOMParser:W,trustedTypes:G}=n,j=R.prototype,X=C(j,"cloneNode"),$=C(j,"remove"),ne=C(j,"nextSibling"),oe=C(j,"childNodes"),re=C(j,"parentNode");if("function"==typeof N){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let ie,ae="";const{implementation:le,createNodeIterator:ce,createDocumentFragment:se,getElementsByTagName:ue}=r,{importNode:me}=a;let pe={};o.isSupported="function"==typeof e&&"function"==typeof re&&le&&void 0!==le.createHTMLDocument;const{MUSTACHE_EXPR:fe,ERB_EXPR:de,TMPLIT_EXPR:he,DATA_ATTR:ge,ARIA_ATTR:Te,IS_SCRIPT_OR_DATA:ye,ATTR_WHITESPACE:Ee,CUSTOM_ELEMENT:_e}=K;let{IS_ALLOWED_URI:Ae}=K,Ne=null;const be=S({},[...L,...D,...v,...x,...M]);let Se=null;const Re=S({},[...I,...U,...P,...F]);let we=Object.seal(l(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ce=null,Le=null,De=!0,ve=!0,Oe=!1,xe=!0,ke=!1,Me=!0,Ie=!1,Ue=!1,Pe=!1,Fe=!1,He=!1,ze=!1,Be=!0,We=!1,Ge=!0,Ye=!1,je={},Xe=null;const qe=S({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let $e=null;const Ke=S({},["audio","video","img","source","image","track"]);let Ve=null;const Ze=S({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Je="http://www.w3.org/1998/Math/MathML",Qe="http://www.w3.org/2000/svg",et="http://www.w3.org/1999/xhtml";let tt=et,nt=!1,ot=null;const rt=S({},[Je,Qe,et],d);let it=null;const at=["application/xhtml+xml","text/html"];let lt=null,ct=null;const st=r.createElement("form"),ut=function(e){return e instanceof RegExp||e instanceof Function},mt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!ct||ct!==e){if(e&&"object"==typeof e||(e={}),e=w(e),it=-1===at.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,lt="application/xhtml+xml"===it?d:f,Ne=E(e,"ALLOWED_TAGS")?S({},e.ALLOWED_TAGS,lt):be,Se=E(e,"ALLOWED_ATTR")?S({},e.ALLOWED_ATTR,lt):Re,ot=E(e,"ALLOWED_NAMESPACES")?S({},e.ALLOWED_NAMESPACES,d):rt,Ve=E(e,"ADD_URI_SAFE_ATTR")?S(w(Ze),e.ADD_URI_SAFE_ATTR,lt):Ze,$e=E(e,"ADD_DATA_URI_TAGS")?S(w(Ke),e.ADD_DATA_URI_TAGS,lt):Ke,Xe=E(e,"FORBID_CONTENTS")?S({},e.FORBID_CONTENTS,lt):qe,Ce=E(e,"FORBID_TAGS")?S({},e.FORBID_TAGS,lt):{},Le=E(e,"FORBID_ATTR")?S({},e.FORBID_ATTR,lt):{},je=!!E(e,"USE_PROFILES")&&e.USE_PROFILES,De=!1!==e.ALLOW_ARIA_ATTR,ve=!1!==e.ALLOW_DATA_ATTR,Oe=e.ALLOW_UNKNOWN_PROTOCOLS||!1,xe=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,ke=e.SAFE_FOR_TEMPLATES||!1,Me=!1!==e.SAFE_FOR_XML,Ie=e.WHOLE_DOCUMENT||!1,Fe=e.RETURN_DOM||!1,He=e.RETURN_DOM_FRAGMENT||!1,ze=e.RETURN_TRUSTED_TYPE||!1,Pe=e.FORCE_BODY||!1,Be=!1!==e.SANITIZE_DOM,We=e.SANITIZE_NAMED_PROPS||!1,Ge=!1!==e.KEEP_CONTENT,Ye=e.IN_PLACE||!1,Ae=e.ALLOWED_URI_REGEXP||Y,tt=e.NAMESPACE||et,we=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&ut(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(we.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&ut(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(we.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(we.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ke&&(ve=!1),He&&(Fe=!0),je&&(Ne=S({},M),Se=[],!0===je.html&&(S(Ne,L),S(Se,I)),!0===je.svg&&(S(Ne,D),S(Se,U),S(Se,F)),!0===je.svgFilters&&(S(Ne,v),S(Se,U),S(Se,F)),!0===je.mathMl&&(S(Ne,x),S(Se,P),S(Se,F))),e.ADD_TAGS&&(Ne===be&&(Ne=w(Ne)),S(Ne,e.ADD_TAGS,lt)),e.ADD_ATTR&&(Se===Re&&(Se=w(Se)),S(Se,e.ADD_ATTR,lt)),e.ADD_URI_SAFE_ATTR&&S(Ve,e.ADD_URI_SAFE_ATTR,lt),e.FORBID_CONTENTS&&(Xe===qe&&(Xe=w(Xe)),S(Xe,e.FORBID_CONTENTS,lt)),Ge&&(Ne["#text"]=!0),Ie&&S(Ne,["html","head","body"]),Ne.table&&(S(Ne,["tbody"]),delete Ce.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw A('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw A('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ie=e.TRUSTED_TYPES_POLICY,ae=ie.createHTML("")}else void 0===ie&&(ie=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(G,c)),null!==ie&&"string"==typeof ae&&(ae=ie.createHTML(""));i&&i(e),ct=e}},pt=S({},["mi","mo","mn","ms","mtext"]),ft=S({},["foreignobject","annotation-xml"]),dt=S({},["title","style","font","a","script"]),ht=S({},[...D,...v,...O]),gt=S({},[...x,...k]),Tt=function(e){p(o.removed,{element:e});try{re(e).removeChild(e)}catch(t){$(e)}},yt=function(e,t){try{p(o.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){p(o.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Se[e])if(Fe||He)try{Tt(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},Et=function(e){let t=null,n=null;if(Pe)e="<remove></remove>"+e;else{const t=h(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===it&&tt===et&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const o=ie?ie.createHTML(e):e;if(tt===et)try{t=(new W).parseFromString(o,it)}catch(e){}if(!t||!t.documentElement){t=le.createDocument(tt,"template",null);try{t.documentElement.innerHTML=nt?ae:o}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),tt===et?ue.call(t,Ie?"html":"body")[0]:Ie?t.documentElement:i},_t=function(e){return ce.call(e.ownerDocument||e,e,H.SHOW_ELEMENT|H.SHOW_COMMENT|H.SHOW_TEXT|H.SHOW_PROCESSING_INSTRUCTION|H.SHOW_CDATA_SECTION,null)},At=function(e){return e instanceof B&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof z)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Nt=function(e){return"function"==typeof b&&e instanceof b},bt=function(e,t,n){pe[e]&&u(pe[e],(e=>{e.call(o,t,n,ct)}))},St=function(e){let t=null;if(bt("beforeSanitizeElements",e,null),At(e))return Tt(e),!0;const n=lt(e.nodeName);if(bt("uponSanitizeElement",e,{tagName:n,allowedTags:Ne}),e.hasChildNodes()&&!Nt(e.firstElementChild)&&_(/<[/\w]/g,e.innerHTML)&&_(/<[/\w]/g,e.textContent))return Tt(e),!0;if(e.nodeType===J)return Tt(e),!0;if(Me&&e.nodeType===Q&&_(/<[/\w]/g,e.data))return Tt(e),!0;if(!Ne[n]||Ce[n]){if(!Ce[n]&&wt(n)){if(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,n))return!1;if(we.tagNameCheck instanceof Function&&we.tagNameCheck(n))return!1}if(Ge&&!Xe[n]){const t=re(e)||e.parentNode,n=oe(e)||e.childNodes;if(n&&t){for(let o=n.length-1;o>=0;--o){const r=X(n[o],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,ne(e))}}}return Tt(e),!0}return e instanceof R&&!function(e){let t=re(e);t&&t.tagName||(t={namespaceURI:tt,tagName:"template"});const n=f(e.tagName),o=f(t.tagName);return!!ot[e.namespaceURI]&&(e.namespaceURI===Qe?t.namespaceURI===et?"svg"===n:t.namespaceURI===Je?"svg"===n&&("annotation-xml"===o||pt[o]):Boolean(ht[n]):e.namespaceURI===Je?t.namespaceURI===et?"math"===n:t.namespaceURI===Qe?"math"===n&&ft[o]:Boolean(gt[n]):e.namespaceURI===et?!(t.namespaceURI===Qe&&!ft[o])&&!(t.namespaceURI===Je&&!pt[o])&&!gt[n]&&(dt[n]||!ht[n]):!("application/xhtml+xml"!==it||!ot[e.namespaceURI]))}(e)?(Tt(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!_(/<\/no(script|embed|frames)/i,e.innerHTML)?(ke&&e.nodeType===Z&&(t=e.textContent,u([fe,de,he],(e=>{t=g(t,e," ")})),e.textContent!==t&&(p(o.removed,{element:e.cloneNode()}),e.textContent=t)),bt("afterSanitizeElements",e,null),!1):(Tt(e),!0)},Rt=function(e,t,n){if(Be&&("id"===t||"name"===t)&&(n in r||n in st))return!1;if(ve&&!Le[t]&&_(ge,t));else if(De&&_(Te,t));else if(!Se[t]||Le[t]){if(!(wt(e)&&(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,e)||we.tagNameCheck instanceof Function&&we.tagNameCheck(e))&&(we.attributeNameCheck instanceof RegExp&&_(we.attributeNameCheck,t)||we.attributeNameCheck instanceof Function&&we.attributeNameCheck(t))||"is"===t&&we.allowCustomizedBuiltInElements&&(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,n)||we.tagNameCheck instanceof Function&&we.tagNameCheck(n))))return!1}else if(Ve[t]);else if(_(Ae,g(n,Ee,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==T(n,"data:")||!$e[e]){if(Oe&&!_(ye,g(n,Ee,"")));else if(n)return!1}else;return!0},wt=function(e){return"annotation-xml"!==e&&h(e,_e)},Ct=function(e){bt("beforeSanitizeAttributes",e,null);const{attributes:t}=e;if(!t)return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Se};let r=t.length;for(;r--;){const i=t[r],{name:a,namespaceURI:l,value:c}=i,s=lt(a);let p="value"===a?c:y(c);if(n.attrName=s,n.attrValue=p,n.keepAttr=!0,n.forceKeepAttr=void 0,bt("uponSanitizeAttribute",e,n),p=n.attrValue,Me&&_(/((--!?|])>)|<\/(style|title)/i,p)){yt(a,e);continue}if(n.forceKeepAttr)continue;if(yt(a,e),!n.keepAttr)continue;if(!xe&&_(/\/>/i,p)){yt(a,e);continue}ke&&u([fe,de,he],(e=>{p=g(p,e," ")}));const f=lt(e.nodeName);if(Rt(f,s,p)){if(!We||"id"!==s&&"name"!==s||(yt(a,e),p="user-content-"+p),ie&&"object"==typeof G&&"function"==typeof G.getAttributeType)if(l);else switch(G.getAttributeType(f,s)){case"TrustedHTML":p=ie.createHTML(p);break;case"TrustedScriptURL":p=ie.createScriptURL(p)}try{l?e.setAttributeNS(l,a,p):e.setAttribute(a,p),At(e)?Tt(e):m(o.removed)}catch(e){}}}bt("afterSanitizeAttributes",e,null)},Lt=function e(t){let n=null;const o=_t(t);for(bt("beforeSanitizeShadowDOM",t,null);n=o.nextNode();)bt("uponSanitizeShadowNode",n,null),St(n)||(n.content instanceof s&&e(n.content),Ct(n));bt("afterSanitizeShadowDOM",t,null)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,i=null,l=null;if(nt=!e,nt&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Nt(e)){if("function"!=typeof e.toString)throw A("toString is not a function");if("string"!=typeof(e=e.toString()))throw A("dirty is not a string, aborting")}if(!o.isSupported)return e;if(Ue||mt(t),o.removed=[],"string"==typeof e&&(Ye=!1),Ye){if(e.nodeName){const t=lt(e.nodeName);if(!Ne[t]||Ce[t])throw A("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof b)n=Et("\x3c!----\x3e"),r=n.ownerDocument.importNode(e,!0),r.nodeType===V&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!Fe&&!ke&&!Ie&&-1===e.indexOf("<"))return ie&&ze?ie.createHTML(e):e;if(n=Et(e),!n)return Fe?null:ze?ae:""}n&&Pe&&Tt(n.firstChild);const c=_t(Ye?e:n);for(;i=c.nextNode();)St(i)||(i.content instanceof s&&Lt(i.content),Ct(i));if(Ye)return e;if(Fe){if(He)for(l=se.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(Se.shadowroot||Se.shadowrootmode)&&(l=me.call(a,l,!0)),l}let m=Ie?n.outerHTML:n.innerHTML;return Ie&&Ne["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&_(q,n.ownerDocument.doctype.name)&&(m="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+m),ke&&u([fe,de,he],(e=>{m=g(m,e," ")})),ie&&ze?ie.createHTML(m):m},o.setConfig=function(){mt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Ue=!0},o.clearConfig=function(){ct=null,Ue=!1},o.isValidAttribute=function(e,t,n){ct||mt({});const o=lt(e),r=lt(t);return Rt(o,r,n)},o.addHook=function(e,t){"function"==typeof t&&(pe[e]=pe[e]||[],p(pe[e],t))},o.removeHook=function(e){if(pe[e])return m(pe[e])},o.removeHooks=function(e){pe[e]&&(pe[e]=[])},o.removeAllHooks=function(){pe={}},o}();return ne})); -//# sourceMappingURL=purify.min.js.map From 8c547c32a3853d8b55a679139c1711ea74178034 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sun, 21 Jul 2024 15:50:53 +0530 Subject: [PATCH 11/34] fix: fix unexpected type coercion (by linter) --- appinventor/appengine/war/index.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appinventor/appengine/war/index.jsp b/appinventor/appengine/war/index.jsp index 08a0fa5deb3..077c258932f 100644 --- a/appinventor/appengine/war/index.jsp +++ b/appinventor/appengine/war/index.jsp @@ -84,7 +84,7 @@ <script src="static/leaflet/leaflet.geometryutil.js"></script> <script src="static/leaflet/leaflet.snap.js"></script> <script> - if (window.navigator.userAgent.indexOf("MSIE") != -1){ + if (window.navigator.userAgent.indexOf("MSIE") !== -1){ document.getElementById("unsupported").style.display = 'block'; } </script> From 2728dd7fd81315ae2cd59ebaba711fadfb8bf3b2 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sun, 21 Jul 2024 15:53:29 +0530 Subject: [PATCH 12/34] chore: update minified linkedom and rm non-minified version --- appinventor/lib/linkedom/linkedom.js | 18 ------------- appinventor/lib/linkedom/linkedom.min.js | 27 ++++++++++++++------ appinventor/lib/linkedom/linkedom.min.js.map | 1 - 3 files changed, 19 insertions(+), 27 deletions(-) delete mode 100644 appinventor/lib/linkedom/linkedom.js delete mode 100644 appinventor/lib/linkedom/linkedom.min.js.map diff --git a/appinventor/lib/linkedom/linkedom.js b/appinventor/lib/linkedom/linkedom.js deleted file mode 100644 index 9a14a3728cc..00000000000 --- a/appinventor/lib/linkedom/linkedom.js +++ /dev/null @@ -1,18 +0,0 @@ -const xt=Symbol("changed"),$e=Symbol("classList"),Z=Symbol("CustomElements"),yt=Symbol("content"),fu=Symbol("dataset"),ke=Symbol("doctype"),bu=Symbol("DOMParser"),m=Symbol("end"),ut=Symbol("EventTarget"),Ct=Symbol("globals"),Y=Symbol("image"),Ve=Symbol("mime"),ye=Symbol("MutationObserver"),p=Symbol("next"),Hs=Symbol("ownerElement"),D=Symbol("prev"),H=Symbol("private"),Ue=Symbol("sheet"),G=Symbol("start"),pu=Symbol("style"),st=Symbol("upgrade"),R=Symbol("value");var Bs=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(t=>t.charCodeAt(0))),$s=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(t=>t.charCodeAt(0))),gu;const Ta=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),mu=(gu=String.fromCodePoint)!==null&&gu!==void 0?gu:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|t&1023),e+=String.fromCharCode(t),e};function Na(t){var e;return t>=55296&&t<=57343||t>1114111?65533:(e=Ta.get(t))!==null&&e!==void 0?e:t}var O;(function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"})(O||(O={}));const Aa=32;var Ce;(function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"})(Ce||(Ce={}));function Su(t){return t>=O.ZERO&&t<=O.NINE}function Ra(t){return t>=O.UPPER_A&&t<=O.UPPER_F||t>=O.LOWER_A&&t<=O.LOWER_F}function Da(t){return t>=O.UPPER_A&&t<=O.UPPER_Z||t>=O.LOWER_A&&t<=O.LOWER_Z||Su(t)}function ka(t){return t===O.EQUALS||Da(t)}var _;(function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"})(_||(_={}));var re;(function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"})(re||(re={}));class Vs{constructor(e,u,s){this.decodeTree=e,this.emitCodePoint=u,this.errors=s,this.state=_.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=re.Strict}startEntity(e){this.decodeMode=e,this.state=_.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(e,u){switch(this.state){case _.EntityStart:return e.charCodeAt(u)===O.NUM?(this.state=_.NumericStart,this.consumed+=1,this.stateNumericStart(e,u+1)):(this.state=_.NamedEntity,this.stateNamedEntity(e,u));case _.NumericStart:return this.stateNumericStart(e,u);case _.NumericDecimal:return this.stateNumericDecimal(e,u);case _.NumericHex:return this.stateNumericHex(e,u);case _.NamedEntity:return this.stateNamedEntity(e,u)}}stateNumericStart(e,u){return u>=e.length?-1:(e.charCodeAt(u)|Aa)===O.LOWER_X?(this.state=_.NumericHex,this.consumed+=1,this.stateNumericHex(e,u+1)):(this.state=_.NumericDecimal,this.stateNumericDecimal(e,u))}addToNumericResult(e,u,s,n){if(u!==s){const r=s-u;this.result=this.result*Math.pow(n,r)+parseInt(e.substr(u,r),n),this.consumed+=r}}stateNumericHex(e,u){const s=u;for(;u<e.length;){const n=e.charCodeAt(u);if(Su(n)||Ra(n))u+=1;else return this.addToNumericResult(e,s,u,16),this.emitNumericEntity(n,3)}return this.addToNumericResult(e,s,u,16),-1}stateNumericDecimal(e,u){const s=u;for(;u<e.length;){const n=e.charCodeAt(u);if(Su(n))u+=1;else return this.addToNumericResult(e,s,u,10),this.emitNumericEntity(n,2)}return this.addToNumericResult(e,s,u,10),-1}emitNumericEntity(e,u){var s;if(this.consumed<=u)return(s=this.errors)===null||s===void 0||s.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(e===O.SEMI)this.consumed+=1;else if(this.decodeMode===re.Strict)return 0;return this.emitCodePoint(Na(this.result),this.consumed),this.errors&&(e!==O.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(e,u){const{decodeTree:s}=this;let n=s[this.treeIndex],r=(n&Ce.VALUE_LENGTH)>>14;for(;u<e.length;u++,this.excess++){const i=e.charCodeAt(u);if(this.treeIndex=La(s,n,this.treeIndex+Math.max(1,r),i),this.treeIndex<0)return this.result===0||this.decodeMode===re.Attribute&&(r===0||ka(i))?0:this.emitNotTerminatedNamedEntity();if(n=s[this.treeIndex],r=(n&Ce.VALUE_LENGTH)>>14,r!==0){if(i===O.SEMI)return this.emitNamedEntityData(this.treeIndex,r,this.consumed+this.excess);this.decodeMode!==re.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var e;const{result:u,decodeTree:s}=this,n=(s[u]&Ce.VALUE_LENGTH)>>14;return this.emitNamedEntityData(u,n,this.consumed),(e=this.errors)===null||e===void 0||e.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,u,s){const{decodeTree:n}=this;return this.emitCodePoint(u===1?n[e]&~Ce.VALUE_LENGTH:n[e+1],s),u===3&&this.emitCodePoint(n[e+2],s),s}end(){var e;switch(this.state){case _.NamedEntity:return this.result!==0&&(this.decodeMode!==re.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case _.NumericDecimal:return this.emitNumericEntity(0,2);case _.NumericHex:return this.emitNumericEntity(0,3);case _.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case _.EntityStart:return 0}}}function Us(t){let e="";const u=new Vs(t,s=>e+=mu(s));return function(n,r){let i=0,a=0;for(;(a=n.indexOf("&",a))>=0;){e+=n.slice(i,a),u.startEntity(r);const c=u.write(n,a+1);if(c<0){i=a+u.end();break}i=a+c,a=c===0?i+1:i}const o=e+n.slice(i);return e="",o}}function La(t,e,u,s){const n=(e&Ce.BRANCH_LENGTH)>>7,r=e&Ce.JUMP_TABLE;if(n===0)return r!==0&&s===r?u:-1;if(r){const o=s-r;return o<0||o>=n?-1:t[u+o]-1}let i=u,a=i+n-1;for(;i<=a;){const o=i+a>>>1,c=t[o];if(c<s)i=o+1;else if(c>s)a=o-1;else return t[o+n]}return-1}Us(Bs),Us($s);var x;(function(t){t[t.Tab=9]="Tab",t[t.NewLine=10]="NewLine",t[t.FormFeed=12]="FormFeed",t[t.CarriageReturn=13]="CarriageReturn",t[t.Space=32]="Space",t[t.ExclamationMark=33]="ExclamationMark",t[t.Number=35]="Number",t[t.Amp=38]="Amp",t[t.SingleQuote=39]="SingleQuote",t[t.DoubleQuote=34]="DoubleQuote",t[t.Dash=45]="Dash",t[t.Slash=47]="Slash",t[t.Zero=48]="Zero",t[t.Nine=57]="Nine",t[t.Semi=59]="Semi",t[t.Lt=60]="Lt",t[t.Eq=61]="Eq",t[t.Gt=62]="Gt",t[t.Questionmark=63]="Questionmark",t[t.UpperA=65]="UpperA",t[t.LowerA=97]="LowerA",t[t.UpperF=70]="UpperF",t[t.LowerF=102]="LowerF",t[t.UpperZ=90]="UpperZ",t[t.LowerZ=122]="LowerZ",t[t.LowerX=120]="LowerX",t[t.OpeningSquareBracket=91]="OpeningSquareBracket"})(x||(x={}));var h;(function(t){t[t.Text=1]="Text",t[t.BeforeTagName=2]="BeforeTagName",t[t.InTagName=3]="InTagName",t[t.InSelfClosingTag=4]="InSelfClosingTag",t[t.BeforeClosingTagName=5]="BeforeClosingTagName",t[t.InClosingTagName=6]="InClosingTagName",t[t.AfterClosingTagName=7]="AfterClosingTagName",t[t.BeforeAttributeName=8]="BeforeAttributeName",t[t.InAttributeName=9]="InAttributeName",t[t.AfterAttributeName=10]="AfterAttributeName",t[t.BeforeAttributeValue=11]="BeforeAttributeValue",t[t.InAttributeValueDq=12]="InAttributeValueDq",t[t.InAttributeValueSq=13]="InAttributeValueSq",t[t.InAttributeValueNq=14]="InAttributeValueNq",t[t.BeforeDeclaration=15]="BeforeDeclaration",t[t.InDeclaration=16]="InDeclaration",t[t.InProcessingInstruction=17]="InProcessingInstruction",t[t.BeforeComment=18]="BeforeComment",t[t.CDATASequence=19]="CDATASequence",t[t.InSpecialComment=20]="InSpecialComment",t[t.InCommentLike=21]="InCommentLike",t[t.BeforeSpecialS=22]="BeforeSpecialS",t[t.BeforeSpecialT=23]="BeforeSpecialT",t[t.SpecialStartSequence=24]="SpecialStartSequence",t[t.InSpecialTag=25]="InSpecialTag",t[t.InEntity=26]="InEntity"})(h||(h={}));function he(t){return t===x.Space||t===x.NewLine||t===x.Tab||t===x.FormFeed||t===x.CarriageReturn}function Et(t){return t===x.Slash||t===x.Gt||he(t)}function Ma(t){return t>=x.LowerA&&t<=x.LowerZ||t>=x.UpperA&&t<=x.UpperZ}var X;(function(t){t[t.NoValue=0]="NoValue",t[t.Unquoted=1]="Unquoted",t[t.Single=2]="Single",t[t.Double=3]="Double"})(X||(X={}));const P={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])};class Gs{constructor({xmlMode:e=!1,decodeEntities:u=!0},s){this.cbs=s,this.state=h.Text,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=h.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.xmlMode=e,this.decodeEntities=u,this.entityDecoder=new Vs(e?$s:Bs,(n,r)=>this.emitCodePoint(n,r))}reset(){this.state=h.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=h.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.index<this.buffer.length+this.offset&&this.parse()}stateText(e){e===x.Lt||!this.decodeEntities&&this.fastForwardTo(x.Lt)?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=h.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===x.Amp&&this.startEntity()}stateSpecialStartSequence(e){const u=this.sequenceIndex===this.currentSequence.length;if(!(u?Et(e):(e|32)===this.currentSequence[this.sequenceIndex]))this.isSpecial=!1;else if(!u){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=h.InTagName,this.stateInTagName(e)}stateInSpecialTag(e){if(this.sequenceIndex===this.currentSequence.length){if(e===x.Gt||he(e)){const u=this.index-this.currentSequence.length;if(this.sectionStart<u){const s=this.index;this.index=u,this.cbs.ontext(this.sectionStart,u),this.index=s}this.isSpecial=!1,this.sectionStart=u+2,this.stateInClosingTagName(e);return}this.sequenceIndex=0}(e|32)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:this.sequenceIndex===0?this.currentSequence===P.TitleEnd?this.decodeEntities&&e===x.Amp&&this.startEntity():this.fastForwardTo(x.Lt)&&(this.sequenceIndex=1):this.sequenceIndex=+(e===x.Lt)}stateCDATASequence(e){e===P.Cdata[this.sequenceIndex]?++this.sequenceIndex===P.Cdata.length&&(this.state=h.InCommentLike,this.currentSequence=P.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=h.InDeclaration,this.stateInDeclaration(e))}fastForwardTo(e){for(;++this.index<this.buffer.length+this.offset;)if(this.buffer.charCodeAt(this.index-this.offset)===e)return!0;return this.index=this.buffer.length+this.offset-1,!1}stateInCommentLike(e){e===this.currentSequence[this.sequenceIndex]?++this.sequenceIndex===this.currentSequence.length&&(this.currentSequence===P.CdataEnd?this.cbs.oncdata(this.sectionStart,this.index,2):this.cbs.oncomment(this.sectionStart,this.index,2),this.sequenceIndex=0,this.sectionStart=this.index+1,this.state=h.Text):this.sequenceIndex===0?this.fastForwardTo(this.currentSequence[0])&&(this.sequenceIndex=1):e!==this.currentSequence[this.sequenceIndex-1]&&(this.sequenceIndex=0)}isTagStartChar(e){return this.xmlMode?!Et(e):Ma(e)}startSpecial(e,u){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=u,this.state=h.SpecialStartSequence}stateBeforeTagName(e){if(e===x.ExclamationMark)this.state=h.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===x.Questionmark)this.state=h.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){const u=e|32;this.sectionStart=this.index,this.xmlMode?this.state=h.InTagName:u===P.ScriptEnd[2]?this.state=h.BeforeSpecialS:u===P.TitleEnd[2]?this.state=h.BeforeSpecialT:this.state=h.InTagName}else e===x.Slash?this.state=h.BeforeClosingTagName:(this.state=h.Text,this.stateText(e))}stateInTagName(e){Et(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=h.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateBeforeClosingTagName(e){he(e)||(e===x.Gt?this.state=h.Text:(this.state=this.isTagStartChar(e)?h.InClosingTagName:h.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(e){(e===x.Gt||he(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=h.AfterClosingTagName,this.stateAfterClosingTagName(e))}stateAfterClosingTagName(e){(e===x.Gt||this.fastForwardTo(x.Gt))&&(this.state=h.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(e){e===x.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=h.InSpecialTag,this.sequenceIndex=0):this.state=h.Text,this.sectionStart=this.index+1):e===x.Slash?this.state=h.InSelfClosingTag:he(e)||(this.state=h.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(e){e===x.Gt?(this.cbs.onselfclosingtag(this.index),this.state=h.Text,this.sectionStart=this.index+1,this.isSpecial=!1):he(e)||(this.state=h.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateInAttributeName(e){(e===x.Eq||Et(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=this.index,this.state=h.AfterAttributeName,this.stateAfterAttributeName(e))}stateAfterAttributeName(e){e===x.Eq?this.state=h.BeforeAttributeValue:e===x.Slash||e===x.Gt?(this.cbs.onattribend(X.NoValue,this.sectionStart),this.sectionStart=-1,this.state=h.BeforeAttributeName,this.stateBeforeAttributeName(e)):he(e)||(this.cbs.onattribend(X.NoValue,this.sectionStart),this.state=h.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(e){e===x.DoubleQuote?(this.state=h.InAttributeValueDq,this.sectionStart=this.index+1):e===x.SingleQuote?(this.state=h.InAttributeValueSq,this.sectionStart=this.index+1):he(e)||(this.sectionStart=this.index,this.state=h.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))}handleInAttributeValue(e,u){e===u||!this.decodeEntities&&this.fastForwardTo(u)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(u===x.DoubleQuote?X.Double:X.Single,this.index+1),this.state=h.BeforeAttributeName):this.decodeEntities&&e===x.Amp&&this.startEntity()}stateInAttributeValueDoubleQuotes(e){this.handleInAttributeValue(e,x.DoubleQuote)}stateInAttributeValueSingleQuotes(e){this.handleInAttributeValue(e,x.SingleQuote)}stateInAttributeValueNoQuotes(e){he(e)||e===x.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(X.Unquoted,this.index),this.state=h.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===x.Amp&&this.startEntity()}stateBeforeDeclaration(e){e===x.OpeningSquareBracket?(this.state=h.CDATASequence,this.sequenceIndex=0):this.state=e===x.Dash?h.BeforeComment:h.InDeclaration}stateInDeclaration(e){(e===x.Gt||this.fastForwardTo(x.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=h.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(e){(e===x.Gt||this.fastForwardTo(x.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=h.Text,this.sectionStart=this.index+1)}stateBeforeComment(e){e===x.Dash?(this.state=h.InCommentLike,this.currentSequence=P.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=h.InDeclaration}stateInSpecialComment(e){(e===x.Gt||this.fastForwardTo(x.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=h.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(e){const u=e|32;u===P.ScriptEnd[3]?this.startSpecial(P.ScriptEnd,4):u===P.StyleEnd[3]?this.startSpecial(P.StyleEnd,4):(this.state=h.InTagName,this.stateInTagName(e))}stateBeforeSpecialT(e){const u=e|32;u===P.TitleEnd[3]?this.startSpecial(P.TitleEnd,4):u===P.TextareaEnd[3]?this.startSpecial(P.TextareaEnd,4):(this.state=h.InTagName,this.stateInTagName(e))}startEntity(){this.baseState=this.state,this.state=h.InEntity,this.entityStart=this.index,this.entityDecoder.startEntity(this.xmlMode?re.Strict:this.baseState===h.Text||this.baseState===h.InSpecialTag?re.Legacy:re.Attribute)}stateInEntity(){const e=this.entityDecoder.write(this.buffer,this.index-this.offset);e>=0?(this.state=this.baseState,e===0&&(this.index=this.entityStart)):this.index=this.offset+this.buffer.length-1}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===h.Text||this.state===h.InSpecialTag&&this.sequenceIndex===0?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===h.InAttributeValueDq||this.state===h.InAttributeValueSq||this.state===h.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index<this.buffer.length+this.offset&&this.running}parse(){for(;this.shouldContinue();){const e=this.buffer.charCodeAt(this.index-this.offset);switch(this.state){case h.Text:{this.stateText(e);break}case h.SpecialStartSequence:{this.stateSpecialStartSequence(e);break}case h.InSpecialTag:{this.stateInSpecialTag(e);break}case h.CDATASequence:{this.stateCDATASequence(e);break}case h.InAttributeValueDq:{this.stateInAttributeValueDoubleQuotes(e);break}case h.InAttributeName:{this.stateInAttributeName(e);break}case h.InCommentLike:{this.stateInCommentLike(e);break}case h.InSpecialComment:{this.stateInSpecialComment(e);break}case h.BeforeAttributeName:{this.stateBeforeAttributeName(e);break}case h.InTagName:{this.stateInTagName(e);break}case h.InClosingTagName:{this.stateInClosingTagName(e);break}case h.BeforeTagName:{this.stateBeforeTagName(e);break}case h.AfterAttributeName:{this.stateAfterAttributeName(e);break}case h.InAttributeValueSq:{this.stateInAttributeValueSingleQuotes(e);break}case h.BeforeAttributeValue:{this.stateBeforeAttributeValue(e);break}case h.BeforeClosingTagName:{this.stateBeforeClosingTagName(e);break}case h.AfterClosingTagName:{this.stateAfterClosingTagName(e);break}case h.BeforeSpecialS:{this.stateBeforeSpecialS(e);break}case h.BeforeSpecialT:{this.stateBeforeSpecialT(e);break}case h.InAttributeValueNq:{this.stateInAttributeValueNoQuotes(e);break}case h.InSelfClosingTag:{this.stateInSelfClosingTag(e);break}case h.InDeclaration:{this.stateInDeclaration(e);break}case h.BeforeDeclaration:{this.stateBeforeDeclaration(e);break}case h.BeforeComment:{this.stateBeforeComment(e);break}case h.InProcessingInstruction:{this.stateInProcessingInstruction(e);break}case h.InEntity:{this.stateInEntity();break}}this.index++}this.cleanup()}finish(){this.state===h.InEntity&&(this.entityDecoder.end(),this.state=this.baseState),this.handleTrailingData(),this.cbs.onend()}handleTrailingData(){const e=this.buffer.length+this.offset;this.sectionStart>=e||(this.state===h.InCommentLike?this.currentSequence===P.CdataEnd?this.cbs.oncdata(this.sectionStart,e,0):this.cbs.oncomment(this.sectionStart,e,0):this.state===h.InTagName||this.state===h.BeforeAttributeName||this.state===h.BeforeAttributeValue||this.state===h.AfterAttributeName||this.state===h.InAttributeName||this.state===h.InAttributeValueSq||this.state===h.InAttributeValueDq||this.state===h.InAttributeValueNq||this.state===h.InClosingTagName||this.cbs.ontext(this.sectionStart,e))}emitCodePoint(e,u){this.baseState!==h.Text&&this.baseState!==h.InSpecialTag?(this.sectionStart<this.entityStart&&this.cbs.onattribdata(this.sectionStart,this.entityStart),this.sectionStart=this.entityStart+u,this.index=this.sectionStart-1,this.cbs.onattribentity(e)):(this.sectionStart<this.entityStart&&this.cbs.ontext(this.sectionStart,this.entityStart),this.sectionStart=this.entityStart+u,this.index=this.sectionStart-1,this.cbs.ontextentity(e,this.sectionStart))}}const Ge=new Set(["input","option","optgroup","select","button","datalist","textarea"]),A=new Set(["p"]),js=new Set(["thead","tbody"]),Ws=new Set(["dd","dt"]),zs=new Set(["rt","rp"]),Ia=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",A],["h1",A],["h2",A],["h3",A],["h4",A],["h5",A],["h6",A],["select",Ge],["input",Ge],["output",Ge],["button",Ge],["datalist",Ge],["textarea",Ge],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",Ws],["dt",Ws],["address",A],["article",A],["aside",A],["blockquote",A],["details",A],["div",A],["dl",A],["fieldset",A],["figcaption",A],["figure",A],["footer",A],["form",A],["header",A],["hr",A],["main",A],["nav",A],["ol",A],["pre",A],["section",A],["table",A],["ul",A],["rt",zs],["rp",zs],["tbody",js],["tfoot",js]]),Oa=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),Ks=new Set(["math","svg"]),Js=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]),_a=/\s|\//;let wt=class{constructor(e,u={}){var s,n,r,i,a,o;this.options=u,this.startIndex=0,this.endIndex=0,this.openTagStart=0,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.buffers=[],this.bufferOffset=0,this.writeIndex=0,this.ended=!1,this.cbs=e??{},this.htmlMode=!this.options.xmlMode,this.lowerCaseTagNames=(s=u.lowerCaseTags)!==null&&s!==void 0?s:this.htmlMode,this.lowerCaseAttributeNames=(n=u.lowerCaseAttributeNames)!==null&&n!==void 0?n:this.htmlMode,this.recognizeSelfClosing=(r=u.recognizeSelfClosing)!==null&&r!==void 0?r:!this.htmlMode,this.tokenizer=new((i=u.Tokenizer)!==null&&i!==void 0?i:Gs)(this.options,this),this.foreignContext=[!this.htmlMode],(o=(a=this.cbs).onparserinit)===null||o===void 0||o.call(a,this)}ontext(e,u){var s,n;const r=this.getSlice(e,u);this.endIndex=u-1,(n=(s=this.cbs).ontext)===null||n===void 0||n.call(s,r),this.startIndex=u}ontextentity(e,u){var s,n;this.endIndex=u-1,(n=(s=this.cbs).ontext)===null||n===void 0||n.call(s,mu(e)),this.startIndex=u}isVoidElement(e){return this.htmlMode&&Oa.has(e)}onopentagname(e,u){this.endIndex=u;let s=this.getSlice(e,u);this.lowerCaseTagNames&&(s=s.toLowerCase()),this.emitOpenTag(s)}emitOpenTag(e){var u,s,n,r;this.openTagStart=this.startIndex,this.tagname=e;const i=this.htmlMode&&Ia.get(e);if(i)for(;this.stack.length>0&&i.has(this.stack[0]);){const a=this.stack.shift();(s=(u=this.cbs).onclosetag)===null||s===void 0||s.call(u,a,!0)}this.isVoidElement(e)||(this.stack.unshift(e),this.htmlMode&&(Ks.has(e)?this.foreignContext.unshift(!0):Js.has(e)&&this.foreignContext.unshift(!1))),(r=(n=this.cbs).onopentagname)===null||r===void 0||r.call(n,e),this.cbs.onopentag&&(this.attribs={})}endOpenTag(e){var u,s;this.startIndex=this.openTagStart,this.attribs&&((s=(u=this.cbs).onopentag)===null||s===void 0||s.call(u,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1}onclosetag(e,u){var s,n,r,i,a,o,c,d;this.endIndex=u;let b=this.getSlice(e,u);if(this.lowerCaseTagNames&&(b=b.toLowerCase()),this.htmlMode&&(Ks.has(b)||Js.has(b))&&this.foreignContext.shift(),this.isVoidElement(b))this.htmlMode&&b==="br"&&((i=(r=this.cbs).onopentagname)===null||i===void 0||i.call(r,"br"),(o=(a=this.cbs).onopentag)===null||o===void 0||o.call(a,"br",{},!0),(d=(c=this.cbs).onclosetag)===null||d===void 0||d.call(c,"br",!1));else{const S=this.stack.indexOf(b);if(S!==-1)for(let y=0;y<=S;y++){const w=this.stack.shift();(n=(s=this.cbs).onclosetag)===null||n===void 0||n.call(s,w,y!==S)}else this.htmlMode&&b==="p"&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=u+1}onselfclosingtag(e){this.endIndex=e,this.recognizeSelfClosing||this.foreignContext[0]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)}closeCurrentTag(e){var u,s;const n=this.tagname;this.endOpenTag(e),this.stack[0]===n&&((s=(u=this.cbs).onclosetag)===null||s===void 0||s.call(u,n,!e),this.stack.shift())}onattribname(e,u){this.startIndex=e;const s=this.getSlice(e,u);this.attribname=this.lowerCaseAttributeNames?s.toLowerCase():s}onattribdata(e,u){this.attribvalue+=this.getSlice(e,u)}onattribentity(e){this.attribvalue+=mu(e)}onattribend(e,u){var s,n;this.endIndex=u,(n=(s=this.cbs).onattribute)===null||n===void 0||n.call(s,this.attribname,this.attribvalue,e===X.Double?'"':e===X.Single?"'":e===X.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(e){const u=e.search(_a);let s=u<0?e:e.substr(0,u);return this.lowerCaseTagNames&&(s=s.toLowerCase()),s}ondeclaration(e,u){this.endIndex=u;const s=this.getSlice(e,u);if(this.cbs.onprocessinginstruction){const n=this.getInstructionName(s);this.cbs.onprocessinginstruction(`!${n}`,`!${s}`)}this.startIndex=u+1}onprocessinginstruction(e,u){this.endIndex=u;const s=this.getSlice(e,u);if(this.cbs.onprocessinginstruction){const n=this.getInstructionName(s);this.cbs.onprocessinginstruction(`?${n}`,`?${s}`)}this.startIndex=u+1}oncomment(e,u,s){var n,r,i,a;this.endIndex=u,(r=(n=this.cbs).oncomment)===null||r===void 0||r.call(n,this.getSlice(e,u-s)),(a=(i=this.cbs).oncommentend)===null||a===void 0||a.call(i),this.startIndex=u+1}oncdata(e,u,s){var n,r,i,a,o,c,d,b,S,y;this.endIndex=u;const w=this.getSlice(e,u-s);!this.htmlMode||this.options.recognizeCDATA?((r=(n=this.cbs).oncdatastart)===null||r===void 0||r.call(n),(a=(i=this.cbs).ontext)===null||a===void 0||a.call(i,w),(c=(o=this.cbs).oncdataend)===null||c===void 0||c.call(o)):((b=(d=this.cbs).oncomment)===null||b===void 0||b.call(d,`[CDATA[${w}]]`),(y=(S=this.cbs).oncommentend)===null||y===void 0||y.call(S)),this.startIndex=u+1}onend(){var e,u;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let s=0;s<this.stack.length;s++)this.cbs.onclosetag(this.stack[s],!0)}(u=(e=this.cbs).onend)===null||u===void 0||u.call(e)}reset(){var e,u,s,n;(u=(e=this.cbs).onreset)===null||u===void 0||u.call(e),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,(n=(s=this.cbs).onparserinit)===null||n===void 0||n.call(s,this),this.buffers.length=0,this.foreignContext.length=0,this.foreignContext.unshift(!this.htmlMode),this.bufferOffset=0,this.writeIndex=0,this.ended=!1}parseComplete(e){this.reset(),this.end(e)}getSlice(e,u){for(;e-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();let s=this.buffers[0].slice(e-this.bufferOffset,u-this.bufferOffset);for(;u-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),s+=this.buffers[0].slice(0,u-this.bufferOffset);return s}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(e){var u,s;if(this.ended){(s=(u=this.cbs).onerror)===null||s===void 0||s.call(u,new Error(".write() after done!"));return}this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++)}end(e){var u,s;if(this.ended){(s=(u=this.cbs).onerror)===null||s===void 0||s.call(u,new Error(".end() after done!"));return}e&&this.write(e),this.ended=!0,this.tokenizer.end()}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex<this.buffers.length;)this.tokenizer.write(this.buffers[this.writeIndex++]);this.ended&&this.tokenizer.end()}parseChunk(e){this.write(e)}done(e){this.end(e)}};var T;(function(t){t.Root="root",t.Text="text",t.Directive="directive",t.Comment="comment",t.Script="script",t.Style="style",t.Tag="tag",t.CDATA="cdata",t.Doctype="doctype"})(T||(T={}));function Qs(t){return t.type===T.Tag||t.type===T.Script||t.type===T.Style}const Zs=T.Root,Ys=T.Text,Xs=T.Directive,en=T.Comment,tn=T.Script,un=T.Style,sn=T.Tag,nn=T.CDATA,rn=T.Doctype;var qa=Object.freeze({__proto__:null,CDATA:nn,Comment:en,Directive:Xs,Doctype:rn,get ElementType(){return T},Root:Zs,Script:tn,Style:un,Tag:sn,Text:Ys,isTag:Qs});let an=class{constructor(){this.parent=null,this.prev=null,this.next=null,this.startIndex=null,this.endIndex=null}get parentNode(){return this.parent}set parentNode(e){this.parent=e}get previousSibling(){return this.prev}set previousSibling(e){this.prev=e}get nextSibling(){return this.next}set nextSibling(e){this.next=e}cloneNode(e=!1){return fn(this,e)}};class xu extends an{constructor(e){super(),this.data=e}get nodeValue(){return this.data}set nodeValue(e){this.data=e}}let yu=class extends xu{constructor(){super(...arguments),this.type=T.Text}get nodeType(){return 3}},cn=class extends xu{constructor(){super(...arguments),this.type=T.Comment}get nodeType(){return 8}};class on extends xu{constructor(e,u){super(u),this.name=e,this.type=T.Directive}get nodeType(){return 1}}class Cu extends an{constructor(e){super(),this.children=e}get firstChild(){var e;return(e=this.children[0])!==null&&e!==void 0?e:null}get lastChild(){return this.children.length>0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(e){this.children=e}}class ln extends Cu{constructor(){super(...arguments),this.type=T.CDATA}get nodeType(){return 4}}let Eu=class extends Cu{constructor(){super(...arguments),this.type=T.Root}get nodeType(){return 9}},dn=class extends Cu{constructor(e,u,s=[],n=e==="script"?T.Script:e==="style"?T.Style:T.Tag){super(s),this.name=e,this.attribs=u,this.type=n}get nodeType(){return 1}get tagName(){return this.name}set tagName(e){this.name=e}get attributes(){return Object.keys(this.attribs).map(e=>{var u,s;return{name:e,value:this.attribs[e],namespace:(u=this["x-attribsNamespace"])===null||u===void 0?void 0:u[e],prefix:(s=this["x-attribsPrefix"])===null||s===void 0?void 0:s[e]}})}};function z(t){return Qs(t)}function vt(t){return t.type===T.CDATA}function Le(t){return t.type===T.Text}function wu(t){return t.type===T.Comment}function Pa(t){return t.type===T.Directive}function hn(t){return t.type===T.Root}function Ee(t){return Object.prototype.hasOwnProperty.call(t,"children")}function fn(t,e=!1){let u;if(Le(t))u=new yu(t.data);else if(wu(t))u=new cn(t.data);else if(z(t)){const s=e?vu(t.children):[],n=new dn(t.name,{...t.attribs},s);s.forEach(r=>r.parent=n),t.namespace!=null&&(n.namespace=t.namespace),t["x-attribsNamespace"]&&(n["x-attribsNamespace"]={...t["x-attribsNamespace"]}),t["x-attribsPrefix"]&&(n["x-attribsPrefix"]={...t["x-attribsPrefix"]}),u=n}else if(vt(t)){const s=e?vu(t.children):[],n=new ln(s);s.forEach(r=>r.parent=n),u=n}else if(hn(t)){const s=e?vu(t.children):[],n=new Eu(s);s.forEach(r=>r.parent=n),t["x-mode"]&&(n["x-mode"]=t["x-mode"]),u=n}else if(Pa(t)){const s=new on(t.name,t.data);t["x-name"]!=null&&(s["x-name"]=t["x-name"],s["x-publicId"]=t["x-publicId"],s["x-systemId"]=t["x-systemId"]),u=s}else throw new Error(`Not implemented yet: ${t.type}`);return u.startIndex=t.startIndex,u.endIndex=t.endIndex,t.sourceCodeLocation!=null&&(u.sourceCodeLocation=t.sourceCodeLocation),u}function vu(t){const e=t.map(u=>fn(u,!0));for(let u=1;u<e.length;u++)e[u].prev=e[u-1],e[u-1].next=e[u];return e}const bn={withStartIndices:!1,withEndIndices:!1,xmlMode:!1};class nt{constructor(e,u,s){this.dom=[],this.root=new Eu(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,typeof u=="function"&&(s=u,u=bn),typeof e=="object"&&(u=e,e=void 0),this.callback=e??null,this.options=u??bn,this.elementCB=s??null}onparserinit(e){this.parser=e}onreset(){this.dom=[],this.root=new Eu(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null}onend(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))}onerror(e){this.handleCallback(e)}onclosetag(){this.lastNode=null;const e=this.tagStack.pop();this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(e)}onopentag(e,u){const s=this.options.xmlMode?T.Tag:void 0,n=new dn(e,u,void 0,s);this.addNode(n),this.tagStack.push(n)}ontext(e){const{lastNode:u}=this;if(u&&u.type===T.Text)u.data+=e,this.options.withEndIndices&&(u.endIndex=this.parser.endIndex);else{const s=new yu(e);this.addNode(s),this.lastNode=s}}oncomment(e){if(this.lastNode&&this.lastNode.type===T.Comment){this.lastNode.data+=e;return}const u=new cn(e);this.addNode(u),this.lastNode=u}oncommentend(){this.lastNode=null}oncdatastart(){const e=new yu(""),u=new ln([e]);this.addNode(u),e.parent=u,this.lastNode=e}oncdataend(){this.lastNode=null}onprocessinginstruction(e,u){const s=new on(e,u);this.addNode(s)}handleCallback(e){if(typeof this.callback=="function")this.callback(e,this.dom);else if(e)throw e}addNode(e){const u=this.tagStack[this.tagStack.length-1],s=u.children[u.children.length-1];this.options.withStartIndices&&(e.startIndex=this.parser.startIndex),this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),u.children.push(e),s&&(e.prev=s,s.next=e),e.parent=u,this.lastNode=null}}const pn=/["&'<>$\x80-\uFFFF]/g,Fa=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),Ha=String.prototype.codePointAt!=null?(t,e)=>t.codePointAt(e):(t,e)=>(t.charCodeAt(e)&64512)===55296?(t.charCodeAt(e)-55296)*1024+t.charCodeAt(e+1)-56320+65536:t.charCodeAt(e);function gn(t){let e="",u=0,s;for(;(s=pn.exec(t))!==null;){const n=s.index,r=t.charCodeAt(n),i=Fa.get(r);i!==void 0?(e+=t.substring(u,n)+i,u=n+1):(e+=`${t.substring(u,n)}&#x${Ha(t,n).toString(16)};`,u=pn.lastIndex+=+((r&64512)===55296))}return e+t.substr(u)}function mn(t,e){return function(s){let n,r=0,i="";for(;n=t.exec(s);)r!==n.index&&(i+=s.substring(r,n.index)),i+=e.get(n[0].charCodeAt(0)),r=n.index+1;return i+s.substring(r)}}const Ba=mn(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),$a=mn(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])),Va=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(t=>[t.toLowerCase(),t])),Ua=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(t=>[t.toLowerCase(),t])),Ga=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function ja(t){return t.replace(/"/g,""")}function Wa(t,e){var u;if(!t)return;const s=((u=e.encodeEntities)!==null&&u!==void 0?u:e.decodeEntities)===!1?ja:e.xmlMode||e.encodeEntities!=="utf8"?gn:Ba;return Object.keys(t).map(n=>{var r,i;const a=(r=t[n])!==null&&r!==void 0?r:"";return e.xmlMode==="foreign"&&(n=(i=Ua.get(n))!==null&&i!==void 0?i:n),!e.emptyAttrs&&!e.xmlMode&&a===""?n:`${n}="${s(a)}"`}).join(" ")}const Sn=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);function Tu(t,e={}){const u="length"in t?t:[t];let s="";for(let n=0;n<u.length;n++)s+=za(u[n],e);return s}function za(t,e){switch(t.type){case Zs:return Tu(t.children,e);case rn:case Xs:return Za(t);case en:return e0(t);case nn:return Xa(t);case tn:case un:case sn:return Qa(t,e);case Ys:return Ya(t,e)}}const Ka=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),Ja=new Set(["svg","math"]);function Qa(t,e){var u;e.xmlMode==="foreign"&&(t.name=(u=Va.get(t.name))!==null&&u!==void 0?u:t.name,t.parent&&Ka.has(t.parent.name)&&(e={...e,xmlMode:!1})),!e.xmlMode&&Ja.has(t.name)&&(e={...e,xmlMode:"foreign"});let s=`<${t.name}`;const n=Wa(t.attribs,e);return n&&(s+=` ${n}`),t.children.length===0&&(e.xmlMode?e.selfClosingTags!==!1:e.selfClosingTags&&Sn.has(t.name))?(e.xmlMode||(s+=" "),s+="/>"):(s+=">",t.children.length>0&&(s+=Tu(t.children,e)),(e.xmlMode||!Sn.has(t.name))&&(s+=`</${t.name}>`)),s}function Za(t){return`<${t.data}>`}function Ya(t,e){var u;let s=t.data||"";return((u=e.encodeEntities)!==null&&u!==void 0?u:e.decodeEntities)!==!1&&!(!e.xmlMode&&t.parent&&Ga.has(t.parent.name))&&(s=e.xmlMode||e.encodeEntities!=="utf8"?gn(s):$a(s)),s}function Xa(t){return`<![CDATA[${t.children[0].data}]]>`}function e0(t){return`<!--${t.data}-->`}function xn(t,e){return Tu(t,e)}function t0(t,e){return Ee(t)?t.children.map(u=>xn(u,e)).join(""):""}function Tt(t){return Array.isArray(t)?t.map(Tt).join(""):z(t)?t.name==="br"?` -`:Tt(t.children):vt(t)?Tt(t.children):Le(t)?t.data:""}function Nt(t){return Array.isArray(t)?t.map(Nt).join(""):Ee(t)&&!wu(t)?Nt(t.children):Le(t)?t.data:""}function Nu(t){return Array.isArray(t)?t.map(Nu).join(""):Ee(t)&&(t.type===T.Tag||vt(t))?Nu(t.children):Le(t)?t.data:""}function yn(t){return Ee(t)?t.children:[]}function Cn(t){return t.parent||null}function u0(t){const e=Cn(t);if(e!=null)return yn(e);const u=[t];let{prev:s,next:n}=t;for(;s!=null;)u.unshift(s),{prev:s}=s;for(;n!=null;)u.push(n),{next:n}=n;return u}function s0(t,e){var u;return(u=t.attribs)===null||u===void 0?void 0:u[e]}function n0(t,e){return t.attribs!=null&&Object.prototype.hasOwnProperty.call(t.attribs,e)&&t.attribs[e]!=null}function r0(t){return t.name}function i0(t){let{next:e}=t;for(;e!==null&&!z(e);)({next:e}=e);return e}function a0(t){let{prev:e}=t;for(;e!==null&&!z(e);)({prev:e}=e);return e}function rt(t){if(t.prev&&(t.prev.next=t.next),t.next&&(t.next.prev=t.prev),t.parent){const e=t.parent.children,u=e.lastIndexOf(t);u>=0&&e.splice(u,1)}t.next=null,t.prev=null,t.parent=null}function c0(t,e){const u=e.prev=t.prev;u&&(u.next=e);const s=e.next=t.next;s&&(s.prev=e);const n=e.parent=t.parent;if(n){const r=n.children;r[r.lastIndexOf(t)]=e,t.parent=null}}function o0(t,e){if(rt(e),e.next=null,e.parent=t,t.children.push(e)>1){const u=t.children[t.children.length-2];u.next=e,e.prev=u}else e.prev=null}function l0(t,e){rt(e);const{parent:u}=t,s=t.next;if(e.next=s,e.prev=t,t.next=e,e.parent=u,s){if(s.prev=e,u){const n=u.children;n.splice(n.lastIndexOf(s),0,e)}}else u&&u.children.push(e)}function d0(t,e){if(rt(e),e.parent=t,e.prev=null,t.children.unshift(e)!==1){const u=t.children[1];u.prev=e,e.next=u}else e.next=null}function h0(t,e){rt(e);const{parent:u}=t;if(u){const s=u.children;s.splice(s.indexOf(t),0,e)}t.prev&&(t.prev.next=e),e.parent=u,e.prev=t.prev,e.next=t,t.prev=e}function At(t,e,u=!0,s=1/0){return En(t,Array.isArray(e)?e:[e],u,s)}function En(t,e,u,s){const n=[],r=[e],i=[0];for(;;){if(i[0]>=r[0].length){if(i.length===1)return n;r.shift(),i.shift();continue}const a=r[0][i[0]++];if(t(a)&&(n.push(a),--s<=0))return n;u&&Ee(a)&&a.children.length>0&&(i.unshift(0),r.unshift(a.children))}}function f0(t,e){return e.find(t)}function Au(t,e,u=!0){let s=null;for(let n=0;n<e.length&&!s;n++){const r=e[n];if(z(r))t(r)?s=r:u&&r.children.length>0&&(s=Au(t,r.children,!0));else continue}return s}function wn(t,e){return e.some(u=>z(u)&&(t(u)||wn(t,u.children)))}function b0(t,e){const u=[],s=[e],n=[0];for(;;){if(n[0]>=s[0].length){if(s.length===1)return u;s.shift(),n.shift();continue}const r=s[0][n[0]++];z(r)&&(t(r)&&u.push(r),r.children.length>0&&(n.unshift(0),s.unshift(r.children)))}}const Rt={tag_name(t){return typeof t=="function"?e=>z(e)&&t(e.name):t==="*"?z:e=>z(e)&&e.name===t},tag_type(t){return typeof t=="function"?e=>t(e.type):e=>e.type===t},tag_contains(t){return typeof t=="function"?e=>Le(e)&&t(e.data):e=>Le(e)&&e.data===t}};function vn(t,e){return typeof e=="function"?u=>z(u)&&e(u.attribs[t]):u=>z(u)&&u.attribs[t]===e}function p0(t,e){return u=>t(u)||e(u)}function Tn(t){const e=Object.keys(t).map(u=>{const s=t[u];return Object.prototype.hasOwnProperty.call(Rt,u)?Rt[u](s):vn(u,s)});return e.length===0?null:e.reduce(p0)}function g0(t,e){const u=Tn(t);return u?u(e):!0}function m0(t,e,u,s=1/0){const n=Tn(t);return n?At(n,e,u,s):[]}function S0(t,e,u=!0){return Array.isArray(e)||(e=[e]),Au(vn("id",t),e,u)}function je(t,e,u=!0,s=1/0){return At(Rt.tag_name(t),e,u,s)}function x0(t,e,u=!0,s=1/0){return At(Rt.tag_type(t),e,u,s)}function y0(t){let e=t.length;for(;--e>=0;){const u=t[e];if(e>0&&t.lastIndexOf(u,e-1)>=0){t.splice(e,1);continue}for(let s=u.parent;s;s=s.parent)if(t.includes(s)){t.splice(e,1);break}}return t}var Q;(function(t){t[t.DISCONNECTED=1]="DISCONNECTED",t[t.PRECEDING=2]="PRECEDING",t[t.FOLLOWING=4]="FOLLOWING",t[t.CONTAINS=8]="CONTAINS",t[t.CONTAINED_BY=16]="CONTAINED_BY"})(Q||(Q={}));function Nn(t,e){const u=[],s=[];if(t===e)return 0;let n=Ee(t)?t:t.parent;for(;n;)u.unshift(n),n=n.parent;for(n=Ee(e)?e:e.parent;n;)s.unshift(n),n=n.parent;const r=Math.min(u.length,s.length);let i=0;for(;i<r&&u[i]===s[i];)i++;if(i===0)return Q.DISCONNECTED;const a=u[i-1],o=a.children,c=u[i],d=s[i];return o.indexOf(c)>o.indexOf(d)?a===e?Q.FOLLOWING|Q.CONTAINED_BY:Q.FOLLOWING:a===t?Q.PRECEDING|Q.CONTAINS:Q.PRECEDING}function C0(t){return t=t.filter((e,u,s)=>!s.includes(e,u+1)),t.sort((e,u)=>{const s=Nn(e,u);return s&Q.PRECEDING?-1:s&Q.FOLLOWING?1:0}),t}function Ru(t){const e=Dt(N0,t);return e?e.name==="feed"?E0(e):w0(e):null}function E0(t){var e;const u=t.children,s={type:"atom",items:je("entry",u).map(i=>{var a;const{children:o}=i,c={media:An(o)};j(c,"id","id",o),j(c,"title","title",o);const d=(a=Dt("link",o))===null||a===void 0?void 0:a.attribs.href;d&&(c.link=d);const b=we("summary",o)||we("content",o);b&&(c.description=b);const S=we("updated",o);return S&&(c.pubDate=new Date(S)),c})};j(s,"id","id",u),j(s,"title","title",u);const n=(e=Dt("link",u))===null||e===void 0?void 0:e.attribs.href;n&&(s.link=n),j(s,"description","subtitle",u);const r=we("updated",u);return r&&(s.updated=new Date(r)),j(s,"author","email",u,!0),s}function w0(t){var e,u;const s=(u=(e=Dt("channel",t.children))===null||e===void 0?void 0:e.children)!==null&&u!==void 0?u:[],n={type:t.name.substr(0,3),id:"",items:je("item",t.children).map(i=>{const{children:a}=i,o={media:An(a)};j(o,"id","guid",a),j(o,"title","title",a),j(o,"link","link",a),j(o,"description","description",a);const c=we("pubDate",a)||we("dc:date",a);return c&&(o.pubDate=new Date(c)),o})};j(n,"title","title",s),j(n,"link","link",s),j(n,"description","description",s);const r=we("lastBuildDate",s);return r&&(n.updated=new Date(r)),j(n,"author","managingEditor",s,!0),n}const v0=["url","type","lang"],T0=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];function An(t){return je("media:content",t).map(e=>{const{attribs:u}=e,s={medium:u.medium,isDefault:!!u.isDefault};for(const n of v0)u[n]&&(s[n]=u[n]);for(const n of T0)u[n]&&(s[n]=parseInt(u[n],10));return u.expression&&(s.expression=u.expression),s})}function Dt(t,e){return je(t,e,!0,1)[0]}function we(t,e,u=!1){return Nt(je(t,e,u,1)).trim()}function j(t,e,u,s,n=!1){const r=we(u,s,n);r&&(t[e]=r)}function N0(t){return t==="rss"||t==="feed"||t==="rdf:RDF"}var Du=Object.freeze({__proto__:null,get DocumentPosition(){return Q},append:l0,appendChild:o0,compareDocumentPosition:Nn,existsOne:wn,filter:At,find:En,findAll:b0,findOne:Au,findOneChild:f0,getAttributeValue:s0,getChildren:yn,getElementById:S0,getElements:m0,getElementsByTagName:je,getElementsByTagType:x0,getFeed:Ru,getInnerHTML:t0,getName:r0,getOuterHTML:xn,getParent:Cn,getSiblings:u0,getText:Tt,hasAttrib:n0,hasChildren:Ee,innerText:Nu,isCDATA:vt,isComment:wu,isDocument:hn,isTag:z,isText:Le,nextElementSibling:i0,prepend:h0,prependChild:d0,prevElementSibling:a0,removeElement:rt,removeSubsets:y0,replaceElement:c0,testElement:g0,textContent:Nt,uniqueSort:C0});function Rn(t,e){const u=new nt(void 0,e);return new wt(u,e).end(t),u.root}function Dn(t,e){return Rn(t,e).children}function A0(t,e,u){const s=new nt(n=>t(n,s.root),e,u);return new wt(s,e)}function R0(t,e,u){const s=new nt(t,e,u);return new wt(s,e)}const D0={xmlMode:!0};function k0(t,e=D0){return Ru(Dn(t,e))}var L0=Object.freeze({__proto__:null,DefaultHandler:nt,DomHandler:nt,DomUtils:Du,ElementType:qa,Parser:wt,get QuoteType(){return X},Tokenizer:Gs,createDocumentStream:A0,createDomStream:R0,getFeed:Ru,parseDOM:Dn,parseDocument:Rn,parseFeed:k0});const fe=-1,v=1,q=2,F=3,ie=4,ae=8,ve=9,Me=10,ee=11,M0=new Set(["ARTICLE","ASIDE","BLOCKQUOTE","BODY","BR","BUTTON","CANVAS","CAPTION","COL","COLGROUP","DD","DIV","DL","DT","EMBED","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","LI","UL","OL","P"]),kn=-1,Ln=1,Mn=4,In=8,On=128,I0=1,_n=2,qn=4,O0=8,_0=16,q0=32,kt="http://www.w3.org/2000/svg",{assign:P0,create:F0,defineProperties:H0,entries:B0,getOwnPropertyDescriptors:No,keys:$0,setPrototypeOf:$}=Object,Ie=String,K=t=>t.nodeType===v?t[m]:t,Te=({ownerDocument:t})=>t[Ve].ignoreCase,te=(t,e)=>{t[p]=e,e[D]=t},ku=(t,e,u)=>{te(t,e),te(K(e),u)},V0=(t,e,u,s)=>{te(t,e),te(K(u),s)},We=(t,e,u)=>{te(t,e),te(e,u)},Lu=({localName:t,ownerDocument:e})=>e[Ve].ignoreCase?t.toUpperCase():t,Pn=(t,e)=>{t&&(t[p]=e),e&&(e[D]=t)},Ne=new WeakMap;let Lt=!1;const ze=new WeakMap,Oe=new WeakMap,Mt=(t,e,u,s)=>{Lt&&Oe.has(t)&&t.attributeChangedCallback&&t.constructor.observedAttributes.includes(e)&&t.attributeChangedCallback(e,u,s)},Fn=(t,e)=>u=>{if(Oe.has(u)){const s=Oe.get(u);s.connected!==e&&u.isConnected===e&&(s.connected=e,t in u&&u[t]())}},Hn=Fn("connectedCallback",!0),Mu=t=>{if(Lt){Hn(t),Ne.has(t)&&(t=Ne.get(t).shadowRoot);let{[p]:e,[m]:u}=t;for(;e!==u;)e.nodeType===v&&Hn(e),e=e[p]}},Bn=Fn("disconnectedCallback",!1),U0=t=>{if(Lt){Bn(t),Ne.has(t)&&(t=Ne.get(t).shadowRoot);let{[p]:e,[m]:u}=t;for(;e!==u;)e.nodeType===v&&Bn(e),e=e[p]}};class G0{constructor(e){this.ownerDocument=e,this.registry=new Map,this.waiting=new Map,this.active=!1}define(e,u,s={}){const{ownerDocument:n,registry:r,waiting:i}=this;if(r.has(e))throw new Error("unable to redefine "+e);if(ze.has(u))throw new Error("unable to redefine the same class: "+u);this.active=Lt=!0;const{extends:a}=s;ze.set(u,{ownerDocument:n,options:{is:a?e:""},localName:a||e});const o=a?c=>c.localName===a&&c.getAttribute("is")===e:c=>c.localName===e;if(r.set(e,{Class:u,check:o}),i.has(e)){for(const c of i.get(e))c(u);i.delete(e)}n.querySelectorAll(a?`${a}[is="${e}"]`:e).forEach(this.upgrade,this)}upgrade(e){if(Oe.has(e))return;const{ownerDocument:u,registry:s}=this,n=e.getAttribute("is")||e.localName;if(s.has(n)){const{Class:r,check:i}=s.get(n);if(i(e)){const{attributes:a,isConnected:o}=e;for(const d of a)e.removeAttributeNode(d);const c=B0(e);for(const[d]of c)delete e[d];$(e,r.prototype),u[st]={element:e,values:c},new r(u,n),Oe.set(e,{connected:o});for(const d of a)e.setAttributeNode(d);o&&e.connectedCallback&&e.connectedCallback()}}}whenDefined(e){const{registry:u,waiting:s}=this;return new Promise(n=>{u.has(e)?n(u.get(e).Class):(s.has(e)||s.set(e,[]),s.get(e).push(n))})}get(e){const u=this.registry.get(e);return u&&u.Class}getName(e){if(ze.has(e)){const{localName:u}=ze.get(e);return u}return null}}const{Parser:j0}=L0,_e=(t,e,u)=>{const s=t[m];return e.parentNode=t,ku(s[D],e,s),u&&e.nodeType===v&&Mu(e),e},W0=(t,e,u,s,n)=>{u[R]=s,u.ownerElement=t,We(e[D],u,e),u.name==="class"&&(t.className=s),n&&Mt(t,u.name,null,s)},$n=(t,e,u)=>{const{active:s,registry:n}=t[Z];let r=t,i=null,a=!1;const o=new j0({onprocessinginstruction(c,d){c.toLowerCase()==="!doctype"&&(t.doctype=d.slice(c.length).trim())},onopentag(c,d){let b=!0;if(e){if(i)r=_e(r,t.createElementNS(kt,c),s),r.ownerSVGElement=i,b=!1;else if(c==="svg"||c==="SVG")i=t.createElementNS(kt,c),r=_e(r,i,s),b=!1;else if(s){const y=c.includes("-")?c:d.is||"";if(y&&n.has(y)){const{Class:w}=n.get(y);r=_e(r,new w,s),delete d.is,b=!1}}}b&&(r=_e(r,t.createElement(c),!1));let S=r[m];for(const y of $0(d))W0(r,S,t.createAttribute(y),d[y],s)},oncomment(c){_e(r,t.createComment(c),s)},ontext(c){a?_e(r,t.createCDATASection(c),s):_e(r,t.createTextNode(c),s)},oncdatastart(){a=!0},oncdataend(){a=!1},onclosetag(){e&&r===i&&(i=null),r=r.parentNode}},{lowerCaseAttributeNames:!1,decodeEntities:!0,xmlMode:!e});return o.write(u),o.end(),t},Ke=new Map,L=(t,e)=>{for(const u of[].concat(t))Ke.set(u,e),Ke.set(u.toUpperCase(),e)},z0=globalThis.performance,Vn=({[p]:t,[m]:e},u)=>{for(;t!==e;){switch(t.nodeType){case q:Un(t,u);break;case F:case ae:case ie:Gn(t,u);break;case v:Wn(t,u),t=K(t);break;case Me:jn(t,u);break}t=t[p]}const s=u.length-1,n=u[s];typeof n=="number"&&n<0?u[s]+=fe:u.push(fe)},Un=(t,e)=>{e.push(q,t.name);const u=t[R].trim();u&&e.push(u)},Gn=(t,e)=>{const u=t[R];u.trim()&&e.push(t.nodeType,u)},K0=(t,e)=>{e.push(t.nodeType),Vn(t,e)},jn=({name:t,publicId:e,systemId:u},s)=>{s.push(Me,t),e&&s.push(e),u&&s.push(u)},Wn=(t,e)=>{e.push(v,t.localName),Vn(t,e)},zn=(t,e,u,s,n,r)=>({type:t,target:e,addedNodes:u,removedNodes:s,attributeName:n,oldValue:r}),Kn=(t,e,u,s,n,r)=>{if(!s||s.includes(u)){const{callback:i,records:a,scheduled:o}=t;a.push(zn("attributes",e,[],[],u,n?r:void 0)),o||(t.scheduled=!0,Promise.resolve().then(()=>{t.scheduled=!1,i(a.splice(0),t)}))}},Iu=(t,e,u)=>{const{ownerDocument:s}=t,{active:n,observers:r}=s[ye];if(n){for(const i of r)for(const[a,{childList:o,subtree:c,attributes:d,attributeFilter:b,attributeOldValue:S}]of i.nodes)if(o){if(c&&(a===s||a.contains(t))||!c&&a.children.includes(t)){Kn(i,t,e,b,S,u);break}}else if(d&&a===t){Kn(i,t,e,b,S,u);break}}},it=(t,e)=>{const{ownerDocument:u}=t,{active:s,observers:n}=u[ye];if(s){for(const r of n)for(const[i,{subtree:a,childList:o,characterData:c}]of r.nodes)if(o&&(e&&(i===e||a&&i.contains(e))||!e&&(a&&(i===u||i.contains(t))||!a&&i[c?"childNodes":"children"].includes(t)))){const{callback:d,records:b,scheduled:S}=r;b.push(zn("childList",i,e?[]:[t],e?[t]:[])),S||(r.scheduled=!0,Promise.resolve().then(()=>{r.scheduled=!1,d(b.splice(0),r)}));break}}};class J0{constructor(e){const u=new Set;this.observers=u,this.active=!1,this.class=class{constructor(n){this.callback=n,this.nodes=new Map,this.records=[],this.scheduled=!1}disconnect(){this.records.splice(0),this.nodes.clear(),u.delete(this),e[ye].active=!!u.size}observe(n,r={subtree:!1,childList:!1,attributes:!1,attributeFilter:null,attributeOldValue:!1,characterData:!1}){("attributeOldValue"in r||"attributeFilter"in r)&&(r.attributes=!0),r.childList=!!r.childList,r.subtree=!!r.subtree,this.nodes.set(n,r),u.add(this),e[ye].active=!0}takeRecords(){return this.records.splice(0)}}}}const Q0=new Set(["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","class","contenteditable","controls","default","defer","disabled","draggable","formnovalidate","hidden","id","ismap","itemscope","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected","style","truespeed"]),Ou=(t,e)=>{const{[R]:u,name:s}=e;e.ownerElement=t,We(t,e,t[p]),s==="class"&&(t.className=u),Iu(t,s,null),Mt(t,s,null,u)},Jn=(t,e)=>{const{[R]:u,name:s}=e;te(e[D],e[p]),e.ownerElement=e[D]=e[p]=null,s==="class"&&(t[$e]=null),Iu(t,s,u),Mt(t,s,u,null)},N={get(t,e){return t.hasAttribute(e)},set(t,e,u){u?t.setAttribute(e,""):t.removeAttribute(e)}},Ae={get(t,e){return parseFloat(t.getAttribute(e)||0)},set(t,e,u){t.setAttribute(e,u)}},f={get(t,e){return t.getAttribute(e)||""},set(t,e,u){t.setAttribute(e,u)}},It=new WeakMap;function Z0(t,e){return typeof e=="function"?e.call(t.target,t):e.handleEvent(t),t._stopImmediatePropagationFlag}function Y0({currentTarget:t,target:e}){const u=It.get(t);if(u&&u.has(this.type)){const s=u.get(this.type);t===e?this.eventPhase=this.AT_TARGET:this.eventPhase=this.BUBBLING_PHASE,this.currentTarget=t,this.target=e;for(const[n,r]of s)if(r&&r.once&&s.delete(n),Z0(this,n))break;return delete this.currentTarget,delete this.target,this.cancelBubble}}class Ot{constructor(){It.set(this,new Map)}_getParent(){return null}addEventListener(e,u,s){const n=It.get(this);n.has(e)||n.set(e,new Map),n.get(e).set(u,s)}removeEventListener(e,u){const s=It.get(this);if(s.has(e)){const n=s.get(e);n.delete(u)&&!n.size&&s.delete(e)}}dispatchEvent(e){let u=this;for(e.eventPhase=e.CAPTURING_PHASE;u;)u.dispatchEvent&&e._path.push({currentTarget:u,target:this}),u=e.bubbles&&u._getParent&&u._getParent();return e._path.some(Y0,e),e._path=[],e.eventPhase=e.NONE,!e.defaultPrevented}}class ue extends Array{item(e){return e<this.length?this[e]:null}}const Qn=({parentNode:t})=>{let e=0;for(;t;)e++,t=t.parentNode;return e};let qe=class extends Ot{static get ELEMENT_NODE(){return v}static get ATTRIBUTE_NODE(){return q}static get TEXT_NODE(){return F}static get CDATA_SECTION_NODE(){return ie}static get COMMENT_NODE(){return ae}static get DOCUMENT_NODE(){return ve}static get DOCUMENT_FRAGMENT_NODE(){return ee}static get DOCUMENT_TYPE_NODE(){return Me}constructor(e,u,s){super(),this.ownerDocument=e,this.localName=u,this.nodeType=s,this.parentNode=null,this[p]=null,this[D]=null}get ELEMENT_NODE(){return v}get ATTRIBUTE_NODE(){return q}get TEXT_NODE(){return F}get CDATA_SECTION_NODE(){return ie}get COMMENT_NODE(){return ae}get DOCUMENT_NODE(){return ve}get DOCUMENT_FRAGMENT_NODE(){return ee}get DOCUMENT_TYPE_NODE(){return Me}get baseURI(){const e=this.nodeType===ve?this:this.ownerDocument;if(e){const u=e.querySelector("base");if(u)return u.getAttribute("href");const{location:s}=e.defaultView;if(s)return s.href}return null}get isConnected(){return!1}get nodeName(){return this.localName}get parentElement(){return null}get previousSibling(){return null}get previousElementSibling(){return null}get nextSibling(){return null}get nextElementSibling(){return null}get childNodes(){return new ue}get firstChild(){return null}get lastChild(){return null}get nodeValue(){return null}set nodeValue(e){}get textContent(){return null}set textContent(e){}normalize(){}cloneNode(){return null}contains(){return!1}insertBefore(e,u){return e}appendChild(e){return e}replaceChild(e,u){return u}removeChild(e){return e}toString(){return""}hasChildNodes(){return!!this.lastChild}isSameNode(e){return this===e}compareDocumentPosition(e){let u=0;if(this!==e){let s=Qn(this),n=Qn(e);if(s<n)u+=qn,this.contains(e)&&(u+=_0);else if(n<s)u+=_n,e.contains(this)&&(u+=O0);else if(s&&n){const{childNodes:r}=this.parentNode;r.indexOf(this)<r.indexOf(e)?u+=qn:u+=_n}(!s||!n)&&(u+=q0,u+=I0)}return u}isEqualNode(e){if(this===e)return!0;if(this.nodeType===e.nodeType){switch(this.nodeType){case ve:case ee:{const u=this.childNodes,s=e.childNodes;return u.length===s.length&&u.every((n,r)=>n.isEqualNode(s[r]))}}return this.toString()===e.toString()}return!1}_getParent(){return this.parentNode}getRootNode(){let e=this;for(;e.parentNode;)e=e.parentNode;return e}};const{replace:X0}="",ec=/[<>&\xA0]/g,tc={"\xA0":" ","&":"&","<":"<",">":">"},uc=t=>tc[t],_u=t=>X0.call(t,ec,uc),sc=/"/g;let Je=class xa extends qe{constructor(e,u,s=""){super(e,u,q),this.ownerElement=null,this.name=Ie(u),this[R]=Ie(s),this[xt]=!1}get value(){return this[R]}set value(e){const{[R]:u,name:s,ownerElement:n}=this;this[R]=Ie(e),this[xt]=!0,n&&(Iu(n,s,u),Mt(n,s,u,this[R]))}cloneNode(){const{ownerDocument:e,name:u,[R]:s}=this;return new xa(e,u,s)}toString(){const{name:e,[R]:u}=this;if(Q0.has(e)&&!u)return Te(this)?e:`${e}=""`;const s=(Te(this)?u:_u(u)).replace(sc,""");return`${e}="${s}"`}toJSON(){const e=[];return Un(this,e),e}};const Zn=({ownerDocument:t,parentNode:e})=>{for(;e;){if(e===t)return!0;e=e.parentNode||e.host}return!1},Yn=({parentNode:t})=>{if(t)switch(t.nodeType){case ve:case ee:return null}return t},at=({[D]:t})=>{switch(t?t.nodeType:0){case fe:return t[G];case F:case ae:case ie:return t}return null},Pe=t=>{const e=K(t)[p];return e&&(e.nodeType===fe?null:e)},qu=t=>{let e=Pe(t);for(;e&&e.nodeType!==v;)e=Pe(e);return e},Xn=t=>{let e=at(t);for(;e&&e.nodeType!==v;)e=at(e);return e},Pu=(t,e)=>{const u=t.createDocumentFragment();return u.append(...e),u},er=(t,e)=>{const{ownerDocument:u,parentNode:s}=t;s&&s.insertBefore(Pu(u,e),t)},tr=(t,e)=>{const{ownerDocument:u,parentNode:s}=t;s&&s.insertBefore(Pu(u,e),K(t)[p])},Fu=(t,e)=>{const{ownerDocument:u,parentNode:s}=t;s&&(e.includes(t)&&Fu(t,[t=t.cloneNode()]),s.insertBefore(Pu(u,e),t),t.remove())},ur=(t,e,u)=>{const{parentNode:s,nodeType:n}=e;(t||u)&&(Pn(t,u),e[D]=null,K(e)[p]=null),s&&(e.parentNode=null,it(e,s),n===v&&U0(e))};let ct=class extends qe{constructor(e,u,s,n){super(e,u,s),this[R]=Ie(n)}get isConnected(){return Zn(this)}get parentElement(){return Yn(this)}get previousSibling(){return at(this)}get nextSibling(){return Pe(this)}get previousElementSibling(){return Xn(this)}get nextElementSibling(){return qu(this)}before(...e){er(this,e)}after(...e){tr(this,e)}replaceWith(...e){Fu(this,e)}remove(){ur(this[D],this,this[p])}get data(){return this[R]}set data(e){this[R]=Ie(e),it(this,this.parentNode)}get nodeValue(){return this.data}set nodeValue(e){this.data=e}get textContent(){return this.data}set textContent(e){this.data=e}get length(){return this.data.length}substringData(e,u){return this.data.substr(e,u)}appendData(e){this.data+=e}insertData(e,u){const{data:s}=this;this.data=s.slice(0,e)+u+s.slice(e)}deleteData(e,u){const{data:s}=this;this.data=s.slice(0,e)+s.slice(e+u)}replaceData(e,u,s){const{data:n}=this;this.data=n.slice(0,e)+s+n.slice(e+u)}toJSON(){const e=[];return Gn(this,e),e}},_t=class ya extends ct{constructor(e,u=""){super(e,"#cdatasection",ie,u)}cloneNode(){const{ownerDocument:e,[R]:u}=this;return new ya(e,u)}toString(){return`<![CDATA[${this[R]}]]>`}},qt=class Ca extends ct{constructor(e,u=""){super(e,"#comment",ae,u)}cloneNode(){const{ownerDocument:e,[R]:u}=this;return new Ca(e,u)}toString(){return`<!--${this[R]}-->`}};function nc(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var rc={trueFunc:function(){return!0},falseFunc:function(){return!1}},E=nc(rc),C;(function(t){t.Attribute="attribute",t.Pseudo="pseudo",t.PseudoElement="pseudo-element",t.Tag="tag",t.Universal="universal",t.Adjacent="adjacent",t.Child="child",t.Descendant="descendant",t.Parent="parent",t.Sibling="sibling",t.ColumnCombinator="column-combinator"})(C||(C={}));var M;(function(t){t.Any="any",t.Element="element",t.End="end",t.Equals="equals",t.Exists="exists",t.Hyphen="hyphen",t.Not="not",t.Start="start"})(M||(M={}));const sr=/^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,ic=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,ac=new Map([[126,M.Element],[94,M.Start],[36,M.End],[42,M.Any],[33,M.Not],[124,M.Hyphen]]),cc=new Set(["has","not","matches","is","where","host","host-context"]);function oc(t){switch(t.type){case C.Adjacent:case C.Child:case C.Descendant:case C.Parent:case C.Sibling:case C.ColumnCombinator:return!0;default:return!1}}const lc=new Set(["contains","icontains"]);function dc(t,e,u){const s=parseInt(e,16)-65536;return s!==s||u?e:s<0?String.fromCharCode(s+65536):String.fromCharCode(s>>10|55296,s&1023|56320)}function ot(t){return t.replace(ic,dc)}function Hu(t){return t===39||t===34}function nr(t){return t===32||t===9||t===10||t===12||t===13}function rr(t){const e=[],u=ir(e,`${t}`,0);if(u<t.length)throw new Error(`Unmatched selector: ${t.slice(u)}`);return e}function ir(t,e,u){let s=[];function n(S){const y=e.slice(u+S).match(sr);if(!y)throw new Error(`Expected name, found ${e.slice(u)}`);const[w]=y;return u+=S+w.length,ot(w)}function r(S){for(u+=S;u<e.length&&nr(e.charCodeAt(u));)u++}function i(){u+=1;const S=u;let y=1;for(;y>0&&u<e.length;u++)e.charCodeAt(u)===40&&!a(u)?y++:e.charCodeAt(u)===41&&!a(u)&&y--;if(y)throw new Error("Parenthesis not matched");return ot(e.slice(S,u-1))}function a(S){let y=0;for(;e.charCodeAt(--S)===92;)y++;return(y&1)===1}function o(){if(s.length>0&&oc(s[s.length-1]))throw new Error("Did not expect successive traversals.")}function c(S){if(s.length>0&&s[s.length-1].type===C.Descendant){s[s.length-1].type=S;return}o(),s.push({type:S})}function d(S,y){s.push({type:C.Attribute,name:S,action:y,value:n(1),namespace:null,ignoreCase:"quirks"})}function b(){if(s.length&&s[s.length-1].type===C.Descendant&&s.pop(),s.length===0)throw new Error("Empty sub-selector");t.push(s)}if(r(0),e.length===u)return u;e:for(;u<e.length;){const S=e.charCodeAt(u);switch(S){case 32:case 9:case 10:case 12:case 13:{(s.length===0||s[0].type!==C.Descendant)&&(o(),s.push({type:C.Descendant})),r(1);break}case 62:{c(C.Child),r(1);break}case 60:{c(C.Parent),r(1);break}case 126:{c(C.Sibling),r(1);break}case 43:{c(C.Adjacent),r(1);break}case 46:{d("class",M.Element);break}case 35:{d("id",M.Equals);break}case 91:{r(1);let y,w=null;e.charCodeAt(u)===124?y=n(1):e.startsWith("*|",u)?(w="*",y=n(2)):(y=n(0),e.charCodeAt(u)===124&&e.charCodeAt(u+1)!==61&&(w=y,y=n(1))),r(0);let V=M.Exists;const Se=ac.get(e.charCodeAt(u));if(Se){if(V=Se,e.charCodeAt(u+1)!==61)throw new Error("Expected `=`");r(2)}else e.charCodeAt(u)===61&&(V=M.Equals,r(1));let I="",de=null;if(V!=="exists"){if(Hu(e.charCodeAt(u))){const ne=e.charCodeAt(u);let B=u+1;for(;B<e.length&&(e.charCodeAt(B)!==ne||a(B));)B+=1;if(e.charCodeAt(B)!==ne)throw new Error("Attribute value didn't end");I=ot(e.slice(u+1,B)),u=B+1}else{const ne=u;for(;u<e.length&&(!nr(e.charCodeAt(u))&&e.charCodeAt(u)!==93||a(u));)u+=1;I=ot(e.slice(ne,u))}r(0);const xe=e.charCodeAt(u)|32;xe===115?(de=!1,r(1)):xe===105&&(de=!0,r(1))}if(e.charCodeAt(u)!==93)throw new Error("Attribute selector didn't terminate");u+=1;const De={type:C.Attribute,name:y,action:V,value:I,namespace:w,ignoreCase:de};s.push(De);break}case 58:{if(e.charCodeAt(u+1)===58){s.push({type:C.PseudoElement,name:n(2).toLowerCase(),data:e.charCodeAt(u)===40?i():null});continue}const y=n(1).toLowerCase();let w=null;if(e.charCodeAt(u)===40)if(cc.has(y)){if(Hu(e.charCodeAt(u+1)))throw new Error(`Pseudo-selector ${y} cannot be quoted`);if(w=[],u=ir(w,e,u+1),e.charCodeAt(u)!==41)throw new Error(`Missing closing parenthesis in :${y} (${e})`);u+=1}else{if(w=i(),lc.has(y)){const V=w.charCodeAt(0);V===w.charCodeAt(w.length-1)&&Hu(V)&&(w=w.slice(1,-1))}w=ot(w)}s.push({type:C.Pseudo,name:y,data:w});break}case 44:{b(),s=[],r(1);break}default:{if(e.startsWith("/*",u)){const V=e.indexOf("*/",u+2);if(V<0)throw new Error("Comment was not terminated");u=V+2,s.length===0&&r(0);break}let y=null,w;if(S===42)u+=1,w="*";else if(S===124){if(w="",e.charCodeAt(u+1)===124){c(C.ColumnCombinator),r(2);break}}else if(sr.test(e.slice(u)))w=n(0);else break e;e.charCodeAt(u)===124&&e.charCodeAt(u+1)!==124&&(y=w,e.charCodeAt(u+1)===42?(w="*",u+=2):w=n(1)),s.push(w==="*"?{type:C.Universal,namespace:y}:{type:C.Tag,name:w,namespace:y})}}}return b(),u}const ar=new Map([[C.Universal,50],[C.Tag,30],[C.Attribute,1],[C.Pseudo,0]]);function Bu(t){return!ar.has(t.type)}const hc=new Map([[M.Exists,10],[M.Equals,8],[M.Not,7],[M.Start,6],[M.End,6],[M.Any,5]]);function fc(t){const e=t.map(cr);for(let u=1;u<t.length;u++){const s=e[u];if(!(s<0))for(let n=u-1;n>=0&&s<e[n];n--){const r=t[n+1];t[n+1]=t[n],t[n]=r,e[n+1]=e[n],e[n]=s}}}function cr(t){var e,u;let s=(e=ar.get(t.type))!==null&&e!==void 0?e:-1;return t.type===C.Attribute?(s=(u=hc.get(t.action))!==null&&u!==void 0?u:4,t.action===M.Equals&&t.name==="id"&&(s=9),t.ignoreCase&&(s>>=1)):t.type===C.Pseudo&&(t.data?t.name==="has"||t.name==="contains"?s=0:Array.isArray(t.data)?(s=Math.min(...t.data.map(n=>Math.min(...n.map(cr)))),s<0&&(s=0)):s=2:s=3),s}const bc=/[-[\]{}()*+?.,\\^$|#\s]/g;function or(t){return t.replace(bc,"\\$&")}const pc=new Set(["accept","accept-charset","align","alink","axis","bgcolor","charset","checked","clear","codetype","color","compact","declare","defer","dir","direction","disabled","enctype","face","frame","hreflang","http-equiv","lang","language","link","media","method","multiple","nohref","noresize","noshade","nowrap","readonly","rel","rev","rules","scope","scrolling","selected","shape","target","text","type","valign","valuetype","vlink"]);function Fe(t,e){return typeof t.ignoreCase=="boolean"?t.ignoreCase:t.ignoreCase==="quirks"?!!e.quirksMode:!e.xmlMode&&pc.has(t.name)}const gc={equals(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;return Fe(e,u)?(r=r.toLowerCase(),i=>{const a=s.getAttributeValue(i,n);return a!=null&&a.length===r.length&&a.toLowerCase()===r&&t(i)}):i=>s.getAttributeValue(i,n)===r&&t(i)},hyphen(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;const i=r.length;return Fe(e,u)?(r=r.toLowerCase(),function(o){const c=s.getAttributeValue(o,n);return c!=null&&(c.length===i||c.charAt(i)==="-")&&c.substr(0,i).toLowerCase()===r&&t(o)}):function(o){const c=s.getAttributeValue(o,n);return c!=null&&(c.length===i||c.charAt(i)==="-")&&c.substr(0,i)===r&&t(o)}},element(t,e,u){const{adapter:s}=u,{name:n,value:r}=e;if(/\s/.test(r))return E.falseFunc;const i=new RegExp(`(?:^|\\s)${or(r)}(?:$|\\s)`,Fe(e,u)?"i":"");return function(o){const c=s.getAttributeValue(o,n);return c!=null&&c.length>=r.length&&i.test(c)&&t(o)}},exists(t,{name:e},{adapter:u}){return s=>u.hasAttrib(s,e)&&t(s)},start(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;const i=r.length;return i===0?E.falseFunc:Fe(e,u)?(r=r.toLowerCase(),a=>{const o=s.getAttributeValue(a,n);return o!=null&&o.length>=i&&o.substr(0,i).toLowerCase()===r&&t(a)}):a=>{var o;return!!(!((o=s.getAttributeValue(a,n))===null||o===void 0)&&o.startsWith(r))&&t(a)}},end(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;const i=-r.length;return i===0?E.falseFunc:Fe(e,u)?(r=r.toLowerCase(),a=>{var o;return((o=s.getAttributeValue(a,n))===null||o===void 0?void 0:o.substr(i).toLowerCase())===r&&t(a)}):a=>{var o;return!!(!((o=s.getAttributeValue(a,n))===null||o===void 0)&&o.endsWith(r))&&t(a)}},any(t,e,u){const{adapter:s}=u,{name:n,value:r}=e;if(r==="")return E.falseFunc;if(Fe(e,u)){const i=new RegExp(or(r),"i");return function(o){const c=s.getAttributeValue(o,n);return c!=null&&c.length>=r.length&&i.test(c)&&t(o)}}return i=>{var a;return!!(!((a=s.getAttributeValue(i,n))===null||a===void 0)&&a.includes(r))&&t(i)}},not(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;return r===""?i=>!!s.getAttributeValue(i,n)&&t(i):Fe(e,u)?(r=r.toLowerCase(),i=>{const a=s.getAttributeValue(i,n);return(a==null||a.length!==r.length||a.toLowerCase()!==r)&&t(i)}):i=>s.getAttributeValue(i,n)!==r&&t(i)}},mc=new Set([9,10,12,13,32]),lr=48,Sc=57;function xc(t){if(t=t.trim().toLowerCase(),t==="even")return[2,0];if(t==="odd")return[2,1];let e=0,u=0,s=r(),n=i();if(e<t.length&&t.charAt(e)==="n"&&(e++,u=s*(n??1),a(),e<t.length?(s=r(),a(),n=i()):s=n=0),n===null||e<t.length)throw new Error(`n-th rule couldn't be parsed ('${t}')`);return[u,s*n];function r(){return t.charAt(e)==="-"?(e++,-1):(t.charAt(e)==="+"&&e++,1)}function i(){const o=e;let c=0;for(;e<t.length&&t.charCodeAt(e)>=lr&&t.charCodeAt(e)<=Sc;)c=c*10+(t.charCodeAt(e)-lr),e++;return e===o?null:c}function a(){for(;e<t.length&&mc.has(t.charCodeAt(e));)e++}}function yc(t){const e=t[0],u=t[1]-1;if(u<0&&e<=0)return E.falseFunc;if(e===-1)return r=>r<=u;if(e===0)return r=>r===u;if(e===1)return u<0?E.trueFunc:r=>r>=u;const s=Math.abs(e),n=(u%s+s)%s;return e>1?r=>r>=u&&r%s===n:r=>r<=u&&r%s===n}function Pt(t){return yc(xc(t))}function Ft(t,e){return u=>{const s=e.getParent(u);return s!=null&&e.isTag(s)&&t(u)}}const $u={contains(t,e,{adapter:u}){return function(n){return t(n)&&u.getText(n).includes(e)}},icontains(t,e,{adapter:u}){const s=e.toLowerCase();return function(r){return t(r)&&u.getText(r).toLowerCase().includes(s)}},"nth-child"(t,e,{adapter:u,equals:s}){const n=Pt(e);return n===E.falseFunc?E.falseFunc:n===E.trueFunc?Ft(t,u):function(i){const a=u.getSiblings(i);let o=0;for(let c=0;c<a.length&&!s(i,a[c]);c++)u.isTag(a[c])&&o++;return n(o)&&t(i)}},"nth-last-child"(t,e,{adapter:u,equals:s}){const n=Pt(e);return n===E.falseFunc?E.falseFunc:n===E.trueFunc?Ft(t,u):function(i){const a=u.getSiblings(i);let o=0;for(let c=a.length-1;c>=0&&!s(i,a[c]);c--)u.isTag(a[c])&&o++;return n(o)&&t(i)}},"nth-of-type"(t,e,{adapter:u,equals:s}){const n=Pt(e);return n===E.falseFunc?E.falseFunc:n===E.trueFunc?Ft(t,u):function(i){const a=u.getSiblings(i);let o=0;for(let c=0;c<a.length;c++){const d=a[c];if(s(i,d))break;u.isTag(d)&&u.getName(d)===u.getName(i)&&o++}return n(o)&&t(i)}},"nth-last-of-type"(t,e,{adapter:u,equals:s}){const n=Pt(e);return n===E.falseFunc?E.falseFunc:n===E.trueFunc?Ft(t,u):function(i){const a=u.getSiblings(i);let o=0;for(let c=a.length-1;c>=0;c--){const d=a[c];if(s(i,d))break;u.isTag(d)&&u.getName(d)===u.getName(i)&&o++}return n(o)&&t(i)}},root(t,e,{adapter:u}){return s=>{const n=u.getParent(s);return(n==null||!u.isTag(n))&&t(s)}},scope(t,e,u,s){const{equals:n}=u;return!s||s.length===0?$u.root(t,e,u):s.length===1?r=>n(s[0],r)&&t(r):r=>s.includes(r)&&t(r)},hover:Vu("isHovered"),visited:Vu("isVisited"),active:Vu("isActive")};function Vu(t){return function(u,s,{adapter:n}){const r=n[t];return typeof r!="function"?E.falseFunc:function(a){return r(a)&&u(a)}}}const dr={empty(t,{adapter:e}){return!e.getChildren(t).some(u=>e.isTag(u)||e.getText(u)!=="")},"first-child"(t,{adapter:e,equals:u}){if(e.prevElementSibling)return e.prevElementSibling(t)==null;const s=e.getSiblings(t).find(n=>e.isTag(n));return s!=null&&u(t,s)},"last-child"(t,{adapter:e,equals:u}){const s=e.getSiblings(t);for(let n=s.length-1;n>=0;n--){if(u(t,s[n]))return!0;if(e.isTag(s[n]))break}return!1},"first-of-type"(t,{adapter:e,equals:u}){const s=e.getSiblings(t),n=e.getName(t);for(let r=0;r<s.length;r++){const i=s[r];if(u(t,i))return!0;if(e.isTag(i)&&e.getName(i)===n)break}return!1},"last-of-type"(t,{adapter:e,equals:u}){const s=e.getSiblings(t),n=e.getName(t);for(let r=s.length-1;r>=0;r--){const i=s[r];if(u(t,i))return!0;if(e.isTag(i)&&e.getName(i)===n)break}return!1},"only-of-type"(t,{adapter:e,equals:u}){const s=e.getName(t);return e.getSiblings(t).every(n=>u(t,n)||!e.isTag(n)||e.getName(n)!==s)},"only-child"(t,{adapter:e,equals:u}){return e.getSiblings(t).every(s=>u(t,s)||!e.isTag(s))}};function hr(t,e,u,s){if(u===null){if(t.length>s)throw new Error(`Pseudo-class :${e} requires an argument`)}else if(t.length===s)throw new Error(`Pseudo-class :${e} doesn't have any arguments`)}const Cc={"any-link":":is(a, area, link)[href]",link:":any-link:not(:visited)",disabled:`:is( - :is(button, input, select, textarea, optgroup, option)[disabled], - optgroup[disabled] > option, - fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *) - )`,enabled:":not(:disabled)",checked:":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",required:":is(input, select, textarea)[required]",optional:":is(input, select, textarea):not([required])",selected:"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",checkbox:"[type=checkbox]",file:"[type=file]",password:"[type=password]",radio:"[type=radio]",reset:"[type=reset]",image:"[type=image]",submit:"[type=submit]",parent:":not(:empty)",header:":is(h1, h2, h3, h4, h5, h6)",button:":is(button, input[type=button])",input:":is(input, textarea, select, button)",text:"input:is(:not([type!='']), [type=text])"},fr={};function br(t,e){return t===E.falseFunc?E.falseFunc:u=>e.isTag(u)&&t(u)}function Ec(t,e){const u=e.getSiblings(t);if(u.length<=1)return[];const s=u.indexOf(t);return s<0||s===u.length-1?[]:u.slice(s+1).filter(e.isTag)}function Uu(t){return{xmlMode:!!t.xmlMode,lowerCaseAttributeNames:!!t.lowerCaseAttributeNames,lowerCaseTags:!!t.lowerCaseTags,quirksMode:!!t.quirksMode,cacheResults:!!t.cacheResults,pseudos:t.pseudos,adapter:t.adapter,equals:t.equals}}const Gu=(t,e,u,s,n)=>{const r=n(e,Uu(u),s);return r===E.trueFunc?t:r===E.falseFunc?E.falseFunc:i=>r(i)&&t(i)},ju={is:Gu,matches:Gu,where:Gu,not(t,e,u,s,n){const r=n(e,Uu(u),s);return r===E.falseFunc?t:r===E.trueFunc?E.falseFunc:i=>!r(i)&&t(i)},has(t,e,u,s,n){const{adapter:r}=u,i=Uu(u);i.relativeSelector=!0;const a=e.some(d=>d.some(Bu))?[fr]:void 0,o=n(e,i,a);if(o===E.falseFunc)return E.falseFunc;const c=br(o,r);if(a&&o!==E.trueFunc){const{shouldTestNextSiblings:d=!1}=o;return b=>{if(!t(b))return!1;a[0]=b;const S=r.getChildren(b),y=d?[...S,...Ec(b,r)]:S;return r.existsOne(c,y)}}return d=>t(d)&&r.existsOne(c,r.getChildren(d))}};function wc(t,e,u,s,n){var r;const{name:i,data:a}=e;if(Array.isArray(a)){if(!(i in ju))throw new Error(`Unknown pseudo-class :${i}(${a})`);return ju[i](t,a,u,s,n)}const o=(r=u.pseudos)===null||r===void 0?void 0:r[i],c=typeof o=="string"?o:Cc[i];if(typeof c=="string"){if(a!=null)throw new Error(`Pseudo ${i} doesn't have any arguments`);const d=rr(c);return ju.is(t,d,u,s,n)}if(typeof o=="function")return hr(o,i,a,1),d=>o(d,a)&&t(d);if(i in $u)return $u[i](t,a,u,s);if(i in dr){const d=dr[i];return hr(d,i,a,2),b=>d(b,u,a)&&t(b)}throw new Error(`Unknown pseudo-class :${i}`)}function Wu(t,e){const u=e.getParent(t);return u&&e.isTag(u)?u:null}function vc(t,e,u,s,n){const{adapter:r,equals:i}=u;switch(e.type){case C.PseudoElement:throw new Error("Pseudo-elements are not supported by css-select");case C.ColumnCombinator:throw new Error("Column combinators are not yet supported by css-select");case C.Attribute:{if(e.namespace!=null)throw new Error("Namespaced attributes are not yet supported by css-select");return(!u.xmlMode||u.lowerCaseAttributeNames)&&(e.name=e.name.toLowerCase()),gc[e.action](t,e,u)}case C.Pseudo:return wc(t,e,u,s,n);case C.Tag:{if(e.namespace!=null)throw new Error("Namespaced tag names are not yet supported by css-select");let{name:a}=e;return(!u.xmlMode||u.lowerCaseTags)&&(a=a.toLowerCase()),function(c){return r.getName(c)===a&&t(c)}}case C.Descendant:{if(u.cacheResults===!1||typeof WeakSet>"u")return function(c){let d=c;for(;d=Wu(d,r);)if(t(d))return!0;return!1};const a=new WeakSet;return function(c){let d=c;for(;d=Wu(d,r);)if(!a.has(d)){if(r.isTag(d)&&t(d))return!0;a.add(d)}return!1}}case"_flexibleDescendant":return function(o){let c=o;do if(t(c))return!0;while(c=Wu(c,r));return!1};case C.Parent:return function(o){return r.getChildren(o).some(c=>r.isTag(c)&&t(c))};case C.Child:return function(o){const c=r.getParent(o);return c!=null&&r.isTag(c)&&t(c)};case C.Sibling:return function(o){const c=r.getSiblings(o);for(let d=0;d<c.length;d++){const b=c[d];if(i(o,b))break;if(r.isTag(b)&&t(b))return!0}return!1};case C.Adjacent:return r.prevElementSibling?function(o){const c=r.prevElementSibling(o);return c!=null&&t(c)}:function(o){const c=r.getSiblings(o);let d;for(let b=0;b<c.length;b++){const S=c[b];if(i(o,S))break;r.isTag(S)&&(d=S)}return!!d&&t(d)};case C.Universal:{if(e.namespace!=null&&e.namespace!=="*")throw new Error("Namespaced universal selectors are not yet supported by css-select");return t}}}function pr(t,e,u){const s=Tc(t,e,u);return br(s,e.adapter)}function Tc(t,e,u){const s=typeof t=="string"?rr(t):t;return mr(s,e,u)}function gr(t){return t.type===C.Pseudo&&(t.name==="scope"||Array.isArray(t.data)&&t.data.some(e=>e.some(gr)))}const Nc={type:C.Descendant},Ac={type:"_flexibleDescendant"},Rc={type:C.Pseudo,name:"scope",data:null};function Dc(t,{adapter:e},u){const s=!!u?.every(n=>{const r=e.isTag(n)&&e.getParent(n);return n===fr||r&&e.isTag(r)});for(const n of t){if(!(n.length>0&&Bu(n[0])&&n[0].type!==C.Descendant))if(s&&!n.some(gr))n.unshift(Nc);else continue;n.unshift(Rc)}}function mr(t,e,u){var s;t.forEach(fc),u=(s=e.context)!==null&&s!==void 0?s:u;const n=Array.isArray(u),r=u&&(Array.isArray(u)?u:[u]);if(e.relativeSelector!==!1)Dc(t,e,r);else if(t.some(o=>o.length>0&&Bu(o[0])))throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");let i=!1;const a=t.map(o=>{if(o.length>=2){const[c,d]=o;c.type!==C.Pseudo||c.name!=="scope"||(n&&d.type===C.Descendant?o[1]=Ac:(d.type===C.Adjacent||d.type===C.Sibling)&&(i=!0))}return kc(o,e,r)}).reduce(Lc,E.falseFunc);return a.shouldTestNextSiblings=i,a}function kc(t,e,u){var s;return t.reduce((n,r)=>n===E.falseFunc?E.falseFunc:vc(n,r,e,u,mr),(s=e.rootFunc)!==null&&s!==void 0?s:E.trueFunc)}function Lc(t,e){return e===E.falseFunc||t===E.trueFunc?t:t===E.falseFunc||e===E.trueFunc?e:function(s){return t(s)||e(s)}}const Sr=(t,e)=>t===e,Mc={adapter:Du,equals:Sr};function xr(t){var e,u,s,n;const r=t??Mc;return(e=r.adapter)!==null&&e!==void 0||(r.adapter=Du),(u=r.equals)!==null&&u!==void 0||(r.equals=(n=(s=r.adapter)===null||s===void 0?void 0:s.equals)!==null&&n!==void 0?n:Sr),r}function Ic(t){return function(u,s,n){const r=xr(s);return t(u,r,n)}}const Oc=Ic(pr);function _c(t,e,u){const s=xr(u);return(typeof e=="function"?e:pr(e,s))(t)}const{isArray:qc}=Array,Ht=({nodeType:t})=>t===v,yr=(t,e)=>e.some(u=>Ht(u)&&(t(u)||yr(t,Qe(u)))),Pc=(t,e)=>e==="class"?t.classList.value:t.getAttribute(e),Qe=({childNodes:t})=>t,Fc=t=>{const{localName:e}=t;return Te(t)?e.toLowerCase():e},Hc=({parentNode:t})=>t,Bc=t=>{const{parentNode:e}=t;return e?Qe(e):t},zu=t=>qc(t)?t.map(zu).join(""):Ht(t)?zu(Qe(t)):t.nodeType===F?t.data:"",$c=(t,e)=>t.hasAttribute(e),Vc=t=>{let{length:e}=t;for(;e--;){const u=t[e];if(e&&-1<t.lastIndexOf(u,e-1)){t.splice(e,1);continue}for(let{parentNode:s}=u;s;s=s.parentNode)if(t.includes(s)){t.splice(e,1);break}}return t},Cr=(t,e)=>{const u=[];for(const s of e)Ht(s)&&(t(s)&&u.push(s),u.push(...Cr(t,Qe(s))));return u},Er=(t,e)=>{for(let u of e)if(t(u)||(u=Er(t,Qe(u))))return u;return null},wr={isTag:Ht,existsOne:yr,getAttributeValue:Pc,getChildren:Qe,getName:Fc,getParent:Hc,getSiblings:Bc,getText:zu,hasAttrib:$c,removeSubsets:Vc,findAll:Cr,findOne:Er},Ku=(t,e)=>Oc(e,{context:e.includes(":scope")?t:void 0,xmlMode:!Te(t),adapter:wr}),Uc=(t,e)=>_c(t,e,{strict:!0,context:e.includes(":scope")?t:void 0,xmlMode:!Te(t),adapter:wr});let Ze=class Ea extends ct{constructor(e,u=""){super(e,"#text",F,u)}get wholeText(){const e=[];let{previousSibling:u,nextSibling:s}=this;for(;u&&u.nodeType===F;){e.unshift(u[R]);u=u.previousSibling}for(e.push(this[R]);s&&s.nodeType===F;){e.push(s[R]);s=s.nextSibling}return e.join("")}cloneNode(){const{ownerDocument:e,[R]:u}=this;return new Ea(e,u)}toString(){return _u(this[R])}};const Gc=t=>t instanceof qe,Ju=(t,e,u)=>{const{ownerDocument:s}=t;for(const n of u)t.insertBefore(Gc(n)?n:new Ze(s,n),e)};class vr extends qe{constructor(e,u,s){super(e,u,s),this[H]=null,this[p]=this[m]={[p]:null,[D]:this,[G]:this,nodeType:fe,ownerDocument:this.ownerDocument,parentNode:null}}get childNodes(){const e=new ue;let{firstChild:u}=this;for(;u;)e.push(u),u=Pe(u);return e}get children(){const e=new ue;let{firstElementChild:u}=this;for(;u;)e.push(u),u=qu(u);return e}get firstChild(){let{[p]:e,[m]:u}=this;for(;e.nodeType===q;)e=e[p];return e===u?null:e}get firstElementChild(){let{firstChild:e}=this;for(;e;){if(e.nodeType===v)return e;e=Pe(e)}return null}get lastChild(){const e=this[m][D];switch(e.nodeType){case fe:return e[G];case q:return null}return e===this?null:e}get lastElementChild(){let{lastChild:e}=this;for(;e;){if(e.nodeType===v)return e;e=at(e)}return null}get childElementCount(){return this.children.length}prepend(...e){Ju(this,this.firstChild,e)}append(...e){Ju(this,this[m],e)}replaceChildren(...e){let{[p]:u,[m]:s}=this;for(;u!==s&&u.nodeType===q;)u=u[p];for(;u!==s;){const n=K(u)[p];u.remove(),u=n}e.length&&Ju(this,s,e)}getElementsByClassName(e){const u=new ue;let{[p]:s,[m]:n}=this;for(;s!==n;)s.nodeType===v&&s.hasAttribute("class")&&s.classList.has(e)&&u.push(s),s=s[p];return u}getElementsByTagName(e){const u=new ue;let{[p]:s,[m]:n}=this;for(;s!==n;)s.nodeType===v&&(s.localName===e||Lu(s)===e)&&u.push(s),s=s[p];return u}querySelector(e){const u=Ku(this,e);let{[p]:s,[m]:n}=this;for(;s!==n;){if(s.nodeType===v&&u(s))return s;s=s.nodeType===v&&s.localName==="template"?s[m]:s[p]}return null}querySelectorAll(e){const u=Ku(this,e),s=new ue;let{[p]:n,[m]:r}=this;for(;n!==r;)n.nodeType===v&&u(n)&&s.push(n),n=n.nodeType===v&&n.localName==="template"?n[m]:n[p];return s}appendChild(e){return this.insertBefore(e,this[m])}contains(e){let u=e;for(;u&&u!==this;)u=u.parentNode;return u===this}insertBefore(e,u=null){if(e===u)return e;if(e===this)throw new Error("unable to append a node to itself");const s=u||this[m];switch(e.nodeType){case v:e.remove(),e.parentNode=this,ku(s[D],e,s),it(e,null),Mu(e);break;case ee:{let{[H]:n,firstChild:r,lastChild:i}=e;if(r){V0(s[D],r,i,s),te(e,e[m]),n&&n.replaceChildren();do r.parentNode=this,it(r,null),r.nodeType===v&&Mu(r);while(r!==i&&(r=Pe(r)))}break}case F:case ae:case ie:e.remove();default:e.parentNode=this,We(s[D],e,s),it(e,null);break}return e}normalize(){let{[p]:e,[m]:u}=this;for(;e!==u;){const{[p]:s,[D]:n,nodeType:r}=e;r===F&&(e[R]?n&&n.nodeType===F&&(n.textContent+=e.textContent,e.remove()):e.remove()),e=s}}removeChild(e){if(e.parentNode!==this)throw new Error("node is not a child");return e.remove(),e}replaceChild(e,u){const s=K(u)[p];return u.remove(),this.insertBefore(e,s),u}}class Qu extends vr{getElementById(e){let{[p]:u,[m]:s}=this;for(;u!==s;){if(u.nodeType===v&&u.id===e)return u;u=u[p]}return null}cloneNode(e){const{ownerDocument:u,constructor:s}=this,n=new s(u);if(e){const{[m]:r}=n;for(const i of this.childNodes)n.insertBefore(i.cloneNode(e),r)}return n}toString(){const{childNodes:e,localName:u}=this;return`<${u}>${e.join("")}</${u}>`}toJSON(){const e=[];return K0(this,e),e}}let Zu=class extends Qu{constructor(e){super(e,"#document-fragment",ee)}},lt=class wa extends qe{constructor(e,u,s="",n=""){super(e,"#document-type",Me),this.name=u,this.publicId=s,this.systemId=n}cloneNode(){const{ownerDocument:e,name:u,publicId:s,systemId:n}=this;return new wa(e,u,s,n)}toString(){const{name:e,publicId:u,systemId:s}=this,n=0<u.length,r=[e];return n&&r.push("PUBLIC",`"${u}"`),s.length&&(n||r.push("SYSTEM"),r.push(`"${s}"`)),`<!DOCTYPE ${r.join(" ")}>`}toJSON(){const e=[];return jn(this,e),e}};const Tr=t=>t.childNodes.join(""),Nr=(t,e)=>{const{ownerDocument:u}=t,{constructor:s}=u,n=new s;n[Z]=u[Z];const{childNodes:r}=$n(n,Te(t),e);t.replaceChildren(...r.map(Ar,u))};function Ar(t){switch(t.ownerDocument=this,t.nodeType){case v:case ee:t.childNodes.forEach(Ar,this);break}return t}var Bt=t=>t.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g,"$2$5-$3$6").toLowerCase();const $t=new WeakMap,Yu=t=>`data-${Bt(t)}`,jc=t=>t.slice(5).replace(/-([a-z])/g,(e,u)=>u.toUpperCase()),Wc={get(t,e){if(e in t)return $t.get(t).getAttribute(Yu(e))},set(t,e,u){return t[e]=u,$t.get(t).setAttribute(Yu(e),u),!0},deleteProperty(t,e){return e in t&&$t.get(t).removeAttribute(Yu(e)),delete t[e]}};class Rr{constructor(e){for(const{name:u,value:s}of e.attributes)/^data-/.test(u)&&(this[jc(u)]=s);return $t.set(this,e),new Proxy(this,Wc)}}$(Rr.prototype,null);const{add:zc}=Set.prototype,Dr=(t,e)=>{for(const u of e)u&&zc.call(t,u)},dt=({[Hs]:t,value:e})=>{const u=t.getAttributeNode("class");u?u.value=e:Ou(t,new Je(t.ownerDocument,"class",e))};class Kc extends Set{constructor(e){super(),this[Hs]=e;const u=e.getAttributeNode("class");u&&Dr(this,u.value.split(/\s+/))}get length(){return this.size}get value(){return[...this].join(" ")}add(...e){Dr(this,e),dt(this)}contains(e){return this.has(e)}remove(...e){for(const u of e)this.delete(u);dt(this)}toggle(e,u){if(this.has(e)){if(u)return!0;this.delete(e),dt(this)}else if(u||arguments.length===1)return super.add(e),dt(this),!0;return!1}replace(e,u){return this.has(e)?(this.delete(e),super.add(u),dt(this),!0):!1}supports(){return!0}}const Vt=new WeakMap,Xu=t=>[...t.keys()].filter(e=>e!==H),Ut=t=>{const e=Vt.get(t).getAttributeNode("style");if((!e||e[xt]||t.get(H)!==e)&&(t.clear(),e)){t.set(H,e);for(const u of e[R].split(/\s*;\s*/)){let[s,...n]=u.split(":");if(n.length>0){s=s.trim();const r=n.join(":").trim();s&&r&&t.set(s,r)}}}return e},Gt={get(t,e){return e in Jc?t[e]:(Ut(t),e==="length"?Xu(t).length:/^\d+$/.test(e)?Xu(t)[e]:t.get(Bt(e)))},set(t,e,u){if(e==="cssText")t[e]=u;else{let s=Ut(t);if(u==null?t.delete(Bt(e)):t.set(Bt(e),u),!s){const n=Vt.get(t);s=n.ownerDocument.createAttribute("style"),n.setAttributeNode(s),t.set(H,s)}s[xt]=!1,s[R]=t.toString()}return!0}};let kr=class extends Map{constructor(e){return super(),Vt.set(this,e),new Proxy(this,Gt)}get cssText(){return this.toString()}set cssText(e){Vt.get(this).setAttribute("style",e)}getPropertyValue(e){const u=this[H];return Gt.get(u,e)}setProperty(e,u){const s=this[H];Gt.set(s,e,u)}removeProperty(e){const u=this[H];Gt.set(u,e,null)}[Symbol.iterator](){const e=this[H];Ut(e);const u=Xu(e),{length:s}=u;let n=0;return{next(){const r=n===s;return{done:r,value:r?null:u[n++]}}}}get[H](){return this}toString(){const e=this[H];Ut(e);const u=[];return e.forEach(Qc,u),u.join(";")}};const{prototype:Jc}=kr;function Qc(t,e){e!==H&&this.push(`${e}:${t}`)}const Lr=3,Mr=2,Ir=1,Or=0;function Zc(t){return t.currentTarget}class Re{static get BUBBLING_PHASE(){return Lr}static get AT_TARGET(){return Mr}static get CAPTURING_PHASE(){return Ir}static get NONE(){return Or}constructor(e,u={}){this.type=e,this.bubbles=!!u.bubbles,this.cancelBubble=!1,this._stopImmediatePropagationFlag=!1,this.cancelable=!!u.cancelable,this.eventPhase=this.NONE,this.timeStamp=Date.now(),this.defaultPrevented=!1,this.originalTarget=null,this.returnValue=null,this.srcElement=null,this.target=null,this._path=[]}get BUBBLING_PHASE(){return Lr}get AT_TARGET(){return Mr}get CAPTURING_PHASE(){return Ir}get NONE(){return Or}preventDefault(){this.defaultPrevented=!0}composedPath(){return this._path.map(Zc)}stopPropagation(){this.cancelBubble=!0}stopImmediatePropagation(){this.stopPropagation(),this._stopImmediatePropagationFlag=!0}}class _r extends Array{constructor(e){super(),this.ownerElement=e}getNamedItem(e){return this.ownerElement.getAttributeNode(e)}setNamedItem(e){this.ownerElement.setAttributeNode(e),this.unshift(e)}removeNamedItem(e){const u=this.getNamedItem(e);this.ownerElement.removeAttribute(e),this.splice(this.indexOf(u),1)}item(e){return e<this.length?this[e]:null}getNamedItemNS(e,u){return this.getNamedItem(u)}setNamedItemNS(e,u){return this.setNamedItem(u)}removeNamedItemNS(e,u){return this.removeNamedItem(u)}}let es=class extends Qu{constructor(e){super(e.ownerDocument,"#shadow-root",ee),this.host=e}get innerHTML(){return Tr(this)}set innerHTML(e){Nr(this,e)}};const Yc={get(t,e){return e in t?t[e]:t.find(({name:u})=>u===e)}},qr=(t,e,u)=>{if("ownerSVGElement"in e){const s=t.createElementNS(kt,u);return s.ownerSVGElement=e.ownerSVGElement,s}return t.createElement(u)},Xc=({localName:t,ownerDocument:e})=>e[Ve].voidElements.test(t);let ht=class extends vr{constructor(e,u){super(e,u,v),this[$e]=null,this[fu]=null,this[pu]=null}get isConnected(){return Zn(this)}get parentElement(){return Yn(this)}get previousSibling(){return at(this)}get nextSibling(){return Pe(this)}get namespaceURI(){return"http://www.w3.org/1999/xhtml"}get previousElementSibling(){return Xn(this)}get nextElementSibling(){return qu(this)}before(...e){er(this,e)}after(...e){tr(this,e)}replaceWith(...e){Fu(this,e)}remove(){ur(this[D],this,this[m][p])}get id(){return f.get(this,"id")}set id(e){f.set(this,"id",e)}get className(){return this.classList.value}set className(e){const{classList:u}=this;u.clear(),u.add(...Ie(e).split(/\s+/))}get nodeName(){return Lu(this)}get tagName(){return Lu(this)}get classList(){return this[$e]||(this[$e]=new Kc(this))}get dataset(){return this[fu]||(this[fu]=new Rr(this))}getBoundingClientRect(){return{x:0,y:0,bottom:0,height:0,left:0,right:0,top:0,width:0}}get nonce(){return f.get(this,"nonce")}set nonce(e){f.set(this,"nonce",e)}get style(){return this[pu]||(this[pu]=new kr(this))}get tabIndex(){return Ae.get(this,"tabindex")||-1}set tabIndex(e){Ae.set(this,"tabindex",e)}get slot(){return f.get(this,"slot")}set slot(e){f.set(this,"slot",e)}get innerText(){const e=[];let{[p]:u,[m]:s}=this;for(;u!==s;)u.nodeType===F?e.push(u.textContent.replace(/\s+/g," ")):e.length&&u[p]!=s&&M0.has(u.tagName)&&e.push(` -`),u=u[p];return e.join("")}get textContent(){const e=[];let{[p]:u,[m]:s}=this;for(;u!==s;)u.nodeType===F&&e.push(u.textContent),u=u[p];return e.join("")}set textContent(e){this.replaceChildren(),e!=null&&e!==""&&this.appendChild(new Ze(this.ownerDocument,e))}get innerHTML(){return Tr(this)}set innerHTML(e){Nr(this,e)}get outerHTML(){return this.toString()}set outerHTML(e){const u=this.ownerDocument.createElement("");u.innerHTML=e,this.replaceWith(...u.childNodes)}get attributes(){const e=new _r(this);let u=this[p];for(;u.nodeType===q;)e.push(u),u=u[p];return new Proxy(e,Yc)}focus(){this.dispatchEvent(new Re("focus"))}getAttribute(e){if(e==="class")return this.className;const u=this.getAttributeNode(e);return u&&(Te(this)?u.value:_u(u.value))}getAttributeNode(e){let u=this[p];for(;u.nodeType===q;){if(u.name===e)return u;u=u[p]}return null}getAttributeNames(){const e=new ue;let u=this[p];for(;u.nodeType===q;)e.push(u.name),u=u[p];return e}hasAttribute(e){return!!this.getAttributeNode(e)}hasAttributes(){return this[p].nodeType===q}removeAttribute(e){e==="class"&&this[$e]&&this[$e].clear();let u=this[p];for(;u.nodeType===q;){if(u.name===e){Jn(this,u);return}u=u[p]}}removeAttributeNode(e){let u=this[p];for(;u.nodeType===q;){if(u===e){Jn(this,u);return}u=u[p]}}setAttribute(e,u){if(e==="class")this.className=u;else{const s=this.getAttributeNode(e);s?s.value=u:Ou(this,new Je(this.ownerDocument,e,u))}}setAttributeNode(e){const{name:u}=e,s=this.getAttributeNode(u);if(s!==e){s&&this.removeAttributeNode(s);const{ownerElement:n}=e;n&&n.removeAttributeNode(e),Ou(this,e)}return s}toggleAttribute(e,u){return this.hasAttribute(e)?u?!0:(this.removeAttribute(e),!1):u||arguments.length===1?(this.setAttribute(e,""),!0):!1}get shadowRoot(){if(Ne.has(this)){const{mode:e,shadowRoot:u}=Ne.get(this);if(e==="open")return u}return null}attachShadow(e){if(Ne.has(this))throw new Error("operation not supported");const u=new es(this);return Ne.set(this,{mode:e.mode,shadowRoot:u}),u}matches(e){return Uc(this,e)}closest(e){let u=this;const s=Ku(u,e);for(;u&&!s(u);)u=u.parentElement;return u}insertAdjacentElement(e,u){const{parentElement:s}=this;switch(e){case"beforebegin":if(s){s.insertBefore(u,this);break}return null;case"afterbegin":this.insertBefore(u,this.firstChild);break;case"beforeend":this.insertBefore(u,null);break;case"afterend":if(s){s.insertBefore(u,this.nextSibling);break}return null}return u}insertAdjacentHTML(e,u){const s=this.ownerDocument.createElement("template");s.innerHTML=u,this.insertAdjacentElement(e,s.content)}insertAdjacentText(e,u){const s=this.ownerDocument.createTextNode(u);this.insertAdjacentElement(e,s)}cloneNode(e=!1){const{ownerDocument:u,localName:s}=this,n=d=>{d.parentNode=i,te(a,d),a=d},r=qr(u,this,s);let i=r,a=r,{[p]:o,[m]:c}=this;for(;o!==c&&(e||o.nodeType===q);){switch(o.nodeType){case fe:te(a,i[m]),a=i[m],i=i.parentNode;break;case v:{const d=qr(u,o,o.localName);n(d),i=d;break}case q:{const d=o.cloneNode(e);d.ownerElement=i,n(d);break}case F:case ae:case ie:n(o.cloneNode(e));break}o=o[p]}return te(a,r[m]),r}toString(){const e=[],{[m]:u}=this;let s={[p]:this},n=!1;do switch(s=s[p],s.nodeType){case q:{const r=" "+s;switch(r){case" id":case" class":case" style":break;default:e.push(r)}break}case fe:{const r=s[G];n?("ownerSVGElement"in r?e.push(" />"):Xc(r)?e.push(Te(r)?">":" />"):e.push(`></${r.localName}>`),n=!1):e.push(`</${r.localName}>`);break}case v:n&&e.push(">"),s.toString!==this.toString?(e.push(s.toString()),s=s[m],n=!1):(e.push(`<${s.localName}`),n=!0);break;case F:case ae:case ie:e.push((n?">":"")+s),n=!1;break}while(s!==u);return e.join("")}toJSON(){const e=[];return Wn(this,e),e}getAttributeNS(e,u){return this.getAttribute(u)}getElementsByTagNameNS(e,u){return this.getElementsByTagName(u)}hasAttributeNS(e,u){return this.hasAttribute(u)}removeAttributeNS(e,u){this.removeAttribute(u)}setAttributeNS(e,u,s){this.setAttribute(u,s)}setAttributeNodeNS(e){return this.setAttributeNode(e)}};const ts=new WeakMap,eo={get(t,e){return t[e]},set(t,e,u){return t[e]=u,!0}};let Ye=class extends ht{constructor(e,u,s=null){super(e,u),this.ownerSVGElement=s}get className(){return ts.has(this)||ts.set(this,new Proxy({baseVal:"",animVal:""},eo)),ts.get(this)}set className(e){const{classList:u}=this;u.clear(),u.add(...Ie(e).split(/\s+/))}get namespaceURI(){return"http://www.w3.org/2000/svg"}getAttribute(e){return e==="class"?[...this.classList].join(" "):super.getAttribute(e)}setAttribute(e,u){if(e==="class")this.className=u;else if(e==="style"){const{className:s}=this;s.baseVal=s.animVal=u}super.setAttribute(e,u)}};const W=()=>{throw new TypeError("Illegal constructor")};function jt(){W()}$(jt,Je),jt.prototype=Je.prototype;function Wt(){W()}$(Wt,_t),Wt.prototype=_t.prototype;function zt(){W()}$(zt,ct),zt.prototype=ct.prototype;function Kt(){W()}$(Kt,qt),Kt.prototype=qt.prototype;function Jt(){W()}$(Jt,Zu),Jt.prototype=Zu.prototype;function Qt(){W()}$(Qt,lt),Qt.prototype=lt.prototype;function Zt(){W()}$(Zt,ht),Zt.prototype=ht.prototype;function Yt(){W()}$(Yt,qe),Yt.prototype=qe.prototype;function Xt(){W()}$(Xt,es),Xt.prototype=es.prototype;function eu(){W()}$(eu,Ze),eu.prototype=Ze.prototype;function tu(){W()}$(tu,Ye),tu.prototype=Ye.prototype;const Pr={Attr:jt,CDATASection:Wt,CharacterData:zt,Comment:Kt,DocumentFragment:Jt,DocumentType:Qt,Element:Zt,Node:Yt,ShadowRoot:Xt,Text:eu,SVGElement:tu},ft=new WeakMap,l={get(t,e){return ft.has(t)&&ft.get(t)[e]||null},set(t,e,u){ft.has(t)||ft.set(t,{});const s=ft.get(t),n=e.slice(2);s[e]&&t.removeEventListener(n,s[e],!1),(s[e]=u)&&t.addEventListener(n,u,!1)}};class g extends ht{static get observedAttributes(){return[]}constructor(e=null,u=""){super(e,u);const s=!e;let n;if(s){const{constructor:r}=this;if(!ze.has(r))throw new Error("unable to initialize this Custom Element");({ownerDocument:e,localName:u,options:n}=ze.get(r))}if(e[st]){const{element:r,values:i}=e[st];e[st]=null;for(const[a,o]of i)r[a]=o;return r}s&&(this.ownerDocument=this[m].ownerDocument=e,this.localName=u,Oe.set(this,{connected:!1}),n.is&&this.setAttribute("is",n.is))}blur(){this.dispatchEvent(new Re("blur"))}click(){const e=new Re("click",{bubbles:!0,cancelable:!0});e.button=0,this.dispatchEvent(e)}get accessKeyLabel(){const{accessKey:e}=this;return e&&`Alt+Shift+${e}`}get isContentEditable(){return this.hasAttribute("contenteditable")}get contentEditable(){return N.get(this,"contenteditable")}set contentEditable(e){N.set(this,"contenteditable",e)}get draggable(){return N.get(this,"draggable")}set draggable(e){N.set(this,"draggable",e)}get hidden(){return N.get(this,"hidden")}set hidden(e){N.set(this,"hidden",e)}get spellcheck(){return N.get(this,"spellcheck")}set spellcheck(e){N.set(this,"spellcheck",e)}get accessKey(){return f.get(this,"accesskey")}set accessKey(e){f.set(this,"accesskey",e)}get dir(){return f.get(this,"dir")}set dir(e){f.set(this,"dir",e)}get lang(){return f.get(this,"lang")}set lang(e){f.set(this,"lang",e)}get title(){return f.get(this,"title")}set title(e){f.set(this,"title",e)}get onabort(){return l.get(this,"onabort")}set onabort(e){l.set(this,"onabort",e)}get onblur(){return l.get(this,"onblur")}set onblur(e){l.set(this,"onblur",e)}get oncancel(){return l.get(this,"oncancel")}set oncancel(e){l.set(this,"oncancel",e)}get oncanplay(){return l.get(this,"oncanplay")}set oncanplay(e){l.set(this,"oncanplay",e)}get oncanplaythrough(){return l.get(this,"oncanplaythrough")}set oncanplaythrough(e){l.set(this,"oncanplaythrough",e)}get onchange(){return l.get(this,"onchange")}set onchange(e){l.set(this,"onchange",e)}get onclick(){return l.get(this,"onclick")}set onclick(e){l.set(this,"onclick",e)}get onclose(){return l.get(this,"onclose")}set onclose(e){l.set(this,"onclose",e)}get oncontextmenu(){return l.get(this,"oncontextmenu")}set oncontextmenu(e){l.set(this,"oncontextmenu",e)}get oncuechange(){return l.get(this,"oncuechange")}set oncuechange(e){l.set(this,"oncuechange",e)}get ondblclick(){return l.get(this,"ondblclick")}set ondblclick(e){l.set(this,"ondblclick",e)}get ondrag(){return l.get(this,"ondrag")}set ondrag(e){l.set(this,"ondrag",e)}get ondragend(){return l.get(this,"ondragend")}set ondragend(e){l.set(this,"ondragend",e)}get ondragenter(){return l.get(this,"ondragenter")}set ondragenter(e){l.set(this,"ondragenter",e)}get ondragleave(){return l.get(this,"ondragleave")}set ondragleave(e){l.set(this,"ondragleave",e)}get ondragover(){return l.get(this,"ondragover")}set ondragover(e){l.set(this,"ondragover",e)}get ondragstart(){return l.get(this,"ondragstart")}set ondragstart(e){l.set(this,"ondragstart",e)}get ondrop(){return l.get(this,"ondrop")}set ondrop(e){l.set(this,"ondrop",e)}get ondurationchange(){return l.get(this,"ondurationchange")}set ondurationchange(e){l.set(this,"ondurationchange",e)}get onemptied(){return l.get(this,"onemptied")}set onemptied(e){l.set(this,"onemptied",e)}get onended(){return l.get(this,"onended")}set onended(e){l.set(this,"onended",e)}get onerror(){return l.get(this,"onerror")}set onerror(e){l.set(this,"onerror",e)}get onfocus(){return l.get(this,"onfocus")}set onfocus(e){l.set(this,"onfocus",e)}get oninput(){return l.get(this,"oninput")}set oninput(e){l.set(this,"oninput",e)}get oninvalid(){return l.get(this,"oninvalid")}set oninvalid(e){l.set(this,"oninvalid",e)}get onkeydown(){return l.get(this,"onkeydown")}set onkeydown(e){l.set(this,"onkeydown",e)}get onkeypress(){return l.get(this,"onkeypress")}set onkeypress(e){l.set(this,"onkeypress",e)}get onkeyup(){return l.get(this,"onkeyup")}set onkeyup(e){l.set(this,"onkeyup",e)}get onload(){return l.get(this,"onload")}set onload(e){l.set(this,"onload",e)}get onloadeddata(){return l.get(this,"onloadeddata")}set onloadeddata(e){l.set(this,"onloadeddata",e)}get onloadedmetadata(){return l.get(this,"onloadedmetadata")}set onloadedmetadata(e){l.set(this,"onloadedmetadata",e)}get onloadstart(){return l.get(this,"onloadstart")}set onloadstart(e){l.set(this,"onloadstart",e)}get onmousedown(){return l.get(this,"onmousedown")}set onmousedown(e){l.set(this,"onmousedown",e)}get onmouseenter(){return l.get(this,"onmouseenter")}set onmouseenter(e){l.set(this,"onmouseenter",e)}get onmouseleave(){return l.get(this,"onmouseleave")}set onmouseleave(e){l.set(this,"onmouseleave",e)}get onmousemove(){return l.get(this,"onmousemove")}set onmousemove(e){l.set(this,"onmousemove",e)}get onmouseout(){return l.get(this,"onmouseout")}set onmouseout(e){l.set(this,"onmouseout",e)}get onmouseover(){return l.get(this,"onmouseover")}set onmouseover(e){l.set(this,"onmouseover",e)}get onmouseup(){return l.get(this,"onmouseup")}set onmouseup(e){l.set(this,"onmouseup",e)}get onmousewheel(){return l.get(this,"onmousewheel")}set onmousewheel(e){l.set(this,"onmousewheel",e)}get onpause(){return l.get(this,"onpause")}set onpause(e){l.set(this,"onpause",e)}get onplay(){return l.get(this,"onplay")}set onplay(e){l.set(this,"onplay",e)}get onplaying(){return l.get(this,"onplaying")}set onplaying(e){l.set(this,"onplaying",e)}get onprogress(){return l.get(this,"onprogress")}set onprogress(e){l.set(this,"onprogress",e)}get onratechange(){return l.get(this,"onratechange")}set onratechange(e){l.set(this,"onratechange",e)}get onreset(){return l.get(this,"onreset")}set onreset(e){l.set(this,"onreset",e)}get onresize(){return l.get(this,"onresize")}set onresize(e){l.set(this,"onresize",e)}get onscroll(){return l.get(this,"onscroll")}set onscroll(e){l.set(this,"onscroll",e)}get onseeked(){return l.get(this,"onseeked")}set onseeked(e){l.set(this,"onseeked",e)}get onseeking(){return l.get(this,"onseeking")}set onseeking(e){l.set(this,"onseeking",e)}get onselect(){return l.get(this,"onselect")}set onselect(e){l.set(this,"onselect",e)}get onshow(){return l.get(this,"onshow")}set onshow(e){l.set(this,"onshow",e)}get onstalled(){return l.get(this,"onstalled")}set onstalled(e){l.set(this,"onstalled",e)}get onsubmit(){return l.get(this,"onsubmit")}set onsubmit(e){l.set(this,"onsubmit",e)}get onsuspend(){return l.get(this,"onsuspend")}set onsuspend(e){l.set(this,"onsuspend",e)}get ontimeupdate(){return l.get(this,"ontimeupdate")}set ontimeupdate(e){l.set(this,"ontimeupdate",e)}get ontoggle(){return l.get(this,"ontoggle")}set ontoggle(e){l.set(this,"ontoggle",e)}get onvolumechange(){return l.get(this,"onvolumechange")}set onvolumechange(e){l.set(this,"onvolumechange",e)}get onwaiting(){return l.get(this,"onwaiting")}set onwaiting(e){l.set(this,"onwaiting",e)}get onauxclick(){return l.get(this,"onauxclick")}set onauxclick(e){l.set(this,"onauxclick",e)}get ongotpointercapture(){return l.get(this,"ongotpointercapture")}set ongotpointercapture(e){l.set(this,"ongotpointercapture",e)}get onlostpointercapture(){return l.get(this,"onlostpointercapture")}set onlostpointercapture(e){l.set(this,"onlostpointercapture",e)}get onpointercancel(){return l.get(this,"onpointercancel")}set onpointercancel(e){l.set(this,"onpointercancel",e)}get onpointerdown(){return l.get(this,"onpointerdown")}set onpointerdown(e){l.set(this,"onpointerdown",e)}get onpointerenter(){return l.get(this,"onpointerenter")}set onpointerenter(e){l.set(this,"onpointerenter",e)}get onpointerleave(){return l.get(this,"onpointerleave")}set onpointerleave(e){l.set(this,"onpointerleave",e)}get onpointermove(){return l.get(this,"onpointermove")}set onpointermove(e){l.set(this,"onpointermove",e)}get onpointerout(){return l.get(this,"onpointerout")}set onpointerout(e){l.set(this,"onpointerout",e)}get onpointerover(){return l.get(this,"onpointerover")}set onpointerover(e){l.set(this,"onpointerover",e)}get onpointerup(){return l.get(this,"onpointerup")}set onpointerup(e){l.set(this,"onpointerup",e)}}const Fr="template";class us extends g{constructor(e){super(e,Fr);const u=this.ownerDocument.createDocumentFragment();(this[yt]=u)[H]=this}get content(){if(this.hasChildNodes()&&!this[yt].hasChildNodes())for(const e of this.childNodes)this[yt].appendChild(e.cloneNode(!0));return this[yt]}}L(Fr,us);class Hr extends g{constructor(e,u="html"){super(e,u)}}const{toString:to}=g.prototype;class uu extends g{get innerHTML(){return this.textContent}set innerHTML(e){this.textContent=e}toString(){return to.call(this.cloneNode()).replace(/></,`>${this.textContent}<`)}}const Br="script";class ss extends uu{constructor(e,u=Br){super(e,u)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get defer(){return N.get(this,"defer")}set defer(e){N.set(this,"defer",e)}get crossOrigin(){return f.get(this,"crossorigin")}set crossOrigin(e){f.set(this,"crossorigin",e)}get nomodule(){return N.get(this,"nomodule")}set nomodule(e){N.set(this,"nomodule",e)}get referrerPolicy(){return f.get(this,"referrerpolicy")}set referrerPolicy(e){f.set(this,"referrerpolicy",e)}get nonce(){return f.get(this,"nonce")}set nonce(e){f.set(this,"nonce",e)}get async(){return N.get(this,"async")}set async(e){N.set(this,"async",e)}get text(){return this.textContent}set text(e){this.textContent=e}}L(Br,ss);class $r extends g{constructor(e,u="frame"){super(e,u)}}const Vr="iframe";class ns extends g{constructor(e,u=Vr){super(e,u)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get srcdoc(){return f.get(this,"srcdoc")}set srcdoc(e){f.set(this,"srcdoc",e)}get name(){return f.get(this,"name")}set name(e){f.set(this,"name",e)}get allow(){return f.get(this,"allow")}set allow(e){f.set(this,"allow",e)}get allowFullscreen(){return N.get(this,"allowfullscreen")}set allowFullscreen(e){N.set(this,"allowfullscreen",e)}get referrerPolicy(){return f.get(this,"referrerpolicy")}set referrerPolicy(e){f.set(this,"referrerpolicy",e)}get loading(){return f.get(this,"loading")}set loading(e){f.set(this,"loading",e)}}L(Vr,ns);class Ur extends g{constructor(e,u="object"){super(e,u)}}class Gr extends g{constructor(e,u="head"){super(e,u)}}class jr extends g{constructor(e,u="body"){super(e,u)}}var rs={},is={},as={},Wr={},zr={};zr.StyleSheet=function(){this.parentStyleSheet=null},Wr.StyleSheet=zr.StyleSheet;var cs={},J={},k={};k.CSSRule=function(){this.parentRule=null,this.parentStyleSheet=null},k.CSSRule.UNKNOWN_RULE=0,k.CSSRule.STYLE_RULE=1,k.CSSRule.CHARSET_RULE=2,k.CSSRule.IMPORT_RULE=3,k.CSSRule.MEDIA_RULE=4,k.CSSRule.FONT_FACE_RULE=5,k.CSSRule.PAGE_RULE=6,k.CSSRule.KEYFRAMES_RULE=7,k.CSSRule.KEYFRAME_RULE=8,k.CSSRule.MARGIN_RULE=9,k.CSSRule.NAMESPACE_RULE=10,k.CSSRule.COUNTER_STYLE_RULE=11,k.CSSRule.SUPPORTS_RULE=12,k.CSSRule.DOCUMENT_RULE=13,k.CSSRule.FONT_FEATURE_VALUES_RULE=14,k.CSSRule.VIEWPORT_RULE=15,k.CSSRule.REGION_STYLE_RULE=16,k.CSSRule.prototype={constructor:k.CSSRule},J.CSSRule=k.CSSRule;var Kr;function su(){if(Kr)return cs;Kr=1;var t={CSSStyleDeclaration:et().CSSStyleDeclaration,CSSRule:J.CSSRule};return t.CSSStyleRule=function(){t.CSSRule.call(this),this.selectorText="",this.style=new t.CSSStyleDeclaration,this.style.parentRule=this},t.CSSStyleRule.prototype=new t.CSSRule,t.CSSStyleRule.prototype.constructor=t.CSSStyleRule,t.CSSStyleRule.prototype.type=1,Object.defineProperty(t.CSSStyleRule.prototype,"cssText",{get:function(){var e;return this.selectorText?e=this.selectorText+" {"+this.style.cssText+"}":e="",e},set:function(e){var u=t.CSSStyleRule.parse(e);this.style=u.style,this.selectorText=u.selectorText}}),t.CSSStyleRule.parse=function(e){for(var u=0,s="selector",n,r=u,i="",a={selector:!0,value:!0},o=new t.CSSStyleRule,c,d="",b;b=e.charAt(u);u++)switch(b){case" ":case" ":case"\r":case` -`:case"\f":if(a[s])switch(e.charAt(u-1)){case" ":case" ":case"\r":case` -`:case"\f":break;default:i+=" ";break}break;case'"':if(r=u+1,n=e.indexOf('"',r)+1,!n)throw'" is missing';i+=e.slice(u,n),u=n-1;break;case"'":if(r=u+1,n=e.indexOf("'",r)+1,!n)throw"' is missing";i+=e.slice(u,n),u=n-1;break;case"/":if(e.charAt(u+1)==="*"){if(u+=2,n=e.indexOf("*/",u),n===-1)throw new SyntaxError("Missing */");u=n+1}else i+=b;break;case"{":s==="selector"&&(o.selectorText=i.trim(),i="",s="name");break;case":":s==="name"?(c=i.trim(),i="",s="value"):i+=b;break;case"!":s==="value"&&e.indexOf("!important",u)===u?(d="important",u+=9):i+=b;break;case";":s==="value"?(o.style.setProperty(c,i.trim(),d),d="",i="",s="name"):i+=b;break;case"}":if(s==="value")o.style.setProperty(c,i.trim(),d),d="",i="";else{if(s==="name")break;i+=b}s="selector";break;default:i+=b;break}return o},cs.CSSStyleRule=t.CSSStyleRule,cs}var Jr;function nu(){if(Jr)return as;Jr=1;var t={StyleSheet:Wr.StyleSheet,CSSStyleRule:su().CSSStyleRule};return t.CSSStyleSheet=function(){t.StyleSheet.call(this),this.cssRules=[]},t.CSSStyleSheet.prototype=new t.StyleSheet,t.CSSStyleSheet.prototype.constructor=t.CSSStyleSheet,t.CSSStyleSheet.prototype.insertRule=function(e,u){if(u<0||u>this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");var s=t.parse(e).cssRules[0];return s.parentStyleSheet=this,this.cssRules.splice(u,0,s),u},t.CSSStyleSheet.prototype.deleteRule=function(e){if(e<0||e>=this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");this.cssRules.splice(e,1)},t.CSSStyleSheet.prototype.toString=function(){for(var e="",u=this.cssRules,s=0;s<u.length;s++)e+=u[s].cssText+` -`;return e},as.CSSStyleSheet=t.CSSStyleSheet,t.parse=ms().parse,as}var os={},ls={},ru={};ru.MediaList=function(){this.length=0},ru.MediaList.prototype={constructor:ru.MediaList,get mediaText(){return Array.prototype.join.call(this,", ")},set mediaText(t){for(var e=t.split(","),u=this.length=e.length,s=0;s<u;s++)this[s]=e[s].trim()},appendMedium:function(t){Array.prototype.indexOf.call(this,t)===-1&&(this[this.length]=t,this.length++)},deleteMedium:function(t){var e=Array.prototype.indexOf.call(this,t);e!==-1&&Array.prototype.splice.call(this,e,1)}},ls.MediaList=ru.MediaList;var Qr;function Zr(){if(Qr)return os;Qr=1;var t={CSSRule:J.CSSRule,CSSStyleSheet:nu().CSSStyleSheet,MediaList:ls.MediaList};return t.CSSImportRule=function(){t.CSSRule.call(this),this.href="",this.media=new t.MediaList,this.styleSheet=new t.CSSStyleSheet},t.CSSImportRule.prototype=new t.CSSRule,t.CSSImportRule.prototype.constructor=t.CSSImportRule,t.CSSImportRule.prototype.type=3,Object.defineProperty(t.CSSImportRule.prototype,"cssText",{get:function(){var e=this.media.mediaText;return"@import url("+this.href+")"+(e?" "+e:"")+";"},set:function(e){for(var u=0,s="",n="",r,i;i=e.charAt(u);u++)switch(i){case" ":case" ":case"\r":case` -`:case"\f":s==="after-import"?s="url":n+=i;break;case"@":!s&&e.indexOf("@import",u)===u&&(s="after-import",u+=6,n="");break;case"u":if(s==="url"&&e.indexOf("url(",u)===u){if(r=e.indexOf(")",u+1),r===-1)throw u+': ")" not found';u+=4;var a=e.slice(u,r);a[0]===a[a.length-1]&&(a[0]==='"'||a[0]==="'")&&(a=a.slice(1,-1)),this.href=a,u=r,s="media"}break;case'"':if(s==="url"){if(r=e.indexOf('"',u+1),!r)throw u+`: '"' not found`;this.href=e.slice(u+1,r),u=r,s="media"}break;case"'":if(s==="url"){if(r=e.indexOf("'",u+1),!r)throw u+`: "'" not found`;this.href=e.slice(u+1,r),u=r,s="media"}break;case";":s==="media"&&n&&(this.media.mediaText=n.trim());break;default:s==="media"&&(n+=i);break}}}),os.CSSImportRule=t.CSSImportRule,os}var Xe={},ce={CSSRule:J.CSSRule};ce.CSSGroupingRule=function(){ce.CSSRule.call(this),this.cssRules=[]},ce.CSSGroupingRule.prototype=new ce.CSSRule,ce.CSSGroupingRule.prototype.constructor=ce.CSSGroupingRule,ce.CSSGroupingRule.prototype.insertRule=function(e,u){if(u<0||u>this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");var s=ce.parse(e).cssRules[0];return s.parentRule=this,this.cssRules.splice(u,0,s),u},ce.CSSGroupingRule.prototype.deleteRule=function(e){if(e<0||e>=this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");this.cssRules.splice(e,1)[0].parentRule=null},Xe.CSSGroupingRule=ce.CSSGroupingRule;var ds={},bt={},be={CSSRule:J.CSSRule,CSSGroupingRule:Xe.CSSGroupingRule};be.CSSConditionRule=function(){be.CSSGroupingRule.call(this),this.cssRules=[]},be.CSSConditionRule.prototype=new be.CSSGroupingRule,be.CSSConditionRule.prototype.constructor=be.CSSConditionRule,be.CSSConditionRule.prototype.conditionText="",be.CSSConditionRule.prototype.cssText="",bt.CSSConditionRule=be.CSSConditionRule;var oe={CSSRule:J.CSSRule,CSSGroupingRule:Xe.CSSGroupingRule,CSSConditionRule:bt.CSSConditionRule,MediaList:ls.MediaList};oe.CSSMediaRule=function(){oe.CSSConditionRule.call(this),this.media=new oe.MediaList},oe.CSSMediaRule.prototype=new oe.CSSConditionRule,oe.CSSMediaRule.prototype.constructor=oe.CSSMediaRule,oe.CSSMediaRule.prototype.type=4,Object.defineProperties(oe.CSSMediaRule.prototype,{conditionText:{get:function(){return this.media.mediaText},set:function(t){this.media.mediaText=t},configurable:!0,enumerable:!0},cssText:{get:function(){for(var t=[],e=0,u=this.cssRules.length;e<u;e++)t.push(this.cssRules[e].cssText);return"@media "+this.media.mediaText+" {"+t.join("")+"}"},configurable:!0,enumerable:!0}}),ds.CSSMediaRule=oe.CSSMediaRule;var hs={},pe={CSSRule:J.CSSRule,CSSGroupingRule:Xe.CSSGroupingRule,CSSConditionRule:bt.CSSConditionRule};pe.CSSSupportsRule=function(){pe.CSSConditionRule.call(this)},pe.CSSSupportsRule.prototype=new pe.CSSConditionRule,pe.CSSSupportsRule.prototype.constructor=pe.CSSSupportsRule,pe.CSSSupportsRule.prototype.type=12,Object.defineProperty(pe.CSSSupportsRule.prototype,"cssText",{get:function(){for(var t=[],e=0,u=this.cssRules.length;e<u;e++)t.push(this.cssRules[e].cssText);return"@supports "+this.conditionText+" {"+t.join("")+"}"}}),hs.CSSSupportsRule=pe.CSSSupportsRule;var fs={},Yr;function Xr(){if(Yr)return fs;Yr=1;var t={CSSStyleDeclaration:et().CSSStyleDeclaration,CSSRule:J.CSSRule};return t.CSSFontFaceRule=function(){t.CSSRule.call(this),this.style=new t.CSSStyleDeclaration,this.style.parentRule=this},t.CSSFontFaceRule.prototype=new t.CSSRule,t.CSSFontFaceRule.prototype.constructor=t.CSSFontFaceRule,t.CSSFontFaceRule.prototype.type=5,Object.defineProperty(t.CSSFontFaceRule.prototype,"cssText",{get:function(){return"@font-face {"+this.style.cssText+"}"}}),fs.CSSFontFaceRule=t.CSSFontFaceRule,fs}var ei={},ge={CSSRule:J.CSSRule};ge.CSSHostRule=function(){ge.CSSRule.call(this),this.cssRules=[]},ge.CSSHostRule.prototype=new ge.CSSRule,ge.CSSHostRule.prototype.constructor=ge.CSSHostRule,ge.CSSHostRule.prototype.type=1001,Object.defineProperty(ge.CSSHostRule.prototype,"cssText",{get:function(){for(var t=[],e=0,u=this.cssRules.length;e<u;e++)t.push(this.cssRules[e].cssText);return"@host {"+t.join("")+"}"}}),ei.CSSHostRule=ge.CSSHostRule;var bs={},ti;function ps(){if(ti)return bs;ti=1;var t={CSSRule:J.CSSRule,CSSStyleDeclaration:et().CSSStyleDeclaration};return t.CSSKeyframeRule=function(){t.CSSRule.call(this),this.keyText="",this.style=new t.CSSStyleDeclaration,this.style.parentRule=this},t.CSSKeyframeRule.prototype=new t.CSSRule,t.CSSKeyframeRule.prototype.constructor=t.CSSKeyframeRule,t.CSSKeyframeRule.prototype.type=8,Object.defineProperty(t.CSSKeyframeRule.prototype,"cssText",{get:function(){return this.keyText+" {"+this.style.cssText+"} "}}),bs.CSSKeyframeRule=t.CSSKeyframeRule,bs}var gs={},me={CSSRule:J.CSSRule};me.CSSKeyframesRule=function(){me.CSSRule.call(this),this.name="",this.cssRules=[]},me.CSSKeyframesRule.prototype=new me.CSSRule,me.CSSKeyframesRule.prototype.constructor=me.CSSKeyframesRule,me.CSSKeyframesRule.prototype.type=7,Object.defineProperty(me.CSSKeyframesRule.prototype,"cssText",{get:function(){for(var t=[],e=0,u=this.cssRules.length;e<u;e++)t.push(" "+this.cssRules[e].cssText);return"@"+(this._vendorPrefix||"")+"keyframes "+this.name+` { -`+t.join(` -`)+` -}`}}),gs.CSSKeyframesRule=me.CSSKeyframesRule;var ui={},si={},iu={};iu.CSSValue=function(){},iu.CSSValue.prototype={constructor:iu.CSSValue,set cssText(t){var e=this._getConstructorName();throw new Error('DOMException: property "cssText" of "'+e+'" is readonly and can not be replaced with "'+t+'"!')},get cssText(){var t=this._getConstructorName();throw new Error('getter "cssText" of "'+t+'" is not implemented!')},_getConstructorName:function(){var t=this.constructor.toString(),e=t.match(/function\s([^\(]+)/),u=e[1];return u}},si.CSSValue=iu.CSSValue;var se={CSSValue:si.CSSValue};se.CSSValueExpression=function(e,u){this._token=e,this._idx=u},se.CSSValueExpression.prototype=new se.CSSValue,se.CSSValueExpression.prototype.constructor=se.CSSValueExpression,se.CSSValueExpression.prototype.parse=function(){for(var t=this._token,e=this._idx,u="",s="",n="",r,i=[];;++e){if(u=t.charAt(e),u===""){n="css expression error: unfinished expression!";break}switch(u){case"(":i.push(u),s+=u;break;case")":i.pop(u),s+=u;break;case"/":(r=this._parseJSComment(t,e))?r.error?n="css expression error: unfinished comment in expression!":e=r.idx:(r=this._parseJSRexExp(t,e))?(e=r.idx,s+=r.text):s+=u;break;case"'":case'"':r=this._parseJSString(t,e,u),r?(e=r.idx,s+=r.text):s+=u;break;default:s+=u;break}if(n||i.length===0)break}var a;return n?a={error:n}:a={idx:e,expression:s},a},se.CSSValueExpression.prototype._parseJSComment=function(t,e){var u=t.charAt(e+1),s;if(u==="/"||u==="*"){var n=e,r,i;if(u==="/"?i=` -`:u==="*"&&(i="*/"),r=t.indexOf(i,n+1+1),r!==-1)return r=r+i.length-1,s=t.substring(e,r+1),{idx:r,text:s};var a="css expression error: unfinished comment in expression!";return{error:a}}else return!1},se.CSSValueExpression.prototype._parseJSString=function(t,e,u){var s=this._findMatchedIdx(t,e,u),n;return s===-1?!1:(n=t.substring(e,s+u.length),{idx:s,text:n})},se.CSSValueExpression.prototype._parseJSRexExp=function(t,e){var u=t.substring(0,e).replace(/\s+$/,""),s=[/^$/,/\($/,/\[$/,/\!$/,/\+$/,/\-$/,/\*$/,/\/\s+/,/\%$/,/\=$/,/\>$/,/<$/,/\&$/,/\|$/,/\^$/,/\~$/,/\?$/,/\,$/,/delete$/,/in$/,/instanceof$/,/new$/,/typeof$/,/void$/],n=s.some(function(i){return i.test(u)});if(n){var r="/";return this._parseJSString(t,e,r)}else return!1},se.CSSValueExpression.prototype._findMatchedIdx=function(t,e,u){for(var s=e,n,r=-1;;)if(n=t.indexOf(u,s+1),n===-1){n=r;break}else{var i=t.substring(e+1,n),a=i.match(/\\+$/);if(!a||a[0]%2===0)break;s=n}var o=t.indexOf(` -`,e+1);return o<n&&(n=r),n},ui.CSSValueExpression=se.CSSValueExpression;var ni={},ri={},au={};au.MatcherList=function(){this.length=0},au.MatcherList.prototype={constructor:au.MatcherList,get matcherText(){return Array.prototype.join.call(this,", ")},set matcherText(t){for(var e=t.split(","),u=this.length=e.length,s=0;s<u;s++)this[s]=e[s].trim()},appendMatcher:function(t){Array.prototype.indexOf.call(this,t)===-1&&(this[this.length]=t,this.length++)},deleteMatcher:function(t){var e=Array.prototype.indexOf.call(this,t);e!==-1&&Array.prototype.splice.call(this,e,1)}},ri.MatcherList=au.MatcherList;var le={CSSRule:J.CSSRule,MatcherList:ri.MatcherList};le.CSSDocumentRule=function(){le.CSSRule.call(this),this.matcher=new le.MatcherList,this.cssRules=[]},le.CSSDocumentRule.prototype=new le.CSSRule,le.CSSDocumentRule.prototype.constructor=le.CSSDocumentRule,le.CSSDocumentRule.prototype.type=10,Object.defineProperty(le.CSSDocumentRule.prototype,"cssText",{get:function(){for(var t=[],e=0,u=this.cssRules.length;e<u;e++)t.push(this.cssRules[e].cssText);return"@-moz-document "+this.matcher.matcherText+" {"+t.join("")+"}"}}),ni.CSSDocumentRule=le.CSSDocumentRule;var ii;function ms(){if(ii)return is;ii=1;var t={};return t.parse=function(u){for(var s=0,n="before-selector",r,i="",a=0,o={selector:!0,value:!0,"value-parenthesis":!0,atRule:!0,"importRule-begin":!0,importRule:!0,atBlock:!0,conditionBlock:!0,"documentRule-begin":!0},c=new t.CSSStyleSheet,d=c,b,S=[],y=!1,w,V,Se="",I,de,De,xe,ne,B,Be,pt,_s=/@(-(?:\w+-)+)?keyframes/g,tt=function(va){var qs=u.substring(0,s).split(` -`),Ps=qs.length,Fs=qs.pop().length+1,St=new Error(va+" (line "+Ps+", char "+Fs+")");throw St.line=Ps,St.char=Fs,St.styleSheet=c,St},U;U=u.charAt(s);s++)switch(U){case" ":case" ":case"\r":case` -`:case"\f":o[n]&&(i+=U);break;case'"':r=s+1;do r=u.indexOf('"',r)+1,r||tt('Unmatched "');while(u[r-2]==="\\");switch(i+=u.slice(s,r),s=r-1,n){case"before-value":n="value";break;case"importRule-begin":n="importRule";break}break;case"'":r=s+1;do r=u.indexOf("'",r)+1,r||tt("Unmatched '");while(u[r-2]==="\\");switch(i+=u.slice(s,r),s=r-1,n){case"before-value":n="value";break;case"importRule-begin":n="importRule";break}break;case"/":u.charAt(s+1)==="*"?(s+=2,r=u.indexOf("*/",s),r===-1?tt("Missing */"):s=r+1):i+=U,n==="importRule-begin"&&(i+=" ",n="importRule");break;case"@":if(u.indexOf("@-moz-document",s)===s){n="documentRule-begin",Be=new t.CSSDocumentRule,Be.__starts=s,s+=13,i="";break}else if(u.indexOf("@media",s)===s){n="atBlock",de=new t.CSSMediaRule,de.__starts=s,s+=5,i="";break}else if(u.indexOf("@supports",s)===s){n="conditionBlock",De=new t.CSSSupportsRule,De.__starts=s,s+=8,i="";break}else if(u.indexOf("@host",s)===s){n="hostRule-begin",s+=4,pt=new t.CSSHostRule,pt.__starts=s,i="";break}else if(u.indexOf("@import",s)===s){n="importRule-begin",s+=6,i+="@import";break}else if(u.indexOf("@font-face",s)===s){n="fontFaceRule-begin",s+=9,ne=new t.CSSFontFaceRule,ne.__starts=s,i="";break}else{_s.lastIndex=s;var gt=_s.exec(u);if(gt&>.index===s){n="keyframesRule-begin",B=new t.CSSKeyframesRule,B.__starts=s,B._vendorPrefix=gt[1],s+=gt[0].length-1,i="";break}else n==="selector"&&(n="atRule")}i+=U;break;case"{":n==="selector"||n==="atRule"?(I.selectorText=i.trim(),I.style.__starts=s,i="",n="before-name"):n==="atBlock"?(de.media.mediaText=i.trim(),b&&S.push(b),d=b=de,de.parentStyleSheet=c,i="",n="before-selector"):n==="conditionBlock"?(De.conditionText=i.trim(),b&&S.push(b),d=b=De,De.parentStyleSheet=c,i="",n="before-selector"):n==="hostRule-begin"?(b&&S.push(b),d=b=pt,pt.parentStyleSheet=c,i="",n="before-selector"):n==="fontFaceRule-begin"?(b&&(ne.parentRule=b),ne.parentStyleSheet=c,I=ne,i="",n="before-name"):n==="keyframesRule-begin"?(B.name=i.trim(),b&&(S.push(b),B.parentRule=b),B.parentStyleSheet=c,d=b=B,i="",n="keyframeRule-begin"):n==="keyframeRule-begin"?(I=new t.CSSKeyframeRule,I.keyText=i.trim(),I.__starts=s,i="",n="before-name"):n==="documentRule-begin"&&(Be.matcher.matcherText=i.trim(),b&&(S.push(b),Be.parentRule=b),d=b=Be,Be.parentStyleSheet=c,i="",n="before-selector");break;case":":n==="name"?(V=i.trim(),i="",n="before-value"):i+=U;break;case"(":if(n==="value")if(i.trim()==="expression"){var mt=new t.CSSValueExpression(u,s).parse();mt.error?tt(mt.error):(i+=mt.expression,s=mt.idx)}else n="value-parenthesis",a=1,i+=U;else n==="value-parenthesis"&&a++,i+=U;break;case")":n==="value-parenthesis"&&(a--,a===0&&(n="value")),i+=U;break;case"!":n==="value"&&u.indexOf("!important",s)===s?(Se="important",s+=9):i+=U;break;case";":switch(n){case"value":I.style.setProperty(V,i.trim(),Se),Se="",i="",n="before-name";break;case"atRule":i="",n="before-selector";break;case"importRule":xe=new t.CSSImportRule,xe.parentStyleSheet=xe.styleSheet.parentStyleSheet=c,xe.cssText=i+U,c.cssRules.push(xe),i="",n="before-selector";break;default:i+=U;break}break;case"}":switch(n){case"value":I.style.setProperty(V,i.trim(),Se),Se="";case"before-name":case"name":I.__ends=s+1,b&&(I.parentRule=b),I.parentStyleSheet=c,d.cssRules.push(I),i="",d.constructor===t.CSSKeyframesRule?n="keyframeRule-begin":n="before-selector";break;case"keyframeRule-begin":case"before-selector":case"selector":for(b||tt("Unexpected }"),y=S.length>0;S.length>0;){if(b=S.pop(),b.constructor.name==="CSSMediaRule"||b.constructor.name==="CSSSupportsRule"){w=d,d=b,d.cssRules.push(w);break}S.length===0&&(y=!1)}y||(d.__ends=s+1,c.cssRules.push(d),d=c,b=null),i="",n="before-selector";break}break;default:switch(n){case"before-selector":n="selector",I=new t.CSSStyleRule,I.__starts=s;break;case"before-name":n="name";break;case"before-value":n="value";break;case"importRule-begin":n="importRule";break}i+=U;break}return c},is.parse=t.parse,t.CSSStyleSheet=nu().CSSStyleSheet,t.CSSStyleRule=su().CSSStyleRule,t.CSSImportRule=Zr().CSSImportRule,t.CSSGroupingRule=Xe.CSSGroupingRule,t.CSSMediaRule=ds.CSSMediaRule,t.CSSConditionRule=bt.CSSConditionRule,t.CSSSupportsRule=hs.CSSSupportsRule,t.CSSFontFaceRule=Xr().CSSFontFaceRule,t.CSSHostRule=ei.CSSHostRule,t.CSSStyleDeclaration=et().CSSStyleDeclaration,t.CSSKeyframeRule=ps().CSSKeyframeRule,t.CSSKeyframesRule=gs.CSSKeyframesRule,t.CSSValueExpression=ui.CSSValueExpression,t.CSSDocumentRule=ni.CSSDocumentRule,is}var ai;function et(){if(ai)return rs;ai=1;var t={};return t.CSSStyleDeclaration=function(){this.length=0,this.parentRule=null,this._importants={}},t.CSSStyleDeclaration.prototype={constructor:t.CSSStyleDeclaration,getPropertyValue:function(e){return this[e]||""},setProperty:function(e,u,s){if(this[e]){var n=Array.prototype.indexOf.call(this,e);n<0&&(this[this.length]=e,this.length++)}else this[this.length]=e,this.length++;this[e]=u+"",this._importants[e]=s},removeProperty:function(e){if(!(e in this))return"";var u=Array.prototype.indexOf.call(this,e);if(u<0)return"";var s=this[e];return this[e]="",Array.prototype.splice.call(this,u,1),s},getPropertyCSSValue:function(){},getPropertyPriority:function(e){return this._importants[e]||""},getPropertyShorthand:function(){},isPropertyImplicit:function(){},get cssText(){for(var e=[],u=0,s=this.length;u<s;++u){var n=this[u],r=this.getPropertyValue(n),i=this.getPropertyPriority(n);i&&(i=" !"+i),e[u]=n+": "+r+i+";"}return e.join(" ")},set cssText(e){var u,s;for(u=this.length;u--;)s=this[u],this[s]="";Array.prototype.splice.call(this,0,this.length),this._importants={};var n=t.parse("#bogus{"+e+"}").cssRules[0].style,r=n.length;for(u=0;u<r;++u)s=n[u],this.setProperty(n[u],n.getPropertyValue(s),n.getPropertyPriority(s))}},rs.CSSStyleDeclaration=t.CSSStyleDeclaration,t.parse=ms().parse,rs}nu().CSSStyleSheet,J.CSSRule,su().CSSStyleRule,Xe.CSSGroupingRule,bt.CSSConditionRule,ds.CSSMediaRule,hs.CSSSupportsRule,et().CSSStyleDeclaration,ps().CSSKeyframeRule,gs.CSSKeyframesRule,et().CSSStyleDeclaration,su().CSSStyleRule,Zr().CSSImportRule,Xr().CSSFontFaceRule,nu().CSSStyleSheet,ps().CSSKeyframeRule;var uo=ms().parse;const ci="style";class Ss extends uu{constructor(e,u=ci){super(e,u),this[Ue]=null}get sheet(){const e=this[Ue];return e!==null?e:this[Ue]=uo(this.textContent)}get innerHTML(){return super.innerHTML||""}set innerHTML(e){super.textContent=e,this[Ue]=null}get innerText(){return super.innerText||""}set innerText(e){super.textContent=e,this[Ue]=null}get textContent(){return super.textContent||""}set textContent(e){super.textContent=e,this[Ue]=null}}L(ci,Ss);class xs extends g{constructor(e,u="time"){super(e,u)}get dateTime(){return f.get(this,"datetime")}set dateTime(e){f.set(this,"datetime",e)}}L("time",xs);class oi extends g{constructor(e,u="fieldset"){super(e,u)}}class li extends g{constructor(e,u="embed"){super(e,u)}}class di extends g{constructor(e,u="hr"){super(e,u)}}class hi extends g{constructor(e,u="progress"){super(e,u)}}class fi extends g{constructor(e,u="p"){super(e,u)}}class bi extends g{constructor(e,u="table"){super(e,u)}}class pi extends g{constructor(e,u="frameset"){super(e,u)}}class gi extends g{constructor(e,u="li"){super(e,u)}}class mi extends g{constructor(e,u="base"){super(e,u)}}class Si extends g{constructor(e,u="datalist"){super(e,u)}}const xi="input";class ys extends g{constructor(e,u=xi){super(e,u)}get autofocus(){return N.get(this,"autofocus")||-1}set autofocus(e){N.set(this,"autofocus",e)}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}get placeholder(){return this.getAttribute("placeholder")}set placeholder(e){this.setAttribute("placeholder",e)}get type(){return this.getAttribute("type")}set type(e){this.setAttribute("type",e)}get value(){return f.get(this,"value")}set value(e){f.set(this,"value",e)}}L(xi,ys);class yi extends g{constructor(e,u="param"){super(e,u)}}class Ci extends g{constructor(e,u="media"){super(e,u)}}class Ei extends g{constructor(e,u="audio"){super(e,u)}}const wi="h1";class Cs extends g{constructor(e,u=wi){super(e,u)}}L([wi,"h2","h3","h4","h5","h6"],Cs);class vi extends g{constructor(e,u="dir"){super(e,u)}}class Ti extends g{constructor(e,u="quote"){super(e,u)}}class so{constructor(e,u){this.width=e,this.height=u}getContext(){return null}toDataURL(){return""}}var no={createCanvas:(t,e)=>new so(t,e)};const{createCanvas:ro}=no,Ni="canvas";class Es extends g{constructor(e,u=Ni){super(e,u),this[Y]=ro(300,150)}get width(){return this[Y].width}set width(e){Ae.set(this,"width",e),this[Y].width=e}get height(){return this[Y].height}set height(e){Ae.set(this,"height",e),this[Y].height=e}getContext(e){return this[Y].getContext(e)}toDataURL(...e){return this[Y].toDataURL(...e)}}L(Ni,Es);class Ai extends g{constructor(e,u="legend"){super(e,u)}}const Ri="option";class ws extends g{constructor(e,u=Ri){super(e,u)}get value(){return f.get(this,"value")}set value(e){f.set(this,"value",e)}get selected(){return N.get(this,"selected")}set selected(e){const u=this.parentElement?.querySelector("option[selected]");u&&u!==this&&(u.selected=!1),N.set(this,"selected",e)}}L(Ri,ws);class Di extends g{constructor(e,u="span"){super(e,u)}}class ki extends g{constructor(e,u="meter"){super(e,u)}}class Li extends g{constructor(e,u="video"){super(e,u)}}class Mi extends g{constructor(e,u="td"){super(e,u)}}const Ii="title";class vs extends uu{constructor(e,u=Ii){super(e,u)}}L(Ii,vs);class Oi extends g{constructor(e,u="output"){super(e,u)}}class _i extends g{constructor(e,u="tr"){super(e,u)}}class qi extends g{constructor(e,u="data"){super(e,u)}}class Pi extends g{constructor(e,u="menu"){super(e,u)}}const Fi="select";class Ts extends g{constructor(e,u=Fi){super(e,u)}get options(){let e=new ue,{firstElementChild:u}=this;for(;u;)u.tagName==="OPTGROUP"?e.push(...u.children):e.push(u),u=u.nextElementSibling;return e}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}get value(){return this.querySelector("option[selected]")?.value}}L(Fi,Ts);class Hi extends g{constructor(e,u="br"){super(e,u)}}const Bi="button";class Ns extends g{constructor(e,u=Bi){super(e,u)}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}get type(){return this.getAttribute("type")}set type(e){this.setAttribute("type",e)}}L(Bi,Ns);class $i extends g{constructor(e,u="map"){super(e,u)}}class Vi extends g{constructor(e,u="optgroup"){super(e,u)}}class Ui extends g{constructor(e,u="dl"){super(e,u)}}const Gi="textarea";class As extends uu{constructor(e,u=Gi){super(e,u)}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}get placeholder(){return this.getAttribute("placeholder")}set placeholder(e){this.setAttribute("placeholder",e)}get type(){return this.getAttribute("type")}set type(e){this.setAttribute("type",e)}get value(){return this.textContent}set value(e){this.textContent=e}}L(Gi,As);class ji extends g{constructor(e,u="font"){super(e,u)}}class Wi extends g{constructor(e,u="div"){super(e,u)}}const zi="link";class Rs extends g{constructor(e,u=zi){super(e,u)}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get href(){return f.get(this,"href")}set href(e){f.set(this,"href",e)}get hreflang(){return f.get(this,"hreflang")}set hreflang(e){f.set(this,"hreflang",e)}get media(){return f.get(this,"media")}set media(e){f.set(this,"media",e)}get rel(){return f.get(this,"rel")}set rel(e){f.set(this,"rel",e)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}}L(zi,Rs);const Ki="slot";class Ds extends g{constructor(e,u=Ki){super(e,u)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}assign(){}assignedNodes(e){const u=!!this.name,s=this.getRootNode().host?.childNodes??[];let n;if(u?n=[...s].filter(r=>r.slot===this.name):n=[...s].filter(r=>!r.slot),e?.flatten){const r=[];for(let i of n)i.localName==="slot"?r.push(...i.assignedNodes({flatten:!0})):r.push(i);n=r}return n.length?n:[...this.childNodes]}assignedElements(e){const u=this.assignedNodes(e).filter(s=>s.nodeType===1);return u.length?u:[...this.children]}}L(Ki,Ds);class Ji extends g{constructor(e,u="form"){super(e,u)}}const Qi="img";class cu extends g{constructor(e,u=Qi){super(e,u)}get alt(){return f.get(this,"alt")}set alt(e){f.set(this,"alt",e)}get sizes(){return f.get(this,"sizes")}set sizes(e){f.set(this,"sizes",e)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get srcset(){return f.get(this,"srcset")}set srcset(e){f.set(this,"srcset",e)}get title(){return f.get(this,"title")}set title(e){f.set(this,"title",e)}get width(){return Ae.get(this,"width")}set width(e){Ae.set(this,"width",e)}get height(){return Ae.get(this,"height")}set height(e){Ae.set(this,"height",e)}}L(Qi,cu);class Zi extends g{constructor(e,u="pre"){super(e,u)}}class Yi extends g{constructor(e,u="ul"){super(e,u)}}const Xi="meta";class ks extends g{constructor(e,u=Xi){super(e,u)}get name(){return f.get(this,"name")}set name(e){f.set(this,"name",e)}get httpEquiv(){return f.get(this,"http-equiv")}set httpEquiv(e){f.set(this,"http-equiv",e)}get content(){return f.get(this,"content")}set content(e){f.set(this,"content",e)}get charset(){return f.get(this,"charset")}set charset(e){f.set(this,"charset",e)}get media(){return f.get(this,"media")}set media(e){f.set(this,"media",e)}}L(Xi,ks);class ea extends g{constructor(e,u="picture"){super(e,u)}}class ta extends g{constructor(e,u="area"){super(e,u)}}class ua extends g{constructor(e,u="ol"){super(e,u)}}class sa extends g{constructor(e,u="caption"){super(e,u)}}const na="a";class Ls extends g{constructor(e,u=na){super(e,u)}get href(){return encodeURI(decodeURI(f.get(this,"href")))}set href(e){f.set(this,"href",decodeURI(e))}get download(){return encodeURI(decodeURI(f.get(this,"download")))}set download(e){f.set(this,"download",decodeURI(e))}get target(){return f.get(this,"target")}set target(e){f.set(this,"target",e)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}get rel(){return f.get(this,"rel")}set rel(e){f.set(this,"rel",e)}}L(na,Ls);class ra extends g{constructor(e,u="label"){super(e,u)}}class ia extends g{constructor(e,u="unknown"){super(e,u)}}class aa extends g{constructor(e,u="mod"){super(e,u)}}class ca extends g{constructor(e,u="details"){super(e,u)}}const oa="source";class Ms extends g{constructor(e,u=oa){super(e,u)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get srcset(){return f.get(this,"srcset")}set srcset(e){f.set(this,"srcset",e)}get sizes(){return f.get(this,"sizes")}set sizes(e){f.set(this,"sizes",e)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}}L(oa,Ms);class la extends g{constructor(e,u="track"){super(e,u)}}class da extends g{constructor(e,u="marquee"){super(e,u)}}const ha={HTMLElement:g,HTMLTemplateElement:us,HTMLHtmlElement:Hr,HTMLScriptElement:ss,HTMLFrameElement:$r,HTMLIFrameElement:ns,HTMLObjectElement:Ur,HTMLHeadElement:Gr,HTMLBodyElement:jr,HTMLStyleElement:Ss,HTMLTimeElement:xs,HTMLFieldSetElement:oi,HTMLEmbedElement:li,HTMLHRElement:di,HTMLProgressElement:hi,HTMLParagraphElement:fi,HTMLTableElement:bi,HTMLFrameSetElement:pi,HTMLLIElement:gi,HTMLBaseElement:mi,HTMLDataListElement:Si,HTMLInputElement:ys,HTMLParamElement:yi,HTMLMediaElement:Ci,HTMLAudioElement:Ei,HTMLHeadingElement:Cs,HTMLDirectoryElement:vi,HTMLQuoteElement:Ti,HTMLCanvasElement:Es,HTMLLegendElement:Ai,HTMLOptionElement:ws,HTMLSpanElement:Di,HTMLMeterElement:ki,HTMLVideoElement:Li,HTMLTableCellElement:Mi,HTMLTitleElement:vs,HTMLOutputElement:Oi,HTMLTableRowElement:_i,HTMLDataElement:qi,HTMLMenuElement:Pi,HTMLSelectElement:Ts,HTMLBRElement:Hi,HTMLButtonElement:Ns,HTMLMapElement:$i,HTMLOptGroupElement:Vi,HTMLDListElement:Ui,HTMLTextAreaElement:As,HTMLFontElement:ji,HTMLDivElement:Wi,HTMLLinkElement:Rs,HTMLSlotElement:Ds,HTMLFormElement:Ji,HTMLImageElement:cu,HTMLPreElement:Zi,HTMLUListElement:Yi,HTMLMetaElement:ks,HTMLPictureElement:ea,HTMLAreaElement:ta,HTMLOListElement:ua,HTMLTableCaptionElement:sa,HTMLAnchorElement:Ls,HTMLLabelElement:ra,HTMLUnknownElement:ia,HTMLModElement:aa,HTMLDetailsElement:ca,HTMLSourceElement:Ms,HTMLTrackElement:la,HTMLMarqueeElement:da},ou={test:()=>!0},io={"text/html":{docType:"<!DOCTYPE html>",ignoreCase:!0,voidElements:/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i},"image/svg+xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:ou},"text/xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:ou},"application/xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:ou},"application/xhtml+xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:ou}};class Is extends Re{constructor(e,u={}){super(e,u),this.detail=u.detail}}class fa extends Re{constructor(e,u={}){super(e,u),this.inputType=u.inputType,this.data=u.data,this.dataTransfer=u.dataTransfer,this.isComposing=u.isComposing||!1,this.ranges=u.ranges}}const ao=t=>class extends cu{constructor(u,s){switch(super(t),arguments.length){case 1:this.height=u,this.width=u;break;case 2:this.height=s,this.width=u;break}}},ba=({[G]:t,[m]:e},u=null)=>{Pn(t[D],e[p]);do{const s=K(t),n=s===e?s:s[p];u?u.insertBefore(t,u[m]):t.remove(),t=n}while(t!==e)};class Os{constructor(){this[G]=null,this[m]=null,this.commonAncestorContainer=null}insertNode(e){this[m].parentNode.insertBefore(e,this[G])}selectNode(e){this[G]=e,this[m]=K(e)}selectNodeContents(e){this.selectNode(e),this.commonAncestorContainer=e}surroundContents(e){e.replaceChildren(this.extractContents())}setStartBefore(e){this[G]=e}setStartAfter(e){this[G]=e.nextSibling}setEndBefore(e){this[m]=K(e.previousSibling)}setEndAfter(e){this[m]=K(e)}cloneContents(){let{[G]:e,[m]:u}=this;const s=e.ownerDocument.createDocumentFragment();for(;e!==u;)s.insertBefore(e.cloneNode(!0),s[m]),e=K(e),e!==u&&(e=e[p]);return s}deleteContents(){ba(this)}extractContents(){const e=this[G].ownerDocument.createDocumentFragment();return ba(this,e),e}createContextualFragment(e){const{commonAncestorContainer:u}=this,s="ownerSVGElement"in u,n=s?u.ownerDocument:u,r=n.createElement("template");r.innerHTML=e;let{content:i}=r;if(s){const a=[...i.childNodes];i=n.createDocumentFragment(),Object.setPrototypeOf(i,Ye.prototype),i.ownerSVGElement=n;for(const o of a)Object.setPrototypeOf(o,Ye.prototype),o.ownerSVGElement=n,i.appendChild(o)}else this.selectNode(i);return i}cloneRange(){const e=new Os;return e[G]=this[G],e[m]=this[m],e}}const co=({nodeType:t},e)=>{switch(t){case v:return e&Ln;case F:return e&Mn;case ae:return e&On;case ie:return e&In}return 0};class oo{constructor(e,u=kn){this.root=e,this.currentNode=e,this.whatToShow=u;let{[p]:s,[m]:n}=e;if(e.nodeType===ve){const{documentElement:i}=e;s=i,n=i[m]}const r=[];for(;s!==n;)co(s,u)&&r.push(s),s=s[p];this[H]={i:0,nodes:r}}nextNode(){const e=this[H];return this.currentNode=e.i<e.nodes.length?e.nodes[e.i++]:null,this.currentNode}}const pa=(t,e,u)=>{let{[p]:s,[m]:n}=e;return t.call({ownerDocument:e,[p]:s,[m]:n},u)},ga=P0({},Pr,ha,{CustomEvent:Is,Event:Re,EventTarget:Ot,InputEvent:fa,NamedNodeMap:_r,NodeList:ue}),lu=new WeakMap;let He=class extends Qu{constructor(e){super(null,"#document",ve),this[Z]={active:!1,registry:null},this[ye]={active:!1,class:null},this[Ve]=io[e],this[ke]=null,this[bu]=null,this[Ct]=null,this[Y]=null,this[st]=null}get defaultView(){return lu.has(this)||lu.set(this,new Proxy(globalThis,{set:(e,u,s)=>{switch(u){case"addEventListener":case"removeEventListener":case"dispatchEvent":this[ut][u]=s;break;default:e[u]=s;break}return!0},get:(e,u)=>{switch(u){case"addEventListener":case"removeEventListener":case"dispatchEvent":if(!this[ut]){const s=this[ut]=new Ot;s.dispatchEvent=s.dispatchEvent.bind(s),s.addEventListener=s.addEventListener.bind(s),s.removeEventListener=s.removeEventListener.bind(s)}return this[ut][u];case"document":return this;case"navigator":return{userAgent:"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36"};case"window":return lu.get(this);case"customElements":return this[Z].registry||(this[Z]=new G0(this)),this[Z];case"performance":return z0;case"DOMParser":return this[bu];case"Image":return this[Y]||(this[Y]=ao(this)),this[Y];case"MutationObserver":return this[ye].class||(this[ye]=new J0(this)),this[ye].class}return this[Ct]&&this[Ct][u]||ga[u]||e[u]}})),lu.get(this)}get doctype(){const e=this[ke];if(e)return e;const{firstChild:u}=this;return u&&u.nodeType===Me?this[ke]=u:null}set doctype(e){if(/^([a-z:]+)(\s+system|\s+public(\s+"([^"]+)")?)?(\s+"([^"]+)")?/i.test(e)){const{$1:u,$4:s,$6:n}=RegExp;this[ke]=new lt(this,u,s,n),We(this,this[ke],this[p])}}get documentElement(){return this.firstElementChild}get isConnected(){return!0}_getParent(){return this[ut]}createAttribute(e){return new Je(this,e)}createCDATASection(e){return new _t(this,e)}createComment(e){return new qt(this,e)}createDocumentFragment(){return new Zu(this)}createDocumentType(e,u,s){return new lt(this,e,u,s)}createElement(e){return new ht(this,e)}createRange(){const e=new Os;return e.commonAncestorContainer=this,e}createTextNode(e){return new Ze(this,e)}createTreeWalker(e,u=-1){return new oo(e,u)}createNodeIterator(e,u=-1){return this.createTreeWalker(e,u)}createEvent(e){const u=F0(e==="Event"?new Re(""):new Is(""));return u.initEvent=u.initCustomEvent=(s,n=!1,r=!1,i)=>{u.bubbles=!!n,H0(u,{type:{value:s},canBubble:{value:n},cancelable:{value:r},detail:{value:i}})},u}cloneNode(e=!1){const{constructor:u,[Z]:s,[ke]:n}=this,r=new u;if(r[Z]=s,e){const i=r[m],{childNodes:a}=this;for(let{length:o}=a,c=0;c<o;c++)r.insertBefore(a[c].cloneNode(!0),i);n&&(r[ke]=a[0])}return r}importNode(e){const u=1<arguments.length&&!!arguments[1],s=e.cloneNode(u),{[Z]:n}=this,{active:r}=n,i=a=>{const{ownerDocument:o,nodeType:c}=a;a.ownerDocument=this,r&&o!==this&&c===v&&n.upgrade(a)};if(i(s),u)switch(s.nodeType){case v:case ee:{let{[p]:a,[m]:o}=s;for(;a!==o;)a.nodeType===v&&i(a),a=a[p];break}}return s}toString(){return this.childNodes.join("")}querySelector(e){return pa(super.querySelector,this,e)}querySelectorAll(e){return pa(super.querySelectorAll,this,e)}getElementsByTagNameNS(e,u){return this.getElementsByTagName(u)}createAttributeNS(e,u){return this.createAttribute(u)}createElementNS(e,u,s){return e===kt?new Ye(this,u,null):this.createElement(u,s)}};$(ga.Document=function(){W()},He).prototype=He.prototype;const lo=(t,e,u,s)=>{if(!e&&Ke.has(u)){const i=Ke.get(u);return new i(t,u)}const{[Z]:{active:n,registry:r}}=t;if(n){const i=e?s.is:u;if(r.has(i)){const{Class:a}=r.get(i),o=new a(t,u);return Oe.set(o,{connected:!1}),o}}return new g(t,u)};class ma extends He{constructor(){super("text/html")}get all(){const e=new ue;let{[p]:u,[m]:s}=this;for(;u!==s;){switch(u.nodeType){case v:e.push(u);break}u=u[p]}return e}get head(){const{documentElement:e}=this;let{firstElementChild:u}=e;return(!u||u.tagName!=="HEAD")&&(u=this.createElement("head"),e.prepend(u)),u}get body(){const{head:e}=this;let{nextElementSibling:u}=e;return(!u||u.tagName!=="BODY")&&(u=this.createElement("body"),e.after(u)),u}get title(){const{head:e}=this;return e.getElementsByTagName("title").at(0)?.textContent||""}set title(e){const{head:u}=this;let s=u.getElementsByTagName("title").at(0);s?s.textContent=e:u.insertBefore(this.createElement("title"),u.firstChild).textContent=e}createElement(e,u){const s=!!(u&&u.is),n=lo(this,s,e,u);return s&&n.setAttribute("is",u.is),n}}class ho extends He{constructor(){super("image/svg+xml")}toString(){return this[Ve].docType+super.toString()}}class fo extends He{constructor(){super("text/xml")}toString(){return this[Ve].docType+super.toString()}}class hu{parseFromString(e,u,s=null){let n=!1,r;return u==="text/html"?(n=!0,r=new ma):u==="image/svg+xml"?r=new ho:r=new fo,r[bu]=hu,s&&(r[Ct]=s),n&&e==="..."&&(e="<!doctype html><html><head></head><body></body></html>"),e?$n(r,n,e):r}}const{parse:bo}=JSON,du=(t,e,u)=>{e.parentNode=t,We(u[D],e,u)},po=(t,e)=>{if(Ke.has(e)){const u=Ke.get(e);return new u(t,e)}return new g(t,e)},go=t=>{const e=typeof t=="string"?bo(t):t,{length:u}=e,s=new ma;let n=s,r=n[m],i=!1,a=0;for(;a<u;){let o=e[a++];switch(o){case v:{const c=e[a++],d=i||c==="svg"||c==="SVG",b=d?new Ye(s,c,n.ownerSVGElement||null):po(s,c);ku(r[D],b,r),b.parentNode=n,n=b,r=n[m],i=d;break}case q:{const c=e[a++],d=typeof e[a]=="string"?e[a++]:"",b=new Je(s,c,d);b.ownerElement=n,We(r[D],b,r);break}case F:du(n,new Ze(s,e[a++]),r);break;case ae:du(n,new qt(s,e[a++]),r);break;case ie:du(n,new _t(s,e[a++]),r);break;case Me:{const c=[s];for(;typeof e[a]=="string";)c.push(e[a++]);c.length===3&&/\.dtd$/i.test(c[2])&&c.splice(2,0,""),du(n,new lt(...c),r);break}case ee:n=s.createDocumentFragment(),r=n[m];case ve:break;default:do o-=fe,i&&!n.ownerSVGElement&&(i=!1),n=n.parentNode||n;while(o<0);r=n[m];break}}switch(a&&e[0]){case v:return s.firstElementChild;case ee:return n}return s},mo=t=>t.toJSON();class So{static get SHOW_ALL(){return kn}static get SHOW_ELEMENT(){return Ln}static get SHOW_COMMENT(){return On}static get SHOW_CDATA_SECTION(){return In}static get SHOW_TEXT(){return Mn}}const xo=(t,e=null)=>new hu().parseFromString(t,"text/html",e).defaultView;function Sa(){W()}$(Sa,He).prototype=He.prototype;export{jt as Attr,Wt as CDATASection,zt as CharacterData,Kt as Comment,Is as CustomEvent,hu as DOMParser,Sa as Document,Jt as DocumentFragment,Qt as DocumentType,Zt as Element,Re as Event,Ot as EventTarget,Pr as Facades,Ls as HTMLAnchorElement,ta as HTMLAreaElement,Ei as HTMLAudioElement,Hi as HTMLBRElement,mi as HTMLBaseElement,jr as HTMLBodyElement,Ns as HTMLButtonElement,Es as HTMLCanvasElement,ha as HTMLClasses,Ui as HTMLDListElement,qi as HTMLDataElement,Si as HTMLDataListElement,ca as HTMLDetailsElement,vi as HTMLDirectoryElement,Wi as HTMLDivElement,g as HTMLElement,li as HTMLEmbedElement,oi as HTMLFieldSetElement,ji as HTMLFontElement,Ji as HTMLFormElement,$r as HTMLFrameElement,pi as HTMLFrameSetElement,di as HTMLHRElement,Gr as HTMLHeadElement,Cs as HTMLHeadingElement,Hr as HTMLHtmlElement,ns as HTMLIFrameElement,cu as HTMLImageElement,ys as HTMLInputElement,gi as HTMLLIElement,ra as HTMLLabelElement,Ai as HTMLLegendElement,Rs as HTMLLinkElement,$i as HTMLMapElement,da as HTMLMarqueeElement,Ci as HTMLMediaElement,Pi as HTMLMenuElement,ks as HTMLMetaElement,ki as HTMLMeterElement,aa as HTMLModElement,ua as HTMLOListElement,Ur as HTMLObjectElement,Vi as HTMLOptGroupElement,ws as HTMLOptionElement,Oi as HTMLOutputElement,fi as HTMLParagraphElement,yi as HTMLParamElement,ea as HTMLPictureElement,Zi as HTMLPreElement,hi as HTMLProgressElement,Ti as HTMLQuoteElement,ss as HTMLScriptElement,Ts as HTMLSelectElement,Ds as HTMLSlotElement,Ms as HTMLSourceElement,Di as HTMLSpanElement,Ss as HTMLStyleElement,sa as HTMLTableCaptionElement,Mi as HTMLTableCellElement,bi as HTMLTableElement,_i as HTMLTableRowElement,us as HTMLTemplateElement,As as HTMLTextAreaElement,xs as HTMLTimeElement,vs as HTMLTitleElement,la as HTMLTrackElement,Yi as HTMLUListElement,ia as HTMLUnknownElement,Li as HTMLVideoElement,fa as InputEvent,Yt as Node,So as NodeFilter,ue as NodeList,tu as SVGElement,Xt as ShadowRoot,eu as Text,W as illegalConstructor,xo as parseHTML,go as parseJSON,mo as toJSON}; diff --git a/appinventor/lib/linkedom/linkedom.min.js b/appinventor/lib/linkedom/linkedom.min.js index 74df05a2730..a0ea0192d47 100644 --- a/appinventor/lib/linkedom/linkedom.min.js +++ b/appinventor/lib/linkedom/linkedom.min.js @@ -1,8 +1,19 @@ -/** - * Minified by jsDelivr using Terser v5.19.2. - * Original file: /npm/linkedom@0.18.4/cjs/index.js - * - * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files - */ -"use strict";const{DOMParser:DOMParser}=require("./dom/parser.js"),{Document:_Document}=require("./interface/document.js"),{illegalConstructor:illegalConstructor}=require("./shared/facades.js"),{setPrototypeOf:setPrototypeOf}=require("./shared/object.js");(e=>{exports.parseJSON=e.parseJSON,exports.toJSON=e.toJSON})(require("./shared/parse-json.js")),(e=>{Object.keys(e).map((t=>"default"!==t&&(exports[t]=e[t])))})(require("./shared/facades.js")),(e=>{Object.keys(e).map((t=>"default"!==t&&(exports[t]=e[t])))})(require("./shared/html-classes.js")),exports.DOMParser=DOMParser,(e=>{exports.CustomEvent=e.CustomEvent})(require("./interface/custom-event.js")),(e=>{exports.Event=e.Event})(require("./interface/event.js")),(e=>{exports.EventTarget=e.EventTarget})(require("./interface/event-target.js")),(e=>{exports.InputEvent=e.InputEvent})(require("./interface/input-event.js")),(e=>{exports.NodeList=e.NodeList})(require("./interface/node-list.js")),(e=>{exports.NodeFilter=e.NodeFilter})(require("./interface/node-filter.js"));const parseHTML=(e,t=null)=>(new DOMParser).parseFromString(e,"text/html",t).defaultView;function Document(){illegalConstructor()}exports.parseHTML=parseHTML,exports.Document=Document,setPrototypeOf(Document,_Document).prototype=_Document.prototype; -//# sourceMappingURL=/sm/c6b47c97faeeb0d91f4f77d54bf0f83ddd42aa50364a6c8a303e39bb86fa25e4.map \ No newline at end of file +const xt=Symbol("changed"),$e=Symbol("classList"),Z=Symbol("CustomElements"),yt=Symbol("content"),fu=Symbol("dataset"),ke=Symbol("doctype"),bu=Symbol("DOMParser"),m=Symbol("end"),ut=Symbol("EventTarget"),Ct=Symbol("globals"),Y=Symbol("image"),Ve=Symbol("mime"),ye=Symbol("MutationObserver"),p=Symbol("next"),Hs=Symbol("ownerElement"),D=Symbol("prev"),H=Symbol("private"),Ue=Symbol("sheet"),G=Symbol("start"),pu=Symbol("style"),st=Symbol("upgrade"),R=Symbol("value");var Bs=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(t=>t.charCodeAt(0))),$s=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(t=>t.charCodeAt(0))),gu;const Ta=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),mu=(gu=String.fromCodePoint)!==null&&gu!==void 0?gu:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|t&1023),e+=String.fromCharCode(t),e};function Na(t){var e;return t>=55296&&t<=57343||t>1114111?65533:(e=Ta.get(t))!==null&&e!==void 0?e:t}var O;(function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"})(O||(O={}));const Aa=32;var Ce;(function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"})(Ce||(Ce={}));function Su(t){return t>=O.ZERO&&t<=O.NINE}function Ra(t){return t>=O.UPPER_A&&t<=O.UPPER_F||t>=O.LOWER_A&&t<=O.LOWER_F}function Da(t){return t>=O.UPPER_A&&t<=O.UPPER_Z||t>=O.LOWER_A&&t<=O.LOWER_Z||Su(t)}function ka(t){return t===O.EQUALS||Da(t)}var _;(function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"})(_||(_={}));var re;(function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"})(re||(re={}));class Vs{constructor(e,u,s){this.decodeTree=e,this.emitCodePoint=u,this.errors=s,this.state=_.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=re.Strict}startEntity(e){this.decodeMode=e,this.state=_.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(e,u){switch(this.state){case _.EntityStart:return e.charCodeAt(u)===O.NUM?(this.state=_.NumericStart,this.consumed+=1,this.stateNumericStart(e,u+1)):(this.state=_.NamedEntity,this.stateNamedEntity(e,u));case _.NumericStart:return this.stateNumericStart(e,u);case _.NumericDecimal:return this.stateNumericDecimal(e,u);case _.NumericHex:return this.stateNumericHex(e,u);case _.NamedEntity:return this.stateNamedEntity(e,u)}}stateNumericStart(e,u){return u>=e.length?-1:(e.charCodeAt(u)|Aa)===O.LOWER_X?(this.state=_.NumericHex,this.consumed+=1,this.stateNumericHex(e,u+1)):(this.state=_.NumericDecimal,this.stateNumericDecimal(e,u))}addToNumericResult(e,u,s,n){if(u!==s){const r=s-u;this.result=this.result*Math.pow(n,r)+parseInt(e.substr(u,r),n),this.consumed+=r}}stateNumericHex(e,u){const s=u;for(;u<e.length;){const n=e.charCodeAt(u);if(Su(n)||Ra(n))u+=1;else return this.addToNumericResult(e,s,u,16),this.emitNumericEntity(n,3)}return this.addToNumericResult(e,s,u,16),-1}stateNumericDecimal(e,u){const s=u;for(;u<e.length;){const n=e.charCodeAt(u);if(Su(n))u+=1;else return this.addToNumericResult(e,s,u,10),this.emitNumericEntity(n,2)}return this.addToNumericResult(e,s,u,10),-1}emitNumericEntity(e,u){var s;if(this.consumed<=u)return(s=this.errors)===null||s===void 0||s.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(e===O.SEMI)this.consumed+=1;else if(this.decodeMode===re.Strict)return 0;return this.emitCodePoint(Na(this.result),this.consumed),this.errors&&(e!==O.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(e,u){const{decodeTree:s}=this;let n=s[this.treeIndex],r=(n&Ce.VALUE_LENGTH)>>14;for(;u<e.length;u++,this.excess++){const i=e.charCodeAt(u);if(this.treeIndex=La(s,n,this.treeIndex+Math.max(1,r),i),this.treeIndex<0)return this.result===0||this.decodeMode===re.Attribute&&(r===0||ka(i))?0:this.emitNotTerminatedNamedEntity();if(n=s[this.treeIndex],r=(n&Ce.VALUE_LENGTH)>>14,r!==0){if(i===O.SEMI)return this.emitNamedEntityData(this.treeIndex,r,this.consumed+this.excess);this.decodeMode!==re.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var e;const{result:u,decodeTree:s}=this,n=(s[u]&Ce.VALUE_LENGTH)>>14;return this.emitNamedEntityData(u,n,this.consumed),(e=this.errors)===null||e===void 0||e.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,u,s){const{decodeTree:n}=this;return this.emitCodePoint(u===1?n[e]&~Ce.VALUE_LENGTH:n[e+1],s),u===3&&this.emitCodePoint(n[e+2],s),s}end(){var e;switch(this.state){case _.NamedEntity:return this.result!==0&&(this.decodeMode!==re.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case _.NumericDecimal:return this.emitNumericEntity(0,2);case _.NumericHex:return this.emitNumericEntity(0,3);case _.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case _.EntityStart:return 0}}}function Us(t){let e="";const u=new Vs(t,s=>e+=mu(s));return function(n,r){let i=0,a=0;for(;(a=n.indexOf("&",a))>=0;){e+=n.slice(i,a),u.startEntity(r);const c=u.write(n,a+1);if(c<0){i=a+u.end();break}i=a+c,a=c===0?i+1:i}const o=e+n.slice(i);return e="",o}}function La(t,e,u,s){const n=(e&Ce.BRANCH_LENGTH)>>7,r=e&Ce.JUMP_TABLE;if(n===0)return r!==0&&s===r?u:-1;if(r){const o=s-r;return o<0||o>=n?-1:t[u+o]-1}let i=u,a=i+n-1;for(;i<=a;){const o=i+a>>>1,c=t[o];if(c<s)i=o+1;else if(c>s)a=o-1;else return t[o+n]}return-1}Us(Bs),Us($s);var x;(function(t){t[t.Tab=9]="Tab",t[t.NewLine=10]="NewLine",t[t.FormFeed=12]="FormFeed",t[t.CarriageReturn=13]="CarriageReturn",t[t.Space=32]="Space",t[t.ExclamationMark=33]="ExclamationMark",t[t.Number=35]="Number",t[t.Amp=38]="Amp",t[t.SingleQuote=39]="SingleQuote",t[t.DoubleQuote=34]="DoubleQuote",t[t.Dash=45]="Dash",t[t.Slash=47]="Slash",t[t.Zero=48]="Zero",t[t.Nine=57]="Nine",t[t.Semi=59]="Semi",t[t.Lt=60]="Lt",t[t.Eq=61]="Eq",t[t.Gt=62]="Gt",t[t.Questionmark=63]="Questionmark",t[t.UpperA=65]="UpperA",t[t.LowerA=97]="LowerA",t[t.UpperF=70]="UpperF",t[t.LowerF=102]="LowerF",t[t.UpperZ=90]="UpperZ",t[t.LowerZ=122]="LowerZ",t[t.LowerX=120]="LowerX",t[t.OpeningSquareBracket=91]="OpeningSquareBracket"})(x||(x={}));var h;(function(t){t[t.Text=1]="Text",t[t.BeforeTagName=2]="BeforeTagName",t[t.InTagName=3]="InTagName",t[t.InSelfClosingTag=4]="InSelfClosingTag",t[t.BeforeClosingTagName=5]="BeforeClosingTagName",t[t.InClosingTagName=6]="InClosingTagName",t[t.AfterClosingTagName=7]="AfterClosingTagName",t[t.BeforeAttributeName=8]="BeforeAttributeName",t[t.InAttributeName=9]="InAttributeName",t[t.AfterAttributeName=10]="AfterAttributeName",t[t.BeforeAttributeValue=11]="BeforeAttributeValue",t[t.InAttributeValueDq=12]="InAttributeValueDq",t[t.InAttributeValueSq=13]="InAttributeValueSq",t[t.InAttributeValueNq=14]="InAttributeValueNq",t[t.BeforeDeclaration=15]="BeforeDeclaration",t[t.InDeclaration=16]="InDeclaration",t[t.InProcessingInstruction=17]="InProcessingInstruction",t[t.BeforeComment=18]="BeforeComment",t[t.CDATASequence=19]="CDATASequence",t[t.InSpecialComment=20]="InSpecialComment",t[t.InCommentLike=21]="InCommentLike",t[t.BeforeSpecialS=22]="BeforeSpecialS",t[t.BeforeSpecialT=23]="BeforeSpecialT",t[t.SpecialStartSequence=24]="SpecialStartSequence",t[t.InSpecialTag=25]="InSpecialTag",t[t.InEntity=26]="InEntity"})(h||(h={}));function he(t){return t===x.Space||t===x.NewLine||t===x.Tab||t===x.FormFeed||t===x.CarriageReturn}function Et(t){return t===x.Slash||t===x.Gt||he(t)}function Ma(t){return t>=x.LowerA&&t<=x.LowerZ||t>=x.UpperA&&t<=x.UpperZ}var X;(function(t){t[t.NoValue=0]="NoValue",t[t.Unquoted=1]="Unquoted",t[t.Single=2]="Single",t[t.Double=3]="Double"})(X||(X={}));const P={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])};class Gs{constructor({xmlMode:e=!1,decodeEntities:u=!0},s){this.cbs=s,this.state=h.Text,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=h.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.xmlMode=e,this.decodeEntities=u,this.entityDecoder=new Vs(e?$s:Bs,(n,r)=>this.emitCodePoint(n,r))}reset(){this.state=h.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=h.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.index<this.buffer.length+this.offset&&this.parse()}stateText(e){e===x.Lt||!this.decodeEntities&&this.fastForwardTo(x.Lt)?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=h.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===x.Amp&&this.startEntity()}stateSpecialStartSequence(e){const u=this.sequenceIndex===this.currentSequence.length;if(!(u?Et(e):(e|32)===this.currentSequence[this.sequenceIndex]))this.isSpecial=!1;else if(!u){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=h.InTagName,this.stateInTagName(e)}stateInSpecialTag(e){if(this.sequenceIndex===this.currentSequence.length){if(e===x.Gt||he(e)){const u=this.index-this.currentSequence.length;if(this.sectionStart<u){const s=this.index;this.index=u,this.cbs.ontext(this.sectionStart,u),this.index=s}this.isSpecial=!1,this.sectionStart=u+2,this.stateInClosingTagName(e);return}this.sequenceIndex=0}(e|32)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:this.sequenceIndex===0?this.currentSequence===P.TitleEnd?this.decodeEntities&&e===x.Amp&&this.startEntity():this.fastForwardTo(x.Lt)&&(this.sequenceIndex=1):this.sequenceIndex=+(e===x.Lt)}stateCDATASequence(e){e===P.Cdata[this.sequenceIndex]?++this.sequenceIndex===P.Cdata.length&&(this.state=h.InCommentLike,this.currentSequence=P.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=h.InDeclaration,this.stateInDeclaration(e))}fastForwardTo(e){for(;++this.index<this.buffer.length+this.offset;)if(this.buffer.charCodeAt(this.index-this.offset)===e)return!0;return this.index=this.buffer.length+this.offset-1,!1}stateInCommentLike(e){e===this.currentSequence[this.sequenceIndex]?++this.sequenceIndex===this.currentSequence.length&&(this.currentSequence===P.CdataEnd?this.cbs.oncdata(this.sectionStart,this.index,2):this.cbs.oncomment(this.sectionStart,this.index,2),this.sequenceIndex=0,this.sectionStart=this.index+1,this.state=h.Text):this.sequenceIndex===0?this.fastForwardTo(this.currentSequence[0])&&(this.sequenceIndex=1):e!==this.currentSequence[this.sequenceIndex-1]&&(this.sequenceIndex=0)}isTagStartChar(e){return this.xmlMode?!Et(e):Ma(e)}startSpecial(e,u){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=u,this.state=h.SpecialStartSequence}stateBeforeTagName(e){if(e===x.ExclamationMark)this.state=h.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===x.Questionmark)this.state=h.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){const u=e|32;this.sectionStart=this.index,this.xmlMode?this.state=h.InTagName:u===P.ScriptEnd[2]?this.state=h.BeforeSpecialS:u===P.TitleEnd[2]?this.state=h.BeforeSpecialT:this.state=h.InTagName}else e===x.Slash?this.state=h.BeforeClosingTagName:(this.state=h.Text,this.stateText(e))}stateInTagName(e){Et(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=h.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateBeforeClosingTagName(e){he(e)||(e===x.Gt?this.state=h.Text:(this.state=this.isTagStartChar(e)?h.InClosingTagName:h.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(e){(e===x.Gt||he(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=h.AfterClosingTagName,this.stateAfterClosingTagName(e))}stateAfterClosingTagName(e){(e===x.Gt||this.fastForwardTo(x.Gt))&&(this.state=h.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(e){e===x.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=h.InSpecialTag,this.sequenceIndex=0):this.state=h.Text,this.sectionStart=this.index+1):e===x.Slash?this.state=h.InSelfClosingTag:he(e)||(this.state=h.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(e){e===x.Gt?(this.cbs.onselfclosingtag(this.index),this.state=h.Text,this.sectionStart=this.index+1,this.isSpecial=!1):he(e)||(this.state=h.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateInAttributeName(e){(e===x.Eq||Et(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=this.index,this.state=h.AfterAttributeName,this.stateAfterAttributeName(e))}stateAfterAttributeName(e){e===x.Eq?this.state=h.BeforeAttributeValue:e===x.Slash||e===x.Gt?(this.cbs.onattribend(X.NoValue,this.sectionStart),this.sectionStart=-1,this.state=h.BeforeAttributeName,this.stateBeforeAttributeName(e)):he(e)||(this.cbs.onattribend(X.NoValue,this.sectionStart),this.state=h.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(e){e===x.DoubleQuote?(this.state=h.InAttributeValueDq,this.sectionStart=this.index+1):e===x.SingleQuote?(this.state=h.InAttributeValueSq,this.sectionStart=this.index+1):he(e)||(this.sectionStart=this.index,this.state=h.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))}handleInAttributeValue(e,u){e===u||!this.decodeEntities&&this.fastForwardTo(u)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(u===x.DoubleQuote?X.Double:X.Single,this.index+1),this.state=h.BeforeAttributeName):this.decodeEntities&&e===x.Amp&&this.startEntity()}stateInAttributeValueDoubleQuotes(e){this.handleInAttributeValue(e,x.DoubleQuote)}stateInAttributeValueSingleQuotes(e){this.handleInAttributeValue(e,x.SingleQuote)}stateInAttributeValueNoQuotes(e){he(e)||e===x.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(X.Unquoted,this.index),this.state=h.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===x.Amp&&this.startEntity()}stateBeforeDeclaration(e){e===x.OpeningSquareBracket?(this.state=h.CDATASequence,this.sequenceIndex=0):this.state=e===x.Dash?h.BeforeComment:h.InDeclaration}stateInDeclaration(e){(e===x.Gt||this.fastForwardTo(x.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=h.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(e){(e===x.Gt||this.fastForwardTo(x.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=h.Text,this.sectionStart=this.index+1)}stateBeforeComment(e){e===x.Dash?(this.state=h.InCommentLike,this.currentSequence=P.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=h.InDeclaration}stateInSpecialComment(e){(e===x.Gt||this.fastForwardTo(x.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=h.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(e){const u=e|32;u===P.ScriptEnd[3]?this.startSpecial(P.ScriptEnd,4):u===P.StyleEnd[3]?this.startSpecial(P.StyleEnd,4):(this.state=h.InTagName,this.stateInTagName(e))}stateBeforeSpecialT(e){const u=e|32;u===P.TitleEnd[3]?this.startSpecial(P.TitleEnd,4):u===P.TextareaEnd[3]?this.startSpecial(P.TextareaEnd,4):(this.state=h.InTagName,this.stateInTagName(e))}startEntity(){this.baseState=this.state,this.state=h.InEntity,this.entityStart=this.index,this.entityDecoder.startEntity(this.xmlMode?re.Strict:this.baseState===h.Text||this.baseState===h.InSpecialTag?re.Legacy:re.Attribute)}stateInEntity(){const e=this.entityDecoder.write(this.buffer,this.index-this.offset);e>=0?(this.state=this.baseState,e===0&&(this.index=this.entityStart)):this.index=this.offset+this.buffer.length-1}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===h.Text||this.state===h.InSpecialTag&&this.sequenceIndex===0?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===h.InAttributeValueDq||this.state===h.InAttributeValueSq||this.state===h.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index<this.buffer.length+this.offset&&this.running}parse(){for(;this.shouldContinue();){const e=this.buffer.charCodeAt(this.index-this.offset);switch(this.state){case h.Text:{this.stateText(e);break}case h.SpecialStartSequence:{this.stateSpecialStartSequence(e);break}case h.InSpecialTag:{this.stateInSpecialTag(e);break}case h.CDATASequence:{this.stateCDATASequence(e);break}case h.InAttributeValueDq:{this.stateInAttributeValueDoubleQuotes(e);break}case h.InAttributeName:{this.stateInAttributeName(e);break}case h.InCommentLike:{this.stateInCommentLike(e);break}case h.InSpecialComment:{this.stateInSpecialComment(e);break}case h.BeforeAttributeName:{this.stateBeforeAttributeName(e);break}case h.InTagName:{this.stateInTagName(e);break}case h.InClosingTagName:{this.stateInClosingTagName(e);break}case h.BeforeTagName:{this.stateBeforeTagName(e);break}case h.AfterAttributeName:{this.stateAfterAttributeName(e);break}case h.InAttributeValueSq:{this.stateInAttributeValueSingleQuotes(e);break}case h.BeforeAttributeValue:{this.stateBeforeAttributeValue(e);break}case h.BeforeClosingTagName:{this.stateBeforeClosingTagName(e);break}case h.AfterClosingTagName:{this.stateAfterClosingTagName(e);break}case h.BeforeSpecialS:{this.stateBeforeSpecialS(e);break}case h.BeforeSpecialT:{this.stateBeforeSpecialT(e);break}case h.InAttributeValueNq:{this.stateInAttributeValueNoQuotes(e);break}case h.InSelfClosingTag:{this.stateInSelfClosingTag(e);break}case h.InDeclaration:{this.stateInDeclaration(e);break}case h.BeforeDeclaration:{this.stateBeforeDeclaration(e);break}case h.BeforeComment:{this.stateBeforeComment(e);break}case h.InProcessingInstruction:{this.stateInProcessingInstruction(e);break}case h.InEntity:{this.stateInEntity();break}}this.index++}this.cleanup()}finish(){this.state===h.InEntity&&(this.entityDecoder.end(),this.state=this.baseState),this.handleTrailingData(),this.cbs.onend()}handleTrailingData(){const e=this.buffer.length+this.offset;this.sectionStart>=e||(this.state===h.InCommentLike?this.currentSequence===P.CdataEnd?this.cbs.oncdata(this.sectionStart,e,0):this.cbs.oncomment(this.sectionStart,e,0):this.state===h.InTagName||this.state===h.BeforeAttributeName||this.state===h.BeforeAttributeValue||this.state===h.AfterAttributeName||this.state===h.InAttributeName||this.state===h.InAttributeValueSq||this.state===h.InAttributeValueDq||this.state===h.InAttributeValueNq||this.state===h.InClosingTagName||this.cbs.ontext(this.sectionStart,e))}emitCodePoint(e,u){this.baseState!==h.Text&&this.baseState!==h.InSpecialTag?(this.sectionStart<this.entityStart&&this.cbs.onattribdata(this.sectionStart,this.entityStart),this.sectionStart=this.entityStart+u,this.index=this.sectionStart-1,this.cbs.onattribentity(e)):(this.sectionStart<this.entityStart&&this.cbs.ontext(this.sectionStart,this.entityStart),this.sectionStart=this.entityStart+u,this.index=this.sectionStart-1,this.cbs.ontextentity(e,this.sectionStart))}}const Ge=new Set(["input","option","optgroup","select","button","datalist","textarea"]),A=new Set(["p"]),js=new Set(["thead","tbody"]),Ws=new Set(["dd","dt"]),zs=new Set(["rt","rp"]),Ia=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",A],["h1",A],["h2",A],["h3",A],["h4",A],["h5",A],["h6",A],["select",Ge],["input",Ge],["output",Ge],["button",Ge],["datalist",Ge],["textarea",Ge],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",Ws],["dt",Ws],["address",A],["article",A],["aside",A],["blockquote",A],["details",A],["div",A],["dl",A],["fieldset",A],["figcaption",A],["figure",A],["footer",A],["form",A],["header",A],["hr",A],["main",A],["nav",A],["ol",A],["pre",A],["section",A],["table",A],["ul",A],["rt",zs],["rp",zs],["tbody",js],["tfoot",js]]),Oa=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),Ks=new Set(["math","svg"]),Js=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]),_a=/\s|\//;let wt=class{constructor(e,u={}){var s,n,r,i,a,o;this.options=u,this.startIndex=0,this.endIndex=0,this.openTagStart=0,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.buffers=[],this.bufferOffset=0,this.writeIndex=0,this.ended=!1,this.cbs=e??{},this.htmlMode=!this.options.xmlMode,this.lowerCaseTagNames=(s=u.lowerCaseTags)!==null&&s!==void 0?s:this.htmlMode,this.lowerCaseAttributeNames=(n=u.lowerCaseAttributeNames)!==null&&n!==void 0?n:this.htmlMode,this.recognizeSelfClosing=(r=u.recognizeSelfClosing)!==null&&r!==void 0?r:!this.htmlMode,this.tokenizer=new((i=u.Tokenizer)!==null&&i!==void 0?i:Gs)(this.options,this),this.foreignContext=[!this.htmlMode],(o=(a=this.cbs).onparserinit)===null||o===void 0||o.call(a,this)}ontext(e,u){var s,n;const r=this.getSlice(e,u);this.endIndex=u-1,(n=(s=this.cbs).ontext)===null||n===void 0||n.call(s,r),this.startIndex=u}ontextentity(e,u){var s,n;this.endIndex=u-1,(n=(s=this.cbs).ontext)===null||n===void 0||n.call(s,mu(e)),this.startIndex=u}isVoidElement(e){return this.htmlMode&&Oa.has(e)}onopentagname(e,u){this.endIndex=u;let s=this.getSlice(e,u);this.lowerCaseTagNames&&(s=s.toLowerCase()),this.emitOpenTag(s)}emitOpenTag(e){var u,s,n,r;this.openTagStart=this.startIndex,this.tagname=e;const i=this.htmlMode&&Ia.get(e);if(i)for(;this.stack.length>0&&i.has(this.stack[0]);){const a=this.stack.shift();(s=(u=this.cbs).onclosetag)===null||s===void 0||s.call(u,a,!0)}this.isVoidElement(e)||(this.stack.unshift(e),this.htmlMode&&(Ks.has(e)?this.foreignContext.unshift(!0):Js.has(e)&&this.foreignContext.unshift(!1))),(r=(n=this.cbs).onopentagname)===null||r===void 0||r.call(n,e),this.cbs.onopentag&&(this.attribs={})}endOpenTag(e){var u,s;this.startIndex=this.openTagStart,this.attribs&&((s=(u=this.cbs).onopentag)===null||s===void 0||s.call(u,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1}onclosetag(e,u){var s,n,r,i,a,o,c,d;this.endIndex=u;let b=this.getSlice(e,u);if(this.lowerCaseTagNames&&(b=b.toLowerCase()),this.htmlMode&&(Ks.has(b)||Js.has(b))&&this.foreignContext.shift(),this.isVoidElement(b))this.htmlMode&&b==="br"&&((i=(r=this.cbs).onopentagname)===null||i===void 0||i.call(r,"br"),(o=(a=this.cbs).onopentag)===null||o===void 0||o.call(a,"br",{},!0),(d=(c=this.cbs).onclosetag)===null||d===void 0||d.call(c,"br",!1));else{const S=this.stack.indexOf(b);if(S!==-1)for(let y=0;y<=S;y++){const w=this.stack.shift();(n=(s=this.cbs).onclosetag)===null||n===void 0||n.call(s,w,y!==S)}else this.htmlMode&&b==="p"&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=u+1}onselfclosingtag(e){this.endIndex=e,this.recognizeSelfClosing||this.foreignContext[0]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)}closeCurrentTag(e){var u,s;const n=this.tagname;this.endOpenTag(e),this.stack[0]===n&&((s=(u=this.cbs).onclosetag)===null||s===void 0||s.call(u,n,!e),this.stack.shift())}onattribname(e,u){this.startIndex=e;const s=this.getSlice(e,u);this.attribname=this.lowerCaseAttributeNames?s.toLowerCase():s}onattribdata(e,u){this.attribvalue+=this.getSlice(e,u)}onattribentity(e){this.attribvalue+=mu(e)}onattribend(e,u){var s,n;this.endIndex=u,(n=(s=this.cbs).onattribute)===null||n===void 0||n.call(s,this.attribname,this.attribvalue,e===X.Double?'"':e===X.Single?"'":e===X.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(e){const u=e.search(_a);let s=u<0?e:e.substr(0,u);return this.lowerCaseTagNames&&(s=s.toLowerCase()),s}ondeclaration(e,u){this.endIndex=u;const s=this.getSlice(e,u);if(this.cbs.onprocessinginstruction){const n=this.getInstructionName(s);this.cbs.onprocessinginstruction(`!${n}`,`!${s}`)}this.startIndex=u+1}onprocessinginstruction(e,u){this.endIndex=u;const s=this.getSlice(e,u);if(this.cbs.onprocessinginstruction){const n=this.getInstructionName(s);this.cbs.onprocessinginstruction(`?${n}`,`?${s}`)}this.startIndex=u+1}oncomment(e,u,s){var n,r,i,a;this.endIndex=u,(r=(n=this.cbs).oncomment)===null||r===void 0||r.call(n,this.getSlice(e,u-s)),(a=(i=this.cbs).oncommentend)===null||a===void 0||a.call(i),this.startIndex=u+1}oncdata(e,u,s){var n,r,i,a,o,c,d,b,S,y;this.endIndex=u;const w=this.getSlice(e,u-s);!this.htmlMode||this.options.recognizeCDATA?((r=(n=this.cbs).oncdatastart)===null||r===void 0||r.call(n),(a=(i=this.cbs).ontext)===null||a===void 0||a.call(i,w),(c=(o=this.cbs).oncdataend)===null||c===void 0||c.call(o)):((b=(d=this.cbs).oncomment)===null||b===void 0||b.call(d,`[CDATA[${w}]]`),(y=(S=this.cbs).oncommentend)===null||y===void 0||y.call(S)),this.startIndex=u+1}onend(){var e,u;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let s=0;s<this.stack.length;s++)this.cbs.onclosetag(this.stack[s],!0)}(u=(e=this.cbs).onend)===null||u===void 0||u.call(e)}reset(){var e,u,s,n;(u=(e=this.cbs).onreset)===null||u===void 0||u.call(e),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,(n=(s=this.cbs).onparserinit)===null||n===void 0||n.call(s,this),this.buffers.length=0,this.foreignContext.length=0,this.foreignContext.unshift(!this.htmlMode),this.bufferOffset=0,this.writeIndex=0,this.ended=!1}parseComplete(e){this.reset(),this.end(e)}getSlice(e,u){for(;e-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();let s=this.buffers[0].slice(e-this.bufferOffset,u-this.bufferOffset);for(;u-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),s+=this.buffers[0].slice(0,u-this.bufferOffset);return s}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(e){var u,s;if(this.ended){(s=(u=this.cbs).onerror)===null||s===void 0||s.call(u,new Error(".write() after done!"));return}this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++)}end(e){var u,s;if(this.ended){(s=(u=this.cbs).onerror)===null||s===void 0||s.call(u,new Error(".end() after done!"));return}e&&this.write(e),this.ended=!0,this.tokenizer.end()}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex<this.buffers.length;)this.tokenizer.write(this.buffers[this.writeIndex++]);this.ended&&this.tokenizer.end()}parseChunk(e){this.write(e)}done(e){this.end(e)}};var T;(function(t){t.Root="root",t.Text="text",t.Directive="directive",t.Comment="comment",t.Script="script",t.Style="style",t.Tag="tag",t.CDATA="cdata",t.Doctype="doctype"})(T||(T={}));function Qs(t){return t.type===T.Tag||t.type===T.Script||t.type===T.Style}const Zs=T.Root,Ys=T.Text,Xs=T.Directive,en=T.Comment,tn=T.Script,un=T.Style,sn=T.Tag,nn=T.CDATA,rn=T.Doctype;var qa=Object.freeze({__proto__:null,CDATA:nn,Comment:en,Directive:Xs,Doctype:rn,get ElementType(){return T},Root:Zs,Script:tn,Style:un,Tag:sn,Text:Ys,isTag:Qs});let an=class{constructor(){this.parent=null,this.prev=null,this.next=null,this.startIndex=null,this.endIndex=null}get parentNode(){return this.parent}set parentNode(e){this.parent=e}get previousSibling(){return this.prev}set previousSibling(e){this.prev=e}get nextSibling(){return this.next}set nextSibling(e){this.next=e}cloneNode(e=!1){return fn(this,e)}};class xu extends an{constructor(e){super(),this.data=e}get nodeValue(){return this.data}set nodeValue(e){this.data=e}}let yu=class extends xu{constructor(){super(...arguments),this.type=T.Text}get nodeType(){return 3}},cn=class extends xu{constructor(){super(...arguments),this.type=T.Comment}get nodeType(){return 8}};class on extends xu{constructor(e,u){super(u),this.name=e,this.type=T.Directive}get nodeType(){return 1}}class Cu extends an{constructor(e){super(),this.children=e}get firstChild(){var e;return(e=this.children[0])!==null&&e!==void 0?e:null}get lastChild(){return this.children.length>0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(e){this.children=e}}class ln extends Cu{constructor(){super(...arguments),this.type=T.CDATA}get nodeType(){return 4}}let Eu=class extends Cu{constructor(){super(...arguments),this.type=T.Root}get nodeType(){return 9}},dn=class extends Cu{constructor(e,u,s=[],n=e==="script"?T.Script:e==="style"?T.Style:T.Tag){super(s),this.name=e,this.attribs=u,this.type=n}get nodeType(){return 1}get tagName(){return this.name}set tagName(e){this.name=e}get attributes(){return Object.keys(this.attribs).map(e=>{var u,s;return{name:e,value:this.attribs[e],namespace:(u=this["x-attribsNamespace"])===null||u===void 0?void 0:u[e],prefix:(s=this["x-attribsPrefix"])===null||s===void 0?void 0:s[e]}})}};function z(t){return Qs(t)}function vt(t){return t.type===T.CDATA}function Le(t){return t.type===T.Text}function wu(t){return t.type===T.Comment}function Pa(t){return t.type===T.Directive}function hn(t){return t.type===T.Root}function Ee(t){return Object.prototype.hasOwnProperty.call(t,"children")}function fn(t,e=!1){let u;if(Le(t))u=new yu(t.data);else if(wu(t))u=new cn(t.data);else if(z(t)){const s=e?vu(t.children):[],n=new dn(t.name,{...t.attribs},s);s.forEach(r=>r.parent=n),t.namespace!=null&&(n.namespace=t.namespace),t["x-attribsNamespace"]&&(n["x-attribsNamespace"]={...t["x-attribsNamespace"]}),t["x-attribsPrefix"]&&(n["x-attribsPrefix"]={...t["x-attribsPrefix"]}),u=n}else if(vt(t)){const s=e?vu(t.children):[],n=new ln(s);s.forEach(r=>r.parent=n),u=n}else if(hn(t)){const s=e?vu(t.children):[],n=new Eu(s);s.forEach(r=>r.parent=n),t["x-mode"]&&(n["x-mode"]=t["x-mode"]),u=n}else if(Pa(t)){const s=new on(t.name,t.data);t["x-name"]!=null&&(s["x-name"]=t["x-name"],s["x-publicId"]=t["x-publicId"],s["x-systemId"]=t["x-systemId"]),u=s}else throw new Error(`Not implemented yet: ${t.type}`);return u.startIndex=t.startIndex,u.endIndex=t.endIndex,t.sourceCodeLocation!=null&&(u.sourceCodeLocation=t.sourceCodeLocation),u}function vu(t){const e=t.map(u=>fn(u,!0));for(let u=1;u<e.length;u++)e[u].prev=e[u-1],e[u-1].next=e[u];return e}const bn={withStartIndices:!1,withEndIndices:!1,xmlMode:!1};class nt{constructor(e,u,s){this.dom=[],this.root=new Eu(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,typeof u=="function"&&(s=u,u=bn),typeof e=="object"&&(u=e,e=void 0),this.callback=e??null,this.options=u??bn,this.elementCB=s??null}onparserinit(e){this.parser=e}onreset(){this.dom=[],this.root=new Eu(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null}onend(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))}onerror(e){this.handleCallback(e)}onclosetag(){this.lastNode=null;const e=this.tagStack.pop();this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(e)}onopentag(e,u){const s=this.options.xmlMode?T.Tag:void 0,n=new dn(e,u,void 0,s);this.addNode(n),this.tagStack.push(n)}ontext(e){const{lastNode:u}=this;if(u&&u.type===T.Text)u.data+=e,this.options.withEndIndices&&(u.endIndex=this.parser.endIndex);else{const s=new yu(e);this.addNode(s),this.lastNode=s}}oncomment(e){if(this.lastNode&&this.lastNode.type===T.Comment){this.lastNode.data+=e;return}const u=new cn(e);this.addNode(u),this.lastNode=u}oncommentend(){this.lastNode=null}oncdatastart(){const e=new yu(""),u=new ln([e]);this.addNode(u),e.parent=u,this.lastNode=e}oncdataend(){this.lastNode=null}onprocessinginstruction(e,u){const s=new on(e,u);this.addNode(s)}handleCallback(e){if(typeof this.callback=="function")this.callback(e,this.dom);else if(e)throw e}addNode(e){const u=this.tagStack[this.tagStack.length-1],s=u.children[u.children.length-1];this.options.withStartIndices&&(e.startIndex=this.parser.startIndex),this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),u.children.push(e),s&&(e.prev=s,s.next=e),e.parent=u,this.lastNode=null}}const pn=/["&'<>$\x80-\uFFFF]/g,Fa=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),Ha=String.prototype.codePointAt!=null?(t,e)=>t.codePointAt(e):(t,e)=>(t.charCodeAt(e)&64512)===55296?(t.charCodeAt(e)-55296)*1024+t.charCodeAt(e+1)-56320+65536:t.charCodeAt(e);function gn(t){let e="",u=0,s;for(;(s=pn.exec(t))!==null;){const n=s.index,r=t.charCodeAt(n),i=Fa.get(r);i!==void 0?(e+=t.substring(u,n)+i,u=n+1):(e+=`${t.substring(u,n)}&#x${Ha(t,n).toString(16)};`,u=pn.lastIndex+=+((r&64512)===55296))}return e+t.substr(u)}function mn(t,e){return function(s){let n,r=0,i="";for(;n=t.exec(s);)r!==n.index&&(i+=s.substring(r,n.index)),i+=e.get(n[0].charCodeAt(0)),r=n.index+1;return i+s.substring(r)}}const Ba=mn(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),$a=mn(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])),Va=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(t=>[t.toLowerCase(),t])),Ua=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(t=>[t.toLowerCase(),t])),Ga=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function ja(t){return t.replace(/"/g,""")}function Wa(t,e){var u;if(!t)return;const s=((u=e.encodeEntities)!==null&&u!==void 0?u:e.decodeEntities)===!1?ja:e.xmlMode||e.encodeEntities!=="utf8"?gn:Ba;return Object.keys(t).map(n=>{var r,i;const a=(r=t[n])!==null&&r!==void 0?r:"";return e.xmlMode==="foreign"&&(n=(i=Ua.get(n))!==null&&i!==void 0?i:n),!e.emptyAttrs&&!e.xmlMode&&a===""?n:`${n}="${s(a)}"`}).join(" ")}const Sn=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);function Tu(t,e={}){const u="length"in t?t:[t];let s="";for(let n=0;n<u.length;n++)s+=za(u[n],e);return s}function za(t,e){switch(t.type){case Zs:return Tu(t.children,e);case rn:case Xs:return Za(t);case en:return e0(t);case nn:return Xa(t);case tn:case un:case sn:return Qa(t,e);case Ys:return Ya(t,e)}}const Ka=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),Ja=new Set(["svg","math"]);function Qa(t,e){var u;e.xmlMode==="foreign"&&(t.name=(u=Va.get(t.name))!==null&&u!==void 0?u:t.name,t.parent&&Ka.has(t.parent.name)&&(e={...e,xmlMode:!1})),!e.xmlMode&&Ja.has(t.name)&&(e={...e,xmlMode:"foreign"});let s=`<${t.name}`;const n=Wa(t.attribs,e);return n&&(s+=` ${n}`),t.children.length===0&&(e.xmlMode?e.selfClosingTags!==!1:e.selfClosingTags&&Sn.has(t.name))?(e.xmlMode||(s+=" "),s+="/>"):(s+=">",t.children.length>0&&(s+=Tu(t.children,e)),(e.xmlMode||!Sn.has(t.name))&&(s+=`</${t.name}>`)),s}function Za(t){return`<${t.data}>`}function Ya(t,e){var u;let s=t.data||"";return((u=e.encodeEntities)!==null&&u!==void 0?u:e.decodeEntities)!==!1&&!(!e.xmlMode&&t.parent&&Ga.has(t.parent.name))&&(s=e.xmlMode||e.encodeEntities!=="utf8"?gn(s):$a(s)),s}function Xa(t){return`<![CDATA[${t.children[0].data}]]>`}function e0(t){return`<!--${t.data}-->`}function xn(t,e){return Tu(t,e)}function t0(t,e){return Ee(t)?t.children.map(u=>xn(u,e)).join(""):""}function Tt(t){return Array.isArray(t)?t.map(Tt).join(""):z(t)?t.name==="br"?` +`:Tt(t.children):vt(t)?Tt(t.children):Le(t)?t.data:""}function Nt(t){return Array.isArray(t)?t.map(Nt).join(""):Ee(t)&&!wu(t)?Nt(t.children):Le(t)?t.data:""}function Nu(t){return Array.isArray(t)?t.map(Nu).join(""):Ee(t)&&(t.type===T.Tag||vt(t))?Nu(t.children):Le(t)?t.data:""}function yn(t){return Ee(t)?t.children:[]}function Cn(t){return t.parent||null}function u0(t){const e=Cn(t);if(e!=null)return yn(e);const u=[t];let{prev:s,next:n}=t;for(;s!=null;)u.unshift(s),{prev:s}=s;for(;n!=null;)u.push(n),{next:n}=n;return u}function s0(t,e){var u;return(u=t.attribs)===null||u===void 0?void 0:u[e]}function n0(t,e){return t.attribs!=null&&Object.prototype.hasOwnProperty.call(t.attribs,e)&&t.attribs[e]!=null}function r0(t){return t.name}function i0(t){let{next:e}=t;for(;e!==null&&!z(e);)({next:e}=e);return e}function a0(t){let{prev:e}=t;for(;e!==null&&!z(e);)({prev:e}=e);return e}function rt(t){if(t.prev&&(t.prev.next=t.next),t.next&&(t.next.prev=t.prev),t.parent){const e=t.parent.children,u=e.lastIndexOf(t);u>=0&&e.splice(u,1)}t.next=null,t.prev=null,t.parent=null}function c0(t,e){const u=e.prev=t.prev;u&&(u.next=e);const s=e.next=t.next;s&&(s.prev=e);const n=e.parent=t.parent;if(n){const r=n.children;r[r.lastIndexOf(t)]=e,t.parent=null}}function o0(t,e){if(rt(e),e.next=null,e.parent=t,t.children.push(e)>1){const u=t.children[t.children.length-2];u.next=e,e.prev=u}else e.prev=null}function l0(t,e){rt(e);const{parent:u}=t,s=t.next;if(e.next=s,e.prev=t,t.next=e,e.parent=u,s){if(s.prev=e,u){const n=u.children;n.splice(n.lastIndexOf(s),0,e)}}else u&&u.children.push(e)}function d0(t,e){if(rt(e),e.parent=t,e.prev=null,t.children.unshift(e)!==1){const u=t.children[1];u.prev=e,e.next=u}else e.next=null}function h0(t,e){rt(e);const{parent:u}=t;if(u){const s=u.children;s.splice(s.indexOf(t),0,e)}t.prev&&(t.prev.next=e),e.parent=u,e.prev=t.prev,e.next=t,t.prev=e}function At(t,e,u=!0,s=1/0){return En(t,Array.isArray(e)?e:[e],u,s)}function En(t,e,u,s){const n=[],r=[e],i=[0];for(;;){if(i[0]>=r[0].length){if(i.length===1)return n;r.shift(),i.shift();continue}const a=r[0][i[0]++];if(t(a)&&(n.push(a),--s<=0))return n;u&&Ee(a)&&a.children.length>0&&(i.unshift(0),r.unshift(a.children))}}function f0(t,e){return e.find(t)}function Au(t,e,u=!0){let s=null;for(let n=0;n<e.length&&!s;n++){const r=e[n];if(z(r))t(r)?s=r:u&&r.children.length>0&&(s=Au(t,r.children,!0));else continue}return s}function wn(t,e){return e.some(u=>z(u)&&(t(u)||wn(t,u.children)))}function b0(t,e){const u=[],s=[e],n=[0];for(;;){if(n[0]>=s[0].length){if(s.length===1)return u;s.shift(),n.shift();continue}const r=s[0][n[0]++];z(r)&&(t(r)&&u.push(r),r.children.length>0&&(n.unshift(0),s.unshift(r.children)))}}const Rt={tag_name(t){return typeof t=="function"?e=>z(e)&&t(e.name):t==="*"?z:e=>z(e)&&e.name===t},tag_type(t){return typeof t=="function"?e=>t(e.type):e=>e.type===t},tag_contains(t){return typeof t=="function"?e=>Le(e)&&t(e.data):e=>Le(e)&&e.data===t}};function vn(t,e){return typeof e=="function"?u=>z(u)&&e(u.attribs[t]):u=>z(u)&&u.attribs[t]===e}function p0(t,e){return u=>t(u)||e(u)}function Tn(t){const e=Object.keys(t).map(u=>{const s=t[u];return Object.prototype.hasOwnProperty.call(Rt,u)?Rt[u](s):vn(u,s)});return e.length===0?null:e.reduce(p0)}function g0(t,e){const u=Tn(t);return u?u(e):!0}function m0(t,e,u,s=1/0){const n=Tn(t);return n?At(n,e,u,s):[]}function S0(t,e,u=!0){return Array.isArray(e)||(e=[e]),Au(vn("id",t),e,u)}function je(t,e,u=!0,s=1/0){return At(Rt.tag_name(t),e,u,s)}function x0(t,e,u=!0,s=1/0){return At(Rt.tag_type(t),e,u,s)}function y0(t){let e=t.length;for(;--e>=0;){const u=t[e];if(e>0&&t.lastIndexOf(u,e-1)>=0){t.splice(e,1);continue}for(let s=u.parent;s;s=s.parent)if(t.includes(s)){t.splice(e,1);break}}return t}var Q;(function(t){t[t.DISCONNECTED=1]="DISCONNECTED",t[t.PRECEDING=2]="PRECEDING",t[t.FOLLOWING=4]="FOLLOWING",t[t.CONTAINS=8]="CONTAINS",t[t.CONTAINED_BY=16]="CONTAINED_BY"})(Q||(Q={}));function Nn(t,e){const u=[],s=[];if(t===e)return 0;let n=Ee(t)?t:t.parent;for(;n;)u.unshift(n),n=n.parent;for(n=Ee(e)?e:e.parent;n;)s.unshift(n),n=n.parent;const r=Math.min(u.length,s.length);let i=0;for(;i<r&&u[i]===s[i];)i++;if(i===0)return Q.DISCONNECTED;const a=u[i-1],o=a.children,c=u[i],d=s[i];return o.indexOf(c)>o.indexOf(d)?a===e?Q.FOLLOWING|Q.CONTAINED_BY:Q.FOLLOWING:a===t?Q.PRECEDING|Q.CONTAINS:Q.PRECEDING}function C0(t){return t=t.filter((e,u,s)=>!s.includes(e,u+1)),t.sort((e,u)=>{const s=Nn(e,u);return s&Q.PRECEDING?-1:s&Q.FOLLOWING?1:0}),t}function Ru(t){const e=Dt(N0,t);return e?e.name==="feed"?E0(e):w0(e):null}function E0(t){var e;const u=t.children,s={type:"atom",items:je("entry",u).map(i=>{var a;const{children:o}=i,c={media:An(o)};j(c,"id","id",o),j(c,"title","title",o);const d=(a=Dt("link",o))===null||a===void 0?void 0:a.attribs.href;d&&(c.link=d);const b=we("summary",o)||we("content",o);b&&(c.description=b);const S=we("updated",o);return S&&(c.pubDate=new Date(S)),c})};j(s,"id","id",u),j(s,"title","title",u);const n=(e=Dt("link",u))===null||e===void 0?void 0:e.attribs.href;n&&(s.link=n),j(s,"description","subtitle",u);const r=we("updated",u);return r&&(s.updated=new Date(r)),j(s,"author","email",u,!0),s}function w0(t){var e,u;const s=(u=(e=Dt("channel",t.children))===null||e===void 0?void 0:e.children)!==null&&u!==void 0?u:[],n={type:t.name.substr(0,3),id:"",items:je("item",t.children).map(i=>{const{children:a}=i,o={media:An(a)};j(o,"id","guid",a),j(o,"title","title",a),j(o,"link","link",a),j(o,"description","description",a);const c=we("pubDate",a)||we("dc:date",a);return c&&(o.pubDate=new Date(c)),o})};j(n,"title","title",s),j(n,"link","link",s),j(n,"description","description",s);const r=we("lastBuildDate",s);return r&&(n.updated=new Date(r)),j(n,"author","managingEditor",s,!0),n}const v0=["url","type","lang"],T0=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];function An(t){return je("media:content",t).map(e=>{const{attribs:u}=e,s={medium:u.medium,isDefault:!!u.isDefault};for(const n of v0)u[n]&&(s[n]=u[n]);for(const n of T0)u[n]&&(s[n]=parseInt(u[n],10));return u.expression&&(s.expression=u.expression),s})}function Dt(t,e){return je(t,e,!0,1)[0]}function we(t,e,u=!1){return Nt(je(t,e,u,1)).trim()}function j(t,e,u,s,n=!1){const r=we(u,s,n);r&&(t[e]=r)}function N0(t){return t==="rss"||t==="feed"||t==="rdf:RDF"}var Du=Object.freeze({__proto__:null,get DocumentPosition(){return Q},append:l0,appendChild:o0,compareDocumentPosition:Nn,existsOne:wn,filter:At,find:En,findAll:b0,findOne:Au,findOneChild:f0,getAttributeValue:s0,getChildren:yn,getElementById:S0,getElements:m0,getElementsByTagName:je,getElementsByTagType:x0,getFeed:Ru,getInnerHTML:t0,getName:r0,getOuterHTML:xn,getParent:Cn,getSiblings:u0,getText:Tt,hasAttrib:n0,hasChildren:Ee,innerText:Nu,isCDATA:vt,isComment:wu,isDocument:hn,isTag:z,isText:Le,nextElementSibling:i0,prepend:h0,prependChild:d0,prevElementSibling:a0,removeElement:rt,removeSubsets:y0,replaceElement:c0,testElement:g0,textContent:Nt,uniqueSort:C0});function Rn(t,e){const u=new nt(void 0,e);return new wt(u,e).end(t),u.root}function Dn(t,e){return Rn(t,e).children}function A0(t,e,u){const s=new nt(n=>t(n,s.root),e,u);return new wt(s,e)}function R0(t,e,u){const s=new nt(t,e,u);return new wt(s,e)}const D0={xmlMode:!0};function k0(t,e=D0){return Ru(Dn(t,e))}var L0=Object.freeze({__proto__:null,DefaultHandler:nt,DomHandler:nt,DomUtils:Du,ElementType:qa,Parser:wt,get QuoteType(){return X},Tokenizer:Gs,createDocumentStream:A0,createDomStream:R0,getFeed:Ru,parseDOM:Dn,parseDocument:Rn,parseFeed:k0});const fe=-1,v=1,q=2,F=3,ie=4,ae=8,ve=9,Me=10,ee=11,M0=new Set(["ARTICLE","ASIDE","BLOCKQUOTE","BODY","BR","BUTTON","CANVAS","CAPTION","COL","COLGROUP","DD","DIV","DL","DT","EMBED","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","LI","UL","OL","P"]),kn=-1,Ln=1,Mn=4,In=8,On=128,I0=1,_n=2,qn=4,O0=8,_0=16,q0=32,kt="http://www.w3.org/2000/svg",{assign:P0,create:F0,defineProperties:H0,entries:B0,getOwnPropertyDescriptors:No,keys:$0,setPrototypeOf:$}=Object,Ie=String,K=t=>t.nodeType===v?t[m]:t,Te=({ownerDocument:t})=>t[Ve].ignoreCase,te=(t,e)=>{t[p]=e,e[D]=t},ku=(t,e,u)=>{te(t,e),te(K(e),u)},V0=(t,e,u,s)=>{te(t,e),te(K(u),s)},We=(t,e,u)=>{te(t,e),te(e,u)},Lu=({localName:t,ownerDocument:e})=>e[Ve].ignoreCase?t.toUpperCase():t,Pn=(t,e)=>{t&&(t[p]=e),e&&(e[D]=t)},Ne=new WeakMap;let Lt=!1;const ze=new WeakMap,Oe=new WeakMap,Mt=(t,e,u,s)=>{Lt&&Oe.has(t)&&t.attributeChangedCallback&&t.constructor.observedAttributes.includes(e)&&t.attributeChangedCallback(e,u,s)},Fn=(t,e)=>u=>{if(Oe.has(u)){const s=Oe.get(u);s.connected!==e&&u.isConnected===e&&(s.connected=e,t in u&&u[t]())}},Hn=Fn("connectedCallback",!0),Mu=t=>{if(Lt){Hn(t),Ne.has(t)&&(t=Ne.get(t).shadowRoot);let{[p]:e,[m]:u}=t;for(;e!==u;)e.nodeType===v&&Hn(e),e=e[p]}},Bn=Fn("disconnectedCallback",!1),U0=t=>{if(Lt){Bn(t),Ne.has(t)&&(t=Ne.get(t).shadowRoot);let{[p]:e,[m]:u}=t;for(;e!==u;)e.nodeType===v&&Bn(e),e=e[p]}};class G0{constructor(e){this.ownerDocument=e,this.registry=new Map,this.waiting=new Map,this.active=!1}define(e,u,s={}){const{ownerDocument:n,registry:r,waiting:i}=this;if(r.has(e))throw new Error("unable to redefine "+e);if(ze.has(u))throw new Error("unable to redefine the same class: "+u);this.active=Lt=!0;const{extends:a}=s;ze.set(u,{ownerDocument:n,options:{is:a?e:""},localName:a||e});const o=a?c=>c.localName===a&&c.getAttribute("is")===e:c=>c.localName===e;if(r.set(e,{Class:u,check:o}),i.has(e)){for(const c of i.get(e))c(u);i.delete(e)}n.querySelectorAll(a?`${a}[is="${e}"]`:e).forEach(this.upgrade,this)}upgrade(e){if(Oe.has(e))return;const{ownerDocument:u,registry:s}=this,n=e.getAttribute("is")||e.localName;if(s.has(n)){const{Class:r,check:i}=s.get(n);if(i(e)){const{attributes:a,isConnected:o}=e;for(const d of a)e.removeAttributeNode(d);const c=B0(e);for(const[d]of c)delete e[d];$(e,r.prototype),u[st]={element:e,values:c},new r(u,n),Oe.set(e,{connected:o});for(const d of a)e.setAttributeNode(d);o&&e.connectedCallback&&e.connectedCallback()}}}whenDefined(e){const{registry:u,waiting:s}=this;return new Promise(n=>{u.has(e)?n(u.get(e).Class):(s.has(e)||s.set(e,[]),s.get(e).push(n))})}get(e){const u=this.registry.get(e);return u&&u.Class}getName(e){if(ze.has(e)){const{localName:u}=ze.get(e);return u}return null}}const{Parser:j0}=L0,_e=(t,e,u)=>{const s=t[m];return e.parentNode=t,ku(s[D],e,s),u&&e.nodeType===v&&Mu(e),e},W0=(t,e,u,s,n)=>{u[R]=s,u.ownerElement=t,We(e[D],u,e),u.name==="class"&&(t.className=s),n&&Mt(t,u.name,null,s)},$n=(t,e,u)=>{const{active:s,registry:n}=t[Z];let r=t,i=null,a=!1;const o=new j0({onprocessinginstruction(c,d){c.toLowerCase()==="!doctype"&&(t.doctype=d.slice(c.length).trim())},onopentag(c,d){let b=!0;if(e){if(i)r=_e(r,t.createElementNS(kt,c),s),r.ownerSVGElement=i,b=!1;else if(c==="svg"||c==="SVG")i=t.createElementNS(kt,c),r=_e(r,i,s),b=!1;else if(s){const y=c.includes("-")?c:d.is||"";if(y&&n.has(y)){const{Class:w}=n.get(y);r=_e(r,new w,s),delete d.is,b=!1}}}b&&(r=_e(r,t.createElement(c),!1));let S=r[m];for(const y of $0(d))W0(r,S,t.createAttribute(y),d[y],s)},oncomment(c){_e(r,t.createComment(c),s)},ontext(c){a?_e(r,t.createCDATASection(c),s):_e(r,t.createTextNode(c),s)},oncdatastart(){a=!0},oncdataend(){a=!1},onclosetag(){e&&r===i&&(i=null),r=r.parentNode}},{lowerCaseAttributeNames:!1,decodeEntities:!0,xmlMode:!e});return o.write(u),o.end(),t},Ke=new Map,L=(t,e)=>{for(const u of[].concat(t))Ke.set(u,e),Ke.set(u.toUpperCase(),e)},z0=globalThis.performance,Vn=({[p]:t,[m]:e},u)=>{for(;t!==e;){switch(t.nodeType){case q:Un(t,u);break;case F:case ae:case ie:Gn(t,u);break;case v:Wn(t,u),t=K(t);break;case Me:jn(t,u);break}t=t[p]}const s=u.length-1,n=u[s];typeof n=="number"&&n<0?u[s]+=fe:u.push(fe)},Un=(t,e)=>{e.push(q,t.name);const u=t[R].trim();u&&e.push(u)},Gn=(t,e)=>{const u=t[R];u.trim()&&e.push(t.nodeType,u)},K0=(t,e)=>{e.push(t.nodeType),Vn(t,e)},jn=({name:t,publicId:e,systemId:u},s)=>{s.push(Me,t),e&&s.push(e),u&&s.push(u)},Wn=(t,e)=>{e.push(v,t.localName),Vn(t,e)},zn=(t,e,u,s,n,r)=>({type:t,target:e,addedNodes:u,removedNodes:s,attributeName:n,oldValue:r}),Kn=(t,e,u,s,n,r)=>{if(!s||s.includes(u)){const{callback:i,records:a,scheduled:o}=t;a.push(zn("attributes",e,[],[],u,n?r:void 0)),o||(t.scheduled=!0,Promise.resolve().then(()=>{t.scheduled=!1,i(a.splice(0),t)}))}},Iu=(t,e,u)=>{const{ownerDocument:s}=t,{active:n,observers:r}=s[ye];if(n){for(const i of r)for(const[a,{childList:o,subtree:c,attributes:d,attributeFilter:b,attributeOldValue:S}]of i.nodes)if(o){if(c&&(a===s||a.contains(t))||!c&&a.children.includes(t)){Kn(i,t,e,b,S,u);break}}else if(d&&a===t){Kn(i,t,e,b,S,u);break}}},it=(t,e)=>{const{ownerDocument:u}=t,{active:s,observers:n}=u[ye];if(s){for(const r of n)for(const[i,{subtree:a,childList:o,characterData:c}]of r.nodes)if(o&&(e&&(i===e||a&&i.contains(e))||!e&&(a&&(i===u||i.contains(t))||!a&&i[c?"childNodes":"children"].includes(t)))){const{callback:d,records:b,scheduled:S}=r;b.push(zn("childList",i,e?[]:[t],e?[t]:[])),S||(r.scheduled=!0,Promise.resolve().then(()=>{r.scheduled=!1,d(b.splice(0),r)}));break}}};class J0{constructor(e){const u=new Set;this.observers=u,this.active=!1,this.class=class{constructor(n){this.callback=n,this.nodes=new Map,this.records=[],this.scheduled=!1}disconnect(){this.records.splice(0),this.nodes.clear(),u.delete(this),e[ye].active=!!u.size}observe(n,r={subtree:!1,childList:!1,attributes:!1,attributeFilter:null,attributeOldValue:!1,characterData:!1}){("attributeOldValue"in r||"attributeFilter"in r)&&(r.attributes=!0),r.childList=!!r.childList,r.subtree=!!r.subtree,this.nodes.set(n,r),u.add(this),e[ye].active=!0}takeRecords(){return this.records.splice(0)}}}}const Q0=new Set(["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","class","contenteditable","controls","default","defer","disabled","draggable","formnovalidate","hidden","id","ismap","itemscope","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected","style","truespeed"]),Ou=(t,e)=>{const{[R]:u,name:s}=e;e.ownerElement=t,We(t,e,t[p]),s==="class"&&(t.className=u),Iu(t,s,null),Mt(t,s,null,u)},Jn=(t,e)=>{const{[R]:u,name:s}=e;te(e[D],e[p]),e.ownerElement=e[D]=e[p]=null,s==="class"&&(t[$e]=null),Iu(t,s,u),Mt(t,s,u,null)},N={get(t,e){return t.hasAttribute(e)},set(t,e,u){u?t.setAttribute(e,""):t.removeAttribute(e)}},Ae={get(t,e){return parseFloat(t.getAttribute(e)||0)},set(t,e,u){t.setAttribute(e,u)}},f={get(t,e){return t.getAttribute(e)||""},set(t,e,u){t.setAttribute(e,u)}},It=new WeakMap;function Z0(t,e){return typeof e=="function"?e.call(t.target,t):e.handleEvent(t),t._stopImmediatePropagationFlag}function Y0({currentTarget:t,target:e}){const u=It.get(t);if(u&&u.has(this.type)){const s=u.get(this.type);t===e?this.eventPhase=this.AT_TARGET:this.eventPhase=this.BUBBLING_PHASE,this.currentTarget=t,this.target=e;for(const[n,r]of s)if(r&&r.once&&s.delete(n),Z0(this,n))break;return delete this.currentTarget,delete this.target,this.cancelBubble}}class Ot{constructor(){It.set(this,new Map)}_getParent(){return null}addEventListener(e,u,s){const n=It.get(this);n.has(e)||n.set(e,new Map),n.get(e).set(u,s)}removeEventListener(e,u){const s=It.get(this);if(s.has(e)){const n=s.get(e);n.delete(u)&&!n.size&&s.delete(e)}}dispatchEvent(e){let u=this;for(e.eventPhase=e.CAPTURING_PHASE;u;)u.dispatchEvent&&e._path.push({currentTarget:u,target:this}),u=e.bubbles&&u._getParent&&u._getParent();return e._path.some(Y0,e),e._path=[],e.eventPhase=e.NONE,!e.defaultPrevented}}class ue extends Array{item(e){return e<this.length?this[e]:null}}const Qn=({parentNode:t})=>{let e=0;for(;t;)e++,t=t.parentNode;return e};let qe=class extends Ot{static get ELEMENT_NODE(){return v}static get ATTRIBUTE_NODE(){return q}static get TEXT_NODE(){return F}static get CDATA_SECTION_NODE(){return ie}static get COMMENT_NODE(){return ae}static get DOCUMENT_NODE(){return ve}static get DOCUMENT_FRAGMENT_NODE(){return ee}static get DOCUMENT_TYPE_NODE(){return Me}constructor(e,u,s){super(),this.ownerDocument=e,this.localName=u,this.nodeType=s,this.parentNode=null,this[p]=null,this[D]=null}get ELEMENT_NODE(){return v}get ATTRIBUTE_NODE(){return q}get TEXT_NODE(){return F}get CDATA_SECTION_NODE(){return ie}get COMMENT_NODE(){return ae}get DOCUMENT_NODE(){return ve}get DOCUMENT_FRAGMENT_NODE(){return ee}get DOCUMENT_TYPE_NODE(){return Me}get baseURI(){const e=this.nodeType===ve?this:this.ownerDocument;if(e){const u=e.querySelector("base");if(u)return u.getAttribute("href");const{location:s}=e.defaultView;if(s)return s.href}return null}get isConnected(){return!1}get nodeName(){return this.localName}get parentElement(){return null}get previousSibling(){return null}get previousElementSibling(){return null}get nextSibling(){return null}get nextElementSibling(){return null}get childNodes(){return new ue}get firstChild(){return null}get lastChild(){return null}get nodeValue(){return null}set nodeValue(e){}get textContent(){return null}set textContent(e){}normalize(){}cloneNode(){return null}contains(){return!1}insertBefore(e,u){return e}appendChild(e){return e}replaceChild(e,u){return u}removeChild(e){return e}toString(){return""}hasChildNodes(){return!!this.lastChild}isSameNode(e){return this===e}compareDocumentPosition(e){let u=0;if(this!==e){let s=Qn(this),n=Qn(e);if(s<n)u+=qn,this.contains(e)&&(u+=_0);else if(n<s)u+=_n,e.contains(this)&&(u+=O0);else if(s&&n){const{childNodes:r}=this.parentNode;r.indexOf(this)<r.indexOf(e)?u+=qn:u+=_n}(!s||!n)&&(u+=q0,u+=I0)}return u}isEqualNode(e){if(this===e)return!0;if(this.nodeType===e.nodeType){switch(this.nodeType){case ve:case ee:{const u=this.childNodes,s=e.childNodes;return u.length===s.length&&u.every((n,r)=>n.isEqualNode(s[r]))}}return this.toString()===e.toString()}return!1}_getParent(){return this.parentNode}getRootNode(){let e=this;for(;e.parentNode;)e=e.parentNode;return e}};const{replace:X0}="",ec=/[<>&\xA0]/g,tc={"\xA0":" ","&":"&","<":"<",">":">"},uc=t=>tc[t],_u=t=>X0.call(t,ec,uc),sc=/"/g;let Je=class xa extends qe{constructor(e,u,s=""){super(e,u,q),this.ownerElement=null,this.name=Ie(u),this[R]=Ie(s),this[xt]=!1}get value(){return this[R]}set value(e){const{[R]:u,name:s,ownerElement:n}=this;this[R]=Ie(e),this[xt]=!0,n&&(Iu(n,s,u),Mt(n,s,u,this[R]))}cloneNode(){const{ownerDocument:e,name:u,[R]:s}=this;return new xa(e,u,s)}toString(){const{name:e,[R]:u}=this;if(Q0.has(e)&&!u)return Te(this)?e:`${e}=""`;const s=(Te(this)?u:_u(u)).replace(sc,""");return`${e}="${s}"`}toJSON(){const e=[];return Un(this,e),e}};const Zn=({ownerDocument:t,parentNode:e})=>{for(;e;){if(e===t)return!0;e=e.parentNode||e.host}return!1},Yn=({parentNode:t})=>{if(t)switch(t.nodeType){case ve:case ee:return null}return t},at=({[D]:t})=>{switch(t?t.nodeType:0){case fe:return t[G];case F:case ae:case ie:return t}return null},Pe=t=>{const e=K(t)[p];return e&&(e.nodeType===fe?null:e)},qu=t=>{let e=Pe(t);for(;e&&e.nodeType!==v;)e=Pe(e);return e},Xn=t=>{let e=at(t);for(;e&&e.nodeType!==v;)e=at(e);return e},Pu=(t,e)=>{const u=t.createDocumentFragment();return u.append(...e),u},er=(t,e)=>{const{ownerDocument:u,parentNode:s}=t;s&&s.insertBefore(Pu(u,e),t)},tr=(t,e)=>{const{ownerDocument:u,parentNode:s}=t;s&&s.insertBefore(Pu(u,e),K(t)[p])},Fu=(t,e)=>{const{ownerDocument:u,parentNode:s}=t;s&&(e.includes(t)&&Fu(t,[t=t.cloneNode()]),s.insertBefore(Pu(u,e),t),t.remove())},ur=(t,e,u)=>{const{parentNode:s,nodeType:n}=e;(t||u)&&(Pn(t,u),e[D]=null,K(e)[p]=null),s&&(e.parentNode=null,it(e,s),n===v&&U0(e))};let ct=class extends qe{constructor(e,u,s,n){super(e,u,s),this[R]=Ie(n)}get isConnected(){return Zn(this)}get parentElement(){return Yn(this)}get previousSibling(){return at(this)}get nextSibling(){return Pe(this)}get previousElementSibling(){return Xn(this)}get nextElementSibling(){return qu(this)}before(...e){er(this,e)}after(...e){tr(this,e)}replaceWith(...e){Fu(this,e)}remove(){ur(this[D],this,this[p])}get data(){return this[R]}set data(e){this[R]=Ie(e),it(this,this.parentNode)}get nodeValue(){return this.data}set nodeValue(e){this.data=e}get textContent(){return this.data}set textContent(e){this.data=e}get length(){return this.data.length}substringData(e,u){return this.data.substr(e,u)}appendData(e){this.data+=e}insertData(e,u){const{data:s}=this;this.data=s.slice(0,e)+u+s.slice(e)}deleteData(e,u){const{data:s}=this;this.data=s.slice(0,e)+s.slice(e+u)}replaceData(e,u,s){const{data:n}=this;this.data=n.slice(0,e)+s+n.slice(e+u)}toJSON(){const e=[];return Gn(this,e),e}},_t=class ya extends ct{constructor(e,u=""){super(e,"#cdatasection",ie,u)}cloneNode(){const{ownerDocument:e,[R]:u}=this;return new ya(e,u)}toString(){return`<![CDATA[${this[R]}]]>`}},qt=class Ca extends ct{constructor(e,u=""){super(e,"#comment",ae,u)}cloneNode(){const{ownerDocument:e,[R]:u}=this;return new Ca(e,u)}toString(){return`<!--${this[R]}-->`}};function nc(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var rc={trueFunc:function(){return!0},falseFunc:function(){return!1}},E=nc(rc),C;(function(t){t.Attribute="attribute",t.Pseudo="pseudo",t.PseudoElement="pseudo-element",t.Tag="tag",t.Universal="universal",t.Adjacent="adjacent",t.Child="child",t.Descendant="descendant",t.Parent="parent",t.Sibling="sibling",t.ColumnCombinator="column-combinator"})(C||(C={}));var M;(function(t){t.Any="any",t.Element="element",t.End="end",t.Equals="equals",t.Exists="exists",t.Hyphen="hyphen",t.Not="not",t.Start="start"})(M||(M={}));const sr=/^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,ic=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,ac=new Map([[126,M.Element],[94,M.Start],[36,M.End],[42,M.Any],[33,M.Not],[124,M.Hyphen]]),cc=new Set(["has","not","matches","is","where","host","host-context"]);function oc(t){switch(t.type){case C.Adjacent:case C.Child:case C.Descendant:case C.Parent:case C.Sibling:case C.ColumnCombinator:return!0;default:return!1}}const lc=new Set(["contains","icontains"]);function dc(t,e,u){const s=parseInt(e,16)-65536;return s!==s||u?e:s<0?String.fromCharCode(s+65536):String.fromCharCode(s>>10|55296,s&1023|56320)}function ot(t){return t.replace(ic,dc)}function Hu(t){return t===39||t===34}function nr(t){return t===32||t===9||t===10||t===12||t===13}function rr(t){const e=[],u=ir(e,`${t}`,0);if(u<t.length)throw new Error(`Unmatched selector: ${t.slice(u)}`);return e}function ir(t,e,u){let s=[];function n(S){const y=e.slice(u+S).match(sr);if(!y)throw new Error(`Expected name, found ${e.slice(u)}`);const[w]=y;return u+=S+w.length,ot(w)}function r(S){for(u+=S;u<e.length&&nr(e.charCodeAt(u));)u++}function i(){u+=1;const S=u;let y=1;for(;y>0&&u<e.length;u++)e.charCodeAt(u)===40&&!a(u)?y++:e.charCodeAt(u)===41&&!a(u)&&y--;if(y)throw new Error("Parenthesis not matched");return ot(e.slice(S,u-1))}function a(S){let y=0;for(;e.charCodeAt(--S)===92;)y++;return(y&1)===1}function o(){if(s.length>0&&oc(s[s.length-1]))throw new Error("Did not expect successive traversals.")}function c(S){if(s.length>0&&s[s.length-1].type===C.Descendant){s[s.length-1].type=S;return}o(),s.push({type:S})}function d(S,y){s.push({type:C.Attribute,name:S,action:y,value:n(1),namespace:null,ignoreCase:"quirks"})}function b(){if(s.length&&s[s.length-1].type===C.Descendant&&s.pop(),s.length===0)throw new Error("Empty sub-selector");t.push(s)}if(r(0),e.length===u)return u;e:for(;u<e.length;){const S=e.charCodeAt(u);switch(S){case 32:case 9:case 10:case 12:case 13:{(s.length===0||s[0].type!==C.Descendant)&&(o(),s.push({type:C.Descendant})),r(1);break}case 62:{c(C.Child),r(1);break}case 60:{c(C.Parent),r(1);break}case 126:{c(C.Sibling),r(1);break}case 43:{c(C.Adjacent),r(1);break}case 46:{d("class",M.Element);break}case 35:{d("id",M.Equals);break}case 91:{r(1);let y,w=null;e.charCodeAt(u)===124?y=n(1):e.startsWith("*|",u)?(w="*",y=n(2)):(y=n(0),e.charCodeAt(u)===124&&e.charCodeAt(u+1)!==61&&(w=y,y=n(1))),r(0);let V=M.Exists;const Se=ac.get(e.charCodeAt(u));if(Se){if(V=Se,e.charCodeAt(u+1)!==61)throw new Error("Expected `=`");r(2)}else e.charCodeAt(u)===61&&(V=M.Equals,r(1));let I="",de=null;if(V!=="exists"){if(Hu(e.charCodeAt(u))){const ne=e.charCodeAt(u);let B=u+1;for(;B<e.length&&(e.charCodeAt(B)!==ne||a(B));)B+=1;if(e.charCodeAt(B)!==ne)throw new Error("Attribute value didn't end");I=ot(e.slice(u+1,B)),u=B+1}else{const ne=u;for(;u<e.length&&(!nr(e.charCodeAt(u))&&e.charCodeAt(u)!==93||a(u));)u+=1;I=ot(e.slice(ne,u))}r(0);const xe=e.charCodeAt(u)|32;xe===115?(de=!1,r(1)):xe===105&&(de=!0,r(1))}if(e.charCodeAt(u)!==93)throw new Error("Attribute selector didn't terminate");u+=1;const De={type:C.Attribute,name:y,action:V,value:I,namespace:w,ignoreCase:de};s.push(De);break}case 58:{if(e.charCodeAt(u+1)===58){s.push({type:C.PseudoElement,name:n(2).toLowerCase(),data:e.charCodeAt(u)===40?i():null});continue}const y=n(1).toLowerCase();let w=null;if(e.charCodeAt(u)===40)if(cc.has(y)){if(Hu(e.charCodeAt(u+1)))throw new Error(`Pseudo-selector ${y} cannot be quoted`);if(w=[],u=ir(w,e,u+1),e.charCodeAt(u)!==41)throw new Error(`Missing closing parenthesis in :${y} (${e})`);u+=1}else{if(w=i(),lc.has(y)){const V=w.charCodeAt(0);V===w.charCodeAt(w.length-1)&&Hu(V)&&(w=w.slice(1,-1))}w=ot(w)}s.push({type:C.Pseudo,name:y,data:w});break}case 44:{b(),s=[],r(1);break}default:{if(e.startsWith("/*",u)){const V=e.indexOf("*/",u+2);if(V<0)throw new Error("Comment was not terminated");u=V+2,s.length===0&&r(0);break}let y=null,w;if(S===42)u+=1,w="*";else if(S===124){if(w="",e.charCodeAt(u+1)===124){c(C.ColumnCombinator),r(2);break}}else if(sr.test(e.slice(u)))w=n(0);else break e;e.charCodeAt(u)===124&&e.charCodeAt(u+1)!==124&&(y=w,e.charCodeAt(u+1)===42?(w="*",u+=2):w=n(1)),s.push(w==="*"?{type:C.Universal,namespace:y}:{type:C.Tag,name:w,namespace:y})}}}return b(),u}const ar=new Map([[C.Universal,50],[C.Tag,30],[C.Attribute,1],[C.Pseudo,0]]);function Bu(t){return!ar.has(t.type)}const hc=new Map([[M.Exists,10],[M.Equals,8],[M.Not,7],[M.Start,6],[M.End,6],[M.Any,5]]);function fc(t){const e=t.map(cr);for(let u=1;u<t.length;u++){const s=e[u];if(!(s<0))for(let n=u-1;n>=0&&s<e[n];n--){const r=t[n+1];t[n+1]=t[n],t[n]=r,e[n+1]=e[n],e[n]=s}}}function cr(t){var e,u;let s=(e=ar.get(t.type))!==null&&e!==void 0?e:-1;return t.type===C.Attribute?(s=(u=hc.get(t.action))!==null&&u!==void 0?u:4,t.action===M.Equals&&t.name==="id"&&(s=9),t.ignoreCase&&(s>>=1)):t.type===C.Pseudo&&(t.data?t.name==="has"||t.name==="contains"?s=0:Array.isArray(t.data)?(s=Math.min(...t.data.map(n=>Math.min(...n.map(cr)))),s<0&&(s=0)):s=2:s=3),s}const bc=/[-[\]{}()*+?.,\\^$|#\s]/g;function or(t){return t.replace(bc,"\\$&")}const pc=new Set(["accept","accept-charset","align","alink","axis","bgcolor","charset","checked","clear","codetype","color","compact","declare","defer","dir","direction","disabled","enctype","face","frame","hreflang","http-equiv","lang","language","link","media","method","multiple","nohref","noresize","noshade","nowrap","readonly","rel","rev","rules","scope","scrolling","selected","shape","target","text","type","valign","valuetype","vlink"]);function Fe(t,e){return typeof t.ignoreCase=="boolean"?t.ignoreCase:t.ignoreCase==="quirks"?!!e.quirksMode:!e.xmlMode&&pc.has(t.name)}const gc={equals(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;return Fe(e,u)?(r=r.toLowerCase(),i=>{const a=s.getAttributeValue(i,n);return a!=null&&a.length===r.length&&a.toLowerCase()===r&&t(i)}):i=>s.getAttributeValue(i,n)===r&&t(i)},hyphen(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;const i=r.length;return Fe(e,u)?(r=r.toLowerCase(),function(o){const c=s.getAttributeValue(o,n);return c!=null&&(c.length===i||c.charAt(i)==="-")&&c.substr(0,i).toLowerCase()===r&&t(o)}):function(o){const c=s.getAttributeValue(o,n);return c!=null&&(c.length===i||c.charAt(i)==="-")&&c.substr(0,i)===r&&t(o)}},element(t,e,u){const{adapter:s}=u,{name:n,value:r}=e;if(/\s/.test(r))return E.falseFunc;const i=new RegExp(`(?:^|\\s)${or(r)}(?:$|\\s)`,Fe(e,u)?"i":"");return function(o){const c=s.getAttributeValue(o,n);return c!=null&&c.length>=r.length&&i.test(c)&&t(o)}},exists(t,{name:e},{adapter:u}){return s=>u.hasAttrib(s,e)&&t(s)},start(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;const i=r.length;return i===0?E.falseFunc:Fe(e,u)?(r=r.toLowerCase(),a=>{const o=s.getAttributeValue(a,n);return o!=null&&o.length>=i&&o.substr(0,i).toLowerCase()===r&&t(a)}):a=>{var o;return!!(!((o=s.getAttributeValue(a,n))===null||o===void 0)&&o.startsWith(r))&&t(a)}},end(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;const i=-r.length;return i===0?E.falseFunc:Fe(e,u)?(r=r.toLowerCase(),a=>{var o;return((o=s.getAttributeValue(a,n))===null||o===void 0?void 0:o.substr(i).toLowerCase())===r&&t(a)}):a=>{var o;return!!(!((o=s.getAttributeValue(a,n))===null||o===void 0)&&o.endsWith(r))&&t(a)}},any(t,e,u){const{adapter:s}=u,{name:n,value:r}=e;if(r==="")return E.falseFunc;if(Fe(e,u)){const i=new RegExp(or(r),"i");return function(o){const c=s.getAttributeValue(o,n);return c!=null&&c.length>=r.length&&i.test(c)&&t(o)}}return i=>{var a;return!!(!((a=s.getAttributeValue(i,n))===null||a===void 0)&&a.includes(r))&&t(i)}},not(t,e,u){const{adapter:s}=u,{name:n}=e;let{value:r}=e;return r===""?i=>!!s.getAttributeValue(i,n)&&t(i):Fe(e,u)?(r=r.toLowerCase(),i=>{const a=s.getAttributeValue(i,n);return(a==null||a.length!==r.length||a.toLowerCase()!==r)&&t(i)}):i=>s.getAttributeValue(i,n)!==r&&t(i)}},mc=new Set([9,10,12,13,32]),lr=48,Sc=57;function xc(t){if(t=t.trim().toLowerCase(),t==="even")return[2,0];if(t==="odd")return[2,1];let e=0,u=0,s=r(),n=i();if(e<t.length&&t.charAt(e)==="n"&&(e++,u=s*(n??1),a(),e<t.length?(s=r(),a(),n=i()):s=n=0),n===null||e<t.length)throw new Error(`n-th rule couldn't be parsed ('${t}')`);return[u,s*n];function r(){return t.charAt(e)==="-"?(e++,-1):(t.charAt(e)==="+"&&e++,1)}function i(){const o=e;let c=0;for(;e<t.length&&t.charCodeAt(e)>=lr&&t.charCodeAt(e)<=Sc;)c=c*10+(t.charCodeAt(e)-lr),e++;return e===o?null:c}function a(){for(;e<t.length&&mc.has(t.charCodeAt(e));)e++}}function yc(t){const e=t[0],u=t[1]-1;if(u<0&&e<=0)return E.falseFunc;if(e===-1)return r=>r<=u;if(e===0)return r=>r===u;if(e===1)return u<0?E.trueFunc:r=>r>=u;const s=Math.abs(e),n=(u%s+s)%s;return e>1?r=>r>=u&&r%s===n:r=>r<=u&&r%s===n}function Pt(t){return yc(xc(t))}function Ft(t,e){return u=>{const s=e.getParent(u);return s!=null&&e.isTag(s)&&t(u)}}const $u={contains(t,e,{adapter:u}){return function(n){return t(n)&&u.getText(n).includes(e)}},icontains(t,e,{adapter:u}){const s=e.toLowerCase();return function(r){return t(r)&&u.getText(r).toLowerCase().includes(s)}},"nth-child"(t,e,{adapter:u,equals:s}){const n=Pt(e);return n===E.falseFunc?E.falseFunc:n===E.trueFunc?Ft(t,u):function(i){const a=u.getSiblings(i);let o=0;for(let c=0;c<a.length&&!s(i,a[c]);c++)u.isTag(a[c])&&o++;return n(o)&&t(i)}},"nth-last-child"(t,e,{adapter:u,equals:s}){const n=Pt(e);return n===E.falseFunc?E.falseFunc:n===E.trueFunc?Ft(t,u):function(i){const a=u.getSiblings(i);let o=0;for(let c=a.length-1;c>=0&&!s(i,a[c]);c--)u.isTag(a[c])&&o++;return n(o)&&t(i)}},"nth-of-type"(t,e,{adapter:u,equals:s}){const n=Pt(e);return n===E.falseFunc?E.falseFunc:n===E.trueFunc?Ft(t,u):function(i){const a=u.getSiblings(i);let o=0;for(let c=0;c<a.length;c++){const d=a[c];if(s(i,d))break;u.isTag(d)&&u.getName(d)===u.getName(i)&&o++}return n(o)&&t(i)}},"nth-last-of-type"(t,e,{adapter:u,equals:s}){const n=Pt(e);return n===E.falseFunc?E.falseFunc:n===E.trueFunc?Ft(t,u):function(i){const a=u.getSiblings(i);let o=0;for(let c=a.length-1;c>=0;c--){const d=a[c];if(s(i,d))break;u.isTag(d)&&u.getName(d)===u.getName(i)&&o++}return n(o)&&t(i)}},root(t,e,{adapter:u}){return s=>{const n=u.getParent(s);return(n==null||!u.isTag(n))&&t(s)}},scope(t,e,u,s){const{equals:n}=u;return!s||s.length===0?$u.root(t,e,u):s.length===1?r=>n(s[0],r)&&t(r):r=>s.includes(r)&&t(r)},hover:Vu("isHovered"),visited:Vu("isVisited"),active:Vu("isActive")};function Vu(t){return function(u,s,{adapter:n}){const r=n[t];return typeof r!="function"?E.falseFunc:function(a){return r(a)&&u(a)}}}const dr={empty(t,{adapter:e}){return!e.getChildren(t).some(u=>e.isTag(u)||e.getText(u)!=="")},"first-child"(t,{adapter:e,equals:u}){if(e.prevElementSibling)return e.prevElementSibling(t)==null;const s=e.getSiblings(t).find(n=>e.isTag(n));return s!=null&&u(t,s)},"last-child"(t,{adapter:e,equals:u}){const s=e.getSiblings(t);for(let n=s.length-1;n>=0;n--){if(u(t,s[n]))return!0;if(e.isTag(s[n]))break}return!1},"first-of-type"(t,{adapter:e,equals:u}){const s=e.getSiblings(t),n=e.getName(t);for(let r=0;r<s.length;r++){const i=s[r];if(u(t,i))return!0;if(e.isTag(i)&&e.getName(i)===n)break}return!1},"last-of-type"(t,{adapter:e,equals:u}){const s=e.getSiblings(t),n=e.getName(t);for(let r=s.length-1;r>=0;r--){const i=s[r];if(u(t,i))return!0;if(e.isTag(i)&&e.getName(i)===n)break}return!1},"only-of-type"(t,{adapter:e,equals:u}){const s=e.getName(t);return e.getSiblings(t).every(n=>u(t,n)||!e.isTag(n)||e.getName(n)!==s)},"only-child"(t,{adapter:e,equals:u}){return e.getSiblings(t).every(s=>u(t,s)||!e.isTag(s))}};function hr(t,e,u,s){if(u===null){if(t.length>s)throw new Error(`Pseudo-class :${e} requires an argument`)}else if(t.length===s)throw new Error(`Pseudo-class :${e} doesn't have any arguments`)}const Cc={"any-link":":is(a, area, link)[href]",link:":any-link:not(:visited)",disabled:`:is( + :is(button, input, select, textarea, optgroup, option)[disabled], + optgroup[disabled] > option, + fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *) + )`,enabled:":not(:disabled)",checked:":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",required:":is(input, select, textarea)[required]",optional:":is(input, select, textarea):not([required])",selected:"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",checkbox:"[type=checkbox]",file:"[type=file]",password:"[type=password]",radio:"[type=radio]",reset:"[type=reset]",image:"[type=image]",submit:"[type=submit]",parent:":not(:empty)",header:":is(h1, h2, h3, h4, h5, h6)",button:":is(button, input[type=button])",input:":is(input, textarea, select, button)",text:"input:is(:not([type!='']), [type=text])"},fr={};function br(t,e){return t===E.falseFunc?E.falseFunc:u=>e.isTag(u)&&t(u)}function Ec(t,e){const u=e.getSiblings(t);if(u.length<=1)return[];const s=u.indexOf(t);return s<0||s===u.length-1?[]:u.slice(s+1).filter(e.isTag)}function Uu(t){return{xmlMode:!!t.xmlMode,lowerCaseAttributeNames:!!t.lowerCaseAttributeNames,lowerCaseTags:!!t.lowerCaseTags,quirksMode:!!t.quirksMode,cacheResults:!!t.cacheResults,pseudos:t.pseudos,adapter:t.adapter,equals:t.equals}}const Gu=(t,e,u,s,n)=>{const r=n(e,Uu(u),s);return r===E.trueFunc?t:r===E.falseFunc?E.falseFunc:i=>r(i)&&t(i)},ju={is:Gu,matches:Gu,where:Gu,not(t,e,u,s,n){const r=n(e,Uu(u),s);return r===E.falseFunc?t:r===E.trueFunc?E.falseFunc:i=>!r(i)&&t(i)},has(t,e,u,s,n){const{adapter:r}=u,i=Uu(u);i.relativeSelector=!0;const a=e.some(d=>d.some(Bu))?[fr]:void 0,o=n(e,i,a);if(o===E.falseFunc)return E.falseFunc;const c=br(o,r);if(a&&o!==E.trueFunc){const{shouldTestNextSiblings:d=!1}=o;return b=>{if(!t(b))return!1;a[0]=b;const S=r.getChildren(b),y=d?[...S,...Ec(b,r)]:S;return r.existsOne(c,y)}}return d=>t(d)&&r.existsOne(c,r.getChildren(d))}};function wc(t,e,u,s,n){var r;const{name:i,data:a}=e;if(Array.isArray(a)){if(!(i in ju))throw new Error(`Unknown pseudo-class :${i}(${a})`);return ju[i](t,a,u,s,n)}const o=(r=u.pseudos)===null||r===void 0?void 0:r[i],c=typeof o=="string"?o:Cc[i];if(typeof c=="string"){if(a!=null)throw new Error(`Pseudo ${i} doesn't have any arguments`);const d=rr(c);return ju.is(t,d,u,s,n)}if(typeof o=="function")return hr(o,i,a,1),d=>o(d,a)&&t(d);if(i in $u)return $u[i](t,a,u,s);if(i in dr){const d=dr[i];return hr(d,i,a,2),b=>d(b,u,a)&&t(b)}throw new Error(`Unknown pseudo-class :${i}`)}function Wu(t,e){const u=e.getParent(t);return u&&e.isTag(u)?u:null}function vc(t,e,u,s,n){const{adapter:r,equals:i}=u;switch(e.type){case C.PseudoElement:throw new Error("Pseudo-elements are not supported by css-select");case C.ColumnCombinator:throw new Error("Column combinators are not yet supported by css-select");case C.Attribute:{if(e.namespace!=null)throw new Error("Namespaced attributes are not yet supported by css-select");return(!u.xmlMode||u.lowerCaseAttributeNames)&&(e.name=e.name.toLowerCase()),gc[e.action](t,e,u)}case C.Pseudo:return wc(t,e,u,s,n);case C.Tag:{if(e.namespace!=null)throw new Error("Namespaced tag names are not yet supported by css-select");let{name:a}=e;return(!u.xmlMode||u.lowerCaseTags)&&(a=a.toLowerCase()),function(c){return r.getName(c)===a&&t(c)}}case C.Descendant:{if(u.cacheResults===!1||typeof WeakSet>"u")return function(c){let d=c;for(;d=Wu(d,r);)if(t(d))return!0;return!1};const a=new WeakSet;return function(c){let d=c;for(;d=Wu(d,r);)if(!a.has(d)){if(r.isTag(d)&&t(d))return!0;a.add(d)}return!1}}case"_flexibleDescendant":return function(o){let c=o;do if(t(c))return!0;while(c=Wu(c,r));return!1};case C.Parent:return function(o){return r.getChildren(o).some(c=>r.isTag(c)&&t(c))};case C.Child:return function(o){const c=r.getParent(o);return c!=null&&r.isTag(c)&&t(c)};case C.Sibling:return function(o){const c=r.getSiblings(o);for(let d=0;d<c.length;d++){const b=c[d];if(i(o,b))break;if(r.isTag(b)&&t(b))return!0}return!1};case C.Adjacent:return r.prevElementSibling?function(o){const c=r.prevElementSibling(o);return c!=null&&t(c)}:function(o){const c=r.getSiblings(o);let d;for(let b=0;b<c.length;b++){const S=c[b];if(i(o,S))break;r.isTag(S)&&(d=S)}return!!d&&t(d)};case C.Universal:{if(e.namespace!=null&&e.namespace!=="*")throw new Error("Namespaced universal selectors are not yet supported by css-select");return t}}}function pr(t,e,u){const s=Tc(t,e,u);return br(s,e.adapter)}function Tc(t,e,u){const s=typeof t=="string"?rr(t):t;return mr(s,e,u)}function gr(t){return t.type===C.Pseudo&&(t.name==="scope"||Array.isArray(t.data)&&t.data.some(e=>e.some(gr)))}const Nc={type:C.Descendant},Ac={type:"_flexibleDescendant"},Rc={type:C.Pseudo,name:"scope",data:null};function Dc(t,{adapter:e},u){const s=!!u?.every(n=>{const r=e.isTag(n)&&e.getParent(n);return n===fr||r&&e.isTag(r)});for(const n of t){if(!(n.length>0&&Bu(n[0])&&n[0].type!==C.Descendant))if(s&&!n.some(gr))n.unshift(Nc);else continue;n.unshift(Rc)}}function mr(t,e,u){var s;t.forEach(fc),u=(s=e.context)!==null&&s!==void 0?s:u;const n=Array.isArray(u),r=u&&(Array.isArray(u)?u:[u]);if(e.relativeSelector!==!1)Dc(t,e,r);else if(t.some(o=>o.length>0&&Bu(o[0])))throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");let i=!1;const a=t.map(o=>{if(o.length>=2){const[c,d]=o;c.type!==C.Pseudo||c.name!=="scope"||(n&&d.type===C.Descendant?o[1]=Ac:(d.type===C.Adjacent||d.type===C.Sibling)&&(i=!0))}return kc(o,e,r)}).reduce(Lc,E.falseFunc);return a.shouldTestNextSiblings=i,a}function kc(t,e,u){var s;return t.reduce((n,r)=>n===E.falseFunc?E.falseFunc:vc(n,r,e,u,mr),(s=e.rootFunc)!==null&&s!==void 0?s:E.trueFunc)}function Lc(t,e){return e===E.falseFunc||t===E.trueFunc?t:t===E.falseFunc||e===E.trueFunc?e:function(s){return t(s)||e(s)}}const Sr=(t,e)=>t===e,Mc={adapter:Du,equals:Sr};function xr(t){var e,u,s,n;const r=t??Mc;return(e=r.adapter)!==null&&e!==void 0||(r.adapter=Du),(u=r.equals)!==null&&u!==void 0||(r.equals=(n=(s=r.adapter)===null||s===void 0?void 0:s.equals)!==null&&n!==void 0?n:Sr),r}function Ic(t){return function(u,s,n){const r=xr(s);return t(u,r,n)}}const Oc=Ic(pr);function _c(t,e,u){const s=xr(u);return(typeof e=="function"?e:pr(e,s))(t)}const{isArray:qc}=Array,Ht=({nodeType:t})=>t===v,yr=(t,e)=>e.some(u=>Ht(u)&&(t(u)||yr(t,Qe(u)))),Pc=(t,e)=>e==="class"?t.classList.value:t.getAttribute(e),Qe=({childNodes:t})=>t,Fc=t=>{const{localName:e}=t;return Te(t)?e.toLowerCase():e},Hc=({parentNode:t})=>t,Bc=t=>{const{parentNode:e}=t;return e?Qe(e):t},zu=t=>qc(t)?t.map(zu).join(""):Ht(t)?zu(Qe(t)):t.nodeType===F?t.data:"",$c=(t,e)=>t.hasAttribute(e),Vc=t=>{let{length:e}=t;for(;e--;){const u=t[e];if(e&&-1<t.lastIndexOf(u,e-1)){t.splice(e,1);continue}for(let{parentNode:s}=u;s;s=s.parentNode)if(t.includes(s)){t.splice(e,1);break}}return t},Cr=(t,e)=>{const u=[];for(const s of e)Ht(s)&&(t(s)&&u.push(s),u.push(...Cr(t,Qe(s))));return u},Er=(t,e)=>{for(let u of e)if(t(u)||(u=Er(t,Qe(u))))return u;return null},wr={isTag:Ht,existsOne:yr,getAttributeValue:Pc,getChildren:Qe,getName:Fc,getParent:Hc,getSiblings:Bc,getText:zu,hasAttrib:$c,removeSubsets:Vc,findAll:Cr,findOne:Er},Ku=(t,e)=>Oc(e,{context:e.includes(":scope")?t:void 0,xmlMode:!Te(t),adapter:wr}),Uc=(t,e)=>_c(t,e,{strict:!0,context:e.includes(":scope")?t:void 0,xmlMode:!Te(t),adapter:wr});let Ze=class Ea extends ct{constructor(e,u=""){super(e,"#text",F,u)}get wholeText(){const e=[];let{previousSibling:u,nextSibling:s}=this;for(;u&&u.nodeType===F;){e.unshift(u[R]);u=u.previousSibling}for(e.push(this[R]);s&&s.nodeType===F;){e.push(s[R]);s=s.nextSibling}return e.join("")}cloneNode(){const{ownerDocument:e,[R]:u}=this;return new Ea(e,u)}toString(){return _u(this[R])}};const Gc=t=>t instanceof qe,Ju=(t,e,u)=>{const{ownerDocument:s}=t;for(const n of u)t.insertBefore(Gc(n)?n:new Ze(s,n),e)};class vr extends qe{constructor(e,u,s){super(e,u,s),this[H]=null,this[p]=this[m]={[p]:null,[D]:this,[G]:this,nodeType:fe,ownerDocument:this.ownerDocument,parentNode:null}}get childNodes(){const e=new ue;let{firstChild:u}=this;for(;u;)e.push(u),u=Pe(u);return e}get children(){const e=new ue;let{firstElementChild:u}=this;for(;u;)e.push(u),u=qu(u);return e}get firstChild(){let{[p]:e,[m]:u}=this;for(;e.nodeType===q;)e=e[p];return e===u?null:e}get firstElementChild(){let{firstChild:e}=this;for(;e;){if(e.nodeType===v)return e;e=Pe(e)}return null}get lastChild(){const e=this[m][D];switch(e.nodeType){case fe:return e[G];case q:return null}return e===this?null:e}get lastElementChild(){let{lastChild:e}=this;for(;e;){if(e.nodeType===v)return e;e=at(e)}return null}get childElementCount(){return this.children.length}prepend(...e){Ju(this,this.firstChild,e)}append(...e){Ju(this,this[m],e)}replaceChildren(...e){let{[p]:u,[m]:s}=this;for(;u!==s&&u.nodeType===q;)u=u[p];for(;u!==s;){const n=K(u)[p];u.remove(),u=n}e.length&&Ju(this,s,e)}getElementsByClassName(e){const u=new ue;let{[p]:s,[m]:n}=this;for(;s!==n;)s.nodeType===v&&s.hasAttribute("class")&&s.classList.has(e)&&u.push(s),s=s[p];return u}getElementsByTagName(e){const u=new ue;let{[p]:s,[m]:n}=this;for(;s!==n;)s.nodeType===v&&(s.localName===e||Lu(s)===e)&&u.push(s),s=s[p];return u}querySelector(e){const u=Ku(this,e);let{[p]:s,[m]:n}=this;for(;s!==n;){if(s.nodeType===v&&u(s))return s;s=s.nodeType===v&&s.localName==="template"?s[m]:s[p]}return null}querySelectorAll(e){const u=Ku(this,e),s=new ue;let{[p]:n,[m]:r}=this;for(;n!==r;)n.nodeType===v&&u(n)&&s.push(n),n=n.nodeType===v&&n.localName==="template"?n[m]:n[p];return s}appendChild(e){return this.insertBefore(e,this[m])}contains(e){let u=e;for(;u&&u!==this;)u=u.parentNode;return u===this}insertBefore(e,u=null){if(e===u)return e;if(e===this)throw new Error("unable to append a node to itself");const s=u||this[m];switch(e.nodeType){case v:e.remove(),e.parentNode=this,ku(s[D],e,s),it(e,null),Mu(e);break;case ee:{let{[H]:n,firstChild:r,lastChild:i}=e;if(r){V0(s[D],r,i,s),te(e,e[m]),n&&n.replaceChildren();do r.parentNode=this,it(r,null),r.nodeType===v&&Mu(r);while(r!==i&&(r=Pe(r)))}break}case F:case ae:case ie:e.remove();default:e.parentNode=this,We(s[D],e,s),it(e,null);break}return e}normalize(){let{[p]:e,[m]:u}=this;for(;e!==u;){const{[p]:s,[D]:n,nodeType:r}=e;r===F&&(e[R]?n&&n.nodeType===F&&(n.textContent+=e.textContent,e.remove()):e.remove()),e=s}}removeChild(e){if(e.parentNode!==this)throw new Error("node is not a child");return e.remove(),e}replaceChild(e,u){const s=K(u)[p];return u.remove(),this.insertBefore(e,s),u}}class Qu extends vr{getElementById(e){let{[p]:u,[m]:s}=this;for(;u!==s;){if(u.nodeType===v&&u.id===e)return u;u=u[p]}return null}cloneNode(e){const{ownerDocument:u,constructor:s}=this,n=new s(u);if(e){const{[m]:r}=n;for(const i of this.childNodes)n.insertBefore(i.cloneNode(e),r)}return n}toString(){const{childNodes:e,localName:u}=this;return`<${u}>${e.join("")}</${u}>`}toJSON(){const e=[];return K0(this,e),e}}let Zu=class extends Qu{constructor(e){super(e,"#document-fragment",ee)}},lt=class wa extends qe{constructor(e,u,s="",n=""){super(e,"#document-type",Me),this.name=u,this.publicId=s,this.systemId=n}cloneNode(){const{ownerDocument:e,name:u,publicId:s,systemId:n}=this;return new wa(e,u,s,n)}toString(){const{name:e,publicId:u,systemId:s}=this,n=0<u.length,r=[e];return n&&r.push("PUBLIC",`"${u}"`),s.length&&(n||r.push("SYSTEM"),r.push(`"${s}"`)),`<!DOCTYPE ${r.join(" ")}>`}toJSON(){const e=[];return jn(this,e),e}};const Tr=t=>t.childNodes.join(""),Nr=(t,e)=>{const{ownerDocument:u}=t,{constructor:s}=u,n=new s;n[Z]=u[Z];const{childNodes:r}=$n(n,Te(t),e);t.replaceChildren(...r.map(Ar,u))};function Ar(t){switch(t.ownerDocument=this,t.nodeType){case v:case ee:t.childNodes.forEach(Ar,this);break}return t}var Bt=t=>t.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g,"$2$5-$3$6").toLowerCase();const $t=new WeakMap,Yu=t=>`data-${Bt(t)}`,jc=t=>t.slice(5).replace(/-([a-z])/g,(e,u)=>u.toUpperCase()),Wc={get(t,e){if(e in t)return $t.get(t).getAttribute(Yu(e))},set(t,e,u){return t[e]=u,$t.get(t).setAttribute(Yu(e),u),!0},deleteProperty(t,e){return e in t&&$t.get(t).removeAttribute(Yu(e)),delete t[e]}};class Rr{constructor(e){for(const{name:u,value:s}of e.attributes)/^data-/.test(u)&&(this[jc(u)]=s);return $t.set(this,e),new Proxy(this,Wc)}}$(Rr.prototype,null);const{add:zc}=Set.prototype,Dr=(t,e)=>{for(const u of e)u&&zc.call(t,u)},dt=({[Hs]:t,value:e})=>{const u=t.getAttributeNode("class");u?u.value=e:Ou(t,new Je(t.ownerDocument,"class",e))};class Kc extends Set{constructor(e){super(),this[Hs]=e;const u=e.getAttributeNode("class");u&&Dr(this,u.value.split(/\s+/))}get length(){return this.size}get value(){return[...this].join(" ")}add(...e){Dr(this,e),dt(this)}contains(e){return this.has(e)}remove(...e){for(const u of e)this.delete(u);dt(this)}toggle(e,u){if(this.has(e)){if(u)return!0;this.delete(e),dt(this)}else if(u||arguments.length===1)return super.add(e),dt(this),!0;return!1}replace(e,u){return this.has(e)?(this.delete(e),super.add(u),dt(this),!0):!1}supports(){return!0}}const Vt=new WeakMap,Xu=t=>[...t.keys()].filter(e=>e!==H),Ut=t=>{const e=Vt.get(t).getAttributeNode("style");if((!e||e[xt]||t.get(H)!==e)&&(t.clear(),e)){t.set(H,e);for(const u of e[R].split(/\s*;\s*/)){let[s,...n]=u.split(":");if(n.length>0){s=s.trim();const r=n.join(":").trim();s&&r&&t.set(s,r)}}}return e},Gt={get(t,e){return e in Jc?t[e]:(Ut(t),e==="length"?Xu(t).length:/^\d+$/.test(e)?Xu(t)[e]:t.get(Bt(e)))},set(t,e,u){if(e==="cssText")t[e]=u;else{let s=Ut(t);if(u==null?t.delete(Bt(e)):t.set(Bt(e),u),!s){const n=Vt.get(t);s=n.ownerDocument.createAttribute("style"),n.setAttributeNode(s),t.set(H,s)}s[xt]=!1,s[R]=t.toString()}return!0}};let kr=class extends Map{constructor(e){return super(),Vt.set(this,e),new Proxy(this,Gt)}get cssText(){return this.toString()}set cssText(e){Vt.get(this).setAttribute("style",e)}getPropertyValue(e){const u=this[H];return Gt.get(u,e)}setProperty(e,u){const s=this[H];Gt.set(s,e,u)}removeProperty(e){const u=this[H];Gt.set(u,e,null)}[Symbol.iterator](){const e=this[H];Ut(e);const u=Xu(e),{length:s}=u;let n=0;return{next(){const r=n===s;return{done:r,value:r?null:u[n++]}}}}get[H](){return this}toString(){const e=this[H];Ut(e);const u=[];return e.forEach(Qc,u),u.join(";")}};const{prototype:Jc}=kr;function Qc(t,e){e!==H&&this.push(`${e}:${t}`)}const Lr=3,Mr=2,Ir=1,Or=0;function Zc(t){return t.currentTarget}class Re{static get BUBBLING_PHASE(){return Lr}static get AT_TARGET(){return Mr}static get CAPTURING_PHASE(){return Ir}static get NONE(){return Or}constructor(e,u={}){this.type=e,this.bubbles=!!u.bubbles,this.cancelBubble=!1,this._stopImmediatePropagationFlag=!1,this.cancelable=!!u.cancelable,this.eventPhase=this.NONE,this.timeStamp=Date.now(),this.defaultPrevented=!1,this.originalTarget=null,this.returnValue=null,this.srcElement=null,this.target=null,this._path=[]}get BUBBLING_PHASE(){return Lr}get AT_TARGET(){return Mr}get CAPTURING_PHASE(){return Ir}get NONE(){return Or}preventDefault(){this.defaultPrevented=!0}composedPath(){return this._path.map(Zc)}stopPropagation(){this.cancelBubble=!0}stopImmediatePropagation(){this.stopPropagation(),this._stopImmediatePropagationFlag=!0}}class _r extends Array{constructor(e){super(),this.ownerElement=e}getNamedItem(e){return this.ownerElement.getAttributeNode(e)}setNamedItem(e){this.ownerElement.setAttributeNode(e),this.unshift(e)}removeNamedItem(e){const u=this.getNamedItem(e);this.ownerElement.removeAttribute(e),this.splice(this.indexOf(u),1)}item(e){return e<this.length?this[e]:null}getNamedItemNS(e,u){return this.getNamedItem(u)}setNamedItemNS(e,u){return this.setNamedItem(u)}removeNamedItemNS(e,u){return this.removeNamedItem(u)}}let es=class extends Qu{constructor(e){super(e.ownerDocument,"#shadow-root",ee),this.host=e}get innerHTML(){return Tr(this)}set innerHTML(e){Nr(this,e)}};const Yc={get(t,e){return e in t?t[e]:t.find(({name:u})=>u===e)}},qr=(t,e,u)=>{if("ownerSVGElement"in e){const s=t.createElementNS(kt,u);return s.ownerSVGElement=e.ownerSVGElement,s}return t.createElement(u)},Xc=({localName:t,ownerDocument:e})=>e[Ve].voidElements.test(t);let ht=class extends vr{constructor(e,u){super(e,u,v),this[$e]=null,this[fu]=null,this[pu]=null}get isConnected(){return Zn(this)}get parentElement(){return Yn(this)}get previousSibling(){return at(this)}get nextSibling(){return Pe(this)}get namespaceURI(){return"http://www.w3.org/1999/xhtml"}get previousElementSibling(){return Xn(this)}get nextElementSibling(){return qu(this)}before(...e){er(this,e)}after(...e){tr(this,e)}replaceWith(...e){Fu(this,e)}remove(){ur(this[D],this,this[m][p])}get id(){return f.get(this,"id")}set id(e){f.set(this,"id",e)}get className(){return this.classList.value}set className(e){const{classList:u}=this;u.clear(),u.add(...Ie(e).split(/\s+/))}get nodeName(){return Lu(this)}get tagName(){return Lu(this)}get classList(){return this[$e]||(this[$e]=new Kc(this))}get dataset(){return this[fu]||(this[fu]=new Rr(this))}getBoundingClientRect(){return{x:0,y:0,bottom:0,height:0,left:0,right:0,top:0,width:0}}get nonce(){return f.get(this,"nonce")}set nonce(e){f.set(this,"nonce",e)}get style(){return this[pu]||(this[pu]=new kr(this))}get tabIndex(){return Ae.get(this,"tabindex")||-1}set tabIndex(e){Ae.set(this,"tabindex",e)}get slot(){return f.get(this,"slot")}set slot(e){f.set(this,"slot",e)}get innerText(){const e=[];let{[p]:u,[m]:s}=this;for(;u!==s;)u.nodeType===F?e.push(u.textContent.replace(/\s+/g," ")):e.length&&u[p]!=s&&M0.has(u.tagName)&&e.push(` +`),u=u[p];return e.join("")}get textContent(){const e=[];let{[p]:u,[m]:s}=this;for(;u!==s;)u.nodeType===F&&e.push(u.textContent),u=u[p];return e.join("")}set textContent(e){this.replaceChildren(),e!=null&&e!==""&&this.appendChild(new Ze(this.ownerDocument,e))}get innerHTML(){return Tr(this)}set innerHTML(e){Nr(this,e)}get outerHTML(){return this.toString()}set outerHTML(e){const u=this.ownerDocument.createElement("");u.innerHTML=e,this.replaceWith(...u.childNodes)}get attributes(){const e=new _r(this);let u=this[p];for(;u.nodeType===q;)e.push(u),u=u[p];return new Proxy(e,Yc)}focus(){this.dispatchEvent(new Re("focus"))}getAttribute(e){if(e==="class")return this.className;const u=this.getAttributeNode(e);return u&&(Te(this)?u.value:_u(u.value))}getAttributeNode(e){let u=this[p];for(;u.nodeType===q;){if(u.name===e)return u;u=u[p]}return null}getAttributeNames(){const e=new ue;let u=this[p];for(;u.nodeType===q;)e.push(u.name),u=u[p];return e}hasAttribute(e){return!!this.getAttributeNode(e)}hasAttributes(){return this[p].nodeType===q}removeAttribute(e){e==="class"&&this[$e]&&this[$e].clear();let u=this[p];for(;u.nodeType===q;){if(u.name===e){Jn(this,u);return}u=u[p]}}removeAttributeNode(e){let u=this[p];for(;u.nodeType===q;){if(u===e){Jn(this,u);return}u=u[p]}}setAttribute(e,u){if(e==="class")this.className=u;else{const s=this.getAttributeNode(e);s?s.value=u:Ou(this,new Je(this.ownerDocument,e,u))}}setAttributeNode(e){const{name:u}=e,s=this.getAttributeNode(u);if(s!==e){s&&this.removeAttributeNode(s);const{ownerElement:n}=e;n&&n.removeAttributeNode(e),Ou(this,e)}return s}toggleAttribute(e,u){return this.hasAttribute(e)?u?!0:(this.removeAttribute(e),!1):u||arguments.length===1?(this.setAttribute(e,""),!0):!1}get shadowRoot(){if(Ne.has(this)){const{mode:e,shadowRoot:u}=Ne.get(this);if(e==="open")return u}return null}attachShadow(e){if(Ne.has(this))throw new Error("operation not supported");const u=new es(this);return Ne.set(this,{mode:e.mode,shadowRoot:u}),u}matches(e){return Uc(this,e)}closest(e){let u=this;const s=Ku(u,e);for(;u&&!s(u);)u=u.parentElement;return u}insertAdjacentElement(e,u){const{parentElement:s}=this;switch(e){case"beforebegin":if(s){s.insertBefore(u,this);break}return null;case"afterbegin":this.insertBefore(u,this.firstChild);break;case"beforeend":this.insertBefore(u,null);break;case"afterend":if(s){s.insertBefore(u,this.nextSibling);break}return null}return u}insertAdjacentHTML(e,u){const s=this.ownerDocument.createElement("template");s.innerHTML=u,this.insertAdjacentElement(e,s.content)}insertAdjacentText(e,u){const s=this.ownerDocument.createTextNode(u);this.insertAdjacentElement(e,s)}cloneNode(e=!1){const{ownerDocument:u,localName:s}=this,n=d=>{d.parentNode=i,te(a,d),a=d},r=qr(u,this,s);let i=r,a=r,{[p]:o,[m]:c}=this;for(;o!==c&&(e||o.nodeType===q);){switch(o.nodeType){case fe:te(a,i[m]),a=i[m],i=i.parentNode;break;case v:{const d=qr(u,o,o.localName);n(d),i=d;break}case q:{const d=o.cloneNode(e);d.ownerElement=i,n(d);break}case F:case ae:case ie:n(o.cloneNode(e));break}o=o[p]}return te(a,r[m]),r}toString(){const e=[],{[m]:u}=this;let s={[p]:this},n=!1;do switch(s=s[p],s.nodeType){case q:{const r=" "+s;switch(r){case" id":case" class":case" style":break;default:e.push(r)}break}case fe:{const r=s[G];n?("ownerSVGElement"in r?e.push(" />"):Xc(r)?e.push(Te(r)?">":" />"):e.push(`></${r.localName}>`),n=!1):e.push(`</${r.localName}>`);break}case v:n&&e.push(">"),s.toString!==this.toString?(e.push(s.toString()),s=s[m],n=!1):(e.push(`<${s.localName}`),n=!0);break;case F:case ae:case ie:e.push((n?">":"")+s),n=!1;break}while(s!==u);return e.join("")}toJSON(){const e=[];return Wn(this,e),e}getAttributeNS(e,u){return this.getAttribute(u)}getElementsByTagNameNS(e,u){return this.getElementsByTagName(u)}hasAttributeNS(e,u){return this.hasAttribute(u)}removeAttributeNS(e,u){this.removeAttribute(u)}setAttributeNS(e,u,s){this.setAttribute(u,s)}setAttributeNodeNS(e){return this.setAttributeNode(e)}};const ts=new WeakMap,eo={get(t,e){return t[e]},set(t,e,u){return t[e]=u,!0}};let Ye=class extends ht{constructor(e,u,s=null){super(e,u),this.ownerSVGElement=s}get className(){return ts.has(this)||ts.set(this,new Proxy({baseVal:"",animVal:""},eo)),ts.get(this)}set className(e){const{classList:u}=this;u.clear(),u.add(...Ie(e).split(/\s+/))}get namespaceURI(){return"http://www.w3.org/2000/svg"}getAttribute(e){return e==="class"?[...this.classList].join(" "):super.getAttribute(e)}setAttribute(e,u){if(e==="class")this.className=u;else if(e==="style"){const{className:s}=this;s.baseVal=s.animVal=u}super.setAttribute(e,u)}};const W=()=>{throw new TypeError("Illegal constructor")};function jt(){W()}$(jt,Je),jt.prototype=Je.prototype;function Wt(){W()}$(Wt,_t),Wt.prototype=_t.prototype;function zt(){W()}$(zt,ct),zt.prototype=ct.prototype;function Kt(){W()}$(Kt,qt),Kt.prototype=qt.prototype;function Jt(){W()}$(Jt,Zu),Jt.prototype=Zu.prototype;function Qt(){W()}$(Qt,lt),Qt.prototype=lt.prototype;function Zt(){W()}$(Zt,ht),Zt.prototype=ht.prototype;function Yt(){W()}$(Yt,qe),Yt.prototype=qe.prototype;function Xt(){W()}$(Xt,es),Xt.prototype=es.prototype;function eu(){W()}$(eu,Ze),eu.prototype=Ze.prototype;function tu(){W()}$(tu,Ye),tu.prototype=Ye.prototype;const Pr={Attr:jt,CDATASection:Wt,CharacterData:zt,Comment:Kt,DocumentFragment:Jt,DocumentType:Qt,Element:Zt,Node:Yt,ShadowRoot:Xt,Text:eu,SVGElement:tu},ft=new WeakMap,l={get(t,e){return ft.has(t)&&ft.get(t)[e]||null},set(t,e,u){ft.has(t)||ft.set(t,{});const s=ft.get(t),n=e.slice(2);s[e]&&t.removeEventListener(n,s[e],!1),(s[e]=u)&&t.addEventListener(n,u,!1)}};class g extends ht{static get observedAttributes(){return[]}constructor(e=null,u=""){super(e,u);const s=!e;let n;if(s){const{constructor:r}=this;if(!ze.has(r))throw new Error("unable to initialize this Custom Element");({ownerDocument:e,localName:u,options:n}=ze.get(r))}if(e[st]){const{element:r,values:i}=e[st];e[st]=null;for(const[a,o]of i)r[a]=o;return r}s&&(this.ownerDocument=this[m].ownerDocument=e,this.localName=u,Oe.set(this,{connected:!1}),n.is&&this.setAttribute("is",n.is))}blur(){this.dispatchEvent(new Re("blur"))}click(){const e=new Re("click",{bubbles:!0,cancelable:!0});e.button=0,this.dispatchEvent(e)}get accessKeyLabel(){const{accessKey:e}=this;return e&&`Alt+Shift+${e}`}get isContentEditable(){return this.hasAttribute("contenteditable")}get contentEditable(){return N.get(this,"contenteditable")}set contentEditable(e){N.set(this,"contenteditable",e)}get draggable(){return N.get(this,"draggable")}set draggable(e){N.set(this,"draggable",e)}get hidden(){return N.get(this,"hidden")}set hidden(e){N.set(this,"hidden",e)}get spellcheck(){return N.get(this,"spellcheck")}set spellcheck(e){N.set(this,"spellcheck",e)}get accessKey(){return f.get(this,"accesskey")}set accessKey(e){f.set(this,"accesskey",e)}get dir(){return f.get(this,"dir")}set dir(e){f.set(this,"dir",e)}get lang(){return f.get(this,"lang")}set lang(e){f.set(this,"lang",e)}get title(){return f.get(this,"title")}set title(e){f.set(this,"title",e)}get onabort(){return l.get(this,"onabort")}set onabort(e){l.set(this,"onabort",e)}get onblur(){return l.get(this,"onblur")}set onblur(e){l.set(this,"onblur",e)}get oncancel(){return l.get(this,"oncancel")}set oncancel(e){l.set(this,"oncancel",e)}get oncanplay(){return l.get(this,"oncanplay")}set oncanplay(e){l.set(this,"oncanplay",e)}get oncanplaythrough(){return l.get(this,"oncanplaythrough")}set oncanplaythrough(e){l.set(this,"oncanplaythrough",e)}get onchange(){return l.get(this,"onchange")}set onchange(e){l.set(this,"onchange",e)}get onclick(){return l.get(this,"onclick")}set onclick(e){l.set(this,"onclick",e)}get onclose(){return l.get(this,"onclose")}set onclose(e){l.set(this,"onclose",e)}get oncontextmenu(){return l.get(this,"oncontextmenu")}set oncontextmenu(e){l.set(this,"oncontextmenu",e)}get oncuechange(){return l.get(this,"oncuechange")}set oncuechange(e){l.set(this,"oncuechange",e)}get ondblclick(){return l.get(this,"ondblclick")}set ondblclick(e){l.set(this,"ondblclick",e)}get ondrag(){return l.get(this,"ondrag")}set ondrag(e){l.set(this,"ondrag",e)}get ondragend(){return l.get(this,"ondragend")}set ondragend(e){l.set(this,"ondragend",e)}get ondragenter(){return l.get(this,"ondragenter")}set ondragenter(e){l.set(this,"ondragenter",e)}get ondragleave(){return l.get(this,"ondragleave")}set ondragleave(e){l.set(this,"ondragleave",e)}get ondragover(){return l.get(this,"ondragover")}set ondragover(e){l.set(this,"ondragover",e)}get ondragstart(){return l.get(this,"ondragstart")}set ondragstart(e){l.set(this,"ondragstart",e)}get ondrop(){return l.get(this,"ondrop")}set ondrop(e){l.set(this,"ondrop",e)}get ondurationchange(){return l.get(this,"ondurationchange")}set ondurationchange(e){l.set(this,"ondurationchange",e)}get onemptied(){return l.get(this,"onemptied")}set onemptied(e){l.set(this,"onemptied",e)}get onended(){return l.get(this,"onended")}set onended(e){l.set(this,"onended",e)}get onerror(){return l.get(this,"onerror")}set onerror(e){l.set(this,"onerror",e)}get onfocus(){return l.get(this,"onfocus")}set onfocus(e){l.set(this,"onfocus",e)}get oninput(){return l.get(this,"oninput")}set oninput(e){l.set(this,"oninput",e)}get oninvalid(){return l.get(this,"oninvalid")}set oninvalid(e){l.set(this,"oninvalid",e)}get onkeydown(){return l.get(this,"onkeydown")}set onkeydown(e){l.set(this,"onkeydown",e)}get onkeypress(){return l.get(this,"onkeypress")}set onkeypress(e){l.set(this,"onkeypress",e)}get onkeyup(){return l.get(this,"onkeyup")}set onkeyup(e){l.set(this,"onkeyup",e)}get onload(){return l.get(this,"onload")}set onload(e){l.set(this,"onload",e)}get onloadeddata(){return l.get(this,"onloadeddata")}set onloadeddata(e){l.set(this,"onloadeddata",e)}get onloadedmetadata(){return l.get(this,"onloadedmetadata")}set onloadedmetadata(e){l.set(this,"onloadedmetadata",e)}get onloadstart(){return l.get(this,"onloadstart")}set onloadstart(e){l.set(this,"onloadstart",e)}get onmousedown(){return l.get(this,"onmousedown")}set onmousedown(e){l.set(this,"onmousedown",e)}get onmouseenter(){return l.get(this,"onmouseenter")}set onmouseenter(e){l.set(this,"onmouseenter",e)}get onmouseleave(){return l.get(this,"onmouseleave")}set onmouseleave(e){l.set(this,"onmouseleave",e)}get onmousemove(){return l.get(this,"onmousemove")}set onmousemove(e){l.set(this,"onmousemove",e)}get onmouseout(){return l.get(this,"onmouseout")}set onmouseout(e){l.set(this,"onmouseout",e)}get onmouseover(){return l.get(this,"onmouseover")}set onmouseover(e){l.set(this,"onmouseover",e)}get onmouseup(){return l.get(this,"onmouseup")}set onmouseup(e){l.set(this,"onmouseup",e)}get onmousewheel(){return l.get(this,"onmousewheel")}set onmousewheel(e){l.set(this,"onmousewheel",e)}get onpause(){return l.get(this,"onpause")}set onpause(e){l.set(this,"onpause",e)}get onplay(){return l.get(this,"onplay")}set onplay(e){l.set(this,"onplay",e)}get onplaying(){return l.get(this,"onplaying")}set onplaying(e){l.set(this,"onplaying",e)}get onprogress(){return l.get(this,"onprogress")}set onprogress(e){l.set(this,"onprogress",e)}get onratechange(){return l.get(this,"onratechange")}set onratechange(e){l.set(this,"onratechange",e)}get onreset(){return l.get(this,"onreset")}set onreset(e){l.set(this,"onreset",e)}get onresize(){return l.get(this,"onresize")}set onresize(e){l.set(this,"onresize",e)}get onscroll(){return l.get(this,"onscroll")}set onscroll(e){l.set(this,"onscroll",e)}get onseeked(){return l.get(this,"onseeked")}set onseeked(e){l.set(this,"onseeked",e)}get onseeking(){return l.get(this,"onseeking")}set onseeking(e){l.set(this,"onseeking",e)}get onselect(){return l.get(this,"onselect")}set onselect(e){l.set(this,"onselect",e)}get onshow(){return l.get(this,"onshow")}set onshow(e){l.set(this,"onshow",e)}get onstalled(){return l.get(this,"onstalled")}set onstalled(e){l.set(this,"onstalled",e)}get onsubmit(){return l.get(this,"onsubmit")}set onsubmit(e){l.set(this,"onsubmit",e)}get onsuspend(){return l.get(this,"onsuspend")}set onsuspend(e){l.set(this,"onsuspend",e)}get ontimeupdate(){return l.get(this,"ontimeupdate")}set ontimeupdate(e){l.set(this,"ontimeupdate",e)}get ontoggle(){return l.get(this,"ontoggle")}set ontoggle(e){l.set(this,"ontoggle",e)}get onvolumechange(){return l.get(this,"onvolumechange")}set onvolumechange(e){l.set(this,"onvolumechange",e)}get onwaiting(){return l.get(this,"onwaiting")}set onwaiting(e){l.set(this,"onwaiting",e)}get onauxclick(){return l.get(this,"onauxclick")}set onauxclick(e){l.set(this,"onauxclick",e)}get ongotpointercapture(){return l.get(this,"ongotpointercapture")}set ongotpointercapture(e){l.set(this,"ongotpointercapture",e)}get onlostpointercapture(){return l.get(this,"onlostpointercapture")}set onlostpointercapture(e){l.set(this,"onlostpointercapture",e)}get onpointercancel(){return l.get(this,"onpointercancel")}set onpointercancel(e){l.set(this,"onpointercancel",e)}get onpointerdown(){return l.get(this,"onpointerdown")}set onpointerdown(e){l.set(this,"onpointerdown",e)}get onpointerenter(){return l.get(this,"onpointerenter")}set onpointerenter(e){l.set(this,"onpointerenter",e)}get onpointerleave(){return l.get(this,"onpointerleave")}set onpointerleave(e){l.set(this,"onpointerleave",e)}get onpointermove(){return l.get(this,"onpointermove")}set onpointermove(e){l.set(this,"onpointermove",e)}get onpointerout(){return l.get(this,"onpointerout")}set onpointerout(e){l.set(this,"onpointerout",e)}get onpointerover(){return l.get(this,"onpointerover")}set onpointerover(e){l.set(this,"onpointerover",e)}get onpointerup(){return l.get(this,"onpointerup")}set onpointerup(e){l.set(this,"onpointerup",e)}}const Fr="template";class us extends g{constructor(e){super(e,Fr);const u=this.ownerDocument.createDocumentFragment();(this[yt]=u)[H]=this}get content(){if(this.hasChildNodes()&&!this[yt].hasChildNodes())for(const e of this.childNodes)this[yt].appendChild(e.cloneNode(!0));return this[yt]}}L(Fr,us);class Hr extends g{constructor(e,u="html"){super(e,u)}}const{toString:to}=g.prototype;class uu extends g{get innerHTML(){return this.textContent}set innerHTML(e){this.textContent=e}toString(){return to.call(this.cloneNode()).replace(/></,`>${this.textContent}<`)}}const Br="script";class ss extends uu{constructor(e,u=Br){super(e,u)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get defer(){return N.get(this,"defer")}set defer(e){N.set(this,"defer",e)}get crossOrigin(){return f.get(this,"crossorigin")}set crossOrigin(e){f.set(this,"crossorigin",e)}get nomodule(){return N.get(this,"nomodule")}set nomodule(e){N.set(this,"nomodule",e)}get referrerPolicy(){return f.get(this,"referrerpolicy")}set referrerPolicy(e){f.set(this,"referrerpolicy",e)}get nonce(){return f.get(this,"nonce")}set nonce(e){f.set(this,"nonce",e)}get async(){return N.get(this,"async")}set async(e){N.set(this,"async",e)}get text(){return this.textContent}set text(e){this.textContent=e}}L(Br,ss);class $r extends g{constructor(e,u="frame"){super(e,u)}}const Vr="iframe";class ns extends g{constructor(e,u=Vr){super(e,u)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get srcdoc(){return f.get(this,"srcdoc")}set srcdoc(e){f.set(this,"srcdoc",e)}get name(){return f.get(this,"name")}set name(e){f.set(this,"name",e)}get allow(){return f.get(this,"allow")}set allow(e){f.set(this,"allow",e)}get allowFullscreen(){return N.get(this,"allowfullscreen")}set allowFullscreen(e){N.set(this,"allowfullscreen",e)}get referrerPolicy(){return f.get(this,"referrerpolicy")}set referrerPolicy(e){f.set(this,"referrerpolicy",e)}get loading(){return f.get(this,"loading")}set loading(e){f.set(this,"loading",e)}}L(Vr,ns);class Ur extends g{constructor(e,u="object"){super(e,u)}}class Gr extends g{constructor(e,u="head"){super(e,u)}}class jr extends g{constructor(e,u="body"){super(e,u)}}var rs={},is={},as={},Wr={},zr={};zr.StyleSheet=function(){this.parentStyleSheet=null},Wr.StyleSheet=zr.StyleSheet;var cs={},J={},k={};k.CSSRule=function(){this.parentRule=null,this.parentStyleSheet=null},k.CSSRule.UNKNOWN_RULE=0,k.CSSRule.STYLE_RULE=1,k.CSSRule.CHARSET_RULE=2,k.CSSRule.IMPORT_RULE=3,k.CSSRule.MEDIA_RULE=4,k.CSSRule.FONT_FACE_RULE=5,k.CSSRule.PAGE_RULE=6,k.CSSRule.KEYFRAMES_RULE=7,k.CSSRule.KEYFRAME_RULE=8,k.CSSRule.MARGIN_RULE=9,k.CSSRule.NAMESPACE_RULE=10,k.CSSRule.COUNTER_STYLE_RULE=11,k.CSSRule.SUPPORTS_RULE=12,k.CSSRule.DOCUMENT_RULE=13,k.CSSRule.FONT_FEATURE_VALUES_RULE=14,k.CSSRule.VIEWPORT_RULE=15,k.CSSRule.REGION_STYLE_RULE=16,k.CSSRule.prototype={constructor:k.CSSRule},J.CSSRule=k.CSSRule;var Kr;function su(){if(Kr)return cs;Kr=1;var t={CSSStyleDeclaration:et().CSSStyleDeclaration,CSSRule:J.CSSRule};return t.CSSStyleRule=function(){t.CSSRule.call(this),this.selectorText="",this.style=new t.CSSStyleDeclaration,this.style.parentRule=this},t.CSSStyleRule.prototype=new t.CSSRule,t.CSSStyleRule.prototype.constructor=t.CSSStyleRule,t.CSSStyleRule.prototype.type=1,Object.defineProperty(t.CSSStyleRule.prototype,"cssText",{get:function(){var e;return this.selectorText?e=this.selectorText+" {"+this.style.cssText+"}":e="",e},set:function(e){var u=t.CSSStyleRule.parse(e);this.style=u.style,this.selectorText=u.selectorText}}),t.CSSStyleRule.parse=function(e){for(var u=0,s="selector",n,r=u,i="",a={selector:!0,value:!0},o=new t.CSSStyleRule,c,d="",b;b=e.charAt(u);u++)switch(b){case" ":case" ":case"\r":case` +`:case"\f":if(a[s])switch(e.charAt(u-1)){case" ":case" ":case"\r":case` +`:case"\f":break;default:i+=" ";break}break;case'"':if(r=u+1,n=e.indexOf('"',r)+1,!n)throw'" is missing';i+=e.slice(u,n),u=n-1;break;case"'":if(r=u+1,n=e.indexOf("'",r)+1,!n)throw"' is missing";i+=e.slice(u,n),u=n-1;break;case"/":if(e.charAt(u+1)==="*"){if(u+=2,n=e.indexOf("*/",u),n===-1)throw new SyntaxError("Missing */");u=n+1}else i+=b;break;case"{":s==="selector"&&(o.selectorText=i.trim(),i="",s="name");break;case":":s==="name"?(c=i.trim(),i="",s="value"):i+=b;break;case"!":s==="value"&&e.indexOf("!important",u)===u?(d="important",u+=9):i+=b;break;case";":s==="value"?(o.style.setProperty(c,i.trim(),d),d="",i="",s="name"):i+=b;break;case"}":if(s==="value")o.style.setProperty(c,i.trim(),d),d="",i="";else{if(s==="name")break;i+=b}s="selector";break;default:i+=b;break}return o},cs.CSSStyleRule=t.CSSStyleRule,cs}var Jr;function nu(){if(Jr)return as;Jr=1;var t={StyleSheet:Wr.StyleSheet,CSSStyleRule:su().CSSStyleRule};return t.CSSStyleSheet=function(){t.StyleSheet.call(this),this.cssRules=[]},t.CSSStyleSheet.prototype=new t.StyleSheet,t.CSSStyleSheet.prototype.constructor=t.CSSStyleSheet,t.CSSStyleSheet.prototype.insertRule=function(e,u){if(u<0||u>this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");var s=t.parse(e).cssRules[0];return s.parentStyleSheet=this,this.cssRules.splice(u,0,s),u},t.CSSStyleSheet.prototype.deleteRule=function(e){if(e<0||e>=this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");this.cssRules.splice(e,1)},t.CSSStyleSheet.prototype.toString=function(){for(var e="",u=this.cssRules,s=0;s<u.length;s++)e+=u[s].cssText+` +`;return e},as.CSSStyleSheet=t.CSSStyleSheet,t.parse=ms().parse,as}var os={},ls={},ru={};ru.MediaList=function(){this.length=0},ru.MediaList.prototype={constructor:ru.MediaList,get mediaText(){return Array.prototype.join.call(this,", ")},set mediaText(t){for(var e=t.split(","),u=this.length=e.length,s=0;s<u;s++)this[s]=e[s].trim()},appendMedium:function(t){Array.prototype.indexOf.call(this,t)===-1&&(this[this.length]=t,this.length++)},deleteMedium:function(t){var e=Array.prototype.indexOf.call(this,t);e!==-1&&Array.prototype.splice.call(this,e,1)}},ls.MediaList=ru.MediaList;var Qr;function Zr(){if(Qr)return os;Qr=1;var t={CSSRule:J.CSSRule,CSSStyleSheet:nu().CSSStyleSheet,MediaList:ls.MediaList};return t.CSSImportRule=function(){t.CSSRule.call(this),this.href="",this.media=new t.MediaList,this.styleSheet=new t.CSSStyleSheet},t.CSSImportRule.prototype=new t.CSSRule,t.CSSImportRule.prototype.constructor=t.CSSImportRule,t.CSSImportRule.prototype.type=3,Object.defineProperty(t.CSSImportRule.prototype,"cssText",{get:function(){var e=this.media.mediaText;return"@import url("+this.href+")"+(e?" "+e:"")+";"},set:function(e){for(var u=0,s="",n="",r,i;i=e.charAt(u);u++)switch(i){case" ":case" ":case"\r":case` +`:case"\f":s==="after-import"?s="url":n+=i;break;case"@":!s&&e.indexOf("@import",u)===u&&(s="after-import",u+=6,n="");break;case"u":if(s==="url"&&e.indexOf("url(",u)===u){if(r=e.indexOf(")",u+1),r===-1)throw u+': ")" not found';u+=4;var a=e.slice(u,r);a[0]===a[a.length-1]&&(a[0]==='"'||a[0]==="'")&&(a=a.slice(1,-1)),this.href=a,u=r,s="media"}break;case'"':if(s==="url"){if(r=e.indexOf('"',u+1),!r)throw u+`: '"' not found`;this.href=e.slice(u+1,r),u=r,s="media"}break;case"'":if(s==="url"){if(r=e.indexOf("'",u+1),!r)throw u+`: "'" not found`;this.href=e.slice(u+1,r),u=r,s="media"}break;case";":s==="media"&&n&&(this.media.mediaText=n.trim());break;default:s==="media"&&(n+=i);break}}}),os.CSSImportRule=t.CSSImportRule,os}var Xe={},ce={CSSRule:J.CSSRule};ce.CSSGroupingRule=function(){ce.CSSRule.call(this),this.cssRules=[]},ce.CSSGroupingRule.prototype=new ce.CSSRule,ce.CSSGroupingRule.prototype.constructor=ce.CSSGroupingRule,ce.CSSGroupingRule.prototype.insertRule=function(e,u){if(u<0||u>this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");var s=ce.parse(e).cssRules[0];return s.parentRule=this,this.cssRules.splice(u,0,s),u},ce.CSSGroupingRule.prototype.deleteRule=function(e){if(e<0||e>=this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");this.cssRules.splice(e,1)[0].parentRule=null},Xe.CSSGroupingRule=ce.CSSGroupingRule;var ds={},bt={},be={CSSRule:J.CSSRule,CSSGroupingRule:Xe.CSSGroupingRule};be.CSSConditionRule=function(){be.CSSGroupingRule.call(this),this.cssRules=[]},be.CSSConditionRule.prototype=new be.CSSGroupingRule,be.CSSConditionRule.prototype.constructor=be.CSSConditionRule,be.CSSConditionRule.prototype.conditionText="",be.CSSConditionRule.prototype.cssText="",bt.CSSConditionRule=be.CSSConditionRule;var oe={CSSRule:J.CSSRule,CSSGroupingRule:Xe.CSSGroupingRule,CSSConditionRule:bt.CSSConditionRule,MediaList:ls.MediaList};oe.CSSMediaRule=function(){oe.CSSConditionRule.call(this),this.media=new oe.MediaList},oe.CSSMediaRule.prototype=new oe.CSSConditionRule,oe.CSSMediaRule.prototype.constructor=oe.CSSMediaRule,oe.CSSMediaRule.prototype.type=4,Object.defineProperties(oe.CSSMediaRule.prototype,{conditionText:{get:function(){return this.media.mediaText},set:function(t){this.media.mediaText=t},configurable:!0,enumerable:!0},cssText:{get:function(){for(var t=[],e=0,u=this.cssRules.length;e<u;e++)t.push(this.cssRules[e].cssText);return"@media "+this.media.mediaText+" {"+t.join("")+"}"},configurable:!0,enumerable:!0}}),ds.CSSMediaRule=oe.CSSMediaRule;var hs={},pe={CSSRule:J.CSSRule,CSSGroupingRule:Xe.CSSGroupingRule,CSSConditionRule:bt.CSSConditionRule};pe.CSSSupportsRule=function(){pe.CSSConditionRule.call(this)},pe.CSSSupportsRule.prototype=new pe.CSSConditionRule,pe.CSSSupportsRule.prototype.constructor=pe.CSSSupportsRule,pe.CSSSupportsRule.prototype.type=12,Object.defineProperty(pe.CSSSupportsRule.prototype,"cssText",{get:function(){for(var t=[],e=0,u=this.cssRules.length;e<u;e++)t.push(this.cssRules[e].cssText);return"@supports "+this.conditionText+" {"+t.join("")+"}"}}),hs.CSSSupportsRule=pe.CSSSupportsRule;var fs={},Yr;function Xr(){if(Yr)return fs;Yr=1;var t={CSSStyleDeclaration:et().CSSStyleDeclaration,CSSRule:J.CSSRule};return t.CSSFontFaceRule=function(){t.CSSRule.call(this),this.style=new t.CSSStyleDeclaration,this.style.parentRule=this},t.CSSFontFaceRule.prototype=new t.CSSRule,t.CSSFontFaceRule.prototype.constructor=t.CSSFontFaceRule,t.CSSFontFaceRule.prototype.type=5,Object.defineProperty(t.CSSFontFaceRule.prototype,"cssText",{get:function(){return"@font-face {"+this.style.cssText+"}"}}),fs.CSSFontFaceRule=t.CSSFontFaceRule,fs}var ei={},ge={CSSRule:J.CSSRule};ge.CSSHostRule=function(){ge.CSSRule.call(this),this.cssRules=[]},ge.CSSHostRule.prototype=new ge.CSSRule,ge.CSSHostRule.prototype.constructor=ge.CSSHostRule,ge.CSSHostRule.prototype.type=1001,Object.defineProperty(ge.CSSHostRule.prototype,"cssText",{get:function(){for(var t=[],e=0,u=this.cssRules.length;e<u;e++)t.push(this.cssRules[e].cssText);return"@host {"+t.join("")+"}"}}),ei.CSSHostRule=ge.CSSHostRule;var bs={},ti;function ps(){if(ti)return bs;ti=1;var t={CSSRule:J.CSSRule,CSSStyleDeclaration:et().CSSStyleDeclaration};return t.CSSKeyframeRule=function(){t.CSSRule.call(this),this.keyText="",this.style=new t.CSSStyleDeclaration,this.style.parentRule=this},t.CSSKeyframeRule.prototype=new t.CSSRule,t.CSSKeyframeRule.prototype.constructor=t.CSSKeyframeRule,t.CSSKeyframeRule.prototype.type=8,Object.defineProperty(t.CSSKeyframeRule.prototype,"cssText",{get:function(){return this.keyText+" {"+this.style.cssText+"} "}}),bs.CSSKeyframeRule=t.CSSKeyframeRule,bs}var gs={},me={CSSRule:J.CSSRule};me.CSSKeyframesRule=function(){me.CSSRule.call(this),this.name="",this.cssRules=[]},me.CSSKeyframesRule.prototype=new me.CSSRule,me.CSSKeyframesRule.prototype.constructor=me.CSSKeyframesRule,me.CSSKeyframesRule.prototype.type=7,Object.defineProperty(me.CSSKeyframesRule.prototype,"cssText",{get:function(){for(var t=[],e=0,u=this.cssRules.length;e<u;e++)t.push(" "+this.cssRules[e].cssText);return"@"+(this._vendorPrefix||"")+"keyframes "+this.name+` { +`+t.join(` +`)+` +}`}}),gs.CSSKeyframesRule=me.CSSKeyframesRule;var ui={},si={},iu={};iu.CSSValue=function(){},iu.CSSValue.prototype={constructor:iu.CSSValue,set cssText(t){var e=this._getConstructorName();throw new Error('DOMException: property "cssText" of "'+e+'" is readonly and can not be replaced with "'+t+'"!')},get cssText(){var t=this._getConstructorName();throw new Error('getter "cssText" of "'+t+'" is not implemented!')},_getConstructorName:function(){var t=this.constructor.toString(),e=t.match(/function\s([^\(]+)/),u=e[1];return u}},si.CSSValue=iu.CSSValue;var se={CSSValue:si.CSSValue};se.CSSValueExpression=function(e,u){this._token=e,this._idx=u},se.CSSValueExpression.prototype=new se.CSSValue,se.CSSValueExpression.prototype.constructor=se.CSSValueExpression,se.CSSValueExpression.prototype.parse=function(){for(var t=this._token,e=this._idx,u="",s="",n="",r,i=[];;++e){if(u=t.charAt(e),u===""){n="css expression error: unfinished expression!";break}switch(u){case"(":i.push(u),s+=u;break;case")":i.pop(u),s+=u;break;case"/":(r=this._parseJSComment(t,e))?r.error?n="css expression error: unfinished comment in expression!":e=r.idx:(r=this._parseJSRexExp(t,e))?(e=r.idx,s+=r.text):s+=u;break;case"'":case'"':r=this._parseJSString(t,e,u),r?(e=r.idx,s+=r.text):s+=u;break;default:s+=u;break}if(n||i.length===0)break}var a;return n?a={error:n}:a={idx:e,expression:s},a},se.CSSValueExpression.prototype._parseJSComment=function(t,e){var u=t.charAt(e+1),s;if(u==="/"||u==="*"){var n=e,r,i;if(u==="/"?i=` +`:u==="*"&&(i="*/"),r=t.indexOf(i,n+1+1),r!==-1)return r=r+i.length-1,s=t.substring(e,r+1),{idx:r,text:s};var a="css expression error: unfinished comment in expression!";return{error:a}}else return!1},se.CSSValueExpression.prototype._parseJSString=function(t,e,u){var s=this._findMatchedIdx(t,e,u),n;return s===-1?!1:(n=t.substring(e,s+u.length),{idx:s,text:n})},se.CSSValueExpression.prototype._parseJSRexExp=function(t,e){var u=t.substring(0,e).replace(/\s+$/,""),s=[/^$/,/\($/,/\[$/,/\!$/,/\+$/,/\-$/,/\*$/,/\/\s+/,/\%$/,/\=$/,/\>$/,/<$/,/\&$/,/\|$/,/\^$/,/\~$/,/\?$/,/\,$/,/delete$/,/in$/,/instanceof$/,/new$/,/typeof$/,/void$/],n=s.some(function(i){return i.test(u)});if(n){var r="/";return this._parseJSString(t,e,r)}else return!1},se.CSSValueExpression.prototype._findMatchedIdx=function(t,e,u){for(var s=e,n,r=-1;;)if(n=t.indexOf(u,s+1),n===-1){n=r;break}else{var i=t.substring(e+1,n),a=i.match(/\\+$/);if(!a||a[0]%2===0)break;s=n}var o=t.indexOf(` +`,e+1);return o<n&&(n=r),n},ui.CSSValueExpression=se.CSSValueExpression;var ni={},ri={},au={};au.MatcherList=function(){this.length=0},au.MatcherList.prototype={constructor:au.MatcherList,get matcherText(){return Array.prototype.join.call(this,", ")},set matcherText(t){for(var e=t.split(","),u=this.length=e.length,s=0;s<u;s++)this[s]=e[s].trim()},appendMatcher:function(t){Array.prototype.indexOf.call(this,t)===-1&&(this[this.length]=t,this.length++)},deleteMatcher:function(t){var e=Array.prototype.indexOf.call(this,t);e!==-1&&Array.prototype.splice.call(this,e,1)}},ri.MatcherList=au.MatcherList;var le={CSSRule:J.CSSRule,MatcherList:ri.MatcherList};le.CSSDocumentRule=function(){le.CSSRule.call(this),this.matcher=new le.MatcherList,this.cssRules=[]},le.CSSDocumentRule.prototype=new le.CSSRule,le.CSSDocumentRule.prototype.constructor=le.CSSDocumentRule,le.CSSDocumentRule.prototype.type=10,Object.defineProperty(le.CSSDocumentRule.prototype,"cssText",{get:function(){for(var t=[],e=0,u=this.cssRules.length;e<u;e++)t.push(this.cssRules[e].cssText);return"@-moz-document "+this.matcher.matcherText+" {"+t.join("")+"}"}}),ni.CSSDocumentRule=le.CSSDocumentRule;var ii;function ms(){if(ii)return is;ii=1;var t={};return t.parse=function(u){for(var s=0,n="before-selector",r,i="",a=0,o={selector:!0,value:!0,"value-parenthesis":!0,atRule:!0,"importRule-begin":!0,importRule:!0,atBlock:!0,conditionBlock:!0,"documentRule-begin":!0},c=new t.CSSStyleSheet,d=c,b,S=[],y=!1,w,V,Se="",I,de,De,xe,ne,B,Be,pt,_s=/@(-(?:\w+-)+)?keyframes/g,tt=function(va){var qs=u.substring(0,s).split(` +`),Ps=qs.length,Fs=qs.pop().length+1,St=new Error(va+" (line "+Ps+", char "+Fs+")");throw St.line=Ps,St.char=Fs,St.styleSheet=c,St},U;U=u.charAt(s);s++)switch(U){case" ":case" ":case"\r":case` +`:case"\f":o[n]&&(i+=U);break;case'"':r=s+1;do r=u.indexOf('"',r)+1,r||tt('Unmatched "');while(u[r-2]==="\\");switch(i+=u.slice(s,r),s=r-1,n){case"before-value":n="value";break;case"importRule-begin":n="importRule";break}break;case"'":r=s+1;do r=u.indexOf("'",r)+1,r||tt("Unmatched '");while(u[r-2]==="\\");switch(i+=u.slice(s,r),s=r-1,n){case"before-value":n="value";break;case"importRule-begin":n="importRule";break}break;case"/":u.charAt(s+1)==="*"?(s+=2,r=u.indexOf("*/",s),r===-1?tt("Missing */"):s=r+1):i+=U,n==="importRule-begin"&&(i+=" ",n="importRule");break;case"@":if(u.indexOf("@-moz-document",s)===s){n="documentRule-begin",Be=new t.CSSDocumentRule,Be.__starts=s,s+=13,i="";break}else if(u.indexOf("@media",s)===s){n="atBlock",de=new t.CSSMediaRule,de.__starts=s,s+=5,i="";break}else if(u.indexOf("@supports",s)===s){n="conditionBlock",De=new t.CSSSupportsRule,De.__starts=s,s+=8,i="";break}else if(u.indexOf("@host",s)===s){n="hostRule-begin",s+=4,pt=new t.CSSHostRule,pt.__starts=s,i="";break}else if(u.indexOf("@import",s)===s){n="importRule-begin",s+=6,i+="@import";break}else if(u.indexOf("@font-face",s)===s){n="fontFaceRule-begin",s+=9,ne=new t.CSSFontFaceRule,ne.__starts=s,i="";break}else{_s.lastIndex=s;var gt=_s.exec(u);if(gt&>.index===s){n="keyframesRule-begin",B=new t.CSSKeyframesRule,B.__starts=s,B._vendorPrefix=gt[1],s+=gt[0].length-1,i="";break}else n==="selector"&&(n="atRule")}i+=U;break;case"{":n==="selector"||n==="atRule"?(I.selectorText=i.trim(),I.style.__starts=s,i="",n="before-name"):n==="atBlock"?(de.media.mediaText=i.trim(),b&&S.push(b),d=b=de,de.parentStyleSheet=c,i="",n="before-selector"):n==="conditionBlock"?(De.conditionText=i.trim(),b&&S.push(b),d=b=De,De.parentStyleSheet=c,i="",n="before-selector"):n==="hostRule-begin"?(b&&S.push(b),d=b=pt,pt.parentStyleSheet=c,i="",n="before-selector"):n==="fontFaceRule-begin"?(b&&(ne.parentRule=b),ne.parentStyleSheet=c,I=ne,i="",n="before-name"):n==="keyframesRule-begin"?(B.name=i.trim(),b&&(S.push(b),B.parentRule=b),B.parentStyleSheet=c,d=b=B,i="",n="keyframeRule-begin"):n==="keyframeRule-begin"?(I=new t.CSSKeyframeRule,I.keyText=i.trim(),I.__starts=s,i="",n="before-name"):n==="documentRule-begin"&&(Be.matcher.matcherText=i.trim(),b&&(S.push(b),Be.parentRule=b),d=b=Be,Be.parentStyleSheet=c,i="",n="before-selector");break;case":":n==="name"?(V=i.trim(),i="",n="before-value"):i+=U;break;case"(":if(n==="value")if(i.trim()==="expression"){var mt=new t.CSSValueExpression(u,s).parse();mt.error?tt(mt.error):(i+=mt.expression,s=mt.idx)}else n="value-parenthesis",a=1,i+=U;else n==="value-parenthesis"&&a++,i+=U;break;case")":n==="value-parenthesis"&&(a--,a===0&&(n="value")),i+=U;break;case"!":n==="value"&&u.indexOf("!important",s)===s?(Se="important",s+=9):i+=U;break;case";":switch(n){case"value":I.style.setProperty(V,i.trim(),Se),Se="",i="",n="before-name";break;case"atRule":i="",n="before-selector";break;case"importRule":xe=new t.CSSImportRule,xe.parentStyleSheet=xe.styleSheet.parentStyleSheet=c,xe.cssText=i+U,c.cssRules.push(xe),i="",n="before-selector";break;default:i+=U;break}break;case"}":switch(n){case"value":I.style.setProperty(V,i.trim(),Se),Se="";case"before-name":case"name":I.__ends=s+1,b&&(I.parentRule=b),I.parentStyleSheet=c,d.cssRules.push(I),i="",d.constructor===t.CSSKeyframesRule?n="keyframeRule-begin":n="before-selector";break;case"keyframeRule-begin":case"before-selector":case"selector":for(b||tt("Unexpected }"),y=S.length>0;S.length>0;){if(b=S.pop(),b.constructor.name==="CSSMediaRule"||b.constructor.name==="CSSSupportsRule"){w=d,d=b,d.cssRules.push(w);break}S.length===0&&(y=!1)}y||(d.__ends=s+1,c.cssRules.push(d),d=c,b=null),i="",n="before-selector";break}break;default:switch(n){case"before-selector":n="selector",I=new t.CSSStyleRule,I.__starts=s;break;case"before-name":n="name";break;case"before-value":n="value";break;case"importRule-begin":n="importRule";break}i+=U;break}return c},is.parse=t.parse,t.CSSStyleSheet=nu().CSSStyleSheet,t.CSSStyleRule=su().CSSStyleRule,t.CSSImportRule=Zr().CSSImportRule,t.CSSGroupingRule=Xe.CSSGroupingRule,t.CSSMediaRule=ds.CSSMediaRule,t.CSSConditionRule=bt.CSSConditionRule,t.CSSSupportsRule=hs.CSSSupportsRule,t.CSSFontFaceRule=Xr().CSSFontFaceRule,t.CSSHostRule=ei.CSSHostRule,t.CSSStyleDeclaration=et().CSSStyleDeclaration,t.CSSKeyframeRule=ps().CSSKeyframeRule,t.CSSKeyframesRule=gs.CSSKeyframesRule,t.CSSValueExpression=ui.CSSValueExpression,t.CSSDocumentRule=ni.CSSDocumentRule,is}var ai;function et(){if(ai)return rs;ai=1;var t={};return t.CSSStyleDeclaration=function(){this.length=0,this.parentRule=null,this._importants={}},t.CSSStyleDeclaration.prototype={constructor:t.CSSStyleDeclaration,getPropertyValue:function(e){return this[e]||""},setProperty:function(e,u,s){if(this[e]){var n=Array.prototype.indexOf.call(this,e);n<0&&(this[this.length]=e,this.length++)}else this[this.length]=e,this.length++;this[e]=u+"",this._importants[e]=s},removeProperty:function(e){if(!(e in this))return"";var u=Array.prototype.indexOf.call(this,e);if(u<0)return"";var s=this[e];return this[e]="",Array.prototype.splice.call(this,u,1),s},getPropertyCSSValue:function(){},getPropertyPriority:function(e){return this._importants[e]||""},getPropertyShorthand:function(){},isPropertyImplicit:function(){},get cssText(){for(var e=[],u=0,s=this.length;u<s;++u){var n=this[u],r=this.getPropertyValue(n),i=this.getPropertyPriority(n);i&&(i=" !"+i),e[u]=n+": "+r+i+";"}return e.join(" ")},set cssText(e){var u,s;for(u=this.length;u--;)s=this[u],this[s]="";Array.prototype.splice.call(this,0,this.length),this._importants={};var n=t.parse("#bogus{"+e+"}").cssRules[0].style,r=n.length;for(u=0;u<r;++u)s=n[u],this.setProperty(n[u],n.getPropertyValue(s),n.getPropertyPriority(s))}},rs.CSSStyleDeclaration=t.CSSStyleDeclaration,t.parse=ms().parse,rs}nu().CSSStyleSheet,J.CSSRule,su().CSSStyleRule,Xe.CSSGroupingRule,bt.CSSConditionRule,ds.CSSMediaRule,hs.CSSSupportsRule,et().CSSStyleDeclaration,ps().CSSKeyframeRule,gs.CSSKeyframesRule,et().CSSStyleDeclaration,su().CSSStyleRule,Zr().CSSImportRule,Xr().CSSFontFaceRule,nu().CSSStyleSheet,ps().CSSKeyframeRule;var uo=ms().parse;const ci="style";class Ss extends uu{constructor(e,u=ci){super(e,u),this[Ue]=null}get sheet(){const e=this[Ue];return e!==null?e:this[Ue]=uo(this.textContent)}get innerHTML(){return super.innerHTML||""}set innerHTML(e){super.textContent=e,this[Ue]=null}get innerText(){return super.innerText||""}set innerText(e){super.textContent=e,this[Ue]=null}get textContent(){return super.textContent||""}set textContent(e){super.textContent=e,this[Ue]=null}}L(ci,Ss);class xs extends g{constructor(e,u="time"){super(e,u)}get dateTime(){return f.get(this,"datetime")}set dateTime(e){f.set(this,"datetime",e)}}L("time",xs);class oi extends g{constructor(e,u="fieldset"){super(e,u)}}class li extends g{constructor(e,u="embed"){super(e,u)}}class di extends g{constructor(e,u="hr"){super(e,u)}}class hi extends g{constructor(e,u="progress"){super(e,u)}}class fi extends g{constructor(e,u="p"){super(e,u)}}class bi extends g{constructor(e,u="table"){super(e,u)}}class pi extends g{constructor(e,u="frameset"){super(e,u)}}class gi extends g{constructor(e,u="li"){super(e,u)}}class mi extends g{constructor(e,u="base"){super(e,u)}}class Si extends g{constructor(e,u="datalist"){super(e,u)}}const xi="input";class ys extends g{constructor(e,u=xi){super(e,u)}get autofocus(){return N.get(this,"autofocus")||-1}set autofocus(e){N.set(this,"autofocus",e)}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}get placeholder(){return this.getAttribute("placeholder")}set placeholder(e){this.setAttribute("placeholder",e)}get type(){return this.getAttribute("type")}set type(e){this.setAttribute("type",e)}get value(){return f.get(this,"value")}set value(e){f.set(this,"value",e)}}L(xi,ys);class yi extends g{constructor(e,u="param"){super(e,u)}}class Ci extends g{constructor(e,u="media"){super(e,u)}}class Ei extends g{constructor(e,u="audio"){super(e,u)}}const wi="h1";class Cs extends g{constructor(e,u=wi){super(e,u)}}L([wi,"h2","h3","h4","h5","h6"],Cs);class vi extends g{constructor(e,u="dir"){super(e,u)}}class Ti extends g{constructor(e,u="quote"){super(e,u)}}class so{constructor(e,u){this.width=e,this.height=u}getContext(){return null}toDataURL(){return""}}var no={createCanvas:(t,e)=>new so(t,e)};const{createCanvas:ro}=no,Ni="canvas";class Es extends g{constructor(e,u=Ni){super(e,u),this[Y]=ro(300,150)}get width(){return this[Y].width}set width(e){Ae.set(this,"width",e),this[Y].width=e}get height(){return this[Y].height}set height(e){Ae.set(this,"height",e),this[Y].height=e}getContext(e){return this[Y].getContext(e)}toDataURL(...e){return this[Y].toDataURL(...e)}}L(Ni,Es);class Ai extends g{constructor(e,u="legend"){super(e,u)}}const Ri="option";class ws extends g{constructor(e,u=Ri){super(e,u)}get value(){return f.get(this,"value")}set value(e){f.set(this,"value",e)}get selected(){return N.get(this,"selected")}set selected(e){const u=this.parentElement?.querySelector("option[selected]");u&&u!==this&&(u.selected=!1),N.set(this,"selected",e)}}L(Ri,ws);class Di extends g{constructor(e,u="span"){super(e,u)}}class ki extends g{constructor(e,u="meter"){super(e,u)}}class Li extends g{constructor(e,u="video"){super(e,u)}}class Mi extends g{constructor(e,u="td"){super(e,u)}}const Ii="title";class vs extends uu{constructor(e,u=Ii){super(e,u)}}L(Ii,vs);class Oi extends g{constructor(e,u="output"){super(e,u)}}class _i extends g{constructor(e,u="tr"){super(e,u)}}class qi extends g{constructor(e,u="data"){super(e,u)}}class Pi extends g{constructor(e,u="menu"){super(e,u)}}const Fi="select";class Ts extends g{constructor(e,u=Fi){super(e,u)}get options(){let e=new ue,{firstElementChild:u}=this;for(;u;)u.tagName==="OPTGROUP"?e.push(...u.children):e.push(u),u=u.nextElementSibling;return e}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}get value(){return this.querySelector("option[selected]")?.value}}L(Fi,Ts);class Hi extends g{constructor(e,u="br"){super(e,u)}}const Bi="button";class Ns extends g{constructor(e,u=Bi){super(e,u)}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}get type(){return this.getAttribute("type")}set type(e){this.setAttribute("type",e)}}L(Bi,Ns);class $i extends g{constructor(e,u="map"){super(e,u)}}class Vi extends g{constructor(e,u="optgroup"){super(e,u)}}class Ui extends g{constructor(e,u="dl"){super(e,u)}}const Gi="textarea";class As extends uu{constructor(e,u=Gi){super(e,u)}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}get placeholder(){return this.getAttribute("placeholder")}set placeholder(e){this.setAttribute("placeholder",e)}get type(){return this.getAttribute("type")}set type(e){this.setAttribute("type",e)}get value(){return this.textContent}set value(e){this.textContent=e}}L(Gi,As);class ji extends g{constructor(e,u="font"){super(e,u)}}class Wi extends g{constructor(e,u="div"){super(e,u)}}const zi="link";class Rs extends g{constructor(e,u=zi){super(e,u)}get disabled(){return N.get(this,"disabled")}set disabled(e){N.set(this,"disabled",e)}get href(){return f.get(this,"href")}set href(e){f.set(this,"href",e)}get hreflang(){return f.get(this,"hreflang")}set hreflang(e){f.set(this,"hreflang",e)}get media(){return f.get(this,"media")}set media(e){f.set(this,"media",e)}get rel(){return f.get(this,"rel")}set rel(e){f.set(this,"rel",e)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}}L(zi,Rs);const Ki="slot";class Ds extends g{constructor(e,u=Ki){super(e,u)}get name(){return this.getAttribute("name")}set name(e){this.setAttribute("name",e)}assign(){}assignedNodes(e){const u=!!this.name,s=this.getRootNode().host?.childNodes??[];let n;if(u?n=[...s].filter(r=>r.slot===this.name):n=[...s].filter(r=>!r.slot),e?.flatten){const r=[];for(let i of n)i.localName==="slot"?r.push(...i.assignedNodes({flatten:!0})):r.push(i);n=r}return n.length?n:[...this.childNodes]}assignedElements(e){const u=this.assignedNodes(e).filter(s=>s.nodeType===1);return u.length?u:[...this.children]}}L(Ki,Ds);class Ji extends g{constructor(e,u="form"){super(e,u)}}const Qi="img";class cu extends g{constructor(e,u=Qi){super(e,u)}get alt(){return f.get(this,"alt")}set alt(e){f.set(this,"alt",e)}get sizes(){return f.get(this,"sizes")}set sizes(e){f.set(this,"sizes",e)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get srcset(){return f.get(this,"srcset")}set srcset(e){f.set(this,"srcset",e)}get title(){return f.get(this,"title")}set title(e){f.set(this,"title",e)}get width(){return Ae.get(this,"width")}set width(e){Ae.set(this,"width",e)}get height(){return Ae.get(this,"height")}set height(e){Ae.set(this,"height",e)}}L(Qi,cu);class Zi extends g{constructor(e,u="pre"){super(e,u)}}class Yi extends g{constructor(e,u="ul"){super(e,u)}}const Xi="meta";class ks extends g{constructor(e,u=Xi){super(e,u)}get name(){return f.get(this,"name")}set name(e){f.set(this,"name",e)}get httpEquiv(){return f.get(this,"http-equiv")}set httpEquiv(e){f.set(this,"http-equiv",e)}get content(){return f.get(this,"content")}set content(e){f.set(this,"content",e)}get charset(){return f.get(this,"charset")}set charset(e){f.set(this,"charset",e)}get media(){return f.get(this,"media")}set media(e){f.set(this,"media",e)}}L(Xi,ks);class ea extends g{constructor(e,u="picture"){super(e,u)}}class ta extends g{constructor(e,u="area"){super(e,u)}}class ua extends g{constructor(e,u="ol"){super(e,u)}}class sa extends g{constructor(e,u="caption"){super(e,u)}}const na="a";class Ls extends g{constructor(e,u=na){super(e,u)}get href(){return encodeURI(decodeURI(f.get(this,"href")))}set href(e){f.set(this,"href",decodeURI(e))}get download(){return encodeURI(decodeURI(f.get(this,"download")))}set download(e){f.set(this,"download",decodeURI(e))}get target(){return f.get(this,"target")}set target(e){f.set(this,"target",e)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}get rel(){return f.get(this,"rel")}set rel(e){f.set(this,"rel",e)}}L(na,Ls);class ra extends g{constructor(e,u="label"){super(e,u)}}class ia extends g{constructor(e,u="unknown"){super(e,u)}}class aa extends g{constructor(e,u="mod"){super(e,u)}}class ca extends g{constructor(e,u="details"){super(e,u)}}const oa="source";class Ms extends g{constructor(e,u=oa){super(e,u)}get src(){return f.get(this,"src")}set src(e){f.set(this,"src",e)}get srcset(){return f.get(this,"srcset")}set srcset(e){f.set(this,"srcset",e)}get sizes(){return f.get(this,"sizes")}set sizes(e){f.set(this,"sizes",e)}get type(){return f.get(this,"type")}set type(e){f.set(this,"type",e)}}L(oa,Ms);class la extends g{constructor(e,u="track"){super(e,u)}}class da extends g{constructor(e,u="marquee"){super(e,u)}}const ha={HTMLElement:g,HTMLTemplateElement:us,HTMLHtmlElement:Hr,HTMLScriptElement:ss,HTMLFrameElement:$r,HTMLIFrameElement:ns,HTMLObjectElement:Ur,HTMLHeadElement:Gr,HTMLBodyElement:jr,HTMLStyleElement:Ss,HTMLTimeElement:xs,HTMLFieldSetElement:oi,HTMLEmbedElement:li,HTMLHRElement:di,HTMLProgressElement:hi,HTMLParagraphElement:fi,HTMLTableElement:bi,HTMLFrameSetElement:pi,HTMLLIElement:gi,HTMLBaseElement:mi,HTMLDataListElement:Si,HTMLInputElement:ys,HTMLParamElement:yi,HTMLMediaElement:Ci,HTMLAudioElement:Ei,HTMLHeadingElement:Cs,HTMLDirectoryElement:vi,HTMLQuoteElement:Ti,HTMLCanvasElement:Es,HTMLLegendElement:Ai,HTMLOptionElement:ws,HTMLSpanElement:Di,HTMLMeterElement:ki,HTMLVideoElement:Li,HTMLTableCellElement:Mi,HTMLTitleElement:vs,HTMLOutputElement:Oi,HTMLTableRowElement:_i,HTMLDataElement:qi,HTMLMenuElement:Pi,HTMLSelectElement:Ts,HTMLBRElement:Hi,HTMLButtonElement:Ns,HTMLMapElement:$i,HTMLOptGroupElement:Vi,HTMLDListElement:Ui,HTMLTextAreaElement:As,HTMLFontElement:ji,HTMLDivElement:Wi,HTMLLinkElement:Rs,HTMLSlotElement:Ds,HTMLFormElement:Ji,HTMLImageElement:cu,HTMLPreElement:Zi,HTMLUListElement:Yi,HTMLMetaElement:ks,HTMLPictureElement:ea,HTMLAreaElement:ta,HTMLOListElement:ua,HTMLTableCaptionElement:sa,HTMLAnchorElement:Ls,HTMLLabelElement:ra,HTMLUnknownElement:ia,HTMLModElement:aa,HTMLDetailsElement:ca,HTMLSourceElement:Ms,HTMLTrackElement:la,HTMLMarqueeElement:da},ou={test:()=>!0},io={"text/html":{docType:"<!DOCTYPE html>",ignoreCase:!0,voidElements:/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i},"image/svg+xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:ou},"text/xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:ou},"application/xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:ou},"application/xhtml+xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:ou}};class Is extends Re{constructor(e,u={}){super(e,u),this.detail=u.detail}}class fa extends Re{constructor(e,u={}){super(e,u),this.inputType=u.inputType,this.data=u.data,this.dataTransfer=u.dataTransfer,this.isComposing=u.isComposing||!1,this.ranges=u.ranges}}const ao=t=>class extends cu{constructor(u,s){switch(super(t),arguments.length){case 1:this.height=u,this.width=u;break;case 2:this.height=s,this.width=u;break}}},ba=({[G]:t,[m]:e},u=null)=>{Pn(t[D],e[p]);do{const s=K(t),n=s===e?s:s[p];u?u.insertBefore(t,u[m]):t.remove(),t=n}while(t!==e)};class Os{constructor(){this[G]=null,this[m]=null,this.commonAncestorContainer=null}insertNode(e){this[m].parentNode.insertBefore(e,this[G])}selectNode(e){this[G]=e,this[m]=K(e)}selectNodeContents(e){this.selectNode(e),this.commonAncestorContainer=e}surroundContents(e){e.replaceChildren(this.extractContents())}setStartBefore(e){this[G]=e}setStartAfter(e){this[G]=e.nextSibling}setEndBefore(e){this[m]=K(e.previousSibling)}setEndAfter(e){this[m]=K(e)}cloneContents(){let{[G]:e,[m]:u}=this;const s=e.ownerDocument.createDocumentFragment();for(;e!==u;)s.insertBefore(e.cloneNode(!0),s[m]),e=K(e),e!==u&&(e=e[p]);return s}deleteContents(){ba(this)}extractContents(){const e=this[G].ownerDocument.createDocumentFragment();return ba(this,e),e}createContextualFragment(e){const{commonAncestorContainer:u}=this,s="ownerSVGElement"in u,n=s?u.ownerDocument:u,r=n.createElement("template");r.innerHTML=e;let{content:i}=r;if(s){const a=[...i.childNodes];i=n.createDocumentFragment(),Object.setPrototypeOf(i,Ye.prototype),i.ownerSVGElement=n;for(const o of a)Object.setPrototypeOf(o,Ye.prototype),o.ownerSVGElement=n,i.appendChild(o)}else this.selectNode(i);return i}cloneRange(){const e=new Os;return e[G]=this[G],e[m]=this[m],e}}const co=({nodeType:t},e)=>{switch(t){case v:return e&Ln;case F:return e&Mn;case ae:return e&On;case ie:return e&In}return 0};class oo{constructor(e,u=kn){this.root=e,this.currentNode=e,this.whatToShow=u;let{[p]:s,[m]:n}=e;if(e.nodeType===ve){const{documentElement:i}=e;s=i,n=i[m]}const r=[];for(;s!==n;)co(s,u)&&r.push(s),s=s[p];this[H]={i:0,nodes:r}}nextNode(){const e=this[H];return this.currentNode=e.i<e.nodes.length?e.nodes[e.i++]:null,this.currentNode}}const pa=(t,e,u)=>{let{[p]:s,[m]:n}=e;return t.call({ownerDocument:e,[p]:s,[m]:n},u)},ga=P0({},Pr,ha,{CustomEvent:Is,Event:Re,EventTarget:Ot,InputEvent:fa,NamedNodeMap:_r,NodeList:ue}),lu=new WeakMap;let He=class extends Qu{constructor(e){super(null,"#document",ve),this[Z]={active:!1,registry:null},this[ye]={active:!1,class:null},this[Ve]=io[e],this[ke]=null,this[bu]=null,this[Ct]=null,this[Y]=null,this[st]=null}get defaultView(){return lu.has(this)||lu.set(this,new Proxy(globalThis,{set:(e,u,s)=>{switch(u){case"addEventListener":case"removeEventListener":case"dispatchEvent":this[ut][u]=s;break;default:e[u]=s;break}return!0},get:(e,u)=>{switch(u){case"addEventListener":case"removeEventListener":case"dispatchEvent":if(!this[ut]){const s=this[ut]=new Ot;s.dispatchEvent=s.dispatchEvent.bind(s),s.addEventListener=s.addEventListener.bind(s),s.removeEventListener=s.removeEventListener.bind(s)}return this[ut][u];case"document":return this;case"navigator":return{userAgent:"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36"};case"window":return lu.get(this);case"customElements":return this[Z].registry||(this[Z]=new G0(this)),this[Z];case"performance":return z0;case"DOMParser":return this[bu];case"Image":return this[Y]||(this[Y]=ao(this)),this[Y];case"MutationObserver":return this[ye].class||(this[ye]=new J0(this)),this[ye].class}return this[Ct]&&this[Ct][u]||ga[u]||e[u]}})),lu.get(this)}get doctype(){const e=this[ke];if(e)return e;const{firstChild:u}=this;return u&&u.nodeType===Me?this[ke]=u:null}set doctype(e){if(/^([a-z:]+)(\s+system|\s+public(\s+"([^"]+)")?)?(\s+"([^"]+)")?/i.test(e)){const{$1:u,$4:s,$6:n}=RegExp;this[ke]=new lt(this,u,s,n),We(this,this[ke],this[p])}}get documentElement(){return this.firstElementChild}get isConnected(){return!0}_getParent(){return this[ut]}createAttribute(e){return new Je(this,e)}createCDATASection(e){return new _t(this,e)}createComment(e){return new qt(this,e)}createDocumentFragment(){return new Zu(this)}createDocumentType(e,u,s){return new lt(this,e,u,s)}createElement(e){return new ht(this,e)}createRange(){const e=new Os;return e.commonAncestorContainer=this,e}createTextNode(e){return new Ze(this,e)}createTreeWalker(e,u=-1){return new oo(e,u)}createNodeIterator(e,u=-1){return this.createTreeWalker(e,u)}createEvent(e){const u=F0(e==="Event"?new Re(""):new Is(""));return u.initEvent=u.initCustomEvent=(s,n=!1,r=!1,i)=>{u.bubbles=!!n,H0(u,{type:{value:s},canBubble:{value:n},cancelable:{value:r},detail:{value:i}})},u}cloneNode(e=!1){const{constructor:u,[Z]:s,[ke]:n}=this,r=new u;if(r[Z]=s,e){const i=r[m],{childNodes:a}=this;for(let{length:o}=a,c=0;c<o;c++)r.insertBefore(a[c].cloneNode(!0),i);n&&(r[ke]=a[0])}return r}importNode(e){const u=1<arguments.length&&!!arguments[1],s=e.cloneNode(u),{[Z]:n}=this,{active:r}=n,i=a=>{const{ownerDocument:o,nodeType:c}=a;a.ownerDocument=this,r&&o!==this&&c===v&&n.upgrade(a)};if(i(s),u)switch(s.nodeType){case v:case ee:{let{[p]:a,[m]:o}=s;for(;a!==o;)a.nodeType===v&&i(a),a=a[p];break}}return s}toString(){return this.childNodes.join("")}querySelector(e){return pa(super.querySelector,this,e)}querySelectorAll(e){return pa(super.querySelectorAll,this,e)}getElementsByTagNameNS(e,u){return this.getElementsByTagName(u)}createAttributeNS(e,u){return this.createAttribute(u)}createElementNS(e,u,s){return e===kt?new Ye(this,u,null):this.createElement(u,s)}};$(ga.Document=function(){W()},He).prototype=He.prototype;const lo=(t,e,u,s)=>{if(!e&&Ke.has(u)){const i=Ke.get(u);return new i(t,u)}const{[Z]:{active:n,registry:r}}=t;if(n){const i=e?s.is:u;if(r.has(i)){const{Class:a}=r.get(i),o=new a(t,u);return Oe.set(o,{connected:!1}),o}}return new g(t,u)};class ma extends He{constructor(){super("text/html")}get all(){const e=new ue;let{[p]:u,[m]:s}=this;for(;u!==s;){switch(u.nodeType){case v:e.push(u);break}u=u[p]}return e}get head(){const{documentElement:e}=this;let{firstElementChild:u}=e;return(!u||u.tagName!=="HEAD")&&(u=this.createElement("head"),e.prepend(u)),u}get body(){const{head:e}=this;let{nextElementSibling:u}=e;return(!u||u.tagName!=="BODY")&&(u=this.createElement("body"),e.after(u)),u}get title(){const{head:e}=this;return e.getElementsByTagName("title").at(0)?.textContent||""}set title(e){const{head:u}=this;let s=u.getElementsByTagName("title").at(0);s?s.textContent=e:u.insertBefore(this.createElement("title"),u.firstChild).textContent=e}createElement(e,u){const s=!!(u&&u.is),n=lo(this,s,e,u);return s&&n.setAttribute("is",u.is),n}}class ho extends He{constructor(){super("image/svg+xml")}toString(){return this[Ve].docType+super.toString()}}class fo extends He{constructor(){super("text/xml")}toString(){return this[Ve].docType+super.toString()}}class hu{parseFromString(e,u,s=null){let n=!1,r;return u==="text/html"?(n=!0,r=new ma):u==="image/svg+xml"?r=new ho:r=new fo,r[bu]=hu,s&&(r[Ct]=s),n&&e==="..."&&(e="<!doctype html><html><head></head><body></body></html>"),e?$n(r,n,e):r}}const{parse:bo}=JSON,du=(t,e,u)=>{e.parentNode=t,We(u[D],e,u)},po=(t,e)=>{if(Ke.has(e)){const u=Ke.get(e);return new u(t,e)}return new g(t,e)},go=t=>{const e=typeof t=="string"?bo(t):t,{length:u}=e,s=new ma;let n=s,r=n[m],i=!1,a=0;for(;a<u;){let o=e[a++];switch(o){case v:{const c=e[a++],d=i||c==="svg"||c==="SVG",b=d?new Ye(s,c,n.ownerSVGElement||null):po(s,c);ku(r[D],b,r),b.parentNode=n,n=b,r=n[m],i=d;break}case q:{const c=e[a++],d=typeof e[a]=="string"?e[a++]:"",b=new Je(s,c,d);b.ownerElement=n,We(r[D],b,r);break}case F:du(n,new Ze(s,e[a++]),r);break;case ae:du(n,new qt(s,e[a++]),r);break;case ie:du(n,new _t(s,e[a++]),r);break;case Me:{const c=[s];for(;typeof e[a]=="string";)c.push(e[a++]);c.length===3&&/\.dtd$/i.test(c[2])&&c.splice(2,0,""),du(n,new lt(...c),r);break}case ee:n=s.createDocumentFragment(),r=n[m];case ve:break;default:do o-=fe,i&&!n.ownerSVGElement&&(i=!1),n=n.parentNode||n;while(o<0);r=n[m];break}}switch(a&&e[0]){case v:return s.firstElementChild;case ee:return n}return s},mo=t=>t.toJSON();class So{static get SHOW_ALL(){return kn}static get SHOW_ELEMENT(){return Ln}static get SHOW_COMMENT(){return On}static get SHOW_CDATA_SECTION(){return In}static get SHOW_TEXT(){return Mn}}const xo=(t,e=null)=>new hu().parseFromString(t,"text/html",e).defaultView;function Sa(){W()}$(Sa,He).prototype=He.prototype;export{jt as Attr,Wt as CDATASection,zt as CharacterData,Kt as Comment,Is as CustomEvent,hu as DOMParser,Sa as Document,Jt as DocumentFragment,Qt as DocumentType,Zt as Element,Re as Event,Ot as EventTarget,Pr as Facades,Ls as HTMLAnchorElement,ta as HTMLAreaElement,Ei as HTMLAudioElement,Hi as HTMLBRElement,mi as HTMLBaseElement,jr as HTMLBodyElement,Ns as HTMLButtonElement,Es as HTMLCanvasElement,ha as HTMLClasses,Ui as HTMLDListElement,qi as HTMLDataElement,Si as HTMLDataListElement,ca as HTMLDetailsElement,vi as HTMLDirectoryElement,Wi as HTMLDivElement,g as HTMLElement,li as HTMLEmbedElement,oi as HTMLFieldSetElement,ji as HTMLFontElement,Ji as HTMLFormElement,$r as HTMLFrameElement,pi as HTMLFrameSetElement,di as HTMLHRElement,Gr as HTMLHeadElement,Cs as HTMLHeadingElement,Hr as HTMLHtmlElement,ns as HTMLIFrameElement,cu as HTMLImageElement,ys as HTMLInputElement,gi as HTMLLIElement,ra as HTMLLabelElement,Ai as HTMLLegendElement,Rs as HTMLLinkElement,$i as HTMLMapElement,da as HTMLMarqueeElement,Ci as HTMLMediaElement,Pi as HTMLMenuElement,ks as HTMLMetaElement,ki as HTMLMeterElement,aa as HTMLModElement,ua as HTMLOListElement,Ur as HTMLObjectElement,Vi as HTMLOptGroupElement,ws as HTMLOptionElement,Oi as HTMLOutputElement,fi as HTMLParagraphElement,yi as HTMLParamElement,ea as HTMLPictureElement,Zi as HTMLPreElement,hi as HTMLProgressElement,Ti as HTMLQuoteElement,ss as HTMLScriptElement,Ts as HTMLSelectElement,Ds as HTMLSlotElement,Ms as HTMLSourceElement,Di as HTMLSpanElement,Ss as HTMLStyleElement,sa as HTMLTableCaptionElement,Mi as HTMLTableCellElement,bi as HTMLTableElement,_i as HTMLTableRowElement,us as HTMLTemplateElement,As as HTMLTextAreaElement,xs as HTMLTimeElement,vs as HTMLTitleElement,la as HTMLTrackElement,Yi as HTMLUListElement,ia as HTMLUnknownElement,Li as HTMLVideoElement,fa as InputEvent,Yt as Node,So as NodeFilter,ue as NodeList,tu as SVGElement,Xt as ShadowRoot,eu as Text,W as illegalConstructor,xo as parseHTML,go as parseJSON,mo as toJSON}; +//# sourceMappingURL=worker.js.map diff --git a/appinventor/lib/linkedom/linkedom.min.js.map b/appinventor/lib/linkedom/linkedom.min.js.map deleted file mode 100644 index 0c89c62f51c..00000000000 --- a/appinventor/lib/linkedom/linkedom.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bundle.min.js","sources":["esm/shared/symbols.js","node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js","node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js","node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js","node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js","node_modules/.pnpm/htmlparser2@9.1.0/node_modules/htmlparser2/lib/esm/Tokenizer.js","node_modules/.pnpm/htmlparser2@9.1.0/node_modules/htmlparser2/lib/esm/Parser.js","node_modules/.pnpm/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.js","node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.js","node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.js","node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/escape.js","node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js","node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/index.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/stringify.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/traversal.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/manipulation.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/querying.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/legacy.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/helpers.js","node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/feeds.js","node_modules/.pnpm/htmlparser2@9.1.0/node_modules/htmlparser2/lib/esm/index.js","esm/shared/constants.js","esm/shared/object.js","esm/shared/utils.js","esm/shared/shadow-roots.js","esm/interface/custom-element-registry.js","esm/shared/parse-from-string.js","esm/shared/register-html-class.js","shim:perf_hooks","esm/shared/jsdon.js","esm/interface/mutation-observer.js","esm/shared/attributes.js","esm/interface/event-target.js","esm/interface/node-list.js","esm/interface/node.js","esm/shared/text-escaper.js","esm/interface/attr.js","esm/shared/node.js","esm/mixin/non-document-type-child-node.js","esm/mixin/child-node.js","esm/interface/character-data.js","esm/interface/cdata-section.js","esm/interface/comment.js","node_modules/.pnpm/boolbase@1.0.0/node_modules/boolbase/index.js","node_modules/.pnpm/css-what@6.1.0/node_modules/css-what/lib/es/types.js","node_modules/.pnpm/css-what@6.1.0/node_modules/css-what/lib/es/parse.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/sort.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/attributes.js","node_modules/.pnpm/nth-check@2.1.1/node_modules/nth-check/lib/esm/parse.js","node_modules/.pnpm/nth-check@2.1.1/node_modules/nth-check/lib/esm/index.js","node_modules/.pnpm/nth-check@2.1.1/node_modules/nth-check/lib/esm/compile.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/filters.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/aliases.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/subselects.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/general.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/index.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/compile.js","node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/index.js","esm/shared/matches.js","esm/interface/text.js","esm/mixin/parent-node.js","esm/mixin/non-element-parent-node.js","esm/interface/document-fragment.js","esm/interface/document-type.js","esm/mixin/inner-html.js","node_modules/.pnpm/uhyphen@0.2.0/node_modules/uhyphen/esm/index.js","esm/dom/string-map.js","esm/dom/token-list.js","esm/interface/css-style-declaration.js","esm/interface/event.js","esm/interface/named-node-map.js","esm/interface/shadow-root.js","esm/interface/element.js","esm/svg/element.js","esm/shared/facades.js","esm/html/element.js","esm/html/template-element.js","esm/html/html-element.js","esm/html/text-element.js","esm/html/script-element.js","esm/html/frame-element.js","esm/html/i-frame-element.js","esm/html/object-element.js","esm/html/head-element.js","esm/html/body-element.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/StyleSheet.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSStyleRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSStyleSheet.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/MediaList.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSImportRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSGroupingRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSConditionRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSMediaRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSSupportsRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSFontFaceRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSHostRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSKeyframeRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSKeyframesRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSValue.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSValueExpression.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/MatcherList.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSDocumentRule.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/parse.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/CSSStyleDeclaration.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/clone.js","node_modules/.pnpm/cssom@0.5.0/node_modules/cssom/lib/index.js","esm/html/style-element.js","esm/html/time-element.js","esm/html/field-set-element.js","esm/html/embed-element.js","esm/html/hr-element.js","esm/html/progress-element.js","esm/html/paragraph-element.js","esm/html/table-element.js","esm/html/frame-set-element.js","esm/html/li-element.js","esm/html/base-element.js","esm/html/data-list-element.js","esm/html/input-element.js","esm/html/param-element.js","esm/html/media-element.js","esm/html/audio-element.js","esm/html/heading-element.js","esm/html/directory-element.js","esm/html/quote-element.js","shim:canvas","esm/html/canvas-element.js","esm/html/legend-element.js","esm/html/option-element.js","esm/html/span-element.js","esm/html/meter-element.js","esm/html/video-element.js","esm/html/table-cell-element.js","esm/html/title-element.js","esm/html/output-element.js","esm/html/table-row-element.js","esm/html/data-element.js","esm/html/menu-element.js","esm/html/select-element.js","esm/html/br-element.js","esm/html/button-element.js","esm/html/map-element.js","esm/html/opt-group-element.js","esm/html/d-list-element.js","esm/html/text-area-element.js","esm/html/font-element.js","esm/html/div-element.js","esm/html/link-element.js","esm/html/slot-element.js","esm/html/form-element.js","esm/html/image-element.js","esm/html/pre-element.js","esm/html/u-list-element.js","esm/html/meta-element.js","esm/html/picture-element.js","esm/html/area-element.js","esm/html/o-list-element.js","esm/html/table-caption-element.js","esm/html/anchor-element.js","esm/html/label-element.js","esm/html/unknown-element.js","esm/html/mod-element.js","esm/html/details-element.js","esm/html/source-element.js","esm/html/track-element.js","esm/html/marquee-element.js","esm/shared/html-classes.js","esm/shared/mime.js","esm/interface/custom-event.js","esm/interface/input-event.js","esm/interface/image.js","esm/interface/range.js","esm/interface/tree-walker.js","esm/interface/document.js","esm/html/document.js","esm/svg/document.js","esm/xml/document.js","esm/dom/parser.js","esm/shared/parse-json.js","esm/index.js","esm/interface/node-filter.js"],"sourcesContent":["// used in Attr to signal changes\nexport const CHANGED = Symbol('changed');\n\n// used in Element to setup once classList\nexport const CLASS_LIST = Symbol('classList');\n\n// used in Document to attach once customElements\nexport const CUSTOM_ELEMENTS = Symbol('CustomElements');\n\n// used in HTMLTemplateElement\nexport const CONTENT = Symbol('content');\n\n// used in Element for data attributes\nexport const DATASET = Symbol('dataset');\n\n// used in Document to attach the DocType\nexport const DOCTYPE = Symbol('doctype');\n\n// used in parser and Document to attach once a DOMParser\nexport const DOM_PARSER = Symbol('DOMParser');\n\n// used to reference an end node\nexport const END = Symbol('end');\n\n// used in Document to make the globalThis an event target\nexport const EVENT_TARGET = Symbol('EventTarget');\n\n// used to augment a created document defaultView\nexport const GLOBALS = Symbol('globals');\n\n// used in both Canvas and Document to provide images\nexport const IMAGE = Symbol('image');\n\n// used to define Document mime type\nexport const MIME = Symbol('mime');\n\n// used in Document to attach once MutationObserver\nexport const MUTATION_OBSERVER = Symbol('MutationObserver');\n\n// used to define next node reference\nexport const NEXT = Symbol('next');\n\n// used to define Attr owner elements\nexport const OWNER_ELEMENT = Symbol('ownerElement');\n\n// used to define previous node reference\nexport const PREV = Symbol('prev');\n\n// used to define various \"private\" properties\nexport const PRIVATE = Symbol('private');\n\n// used to define the CSSStyleSheet.sheet\nexport const SHEET = Symbol('sheet');\n\n// used to define start node reference\nexport const START = Symbol('start');\n\n// used to define special CSS style attribute\nexport const STYLE = Symbol('style');\n\n// used to upgrade Custom Elements\nexport const UPGRADE = Symbol('upgrade');\n\n// used to define generic values\nexport const VALUE = Symbol('value');\n","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","import { EntityDecoder, DecodingMode, htmlDecodeTree, xmlDecodeTree, } from \"entities/lib/decode.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"BeforeSpecialT\"] = 23] = \"BeforeSpecialT\";\n State[State[\"SpecialStartSequence\"] = 24] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 25] = \"InSpecialTag\";\n State[State[\"InEntity\"] = 26] = \"InEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // `</script`\n StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style`\n TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`\n TextareaEnd: new Uint8Array([\n 0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,\n ]), // `</textarea`\n};\nexport default class Tokenizer {\n constructor({ xmlMode = false, decodeEntities = true, }, cbs) {\n this.cbs = cbs;\n /** The current state the tokenizer is in. */\n this.state = State.Text;\n /** The read buffer. */\n this.buffer = \"\";\n /** The beginning of the section that is currently being read. */\n this.sectionStart = 0;\n /** The index within the buffer that we are currently looking at. */\n this.index = 0;\n /** The start of the last entity. */\n this.entityStart = 0;\n /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n this.baseState = State.Text;\n /** For special parsing behavior inside of script and style tags. */\n this.isSpecial = false;\n /** Indicates whether the tokenizer has been paused. */\n this.running = true;\n /** The offset of the current buffer. */\n this.offset = 0;\n this.currentSequence = undefined;\n this.sequenceIndex = 0;\n this.xmlMode = xmlMode;\n this.decodeEntities = decodeEntities;\n this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));\n }\n reset() {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.currentSequence = undefined;\n this.running = true;\n this.offset = 0;\n }\n write(chunk) {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n }\n end() {\n if (this.running)\n this.finish();\n }\n pause() {\n this.running = false;\n }\n resume() {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n }\n stateText(c) {\n if (c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For <title> tags, also decode entities. */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (this.xmlMode) {\n this.state = State.InTagName;\n }\n else if (lower === Sequences.ScriptEnd[2]) {\n this.state = State.BeforeSpecialS;\n }\n else if (lower === Sequences.TitleEnd[2]) {\n this.state = State.BeforeSpecialT;\n }\n else {\n this.state = State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = this.index;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index + 1);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeSpecialT(c) {\n const lower = c | 0x20;\n if (lower === Sequences.TitleEnd[3]) {\n this.startSpecial(Sequences.TitleEnd, 4);\n }\n else if (lower === Sequences.TextareaEnd[3]) {\n this.startSpecial(Sequences.TextareaEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n startEntity() {\n this.baseState = this.state;\n this.state = State.InEntity;\n this.entityStart = this.index;\n this.entityDecoder.startEntity(this.xmlMode\n ? DecodingMode.Strict\n : this.baseState === State.Text ||\n this.baseState === State.InSpecialTag\n ? DecodingMode.Legacy\n : DecodingMode.Attribute);\n }\n stateInEntity() {\n const length = this.entityDecoder.write(this.buffer, this.index - this.offset);\n // If `length` is positive, we are done with the entity.\n if (length >= 0) {\n this.state = this.baseState;\n if (length === 0) {\n this.index = this.entityStart;\n }\n }\n else {\n // Mark buffer as consumed.\n this.index = this.offset + this.buffer.length - 1;\n }\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.BeforeSpecialT: {\n this.stateBeforeSpecialT(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InEntity: {\n this.stateInEntity();\n break;\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InEntity) {\n this.entityDecoder.end();\n this.state = this.baseState;\n }\n this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n // If there is no remaining data, we are done.\n if (this.sectionStart >= endIndex) {\n return;\n }\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitCodePoint(cp, consumed) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n if (this.sectionStart < this.entityStart) {\n this.cbs.onattribdata(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.onattribentity(cp);\n }\n else {\n if (this.sectionStart < this.entityStart) {\n this.cbs.ontext(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.ontextentity(cp, this.sectionStart);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/lib/decode.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e, _f;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.htmlMode = !this.options.xmlMode;\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;\n this.recognizeSelfClosing =\n (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;\n this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);\n this.foreignContext = [!this.htmlMode];\n (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp, endIndex) {\n var _a, _b;\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = endIndex;\n }\n /**\n * Checks if the current tag is a void element. Override this if you want\n * to specify your own additional void elements.\n */\n isVoidElement(name) {\n return this.htmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = this.htmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n const element = this.stack.shift();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.unshift(name);\n if (this.htmlMode) {\n if (foreignContextElements.has(name)) {\n this.foreignContext.unshift(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.unshift(false);\n }\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (this.htmlMode &&\n (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name))) {\n this.foreignContext.shift();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.indexOf(name);\n if (pos !== -1) {\n for (let index = 0; index <= pos; index++) {\n const element = this.stack.shift();\n // We know the stack has sufficient elements.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);\n }\n }\n else if (this.htmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (this.htmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\");\n (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", {}, true);\n (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.recognizeSelfClosing || this.foreignContext[0]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[0] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.shift();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (!this.htmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = 0; index < this.stack.length; index++) {\n this.cbs.onclosetag(this.stack[index], true);\n }\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.foreignContext.length = 0;\n this.foreignContext.unshift(!this.htmlMode);\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n","import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nexport function innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) {\n return innerText(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n//# sourceMappingURL=stringify.js.map","import { isTag, hasChildren, } from \"domhandler\";\n/**\n * Get a node's children.\n *\n * @category Traversal\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nexport function getChildren(elem) {\n return hasChildren(elem) ? elem.children : [];\n}\n/**\n * Get a node's parent.\n *\n * @category Traversal\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node, or `null` if `elem` is a root node.\n */\nexport function getParent(elem) {\n return elem.parent || null;\n}\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first. If we don't\n * have a parent (the element is a root node), we walk the element's `prev` &\n * `next` to get all remaining nodes.\n *\n * @category Traversal\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings, including `elem`.\n */\nexport function getSiblings(elem) {\n const parent = getParent(elem);\n if (parent != null)\n return getChildren(parent);\n const siblings = [elem];\n let { prev, next } = elem;\n while (prev != null) {\n siblings.unshift(prev);\n ({ prev } = prev);\n }\n while (next != null) {\n siblings.push(next);\n ({ next } = next);\n }\n return siblings;\n}\n/**\n * Gets an attribute from an element.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nexport function getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\n/**\n * Checks whether an element has an attribute.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nexport function hasAttrib(elem, name) {\n return (elem.attribs != null &&\n Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n elem.attribs[name] != null);\n}\n/**\n * Get the tag name of an element.\n *\n * @category Traversal\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nexport function getName(elem) {\n return elem.name;\n}\n/**\n * Returns the next element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag, or `null` if there is no next\n * sibling.\n */\nexport function nextElementSibling(elem) {\n let { next } = elem;\n while (next !== null && !isTag(next))\n ({ next } = next);\n return next;\n}\n/**\n * Returns the previous element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag, or `null` if there is no\n * previous sibling.\n */\nexport function prevElementSibling(elem) {\n let { prev } = elem;\n while (prev !== null && !isTag(prev))\n ({ prev } = prev);\n return prev;\n}\n//# sourceMappingURL=traversal.js.map","/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */\nexport function removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n const childs = elem.parent.children;\n const childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) {\n childs.splice(childsIndex, 1);\n }\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\n/**\n * Replace an element in the dom\n *\n * @category Manipulation\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nexport function replaceElement(elem, replacement) {\n const prev = (replacement.prev = elem.prev);\n if (prev) {\n prev.next = replacement;\n }\n const next = (replacement.next = elem.next);\n if (next) {\n next.prev = replacement;\n }\n const parent = (replacement.parent = elem.parent);\n if (parent) {\n const childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\n/**\n * Append a child to an element.\n *\n * @category Manipulation\n * @param parent The element to append to.\n * @param child The element to be added as a child.\n */\nexport function appendChild(parent, child) {\n removeElement(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n const sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n }\n else {\n child.prev = null;\n }\n}\n/**\n * Append an element after another.\n *\n * @category Manipulation\n * @param elem The element to append after.\n * @param next The element be added.\n */\nexport function append(elem, next) {\n removeElement(next);\n const { parent } = elem;\n const currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n }\n else if (parent) {\n parent.children.push(next);\n }\n}\n/**\n * Prepend a child to an element.\n *\n * @category Manipulation\n * @param parent The element to prepend before.\n * @param child The element to be added as a child.\n */\nexport function prependChild(parent, child) {\n removeElement(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n const sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n }\n else {\n child.next = null;\n }\n}\n/**\n * Prepend an element before another.\n *\n * @category Manipulation\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nexport function prepend(elem, prev) {\n removeElement(prev);\n const { parent } = elem;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\n//# sourceMappingURL=manipulation.js.map","import { isTag, hasChildren } from \"domhandler\";\n/**\n * Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function filter(test, node, recurse = true, limit = Infinity) {\n return find(test, Array.isArray(node) ? node : [node], recurse, limit);\n}\n/**\n * Search an array of nodes and their children for nodes passing a test function.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function find(test, nodes, recurse, limit) {\n const result = [];\n /** Stack of the arrays we are looking at. */\n const nodeStack = [nodes];\n /** Stack of the indices within the arrays. */\n const indexStack = [0];\n for (;;) {\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n return result;\n }\n if (recurse && hasChildren(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n/**\n * Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n * @deprecated Use `Array.prototype.find` directly.\n */\nexport function findOneChild(test, nodes) {\n return nodes.find(test);\n}\n/**\n * Finds one element in a tree that passes a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Node or array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first node that passes `test`.\n */\nexport function findOne(test, nodes, recurse = true) {\n let elem = null;\n for (let i = 0; i < nodes.length && !elem; i++) {\n const node = nodes[i];\n if (!isTag(node)) {\n continue;\n }\n else if (test(node)) {\n elem = node;\n }\n else if (recurse && node.children.length > 0) {\n elem = findOne(test, node.children, true);\n }\n }\n return elem;\n}\n/**\n * Checks if a tree of nodes contains at least one node passing a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing the test.\n */\nexport function existsOne(test, nodes) {\n return nodes.some((checked) => isTag(checked) &&\n (test(checked) || existsOne(test, checked.children)));\n}\n/**\n * Search an array of nodes and their children for elements passing a test function.\n *\n * Same as `find`, but limited to elements and with less options, leading to reduced complexity.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nexport function findAll(test, nodes) {\n const result = [];\n const nodeStack = [nodes];\n const indexStack = [0];\n for (;;) {\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (!isTag(elem))\n continue;\n if (test(elem))\n result.push(elem);\n if (elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n//# sourceMappingURL=querying.js.map","import { isTag, isText } from \"domhandler\";\nimport { filter, findOne } from \"./querying.js\";\n/**\n * A map of functions to check nodes against.\n */\nconst Checks = {\n tag_name(name) {\n if (typeof name === \"function\") {\n return (elem) => isTag(elem) && name(elem.name);\n }\n else if (name === \"*\") {\n return isTag;\n }\n return (elem) => isTag(elem) && elem.name === name;\n },\n tag_type(type) {\n if (typeof type === \"function\") {\n return (elem) => type(elem.type);\n }\n return (elem) => elem.type === type;\n },\n tag_contains(data) {\n if (typeof data === \"function\") {\n return (elem) => isText(elem) && data(elem.data);\n }\n return (elem) => isText(elem) && elem.data === data;\n },\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return (elem) => isTag(elem) && value(elem.attribs[attrib]);\n }\n return (elem) => isTag(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return (elem) => a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n const funcs = Object.keys(options).map((key) => {\n const value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * Checks whether a node matches the description in `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nexport function testElement(options, node) {\n const test = compileTest(options);\n return test ? test(node) : true;\n}\n/**\n * Returns all nodes that match `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nexport function getElements(options, nodes, recurse, limit = Infinity) {\n const test = compileTest(options);\n return test ? filter(test, nodes, recurse, limit) : [];\n}\n/**\n * Returns the node with the supplied ID.\n *\n * @category Legacy Query Functions\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nexport function getElementById(id, nodes, recurse = true) {\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return findOne(getAttribCheck(\"id\", id), nodes, recurse);\n}\n/**\n * Returns all nodes with the supplied `tagName`.\n *\n * @category Legacy Query Functions\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nexport function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\n/**\n * Returns all nodes with the supplied `type`.\n *\n * @category Legacy Query Functions\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nexport function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n//# sourceMappingURL=legacy.js.map","import { hasChildren } from \"domhandler\";\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nexport function removeSubsets(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nexport var DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nexport function compareDocumentPosition(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n let current = hasChildren(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = hasChildren(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nexport function uniqueSort(nodes) {\n nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1));\n nodes.sort((a, b) => {\n const relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","import { textContent } from \"./stringify.js\";\nimport { getElementsByTagName } from \"./legacy.js\";\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @category Feeds\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nexport function getFeed(doc) {\n const feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: getElementsByTagName(\"entry\", childs).map((item) => {\n var _a;\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n entry.link = href;\n }\n const description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n const pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: getElementsByTagName(\"item\", feedRoot.children).map((item) => {\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n const pubDate = fetch(\"pubDate\", children) || fetch(\"dc:date\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n const updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nconst MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return getElementsByTagName(\"media:content\", where).map((elem) => {\n const { attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"],\n };\n for (const attrib of MEDIA_KEYS_STRING) {\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (const attrib of MEDIA_KEYS_INT) {\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs[\"expression\"]) {\n media.expression = attribs[\"expression\"];\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return getElementsByTagName(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse = false) {\n return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n//# sourceMappingURL=feeds.js.map","import { Parser } from \"./Parser.js\";\nexport { Parser } from \"./Parser.js\";\nimport { DomHandler, } from \"domhandler\";\nexport { DomHandler, \n// Old name for DomHandler\nDomHandler as DefaultHandler, } from \"domhandler\";\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n */\nexport function parseDocument(data, options) {\n const handler = new DomHandler(undefined, options);\n new Parser(handler, options).end(data);\n return handler.root;\n}\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n * @deprecated Use `parseDocument` instead.\n */\nexport function parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with the resulting document.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nexport function createDocumentStream(callback, options, elementCallback) {\n const handler = new DomHandler((error) => callback(error, handler.root), options, elementCallback);\n return new Parser(handler, options);\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with an array of root nodes.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n * @deprecated Use `createDocumentStream` instead.\n */\nexport function createDomStream(callback, options, elementCallback) {\n const handler = new DomHandler(callback, options, elementCallback);\n return new Parser(handler, options);\n}\nexport { default as Tokenizer, QuoteType, } from \"./Tokenizer.js\";\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nexport * as ElementType from \"domelementtype\";\nimport { getFeed } from \"domutils\";\nexport { getFeed } from \"domutils\";\nconst parseFeedDefaultOptions = { xmlMode: true };\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nexport function parseFeed(feed, options = parseFeedDefaultOptions) {\n return getFeed(parseDOM(feed, options));\n}\nexport * as DomUtils from \"domutils\";\n//# sourceMappingURL=index.js.map","// Internal\nexport const NODE_END = -1;\n\n// Node\nexport const ELEMENT_NODE = 1;\nexport const ATTRIBUTE_NODE = 2;\nexport const TEXT_NODE = 3;\nexport const CDATA_SECTION_NODE = 4;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_TYPE_NODE = 10;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n\n// Elements\nexport const BLOCK_ELEMENTS = new Set(['ARTICLE', 'ASIDE', 'BLOCKQUOTE', 'BODY', 'BR', 'BUTTON', 'CANVAS', 'CAPTION', 'COL', 'COLGROUP', 'DD', 'DIV', 'DL', 'DT', 'EMBED', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'FORM', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'UL', 'OL', 'P']);\n\n// TreeWalker\nexport const SHOW_ALL = -1;\nexport const SHOW_ELEMENT = 1;\nexport const SHOW_TEXT = 4;\nexport const SHOW_CDATA_SECTION = 8;\nexport const SHOW_COMMENT = 128;\n\n// Document position\nexport const DOCUMENT_POSITION_DISCONNECTED = 0x01;\nexport const DOCUMENT_POSITION_PRECEDING = 0x02;\nexport const DOCUMENT_POSITION_FOLLOWING = 0x04;\nexport const DOCUMENT_POSITION_CONTAINS = 0x08;\nexport const DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nexport const DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\n// SVG\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n","const {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n} = Object;\n\nexport {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n};\n","import {ELEMENT_NODE} from './constants.js';\nimport {END, MIME, NEXT, PREV} from './symbols.js';\n\nconst $String = String;\nexport {$String as String};\n\nexport const getEnd = node => node.nodeType === ELEMENT_NODE ? node[END] : node;\n\nexport const ignoreCase = ({ownerDocument}) => ownerDocument[MIME].ignoreCase;\n\nexport const knownAdjacent = (prev, next) => {\n prev[NEXT] = next;\n next[PREV] = prev;\n};\n\nexport const knownBoundaries = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(getEnd(current), next);\n};\n\nexport const knownSegment = (prev, start, end, next) => {\n knownAdjacent(prev, start);\n knownAdjacent(getEnd(end), next);\n};\n\nexport const knownSiblings = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(current, next);\n};\n\nexport const localCase = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].ignoreCase ? localName.toUpperCase() : localName;\n};\n\nexport const setAdjacent = (prev, next) => {\n if (prev)\n prev[NEXT] = next;\n if (next)\n next[PREV] = prev;\n};\n","export const shadowRoots = new WeakMap;\n","import {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT, UPGRADE} from '../shared/symbols.js';\nimport {entries, setPrototypeOf} from '../shared/object.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nlet reactive = false;\n\nexport const Classes = new WeakMap;\n\nexport const customElements = new WeakMap;\n\nexport const attributeChangedCallback = (element, attributeName, oldValue, newValue) => {\n if (\n reactive &&\n customElements.has(element) &&\n element.attributeChangedCallback &&\n element.constructor.observedAttributes.includes(attributeName)\n ) {\n element.attributeChangedCallback(attributeName, oldValue, newValue);\n }\n};\n\nconst createTrigger = (method, isConnected) => element => {\n if (customElements.has(element)) {\n const info = customElements.get(element);\n if (info.connected !== isConnected && element.isConnected === isConnected) {\n info.connected = isConnected;\n if (method in element)\n element[method]();\n }\n }\n};\n\nconst triggerConnected = createTrigger('connectedCallback', true);\nexport const connectedCallback = element => {\n if (reactive) {\n triggerConnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerConnected(next);\n next = next[NEXT];\n }\n }\n};\n\nconst triggerDisconnected = createTrigger('disconnectedCallback', false);\nexport const disconnectedCallback = element => {\n if (reactive) {\n triggerDisconnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerDisconnected(next);\n next = next[NEXT];\n }\n }\n};\n\n/**\n * @implements globalThis.CustomElementRegistry\n */\nexport class CustomElementRegistry {\n\n /**\n * @param {Document} ownerDocument\n */\n constructor(ownerDocument) {\n /**\n * @private\n */\n this.ownerDocument = ownerDocument;\n\n /**\n * @private\n */\n this.registry = new Map;\n\n /**\n * @private\n */\n this.waiting = new Map;\n\n /**\n * @private\n */\n this.active = false;\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @param {Function} Class the custom element **Class** definition\n * @param {object?} options the optional object with an `extends` property\n */\n define(localName, Class, options = {}) {\n const {ownerDocument, registry, waiting} = this;\n\n if (registry.has(localName))\n throw new Error('unable to redefine ' + localName);\n\n if (Classes.has(Class))\n throw new Error('unable to redefine the same class: ' + Class);\n\n this.active = (reactive = true);\n\n const {extends: extend} = options;\n\n Classes.set(Class, {\n ownerDocument,\n options: {is: extend ? localName : ''},\n localName: extend || localName\n });\n\n const check = extend ?\n element => {\n return element.localName === extend &&\n element.getAttribute('is') === localName;\n } :\n element => element.localName === localName;\n registry.set(localName, {Class, check});\n if (waiting.has(localName)) {\n for (const resolve of waiting.get(localName))\n resolve(Class);\n waiting.delete(localName);\n }\n ownerDocument.querySelectorAll(\n extend ? `${extend}[is=\"${localName}\"]` : localName\n ).forEach(this.upgrade, this);\n }\n\n /**\n * @param {Element} element\n */\n upgrade(element) {\n if (customElements.has(element))\n return;\n const {ownerDocument, registry} = this;\n const ce = element.getAttribute('is') || element.localName;\n if (registry.has(ce)) {\n const {Class, check} = registry.get(ce);\n if (check(element)) {\n const {attributes, isConnected} = element;\n for (const attr of attributes)\n element.removeAttributeNode(attr);\n\n const values = entries(element);\n for (const [key] of values)\n delete element[key];\n\n setPrototypeOf(element, Class.prototype);\n ownerDocument[UPGRADE] = {element, values};\n new Class(ownerDocument, ce);\n\n customElements.set(element, {connected: isConnected});\n\n for (const attr of attributes)\n element.setAttributeNode(attr);\n\n if (isConnected && element.connectedCallback)\n element.connectedCallback();\n }\n }\n }\n\n /**\n * @param {string} localName the custom element definition name\n */\n whenDefined(localName) {\n const {registry, waiting} = this;\n return new Promise(resolve => {\n if (registry.has(localName))\n resolve(registry.get(localName).Class);\n else {\n if (!waiting.has(localName))\n waiting.set(localName, []);\n waiting.get(localName).push(resolve);\n }\n });\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @returns {Function?} the custom element **Class**, if any\n */\n get(localName) {\n const info = this.registry.get(localName);\n return info && info.Class;\n }\n\n /**\n * @param {Function} Class **Class** of custom element\n * @returns {string?} found tag name or null\n */\n getName(Class) {\n if (Classes.has(Class)) {\n const { localName } = Classes.get(Class);\n return localName;\n }\n return null;\n }\n}\n","import * as HTMLParser2 from 'htmlparser2';\n\nimport {ELEMENT_NODE, SVG_NAMESPACE} from './constants.js';\nimport {CUSTOM_ELEMENTS, PREV, END, VALUE} from './symbols.js';\nimport {keys} from './object.js';\n\nimport {knownBoundaries, knownSiblings} from './utils.js';\nimport {attributeChangedCallback, connectedCallback} from '../interface/custom-element-registry.js';\n\nconst {Parser} = HTMLParser2;\n\n// import {Mime} from './mime.js';\n// const VOID_SOURCE = Mime['text/html'].voidElements.source.slice(4, -2);\n// const VOID_ELEMENTS = new RegExp(`<(${VOID_SOURCE})([^>]*?)>`, 'gi');\n// const VOID_SANITIZER = (_, $1, $2) => `<${$1}${$2}${/\\/$/.test($2) ? '' : ' /'}>`;\n// const voidSanitizer = html => html.replace(VOID_ELEMENTS, VOID_SANITIZER);\n\nlet notParsing = true;\n\nconst append = (self, node, active) => {\n const end = self[END];\n node.parentNode = self;\n knownBoundaries(end[PREV], node, end);\n if (active && node.nodeType === ELEMENT_NODE)\n connectedCallback(node);\n return node;\n};\n\nconst attribute = (element, end, attribute, value, active) => {\n attribute[VALUE] = value;\n attribute.ownerElement = element;\n knownSiblings(end[PREV], attribute, end);\n if (attribute.name === 'class')\n element.className = value;\n if (active)\n attributeChangedCallback(element, attribute.name, null, value);\n};\n\nexport const isNotParsing = () => notParsing;\n\nexport const parseFromString = (document, isHTML, markupLanguage) => {\n const {active, registry} = document[CUSTOM_ELEMENTS];\n\n let node = document;\n let ownerSVGElement = null;\n let parsingCData = false;\n\n notParsing = false;\n\n const content = new Parser({\n // <!DOCTYPE ...>\n onprocessinginstruction(name, data) {\n if (name.toLowerCase() === '!doctype')\n document.doctype = data.slice(name.length).trim();\n },\n\n // <tagName>\n onopentag(name, attributes) {\n let create = true;\n if (isHTML) {\n if (ownerSVGElement) {\n node = append(node, document.createElementNS(SVG_NAMESPACE, name), active);\n node.ownerSVGElement = ownerSVGElement;\n create = false;\n }\n else if (name === 'svg' || name === 'SVG') {\n ownerSVGElement = document.createElementNS(SVG_NAMESPACE, name);\n node = append(node, ownerSVGElement, active);\n create = false;\n }\n else if (active) {\n const ce = name.includes('-') ? name : (attributes.is || '');\n if (ce && registry.has(ce)) {\n const {Class} = registry.get(ce);\n node = append(node, new Class, active);\n delete attributes.is;\n create = false;\n }\n }\n }\n\n if (create)\n node = append(node, document.createElement(name), false);\n\n let end = node[END];\n for (const name of keys(attributes))\n attribute(node, end, document.createAttribute(name), attributes[name], active);\n },\n\n // #text, #comment\n oncomment(data) { append(node, document.createComment(data), active); },\n ontext(text) {\n if (parsingCData) {\n append(node, document.createCDATASection(text), active);\n } else {\n append(node, document.createTextNode(text), active);\n }\n },\n\n // #cdata\n oncdatastart() { parsingCData = true; },\n oncdataend() { parsingCData = false; },\n\n // </tagName>\n onclosetag() {\n if (isHTML && node === ownerSVGElement)\n ownerSVGElement = null;\n node = node.parentNode;\n }\n }, {\n lowerCaseAttributeNames: false,\n decodeEntities: true,\n xmlMode: !isHTML\n });\n\n content.write(markupLanguage);\n content.end();\n\n notParsing = true;\n\n return document;\n};\n","export const htmlClasses = new Map;\n\nexport const registerHTMLClass = (names, Class) => {\n for (const name of [].concat(names)) {\n htmlClasses.set(name, Class);\n htmlClasses.set(name.toUpperCase(), Class);\n }\n};\n","\n export const performance = globalThis.performance;\n ","import {\n NODE_END,\n ATTRIBUTE_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_TYPE_NODE,\n ELEMENT_NODE,\n TEXT_NODE\n} from './constants.js';\n\nimport {END, NEXT, VALUE} from './symbols.js';\n\nimport {getEnd} from './utils.js';\n\nconst loopSegment = ({[NEXT]: next, [END]: end}, json) => {\n while (next !== end) {\n switch (next.nodeType) {\n case ATTRIBUTE_NODE:\n attrAsJSON(next, json);\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n characterDataAsJSON(next, json);\n break;\n case ELEMENT_NODE:\n elementAsJSON(next, json);\n next = getEnd(next);\n break;\n case DOCUMENT_TYPE_NODE:\n documentTypeAsJSON(next, json);\n break;\n }\n next = next[NEXT];\n }\n const last = json.length - 1;\n const value = json[last];\n if (typeof value === 'number' && value < 0)\n json[last] += NODE_END;\n else\n json.push(NODE_END);\n};\n\nexport const attrAsJSON = (attr, json) => {\n json.push(ATTRIBUTE_NODE, attr.name);\n const value = attr[VALUE].trim();\n if (value)\n json.push(value);\n};\n\nexport const characterDataAsJSON = (node, json) => {\n const value = node[VALUE];\n if (value.trim())\n json.push(node.nodeType, value);\n};\n\nexport const nonElementAsJSON = (node, json) => {\n json.push(node.nodeType);\n loopSegment(node, json);\n};\n\nexport const documentTypeAsJSON = ({name, publicId, systemId}, json) => {\n json.push(DOCUMENT_TYPE_NODE, name);\n if (publicId)\n json.push(publicId);\n if (systemId)\n json.push(systemId);\n};\n\nexport const elementAsJSON = (element, json) => {\n json.push(ELEMENT_NODE, element.localName);\n loopSegment(element, json);\n};\n","import {MUTATION_OBSERVER} from '../shared/symbols.js';\n\nconst createRecord =\n (type, target, addedNodes, removedNodes, attributeName, oldValue) =>\n ({type, target, addedNodes, removedNodes, attributeName, oldValue});\n\nconst queueAttribute = (\n observer, target, attributeName, attributeFilter, attributeOldValue, oldValue\n) => {\n if ((!attributeFilter || attributeFilter.includes(attributeName))) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'attributes', target,\n [], [],\n attributeName, attributeOldValue ? oldValue : void 0\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n }\n};\n\nexport const attributeChangedCallback = (element, attributeName, oldValue) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [\n target,\n {\n childList,\n subtree,\n attributes,\n attributeFilter,\n attributeOldValue\n }\n ] of observer.nodes) {\n if (childList) {\n if (\n (subtree && (target === ownerDocument || target.contains(element))) ||\n (!subtree && target.children.includes(element))\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n else if (\n attributes &&\n target === element\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n }\n }\n};\n\nexport const moCallback = (element, parentNode) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [target, {subtree, childList, characterData}] of observer.nodes) {\n if (childList) {\n if (\n (parentNode && (target === parentNode || /* c8 ignore next */(subtree && target.contains(parentNode)))) ||\n (!parentNode && ((subtree && (target === ownerDocument || /* c8 ignore next */target.contains(element))) ||\n (!subtree && target[characterData ? 'childNodes' : 'children'].includes(element))))\n ) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'childList', target,\n parentNode ? [] : [element], parentNode ? [element] : []\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n break;\n }\n }\n }\n }\n }\n};\n\nexport class MutationObserverClass {\n constructor(ownerDocument) {\n const observers = new Set;\n this.observers = observers;\n this.active = false;\n\n /**\n * @implements globalThis.MutationObserver\n */\n this.class = class MutationObserver {\n\n constructor(callback) {\n /**\n * @private\n */\n this.callback = callback;\n\n /**\n * @private\n */\n this.nodes = new Map;\n\n /**\n * @private\n */\n this.records = [];\n\n /**\n * @private\n */\n this.scheduled = false;\n }\n\n disconnect() {\n this.records.splice(0);\n this.nodes.clear();\n observers.delete(this);\n ownerDocument[MUTATION_OBSERVER].active = !!observers.size;\n }\n\n /**\n * @param {Element} target\n * @param {MutationObserverInit} options\n */\n observe(target, options = {\n subtree: false,\n childList: false,\n attributes: false,\n attributeFilter: null,\n attributeOldValue: false,\n characterData: false,\n // TODO: not implemented yet\n // characterDataOldValue: false\n }) {\n if (('attributeOldValue' in options) || ('attributeFilter' in options))\n options.attributes = true;\n // if ('characterDataOldValue' in options)\n // options.characterData = true;\n options.childList = !!options.childList;\n options.subtree = !!options.subtree;\n this.nodes.set(target, options);\n observers.add(this);\n ownerDocument[MUTATION_OBSERVER].active = true;\n }\n\n /**\n * @returns {MutationRecord[]}\n */\n takeRecords() { return this.records.splice(0); }\n }\n }\n}\n","import {CLASS_LIST, NEXT, PREV, VALUE} from './symbols.js';\n\nimport {knownAdjacent, knownSiblings} from './utils.js';\n\nimport {attributeChangedCallback as ceAttributes} from '../interface/custom-element-registry.js';\nimport {attributeChangedCallback as moAttributes} from '../interface/mutation-observer.js';\n\nexport const emptyAttributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'class',\n 'contenteditable',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'draggable',\n 'formnovalidate',\n 'hidden',\n 'id',\n 'ismap',\n 'itemscope',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected',\n 'style',\n 'truespeed'\n]);\n\nexport const setAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n attribute.ownerElement = element;\n knownSiblings(element, attribute, element[NEXT]);\n if (name === 'class')\n element.className = value;\n moAttributes(element, name, null);\n ceAttributes(element, name, null, value);\n};\n\nexport const removeAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n knownAdjacent(attribute[PREV], attribute[NEXT]);\n attribute.ownerElement = attribute[PREV] = attribute[NEXT] = null;\n if (name === 'class')\n element[CLASS_LIST] = null;\n moAttributes(element, name, value);\n ceAttributes(element, name, value, null);\n};\n\nexport const booleanAttribute = {\n get(element, name) {\n return element.hasAttribute(name);\n },\n set(element, name, value) {\n if (value)\n element.setAttribute(name, '');\n else\n element.removeAttribute(name);\n }\n};\n\nexport const numericAttribute = {\n get(element, name) {\n return parseFloat(element.getAttribute(name) || 0);\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\nexport const stringAttribute = {\n get(element, name) {\n return element.getAttribute(name) || '';\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\n/* oddly enough, this apparently is not a thing\nexport const nullableAttribute = {\n get(element, name) {\n return element.getAttribute(name);\n },\n set(element, name, value) {\n if (value === null)\n element.removeAttribute(name);\n else\n element.setAttribute(name, value);\n }\n};\n*/\n","// https://dom.spec.whatwg.org/#interface-eventtarget\n\nconst wm = new WeakMap();\n\nfunction dispatch(event, listener) {\n if (typeof listener === 'function')\n listener.call(event.target, event);\n else\n listener.handleEvent(event);\n return event._stopImmediatePropagationFlag;\n}\n\nfunction invokeListeners({currentTarget, target}) {\n const map = wm.get(currentTarget);\n if (map && map.has(this.type)) {\n const listeners = map.get(this.type);\n if (currentTarget === target) {\n this.eventPhase = this.AT_TARGET;\n } else {\n this.eventPhase = this.BUBBLING_PHASE;\n }\n\n this.currentTarget = currentTarget;\n this.target = target;\n for (const [listener, options] of listeners) {\n if (options && options.once)\n listeners.delete(listener);\n if (dispatch(this, listener))\n break;\n }\n delete this.currentTarget;\n delete this.target;\n return this.cancelBubble;\n }\n}\n\n\n/**\n * @implements globalThis.EventTarget\n */\nclass DOMEventTarget {\n\n constructor() {\n wm.set(this, new Map);\n }\n\n /**\n * @protected\n */\n _getParent() {\n return null;\n }\n\n addEventListener(type, listener, options) {\n const map = wm.get(this);\n if (!map.has(type)) \n map.set(type, new Map);\n map.get(type).set(listener, options);\n }\n\n removeEventListener(type, listener) {\n const map = wm.get(this);\n if (map.has(type)) {\n const listeners = map.get(type);\n if (listeners.delete(listener) && !listeners.size)\n map.delete(type);\n }\n }\n\n dispatchEvent(event) {\n let node = this;\n event.eventPhase = event.CAPTURING_PHASE;\n\n // intentionally simplified, specs imply way more code: https://dom.spec.whatwg.org/#event-path\n while (node) {\n if (node.dispatchEvent)\n event._path.push({currentTarget: node, target: this});\n node = event.bubbles && node._getParent && node._getParent();\n }\n event._path.some(invokeListeners, event);\n event._path = [];\n event.eventPhase = event.NONE;\n return !event.defaultPrevented;\n }\n\n}\n\nexport {DOMEventTarget as EventTarget};\n","// https://dom.spec.whatwg.org/#interface-nodelist\n\n/**\n * @implements globalThis.NodeList\n */\nexport class NodeList extends Array {\n item(i) { return i < this.length ? this[i] : null; }\n}\n","// https://dom.spec.whatwg.org/#node\n\nimport {\n ELEMENT_NODE,\n ATTRIBUTE_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n DOCUMENT_TYPE_NODE,\n DOCUMENT_POSITION_DISCONNECTED,\n DOCUMENT_POSITION_PRECEDING,\n DOCUMENT_POSITION_FOLLOWING,\n DOCUMENT_POSITION_CONTAINS,\n DOCUMENT_POSITION_CONTAINED_BY,\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n} from '../shared/constants.js';\n\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {EventTarget} from './event-target.js';\n\nimport {NodeList} from './node-list.js';\n\nconst getParentNodeCount = ({parentNode}) => {\n let count = 0;\n while (parentNode) {\n count++;\n parentNode = parentNode.parentNode;\n }\n return count;\n};\n\n/**\n * @implements globalThis.Node\n */\nexport class Node extends EventTarget {\n\n static get ELEMENT_NODE() { return ELEMENT_NODE; }\n static get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n static get TEXT_NODE() { return TEXT_NODE; }\n static get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n static get COMMENT_NODE() { return COMMENT_NODE; }\n static get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n static get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n static get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n constructor(ownerDocument, localName, nodeType) {\n super();\n this.ownerDocument = ownerDocument;\n this.localName = localName;\n this.nodeType = nodeType;\n this.parentNode = null;\n this[NEXT] = null;\n this[PREV] = null;\n }\n\n get ELEMENT_NODE() { return ELEMENT_NODE; }\n get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n get TEXT_NODE() { return TEXT_NODE; }\n get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n get COMMENT_NODE() { return COMMENT_NODE; }\n get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n get baseURI() {\n const ownerDocument = this.nodeType === DOCUMENT_NODE ?\n this : this.ownerDocument;\n if (ownerDocument) {\n const base = ownerDocument.querySelector('base');\n if (base)\n return base.getAttribute('href');\n\n const {location} = ownerDocument.defaultView;\n if (location)\n return location.href;\n }\n\n return null;\n }\n\n /* c8 ignore start */\n // mixin: node\n get isConnected() { return false; }\n get nodeName() { return this.localName; }\n get parentElement() { return null; }\n get previousSibling() { return null; }\n get previousElementSibling() { return null; }\n get nextSibling() { return null; }\n get nextElementSibling() { return null; }\n get childNodes() { return new NodeList; }\n get firstChild() { return null; }\n get lastChild() { return null; }\n\n // default values\n get nodeValue() { return null; }\n set nodeValue(value) {}\n get textContent() { return null; }\n set textContent(value) {}\n normalize() {}\n cloneNode() { return null; }\n contains() { return false; }\n /**\n * Inserts a node before a reference node as a child of this parent node.\n * @param {Node} newNode The node to be inserted.\n * @param {Node} referenceNode The node before which newNode is inserted. If this is null, then newNode is inserted at the end of node's child nodes.\n * @returns The added child\n */\n // eslint-disable-next-line no-unused-vars\n insertBefore(newNode, referenceNode) { return newNode }\n /**\n * Adds a node to the end of the list of children of this node.\n * @param {Node} child The node to append to the given parent node.\n * @returns The appended child.\n */\n appendChild(child) { return child }\n /**\n * Replaces a child node within this node\n * @param {Node} newChild The new node to replace oldChild.\n * @param {Node} oldChild The child to be replaced.\n * @returns The replaced Node. This is the same node as oldChild.\n */\n replaceChild(newChild, oldChild) { return oldChild }\n /**\n * Removes a child node from the DOM.\n * @param {Node} child A Node that is the child node to be removed from the DOM.\n * @returns The removed node.\n */\n removeChild(child) { return child }\n toString() { return ''; }\n /* c8 ignore stop */\n\n hasChildNodes() { return !!this.lastChild; }\n isSameNode(node) { return this === node; }\n\n // TODO: attributes?\n compareDocumentPosition(target) {\n let result = 0;\n if (this !== target) {\n let self = getParentNodeCount(this);\n let other = getParentNodeCount(target);\n if (self < other) {\n result += DOCUMENT_POSITION_FOLLOWING;\n if (this.contains(target))\n result += DOCUMENT_POSITION_CONTAINED_BY;\n }\n else if (other < self) {\n result += DOCUMENT_POSITION_PRECEDING;\n if (target.contains(this))\n result += DOCUMENT_POSITION_CONTAINS;\n }\n else if (self && other) {\n const {childNodes} = this.parentNode;\n if (childNodes.indexOf(this) < childNodes.indexOf(target))\n result += DOCUMENT_POSITION_FOLLOWING;\n else\n result += DOCUMENT_POSITION_PRECEDING;\n }\n if (!self || !other) {\n result += DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n result += DOCUMENT_POSITION_DISCONNECTED;\n }\n }\n return result;\n }\n\n isEqualNode(node) {\n if (this === node)\n return true;\n if (this.nodeType === node.nodeType) {\n switch (this.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n const aNodes = this.childNodes;\n const bNodes = node.childNodes;\n return aNodes.length === bNodes.length && aNodes.every((node, i) => node.isEqualNode(bNodes[i]));\n }\n }\n return this.toString() === node.toString();\n }\n return false;\n }\n\n /**\n * @protected\n */\n _getParent() {\n return this.parentNode;\n }\n\n /**\n * Calling it on an element inside a standard web page will return an HTMLDocument object representing the entire page (or <iframe>).\n * Calling it on an element inside a shadow DOM will return the associated ShadowRoot.\n * @return {ShadowRoot | HTMLDocument}\n */\n getRootNode() {\n let root = this;\n while (root.parentNode)\n root = root.parentNode;\n return root;\n }\n}\n","const {replace} = '';\n\n// escape\nconst ca = /[<>&\\xA0]/g;\n\nconst esca = {\n '\\xA0': ' ',\n '&': '&',\n '<': '<',\n '>': '>'\n};\n\nconst pe = m => esca[m];\n\n/**\n * Safely escape HTML entities such as `&`, `<`, `>` only.\n * @param {string} es the input to safely escape\n * @returns {string} the escaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const escape = es => replace.call(es, ca, pe);\n","import {ATTRIBUTE_NODE} from '../shared/constants.js';\nimport {CHANGED, VALUE} from '../shared/symbols.js';\nimport {String, ignoreCase} from '../shared/utils.js';\nimport {attrAsJSON} from '../shared/jsdon.js';\nimport {emptyAttributes} from '../shared/attributes.js';\n\nimport {attributeChangedCallback as moAttributes} from './mutation-observer.js';\nimport {attributeChangedCallback as ceAttributes} from './custom-element-registry.js';\n\nimport {Node} from './node.js';\nimport {escape} from '../shared/text-escaper.js';\n\nconst QUOTE = /\"/g;\n\n/**\n * @implements globalThis.Attr\n */\nexport class Attr extends Node {\n constructor(ownerDocument, name, value = '') {\n super(ownerDocument, name, ATTRIBUTE_NODE);\n this.ownerElement = null;\n this.name = String(name);\n this[VALUE] = String(value);\n this[CHANGED] = false;\n }\n\n get value() { return this[VALUE]; }\n set value(newValue) {\n const {[VALUE]: oldValue, name, ownerElement} = this;\n this[VALUE] = String(newValue);\n this[CHANGED] = true;\n if (ownerElement) {\n moAttributes(ownerElement, name, oldValue);\n ceAttributes(ownerElement, name, oldValue, this[VALUE]);\n }\n }\n\n cloneNode() {\n const {ownerDocument, name, [VALUE]: value} = this;\n return new Attr(ownerDocument, name, value);\n }\n\n toString() {\n const {name, [VALUE]: value} = this;\n if (emptyAttributes.has(name) && !value) {\n return ignoreCase(this) ? name : `${name}=\"\"`;\n }\n const escapedValue = (ignoreCase(this) ? value : escape(value)).replace(QUOTE, '"');\n return `${name}=\"${escapedValue}\"`;\n }\n\n toJSON() {\n const json = [];\n attrAsJSON(this, json);\n return json;\n }\n}\n","import {\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n TEXT_NODE,\n NODE_END\n} from './constants.js';\n\nimport {START, NEXT, PREV} from './symbols.js';\nimport {getEnd} from './utils.js';\n\nexport const isConnected = ({ownerDocument, parentNode}) => {\n while (parentNode) {\n if (parentNode === ownerDocument)\n return true;\n parentNode = parentNode.parentNode || parentNode.host;\n }\n return false;\n};\n\nexport const parentElement = ({parentNode}) => {\n if (parentNode) {\n switch (parentNode.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n return null;\n }\n }\n return parentNode;\n};\n\nexport const previousSibling = ({[PREV]: prev}) => {\n switch (prev ? prev.nodeType : 0) {\n case NODE_END:\n return prev[START];\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n return prev;\n }\n return null;\n};\n\nexport const nextSibling = node => {\n const next = getEnd(node)[NEXT];\n return next && (next.nodeType === NODE_END ? null : next);\n};\n","// https://dom.spec.whatwg.org/#nondocumenttypechildnode\n// CharacterData, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\n\nimport {nextSibling, previousSibling} from '../shared/node.js';\n\nexport const nextElementSibling = node => {\n let next = nextSibling(node);\n while (next && next.nodeType !== ELEMENT_NODE)\n next = nextSibling(next);\n return next;\n};\n\nexport const previousElementSibling = node => {\n let prev = previousSibling(node);\n while (prev && prev.nodeType !== ELEMENT_NODE)\n prev = previousSibling(prev);\n return prev;\n};\n","// https://dom.spec.whatwg.org/#childnode\n// CharacterData, DocumentType, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {disconnectedCallback} from '../interface/custom-element-registry.js';\n\nconst asFragment = (ownerDocument, nodes) => {\n const fragment = ownerDocument.createDocumentFragment();\n fragment.append(...nodes);\n return fragment;\n};\n\nexport const before = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n};\n\nexport const after = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n getEnd(node)[NEXT]\n );\n};\n\nexport const replaceWith = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode) {\n if (nodes.includes(node))\n replaceWith(node, [node = node.cloneNode()]);\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n node.remove();\n }\n};\n\nexport const remove = (prev, current, next) => {\n const {parentNode, nodeType} = current;\n if (prev || next) {\n setAdjacent(prev, next);\n current[PREV] = null;\n getEnd(current)[NEXT] = null;\n }\n if (parentNode) {\n current.parentNode = null;\n moCallback(current, parentNode);\n if (nodeType === ELEMENT_NODE)\n disconnectedCallback(current);\n }\n};\n","// https://dom.spec.whatwg.org/#interface-characterdata\n\nimport {NEXT, PREV, VALUE} from '../shared/symbols.js';\nimport {String} from '../shared/utils.js';\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {characterDataAsJSON} from '../shared/jsdon.js';\n\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\n\nimport {Node} from './node.js';\nimport {moCallback} from './mutation-observer.js';\n\n/**\n * @implements globalThis.CharacterData\n */\nexport class CharacterData extends Node {\n\n constructor(ownerDocument, localName, nodeType, data) {\n super(ownerDocument, localName, nodeType);\n this[VALUE] = String(data);\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[NEXT]); }\n // </Mixins>\n\n // CharacterData only\n /* c8 ignore start */\n get data() { return this[VALUE]; }\n set data(value) {\n this[VALUE] = String(value);\n moCallback(this, this.parentNode);\n }\n\n get nodeValue() { return this.data; }\n set nodeValue(value) { this.data = value; }\n\n get textContent() { return this.data; }\n set textContent(value) { this.data = value; }\n\n get length() { return this.data.length; }\n\n substringData(offset, count) {\n return this.data.substr(offset, count);\n }\n\n appendData(data) {\n this.data += data;\n }\n\n insertData(offset, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset);\n }\n\n deleteData(offset, count) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + t.slice(offset + count);\n }\n\n replaceData(offset, count, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset + count);\n }\n /* c8 ignore stop */\n\n toJSON() {\n const json = [];\n characterDataAsJSON(this, json);\n return json;\n }\n}\n","import {CDATA_SECTION_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.CDATASection\n */\nexport class CDATASection extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#cdatasection', CDATA_SECTION_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new CDATASection(ownerDocument, data);\n }\n\n toString() { return `<![CDATA[${this[VALUE]}]]>`; }\n}\n","import {COMMENT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Comment\n */\nexport class Comment extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#comment', COMMENT_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Comment(ownerDocument, data);\n }\n\n toString() { return `<!--${this[VALUE]}-->`; }\n}\n","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"Attribute\"] = \"attribute\";\n SelectorType[\"Pseudo\"] = \"pseudo\";\n SelectorType[\"PseudoElement\"] = \"pseudo-element\";\n SelectorType[\"Tag\"] = \"tag\";\n SelectorType[\"Universal\"] = \"universal\";\n // Traversals\n SelectorType[\"Adjacent\"] = \"adjacent\";\n SelectorType[\"Child\"] = \"child\";\n SelectorType[\"Descendant\"] = \"descendant\";\n SelectorType[\"Parent\"] = \"parent\";\n SelectorType[\"Sibling\"] = \"sibling\";\n SelectorType[\"ColumnCombinator\"] = \"column-combinator\";\n})(SelectorType || (SelectorType = {}));\n/**\n * Modes for ignore case.\n *\n * This could be updated to an enum, and the object is\n * the current stand-in that will allow code to be updated\n * without big changes.\n */\nexport const IgnoreCaseMode = {\n Unknown: null,\n QuirksMode: \"quirks\",\n IgnoreCase: true,\n CaseSensitive: false,\n};\nexport var AttributeAction;\n(function (AttributeAction) {\n AttributeAction[\"Any\"] = \"any\";\n AttributeAction[\"Element\"] = \"element\";\n AttributeAction[\"End\"] = \"end\";\n AttributeAction[\"Equals\"] = \"equals\";\n AttributeAction[\"Exists\"] = \"exists\";\n AttributeAction[\"Hyphen\"] = \"hyphen\";\n AttributeAction[\"Not\"] = \"not\";\n AttributeAction[\"Start\"] = \"start\";\n})(AttributeAction || (AttributeAction = {}));\n","import { SelectorType, AttributeAction, } from \"./types\";\nconst reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nconst reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nconst actionTypes = new Map([\n [126 /* Tilde */, AttributeAction.Element],\n [94 /* Circumflex */, AttributeAction.Start],\n [36 /* Dollar */, AttributeAction.End],\n [42 /* Asterisk */, AttributeAction.Any],\n [33 /* ExclamationMark */, AttributeAction.Not],\n [124 /* Pipe */, AttributeAction.Hyphen],\n]);\n// Pseudos, whose data property is parsed as well.\nconst unpackPseudos = new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nexport function isTraversal(selector) {\n switch (selector.type) {\n case SelectorType.Adjacent:\n case SelectorType.Child:\n case SelectorType.Descendant:\n case SelectorType.Parent:\n case SelectorType.Sibling:\n case SelectorType.ColumnCombinator:\n return true;\n default:\n return false;\n }\n}\nconst stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n const high = parseInt(escaped, 16) - 0x10000;\n // NaN means non-codepoint\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n}\nfunction isQuote(c) {\n return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;\n}\nfunction isWhitespace(c) {\n return (c === 32 /* Space */ ||\n c === 9 /* Tab */ ||\n c === 10 /* NewLine */ ||\n c === 12 /* FormFeed */ ||\n c === 13 /* CarriageReturn */);\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nexport function parse(selector) {\n const subselects = [];\n const endIndex = parseSelector(subselects, `${selector}`, 0);\n if (endIndex < selector.length) {\n throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);\n }\n return subselects;\n}\nfunction parseSelector(subselects, selector, selectorIndex) {\n let tokens = [];\n function getName(offset) {\n const match = selector.slice(selectorIndex + offset).match(reName);\n if (!match) {\n throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);\n }\n const [name] = match;\n selectorIndex += offset + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset) {\n selectorIndex += offset;\n while (selectorIndex < selector.length &&\n isWhitespace(selector.charCodeAt(selectorIndex))) {\n selectorIndex++;\n }\n }\n function readValueWithParenthesis() {\n selectorIndex += 1;\n const start = selectorIndex;\n let counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter++;\n }\n else if (selector.charCodeAt(selectorIndex) ===\n 41 /* RightParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n return unescapeCSS(selector.slice(start, selectorIndex - 1));\n }\n function isEscaped(pos) {\n let slashCount = 0;\n while (selector.charCodeAt(--pos) === 92 /* BackSlash */)\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n function addTraversal(type) {\n if (tokens.length > 0 &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens[tokens.length - 1].type = type;\n return;\n }\n ensureNotTraversal();\n tokens.push({ type });\n }\n function addSpecialAttribute(name, action) {\n tokens.push({\n type: SelectorType.Attribute,\n name,\n action,\n value: getName(1),\n namespace: null,\n ignoreCase: \"quirks\",\n });\n }\n /**\n * We have finished parsing the current part of the selector.\n *\n * Remove descendant tokens at the end if they exist,\n * and return the last index, so that parsing can be\n * picked up from here.\n */\n function finalizeSubselector() {\n if (tokens.length &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens.pop();\n }\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n }\n stripWhitespace(0);\n if (selector.length === selectorIndex) {\n return selectorIndex;\n }\n loop: while (selectorIndex < selector.length) {\n const firstChar = selector.charCodeAt(selectorIndex);\n switch (firstChar) {\n // Whitespace\n case 32 /* Space */:\n case 9 /* Tab */:\n case 10 /* NewLine */:\n case 12 /* FormFeed */:\n case 13 /* CarriageReturn */: {\n if (tokens.length === 0 ||\n tokens[0].type !== SelectorType.Descendant) {\n ensureNotTraversal();\n tokens.push({ type: SelectorType.Descendant });\n }\n stripWhitespace(1);\n break;\n }\n // Traversals\n case 62 /* GreaterThan */: {\n addTraversal(SelectorType.Child);\n stripWhitespace(1);\n break;\n }\n case 60 /* LessThan */: {\n addTraversal(SelectorType.Parent);\n stripWhitespace(1);\n break;\n }\n case 126 /* Tilde */: {\n addTraversal(SelectorType.Sibling);\n stripWhitespace(1);\n break;\n }\n case 43 /* Plus */: {\n addTraversal(SelectorType.Adjacent);\n stripWhitespace(1);\n break;\n }\n // Special attribute selectors: .class, #id\n case 46 /* Period */: {\n addSpecialAttribute(\"class\", AttributeAction.Element);\n break;\n }\n case 35 /* Hash */: {\n addSpecialAttribute(\"id\", AttributeAction.Equals);\n break;\n }\n case 91 /* LeftSquareBracket */: {\n stripWhitespace(1);\n // Determine attribute name and namespace\n let name;\n let namespace = null;\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {\n // Equivalent to no namespace\n name = getName(1);\n }\n else if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n name = getName(2);\n }\n else {\n name = getName(0);\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n namespace = name;\n name = getName(1);\n }\n }\n stripWhitespace(0);\n // Determine comparison operation\n let action = AttributeAction.Exists;\n const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n }\n else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {\n action = AttributeAction.Equals;\n stripWhitespace(1);\n }\n // Determine value\n let value = \"\";\n let ignoreCase = null;\n if (action !== \"exists\") {\n if (isQuote(selector.charCodeAt(selectorIndex))) {\n const quote = selector.charCodeAt(selectorIndex);\n let sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length &&\n (selector.charCodeAt(sectionEnd) !== quote ||\n isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charCodeAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n }\n else {\n const valueStart = selectorIndex;\n while (selectorIndex < selector.length &&\n ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&\n selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) ||\n isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n // See if we have a force ignore flag\n const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;\n // If the forceIgnore flag is set (either `i` or `s`), use that value\n if (forceIgnore === 115 /* LowerS */) {\n ignoreCase = false;\n stripWhitespace(1);\n }\n else if (forceIgnore === 105 /* LowerI */) {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n if (selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n const attributeSelector = {\n type: SelectorType.Attribute,\n name,\n action,\n value,\n namespace,\n ignoreCase,\n };\n tokens.push(attributeSelector);\n break;\n }\n case 58 /* Colon */: {\n if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {\n tokens.push({\n type: SelectorType.PseudoElement,\n name: getName(2).toLowerCase(),\n data: selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */\n ? readValueWithParenthesis()\n : null,\n });\n continue;\n }\n const name = getName(1).toLowerCase();\n let data = null;\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */) {\n if (unpackPseudos.has(name)) {\n if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n throw new Error(`Pseudo-selector ${name} cannot be quoted`);\n }\n data = [];\n selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n if (selector.charCodeAt(selectorIndex) !==\n 41 /* RightParenthesis */) {\n throw new Error(`Missing closing parenthesis in :${name} (${selector})`);\n }\n selectorIndex += 1;\n }\n else {\n data = readValueWithParenthesis();\n if (stripQuotesFromPseudos.has(name)) {\n const quot = data.charCodeAt(0);\n if (quot === data.charCodeAt(data.length - 1) &&\n isQuote(quot)) {\n data = data.slice(1, -1);\n }\n }\n data = unescapeCSS(data);\n }\n }\n tokens.push({ type: SelectorType.Pseudo, name, data });\n break;\n }\n case 44 /* Comma */: {\n finalizeSubselector();\n tokens = [];\n stripWhitespace(1);\n break;\n }\n default: {\n if (selector.startsWith(\"/*\", selectorIndex)) {\n const endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n // Remove leading whitespace\n if (tokens.length === 0) {\n stripWhitespace(0);\n }\n break;\n }\n let namespace = null;\n let name;\n if (firstChar === 42 /* Asterisk */) {\n selectorIndex += 1;\n name = \"*\";\n }\n else if (firstChar === 124 /* Pipe */) {\n name = \"\";\n if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {\n addTraversal(SelectorType.ColumnCombinator);\n stripWhitespace(2);\n break;\n }\n }\n else if (reName.test(selector.slice(selectorIndex))) {\n name = getName(0);\n }\n else {\n break loop;\n }\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {\n namespace = name;\n if (selector.charCodeAt(selectorIndex + 1) ===\n 42 /* Asterisk */) {\n name = \"*\";\n selectorIndex += 2;\n }\n else {\n name = getName(1);\n }\n }\n tokens.push(name === \"*\"\n ? { type: SelectorType.Universal, namespace }\n : { type: SelectorType.Tag, name, namespace });\n }\n }\n }\n finalizeSubselector();\n return selectorIndex;\n}\n","import { AttributeAction, SelectorType } from \"css-what\";\nconst procedure = new Map([\n [SelectorType.Universal, 50],\n [SelectorType.Tag, 30],\n [SelectorType.Attribute, 1],\n [SelectorType.Pseudo, 0],\n]);\nexport function isTraversal(token) {\n return !procedure.has(token.type);\n}\nconst attributes = new Map([\n [AttributeAction.Exists, 10],\n [AttributeAction.Equals, 8],\n [AttributeAction.Not, 7],\n [AttributeAction.Start, 6],\n [AttributeAction.End, 6],\n [AttributeAction.Any, 5],\n]);\n/**\n * Sort the parts of the passed selector,\n * as there is potential for optimization\n * (some types of selectors are faster than others)\n *\n * @param arr Selector to sort\n */\nexport default function sortByProcedure(arr) {\n const procs = arr.map(getProcedure);\n for (let i = 1; i < arr.length; i++) {\n const procNew = procs[i];\n if (procNew < 0)\n continue;\n for (let j = i - 1; j >= 0 && procNew < procs[j]; j--) {\n const token = arr[j + 1];\n arr[j + 1] = arr[j];\n arr[j] = token;\n procs[j + 1] = procs[j];\n procs[j] = procNew;\n }\n }\n}\nfunction getProcedure(token) {\n var _a, _b;\n let proc = (_a = procedure.get(token.type)) !== null && _a !== void 0 ? _a : -1;\n if (token.type === SelectorType.Attribute) {\n proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4;\n if (token.action === AttributeAction.Equals && token.name === \"id\") {\n // Prefer ID selectors (eg. #ID)\n proc = 9;\n }\n if (token.ignoreCase) {\n /*\n * IgnoreCase adds some overhead, prefer \"normal\" token\n * this is a binary operation, to ensure it's still an int\n */\n proc >>= 1;\n }\n }\n else if (token.type === SelectorType.Pseudo) {\n if (!token.data) {\n proc = 3;\n }\n else if (token.name === \"has\" || token.name === \"contains\") {\n proc = 0; // Expensive in any case\n }\n else if (Array.isArray(token.data)) {\n // Eg. :matches, :not\n proc = Math.min(...token.data.map((d) => Math.min(...d.map(getProcedure))));\n // If we have traversals, try to avoid executing this selector\n if (proc < 0) {\n proc = 0;\n }\n }\n else {\n proc = 2;\n }\n }\n return proc;\n}\n//# sourceMappingURL=sort.js.map","import boolbase from \"boolbase\";\n/**\n * All reserved characters in a regex, used for escaping.\n *\n * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license\n * https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794\n */\nconst reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\nfunction escapeRegex(value) {\n return value.replace(reChars, \"\\\\$&\");\n}\n/**\n * Attributes that are case-insensitive in HTML.\n *\n * @private\n * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors\n */\nconst caseInsensitiveAttributes = new Set([\n \"accept\",\n \"accept-charset\",\n \"align\",\n \"alink\",\n \"axis\",\n \"bgcolor\",\n \"charset\",\n \"checked\",\n \"clear\",\n \"codetype\",\n \"color\",\n \"compact\",\n \"declare\",\n \"defer\",\n \"dir\",\n \"direction\",\n \"disabled\",\n \"enctype\",\n \"face\",\n \"frame\",\n \"hreflang\",\n \"http-equiv\",\n \"lang\",\n \"language\",\n \"link\",\n \"media\",\n \"method\",\n \"multiple\",\n \"nohref\",\n \"noresize\",\n \"noshade\",\n \"nowrap\",\n \"readonly\",\n \"rel\",\n \"rev\",\n \"rules\",\n \"scope\",\n \"scrolling\",\n \"selected\",\n \"shape\",\n \"target\",\n \"text\",\n \"type\",\n \"valign\",\n \"valuetype\",\n \"vlink\",\n]);\nfunction shouldIgnoreCase(selector, options) {\n return typeof selector.ignoreCase === \"boolean\"\n ? selector.ignoreCase\n : selector.ignoreCase === \"quirks\"\n ? !!options.quirksMode\n : !options.xmlMode && caseInsensitiveAttributes.has(selector.name);\n}\n/**\n * Attribute selectors\n */\nexport const attributeRules = {\n equals(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length === value.length &&\n attr.toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) === value && next(elem);\n },\n hyphen(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function hyphenIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return function hyphen(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len) === value &&\n next(elem));\n };\n },\n element(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (/\\s/.test(value)) {\n return boolbase.falseFunc;\n }\n const regex = new RegExp(`(?:^|\\\\s)${escapeRegex(value)}(?:$|\\\\s)`, shouldIgnoreCase(data, options) ? \"i\" : \"\");\n return function element(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n },\n exists(next, { name }, { adapter }) {\n return (elem) => adapter.hasAttrib(elem, name) && next(elem);\n },\n start(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= len &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) &&\n next(elem);\n };\n },\n end(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = -value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n var _a;\n return ((_a = adapter\n .getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem);\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) &&\n next(elem);\n };\n },\n any(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (value === \"\") {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n const regex = new RegExp(escapeRegex(value), \"i\");\n return function anyIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) &&\n next(elem);\n };\n },\n not(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (value === \"\") {\n return (elem) => !!adapter.getAttributeValue(elem, name) && next(elem);\n }\n else if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return ((attr == null ||\n attr.length !== value.length ||\n attr.toLowerCase() !== value) &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) !== value && next(elem);\n },\n};\n//# sourceMappingURL=attributes.js.map","// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\n// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is \" \\t\\r\\n\\f\"\nconst whitespace = new Set([9, 10, 12, 13, 32]);\nconst ZERO = \"0\".charCodeAt(0);\nconst NINE = \"9\".charCodeAt(0);\n/**\n * Parses an expression.\n *\n * @throws An `Error` if parsing fails.\n * @returns An array containing the integer step size and the integer offset of the nth rule.\n * @example nthCheck.parse(\"2n+3\"); // returns [2, 3]\n */\nexport function parse(formula) {\n formula = formula.trim().toLowerCase();\n if (formula === \"even\") {\n return [2, 0];\n }\n else if (formula === \"odd\") {\n return [2, 1];\n }\n // Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\n let idx = 0;\n let a = 0;\n let sign = readSign();\n let number = readNumber();\n if (idx < formula.length && formula.charAt(idx) === \"n\") {\n idx++;\n a = sign * (number !== null && number !== void 0 ? number : 1);\n skipWhitespace();\n if (idx < formula.length) {\n sign = readSign();\n skipWhitespace();\n number = readNumber();\n }\n else {\n sign = number = 0;\n }\n }\n // Throw if there is anything else\n if (number === null || idx < formula.length) {\n throw new Error(`n-th rule couldn't be parsed ('${formula}')`);\n }\n return [a, sign * number];\n function readSign() {\n if (formula.charAt(idx) === \"-\") {\n idx++;\n return -1;\n }\n if (formula.charAt(idx) === \"+\") {\n idx++;\n }\n return 1;\n }\n function readNumber() {\n const start = idx;\n let value = 0;\n while (idx < formula.length &&\n formula.charCodeAt(idx) >= ZERO &&\n formula.charCodeAt(idx) <= NINE) {\n value = value * 10 + (formula.charCodeAt(idx) - ZERO);\n idx++;\n }\n // Return `null` if we didn't read anything.\n return idx === start ? null : value;\n }\n function skipWhitespace() {\n while (idx < formula.length &&\n whitespace.has(formula.charCodeAt(idx))) {\n idx++;\n }\n }\n}\n//# sourceMappingURL=parse.js.map","import { parse } from \"./parse.js\";\nimport { compile, generate } from \"./compile.js\";\nexport { parse, compile, generate };\n/**\n * Parses and compiles a formula to a highly optimized function.\n * Combination of {@link parse} and {@link compile}.\n *\n * If the formula doesn't match any elements,\n * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.\n * Otherwise, a function accepting an _index_ is returned, which returns\n * whether or not the passed _index_ matches the formula.\n *\n * Note: The nth-rule starts counting at `1`, the returned function at `0`.\n *\n * @param formula The formula to compile.\n * @example\n * const check = nthCheck(\"2n+3\");\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n */\nexport default function nthCheck(formula) {\n return compile(parse(formula));\n}\n/**\n * Parses and compiles a formula to a generator that produces a sequence of indices.\n * Combination of {@link parse} and {@link generate}.\n *\n * @param formula The formula to compile.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing</caption>\n *\n * ```js\n * const gen = nthCheck.sequence('2n+3')\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value</caption>\n *\n * ```js\n *\n * const gen = nthCheck.sequence('-2n+5');\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function sequence(formula) {\n return generate(parse(formula));\n}\n//# sourceMappingURL=index.js.map","import boolbase from \"boolbase\";\n/**\n * Returns a function that checks if an elements index matches the given rule\n * highly optimized to return the fastest solution.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A highly optimized function that returns whether an index matches the nth-check.\n * @example\n *\n * ```js\n * const check = nthCheck.compile([2, 3]);\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n * ```\n */\nexport function compile(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n const b = parsed[1] - 1;\n /*\n * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.\n * Besides, the specification states that no elements are\n * matched when `a` and `b` are 0.\n *\n * `b < 0` here as we subtracted 1 from `b` above.\n */\n if (b < 0 && a <= 0)\n return boolbase.falseFunc;\n // When `a` is in the range -1..1, it matches any element (so only `b` is checked).\n if (a === -1)\n return (index) => index <= b;\n if (a === 0)\n return (index) => index === b;\n // When `b <= 0` and `a === 1`, they match any element.\n if (a === 1)\n return b < 0 ? boolbase.trueFunc : (index) => index >= b;\n /*\n * Otherwise, modulo can be used to check if there is a match.\n *\n * Modulo doesn't care about the sign, so let's use `a`s absolute value.\n */\n const absA = Math.abs(a);\n // Get `b mod a`, + a if this is negative.\n const bMod = ((b % absA) + absA) % absA;\n return a > 1\n ? (index) => index >= b && index % absA === bMod\n : (index) => index <= b && index % absA === bMod;\n}\n/**\n * Returns a function that produces a monotonously increasing sequence of indices.\n *\n * If the sequence has an end, the returned function will return `null` after\n * the last index in the sequence.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing (2n+3)</caption>\n *\n * ```js\n * const gen = nthCheck.generate([2, 3])\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value (-2n+10)</caption>\n *\n * ```js\n *\n * const gen = nthCheck.generate([-2, 5]);\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function generate(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n let b = parsed[1] - 1;\n let n = 0;\n // Make sure to always return an increasing sequence\n if (a < 0) {\n const aPos = -a;\n // Get `b mod a`\n const minValue = ((b % aPos) + aPos) % aPos;\n return () => {\n const val = minValue + aPos * n++;\n return val > b ? null : val;\n };\n }\n if (a === 0)\n return b < 0\n ? // There are no result — always return `null`\n () => null\n : // Return `b` exactly once\n () => (n++ === 0 ? b : null);\n if (b < 0) {\n b += a * Math.ceil(-b / a);\n }\n return () => a * n++ + b;\n}\n//# sourceMappingURL=compile.js.map","import getNCheck from \"nth-check\";\nimport boolbase from \"boolbase\";\nfunction getChildFunc(next, adapter) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(elem);\n };\n}\nexport const filters = {\n contains(next, text, { adapter }) {\n return function contains(elem) {\n return next(elem) && adapter.getText(elem).includes(text);\n };\n },\n icontains(next, text, { adapter }) {\n const itext = text.toLowerCase();\n return function icontains(elem) {\n return (next(elem) &&\n adapter.getText(elem).toLowerCase().includes(itext));\n };\n },\n // Location specific methods\n \"nth-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n // TODO determine the actual root element\n root(next, _rule, { adapter }) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return (parent == null || !adapter.isTag(parent)) && next(elem);\n };\n },\n scope(next, rule, options, context) {\n const { equals } = options;\n if (!context || context.length === 0) {\n // Equivalent to :root\n return filters[\"root\"](next, rule, options);\n }\n if (context.length === 1) {\n // NOTE: can't be unpacked, as :has uses this for side-effects\n return (elem) => equals(context[0], elem) && next(elem);\n }\n return (elem) => context.includes(elem) && next(elem);\n },\n hover: dynamicStatePseudo(\"isHovered\"),\n visited: dynamicStatePseudo(\"isVisited\"),\n active: dynamicStatePseudo(\"isActive\"),\n};\n/**\n * Dynamic state pseudos. These depend on optional Adapter methods.\n *\n * @param name The name of the adapter method to call.\n * @returns Pseudo for the `filters` object.\n */\nfunction dynamicStatePseudo(name) {\n return function dynamicPseudo(next, _rule, { adapter }) {\n const func = adapter[name];\n if (typeof func !== \"function\") {\n return boolbase.falseFunc;\n }\n return function active(elem) {\n return func(elem) && next(elem);\n };\n };\n}\n//# sourceMappingURL=filters.js.map","// While filters are precompiled, pseudos get called when they are needed\nexport const pseudos = {\n empty(elem, { adapter }) {\n return !adapter.getChildren(elem).some((elem) => \n // FIXME: `getText` call is potentially expensive.\n adapter.isTag(elem) || adapter.getText(elem) !== \"\");\n },\n \"first-child\"(elem, { adapter, equals }) {\n if (adapter.prevElementSibling) {\n return adapter.prevElementSibling(elem) == null;\n }\n const firstChild = adapter\n .getSiblings(elem)\n .find((elem) => adapter.isTag(elem));\n return firstChild != null && equals(elem, firstChild);\n },\n \"last-child\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n return true;\n if (adapter.isTag(siblings[i]))\n break;\n }\n return false;\n },\n \"first-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"last-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"only-of-type\"(elem, { adapter, equals }) {\n const elemName = adapter.getName(elem);\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) ||\n !adapter.isTag(sibling) ||\n adapter.getName(sibling) !== elemName);\n },\n \"only-child\"(elem, { adapter, equals }) {\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) || !adapter.isTag(sibling));\n },\n};\nexport function verifyPseudoArgs(func, name, subselect, argIndex) {\n if (subselect === null) {\n if (func.length > argIndex) {\n throw new Error(`Pseudo-class :${name} requires an argument`);\n }\n }\n else if (func.length === argIndex) {\n throw new Error(`Pseudo-class :${name} doesn't have any arguments`);\n }\n}\n//# sourceMappingURL=pseudos.js.map","/**\n * Aliases are pseudos that are expressed as selectors.\n */\nexport const aliases = {\n // Links\n \"any-link\": \":is(a, area, link)[href]\",\n link: \":any-link:not(:visited)\",\n // Forms\n // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements\n disabled: `:is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )`,\n enabled: \":not(:disabled)\",\n checked: \":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)\",\n required: \":is(input, select, textarea)[required]\",\n optional: \":is(input, select, textarea):not([required])\",\n // JQuery extensions\n // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness\n selected: \"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)\",\n checkbox: \"[type=checkbox]\",\n file: \"[type=file]\",\n password: \"[type=password]\",\n radio: \"[type=radio]\",\n reset: \"[type=reset]\",\n image: \"[type=image]\",\n submit: \"[type=submit]\",\n parent: \":not(:empty)\",\n header: \":is(h1, h2, h3, h4, h5, h6)\",\n button: \":is(button, input[type=button])\",\n input: \":is(input, textarea, select, button)\",\n text: \"input:is(:not([type!='']), [type=text])\",\n};\n//# sourceMappingURL=aliases.js.map","import boolbase from \"boolbase\";\nimport { isTraversal } from \"../sort.js\";\n/** Used as a placeholder for :has. Will be replaced with the actual element. */\nexport const PLACEHOLDER_ELEMENT = {};\nexport function ensureIsTag(next, adapter) {\n if (next === boolbase.falseFunc)\n return boolbase.falseFunc;\n return (elem) => adapter.isTag(elem) && next(elem);\n}\nexport function getNextSiblings(elem, adapter) {\n const siblings = adapter.getSiblings(elem);\n if (siblings.length <= 1)\n return [];\n const elemIndex = siblings.indexOf(elem);\n if (elemIndex < 0 || elemIndex === siblings.length - 1)\n return [];\n return siblings.slice(elemIndex + 1).filter(adapter.isTag);\n}\nfunction copyOptions(options) {\n // Not copied: context, rootFunc\n return {\n xmlMode: !!options.xmlMode,\n lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,\n lowerCaseTags: !!options.lowerCaseTags,\n quirksMode: !!options.quirksMode,\n cacheResults: !!options.cacheResults,\n pseudos: options.pseudos,\n adapter: options.adapter,\n equals: options.equals,\n };\n}\nconst is = (next, token, options, context, compileToken) => {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.trueFunc\n ? next\n : func === boolbase.falseFunc\n ? boolbase.falseFunc\n : (elem) => func(elem) && next(elem);\n};\n/*\n * :not, :has, :is, :matches and :where have to compile selectors\n * doing this in src/pseudos.ts would lead to circular dependencies,\n * so we add them here\n */\nexport const subselects = {\n is,\n /**\n * `:matches` and `:where` are aliases for `:is`.\n */\n matches: is,\n where: is,\n not(next, token, options, context, compileToken) {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.falseFunc\n ? next\n : func === boolbase.trueFunc\n ? boolbase.falseFunc\n : (elem) => !func(elem) && next(elem);\n },\n has(next, subselect, options, _context, compileToken) {\n const { adapter } = options;\n const opts = copyOptions(options);\n opts.relativeSelector = true;\n const context = subselect.some((s) => s.some(isTraversal))\n ? // Used as a placeholder. Will be replaced with the actual element.\n [PLACEHOLDER_ELEMENT]\n : undefined;\n const compiled = compileToken(subselect, opts, context);\n if (compiled === boolbase.falseFunc)\n return boolbase.falseFunc;\n const hasElement = ensureIsTag(compiled, adapter);\n // If `compiled` is `trueFunc`, we can skip this.\n if (context && compiled !== boolbase.trueFunc) {\n /*\n * `shouldTestNextSiblings` will only be true if the query starts with\n * a traversal (sibling or adjacent). That means we will always have a context.\n */\n const { shouldTestNextSiblings = false } = compiled;\n return (elem) => {\n if (!next(elem))\n return false;\n context[0] = elem;\n const childs = adapter.getChildren(elem);\n const nextElements = shouldTestNextSiblings\n ? [...childs, ...getNextSiblings(elem, adapter)]\n : childs;\n return adapter.existsOne(hasElement, nextElements);\n };\n }\n return (elem) => next(elem) &&\n adapter.existsOne(hasElement, adapter.getChildren(elem));\n },\n};\n//# sourceMappingURL=subselects.js.map","import { attributeRules } from \"./attributes.js\";\nimport { compilePseudoSelector } from \"./pseudo-selectors/index.js\";\nimport { SelectorType } from \"css-what\";\nfunction getElementParent(node, adapter) {\n const parent = adapter.getParent(node);\n if (parent && adapter.isTag(parent)) {\n return parent;\n }\n return null;\n}\n/*\n * All available rules\n */\nexport function compileGeneralSelector(next, selector, options, context, compileToken) {\n const { adapter, equals } = options;\n switch (selector.type) {\n case SelectorType.PseudoElement: {\n throw new Error(\"Pseudo-elements are not supported by css-select\");\n }\n case SelectorType.ColumnCombinator: {\n throw new Error(\"Column combinators are not yet supported by css-select\");\n }\n case SelectorType.Attribute: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced attributes are not yet supported by css-select\");\n }\n if (!options.xmlMode || options.lowerCaseAttributeNames) {\n selector.name = selector.name.toLowerCase();\n }\n return attributeRules[selector.action](next, selector, options);\n }\n case SelectorType.Pseudo: {\n return compilePseudoSelector(next, selector, options, context, compileToken);\n }\n // Tags\n case SelectorType.Tag: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced tag names are not yet supported by css-select\");\n }\n let { name } = selector;\n if (!options.xmlMode || options.lowerCaseTags) {\n name = name.toLowerCase();\n }\n return function tag(elem) {\n return adapter.getName(elem) === name && next(elem);\n };\n }\n // Traversal\n case SelectorType.Descendant: {\n if (options.cacheResults === false ||\n typeof WeakSet === \"undefined\") {\n return function descendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (next(current)) {\n return true;\n }\n }\n return false;\n };\n }\n // @ts-expect-error `ElementNode` is not extending object\n const isFalseCache = new WeakSet();\n return function cachedDescendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (!isFalseCache.has(current)) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n isFalseCache.add(current);\n }\n }\n return false;\n };\n }\n case \"_flexibleDescendant\": {\n // Include element itself, only used while querying an array\n return function flexibleDescendant(elem) {\n let current = elem;\n do {\n if (next(current))\n return true;\n } while ((current = getElementParent(current, adapter)));\n return false;\n };\n }\n case SelectorType.Parent: {\n return function parent(elem) {\n return adapter\n .getChildren(elem)\n .some((elem) => adapter.isTag(elem) && next(elem));\n };\n }\n case SelectorType.Child: {\n return function child(elem) {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(parent);\n };\n }\n case SelectorType.Sibling: {\n return function sibling(elem) {\n const siblings = adapter.getSiblings(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && next(currentSibling)) {\n return true;\n }\n }\n return false;\n };\n }\n case SelectorType.Adjacent: {\n if (adapter.prevElementSibling) {\n return function adjacent(elem) {\n const previous = adapter.prevElementSibling(elem);\n return previous != null && next(previous);\n };\n }\n return function adjacent(elem) {\n const siblings = adapter.getSiblings(elem);\n let lastElement;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling)) {\n lastElement = currentSibling;\n }\n }\n return !!lastElement && next(lastElement);\n };\n }\n case SelectorType.Universal: {\n if (selector.namespace != null && selector.namespace !== \"*\") {\n throw new Error(\"Namespaced universal selectors are not yet supported by css-select\");\n }\n return next;\n }\n }\n}\n//# sourceMappingURL=general.js.map","import { parse } from \"css-what\";\nimport { filters } from \"./filters.js\";\nimport { pseudos, verifyPseudoArgs } from \"./pseudos.js\";\nimport { aliases } from \"./aliases.js\";\nimport { subselects } from \"./subselects.js\";\nexport { filters, pseudos, aliases };\nexport function compilePseudoSelector(next, selector, options, context, compileToken) {\n var _a;\n const { name, data } = selector;\n if (Array.isArray(data)) {\n if (!(name in subselects)) {\n throw new Error(`Unknown pseudo-class :${name}(${data})`);\n }\n return subselects[name](next, data, options, context, compileToken);\n }\n const userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];\n const stringPseudo = typeof userPseudo === \"string\" ? userPseudo : aliases[name];\n if (typeof stringPseudo === \"string\") {\n if (data != null) {\n throw new Error(`Pseudo ${name} doesn't have any arguments`);\n }\n // The alias has to be parsed here, to make sure options are respected.\n const alias = parse(stringPseudo);\n return subselects[\"is\"](next, alias, options, context, compileToken);\n }\n if (typeof userPseudo === \"function\") {\n verifyPseudoArgs(userPseudo, name, data, 1);\n return (elem) => userPseudo(elem, data) && next(elem);\n }\n if (name in filters) {\n return filters[name](next, data, options, context);\n }\n if (name in pseudos) {\n const pseudo = pseudos[name];\n verifyPseudoArgs(pseudo, name, data, 2);\n return (elem) => pseudo(elem, options, data) && next(elem);\n }\n throw new Error(`Unknown pseudo-class :${name}`);\n}\n//# sourceMappingURL=index.js.map","import { parse, SelectorType } from \"css-what\";\nimport boolbase from \"boolbase\";\nimport sortRules, { isTraversal } from \"./sort.js\";\nimport { compileGeneralSelector } from \"./general.js\";\nimport { ensureIsTag, PLACEHOLDER_ELEMENT, } from \"./pseudo-selectors/subselects.js\";\n/**\n * Compiles a selector to an executable function.\n *\n * @param selector Selector to compile.\n * @param options Compilation options.\n * @param context Optional context for the selector.\n */\nexport function compile(selector, options, context) {\n const next = compileUnsafe(selector, options, context);\n return ensureIsTag(next, options.adapter);\n}\nexport function compileUnsafe(selector, options, context) {\n const token = typeof selector === \"string\" ? parse(selector) : selector;\n return compileToken(token, options, context);\n}\nfunction includesScopePseudo(t) {\n return (t.type === SelectorType.Pseudo &&\n (t.name === \"scope\" ||\n (Array.isArray(t.data) &&\n t.data.some((data) => data.some(includesScopePseudo)))));\n}\nconst DESCENDANT_TOKEN = { type: SelectorType.Descendant };\nconst FLEXIBLE_DESCENDANT_TOKEN = {\n type: \"_flexibleDescendant\",\n};\nconst SCOPE_TOKEN = {\n type: SelectorType.Pseudo,\n name: \"scope\",\n data: null,\n};\n/*\n * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector\n * http://www.w3.org/TR/selectors4/#absolutizing\n */\nfunction absolutize(token, { adapter }, context) {\n // TODO Use better check if the context is a document\n const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => {\n const parent = adapter.isTag(e) && adapter.getParent(e);\n return e === PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));\n }));\n for (const t of token) {\n if (t.length > 0 &&\n isTraversal(t[0]) &&\n t[0].type !== SelectorType.Descendant) {\n // Don't continue in else branch\n }\n else if (hasContext && !t.some(includesScopePseudo)) {\n t.unshift(DESCENDANT_TOKEN);\n }\n else {\n continue;\n }\n t.unshift(SCOPE_TOKEN);\n }\n}\nexport function compileToken(token, options, context) {\n var _a;\n token.forEach(sortRules);\n context = (_a = options.context) !== null && _a !== void 0 ? _a : context;\n const isArrayContext = Array.isArray(context);\n const finalContext = context && (Array.isArray(context) ? context : [context]);\n // Check if the selector is relative\n if (options.relativeSelector !== false) {\n absolutize(token, options, finalContext);\n }\n else if (token.some((t) => t.length > 0 && isTraversal(t[0]))) {\n throw new Error(\"Relative selectors are not allowed when the `relativeSelector` option is disabled\");\n }\n let shouldTestNextSiblings = false;\n const query = token\n .map((rules) => {\n if (rules.length >= 2) {\n const [first, second] = rules;\n if (first.type !== SelectorType.Pseudo ||\n first.name !== \"scope\") {\n // Ignore\n }\n else if (isArrayContext &&\n second.type === SelectorType.Descendant) {\n rules[1] = FLEXIBLE_DESCENDANT_TOKEN;\n }\n else if (second.type === SelectorType.Adjacent ||\n second.type === SelectorType.Sibling) {\n shouldTestNextSiblings = true;\n }\n }\n return compileRules(rules, options, finalContext);\n })\n .reduce(reduceRules, boolbase.falseFunc);\n query.shouldTestNextSiblings = shouldTestNextSiblings;\n return query;\n}\nfunction compileRules(rules, options, context) {\n var _a;\n return rules.reduce((previous, rule) => previous === boolbase.falseFunc\n ? boolbase.falseFunc\n : compileGeneralSelector(previous, rule, options, context, compileToken), (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase.trueFunc);\n}\nfunction reduceRules(a, b) {\n if (b === boolbase.falseFunc || a === boolbase.trueFunc) {\n return a;\n }\n if (a === boolbase.falseFunc || b === boolbase.trueFunc) {\n return b;\n }\n return function combine(elem) {\n return a(elem) || b(elem);\n };\n}\n//# sourceMappingURL=compile.js.map","import * as DomUtils from \"domutils\";\nimport boolbase from \"boolbase\";\nimport { compile as compileRaw, compileUnsafe, compileToken, } from \"./compile.js\";\nimport { getNextSiblings } from \"./pseudo-selectors/subselects.js\";\nconst defaultEquals = (a, b) => a === b;\nconst defaultOptions = {\n adapter: DomUtils,\n equals: defaultEquals,\n};\nfunction convertOptionFormats(options) {\n var _a, _b, _c, _d;\n /*\n * We force one format of options to the other one.\n */\n // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.\n const opts = options !== null && options !== void 0 ? options : defaultOptions;\n // @ts-expect-error Same as above.\n (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);\n // @ts-expect-error `equals` does not exist on `Options`\n (_b = opts.equals) !== null && _b !== void 0 ? _b : (opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals);\n return opts;\n}\nfunction wrapCompile(func) {\n return function addAdapter(selector, options, context) {\n const opts = convertOptionFormats(options);\n return func(selector, opts, context);\n };\n}\n/**\n * Compiles the query, returns a function.\n */\nexport const compile = wrapCompile(compileRaw);\nexport const _compileUnsafe = wrapCompile(compileUnsafe);\nexport const _compileToken = wrapCompile(compileToken);\nfunction getSelectorFunc(searchFunc) {\n return function select(query, elements, options) {\n const opts = convertOptionFormats(options);\n if (typeof query !== \"function\") {\n query = compileUnsafe(query, opts, elements);\n }\n const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);\n return searchFunc(query, filteredElements, opts);\n };\n}\nexport function prepareContext(elems, adapter, shouldTestNextSiblings = false) {\n /*\n * Add siblings if the query requires them.\n * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692\n */\n if (shouldTestNextSiblings) {\n elems = appendNextSiblings(elems, adapter);\n }\n return Array.isArray(elems)\n ? adapter.removeSubsets(elems)\n : adapter.getChildren(elems);\n}\nfunction appendNextSiblings(elem, adapter) {\n // Order matters because jQuery seems to check the children before the siblings\n const elems = Array.isArray(elem) ? elem.slice(0) : [elem];\n const elemsLength = elems.length;\n for (let i = 0; i < elemsLength; i++) {\n const nextSiblings = getNextSiblings(elems[i], adapter);\n elems.push(...nextSiblings);\n }\n return elems;\n}\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns All matching elements.\n *\n */\nexport const selectAll = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? []\n : options.adapter.findAll(query, elems));\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns the first match, or null if there was no match.\n */\nexport const selectOne = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? null\n : options.adapter.findOne(query, elems));\n/**\n * Tests whether or not an element is matched by query.\n *\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elem The element to test if it matches the query.\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns\n */\nexport function is(elem, query, options) {\n const opts = convertOptionFormats(options);\n return (typeof query === \"function\" ? query : compileRaw(query, opts))(elem);\n}\n/**\n * Alias for selectAll(query, elems, options).\n * @see [compile] for supported selector queries.\n */\nexport default selectAll;\n// Export filters, pseudos and aliases to allow users to supply their own.\n/** @deprecated Use the `pseudos` option instead. */\nexport { filters, pseudos, aliases } from \"./pseudo-selectors/index.js\";\n//# sourceMappingURL=index.js.map","import * as CSSselect from 'css-select';\n\nimport {ELEMENT_NODE, TEXT_NODE} from './constants.js';\nimport {ignoreCase} from './utils.js';\n\nconst {isArray} = Array;\n\n/* c8 ignore start */\nconst isTag = ({nodeType}) => nodeType === ELEMENT_NODE;\n\nconst existsOne = (test, elements) => elements.some(\n element => isTag(element) && (\n test(element) ||\n existsOne(test, getChildren(element))\n )\n);\n\nconst getAttributeValue = (element, name) => name === 'class' ?\n element.classList.value : element.getAttribute(name);\n\nconst getChildren = ({childNodes}) => childNodes;\n\nconst getName = (element) => {\n const {localName} = element;\n return ignoreCase(element) ? localName.toLowerCase() : localName;\n};\n\nconst getParent = ({parentNode}) => parentNode;\n\nconst getSiblings = element => {\n const {parentNode} = element;\n return parentNode ? getChildren(parentNode) : element;\n};\n\nconst getText = node => {\n if (isArray(node))\n return node.map(getText).join('');\n if (isTag(node))\n return getText(getChildren(node));\n if (node.nodeType === TEXT_NODE)\n return node.data;\n return '';\n};\n\nconst hasAttrib = (element, name) => element.hasAttribute(name);\n\nconst removeSubsets = nodes => {\n let {length} = nodes;\n while (length--) {\n const node = nodes[length];\n if (length && -1 < nodes.lastIndexOf(node, length - 1)) {\n nodes.splice(length, 1);\n continue;\n }\n for (let {parentNode} = node; parentNode; parentNode = parentNode.parentNode) {\n if (nodes.includes(parentNode)) {\n nodes.splice(length, 1);\n break;\n }\n }\n }\n return nodes;\n};\n\nconst findAll = (test, nodes) => {\n const matches = [];\n for (const node of nodes) {\n if (isTag(node)) {\n if (test(node))\n matches.push(node);\n matches.push(...findAll(test, getChildren(node)));\n }\n }\n return matches;\n};\n\nconst findOne = (test, nodes) => {\n for (let node of nodes)\n if (test(node) || (node = findOne(test, getChildren(node))))\n return node;\n return null;\n};\n/* c8 ignore stop */\n\nconst adapter = {\n isTag,\n existsOne,\n getAttributeValue,\n getChildren,\n getName,\n getParent,\n getSiblings,\n getText,\n hasAttrib,\n removeSubsets,\n findAll,\n findOne\n};\n\nexport const prepareMatch = (element, selectors) => CSSselect.compile(\n selectors,\n {\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n\nexport const matches = (element, selectors) => CSSselect.is(\n element,\n selectors,\n {\n strict: true,\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n","import {TEXT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\nimport {escape} from '../shared/text-escaper.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Text\n */\nexport class Text extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#text', TEXT_NODE, data);\n }\n\n get wholeText() {\n const text = [];\n let {previousSibling, nextSibling} = this;\n while (previousSibling) {\n if (previousSibling.nodeType === TEXT_NODE)\n text.unshift(previousSibling[VALUE]);\n else\n break;\n previousSibling = previousSibling.previousSibling;\n }\n text.push(this[VALUE]);\n while (nextSibling) {\n if (nextSibling.nodeType === TEXT_NODE)\n text.push(nextSibling[VALUE]);\n else\n break;\n nextSibling = nextSibling.nextSibling;\n }\n return text.join('');\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Text(ownerDocument, data);\n }\n\n toString() { return escape(this[VALUE]); }\n}\n","// https://dom.spec.whatwg.org/#interface-parentnode\n// Document, DocumentFragment, Element\n\nimport {\n ATTRIBUTE_NODE,\n DOCUMENT_FRAGMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n NODE_END,\n CDATA_SECTION_NODE,\n COMMENT_NODE\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT, PREV, START, VALUE} from '../shared/symbols.js';\n\nimport {prepareMatch} from '../shared/matches.js';\nimport {previousSibling, nextSibling} from '../shared/node.js';\nimport {getEnd, knownAdjacent, knownBoundaries, knownSegment, knownSiblings, localCase} from '../shared/utils.js';\n\nimport {Node} from '../interface/node.js';\nimport {Text} from '../interface/text.js';\nimport {NodeList} from '../interface/node-list.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {connectedCallback} from '../interface/custom-element-registry.js';\n\nimport {nextElementSibling} from './non-document-type-child-node.js';\n\nconst isNode = node => node instanceof Node;\n\nconst insert = (parentNode, child, nodes) => {\n const {ownerDocument} = parentNode;\n for (const node of nodes)\n parentNode.insertBefore(\n isNode(node) ? node : new Text(ownerDocument, node),\n child\n );\n};\n\n/** @typedef { import('../interface/element.js').Element & {\n [typeof NEXT]: NodeStruct,\n [typeof PREV]: NodeStruct,\n [typeof START]: NodeStruct,\n nodeType: typeof ATTRIBUTE_NODE | typeof DOCUMENT_FRAGMENT_NODE | typeof ELEMENT_NODE | typeof TEXT_NODE | typeof NODE_END | typeof COMMENT_NODE | typeof CDATA_SECTION_NODE,\n ownerDocument: Document,\n parentNode: ParentNode,\n}} NodeStruct */\n\nexport class ParentNode extends Node {\n constructor(ownerDocument, localName, nodeType) {\n super(ownerDocument, localName, nodeType);\n this[PRIVATE] = null;\n /** @type {NodeStruct} */\n this[NEXT] = this[END] = {\n [NEXT]: null,\n [PREV]: this,\n [START]: this,\n nodeType: NODE_END,\n ownerDocument: this.ownerDocument,\n parentNode: null\n };\n }\n\n get childNodes() {\n const childNodes = new NodeList;\n let {firstChild} = this;\n while (firstChild) {\n childNodes.push(firstChild);\n firstChild = nextSibling(firstChild);\n }\n return childNodes;\n }\n\n get children() {\n const children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n children.push(firstElementChild);\n firstElementChild = nextElementSibling(firstElementChild);\n }\n return children;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstChild() {\n let {[NEXT]: next, [END]: end} = this;\n while (next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n return next === end ? null : next;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstElementChild() {\n let {firstChild} = this;\n while (firstChild) {\n if (firstChild.nodeType === ELEMENT_NODE)\n return firstChild;\n firstChild = nextSibling(firstChild);\n }\n return null;\n }\n\n get lastChild() {\n const prev = this[END][PREV];\n switch (prev.nodeType) {\n case NODE_END:\n return prev[START];\n case ATTRIBUTE_NODE:\n return null;\n }\n return prev === this ? null : prev;\n }\n\n get lastElementChild() {\n let {lastChild} = this;\n while (lastChild) {\n if (lastChild.nodeType === ELEMENT_NODE)\n return lastChild;\n lastChild = previousSibling(lastChild);\n }\n return null;\n }\n\n get childElementCount() {\n return this.children.length;\n }\n\n prepend(...nodes) {\n insert(this, this.firstChild, nodes);\n }\n\n append(...nodes) {\n insert(this, this[END], nodes);\n }\n\n replaceChildren(...nodes) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end && next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n while (next !== end) {\n const after = getEnd(next)[NEXT];\n next.remove();\n next = after;\n }\n if (nodes.length)\n insert(this, end, nodes);\n }\n\n getElementsByClassName(className) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (\n next.nodeType === ELEMENT_NODE &&\n next.hasAttribute('class') &&\n next.classList.has(className)\n )\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n getElementsByTagName(tagName) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && (\n next.localName === tagName ||\n localCase(next) === tagName\n ))\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n querySelector(selectors) {\n const matches = prepareMatch(this, selectors);\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n return next;\n next = next.nodeType === ELEMENT_NODE && next.localName === 'template' ? next[END] : next[NEXT];\n }\n return null;\n }\n\n querySelectorAll(selectors) {\n const matches = prepareMatch(this, selectors);\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n elements.push(next);\n next = next.nodeType === ELEMENT_NODE && next.localName === 'template' ? next[END] : next[NEXT];\n }\n return elements;\n }\n\n appendChild(node) {\n return this.insertBefore(node, this[END]);\n }\n\n contains(node) {\n let parentNode = node;\n while (parentNode && parentNode !== this)\n parentNode = parentNode.parentNode;\n return parentNode === this;\n }\n\n insertBefore(node, before = null) {\n if (node === before)\n return node;\n if (node === this)\n throw new Error('unable to append a node to itself');\n const next = before || this[END];\n switch (node.nodeType) {\n case ELEMENT_NODE:\n node.remove();\n node.parentNode = this;\n knownBoundaries(next[PREV], node, next);\n moCallback(node, null);\n connectedCallback(node);\n break;\n case DOCUMENT_FRAGMENT_NODE: {\n let {[PRIVATE]: parentNode, firstChild, lastChild} = node;\n if (firstChild) {\n knownSegment(next[PREV], firstChild, lastChild, next);\n knownAdjacent(node, node[END]);\n if (parentNode)\n parentNode.replaceChildren();\n do {\n firstChild.parentNode = this;\n moCallback(firstChild, null);\n if (firstChild.nodeType === ELEMENT_NODE)\n connectedCallback(firstChild);\n } while (\n firstChild !== lastChild &&\n (firstChild = nextSibling(firstChild))\n );\n }\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n node.remove();\n /* eslint no-fallthrough:0 */\n // this covers DOCUMENT_TYPE_NODE too\n default:\n node.parentNode = this;\n knownSiblings(next[PREV], node, next);\n moCallback(node, null);\n break;\n }\n return node;\n }\n\n normalize() {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n const {[NEXT]: $next, [PREV]: $prev, nodeType} = next;\n if (nodeType === TEXT_NODE) {\n if (!next[VALUE])\n next.remove();\n else if ($prev && $prev.nodeType === TEXT_NODE) {\n $prev.textContent += next.textContent;\n next.remove();\n }\n }\n next = $next;\n }\n }\n\n removeChild(node) {\n if (node.parentNode !== this)\n throw new Error('node is not a child');\n node.remove();\n return node;\n }\n\n replaceChild(node, replaced) {\n const next = getEnd(replaced)[NEXT];\n replaced.remove();\n this.insertBefore(node, next);\n return replaced;\n }\n}\n","// https://dom.spec.whatwg.org/#interface-nonelementparentnode\n// Document, DocumentFragment\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT} from '../shared/symbols.js';\nimport {nonElementAsJSON} from '../shared/jsdon.js';\n\nimport {ParentNode} from './parent-node.js';\n\nexport class NonElementParentNode extends ParentNode {\n getElementById(id) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && next.id === id)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n cloneNode(deep) {\n const {ownerDocument, constructor} = this;\n const nonEPN = new constructor(ownerDocument);\n if (deep) {\n const {[END]: end} = nonEPN;\n for (const node of this.childNodes)\n nonEPN.insertBefore(node.cloneNode(deep), end);\n }\n return nonEPN; \n }\n\n toString() {\n const {childNodes, localName} = this;\n return `<${localName}>${childNodes.join('')}</${localName}>`;\n }\n\n toJSON() {\n const json = [];\n nonElementAsJSON(this, json);\n return json;\n }\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.DocumentFragment\n */\nexport class DocumentFragment extends NonElementParentNode {\n constructor(ownerDocument) {\n super(ownerDocument, '#document-fragment', DOCUMENT_FRAGMENT_NODE);\n }\n}\n","import {DOCUMENT_TYPE_NODE} from '../shared/constants.js';\nimport {documentTypeAsJSON} from '../shared/jsdon.js';\n\nimport {Node} from './node.js';\n\n/**\n * @implements globalThis.DocumentType\n */\nexport class DocumentType extends Node {\n constructor(ownerDocument, name, publicId = '', systemId = '') {\n super(ownerDocument, '#document-type', DOCUMENT_TYPE_NODE);\n this.name = name;\n this.publicId = publicId;\n this.systemId = systemId;\n }\n\n cloneNode() {\n const {ownerDocument, name, publicId, systemId} = this;\n return new DocumentType(ownerDocument, name, publicId, systemId);\n }\n\n toString() {\n const {name, publicId, systemId} = this;\n const hasPublic = 0 < publicId.length;\n const str = [name];\n if (hasPublic)\n str.push('PUBLIC', `\"${publicId}\"`);\n if (systemId.length) {\n if (!hasPublic)\n str.push('SYSTEM');\n str.push(`\"${systemId}\"`);\n }\n return `<!DOCTYPE ${str.join(' ')}>`;\n }\n\n toJSON() {\n const json = [];\n documentTypeAsJSON(this, json);\n return json;\n }\n}\n","import {ELEMENT_NODE, DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {CUSTOM_ELEMENTS} from '../shared/symbols.js';\nimport {parseFromString} from '../shared/parse-from-string.js';\nimport {ignoreCase} from '../shared/utils.js';\n\n\n/**\n * @param {Node} node\n * @returns {String}\n */\nexport const getInnerHtml = node => node.childNodes.join('');\n\n/**\n * @param {Node} node\n * @param {String} html\n */\nexport const setInnerHtml = (node, html) => {\n const {ownerDocument} = node;\n const {constructor} = ownerDocument;\n const document = new constructor;\n document[CUSTOM_ELEMENTS] = ownerDocument[CUSTOM_ELEMENTS];\n const {childNodes} = parseFromString(document, ignoreCase(node), html);\n\n node.replaceChildren(...childNodes.map(setOwnerDocument, ownerDocument));\n};\n\nfunction setOwnerDocument(node) {\n node.ownerDocument = this;\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n node.childNodes.forEach(setOwnerDocument, this);\n break;\n }\n return node;\n}\n","export default camel => camel.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g, '$2$5-$3$6')\n .toLowerCase();\n","import uhyphen from 'uhyphen';\nimport {setPrototypeOf} from '../shared/object.js';\n\nconst refs = new WeakMap;\n\nconst key = name => `data-${uhyphen(name)}`;\nconst prop = name => name.slice(5).replace(/-([a-z])/g, (_, $1) => $1.toUpperCase());\n\nconst handler = {\n get(dataset, name) {\n if (name in dataset)\n return refs.get(dataset).getAttribute(key(name));\n },\n\n set(dataset, name, value) {\n dataset[name] = value;\n refs.get(dataset).setAttribute(key(name), value);\n return true;\n },\n\n deleteProperty(dataset, name) {\n if (name in dataset)\n refs.get(dataset).removeAttribute(key(name));\n return delete dataset[name];\n }\n};\n\n/**\n * @implements globalThis.DOMStringMap\n */\nexport class DOMStringMap {\n /**\n * @param {Element} ref\n */\n constructor(ref) {\n for (const {name, value} of ref.attributes) {\n if (/^data-/.test(name))\n this[prop(name)] = value;\n }\n refs.set(this, ref);\n return new Proxy(this, handler);\n }\n}\n\nsetPrototypeOf(DOMStringMap.prototype, null);\n","import {OWNER_ELEMENT} from '../shared/symbols.js';\nimport {setAttribute} from '../shared/attributes.js';\n\nimport {Attr} from '../interface/attr.js';\n\nconst {add} = Set.prototype;\nconst addTokens = (self, tokens) => {\n for (const token of tokens) {\n if (token)\n add.call(self, token);\n }\n};\n\nconst update = ({[OWNER_ELEMENT]: ownerElement, value}) => {\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n attribute.value = value;\n else\n setAttribute(\n ownerElement,\n new Attr(ownerElement.ownerDocument, 'class', value)\n );\n};\n\n/**\n * @implements globalThis.DOMTokenList\n */\nexport class DOMTokenList extends Set {\n\n constructor(ownerElement) {\n super();\n this[OWNER_ELEMENT] = ownerElement;\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n addTokens(this, attribute.value.split(/\\s+/));\n }\n\n get length() { return this.size; }\n\n get value() { return [...this].join(' '); }\n\n /**\n * @param {...string} tokens\n */\n add(...tokens) {\n addTokens(this, tokens);\n update(this);\n }\n\n /**\n * @param {string} token\n */\n contains(token) { return this.has(token); }\n\n /**\n * @param {...string} tokens\n */\n remove(...tokens) {\n for (const token of tokens)\n this.delete(token);\n update(this);\n }\n\n /**\n * @param {string} token\n * @param {boolean?} force\n */\n toggle(token, force) {\n if (this.has(token)) {\n if (force)\n return true;\n this.delete(token);\n update(this);\n }\n else if (force || arguments.length === 1) {\n super.add(token);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n * @param {string} newToken\n */\n replace(token, newToken) {\n if (this.has(token)) {\n this.delete(token);\n super.add(newToken);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n */\n supports() { return true; }\n}\n","import uhyphen from 'uhyphen';\n\nimport {CHANGED, PRIVATE, VALUE} from '../shared/symbols.js';\n\nconst refs = new WeakMap;\n\nconst getKeys = style => [...style.keys()].filter(key => key !== PRIVATE);\n\nconst updateKeys = style => {\n const attr = refs.get(style).getAttributeNode('style');\n if (!attr || attr[CHANGED] || style.get(PRIVATE) !== attr) {\n style.clear();\n if (attr) {\n style.set(PRIVATE, attr);\n for (const rule of attr[VALUE].split(/\\s*;\\s*/)) {\n let [key, ...rest] = rule.split(':');\n if (rest.length > 0) {\n key = key.trim();\n const value = rest.join(':').trim();\n if (key && value)\n style.set(key, value);\n }\n }\n }\n }\n return attr;\n};\n\nconst handler = {\n get(style, name) {\n if (name in prototype)\n return style[name];\n updateKeys(style);\n if (name === 'length')\n return getKeys(style).length;\n if (/^\\d+$/.test(name))\n return getKeys(style)[name];\n return style.get(uhyphen(name));\n },\n\n set(style, name, value) {\n if (name === 'cssText')\n style[name] = value;\n else {\n let attr = updateKeys(style);\n if (value == null)\n style.delete(uhyphen(name));\n else\n style.set(uhyphen(name), value);\n if (!attr) {\n const element = refs.get(style);\n attr = element.ownerDocument.createAttribute('style');\n element.setAttributeNode(attr);\n style.set(PRIVATE, attr);\n }\n attr[CHANGED] = false;\n attr[VALUE] = style.toString();\n }\n return true;\n }\n};\n\n/**\n * @implements globalThis.CSSStyleDeclaration\n */\nexport class CSSStyleDeclaration extends Map {\n constructor(element) {\n super();\n refs.set(this, element);\n /* c8 ignore start */\n return new Proxy(this, handler);\n /* c8 ignore stop */\n }\n\n get cssText() {\n return this.toString();\n }\n\n set cssText(value) {\n refs.get(this).setAttribute('style', value);\n }\n\n getPropertyValue(name) {\n const self = this[PRIVATE];\n return handler.get(self, name);\n }\n\n setProperty(name, value) {\n const self = this[PRIVATE];\n handler.set(self, name, value);\n }\n\n removeProperty(name) {\n const self = this[PRIVATE];\n handler.set(self, name, null);\n }\n\n [Symbol.iterator]() {\n const self = this[PRIVATE];\n updateKeys(self);\n const keys = getKeys(self);\n const {length} = keys;\n let i = 0;\n return {\n next() {\n const done = i === length;\n return {done, value: done ? null : keys[i++]};\n }\n };\n }\n\n get[PRIVATE]() { return this; }\n\n toString() {\n const self = this[PRIVATE];\n updateKeys(self);\n const cssText = [];\n self.forEach(push, cssText);\n return cssText.join(';');\n }\n}\n\nconst {prototype} = CSSStyleDeclaration;\n\nfunction push(value, key) {\n if (key !== PRIVATE)\n this.push(`${key}:${value}`);\n}\n","// https://dom.spec.whatwg.org/#interface-event\n\n/* c8 ignore start */\n\n// Node 15 has Event but 14 and 12 don't\nconst BUBBLING_PHASE = 3;\nconst AT_TARGET = 2;\nconst CAPTURING_PHASE = 1;\nconst NONE = 0;\n\nfunction getCurrentTarget(ev) {\n return ev.currentTarget;\n}\n\n/**\n * @implements globalThis.Event\n */\nclass GlobalEvent {\n static get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n static get AT_TARGET() { return AT_TARGET; }\n static get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n static get NONE() { return NONE; }\n\n constructor(type, eventInitDict = {}) {\n this.type = type;\n this.bubbles = !!eventInitDict.bubbles;\n this.cancelBubble = false;\n this._stopImmediatePropagationFlag = false;\n this.cancelable = !!eventInitDict.cancelable;\n this.eventPhase = this.NONE;\n this.timeStamp = Date.now();\n this.defaultPrevented = false;\n this.originalTarget = null;\n this.returnValue = null;\n this.srcElement = null;\n this.target = null;\n this._path = [];\n }\n\n get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n get AT_TARGET() { return AT_TARGET; }\n get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n get NONE() { return NONE; }\n\n preventDefault() { this.defaultPrevented = true; }\n\n // simplified implementation, should be https://dom.spec.whatwg.org/#dom-event-composedpath\n composedPath() {\n return this._path.map(getCurrentTarget);\n }\n\n stopPropagation() {\n this.cancelBubble = true;\n }\n \n stopImmediatePropagation() {\n this.stopPropagation();\n this._stopImmediatePropagationFlag = true;\n }\n }\n\nexport {GlobalEvent as Event};\n\n/* c8 ignore stop */\n","/**\n * @implements globalThis.NamedNodeMap\n */\nexport class NamedNodeMap extends Array {\n constructor(ownerElement) {\n super();\n this.ownerElement = ownerElement;\n }\n\n getNamedItem(name) {\n return this.ownerElement.getAttributeNode(name);\n }\n\n setNamedItem(attr) {\n this.ownerElement.setAttributeNode(attr);\n this.unshift(attr);\n }\n\n removeNamedItem(name) {\n const item = this.getNamedItem(name);\n this.ownerElement.removeAttribute(name);\n this.splice(this.indexOf(item), 1);\n }\n\n item(index) {\n return index < this.length ? this[index] : null;\n }\n\n /* c8 ignore start */\n getNamedItemNS(_, name) {\n return this.getNamedItem(name);\n }\n\n setNamedItemNS(_, attr) {\n return this.setNamedItem(attr);\n }\n\n removeNamedItemNS(_, name) {\n return this.removeNamedItem(name);\n }\n /* c8 ignore stop */\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.ShadowRoot\n */\nexport class ShadowRoot extends NonElementParentNode {\n constructor(host) {\n super(host.ownerDocument, '#shadow-root', DOCUMENT_FRAGMENT_NODE);\n this.host = host;\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n}\n","// https://dom.spec.whatwg.org/#interface-element\n\nimport {\n ATTRIBUTE_NODE,\n BLOCK_ELEMENTS,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n ELEMENT_NODE,\n NODE_END,\n TEXT_NODE,\n SVG_NAMESPACE\n} from '../shared/constants.js';\n\nimport {\n setAttribute, removeAttribute,\n numericAttribute, stringAttribute\n} from '../shared/attributes.js';\n\nimport {\n CLASS_LIST, DATASET, STYLE,\n END, NEXT, PREV, START,\n MIME\n} from '../shared/symbols.js';\n\nimport {\n ignoreCase,\n knownAdjacent,\n localCase,\n String\n} from '../shared/utils.js';\n\nimport {elementAsJSON} from '../shared/jsdon.js';\nimport {matches, prepareMatch} from '../shared/matches.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\n\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {ParentNode} from '../mixin/parent-node.js';\n\nimport {DOMStringMap} from '../dom/string-map.js';\nimport {DOMTokenList} from '../dom/token-list.js';\n\nimport {CSSStyleDeclaration} from './css-style-declaration.js';\nimport {Event} from './event.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {ShadowRoot} from './shadow-root.js';\nimport {NodeList} from './node-list.js';\nimport {Attr} from './attr.js';\nimport {Text} from './text.js';\nimport {escape} from '../shared/text-escaper.js';\n\n// <utils>\nconst attributesHandler = {\n get(target, key) {\n return key in target ? target[key] : target.find(({name}) => name === key);\n }\n};\n\nconst create = (ownerDocument, element, localName) => {\n if ('ownerSVGElement' in element) {\n const svg = ownerDocument.createElementNS(SVG_NAMESPACE, localName);\n svg.ownerSVGElement = element.ownerSVGElement;\n return svg;\n }\n return ownerDocument.createElement(localName);\n};\n\nconst isVoid = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].voidElements.test(localName);\n};\n\n// </utils>\n\n/**\n * @implements globalThis.Element\n */\nexport class Element extends ParentNode {\n constructor(ownerDocument, localName) {\n super(ownerDocument, localName, ELEMENT_NODE);\n this[CLASS_LIST] = null;\n this[DATASET] = null;\n this[STYLE] = null;\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n get namespaceURI() {\n return 'http://www.w3.org/1999/xhtml';\n }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[END][NEXT]); }\n // </Mixins>\n\n // <specialGetters>\n get id() { return stringAttribute.get(this, 'id'); }\n set id(value) { stringAttribute.set(this, 'id', value); }\n\n get className() { return this.classList.value; }\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n\n get nodeName() { return localCase(this); }\n get tagName() { return localCase(this); }\n\n get classList() {\n return this[CLASS_LIST] || (\n this[CLASS_LIST] = new DOMTokenList(this)\n );\n }\n\n get dataset() {\n return this[DATASET] || (\n this[DATASET] = new DOMStringMap(this)\n );\n }\n\n getBoundingClientRect() {\n return {\n x: 0,\n y: 0,\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0\n };\n }\n\n get nonce() { return stringAttribute.get(this, 'nonce'); }\n set nonce(value) { stringAttribute.set(this, 'nonce', value); }\n\n get style() {\n return this[STYLE] || (\n this[STYLE] = new CSSStyleDeclaration(this)\n );\n }\n\n get tabIndex() { return numericAttribute.get(this, 'tabindex') || -1; }\n set tabIndex(value) { numericAttribute.set(this, 'tabindex', value); }\n\n get slot() { return stringAttribute.get(this, 'slot'); }\n set slot(value) { stringAttribute.set(this, 'slot', value); }\n // </specialGetters>\n\n\n // <contentRelated>\n get innerText() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE) {\n text.push(next.textContent.replace(/\\s+/g, ' '));\n } else if(\n text.length && next[NEXT] != end &&\n BLOCK_ELEMENTS.has(next.tagName)\n ) {\n text.push('\\n');\n }\n next = next[NEXT];\n }\n return text.join('');\n }\n\n /**\n * @returns {String}\n */\n get textContent() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE)\n text.push(next.textContent);\n next = next[NEXT];\n }\n return text.join('');\n }\n\n set textContent(text) {\n this.replaceChildren();\n if (text != null && text !== '')\n this.appendChild(new Text(this.ownerDocument, text));\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n\n get outerHTML() { return this.toString(); }\n set outerHTML(html) {\n const template = this.ownerDocument.createElement('');\n template.innerHTML = html;\n this.replaceWith(...template.childNodes);\n }\n // </contentRelated>\n\n // <attributes>\n get attributes() {\n const attributes = new NamedNodeMap(this);\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next);\n next = next[NEXT];\n }\n return new Proxy(attributes, attributesHandler);\n }\n\n focus() { this.dispatchEvent(new Event('focus')); }\n\n getAttribute(name) {\n if (name === 'class')\n return this.className;\n const attribute = this.getAttributeNode(name);\n return attribute && (ignoreCase(this) ? attribute.value : escape(attribute.value));\n }\n\n getAttributeNode(name) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n getAttributeNames() {\n const attributes = new NodeList;\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next.name);\n next = next[NEXT];\n }\n return attributes;\n }\n\n hasAttribute(name) { return !!this.getAttributeNode(name); }\n hasAttributes() { return this[NEXT].nodeType === ATTRIBUTE_NODE; }\n\n removeAttribute(name) {\n if (name === 'class' && this[CLASS_LIST])\n this[CLASS_LIST].clear();\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n removeAttributeNode(attribute) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next === attribute) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else {\n const attribute = this.getAttributeNode(name);\n if (attribute)\n attribute.value = value;\n else\n setAttribute(this, new Attr(this.ownerDocument, name, value));\n }\n }\n\n setAttributeNode(attribute) {\n const {name} = attribute;\n const previously = this.getAttributeNode(name);\n if (previously !== attribute) {\n if (previously)\n this.removeAttributeNode(previously);\n const {ownerElement} = attribute;\n if (ownerElement)\n ownerElement.removeAttributeNode(attribute);\n setAttribute(this, attribute);\n }\n return previously;\n }\n\n toggleAttribute(name, force) {\n if (this.hasAttribute(name)) {\n if (!force) {\n this.removeAttribute(name);\n return false;\n }\n return true;\n }\n else if (force || arguments.length === 1) {\n this.setAttribute(name, '');\n return true;\n }\n return false;\n }\n // </attributes>\n\n // <ShadowDOM>\n get shadowRoot() {\n if (shadowRoots.has(this)) {\n const {mode, shadowRoot} = shadowRoots.get(this);\n if (mode === 'open')\n return shadowRoot;\n }\n return null;\n }\n\n attachShadow(init) {\n if (shadowRoots.has(this))\n throw new Error('operation not supported');\n // TODO: shadowRoot should be likely a specialized class that extends DocumentFragment\n // but until DSD is out, I am not sure I should spend time on this.\n const shadowRoot = new ShadowRoot(this);\n shadowRoots.set(this, {\n mode: init.mode,\n shadowRoot\n });\n return shadowRoot;\n }\n // </ShadowDOM>\n\n // <selectors>\n matches(selectors) { return matches(this, selectors); }\n closest(selectors) {\n let parentElement = this;\n const matches = prepareMatch(parentElement, selectors);\n while (parentElement && !matches(parentElement))\n parentElement = parentElement.parentElement;\n return parentElement;\n }\n // </selectors>\n\n // <insertAdjacent>\n insertAdjacentElement(position, element) {\n const {parentElement} = this;\n switch (position) {\n case 'beforebegin':\n if (parentElement) {\n parentElement.insertBefore(element, this);\n break;\n }\n return null;\n case 'afterbegin':\n this.insertBefore(element, this.firstChild);\n break;\n case 'beforeend':\n this.insertBefore(element, null);\n break;\n case 'afterend':\n if (parentElement) {\n parentElement.insertBefore(element, this.nextSibling);\n break;\n }\n return null;\n }\n return element;\n }\n\n insertAdjacentHTML(position, html) {\n const template = this.ownerDocument.createElement('template');\n template.innerHTML = html;\n this.insertAdjacentElement(position, template.content);\n }\n\n insertAdjacentText(position, text) {\n const node = this.ownerDocument.createTextNode(text);\n this.insertAdjacentElement(position, node);\n }\n // </insertAdjacent>\n\n cloneNode(deep = false) {\n const {ownerDocument, localName} = this;\n const addNext = next => {\n next.parentNode = parentNode;\n knownAdjacent($next, next);\n $next = next;\n };\n const clone = create(ownerDocument, this, localName);\n let parentNode = clone, $next = clone;\n let {[NEXT]: next, [END]: prev} = this;\n while (next !== prev && (deep || next.nodeType === ATTRIBUTE_NODE)) {\n switch (next.nodeType) {\n case NODE_END:\n knownAdjacent($next, parentNode[END]);\n $next = parentNode[END];\n parentNode = parentNode.parentNode;\n break;\n case ELEMENT_NODE: {\n const node = create(ownerDocument, next, next.localName);\n addNext(node);\n parentNode = node;\n break;\n }\n case ATTRIBUTE_NODE: {\n const attr = next.cloneNode(deep);\n attr.ownerElement = parentNode;\n addNext(attr);\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n addNext(next.cloneNode(deep));\n break;\n }\n next = next[NEXT];\n }\n knownAdjacent($next, clone[END]);\n return clone;\n }\n\n // <custom>\n toString() {\n const out = [];\n const {[END]: end} = this;\n let next = {[NEXT]: this};\n let isOpened = false;\n do {\n next = next[NEXT];\n switch (next.nodeType) {\n case ATTRIBUTE_NODE: {\n const attr = ' ' + next;\n switch (attr) {\n case ' id':\n case ' class':\n case ' style':\n break;\n default:\n out.push(attr);\n }\n break;\n }\n case NODE_END: {\n const start = next[START];\n if (isOpened) {\n if ('ownerSVGElement' in start)\n out.push(' />');\n else if (isVoid(start))\n out.push(ignoreCase(start) ? '>' : ' />');\n else\n out.push(`></${start.localName}>`);\n isOpened = false;\n }\n else\n out.push(`</${start.localName}>`);\n break;\n }\n case ELEMENT_NODE:\n if (isOpened)\n out.push('>');\n if (next.toString !== this.toString) {\n out.push(next.toString());\n next = next[END];\n isOpened = false;\n }\n else {\n out.push(`<${next.localName}`);\n isOpened = true;\n }\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n out.push((isOpened ? '>' : '') + next);\n isOpened = false;\n break;\n }\n } while (next !== end);\n return out.join('');\n }\n\n toJSON() {\n const json = [];\n elementAsJSON(this, json);\n return json;\n }\n // </custom>\n\n\n /* c8 ignore start */\n getAttributeNS(_, name) { return this.getAttribute(name); }\n getElementsByTagNameNS(_, name) { return this.getElementsByTagName(name); }\n hasAttributeNS(_, name) { return this.hasAttribute(name); }\n removeAttributeNS(_, name) { this.removeAttribute(name); }\n setAttributeNS(_, name, value) { this.setAttribute(name, value); }\n setAttributeNodeNS(attr) { return this.setAttributeNode(attr); }\n /* c8 ignore stop */\n}\n","import {Element} from '../interface/element.js';\nimport {String} from '../shared/utils.js';\n\nconst classNames = new WeakMap;\n\nconst handler = {\n get(target, name) {\n return target[name];\n },\n set(target, name, value) {\n target[name] = value;\n return true;\n }\n};\n\n/**\n * @implements globalThis.SVGElement\n */\nexport class SVGElement extends Element {\n constructor(ownerDocument, localName, ownerSVGElement = null) {\n super(ownerDocument, localName);\n this.ownerSVGElement = ownerSVGElement;\n }\n\n get className() {\n if (!classNames.has(this))\n classNames.set(this, new Proxy({baseVal: '', animVal: ''}, handler));\n return classNames.get(this);\n }\n\n /* c8 ignore start */\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n /* c8 ignore stop */\n\n get namespaceURI() {\n return 'http://www.w3.org/2000/svg';\n }\n\n getAttribute(name) {\n return name === 'class' ?\n [...this.classList].join(' ') :\n super.getAttribute(name);\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else if (name === 'style') {\n const {className} = this;\n className.baseVal = className.animVal = value;\n }\n super.setAttribute(name, value);\n }\n}\n","import {Attr as _Attr} from '../interface/attr.js';\nimport {CharacterData as _CharacterData} from '../interface/character-data.js';\nimport {CDATASection as _CDATASection} from '../interface/cdata-section.js';\nimport {Comment as _Comment} from '../interface/comment.js';\nimport {DocumentFragment as _DocumentFragment} from '../interface/document-fragment.js';\nimport {DocumentType as _DocumentType} from '../interface/document-type.js';\nimport {Element as _Element} from '../interface/element.js';\nimport {Node as _Node} from '../interface/node.js';\nimport {ShadowRoot as _ShadowRoot} from '../interface/shadow-root.js';\nimport {Text as _Text} from '../interface/text.js';\nimport {SVGElement as _SVGElement} from '../svg/element.js';\n\nimport {setPrototypeOf} from './object.js';\n\n/* c8 ignore start */\nexport const illegalConstructor = () => {\n throw new TypeError('Illegal constructor');\n};\n\nexport function Attr() { illegalConstructor(); }\nsetPrototypeOf(Attr, _Attr);\nAttr.prototype = _Attr.prototype;\n\nexport function CDATASection() { illegalConstructor(); }\nsetPrototypeOf(CDATASection, _CDATASection);\nCDATASection.prototype = _CDATASection.prototype;\n\nexport function CharacterData() { illegalConstructor(); }\nsetPrototypeOf(CharacterData, _CharacterData);\nCharacterData.prototype = _CharacterData.prototype;\n\nexport function Comment() { illegalConstructor(); }\nsetPrototypeOf(Comment, _Comment);\nComment.prototype = _Comment.prototype;\n\nexport function DocumentFragment() { illegalConstructor(); }\nsetPrototypeOf(DocumentFragment, _DocumentFragment);\nDocumentFragment.prototype = _DocumentFragment.prototype;\n\nexport function DocumentType() { illegalConstructor(); }\nsetPrototypeOf(DocumentType, _DocumentType);\nDocumentType.prototype = _DocumentType.prototype;\n\nexport function Element() { illegalConstructor(); }\nsetPrototypeOf(Element, _Element);\nElement.prototype = _Element.prototype;\n\nexport function Node() { illegalConstructor(); }\nsetPrototypeOf(Node, _Node);\nNode.prototype = _Node.prototype;\n\nexport function ShadowRoot() { illegalConstructor(); }\nsetPrototypeOf(ShadowRoot, _ShadowRoot);\nShadowRoot.prototype = _ShadowRoot.prototype;\n\nexport function Text() { illegalConstructor(); }\nsetPrototypeOf(Text, _Text);\nText.prototype = _Text.prototype;\n\nexport function SVGElement() { illegalConstructor(); }\nsetPrototypeOf(SVGElement, _SVGElement);\nSVGElement.prototype = _SVGElement.prototype;\n/* c8 ignore stop */\n\nexport const Facades = {\n Attr,\n CDATASection,\n CharacterData,\n Comment,\n DocumentFragment,\n DocumentType,\n Element,\n Node,\n ShadowRoot,\n Text,\n SVGElement\n};\n","import {END, UPGRADE} from '../shared/symbols.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {Event} from '../interface/event.js';\nimport {Element} from '../interface/element.js';\nimport {Classes, customElements} from '../interface/custom-element-registry.js';\n\nconst Level0 = new WeakMap;\nconst level0 = {\n get(element, name) {\n return Level0.has(element) && Level0.get(element)[name] || null;\n },\n set(element, name, value) {\n if (!Level0.has(element))\n Level0.set(element, {});\n const handlers = Level0.get(element);\n const type = name.slice(2);\n if (handlers[name])\n element.removeEventListener(type, handlers[name], false);\n if ((handlers[name] = value))\n element.addEventListener(type, value, false);\n }\n};\n\n/**\n * @implements globalThis.HTMLElement\n */\nexport class HTMLElement extends Element {\n\n static get observedAttributes() { return []; }\n\n constructor(ownerDocument = null, localName = '') {\n super(ownerDocument, localName);\n\n const ownerLess = !ownerDocument;\n let options;\n\n if (ownerLess) {\n const {constructor: Class} = this;\n if (!Classes.has(Class))\n throw new Error('unable to initialize this Custom Element');\n ({ownerDocument, localName, options} = Classes.get(Class));\n }\n\n if (ownerDocument[UPGRADE]) {\n const {element, values} = ownerDocument[UPGRADE];\n ownerDocument[UPGRADE] = null;\n for (const [key, value] of values)\n element[key] = value;\n return element;\n }\n\n if (ownerLess) {\n this.ownerDocument = this[END].ownerDocument = ownerDocument;\n this.localName = localName;\n customElements.set(this, {connected: false});\n if (options.is)\n this.setAttribute('is', options.is);\n }\n }\n\n /* c8 ignore start */\n\n /* TODO: what about these?\n offsetHeight\n offsetLeft\n offsetParent\n offsetTop\n offsetWidth\n */\n\n blur() { this.dispatchEvent(new Event('blur')); }\n click() {\n const clickEvent = new Event('click', {bubbles: true, cancelable: true});\n clickEvent.button = 0;\n\n this.dispatchEvent(clickEvent);\n }\n\n // Boolean getters\n get accessKeyLabel() {\n const {accessKey} = this;\n return accessKey && `Alt+Shift+${accessKey}`;\n }\n get isContentEditable() { return this.hasAttribute('contenteditable'); }\n\n // Boolean Accessors\n get contentEditable() { return booleanAttribute.get(this, 'contenteditable'); }\n set contentEditable(value) { booleanAttribute.set(this, 'contenteditable', value); }\n get draggable() { return booleanAttribute.get(this, 'draggable'); }\n set draggable(value) { booleanAttribute.set(this, 'draggable', value); }\n get hidden() { return booleanAttribute.get(this, 'hidden'); }\n set hidden(value) { booleanAttribute.set(this, 'hidden', value); }\n get spellcheck() { return booleanAttribute.get(this, 'spellcheck'); }\n set spellcheck(value) { booleanAttribute.set(this, 'spellcheck', value); }\n\n // String Accessors\n get accessKey() { return stringAttribute.get(this, 'accesskey'); }\n set accessKey(value) { stringAttribute.set(this, 'accesskey', value); }\n get dir() { return stringAttribute.get(this, 'dir'); }\n set dir(value) { stringAttribute.set(this, 'dir', value); }\n get lang() { return stringAttribute.get(this, 'lang'); }\n set lang(value) { stringAttribute.set(this, 'lang', value); }\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n // DOM Level 0\n get onabort() { return level0.get(this, 'onabort'); }\n set onabort(value) { level0.set(this, 'onabort', value); }\n\n get onblur() { return level0.get(this, 'onblur'); }\n set onblur(value) { level0.set(this, 'onblur', value); }\n\n get oncancel() { return level0.get(this, 'oncancel'); }\n set oncancel(value) { level0.set(this, 'oncancel', value); }\n\n get oncanplay() { return level0.get(this, 'oncanplay'); }\n set oncanplay(value) { level0.set(this, 'oncanplay', value); }\n\n get oncanplaythrough() { return level0.get(this, 'oncanplaythrough'); }\n set oncanplaythrough(value) { level0.set(this, 'oncanplaythrough', value); }\n\n get onchange() { return level0.get(this, 'onchange'); }\n set onchange(value) { level0.set(this, 'onchange', value); }\n\n get onclick() { return level0.get(this, 'onclick'); }\n set onclick(value) { level0.set(this, 'onclick', value); }\n\n get onclose() { return level0.get(this, 'onclose'); }\n set onclose(value) { level0.set(this, 'onclose', value); }\n\n get oncontextmenu() { return level0.get(this, 'oncontextmenu'); }\n set oncontextmenu(value) { level0.set(this, 'oncontextmenu', value); }\n\n get oncuechange() { return level0.get(this, 'oncuechange'); }\n set oncuechange(value) { level0.set(this, 'oncuechange', value); }\n\n get ondblclick() { return level0.get(this, 'ondblclick'); }\n set ondblclick(value) { level0.set(this, 'ondblclick', value); }\n\n get ondrag() { return level0.get(this, 'ondrag'); }\n set ondrag(value) { level0.set(this, 'ondrag', value); }\n\n get ondragend() { return level0.get(this, 'ondragend'); }\n set ondragend(value) { level0.set(this, 'ondragend', value); }\n\n get ondragenter() { return level0.get(this, 'ondragenter'); }\n set ondragenter(value) { level0.set(this, 'ondragenter', value); }\n\n get ondragleave() { return level0.get(this, 'ondragleave'); }\n set ondragleave(value) { level0.set(this, 'ondragleave', value); }\n\n get ondragover() { return level0.get(this, 'ondragover'); }\n set ondragover(value) { level0.set(this, 'ondragover', value); }\n\n get ondragstart() { return level0.get(this, 'ondragstart'); }\n set ondragstart(value) { level0.set(this, 'ondragstart', value); }\n\n get ondrop() { return level0.get(this, 'ondrop'); }\n set ondrop(value) { level0.set(this, 'ondrop', value); }\n\n get ondurationchange() { return level0.get(this, 'ondurationchange'); }\n set ondurationchange(value) { level0.set(this, 'ondurationchange', value); }\n\n get onemptied() { return level0.get(this, 'onemptied'); }\n set onemptied(value) { level0.set(this, 'onemptied', value); }\n\n get onended() { return level0.get(this, 'onended'); }\n set onended(value) { level0.set(this, 'onended', value); }\n\n get onerror() { return level0.get(this, 'onerror'); }\n set onerror(value) { level0.set(this, 'onerror', value); }\n\n get onfocus() { return level0.get(this, 'onfocus'); }\n set onfocus(value) { level0.set(this, 'onfocus', value); }\n\n get oninput() { return level0.get(this, 'oninput'); }\n set oninput(value) { level0.set(this, 'oninput', value); }\n\n get oninvalid() { return level0.get(this, 'oninvalid'); }\n set oninvalid(value) { level0.set(this, 'oninvalid', value); }\n\n get onkeydown() { return level0.get(this, 'onkeydown'); }\n set onkeydown(value) { level0.set(this, 'onkeydown', value); }\n\n get onkeypress() { return level0.get(this, 'onkeypress'); }\n set onkeypress(value) { level0.set(this, 'onkeypress', value); }\n\n get onkeyup() { return level0.get(this, 'onkeyup'); }\n set onkeyup(value) { level0.set(this, 'onkeyup', value); }\n\n get onload() { return level0.get(this, 'onload'); }\n set onload(value) { level0.set(this, 'onload', value); }\n\n get onloadeddata() { return level0.get(this, 'onloadeddata'); }\n set onloadeddata(value) { level0.set(this, 'onloadeddata', value); }\n\n get onloadedmetadata() { return level0.get(this, 'onloadedmetadata'); }\n set onloadedmetadata(value) { level0.set(this, 'onloadedmetadata', value); }\n\n get onloadstart() { return level0.get(this, 'onloadstart'); }\n set onloadstart(value) { level0.set(this, 'onloadstart', value); }\n\n get onmousedown() { return level0.get(this, 'onmousedown'); }\n set onmousedown(value) { level0.set(this, 'onmousedown', value); }\n\n get onmouseenter() { return level0.get(this, 'onmouseenter'); }\n set onmouseenter(value) { level0.set(this, 'onmouseenter', value); }\n\n get onmouseleave() { return level0.get(this, 'onmouseleave'); }\n set onmouseleave(value) { level0.set(this, 'onmouseleave', value); }\n\n get onmousemove() { return level0.get(this, 'onmousemove'); }\n set onmousemove(value) { level0.set(this, 'onmousemove', value); }\n\n get onmouseout() { return level0.get(this, 'onmouseout'); }\n set onmouseout(value) { level0.set(this, 'onmouseout', value); }\n\n get onmouseover() { return level0.get(this, 'onmouseover'); }\n set onmouseover(value) { level0.set(this, 'onmouseover', value); }\n\n get onmouseup() { return level0.get(this, 'onmouseup'); }\n set onmouseup(value) { level0.set(this, 'onmouseup', value); }\n\n get onmousewheel() { return level0.get(this, 'onmousewheel'); }\n set onmousewheel(value) { level0.set(this, 'onmousewheel', value); }\n\n get onpause() { return level0.get(this, 'onpause'); }\n set onpause(value) { level0.set(this, 'onpause', value); }\n\n get onplay() { return level0.get(this, 'onplay'); }\n set onplay(value) { level0.set(this, 'onplay', value); }\n\n get onplaying() { return level0.get(this, 'onplaying'); }\n set onplaying(value) { level0.set(this, 'onplaying', value); }\n\n get onprogress() { return level0.get(this, 'onprogress'); }\n set onprogress(value) { level0.set(this, 'onprogress', value); }\n\n get onratechange() { return level0.get(this, 'onratechange'); }\n set onratechange(value) { level0.set(this, 'onratechange', value); }\n\n get onreset() { return level0.get(this, 'onreset'); }\n set onreset(value) { level0.set(this, 'onreset', value); }\n\n get onresize() { return level0.get(this, 'onresize'); }\n set onresize(value) { level0.set(this, 'onresize', value); }\n\n get onscroll() { return level0.get(this, 'onscroll'); }\n set onscroll(value) { level0.set(this, 'onscroll', value); }\n\n get onseeked() { return level0.get(this, 'onseeked'); }\n set onseeked(value) { level0.set(this, 'onseeked', value); }\n\n get onseeking() { return level0.get(this, 'onseeking'); }\n set onseeking(value) { level0.set(this, 'onseeking', value); }\n\n get onselect() { return level0.get(this, 'onselect'); }\n set onselect(value) { level0.set(this, 'onselect', value); }\n\n get onshow() { return level0.get(this, 'onshow'); }\n set onshow(value) { level0.set(this, 'onshow', value); }\n\n get onstalled() { return level0.get(this, 'onstalled'); }\n set onstalled(value) { level0.set(this, 'onstalled', value); }\n\n get onsubmit() { return level0.get(this, 'onsubmit'); }\n set onsubmit(value) { level0.set(this, 'onsubmit', value); }\n\n get onsuspend() { return level0.get(this, 'onsuspend'); }\n set onsuspend(value) { level0.set(this, 'onsuspend', value); }\n\n get ontimeupdate() { return level0.get(this, 'ontimeupdate'); }\n set ontimeupdate(value) { level0.set(this, 'ontimeupdate', value); }\n\n get ontoggle() { return level0.get(this, 'ontoggle'); }\n set ontoggle(value) { level0.set(this, 'ontoggle', value); }\n\n get onvolumechange() { return level0.get(this, 'onvolumechange'); }\n set onvolumechange(value) { level0.set(this, 'onvolumechange', value); }\n\n get onwaiting() { return level0.get(this, 'onwaiting'); }\n set onwaiting(value) { level0.set(this, 'onwaiting', value); }\n\n get onauxclick() { return level0.get(this, 'onauxclick'); }\n set onauxclick(value) { level0.set(this, 'onauxclick', value); }\n\n get ongotpointercapture() { return level0.get(this, 'ongotpointercapture'); }\n set ongotpointercapture(value) { level0.set(this, 'ongotpointercapture', value); }\n\n get onlostpointercapture() { return level0.get(this, 'onlostpointercapture'); }\n set onlostpointercapture(value) { level0.set(this, 'onlostpointercapture', value); }\n\n get onpointercancel() { return level0.get(this, 'onpointercancel'); }\n set onpointercancel(value) { level0.set(this, 'onpointercancel', value); }\n\n get onpointerdown() { return level0.get(this, 'onpointerdown'); }\n set onpointerdown(value) { level0.set(this, 'onpointerdown', value); }\n\n get onpointerenter() { return level0.get(this, 'onpointerenter'); }\n set onpointerenter(value) { level0.set(this, 'onpointerenter', value); }\n\n get onpointerleave() { return level0.get(this, 'onpointerleave'); }\n set onpointerleave(value) { level0.set(this, 'onpointerleave', value); }\n\n get onpointermove() { return level0.get(this, 'onpointermove'); }\n set onpointermove(value) { level0.set(this, 'onpointermove', value); }\n\n get onpointerout() { return level0.get(this, 'onpointerout'); }\n set onpointerout(value) { level0.set(this, 'onpointerout', value); }\n\n get onpointerover() { return level0.get(this, 'onpointerover'); }\n set onpointerover(value) { level0.set(this, 'onpointerover', value); }\n\n get onpointerup() { return level0.get(this, 'onpointerup'); }\n set onpointerup(value) { level0.set(this, 'onpointerup', value); }\n /* c8 ignore stop */\n\n}\n","import {CONTENT, PRIVATE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'template';\n\n/**\n * @implements globalThis.HTMLTemplateElement\n */\nclass HTMLTemplateElement extends HTMLElement {\n constructor(ownerDocument) {\n super(ownerDocument, tagName);\n const content = this.ownerDocument.createDocumentFragment();\n (this[CONTENT] = content)[PRIVATE] = this;\n }\n\n get content() {\n if (this.hasChildNodes() && !this[CONTENT].hasChildNodes()) {\n for (const node of this.childNodes)\n this[CONTENT].appendChild(node.cloneNode(true));\n }\n return this[CONTENT];\n }\n}\n\nregisterHTMLClass(tagName, HTMLTemplateElement);\n\nexport {HTMLTemplateElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHtmlElement\n */\nexport class HTMLHtmlElement extends HTMLElement {\n constructor(ownerDocument, localName = 'html') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\nconst {toString} = HTMLElement.prototype;\n\nexport class TextElement extends HTMLElement {\n\n get innerHTML() { return this.textContent; }\n set innerHTML(html) { this.textContent = html; }\n\n toString() {\n const outerHTML = toString.call(this.cloneNode());\n return outerHTML.replace(/></, `>${this.textContent}<`);\n }\n}\n","import { booleanAttribute, stringAttribute } from '../shared/attributes.js';\nimport { registerHTMLClass } from '../shared/register-html-class.js';\n\nimport { TextElement } from './text-element.js';\n\nconst tagName = 'script';\n\n/**\n * @implements globalThis.HTMLScriptElement\n */\nclass HTMLScriptElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get type() {\n return stringAttribute.get(this, 'type');\n }\n set type(value) {\n stringAttribute.set(this, 'type', value);\n }\n\n get src() {\n return stringAttribute.get(this, 'src');\n }\n set src(value) {\n stringAttribute.set(this, 'src', value);\n }\n\n get defer() {\n return booleanAttribute.get(this, 'defer');\n }\n\n set defer(value) {\n booleanAttribute.set(this, 'defer', value);\n }\n\n get crossOrigin() {\n return stringAttribute.get(this, 'crossorigin');\n }\n set crossOrigin(value) {\n stringAttribute.set(this, 'crossorigin', value);\n }\n\n get nomodule() {\n return booleanAttribute.get(this, 'nomodule');\n }\n set nomodule(value) {\n booleanAttribute.set(this, 'nomodule', value);\n }\n\n get referrerPolicy() {\n return stringAttribute.get(this, 'referrerpolicy');\n }\n set referrerPolicy(value) {\n stringAttribute.set(this, 'referrerpolicy', value);\n }\n\n get nonce() {\n return stringAttribute.get(this, 'nonce');\n }\n set nonce(value) {\n stringAttribute.set(this, 'nonce', value);\n }\n\n get async() {\n return booleanAttribute.get(this, 'async');\n }\n set async(value) {\n booleanAttribute.set(this, 'async', value);\n }\n\n get text() { return this.textContent; }\n set text(content) { this.textContent = content; }\n}\n\nregisterHTMLClass(tagName, HTMLScriptElement);\n\nexport { HTMLScriptElement };\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameElement\n */\nexport class HTMLFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frame') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'iframe';\n\n/**\n * @implements globalThis.HTMLIFrameElement\n */\nclass HTMLIFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcdoc() { return stringAttribute.get(this, \"srcdoc\"); }\n set srcdoc(value) { stringAttribute.set(this, \"srcdoc\", value); }\n\n get name() { return stringAttribute.get(this, \"name\"); }\n set name(value) { stringAttribute.set(this, \"name\", value); }\n\n get allow() { return stringAttribute.get(this, \"allow\"); }\n set allow(value) { stringAttribute.set(this, \"allow\", value); }\n\n get allowFullscreen() { return booleanAttribute.get(this, \"allowfullscreen\"); }\n set allowFullscreen(value) { booleanAttribute.set(this, \"allowfullscreen\", value); }\n \n get referrerPolicy() { return stringAttribute.get(this, \"referrerpolicy\"); }\n set referrerPolicy(value) { stringAttribute.set(this, \"referrerpolicy\", value); }\n \n get loading() { return stringAttribute.get(this, \"loading\"); }\n set loading(value) { stringAttribute.set(this, \"loading\", value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLIFrameElement);\n\nexport {HTMLIFrameElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLObjectElement\n */\nexport class HTMLObjectElement extends HTMLElement {\n constructor(ownerDocument, localName = 'object') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHeadElement\n */\nexport class HTMLHeadElement extends HTMLElement {\n constructor(ownerDocument, localName = 'head') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBodyElement\n */\nexport class HTMLBodyElement extends HTMLElement {\n constructor(ownerDocument, localName = 'body') {\n super(ownerDocument, localName);\n }\n}\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-stylesheet-interface\n */\nCSSOM.StyleSheet = function StyleSheet() {\n\tthis.parentStyleSheet = null;\n};\n\n\n//.CommonJS\nexports.StyleSheet = CSSOM.StyleSheet;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-cssrule-interface\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSRule\n */\nCSSOM.CSSRule = function CSSRule() {\n\tthis.parentRule = null;\n\tthis.parentStyleSheet = null;\n};\n\nCSSOM.CSSRule.UNKNOWN_RULE = 0; // obsolete\nCSSOM.CSSRule.STYLE_RULE = 1;\nCSSOM.CSSRule.CHARSET_RULE = 2; // obsolete\nCSSOM.CSSRule.IMPORT_RULE = 3;\nCSSOM.CSSRule.MEDIA_RULE = 4;\nCSSOM.CSSRule.FONT_FACE_RULE = 5;\nCSSOM.CSSRule.PAGE_RULE = 6;\nCSSOM.CSSRule.KEYFRAMES_RULE = 7;\nCSSOM.CSSRule.KEYFRAME_RULE = 8;\nCSSOM.CSSRule.MARGIN_RULE = 9;\nCSSOM.CSSRule.NAMESPACE_RULE = 10;\nCSSOM.CSSRule.COUNTER_STYLE_RULE = 11;\nCSSOM.CSSRule.SUPPORTS_RULE = 12;\nCSSOM.CSSRule.DOCUMENT_RULE = 13;\nCSSOM.CSSRule.FONT_FEATURE_VALUES_RULE = 14;\nCSSOM.CSSRule.VIEWPORT_RULE = 15;\nCSSOM.CSSRule.REGION_STYLE_RULE = 16;\n\n\nCSSOM.CSSRule.prototype = {\n\tconstructor: CSSOM.CSSRule\n\t//FIXME\n};\n\n\n//.CommonJS\nexports.CSSRule = CSSOM.CSSRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssstylerule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule\n */\nCSSOM.CSSStyleRule = function CSSStyleRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.selectorText = \"\";\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSStyleRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule;\nCSSOM.CSSStyleRule.prototype.type = 1;\n\nObject.defineProperty(CSSOM.CSSStyleRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar text;\n\t\tif (this.selectorText) {\n\t\t\ttext = this.selectorText + \" {\" + this.style.cssText + \"}\";\n\t\t} else {\n\t\t\ttext = \"\";\n\t\t}\n\t\treturn text;\n\t},\n\tset: function(cssText) {\n\t\tvar rule = CSSOM.CSSStyleRule.parse(cssText);\n\t\tthis.style = rule.style;\n\t\tthis.selectorText = rule.selectorText;\n\t}\n});\n\n\n/**\n * NON-STANDARD\n * lightweight version of parse.js.\n * @param {string} ruleText\n * @return CSSStyleRule\n */\nCSSOM.CSSStyleRule.parse = function(ruleText) {\n\tvar i = 0;\n\tvar state = \"selector\";\n\tvar index;\n\tvar j = i;\n\tvar buffer = \"\";\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true\n\t};\n\n\tvar styleRule = new CSSOM.CSSStyleRule();\n\tvar name, priority=\"\";\n\n\tfor (var character; (character = ruleText.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\t// Squash 2 or more white-spaces in the row into 1\n\t\t\t\tswitch (ruleText.charAt(i - 1)) {\n\t\t\t\t\tcase \" \":\n\t\t\t\t\tcase \"\\t\":\n\t\t\t\t\tcase \"\\r\":\n\t\t\t\t\tcase \"\\n\":\n\t\t\t\t\tcase \"\\f\":\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbuffer += \" \";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf('\"', j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow '\" is missing';\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf(\"'\", j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow \"' is missing\";\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (ruleText.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = ruleText.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tthrow new SyntaxError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && ruleText.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t} else if (state === \"name\") {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tstate = \"selector\";\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\t}\n\t}\n\n\treturn styleRule;\n\n};\n\n\n//.CommonJS\nexports.CSSStyleRule = CSSOM.CSSStyleRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tStyleSheet: require(\"./StyleSheet\").StyleSheet,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet\n */\nCSSOM.CSSStyleSheet = function CSSStyleSheet() {\n\tCSSOM.StyleSheet.call(this);\n\tthis.cssRules = [];\n};\n\n\nCSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet();\nCSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet;\n\n\n/**\n * Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade.\n *\n * sheet = new Sheet(\"body {margin: 0}\")\n * sheet.toString()\n * -> \"body{margin:0;}\"\n * sheet.insertRule(\"img {border: none}\", 0)\n * -> 0\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n *\n * @param {string} rule\n * @param {number} index\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-insertRule\n * @return {number} The index within the style sheet's rule collection of the newly inserted rule.\n */\nCSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentStyleSheet = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n\n/**\n * Used to delete a rule from the style sheet.\n *\n * sheet = new Sheet(\"img{border:none} body{margin:0}\")\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n * sheet.deleteRule(0)\n * sheet.toString()\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the style sheet's rule list of the rule to remove.\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-deleteRule\n */\nCSSOM.CSSStyleSheet.prototype.deleteRule = function(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1);\n};\n\n\n/**\n * NON-STANDARD\n * @return {string} serialize stylesheet\n */\nCSSOM.CSSStyleSheet.prototype.toString = function() {\n\tvar result = \"\";\n\tvar rules = this.cssRules;\n\tfor (var i=0; i<rules.length; i++) {\n\t\tresult += rules[i].cssText + \"\\n\";\n\t}\n\treturn result;\n};\n\n\n//.CommonJS\nexports.CSSStyleSheet = CSSOM.CSSStyleSheet;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleSheet.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-medialist-interface\n */\nCSSOM.MediaList = function MediaList(){\n\tthis.length = 0;\n};\n\nCSSOM.MediaList.prototype = {\n\n\tconstructor: CSSOM.MediaList,\n\n\t/**\n\t * @return {string}\n\t */\n\tget mediaText() {\n\t\treturn Array.prototype.join.call(this, \", \");\n\t},\n\n\t/**\n\t * @param {string} value\n\t */\n\tset mediaText(value) {\n\t\tvar values = value.split(\",\");\n\t\tvar length = this.length = values.length;\n\t\tfor (var i=0; i<length; i++) {\n\t\t\tthis[i] = values[i].trim();\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tappendMedium: function(medium) {\n\t\tif (Array.prototype.indexOf.call(this, medium) === -1) {\n\t\t\tthis[this.length] = medium;\n\t\t\tthis.length++;\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tdeleteMedium: function(medium) {\n\t\tvar index = Array.prototype.indexOf.call(this, medium);\n\t\tif (index !== -1) {\n\t\t\tArray.prototype.splice.call(this, index, 1);\n\t\t}\n\t}\n\n};\n\n\n//.CommonJS\nexports.MediaList = CSSOM.MediaList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssimportrule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSImportRule\n */\nCSSOM.CSSImportRule = function CSSImportRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.href = \"\";\n\tthis.media = new CSSOM.MediaList();\n\tthis.styleSheet = new CSSOM.CSSStyleSheet();\n};\n\nCSSOM.CSSImportRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSImportRule.prototype.constructor = CSSOM.CSSImportRule;\nCSSOM.CSSImportRule.prototype.type = 3;\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"cssText\", {\n get: function() {\n var mediaText = this.media.mediaText;\n return \"@import url(\" + this.href + \")\" + (mediaText ? \" \" + mediaText : \"\") + \";\";\n },\n set: function(cssText) {\n var i = 0;\n\n /**\n * @import url(partial.css) screen, handheld;\n * || |\n * after-import media\n * |\n * url\n */\n var state = '';\n\n var buffer = '';\n var index;\n for (var character; (character = cssText.charAt(i)); i++) {\n\n switch (character) {\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n case '\\f':\n if (state === 'after-import') {\n state = 'url';\n } else {\n buffer += character;\n }\n break;\n\n case '@':\n if (!state && cssText.indexOf('@import', i) === i) {\n state = 'after-import';\n i += 'import'.length;\n buffer = '';\n }\n break;\n\n case 'u':\n if (state === 'url' && cssText.indexOf('url(', i) === i) {\n index = cssText.indexOf(')', i + 1);\n if (index === -1) {\n throw i + ': \")\" not found';\n }\n i += 'url('.length;\n var url = cssText.slice(i, index);\n if (url[0] === url[url.length - 1]) {\n if (url[0] === '\"' || url[0] === \"'\") {\n url = url.slice(1, -1);\n }\n }\n this.href = url;\n i = index;\n state = 'media';\n }\n break;\n\n case '\"':\n if (state === 'url') {\n index = cssText.indexOf('\"', i + 1);\n if (!index) {\n throw i + \": '\\\"' not found\";\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case \"'\":\n if (state === 'url') {\n index = cssText.indexOf(\"'\", i + 1);\n if (!index) {\n throw i + ': \"\\'\" not found';\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case ';':\n if (state === 'media') {\n if (buffer) {\n this.media.mediaText = buffer.trim();\n }\n }\n break;\n\n default:\n if (state === 'media') {\n buffer += character;\n }\n break;\n }\n }\n }\n});\n\n\n//.CommonJS\nexports.CSSImportRule = CSSOM.CSSImportRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/cssom/#the-cssgroupingrule-interface\n */\nCSSOM.CSSGroupingRule = function CSSGroupingRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSGroupingRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSGroupingRule.prototype.constructor = CSSOM.CSSGroupingRule;\n\n\n/**\n * Used to insert a new CSS rule to a list of CSS rules.\n *\n * @example\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n * cssGroupingRule.insertRule(\"img{border:none;}\", 1)\n * -> 1\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}img{border:none;}\"\n *\n * @param {string} rule\n * @param {number} [index]\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-insertrule\n * @return {number} The index within the grouping rule's collection of the newly inserted rule.\n */\n CSSOM.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentRule = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n/**\n * Used to delete a rule from the grouping rule.\n *\n * cssGroupingRule.cssText\n * -> \"img{border:none;}body{margin:0;}\"\n * cssGroupingRule.deleteRule(0)\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the grouping rule's rule list of the rule to remove.\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-deleterule\n */\n CSSOM.CSSGroupingRule.prototype.deleteRule = function deleteRule(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1)[0].parentRule = null;\n};\n\n//.CommonJS\nexports.CSSGroupingRule = CSSOM.CSSGroupingRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://www.w3.org/TR/css-conditional-3/#the-cssconditionrule-interface\n */\nCSSOM.CSSConditionRule = function CSSConditionRule() {\n CSSOM.CSSGroupingRule.call(this);\n this.cssRules = [];\n};\n\nCSSOM.CSSConditionRule.prototype = new CSSOM.CSSGroupingRule();\nCSSOM.CSSConditionRule.prototype.constructor = CSSOM.CSSConditionRule;\nCSSOM.CSSConditionRule.prototype.conditionText = ''\nCSSOM.CSSConditionRule.prototype.cssText = ''\n\n//.CommonJS\nexports.CSSConditionRule = CSSOM.CSSConditionRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssmediarule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule\n */\nCSSOM.CSSMediaRule = function CSSMediaRule() {\n\tCSSOM.CSSConditionRule.call(this);\n\tthis.media = new CSSOM.MediaList();\n};\n\nCSSOM.CSSMediaRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSMediaRule.prototype.constructor = CSSOM.CSSMediaRule;\nCSSOM.CSSMediaRule.prototype.type = 4;\n\n// https://opensource.apple.com/source/WebCore/WebCore-7611.1.21.161.3/css/CSSMediaRule.cpp\nObject.defineProperties(CSSOM.CSSMediaRule.prototype, {\n \"conditionText\": {\n get: function() {\n return this.media.mediaText;\n },\n set: function(value) {\n this.media.mediaText = value;\n },\n configurable: true,\n enumerable: true\n },\n \"cssText\": {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@media \" + this.media.mediaText + \" {\" + cssTexts.join(\"\") + \"}\";\n },\n configurable: true,\n enumerable: true\n }\n});\n\n\n//.CommonJS\nexports.CSSMediaRule = CSSOM.CSSMediaRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n CSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-conditional-3/#the-csssupportsrule-interface\n */\nCSSOM.CSSSupportsRule = function CSSSupportsRule() {\n CSSOM.CSSConditionRule.call(this);\n};\n\nCSSOM.CSSSupportsRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSSupportsRule.prototype.constructor = CSSOM.CSSSupportsRule;\nCSSOM.CSSSupportsRule.prototype.type = 12;\n\nObject.defineProperty(CSSOM.CSSSupportsRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n\n for (var i = 0, length = this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n\n return \"@supports \" + this.conditionText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n//.CommonJS\nexports.CSSSupportsRule = CSSOM.CSSSupportsRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#css-font-face-rule\n */\nCSSOM.CSSFontFaceRule = function CSSFontFaceRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSFontFaceRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSFontFaceRule.prototype.constructor = CSSOM.CSSFontFaceRule;\nCSSOM.CSSFontFaceRule.prototype.type = 5;\n//FIXME\n//CSSOM.CSSFontFaceRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSFontFaceRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSFontFaceRule.cpp\nObject.defineProperty(CSSOM.CSSFontFaceRule.prototype, \"cssText\", {\n get: function() {\n return \"@font-face {\" + this.style.cssText + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSFontFaceRule = CSSOM.CSSFontFaceRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/shadow-dom/#host-at-rule\n */\nCSSOM.CSSHostRule = function CSSHostRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSHostRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSHostRule.prototype.constructor = CSSOM.CSSHostRule;\nCSSOM.CSSHostRule.prototype.type = 1001;\n//FIXME\n//CSSOM.CSSHostRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSHostRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSHostRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar cssTexts = [];\n\t\tfor (var i=0, length=this.cssRules.length; i < length; i++) {\n\t\t\tcssTexts.push(this.cssRules[i].cssText);\n\t\t}\n\t\treturn \"@host {\" + cssTexts.join(\"\") + \"}\";\n\t}\n});\n\n\n//.CommonJS\nexports.CSSHostRule = CSSOM.CSSHostRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleDeclaration: require('./CSSStyleDeclaration').CSSStyleDeclaration\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframeRule\n */\nCSSOM.CSSKeyframeRule = function CSSKeyframeRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.keyText = '';\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSKeyframeRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframeRule.prototype.constructor = CSSOM.CSSKeyframeRule;\nCSSOM.CSSKeyframeRule.prototype.type = 8;\n//FIXME\n//CSSOM.CSSKeyframeRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframeRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframeRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframeRule.prototype, \"cssText\", {\n get: function() {\n return this.keyText + \" {\" + this.style.cssText + \"} \";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframeRule = CSSOM.CSSKeyframeRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframesRule\n */\nCSSOM.CSSKeyframesRule = function CSSKeyframesRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.name = '';\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSKeyframesRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframesRule.prototype.constructor = CSSOM.CSSKeyframesRule;\nCSSOM.CSSKeyframesRule.prototype.type = 7;\n//FIXME\n//CSSOM.CSSKeyframesRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframesRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframesRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframesRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(\" \" + this.cssRules[i].cssText);\n }\n return \"@\" + (this._vendorPrefix || '') + \"keyframes \" + this.name + \" { \\n\" + cssTexts.join(\"\\n\") + \"\\n}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframesRule = CSSOM.CSSKeyframesRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n *\n * TODO: add if needed\n */\nCSSOM.CSSValue = function CSSValue() {\n};\n\nCSSOM.CSSValue.prototype = {\n\tconstructor: CSSOM.CSSValue,\n\n\t// @see: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n\tset cssText(text) {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('DOMException: property \"cssText\" of \"' + name + '\" is readonly and can not be replaced with \"' + text + '\"!');\n\t},\n\n\tget cssText() {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('getter \"cssText\" of \"' + name + '\" is not implemented!');\n\t},\n\n\t_getConstructorName: function() {\n\t\tvar s = this.constructor.toString(),\n\t\t\t\tc = s.match(/function\\s([^\\(]+)/),\n\t\t\t\tname = c[1];\n\n\t\treturn name;\n\t}\n};\n\n\n//.CommonJS\nexports.CSSValue = CSSOM.CSSValue;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSValue: require('./CSSValue').CSSValue\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://msdn.microsoft.com/en-us/library/ms537634(v=vs.85).aspx\n *\n */\nCSSOM.CSSValueExpression = function CSSValueExpression(token, idx) {\n\tthis._token = token;\n\tthis._idx = idx;\n};\n\nCSSOM.CSSValueExpression.prototype = new CSSOM.CSSValue();\nCSSOM.CSSValueExpression.prototype.constructor = CSSOM.CSSValueExpression;\n\n/**\n * parse css expression() value\n *\n * @return {Object}\n * - error:\n * or\n * - idx:\n * - expression:\n *\n * Example:\n *\n * .selector {\n *\t\tzoom: expression(documentElement.clientWidth > 1000 ? '1000px' : 'auto');\n * }\n */\nCSSOM.CSSValueExpression.prototype.parse = function() {\n\tvar token = this._token,\n\t\t\tidx = this._idx;\n\n\tvar character = '',\n\t\t\texpression = '',\n\t\t\terror = '',\n\t\t\tinfo,\n\t\t\tparen = [];\n\n\n\tfor (; ; ++idx) {\n\t\tcharacter = token.charAt(idx);\n\n\t\t// end of token\n\t\tif (character === '') {\n\t\t\terror = 'css expression error: unfinished expression!';\n\t\t\tbreak;\n\t\t}\n\n\t\tswitch(character) {\n\t\t\tcase '(':\n\t\t\t\tparen.push(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase ')':\n\t\t\t\tparen.pop(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase '/':\n\t\t\t\tif ((info = this._parseJSComment(token, idx))) { // comment?\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\terror = 'css expression error: unfinished comment in expression!';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tidx = info.idx;\n\t\t\t\t\t\t// ignore the comment\n\t\t\t\t\t}\n\t\t\t\t} else if ((info = this._parseJSRexExp(token, idx))) { // regexp\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else { // other\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"'\":\n\t\t\tcase '\"':\n\t\t\t\tinfo = this._parseJSString(token, idx, character);\n\t\t\t\tif (info) { // string\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else {\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (error) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// end of expression\n\t\tif (paren.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tvar ret;\n\tif (error) {\n\t\tret = {\n\t\t\terror: error\n\t\t};\n\t} else {\n\t\tret = {\n\t\t\tidx: idx,\n\t\t\texpression: expression\n\t\t};\n\t}\n\n\treturn ret;\n};\n\n\n/**\n *\n * @return {Object|false}\n * - idx:\n * - text:\n * or\n * - error:\n * or\n * false\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSComment = function(token, idx) {\n\tvar nextChar = token.charAt(idx + 1),\n\t\t\ttext;\n\n\tif (nextChar === '/' || nextChar === '*') {\n\t\tvar startIdx = idx,\n\t\t\t\tendIdx,\n\t\t\t\tcommentEndChar;\n\n\t\tif (nextChar === '/') { // line comment\n\t\t\tcommentEndChar = '\\n';\n\t\t} else if (nextChar === '*') { // block comment\n\t\t\tcommentEndChar = '*/';\n\t\t}\n\n\t\tendIdx = token.indexOf(commentEndChar, startIdx + 1 + 1);\n\t\tif (endIdx !== -1) {\n\t\t\tendIdx = endIdx + commentEndChar.length - 1;\n\t\t\ttext = token.substring(idx, endIdx + 1);\n\t\t\treturn {\n\t\t\t\tidx: endIdx,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t} else {\n\t\t\tvar error = 'css expression error: unfinished comment in expression!';\n\t\t\treturn {\n\t\t\t\terror: error\n\t\t\t};\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\n\n/**\n *\n * @return {Object|false}\n *\t\t\t\t\t- idx:\n *\t\t\t\t\t- text:\n *\t\t\t\t\tor \n *\t\t\t\t\tfalse\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSString = function(token, idx, sep) {\n\tvar endIdx = this._findMatchedIdx(token, idx, sep),\n\t\t\ttext;\n\n\tif (endIdx === -1) {\n\t\treturn false;\n\t} else {\n\t\ttext = token.substring(idx, endIdx + sep.length);\n\n\t\treturn {\n\t\t\tidx: endIdx,\n\t\t\ttext: text\n\t\t};\n\t}\n};\n\n\n/**\n * parse regexp in css expression\n *\n * @return {Object|false}\n *\t\t\t\t- idx:\n *\t\t\t\t- regExp:\n *\t\t\t\tor \n *\t\t\t\tfalse\n */\n\n/*\n\nall legal RegExp\n \n/a/\n(/a/)\n[/a/]\n[12, /a/]\n\n!/a/\n\n+/a/\n-/a/\n* /a/\n/ /a/\n%/a/\n\n===/a/\n!==/a/\n==/a/\n!=/a/\n>/a/\n>=/a/\n</a/\n<=/a/\n\n&/a/\n|/a/\n^/a/\n~/a/\n<</a/\n>>/a/\n>>>/a/\n\n&&/a/\n||/a/\n?/a/\n=/a/\n,/a/\n\n\t\tdelete /a/\n\t\t\t\tin /a/\ninstanceof /a/\n\t\t\t\tnew /a/\n\t\ttypeof /a/\n\t\t\tvoid /a/\n\n*/\nCSSOM.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) {\n\tvar before = token.substring(0, idx).replace(/\\s+$/, \"\"),\n\t\t\tlegalRegx = [\n\t\t\t\t/^$/,\n\t\t\t\t/\\($/,\n\t\t\t\t/\\[$/,\n\t\t\t\t/\\!$/,\n\t\t\t\t/\\+$/,\n\t\t\t\t/\\-$/,\n\t\t\t\t/\\*$/,\n\t\t\t\t/\\/\\s+/,\n\t\t\t\t/\\%$/,\n\t\t\t\t/\\=$/,\n\t\t\t\t/\\>$/,\n\t\t\t\t/<$/,\n\t\t\t\t/\\&$/,\n\t\t\t\t/\\|$/,\n\t\t\t\t/\\^$/,\n\t\t\t\t/\\~$/,\n\t\t\t\t/\\?$/,\n\t\t\t\t/\\,$/,\n\t\t\t\t/delete$/,\n\t\t\t\t/in$/,\n\t\t\t\t/instanceof$/,\n\t\t\t\t/new$/,\n\t\t\t\t/typeof$/,\n\t\t\t\t/void$/\n\t\t\t];\n\n\tvar isLegal = legalRegx.some(function(reg) {\n\t\treturn reg.test(before);\n\t});\n\n\tif (!isLegal) {\n\t\treturn false;\n\t} else {\n\t\tvar sep = '/';\n\n\t\t// same logic as string\n\t\treturn this._parseJSString(token, idx, sep);\n\t}\n};\n\n\n/**\n *\n * find next sep(same line) index in `token`\n *\n * @return {Number}\n *\n */\nCSSOM.CSSValueExpression.prototype._findMatchedIdx = function(token, idx, sep) {\n\tvar startIdx = idx,\n\t\t\tendIdx;\n\n\tvar NOT_FOUND = -1;\n\n\twhile(true) {\n\t\tendIdx = token.indexOf(sep, startIdx + 1);\n\n\t\tif (endIdx === -1) { // not found\n\t\t\tendIdx = NOT_FOUND;\n\t\t\tbreak;\n\t\t} else {\n\t\t\tvar text = token.substring(idx + 1, endIdx),\n\t\t\t\t\tmatched = text.match(/\\\\+$/);\n\t\t\tif (!matched || matched[0] % 2 === 0) { // not escaped\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tstartIdx = endIdx;\n\t\t\t}\n\t\t}\n\t}\n\n\t// boundary must be in the same line(js sting or regexp)\n\tvar nextNewLineIdx = token.indexOf('\\n', idx + 1);\n\tif (nextNewLineIdx < endIdx) {\n\t\tendIdx = NOT_FOUND;\n\t}\n\n\n\treturn endIdx;\n};\n\n\n\n\n//.CommonJS\nexports.CSSValueExpression = CSSOM.CSSValueExpression;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.MatcherList = function MatcherList(){\n this.length = 0;\n};\n\nCSSOM.MatcherList.prototype = {\n\n constructor: CSSOM.MatcherList,\n\n /**\n * @return {string}\n */\n get matcherText() {\n return Array.prototype.join.call(this, \", \");\n },\n\n /**\n * @param {string} value\n */\n set matcherText(value) {\n // just a temporary solution, actually it may be wrong by just split the value with ',', because a url can include ','.\n var values = value.split(\",\");\n var length = this.length = values.length;\n for (var i=0; i<length; i++) {\n this[i] = values[i].trim();\n }\n },\n\n /**\n * @param {string} matcher\n */\n appendMatcher: function(matcher) {\n if (Array.prototype.indexOf.call(this, matcher) === -1) {\n this[this.length] = matcher;\n this.length++;\n }\n },\n\n /**\n * @param {string} matcher\n */\n deleteMatcher: function(matcher) {\n var index = Array.prototype.indexOf.call(this, matcher);\n if (index !== -1) {\n Array.prototype.splice.call(this, index, 1);\n }\n }\n\n};\n\n\n//.CommonJS\nexports.MatcherList = CSSOM.MatcherList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n MatcherList: require(\"./MatcherList\").MatcherList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.CSSDocumentRule = function CSSDocumentRule() {\n CSSOM.CSSRule.call(this);\n this.matcher = new CSSOM.MatcherList();\n this.cssRules = [];\n};\n\nCSSOM.CSSDocumentRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSDocumentRule.prototype.constructor = CSSOM.CSSDocumentRule;\nCSSOM.CSSDocumentRule.prototype.type = 10;\n//FIXME\n//CSSOM.CSSDocumentRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSDocumentRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSDocumentRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@-moz-document \" + this.matcher.matcherText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSDocumentRule = CSSOM.CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @param {string} token\n */\nCSSOM.parse = function parse(token) {\n\n\tvar i = 0;\n\n\t/**\n\t\t\"before-selector\" or\n\t\t\"selector\" or\n\t\t\"atRule\" or\n\t\t\"atBlock\" or\n\t\t\"conditionBlock\" or\n\t\t\"before-name\" or\n\t\t\"name\" or\n\t\t\"before-value\" or\n\t\t\"value\"\n\t*/\n\tvar state = \"before-selector\";\n\n\tvar index;\n\tvar buffer = \"\";\n\tvar valueParenthesisDepth = 0;\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true,\n\t\t\"value-parenthesis\": true,\n\t\t\"atRule\": true,\n\t\t\"importRule-begin\": true,\n\t\t\"importRule\": true,\n\t\t\"atBlock\": true,\n\t\t\"conditionBlock\": true,\n\t\t'documentRule-begin': true\n\t};\n\n\tvar styleSheet = new CSSOM.CSSStyleSheet();\n\n\t// @type CSSStyleSheet|CSSMediaRule|CSSSupportsRule|CSSFontFaceRule|CSSKeyframesRule|CSSDocumentRule\n\tvar currentScope = styleSheet;\n\n\t// @type CSSMediaRule|CSSSupportsRule|CSSKeyframesRule|CSSDocumentRule\n\tvar parentRule;\n\n\tvar ancestorRules = [];\n\tvar hasAncestors = false;\n\tvar prevScope;\n\n\tvar name, priority=\"\", styleRule, mediaRule, supportsRule, importRule, fontFaceRule, keyframesRule, documentRule, hostRule;\n\n\tvar atKeyframesRegExp = /@(-(?:\\w+-)+)?keyframes/g;\n\n\tvar parseError = function(message) {\n\t\tvar lines = token.substring(0, i).split('\\n');\n\t\tvar lineCount = lines.length;\n\t\tvar charCount = lines.pop().length + 1;\n\t\tvar error = new Error(message + ' (line ' + lineCount + ', char ' + charCount + ')');\n\t\terror.line = lineCount;\n\t\t/* jshint sub : true */\n\t\terror['char'] = charCount;\n\t\terror.styleSheet = styleSheet;\n\t\tthrow error;\n\t};\n\n\tfor (var character; (character = token.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf('\"', index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError('Unmatched \"');\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf(\"'\", index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError(\"Unmatched '\");\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (token.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = token.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tparseError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tif (state === \"importRule-begin\") {\n\t\t\t\tbuffer += \" \";\n\t\t\t\tstate = \"importRule\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// At-rule\n\t\tcase \"@\":\n\t\t\tif (token.indexOf(\"@-moz-document\", i) === i) {\n\t\t\t\tstate = \"documentRule-begin\";\n\t\t\t\tdocumentRule = new CSSOM.CSSDocumentRule();\n\t\t\t\tdocumentRule.__starts = i;\n\t\t\t\ti += \"-moz-document\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@media\", i) === i) {\n\t\t\t\tstate = \"atBlock\";\n\t\t\t\tmediaRule = new CSSOM.CSSMediaRule();\n\t\t\t\tmediaRule.__starts = i;\n\t\t\t\ti += \"media\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@supports\", i) === i) {\n\t\t\t\tstate = \"conditionBlock\";\n\t\t\t\tsupportsRule = new CSSOM.CSSSupportsRule();\n\t\t\t\tsupportsRule.__starts = i;\n\t\t\t\ti += \"supports\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@host\", i) === i) {\n\t\t\t\tstate = \"hostRule-begin\";\n\t\t\t\ti += \"host\".length;\n\t\t\t\thostRule = new CSSOM.CSSHostRule();\n\t\t\t\thostRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@import\", i) === i) {\n\t\t\t\tstate = \"importRule-begin\";\n\t\t\t\ti += \"import\".length;\n\t\t\t\tbuffer += \"@import\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@font-face\", i) === i) {\n\t\t\t\tstate = \"fontFaceRule-begin\";\n\t\t\t\ti += \"font-face\".length;\n\t\t\t\tfontFaceRule = new CSSOM.CSSFontFaceRule();\n\t\t\t\tfontFaceRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tatKeyframesRegExp.lastIndex = i;\n\t\t\t\tvar matchKeyframes = atKeyframesRegExp.exec(token);\n\t\t\t\tif (matchKeyframes && matchKeyframes.index === i) {\n\t\t\t\t\tstate = \"keyframesRule-begin\";\n\t\t\t\t\tkeyframesRule = new CSSOM.CSSKeyframesRule();\n\t\t\t\t\tkeyframesRule.__starts = i;\n\t\t\t\t\tkeyframesRule._vendorPrefix = matchKeyframes[1]; // Will come out as undefined if no prefix was found\n\t\t\t\t\ti += matchKeyframes[0].length - 1;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (state === \"selector\") {\n\t\t\t\t\tstate = \"atRule\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\" || state === \"atRule\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tstyleRule.style.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"atBlock\") {\n\t\t\t\tmediaRule.media.mediaText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = mediaRule;\n\t\t\t\tmediaRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"conditionBlock\") {\n\t\t\t\tsupportsRule.conditionText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = supportsRule;\n\t\t\t\tsupportsRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"hostRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = hostRule;\n\t\t\t\thostRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"fontFaceRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tfontFaceRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tfontFaceRule.parentStyleSheet = styleSheet;\n\t\t\t\tstyleRule = fontFaceRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"keyframesRule-begin\") {\n\t\t\t\tkeyframesRule.name = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tkeyframesRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tkeyframesRule.parentStyleSheet = styleSheet;\n\t\t\t\tcurrentScope = parentRule = keyframesRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t} else if (state === \"keyframeRule-begin\") {\n\t\t\t\tstyleRule = new CSSOM.CSSKeyframeRule();\n\t\t\t\tstyleRule.keyText = buffer.trim();\n\t\t\t\tstyleRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"documentRule-begin\") {\n\t\t\t\t// FIXME: what if this '{' is in the url text of the match function?\n\t\t\t\tdocumentRule.matcher.matcherText = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tdocumentRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tcurrentScope = parentRule = documentRule;\n\t\t\t\tdocumentRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"(\":\n\t\t\tif (state === 'value') {\n\t\t\t\t// ie css expression mode\n\t\t\t\tif (buffer.trim() === 'expression') {\n\t\t\t\t\tvar info = (new CSSOM.CSSValueExpression(token, i)).parse();\n\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\tparseError(info.error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuffer += info.expression;\n\t\t\t\t\t\ti = info.idx;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstate = 'value-parenthesis';\n\t\t\t\t\t//always ensure this is reset to 1 on transition\n\t\t\t\t\t//from value to value-parenthesis\n\t\t\t\t\tvalueParenthesisDepth = 1;\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t} else if (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth++;\n\t\t\t\tbuffer += character;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \")\":\n\t\t\tif (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth--;\n\t\t\t\tif (valueParenthesisDepth === 0) state = 'value';\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && token.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"atRule\":\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule\":\n\t\t\t\t\timportRule = new CSSOM.CSSImportRule();\n\t\t\t\t\timportRule.parentStyleSheet = importRule.styleSheet.parentStyleSheet = styleSheet;\n\t\t\t\t\timportRule.cssText = buffer + character;\n\t\t\t\t\tstyleSheet.cssRules.push(importRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbuffer += character;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"before-name\":\n\t\t\t\tcase \"name\":\n\t\t\t\t\tstyleRule.__ends = i + 1;\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tstyleRule.parentRule = parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule.parentStyleSheet = styleSheet;\n\t\t\t\t\tcurrentScope.cssRules.push(styleRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tif (currentScope.constructor === CSSOM.CSSKeyframesRule) {\n\t\t\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"keyframeRule-begin\":\n\t\t\t\tcase \"before-selector\":\n\t\t\t\tcase \"selector\":\n\t\t\t\t\t// End of media/supports/document rule.\n\t\t\t\t\tif (!parentRule) {\n\t\t\t\t\t\tparseError(\"Unexpected }\");\n\t\t\t\t\t}\n\n\t\t\t\t\t// Handle rules nested in @media or @supports\n\t\t\t\t\thasAncestors = ancestorRules.length > 0;\n\n\t\t\t\t\twhile (ancestorRules.length > 0) {\n\t\t\t\t\t\tparentRule = ancestorRules.pop();\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparentRule.constructor.name === \"CSSMediaRule\"\n\t\t\t\t\t\t\t|| parentRule.constructor.name === \"CSSSupportsRule\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tprevScope = currentScope;\n\t\t\t\t\t\t\tcurrentScope = parentRule;\n\t\t\t\t\t\t\tcurrentScope.cssRules.push(prevScope);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ancestorRules.length === 0) {\n\t\t\t\t\t\t\thasAncestors = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (!hasAncestors) {\n\t\t\t\t\t\tcurrentScope.__ends = i + 1;\n\t\t\t\t\t\tstyleSheet.cssRules.push(currentScope);\n\t\t\t\t\t\tcurrentScope = styleSheet;\n\t\t\t\t\t\tparentRule = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tswitch (state) {\n\t\t\t\tcase \"before-selector\":\n\t\t\t\t\tstate = \"selector\";\n\t\t\t\t\tstyleRule = new CSSOM.CSSStyleRule();\n\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-name\":\n\t\t\t\t\tstate = \"name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-value\":\n\t\t\t\t\tstate = \"value\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule-begin\":\n\t\t\t\t\tstate = \"importRule\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn styleSheet;\n};\n\n\n//.CommonJS\nexports.parse = CSSOM.parse;\n// The following modules cannot be included sooner due to the mutual dependency with parse.js\nCSSOM.CSSStyleSheet = require(\"./CSSStyleSheet\").CSSStyleSheet;\nCSSOM.CSSStyleRule = require(\"./CSSStyleRule\").CSSStyleRule;\nCSSOM.CSSImportRule = require(\"./CSSImportRule\").CSSImportRule;\nCSSOM.CSSGroupingRule = require(\"./CSSGroupingRule\").CSSGroupingRule;\nCSSOM.CSSMediaRule = require(\"./CSSMediaRule\").CSSMediaRule;\nCSSOM.CSSConditionRule = require(\"./CSSConditionRule\").CSSConditionRule;\nCSSOM.CSSSupportsRule = require(\"./CSSSupportsRule\").CSSSupportsRule;\nCSSOM.CSSFontFaceRule = require(\"./CSSFontFaceRule\").CSSFontFaceRule;\nCSSOM.CSSHostRule = require(\"./CSSHostRule\").CSSHostRule;\nCSSOM.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nCSSOM.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nCSSOM.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nCSSOM.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nCSSOM.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration\n */\nCSSOM.CSSStyleDeclaration = function CSSStyleDeclaration(){\n\tthis.length = 0;\n\tthis.parentRule = null;\n\n\t// NON-STANDARD\n\tthis._importants = {};\n};\n\n\nCSSOM.CSSStyleDeclaration.prototype = {\n\n\tconstructor: CSSOM.CSSStyleDeclaration,\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set.\n\t */\n\tgetPropertyValue: function(name) {\n\t\treturn this[name] || \"\";\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @param {string} value\n\t * @param {string} [priority=null] \"important\" or null\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty\n\t */\n\tsetProperty: function(name, value, priority) {\n\t\tif (this[name]) {\n\t\t\t// Property already exist. Overwrite it.\n\t\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\t\tif (index < 0) {\n\t\t\t\tthis[this.length] = name;\n\t\t\t\tthis.length++;\n\t\t\t}\n\t\t} else {\n\t\t\t// New property.\n\t\t\tthis[this.length] = name;\n\t\t\tthis.length++;\n\t\t}\n\t\tthis[name] = value + \"\";\n\t\tthis._importants[name] = priority;\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property.\n\t */\n\tremoveProperty: function(name) {\n\t\tif (!(name in this)) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\tif (index < 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar prevValue = this[name];\n\t\tthis[name] = \"\";\n\n\t\t// That's what WebKit and Opera do\n\t\tArray.prototype.splice.call(this, index, 1);\n\n\t\t// That's what Firefox does\n\t\t//this[index] = \"\"\n\n\t\treturn prevValue;\n\t},\n\n\tgetPropertyCSSValue: function() {\n\t\t//FIXME\n\t},\n\n\t/**\n\t *\n\t * @param {String} name\n\t */\n\tgetPropertyPriority: function(name) {\n\t\treturn this._importants[name] || \"\";\n\t},\n\n\n\t/**\n\t * element.style.overflow = \"auto\"\n\t * element.style.getPropertyShorthand(\"overflow-x\")\n\t * -> \"overflow\"\n\t */\n\tgetPropertyShorthand: function() {\n\t\t//FIXME\n\t},\n\n\tisPropertyImplicit: function() {\n\t\t//FIXME\n\t},\n\n\t// Doesn't work in IE < 9\n\tget cssText(){\n\t\tvar properties = [];\n\t\tfor (var i=0, length=this.length; i < length; ++i) {\n\t\t\tvar name = this[i];\n\t\t\tvar value = this.getPropertyValue(name);\n\t\t\tvar priority = this.getPropertyPriority(name);\n\t\t\tif (priority) {\n\t\t\t\tpriority = \" !\" + priority;\n\t\t\t}\n\t\t\tproperties[i] = name + \": \" + value + priority + \";\";\n\t\t}\n\t\treturn properties.join(\" \");\n\t},\n\n\tset cssText(text){\n\t\tvar i, name;\n\t\tfor (i = this.length; i--;) {\n\t\t\tname = this[i];\n\t\t\tthis[name] = \"\";\n\t\t}\n\t\tArray.prototype.splice.call(this, 0, this.length);\n\t\tthis._importants = {};\n\n\t\tvar dummyRule = CSSOM.parse('#bogus{' + text + '}').cssRules[0].style;\n\t\tvar length = dummyRule.length;\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\tname = dummyRule[i];\n\t\t\tthis.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));\n\t\t}\n\t}\n};\n\n\n//.CommonJS\nexports.CSSStyleDeclaration = CSSOM.CSSStyleDeclaration;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleDeclaration.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tCSSMediaRule: require(\"./CSSMediaRule\").CSSMediaRule,\n\tCSSSupportsRule: require(\"./CSSSupportsRule\").CSSSupportsRule,\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSKeyframeRule: require('./CSSKeyframeRule').CSSKeyframeRule,\n\tCSSKeyframesRule: require('./CSSKeyframesRule').CSSKeyframesRule\n};\n///CommonJS\n\n\n/**\n * Produces a deep copy of stylesheet — the instance variables of stylesheet are copied recursively.\n * @param {CSSStyleSheet|CSSOM.CSSStyleSheet} stylesheet\n * @nosideeffects\n * @return {CSSOM.CSSStyleSheet}\n */\nCSSOM.clone = function clone(stylesheet) {\n\n\tvar cloned = new CSSOM.CSSStyleSheet();\n\n\tvar rules = stylesheet.cssRules;\n\tif (!rules) {\n\t\treturn cloned;\n\t}\n\n\tfor (var i = 0, rulesLength = rules.length; i < rulesLength; i++) {\n\t\tvar rule = rules[i];\n\t\tvar ruleClone = cloned.cssRules[i] = new rule.constructor();\n\n\t\tvar style = rule.style;\n\t\tif (style) {\n\t\t\tvar styleClone = ruleClone.style = new CSSOM.CSSStyleDeclaration();\n\t\t\tfor (var j = 0, styleLength = style.length; j < styleLength; j++) {\n\t\t\t\tvar name = styleClone[j] = style[j];\n\t\t\t\tstyleClone[name] = style[name];\n\t\t\t\tstyleClone._importants[name] = style.getPropertyPriority(name);\n\t\t\t}\n\t\t\tstyleClone.length = style.length;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('keyText')) {\n\t\t\truleClone.keyText = rule.keyText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('selectorText')) {\n\t\t\truleClone.selectorText = rule.selectorText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('mediaText')) {\n\t\t\truleClone.mediaText = rule.mediaText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('conditionText')) {\n\t\t\truleClone.conditionText = rule.conditionText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('cssRules')) {\n\t\t\truleClone.cssRules = clone(rule).cssRules;\n\t\t}\n\t}\n\n\treturn cloned;\n\n};\n\n//.CommonJS\nexports.clone = CSSOM.clone;\n///CommonJS\n","'use strict';\n\nexports.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nexports.CSSRule = require('./CSSRule').CSSRule;\nexports.CSSGroupingRule = require('./CSSGroupingRule').CSSGroupingRule;\nexports.CSSConditionRule = require('./CSSConditionRule').CSSConditionRule;\nexports.CSSStyleRule = require('./CSSStyleRule').CSSStyleRule;\nexports.MediaList = require('./MediaList').MediaList;\nexports.CSSMediaRule = require('./CSSMediaRule').CSSMediaRule;\nexports.CSSSupportsRule = require('./CSSSupportsRule').CSSSupportsRule;\nexports.CSSImportRule = require('./CSSImportRule').CSSImportRule;\nexports.CSSFontFaceRule = require('./CSSFontFaceRule').CSSFontFaceRule;\nexports.CSSHostRule = require('./CSSHostRule').CSSHostRule;\nexports.StyleSheet = require('./StyleSheet').StyleSheet;\nexports.CSSStyleSheet = require('./CSSStyleSheet').CSSStyleSheet;\nexports.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nexports.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nexports.MatcherList = require('./MatcherList').MatcherList;\nexports.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\nexports.CSSValue = require('./CSSValue').CSSValue;\nexports.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nexports.parse = require('./parse').parse;\nexports.clone = require('./clone').clone;\n","import {parse} from 'cssom';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {SHEET} from '../shared/symbols.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'style';\n\n/**\n * @implements globalThis.HTMLStyleElement\n */\nclass HTMLStyleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[SHEET] = null;\n }\n\n get sheet() {\n const sheet = this[SHEET];\n if (sheet !== null) {\n return sheet;\n }\n return this[SHEET] = parse(this.textContent);\n }\n\n get innerHTML() {\n return super.innerHTML || '';\n }\n set innerHTML(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get innerText() {\n return super.innerText || '';\n }\n set innerText(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get textContent() {\n return super.textContent || '';\n }\n set textContent(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n}\n\nregisterHTMLClass(tagName, HTMLStyleElement);\n\nexport {HTMLStyleElement};\n","import {stringAttribute} from '../shared/attributes.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTimeElement\n */\nclass HTMLTimeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'time') {\n super(ownerDocument, localName);\n }\n\n /**\n * @type {string}\n */\n get dateTime() { return stringAttribute.get(this, 'datetime'); }\n set dateTime(value) { stringAttribute.set(this, 'datetime', value); }\n}\n\nregisterHTMLClass('time', HTMLTimeElement)\n\nexport {HTMLTimeElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFieldSetElement\n */\nexport class HTMLFieldSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'fieldset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLEmbedElement\n */\nexport class HTMLEmbedElement extends HTMLElement {\n constructor(ownerDocument, localName = 'embed') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHRElement\n */\nexport class HTMLHRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'hr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLProgressElement\n */\nexport class HTMLProgressElement extends HTMLElement {\n constructor(ownerDocument, localName = 'progress') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParagraphElement\n */\nexport class HTMLParagraphElement extends HTMLElement {\n constructor(ownerDocument, localName = 'p') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableElement\n */\nexport class HTMLTableElement extends HTMLElement {\n constructor(ownerDocument, localName = 'table') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameSetElement\n */\nexport class HTMLFrameSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frameset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLIElement\n */\nexport class HTMLLIElement extends HTMLElement {\n constructor(ownerDocument, localName = 'li') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBaseElement\n */\nexport class HTMLBaseElement extends HTMLElement {\n constructor(ownerDocument, localName = 'base') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataListElement\n */\nexport class HTMLDataListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'datalist') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'input';\n\n/**\n * @implements globalThis.HTMLInputElement\n */\nclass HTMLInputElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get autofocus() { return booleanAttribute.get(this, 'autofocus') || -1; }\n set autofocus(value) { booleanAttribute.set(this, 'autofocus', value); }\n\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLInputElement);\n\nexport {HTMLInputElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParamElement\n */\nexport class HTMLParamElement extends HTMLElement {\n constructor(ownerDocument, localName = 'param') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMediaElement\n */\nexport class HTMLMediaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'media') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAudioElement\n */\nexport class HTMLAudioElement extends HTMLElement {\n constructor(ownerDocument, localName = 'audio') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'h1';\n\n/**\n * @implements globalThis.HTMLHeadingElement\n */\nclass HTMLHeadingElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass([tagName, 'h2', 'h3', 'h4', 'h5', 'h6'], HTMLHeadingElement);\n\nexport {HTMLHeadingElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDirectoryElement\n */\nexport class HTMLDirectoryElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dir') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLQuoteElement\n */\nexport class HTMLQuoteElement extends HTMLElement {\n constructor(ownerDocument, localName = 'quote') {\n super(ownerDocument, localName);\n }\n}\n","\n class Canvas {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n }\n getContext() { return null; }\n toDataURL() { return ''; }\n }\n export default {createCanvas: (width, height) => new Canvas(width, height)};\n ","import {IMAGE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute} from '../shared/attributes.js';\n\nimport Canvas from '../../commonjs/canvas.cjs';\n\nimport {HTMLElement} from './element.js';\n\nconst {createCanvas} = Canvas;\n\nconst tagName = 'canvas';\n\n/**\n * @implements globalThis.HTMLCanvasElement\n */\nclass HTMLCanvasElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[IMAGE] = createCanvas(300, 150);\n }\n\n get width() {\n return this[IMAGE].width;\n }\n\n set width(value) {\n numericAttribute.set(this, 'width', value);\n this[IMAGE].width = value;\n }\n\n get height() {\n return this[IMAGE].height;\n }\n\n set height(value) {\n numericAttribute.set(this, 'height', value);\n this[IMAGE].height = value;\n }\n\n getContext(type) {\n return this[IMAGE].getContext(type);\n }\n\n toDataURL(...args) {\n return this[IMAGE].toDataURL(...args);\n }\n}\n\nregisterHTMLClass(tagName, HTMLCanvasElement);\n\nexport {HTMLCanvasElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLegendElement\n */\nexport class HTMLLegendElement extends HTMLElement {\n constructor(ownerDocument, localName = 'legend') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'option';\n\n/**\n * @implements globalThis.HTMLOptionElement\n */\nclass HTMLOptionElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n\n get selected() { return booleanAttribute.get(this, 'selected'); }\n set selected(value) {\n const option = this.parentElement?.querySelector('option[selected]');\n if (option && option !== this)\n option.selected = false;\n booleanAttribute.set(this, 'selected', value);\n }\n}\n\nregisterHTMLClass(tagName, HTMLOptionElement);\n\nexport {HTMLOptionElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLSpanElement\n */\nexport class HTMLSpanElement extends HTMLElement {\n constructor(ownerDocument, localName = 'span') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMeterElement\n */\nexport class HTMLMeterElement extends HTMLElement {\n constructor(ownerDocument, localName = 'meter') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLVideoElement\n */\nexport class HTMLVideoElement extends HTMLElement {\n constructor(ownerDocument, localName = 'video') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCellElement\n */\nexport class HTMLTableCellElement extends HTMLElement {\n constructor(ownerDocument, localName = 'td') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'title';\n\n/**\n * @implements globalThis.HTMLTitleElement\n */\nclass HTMLTitleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass(tagName, HTMLTitleElement);\n\nexport {HTMLTitleElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOutputElement\n */\nexport class HTMLOutputElement extends HTMLElement {\n constructor(ownerDocument, localName = 'output') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableRowElement\n */\nexport class HTMLTableRowElement extends HTMLElement {\n constructor(ownerDocument, localName = 'tr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataElement\n */\nexport class HTMLDataElement extends HTMLElement {\n constructor(ownerDocument, localName = 'data') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMenuElement\n */\nexport class HTMLMenuElement extends HTMLElement {\n constructor(ownerDocument, localName = 'menu') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\nimport {NodeList} from '../interface/node-list.js';\n\nconst tagName = 'select';\n\n/**\n * @implements globalThis.HTMLSelectElement\n */\nclass HTMLSelectElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get options() {\n let children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n if (firstElementChild.tagName === 'OPTGROUP')\n children.push(...firstElementChild.children);\n else\n children.push(firstElementChild);\n firstElementChild = firstElementChild.nextElementSibling;\n }\n return children;\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n /* c8 ignore stop */\n\n get value() { return this.querySelector('option[selected]')?.value; }\n}\n\nregisterHTMLClass(tagName, HTMLSelectElement);\n\nexport {HTMLSelectElement};\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBRElement\n */\nexport class HTMLBRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'br') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'button';\n\n/**\n * @implements globalThis.HTMLButtonElement\n */\nclass HTMLButtonElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLButtonElement);\n\nexport {HTMLButtonElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMapElement\n */\nexport class HTMLMapElement extends HTMLElement {\n constructor(ownerDocument, localName = 'map') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOptGroupElement\n */\nexport class HTMLOptGroupElement extends HTMLElement {\n constructor(ownerDocument, localName = 'optgroup') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDListElement\n */\nexport class HTMLDListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dl') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'textarea';\n\n/**\n * @implements globalThis.HTMLTextAreaElement\n */\nclass HTMLTextAreaElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return this.textContent; }\n set value(content) { this.textContent = content; }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLTextAreaElement);\n\nexport {HTMLTextAreaElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFontElement\n */\nexport class HTMLFontElement extends HTMLElement {\n constructor(ownerDocument, localName = 'font') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDivElement\n */\nexport class HTMLDivElement extends HTMLElement {\n constructor(ownerDocument, localName = 'div') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'link';\n\n/**\n * @implements globalThis.HTMLLinkElement\n */\nclass HTMLLinkElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get href() { return stringAttribute.get(this, 'href'); }\n set href(value) { stringAttribute.set(this, 'href', value); }\n\n get hreflang() { return stringAttribute.get(this, 'hreflang'); }\n set hreflang(value) { stringAttribute.set(this, 'hreflang', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n\n get rel() { return stringAttribute.get(this, 'rel'); }\n set rel(value) { stringAttribute.set(this, 'rel', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLLinkElement);\n\nexport {HTMLLinkElement};\n","import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'slot';\n\n/**\n * @implements globalThis.HTMLSlotElement\n */\nclass HTMLSlotElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n assign() {}\n\n assignedNodes(options) {\n const isNamedSlot = !!this.name;\n const hostChildNodes = this.getRootNode().host?.childNodes ?? [];\n let slottables;\n\n if (isNamedSlot) {\n slottables = [...hostChildNodes].filter(node => node.slot === this.name);\n } else {\n slottables = [...hostChildNodes].filter(node => !node.slot);\n }\n\n if (options?.flatten) {\n const result = [];\n\n // Element and Text nodes are slottables. A slot can be a slottable.\n for (let slottable of slottables) {\n if (slottable.localName === 'slot') {\n result.push(...slottable.assignedNodes({ flatten: true }));\n } else {\n result.push(slottable);\n }\n }\n\n slottables = result;\n }\n\n // If no assigned nodes are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.childNodes];\n }\n\n assignedElements(options) {\n const slottables = this.assignedNodes(options).filter(n => n.nodeType === 1);\n\n // If no assigned elements are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.children];\n }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSlotElement);\n\nexport {HTMLSlotElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFormElement\n */\nexport class HTMLFormElement extends HTMLElement {\n constructor(ownerDocument, localName = 'form') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'img';\n\n/**\n * @implements globalThis.HTMLImageElement\n */\nclass HTMLImageElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get alt() { return stringAttribute.get(this, 'alt'); }\n set alt(value) { stringAttribute.set(this, 'alt', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n get width() { return numericAttribute.get(this, 'width'); }\n set width(value) { numericAttribute.set(this, 'width', value); }\n\n get height() { return numericAttribute.get(this, 'height'); }\n set height(value) { numericAttribute.set(this, 'height', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLImageElement);\n\nexport {HTMLImageElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPreElement\n */\nexport class HTMLPreElement extends HTMLElement {\n constructor(ownerDocument, localName = 'pre') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUListElement\n */\nexport class HTMLUListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ul') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport { stringAttribute } from '../shared/attributes.js';\n\nconst tagName = 'meta'\n/**\n * @implements globalThis.HTMLMetaElement\n */\nexport class HTMLMetaElement extends HTMLElement {\n constructor(ownerDocument, localName =tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return stringAttribute.get(this, 'name'); }\n set name(value) { stringAttribute.set(this, 'name', value); }\n\n get httpEquiv() { return stringAttribute.get(this, 'http-equiv'); }\n set httpEquiv(value) { stringAttribute.set(this, 'http-equiv', value); }\n\n get content() { return stringAttribute.get(this, 'content'); }\n set content(value) { stringAttribute.set(this, 'content', value); }\n\n get charset() { return stringAttribute.get(this, 'charset'); }\n set charset(value) { stringAttribute.set(this, 'charset', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLMetaElement);\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPictureElement\n */\nexport class HTMLPictureElement extends HTMLElement {\n constructor(ownerDocument, localName = 'picture') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAreaElement\n */\nexport class HTMLAreaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'area') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOListElement\n */\nexport class HTMLOListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ol') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCaptionElement\n */\nexport class HTMLTableCaptionElement extends HTMLElement {\n constructor(ownerDocument, localName = 'caption') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'a';\n\n/**\n * @implements globalThis.HTMLAnchorElement\n */\nclass HTMLAnchorElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get href() { return encodeURI(decodeURI(stringAttribute.get(this, 'href'))); }\n set href(value) { stringAttribute.set(this, 'href', decodeURI(value)); }\n\n get download() { return encodeURI(decodeURI(stringAttribute.get(this, 'download'))); }\n set download(value) { stringAttribute.set(this, 'download', decodeURI(value)); }\n\n get target() { return stringAttribute.get(this, 'target'); }\n set target(value) { stringAttribute.set(this, 'target', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n\n get rel() { return stringAttribute.get(this, 'rel'); }\n set rel(value) { stringAttribute.set(this, 'rel', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLAnchorElement);\n\nexport {HTMLAnchorElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLabelElement\n */\nexport class HTMLLabelElement extends HTMLElement {\n constructor(ownerDocument, localName = 'label') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUnknownElement\n */\nexport class HTMLUnknownElement extends HTMLElement {\n constructor(ownerDocument, localName = 'unknown') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLModElement\n */\nexport class HTMLModElement extends HTMLElement {\n constructor(ownerDocument, localName = 'mod') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDetailsElement\n */\nexport class HTMLDetailsElement extends HTMLElement {\n constructor(ownerDocument, localName = 'details') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'source';\n\n/**\n * @implements globalThis.HTMLSourceElement\n */\nclass HTMLSourceElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSourceElement);\n\nexport {HTMLSourceElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTrackElement\n */\nexport class HTMLTrackElement extends HTMLElement {\n constructor(ownerDocument, localName = 'track') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMarqueeElement\n */\nexport class HTMLMarqueeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'marquee') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from '../html/element.js';\nimport {HTMLTemplateElement} from '../html/template-element.js';\nimport {HTMLHtmlElement} from '../html/html-element.js';\nimport {HTMLScriptElement} from '../html/script-element.js';\nimport {HTMLFrameElement} from '../html/frame-element.js';\nimport {HTMLIFrameElement} from '../html/i-frame-element.js';\nimport {HTMLObjectElement} from '../html/object-element.js';\nimport {HTMLHeadElement} from '../html/head-element.js';\nimport {HTMLBodyElement} from '../html/body-element.js';\nimport {HTMLStyleElement} from '../html/style-element.js';\nimport {HTMLTimeElement} from '../html/time-element.js';\nimport {HTMLFieldSetElement} from '../html/field-set-element.js';\nimport {HTMLEmbedElement} from '../html/embed-element.js';\nimport {HTMLHRElement} from '../html/hr-element.js';\nimport {HTMLProgressElement} from '../html/progress-element.js';\nimport {HTMLParagraphElement} from '../html/paragraph-element.js';\nimport {HTMLTableElement} from '../html/table-element.js';\nimport {HTMLFrameSetElement} from '../html/frame-set-element.js';\nimport {HTMLLIElement} from '../html/li-element.js';\nimport {HTMLBaseElement} from '../html/base-element.js';\nimport {HTMLDataListElement} from '../html/data-list-element.js';\nimport {HTMLInputElement} from '../html/input-element.js';\nimport {HTMLParamElement} from '../html/param-element.js';\nimport {HTMLMediaElement} from '../html/media-element.js';\nimport {HTMLAudioElement} from '../html/audio-element.js';\nimport {HTMLHeadingElement} from '../html/heading-element.js';\nimport {HTMLDirectoryElement} from '../html/directory-element.js';\nimport {HTMLQuoteElement} from '../html/quote-element.js';\nimport {HTMLCanvasElement} from '../html/canvas-element.js';\nimport {HTMLLegendElement} from '../html/legend-element.js';\nimport {HTMLOptionElement} from '../html/option-element.js';\nimport {HTMLSpanElement} from '../html/span-element.js';\nimport {HTMLMeterElement} from '../html/meter-element.js';\nimport {HTMLVideoElement} from '../html/video-element.js';\nimport {HTMLTableCellElement} from '../html/table-cell-element.js';\nimport {HTMLTitleElement} from '../html/title-element.js';\nimport {HTMLOutputElement} from '../html/output-element.js';\nimport {HTMLTableRowElement} from '../html/table-row-element.js';\nimport {HTMLDataElement} from '../html/data-element.js';\nimport {HTMLMenuElement} from '../html/menu-element.js';\nimport {HTMLSelectElement} from '../html/select-element.js';\nimport {HTMLBRElement} from '../html/br-element.js';\nimport {HTMLButtonElement} from '../html/button-element.js';\nimport {HTMLMapElement} from '../html/map-element.js';\nimport {HTMLOptGroupElement} from '../html/opt-group-element.js';\nimport {HTMLDListElement} from '../html/d-list-element.js';\nimport {HTMLTextAreaElement} from '../html/text-area-element.js';\nimport {HTMLFontElement} from '../html/font-element.js';\nimport {HTMLDivElement} from '../html/div-element.js';\nimport {HTMLLinkElement} from '../html/link-element.js';\nimport {HTMLSlotElement} from '../html/slot-element.js';\nimport {HTMLFormElement} from '../html/form-element.js';\nimport {HTMLImageElement} from '../html/image-element.js';\nimport {HTMLPreElement} from '../html/pre-element.js';\nimport {HTMLUListElement} from '../html/u-list-element.js';\nimport {HTMLMetaElement} from '../html/meta-element.js';\nimport {HTMLPictureElement} from '../html/picture-element.js';\nimport {HTMLAreaElement} from '../html/area-element.js';\nimport {HTMLOListElement} from '../html/o-list-element.js';\nimport {HTMLTableCaptionElement} from '../html/table-caption-element.js';\nimport {HTMLAnchorElement} from '../html/anchor-element.js';\nimport {HTMLLabelElement} from '../html/label-element.js';\nimport {HTMLUnknownElement} from '../html/unknown-element.js';\nimport {HTMLModElement} from '../html/mod-element.js';\nimport {HTMLDetailsElement} from '../html/details-element.js';\nimport {HTMLSourceElement} from '../html/source-element.js';\nimport {HTMLTrackElement} from '../html/track-element.js';\nimport {HTMLMarqueeElement} from '../html/marquee-element.js';\n\nexport {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n\nexport const HTMLClasses = {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n","// TODO: ensure all these are text only\n// /^(?:plaintext|script|style|textarea|title|xmp)$/i\n\nconst voidElements = {test: () => true};\nexport const Mime = {\n 'text/html': {\n docType: '<!DOCTYPE html>',\n ignoreCase: true,\n voidElements: /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i\n },\n 'image/svg+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'text/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xhtml+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n }\n};\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.CustomEvent\n */\nexport class CustomEvent extends Event {\n constructor(type, eventInitDict = {}) {\n super(type, eventInitDict);\n this.detail = eventInitDict.detail;\n }\n}\n\n/* c8 ignore stop */\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.InputEvent\n */\nexport class InputEvent extends Event {\n constructor(type, inputEventInit = {}) {\n super(type, inputEventInit);\n this.inputType = inputEventInit.inputType;\n this.data = inputEventInit.data;\n this.dataTransfer = inputEventInit.dataTransfer;\n this.isComposing = inputEventInit.isComposing || false;\n this.ranges = inputEventInit.ranges;\n }\n}\n/* c8 ignore stop */\n","import {HTMLImageElement} from '../html/image-element.js';\n\nexport const ImageClass = ownerDocument =>\n/**\n * @implements globalThis.Image\n */\nclass Image extends HTMLImageElement {\n constructor(width, height) {\n super(ownerDocument);\n switch (arguments.length) {\n case 1:\n this.height = width;\n this.width = width;\n break;\n case 2:\n this.height = height;\n this.width = width;\n break;\n }\n }\n};\n","// https://dom.spec.whatwg.org/#concept-live-range\n\nimport {END, NEXT, PREV, START} from '../shared/symbols.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nconst deleteContents = ({[START]: start, [END]: end}, fragment = null) => {\n setAdjacent(start[PREV], end[NEXT]);\n do {\n const after = getEnd(start);\n const next = after === end ? after : after[NEXT];\n if (fragment)\n fragment.insertBefore(start, fragment[END]);\n else\n start.remove();\n start = next;\n } while (start !== end);\n};\n\n/**\n * @implements globalThis.Range\n */\nexport class Range {\n constructor() {\n this[START] = null;\n this[END] = null;\n this.commonAncestorContainer = null;\n }\n\n /* TODO: this is more complicated than it looks\n setStart(node, offset) {\n this[START] = node.childNodes[offset];\n }\n\n setEnd(node, offset) {\n this[END] = getEnd(node.childNodes[offset]);\n }\n //*/\n\n insertNode(newNode) {\n this[END].parentNode.insertBefore(newNode, this[START]);\n }\n\n selectNode(node) {\n this[START] = node;\n this[END] = getEnd(node);\n }\n\n // TODO: SVG elements should then create contextual fragments\n // that return SVG nodes\n selectNodeContents(node) {\n this.selectNode(node);\n this.commonAncestorContainer = node;\n }\n\n surroundContents(parentNode) {\n parentNode.replaceChildren(this.extractContents());\n }\n\n setStartBefore(node) {\n this[START] = node;\n }\n\n setStartAfter(node) {\n this[START] = node.nextSibling;\n }\n\n setEndBefore(node) {\n this[END] = getEnd(node.previousSibling);\n }\n\n setEndAfter(node) {\n this[END] = getEnd(node);\n }\n\n cloneContents() {\n let {[START]: start, [END]: end} = this;\n const fragment = start.ownerDocument.createDocumentFragment();\n while (start !== end) {\n fragment.insertBefore(start.cloneNode(true), fragment[END]);\n start = getEnd(start);\n if (start !== end)\n start = start[NEXT];\n }\n return fragment;\n }\n\n deleteContents() {\n deleteContents(this);\n }\n\n extractContents() {\n const fragment = this[START].ownerDocument.createDocumentFragment();\n deleteContents(this, fragment);\n return fragment;\n }\n\n createContextualFragment(html) {\n const { commonAncestorContainer: doc } = this;\n const isSVG = 'ownerSVGElement' in doc;\n const document = isSVG ? doc.ownerDocument : doc;\n const template = document.createElement('template');\n template.innerHTML = html;\n let {content} = template;\n if (isSVG) {\n const childNodes = [...content.childNodes];\n content = document.createDocumentFragment();\n Object.setPrototypeOf(content, SVGElement.prototype);\n content.ownerSVGElement = document;\n for (const child of childNodes) {\n Object.setPrototypeOf(child, SVGElement.prototype);\n child.ownerSVGElement = document;\n content.appendChild(child);\n }\n }\n else\n this.selectNode(content);\n return content;\n }\n\n cloneRange() {\n const range = new Range;\n range[START] = this[START];\n range[END] = this[END];\n return range;\n }\n}\n","import {\n DOCUMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n SHOW_ALL,\n SHOW_ELEMENT,\n SHOW_CDATA_SECTION,\n SHOW_COMMENT,\n SHOW_TEXT\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT} from '../shared/symbols.js';\n\nconst isOK = ({nodeType}, mask) => {\n switch (nodeType) {\n case ELEMENT_NODE:\n return mask & SHOW_ELEMENT;\n case TEXT_NODE:\n return mask & SHOW_TEXT;\n case COMMENT_NODE:\n return mask & SHOW_COMMENT;\n case CDATA_SECTION_NODE:\n return mask & SHOW_CDATA_SECTION;\n }\n return 0;\n};\n\n/**\n * @implements globalThis.TreeWalker\n */\nexport class TreeWalker {\n constructor(root, whatToShow = SHOW_ALL) {\n this.root = root;\n this.currentNode = root;\n this.whatToShow = whatToShow;\n let {[NEXT]: next, [END]: end} = root;\n if (root.nodeType === DOCUMENT_NODE) {\n const {documentElement} = root;\n next = documentElement;\n end = documentElement[END];\n }\n const nodes = [];\n while (next !== end) {\n if (isOK(next, whatToShow))\n nodes.push(next);\n next = next[NEXT];\n }\n this[PRIVATE] = {i: 0, nodes};\n }\n\n nextNode() {\n const $ = this[PRIVATE];\n this.currentNode = $.i < $.nodes.length ? $.nodes[$.i++] : null;\n return this.currentNode;\n }\n}\n","import {performance} from '../../commonjs/perf_hooks.cjs';\n\nimport {DOCUMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, SVG_NAMESPACE} from '../shared/constants.js';\n\nimport {\n CUSTOM_ELEMENTS, DOM_PARSER, GLOBALS, IMAGE, MUTATION_OBSERVER,\n DOCTYPE, END, NEXT, MIME, EVENT_TARGET, UPGRADE\n} from '../shared/symbols.js';\n\nimport {Facades, illegalConstructor} from '../shared/facades.js';\nimport {HTMLClasses} from '../shared/html-classes.js';\nimport {Mime} from '../shared/mime.js';\nimport {knownSiblings} from '../shared/utils.js';\nimport {assign, create, defineProperties, setPrototypeOf} from '../shared/object.js';\n\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {Attr} from './attr.js';\nimport {CDATASection} from './cdata-section.js'\nimport {Comment} from './comment.js';\nimport {CustomElementRegistry} from './custom-element-registry.js';\nimport {CustomEvent} from './custom-event.js';\nimport {DocumentFragment} from './document-fragment.js';\nimport {DocumentType} from './document-type.js';\nimport {Element} from './element.js';\nimport {Event} from './event.js';\nimport {EventTarget} from './event-target.js';\nimport {InputEvent} from './input-event.js';\nimport {ImageClass} from './image.js';\nimport {MutationObserverClass} from './mutation-observer.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {NodeList} from './node-list.js';\nimport {Range} from './range.js';\nimport {Text} from './text.js';\nimport {TreeWalker} from './tree-walker.js';\n\nconst query = (method, ownerDocument, selectors) => {\n let {[NEXT]: next, [END]: end} = ownerDocument;\n return method.call({ownerDocument, [NEXT]: next, [END]: end}, selectors);\n};\n\nconst globalExports = assign(\n {},\n Facades,\n HTMLClasses,\n {\n CustomEvent,\n Event,\n EventTarget,\n InputEvent,\n NamedNodeMap,\n NodeList\n }\n);\n\nconst window = new WeakMap;\n\n/**\n * @implements globalThis.Document\n */\nexport class Document extends NonElementParentNode {\n constructor(type) {\n super(null, '#document', DOCUMENT_NODE);\n this[CUSTOM_ELEMENTS] = {active: false, registry: null};\n this[MUTATION_OBSERVER] = {active: false, class: null};\n this[MIME] = Mime[type];\n /** @type {DocumentType} */\n this[DOCTYPE] = null;\n this[DOM_PARSER] = null;\n this[GLOBALS] = null;\n this[IMAGE] = null;\n this[UPGRADE] = null;\n }\n\n /**\n * @type {globalThis.Document['defaultView']}\n */\n get defaultView() {\n if (!window.has(this))\n window.set(this, new Proxy(globalThis, {\n set: (target, name, value) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n this[EVENT_TARGET][name] = value;\n break;\n default:\n target[name] = value;\n break;\n }\n return true;\n },\n get: (globalThis, name) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n if (!this[EVENT_TARGET]) {\n const et = this[EVENT_TARGET] = new EventTarget;\n et.dispatchEvent = et.dispatchEvent.bind(et);\n et.addEventListener = et.addEventListener.bind(et);\n et.removeEventListener = et.removeEventListener.bind(et);\n }\n return this[EVENT_TARGET][name];\n case 'document':\n return this;\n /* c8 ignore start */\n case 'navigator':\n return {\n userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'\n };\n /* c8 ignore stop */\n case 'window':\n return window.get(this);\n case 'customElements':\n if (!this[CUSTOM_ELEMENTS].registry)\n this[CUSTOM_ELEMENTS] = new CustomElementRegistry(this);\n return this[CUSTOM_ELEMENTS];\n case 'performance':\n return performance;\n case 'DOMParser':\n return this[DOM_PARSER];\n case 'Image':\n if (!this[IMAGE])\n this[IMAGE] = ImageClass(this);\n return this[IMAGE];\n case 'MutationObserver':\n if (!this[MUTATION_OBSERVER].class)\n this[MUTATION_OBSERVER] = new MutationObserverClass(this);\n return this[MUTATION_OBSERVER].class;\n }\n return (this[GLOBALS] && this[GLOBALS][name]) ||\n globalExports[name] ||\n globalThis[name];\n }\n }));\n return window.get(this);\n }\n\n get doctype() {\n const docType = this[DOCTYPE];\n if (docType)\n return docType;\n const {firstChild} = this;\n if (firstChild && firstChild.nodeType === DOCUMENT_TYPE_NODE)\n return (this[DOCTYPE] = firstChild);\n return null;\n }\n\n set doctype(value) {\n if (/^([a-z:]+)(\\s+system|\\s+public(\\s+\"([^\"]+)\")?)?(\\s+\"([^\"]+)\")?/i.test(value)) {\n const {$1: name, $4: publicId, $6: systemId} = RegExp;\n this[DOCTYPE] = new DocumentType(this, name, publicId, systemId);\n knownSiblings(this, this[DOCTYPE], this[NEXT]);\n }\n }\n\n get documentElement() {\n return this.firstElementChild;\n }\n\n get isConnected() { return true; }\n\n /**\n * @protected\n */\n _getParent() {\n return this[EVENT_TARGET];\n }\n\n createAttribute(name) { return new Attr(this, name); }\n createCDATASection(data) { return new CDATASection(this, data); }\n createComment(textContent) { return new Comment(this, textContent); }\n createDocumentFragment() { return new DocumentFragment(this); }\n createDocumentType(name, publicId, systemId) { return new DocumentType(this, name, publicId, systemId); }\n createElement(localName) { return new Element(this, localName); }\n createRange() {\n const range = new Range;\n range.commonAncestorContainer = this;\n return range;\n }\n createTextNode(textContent) { return new Text(this, textContent); }\n createTreeWalker(root, whatToShow = -1) { return new TreeWalker(root, whatToShow); }\n createNodeIterator(root, whatToShow = -1) { return this.createTreeWalker(root, whatToShow); }\n\n createEvent(name) {\n const event = create(name === 'Event' ? new Event('') : new CustomEvent(''));\n event.initEvent = event.initCustomEvent = (\n type,\n canBubble = false,\n cancelable = false,\n detail\n ) => {\n event.bubbles = !!canBubble;\n\n defineProperties(event, {\n type: {value: type},\n canBubble: {value: canBubble},\n cancelable: {value: cancelable},\n detail: {value: detail}\n });\n };\n return event;\n }\n\n cloneNode(deep = false) {\n const {\n constructor,\n [CUSTOM_ELEMENTS]: customElements,\n [DOCTYPE]: doctype\n } = this;\n const document = new constructor();\n document[CUSTOM_ELEMENTS] = customElements;\n if (deep) {\n const end = document[END];\n const {childNodes} = this;\n for (let {length} = childNodes, i = 0; i < length; i++)\n document.insertBefore(childNodes[i].cloneNode(true), end);\n if (doctype)\n document[DOCTYPE] = childNodes[0];\n }\n return document;\n }\n\n importNode(externalNode) {\n // important: keep the signature length as *one*\n // or it would behave like old IE or Edge with polyfills\n const deep = 1 < arguments.length && !!arguments[1];\n const node = externalNode.cloneNode(deep);\n const {[CUSTOM_ELEMENTS]: customElements} = this;\n const {active} = customElements;\n const upgrade = element => {\n const {ownerDocument, nodeType} = element;\n element.ownerDocument = this;\n if (active && ownerDocument !== this && nodeType === ELEMENT_NODE)\n customElements.upgrade(element);\n };\n upgrade(node);\n if (deep) {\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n let {[NEXT]: next, [END]: end} = node;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n upgrade(next);\n next = next[NEXT];\n }\n break;\n }\n }\n }\n return node;\n }\n\n toString() { return this.childNodes.join(''); }\n\n querySelector(selectors) {\n return query(super.querySelector, this, selectors);\n }\n\n querySelectorAll(selectors) {\n return query(super.querySelectorAll, this, selectors);\n }\n\n /* c8 ignore start */\n getElementsByTagNameNS(_, name) {\n return this.getElementsByTagName(name);\n }\n createAttributeNS(_, name) {\n return this.createAttribute(name);\n }\n createElementNS(nsp, localName, options) {\n return nsp === SVG_NAMESPACE ?\n new SVGElement(this, localName, null) :\n this.createElement(localName, options);\n }\n /* c8 ignore stop */\n}\n\nsetPrototypeOf(\n globalExports.Document = function Document() {\n illegalConstructor();\n },\n Document\n).prototype = Document.prototype;\n","import {ELEMENT_NODE} from '../shared/constants.js';\nimport {CUSTOM_ELEMENTS, END, NEXT} from '../shared/symbols.js';\nimport {htmlClasses} from '../shared/register-html-class.js';\n\nimport {Document} from '../interface/document.js';\nimport {NodeList} from '../interface/node-list.js';\nimport {customElements} from '../interface/custom-element-registry.js';\n\nimport {HTMLElement} from './element.js';\n\nconst createHTMLElement = (ownerDocument, builtin, localName, options) => {\n if (!builtin && htmlClasses.has(localName)) {\n const Class = htmlClasses.get(localName);\n return new Class(ownerDocument, localName);\n }\n const {[CUSTOM_ELEMENTS]: {active, registry}} = ownerDocument;\n if (active) {\n const ce = builtin ? options.is : localName;\n if (registry.has(ce)) {\n const {Class} = registry.get(ce);\n const element = new Class(ownerDocument, localName);\n customElements.set(element, {connected: false});\n return element;\n }\n }\n return new HTMLElement(ownerDocument, localName);\n};\n\n/**\n * @implements globalThis.HTMLDocument\n */\nexport class HTMLDocument extends Document {\n constructor() { super('text/html'); }\n\n get all() {\n const nodeList = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n switch (next.nodeType) {\n case ELEMENT_NODE:\n nodeList.push(next);\n break;\n }\n next = next[NEXT];\n }\n return nodeList;\n }\n\n /**\n * @type HTMLHeadElement\n */\n get head() {\n const {documentElement} = this;\n let {firstElementChild} = documentElement;\n if (!firstElementChild || firstElementChild.tagName !== 'HEAD') {\n firstElementChild = this.createElement('head');\n documentElement.prepend(firstElementChild);\n }\n return firstElementChild;\n }\n\n /**\n * @type HTMLBodyElement\n */\n get body() {\n const {head} = this;\n let {nextElementSibling} = head;\n if (!nextElementSibling || nextElementSibling.tagName !== 'BODY') {\n nextElementSibling = this.createElement('body');\n head.after(nextElementSibling);\n }\n return nextElementSibling;\n }\n\n /**\n * @type HTMLTitleElement\n */\n get title() {\n const {head} = this;\n return head.getElementsByTagName('title').at(0)?.textContent || '';\n }\n\n set title(textContent) {\n const {head} = this;\n let title = head.getElementsByTagName('title').at(0);\n if (title)\n title.textContent = textContent;\n else {\n head.insertBefore(\n this.createElement('title'),\n head.firstChild\n ).textContent = textContent;\n }\n }\n\n createElement(localName, options) {\n const builtin = !!(options && options.is);\n const element = createHTMLElement(this, builtin, localName, options);\n if (builtin)\n element.setAttribute('is', options.is);\n return element;\n }\n}\n","import {MIME} from '../shared/symbols.js';\nimport {Document} from '../interface/document.js';\n\n/**\n * @implements globalThis.Document\n */\nexport class SVGDocument extends Document {\n constructor() { super('image/svg+xml'); }\n toString() {\n return this[MIME].docType + super.toString();\n }\n}\n","import {MIME} from '../shared/symbols.js';\nimport {Document} from '../interface/document.js';\n\n/**\n * @implements globalThis.XMLDocument\n */\nexport class XMLDocument extends Document {\n constructor() { super('text/xml'); }\n toString() {\n return this[MIME].docType + super.toString();\n }\n}\n","import {DOM_PARSER, GLOBALS} from '../shared/symbols.js';\nimport {parseFromString} from '../shared/parse-from-string.js';\n\nimport {HTMLDocument} from '../html/document.js';\nimport {SVGDocument} from '../svg/document.js';\nimport {XMLDocument} from '../xml/document.js';\n\n/**\n * @implements globalThis.DOMParser\n */\nexport class DOMParser {\n\n /** @typedef {{ \"text/html\": HTMLDocument, \"image/svg+xml\": SVGDocument, \"text/xml\": XMLDocument }} MimeToDoc */\n /**\n * @template {keyof MimeToDoc} MIME\n * @param {string} markupLanguage\n * @param {MIME} mimeType\n * @returns {MimeToDoc[MIME]}\n */\n parseFromString(markupLanguage, mimeType, globals = null) {\n let isHTML = false, document;\n if (mimeType === 'text/html') {\n isHTML = true;\n document = new HTMLDocument;\n }\n else if (mimeType === 'image/svg+xml')\n document = new SVGDocument;\n else\n document = new XMLDocument;\n document[DOM_PARSER] = DOMParser;\n if (globals)\n document[GLOBALS] = globals;\n if (isHTML && markupLanguage === '...')\n markupLanguage = '<!doctype html><html><head></head><body></body></html>';\n return markupLanguage ?\n parseFromString(document, isHTML, markupLanguage) :\n document;\n }\n}\n","import {\n NODE_END,\n ELEMENT_NODE,\n ATTRIBUTE_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_TYPE_NODE,\n DOCUMENT_FRAGMENT_NODE\n} from './constants.js';\n\nimport {END, PREV} from './symbols.js';\n\nimport {htmlClasses} from './register-html-class.js';\nimport {knownBoundaries, knownSiblings} from './utils.js';\n\nimport {Attr} from '../interface/attr.js';\nimport {CDATASection} from '../interface/cdata-section.js';\nimport {Comment} from '../interface/comment.js';\nimport {DocumentType} from '../interface/document-type.js';\nimport {Text} from '../interface/text.js';\n\nimport {HTMLDocument} from '../html/document.js';\nimport {HTMLElement} from '../html/element.js';\nimport {SVGElement} from '../svg/element.js';\n\nconst {parse} = JSON;\n\nconst append = (parentNode, node, end) => {\n node.parentNode = parentNode;\n knownSiblings(end[PREV], node, end);\n};\n\nconst createHTMLElement = (ownerDocument, localName) => {\n if (htmlClasses.has(localName)) {\n const Class = htmlClasses.get(localName);\n return new Class(ownerDocument, localName);\n }\n return new HTMLElement(ownerDocument, localName);\n};\n\n/**\n * @typedef {number|string} jsdonValue - either a node type or its content\n */\n\n/**\n * Given a stringified, or arrayfied DOM element, returns an HTMLDocument\n * that represent the content of such string, or array.\n * @param {string|jsdonValue[]} value\n * @returns {HTMLDocument}\n */\nexport const parseJSON = value => {\n const array = typeof value === 'string' ? parse(value) : value;\n const {length} = array;\n const document = new HTMLDocument;\n let parentNode = document, end = parentNode[END], svg = false, i = 0;\n while (i < length) {\n let nodeType = array[i++];\n switch (nodeType) {\n case ELEMENT_NODE: {\n const localName = array[i++];\n const isSVG = svg || localName === 'svg' || localName === 'SVG';\n const element = isSVG ?\n new SVGElement(document, localName, parentNode.ownerSVGElement || null) :\n createHTMLElement(document, localName);\n knownBoundaries(end[PREV], element, end);\n element.parentNode = parentNode;\n parentNode = element;\n end = parentNode[END];\n svg = isSVG;\n break;\n }\n case ATTRIBUTE_NODE: {\n const name = array[i++];\n const value = typeof array[i] === 'string' ? array[i++] : '';\n const attr = new Attr(document, name, value);\n attr.ownerElement = parentNode;\n knownSiblings(end[PREV], attr, end);\n break;\n }\n case TEXT_NODE:\n append(parentNode, new Text(document, array[i++]), end);\n break;\n case COMMENT_NODE:\n append(parentNode, new Comment(document, array[i++]), end);\n break;\n case CDATA_SECTION_NODE:\n append(parentNode, new CDATASection(document, array[i++]), end);\n break;\n case DOCUMENT_TYPE_NODE: {\n const args = [document];\n while (typeof array[i] === 'string')\n args.push(array[i++]);\n if (args.length === 3 && /\\.dtd$/i.test(args[2]))\n args.splice(2, 0, '');\n append(parentNode, new DocumentType(...args), end);\n break;\n }\n case DOCUMENT_FRAGMENT_NODE:\n parentNode = document.createDocumentFragment();\n end = parentNode[END];\n /* eslint no-fallthrough:0 */\n case DOCUMENT_NODE:\n break;\n default:\n do {\n nodeType -= NODE_END;\n if (svg && !parentNode.ownerSVGElement)\n svg = false;\n parentNode = parentNode.parentNode || parentNode;\n } while (nodeType < 0);\n end = parentNode[END];\n break;\n }\n }\n switch (i && array[0]) {\n case ELEMENT_NODE:\n return document.firstElementChild;\n case DOCUMENT_FRAGMENT_NODE:\n return parentNode;\n }\n return document;\n};\n\n/**\n * \n * @param {Document|Element} node the Document or Element to serialize\n * @returns {jsdonValue[]} the linear jsdon serialized array\n */\nexport const toJSON = node => node.toJSON();\n","import {DOMParser} from './dom/parser.js';\nimport {Document as _Document} from './interface/document.js';\n\nimport {illegalConstructor} from './shared/facades.js';\nimport {setPrototypeOf} from './shared/object.js';\nexport {parseJSON, toJSON} from './shared/parse-json.js';\n\nexport * from './shared/facades.js';\nexport * from './shared/html-classes.js';\n\nexport {DOMParser};\n\nexport {CustomEvent} from './interface/custom-event.js';\nexport {Event} from './interface/event.js';\nexport {EventTarget} from './interface/event-target.js';\nexport {InputEvent} from './interface/input-event.js';\nexport {NodeList} from './interface/node-list.js';\nexport {NodeFilter} from './interface/node-filter.js';\n\nexport const parseHTML = (html, globals = null) => (new DOMParser).parseFromString(\n html, 'text/html', globals\n).defaultView;\n\nexport function Document() {\n illegalConstructor();\n}\n\nsetPrototypeOf(Document, _Document).prototype = _Document.prototype;\n","import {\n SHOW_ALL,\n SHOW_ELEMENT,\n SHOW_COMMENT,\n SHOW_CDATA_SECTION,\n SHOW_TEXT\n} from '../shared/constants.js';\n\nexport class NodeFilter {\n static get SHOW_ALL() { return SHOW_ALL; }\n static get SHOW_ELEMENT() { return SHOW_ELEMENT; }\n static get SHOW_COMMENT() { return SHOW_COMMENT; }\n static get SHOW_CDATA_SECTION() { return SHOW_CDATA_SECTION; }\n static get SHOW_TEXT() { return SHOW_TEXT; }\n}\n"],"names":["version","exports","CHANGED","Symbol","CLASS_LIST","CUSTOM_ELEMENTS","CONTENT","DATASET","DOCTYPE","DOM_PARSER","END","EVENT_TARGET","GLOBALS","IMAGE","MIME","MUTATION_OBSERVER","NEXT","OWNER_ELEMENT","PREV","PRIVATE","SHEET","START","STYLE","UPGRADE","VALUE","_a","htmlDecodeTree","Uint16Array","split","map","c","charCodeAt","xmlDecodeTree","decodeMap","Map","fromCodePoint","String","codePoint","output","fromCharCode","CharCodes","NUM","SEMI","EQUALS","ZERO","NINE","LOWER_A","LOWER_F","LOWER_X","LOWER_Z","UPPER_A","UPPER_F","UPPER_Z","BinTrieFlags","EntityDecoderState","DecodingMode","State","QuoteType","isNumber","code","isHexadecimalCharacter","isEntityInAttributeInvalidEnd","isAsciiAlphaNumeric","VALUE_LENGTH","BRANCH_LENGTH","JUMP_TABLE","EntityStart","NumericStart","NumericDecimal","NumericHex","NamedEntity","Legacy","Strict","Attribute","EntityDecoder","constructor","decodeTree","emitCodePoint","errors","this","state","consumed","result","treeIndex","excess","decodeMode","startEntity","write","str","offset","stateNumericStart","stateNamedEntity","stateNumericDecimal","stateNumericHex","length","addToNumericResult","start","end","base","digitCount","Math","pow","parseInt","substr","startIdx","char","emitNumericEntity","lastCp","expectedLength","absenceOfDigitsInNumericCharacterReference","get","replaceCodePoint","missingSemicolonAfterCharacterReference","validateNumericCharacterReference","current","valueLength","determineBranch","max","emitNotTerminatedNamedEntity","emitNamedEntityData","getDecoder","ret","decoder","lastIndex","indexOf","slice","len","nodeIdx","branchCount","jumpOffset","value","lo","hi","mid","midVal","isWhitespace","Space","NewLine","Tab","FormFeed","CarriageReturn","isEndOfTagSection","Slash","Gt","ExclamationMark","Number","Amp","SingleQuote","DoubleQuote","Dash","Zero","Nine","Semi","Lt","Eq","Questionmark","UpperA","LowerA","UpperF","LowerF","UpperZ","LowerZ","LowerX","OpeningSquareBracket","Text","BeforeTagName","InTagName","InSelfClosingTag","BeforeClosingTagName","InClosingTagName","AfterClosingTagName","BeforeAttributeName","InAttributeName","AfterAttributeName","BeforeAttributeValue","InAttributeValueDq","InAttributeValueSq","InAttributeValueNq","BeforeDeclaration","InDeclaration","InProcessingInstruction","BeforeComment","CDATASequence","InSpecialComment","InCommentLike","BeforeSpecialS","BeforeSpecialT","SpecialStartSequence","InSpecialTag","InEntity","NoValue","Unquoted","Single","Double","Sequences","Cdata","Uint8Array","CdataEnd","CommentEnd","ScriptEnd","StyleEnd","TitleEnd","TextareaEnd","Tokenizer","xmlMode","decodeEntities","cbs","buffer","sectionStart","index","entityStart","baseState","isSpecial","running","currentSequence","sequenceIndex","entityDecoder","cp","reset","chunk","parse","finish","pause","resume","stateText","fastForwardTo","ontext","stateSpecialStartSequence","isEnd","stateInTagName","stateInSpecialTag","endOfText","actualIndex","stateInClosingTagName","stateCDATASequence","stateInDeclaration","stateInCommentLike","oncdata","oncomment","isTagStartChar","isASCIIAlpha","startSpecial","sequence","stateBeforeTagName","lower","onopentagname","stateBeforeAttributeName","stateBeforeClosingTagName","onclosetag","stateAfterClosingTagName","onopentagend","stateInSelfClosingTag","onselfclosingtag","stateInAttributeName","onattribname","stateAfterAttributeName","onattribend","stateBeforeAttributeValue","stateInAttributeValueNoQuotes","handleInAttributeValue","quote","onattribdata","stateInAttributeValueDoubleQuotes","stateInAttributeValueSingleQuotes","stateBeforeDeclaration","ondeclaration","stateInProcessingInstruction","onprocessinginstruction","stateBeforeComment","stateInSpecialComment","stateBeforeSpecialS","stateBeforeSpecialT","stateInEntity","cleanup","shouldContinue","handleTrailingData","onend","endIndex","onattribentity","ontextentity","formTags","Set","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","Parser$1","options","_b","_c","_d","_e","_f","startIndex","openTagStart","tagname","attribname","attribvalue","attribs","stack","buffers","bufferOffset","writeIndex","ended","htmlMode","lowerCaseTagNames","lowerCaseTags","lowerCaseAttributeNames","recognizeSelfClosing","tokenizer","foreignContext","onparserinit","call","data","getSlice","isVoidElement","name","has","toLowerCase","emitOpenTag","impliesClose","element","shift","unshift","onopentag","endOpenTag","isImplied","_g","_h","pos","closeCurrentTag","isOpenImplied","onattribute","Object","prototype","hasOwnProperty","getInstructionName","search","oncommentend","_j","_k","recognizeCDATA","oncdatastart","oncdataend","onreset","parseComplete","shiftBuffer","onerror","Error","push","parseChunk","done","ElementType","isTag","elem","type","Tag","Script","Style","Root","Directive","Comment","CDATA","Doctype","freeze","__proto__","CDATA$1","Comment$3","Text$3","isTag$2","Node$2","parent","prev","next","parentNode","previousSibling","nextSibling","cloneNode","recursive","DataNode","Node","super","nodeValue","arguments","nodeType","ProcessingInstruction","NodeWithChildren","children","firstChild","lastChild","childNodes","tagName","attributes","keys","namespace","prefix","node","isTagRaw","isCDATA","isText","isComment","isDocument","hasChildren","cloneChildren","clone","Element","forEach","child","Document","isDirective","instruction","sourceCodeLocation","childs","i","defaultOpts","withStartIndices","withEndIndices","DomHandler","callback","elementCB","dom","root","tagStack","lastNode","parser","handleCallback","error","pop","addNode","text","xmlReplacer","xmlCodeMap","getCodePoint","codePointAt","encodeXML","match","lastIdx","exec","substring","toString","getEscaper","regex","escapeAttribute","escapeText","elementNames","val","attributeNames","unencodedElements","replaceQuotes","replace","singleTag","render","nodes","renderNode","ElementType.Root","ElementType.Doctype","ElementType.Directive","renderDirective","ElementType.Comment","renderComment","ElementType.CDATA","renderCdata","ElementType.Script","ElementType.Style","ElementType.Tag","opts","foreignModeIntegrationPoints","foreignElements","tag","encode","encodeEntities","key","emptyAttrs","join","formatAttributes","selfClosingTags","renderTag","ElementType.Text","renderText","getOuterHTML","renderHTML","textContent","Array","isArray","getChildren","getParent","removeElement","childsIndex","lastIndexOf","splice","filter","test","recurse","limit","find","nodeStack","indexStack","findOne","Checks","tag_name","tag_type","tag_contains","getAttribCheck","attrib","combineFuncs","a","b","compileTest","funcs","reduce","getElementsByTagName","DocumentPosition","compareDocumentPosition","nodeA","nodeB","aParents","bParents","maxIdx","min","idx","DISCONNECTED","sharedParent","siblings","aSibling","bSibling","FOLLOWING","CONTAINED_BY","PRECEDING","CONTAINS","getFeed","doc","feedRoot","getOneElement","isValidFeed","feed","items","item","entry","media","getMediaElements","addConditionally","href","link","description","fetch","pubDate","Date","updated","getAtomFeed","id","getRssFeed","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","medium","isDefault","expression","trim","obj","prop","DomUtils","append","currNext","appendChild","sibling","existsOne","some","checked","findAll","findOne$1","findOneChild","getAttributeValue","getChildren$1","getElementById","getElements","getElementsByTagType","getInnerHTML","getName","getParent$1","getSiblings","getText","hasAttrib","innerText","isTag$1","nextElementSibling","prepend","prependChild","prevElementSibling","removeSubsets","ancestor","includes","replaceElement","replacement","testElement","uniqueSort","arr","sort","relative","parseDocument","handler","Parser","parseDOM","parseFeedDefaultOptions","HTMLParser2","DefaultHandler","createDocumentStream","elementCallback","createDomStream","parseFeed","NODE_END","ELEMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","BLOCK_ELEMENTS","SVG_NAMESPACE","assign","create","defineProperties","entries","getOwnPropertyDescriptors","setPrototypeOf","$String","getEnd","ignoreCase","ownerDocument","knownAdjacent","knownBoundaries","knownSiblings","localCase","localName","toUpperCase","setAdjacent","shadowRoots","WeakMap","reactive","Classes","customElements","attributeChangedCallback","attributeName","oldValue","newValue","observedAttributes","createTrigger","method","isConnected","info","connected","triggerConnected","connectedCallback","shadowRoot","p","S","triggerDisconnected","CustomElementRegistry","registry","waiting","active","define","Class","extends","extend","set","is","check","getAttribute","resolve","delete","querySelectorAll","upgrade","ce","attr","removeAttributeNode","values","setAttributeNode","whenDefined","Promise","self","attribute","ownerElement","className","parseFromString","document","isHTML","markupLanguage","ownerSVGElement","parsingCData","content","doctype","createElementNS","createElement","createAttribute","createComment","createCDATASection","createTextNode","htmlClasses","registerHTMLClass","names","concat","performance","globalThis","loopSegment","json","attrAsJSON","characterDataAsJSON","elementAsJSON","documentTypeAsJSON","last","publicId","systemId","createRecord","target","addedNodes","removedNodes","queueAttribute","observer","attributeFilter","attributeOldValue","records","scheduled","then","observers","childList","subtree","contains","moCallback","characterData","MutationObserverClass","class","disconnect","clear","size","observe","add","takeRecords","emptyAttributes","setAttribute","L","moAttributes","ceAttributes","removeAttribute","booleanAttribute","hasAttribute","numericAttribute","parseFloat","stringAttribute","wm","dispatch","event","listener","handleEvent","_stopImmediatePropagationFlag","invokeListeners","currentTarget","listeners","eventPhase","AT_TARGET","BUBBLING_PHASE","once","cancelBubble","DOMEventTarget","_getParent","addEventListener","removeEventListener","dispatchEvent","CAPTURING_PHASE","_path","bubbles","NONE","defaultPrevented","NodeList","getParentNodeCount","count","EventTarget","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT_NODE","baseURI","querySelector","location","defaultView","nodeName","parentElement","previousElementSibling","normalize","insertBefore","newNode","referenceNode","replaceChild","newChild","oldChild","removeChild","hasChildNodes","isSameNode","other","DOCUMENT_POSITION_CONTAINED_BY","isEqualNode","aNodes","bNodes","every","getRootNode","ca","esca","pe","m","escape","es","QUOTE","Attr","toJSON","host","M","asFragment","fragment","createDocumentFragment","before","after","replaceWith","remove","disconnectedCallback","substringData","appendData","insertData","t","deleteData","replaceData","CDATASection","CharacterData","SelectorType","AttributeAction","x","trueFunc","falseFunc","Pseudo","PseudoElement","Universal","Adjacent","Child","Descendant","Parent","Sibling","ColumnCombinator","Any","End","Equals","Exists","Hyphen","Not","Start","reName","reEscape","actionTypes","unpackPseudos","stripQuotesFromPseudos","funescape","_","escaped","escapedWhitespace","high","unescapeCSS","isQuote","selector","subselects","parseSelector","selectorIndex","tokens","stripWhitespace","readValueWithParenthesis","counter","isEscaped","slashCount","ensureNotTraversal","isTraversal","addTraversal","addSpecialAttribute","action","finalizeSubselector","loop","firstChar","startsWith","possibleAction","sectionEnd","valueStart","forceIgnore","attributeSelector","quot","procedure","token","sortByProcedure","procs","getProcedure","procNew","j","proc","d","reChars","escapeRegex","caseInsensitiveAttributes","shouldIgnoreCase","quirksMode","attributeRules","equals","adapter","hyphen","charAt","boolbase","RegExp","exists","endsWith","any","not","whitespace","nthCheck","formula","parsed","absA","abs","bMod","compile","sign","readSign","number","readNumber","skipWhitespace","getChildFunc","filters","icontains","itext","rule","func","getNCheck","currentSibling","_rule","scope","context","hover","dynamicStatePseudo","visited","pseudos","empty","elemName","verifyPseudoArgs","subselect","argIndex","aliases","disabled","enabled","required","optional","selected","checkbox","file","password","radio","image","submit","header","button","input","PLACEHOLDER_ELEMENT","ensureIsTag","getNextSiblings","elemIndex","copyOptions","cacheResults","compileToken","matches","_context","relativeSelector","s","compiled","hasElement","shouldTestNextSiblings","nextElements","getElementParent","compileGeneralSelector","userPseudo","stringPseudo","alias","pseudo","compilePseudoSelector","WeakSet","isFalseCache","previous","lastElement","compileUnsafe","includesScopePseudo","DESCENDANT_TOKEN","FLEXIBLE_DESCENDANT_TOKEN","SCOPE_TOKEN","sortRules","isArrayContext","finalContext","hasContext","e","absolutize","query","rules","first","second","rootFunc","compileRules","reduceRules","defaultEquals","defaultOptions","convertOptionFormats","wrapCompile","compileRaw","elements","classList","prepareMatch","selectors","CSSselect.compile","CSSselect.is","strict","wholeText","isNode","insert","ParentNode","U","firstElementChild","lastElementChild","childElementCount","replaceChildren","getElementsByClassName","B","knownSegment","$next","$prev","replaced","NonElementParentNode","deep","nonEPN","nonElementAsJSON","DocumentType","hasPublic","getInnerHtml","setInnerHtml","html","setOwnerDocument","uhyphen","camel","refs","$1","dataset","deleteProperty","DOMStringMap","ref","Proxy","addTokens","update","qs","getAttributeNode","DOMTokenList","toggle","force","newToken","supports","getKeys","style","updateKeys","rest","cssText","getPropertyValue","setProperty","removeProperty","iterator","CSSStyleDeclaration","getCurrentTarget","ev","GlobalEvent","eventInitDict","cancelable","timeStamp","now","originalTarget","returnValue","srcElement","preventDefault","composedPath","stopPropagation","stopImmediatePropagation","NamedNodeMap","getNamedItem","setNamedItem","removeNamedItem","getNamedItemNS","setNamedItemNS","removeNamedItemNS","innerHTML","attributesHandler","svg","isVoid","namespaceURI","getBoundingClientRect","y","bottom","height","left","right","top","width","nonce","tabIndex","slot","outerHTML","template","focus","Event","getAttributeNames","hasAttributes","previously","toggleAttribute","mode","attachShadow","init","ShadowRoot","closest","insertAdjacentElement","position","insertAdjacentHTML","insertAdjacentText","addNext","out","isOpened","getAttributeNS","getElementsByTagNameNS","hasAttributeNS","removeAttributeNS","setAttributeNS","setAttributeNodeNS","classNames","baseVal","animVal","illegalConstructor","TypeError","DocumentFragment","SVGElement","_Attr","_CDATASection","_CharacterData","_Comment","_DocumentFragment","_DocumentType","_Element","_Node","_ShadowRoot","_Text","_SVGElement","Facades","Level0","level0","handlers","HTMLElement","ownerLess","blur","click","clickEvent","accessKeyLabel","accessKey","isContentEditable","contentEditable","draggable","hidden","spellcheck","dir","lang","title","onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onresize","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","ontoggle","onvolumechange","onwaiting","onauxclick","ongotpointercapture","onlostpointercapture","onpointercancel","onpointerdown","onpointerenter","onpointerleave","onpointermove","onpointerout","onpointerover","onpointerup","HTMLTemplateElement","HTMLHtmlElement","TextElement","HTMLScriptElement","src","defer","crossOrigin","nomodule","referrerPolicy","async","HTMLFrameElement","HTMLIFrameElement","srcdoc","allow","allowFullscreen","loading","HTMLObjectElement","HTMLHeadElement","HTMLBodyElement","parse$2","CSSStyleSheet","StyleSheet","CSSOM","parentStyleSheet","CSSStyleRule","CSSRule","require$$0","require$$1","selectorText","parentRule","defineProperty","ruleText","character","SIGNIFICANT_WHITESPACE","styleRule","priority","SyntaxError","cssRules","insertRule","RangeError","cssRule","deleteRule","require$$2","UNKNOWN_RULE","STYLE_RULE","CHARSET_RULE","IMPORT_RULE","MEDIA_RULE","FONT_FACE_RULE","PAGE_RULE","KEYFRAMES_RULE","KEYFRAME_RULE","MARGIN_RULE","NAMESPACE_RULE","COUNTER_STYLE_RULE","SUPPORTS_RULE","DOCUMENT_RULE","FONT_FEATURE_VALUES_RULE","VIEWPORT_RULE","REGION_STYLE_RULE","CSSImportRule","MediaList","styleSheet","mediaText","url","appendMedium","deleteMedium","CSSGroupingRule","CSSMediaRule","CSSConditionRule","conditionText","require$$3","configurable","enumerable","cssTexts","CSSSupportsRule","CSSFontFaceRule","CSSHostRule","keyText","CSSKeyframeRule","CSSKeyframesRule","_vendorPrefix","CSSValueExpression","CSSValue","_getConstructorName","_token","_idx","paren","_parseJSComment","_parseJSRexExp","_parseJSString","nextChar","endIdx","commentEndChar","sep","_findMatchedIdx","reg","matched","CSSDocumentRule","MatcherList","matcherText","appendMatcher","matcher","deleteMatcher","prevScope","mediaRule","supportsRule","importRule","fontFaceRule","keyframesRule","documentRule","hostRule","valueParenthesisDepth","atRule","atBlock","conditionBlock","currentScope","ancestorRules","hasAncestors","atKeyframesRegExp","parseError","message","lines","lineCount","charCount","line","__starts","matchKeyframes","__ends","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","_importants","prevValue","getPropertyCSSValue","getPropertyPriority","getPropertyShorthand","isPropertyImplicit","properties","dummyRule","require$$14","require$$19","HTMLStyleElement","sheet","HTMLTimeElement","dateTime","HTMLFieldSetElement","HTMLEmbedElement","HTMLHRElement","HTMLProgressElement","HTMLParagraphElement","HTMLTableElement","HTMLFrameSetElement","HTMLLIElement","HTMLBaseElement","HTMLDataListElement","HTMLInputElement","autofocus","placeholder","HTMLParamElement","HTMLMediaElement","HTMLAudioElement","HTMLHeadingElement","HTMLDirectoryElement","HTMLQuoteElement","Canvas","getContext","toDataURL","Canvas$1","createCanvas","HTMLCanvasElement","args","HTMLLegendElement","HTMLOptionElement","option","HTMLSpanElement","HTMLMeterElement","HTMLVideoElement","HTMLTableCellElement","HTMLTitleElement","HTMLOutputElement","HTMLTableRowElement","HTMLDataElement","HTMLMenuElement","HTMLSelectElement","HTMLBRElement","HTMLButtonElement","HTMLMapElement","HTMLOptGroupElement","HTMLDListElement","HTMLTextAreaElement","HTMLFontElement","HTMLDivElement","HTMLLinkElement","hreflang","rel","HTMLSlotElement","assignedNodes","isNamedSlot","hostChildNodes","slottables","flatten","slottable","assignedElements","n","HTMLFormElement","HTMLImageElement","alt","sizes","srcset","HTMLPreElement","HTMLUListElement","HTMLMetaElement","httpEquiv","charset","HTMLPictureElement","HTMLAreaElement","HTMLOListElement","HTMLTableCaptionElement","HTMLAnchorElement","encodeURI","decodeURI","download","HTMLLabelElement","HTMLUnknownElement","HTMLModElement","HTMLDetailsElement","HTMLSourceElement","HTMLTrackElement","HTMLMarqueeElement","HTMLClasses","Mime","docType","CustomEvent","detail","InputEvent","inputEventInit","inputType","dataTransfer","isComposing","ranges","ImageClass","deleteContents","Range","commonAncestorContainer","insertNode","selectNode","selectNodeContents","surroundContents","extractContents","setStartBefore","setStartAfter","setEndBefore","setEndAfter","cloneContents","createContextualFragment","isSVG","cloneRange","range","isOK","mask","TreeWalker","whatToShow","currentNode","documentElement","nextNode","$","globalExports","window","et","bind","userAgent","$4","$6","createDocumentType","createRange","createTreeWalker","createNodeIterator","createEvent","initEvent","initCustomEvent","canBubble","Y","Me","importNode","externalNode","createAttributeNS","nsp","HTMLDocument","all","nodeList","head","body","at","builtin","createHTMLElement","SVGDocument","XMLDocument","DOMParser","mimeType","globals","JSON","_Document","NodeFilter","SHOW_ALL","SHOW_ELEMENT","SHOW_COMMENT","SHOW_CDATA_SECTION","SHOW_TEXT","parseHTML","parseJSON","array"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,66,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107]} \ No newline at end of file From eb2138fbd718a964d20b1f434601a3537ac2df2b Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sun, 21 Jul 2024 17:48:02 +0530 Subject: [PATCH 13/34] chore: revoke worker URL after component deletion --- .../components/MockVisibleExtension.java | 28 ++++++++++++------- .../palette/SimpleComponentDescriptor.java | 5 ++-- .../client/utils/jstypes/Blob.java | 1 - .../client/utils/jstypes/BlobOptions.java | 4 ++- .../appinventor/client/utils/jstypes/URL.java | 4 +-- .../client/utils/jstypes/Worker.java | 5 +++- 6 files changed, 29 insertions(+), 18 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 023a0fe53d9..9f4fc3a2537 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -21,17 +21,21 @@ public class MockVisibleExtension extends MockVisibleComponent { private final long projectId; - private final String mockFileId; - private final HorizontalPanel rootPanel; + private final String typeName; + private final String packageName; private Worker worker = null; + private String workerUrl = null; + + private final HorizontalPanel rootPanel; public MockVisibleExtension( - SimpleEditor editor, String type, Image iconImage, String mockFileId) { - super(editor, type, iconImage); + SimpleEditor editor, String typeName, Image iconImage, String packageName) { + super(editor, typeName, iconImage); - this.mockFileId = mockFileId; this.projectId = editor.getProjectId(); + this.typeName = typeName; + this.packageName = packageName; rootPanel = new HorizontalPanel(); rootPanel.setStylePrimaryName("ode-MockVisibleExtensionLoading"); @@ -39,7 +43,7 @@ public MockVisibleExtension( iconImage.setWidth("24px"); rootPanel.add(iconImage); - InlineHTML label = new InlineHTML("Loading " + type + "..."); + InlineHTML label = new InlineHTML("Loading " + typeName + "..."); rootPanel.add(label); Ode.CLog("MockVisibleExtension.constructor"); @@ -50,10 +54,11 @@ public MockVisibleExtension( public void onCreateFromPalette() { super.onCreateFromPalette(); Ode.CLog("MockVisibleExtension.createFromPalette"); - + final String mockScriptPath = + "assets/external_comps/" + packageName + "/mocks/" + typeName + ".mock.js"; Promise.<ChecksumedLoadFile>call( - "Server error: could not load mock script for component: " + getVisibleTypeName(), - cb -> Ode.getInstance().getProjectService().load2(projectId, mockFileId, cb)) + "Server error: could not load mock script for component: " + typeName, + cb -> Ode.getInstance().getProjectService().load2(projectId, mockScriptPath, cb)) .then( result -> { String mockScript; @@ -91,7 +96,9 @@ private void initWorker(String mockScript) { Blob blob = new Blob(parts, blobOpts); WorkerOptions workerOpts = WorkerOptions.create("module"); - worker = new Worker(URL.createObjectURL(blob), workerOpts); + workerUrl = URL.createObjectURL(blob); + worker = new Worker(workerUrl, workerOpts); + worker.addEventListener( "message", (MessageEvent event) -> { @@ -116,6 +123,7 @@ private void initWorker(String mockScript) { public void delete() { if (worker != null) { worker.terminate(); + URL.revokeObjectURL(workerUrl); } super.delete(); } diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java index 3ba3b38e09f..05485507b6e 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java @@ -606,9 +606,8 @@ public static MockComponent createMockComponent(String name, String type, Simple } Image icon = getImageFromPath(scd.getIconName(name), type, editor.getProjectId()); - String packagePath = type.substring(0, type.lastIndexOf(".")); - String mockFileId = "assets/external_comps/" + packagePath + "/mocks/" + name + ".mock.js"; - return new MockVisibleExtension(editor, name, icon, mockFileId); + String packageName = type.substring(0, type.lastIndexOf(".")); + return new MockVisibleExtension(editor, name, icon, packageName); } } } diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java index ba387e87899..5ff52da0fdb 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java @@ -6,6 +6,5 @@ @JsType(isNative = true, namespace = JsPackage.GLOBAL) public class Blob { - @JsConstructor public Blob(Object[] parts, BlobOptions options) {} } diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/BlobOptions.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/BlobOptions.java index 0443f36a730..1623f3f9454 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/BlobOptions.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/BlobOptions.java @@ -1,6 +1,8 @@ package com.google.appinventor.client.utils.jstypes; -import jsinterop.annotations.*; +import jsinterop.annotations.JsOverlay; +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsType; @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object") public class BlobOptions { diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/URL.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/URL.java index 231e0f014ee..f053313a373 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/URL.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/URL.java @@ -1,11 +1,11 @@ package com.google.appinventor.client.utils.jstypes; -import jsinterop.annotations.JsMethod; import jsinterop.annotations.JsPackage; import jsinterop.annotations.JsType; @JsType(isNative = true, namespace = JsPackage.GLOBAL) public class URL { - @JsMethod public static native String createObjectURL(Object object); + + public static native String revokeObjectURL(String url); } diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java index 2d5db48b698..28df7da37d5 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java @@ -1,6 +1,9 @@ package com.google.appinventor.client.utils.jstypes; -import jsinterop.annotations.*; +import jsinterop.annotations.JsFunction; +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsProperty; +import jsinterop.annotations.JsType; @JsType(isNative = true, namespace = JsPackage.GLOBAL) public class Worker { From b0c88c0cd87f2f1216ce6ccb9877156b11d52dc5 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sun, 21 Jul 2024 19:36:33 +0530 Subject: [PATCH 14/34] chore: add support for getting initial properties in template --- .../components/MockVisibleExtension.java | 78 +++++++++++-------- .../utils/jstypes/ComponentProperty.java | 15 ++++ .../utils/jstypes/PropertyChangeMessage.java | 19 ----- 3 files changed, 62 insertions(+), 50 deletions(-) create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java delete mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 9f4fc3a2537..20f16abeffa 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -6,11 +6,12 @@ import com.google.appinventor.client.utils.jstypes.Blob; import com.google.appinventor.client.utils.jstypes.BlobOptions; import com.google.appinventor.client.utils.jstypes.DOMPurify; -import com.google.appinventor.client.utils.jstypes.PropertyChangeMessage; +import com.google.appinventor.client.utils.jstypes.ComponentProperty; import com.google.appinventor.client.utils.jstypes.URL; import com.google.appinventor.client.utils.jstypes.Worker; import com.google.appinventor.client.utils.jstypes.Worker.MessageEvent; import com.google.appinventor.client.utils.jstypes.WorkerOptions; +import com.google.appinventor.client.widgets.properties.EditableProperty; import com.google.appinventor.shared.rpc.project.ChecksumedFileException; import com.google.appinventor.shared.rpc.project.ChecksumedLoadFile; import com.google.gwt.user.client.Window; @@ -73,27 +74,9 @@ public void onCreateFromPalette() { } private void initWorker(String mockScript) { - String baseUrl = Window.Location.getProtocol() + "//" + Window.Location.getHost(); - String[] parts = - new String[] { - "import { parseHTML } from '" + baseUrl + "/static/linkedom/linkedom.min.js';\n", - "self.Mock = {\n", - " document: undefined,\n", - " template: () => undefined,\n", - " onPropertyChange: (property) => undefined\n", - "};\n", - mockScript + "\n", - "const ____mockhtml = Mock.template();\n", - "self.postMessage(____mockhtml);\n", - "Mock.document = parseHTML(____mockhtml).document;\n", - "onmessage = (msg) => {\n", - " Mock.onPropertyChange(msg.data);\n", - " postMessage(Mock.document.toString());\n", - "};\n", - }; - + String[] workerSrc = getWorkerSource(mockScript); BlobOptions blobOpts = BlobOptions.create("text/javascript", "transparent"); - Blob blob = new Blob(parts, blobOpts); + Blob blob = new Blob(workerSrc, blobOpts); WorkerOptions workerOpts = WorkerOptions.create("module"); workerUrl = URL.createObjectURL(blob); @@ -119,6 +102,39 @@ private void initWorker(String mockScript) { }); } + private String[] getWorkerSource(String mockScript) { + // Construct a JS object of the extension's properties and their values at + // the time of initialization of the mock. + final StringBuilder initPropsBuilder = new StringBuilder("{ "); + for (EditableProperty p : getProperties()) { + initPropsBuilder.append("'" + p.getName() + "': '" + p.getValue() + "', "); + } + initPropsBuilder.append("}"); + + final String baseUrl = Window.Location.getProtocol() + "//" + Window.Location.getHost(); + final String script = mockScript + .replaceAll("`", "\\\\`") + .replaceAll("\\$\\{", "\\\\\\${"); + + return new String[] { + "import { parseHTML } from '" + baseUrl + "/static/linkedom/linkedom.min.js';\n", + "const Mock = {\n", + " document: undefined,\n", + " template: (initialProperties) => undefined,\n", + " onPropertyChange: (property) => undefined\n", + "};\n", + "const mockScript = new Function('Mock', `\n" + script + "\n`);\n", + "mockScript(Mock);\n", + "const mockHTML = Mock.template(" + initPropsBuilder + ");\n", + "self.postMessage(mockHTML);\n", + "Mock.document = parseHTML(mockHTML).document;\n", + "onmessage = (msg) => {\n", + " Mock.onPropertyChange(msg.data);\n", + " postMessage(Mock.document.toString());\n", + "};\n", + }; + } + @Override public void delete() { if (worker != null) { @@ -132,18 +148,18 @@ public void delete() { public void onPropertyChange(String propertyName, String newValue) { super.onPropertyChange(propertyName, newValue); if (worker != null) { - PropertyChangeMessage msg = new PropertyChangeMessage(propertyName, newValue); + ComponentProperty msg = new ComponentProperty(propertyName, newValue); worker.postMessage(msg); } } - @Override - public int getPreferredWidth() { - return 128; - } - - @Override - public int getPreferredHeight() { - return 48; - } + // @Override + // public int getPreferredWidth() { + // return 128; + // } + // + // @Override + // public int getPreferredHeight() { + // return 48; + // } } diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java new file mode 100644 index 00000000000..0445663e347 --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java @@ -0,0 +1,15 @@ +package com.google.appinventor.client.utils.jstypes; + +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsType; + +@JsType(namespace = JsPackage.GLOBAL) +public class ComponentProperty { + public final String name; + public final String value; + + public ComponentProperty(String name, String value) { + this.name = name; + this.value = value; + } +} diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java deleted file mode 100644 index fc65c58725f..00000000000 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/PropertyChangeMessage.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.google.appinventor.client.utils.jstypes; - -import jsinterop.annotations.JsPackage; -import jsinterop.annotations.JsProperty; -import jsinterop.annotations.JsType; - -@JsType(namespace = JsPackage.GLOBAL) -public class PropertyChangeMessage { - @JsProperty(name = "name") - public final String propertyName; - - @JsProperty(name = "value") - public final String newValue; - - public PropertyChangeMessage(String propertyName, String newValue) { - this.propertyName = propertyName; - this.newValue = newValue; - } -} From ea3cd91bd283a08925de4da5c8256b18ff494f2f Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sun, 21 Jul 2024 19:38:33 +0530 Subject: [PATCH 15/34] chore: remove duplicate condition in `SimpleComponentDescriptor` --- .../client/editor/simple/palette/SimpleComponentDescriptor.java | 2 -- .../src/com/google/appinventor/client/utils/jstypes/Blob.java | 1 - 2 files changed, 3 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java index 05485507b6e..0486f7d2d73 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java @@ -531,8 +531,6 @@ public static MockComponent createMockComponent(String name, String type, Simple return new MockLabel(editor); } else if (name.equals(MockListView.TYPE)) { return new MockListView(editor); - } else if (name.equals(MockListView.TYPE)) { - return new MockListView(editor); } else if (name.equals(MockSlider.TYPE)) { return new MockSlider(editor); } else if (name.equals(MockPasswordTextBox.TYPE)) { diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java index 5ff52da0fdb..01e57e2d6e0 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Blob.java @@ -1,6 +1,5 @@ package com.google.appinventor.client.utils.jstypes; -import jsinterop.annotations.JsConstructor; import jsinterop.annotations.JsPackage; import jsinterop.annotations.JsType; From 3fac567b07e4bc1b9c9dd85024118ca5b598bbf1 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sun, 28 Jul 2024 15:53:15 +0530 Subject: [PATCH 16/34] chore: render the mock inside Shadow DOM --- .../components/MockVisibleExtension.java | 105 ++++++++++-------- .../appinventor/client/utils/ShadowRoot.java | 10 ++ appinventor/appengine/war/static/css/Ya.css | 15 ++- 3 files changed, 78 insertions(+), 52 deletions(-) create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/ShadowRoot.java diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 20f16abeffa..1abe634b4cf 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -5,8 +5,9 @@ import com.google.appinventor.client.utils.Promise; import com.google.appinventor.client.utils.jstypes.Blob; import com.google.appinventor.client.utils.jstypes.BlobOptions; -import com.google.appinventor.client.utils.jstypes.DOMPurify; import com.google.appinventor.client.utils.jstypes.ComponentProperty; +import com.google.appinventor.client.utils.jstypes.DOMPurify; +import com.google.appinventor.client.utils.ShadowRoot; import com.google.appinventor.client.utils.jstypes.URL; import com.google.appinventor.client.utils.jstypes.Worker; import com.google.appinventor.client.utils.jstypes.Worker.MessageEvent; @@ -14,7 +15,9 @@ import com.google.appinventor.client.widgets.properties.EditableProperty; import com.google.appinventor.shared.rpc.project.ChecksumedFileException; import com.google.appinventor.shared.rpc.project.ChecksumedLoadFile; +import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; @@ -28,7 +31,7 @@ public class MockVisibleExtension extends MockVisibleComponent { private Worker worker = null; private String workerUrl = null; - private final HorizontalPanel rootPanel; + private final ShadowRoot shadowRoot; public MockVisibleExtension( SimpleEditor editor, String typeName, Image iconImage, String packageName) { @@ -38,17 +41,22 @@ public MockVisibleExtension( this.typeName = typeName; this.packageName = packageName; - rootPanel = new HorizontalPanel(); - rootPanel.setStylePrimaryName("ode-MockVisibleExtensionLoading"); + FlowPanel shadowHost = new FlowPanel(); + shadowHost.setStylePrimaryName("ode-MockVisibleExtensionHost"); - iconImage.setWidth("24px"); - rootPanel.add(iconImage); + shadowRoot = attachShadow(shadowHost.getElement()); + HorizontalPanel loadingPanel = new HorizontalPanel(); + loadingPanel.setStylePrimaryName(".ode-MockVisibleExtensionLoading"); + iconImage.setWidth("24px"); + loadingPanel.add(iconImage); InlineHTML label = new InlineHTML("Loading " + typeName + "..."); - rootPanel.add(label); + loadingPanel.add(label); + + shadowRoot.appendChild(loadingPanel.getElement()); Ode.CLog("MockVisibleExtension.constructor"); - initComponent(rootPanel); + initComponent(shadowHost); } @Override @@ -62,59 +70,41 @@ public void onCreateFromPalette() { cb -> Ode.getInstance().getProjectService().load2(projectId, mockScriptPath, cb)) .then( result -> { - String mockScript; + final String mockScript; try { mockScript = result.getContent(); } catch (ChecksumedFileException e) { return Promise.reject(e.getMessage()); } - initWorker(mockScript); + + String[] workerSrc = getWorkerSource(mockScript); + BlobOptions blobOpts = BlobOptions.create("text/javascript", "transparent"); + Blob blob = new Blob(workerSrc, blobOpts); + + workerUrl = URL.createObjectURL(blob); + WorkerOptions workerOpts = WorkerOptions.create("module"); + worker = new Worker(workerUrl, workerOpts); + + worker.addEventListener("message", this::handleMessageEvent); + worker.addEventListener("error", this::handleErrorEvent); + return Promise.resolve(result); }); } - private void initWorker(String mockScript) { - String[] workerSrc = getWorkerSource(mockScript); - BlobOptions blobOpts = BlobOptions.create("text/javascript", "transparent"); - Blob blob = new Blob(workerSrc, blobOpts); - - WorkerOptions workerOpts = WorkerOptions.create("module"); - workerUrl = URL.createObjectURL(blob); - worker = new Worker(workerUrl, workerOpts); - - worker.addEventListener( - "message", - (MessageEvent event) -> { - Ode.CLog("worker.message: dirty: " + event.getData().toString()); - String sanitizedData = DOMPurify.sanitize(event.getData().toString()); - Ode.CLog("worker.message: clean: " + sanitizedData); - HTMLPanel html = new HTMLPanel(sanitizedData); - rootPanel.clear(); - rootPanel.setStylePrimaryName("ode-SimpleMockComponent"); - rootPanel.add(html); - }); - - worker.addEventListener( - "error", - (Worker.ErrorEvent event) -> { - Ode.CLog("worker.error: " + event.getMessage()); - Ode.CLog(String.valueOf(event.getError())); - }); - } - private String[] getWorkerSource(String mockScript) { // Construct a JS object of the extension's properties and their values at // the time of initialization of the mock. - final StringBuilder initPropsBuilder = new StringBuilder("{ "); + final StringBuilder propsBuilder = new StringBuilder("{ "); for (EditableProperty p : getProperties()) { - initPropsBuilder.append("'" + p.getName() + "': '" + p.getValue() + "', "); + propsBuilder.append("'" + p.getName() + "': '" + p.getValue() + "', "); } - initPropsBuilder.append("}"); + propsBuilder.append("}"); - final String baseUrl = Window.Location.getProtocol() + "//" + Window.Location.getHost(); - final String script = mockScript - .replaceAll("`", "\\\\`") - .replaceAll("\\$\\{", "\\\\\\${"); + final String escapedScript = + mockScript.replaceAll("`", "\\\\`").replaceAll("\\$\\{", "\\\\\\${"); + final String baseUrl = + String.format("%s//%s", Window.Location.getProtocol(), Window.Location.getHost()); return new String[] { "import { parseHTML } from '" + baseUrl + "/static/linkedom/linkedom.min.js';\n", @@ -123,9 +113,9 @@ private String[] getWorkerSource(String mockScript) { " template: (initialProperties) => undefined,\n", " onPropertyChange: (property) => undefined\n", "};\n", - "const mockScript = new Function('Mock', `\n" + script + "\n`);\n", + "const mockScript = new Function('Mock', `\n" + escapedScript + "\n`);\n", "mockScript(Mock);\n", - "const mockHTML = Mock.template(" + initPropsBuilder + ");\n", + "const mockHTML = Mock.template(" + propsBuilder + ");\n", "self.postMessage(mockHTML);\n", "Mock.document = parseHTML(mockHTML).document;\n", "onmessage = (msg) => {\n", @@ -135,6 +125,25 @@ private String[] getWorkerSource(String mockScript) { }; } + private void handleMessageEvent(MessageEvent event) { + Ode.CLog("worker.message: dirty: " + event.getData().toString()); + String sanitizedData = DOMPurify.sanitize(event.getData().toString()); + Ode.CLog("worker.message: clean: " + sanitizedData); + HTMLPanel html = new HTMLPanel(sanitizedData); + html.setStylePrimaryName(".ode-SimpleMockComponent"); + shadowRoot.removeAllChildren(); + shadowRoot.appendChild(html.getElement()); + } + + private void handleErrorEvent(Worker.ErrorEvent error) { + Ode.CLog("worker.error: " + error.getMessage()); + Ode.CLog(String.valueOf(error.getError())); + } + + private static native ShadowRoot attachShadow(Element element) /*-{ + return element.attachShadow({ mode: 'open' }); + }-*/; + @Override public void delete() { if (worker != null) { diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/ShadowRoot.java b/appinventor/appengine/src/com/google/appinventor/client/utils/ShadowRoot.java new file mode 100644 index 00000000000..17355be8e4f --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/ShadowRoot.java @@ -0,0 +1,10 @@ +package com.google.appinventor.client.utils; + +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.Node; + +public class ShadowRoot extends Element { + public static Node host; + public static String mode; + protected ShadowRoot() {} +} diff --git a/appinventor/appengine/war/static/css/Ya.css b/appinventor/appengine/war/static/css/Ya.css index 7d3789a18e0..4c223dd76ae 100755 --- a/appinventor/appengine/war/static/css/Ya.css +++ b/appinventor/appengine/war/static/css/Ya.css @@ -1401,6 +1401,17 @@ select.ode-PropertyEditor[disabled] { border: 2px solid #8fc202; } +.ode-MockVisibleExtensionHost { + box-sizing: border-box; + display: inline-block; + width: fit-content; + height: fit-content; +} + +.ode-MockVisibleExtensionHost-selected { + border: 2px solid #8fc202; +} + .ode-MockVisibleExtensionLoading { box-sizing: border-box; border: 2px dashed #383d41; @@ -1411,10 +1422,6 @@ select.ode-PropertyEditor[disabled] { font-style: italic; } -.ode-MockVisibleExtensionLoading-selected { - border: 2px dashed #8fc202; -} - .ode-MockVisibleExtensionLoading img { opacity: 0.75; } From b5176e0ec98f18222b7e928248a6b2fcf47c17a1 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 5 Aug 2024 18:54:45 +0530 Subject: [PATCH 17/34] chore: give property values relevant types before posting to worker --- .../simple/components/MockButtonBase.java | 2 +- .../editor/simple/components/MockCanvas.java | 2 +- .../simple/components/MockComponent.java | 35 ---------- .../simple/components/MockComponentsUtil.java | 15 +++-- .../editor/simple/components/MockForm.java | 2 +- .../simple/components/MockHVArrangement.java | 2 +- .../simple/components/MockImageBase.java | 2 +- .../simple/components/MockListView.java | 2 +- .../editor/simple/components/MockMarker.java | 2 +- .../components/MockVisibleExtension.java | 64 ++++++++++++++++++- .../utils/jstypes/ComponentProperty.java | 4 +- .../appinventor/client/utils/jstypes/URL.java | 2 + 12 files changed, 80 insertions(+), 54 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockButtonBase.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockButtonBase.java index e56a038022c..c9171a67f00 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockButtonBase.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockButtonBase.java @@ -233,7 +233,7 @@ private void setFontTypefaceProperty(String text) { */ private void setImageProperty(String text) { imagePropValue = text; - String url = convertImagePropertyValueToUrl(text); + String url = MockComponentsUtil.convertAssetValueToUrl(editor, text); if (url == null) { hasImage = false; url = ""; diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCanvas.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCanvas.java index 87d4cd89a23..56bbade5dae 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCanvas.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCanvas.java @@ -85,7 +85,7 @@ private void setBackgroundColorProperty(String text) { * Sets the canvas's BackgroundImage property to a new value. */ private void setBackgroundImageProperty(String text) { - String url = convertImagePropertyValueToUrl(text); + String url = MockComponentsUtil.convertAssetValueToUrl(editor, text); // We tell the layout (which is a MockCanvasLayout) that there is (or is not) a background // image so it can adjust the "layout width/height". The "layout width/height" is used when the diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java index d16bdc76166..23dc98fccc7 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java @@ -855,41 +855,6 @@ public final SourceStructureExplorerItem getSourceStructureExplorerItem() { return sourceStructureExplorerItem; } - /** - * Returns the asset node with the given name. - * - * @param name asset name - * @return asset node found or {@code null} - */ - protected ProjectNode getAssetNode(String name) { - Project project = Ode.getInstance().getProjectManager().getProject(editor.getProjectId()); - if (project != null) { - HasAssetsFolder<YoungAndroidAssetsFolder> hasAssetsFolder = - (YoungAndroidProjectNode) project.getRootNode(); - for (ProjectNode asset : hasAssetsFolder.getAssetsFolder().getChildren()) { - if (asset.getName().equals(name)) { - return asset; - } - } - } - return null; - } - - /** - * Converts the given image property value to an image url. - * Returns null if the image property value is blank or not recognized as an - * asset. - */ - protected String convertImagePropertyValueToUrl(String text) { - if (text.length() > 0) { - ProjectNode asset = getAssetNode(text); - if (asset != null) { - return StorageUtil.getFileUrl(asset.getProjectId(), asset.getFileId()); - } - } - return null; - } - // For debugging purposes only private String describeElement(com.google.gwt.dom.client.Element element) { if (element == null) { diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponentsUtil.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponentsUtil.java index 9b138f9f6db..167bc9f4449 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponentsUtil.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponentsUtil.java @@ -198,17 +198,18 @@ static ProjectNode getAssetNode(SimpleEditor editor, String name) { } return null; } - + /** - * Converts the given font typeface property value to font resource URL + * Converts the given asset name to a file URL. Returns null if the name is + * blank or not recognized as an asset. * * @param editor the editor - * @param text asset name + * @param name asset name * @return the string value of font resource URL */ - static String convertFontPropertyValueToUrl(SimpleEditor editor, String text) { - if (text.length() > 0) { - ProjectNode asset = getAssetNode(editor, text); + static String convertAssetValueToUrl(SimpleEditor editor, String name) { + if (!name.isEmpty()) { + ProjectNode asset = getAssetNode(editor, name); if (asset != null) { return StorageUtil.getFileUrl(asset.getProjectId(), asset.getFileId()); } @@ -254,7 +255,7 @@ static void setWidgetFontTypeface(SimpleEditor editor, Widget widget, String typ } else { fontFamily = typeface.substring(0, typeface.lastIndexOf(".")); String resourceID = typeface.toLowerCase().substring(0, typeface.lastIndexOf(".")); - String resourceURL = convertFontPropertyValueToUrl(editor, typeface); + String resourceURL = convertAssetValueToUrl(editor, typeface); if (Document.get().getElementById(resourceID) == null) { createFontResource(fontFamily, resourceURL, resourceID); } diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockForm.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockForm.java index 52ba8baa2a5..5f91697b595 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockForm.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockForm.java @@ -806,7 +806,7 @@ private void setBackgroundColorProperty(String text) { * Sets the form's BackgroundImage property to a new value. */ private void setBackgroundImageProperty(String text) { - String url = convertImagePropertyValueToUrl(text); + String url = MockComponentsUtil.convertAssetValueToUrl(editor, text); if (url == null) { // text was not recognized as an asset. url = ""; diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVArrangement.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVArrangement.java index f71a23337a8..ae81bda684f 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVArrangement.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVArrangement.java @@ -167,7 +167,7 @@ private void adjustAlignmentDropdowns() { */ private void setImageProperty(String text) { imagePropValue = text; - String url = convertImagePropertyValueToUrl(text); + String url = MockComponentsUtil.convertAssetValueToUrl(editor, text); if (url == null) { hasImage = false; url = ""; diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImageBase.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImageBase.java index f665fbd851e..2b442302ee0 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImageBase.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImageBase.java @@ -70,7 +70,7 @@ public void onLoad(LoadEvent event) { */ private void setPictureProperty(String text) { picturePropValue = text; - String url = convertImagePropertyValueToUrl(text); + String url = MockComponentsUtil.convertAssetValueToUrl(editor, text); if (url == null) { // text was not recognized as an asset. Just display the icon for this type of component. image.setUrl(getIconImage().getUrl()); diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockListView.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockListView.java index be90114b81c..6e1362ac6a0 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockListView.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockListView.java @@ -305,7 +305,7 @@ private void createLabelItem(List<JSONObject> arrayList) { */ private Image createImage(String imageName, String widthValue, String heightValue) { Image image = new Image(); - String url = convertImagePropertyValueToUrl(imageName); + String url = MockComponentsUtil.convertAssetValueToUrl(editor, imageName); if (url == null) { // text was not recognized as an asset. Just display the icon for this type of component. image.setUrl(getIconImage().getUrl()); diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMarker.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMarker.java index 95c498188b4..152edd67454 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMarker.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMarker.java @@ -234,7 +234,7 @@ public void onSuccess(List<FileDescriptorWithContent> arg0) { }); } else { svgContent = null; - String url = convertImagePropertyValueToUrl(assetPath); + String url = MockComponentsUtil.convertAssetValueToUrl(editor, assetPath); if (url != null) { setMarkerAssetUrl(url); } else { diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 1abe634b4cf..1614dd4a83b 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -22,6 +22,7 @@ import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.InlineHTML; +import com.google.appinventor.components.common.PropertyTypeConstants; public class MockVisibleExtension extends MockVisibleComponent { private final long projectId; @@ -103,8 +104,7 @@ private String[] getWorkerSource(String mockScript) { final String escapedScript = mockScript.replaceAll("`", "\\\\`").replaceAll("\\$\\{", "\\\\\\${"); - final String baseUrl = - String.format("%s//%s", Window.Location.getProtocol(), Window.Location.getHost()); + final String baseUrl = Window.Location.getProtocol() + "//" + Window.Location.getHost(); return new String[] { "import { parseHTML } from '" + baseUrl + "/static/linkedom/linkedom.min.js';\n", @@ -157,11 +157,69 @@ public void delete() { public void onPropertyChange(String propertyName, String newValue) { super.onPropertyChange(propertyName, newValue); if (worker != null) { - ComponentProperty msg = new ComponentProperty(propertyName, newValue); + Object value = typeAndSanitizeProperty(propertyName, newValue); + ComponentProperty msg = new ComponentProperty(propertyName, value); worker.postMessage(msg); } } + private Object typeAndSanitizeProperty(String name, String value) { + final String type = getProperties().getProperty(name).getEditorType(); + switch (type) { + case PropertyTypeConstants.PROPERTY_TYPE_INTEGER: + case PropertyTypeConstants.PROPERTY_TYPE_NON_NEGATIVE_INTEGER: + return Integer.parseInt(value); + case PropertyTypeConstants.PROPERTY_TYPE_FLOAT: + case PropertyTypeConstants.PROPERTY_TYPE_NON_NEGATIVE_FLOAT: + return Float.parseFloat(value); + case PropertyTypeConstants.PROPERTY_TYPE_BOOLEAN: + case PropertyTypeConstants.PROPERTY_TYPE_VISIBILITY: + return Boolean.parseBoolean(value); + case PropertyTypeConstants.PROPERTY_TYPE_COLOR: + { + String alpha = value.substring(2, 4); + String baseHex = value.substring(4); + return "#" + baseHex + alpha; + } + case PropertyTypeConstants.PROPERTY_TYPE_ASSET: + { + String url = MockComponentsUtil.convertAssetValueToUrl(editor, value); + return URL.parse(url); + } + case PropertyTypeConstants.PROPERTY_TYPE_LENGTH: + { + int intVal = Integer.parseInt(value); + if (intVal <= LENGTH_PERCENT_TAG) { + return Math.abs(intVal + 1000) + "%"; + } else if (intVal == LENGTH_PREFERRED) { + return "auto"; + } else if (intVal == LENGTH_FILL_PARENT) { + return "100%"; + } else { + return intVal + "px"; + } + } + case "typeface": + { + try { + int intVal = Integer.parseInt(value); + if (intVal <= 1) { + return "sans-serif"; + } else if (intVal == 2) { + return "serif"; + } else if (intVal == 3) { + return "monospace"; + } + } catch (NumberFormatException e) { + String url = MockComponentsUtil.convertAssetValueToUrl(editor, value); + return URL.parse(url); + } + } + default: + return value; + } + } + // @Override // public int getPreferredWidth() { // return 128; diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java index 0445663e347..e23c6267957 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java @@ -6,9 +6,9 @@ @JsType(namespace = JsPackage.GLOBAL) public class ComponentProperty { public final String name; - public final String value; + public final Object value; - public ComponentProperty(String name, String value) { + public ComponentProperty(String name, Object value) { this.name = name; this.value = value; } diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/URL.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/URL.java index f053313a373..df8b507a259 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/URL.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/URL.java @@ -8,4 +8,6 @@ public class URL { public static native String createObjectURL(Object object); public static native String revokeObjectURL(String url); + + public static native URL parse(String url); } From a1efb86449f39fca4bb6b3757ac9a5887a965437 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 5 Aug 2024 22:20:47 +0530 Subject: [PATCH 18/34] chore: handle typefaces correctly --- .../simple/components/MockVisibleExtension.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 1614dd4a83b..50c42e92125 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -15,6 +15,7 @@ import com.google.appinventor.client.widgets.properties.EditableProperty; import com.google.appinventor.shared.rpc.project.ChecksumedFileException; import com.google.appinventor.shared.rpc.project.ChecksumedLoadFile; +import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.FlowPanel; @@ -184,7 +185,7 @@ private Object typeAndSanitizeProperty(String name, String value) { case PropertyTypeConstants.PROPERTY_TYPE_ASSET: { String url = MockComponentsUtil.convertAssetValueToUrl(editor, value); - return URL.parse(url); + return URL.parse(url).toString(); } case PropertyTypeConstants.PROPERTY_TYPE_LENGTH: { @@ -211,8 +212,12 @@ private Object typeAndSanitizeProperty(String name, String value) { return "monospace"; } } catch (NumberFormatException e) { - String url = MockComponentsUtil.convertAssetValueToUrl(editor, value); - return URL.parse(url); + String typeface = value.substring(0, value.lastIndexOf(".")); + if (Document.get().getElementById(typeface) == null) { + String url = MockComponentsUtil.convertAssetValueToUrl(editor, value); + MockComponentsUtil.createFontResource(typeface, url, typeface); + } + return typeface; } } default: From c6fe9c1c05245003c86ba15cc152dbcf19fda6b1 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sun, 11 Aug 2024 19:31:19 +0530 Subject: [PATCH 19/34] chore: use JSONObject to pass `initialProperties` Co-authored-by: Diego Barreiro Perez <diego.barreiro.perez@gmail.com> --- .../simple/components/MockVisibleExtension.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 50c42e92125..20aa7873449 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -17,6 +17,8 @@ import com.google.appinventor.shared.rpc.project.ChecksumedLoadFile; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; +import com.google.gwt.json.client.JSONObject; +import com.google.gwt.json.client.JSONString; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTMLPanel; @@ -97,14 +99,13 @@ public void onCreateFromPalette() { private String[] getWorkerSource(String mockScript) { // Construct a JS object of the extension's properties and their values at // the time of initialization of the mock. - final StringBuilder propsBuilder = new StringBuilder("{ "); + JSONObject initialProps = new JSONObject(); for (EditableProperty p : getProperties()) { - propsBuilder.append("'" + p.getName() + "': '" + p.getValue() + "', "); + initialProps.put(p.getName(), new JSONString(p.getValue())); } - propsBuilder.append("}"); + final String propsBuilder = initialProps.toString(); - final String escapedScript = - mockScript.replaceAll("`", "\\\\`").replaceAll("\\$\\{", "\\\\\\${"); + final String escapedScript = new JSONString(mockScript).toString(); final String baseUrl = Window.Location.getProtocol() + "//" + Window.Location.getHost(); return new String[] { @@ -114,7 +115,7 @@ private String[] getWorkerSource(String mockScript) { " template: (initialProperties) => undefined,\n", " onPropertyChange: (property) => undefined\n", "};\n", - "const mockScript = new Function('Mock', `\n" + escapedScript + "\n`);\n", + "const mockScript = new Function('Mock', " + escapedScript + ");\n", "mockScript(Mock);\n", "const mockHTML = Mock.template(" + propsBuilder + ");\n", "self.postMessage(mockHTML);\n", From 02df2891c43d89a39aa60e3a96ec34973a28b13f Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sun, 11 Aug 2024 18:25:19 +0530 Subject: [PATCH 20/34] fix: don't initialize component mock to get its icon image --- .../palette/SimpleComponentDescriptor.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java index 0486f7d2d73..e9af6f23d65 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java @@ -360,14 +360,10 @@ public boolean getNonVisible() { * @return image for component */ public Image getImage() { - if (nonVisible) { - String type = COMPONENT_DATABASE.getComponentType(name); - return getImageFromPath(COMPONENT_DATABASE.getIconName(name), - type.substring(0, type.lastIndexOf('.')), - editor.getProjectId()); - } else { - return getCachedMockComponent(name, editor).getIconImage(); - } + String type = COMPONENT_DATABASE.getComponentType(name); + return getImageFromPath(COMPONENT_DATABASE.getIconName(name), + type.substring(0, type.lastIndexOf('.')), + editor.getProjectId()); } /** @@ -605,7 +601,11 @@ public static MockComponent createMockComponent(String name, String type, Simple Image icon = getImageFromPath(scd.getIconName(name), type, editor.getProjectId()); String packageName = type.substring(0, type.lastIndexOf(".")); - return new MockVisibleExtension(editor, name, icon, packageName); + try { + return new MockVisibleExtension(editor, name, icon, packageName); + } catch (Exception e) { + throw new RuntimeException(e); + } } } } From b4d121d2e470e4ff82e95aee3f94ab5d06db336a Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sun, 11 Aug 2024 18:26:46 +0530 Subject: [PATCH 21/34] chore: initialize worker in the mock constructor --- .../simple/components/MockComponent.java | 6 ------ .../components/MockVisibleExtension.java | 19 +++++++++++++------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java index 23dc98fccc7..0bbbe829eb1 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java @@ -17,7 +17,6 @@ import com.google.appinventor.client.editor.youngandroid.YaBlocksEditor; import com.google.appinventor.client.editor.youngandroid.YaFormEditor; import com.google.appinventor.client.explorer.SourceStructureExplorerItem; -import com.google.appinventor.client.explorer.project.Project; import com.google.appinventor.client.widgets.ClonedWidget; import com.google.appinventor.client.widgets.LabeledTextBox; import com.google.appinventor.client.widgets.dnd.DragSource; @@ -30,11 +29,6 @@ import com.google.appinventor.client.widgets.properties.StringPropertyEditor; import com.google.appinventor.client.widgets.properties.TextPropertyEditor; import com.google.appinventor.client.youngandroid.TextValidators; -import com.google.appinventor.shared.rpc.project.HasAssetsFolder; -import com.google.appinventor.shared.rpc.project.ProjectNode; -import com.google.appinventor.shared.rpc.project.youngandroid.YoungAndroidAssetsFolder; -import com.google.appinventor.shared.rpc.project.youngandroid.YoungAndroidProjectNode; -import com.google.appinventor.shared.storage.StorageUtil; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 20aa7873449..99a9b18d129 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -50,16 +50,19 @@ public MockVisibleExtension( shadowRoot = attachShadow(shadowHost.getElement()); - HorizontalPanel loadingPanel = new HorizontalPanel(); - loadingPanel.setStylePrimaryName(".ode-MockVisibleExtensionLoading"); - iconImage.setWidth("24px"); - loadingPanel.add(iconImage); - InlineHTML label = new InlineHTML("Loading " + typeName + "..."); - loadingPanel.add(label); + // HorizontalPanel loadingPanel = new HorizontalPanel(); + // loadingPanel.setStylePrimaryName(".ode-MockVisibleExtensionLoading"); + // iconImage.setWidth("24px"); + // loadingPanel.add(iconImage); + // InlineHTML label = new InlineHTML("Loading " + typeName + "..."); + // loadingPanel.add(label); + // + // shadowRoot.appendChild(loadingPanel.getElement()); shadowRoot.appendChild(loadingPanel.getElement()); Ode.CLog("MockVisibleExtension.constructor"); + initWorker(); initComponent(shadowHost); } @@ -67,6 +70,10 @@ public MockVisibleExtension( public void onCreateFromPalette() { super.onCreateFromPalette(); Ode.CLog("MockVisibleExtension.createFromPalette"); + } + + private void initWorker() { + Ode.CLog("MockVisibleExtension.initWorker"); final String mockScriptPath = "assets/external_comps/" + packageName + "/mocks/" + typeName + ".mock.js"; Promise.<ChecksumedLoadFile>call( From 5bce8426af4739b1d3dd7470619a5302744387c9 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Tue, 13 Aug 2024 23:35:53 +0530 Subject: [PATCH 22/34] fix: passing numeric values to worker caused unnecessary object nesting Co-authored-by: Diego Barreiro Perez <diego.barreiro.perez@gmail.com> --- .../components/MockVisibleExtension.java | 75 ++++++++----------- .../utils/jstypes/ComponentProperty.java | 15 ---- 2 files changed, 33 insertions(+), 57 deletions(-) delete mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 99a9b18d129..2204a55f7d9 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -5,7 +5,6 @@ import com.google.appinventor.client.utils.Promise; import com.google.appinventor.client.utils.jstypes.Blob; import com.google.appinventor.client.utils.jstypes.BlobOptions; -import com.google.appinventor.client.utils.jstypes.ComponentProperty; import com.google.appinventor.client.utils.jstypes.DOMPurify; import com.google.appinventor.client.utils.ShadowRoot; import com.google.appinventor.client.utils.jstypes.URL; @@ -15,16 +14,18 @@ import com.google.appinventor.client.widgets.properties.EditableProperty; import com.google.appinventor.shared.rpc.project.ChecksumedFileException; import com.google.appinventor.shared.rpc.project.ChecksumedLoadFile; +import com.google.gwt.core.client.JsonUtils; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; +import com.google.gwt.json.client.JSONBoolean; +import com.google.gwt.json.client.JSONNumber; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONString; +import com.google.gwt.json.client.JSONValue; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTMLPanel; -import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; -import com.google.gwt.user.client.ui.InlineHTML; import com.google.appinventor.components.common.PropertyTypeConstants; public class MockVisibleExtension extends MockVisibleComponent { @@ -40,6 +41,7 @@ public class MockVisibleExtension extends MockVisibleComponent { public MockVisibleExtension( SimpleEditor editor, String typeName, Image iconImage, String packageName) { super(editor, typeName, iconImage); + Ode.CLog("MockVisibleExtension.constructor"); this.projectId = editor.getProjectId(); this.typeName = typeName; @@ -50,18 +52,6 @@ public MockVisibleExtension( shadowRoot = attachShadow(shadowHost.getElement()); - // HorizontalPanel loadingPanel = new HorizontalPanel(); - // loadingPanel.setStylePrimaryName(".ode-MockVisibleExtensionLoading"); - // iconImage.setWidth("24px"); - // loadingPanel.add(iconImage); - // InlineHTML label = new InlineHTML("Loading " + typeName + "..."); - // loadingPanel.add(label); - // - // shadowRoot.appendChild(loadingPanel.getElement()); - - shadowRoot.appendChild(loadingPanel.getElement()); - - Ode.CLog("MockVisibleExtension.constructor"); initWorker(); initComponent(shadowHost); } @@ -112,23 +102,24 @@ private String[] getWorkerSource(String mockScript) { } final String propsBuilder = initialProps.toString(); - final String escapedScript = new JSONString(mockScript).toString(); + private String[] getWorkerSource(String mockScript) { + final String escapedScript = JsonUtils.escapeValue(mockScript); final String baseUrl = Window.Location.getProtocol() + "//" + Window.Location.getHost(); return new String[] { "import { parseHTML } from '" + baseUrl + "/static/linkedom/linkedom.min.js';\n", "const Mock = {\n", " document: undefined,\n", - " template: (initialProperties) => undefined,\n", + " template: () => undefined,\n", " onPropertyChange: (property) => undefined\n", "};\n", "const mockScript = new Function('Mock', " + escapedScript + ");\n", "mockScript(Mock);\n", - "const mockHTML = Mock.template(" + propsBuilder + ");\n", + "const mockHTML = Mock.template();\n", "self.postMessage(mockHTML);\n", "Mock.document = parseHTML(mockHTML).document;\n", "onmessage = (msg) => {\n", - " Mock.onPropertyChange(msg.data);\n", + " Mock.onPropertyChange(JSON.parse(msg.data));\n", " postMessage(Mock.document.toString());\n", "};\n", }; @@ -155,10 +146,7 @@ private static native ShadowRoot attachShadow(Element element) /*-{ @Override public void delete() { - if (worker != null) { - worker.terminate(); - URL.revokeObjectURL(workerUrl); - } + if (worker != null) cleanUp(); super.delete(); } @@ -166,58 +154,61 @@ public void delete() { public void onPropertyChange(String propertyName, String newValue) { super.onPropertyChange(propertyName, newValue); if (worker != null) { - Object value = typeAndSanitizeProperty(propertyName, newValue); - ComponentProperty msg = new ComponentProperty(propertyName, value); - worker.postMessage(msg); + JSONValue value = typeAndSanitizeProperty(propertyName, newValue); + JSONObject msg = new JSONObject(); + msg.put("name", new JSONString(propertyName)); + msg.put("value", value); + worker.postMessage(msg.toString()); } } - private Object typeAndSanitizeProperty(String name, String value) { + private JSONValue typeAndSanitizeProperty(String name, String value) { final String type = getProperties().getProperty(name).getEditorType(); switch (type) { case PropertyTypeConstants.PROPERTY_TYPE_INTEGER: case PropertyTypeConstants.PROPERTY_TYPE_NON_NEGATIVE_INTEGER: - return Integer.parseInt(value); + return new JSONNumber(Integer.parseInt(value)); case PropertyTypeConstants.PROPERTY_TYPE_FLOAT: case PropertyTypeConstants.PROPERTY_TYPE_NON_NEGATIVE_FLOAT: - return Float.parseFloat(value); + return new JSONNumber(Float.parseFloat(value)); case PropertyTypeConstants.PROPERTY_TYPE_BOOLEAN: case PropertyTypeConstants.PROPERTY_TYPE_VISIBILITY: - return Boolean.parseBoolean(value); + return JSONBoolean.getInstance(Boolean.parseBoolean(value)); case PropertyTypeConstants.PROPERTY_TYPE_COLOR: { String alpha = value.substring(2, 4); String baseHex = value.substring(4); - return "#" + baseHex + alpha; + return new JSONString("#" + baseHex + alpha); } case PropertyTypeConstants.PROPERTY_TYPE_ASSET: { String url = MockComponentsUtil.convertAssetValueToUrl(editor, value); - return URL.parse(url).toString(); + if (url == null) return null; + return new JSONString(url); } case PropertyTypeConstants.PROPERTY_TYPE_LENGTH: { int intVal = Integer.parseInt(value); if (intVal <= LENGTH_PERCENT_TAG) { - return Math.abs(intVal + 1000) + "%"; + return new JSONString(Math.abs(intVal + 1000) + "%"); } else if (intVal == LENGTH_PREFERRED) { - return "auto"; + return new JSONString("auto"); } else if (intVal == LENGTH_FILL_PARENT) { - return "100%"; + return new JSONString("100%"); } else { - return intVal + "px"; + return new JSONString(intVal + "px"); } } - case "typeface": + case PropertyTypeConstants.PROPERTY_TYPE_TYPEFACE: { try { int intVal = Integer.parseInt(value); if (intVal <= 1) { - return "sans-serif"; + return new JSONString("sans-serif"); } else if (intVal == 2) { - return "serif"; + return new JSONString("serif"); } else if (intVal == 3) { - return "monospace"; + return new JSONString("monospace"); } } catch (NumberFormatException e) { String typeface = value.substring(0, value.lastIndexOf(".")); @@ -225,11 +216,11 @@ private Object typeAndSanitizeProperty(String name, String value) { String url = MockComponentsUtil.convertAssetValueToUrl(editor, value); MockComponentsUtil.createFontResource(typeface, url, typeface); } - return typeface; + return new JSONString(typeface); } } default: - return value; + return new JSONString(value); } } diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java deleted file mode 100644 index e23c6267957..00000000000 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/ComponentProperty.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.google.appinventor.client.utils.jstypes; - -import jsinterop.annotations.JsPackage; -import jsinterop.annotations.JsType; - -@JsType(namespace = JsPackage.GLOBAL) -public class ComponentProperty { - public final String name; - public final Object value; - - public ComponentProperty(String name, Object value) { - this.name = name; - this.value = value; - } -} From 31cada5526d5b4421470467aec0e3960413dba1a Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Tue, 13 Aug 2024 23:38:52 +0530 Subject: [PATCH 23/34] chore: handle upgradation of extensions --- .../components/MockVisibleExtension.java | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 2204a55f7d9..15e305a170f 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -57,9 +57,19 @@ public MockVisibleExtension( } @Override - public void onCreateFromPalette() { - super.onCreateFromPalette(); - Ode.CLog("MockVisibleExtension.createFromPalette"); + public void upgrade() { + super.upgrade(); + Ode.CLog("MockVisibleExtension.upgrade"); + if (worker != null) { + cleanUp(); + initWorker(); + } + upgradeComplete(); + } + + private void cleanUp() { + worker.terminate(); + URL.revokeObjectURL(workerUrl); } private void initWorker() { @@ -70,10 +80,10 @@ private void initWorker() { "Server error: could not load mock script for component: " + typeName, cb -> Ode.getInstance().getProjectService().load2(projectId, mockScriptPath, cb)) .then( - result -> { + file -> { final String mockScript; try { - mockScript = result.getContent(); + mockScript = file.getContent(); } catch (ChecksumedFileException e) { return Promise.reject(e.getMessage()); } @@ -89,19 +99,14 @@ private void initWorker() { worker.addEventListener("message", this::handleMessageEvent); worker.addEventListener("error", this::handleErrorEvent); - return Promise.resolve(result); + for (EditableProperty p : getProperties()) { + onPropertyChange(p.getName(), p.getValue()); + } + + return Promise.resolve(file); }); } - private String[] getWorkerSource(String mockScript) { - // Construct a JS object of the extension's properties and their values at - // the time of initialization of the mock. - JSONObject initialProps = new JSONObject(); - for (EditableProperty p : getProperties()) { - initialProps.put(p.getName(), new JSONString(p.getValue())); - } - final String propsBuilder = initialProps.toString(); - private String[] getWorkerSource(String mockScript) { final String escapedScript = JsonUtils.escapeValue(mockScript); final String baseUrl = Window.Location.getProtocol() + "//" + Window.Location.getHost(); From a872b8823d073a855ce99a02e6a9edb3dad69058 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:02:01 +0530 Subject: [PATCH 24/34] chore: refresh form after initializing the worker --- .../client/editor/simple/components/MockVisibleExtension.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 15e305a170f..3711bafd97e 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -49,10 +49,10 @@ public MockVisibleExtension( FlowPanel shadowHost = new FlowPanel(); shadowHost.setStylePrimaryName("ode-MockVisibleExtensionHost"); - shadowRoot = attachShadow(shadowHost.getElement()); initWorker(); + refreshForm(); initComponent(shadowHost); } @@ -64,6 +64,7 @@ public void upgrade() { cleanUp(); initWorker(); } + refreshForm(); upgradeComplete(); } From 715a0c185c1ab7522efc6214e09422f4b4b1d726 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Wed, 14 Aug 2024 18:28:04 +0530 Subject: [PATCH 25/34] chore: post render requests from worker as objects --- .../components/MockVisibleExtension.java | 42 ++++++++++++------- .../client/utils/jstypes/Worker.java | 4 +- .../client/utils/jstypes/WorkerMessage.java | 14 +++++++ 3 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerMessage.java diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 3711bafd97e..103b30820c2 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -3,13 +3,14 @@ import com.google.appinventor.client.Ode; import com.google.appinventor.client.editor.simple.SimpleEditor; import com.google.appinventor.client.utils.Promise; +import com.google.appinventor.client.utils.ShadowRoot; import com.google.appinventor.client.utils.jstypes.Blob; import com.google.appinventor.client.utils.jstypes.BlobOptions; import com.google.appinventor.client.utils.jstypes.DOMPurify; -import com.google.appinventor.client.utils.ShadowRoot; import com.google.appinventor.client.utils.jstypes.URL; import com.google.appinventor.client.utils.jstypes.Worker; import com.google.appinventor.client.utils.jstypes.Worker.MessageEvent; +import com.google.appinventor.client.utils.jstypes.WorkerMessage; import com.google.appinventor.client.utils.jstypes.WorkerOptions; import com.google.appinventor.client.widgets.properties.EditableProperty; import com.google.appinventor.shared.rpc.project.ChecksumedFileException; @@ -29,6 +30,8 @@ import com.google.appinventor.components.common.PropertyTypeConstants; public class MockVisibleExtension extends MockVisibleComponent { + private final String MOCK_RENDER_REQUEST = "render-request"; + private final long projectId; private final String typeName; private final String packageName; @@ -114,31 +117,38 @@ private String[] getWorkerSource(String mockScript) { return new String[] { "import { parseHTML } from '" + baseUrl + "/static/linkedom/linkedom.min.js';\n", - "const Mock = {\n", - " document: undefined,\n", - " template: () => undefined,\n", - " onPropertyChange: (property) => undefined\n", - "};\n", + "const Mock = {};\n", "const mockScript = new Function('Mock', " + escapedScript + ");\n", "mockScript(Mock);\n", "const mockHTML = Mock.template();\n", - "self.postMessage(mockHTML);\n", + "postMessage({\n", + " type: '" + MOCK_RENDER_REQUEST + "',\n", + " data: mockHTML\n", + "});\n", "Mock.document = parseHTML(mockHTML).document;\n", "onmessage = (msg) => {\n", " Mock.onPropertyChange(JSON.parse(msg.data));\n", - " postMessage(Mock.document.toString());\n", + " postMessage({\n", + " type: '" + MOCK_RENDER_REQUEST + "',\n", + " data: Mock.document.toString()\n", + " });\n", "};\n", }; } - private void handleMessageEvent(MessageEvent event) { - Ode.CLog("worker.message: dirty: " + event.getData().toString()); - String sanitizedData = DOMPurify.sanitize(event.getData().toString()); - Ode.CLog("worker.message: clean: " + sanitizedData); - HTMLPanel html = new HTMLPanel(sanitizedData); - html.setStylePrimaryName(".ode-SimpleMockComponent"); - shadowRoot.removeAllChildren(); - shadowRoot.appendChild(html.getElement()); + private void handleMessageEvent(MessageEvent<WorkerMessage> msg) { + final WorkerMessage msgData = msg.getData(); + Ode.CLog("worker.message: type: " + msgData.getType()); + if (msgData.getType().equals(MOCK_RENDER_REQUEST)) { + final String htmlStr = msgData.getData().toString(); + Ode.CLog("worker.data: dirty: " + htmlStr); + String sanitizedData = DOMPurify.sanitize(htmlStr); + Ode.CLog("worker.data: clean: " + sanitizedData); + HTMLPanel htmlPanel = new HTMLPanel(sanitizedData); + htmlPanel.setStylePrimaryName(".ode-SimpleMockComponent"); + shadowRoot.removeAllChildren(); + shadowRoot.appendChild(htmlPanel.getElement()); + } } private void handleErrorEvent(Worker.ErrorEvent error) { diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java index 28df7da37d5..578ae772f26 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/Worker.java @@ -17,9 +17,9 @@ public interface EventListener<T extends Event> { public interface Event {} @JsType(isNative = true, namespace = JsPackage.GLOBAL) - public interface MessageEvent extends Event { + public interface MessageEvent<T> extends Event { @JsProperty(name = "data") - Object getData(); + T getData(); } @JsType(isNative = true, namespace = JsPackage.GLOBAL) diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerMessage.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerMessage.java new file mode 100644 index 00000000000..bdaf1adb4b4 --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerMessage.java @@ -0,0 +1,14 @@ +package com.google.appinventor.client.utils.jstypes; + +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsProperty; +import jsinterop.annotations.JsType; + +@JsType(isNative = true, namespace = JsPackage.GLOBAL) +public interface WorkerMessage { + @JsProperty(name = "type") + String getType(); + + @JsProperty(name = "data") + Object getData(); +} From 2f141e4d3d132f6b592571eab5058146d0c089ee Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Fri, 16 Aug 2024 13:17:25 +0530 Subject: [PATCH 26/34] chore: add external css support --- .../components/MockVisibleExtension.java | 62 ++++++++++++------- .../client/utils/jstypes/CSSStyleSheet.java | 9 +++ .../scripts/ExternalComponentGenerator.java | 35 ++++++----- 3 files changed, 68 insertions(+), 38 deletions(-) create mode 100644 appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/CSSStyleSheet.java diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 103b30820c2..28c28482864 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -4,14 +4,8 @@ import com.google.appinventor.client.editor.simple.SimpleEditor; import com.google.appinventor.client.utils.Promise; import com.google.appinventor.client.utils.ShadowRoot; -import com.google.appinventor.client.utils.jstypes.Blob; -import com.google.appinventor.client.utils.jstypes.BlobOptions; -import com.google.appinventor.client.utils.jstypes.DOMPurify; -import com.google.appinventor.client.utils.jstypes.URL; -import com.google.appinventor.client.utils.jstypes.Worker; +import com.google.appinventor.client.utils.jstypes.*; import com.google.appinventor.client.utils.jstypes.Worker.MessageEvent; -import com.google.appinventor.client.utils.jstypes.WorkerMessage; -import com.google.appinventor.client.utils.jstypes.WorkerOptions; import com.google.appinventor.client.widgets.properties.EditableProperty; import com.google.appinventor.shared.rpc.project.ChecksumedFileException; import com.google.appinventor.shared.rpc.project.ChecksumedLoadFile; @@ -51,7 +45,7 @@ public MockVisibleExtension( this.packageName = packageName; FlowPanel shadowHost = new FlowPanel(); - shadowHost.setStylePrimaryName("ode-MockVisibleExtensionHost"); + shadowHost.setStylePrimaryName(".ode-MockVisibleExtensionHost"); shadowRoot = attachShadow(shadowHost.getElement()); initWorker(); @@ -78,21 +72,15 @@ private void cleanUp() { private void initWorker() { Ode.CLog("MockVisibleExtension.initWorker"); - final String mockScriptPath = - "assets/external_comps/" + packageName + "/mocks/" + typeName + ".mock.js"; - Promise.<ChecksumedLoadFile>call( - "Server error: could not load mock script for component: " + typeName, - cb -> Ode.getInstance().getProjectService().load2(projectId, mockScriptPath, cb)) - .then( - file -> { - final String mockScript; - try { - mockScript = file.getContent(); - } catch (ChecksumedFileException e) { - return Promise.reject(e.getMessage()); - } + final String mockFilesBasePath = + "assets/external_comps/" + packageName + "/mocks/" + typeName + ".mock"; - String[] workerSrc = getWorkerSource(mockScript); + Promise.<String[]>allOf( + loadFileContent(mockFilesBasePath + ".js", false), + loadFileContent(mockFilesBasePath + ".css", true)) + .then( + files -> { + String[] workerSrc = getWorkerSource(files[0]); BlobOptions blobOpts = BlobOptions.create("text/javascript", "transparent"); Blob blob = new Blob(workerSrc, blobOpts); @@ -100,6 +88,12 @@ private void initWorker() { WorkerOptions workerOpts = WorkerOptions.create("module"); worker = new Worker(workerUrl, workerOpts); + if (files[1] != null && !files[1].isEmpty()) { + final CSSStyleSheet[] css = new CSSStyleSheet[] {new CSSStyleSheet()}; + css[0].replaceSync(files[1]); + setAdoptedStyleSheets(shadowRoot, css); + } + worker.addEventListener("message", this::handleMessageEvent); worker.addEventListener("error", this::handleErrorEvent); @@ -107,7 +101,24 @@ private void initWorker() { onPropertyChange(p.getName(), p.getValue()); } - return Promise.resolve(file); + return Promise.resolve(files); + }); + } + + private Promise<String> loadFileContent(String path, boolean resolveOnFailure) { + return Promise.<ChecksumedLoadFile>call( + "Server error: Could not load file: " + path, + cb -> Ode.getInstance().getProjectService().load2(projectId, path, cb)) + .then( + file -> { + try { + return Promise.resolve(file.getContent()); + } catch (ChecksumedFileException e) { + if (resolveOnFailure) { + return Promise.resolve(null); + } + return Promise.reject(e.getMessage()); + } }); } @@ -160,6 +171,11 @@ private static native ShadowRoot attachShadow(Element element) /*-{ return element.attachShadow({ mode: 'open' }); }-*/; + private static native void setAdoptedStyleSheets( + Element shadowRoot, CSSStyleSheet[] styleSheets) /*-{ + shadowRoot.adoptedStyleSheets = styleSheets; + }-*/; + @Override public void delete() { if (worker != null) cleanUp(); diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/CSSStyleSheet.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/CSSStyleSheet.java new file mode 100644 index 00000000000..eb3d733ed1d --- /dev/null +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/CSSStyleSheet.java @@ -0,0 +1,9 @@ +package com.google.appinventor.client.utils.jstypes; + +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsType; + +@JsType(isNative = true, namespace = JsPackage.GLOBAL) +public class CSSStyleSheet { + public native void replaceSync(String text); +} diff --git a/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java b/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java index c2ab4d7e44d..1bcca490d26 100644 --- a/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java +++ b/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java @@ -290,7 +290,7 @@ private static void copyAssets(String packageName, JSONObject componentDescripto } } - public static void copyMock(String packageName, JSONObject componentDescriptor) throws JSONException, IOException { + private static void copyMock(String packageName, JSONObject componentDescriptor) throws JSONException, IOException { boolean nonVisible = componentDescriptor.getBoolean("nonVisible"); if (nonVisible) { return; @@ -298,21 +298,26 @@ public static void copyMock(String packageName, JSONObject componentDescriptor) String packagePath = packageName.replace('.', File.separatorChar); File sourceDir = new File(externalComponentsDirPath + File.separator + ".." + File.separator + ".." + File.separator + "src", File.separator + packagePath); - File mockFile = new File(sourceDir, "mocks" + File.separator + componentDescriptor.getString("name") + ".mock.js"); - - if (!mockFile.exists()) { - System.out.println("Extensions : Skipping missing mock file " + mockFile.getAbsolutePath()); - return; + File mockScript = new File(sourceDir, "mocks" + File.separator + componentDescriptor.getString("name") + ".mock.js"); + + if (mockScript.exists()) { + File destDir = + new File(externalComponentsDirPath + File.separator + packageName + File.separator); + File mockDestDir = new File(destDir, "mocks"); + ensureFreshDirectory( + mockDestDir.getPath(), "Unable to delete the mock directory for the extension."); + + File mockScriptDest = new File(mockDestDir, componentDescriptor.getString("name") + ".mock.js"); + System.out.println("Extensions : " + "Copying mock script " + mockScript.getAbsolutePath()); + copyFile(mockScript.getAbsolutePath(), mockScriptDest.getAbsolutePath()); + + File mockCss = new File(sourceDir, "mocks" + File.separator + componentDescriptor.getString("name") + ".mock.css"); + if (mockCss.exists()) { + File mockCssDest = new File(mockDestDir, componentDescriptor.getString("name") + ".mock.css"); + System.out.println("Extensions : " + "Copying mock stylesheets " + mockScript.getAbsolutePath()); + copyFile(mockCss.getAbsolutePath(), mockCssDest.getAbsolutePath()); + } } - - File destDir = new File(externalComponentsDirPath + File.separator + packageName + File.separator); - File mockDestDir = new File(destDir, "mocks"); - ensureFreshDirectory(mockDestDir.getPath(), - "Unable to delete the mock directory for the extension."); - - File mockDestFile = new File(mockDestDir, componentDescriptor.getString("name") + ".mock.js"); - System.out.println("Extensions : " + "Copying mock file " + mockFile.getAbsolutePath()); - copyFile(mockFile.getAbsolutePath(), mockDestFile.getAbsolutePath()); } private static void generateExternalComponentOtherFiles(String packageName) throws IOException { From 6e995d782ed6a0ae532274eda0939aa472e9231f Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Fri, 16 Aug 2024 16:59:06 +0530 Subject: [PATCH 27/34] chore: store mock file names in component.json --- .../editor/simple/ComponentDatabase.java | 24 ++++++++++++- .../components/MockVisibleExtension.java | 35 +++++++------------ .../simple/ComponentDatabaseInterface.java | 28 ++++++++++++++- .../scripts/ExternalComponentGenerator.java | 28 +++++++++++++++ 4 files changed, 90 insertions(+), 25 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/ComponentDatabase.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/ComponentDatabase.java index d34c262a42d..4124cd34fe5 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/ComponentDatabase.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/ComponentDatabase.java @@ -324,6 +324,15 @@ public String getTypeDescription(String componentName) { return component.getTypeDescription(); } + @Override + public MockInfo getMockInfo(String componentName) { + final ComponentDefinition component = components.get(componentName); + if (component == null) { + throw new ComponentNotFoundException(componentName); + } + return component.getMockInfo(); + } + public String getComponentsJSONString() { return componentsJSONString; } @@ -339,6 +348,17 @@ private boolean initComponent(JSONObject componentNode) { // This must be a component upgrade! We remove existing entry components.remove(name); } + final MockInfo mockInfo; + if (properties.get("mock") != null) { + final JSONObject obj = properties.get("mock").asObject(); + final JSONValue css = obj.get("css"); + mockInfo = + new MockInfo( + obj.get("script").asString().getString(), + css != null ? css.asString().getString() : null); + } else { + mockInfo = null; + } ComponentDefinition component = new ComponentDefinition(name, Integer.parseInt(properties.get("version").asString().getString()), optString(properties.get("versionName"), ""), @@ -352,7 +372,9 @@ private boolean initComponent(JSONObject componentNode) { Boolean.valueOf(properties.get("nonVisible").asString().getString()), properties.get("iconName").asString().getString(), properties.containsKey("licenseName") ? properties.get("licenseName").asString().getString() : "", - componentNode.toJson()); + componentNode.toJson(), + mockInfo + ); findComponentProperties(component, properties.get("properties").asArray(), properties.get("blockProperties").asArray()); findComponentBlockProperties(component, properties.get("blockProperties").asArray()); diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 28c28482864..cc76247f078 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -1,14 +1,14 @@ package com.google.appinventor.client.editor.simple.components; import com.google.appinventor.client.Ode; +import com.google.appinventor.client.editor.simple.SimpleComponentDatabase; import com.google.appinventor.client.editor.simple.SimpleEditor; import com.google.appinventor.client.utils.Promise; import com.google.appinventor.client.utils.ShadowRoot; import com.google.appinventor.client.utils.jstypes.*; import com.google.appinventor.client.utils.jstypes.Worker.MessageEvent; import com.google.appinventor.client.widgets.properties.EditableProperty; -import com.google.appinventor.shared.rpc.project.ChecksumedFileException; -import com.google.appinventor.shared.rpc.project.ChecksumedLoadFile; +import com.google.appinventor.shared.simple.ComponentDatabaseInterface.MockInfo; import com.google.gwt.core.client.JsonUtils; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; @@ -27,8 +27,8 @@ public class MockVisibleExtension extends MockVisibleComponent { private final String MOCK_RENDER_REQUEST = "render-request"; private final long projectId; - private final String typeName; private final String packageName; + private final MockInfo mockInfo; private Worker worker = null; private String workerUrl = null; @@ -41,11 +41,11 @@ public MockVisibleExtension( Ode.CLog("MockVisibleExtension.constructor"); this.projectId = editor.getProjectId(); - this.typeName = typeName; this.packageName = packageName; + this.mockInfo = SimpleComponentDatabase.getInstance(this.projectId).getMockInfo(typeName); FlowPanel shadowHost = new FlowPanel(); - shadowHost.setStylePrimaryName(".ode-MockVisibleExtensionHost"); + shadowHost.setStylePrimaryName("ode-MockVisibleExtensionHost"); shadowRoot = attachShadow(shadowHost.getElement()); initWorker(); @@ -72,12 +72,11 @@ private void cleanUp() { private void initWorker() { Ode.CLog("MockVisibleExtension.initWorker"); - final String mockFilesBasePath = - "assets/external_comps/" + packageName + "/mocks/" + typeName + ".mock"; + final String assetsBasePath = "assets/external_comps/" + packageName + "/"; Promise.<String[]>allOf( - loadFileContent(mockFilesBasePath + ".js", false), - loadFileContent(mockFilesBasePath + ".css", true)) + loadFileContent(assetsBasePath + mockInfo.getScript()), + mockInfo.getCss() != null ? loadFileContent(assetsBasePath + mockInfo.getCss()) : null) .then( files -> { String[] workerSrc = getWorkerSource(files[0]); @@ -105,21 +104,11 @@ private void initWorker() { }); } - private Promise<String> loadFileContent(String path, boolean resolveOnFailure) { - return Promise.<ChecksumedLoadFile>call( + private Promise<String> loadFileContent(String path) { + return Promise.<String>call( "Server error: Could not load file: " + path, - cb -> Ode.getInstance().getProjectService().load2(projectId, path, cb)) - .then( - file -> { - try { - return Promise.resolve(file.getContent()); - } catch (ChecksumedFileException e) { - if (resolveOnFailure) { - return Promise.resolve(null); - } - return Promise.reject(e.getMessage()); - } - }); + cb -> Ode.getInstance().getProjectService().load(projectId, path, cb)) + .then(Promise::resolve); } private String[] getWorkerSource(String mockScript) { diff --git a/appinventor/appengine/src/com/google/appinventor/shared/simple/ComponentDatabaseInterface.java b/appinventor/appengine/src/com/google/appinventor/shared/simple/ComponentDatabaseInterface.java index e8f2a5bd7d0..617c1ad490a 100644 --- a/appinventor/appengine/src/com/google/appinventor/shared/simple/ComponentDatabaseInterface.java +++ b/appinventor/appengine/src/com/google/appinventor/shared/simple/ComponentDatabaseInterface.java @@ -45,11 +45,12 @@ public static class ComponentDefinition { private final String iconName; private final String licenseName; private final String typeDescription; + private final MockInfo mockInfo; public ComponentDefinition(String name, int version, String versionName, String dateBuilt, String type, boolean external, String categoryString, String helpString, String helpUrl, boolean showOnPalette, boolean nonVisible, String iconName, - String licenseName, String typeDescription) { + String licenseName, String typeDescription, MockInfo mockInfo) { this.name = name; this.version = version; this.versionName = versionName; @@ -70,6 +71,7 @@ public ComponentDefinition(String name, int version, String versionName, String this.iconName = iconName; this.licenseName = licenseName; this.typeDescription = typeDescription; + this.mockInfo = mockInfo; } public void add(PropertyDefinition property) { @@ -166,6 +168,10 @@ public String getLicenseName() { public String getTypeDescription() { return typeDescription; } + + public MockInfo getMockInfo() { + return mockInfo; + } } @@ -353,6 +359,24 @@ public List<ParameterDefinition> getParam() { } } + public static class MockInfo { + private final String script; + private final String css; + + public MockInfo(String script, String css) { + this.script = script; + this.css = css; + } + + public String getScript() { + return script; + } + + public String getCss() { + return css; + } + } + /** * Returns the component names. */ @@ -539,4 +563,6 @@ public List<ParameterDefinition> getParam() { * @param componentName name of component to query */ boolean isComponent(String componentName); + + MockInfo getMockInfo(String componentName); } diff --git a/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java b/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java index 1bcca490d26..a481463caac 100644 --- a/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java +++ b/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java @@ -11,6 +11,7 @@ import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; import java.io.File; @@ -103,6 +104,7 @@ private static void generateAllExtensions() throws IOException, JSONException { String name = useFQCN && entry.getValue().size() == 1 ? entry.getValue().get(0).type : entry.getKey(); String logComponentType = "[" + name + "]"; System.out.println("\nExtensions : Generating files " + logComponentType); + addMockInfoToDescriptorsOfVisibleComps(entry.getValue()); generateExternalComponentDescriptors(name, entry.getValue()); for (ExternalComponentInfo info : entry.getValue()) { copyIcon(name, info.descriptor); @@ -217,6 +219,32 @@ private static void generateExternalComponentBuildFiles(String packageName, List } } + private static void addMockInfoToDescriptorsOfVisibleComps(List<ExternalComponentInfo> extensions) + throws JSONException { + final Path srcDir = Paths.get(externalComponentsDirPath, "..", "..", "src"); + for (ExternalComponentInfo ext : extensions) { + final boolean isNonVisible = ext.descriptor.getBoolean("nonVisible"); + if (isNonVisible) continue; + + final String packagePath = ext.packageName.replace('.', File.separatorChar); + final String name = ext.descriptor.getString("name"); + final Path mockScript = Paths.get(srcDir.toString(), packagePath, "mocks", name + ".mock.js"); + final Path mockCss = Paths.get(srcDir.toString(), packagePath, "mocks", name + ".mock.css"); + + if (!mockScript.toFile().exists()) { + throw new IllegalStateException( + "Mock script doesn't exist for visible component: " + ext.type); + } + + final JSONObject mockObj = new JSONObject(); + mockObj.put("script", "mocks/" + name + ".mock.js"); + if (mockCss.toFile().exists()) { + mockObj.put("css", "mocks/" + name + ".mock.css"); + } + ext.descriptor.put("mock", mockObj); + } + } + private static void copyIcon(String packageName, JSONObject componentDescriptor) throws IOException, JSONException { String icon = componentDescriptor.getString("iconName"); From a8aab6fe7de69a5c9d6cfc3c68f2bf45988e2471 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Fri, 16 Aug 2024 17:14:24 +0530 Subject: [PATCH 28/34] chore: add `onError` event to `Mock` --- .../editor/simple/components/MockVisibleExtension.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index cc76247f078..c8c7495373d 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -117,7 +117,12 @@ private String[] getWorkerSource(String mockScript) { return new String[] { "import { parseHTML } from '" + baseUrl + "/static/linkedom/linkedom.min.js';\n", - "const Mock = {};\n", + "const Mock = {\n", + " document: undefined,\n", + " template: () => undefined,\n", + " onPropertyChange: (property) => undefined\n", + " onError: (error) => undefined\n", + "};\n", "const mockScript = new Function('Mock', " + escapedScript + ");\n", "mockScript(Mock);\n", "const mockHTML = Mock.template();\n", @@ -133,6 +138,7 @@ private String[] getWorkerSource(String mockScript) { " data: Mock.document.toString()\n", " });\n", "};\n", + "onerror = (err) => Mock.onError(err);\n", }; } @@ -145,7 +151,7 @@ private void handleMessageEvent(MessageEvent<WorkerMessage> msg) { String sanitizedData = DOMPurify.sanitize(htmlStr); Ode.CLog("worker.data: clean: " + sanitizedData); HTMLPanel htmlPanel = new HTMLPanel(sanitizedData); - htmlPanel.setStylePrimaryName(".ode-SimpleMockComponent"); + htmlPanel.setStylePrimaryName("ode-SimpleMockComponent"); shadowRoot.removeAllChildren(); shadowRoot.appendChild(htmlPanel.getElement()); } From e93a780cdec4d94c51570cb4aee41366f8f17428 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sat, 17 Aug 2024 22:57:34 +0530 Subject: [PATCH 29/34] refactor: clean up the code --- .../components/MockVisibleExtension.java | 182 ++++++++++-------- .../palette/SimpleComponentDescriptor.java | 2 +- 2 files changed, 101 insertions(+), 83 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index c8c7495373d..0b4e633b78c 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -1,7 +1,6 @@ package com.google.appinventor.client.editor.simple.components; import com.google.appinventor.client.Ode; -import com.google.appinventor.client.editor.simple.SimpleComponentDatabase; import com.google.appinventor.client.editor.simple.SimpleEditor; import com.google.appinventor.client.utils.Promise; import com.google.appinventor.client.utils.ShadowRoot; @@ -30,89 +29,89 @@ public class MockVisibleExtension extends MockVisibleComponent { private final String packageName; private final MockInfo mockInfo; - private Worker worker = null; - private String workerUrl = null; + private Worker worker; + private String workerUrl; private final ShadowRoot shadowRoot; public MockVisibleExtension( - SimpleEditor editor, String typeName, Image iconImage, String packageName) { + SimpleEditor editor, + String typeName, + Image iconImage, + String packageName, + MockInfo mockInfo) { super(editor, typeName, iconImage); Ode.CLog("MockVisibleExtension.constructor"); this.projectId = editor.getProjectId(); this.packageName = packageName; - this.mockInfo = SimpleComponentDatabase.getInstance(this.projectId).getMockInfo(typeName); + this.mockInfo = mockInfo; - FlowPanel shadowHost = new FlowPanel(); + final FlowPanel shadowHost = new FlowPanel(); shadowHost.setStylePrimaryName("ode-MockVisibleExtensionHost"); - shadowRoot = attachShadow(shadowHost.getElement()); + shadowRoot = applyAttachShadow(shadowHost.getElement()); - initWorker(); - refreshForm(); + initializeMock() + .then0( + () -> { + refreshForm(); + return null; + }); initComponent(shadowHost); } - @Override - public void upgrade() { - super.upgrade(); - Ode.CLog("MockVisibleExtension.upgrade"); - if (worker != null) { - cleanUp(); - initWorker(); - } - refreshForm(); - upgradeComplete(); - } - - private void cleanUp() { - worker.terminate(); - URL.revokeObjectURL(workerUrl); - } - - private void initWorker() { + private Promise<Object> initializeMock() { Ode.CLog("MockVisibleExtension.initWorker"); final String assetsBasePath = "assets/external_comps/" + packageName + "/"; - Promise.<String[]>allOf( - loadFileContent(assetsBasePath + mockInfo.getScript()), - mockInfo.getCss() != null ? loadFileContent(assetsBasePath + mockInfo.getCss()) : null) + final Promise<String> fetchScript = fetchFileContent(assetsBasePath + mockInfo.getScript()); + final Promise<String> fetchCss; + if (mockInfo.getCss() != null) { + fetchCss = fetchFileContent(assetsBasePath + mockInfo.getCss()); + } else { + fetchCss = null; + } + return Promise.<String[]>allOf(fetchScript, fetchCss) .then( files -> { - String[] workerSrc = getWorkerSource(files[0]); - BlobOptions blobOpts = BlobOptions.create("text/javascript", "transparent"); - Blob blob = new Blob(workerSrc, blobOpts); - - workerUrl = URL.createObjectURL(blob); - WorkerOptions workerOpts = WorkerOptions.create("module"); - worker = new Worker(workerUrl, workerOpts); - if (files[1] != null && !files[1].isEmpty()) { final CSSStyleSheet[] css = new CSSStyleSheet[] {new CSSStyleSheet()}; css[0].replaceSync(files[1]); - setAdoptedStyleSheets(shadowRoot, css); + applyAdoptedStyleSheets(shadowRoot, css); } - worker.addEventListener("message", this::handleMessageEvent); - worker.addEventListener("error", this::handleErrorEvent); + initializeWorker(files[0]); for (EditableProperty p : getProperties()) { onPropertyChange(p.getName(), p.getValue()); } - return Promise.resolve(files); + return null; }); } - private Promise<String> loadFileContent(String path) { + private Promise<String> fetchFileContent(String path) { return Promise.<String>call( "Server error: Could not load file: " + path, cb -> Ode.getInstance().getProjectService().load(projectId, path, cb)) .then(Promise::resolve); } - private String[] getWorkerSource(String mockScript) { - final String escapedScript = JsonUtils.escapeValue(mockScript); + private void initializeWorker(String mockScriptSrc) { + final String[] workerSrc = buildWorkerSource(mockScriptSrc); + final BlobOptions blobOpts = BlobOptions.create("text/javascript", "transparent"); + final Blob blob = new Blob(workerSrc, blobOpts); + + workerUrl = URL.createObjectURL(blob); + final WorkerOptions workerOpts = WorkerOptions.create("module"); + worker = new Worker(workerUrl, workerOpts); + + worker.addEventListener("message", this::handleMessageEvent); + worker.addEventListener("error", this::handleErrorEvent); + } + + private String[] buildWorkerSource(String mockScriptSrc) { + final String escapedScript = JsonUtils.escapeValue(mockScriptSrc); final String baseUrl = Window.Location.getProtocol() + "//" + Window.Location.getHost(); return new String[] { @@ -120,8 +119,8 @@ private String[] getWorkerSource(String mockScript) { "const Mock = {\n", " document: undefined,\n", " template: () => undefined,\n", - " onPropertyChange: (property) => undefined\n", - " onError: (error) => undefined\n", + " onPropertyChange: (property) => undefined,\n", + " onError: (error) => undefined,\n", "};\n", "const mockScript = new Function('Mock', " + escapedScript + ");\n", "mockScript(Mock);\n", @@ -145,51 +144,36 @@ private String[] getWorkerSource(String mockScript) { private void handleMessageEvent(MessageEvent<WorkerMessage> msg) { final WorkerMessage msgData = msg.getData(); Ode.CLog("worker.message: type: " + msgData.getType()); + if (msgData.getType().equals(MOCK_RENDER_REQUEST)) { final String htmlStr = msgData.getData().toString(); Ode.CLog("worker.data: dirty: " + htmlStr); - String sanitizedData = DOMPurify.sanitize(htmlStr); + final String sanitizedData = DOMPurify.sanitize(htmlStr); Ode.CLog("worker.data: clean: " + sanitizedData); - HTMLPanel htmlPanel = new HTMLPanel(sanitizedData); + + final HTMLPanel htmlPanel = new HTMLPanel(sanitizedData); htmlPanel.setStylePrimaryName("ode-SimpleMockComponent"); shadowRoot.removeAllChildren(); shadowRoot.appendChild(htmlPanel.getElement()); } } - private void handleErrorEvent(Worker.ErrorEvent error) { - Ode.CLog("worker.error: " + error.getMessage()); - Ode.CLog(String.valueOf(error.getError())); - } - - private static native ShadowRoot attachShadow(Element element) /*-{ - return element.attachShadow({ mode: 'open' }); - }-*/; - - private static native void setAdoptedStyleSheets( - Element shadowRoot, CSSStyleSheet[] styleSheets) /*-{ - shadowRoot.adoptedStyleSheets = styleSheets; + // TODO + private native void handleErrorEvent(Object error) /*-{ + console.log(error) }-*/; - @Override - public void delete() { - if (worker != null) cleanUp(); - super.delete(); - } - @Override public void onPropertyChange(String propertyName, String newValue) { super.onPropertyChange(propertyName, newValue); - if (worker != null) { - JSONValue value = typeAndSanitizeProperty(propertyName, newValue); - JSONObject msg = new JSONObject(); - msg.put("name", new JSONString(propertyName)); - msg.put("value", value); - worker.postMessage(msg.toString()); - } + if (worker == null) return; + final JSONObject msg = new JSONObject(); + msg.put("name", new JSONString(propertyName)); + msg.put("value", convertPropertyValue(propertyName, newValue)); + worker.postMessage(msg.toString()); } - private JSONValue typeAndSanitizeProperty(String name, String value) { + private JSONValue convertPropertyValue(String name, String value) { final String type = getProperties().getProperty(name).getEditorType(); switch (type) { case PropertyTypeConstants.PROPERTY_TYPE_INTEGER: @@ -203,19 +187,19 @@ private JSONValue typeAndSanitizeProperty(String name, String value) { return JSONBoolean.getInstance(Boolean.parseBoolean(value)); case PropertyTypeConstants.PROPERTY_TYPE_COLOR: { - String alpha = value.substring(2, 4); - String baseHex = value.substring(4); + final String alpha = value.substring(2, 4); + final String baseHex = value.substring(4); return new JSONString("#" + baseHex + alpha); } case PropertyTypeConstants.PROPERTY_TYPE_ASSET: { - String url = MockComponentsUtil.convertAssetValueToUrl(editor, value); + final String url = MockComponentsUtil.convertAssetValueToUrl(editor, value); if (url == null) return null; return new JSONString(url); } case PropertyTypeConstants.PROPERTY_TYPE_LENGTH: { - int intVal = Integer.parseInt(value); + final int intVal = Integer.parseInt(value); if (intVal <= LENGTH_PERCENT_TAG) { return new JSONString(Math.abs(intVal + 1000) + "%"); } else if (intVal == LENGTH_PREFERRED) { @@ -229,7 +213,7 @@ private JSONValue typeAndSanitizeProperty(String name, String value) { case PropertyTypeConstants.PROPERTY_TYPE_TYPEFACE: { try { - int intVal = Integer.parseInt(value); + final int intVal = Integer.parseInt(value); if (intVal <= 1) { return new JSONString("sans-serif"); } else if (intVal == 2) { @@ -238,9 +222,9 @@ private JSONValue typeAndSanitizeProperty(String name, String value) { return new JSONString("monospace"); } } catch (NumberFormatException e) { - String typeface = value.substring(0, value.lastIndexOf(".")); + final String typeface = value.substring(0, value.lastIndexOf(".")); if (Document.get().getElementById(typeface) == null) { - String url = MockComponentsUtil.convertAssetValueToUrl(editor, value); + final String url = MockComponentsUtil.convertAssetValueToUrl(editor, value); MockComponentsUtil.createFontResource(typeface, url, typeface); } return new JSONString(typeface); @@ -251,6 +235,40 @@ private JSONValue typeAndSanitizeProperty(String name, String value) { } } + @Override + public void upgrade() { + super.upgrade(); + Ode.CLog("MockVisibleExtension.upgrade"); + cleanUpWorker(); + initializeMock() + .then0( + () -> { + refreshForm(); + upgradeComplete(); + return null; + }); + } + + @Override + public void delete() { + cleanUpWorker(); + super.delete(); + } + + private void cleanUpWorker() { + worker.terminate(); + URL.revokeObjectURL(workerUrl); + } + + private static native ShadowRoot applyAttachShadow(Element element) /*-{ + return element.attachShadow({ mode: 'open' }); + }-*/; + + private static native void applyAdoptedStyleSheets( + Element shadowRoot, CSSStyleSheet[] styleSheets) /*-{ + shadowRoot.adoptedStyleSheets = styleSheets; + }-*/; + // @Override // public int getPreferredWidth() { // return 128; diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java index e9af6f23d65..eb8f188edbc 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java @@ -602,7 +602,7 @@ public static MockComponent createMockComponent(String name, String type, Simple Image icon = getImageFromPath(scd.getIconName(name), type, editor.getProjectId()); String packageName = type.substring(0, type.lastIndexOf(".")); try { - return new MockVisibleExtension(editor, name, icon, packageName); + return new MockVisibleExtension(editor, name, icon, packageName, scd.getMockInfo(name)); } catch (Exception e) { throw new RuntimeException(e); } From dee4817821ebefe01e29a530c7909a4b3a8af45c Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 19 Aug 2024 12:57:03 +0530 Subject: [PATCH 30/34] chore: suggestions --- .../editor/simple/palette/SimpleComponentDescriptor.java | 6 +----- .../appinventor/client/utils/jstypes/WorkerOptions.java | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java index eb8f188edbc..252affa93af 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java @@ -601,11 +601,7 @@ public static MockComponent createMockComponent(String name, String type, Simple Image icon = getImageFromPath(scd.getIconName(name), type, editor.getProjectId()); String packageName = type.substring(0, type.lastIndexOf(".")); - try { - return new MockVisibleExtension(editor, name, icon, packageName, scd.getMockInfo(name)); - } catch (Exception e) { - throw new RuntimeException(e); - } + return new MockVisibleExtension(editor, name, icon, packageName, scd.getMockInfo(name)); } } } diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerOptions.java b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerOptions.java index 39ab9a711df..33b2caf3b7d 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerOptions.java +++ b/appinventor/appengine/src/com/google/appinventor/client/utils/jstypes/WorkerOptions.java @@ -14,4 +14,4 @@ public static WorkerOptions create(String type) { opts.type = type; return opts; } -} \ No newline at end of file +} From 7e1c92af3011acbb98ab4039c5b518a3f8e023b2 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Mon, 19 Aug 2024 13:24:01 +0530 Subject: [PATCH 31/34] fix: update `MockInfo` after extension upgrade --- .../simple/components/MockComponent.java | 2 +- .../components/MockVisibleExtension.java | 18 +++++++++++------- .../palette/SimpleComponentDescriptor.java | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java index 0bbbe829eb1..535ada200b1 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java @@ -1208,7 +1208,7 @@ else if (presentInNewProperties && presentInOldProperties) { /** * upgradeComplete() - * Mark a MockComponent upgrade complete. + * Updates component definitions and marks a MockComponent upgrade complete. * This MUST be called manually after calling upgrade()! * All subclasses overriding this method must call super.upgradeComplete()! */ diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 0b4e633b78c..783b1defcc0 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -1,13 +1,14 @@ package com.google.appinventor.client.editor.simple.components; import com.google.appinventor.client.Ode; +import com.google.appinventor.client.editor.simple.SimpleComponentDatabase; import com.google.appinventor.client.editor.simple.SimpleEditor; import com.google.appinventor.client.utils.Promise; import com.google.appinventor.client.utils.ShadowRoot; import com.google.appinventor.client.utils.jstypes.*; import com.google.appinventor.client.utils.jstypes.Worker.MessageEvent; import com.google.appinventor.client.widgets.properties.EditableProperty; -import com.google.appinventor.shared.simple.ComponentDatabaseInterface.MockInfo; +import com.google.appinventor.shared.simple.ComponentDatabaseInterface; import com.google.gwt.core.client.JsonUtils; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; @@ -26,8 +27,9 @@ public class MockVisibleExtension extends MockVisibleComponent { private final String MOCK_RENDER_REQUEST = "render-request"; private final long projectId; + private final String typeName; private final String packageName; - private final MockInfo mockInfo; + private final SimpleComponentDatabase scd; private Worker worker; private String workerUrl; @@ -39,13 +41,14 @@ public MockVisibleExtension( String typeName, Image iconImage, String packageName, - MockInfo mockInfo) { + SimpleComponentDatabase scd) { super(editor, typeName, iconImage); Ode.CLog("MockVisibleExtension.constructor"); this.projectId = editor.getProjectId(); + this.typeName = typeName; this.packageName = packageName; - this.mockInfo = mockInfo; + this.scd = scd; final FlowPanel shadowHost = new FlowPanel(); shadowHost.setStylePrimaryName("ode-MockVisibleExtensionHost"); @@ -64,6 +67,7 @@ private Promise<Object> initializeMock() { Ode.CLog("MockVisibleExtension.initWorker"); final String assetsBasePath = "assets/external_comps/" + packageName + "/"; + final ComponentDatabaseInterface.MockInfo mockInfo = scd.getMockInfo(typeName); final Promise<String> fetchScript = fetchFileContent(assetsBasePath + mockInfo.getScript()); final Promise<String> fetchCss; if (mockInfo.getCss() != null) { @@ -74,11 +78,11 @@ private Promise<Object> initializeMock() { return Promise.<String[]>allOf(fetchScript, fetchCss) .then( files -> { + final CSSStyleSheet[] css = new CSSStyleSheet[] {new CSSStyleSheet()}; if (files[1] != null && !files[1].isEmpty()) { - final CSSStyleSheet[] css = new CSSStyleSheet[] {new CSSStyleSheet()}; css[0].replaceSync(files[1]); - applyAdoptedStyleSheets(shadowRoot, css); } + applyAdoptedStyleSheets(shadowRoot, css); initializeWorker(files[0]); @@ -238,13 +242,13 @@ private JSONValue convertPropertyValue(String name, String value) { @Override public void upgrade() { super.upgrade(); + upgradeComplete(); // Updates component definitions Ode.CLog("MockVisibleExtension.upgrade"); cleanUpWorker(); initializeMock() .then0( () -> { refreshForm(); - upgradeComplete(); return null; }); } diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java index 252affa93af..11ecc1ac973 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java @@ -601,7 +601,7 @@ public static MockComponent createMockComponent(String name, String type, Simple Image icon = getImageFromPath(scd.getIconName(name), type, editor.getProjectId()); String packageName = type.substring(0, type.lastIndexOf(".")); - return new MockVisibleExtension(editor, name, icon, packageName, scd.getMockInfo(name)); + return new MockVisibleExtension(editor, name, icon, packageName, scd); } } } From fc9a879e77876526c9aeb57aabafe374780765ac Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Tue, 17 Sep 2024 00:21:47 +0530 Subject: [PATCH 32/34] chore: show error in designer and console if mock can't be rendered --- .../com/google/appinventor/client/Ode.java | 4 ++ .../components/MockVisibleExtension.java | 71 ++++++++++++++----- appinventor/appengine/war/static/css/Ya.css | 9 +-- 3 files changed, 59 insertions(+), 25 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/Ode.java b/appinventor/appengine/src/com/google/appinventor/client/Ode.java index 430db9ad261..14700f23500 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/Ode.java +++ b/appinventor/appengine/src/com/google/appinventor/client/Ode.java @@ -2572,6 +2572,10 @@ public static native void CLog(String message) /*-{ console.log(message); }-*/; + public static native void CError(Object message) /*-{ + console.error(message); + }-*/; + public static native boolean isMobile() /*-{ var check = false; (function (a) { diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index 783b1defcc0..b5f65a1ea59 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -5,8 +5,15 @@ import com.google.appinventor.client.editor.simple.SimpleEditor; import com.google.appinventor.client.utils.Promise; import com.google.appinventor.client.utils.ShadowRoot; -import com.google.appinventor.client.utils.jstypes.*; +import com.google.appinventor.client.utils.jstypes.Blob; +import com.google.appinventor.client.utils.jstypes.BlobOptions; +import com.google.appinventor.client.utils.jstypes.CSSStyleSheet; +import com.google.appinventor.client.utils.jstypes.DOMPurify; +import com.google.appinventor.client.utils.jstypes.URL; +import com.google.appinventor.client.utils.jstypes.Worker; import com.google.appinventor.client.utils.jstypes.Worker.MessageEvent; +import com.google.appinventor.client.utils.jstypes.WorkerMessage; +import com.google.appinventor.client.utils.jstypes.WorkerOptions; import com.google.appinventor.client.widgets.properties.EditableProperty; import com.google.appinventor.shared.simple.ComponentDatabaseInterface; import com.google.gwt.core.client.JsonUtils; @@ -22,9 +29,10 @@ import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Image; import com.google.appinventor.components.common.PropertyTypeConstants; +import com.google.gwt.user.client.ui.InlineHTML; public class MockVisibleExtension extends MockVisibleComponent { - private final String MOCK_RENDER_REQUEST = "render-request"; + private static final String WORKER_MSG_TYPE_HTML = "html"; private final long projectId; private final String typeName; @@ -34,6 +42,7 @@ public class MockVisibleExtension extends MockVisibleComponent { private Worker worker; private String workerUrl; + private final FlowPanel shadowHost; private final ShadowRoot shadowRoot; public MockVisibleExtension( @@ -50,7 +59,7 @@ public MockVisibleExtension( this.packageName = packageName; this.scd = scd; - final FlowPanel shadowHost = new FlowPanel(); + shadowHost = new FlowPanel(); shadowHost.setStylePrimaryName("ode-MockVisibleExtensionHost"); shadowRoot = applyAttachShadow(shadowHost.getElement()); @@ -78,11 +87,11 @@ private Promise<Object> initializeMock() { return Promise.<String[]>allOf(fetchScript, fetchCss) .then( files -> { - final CSSStyleSheet[] css = new CSSStyleSheet[] {new CSSStyleSheet()}; if (files[1] != null && !files[1].isEmpty()) { + final CSSStyleSheet[] css = new CSSStyleSheet[1]; css[0].replaceSync(files[1]); + applyAdoptedStyleSheets(shadowRoot, css); } - applyAdoptedStyleSheets(shadowRoot, css); initializeWorker(files[0]); @@ -130,14 +139,14 @@ private String[] buildWorkerSource(String mockScriptSrc) { "mockScript(Mock);\n", "const mockHTML = Mock.template();\n", "postMessage({\n", - " type: '" + MOCK_RENDER_REQUEST + "',\n", + " type: '" + WORKER_MSG_TYPE_HTML + "',\n", " data: mockHTML\n", "});\n", "Mock.document = parseHTML(mockHTML).document;\n", "onmessage = (msg) => {\n", " Mock.onPropertyChange(JSON.parse(msg.data));\n", " postMessage({\n", - " type: '" + MOCK_RENDER_REQUEST + "',\n", + " type: '" + WORKER_MSG_TYPE_HTML + "',\n", " data: Mock.document.toString()\n", " });\n", "};\n", @@ -149,24 +158,50 @@ private void handleMessageEvent(MessageEvent<WorkerMessage> msg) { final WorkerMessage msgData = msg.getData(); Ode.CLog("worker.message: type: " + msgData.getType()); - if (msgData.getType().equals(MOCK_RENDER_REQUEST)) { + if (msgData.getType().equals(WORKER_MSG_TYPE_HTML)) { final String htmlStr = msgData.getData().toString(); Ode.CLog("worker.data: dirty: " + htmlStr); - final String sanitizedData = DOMPurify.sanitize(htmlStr); - Ode.CLog("worker.data: clean: " + sanitizedData); + final String sanitizedHtmlStr = DOMPurify.sanitize(htmlStr); + Ode.CLog("worker.data: clean: " + sanitizedHtmlStr); + + if (sanitizedHtmlStr.trim().isEmpty()) { + shadowHost.addStyleDependentName("error"); + final InlineHTML label = + new InlineHTML( + "ERR: Unable to load mock for + " + typeName + "\nCheck console for more details."); + shadowRoot.removeAllChildren(); + shadowRoot.appendChild(label.getElement()); + Ode.CError( + "Mock error: Empty HTML: " + + typeName + + "\nHTML before sanitization: " + + htmlStr + + "\nAfter sanitization: "); + refreshForm(); + } else { + shadowHost.removeStyleDependentName("error"); + final HTMLPanel htmlPanel = new HTMLPanel(sanitizedHtmlStr); + shadowRoot.removeAllChildren(); + shadowRoot.appendChild(htmlPanel.getElement()); + refreshForm(); + } + } + } - final HTMLPanel htmlPanel = new HTMLPanel(sanitizedData); - htmlPanel.setStylePrimaryName("ode-SimpleMockComponent"); + private void handleErrorEvent(Object error) { + shadowHost.addStyleDependentName("error"); + if (shadowRoot.getChildCount() == 0) { + final InlineHTML label = + new InlineHTML( + "ERR: Unable to load mock for + " + typeName + "\nCheck console for more details."); shadowRoot.removeAllChildren(); - shadowRoot.appendChild(htmlPanel.getElement()); + shadowRoot.appendChild(label.getElement()); + refreshForm(); } + setTitle("An error has occurred; check the console for more info."); + Ode.CError(error); } - // TODO - private native void handleErrorEvent(Object error) /*-{ - console.log(error) - }-*/; - @Override public void onPropertyChange(String propertyName, String newValue) { super.onPropertyChange(propertyName, newValue); diff --git a/appinventor/appengine/war/static/css/Ya.css b/appinventor/appengine/war/static/css/Ya.css index 4c223dd76ae..8b2a40b3500 100755 --- a/appinventor/appengine/war/static/css/Ya.css +++ b/appinventor/appengine/war/static/css/Ya.css @@ -1412,9 +1412,8 @@ select.ode-PropertyEditor[disabled] { border: 2px solid #8fc202; } -.ode-MockVisibleExtensionLoading { - box-sizing: border-box; - border: 2px dashed #383d41; +.ode-MockVisibleExtensionHost-error { + border: 3px dashed red; border-radius: 5px; padding: 4px; font-size: 12px; @@ -1422,10 +1421,6 @@ select.ode-PropertyEditor[disabled] { font-style: italic; } -.ode-MockVisibleExtensionLoading img { - opacity: 0.75; -} - .ode-SimpleMockMapFeature-selected svg * { stroke: #8fc202; stroke-opacity: 1; From f4a0b431dab13f82a7df71cdc55912ad980e92ac Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Tue, 17 Sep 2024 00:24:04 +0530 Subject: [PATCH 33/34] chore: better error when mock script is missing --- .../scripts/ExternalComponentGenerator.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java b/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java index a481463caac..92191563bcd 100644 --- a/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java +++ b/appinventor/components/src/com/google/appinventor/components/scripts/ExternalComponentGenerator.java @@ -76,10 +76,10 @@ public static void main(String[] args) throws IOException, JSONException { * Container class to store information about an extension. */ private static class ExternalComponentInfo { - private String type; - private String packageName; - private JSONObject descriptor; - private JSONObject buildInfo; + private final String type; + private final String packageName; + private final JSONObject descriptor; + private final JSONObject buildInfo; ExternalComponentInfo(JSONObject descriptor, JSONObject buildInfo) { this.descriptor = descriptor; @@ -232,8 +232,13 @@ private static void addMockInfoToDescriptorsOfVisibleComps(List<ExternalComponen final Path mockCss = Paths.get(srcDir.toString(), packagePath, "mocks", name + ".mock.css"); if (!mockScript.toFile().exists()) { - throw new IllegalStateException( - "Mock script doesn't exist for visible component: " + ext.type); + System.err.println( + "Extensions :\n[ERR] Visible extension " + ext.type + " does not have a mock script"); + System.err.println( + "\t\tHelp: Make sure that the mock script is placed under directory: " + mockScript.getParent().normalize()); + System.err.println( + "\t\tHelp: Also make sure that filename of mock script is: " + name + ".mock.js"); + throw new IllegalStateException("Mock script doesn't exist"); } final JSONObject mockObj = new JSONObject(); From 563e5996cece92e78187a9679e8f3ab6386d0e8b Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Tue, 17 Sep 2024 00:25:34 +0530 Subject: [PATCH 34/34] fix: fix shifting of mock when selected & hide overflow --- .../editor/simple/components/MockVisibleExtension.java | 10 ---------- appinventor/appengine/war/static/css/Ya.css | 2 ++ 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java index b5f65a1ea59..fab4add6cea 100644 --- a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java +++ b/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleExtension.java @@ -307,14 +307,4 @@ private static native void applyAdoptedStyleSheets( Element shadowRoot, CSSStyleSheet[] styleSheets) /*-{ shadowRoot.adoptedStyleSheets = styleSheets; }-*/; - - // @Override - // public int getPreferredWidth() { - // return 128; - // } - // - // @Override - // public int getPreferredHeight() { - // return 48; - // } } diff --git a/appinventor/appengine/war/static/css/Ya.css b/appinventor/appengine/war/static/css/Ya.css index 8b2a40b3500..5677d3868c1 100755 --- a/appinventor/appengine/war/static/css/Ya.css +++ b/appinventor/appengine/war/static/css/Ya.css @@ -1406,6 +1406,8 @@ select.ode-PropertyEditor[disabled] { display: inline-block; width: fit-content; height: fit-content; + border: 2px solid transparent; + overflow: hidden; } .ode-MockVisibleExtensionHost-selected {