@compas-oscd/open-scd 0.34.39 → 0.34.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/WizardDivider.js.map +1 -0
- package/dist/Wizarding.js.map +1 -0
- package/dist/action-icon.js.map +1 -0
- package/dist/action-pane.js.map +1 -0
- package/dist/addons/Editor.js.map +1 -0
- package/dist/addons/History.js.map +1 -0
- package/dist/addons/Layout.js.map +1 -0
- package/dist/addons/Settings.js.map +1 -0
- package/dist/addons/Waiter.js.map +1 -0
- package/dist/addons/Wizards.js.map +1 -0
- package/dist/addons/editor/edit-action-to-v1-converter.js.map +1 -0
- package/dist/addons/editor/edit-v1-to-v2-converter.js.map +1 -0
- package/dist/addons/history/get-log-text.js.map +1 -0
- package/dist/addons/menu-tabs/menu-tabs.js.map +1 -0
- package/dist/addons/plugin-manager/custom-plugin-dialog.js.map +1 -0
- package/dist/addons/plugin-manager/plugin-manager.js.map +1 -0
- package/dist/filtered-list.js.map +1 -0
- package/dist/finder-list.js.map +1 -0
- package/dist/foundation/compare.js.map +1 -0
- package/dist/foundation/dai.js.map +1 -0
- package/dist/foundation/generators.js.map +1 -0
- package/dist/foundation/ied.js.map +1 -0
- package/dist/foundation/nsd.js.map +1 -0
- package/dist/foundation/nsdoc.js.map +1 -0
- package/dist/foundation/scl.js.map +1 -0
- package/dist/foundation.js.map +1 -0
- package/dist/icons/compare.js.map +1 -0
- package/dist/icons/icons.js.map +1 -0
- package/dist/icons/ied-icons.js.map +1 -0
- package/dist/icons/lnode.js.map +1 -0
- package/dist/{src/index.d.ts → index.d.ts} +0 -2
- package/dist/{src/index.js → index.js} +0 -3
- package/dist/index.js.map +1 -0
- package/dist/open-scd.js.map +1 -0
- package/dist/oscd-filter-button.js.map +1 -0
- package/dist/plain-compare-list.js.map +1 -0
- package/dist/plugin-tag.js.map +1 -0
- package/dist/plugin.events.js.map +1 -0
- package/dist/plugin.js.map +1 -0
- package/dist/plugins.js.map +1 -0
- package/dist/schemas.js.map +1 -0
- package/dist/themes.js.map +1 -0
- package/dist/translations/de.js.map +1 -0
- package/dist/translations/en.js.map +1 -0
- package/dist/translations/loader.js.map +1 -0
- package/dist/wizard-checkbox.js.map +1 -0
- package/dist/wizard-dialog.js.map +1 -0
- package/dist/wizard-select.js.map +1 -0
- package/dist/wizard-textfield.js.map +1 -0
- package/dist/wizards.js.map +1 -0
- package/package.json +2 -3
- package/dist/src/WizardDivider.js.map +0 -1
- package/dist/src/Wizarding.js.map +0 -1
- package/dist/src/action-icon.js.map +0 -1
- package/dist/src/action-pane.js.map +0 -1
- package/dist/src/addons/Editor.js.map +0 -1
- package/dist/src/addons/History.js.map +0 -1
- package/dist/src/addons/Layout.js.map +0 -1
- package/dist/src/addons/Settings.js.map +0 -1
- package/dist/src/addons/Waiter.js.map +0 -1
- package/dist/src/addons/Wizards.js.map +0 -1
- package/dist/src/addons/editor/edit-action-to-v1-converter.js.map +0 -1
- package/dist/src/addons/editor/edit-v1-to-v2-converter.js.map +0 -1
- package/dist/src/addons/history/get-log-text.js.map +0 -1
- package/dist/src/addons/menu-tabs/menu-tabs.js.map +0 -1
- package/dist/src/addons/plugin-manager/custom-plugin-dialog.js.map +0 -1
- package/dist/src/addons/plugin-manager/plugin-manager.js.map +0 -1
- package/dist/src/filtered-list.js.map +0 -1
- package/dist/src/finder-list.js.map +0 -1
- package/dist/src/foundation/compare.js.map +0 -1
- package/dist/src/foundation/dai.js.map +0 -1
- package/dist/src/foundation/generators.js.map +0 -1
- package/dist/src/foundation/ied.js.map +0 -1
- package/dist/src/foundation/nsd.js.map +0 -1
- package/dist/src/foundation/nsdoc.js.map +0 -1
- package/dist/src/foundation/scl.js.map +0 -1
- package/dist/src/foundation.js.map +0 -1
- package/dist/src/icons/compare.js.map +0 -1
- package/dist/src/icons/icons.js.map +0 -1
- package/dist/src/icons/ied-icons.js.map +0 -1
- package/dist/src/icons/lnode.js.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/open-scd.js.map +0 -1
- package/dist/src/oscd-filter-button.js.map +0 -1
- package/dist/src/plain-compare-list.js.map +0 -1
- package/dist/src/plugin-tag.js.map +0 -1
- package/dist/src/plugin.events.js.map +0 -1
- package/dist/src/plugin.js.map +0 -1
- package/dist/src/plugins.js.map +0 -1
- package/dist/src/schemas.js.map +0 -1
- package/dist/src/themes.js.map +0 -1
- package/dist/src/translations/de.js.map +0 -1
- package/dist/src/translations/en.js.map +0 -1
- package/dist/src/translations/loader.js.map +0 -1
- package/dist/src/wizard-checkbox.js.map +0 -1
- package/dist/src/wizard-dialog.js.map +0 -1
- package/dist/src/wizard-select.js.map +0 -1
- package/dist/src/wizard-textfield.js.map +0 -1
- package/dist/src/wizards.js.map +0 -1
- package/dist/test/mock-open-scd.d.ts +0 -22
- package/dist/test/mock-open-scd.js +0 -53
- package/dist/test/mock-open-scd.js.map +0 -1
- package/dist/test/mock-wizard-editor.d.ts +0 -15
- package/dist/test/mock-wizard-editor.js +0 -50
- package/dist/test/mock-wizard-editor.js.map +0 -1
- /package/dist/{src/WizardDivider.d.ts → WizardDivider.d.ts} +0 -0
- /package/dist/{src/WizardDivider.js → WizardDivider.js} +0 -0
- /package/dist/{src/Wizarding.d.ts → Wizarding.d.ts} +0 -0
- /package/dist/{src/Wizarding.js → Wizarding.js} +0 -0
- /package/dist/{src/action-icon.d.ts → action-icon.d.ts} +0 -0
- /package/dist/{src/action-icon.js → action-icon.js} +0 -0
- /package/dist/{src/action-pane.d.ts → action-pane.d.ts} +0 -0
- /package/dist/{src/action-pane.js → action-pane.js} +0 -0
- /package/dist/{src/addons → addons}/Editor.d.ts +0 -0
- /package/dist/{src/addons → addons}/Editor.js +0 -0
- /package/dist/{src/addons → addons}/History.d.ts +0 -0
- /package/dist/{src/addons → addons}/History.js +0 -0
- /package/dist/{src/addons → addons}/Layout.d.ts +0 -0
- /package/dist/{src/addons → addons}/Layout.js +0 -0
- /package/dist/{src/addons → addons}/Settings.d.ts +0 -0
- /package/dist/{src/addons → addons}/Settings.js +0 -0
- /package/dist/{src/addons → addons}/Waiter.d.ts +0 -0
- /package/dist/{src/addons → addons}/Waiter.js +0 -0
- /package/dist/{src/addons → addons}/Wizards.d.ts +0 -0
- /package/dist/{src/addons → addons}/Wizards.js +0 -0
- /package/dist/{src/addons → addons}/editor/edit-action-to-v1-converter.d.ts +0 -0
- /package/dist/{src/addons → addons}/editor/edit-action-to-v1-converter.js +0 -0
- /package/dist/{src/addons → addons}/editor/edit-v1-to-v2-converter.d.ts +0 -0
- /package/dist/{src/addons → addons}/editor/edit-v1-to-v2-converter.js +0 -0
- /package/dist/{src/addons → addons}/history/get-log-text.d.ts +0 -0
- /package/dist/{src/addons → addons}/history/get-log-text.js +0 -0
- /package/dist/{src/addons → addons}/menu-tabs/menu-tabs.d.ts +0 -0
- /package/dist/{src/addons → addons}/menu-tabs/menu-tabs.js +0 -0
- /package/dist/{src/addons → addons}/plugin-manager/custom-plugin-dialog.d.ts +0 -0
- /package/dist/{src/addons → addons}/plugin-manager/custom-plugin-dialog.js +0 -0
- /package/dist/{src/addons → addons}/plugin-manager/plugin-manager.d.ts +0 -0
- /package/dist/{src/addons → addons}/plugin-manager/plugin-manager.js +0 -0
- /package/dist/{src/filtered-list.d.ts → filtered-list.d.ts} +0 -0
- /package/dist/{src/filtered-list.js → filtered-list.js} +0 -0
- /package/dist/{src/finder-list.d.ts → finder-list.d.ts} +0 -0
- /package/dist/{src/finder-list.js → finder-list.js} +0 -0
- /package/dist/{src/foundation → foundation}/compare.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/compare.js +0 -0
- /package/dist/{src/foundation → foundation}/dai.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/dai.js +0 -0
- /package/dist/{src/foundation → foundation}/generators.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/generators.js +0 -0
- /package/dist/{src/foundation → foundation}/ied.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/ied.js +0 -0
- /package/dist/{src/foundation → foundation}/nsd.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/nsd.js +0 -0
- /package/dist/{src/foundation → foundation}/nsdoc.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/nsdoc.js +0 -0
- /package/dist/{src/foundation → foundation}/scl.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/scl.js +0 -0
- /package/dist/{src/foundation.d.ts → foundation.d.ts} +0 -0
- /package/dist/{src/foundation.js → foundation.js} +0 -0
- /package/dist/{src/icons → icons}/compare.d.ts +0 -0
- /package/dist/{src/icons → icons}/compare.js +0 -0
- /package/dist/{src/icons → icons}/icons.d.ts +0 -0
- /package/dist/{src/icons → icons}/icons.js +0 -0
- /package/dist/{src/icons → icons}/ied-icons.d.ts +0 -0
- /package/dist/{src/icons → icons}/ied-icons.js +0 -0
- /package/dist/{src/icons → icons}/lnode.d.ts +0 -0
- /package/dist/{src/icons → icons}/lnode.js +0 -0
- /package/dist/{src/open-scd.d.ts → open-scd.d.ts} +0 -0
- /package/dist/{src/open-scd.js → open-scd.js} +0 -0
- /package/dist/{src/oscd-filter-button.d.ts → oscd-filter-button.d.ts} +0 -0
- /package/dist/{src/oscd-filter-button.js → oscd-filter-button.js} +0 -0
- /package/dist/{src/plain-compare-list.d.ts → plain-compare-list.d.ts} +0 -0
- /package/dist/{src/plain-compare-list.js → plain-compare-list.js} +0 -0
- /package/dist/{src/plugin-tag.d.ts → plugin-tag.d.ts} +0 -0
- /package/dist/{src/plugin-tag.js → plugin-tag.js} +0 -0
- /package/dist/{src/plugin.d.ts → plugin.d.ts} +0 -0
- /package/dist/{src/plugin.events.d.ts → plugin.events.d.ts} +0 -0
- /package/dist/{src/plugin.events.js → plugin.events.js} +0 -0
- /package/dist/{src/plugin.js → plugin.js} +0 -0
- /package/dist/{src/plugins.d.ts → plugins.d.ts} +0 -0
- /package/dist/{src/plugins.js → plugins.js} +0 -0
- /package/dist/{src/schemas.d.ts → schemas.d.ts} +0 -0
- /package/dist/{src/schemas.js → schemas.js} +0 -0
- /package/dist/{src/themes.d.ts → themes.d.ts} +0 -0
- /package/dist/{src/themes.js → themes.js} +0 -0
- /package/dist/{src/translations → translations}/de.d.ts +0 -0
- /package/dist/{src/translations → translations}/de.js +0 -0
- /package/dist/{src/translations → translations}/en.d.ts +0 -0
- /package/dist/{src/translations → translations}/en.js +0 -0
- /package/dist/{src/translations → translations}/loader.d.ts +0 -0
- /package/dist/{src/translations → translations}/loader.js +0 -0
- /package/dist/{src/wizard-checkbox.d.ts → wizard-checkbox.d.ts} +0 -0
- /package/dist/{src/wizard-checkbox.js → wizard-checkbox.js} +0 -0
- /package/dist/{src/wizard-dialog.d.ts → wizard-dialog.d.ts} +0 -0
- /package/dist/{src/wizard-dialog.js → wizard-dialog.js} +0 -0
- /package/dist/{src/wizard-select.d.ts → wizard-select.d.ts} +0 -0
- /package/dist/{src/wizard-select.js → wizard-select.js} +0 -0
- /package/dist/{src/wizard-textfield.d.ts → wizard-textfield.d.ts} +0 -0
- /package/dist/{src/wizard-textfield.js → wizard-textfield.js} +0 -0
- /package/dist/{src/wizards.d.ts → wizards.d.ts} +0 -0
- /package/dist/{src/wizards.js → wizards.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scl.js","sourceRoot":"","sources":["../../../src/foundation/scl.ts"],"names":[],"mappings":"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","sourcesContent":["import { crossProduct } from '../foundation.js';\n\nfunction getDataModelChildren(parent: Element): Element[] {\n if (['LDevice', 'Server'].includes(parent.tagName))\n return Array.from(parent.children).filter(\n child =>\n child.tagName === 'LDevice' ||\n child.tagName === 'LN0' ||\n child.tagName === 'LN'\n );\n\n const id =\n parent.tagName === 'LN' || parent.tagName === 'LN0'\n ? parent.getAttribute('lnType')\n : parent.getAttribute('type');\n\n return Array.from(\n parent.ownerDocument.querySelectorAll(\n `LNodeType[id=\"${id}\"] > DO, DOType[id=\"${id}\"] > SDO, DOType[id=\"${id}\"] > DA, DAType[id=\"${id}\"] > BDA`\n )\n );\n}\n\nexport function existFcdaReference(fcda: Element, ied: Element): boolean {\n const [ldInst, prefix, lnClass, lnInst, doName, daName, fc] = [\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n 'doName',\n 'daName',\n 'fc',\n ].map(attr => fcda.getAttribute(attr));\n\n const sinkLdInst = ied.querySelector(`LDevice[inst=\"${ldInst}\"]`);\n if (!sinkLdInst) return false;\n\n const prefixSelctors = prefix\n ? [`[prefix=\"${prefix}\"]`]\n : ['[prefix=\"\"]', ':not([prefix])'];\n const lnInstSelectors = lnInst\n ? [`[inst=\"${lnInst}\"]`]\n : ['[inst=\"\"]', ':not([inst])'];\n\n const anyLnSelector = crossProduct(\n ['LN0', 'LN'],\n prefixSelctors,\n [`[lnClass=\"${lnClass}\"]`],\n lnInstSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n\n const sinkAnyLn = ied.querySelector(anyLnSelector);\n if (!sinkAnyLn) return false;\n\n const doNames = doName?.split('.');\n if (!doNames) return false;\n\n let parent: Element | undefined = sinkAnyLn;\n for (const doNameAttr of doNames) {\n parent = getDataModelChildren(parent).find(\n child => child.getAttribute('name') === doNameAttr\n );\n if (!parent) return false;\n }\n\n const daNames = daName?.split('.');\n const someFcInSink = getDataModelChildren(parent).some(\n da => da.getAttribute('fc') === fc\n );\n if (!daNames && someFcInSink) return true;\n if (!daNames) return false;\n\n let sinkFc = '';\n for (const daNameAttr of daNames) {\n parent = getDataModelChildren(parent).find(\n child => child.getAttribute('name') === daNameAttr\n );\n\n if (parent?.getAttribute('fc')) sinkFc = parent.getAttribute('fc')!;\n\n if (!parent) return false;\n }\n\n if (sinkFc !== fc) return false;\n\n return true;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"foundation.js","sourceRoot":"","sources":["../../src/foundation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAQ,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,yFAAyF,CAAC;AA4B5F,MAAM,UAAU,eAAe,CAC7B,YAA0C;IAE1C,OAAO,OAAO,YAAY,KAAK,UAAU,CAAC;AAC5C,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,YAAY,MAAM;QAC7D,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC;;QAC1B,OAAO,IAAI,CAAC;AACnB,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,YAAY,MAAM;QAC7D,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;;QAC3B,OAAO,IAAI,CAAC;AACnB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,QAAQ,CAAC,KAAyB;IAChD,IACE,KAAK,YAAY,eAAe;QAChC,KAAK,YAAY,YAAY;QAC7B,KAAK,YAAY,cAAc;QAE/B,OAAO,KAAK,CAAC,UAAU,CAAC;;QACrB,OAAO,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;AAClC,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,IAAI,KAAK,YAAY,eAAe;QAAE,OAAO,KAAK,CAAC,UAAU,CAAC;;QACzD,OAAO,IAAI,CAAC;AACnB,CAAC;AA2GD,MAAM,UAAU,cAAc,CAC5B,eAAwC,EACxC,aAAsD;IAEtD,IAAI,CAAC,eAAe;QAClB,OAAO,IAAI,WAAW,CAAe,QAAQ,EAAE;YAC7C,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,GAAG,aAAa;YAChB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE;SACnD,CAAC,CAAC;IAEL,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,CAAC;QAC7C,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;IAE1B,OAAO,IAAI,WAAW,CAAe,QAAQ,EAAE;QAC7C,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;QACd,GAAG,aAAa;QAChB,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,eAAwC;IAExC,OAAO,cAAc,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,wEAAwE;AACxE,gDAAgD;AAChD,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,UAAU,GAAmB,OAAO,CAAC,aAAa,CAAC;IACvD,OAAO,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE;QACvC,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QACpD,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;KACvC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAGD,MAAM,UAAU,mBAAmB,CAAC,GAAa;IAC/C,MAAM,GAAG,GAAY,GAAG,CAAC,eAAe,CAAC;IACzC,MAAM,OAAO,GACX,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC;QACvC,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACpC,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACtC,OAAmB,OAAO,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,YAAY,GAAG,SAAS,CAAC;AAE/B,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,QAAgB;IACtD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEjD,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;QAAE,OAAO,YAAY,CAAC;IAE/C,OAAO,GAAG,OAAO,aAAa,OAAO,gBAAgB,QAAQ,IAAI,CAAC;AACpE,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAClC,OAAO,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,QAAgB;IACzD,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE/D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAChE,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/C,CAAC;IAEF,OAAO,YAAY,CACjB,eAAe,EACf,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,OAAO,sBAAsB,gBAAgB,IAAI,CAAC,CACvD;SACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,CAAU;IAC/B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG;QACzD,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,QAAQ;KACT,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,MAAM;QACpB,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,OAAO,IAAI,MAAM,IAAI,MAAM,GAAG,CAAC;IACzE,OAAO,GAAG,OAAO,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,IAAI,EAAE,IAAI,OAAO,IAClE,MAAM,IAAI,EACZ,EAAE,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,QAAgB;IACtD,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC1B,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa;aAC5C,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;aACtC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEd,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;YAAE,OAAO,YAAY,CAAC;QAE7C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAChE,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/C,CAAC;QAEF,OAAO,YAAY,CACjB,eAAe,EACf,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,OAAO,6BAA6B,OAAO,cAAc,MAAM,cAAc,MAAM,IAAI,CAAC,CAC7F;aACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAChC,IAAI,CAAC,GAAG,CAAC,CAAC;KACd;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE1E,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO;QAAE,OAAO,YAAY,CAAC;IAEzD,MAAM,CACJ,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EAChB,GAAG;QACF,CAAC,aAAa,OAAO,IAAI,CAAC;QAC1B,MAAM,KAAK,UAAU;YACnB,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;YACnC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC;QAC5B,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,CAAC,aAAa,OAAO,IAAI,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;KACtE,CAAC;IAEF,OAAO,YAAY,CACjB,CAAC,OAAO,CAAC,EACT,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,CAChB;SACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,CAAU;IAC7B,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,CACnD,SAAS,CACV,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,QAAgB;IACpD,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5D,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,OAAO,GAAG,QAAQ,CAChB,KAAK,EACL,cAAc,CACf,IAAI,OAAO,aAAa,OAAO,cAAc,MAAM,IAAI,CAAC;AAC3D,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAU;IACrC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IACjC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EACrC,EAAE,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,QAAgB;IAC5D,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5D,IAAI,CAAC,aAAa;QAAE,OAAO,YAAY,CAAC;IAExC,OAAO,GAAG,QAAQ,CAChB,QAAQ,EACR,cAAc,CACf,IAAI,OAAO,mBAAmB,aAAa,IAAI,CAAC;AACnD,CAAC;AAED,SAAS,eAAe,CAAC,CAAU;IACjC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,QAAgB;IACxD,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,CAAC,IAAI;QAAE,OAAO,YAAY,CAAC;IAE/B,OAAO,aAAa,OAAO,MAAM,OAAO,UAAU,IAAI,IAAI,CAAC;AAC7D,CAAC;AAED,SAAS,eAAe,CAAC,CAAU;IACjC,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG;QAC/C,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;KACT,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAClE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACpB,IAAI,MAAM,IAAI,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,QAAgB;IACxD,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5D,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GACrD,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE9B,MAAM,CACJ,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EAChB,GAAG;QACF,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CACxC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/C;QACD,CAAC,GAAG,OAAO,EAAE,CAAC;QACd,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC;QAChE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,CAAC,aAAa,OAAO,IAAI,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;KACtE,CAAC;IAEF,OAAO,YAAY,CACjB,eAAe,EACf,CAAC,GAAG,CAAC,EACL,CAAC,OAAO,CAAC,EACT,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,CAChB;SACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,CAAU;IAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG;QAChE,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,IAAI;QACJ,IAAI;KACL,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,EAAE,IAAI,OAAO,IACnD,MAAM,IAAI,EACZ,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACrC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,QAAQ,KAAK,EAAE,GACpD,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EACzB,GAAG,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,QAAgB;IACrD,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEvE,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CACnC,0CAA0C,CAC3C,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,MAAM,GAAG,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAEzD,MAAM,EAAE,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,EAAE,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnD,MAAM,CACJ,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,EACX,WAAW,EACZ,GAAG;QACF,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CACxC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/C;QACD,CAAC,YAAY,MAAM,IAAI,CAAC;QACxB,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,CAAC,aAAa,OAAO,IAAI,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,CAAC,YAAY,MAAM,IAAI,CAAC;QACxB,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,CAAC,QAAQ,EAAE,IAAI,CAAC;QAChB,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC;KAClD,CAAC;IAEF,OAAO,YAAY,CACjB,eAAe,EACf,CAAC,GAAG,CAAC,EACL,CAAC,OAAO,CAAC,EACT,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,EACX,WAAW,CACZ;SACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,CAAU;IAChC,IAAI,CAAC,CAAC,CAAC,aAAa;QAAE,OAAO,GAAG,CAAC;IACjC,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,mBAAmB,OAAO,IAAI,CAAC,CACjE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACb,IAAI,OAAO;QAAE,OAAO,GAAG,cAAc,IAAI,OAAO,IAAI,YAAY,GAAG,CAAC;IACpE,MAAM,CACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACV,GAAG;QACF,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,aAAa;QACb,WAAW;QACX,WAAW;QACX,YAAY;QACZ,WAAW;QACX,WAAW;KACZ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,GAAG,WAAW,IAAI,SAAS,IAAI,SAAS,IAAI,EAAE,IAAI,SAAS,IAAI,EAAE,IAC/D,UAAU,IAAI,EAChB,IAAI,SAAS,IAAI,EAAE,EAAE;QACvB,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,MAAM,IAAI,MAAM,IAAI,EAAE,IAAI,OAAO,IAC9D,MAAM,IAAI,EACZ,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACrC,OAAO,GAAG,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,GAC/D,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EACjC,EAAE,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,QAAgB;IACvD,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAChE,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/C,CAAC;IAEF,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC/B,MAAM,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,gBAAgB,GAAG,CAAC,aAAa,OAAO,IAAI,CAAC,CAAC;QAEpD,OAAO,YAAY,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;aACrE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAChC,IAAI,CAAC,GAAG,CAAC,CAAC;KACd;IAED,IAAI,OAAO,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,OAAO,CAAC;IAEV,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAChE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YACxD,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAC/B;SAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtE;YACE,WAAW;YACX,SAAS;YACT,SAAS;YACT,SAAS;YACT,UAAU;YACV,SAAS;YACT,OAAO;YACP,MAAM;YACN,MAAM;YACN,OAAO;YACP,MAAM;YACN,MAAM;YACN,MAAM;SACP,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAClC;SAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;YACjE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAChC;SAAM;QACL;YACE,WAAW;YACX,SAAS;YACT,SAAS;YACT,SAAS;YACT,UAAU;YACV,SAAS;YACT,OAAO;YACP,MAAM;YACN,MAAM;YACN,OAAO;YACP,MAAM;YACN,MAAM;YACN,MAAM;YACN,OAAO;SACR,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnC;IAED,MAAM,CACJ,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EACjB,GAAG;QACF,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACtD,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,WAAW;YACT,CAAC,CAAC,CAAC,iBAAiB,WAAW,IAAI,CAAC;YACpC,CAAC,CAAC,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;QAC/C,SAAS;YACP,CAAC,CAAC,CAAC,eAAe,SAAS,IAAI,CAAC;YAChC,CAAC,CAAC,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;QAC3C,SAAS;YACP,CAAC,CAAC,CAAC,eAAe,SAAS,IAAI,CAAC;YAChC,CAAC,CAAC,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;QAC3C,SAAS;YACP,CAAC,CAAC,CAAC,eAAe,SAAS,IAAI,CAAC;YAChC,CAAC,CAAC,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;QAC3C,UAAU;YACR,CAAC,CAAC,CAAC,gBAAgB,UAAU,IAAI,CAAC;YAClC,CAAC,CAAC,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;QAC7C,SAAS;YACP,CAAC,CAAC,CAAC,eAAe,SAAS,IAAI,CAAC;YAChC,CAAC,CAAC,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;QAC3C,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,cAAc,CAAC;KAC3E,CAAC;IAEF,OAAO,YAAY,CACjB,eAAe,EACf,CAAC,GAAG,CAAC,EACL,CAAC,OAAO,CAAC,EACT,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,CACjB;SACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,CAAU;IAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACvE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CACrB,CAAC;IACF,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,MAAM,IAAI,EAAE,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,QAAgB;IACnD,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAChE,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/C,CAAC;IAEF,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEzD,IAAI,CAAC,OAAO;QAAE,OAAO,YAAY,CAAC;IAElC,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,aAAa,CAAC,GAAG;QACzD,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,CAAC,aAAa,OAAO,IAAI,CAAC;QAC1B,CAAC,UAAU,IAAI,IAAI,CAAC;KACrB,CAAC;IAEF,OAAO,YAAY,CACjB,eAAe,EACf,CAAC,GAAG,CAAC,EACL,CAAC,OAAO,CAAC,EACT,eAAe,EACf,gBAAgB,EAChB,aAAa,CACd;SACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG;QACxD,OAAO;QACP,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;KACT,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,OAAO,IAC5C,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAClB,IAAI,MAAM,IAAI,MAAM,IAAI,EAAE,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,QAAgB;IACzD,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAChE,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/C,CAAC;IAEF,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GACrD,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE9B,MAAM,CACJ,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EAChB,GAAG;QACF,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,cAAc,CAAC;QAC1E,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC;QAChE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACrE,CAAC,aAAa,OAAO,IAAI,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,CAAC;KACtE,CAAC;IAEF,OAAO,YAAY,CACjB,eAAe,EACf,CAAC,GAAG,CAAC,EACL,CAAC,OAAO,CAAC,EACT,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,CAChB;SACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAClC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAe,EACf,QAAgB,EAChB,KAAK,GAAG,CAAC,CAAC;IAEV,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAErD,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5D,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,GACtB,aAAa,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;IAEtD,IAAI,CAAC,IAAI;QAAE,OAAO,YAAY,CAAC;IAE/B,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,GAAG,OAAO,UAAU,IAAI,IAAI,CAAC;IAErD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO;SAC1C,OAAO,CAAC,SAAS,CAAC,EAAE,CACnB,SAAS,KAAK,KAAK;QACjB,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACnE,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CACnD;SACA,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAE1D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IAEtD,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG;QACnC,CAAC,UAAU,IAAI,IAAI,CAAC;QACpB,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC;KAClD,CAAC;IAEF,OAAO,YAAY,CACjB,eAAe,EACf,CAAC,GAAG,CAAC,EACL,CAAC,OAAO,CAAC,EACT,aAAa,EACb,WAAW,CACZ;SACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,CAAU;IAC7B,IAAI,CAAC,CAAC,CAAC,aAAa;QAAE,OAAO,GAAG,CAAC;IACjC,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;SAC/C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC;SACxD,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;AAC/E,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,QAAgB;IACpD,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAChE,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/C,CAAC;IAEF,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG;QACnC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;IAEF,OAAO,YAAY,CACjB,eAAe,EACf,CAAC,GAAG,CAAC,EACL,CAAC,OAAO,CAAC,EACT,aAAa,EACb,WAAW,CACZ;SACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAU;IACrC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACzD,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CACrB,CAAC;IACF,OAAO,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,QAAgB;IAC5D,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;QAAE,OAAO,YAAY,CAAC;IAC7C,OAAO,GAAG,OAAO,aAAa,OAAO,cAAc,MAAM,IAAI,CAAC;AAChE,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAU;IACtC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACvD,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CACrB,CAAC;IACF,OAAO,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe,EAAE,QAAgB;IAC7D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;QAAE,OAAO,YAAY,CAAC;IAE5C,OAAO,GAAG,OAAO,YAAY,MAAM,cAAc,MAAM,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAClC,IAAI,CAAC,CAAC,CAAC,aAAa;QAAE,OAAO,GAAG,CAAC;IACjC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,0BAA0B,CAAC;QAAE,OAAO,GAAG,CAAC;IAC3E,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,IACE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACnC,MAAM,KAAK,YAAY;QACvB,MAAM,KAAK,SAAS;QAEpB,OAAO,GAAG,CAAC;IACb,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,MAAM,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,QAAgB;IACzD,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAErD,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,GAAG;QACvC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CACxC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/C;QACD,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACvC,CAAC;IAEF,OAAO,YAAY,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;SAClE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,CAAU;IAC3B,IAAI,CAAC,CAAC,CAAC,aAAa;QAAE,OAAO,GAAG,CAAC;IACjC,MAAM,OAAO,GAAG,CAAC,CAAC,aAAa,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,OAAO,CAAC,OAAO,KAAK,UAAU;QAChC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;SAC/C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC;SACrD,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;AAC5D,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,QAAgB;IAClD,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5D,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,KAAK,GACT,aAAa;QACb,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC;QACnC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAE,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAE,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,GAAG,CAAC;IAEV,MAAM,CAAC,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC,GAAG;QACpD,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CACxC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/C;QACD,CAAC,UAAU,IAAI,IAAI,CAAC;QACpB,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;IAEF,OAAO,YAAY,CACjB,eAAe,EACf,CAAC,GAAG,CAAC,EACL,CAAC,OAAO,CAAC,EACT,aAAa,EACb,WAAW,CACZ;SACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,CAAU;IACjC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,QAAgB;IACxD,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClD,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,OAAO,SAAS,GAAG,IAAI,CAAC;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,CAAU;IAChC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,OAAO,KACtE,CAAC,CAAC,WACJ,EAAE,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,QAAgB;IACvD,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5D,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,CAAC,eAAe,CAAC,GAAG;QACxB,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CACxC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/C;KACF,CAAC;IAEF,OAAO,YAAY,CACjB,eAAe,EACf,CAAC,GAAG,CAAC,EACL,CAAC,OAAO,CAAC,EACT,CAAC,UAAU,IAAI,IAAI,CAAC,EACpB,CAAC,GAAG,CAAC,EACL,CAAC,KAAK,CAAC,CACR;SACE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,CAAU;IAChC,OAAO,CAAC,CAAC,aAAc,CAAC,OAAO,KAAK,KAAK;QACvC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAE;QACzB,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,QAAgB,EAAE,KAAK,GAAG,CAAC,CAAC;IACnE,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAErD,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,YAAY,CAAC;IAC/B,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,GAAG,OAAO,UAAU,IAAI,IAAI,CAAC;IAErD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO,YAAY,CAAC;IAElC,MAAM,eAAe,GAAG,OAAO;SAC5B,OAAO,CAAC,SAAS,CAAC,EAAE,CACnB,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ;QACtD,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACjE,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CACnD;SACA,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAE1D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IAEtD,OAAO,YAAY,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;SACzE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAU;IACnC,OAAO,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,QAAgB;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO,YAAY,CAAC;IAElC,MAAM,eAAe,GAAG,OAAO;SAC5B,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC9D,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAE1D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IAEtD,OAAO,YAAY,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;SACnD,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAClC,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,QAAgB;IACzD,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEtC,IAAI,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAE7B,OAAO,GAAG,OAAO,QAAQ,EAAE,IAAI,CAAC;AAClC,CAAC;AAKD,MAAM,4BAA4B,GAAG;IACnC,oBAAoB;IACpB,qBAAqB;CACb,CAAC;AAEX,MAAM,UAAU,GAAG;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,GAAG,4BAA4B;CACvB,CAAC;AACX,MAAM,mBAAmB,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,KAAK,CAAU,CAAC;AAC3E,MAAM,0BAA0B,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC;AAChE,MAAM,sBAAsB,GAAG,CAAC,eAAe,EAAE,YAAY,CAAU,CAAC;AAExE,MAAM,oBAAoB,GAAG;IAC3B,aAAa;IACb,UAAU;IACV,YAAY;IACZ,cAAc;IACd,GAAG,UAAU;IACb,GAAG,mBAAmB;IACtB,GAAG,0BAA0B;IAC7B,GAAG,sBAAsB;CACjB,CAAC;AACX,MAAM,eAAe,GAAG,CAAC,kBAAkB,EAAE,GAAG,oBAAoB,CAAU,CAAC;AAC/E,MAAM,YAAY,GAAG,CAAC,eAAe,EAAE,aAAa,CAAU,CAAC;AAC/D,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,GAAG,YAAY,EAAE,GAAG,eAAe,CAAU,CAAC;AAE7E,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,IAAI,CAAU,CAAC;AACtD,MAAM,mBAAmB,GAAG,CAAC,qBAAqB,EAAE,YAAY,CAAU,CAAC;AAC3E,MAAM,sBAAsB,GAAG,CAAC,YAAY,EAAE,eAAe,CAAU,CAAC;AACxE,MAAM,QAAQ,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,sBAAsB,CAAU,CAAC;AAC9E,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,CAAU,CAAC;AAC9C,MAAM,SAAS,GAAG;IAChB,aAAa;IACb,UAAU;IACV,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,gBAAgB;IAChB,eAAe;IACf,KAAK;IACL,SAAS;IACT,SAAS;IACT,aAAa;IACb,KAAK;IACL,cAAc;IACd,GAAG,QAAQ;IACX,GAAG,aAAa;IAChB,GAAG,sBAAsB;CACjB,CAAC;AAEX,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,IAAI,CAAU,CAAC;AAEtC,MAAM,6BAA6B,GAAG;IACpC,MAAM;IACN,SAAS;IACT,OAAO;IACP,eAAe;CACP,CAAC;AAEX,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,YAAY,CAAU,CAAC;AACjD,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,SAAS,CAAU,CAAC;AAE5D,MAAM,SAAS,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAEzE,MAAM,aAAa,GAAG;IACpB,cAAc;IACd,cAAc;IACd,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,cAAc;IACd,yBAAyB;IACzB,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,WAAW;IACX,uBAAuB;IACvB,aAAa;IACb,QAAQ;IACR,YAAY;CACJ,CAAC;AAEX,MAAM,+BAA+B,GAAG,CAAC,YAAY,EAAE,aAAa,CAAU,CAAC;AAE/E,MAAM,eAAe,GAAG;IACtB,MAAM;IACN,OAAO;IACP,mBAAmB;IACnB,OAAO;IACP,GAAG,+BAA+B;CAC1B,CAAC;AAEX,MAAM,sBAAsB,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAU,CAAC;AAEzE,MAAM,gBAAgB,GAAG;IACvB,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,aAAa;CACL,CAAC;AAEX,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,SAAS,CAAU,CAAC;AAE9E,MAAM,OAAO,GAAG;IACd,GAAG,YAAY;IACf,GAAG,6BAA6B;IAChC,QAAQ;IACR,OAAO;IACP,KAAK;IACL,SAAS;IACT,UAAU;IACV,GAAG,KAAK;IACR,GAAG,mBAAmB;IACtB,aAAa;IACb,MAAM;IACN,UAAU;IACV,SAAS;IACT,QAAQ;IACR,UAAU;IACV,GAAG,MAAM;IACT,GAAG,aAAa;IAChB,gBAAgB;IAChB,eAAe;IACf,GAAG,eAAe;IAClB,GAAG,sBAAsB;IACzB,GAAG,gBAAgB;IACnB,SAAS;IACT,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,YAAY;IACZ,KAAK;IACL,SAAS;IACT,GAAG;IACH,QAAQ;IACR,SAAS;IACT,UAAU;IACV,SAAS;IACT,gBAAgB;IAChB,mBAAmB;IACnB,SAAS;IACT,WAAW;IACX,SAAS;IACT,QAAQ;IACR,eAAe;IACf,SAAS;IACT,eAAe;CACP,CAAC;AAIX,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,OAAO,CAAC,CAAC;AAExC,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,SAAS,CAAU,CAAC;AACvD,MAAM,eAAe,GAAG,CAAC,GAAG,iBAAiB,CAAU,CAAC;AACxD,MAAM,iBAAiB,GAAG,CAAC,GAAG,iBAAiB,CAAU,CAAC;AAC1D,MAAM,iBAAiB,GAAG,CAAC,GAAG,iBAAiB,CAAU,CAAC;AAE1D,MAAM,8BAA8B,GAAG,CAAC,GAAG,iBAAiB,EAAE,KAAK,CAAU,CAAC;AAC9E,MAAM,uBAAuB,GAAG,CAAC,GAAG,eAAe,EAAE,OAAO,CAAU,CAAC;AACvE,MAAM,4BAA4B,GAAG,CAAC,GAAG,uBAAuB,CAAU,CAAC;AAC3E,MAAM,kBAAkB,GAAG,CAAC,GAAG,4BAA4B,CAAU,CAAC;AACtE,MAAM,2BAA2B,GAAG;IAClC,GAAG,4BAA4B;IAC/B,kBAAkB;IAClB,kBAAkB;CACV,CAAC;AACX,MAAM,oCAAoC,GAAG;IAC3C,GAAG,kBAAkB;IACrB,UAAU;CACF,CAAC;AACX,MAAM,qBAAqB,GAAG,CAAC,GAAG,iBAAiB,EAAE,SAAS,CAAU,CAAC;AACzE,MAAM,gBAAgB,GAAG,CAAC,GAAG,eAAe,CAAU,CAAC;AACvD,MAAM,2BAA2B,GAAG,CAAC,GAAG,gBAAgB,EAAE,SAAS,CAAU,CAAC;AAC9E,MAAM,cAAc,GAAG;IACrB,GAAG,iBAAiB;IACpB,SAAS;IACT,eAAe;IACf,YAAY;IACZ,KAAK;IACL,QAAQ;IACR,KAAK;CACG,CAAC;AACX,MAAM,kCAAkC,GAAG;IACzC,GAAG,4BAA4B;IAC/B,kBAAkB;IAClB,UAAU;CACF,CAAC;AACX,MAAM,8BAA8B,GAAG,CAAC,GAAG,gBAAgB,EAAE,QAAQ,CAAU,CAAC;AAChF,MAAM,8BAA8B,GAAG;IACrC,GAAG,4BAA4B;IAC/B,kBAAkB;IAClB,eAAe;CACP,CAAC;AAEX,MAAM,CAAC,MAAM,IAAI,GAQb;IACF,aAAa,EAAE;QACb,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,SAAS,CAAC;QACpB,QAAQ,EAAE,EAAE;KACb;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE;YACR,GAAG,eAAe;YAClB,QAAQ;YACR,IAAI;YACJ,UAAU;YACV,UAAU;YACV,eAAe;YACf,aAAa;SACd;KACF;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC;QACtC,QAAQ,EAAE,CAAC,GAAG,CAAC;KAChB;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,QAAQ,EAAE,EAAE;KACb;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,QAAQ,EAAE,EAAE;KACb;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,QAAQ,EAAE,CAAC,GAAG,8BAA8B,CAAC;KAC9C;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,YAAY,CAAC;QACvB,QAAQ,EAAE,EAAE;KACb;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,cAAc,CAAC;QACzB,QAAQ,EAAE;YACR,GAAG,2BAA2B;YAC9B,qBAAqB;YACrB,kBAAkB;YAClB,UAAU;SACX;KACF;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,CAAC,YAAY,CAAC;QACvB,QAAQ,EAAE,EAAE;KACb;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC;KACzC;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,YAAY,CAAC;KAC/C;IACD,mBAAmB,EAAE;QACnB,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC;QAC9D,QAAQ,EAAE;YACR,GAAG,oCAAoC;YACvC,YAAY;YACZ,cAAc;SACf;KACF;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,iBAAiB,EAAE;QACjB,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,QAAQ,EAAE,EAAE;KACb;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,CAAC,YAAY,CAAC;QACvB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC;KACtE;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,CAAC,GAAG,uBAAuB,CAAC;KACvC;IACD,EAAE,EAAE;QACF,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,QAAQ,EAAE,CAAC,GAAG,8BAA8B,CAAC;KAC9C;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QACvB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,KAAK,CAAC;KACxC;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,CAAC,mBAAmB,CAAC;QAC9B,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,KAAK,EAAE,QAAQ,CAAC;KAClD;IACD,EAAE,EAAE;QACF,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,WAAW,CAAC;QACtB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,CAAC;KACjC;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC;KAC/C;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,CAAC,mBAAmB,CAAC;QAC9B,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC;KAC9C;IACD,mBAAmB,EAAE;QACnB,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,GAAG,eAAe,EAAE,MAAM,CAAC;KACvC;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,iBAAiB,EAAE;QACjB,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;KACxD;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,CAAC,mBAAmB,CAAC;QAC9B,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,SAAS,CAAC;KAC5C;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE;YACP,kBAAkB;YAClB,YAAY;YACZ,oBAAoB;YACpB,kBAAkB;YAClB,cAAc;YACd,qBAAqB;SACtB;QACD,QAAQ,EAAE,CAAC,GAAG,8BAA8B,CAAC;KAC9C;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;QACxC,QAAQ,EAAE,CAAC,GAAG,8BAA8B,CAAC;KAC9C;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,QAAQ,EAAE,EAAE;KACb;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,CAAC,SAAS,CAAC;QACpB,QAAQ,EAAE,EAAE;KACb;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC;QACjE,QAAQ,EAAE;YACR,GAAG,4BAA4B;YAC/B,aAAa;YACb,kBAAkB;YAClB,qBAAqB;SACtB;KACF;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE;YACP,aAAa;YACb,UAAU;YACV,GAAG,0BAA0B;YAC7B,GAAG,sBAAsB;YACzB,GAAG,mBAAmB;SACvB;QACD,QAAQ,EAAE,CAAC,GAAG,kBAAkB,EAAE,YAAY,CAAC;KAChD;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,uBAAuB,EAAE;QACvB,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,eAAe,EAAE;QACf,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,QAAQ,EAAE,CAAC,GAAG,eAAe,EAAE,SAAS,EAAE,YAAY,CAAC;KACxD;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,oBAAoB;QAC9B,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,QAAQ,EAAE,CAAC,GAAG,qBAAqB,EAAE,SAAS,EAAE,SAAS,CAAC;KAC3D;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,CAAC,GAAG,2BAA2B,EAAE,UAAU,CAAC;KACvD;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;KAC9B;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,SAAS,CAAC;QACpB,QAAQ,EAAE,EAAE;KACb;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC;KACnE;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,CAAC;QAC9C,QAAQ,EAAE,EAAE;KACb;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,QAAQ,CAAC;KAC3C;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC;QACzC,QAAQ,EAAE,EAAE;KACb;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC;KAC/D;IACD,EAAE,EAAE;QACF,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC;QACnC,QAAQ,EAAE,CAAC,GAAG,cAAc,CAAC;KAC9B;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,SAAS,CAAC;QACpB,QAAQ,EAAE;YACR,GAAG,cAAc;YACjB,YAAY;YACZ,qBAAqB;YACrB,gBAAgB;SACjB;KACF;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,GAAG,eAAe,CAAC;QAC7B,QAAQ,EAAE,CAAC,GAAG,iBAAiB,CAAC;KACjC;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,CAAC,mBAAmB,CAAC;QAC9B,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,IAAI,CAAC;KACvC;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;QAC3B,QAAQ,EAAE;YACR,GAAG,kCAAkC;YACrC,SAAS;YACT,qBAAqB;SACtB;KACF;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,CAAC;KACjC;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,GAAG,8BAA8B,CAAC;KAC9C;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,EAAE;KACb;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,CAAC;QACzD,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,EAAE;KACb;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,CAAC,oBAAoB,CAAC;QAC/B,QAAQ,EAAE,CAAC,GAAG,iBAAiB,CAAC;KACjC;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,QAAQ,EAAE,EAAE;KACb;IACD,CAAC,EAAE;QACD,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QAChC,QAAQ,EAAE,EAAE;KACb;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,GAAG,CAAC;KACtC;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,GAAG,mBAAmB,CAAC;QACjC,QAAQ,EAAE;YACR,GAAG,kBAAkB;YACrB,oBAAoB;YACpB,cAAc;YACd,YAAY;SACb;KACF;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG;QACnB,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY;QAC5B,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;QAC3B,QAAQ,EAAE;YACR,GAAG,kCAAkC;YACrC,qBAAqB;YACrB,YAAY;YACZ,MAAM;YACN,SAAS;SACV;KACF;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;QACzB,QAAQ,EAAE,EAAE;KACb;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,CAAC;QAC9C,QAAQ,EAAE,EAAE;KACb;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,GAAG,8BAA8B,EAAE,WAAW,EAAE,YAAY,CAAC;KACzE;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,UAAU,CAAC;KAC7C;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,QAAQ,EAAE,EAAE;KACb;IACD,mBAAmB,EAAE;QACnB,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,CAAC,GAAG,2BAA2B,EAAE,SAAS,CAAC;KACtD;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,QAAQ,EAAE,EAAE;KACb;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE;YACR,GAAG,iBAAiB;YACpB,QAAQ;YACR,YAAY;YACZ,eAAe;YACf,KAAK;YACL,mBAAmB;YACnB,MAAM;YACN,SAAS;SACV;KACF;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QACvB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC;KAC/C;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,QAAQ,EAAE,CAAC,GAAG,eAAe,CAAC;KAC/B;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,QAAQ,EAAE;YACR,GAAG,iBAAiB;YACpB,gBAAgB;YAChB,SAAS;YACT,aAAa;SACd;KACF;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,CAAC;KACjC;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC;QAC/B,QAAQ,EAAE;YACR,gBAAgB;YAChB,eAAe;YACf,cAAc;YACd,yBAAyB;YACzB,qBAAqB;YACrB,iBAAiB;YACjB,iBAAiB;YACjB,kBAAkB;YAClB,aAAa;YACb,YAAY;YACZ,WAAW;YACX,uBAAuB;YACvB,mBAAmB;YACnB,aAAa;YACb,gBAAgB;YAChB,gBAAgB;YAChB,aAAa;YACb,aAAa;YACb,aAAa;YACb,QAAQ;YACR,OAAO;YACP,MAAM;YACN,OAAO;YACP,cAAc;YACd,SAAS;YACT,gBAAgB;YAChB,YAAY;YACZ,iBAAiB;YACjB,YAAY;YACZ,eAAe;YACf,SAAS;YACT,cAAc;YACd,UAAU;SACX;KACF;IACD,eAAe,EAAE;QACf,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,CAAC;KACjC;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAC/B;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,QAAQ,EAAE,EAAE;KACb;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,oBAAoB;QAC9B,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,QAAQ,EAAE,CAAC,GAAG,qBAAqB,CAAC;KACrC;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,qBAAqB,CAAC;QAChC,QAAQ,EAAE,EAAE;KACb;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,QAAQ,EAAE,CAAC,GAAG,eAAe,EAAE,SAAS,EAAE,YAAY,CAAC;KACxD;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,CAAC;KACtE;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE;YACP,YAAY;YACZ,kBAAkB;YAClB,qBAAqB;YACrB,oBAAoB;YACpB,GAAG,4BAA4B;SAChC;QACD,QAAQ,EAAE,CAAC,GAAG,4BAA4B,EAAE,YAAY,CAAC;KAC1D;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC;QACpC,QAAQ,EAAE;YACR,GAAG,4BAA4B;YAC/B,kBAAkB;YAClB,qBAAqB;YACrB,aAAa;SACd;KACF;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,QAAQ,EAAE,CAAC,GAAG,eAAe,EAAE,SAAS,EAAE,aAAa,CAAC;KACzD;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC;QACzC,QAAQ,EAAE,EAAE;KACb;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,CAAC,GAAG,2BAA2B,EAAE,cAAc,EAAE,UAAU,CAAC;KACvE;IACD,eAAe,EAAE;QACf,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,oBAAoB,CAAC;QAC/B,QAAQ,EAAE,CAAC,GAAG,4BAA4B,EAAE,cAAc,EAAE,YAAY,CAAC;KAC1E;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;QACxB,QAAQ,EAAE,CAAC,GAAG,iBAAiB,CAAC;KACjC;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,SAAS,CAAC;QACnE,QAAQ,EAAE,EAAE;KACb;IACD,qBAAqB,EAAE;QACrB,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC;QACvC,QAAQ,EAAE,EAAE;KACb;IACD,kBAAkB,EAAE;QAClB,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,kBAAkB,CAAC;QAC7B,QAAQ,EAAE;YACR,GAAG,oCAAoC;YACvC,YAAY;YACZ,cAAc;YACd,YAAY;YACZ,cAAc;SACf;KACF;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,QAAQ,EAAE,EAAE;KACb;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;QAC7B,QAAQ,EAAE,EAAE;KACb;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,cAAc,CAAC;QACzB,QAAQ,EAAE,EAAE;KACb;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,CAAC,YAAY,CAAC;QACvB,QAAQ,EAAE,CAAC,GAAG,2BAA2B,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC;KACzE;CACF,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,MAAe,EAAE,GAAW;IACvD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;IACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE7C,IACE,SAAS,KAAK,UAAU;QACxB,SAAS,KAAK,eAAe;QAC7B,CAAC,QAAQ,CAAC,SAAS,CAAC;QAEpB,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC;IAE/D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;IACjD,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC;IAE3D,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3B,IAAI,WAAgC,CAAC;IACrC,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE;QAC9C,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,KAAK,EAAE,CAAC;KACT;IAED,OAAO,WAAW,IAAI,IAAI,CAAC;AAC7B,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,QAAyB;IAC1D,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC;IAEtD,IAAI,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAExE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,IAA8C,EAC9C,OAAe,EACf,QAAyB;IAEzB,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE9E,IAAI,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAE1D,OAAO,CACL,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CACjE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CACzB,CAAC;AACJ,CAAC;AAED;wBACwB;AACxB,MAAM,UAAU,QAAQ,CAAC,CAAiB;IACxC,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IAC3B,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,GAAG,CAAC;IACrC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;IAEtB,IAAI,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEhD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,MAAM,CAAC,CAAU,EAAE,CAAU;IAC3C,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QACzB,OAAO,MAAM,CAAC,CAAC,CAAC,aAAc,EAAE,CAAC,CAAC,aAAc,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAU,EAAE,CAAU;IAC5C,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE1E,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,CAAC,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CACpD,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,cAAc;QAC/B,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;IAElE,IAAI,CAAC,CAAC,iBAAiB,KAAK,CAAC;QAC3B,OAAO,CACL,CAAC,CAAC,iBAAiB,KAAK,CAAC;YACzB,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAChD,CAAC;IAEJ,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;QAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACvE,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACjC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;KAC9B;IAED,KAAK,MAAM,MAAM,IAAI,SAAS;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAEvE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAU,EAAE,EAAE;IAChE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;QAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;;QACrD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAUH,MAAM,aAAa,GACjB,4EAA4E;IAC5E,kEAAkE;IAClE,kDAAkD,CAAC;AACrD,MAAM,QAAQ,GACZ,aAAa,GAAG,mDAAmD,CAAC;AACtE,MAAM,IAAI,GAAG,aAAa,GAAG,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC;AACnD,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,MAAM,EACJ,oEAAoE;QACpE,oBAAoB;IACtB,gBAAgB,EACd,6DAA6D;IAC/D,IAAI;IACJ,OAAO;IACP,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;IAChC,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI;IACzC,OAAO,EAAE,yCAAyC;IAClD,QAAQ,EAAE,sCAAsC;IAChD,OAAO,EAAE,uBAAuB;IAChC,0BAA0B,EAAE,qBAAqB;IACjD,0BAA0B,EAAE,qBAAqB;IACjD,OAAO,EAAE,mBAAmB;CAC7B,CAAC;AAEF,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,CAAmB,EAAE,CAAmB;IACnE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAE9E,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAChD,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAChD,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAE,CAAC,CAAC;IAElD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAChD,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CACjD,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAC7B,CAAC;IAEJ,OAAO,CAAC,CAAC;AACX,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,YAAY,CAAI,GAAG,MAAa;IAC9C,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAC1D,CAAC,EAAE,CAAC,CACL,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,KAAK,CAAC,CAA0B,EAAE,GAAG,GAAG,IAAI,OAAO,EAAE;IACnE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;;QAE9B,QAAQ,CAAC,EAAE,WAAW,EAAE;YACtB,KAAK,MAAM,CAAC;YACZ,KAAK,KAAK;gBACR,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACX,OAAO,CACL,CAAC;oBACD,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,EACF,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAA0B,CAAC,EAAE,GAAG,CAAC,CAAC,CACrE,CACF,CAAC;YACJ;gBACE,OAAO,CAAC,CAAC;SACZ;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAe;IACvC,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAExE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG;QACjE,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;KACT,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC3E,OAAO,CAAC,EAAE,CACR,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAC1E,CAAC;IACF,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;SAChD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACxC,MAAM,CACL,IAAI,CAAC,EAAE,CACL,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QACtD,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QACtD,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACxD,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QACtD,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QACtD,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CACzD,CAAC;AACN,CAAC;AAED,MAAM,2BAA2B,GAAsC;IACrE,KAAK,EAAE,CAAC,YAAY,CAAC;IACrB,GAAG,EAAE,CAAC,qBAAqB,CAAC;IAC5B,MAAM,EAAE,CAAC,eAAe,CAAC;IACzB,IAAI,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,eAAe,CAAC;CAC3E,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,MAAM,GACV,2BAA2B,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC;QACzE,EAAE,CAAC;IACL,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAc,CAAC;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,aAAc,CAAC;QACrC,OAAO,MAAM;aACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;aAC3D,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC,CACH,CAAC;IACF,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAgB;IACvC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CACvB,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CACrD,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAE3C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC;AACrD,CAAC;AAED,2CAA2C;AAC3C,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;KACjC,IAAI,CAAC,CAAC,CAAC;KACP,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAe;IAEf,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoC,CAAC;IAE/D,OAAO,CAAC,OAAe,EAAE,EAAE;QACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC;iBACvC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC;iBAC1D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAE,CAAC,CAC/C,CAAC;YAEF,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC3B,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtE,IAAI,YAAY;oBAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC5C,OAAO,YAAY,CAAC;YACtB,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAE,EAAE,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAC7C,UAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC","sourcesContent":["import { LitElement, TemplateResult } from 'lit-element';\nimport { directive, Part } from 'lit-html';\n\nimport { List } from '@material/mwc-list';\nimport { Select } from '@material/mwc-select';\nimport { TextField } from '@material/mwc-textfield';\nimport AceEditor from 'ace-custom-element';\n\nimport { getChildElementsByTagName } from '@compas-oscd/xml';\n\nimport { WizardTextField } from './wizard-textfield.js';\nimport { WizardSelect } from './wizard-select.js';\nimport { WizardCheckbox } from './wizard-checkbox.js';\n\nimport { EditorAction } from '@compas-oscd/core';\n\nexport const wizardInputSelector =\n 'wizard-textfield, mwc-textfield, ace-editor, mwc-select, wizard-select, wizard-checkbox';\nexport type WizardInputElement =\n | WizardTextField\n | TextField\n | (AceEditor & {\n checkValidity: () => boolean;\n validityTransform: (\n newValue: string,\n nativeValidity: ValidityState\n ) => ValidityState;\n validationMessage: string;\n validity: ValidityState;\n label: string;\n requestUpdate(name?: PropertyKey, oldValue?: unknown): Promise<unknown>;\n })\n // TODO(c-dinkel): extend component\n | Select\n | WizardSelect;\n\nexport type WizardAction = EditorAction | WizardFactory;\n\n/** @returns [[`EditorAction`]]s to dispatch on [[`WizardDialog`]] commit. */\nexport type WizardActor = (\n inputs: WizardInputElement[],\n wizard: Element,\n list?: List | null\n) => WizardAction[];\n\nexport function isWizardFactory(\n maybeFactory: WizardAction | Wizard | null\n): maybeFactory is WizardFactory {\n return typeof maybeFactory === 'function';\n}\n\n/** @returns the validity of `input` depending on type. */\nexport function checkValidity(input: WizardInputElement): boolean {\n if (input instanceof WizardTextField || input instanceof Select)\n return input.checkValidity();\n else return true;\n}\n\n/** reports the validity of `input` depending on type. */\nexport function reportValidity(input: WizardInputElement): boolean {\n if (input instanceof WizardTextField || input instanceof Select)\n return input.reportValidity();\n else return true;\n}\n\n/** @returns the `value` or `maybeValue` of `input` depending on type. */\nexport function getValue(input: WizardInputElement): string | null {\n if (\n input instanceof WizardTextField ||\n input instanceof WizardSelect ||\n input instanceof WizardCheckbox\n )\n return input.maybeValue;\n else return input.value ?? null;\n}\n\n/** @returns the `multiplier` of `input` if available. */\nexport function getMultiplier(input: WizardInputElement): string | null {\n if (input instanceof WizardTextField) return input.multiplier;\n else return null;\n}\n\n/** Inputs as `TextField`, `Select` or `Checkbox `used in`wizard-dialog` */\nexport type WizardInput =\n | WizardInputTextField\n | WizardInputSelect\n | WizardInputCheckbox;\n\ninterface WizardInputBase {\n /** maps attribute key */\n label: string;\n /** maps attribute value */\n maybeValue: string | null;\n /** whether attribute is optional */\n nullable?: boolean;\n /** whether the input shall be disabled */\n disabled?: boolean;\n /** helper text */\n helper?: string;\n /** initial focused element in `wizard-dialog` (once per dialog) */\n dialogInitialFocus?: boolean;\n}\n\ninterface WizardInputTextField extends WizardInputBase {\n kind: 'TextField';\n /** wether the input might be empty string */\n required?: boolean;\n /** pattern definition from schema */\n pattern?: string;\n /** minimal characters allowed */\n minLength?: number;\n /** maximal characters allowed */\n maxLength?: number;\n /** message text explaining invalid inputs */\n validationMessage?: string;\n /** suffix definition - overwrites unit multiplier definition */\n suffix?: string;\n /** SI unit for specific suffix definition */\n unit?: string;\n /** in comibination with unit defines specific suffix */\n multiplier?: string | null;\n /** array of multipliers allowed for the input */\n multipliers?: (string | null)[];\n /** used for specific input type e.g. number */\n type?: string;\n /** minimal valid number in combination with type number */\n min?: number;\n /** maximal valid number in combination with type number */\n max?: number;\n /** value displaxed when input is nulled */\n default?: string;\n}\n\ninterface WizardInputSelect extends WizardInputBase {\n kind: 'Select';\n /** selectabled values */\n values: string[];\n /** value displayed with input is nulled */\n default?: string;\n /** message explaining invalid inputs */\n valadationMessage?: string;\n}\n\ninterface WizardInputCheckbox extends WizardInputBase {\n kind: 'Checkbox';\n /** wether checkbox is checked with nulled input */\n default?: boolean;\n}\n\n/** @returns [[`WizardAction`]]s to dispatch on [[`WizardDialog`]] menu action. */\nexport type WizardMenuActor = (wizard: Element) => void;\n\n/** User interactions rendered in the wizard-dialog menu */\nexport interface MenuAction {\n label: string;\n icon?: string;\n action: WizardMenuActor;\n}\n\n/** Represents a page of a wizard dialog */\nexport interface WizardPage {\n title: string;\n content?: (TemplateResult | WizardInput)[];\n primary?: {\n icon: string;\n label: string;\n action: WizardActor;\n auto?: boolean;\n };\n secondary?: {\n icon: string;\n label: string;\n action: WizardActor;\n };\n initial?: boolean;\n element?: Element;\n menuActions?: MenuAction[];\n}\nexport type Wizard = WizardPage[];\nexport type WizardFactory = () => Wizard;\n\n/** If `wizard === null`, close the current wizard, else queue `wizard`. */\nexport interface WizardDetail {\n wizard: WizardFactory | null;\n subwizard?: boolean;\n}\nexport type WizardEvent = CustomEvent<WizardDetail>;\nexport function newWizardEvent(\n wizardOrFactory?: Wizard | WizardFactory,\n eventInitDict?: CustomEventInit<Partial<WizardDetail>>\n): WizardEvent {\n if (!wizardOrFactory)\n return new CustomEvent<WizardDetail>('wizard', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: { wizard: null, ...eventInitDict?.detail },\n });\n\n const wizard = isWizardFactory(wizardOrFactory)\n ? wizardOrFactory\n : () => wizardOrFactory;\n\n return new CustomEvent<WizardDetail>('wizard', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: { wizard, ...eventInitDict?.detail },\n });\n}\n\nexport function newSubWizardEvent(\n wizardOrFactory?: Wizard | WizardFactory\n): WizardEvent {\n return newWizardEvent(wizardOrFactory, { detail: { subwizard: true } });\n}\n\n/** @returns a reference to `element` with segments delimited by '/'. */\n// TODO(c-dinkel): replace with identity (FIXME)\nexport function referencePath(element: Element): string {\n let path = '';\n let nextParent: Element | null = element.parentElement;\n while (nextParent?.getAttribute('name')) {\n path = '/' + nextParent.getAttribute('name') + path;\n nextParent = nextParent.parentElement;\n }\n return path;\n}\n\nexport type SclEdition = '2003' | '2007B' | '2007B4';\nexport function getSclSchemaVersion(doc: Document): SclEdition {\n const scl: Element = doc.documentElement;\n const edition =\n (scl.getAttribute('version') ?? '2003') +\n (scl.getAttribute('revision') ?? '') +\n (scl.getAttribute('release') ?? '');\n return <SclEdition>edition;\n}\n\n/**\n * Extract the 'name' attribute from the given XML element.\n * @param element - The element to extract name from.\n * @returns the name, or undefined if there is no name.\n */\nexport function getNameAttribute(element: Element): string | undefined {\n const name = element.getAttribute('name');\n return name ? name : undefined;\n}\n\n/**\n * Extract the 'ldName' attribute from the given XML element.\n * @param element - The element to extract ldName from.\n * @returns the ldName, or undefined if there is no ldName.\n */\nexport function getLdNameAttribute(element: Element): string | undefined {\n const name = element.getAttribute('ldName');\n return name ? name : undefined;\n}\n\n/**\n * Extract the 'desc' attribute from the given XML element.\n * @param element - The element to extract description from.\n * @returns the name, or undefined if there is no description.\n */\nexport function getDescriptionAttribute(element: Element): string | undefined {\n const name = element.getAttribute('desc');\n return name ? name : undefined;\n}\n\n/**\n * Extract the 'pathName' attribute from the given XML element.\n * @param element - The element to extract path name from.\n * @returns the name, or undefined if there is no path name.\n */\nexport function getPathNameAttribute(element: Element): string | undefined {\n const name = element.getAttribute('pathName');\n return name ? name : undefined;\n}\n\n/**\n * Extract the 'inst' attribute from the given XML element.\n * @param element - The element to extract instance from.\n * @returns the instance, or undefined if there is no instance.\n */\nexport function getInstanceAttribute(element: Element): string | undefined {\n const inst = element.getAttribute('inst');\n return inst ? inst : undefined;\n}\n\nexport function pathParts(identity: string): [string, string] {\n const path = identity.split('>');\n const end = path.pop() ?? '';\n const start = path.join('>');\n return [start, end];\n}\n\nconst voidSelector = ':not(*)';\n\nfunction hitemIdentity(e: Element): string {\n return `${e.getAttribute('version')}\\t${e.getAttribute('revision')}`;\n}\n\nfunction hitemSelector(tagName: SCLTag, identity: string): string {\n const [version, revision] = identity.split('\\t');\n\n if (!version || !revision) return voidSelector;\n\n return `${tagName}[version=\"${version}\"][revision=\"${revision}\"]`;\n}\n\nfunction terminalIdentity(e: Element): string {\n return identity(e.parentElement) + '>' + e.getAttribute('connectivityNode');\n}\n\nfunction terminalSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, connectivityNode] = pathParts(identity);\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [`${tagName}[connectivityNode=\"${connectivityNode}\"]`]\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction lNodeIdentity(e: Element): string {\n const [iedName, ldInst, prefix, lnClass, lnInst, lnType] = [\n 'iedName',\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n 'lnType',\n ].map(name => e.getAttribute(name));\n if (iedName === 'None')\n return `${identity(e.parentElement)}>(${lnClass} ${lnType} ${lnInst})`;\n return `${iedName} ${ldInst || '(Client)'}/${prefix ?? ''} ${lnClass} ${\n lnInst ?? ''\n }`;\n}\n\nfunction lNodeSelector(tagName: SCLTag, identity: string): string {\n if (identity.endsWith(')')) {\n const [parentIdentity, childIdentity] = pathParts(identity);\n const [lnClass, lnType, lnInst] = childIdentity\n .substring(1, childIdentity.length - 1)\n .split(' ');\n\n if (!lnClass || !lnType) return voidSelector;\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [`${tagName}[iedName=\"None\"][lnClass=\"${lnClass}\"][lnType=\"${lnType}\"][lnInst=\"${lnInst}\"]`]\n )\n .map(strings => strings.join(''))\n .join(',');\n }\n\n const [iedName, ldInst, prefix, lnClass, lnInst] = identity.split(/[ /]/);\n\n if (!iedName || !ldInst || !lnClass) return voidSelector;\n\n const [\n iedNameSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n ] = [\n [`[iedName=\"${iedName}\"]`],\n ldInst === '(Client)'\n ? [':not([ldInst])', '[ldInst=\"\"]']\n : [`[ldInst=\"${ldInst}\"]`],\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n [`[lnClass=\"${lnClass}\"]`],\n lnInst ? [`[lnInst=\"${lnInst}\"]`] : [':not([lnInst])', '[lnInst=\"\"]'],\n ];\n\n return crossProduct(\n [tagName],\n iedNameSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction kDCIdentity(e: Element): string {\n return `${identity(e.parentElement)}>${e.getAttribute(\n 'iedName'\n )} ${e.getAttribute('apName')}`;\n}\n\nfunction kDCSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n const [iedName, apName] = childIdentity.split(' ');\n return `${selector(\n 'IED',\n parentIdentity\n )}>${tagName}[iedName=\"${iedName}\"][apName=\"${apName}\"]`;\n}\n\nfunction associationIdentity(e: Element): string {\n return `${identity(e.parentElement)}>${\n e.getAttribute('associationID') ?? ''\n }`;\n}\n\nfunction associationSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, associationID] = pathParts(identity);\n\n if (!associationID) return voidSelector;\n\n return `${selector(\n 'Server',\n parentIdentity\n )}>${tagName}[associationID=\"${associationID}\"]`;\n}\n\nfunction lDeviceIdentity(e: Element): string {\n return `${identity(e.closest('IED')!)}>>${e.getAttribute('inst')}`;\n}\n\nfunction lDeviceSelector(tagName: SCLTag, identity: string): string {\n const [iedName, inst] = identity.split('>>');\n\n if (!inst) return voidSelector;\n\n return `IED[name=\"${iedName}\"] ${tagName}[inst=\"${inst}\"]`;\n}\n\nfunction iEDNameIdentity(e: Element): string {\n const iedName = e.textContent;\n const [apRef, ldInst, prefix, lnClass, lnInst] = [\n 'apRef',\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n ].map(name => e.getAttribute(name));\n return `${identity(e.parentElement)}>${iedName} ${apRef ? apRef : ''} ${\n ldInst ? ldInst : ''\n }/${prefix ?? ''} ${lnClass ?? ''} ${lnInst ?? ''}`;\n}\n\nfunction iEDNameSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [iedName, apRef, ldInst, prefix, lnClass, lnInst] =\n childIdentity.split(/[ /]/);\n\n const [\n parentSelectors,\n apRefSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n ] = [\n tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n ),\n [`${iedName}`],\n apRef ? [`[apRef=\"${apRef}\"]`] : [':not([apRef])', '[apRef=\"\"]'],\n ldInst ? [`[ldInst=\"${ldInst}\"]`] : [':not([ldInst])', '[ldInst=\"\"]'],\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n [`[lnClass=\"${lnClass}\"]`],\n lnInst ? [`[lnInst=\"${lnInst}\"]`] : [':not([lnInst])', '[lnInst=\"\"]'],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n apRefSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction fCDAIdentity(e: Element): string {\n const [ldInst, prefix, lnClass, lnInst, doName, daName, fc, ix] = [\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n 'doName',\n 'daName',\n 'fc',\n 'ix',\n ].map(name => e.getAttribute(name));\n const dataPath = `${ldInst}/${prefix ?? ''} ${lnClass} ${\n lnInst ?? ''\n }.${doName} ${daName ? daName : ''}`;\n return `${identity(e.parentElement)}>${dataPath} (${fc}${\n ix ? ' [' + ix + ']' : ''\n })`;\n}\n\nfunction fCDASelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [ldInst, prefix, lnClass, lnInst] = childIdentity.split(/[ /.]/);\n\n const matchDoDa = childIdentity.match(\n /.([A-Z][A-Za-z0-9.]*) ([A-Za-z0-9.]*) \\(/\n );\n const doName = matchDoDa && matchDoDa[1] ? matchDoDa[1] : '';\n const daName = matchDoDa && matchDoDa[2] ? matchDoDa[2] : '';\n\n const matchFx = childIdentity.match(/\\(([A-Z]{2})/);\n const matchIx = childIdentity.match(/ \\[([0-9]{1,2})\\]/);\n\n const fc = matchFx && matchFx[1] ? matchFx[1] : '';\n const ix = matchIx && matchIx[1] ? matchIx[1] : '';\n\n const [\n parentSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n doNameSelectors,\n daNameSelectors,\n fcSelectors,\n ixSelectors,\n ] = [\n tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n ),\n [`[ldInst=\"${ldInst}\"]`],\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n [`[lnClass=\"${lnClass}\"]`],\n lnInst ? [`[lnInst=\"${lnInst}\"]`] : [':not([lnInst])', '[lnInst=\"\"]'],\n [`[doName=\"${doName}\"]`],\n daName ? [`[daName=\"${daName}\"]`] : [':not([daName])', '[daName=\"\"]'],\n [`[fc=\"${fc}\"]`],\n ix ? [`[ix=\"${ix}\"]`] : [':not([ix])', '[ix=\"\"]'],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n doNameSelectors,\n daNameSelectors,\n fcSelectors,\n ixSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction extRefIdentity(e: Element): string | number {\n if (!e.parentElement) return NaN;\n const parentIdentity = identity(e.parentElement);\n const iedName = e.getAttribute('iedName');\n const intAddr = e.getAttribute('intAddr');\n const intAddrIndex = Array.from(\n e.parentElement.querySelectorAll(`ExtRef[intAddr=\"${intAddr}\"]`)\n ).indexOf(e);\n if (intAddr) return `${parentIdentity}>${intAddr}[${intAddrIndex}]`;\n const [\n ldInst,\n prefix,\n lnClass,\n lnInst,\n doName,\n daName,\n serviceType,\n srcLDInst,\n srcPrefix,\n srcLNClass,\n srcLNInst,\n srcCBName,\n ] = [\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n 'doName',\n 'daName',\n 'serviceType',\n 'srcLDInst',\n 'srcPrefix',\n 'srcLNClass',\n 'srcLNInst',\n 'srcCBName',\n ].map(name => e.getAttribute(name));\n\n const cbPath = srcCBName\n ? `${serviceType}:${srcCBName} ${srcLDInst ?? ''}/${srcPrefix ?? ''} ${\n srcLNClass ?? ''\n } ${srcLNInst ?? ''}`\n : '';\n const dataPath = `${iedName} ${ldInst}/${prefix ?? ''} ${lnClass} ${\n lnInst ?? ''\n } ${doName} ${daName ? daName : ''}`;\n return `${parentIdentity}>${cbPath ? cbPath + ' ' : ''}${dataPath}${\n intAddr ? '@' + `${intAddr}` : ''\n }`;\n}\n\nfunction extRefSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n if (childIdentity.endsWith(']')) {\n const [intAddr] = childIdentity.split('[');\n const intAddrSelectors = [`[intAddr=\"${intAddr}\"]`];\n\n return crossProduct(parentSelectors, ['>'], [tagName], intAddrSelectors)\n .map(strings => strings.join(''))\n .join(',');\n }\n\n let iedName,\n ldInst,\n prefix,\n lnClass,\n lnInst,\n doName,\n daName,\n serviceType,\n srcCBName,\n srcLDInst,\n srcPrefix,\n srcLNClass,\n srcLNInst,\n intAddr;\n\n if (!childIdentity.includes(':') && !childIdentity.includes('@')) {\n [iedName, ldInst, prefix, lnClass, lnInst, doName, daName] =\n childIdentity.split(/[ /]/);\n } else if (childIdentity.includes(':') && !childIdentity.includes('@')) {\n [\n serviceType,\n srcCBName,\n srcLDInst,\n srcPrefix,\n srcLNClass,\n srcLNInst,\n iedName,\n ldInst,\n prefix,\n lnClass,\n lnInst,\n doName,\n daName,\n ] = childIdentity.split(/[ /:]/);\n } else if (!childIdentity.includes(':') && childIdentity.includes('@')) {\n [iedName, ldInst, prefix, lnClass, lnInst, doName, daName, intAddr] =\n childIdentity.split(/[ /@]/);\n } else {\n [\n serviceType,\n srcCBName,\n srcLDInst,\n srcPrefix,\n srcLNClass,\n srcLNInst,\n iedName,\n ldInst,\n prefix,\n lnClass,\n lnInst,\n doName,\n daName,\n intAddr,\n ] = childIdentity.split(/[ /:@]/);\n }\n\n const [\n iedNameSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n doNameSelectors,\n daNameSelectors,\n serviceTypeSelectors,\n srcCBNameSelectors,\n srcLDInstSelectors,\n srcPrefixSelectors,\n srcLNClassSelectors,\n srcLNInstSelectors,\n intAddrSelectors,\n ] = [\n iedName ? [`[iedName=\"${iedName}\"]`] : [':not([iedName])'],\n ldInst ? [`[ldInst=\"${ldInst}\"]`] : [':not([ldInst])', '[ldInst=\"\"]'],\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n lnClass ? [`[lnClass=\"${lnClass}\"]`] : [':not([lnClass])'],\n lnInst ? [`[lnInst=\"${lnInst}\"]`] : [':not([lnInst])', '[lnInst=\"\"]'],\n doName ? [`[doName=\"${doName}\"]`] : [':not([doName])'],\n daName ? [`[daName=\"${daName}\"]`] : [':not([daName])', '[daName=\"\"]'],\n serviceType\n ? [`[serviceType=\"${serviceType}\"]`]\n : [':not([serviceType])', '[serviceType=\"\"]'],\n srcCBName\n ? [`[srcCBName=\"${srcCBName}\"]`]\n : [':not([srcCBName])', '[srcCBName=\"\"]'],\n srcLDInst\n ? [`[srcLDInst=\"${srcLDInst}\"]`]\n : [':not([srcLDInst])', '[srcLDInst=\"\"]'],\n srcPrefix\n ? [`[srcPrefix=\"${srcPrefix}\"]`]\n : [':not([srcPrefix])', '[srcPrefix=\"\"]'],\n srcLNClass\n ? [`[srcLNClass=\"${srcLNClass}\"]`]\n : [':not([srcLNClass])', '[srcLNClass=\"\"]'],\n srcLNInst\n ? [`[srcLNInst=\"${srcLNInst}\"]`]\n : [':not([srcLNInst])', '[srcLNInst=\"\"]'],\n intAddr ? [`[intAddr=\"${intAddr}\"]`] : [':not([intAddr])', '[intAddr=\"\"]'],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n iedNameSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n doNameSelectors,\n daNameSelectors,\n serviceTypeSelectors,\n srcCBNameSelectors,\n srcLDInstSelectors,\n srcPrefixSelectors,\n srcLNClassSelectors,\n srcLNInstSelectors,\n intAddrSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction lNIdentity(e: Element): string {\n const [prefix, lnClass, inst] = ['prefix', 'lnClass', 'inst'].map(name =>\n e.getAttribute(name)\n );\n return `${identity(e.parentElement)}>${prefix ?? ''} ${lnClass} ${inst}`;\n}\n\nfunction lNSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n const [prefix, lnClass, inst] = childIdentity.split(' ');\n\n if (!lnClass) return voidSelector;\n\n const [prefixSelectors, lnClassSelectors, instSelectors] = [\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n [`[lnClass=\"${lnClass}\"]`],\n [`[inst=\"${inst}\"]`],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n prefixSelectors,\n lnClassSelectors,\n instSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction clientLNIdentity(e: Element): string {\n const [apRef, iedName, ldInst, prefix, lnClass, lnInst] = [\n 'apRef',\n 'iedName',\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n ].map(name => e.getAttribute(name));\n return `${identity(e.parentElement)}>${iedName} ${\n apRef ? apRef : ''\n } ${ldInst}/${prefix ?? ''} ${lnClass} ${lnInst}`;\n}\n\nfunction clientLNSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n const [iedName, apRef, ldInst, prefix, lnClass, lnInst] =\n childIdentity.split(/[ /]/);\n\n const [\n iedNameSelectors,\n apRefSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n ] = [\n iedName ? [`[iedName=\"${iedName}\"]`] : [':not([iedName])', '[iedName=\"\"]'],\n apRef ? [`[apRef=\"${apRef}\"]`] : [':not([apRef])', '[apRef=\"\"]'],\n ldInst ? [`[ldInst=\"${ldInst}\"]`] : [':not([ldInst])', '[ldInst=\"\"]'],\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n [`[lnClass=\"${lnClass}\"]`],\n lnInst ? [`[lnInst=\"${lnInst}\"]`] : [':not([lnInst])', '[lnInst=\"\"]'],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n iedNameSelectors,\n apRefSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction ixNamingIdentity(e: Element): string {\n const [name, ix] = ['name', 'ix'].map(name => e.getAttribute(name));\n return `${identity(e.parentElement)}>${name}${ix ? '[' + ix + ']' : ''}`;\n}\n\nfunction ixNamingSelector(\n tagName: SCLTag,\n identity: string,\n depth = -1\n): string {\n if (depth === -1) depth = identity.split('>').length;\n\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [_0, name, _1, ix] =\n childIdentity.match(/([^[]*)(\\[([0-9]*)\\])?/) ?? [];\n\n if (!name) return voidSelector;\n\n if (depth === 0) return `${tagName}[name=\"${name}\"]`;\n\n const parentSelectors = tags[tagName].parents\n .flatMap(parentTag =>\n parentTag === 'SDI'\n ? ixNamingSelector(parentTag, parentIdentity, depth - 1).split(',')\n : selector(parentTag, parentIdentity).split(',')\n )\n .filter(selector => !selector.startsWith(voidSelector));\n\n if (parentSelectors.length === 0) return voidSelector;\n\n const [nameSelectors, ixSelectors] = [\n [`[name=\"${name}\"]`],\n ix ? [`[ix=\"${ix}\"]`] : ['[ix=\"\"]', ':not([ix])'],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n nameSelectors,\n ixSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction valIdentity(e: Element): string | number {\n if (!e.parentElement) return NaN;\n const sGroup = e.getAttribute('sGroup');\n const index = Array.from(e.parentElement.children)\n .filter(child => child.getAttribute('sGroup') === sGroup)\n .findIndex(child => child.isSameNode(e));\n return `${identity(e.parentElement)}>${sGroup ? sGroup + '.' : ''} ${index}`;\n}\n\nfunction valSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [sGroup, indexText] = childIdentity.split(' ');\n const index = parseFloat(indexText);\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n const [nameSelectors, ixSelectors] = [\n sGroup ? [`[sGroup=\"${sGroup}\"]`] : [''],\n index ? [`:nth-child(${index + 1})`] : [''],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n nameSelectors,\n ixSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction connectedAPIdentity(e: Element): string {\n const [iedName, apName] = ['iedName', 'apName'].map(name =>\n e.getAttribute(name)\n );\n return `${iedName} ${apName}`;\n}\n\nfunction connectedAPSelector(tagName: SCLTag, identity: string): string {\n const [iedName, apName] = identity.split(' ');\n if (!iedName || !apName) return voidSelector;\n return `${tagName}[iedName=\"${iedName}\"][apName=\"${apName}\"]`;\n}\n\nfunction controlBlockIdentity(e: Element): string {\n const [ldInst, cbName] = ['ldInst', 'cbName'].map(name =>\n e.getAttribute(name)\n );\n return `${ldInst} ${cbName}`;\n}\n\nfunction controlBlockSelector(tagName: SCLTag, identity: string): string {\n const [ldInst, cbName] = identity.split(' ');\n\n if (!ldInst || !cbName) return voidSelector;\n\n return `${tagName}[ldInst=\"${ldInst}\"][cbName=\"${cbName}\"]`;\n}\n\nfunction physConnIdentity(e: Element): string | number {\n if (!e.parentElement) return NaN;\n if (!e.parentElement.querySelector('PhysConn[type=\"RedConn\"]')) return NaN;\n const pcType = e.getAttribute('type');\n if (\n e.parentElement.children.length > 1 &&\n pcType !== 'Connection' &&\n pcType !== 'RedConn'\n )\n return NaN;\n return `${identity(e.parentElement)}>${pcType}`;\n}\n\nfunction physConnSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, pcType] = pathParts(identity);\n\n const [parentSelectors, typeSelectors] = [\n tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n ),\n pcType ? [`[type=\"${pcType}\"]`] : [''],\n ];\n\n return crossProduct(parentSelectors, ['>'], [tagName], typeSelectors)\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction pIdentity(e: Element): string | number {\n if (!e.parentElement) return NaN;\n const eParent = e.parentElement;\n const eType = e.getAttribute('type');\n if (eParent.tagName === 'PhysConn')\n return `${identity(e.parentElement)}>${eType}`;\n const index = Array.from(e.parentElement.children)\n .filter(child => child.getAttribute('type') === eType)\n .findIndex(child => child.isSameNode(e));\n return `${identity(e.parentElement)}>${eType} [${index}]`;\n}\n\nfunction pSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [type] = childIdentity.split(' ');\n const index =\n childIdentity &&\n childIdentity.match(/\\[([0-9]+)\\]/) &&\n childIdentity.match(/\\[([0-9]+)\\]/)![1]\n ? parseFloat(childIdentity.match(/\\[([0-9]+)\\]/)![1])\n : NaN;\n\n const [parentSelectors, typeSelectors, ixSelectors] = [\n tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n ),\n [`[type=\"${type}\"]`],\n index ? [`:nth-child(${index + 1})`] : [''],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n typeSelectors,\n ixSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction enumValIdentity(e: Element): string {\n return `${identity(e.parentElement)}>${e.getAttribute('ord')}`;\n}\n\nfunction enumValSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, ord] = pathParts(identity);\n return `${selector('EnumType', parentIdentity)}>${tagName}[ord=\"${ord}\"]`;\n}\n\nfunction protNsIdentity(e: Element): string {\n return `${identity(e.parentElement)}>${e.getAttribute('type') || '8-MMS'}\\t${\n e.textContent\n }`;\n}\n\nfunction protNsSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [type, value] = childIdentity.split('\\t');\n\n const [parentSelectors] = [\n tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n ),\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n [`[type=\"${type}\"]`],\n ['>'],\n [value]\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction sCLIdentity(): string {\n return '';\n}\n\nfunction sCLSelector(): string {\n return ':root';\n}\n\nfunction namingIdentity(e: Element): string {\n return e.parentElement!.tagName === 'SCL'\n ? e.getAttribute('name')!\n : `${identity(e.parentElement)}>${e.getAttribute('name')}`;\n}\n\nfunction namingSelector(tagName: SCLTag, identity: string, depth = -1): string {\n if (depth === -1) depth = identity.split('>').length;\n\n const [parentIdentity, name] = pathParts(identity);\n if (!name) return voidSelector;\n if (depth === 0) return `${tagName}[name=\"${name}\"]`;\n\n const parents = tags[tagName].parents;\n if (!parents) return voidSelector;\n\n const parentSelectors = parents\n .flatMap(parentTag =>\n tags[parentTag].selector === tags['Substation'].selector\n ? namingSelector(parentTag, parentIdentity, depth - 1).split(',')\n : selector(parentTag, parentIdentity).split(',')\n )\n .filter(selector => !selector.startsWith(voidSelector));\n\n if (parentSelectors.length === 0) return voidSelector;\n\n return crossProduct(parentSelectors, ['>'], [tagName], [`[name=\"${name}\"]`])\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction singletonIdentity(e: Element): string {\n return identity(e.parentElement).toString();\n}\n\nfunction singletonSelector(tagName: SCLTag, identity: string): string {\n const parents = tags[tagName].parents;\n if (!parents) return voidSelector;\n\n const parentSelectors = parents\n .flatMap(parentTag => selector(parentTag, identity).split(','))\n .filter(selector => !selector.startsWith(voidSelector));\n\n if (parentSelectors.length === 0) return voidSelector;\n\n return crossProduct(parentSelectors, ['>'], [tagName])\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction idNamingIdentity(e: Element): string {\n return `#${e.id}`;\n}\n\nfunction idNamingSelector(tagName: SCLTag, identity: string): string {\n const id = identity.replace(/^#/, '');\n\n if (!id) return voidSelector;\n\n return `${tagName}[id=\"${id}\"]`;\n}\n\ntype IdentityFunction = (e: Element) => string | number;\ntype SelectorFunction = (tagName: SCLTag, identity: string) => string;\n\nconst tAbstractConductingEquipment = [\n 'TransformerWinding',\n 'ConductingEquipment',\n] as const;\n\nconst tEquipment = [\n 'GeneralEquipment',\n 'PowerTransformer',\n ...tAbstractConductingEquipment,\n] as const;\nconst tEquipmentContainer = ['Substation', 'VoltageLevel', 'Bay'] as const;\nconst tGeneralEquipmentContainer = ['Process', 'Line'] as const;\nconst tAbstractEqFuncSubFunc = ['EqSubFunction', 'EqFunction'] as const;\n\nconst tPowerSystemResource = [\n 'SubFunction',\n 'Function',\n 'TapChanger',\n 'SubEquipment',\n ...tEquipment,\n ...tEquipmentContainer,\n ...tGeneralEquipmentContainer,\n ...tAbstractEqFuncSubFunc,\n] as const;\nconst tLNodeContainer = ['ConnectivityNode', ...tPowerSystemResource] as const;\nconst tCertificate = ['GOOSESecurity', 'SMVSecurity'] as const;\nconst tNaming = ['SubNetwork', ...tCertificate, ...tLNodeContainer] as const;\n\nconst tAbstractDataAttribute = ['BDA', 'DA'] as const;\nconst tControlWithIEDName = ['SampledValueControl', 'GSEControl'] as const;\nconst tControlWithTriggerOpt = ['LogControl', 'ReportControl'] as const;\nconst tControl = [...tControlWithIEDName, ...tControlWithTriggerOpt] as const;\nconst tControlBlock = ['GSE', 'SMV'] as const;\nconst tUnNaming = [\n 'ConnectedAP',\n 'PhysConn',\n 'SDO',\n 'DO',\n 'DAI',\n 'SDI',\n 'DOI',\n 'Inputs',\n 'RptEnabled',\n 'Server',\n 'ServerAt',\n 'SettingControl',\n 'Communication',\n 'Log',\n 'LDevice',\n 'DataSet',\n 'AccessPoint',\n 'IED',\n 'NeutralPoint',\n ...tControl,\n ...tControlBlock,\n ...tAbstractDataAttribute,\n] as const;\n\nconst tAnyLN = ['LN0', 'LN'] as const;\n\nconst tAnyContentFromOtherNamespace = [\n 'Text',\n 'Private',\n 'Hitem',\n 'AccessControl',\n] as const;\n\nconst tCert = ['Subject', 'IssuerName'] as const;\nconst tDurationInMilliSec = ['MinTime', 'MaxTime'] as const;\n\nconst tIDNaming = ['LNodeType', 'DOType', 'DAType', 'EnumType'] as const;\n\nconst tServiceYesNo = [\n 'FileHandling',\n 'TimeSyncProt',\n 'CommProt',\n 'SGEdit',\n 'ConfSG',\n 'GetDirectory',\n 'GetDataObjectDefinition',\n 'DataObjectDirectory',\n 'GetDataSetValue',\n 'SetDataSetValue',\n 'DataSetDirectory',\n 'ReadWrite',\n 'TimerActivatedControl',\n 'GetCBValues',\n 'GSEDir',\n 'ConfLdName',\n] as const;\n\nconst tServiceWithMaxAndMaxAttributes = ['DynDataSet', 'ConfDataSet'] as const;\n\nconst tServiceWithMax = [\n 'GSSE',\n 'GOOSE',\n 'ConfReportControl',\n 'SMVsc',\n ...tServiceWithMaxAndMaxAttributes,\n] as const;\n\nconst tServiceWithMaxNonZero = ['ConfLogControl', 'ConfSigRef'] as const;\n\nconst tServiceSettings = [\n 'ReportSettings',\n 'LogSettings',\n 'GSESettings',\n 'SMVSettings',\n] as const;\n\nconst tBaseElement = ['SCL', ...tNaming, ...tUnNaming, ...tIDNaming] as const;\n\nconst sCLTags = [\n ...tBaseElement,\n ...tAnyContentFromOtherNamespace,\n 'Header',\n 'LNode',\n 'Val',\n 'Voltage',\n 'Services',\n ...tCert,\n ...tDurationInMilliSec,\n 'Association',\n 'FCDA',\n 'ClientLN',\n 'IEDName',\n 'ExtRef',\n 'Protocol',\n ...tAnyLN,\n ...tServiceYesNo,\n 'DynAssociation',\n 'SettingGroups',\n ...tServiceWithMax,\n ...tServiceWithMaxNonZero,\n ...tServiceSettings,\n 'ConfLNs',\n 'ClientServices',\n 'SupSubscription',\n 'ValueHandling',\n 'RedProt',\n 'McSecurity',\n 'KDC',\n 'Address',\n 'P',\n 'ProtNs',\n 'EnumVal',\n 'Terminal',\n 'BitRate',\n 'Authentication',\n 'DataTypeTemplates',\n 'History',\n 'OptFields',\n 'SmvOpts',\n 'TrgOps',\n 'SamplesPerSec',\n 'SmpRate',\n 'SecPerSamples',\n] as const;\n\nexport type SCLTag = (typeof sCLTags)[number];\n\nconst tagSet = new Set<string>(sCLTags);\n\nfunction isSCLTag(tag: string): tag is SCLTag {\n return tagSet.has(tag);\n}\n\nconst tBaseNameSequence = ['Text', 'Private'] as const;\nconst tNamingSequence = [...tBaseNameSequence] as const;\nconst tUnNamingSequence = [...tBaseNameSequence] as const;\nconst tIDNamingSequence = [...tBaseNameSequence] as const;\n\nconst tAbstractDataAttributeSequence = [...tUnNamingSequence, 'Val'] as const;\nconst tLNodeContainerSequence = [...tNamingSequence, 'LNode'] as const;\nconst tPowerSystemResourceSequence = [...tLNodeContainerSequence] as const;\nconst tEquipmentSequence = [...tPowerSystemResourceSequence] as const;\nconst tEquipmentContainerSequence = [\n ...tPowerSystemResourceSequence,\n 'PowerTransformer',\n 'GeneralEquipment',\n] as const;\nconst tAbstractConductingEquipmentSequence = [\n ...tEquipmentSequence,\n 'Terminal',\n] as const;\nconst tControlBlockSequence = [...tUnNamingSequence, 'Address'] as const;\nconst tControlSequence = [...tNamingSequence] as const;\nconst tControlWithIEDNameSequence = [...tControlSequence, 'IEDName'] as const;\nconst tAnyLNSequence = [\n ...tUnNamingSequence,\n 'DataSet',\n 'ReportControl',\n 'LogControl',\n 'DOI',\n 'Inputs',\n 'Log',\n] as const;\nconst tGeneralEquipmentContainerSequence = [\n ...tPowerSystemResourceSequence,\n 'GeneralEquipment',\n 'Function',\n] as const;\nconst tControlWithTriggerOptSequence = [...tControlSequence, 'TrgOps'] as const;\nconst tAbstractEqFuncSubFuncSequence = [\n ...tPowerSystemResourceSequence,\n 'GeneralEquipment',\n 'EqSubFunction',\n] as const;\n\nexport const tags: Record<\n SCLTag,\n {\n identity: IdentityFunction;\n selector: SelectorFunction;\n parents: SCLTag[];\n children: SCLTag[];\n }\n> = {\n AccessControl: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['LDevice'],\n children: [],\n },\n AccessPoint: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['IED'],\n children: [\n ...tNamingSequence,\n 'Server',\n 'LN',\n 'ServerAt',\n 'Services',\n 'GOOSESecurity',\n 'SMVSecurity',\n ],\n },\n Address: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['ConnectedAP', 'GSE', 'SMV'],\n children: ['P'],\n },\n Association: {\n identity: associationIdentity,\n selector: associationSelector,\n parents: ['Server'],\n children: [],\n },\n Authentication: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Server'],\n children: [],\n },\n BDA: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['DAType'],\n children: [...tAbstractDataAttributeSequence],\n },\n BitRate: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SubNetwork'],\n children: [],\n },\n Bay: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['VoltageLevel'],\n children: [\n ...tEquipmentContainerSequence,\n 'ConductingEquipment',\n 'ConnectivityNode',\n 'Function',\n ],\n },\n ClientLN: {\n identity: clientLNIdentity,\n selector: clientLNSelector,\n parents: ['RptEnabled'],\n children: [],\n },\n ClientServices: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: ['TimeSyncProt', 'McSecurity'],\n },\n CommProt: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n Communication: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SCL'],\n children: [...tUnNamingSequence, 'SubNetwork'],\n },\n ConductingEquipment: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Process', 'Line', 'SubFunction', 'Function', 'Bay'],\n children: [\n ...tAbstractConductingEquipmentSequence,\n 'EqFunction',\n 'SubEquipment',\n ],\n },\n ConfDataSet: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConfLdName: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConfLNs: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConfLogControl: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConfReportControl: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConfSG: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SettingGroups'],\n children: [],\n },\n ConfSigRef: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConnectedAP: {\n identity: connectedAPIdentity,\n selector: connectedAPSelector,\n parents: ['SubNetwork'],\n children: [...tUnNamingSequence, 'Address', 'GSE', 'SMV', 'PhysConn'],\n },\n ConnectivityNode: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Bay', 'Line'],\n children: [...tLNodeContainerSequence],\n },\n DA: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['DOType'],\n children: [...tAbstractDataAttributeSequence],\n },\n DAI: {\n identity: ixNamingIdentity,\n selector: ixNamingSelector,\n parents: ['DOI', 'SDI'],\n children: [...tUnNamingSequence, 'Val'],\n },\n DAType: {\n identity: idNamingIdentity,\n selector: idNamingSelector,\n parents: ['DataTypeTemplates'],\n children: [...tIDNamingSequence, 'BDA', 'ProtNs'],\n },\n DO: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['LNodeType'],\n children: [...tUnNamingSequence],\n },\n DOI: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tAnyLN],\n children: [...tUnNamingSequence, 'SDI', 'DAI'],\n },\n DOType: {\n identity: idNamingIdentity,\n selector: idNamingSelector,\n parents: ['DataTypeTemplates'],\n children: [...tIDNamingSequence, 'SDO', 'DA'],\n },\n DataObjectDirectory: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n DataSet: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tAnyLN],\n children: [...tNamingSequence, 'FCDA'],\n },\n DataSetDirectory: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n DataTypeTemplates: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SCL'],\n children: ['LNodeType', 'DOType', 'DAType', 'EnumType'],\n },\n DynAssociation: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n DynDataSet: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n EnumType: {\n identity: idNamingIdentity,\n selector: idNamingSelector,\n parents: ['DataTypeTemplates'],\n children: [...tIDNamingSequence, 'EnumVal'],\n },\n EnumVal: {\n identity: enumValIdentity,\n selector: enumValSelector,\n parents: ['EnumType'],\n children: [],\n },\n EqFunction: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [\n 'GeneralEquipment',\n 'TapChanger',\n 'TransformerWinding',\n 'PowerTransformer',\n 'SubEquipment',\n 'ConductingEquipment',\n ],\n children: [...tAbstractEqFuncSubFuncSequence],\n },\n EqSubFunction: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['EqSubFunction', 'EqFunction'],\n children: [...tAbstractEqFuncSubFuncSequence],\n },\n ExtRef: {\n identity: extRefIdentity,\n selector: extRefSelector,\n parents: ['Inputs'],\n children: [],\n },\n FCDA: {\n identity: fCDAIdentity,\n selector: fCDASelector,\n parents: ['DataSet'],\n children: [],\n },\n FileHandling: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n Function: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Bay', 'VoltageLevel', 'Substation', 'Process', 'Line'],\n children: [\n ...tPowerSystemResourceSequence,\n 'SubFunction',\n 'GeneralEquipment',\n 'ConductingEquipment',\n ],\n },\n GeneralEquipment: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [\n 'SubFunction',\n 'Function',\n ...tGeneralEquipmentContainer,\n ...tAbstractEqFuncSubFunc,\n ...tEquipmentContainer,\n ],\n children: [...tEquipmentSequence, 'EqFunction'],\n },\n GetCBValues: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GetDataObjectDefinition: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GetDataSetValue: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GetDirectory: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GOOSE: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GOOSESecurity: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['AccessPoint'],\n children: [...tNamingSequence, 'Subject', 'IssuerName'],\n },\n GSE: {\n identity: controlBlockIdentity,\n selector: controlBlockSelector,\n parents: ['ConnectedAP'],\n children: [...tControlBlockSequence, 'MinTime', 'MaxTime'],\n },\n GSEDir: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GSEControl: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['LN0'],\n children: [...tControlWithIEDNameSequence, 'Protocol'],\n },\n GSESettings: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GSSE: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n Header: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SCL'],\n children: ['Text', 'History'],\n },\n History: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Header'],\n children: ['Hitem'],\n },\n Hitem: {\n identity: hitemIdentity,\n selector: hitemSelector,\n parents: ['History'],\n children: [],\n },\n IED: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['SCL'],\n children: [...tUnNamingSequence, 'Services', 'AccessPoint', 'KDC'],\n },\n IEDName: {\n identity: iEDNameIdentity,\n selector: iEDNameSelector,\n parents: ['GSEControl', 'SampledValueControl'],\n children: [],\n },\n Inputs: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: [...tAnyLN],\n children: [...tUnNamingSequence, 'ExtRef'],\n },\n IssuerName: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GOOSESecurity', 'SMVSecurity'],\n children: [],\n },\n KDC: {\n identity: kDCIdentity,\n selector: kDCSelector,\n parents: ['IED'],\n children: [],\n },\n LDevice: {\n identity: lDeviceIdentity,\n selector: lDeviceSelector,\n parents: ['Server'],\n children: [...tUnNamingSequence, 'LN0', 'LN', 'AccessControl'],\n },\n LN: {\n identity: lNIdentity,\n selector: lNSelector,\n parents: ['AccessPoint', 'LDevice'],\n children: [...tAnyLNSequence],\n },\n LN0: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['LDevice'],\n children: [\n ...tAnyLNSequence,\n 'GSEControl',\n 'SampledValueControl',\n 'SettingControl',\n ],\n },\n LNode: {\n identity: lNodeIdentity,\n selector: lNodeSelector,\n parents: [...tLNodeContainer],\n children: [...tUnNamingSequence],\n },\n LNodeType: {\n identity: idNamingIdentity,\n selector: idNamingSelector,\n parents: ['DataTypeTemplates'],\n children: [...tIDNamingSequence, 'DO'],\n },\n Line: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Process', 'SCL'],\n children: [\n ...tGeneralEquipmentContainerSequence,\n 'Voltage',\n 'ConductingEquipment',\n ],\n },\n Log: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tAnyLN],\n children: [...tUnNamingSequence],\n },\n LogControl: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tAnyLN],\n children: [...tControlWithTriggerOptSequence],\n },\n LogSettings: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n MaxTime: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GSE'],\n children: [],\n },\n McSecurity: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GSESettings', 'SMVSettings', 'ClientServices'],\n children: [],\n },\n MinTime: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GSE'],\n children: [],\n },\n NeutralPoint: {\n identity: terminalIdentity,\n selector: terminalSelector,\n parents: ['TransformerWinding'],\n children: [...tUnNamingSequence],\n },\n OptFields: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['ReportControl'],\n children: [],\n },\n P: {\n identity: pIdentity,\n selector: pSelector,\n parents: ['Address', 'PhysConn'],\n children: [],\n },\n PhysConn: {\n identity: physConnIdentity,\n selector: physConnSelector,\n parents: ['ConnectedAP'],\n children: [...tUnNamingSequence, 'P'],\n },\n PowerTransformer: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tEquipmentContainer],\n children: [\n ...tEquipmentSequence,\n 'TransformerWinding',\n 'SubEquipment',\n 'EqFunction',\n ],\n },\n Private: {\n identity: () => NaN,\n selector: () => voidSelector,\n parents: [],\n children: [],\n },\n Process: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Process', 'SCL'],\n children: [\n ...tGeneralEquipmentContainerSequence,\n 'ConductingEquipment',\n 'Substation',\n 'Line',\n 'Process',\n ],\n },\n ProtNs: {\n identity: protNsIdentity,\n selector: protNsSelector,\n parents: ['DAType', 'DA'],\n children: [],\n },\n Protocol: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GSEControl', 'SampledValueControl'],\n children: [],\n },\n ReadWrite: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n RedProt: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ReportControl: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tAnyLN],\n children: [...tControlWithTriggerOptSequence, 'OptFields', 'RptEnabled'],\n },\n ReportSettings: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n RptEnabled: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['ReportControl'],\n children: [...tUnNamingSequence, 'ClientLN'],\n },\n SamplesPerSec: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SMVSettings'],\n children: [],\n },\n SampledValueControl: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['LN0'],\n children: [...tControlWithIEDNameSequence, 'SmvOpts'],\n },\n SecPerSamples: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SMVSettings'],\n children: [],\n },\n SCL: {\n identity: sCLIdentity,\n selector: sCLSelector,\n parents: [],\n children: [\n ...tBaseNameSequence,\n 'Header',\n 'Substation',\n 'Communication',\n 'IED',\n 'DataTypeTemplates',\n 'Line',\n 'Process',\n ],\n },\n SDI: {\n identity: ixNamingIdentity,\n selector: ixNamingSelector,\n parents: ['DOI', 'SDI'],\n children: [...tUnNamingSequence, 'SDI', 'DAI'],\n },\n SDO: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['DOType'],\n children: [...tNamingSequence],\n },\n Server: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['AccessPoint'],\n children: [\n ...tUnNamingSequence,\n 'Authentication',\n 'LDevice',\n 'Association',\n ],\n },\n ServerAt: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['AccessPoint'],\n children: [...tUnNamingSequence],\n },\n Services: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['IED', 'AccessPoint'],\n children: [\n 'DynAssociation',\n 'SettingGroups',\n 'GetDirectory',\n 'GetDataObjectDefinition',\n 'DataObjectDirectory',\n 'GetDataSetValue',\n 'SetDataSetValue',\n 'DataSetDirectory',\n 'ConfDataSet',\n 'DynDataSet',\n 'ReadWrite',\n 'TimerActivatedControl',\n 'ConfReportControl',\n 'GetCBValues',\n 'ConfLogControl',\n 'ReportSettings',\n 'LogSettings',\n 'GSESettings',\n 'SMVSettings',\n 'GSEDir',\n 'GOOSE',\n 'GSSE',\n 'SMVsc',\n 'FileHandling',\n 'ConfLNs',\n 'ClientServices',\n 'ConfLdName',\n 'SupSubscription',\n 'ConfSigRef',\n 'ValueHandling',\n 'RedProt',\n 'TimeSyncProt',\n 'CommProt',\n ],\n },\n SetDataSetValue: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n SettingControl: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['LN0'],\n children: [...tUnNamingSequence],\n },\n SettingGroups: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: ['SGEdit', 'ConfSG'],\n },\n SGEdit: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SettingGroups'],\n children: [],\n },\n SmpRate: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SMVSettings'],\n children: [],\n },\n SMV: {\n identity: controlBlockIdentity,\n selector: controlBlockSelector,\n parents: ['ConnectedAP'],\n children: [...tControlBlockSequence],\n },\n SmvOpts: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SampledValueControl'],\n children: [],\n },\n SMVsc: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n SMVSecurity: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['AccessPoint'],\n children: [...tNamingSequence, 'Subject', 'IssuerName'],\n },\n SMVSettings: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: ['SmpRate', 'SamplesPerSec', 'SecPerSamples', 'McSecurity'],\n },\n SubEquipment: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [\n 'TapChanger',\n 'PowerTransformer',\n 'ConductingEquipment',\n 'TransformerWinding',\n ...tAbstractConductingEquipment,\n ],\n children: [...tPowerSystemResourceSequence, 'EqFunction'],\n },\n SubFunction: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['SubFunction', 'Function'],\n children: [\n ...tPowerSystemResourceSequence,\n 'GeneralEquipment',\n 'ConductingEquipment',\n 'SubFunction',\n ],\n },\n SubNetwork: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Communication'],\n children: [...tNamingSequence, 'BitRate', 'ConnectedAP'],\n },\n Subject: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GOOSESecurity', 'SMVSecurity'],\n children: [],\n },\n Substation: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['SCL'],\n children: [...tEquipmentContainerSequence, 'VoltageLevel', 'Function'],\n },\n SupSubscription: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n TapChanger: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['TransformerWinding'],\n children: [...tPowerSystemResourceSequence, 'SubEquipment', 'EqFunction'],\n },\n Terminal: {\n identity: terminalIdentity,\n selector: terminalSelector,\n parents: [...tEquipment],\n children: [...tUnNamingSequence],\n },\n Text: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: sCLTags.filter(tag => tag !== 'Text' && tag !== 'Private'),\n children: [],\n },\n TimerActivatedControl: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n TimeSyncProt: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services', 'ClientServices'],\n children: [],\n },\n TransformerWinding: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['PowerTransformer'],\n children: [\n ...tAbstractConductingEquipmentSequence,\n 'TapChanger',\n 'NeutralPoint',\n 'EqFunction',\n 'SubEquipment',\n ],\n },\n TrgOps: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['ReportControl'],\n children: [],\n },\n Val: {\n identity: valIdentity,\n selector: valSelector,\n parents: ['DAI', 'DA', 'BDA'],\n children: [],\n },\n ValueHandling: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n Voltage: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['VoltageLevel'],\n children: [],\n },\n VoltageLevel: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Substation'],\n children: [...tEquipmentContainerSequence, 'Voltage', 'Bay', 'Function'],\n },\n};\n\nexport function getReference(parent: Element, tag: SCLTag): Element | null {\n const parentTag = parent.tagName;\n const children = Array.from(parent.children);\n\n if (\n parentTag === 'Services' ||\n parentTag === 'SettingGroups' ||\n !isSCLTag(parentTag)\n )\n return children.find(child => child.tagName === tag) ?? null;\n\n const sequence = tags[parentTag]?.children ?? [];\n let index = sequence.findIndex(element => element === tag);\n\n if (index < 0) return null;\n\n let nextSibling: Element | undefined;\n while (index < sequence.length && !nextSibling) {\n nextSibling = children.find(child => child.tagName === sequence[index]);\n index++;\n }\n\n return nextSibling ?? null;\n}\n\nfunction selector(tagName: string, identity: string | number): string {\n if (typeof identity !== 'string') return voidSelector;\n\n if (isSCLTag(tagName)) return tags[tagName].selector(tagName, identity);\n\n return tagName;\n}\n\nexport function find(\n root: XMLDocument | Element | DocumentFragment,\n tagName: string,\n identity: string | number\n): Element | null {\n if (typeof identity !== 'string' || !isSCLTag(tagName)) return null;\n\n const element = root.querySelector(tags[tagName].selector(tagName, identity));\n\n if (element === null || isPublic(element)) return element;\n\n return (\n Array.from(\n root.querySelectorAll(tags[tagName].selector(tagName, identity))\n ).find(isPublic) ?? null\n );\n}\n\n/** @returns a string uniquely identifying `e` in its document, or NaN if `e`\n * is unidentifiable. */\nexport function identity(e: Element | null): string | number {\n if (e === null) return NaN;\n if (e.closest('Private')) return NaN;\n const tag = e.tagName;\n\n if (isSCLTag(tag)) return tags[tag].identity(e);\n\n return NaN;\n}\n\n/** @returns whether `a` and `b` are considered identical by IEC-61850 */\nexport function isSame(a: Element, b: Element): boolean {\n if (a.tagName === 'Private')\n return isSame(a.parentElement!, b.parentElement!) && a.isEqualNode(b);\n return a.tagName === b.tagName && identity(a) === identity(b);\n}\n\nexport function isEqual(a: Element, b: Element): boolean {\n if (a.closest('Private') || b.closest('Private')) return a.isEqualNode(b);\n\n const attributeNames = new Set(\n a.getAttributeNames().concat(b.getAttributeNames())\n );\n for (const name of attributeNames)\n if (a.getAttribute(name) !== b.getAttribute(name)) return false;\n\n if (a.childElementCount === 0)\n return (\n b.childElementCount === 0 &&\n a.textContent?.trim() === b.textContent?.trim()\n );\n\n const aChildren = Array.from(a.children);\n const bChildren = Array.from(b.children);\n\n for (const aChild of aChildren) {\n const twindex = bChildren.findIndex(bChild => isEqual(aChild, bChild));\n if (twindex === -1) return false;\n bChildren.splice(twindex, 1);\n }\n\n for (const bChild of bChildren)\n if (!aChildren.find(aChild => isEqual(bChild, aChild))) return false;\n\n return true;\n}\n\n/** A directive rendering its argument `rendered` only if `rendered !== {}`. */\nexport const ifImplemented = directive(rendered => (part: Part) => {\n if (Object.keys(rendered).length) part.setValue(rendered);\n else part.setValue('');\n});\n\n/** Constructor type for defining `LitElement` mixins. */\nexport type LitElementConstructor = new (...args: any[]) => LitElement;\n\n/** The type returned by `MyMixin(...)` is `Mixin<typeof MyMixin>`. */\nexport type Mixin<T extends (...args: any[]) => any> = InstanceType<\n ReturnType<T>\n>;\n\nconst nameStartChar =\n '[:_A-Za-z]|[\\u00C0-\\u00D6]|[\\u00D8-\\u00F6]|[\\u00F8-\\u02FF]|[\\u0370-\\u037D]' +\n '|[\\u037F-\\u1FFF]|[\\u200C-\\u200D]|[\\u2070-\\u218F]|[\\u2C00-\\u2FEF]' +\n '|[\\u3001-\\uD7FF]|[\\uF900-\\uFDCF]|[\\uFDF0-\\uFFFD]';\nconst nameChar =\n nameStartChar + '|[.0-9\\\\-]|\\u00B7|[\\u0300-\\u036F]|[\\u203F-\\u2040]';\nconst name = nameStartChar + '(' + nameChar + ')*';\nconst nmToken = '\\\\S+';\n\nexport const patterns = {\n string:\n '([\\u0009-\\u000A]|[\\u000D]|[\\u0020-\\u007E]|[\\u0085]|[\\u00A0-\\uD7FF]' +\n '|[\\uE000-\\uFFFD])*',\n normalizedString:\n '([\\u0020-\\u007E]|[\\u0085]|[\\u00A0-\\uD7FF]|[\\uE000-\\uFFFD])*',\n name,\n nmToken,\n names: name + '( ' + name + ')*',\n nmTokens: nmToken + '( ' + nmToken + ')*',\n decimal: '[+\\\\-]?[0-9]+(([.][0-9]*)?|([.][0-9]+))',\n unsigned: '[+]?[0-9]+(([.][0-9]*)?|([.][0-9]+))',\n integer: '[+\\\\-]?[0-9]+([0-9]*)',\n alphanumericFirstUpperCase: '[A-Z][0-9,A-Z,a-z]*',\n alphanumericFirstLowerCase: '[a-z][0-9,A-Z,a-z]*',\n lnClass: '(LLN0)|[A-Z]{4,4}',\n};\n\n/** Sorts selected `ListItem`s to the top and disabled ones to the bottom. */\nexport function compareNames(a: Element | string, b: Element | string): number {\n if (typeof a === 'string' && typeof b === 'string') return a.localeCompare(b);\n\n if (typeof a === 'object' && typeof b === 'string')\n return (a.getAttribute('name') ?? '').localeCompare(b);\n\n if (typeof a === 'string' && typeof b === 'object')\n return a.localeCompare(b.getAttribute('name')!);\n\n if (typeof a === 'object' && typeof b === 'object')\n return (a.getAttribute('name') ?? '').localeCompare(\n b.getAttribute('name') ?? ''\n );\n\n return 0;\n}\n\n/** @returns the cartesian product of `arrays` */\nexport function crossProduct<T>(...arrays: T[][]): T[][] {\n return arrays.reduce<T[][]>(\n (a, b) => <T[][]>a.flatMap(d => b.map(e => [d, e].flat())),\n [[]]\n );\n}\n\n/** @returns the depth of `t` if it is an object or array, zero otherwise. */\nexport function depth(t: Record<string, unknown>, mem = new WeakSet()): number {\n if (mem.has(t)) return Infinity;\n else\n switch (t?.constructor) {\n case Object:\n case Array:\n mem.add(t);\n return (\n 1 +\n Math.max(\n -1,\n ...Object.values(t).map(_ => depth(<Record<string, unknown>>_, mem))\n )\n );\n default:\n return 0;\n }\n}\n\nexport function findFCDAs(extRef: Element): Element[] {\n if (extRef.tagName !== 'ExtRef' || extRef.closest('Private')) return [];\n\n const [iedName, ldInst, prefix, lnClass, lnInst, doName, daName] = [\n 'iedName',\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n 'doName',\n 'daName',\n ].map(name => extRef.getAttribute(name));\n const ied = Array.from(extRef.ownerDocument.getElementsByTagName('IED')).find(\n element =>\n element.getAttribute('name') === iedName && !element.closest('Private')\n );\n if (!ied) return [];\n\n return Array.from(ied.getElementsByTagName('FCDA'))\n .filter(item => !item.closest('Private'))\n .filter(\n fcda =>\n (fcda.getAttribute('ldInst') ?? '') === (ldInst ?? '') &&\n (fcda.getAttribute('prefix') ?? '') === (prefix ?? '') &&\n (fcda.getAttribute('lnClass') ?? '') === (lnClass ?? '') &&\n (fcda.getAttribute('lnInst') ?? '') === (lnInst ?? '') &&\n (fcda.getAttribute('doName') ?? '') === (doName ?? '') &&\n (fcda.getAttribute('daName') ?? '') === (daName ?? '')\n );\n}\n\nconst serviceTypeControlBlockTags: Partial<Record<string, string[]>> = {\n GOOSE: ['GSEControl'],\n SMV: ['SampledValueControl'],\n Report: ['ReportControl'],\n NONE: ['LogControl', 'GSEControl', 'SampledValueControl', 'ReportControl'],\n};\n\nexport function findControlBlocks(extRef: Element): Set<Element> {\n const fcdas = findFCDAs(extRef);\n const cbTags =\n serviceTypeControlBlockTags[extRef.getAttribute('serviceType') ?? 'NONE'] ??\n [];\n const controlBlocks = new Set(\n fcdas.flatMap(fcda => {\n const dataSet = fcda.parentElement!;\n const dsName = dataSet.getAttribute('name') ?? '';\n const anyLN = dataSet.parentElement!;\n return cbTags\n .flatMap(tag => Array.from(anyLN.getElementsByTagName(tag)))\n .filter(cb => cb.getAttribute('datSet') === dsName);\n })\n );\n return controlBlocks;\n}\n\nexport function isPublic(element: Element): boolean {\n return !element.closest('Private');\n}\n\n/** @returns the version of the SCL project */\nexport function getVersion(element: Element): string {\n const header = Array.from(\n element.ownerDocument.getElementsByTagName('Header')\n ).filter(item => !item.closest('Private'));\n\n return header[0].getAttribute('version') ?? '2003';\n}\n\n/** maximum value for `lnInst` attribute */\nconst maxLnInst = 99;\nconst lnInstRange = Array(maxLnInst)\n .fill(1)\n .map((_, i) => `${i + 1}`);\n\n/**\n * @param parent - The LNodes' parent element to be scanned once for `lnInst`\n * values already in use. Be sure to create a new generator every time the\n * children of this element change.\n * @returns a function generating increasing unused `lnInst` values for\n * `lnClass` LNodes within `parent` on subsequent invocations\n */\nexport function newLnInstGenerator(\n parent: Element\n): (lnClass: string) => string | undefined {\n const generators = new Map<string, () => string | undefined>();\n\n return (lnClass: string) => {\n if (!generators.has(lnClass)) {\n const lnInsts = new Set(\n getChildElementsByTagName(parent, 'LNode')\n .filter(lnode => lnode.getAttribute('lnClass') === lnClass)\n .map(lNode => lNode.getAttribute('lnInst')!)\n );\n\n generators.set(lnClass, () => {\n const uniqueLnInst = lnInstRange.find(lnInst => !lnInsts.has(lnInst));\n if (uniqueLnInst) lnInsts.add(uniqueLnInst);\n return uniqueLnInst;\n });\n }\n\n return generators.get(lnClass)!();\n };\n}\n\n/**\n * @param lnElements - The LN elements to be scanned for `inst`\n * values already in use.\n * @returns first available inst value for LN or undefined if no inst is available\n */\nexport function minAvailableLogicalNodeInstance(\n lnElements: Element[]\n): string | undefined {\n const lnInsts = new Set(lnElements.map(ln => ln.getAttribute('inst') || ''));\n return lnInstRange.find(lnInst => !lnInsts.has(lnInst));\n}\n\ndeclare global {\n interface ElementEventMap {\n ['wizard']: WizardEvent;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/icons/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;OAEvB,CAAC;AAER,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;OAEzB,CAAC;AAER,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;OAEvB,CAAC","sourcesContent":["import { svg } from \"lit-html\";\n\nexport const elementIcon = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M9,7H15V9H11V11H15V13H11V15H15V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const attributeIcon = svg`<svg viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M11,7H13A2,2 0 0,1 15,9V17H13V13H11V17H9V9A2,2 0 0,1 11,7M11,9V11H13V9H11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z\" />\n</svg>`;\n\nexport const contentIcon = svg`<svg viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M11,7H13A2,2 0 0,1 15,9V10H13V9H11V15H13V14H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../src/icons/icons.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, svg, SVGTemplateResult, TemplateResult } from 'lit-element';\n\nexport type iconType =\n | 'action'\n | 'dAIcon'\n | 'dOIcon'\n | 'enumIcon'\n | 'info'\n | 'warning'\n | 'error'\n | 'reset'\n | 'reportIcon'\n | 'smvIcon'\n | 'gooseIcon'\n | 'lNIcon'\n | 'logIcon';\n\nexport const editIcon = html`<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 25 25\"\n>\n <path\n d=\"M14.06 9.02l.92.92L5.92 19H5v-.92l9.06-9.06M17.66 3c-.25 0-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29zm-3.6 3.19L3 17.25V21h3.75L17.81 9.94l-3.75-3.75z\"\n stroke=\"currentColor\"\n fill=\"transparent\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n</svg>`;\n\nconst pathsSVG = {\n action: svg`<path d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M13 3c-4.97 0-9\n 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7\n 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0\n 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\" fill=\"currentColor\"></path>`,\n dAIcon: svg`<path fill=\"currentColor\" d=\"m4.2 0c-2.31 0-4.2 1.89-4.2 4.2v11.6c0 2.31 1.89 4.2 4.2 4.2h18.1c2.31 0 4.2-1.89 4.2-4.2v-11.6c0-2.31-1.89-4.2-4.2-4.2zm0 1.89h18.1c1.29 0 2.3 1.01 2.3 2.3v11.6c0 1.29-1.01 2.31-2.3 2.31h-18.1c-1.29 0-2.3-1.01-2.3-2.31v-11.6c0-1.29 1.01-2.3 2.3-2.3z\"/><path fill=\"currentColor\" d=\"m12.5 9.94q0 1.55-0.509 2.71-0.503 1.15-1.43 1.76-0.923 0.611-2.12 0.611h-3.37v-10h3.02q2.11 0 3.26 1.28 1.15 1.27 1.15 3.65zm-1.76 0q0-1.61-0.698-2.46-0.698-0.852-1.99-0.852h-1.24v6.77h1.48q1.12 0 1.79-0.931 0.663-0.931 0.663-2.53z\"/><path fill=\"currentColor\" d=\"m19.7 15-0.74-2.56h-3.18l-0.74 2.56h-1.75l3.04-10h2.06l3.03 10zm-1.13-4.13-0.823-2.88-0.379-1.46q-0.0947 0.412-0.178 0.739-0.0829 0.327-1.02 3.59z\"/>`,\n dOIcon: svg`<path fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.89\" d=\"m4.2 0.945h18.1c1.8 0 3.25 1.45 3.25 3.25v11.6c0 1.8-1.45 3.25-3.25 3.25h-18.1c-1.8 0-3.25-1.45-3.25-3.25v-11.6c0-1.8 1.45-3.25 3.25-3.25z\"/><path d=\"m12.1 9.94q0 1.55-0.509 2.71-0.503 1.15-1.43 1.76-0.923 0.611-2.12 0.611h-3.37v-10h3.02q2.11 0 3.26 1.28 1.15 1.27 1.15 3.65zm-1.76 0q0-1.61-0.698-2.46-0.698-0.852-1.99-0.852h-1.24v6.77h1.48q1.12 0 1.79-0.931 0.663-0.931 0.663-2.53z\"/><path d=\"m21.6 9.97q0 1.56-0.515 2.75-0.515 1.19-1.47 1.82-0.959 0.625-2.24 0.625-1.97 0-3.08-1.39-1.11-1.39-1.11-3.81 0-2.41 1.11-3.76t3.1-1.35 3.1 1.36q1.12 1.36 1.12 3.74zm-1.78 0q0-1.62-0.639-2.54-0.639-0.923-1.79-0.923-1.17 0-1.81 0.916-0.639 0.909-0.639 2.54 0 1.65 0.651 2.6 0.657 0.945 1.79 0.945 1.17 0 1.81-0.923 0.639-0.923 0.639-2.62z\"/>`,\n enumIcon: svg`<path fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.89\" d=\"m4.2 0.945h18.1c1.8 0 3.25 1.45 3.25 3.25v11.6c0 1.8-1.45 3.25-3.25 3.25h-18.1c-1.8 0-3.25-1.45-3.25-3.25v-11.6c0-1.8 1.45-3.25 3.25-3.25z\"/><path d=\"m5.37 15v-10h6.56v1.62h-4.81v2.51h4.45v1.62h-4.45v2.64h5.06v1.62z\"/><path d=\"m18.5 15-3.63-7.71q0.107 1.12 0.107 1.8v5.9h-1.55v-10h1.99l3.69 7.77q-0.107-1.07-0.107-1.95v-5.82h1.55v10z\"/>`,\n info: svg`<path d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" fill=\"currentColor\"></path>`,\n warning: svg`<path d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\" fill=\"currentColor\"></path>`,\n error: svg`<path d=\"M0 0h24v24H0V0z\" fill=\"none\"></path><path d=\"M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27L15.73 3zM19 14.9L14.9 19H9.1L5 14.9V9.1L9.1 5h5.8L19 9.1v5.8z\" fill=\"currentColor\"></path><path d=\"M11 7h2v7h-2z\" fill=\"currentColor\"></path><circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\"></circle>`,\n gooseIcon: svg`<path fill=\"currentColor\" d=\"M11,7H15V9H11V15H13V11H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />`,\n lNIcon: svg`<path stroke=\"currentColor\" stroke-width=\"1.89\" fill=\"none\" d=\"m4.2 0.945h18.1c1.8 0 3.25 1.45 3.25 3.25v11.6c0 1.8-1.45 3.25-3.25 3.25h-18.1c-1.8 0-3.25-1.45-3.25-3.25v-11.6c0-1.8 1.45-3.25 3.25-3.25z\"/><path fill=\"currentColor\" d=\"m5.71 15v-10h1.75v8.39h4.47v1.62z\"/><path fill=\"currentColor\" d=\"m18.2 15-3.63-7.71q0.107 1.12 0.107 1.8v5.9h-1.55v-10h1.99l3.69 7.77q-0.107-1.07-0.107-1.95v-5.82h1.55v10z\"/>`,\n logIcon: svg`<path fill=\"currentColor\" d=\"M9,7H11V15H15V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />`,\n reportIcon: svg`<path fill=\"currentColor\" d=\"M9,7H13A2,2 0 0,1 15,9V11C15,11.84 14.5,12.55 13.76,12.85L15,17H13L11.8,13H11V17H9V7M11,9V11H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,16.41 7.58,20 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />`,\n smvIcon: svg`<path fill=\"currentColor\" d=\"M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />`,\n};\n\nexport const gooseIcon = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">${pathsSVG['gooseIcon']}</svg>`;\n\nexport const reportIcon = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">${pathsSVG['reportIcon']}</svg>`;\n\nexport const smvIcon = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">${pathsSVG['smvIcon']}</svg>`;\n\nexport const logIcon = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">${pathsSVG['logIcon']}</svg>`;\n\nexport const controlBlockIcons: Partial<Record<string, SVGTemplateResult>> = {\n ReportControl: reportIcon,\n LogControl: logIcon,\n GSEControl: gooseIcon,\n SampledValueControl: smvIcon,\n};\n\nexport const inputIcon = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M14,12L10,8V11H2V13H10V16M20,18V6C20,4.89 19.1,4 18,4H6A2,2 0 0,0 4,6V9H6V6H18V18H6V15H4V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18Z\" />\n</svg>`;\n\nexport const clientIcon = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M21,14V4H3V14H21M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H14L16,21V22H8V21L10,18H3C1.89,18 1,17.1 1,16V4C1,2.89 1.89,2 3,2H21M4,5H15V10H4V5M16,5H20V7H16V5M20,8V13H16V8H20M4,11H9V13H4V11M10,11H15V13H10V11Z\" />\n</svg>`;\n\nexport const disconnect = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3.88,13.46L2.46,14.88L4.59,17L2.46,19.12L3.88,20.54L6,18.41L8.12,20.54L9.54,19.12L7.41,17L9.54,14.88L8.12,13.46L6,15.59L3.88,13.46M14,15H20V19H14V15Z\" />\n</svg>`;\n\nexport type iconProperty = {\n width: number;\n height: number;\n};\n\nexport const iconProperties: Partial<Record<iconType, iconProperty>> = {\n dAIcon: {\n width: 26.5,\n height: 24,\n },\n dOIcon: {\n width: 26.5,\n height: 24,\n },\n enumIcon: {\n width: 26.5,\n height: 24,\n },\n lNIcon: {\n width: 26.5,\n height: 24,\n },\n};\n\nexport const dataTypeTemplateIcons: Partial<Record<string, SVGTemplateResult>> =\n {\n DAType: getIcon('dAIcon'),\n DOType: getIcon('dOIcon'),\n EnumType: getIcon('enumIcon'),\n LNodeType: getIcon('lNIcon'),\n };\n\nexport const iconColors: { [key: string]: string } = {\n info: '--cyan',\n warning: '--yellow',\n error: '--red',\n action: '--blue',\n};\n\nexport function getIcon(type: iconType): TemplateResult {\n if (type === 'reset') return html``;\n const height = iconProperties[type]?.height ?? 24;\n const width = iconProperties[type]?.width ?? 24;\n return html`<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"${height}\"\n viewBox=\"0 0 ${width} ${height}\"\n width=\"${width}\"\n >\n ${pathsSVG[type]}\n </svg> `;\n}\n\nexport function getFilterIcon(type: iconType, state: boolean): TemplateResult {\n if (type === 'reset') return html``;\n const height = iconProperties[type]?.height ?? 24;\n const width = iconProperties[type]?.width ?? 24;\n return html`<svg\n slot=\"${state ? 'onIcon' : 'offIcon'}\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"${height}\"\n viewBox=\"0 0 ${width} ${height}\"\n width=\"${width}\"\n >\n ${pathsSVG[type]}\n </svg> `;\n}\n\nexport const networkConfigIcon = html`<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n slot=\"icon\"\n width=\"25px\"\n height=\"25px\"\n style=\"margin-bottom:0px;\"\n>\n <rect\n width=\"8\"\n height=\"8\"\n x=\"8.5\"\n y=\"2\"\n rx=\"1\"\n ry=\"1\"\n fill=\"transparent\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n <rect\n width=\"8\"\n height=\"8\"\n x=\"2.5\"\n y=\"15\"\n rx=\"1\"\n ry=\"1\"\n fill=\"transparent\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n <rect\n width=\"8\"\n height=\"8\"\n x=\"15\"\n y=\"15\"\n rx=\"1\"\n ry=\"1\"\n fill=\"transparent\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n\n <line\n x1=\"2\"\n y1=\"12.5\"\n x2=\"23\"\n y2=\"12.5\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-width=\"1.5\"\n />\n <line\n x1=\"12.5\"\n y1=\"10\"\n x2=\"12.5\"\n y2=\"12.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n <line\n x1=\"6.5\"\n y1=\"12.5\"\n x2=\"6.5\"\n y2=\"15\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n <line\n x1=\"19\"\n y1=\"12.5\"\n x2=\"19\"\n y2=\"15\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n</svg>`;\n\nexport const zeroLineIcon = html`<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n slot=\"icon\"\n viewBox=\"0 0 25 25\"\n>\n <path\n d=\"M 2 9 L 12.5 2 L 23 9 L 21 9 L 21 21 L 4 21 L 4 9 Z\"\n fill=\"transparent\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M 11 7 L 17.5 7 L 13.5 11 L 16.5 11 L 10 19 L 11.5 13 L 8.5 13 Z \"\n fill=\"currentColor\"\n />\n</svg>`;\n\nexport const voltageLevelIcon = html`<svg\n id=\"Laag_1\"\n data-name=\"Laag 1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n>\n <defs>\n <style>\n .cls-1 {\n fill: currentColor;\n }\n\n .cls-1,\n .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: currentColor;\n opacity: 0;\n }\n </style>\n </defs>\n <path\n class=\"cls-1\"\n d=\"M11.13,20.06L3.63,6.93c-.27-.48-.11-1.09.37-1.36h0c.48-.27,1.09-.11,1.36.37l6.64,11.61,6.64-11.61c.27-.48.88-.65,1.36-.37h0c.48.27.65.88.37,1.36l-7.5,13.13c-.38.67-1.35.67-1.74,0Z\"\n />\n <rect class=\"cls-2\" width=\"24\" height=\"24\" />\n</svg>`;\n\nexport const bayIcon = html`<svg\n id=\"Laag_1\"\n data-name=\"Laag 1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n>\n <defs>\n <style>\n .cls-1 {\n fill: currentColor;\n stroke-width: 0px;\n }\n </style>\n </defs>\n <path\n class=\"cls-1\"\n d=\"M7.75,8c0-.41-.34-.75-.75-.75s-.75.34-.75.75v1.5h-1.25c0,.84.52,1.55,1.25,1.85v8.65h1.5v-8.65c.73-.3,1.25-1.01,1.25-1.85h-1.25v-1.5Z\"\n />\n <path\n class=\"cls-1\"\n d=\"M12.75,8c0-.41-.34-.75-.75-.75s-.75.34-.75.75v1.5h-1.25c0,.84.52,1.55,1.25,1.85v8.65h1.5v-8.65c.73-.3,1.25-1.01,1.25-1.85h-1.25v-1.5Z\"\n />\n <path\n class=\"cls-1\"\n d=\"M17.75,8c0-.41-.34-.75-.75-.75s-.75.34-.75.75v1.5h-1.25c0,.84.52,1.55,1.25,1.85v8.65h1.5v-8.65c.73-.3,1.25-1.01,1.25-1.85h-1.25v-1.5Z\"\n />\n <path\n class=\"cls-1\"\n d=\"M20,4H4c-1.1,0-2,.9-2,2v4c0,1.1.9,2,2,2v-6h16v6c1.1,0,2-.9,2-2v-4c0-1.1-.9-2-2-2Z\"\n />\n</svg>`;\n\nexport const disconnectorIcon = html`<svg\n id=\"Laag_1\"\n data-name=\"Laag 1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n>\n <defs>\n <style>\n .cls-1 {\n fill: currentColor;\n }\n\n .cls-1,\n .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: #fff;\n opacity: 0;\n }\n </style>\n </defs>\n <g>\n <path\n class=\"cls-1\"\n d=\"M12.71,15.29l-6.79-6.79c-.39-.39-1.02-.39-1.41,0-.39.39-.39,1.02,0,1.41l6.5,6.5v4.59c0,.55.45,1,1,1s1-.45,1-1v-5c0-.13-.03-.26-.08-.38-.05-.12-.12-.23-.22-.33Z\"\n />\n <path\n class=\"cls-1\"\n d=\"M14,6h-1v-3c0-.55-.45-1-1-1s-1,.45-1,1v3h-1c-.55,0-1,.45-1,1s.45,1,1,1h4c.55,0,1-.45,1-1s-.45-1-1-1Z\"\n />\n </g>\n <rect class=\"cls-2\" width=\"24\" height=\"24\" />\n</svg>`;\n\nexport const circuitBreakerIcon = html`<svg\n id=\"Laag_1\"\n data-name=\"Laag 1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n>\n <defs>\n <style>\n .cls-1 {\n fill: currentColor;\n }\n\n .cls-1,\n .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: #fff;\n opacity: 0;\n }\n </style>\n </defs>\n <g>\n <path\n class=\"cls-1\"\n d=\"M12.71,15.29l-6.79-6.79c-.39-.39-1.02-.39-1.41,0-.39.39-.39,1.02,0,1.41l6.5,6.5v4.59c0,.55.45,1,1,1s1-.45,1-1v-5c0-.13-.03-.26-.08-.38-.05-.12-.12-.23-.22-.33Z\"\n />\n <path\n class=\"cls-1\"\n d=\"M13.41,7l1.29-1.29c.39-.39.39-1.02,0-1.41s-1.02-.39-1.41,0l-1.29,1.29-1.29-1.29c-.39-.39-1.02-.39-1.41,0s-.39,1.02,0,1.41l1.29,1.29-1.29,1.29c-.39.39-.39,1.02,0,1.41.2.2.45.29.71.29s.51-.1.71-.29l1.29-1.29,1.29,1.29c.2.2.45.29.71.29s.51-.1.71-.29c.39-.39.39-1.02,0-1.41l-1.29-1.29Z\"\n />\n </g>\n <rect class=\"cls-2\" width=\"24\" height=\"24\" />\n</svg>`;\n\nexport const currentTransformerIcon = html`<svg\n id=\"Laag_1\"\n data-name=\"Laag 1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n>\n <defs>\n <style>\n .cls-1 {\n fill: currentColor;\n }\n\n .cls-1,\n .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: #fff;\n opacity: 0;\n }\n </style>\n </defs>\n <path\n class=\"cls-1\"\n d=\"M19,12c0-3.53-2.61-6.43-6-6.92v-2.08c0-.55-.45-1-1-1s-1,.45-1,1v2.08c-3.39.49-6,3.39-6,6.92s2.61,6.43,6,6.92v2.08c0,.55.45,1,1,1s1-.45,1-1v-2.08c3.39-.49,6-3.39,6-6.92ZM7,12c0-2.42,1.72-4.44,4-4.9v9.8c-2.28-.46-4-2.48-4-4.9ZM13,16.9V7.1c2.28.46,4,2.48,4,4.9s-1.72,4.44-4,4.9Z\"\n />\n <rect class=\"cls-2\" width=\"24\" height=\"24\" />\n</svg>`;\n\nexport const voltageTransformerIcon = html`<svg\n id=\"Laag_1\"\n data-name=\"Laag 1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n>\n <defs>\n <style>\n .cls-1 {\n fill: currentColor;\n }\n\n .cls-1,\n .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: #fff;\n opacity: 0;\n }\n </style>\n </defs>\n <path\n class=\"cls-1\"\n d=\"M17,10c0-2.42-1.72-4.44-4-4.9v-2.1s0-1-1-1-1,1-1,1v2.1c-2.28.46-4,2.48-4,4.9,0,.71.15,1.39.42,2-.27.61-.42,1.29-.42,2,0,2.42,1.72,4.44,4,4.9v1.1h-1c-.55,0-1,.45-1,1s.45,1,1,1h4c.55,0,1-.45,1-1s-.45-1-1-1h-1v-1.1c2.28-.46,4-2.48,4-4.9,0-.71-.15-1.39-.42-2,.27-.61.42-1.29.42-2ZM12,7c1.66,0,3,1.34,3,3,0,0,0,.01,0,.02-.84-.63-1.87-1.02-3-1.02s-2.16.39-3,1.02c0,0,0-.01,0-.02,0-1.66,1.34-3,3-3ZM14.22,12c-.55.61-1.34,1-2.22,1s-1.67-.39-2.22-1c.55-.61,1.34-1,2.22-1s1.67.39,2.22,1ZM12,17c-1.66,0-3-1.34-3-3,0,0,0-.01,0-.02.84.63,1.87,1.02,3,1.02s2.16-.39,3-1.02c0,0,0,.01,0,.02,0,1.66-1.34,3-3,3Z\"\n />\n <rect class=\"cls-2\" width=\"24\" height=\"24\" />\n</svg>`;\n\nexport const earthSwitchIcon = html`<svg\n id=\"Laag_1\"\n data-name=\"Laag 1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n>\n <defs>\n <style>\n .cls-1 {\n fill: currentColor;\n }\n\n .cls-1,\n .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: #fff;\n opacity: 0;\n }\n </style>\n </defs>\n <g>\n <path\n class=\"cls-1\"\n d=\"M13,20h-2c-.55,0-1,.45-1,1s.45,1,1,1h2c.55,0,1-.45,1-1s-.45-1-1-1Z\"\n />\n <path\n class=\"cls-1\"\n d=\"M15,16h-2v-5c0-.13-.03-.26-.08-.38-.05-.12-.12-.23-.22-.33L5.91,3.5c-.39-.39-1.02-.39-1.41,0-.39.39-.39,1.02,0,1.41l6.5,6.5v4.59h-2c-.55,0-1,.45-1,1s.45,1,1,1h6c.55,0,1-.45,1-1s-.45-1-1-1Z\"\n />\n <path\n class=\"cls-1\"\n d=\"M10,4h4c.55,0,1-.45,1-1s-.45-1-1-1h-4c-.55,0-1,.45-1,1s.45,1,1,1Z\"\n />\n </g>\n <rect class=\"cls-2\" width=\"24\" height=\"24\" />\n</svg>`;\n\nexport const generalConductingEquipmentIcon = html`<svg\n id=\"Laag_1\"\n data-name=\"Laag 1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n>\n <defs>\n <style>\n .cls-1 {\n fill: currentColor;\n stroke-width: 0px;\n }\n </style>\n </defs>\n <path\n class=\"cls-1\"\n d=\"M20.41,3.59c-.78-.78-2.05-.78-2.83,0-.59.59-.73,1.47-.43,2.19l-1.49,1.49c-1.02-.79-2.29-1.27-3.67-1.27-3.31,0-6,2.69-6,6,0,1.38.48,2.66,1.27,3.67l-1.49,1.49c-.73-.31-1.6-.17-2.19.43-.78.78-.78,2.05,0,2.83.78.78,2.05.78,2.83,0,.59-.59.73-1.47.43-2.19l1.49-1.49c1.02.79,2.29,1.27,3.67,1.27,3.31,0,6-2.69,6-6,0-1.38-.48-2.66-1.27-3.67l1.49-1.49c.73.31,1.6.17,2.19-.43.78-.78.78-2.05,0-2.83ZM12,16c-2.21,0-4-1.79-4-4s1.79-4,4-4,4,1.79,4,4-1.79,4-4,4Z\"\n />\n</svg>`;\n\nexport const connectivityNodeIcon = html`<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <circle\n stroke=\"currentColor\"\n fill=\"currentColor\"\n stroke-width=\"1\"\n cx=\"12.5\"\n cy=\"12.5\"\n r=\"5\"\n />\n</svg>`;\n\nexport const powerTransformerTwoWindingIcon = html`<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 25 25\"\n>\n <line\n x1=\"12.5\"\n y1=\"2\"\n x2=\"12.5\"\n y2=\"5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n <circle\n cx=\"12.5\"\n cy=\"10\"\n r=\"5\"\n stroke=\"currentColor\"\n fill=\"transparent\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n <circle\n cx=\"12.5\"\n cy=\"15\"\n r=\"5\"\n stroke=\"currentColor\"\n fill=\"transparent\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n <line\n x1=\"12.5\"\n y1=\"20\"\n x2=\"12.5\"\n y2=\"23\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n</svg>`;\n\nexport const openSCDIcon = html` <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"width:100px;height:100px\"\n viewBox=\"0 0 25 25\"\n>\n <path\n d=\"M 2 9 L 12.5 2 L 23 9 L 21 9 L 21 21 L 4 21 L 4 9 Z\"\n fill=\"#eee8d5\"\n stroke=\"#6c71c4\"\n stroke-width=\"2\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M 11 7 L 17.5 7 L 13.5 11 L 16.5 11 L 10 19 L 11.5 13 L 8.5 13 Z \"\n fill=\"#2aa198\"\n />\n</svg>`;\n\nexport const sizableSmvIcon = svg`\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n </svg>`;\n\nexport const sizableGooseIcon = svg`<svg viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M11,7H15V9H11V15H13V11H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const substationIcon = svg`<svg id=\"Laag_1\" data-name=\"Laag 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n<defs>\n <style>\n .cls-1 {\n fill: currentColor;\n }\n\n .cls-1, .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: currentColor;\n opacity: 0;\n }\n </style>\n</defs>\n<g>\n <path class=\"cls-1\" d=\"M19.3,7.94l-6-5.14c-.75-.64-1.85-.65-2.6,0l-6,5.14c-.44.38-.7.93-.7,1.52v9.54c0,1.1.9,2,2,2h12c1.1,0,2-.9,2-2v-9.54c0-.58-.25-1.14-.7-1.52ZM18,19H6v-9.54l6-5.14,6,5.14v9.54Z\"/>\n <path class=\"cls-1\" d=\"M11.57,7.74l-3,5c-.09.15-.09.35,0,.5.09.16.26.25.44.25h2v3.5c0,.22.15.42.37.48.04.01.09.02.13.02.17,0,.34-.09.43-.24l3-5c.09-.15.09-.35,0-.5-.09-.16-.26-.25-.44-.25h-2v-3.5c0-.22-.15-.42-.37-.48-.22-.06-.45.03-.56.22Z\"/>\n</g>\n<rect class=\"cls-2\" y=\"0\" width=\"24\" height=\"24\"/>\n</svg>`;\nexport const lineIcon = svg`<svg id=\"Laag_1\" data-name=\"Laag 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n<defs>\n <style>\n .cls-1 {\n fill: currentColor;\n }\n\n .cls-1, .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: currentColor;\n opacity: 0;\n }\n </style>\n</defs>\n<path class=\"cls-1\" d=\"M14.39,11.93l-1.39.58v-1.84l2.15-.89c.51-.21.75-.8.54-1.31-.21-.51-.8-.75-1.31-.54l-1.39.58V3c0-.55-.45-1-1-1s-1,.45-1,1v6.33l-2.15.89c-.51.21-.75.8-.54,1.31.21.51.8.75,1.31.54l1.39-.58v1.84l-2.15.89c-.51.21-.75.8-.54,1.31.21.51.8.75,1.31.54l1.39-.58v5.5c0,.55.45,1,1,1s1-.45,1-1v-6.33l2.15-.89c.51-.21.75-.8.54-1.31-.21-.51-.8-.75-1.31-.54Z\"/>\n<rect class=\"cls-2\" width=\"24\" height=\"24\"/>\n</svg>`;\nexport const processIcon = svg`<svg id=\"Laag_1\" data-name=\"Laag 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n<defs>\n <style>\n .cls-1 {\n fill: currentColor;\n }\n\n .cls-1, .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: currentColor;\n opacity: 0;\n }\n </style>\n</defs>\n<path class=\"cls-1\" d=\"M18.71,15.29c-.39-.39-1.02-.39-1.41,0s-.39,1.02,0,1.41l.29.29h-5.59c0-1.1-.9-2-2-2h-2c-1.01,0-1.84.76-1.97,1.74-.61-.34-1.03-.99-1.03-1.74,0-1.1.9-2,2-2h5c0,1.1.9,2,2,2h2c1.1,0,2-.9,2-2v-.14c1.72-.45,3-2,3-3.86,0-2.21-1.79-4-4-4h-5c0-1.1-.9-2-2-2h-2c-1.1,0-2,.9-2,2h-2c-.55,0-1,.45-1,1s.45,1,1,1h2c0,1.1.9,2,2,2h2c1.1,0,2-.9,2-2h5c1.1,0,2,.9,2,2,0,.75-.42,1.39-1.03,1.74-.13-.98-.96-1.74-1.97-1.74h-2c-1.1,0-2,.9-2,2h-5c-2.21,0-4,1.79-4,4,0,1.86,1.28,3.41,3,3.86v.14c0,1.1.9,2,2,2h2c1.1,0,2-.9,2-2h5.59l-.29.29c-.39.39-.39,1.02,0,1.41.2.2.45.29.71.29s.51-.1.71-.29l2-2c.39-.39.39-1.02,0-1.41l-2-2ZM8,7v-2h2v2s-2,0-2,0ZM14,11h2v2s-2,0-2,0v-2ZM8,19v-2h2v2s-2,0-2,0Z\"/>\n<rect class=\"cls-2\" y=\"0\" width=\"24\" height=\"24\"/>\n</svg>`;\n\nexport const transformerWindingIcon = svg`<svg id=\"Laag_1\" data-name=\"Laag 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n<defs>\n <style>\n .cls-1 {\n fill: currentColor;\n }\n\n .cls-1, .cls-2 {\n stroke-width: 0px;\n }\n\n .cls-2 {\n fill: currentColor;\n opacity: 0;\n }\n </style>\n</defs>\n<g>\n <path class=\"cls-1\" d=\"M19,20h-2c-1.21,0-2.18-1.09-1.97-2.34.16-.98,1.09-1.66,2.08-1.66h-.11c.55,0,1-.45,1-1s-.42-.96-.95-.99c.04,0,.08-.01.12-.01h-.17c-1.21,0-2.18-1.09-1.97-2.34.16-.98,1.09-1.66,2.08-1.66h-.11c.55,0,1-.45,1-1s-.42-.96-.95-.99c.04,0,.08-.01.12-.01h-.17c-1.21,0-2.18-1.09-1.97-2.34.16-.98,1.09-1.66,2.08-1.66h1.89c.55,0,1-.45,1-1s-.45-1-1-1h-1.83c-2.09,0-3.95,1.53-4.15,3.61-.13,1.37.44,2.59,1.38,3.41-.76.64-1.28,1.55-1.38,2.59-.13,1.37.44,2.59,1.38,3.41-.76.64-1.28,1.55-1.38,2.59-.23,2.39,1.64,4.39,3.98,4.39h2c.55,0,1-.45,1-1s-.45-1-1-1Z\"/>\n <path class=\"cls-1\" d=\"M10.98,6.39c.23-2.39-1.64-4.39-3.98-4.39h-2c-.55,0-1,.45-1,1s.45,1,1,1h2c1.21,0,2.18,1.09,1.97,2.34-.16.98-1.09,1.66-2.08,1.66h.11c-.55,0-1,.45-1,1s.42.96.95.99c-.04,0-.08.01-.12.01h.17c1.21,0,2.18,1.09,1.97,2.34-.16.98-1.09,1.66-2.08,1.66h.11c-.55,0-1,.45-1,1,0,.28.11.53.29.71.17.17.4.27.65.28h0s.03.01.05.01c1.21,0,2.18,1.09,1.97,2.34-.16.98-1.09,1.66-2.08,1.66h-1.89c-.55,0-1,.45-1,1s.45,1,1,1h1.83c2.09,0,3.95-1.53,4.15-3.61.13-1.37-.44-2.59-1.38-3.41.76-.64,1.28-1.55,1.38-2.59.13-1.37-.44-2.59-1.38-3.41.76-.64,1.28-1.55,1.38-2.59Z\"/>\n <path class=\"cls-1\" d=\"M6.83,16h.17s-.03,0-.05-.01c-.04,0-.08.01-.12.01Z\"/>\n</g>\n<rect class=\"cls-2\" width=\"24\" height=\"24\"/>\n</svg>`;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ied-icons.js","sourceRoot":"","sources":["../../../src/icons/ied-icons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA;;OAE3B,CAAC;AAER,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;;OAEtB,CAAC;AAER,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAA;;OAE7B,CAAC","sourcesContent":["import { svg } from \"lit-element\";\n\nexport const accessPointIcon = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M4.93,4.93C3.12,6.74 2,9.24 2,12C2,14.76 3.12,17.26 4.93,19.07L6.34,17.66C4.89,16.22 4,14.22 4,12C4,9.79 4.89,7.78 6.34,6.34L4.93,4.93M19.07,4.93L17.66,6.34C19.11,7.78 20,9.79 20,12C20,14.22 19.11,16.22 17.66,17.66L19.07,19.07C20.88,17.26 22,14.76 22,12C22,9.24 20.88,6.74 19.07,4.93M7.76,7.76C6.67,8.85 6,10.35 6,12C6,13.65 6.67,15.15 7.76,16.24L9.17,14.83C8.45,14.11 8,13.11 8,12C8,10.89 8.45,9.89 9.17,9.17L7.76,7.76M16.24,7.76L14.83,9.17C15.55,9.89 16,10.89 16,12C16,13.11 15.55,14.11 14.83,14.83L16.24,16.24C17.33,15.15 18,13.65 18,12C18,10.35 17.33,8.85 16.24,7.76M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z\" />\n</svg>`;\n\nexport const serverIcon = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H4A1,1 0 0,1 3,6V2A1,1 0 0,1 4,1M4,9H20A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9M4,17H20A1,1 0 0,1 21,18V22A1,1 0 0,1 20,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17M9,5H10V3H9V5M9,13H10V11H9V13M9,21H10V19H9V21M5,3V5H7V3H5M5,11V13H7V11H5M5,19V21H7V19H5Z\" />\n</svg>`;\n\nexport const logicalDeviceIcon = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M13,13H18V15H13M13,9H18V11H13M6.91,7.41L11.5,12L6.91,16.6L5.5,15.18L8.68,12L5.5,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z\" />\n</svg>`;"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lnode.js","sourceRoot":"","sources":["../../../src/icons/lnode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAA;;OAE7B,CAAC;AAER,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;OAEjC,CAAC;AAER,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;;OAE9B,CAAC;AAER,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;OAEjC,CAAC;AAER,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;;OAE9B,CAAC;AAER,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;;OAElC,CAAC;AAER,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAA;;OAEpC,CAAC;AAER,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;;OAElC,CAAC;AAER,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;OAEjC,CAAC;AAER,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;;OAE9B,CAAC;AAER,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAA;;OAExC,CAAC;AAER,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;;OAElC,CAAC;AAER,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;;OAElC,CAAC;AAER,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;OAEjC,CAAC;AAER,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAA;;OAEvC,CAAC;AAER,MAAM,CAAC,MAAM,sCAAsC,GAAG,GAAG,CAAA;;OAElD,CAAC","sourcesContent":["import { svg } from 'lit-element';\n\nexport const systemLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M9,7H11V15H15V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const automationLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M11,7H13A2,2 0 0,1 15,9V17H13V13H11V17H9V9A2,2 0 0,1 11,7M11,9V11H13V9H11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z\" />\n</svg>`;\n\nexport const controlLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M11,7H13A2,2 0 0,1 15,9V10H13V9H11V15H13V14H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const functionalLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M9,7H15V9H11V11H14V13H11V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const generalLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M11,7H15V9H11V15H13V11H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const interfacingLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M14,7V9H13V15H14V17H10V15H11V9H10V7H14M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const nonElectricalLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M9,7H11V10.33L13,7H15L12,12L15,17H13L11,13.67V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const measurementLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M9,7H15A2,2 0 0,1 17,9V17H15V9H13V16H11V9H9V17H7V9A2,2 0 0,1 9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const protectionLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M9,7H13A2,2 0 0,1 15,9V11A2,2 0 0,1 13,13H11V17H9V7M11,9V11H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const qualityLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17V19H11V17A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z\" />\n</svg>`;\n\nexport const protectionRelatedLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M9,7H13A2,2 0 0,1 15,9V11C15,11.84 14.5,12.55 13.76,12.85L15,17H13L11.8,13H11V17H9V7M11,9V11H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,16.41 7.58,20 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const supervisionLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const transformerLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M9,7H15V9H13V17H11V9H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const switchgearLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M9,7H11L12,9.5L13,7H15L13,12L15,17H13L12,14.5L11,17H9L11,12L9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const powerTransformerLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M9,7H11L12,10L13,7H15L13,13V17H11V13L9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const furtherPowerSystemEquipmentLogicalNode = svg`<svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M9,7H15V9L11,15H15V17H9V15L13,9H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n"]}
|
package/dist/src/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAC5B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,yBAAyB,CAAC;AACjC,OAAO,eAAe,CAAC;AACvB,OAAO,0BAA0B,CAAA;AAEjC,mBAAmB;AACnB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,gBAAgB;AAChB,OAAO,EAEL,iBAAiB,EAEjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAE7B,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAS,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EACL,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAAE,uBAAuB,EAAwB,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,uBAAuB;AACvB,cAAc,iBAAiB,CAAC;AAEhC,eAAe;AACf,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEpD,aAAa;AACb,OAAO,oBAAoB,CAAC;AAC5B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAA6B,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAa,UAAU,EAAQ,MAAM,kBAAkB,CAAC;AAE/D,UAAU;AACV,OAAO,EAAE,WAAW,EAAQ,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,SAAS;AACT,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GAKnB,MAAM,cAAc,CAAC;AAEtB,eAAe;AACf,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAG,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAE,+BAA+B,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,eAAe;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC","sourcesContent":["import './addons/Waiter.js';\nimport './addons/Settings.js';\nimport './addons/History.js';\nimport './addons/Editor.js';\nimport './addons/Wizards.js';\nimport './action-pane.js';\nimport './action-icon.js';\nimport './plain-compare-list.js';\nimport './open-scd.js';\nimport '../test/mock-open-scd.js'\n\n// Export all icons\nexport * from './icons/lnode.js';\nexport * from './icons/icons.js';\nexport {\n accessPointIcon,\n logicalDeviceIcon,\n serverIcon,\n} from './icons/ied-icons.js';\n\n// History addon\nexport {\n HistoryState,\n historyStateEvent,\n HistoryUIDetail,\n OscdHistory,\n} from './addons/History.js';\n\n// Layout addon\nexport { OscdLayout } from './addons/Layout.js';\n\nexport { initializeNsdoc, Nsdoc } from './foundation/nsdoc.js';\nexport {\n iec6185073,\n iec6185081,\n iec6185074,\n} from './foundation/nsd.js';\n\n// Plugin system\nexport {\n InstalledOfficialPlugin,\n Plugin,\n MenuPosition,\n PluginKind\n} from './plugin.js';\nexport { newConfigurePluginEvent, ConfigurePluginEvent } from './plugin.events.js';\nexport { pluginTag } from './plugin-tag.js';\n\n// Foundation utilities\nexport * from './foundation.js';\n\n// Translations\nexport { de as oscdDe } from './translations/de.js';\nexport { en as oscdEn } from './translations/en.js';\n\n// Components\nimport './filtered-list.js';\nimport './wizard-textfield.js';\nexport { WizardTextField } from './wizard-textfield.js';\nexport { FilterButton, SelectedItemsChangedEvent } from './oscd-filter-button.js';\nexport { Directory, FinderList, Path } from './finder-list.js';\n\n// Wizards\nexport { mergeWizard, Diff } from './wizards.js';\nexport { OscdWizards } from './addons/Wizards.js';\nexport { Wizarding } from './Wizarding.js';\nexport { WizardDialog } from './wizard-dialog.js';\nexport { WizardSelect } from './wizard-select.js';\nexport { WizardCheckbox } from './wizard-checkbox.js';\n\n// Schema\nexport {\n SCL_NAMESPACE,\n isSCLNamespace,\n newEmptySCD,\n getSchema,\n isLoadSchemaResult,\n isValidationError,\n isValidationResult,\n SupportedVersion,\n ValidationResult,\n Validator,\n WorkerMessage,\n} from './schemas.js';\n\n// Translations\nexport { de } from './translations/de.js';\nexport { en } from './translations/en.js';\n\nexport { determineUninitializedStructure, initializeElements } from './foundation/dai.js';\nexport { getFcdaReferences } from './foundation/ied.js';\nexport { DiffFilter } from './foundation/compare.js';\n\n// Test helpers\nexport { MockWizardEditor } from '../test/mock-wizard-editor.js';\n"]}
|
package/dist/src/open-scd.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"open-scd.js","sourceRoot":"","sources":["../../src/open-scd.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n customElement,\n html,\n LitElement,\n property,\n state,\n TemplateResult,\n} from 'lit-element';\nimport { classMap } from 'lit-html/directives/class-map';\n\nimport '@material/mwc-icon';\nimport '@material/mwc-icon-button';\nimport '@material/mwc-linear-progress';\nimport '@material/mwc-list';\nimport '@material/mwc-list/mwc-list-item';\nimport '@material/mwc-tab';\nimport '@material/mwc-tab-bar';\nimport '@material/mwc-top-app-bar-fixed';\nimport '@material/mwc-drawer';\nimport '@material/mwc-button';\nimport '@material/mwc-dialog';\nimport '@material/mwc-formfield';\nimport '@material/mwc-list/mwc-check-list-item';\nimport '@material/mwc-list/mwc-radio-list-item';\nimport '@material/mwc-select';\nimport '@material/mwc-switch';\nimport '@material/mwc-textfield';\n\nimport { newOpenDocEvent, newPendingStateEvent } from '@compas-oscd/core';\n\nimport './addons/Settings.js';\nimport './addons/Waiter.js';\nimport './addons/Wizards.js';\nimport './addons/Editor.js';\nimport './addons/History.js';\nimport './addons/Layout.js';\n\nimport { ActionDetail } from '@material/mwc-list';\n\nimport { officialPlugins as builtinPlugins } from './plugins.js';\nimport { initializeNsdoc, Nsdoc } from './foundation/nsdoc.js';\nimport { OscdApi, XMLEditor, newLogEvent } from '@compas-oscd/core';\nimport type {\n PluginSet,\n Plugin as CorePlugin,\n} from '@compas-oscd/core';\n\nimport { InstalledOfficialPlugin, MenuPosition, PluginKind, Plugin } from \"./plugin.js\"\nimport { ConfigurePluginEvent, newConfigurePluginEvent } from './plugin.events.js';\nimport { pluginTag } from './plugin-tag.js';\n\n\n\n/** The `<open-scd>` custom element is the main entry point of the\n * Open Substation Configuration Designer. */\n@customElement('open-scd')\nexport class OpenSCD extends LitElement {\n\n render(): TemplateResult {\n return html`<oscd-waiter>\n <oscd-settings .host=${this}>\n <oscd-wizards .host=${this}>\n <oscd-history\n .host=${this}\n .editor=${this.editor}\n >\n <oscd-editor\n .doc=${this.doc}\n .docName=${this.docName}\n .docId=${this.docId}\n .host=${this}\n .editCount=${this.editCount}\n .editor=${this.editor}\n >\n <oscd-layout\n @add-external-plugin=${this.handleAddExternalPlugin}\n @oscd-configure-plugin=${this.handleConfigurationPluginEvent}\n @set-plugins=${ (e: SetPluginsEvent) => this.setPlugins(e.detail.selectedPlugins) }\n .host=${this}\n .doc=${this.doc}\n .docName=${this.docName}\n .editCount=${this.editCount}\n .plugins=${this.storedPlugins}\n .editor=${this.editor}\n >\n </oscd-layout>\n </oscd-editor>\n </oscd-history>\n </oscd-wizards>\n </oscd-settings>\n </oscd-waiter>`;\n }\n\n\n @property({ attribute: false })\n doc: XMLDocument | null = null;\n /** The name of the current [[`doc`]] */\n @property({ type: String }) docName = '';\n /** The UUID of the current [[`doc`]] */\n @property({ type: String }) docId = '';\n\n editor = new XMLEditor();\n\n /** Object containing all *.nsdoc files and a function extracting element's label form them*/\n @property({ attribute: false })\n nsdoc: Nsdoc = initializeNsdoc();\n\n private currentSrc = '';\n /** The current file's URL. `blob:` URLs are *revoked after parsing*! */\n @property({ type: String })\n get src(): string {\n return this.currentSrc;\n }\n\n set src(value: string) {\n this.currentSrc = value;\n this.dispatchEvent(newPendingStateEvent(this.loadDoc(value)));\n }\n\n @state() private storedPlugins: Plugin[] = [];\n\n @state() private editCount = -1;\n\n private unsubscribers: (() => any)[] = [];\n\n /** Loads and parses an `XMLDocument` after [[`src`]] has changed. */\n private async loadDoc(src: string): Promise<void> {\n const response = await fetch(src);\n const text = await response.text();\n if (!text) return;\n\n const doc = new DOMParser().parseFromString(text, 'application/xml');\n const docName = src;\n this.dispatchEvent(newOpenDocEvent(doc, docName));\n\n if (src.startsWith('blob:')) URL.revokeObjectURL(src);\n }\n\n /**\n *\n * @deprecated Use `handleConfigurationPluginEvent` instead\n */\n public handleAddExternalPlugin(e: AddExternalPluginEvent){\n this.addExternalPlugin(e.detail.plugin);\n const {name, kind} = e.detail.plugin\n\n const event = newConfigurePluginEvent(name,kind, e.detail.plugin)\n\n this.handleConfigurationPluginEvent(event)\n }\n\n\n public handleConfigurationPluginEvent(e: ConfigurePluginEvent){\n const { name, kind, config } = e.detail;\n\n const hasPlugin = this.hasPlugin(name, kind);\n const hasConfig = config !== null;\n const isChangeEvent = hasPlugin && hasConfig;\n const isRemoveEvent = hasPlugin && !hasConfig;\n const isAddEvent = !hasPlugin && hasConfig;\n\n // the `&& config`is only because typescript\n // cannot infer that `isChangeEvent` and `isAddEvent` implies `config !== null`\n if(isChangeEvent && config){\n this.changePlugin(config);\n\n }else if(isRemoveEvent){\n this.removePlugin(name, kind);\n\n }else if(isAddEvent && config){\n this.addPlugin(config);\n\n }else{\n const event = newLogEvent({\n kind: \"error\",\n title: \"Invalid plugin configuration event\",\n message: JSON.stringify({name, kind, config}),\n });\n this.dispatchEvent(event);\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.loadPlugins();\n\n this.unsubscribers.push(\n this.editor.subscribe((_e: unknown) => this.editCount++),\n this.editor.subscribeUndoRedo((_e: unknown) => this.editCount++)\n );\n\n // TODO: let Lit handle the event listeners, move to render()\n this.addEventListener('reset-plugins', this.resetPlugins);\n }\n\n disconnectedCallback(): void {\n this.unsubscribers.forEach(u => u());\n }\n\n\n /**\n *\n * @param name\n * @param kind\n * @returns the index of the plugin in the stored plugin list\n */\n private findPluginIndex(name: string, kind: PluginKind): number {\n return this.storedPlugins.findIndex(p => p.name === name && p.kind === kind);\n }\n\n private hasPlugin(name: string, kind: PluginKind): boolean {\n return this.findPluginIndex(name, kind) > -1;\n }\n\n private removePlugin(name: string, kind: PluginKind) {\n const newPlugins = this.storedPlugins.filter(\n p => p.name !== name || p.kind !== kind\n );\n this.updateStoredPlugins(newPlugins);\n }\n\n private addPlugin(plugin: Plugin) {\n const newPlugins = [...this.storedPlugins, plugin];\n this.updateStoredPlugins(newPlugins);\n }\n\n /**\n *\n * @param plugin\n * @throws if the plugin is not found\n */\n private changePlugin(plugin: Plugin) {\n const storedPlugins = this.storedPlugins;\n const {name, kind} = plugin;\n const pluginIndex = this.findPluginIndex(name, kind);\n\n if(pluginIndex < 0) {\n const event = newLogEvent({\n kind: \"error\",\n title: \"Plugin not found, stopping change process\",\n message: JSON.stringify({name, kind}),\n })\n this.dispatchEvent(event);\n return;\n }\n\n const pluginToChange = storedPlugins[pluginIndex]\n const changedPlugin = {...pluginToChange, ...plugin}\n const newPlugins = [...storedPlugins]\n newPlugins.splice(pluginIndex, 1, changedPlugin)\n\n // this.storePlugins(newPlugins);\n this.updateStoredPlugins(newPlugins);\n }\n\n private resetPlugins(): void {\n const builtInPlugins = this.getBuiltInPlugins() ?? [];\n const parsedPlugins = this.parsedPlugins ?? [];\n const allPlugins = [...builtInPlugins, ...parsedPlugins];\n\n const newPluginConfigs = allPlugins.map(plugin => {\n return {\n ...plugin,\n active: plugin.activeByDefault ?? false,\n }\n })\n\n this.storePlugins(newPluginConfigs)\n }\n\n /**\n * @prop {PluginSet} plugins - Set of plugins that are used by OpenSCD\n */\n @property({ type: Object }) plugins: PluginSet = { menu: [], editor: [] };\n get parsedPlugins(): Plugin[] {\n const menuPlugins: Plugin[] = (this.plugins.menu ?? []).map((plugin: any) => {\n let newPosition: MenuPosition | undefined = plugin.position as MenuPosition;\n if(typeof plugin.position === 'number') {\n newPosition = undefined\n }\n\n return {\n ...plugin,\n position: newPosition,\n kind: 'menu' as PluginKind,\n active: plugin.active ?? false,\n }\n })\n\n const editorPlugins: Plugin[] = (this.plugins.editor ?? []).map((plugin: any) => {\n const editorPlugin: Plugin = {\n ...plugin,\n position: undefined,\n kind: 'editor' as PluginKind,\n active: plugin.active ?? false,\n }\n return editorPlugin\n })\n\n const allPlugnis = [...menuPlugins, ...editorPlugins]\n return allPlugnis\n }\n\n\n\n private updateStoredPlugins(newPlugins: Plugin[]) {\n //\n // Generate content of each plugin\n //\n const plugins = newPlugins.map(plugin => {\n const isInstalled = plugin.src && plugin.active\n if(!isInstalled) { return plugin }\n\n return this.addContent(plugin)\n })\n\n //\n // Merge built-in plugins\n //\n const mergedPlugins = plugins.map(plugin => {\n const isBuiltIn = !plugin?.official\n if (!isBuiltIn){ return plugin };\n\n const builtInPlugin = [...this.getBuiltInPlugins(), ...this.parsedPlugins]\n .find(p => p.src === plugin.src);\n\n return <Plugin>{\n ...builtInPlugin,\n ...plugin,\n };\n })\n this.storePlugins(mergedPlugins);\n }\n\n private storePlugins(plugins: Plugin[]) {\n this.storedPlugins = plugins\n const pluginConfigs = JSON.stringify(plugins.map(withoutContent))\n localStorage.setItem('plugins', pluginConfigs);\n }\n private getPluginConfigsFromLocalStorage(): Plugin[] {\n const pluginsConfigStr = localStorage.getItem('plugins') ?? '[]'\n return JSON.parse(pluginsConfigStr) as Plugin[]\n }\n\n\n protected get locale(): string {\n return navigator.language || 'en-US';\n }\n\n get docs(): Record<string, XMLDocument> {\n const docs: Record<string, XMLDocument> = {};\n\n if (this.doc) {\n docs[this.docName] = this.doc;\n }\n\n return docs;\n }\n\n private setPlugins(selectedPlugins: Plugin[]) {\n\n const newPlugins: Plugin[] = this.storedPlugins.map((storedPlugin) => {\n const isSelected = selectedPlugins.some( (selectedPlugin) => {\n return selectedPlugin.name === storedPlugin.name\n && selectedPlugin.src === storedPlugin.src\n })\n return {\n ...storedPlugin,\n active: isSelected\n }\n })\n\n this.updateStoredPlugins(newPlugins);\n }\n\n private loadPlugins(){\n const localPluginConfigs = this.getPluginConfigsFromLocalStorage()\n\n const overwritesOfBultInPlugins = localPluginConfigs.filter((p) => {\n return this.getBuiltInPlugins().some(b => b.src === p.src)\n })\n\n const userInstalledPlugins = localPluginConfigs.filter((p) => {\n return !this.getBuiltInPlugins().some(b => b.src === p.src)\n })\n const mergedBuiltInPlugins = this.getBuiltInPlugins().map((builtInPlugin) => {\n let overwrite = overwritesOfBultInPlugins.find(p => p.src === builtInPlugin.src)\n\n const mergedPlugin: Plugin = {\n ...builtInPlugin,\n ...overwrite,\n active: overwrite?.active ?? builtInPlugin.activeByDefault,\n }\n\n return mergedPlugin\n })\n\n const mergedPlugins = [...mergedBuiltInPlugins, ...userInstalledPlugins]\n\n this.updateStoredPlugins(mergedPlugins)\n }\n\n private async addExternalPlugin(\n plugin: Omit<Plugin, 'content'>\n ): Promise<void> {\n if (this.storedPlugins.some(p => p.src === plugin.src)) return;\n\n const newPlugins: Omit<Plugin, 'content'>[] = this.storedPlugins;\n newPlugins.push(plugin);\n this.storePlugins(newPlugins);\n }\n\n protected getBuiltInPlugins(): CorePlugin[] {\n return builtinPlugins\n }\n\n private addContent(plugin: Omit<Plugin, 'content'>): Plugin {\n const tag = this.pluginTag(plugin.src);\n\n if (!this.loadedPlugins.has(tag)) {\n this.loadedPlugins.add(tag);\n import(plugin.src).then((mod) => {\n customElements.define(tag, mod.default)\n })\n }\n return {\n ...plugin,\n content: () => {\n return staticTagHtml`<${tag}\n .doc=${this.doc}\n .docName=${this.docName}\n .editCount=${this.editCount}\n .plugins=${this.storedPlugins}\n .docId=${this.docId}\n .pluginId=${plugin.src}\n .nsdoc=${this.nsdoc}\n .docs=${this.docs}\n .locale=${this.locale}\n .oscdApi=${new OscdApi(tag)}\n .editor=${this.editor}\n class=\"${classMap({\n plugin: true,\n menu: plugin.kind === 'menu',\n validator: plugin.kind === 'validator',\n editor: plugin.kind === 'editor',\n })}\"\n ></${tag}>`\n },\n };\n }\n\n @state() private loadedPlugins = new Set<string>();\n\n // PLUGGING INTERFACES\n @state() private pluginTags = new Map<string, string>();\n\n private pluginTag(uri: string): string {\n if (!this.pluginTags.has(uri)) {\n const tag = pluginTag(uri);\n this.pluginTags.set(uri, tag);\n }\n\n return this.pluginTags.get(uri)!;\n }\n\n\n}\n\ndeclare global {\n interface ElementEventMap {\n 'reset-plugins': CustomEvent;\n 'add-external-plugin': CustomEvent<AddExternalPluginDetail>;\n 'set-plugins': CustomEvent<SetPluginsDetail>;\n }\n}\n\n\n// HOSTING INTERFACES\n\nexport interface MenuItem {\n icon: string;\n name: string;\n src?: string;\n hint?: string;\n actionItem?: boolean;\n action?: (event: CustomEvent<ActionDetail>) => void;\n disabled?: () => boolean;\n content: () => TemplateResult;\n kind: string;\n}\n\nexport interface Validator {\n validate: () => Promise<void>;\n}\n\nexport interface MenuPlugin {\n run: () => Promise<void>;\n}\n\nexport function newResetPluginsEvent(): CustomEvent {\n return new CustomEvent('reset-plugins', { bubbles: true, composed: true });\n}\n\nexport interface AddExternalPluginDetail {\n plugin: Omit<Plugin, 'content'>;\n}\n\nexport type AddExternalPluginEvent = CustomEvent<AddExternalPluginDetail>;\n\nexport function newAddExternalPluginEvent(\n plugin: Omit<Plugin, 'content'>\n): AddExternalPluginEvent {\n return new CustomEvent<AddExternalPluginDetail>('add-external-plugin', {\n bubbles: true,\n composed: true,\n detail: { plugin },\n });\n}\n\nexport interface SetPluginsDetail {\n selectedPlugins: Plugin[];\n}\n\nexport type SetPluginsEvent = CustomEvent<SetPluginsDetail>;\n\nexport function newSetPluginsEvent(selectedPlugins: Plugin[]): SetPluginsEvent {\n return new CustomEvent<SetPluginsDetail>('set-plugins', {\n bubbles: true,\n composed: true,\n detail: { selectedPlugins },\n });\n}\n\n\n\n\n/**\n * This is a template literal tag function. See:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates\n *\n * Passes its arguments to LitElement's `html` tag after combining the first and\n * last expressions with the first two and last two static strings.\n * Throws unless the first and last expressions are identical strings.\n *\n * We need this to get around the expression location limitations documented in\n * https://lit.dev/docs/templates/expressions/#expression-locations\n *\n * After upgrading to Lit 2 we can use their static HTML functions instead:\n * https://lit.dev/docs/api/static-html/\n */\nfunction staticTagHtml(\n oldStrings: ReadonlyArray<string>,\n ...oldArgs: unknown[]\n): TemplateResult {\n const args = [...oldArgs];\n const firstArg = args.shift();\n const lastArg = args.pop();\n\n if (firstArg !== lastArg)\n throw new Error(\n `Opening tag <${firstArg}> does not match closing tag </${lastArg}>.`\n );\n\n const strings = [...oldStrings] as string[] & { raw: string[] };\n const firstString = strings.shift();\n const secondString = strings.shift();\n\n const lastString = strings.pop();\n const penultimateString = strings.pop();\n\n strings.unshift(`${firstString}${firstArg}${secondString}`);\n strings.push(`${penultimateString}${lastArg}${lastString}`);\n\n return html(<TemplateStringsArray>strings, ...args);\n}\n\n\nfunction withoutContent<P extends Plugin | InstalledOfficialPlugin>(\n plugin: P\n): P {\n const { content, ...rest } = plugin as any;\n return { ...rest, content: undefined } as P;\n}\n\nexport const pluginIcons: Record<PluginKind | MenuPosition, string> = {\n editor: 'tab',\n menu: 'play_circle',\n validator: 'rule_folder',\n top: 'play_circle',\n middle: 'play_circle',\n bottom: 'play_circle',\n};\n\nconst menuOrder: (PluginKind | MenuPosition)[] = [\n 'editor',\n 'top',\n 'validator',\n 'middle',\n 'bottom',\n];\n\nfunction menuCompare(a: Plugin, b: Plugin): -1 | 0 | 1 {\n if (a.kind === b.kind && a.position === b.position) return 0;\n const earlier = menuOrder.find(kind =>\n [a.kind, b.kind, a.position, b.position].includes(kind)\n );\n return [a.kind, a.position].includes(earlier) ? -1 : 1;\n}\n\nfunction compareNeedsDoc(a: Plugin, b: Plugin): -1 | 0 | 1 {\n if (a.requireDoc === b.requireDoc) return 0;\n return a.requireDoc ? 1 : -1;\n}\n\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oscd-filter-button.js","sourceRoot":"","sources":["../../src/oscd-filter-button.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,GAAG,EACH,aAAa,EACb,IAAI,EACJ,QAAQ,EACR,KAAK,EAEL,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,2BAA2B,CAAC;AACnC,OAAO,sBAAsB,CAAC;AAE9B,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD;;GAEG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,YAAY;IAAvC;;QAML,aAAQ,GAAG,KAAK,CAAC;IAuDnB,CAAC;IAlDS,UAAU;QAChB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,SAAS;QACf,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,EAAE;gBAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAC/D;iBAAM;gBACL,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACzC;YACD,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC,CAAC;SACjE;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;gBAEC,IAAI,CAAC,IAAI;kBACP,IAAI,CAAC,UAAU;qBACZ,IAAI,CAAC,QAAQ;;;;;;mBAMf,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;;oBAExC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;;UAEhC,KAAK,CAAC,MAAM,EAAE;;YAEZ,GAAG,CAAC,OAAO,CAAC;;;KAGnB,CAAC;IACJ,CAAC;;AAEM,mBAAM,GAAG,GAAG,CAAA;MACf,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;;;;;;;;;GASjC,CAAC;AA1DF;IADC,QAAQ,EAAE;4CACsB;AAEjC;IADC,QAAQ,EAAE;0CACG;AAEd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8CACX;AAGjB;IADC,KAAK,CAAC,eAAe,CAAC;kDACO;AATnB,YAAY;IADxB,aAAa,CAAC,oBAAoB,CAAC;GACvB,YAAY,CA6DxB;SA7DY,YAAY;AAmEzB,SAAS,4BAA4B,CACnC,aAAuB,EACvB,aAA2D;IAE3D,OAAO,IAAI,WAAW,CAA6B,wBAAwB,EAAE;QAC3E,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;QACd,GAAG,aAAa;QAChB,MAAM,EAAE,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE;KACpD,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n css,\n customElement,\n html,\n property,\n query,\n TemplateResult,\n unsafeCSS,\n} from 'lit-element';\nimport { get } from 'lit-translate';\n\nimport '@material/mwc-icon-button';\nimport '@material/mwc-dialog';\n\nimport './filtered-list.js';\n\nimport { FilteredList } from './filtered-list.js';\nimport { Dialog } from '@material/mwc-dialog';\n\n/**\n * A mwc-list with mwc-textfield that filters the list items for given or separated terms\n */\n@customElement('oscd-filter-button')\nexport class FilterButton extends FilteredList {\n @property()\n header!: TemplateResult | string;\n @property()\n icon!: string;\n @property({ type: Boolean })\n disabled = false;\n\n @query('#filterDialog')\n private filterDialog!: Dialog;\n\n private toggleList(): void {\n this.filterDialog.show();\n }\n\n private onClosing(): void {\n const selectedItems: string[] = [];\n if (this.selected) {\n if (this.selected instanceof Array) {\n this.selected.forEach(item => selectedItems.push(item.value));\n } else {\n selectedItems.push(this.selected.value);\n }\n this.dispatchEvent(newSelectedItemsChangedEvent(selectedItems));\n }\n }\n\n render(): TemplateResult {\n return html`\n <mwc-icon-button\n icon=\"${this.icon}\"\n @click=\"${this.toggleList}\"\n ?disabled=\"${this.disabled}\"\n >\n <slot name=\"icon\"></slot>\n </mwc-icon-button>\n <mwc-dialog\n id=\"filterDialog\"\n heading=\"${this.header ? this.header : get('filter')}\"\n scrimClickAction=\"\"\n @closing=\"${() => this.onClosing()}\"\n >\n ${super.render()}\n <mwc-button slot=\"primaryAction\" dialogAction=\"close\">\n ${get('close')}\n </mwc-button>\n </mwc-dialog>\n `;\n }\n\n static styles = css`\n ${unsafeCSS(FilteredList.styles)}\n\n mwc-icon-button {\n color: var(--mdc-theme-on-surface);\n }\n\n mwc-dialog {\n --mdc-dialog-max-height: calc(100vh - 150px);\n }\n `;\n}\n\nexport interface SelectedItemsChangedDetail {\n selectedItems: string[];\n}\nexport type SelectedItemsChangedEvent = CustomEvent<SelectedItemsChangedDetail>;\nfunction newSelectedItemsChangedEvent(\n selectedItems: string[],\n eventInitDict?: CustomEventInit<SelectedItemsChangedDetail>\n): SelectedItemsChangedEvent {\n return new CustomEvent<SelectedItemsChangedDetail>('selected-items-changed', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: { selectedItems, ...eventInitDict?.detail },\n });\n}\n\ndeclare global {\n interface ElementEventMap {\n ['selected-items-changed']: SelectedItemsChangedEvent;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plain-compare-list.js","sourceRoot":"","sources":["../../src/plain-compare-list.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,UAAU,EACV,QAAQ,EACR,IAAI,EAEJ,GAAG,EACH,KAAK,GACN,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,EAAc,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QACL;;WAEG;QAEH,kBAAa,GAAG,EAAE,CAAC;QAEnB;;WAEG;QAEH,mBAAc,GAAG,EAAE,CAAC;QAoBpB;;WAEG;QAEH,qBAAgB,GAAG,EAAE,CAAC;QAEtB;;WAEG;QAEH,sBAAiB,GAAG,EAAE,CAAC;QAGvB,mBAAc,GAAG,IAAI,CAAC;IAqFxB,CAAC;IAnFC,MAAM;QACJ,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,oBAAoB,EAAE;;;0CAGO,IAAI,CAAC,aAAa;YAChD,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;YACzD,CAAC,CAAC,IAAI,CAAA,iCAAiC,IAAI,CAAC,gBAAgB,QAAQ;YACpE,CAAC,CAAC,EAAE;;;0CAG0B,IAAI,CAAC,cAAc;YACjD,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAA;kBACA,IAAI,CAAC,iBAAiB;qBACnB;YACT,CAAC,CAAC,EAAE;;;QAGR,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe;YAC3C,CAAC,CAAC,IAAI,CAAA;cACA,UAAU,CACV,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAC/C;WACF;YACH,CAAC,CAAC,EAAE;KACP,CAAC;IACJ,CAAC;IAES,oBAAoB;QAC5B,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO,IAAI,CAAA;;;kCAGiB,GAAG,CAAC,wBAAwB,CAAC;;yBAEtC,IAAI,CAAC,cAAc;wBACpB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;;;;;OAKnE,CAAC;SACH;QACD,OAAO,IAAI,CAAA,EAAE,CAAC;IAChB,CAAC;;AAEM,uBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiClB,CAAC;AA3HF;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDACR;AAMnB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACP;AAMpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACF;AAMzB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yDACD;AAM1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACU;AAMrC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0DACL;AAMtB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2DACJ;AAGvB;IADC,KAAK,EAAE;wDACc;AA5CX,gBAAgB;IAD5B,aAAa,CAAC,oBAAoB,CAAC;GACvB,gBAAgB,CAiI5B;SAjIY,gBAAgB","sourcesContent":["import {\n customElement,\n LitElement,\n property,\n html,\n TemplateResult,\n css,\n state,\n} from 'lit-element';\nimport { get } from 'lit-translate';\n\nimport { DiffFilter, renderDiff } from './foundation/compare.js';\n\n@customElement('plain-compare-list')\nexport class PlainCompareList extends LitElement {\n /**\n * The title of the left list\n */\n @property({ type: String })\n leftHandTitle = '';\n\n /**\n * The title of the right list\n */\n @property({ type: String })\n rightHandTitle = '';\n\n /**\n * The left Element that should be compared\n */\n @property({ type: Object })\n leftHandObject!: Element;\n\n /**\n * The right element that should be compared against\n */\n @property({ type: Object })\n rightHandObject!: Element;\n\n /**\n * Optional filter to ignore differences\n */\n @property({ type: Object })\n filterToIgnore?: DiffFilter<Element>;\n\n /**\n * The subtitle of the left list (optional)\n */\n @property({ type: String })\n leftHandSubtitle = '';\n\n /**\n * The subtitle of the right list (optional)\n */\n @property({ type: String })\n rightHandSubtitle = '';\n\n @state()\n filterMutables = true;\n\n render(): TemplateResult {\n return html`\n ${this.renderFilterCheckbox()}\n <div class=\"container container--alt\">\n <div class=\"list__container list__container--left\">\n <h3 class=\"mdc-dialog__title\">${this.leftHandTitle}</h3>\n ${this.leftHandSubtitle && this.leftHandSubtitle.length > 0\n ? html`<h5 class=\"mdc-dialog__title\">${this.leftHandSubtitle}</h5> `\n : ''}\n </div>\n <div class=\"list__container\">\n <h3 class=\"mdc-dialog__title\">${this.rightHandTitle}</h3>\n ${this.rightHandSubtitle && this.rightHandSubtitle.length > 0\n ? html`<h5 class=\"mdc-dialog__title\">\n ${this.rightHandSubtitle}\n </h5> `\n : ''}\n </div>\n </div>\n ${this.leftHandObject && this.rightHandObject\n ? html`\n ${renderDiff(\n this.rightHandObject,\n this.leftHandObject,\n this.filterMutables ? this.filterToIgnore : {}\n )}\n `\n : ''}\n `;\n }\n\n protected renderFilterCheckbox(): TemplateResult {\n if (this.filterToIgnore) {\n return html`\n <div class=\"container\">\n <div class=\"flex\"></div>\n <mwc-formfield label=\"${get('compare.filterMutables')}\">\n <mwc-checkbox\n ?checked=${this.filterMutables}\n @change=${() => (this.filterMutables = !this.filterMutables)}\n >\n </mwc-checkbox>\n </mwc-formfield>\n </div>\n `;\n }\n return html``;\n }\n\n static styles = css`\n mwc-list-item {\n --mdc-list-item-graphic-margin: 0;\n }\n\n .mdc-dialog__title {\n padding: 0 16px;\n }\n\n .container {\n display: flex;\n gap: 4px;\n }\n\n .container--alt {\n background: var(--base2);\n }\n\n .list__container {\n width: 50%;\n background: var(--base3);\n }\n .list__container--left {\n text-align: right;\n }\n .flex {\n flex: 1;\n }\n\n mwc-list-item[right] {\n text-align: right;\n direction: rtl;\n }\n `;\n}\n"]}
|