@openremote/or-rules 1.2.0-snapshot.20240512160221

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.
Files changed (191) hide show
  1. package/README.md +31 -0
  2. package/lib/flow-viewer/components/confirmation-dialog.d.ts +18 -0
  3. package/lib/flow-viewer/components/confirmation-dialog.js +24 -0
  4. package/lib/flow-viewer/components/confirmation-dialog.js.map +1 -0
  5. package/lib/flow-viewer/components/connection-container.d.ts +6 -0
  6. package/lib/flow-viewer/components/connection-container.js +1 -0
  7. package/lib/flow-viewer/components/connection-container.js.map +1 -0
  8. package/lib/flow-viewer/components/connection-line.d.ts +22 -0
  9. package/lib/flow-viewer/components/connection-line.js +30 -0
  10. package/lib/flow-viewer/components/connection-line.js.map +1 -0
  11. package/lib/flow-viewer/components/context-menu.d.ts +28 -0
  12. package/lib/flow-viewer/components/context-menu.js +49 -0
  13. package/lib/flow-viewer/components/context-menu.js.map +1 -0
  14. package/lib/flow-viewer/components/editor-workspace.d.ts +66 -0
  15. package/lib/flow-viewer/components/editor-workspace.js +20 -0
  16. package/lib/flow-viewer/components/editor-workspace.js.map +1 -0
  17. package/lib/flow-viewer/components/flow-editor.d.ts +47 -0
  18. package/lib/flow-viewer/components/flow-editor.js +45 -0
  19. package/lib/flow-viewer/components/flow-editor.js.map +1 -0
  20. package/lib/flow-viewer/components/flow-node-socket.d.ts +31 -0
  21. package/lib/flow-viewer/components/flow-node-socket.js +36 -0
  22. package/lib/flow-viewer/components/flow-node-socket.js.map +1 -0
  23. package/lib/flow-viewer/components/flow-node.d.ts +23 -0
  24. package/lib/flow-viewer/components/flow-node.js +7 -0
  25. package/lib/flow-viewer/components/flow-node.js.map +1 -0
  26. package/lib/flow-viewer/components/internal-picker.d.ts +36 -0
  27. package/lib/flow-viewer/components/internal-picker.js +48 -0
  28. package/lib/flow-viewer/components/internal-picker.js.map +1 -0
  29. package/lib/flow-viewer/components/node-menu-item.d.ts +29 -0
  30. package/lib/flow-viewer/components/node-menu-item.js +34 -0
  31. package/lib/flow-viewer/components/node-menu-item.js.map +1 -0
  32. package/lib/flow-viewer/components/node-panel.d.ts +24 -0
  33. package/lib/flow-viewer/components/node-panel.js +60 -0
  34. package/lib/flow-viewer/components/node-panel.js.map +1 -0
  35. package/lib/flow-viewer/components/notification-dialog.d.ts +17 -0
  36. package/lib/flow-viewer/components/notification-dialog.js +23 -0
  37. package/lib/flow-viewer/components/notification-dialog.js.map +1 -0
  38. package/lib/flow-viewer/components/popup-modal.d.ts +23 -0
  39. package/lib/flow-viewer/components/popup-modal.js +55 -0
  40. package/lib/flow-viewer/components/popup-modal.js.map +1 -0
  41. package/lib/flow-viewer/components/rule-browser.d.ts +20 -0
  42. package/lib/flow-viewer/components/rule-browser.js +32 -0
  43. package/lib/flow-viewer/components/rule-browser.js.map +1 -0
  44. package/lib/flow-viewer/components/selectable-element.d.ts +23 -0
  45. package/lib/flow-viewer/components/selectable-element.js +1 -0
  46. package/lib/flow-viewer/components/selectable-element.js.map +1 -0
  47. package/lib/flow-viewer/components/selection-box.d.ts +16 -0
  48. package/lib/flow-viewer/components/selection-box.js +16 -0
  49. package/lib/flow-viewer/components/selection-box.js.map +1 -0
  50. package/lib/flow-viewer/components/top-bar.d.ts +21 -0
  51. package/lib/flow-viewer/components/top-bar.js +51 -0
  52. package/lib/flow-viewer/components/top-bar.js.map +1 -0
  53. package/lib/flow-viewer/components/workspace-contextmenu-options.d.ts +3 -0
  54. package/lib/flow-viewer/components/workspace-contextmenu-options.js +5 -0
  55. package/lib/flow-viewer/components/workspace-contextmenu-options.js.map +1 -0
  56. package/lib/flow-viewer/components/writable-dropdown.d.ts +13 -0
  57. package/lib/flow-viewer/components/writable-dropdown.js +5 -0
  58. package/lib/flow-viewer/components/writable-dropdown.js.map +1 -0
  59. package/lib/flow-viewer/converters/node-converter.d.ts +2 -0
  60. package/lib/flow-viewer/converters/node-converter.js +1 -0
  61. package/lib/flow-viewer/converters/node-converter.js.map +1 -0
  62. package/lib/flow-viewer/flow-viewer.d.ts +18 -0
  63. package/lib/flow-viewer/flow-viewer.js +1 -0
  64. package/lib/flow-viewer/flow-viewer.js.map +1 -0
  65. package/lib/flow-viewer/models/camera.d.ts +5 -0
  66. package/lib/flow-viewer/models/camera.js +1 -0
  67. package/lib/flow-viewer/models/camera.js.map +1 -0
  68. package/lib/flow-viewer/models/context-menu-button.d.ts +13 -0
  69. package/lib/flow-viewer/models/context-menu-button.js +1 -0
  70. package/lib/flow-viewer/models/context-menu-button.js.map +1 -0
  71. package/lib/flow-viewer/models/light-node-collection.d.ts +5 -0
  72. package/lib/flow-viewer/models/light-node-collection.js +1 -0
  73. package/lib/flow-viewer/models/light-node-collection.js.map +1 -0
  74. package/lib/flow-viewer/models/status.d.ts +6 -0
  75. package/lib/flow-viewer/models/status.js +1 -0
  76. package/lib/flow-viewer/models/status.js.map +1 -0
  77. package/lib/flow-viewer/node-structure/copy.machine.d.ts +4 -0
  78. package/lib/flow-viewer/node-structure/copy.machine.js +1 -0
  79. package/lib/flow-viewer/node-structure/copy.machine.js.map +1 -0
  80. package/lib/flow-viewer/node-structure/identity.assigner.d.ts +5 -0
  81. package/lib/flow-viewer/node-structure/identity.assigner.js +1 -0
  82. package/lib/flow-viewer/node-structure/identity.assigner.js.map +1 -0
  83. package/lib/flow-viewer/node-structure/identity.dom.link.d.ts +5 -0
  84. package/lib/flow-viewer/node-structure/identity.dom.link.js +1 -0
  85. package/lib/flow-viewer/node-structure/identity.dom.link.js.map +1 -0
  86. package/lib/flow-viewer/node-structure/index.d.ts +5 -0
  87. package/lib/flow-viewer/node-structure/index.js +1 -0
  88. package/lib/flow-viewer/node-structure/index.js.map +1 -0
  89. package/lib/flow-viewer/node-structure/socket.type.matcher.d.ts +5 -0
  90. package/lib/flow-viewer/node-structure/socket.type.matcher.js +1 -0
  91. package/lib/flow-viewer/node-structure/socket.type.matcher.js.map +1 -0
  92. package/lib/flow-viewer/node-structure/utils.d.ts +13 -0
  93. package/lib/flow-viewer/node-structure/utils.js +1 -0
  94. package/lib/flow-viewer/node-structure/utils.js.map +1 -0
  95. package/lib/flow-viewer/services/copy-paste-manager.d.ts +11 -0
  96. package/lib/flow-viewer/services/copy-paste-manager.js +1 -0
  97. package/lib/flow-viewer/services/copy-paste-manager.js.map +1 -0
  98. package/lib/flow-viewer/services/exporter.d.ts +9 -0
  99. package/lib/flow-viewer/services/exporter.js +1 -0
  100. package/lib/flow-viewer/services/exporter.js.map +1 -0
  101. package/lib/flow-viewer/services/input.d.ts +17 -0
  102. package/lib/flow-viewer/services/input.js +1 -0
  103. package/lib/flow-viewer/services/input.js.map +1 -0
  104. package/lib/flow-viewer/services/integration.d.ts +7 -0
  105. package/lib/flow-viewer/services/integration.js +1 -0
  106. package/lib/flow-viewer/services/integration.js.map +1 -0
  107. package/lib/flow-viewer/services/modal.d.ts +8 -0
  108. package/lib/flow-viewer/services/modal.js +8 -0
  109. package/lib/flow-viewer/services/modal.js.map +1 -0
  110. package/lib/flow-viewer/services/project.d.ts +39 -0
  111. package/lib/flow-viewer/services/project.js +1 -0
  112. package/lib/flow-viewer/services/project.js.map +1 -0
  113. package/lib/flow-viewer/services/shortcuts.d.ts +8 -0
  114. package/lib/flow-viewer/services/shortcuts.js +1 -0
  115. package/lib/flow-viewer/services/shortcuts.js.map +1 -0
  116. package/lib/flow-viewer/styles/editor-workspace-style.d.ts +1 -0
  117. package/lib/flow-viewer/styles/editor-workspace-style.js +53 -0
  118. package/lib/flow-viewer/styles/editor-workspace-style.js.map +1 -0
  119. package/lib/flow-viewer/styles/flow-node-style.d.ts +1 -0
  120. package/lib/flow-viewer/styles/flow-node-style.js +101 -0
  121. package/lib/flow-viewer/styles/flow-node-style.js.map +1 -0
  122. package/lib/flow-viewer/styles/picker-styles.d.ts +1 -0
  123. package/lib/flow-viewer/styles/picker-styles.js +25 -0
  124. package/lib/flow-viewer/styles/picker-styles.js.map +1 -0
  125. package/lib/flow-viewer/utils.d.ts +25 -0
  126. package/lib/flow-viewer/utils.js +1 -0
  127. package/lib/flow-viewer/utils.js.map +1 -0
  128. package/lib/index.d.ts +259 -0
  129. package/lib/index.js +52 -0
  130. package/lib/index.js.map +1 -0
  131. package/lib/json-viewer/forms/or-rule-form-email-message.d.ts +20 -0
  132. package/lib/json-viewer/forms/or-rule-form-email-message.js +12 -0
  133. package/lib/json-viewer/forms/or-rule-form-email-message.js.map +1 -0
  134. package/lib/json-viewer/forms/or-rule-form-push-notification.d.ts +21 -0
  135. package/lib/json-viewer/forms/or-rule-form-push-notification.js +47 -0
  136. package/lib/json-viewer/forms/or-rule-form-push-notification.js.map +1 -0
  137. package/lib/json-viewer/forms/or-rule-form-webhook.d.ts +19 -0
  138. package/lib/json-viewer/forms/or-rule-form-webhook.js +102 -0
  139. package/lib/json-viewer/forms/or-rule-form-webhook.js.map +1 -0
  140. package/lib/json-viewer/modals/or-rule-notification-modal.d.ts +24 -0
  141. package/lib/json-viewer/modals/or-rule-notification-modal.js +5 -0
  142. package/lib/json-viewer/modals/or-rule-notification-modal.js.map +1 -0
  143. package/lib/json-viewer/modals/or-rule-radial-modal.d.ts +25 -0
  144. package/lib/json-viewer/modals/or-rule-radial-modal.js +17 -0
  145. package/lib/json-viewer/modals/or-rule-radial-modal.js.map +1 -0
  146. package/lib/json-viewer/modals/or-rule-webhook-modal.d.ts +12 -0
  147. package/lib/json-viewer/modals/or-rule-webhook-modal.js +8 -0
  148. package/lib/json-viewer/modals/or-rule-webhook-modal.js.map +1 -0
  149. package/lib/json-viewer/or-rule-action-attribute.d.ts +32 -0
  150. package/lib/json-viewer/or-rule-action-attribute.js +33 -0
  151. package/lib/json-viewer/or-rule-action-attribute.js.map +1 -0
  152. package/lib/json-viewer/or-rule-action-notification.d.ts +20 -0
  153. package/lib/json-viewer/or-rule-action-notification.js +44 -0
  154. package/lib/json-viewer/or-rule-action-notification.js.map +1 -0
  155. package/lib/json-viewer/or-rule-action-webhook.d.ts +10 -0
  156. package/lib/json-viewer/or-rule-action-webhook.js +20 -0
  157. package/lib/json-viewer/or-rule-action-webhook.js.map +1 -0
  158. package/lib/json-viewer/or-rule-asset-query.d.ts +50 -0
  159. package/lib/json-viewer/or-rule-asset-query.js +98 -0
  160. package/lib/json-viewer/or-rule-asset-query.js.map +1 -0
  161. package/lib/json-viewer/or-rule-condition.d.ts +10 -0
  162. package/lib/json-viewer/or-rule-condition.js +29 -0
  163. package/lib/json-viewer/or-rule-condition.js.map +1 -0
  164. package/lib/json-viewer/or-rule-json-viewer.d.ts +54 -0
  165. package/lib/json-viewer/or-rule-json-viewer.js +34 -0
  166. package/lib/json-viewer/or-rule-json-viewer.js.map +1 -0
  167. package/lib/json-viewer/or-rule-then-otherwise.d.ts +11 -0
  168. package/lib/json-viewer/or-rule-then-otherwise.js +113 -0
  169. package/lib/json-viewer/or-rule-then-otherwise.js.map +1 -0
  170. package/lib/json-viewer/or-rule-trigger-query.d.ts +26 -0
  171. package/lib/json-viewer/or-rule-trigger-query.js +57 -0
  172. package/lib/json-viewer/or-rule-trigger-query.js.map +1 -0
  173. package/lib/json-viewer/or-rule-when.d.ts +1 -0
  174. package/lib/json-viewer/or-rule-when.js +136 -0
  175. package/lib/json-viewer/or-rule-when.js.map +1 -0
  176. package/lib/or-rule-list.d.ts +56 -0
  177. package/lib/or-rule-list.js +111 -0
  178. package/lib/or-rule-list.js.map +1 -0
  179. package/lib/or-rule-text-viewer.d.ts +27 -0
  180. package/lib/or-rule-text-viewer.js +25 -0
  181. package/lib/or-rule-text-viewer.js.map +1 -0
  182. package/lib/or-rule-validity.d.ts +34 -0
  183. package/lib/or-rule-validity.js +71 -0
  184. package/lib/or-rule-validity.js.map +1 -0
  185. package/lib/or-rule-viewer.d.ts +47 -0
  186. package/lib/or-rule-viewer.js +88 -0
  187. package/lib/or-rule-viewer.js.map +1 -0
  188. package/lib/style.d.ts +2 -0
  189. package/lib/style.js +64 -0
  190. package/lib/style.js.map +1 -0
  191. package/package.json +42 -0
@@ -0,0 +1,8 @@
1
+ export declare class Shortcuts {
2
+ actions: {
3
+ keys: string[];
4
+ requireCtrl?: boolean;
5
+ action: () => void;
6
+ }[];
7
+ constructor();
8
+ }
@@ -0,0 +1 @@
1
+ import{FlowNode}from"../components/flow-node";import{ConnectionLine}from"../components/connection-line";import{input,project}from"../components/flow-editor";export class Shortcuts{constructor(){this.actions=[{keys:["Delete","Backspace"],action:()=>{project.createUndoSnapshot();const e=input.selected.filter((e=>e instanceof FlowNode&&e.selected&&!e.frozen));input.selected.filter((e=>e instanceof ConnectionLine&&e.selected)).forEach((e=>project.removeConnection(e.connection))),e.forEach((e=>project.removeNode(e.node))),project.notifyChange()}},{keys:["KeyA"],requireCtrl:!0,action:()=>{input.selected.length>0?input.clearSelection(!0):input.selectables.forEach((e=>{input.select(e,!0)}))}},{keys:["KeyZ"],requireCtrl:!0,action:()=>{project.undo()}},{keys:["KeyY"],requireCtrl:!0,action:()=>{project.redo()}}],window.addEventListener("keydown",(e=>{document.activeElement instanceof HTMLBodyElement&&this.actions.forEach((o=>{(o.keys.includes(e.key)||o.keys.includes(e.code))&&(o.requireCtrl&&!e.ctrlKey||o.action())}))}))}}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../../src/flow-viewer/services/shortcuts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,OAAO,SAAS;IA0ClB;QAzCO,YAAO,GAAoE;YAC9E;gBACI,IAAI,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;gBAC7B,MAAM,EAAE,GAAG,EAAE;oBACT,OAAO,CAAC,kBAAkB,EAAE,CAAC;oBAC7B,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,CAAe,CAAC;oBACnH,MAAM,mBAAmB,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,cAAc,IAAI,CAAC,CAAC,QAAQ,CAAqB,CAAC;oBACxH,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC3E,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBACzD,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC3B,CAAC;aACJ;YACD;gBACI,IAAI,EAAE,CAAC,MAAM,CAAC;gBACd,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,GAAG,EAAE;oBACT,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5B,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAC/B,CAAC;yBAAM,CAAC;wBACJ,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;4BAC5B,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBAC1B,CAAC,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;aACJ;YACD;gBACI,IAAI,EAAE,CAAC,MAAM,CAAC;gBACd,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,GAAG,EAAE;oBACT,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,CAAC;aACJ;YACD;gBACI,IAAI,EAAE,CAAC,MAAM,CAAC;gBACd,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,GAAG,EAAE;oBACT,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,CAAC;aACJ;SACJ,CAAC;QAGE,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAgB,EAAE,EAAE;YACpD,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,YAAY,eAAe,CAAC,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YACrE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBACpE,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAC5C,CAAC,CAAC,MAAM,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -0,0 +1 @@
1
+ export declare const EditorWorkspaceStyle: import("lit").CSSResult;
@@ -0,0 +1,53 @@
1
+ import{css}from"lit";export const EditorWorkspaceStyle=css`
2
+ :host{
3
+ background: whitesmoke;
4
+ position: relative;
5
+ display: block;
6
+ overflow: hidden;
7
+ box-shadow: rgba(0, 0, 0, 0.2) 0 0 4px inset;
8
+ height: 100%;
9
+ }
10
+
11
+ .view-options{
12
+ position: absolute;
13
+ left: 0;
14
+ top: 0;
15
+ display: flex;
16
+ flex-direction: row;
17
+ }
18
+
19
+ .button{
20
+ padding: 10px;
21
+ margin: 10px;
22
+ cursor:pointer;
23
+ background: rgba(0,0,0,0.02);
24
+ }
25
+
26
+ or-mwc-input[type=button]
27
+ {
28
+ margin: 10px;
29
+ color: inherit;
30
+ }
31
+
32
+ .button:hover{
33
+ background: rgba(0,0,0,0.04);
34
+ }
35
+
36
+ .button:active{
37
+ background: rgba(0,0,0,0.06);
38
+ }
39
+
40
+ svg, connection-container {
41
+ pointer-events: none;
42
+ position: absolute;
43
+ display: block;
44
+ right: 0;
45
+ top: 0;
46
+ left: 0;
47
+ bottom: 0;
48
+ width: 100%;
49
+ height: 100%;
50
+ stroke-width: 4px;
51
+ stroke: rgb(80,80,80);
52
+ }
53
+ `;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-workspace-style.js","sourceRoot":"","sources":["../../../src/flow-viewer/styles/editor-workspace-style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDtC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const FlowNodeStyle: import("lit").CSSResult;
@@ -0,0 +1,101 @@
1
+ import{css}from"lit";export const FlowNodeStyle=css`
2
+ :host{
3
+ white-space: nowrap;
4
+ min-width: 80px;
5
+ min-height: 80px;
6
+ background: rgba(200,200,200, 0.85);
7
+
8
+ display: grid;
9
+ grid-template-columns: auto auto auto;
10
+ grid-template-rows: auto 1fr;
11
+ grid-template-areas:
12
+ "title title title"
13
+ "input internal output";
14
+
15
+ position: absolute;
16
+ border-radius: var(--roundness);
17
+ transform-origin: 0 0;
18
+ z-index: 0;
19
+ }
20
+ :host([minimal]){
21
+ min-width: 60px;
22
+ min-height: 60px;
23
+ grid-template-columns: var(--socket-display-size) 1fr var(--socket-display-size);
24
+ grid-template-rows: auto;
25
+ grid-template-areas:
26
+ "input title output";
27
+ }
28
+ .internal-container{
29
+ grid-area: internal;
30
+ display: flex;
31
+ flex-direction: column;
32
+ align-items: center;
33
+ justify-content: center;
34
+ padding: 8px 0 8px 0;
35
+ }
36
+ .socket-side{
37
+ display: flex;
38
+ flex-direction: column;
39
+ justify-content: center;
40
+ justify-content: space-evenly;
41
+ }
42
+ .inputs{
43
+ grid-area: input;
44
+ align-items: flex-start;
45
+ }
46
+ .inputs flow-node-socket{
47
+ transform: translateX(calc(var(--socket-size) / -2));
48
+ }
49
+ .outputs{
50
+ grid-area: output;
51
+ align-items: flex-end;
52
+ }
53
+ .outputs flow-node-socket{
54
+ transform: translateX(calc(var(--socket-size) / 2));
55
+ }
56
+ .title{
57
+ grid-area: title;
58
+ padding: 3px 6px 3px 6px;
59
+ background: rgb(180,180,180);
60
+ border-radius: inherit;
61
+ border-bottom-left-radius: 0;
62
+ border-bottom-right-radius: 0;
63
+ color: white;
64
+ cursor: grab;
65
+ }
66
+ .title.input{
67
+ background: var(--input-color);
68
+ text-align: right;
69
+ }
70
+ .title.processor{
71
+ background: var(--processor-color);
72
+ text-align: center;
73
+ }
74
+ .title.output{
75
+ background: var(--output-color);
76
+ text-align: left;
77
+ }
78
+ .title.minimal{
79
+ background: transparent;
80
+ font-size: 20px;
81
+ line-height: 50%;
82
+ display: table;
83
+ padding: 15px 0 15px 0;
84
+ text-align: center;
85
+ margin-top: auto;
86
+ margin-bottom: auto;
87
+ }
88
+ .title.minimal[singlechar]{
89
+ font-size: 32px;
90
+ }
91
+ .lock-icon{
92
+ position: absolute;
93
+ top: 0px;
94
+ right: 0px;
95
+ color: rgba(255,255,255,0.8);
96
+ transform: scale(.7);
97
+ }
98
+ .lock-icon.input{
99
+ left: 0;
100
+ }
101
+ `;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-node-style.js","sourceRoot":"","sources":["../../../src/flow-viewer/styles/flow-node-style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoG/B,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const PickerStyle: import("lit").CSSResult;
@@ -0,0 +1,25 @@
1
+ import{css}from"lit";export const PickerStyle=css`
2
+ input{
3
+ border: 0;
4
+ }
5
+ textarea{
6
+ min-width: 150px;
7
+ min-height: 37px;
8
+ }
9
+ textarea, input[type=text], input[type=number], select{
10
+ font-family: inherit;
11
+ padding: 10px;
12
+ border-radius: var(--roundness);
13
+ width: auto;
14
+ border: none;
15
+ }
16
+ .attribute-label{
17
+ padding: 5px;
18
+ background: rgba(0,0,0,0.05);
19
+ text-align: center;
20
+ border-radius: var(--roundness);
21
+ font-size: 110%;
22
+ color: rgb(76, 76, 76);
23
+ font-weight: 400;
24
+ }
25
+ `;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker-styles.js","sourceRoot":"","sources":["../../../src/flow-viewer/styles/picker-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;CAwB7B,CAAC"}
@@ -0,0 +1,25 @@
1
+ export declare class Utilities {
2
+ static getCenter(bounds: ClientRect): {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ static isPointInsideBox(x: number, y: number, box: {
7
+ x: number;
8
+ y: number;
9
+ width: number;
10
+ height: number;
11
+ }): boolean;
12
+ static isBoxInsideBox(a: {
13
+ x: number;
14
+ y: number;
15
+ width: number;
16
+ height: number;
17
+ }, b: {
18
+ x: number;
19
+ y: number;
20
+ width: number;
21
+ height: number;
22
+ }): boolean;
23
+ static humanLike(input: string): string;
24
+ static ellipsis(input: string, maxLength?: number, ellipsis?: string): string;
25
+ }
@@ -0,0 +1 @@
1
+ export class Utilities{static getCenter(t){return{x:t.left+t.width/2,y:t.top+t.height/2}}static isPointInsideBox(t,e,i){return t>i.x&&t<i.x+i.width&&e>i.y&&e<i.y+i.height}static isBoxInsideBox(t,e){const i=e.x-t.x,s=e.y-t.y;return t.x>=e.x&&t.width-i<=e.width&&t.y>=e.y&&t.height-s<=e.height}static humanLike(t){let e=(t=t.replace(/_+/gm," "))[0].toUpperCase();for(let i=1;i<t.length;i++){const s=t[i];s.match("[A-z]")&&s===s.toUpperCase()&&0!==t[i-1].trim().length&&(e+=" "),e+=s.toLowerCase()}return e}static ellipsis(t,e=15,i="..."){return t&&e&&i?i.length>e?(console.warn("Invalid ellipsis parameters: given ellipsis is longer than the max length"),t):t.length<e?t:t?t.length>8?t.substr(0,e-i.length)+i:t:"":t}}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/flow-viewer/utils.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,259 @@
1
+ import { LitElement, TemplateResult } from "lit";
2
+ import "@openremote/or-icon";
3
+ import { AssetQuery, AssetTypeInfo, AttributeDescriptor, JsonRule, LogicGroup, NotificationTargetType, RuleActionUnion, RuleCondition, RulesetLang, RulesetUnion, Asset } from "@openremote/model";
4
+ import "@openremote/or-translate";
5
+ import "@openremote/or-mwc-components/or-mwc-drawer";
6
+ import "./or-rule-list";
7
+ import "./or-rule-viewer";
8
+ import "./flow-viewer/flow-viewer";
9
+ import { RecurrenceOption } from "./json-viewer/or-rule-then-otherwise";
10
+ import { ValueInputProviderGenerator } from "@openremote/or-mwc-components/or-mwc-input";
11
+ export { buttonStyle } from "./style";
12
+ export declare const enum ConditionType {
13
+ AGENT_QUERY = "agentQuery",
14
+ ASSET_QUERY = "assetQuery",
15
+ TIME = "time"
16
+ }
17
+ export declare const enum ActionType {
18
+ WAIT = "wait",
19
+ EMAIL = "email",
20
+ PUSH_NOTIFICATION = "push",
21
+ ATTRIBUTE = "attribute",
22
+ WEBHOOK = "webhook"
23
+ }
24
+ export declare enum TimeTriggerType {
25
+ TIME_OF_DAY = "TIME_OF_DAY"
26
+ }
27
+ export declare enum AssetQueryOperator {
28
+ VALUE_EMPTY = "empty",
29
+ VALUE_NOT_EMPTY = "notEmpty",
30
+ EQUALS = "equals",
31
+ NOT_EQUALS = "notEquals",
32
+ GREATER_THAN = "greaterThan",
33
+ GREATER_EQUALS = "greaterEquals",
34
+ LESS_THAN = "lessThan",
35
+ LESS_EQUALS = "lessEquals",
36
+ BETWEEN = "between",
37
+ NOT_BETWEEN = "notBetween",
38
+ CONTAINS = "contains",
39
+ NOT_CONTAINS = "notContains",
40
+ STARTS_WITH = "startsWith",
41
+ NOT_STARTS_WITH = "notStartsWith",
42
+ ENDS_WITH = "endsWith",
43
+ NOT_ENDS_WITH = "notEndsWith",
44
+ CONTAINS_KEY = "containsKey",
45
+ NOT_CONTAINS_KEY = "notContainsKey",
46
+ INDEX_CONTAINS = "indexContains",
47
+ NOT_INDEX_CONTAINS = "notIndexContains",
48
+ LENGTH_EQUALS = "lengthEquals",
49
+ NOT_LENGTH_EQUALS = "notLengthEquals",
50
+ LENGTH_GREATER_THAN = "lengthGreaterThan",
51
+ LENGTH_LESS_THAN = "lengthLessThan",
52
+ IS_TRUE = "true",
53
+ IS_FALSE = "false",
54
+ WITHIN_RADIUS = "withinRadius",
55
+ OUTSIDE_RADIUS = "outsideRadius",
56
+ WITHIN_RECTANGLE = "withinRectangle",
57
+ OUTSIDE_RECTANGLE = "outsideRectangle"
58
+ }
59
+ export interface AllowedActionTargetTypes {
60
+ default?: NotificationTargetType[];
61
+ actions?: {
62
+ [actionType in ActionType]?: NotificationTargetType[];
63
+ };
64
+ }
65
+ export interface RulesConfig {
66
+ controls?: {
67
+ allowedLanguages?: RulesetLang[];
68
+ allowedConditionTypes?: ConditionType[];
69
+ allowedActionTypes?: ActionType[];
70
+ allowedAssetQueryOperators?: {
71
+ [name: string]: AssetQueryOperator[];
72
+ };
73
+ allowedRecurrenceOptions?: RecurrenceOption[];
74
+ allowedActionTargetTypes?: AllowedActionTargetTypes;
75
+ hideActionTypeOptions?: boolean;
76
+ hideActionTargetOptions?: boolean;
77
+ hideActionUpdateOptions?: boolean;
78
+ hideConditionTypeOptions?: boolean;
79
+ hideThenAddAction?: boolean;
80
+ hideWhenAddCondition?: boolean;
81
+ hideWhenAddAttribute?: boolean;
82
+ hideWhenAddGroup?: boolean;
83
+ multiSelect?: boolean;
84
+ };
85
+ inputProvider?: ValueInputProviderGenerator;
86
+ descriptors?: {
87
+ all?: RulesDescriptorSection;
88
+ when?: RulesDescriptorSection;
89
+ action?: RulesDescriptorSection;
90
+ };
91
+ rulesetTemplates?: {
92
+ [key in RulesetLang]?: string;
93
+ };
94
+ rulesetAddHandler?: (ruleset: RulesetUnion) => boolean;
95
+ rulesetDeleteHandler?: (ruleset: RulesetUnion) => boolean;
96
+ rulesetCopyHandler?: (ruleset: RulesetUnion) => boolean;
97
+ rulesetSaveHandler?: (ruleset: RulesetUnion) => boolean;
98
+ json?: {
99
+ rule?: JsonRule;
100
+ whenGroup?: LogicGroup<RuleCondition>;
101
+ whenCondition?: RuleCondition;
102
+ whenAssetQuery?: AssetQuery;
103
+ then?: RuleActionUnion;
104
+ otherwise?: RuleActionUnion;
105
+ };
106
+ }
107
+ export interface RulesDescriptorSection {
108
+ includeAssets?: string[];
109
+ excludeAssets?: string[];
110
+ attributeDescriptors?: {
111
+ [attributeName: string]: RulesConfigAttribute;
112
+ };
113
+ /**
114
+ * Asset type specific config; '*' key will be used as a default fallback if no asset type specific entry exists
115
+ */
116
+ assets?: {
117
+ [assetType: string]: RulesConfigAsset;
118
+ };
119
+ }
120
+ export interface RulesConfigAsset {
121
+ includeAttributes?: string[];
122
+ excludeAttributes?: string[];
123
+ name?: string;
124
+ icon?: string;
125
+ color?: string;
126
+ attributeDescriptors?: {
127
+ [attributeName: string]: RulesConfigAttribute;
128
+ };
129
+ }
130
+ export interface RulesConfigAttribute extends AttributeDescriptor {
131
+ }
132
+ export interface RulesetNode {
133
+ ruleset: RulesetUnion;
134
+ selected: boolean;
135
+ }
136
+ export interface RequestEventDetail<T> {
137
+ allow: boolean;
138
+ detail: T;
139
+ }
140
+ export interface RuleView {
141
+ validate: () => boolean;
142
+ beforeSave: () => void;
143
+ ruleset?: RulesetUnion;
144
+ readonly?: boolean;
145
+ config?: RulesConfig;
146
+ }
147
+ export interface RuleViewInfo {
148
+ viewTemplateProvider: (ruleset: RulesetUnion, config: RulesConfig | undefined, readonly: boolean) => TemplateResult;
149
+ viewRulesetTemplate?: string;
150
+ }
151
+ export declare const RuleViewInfoMap: {
152
+ [key in RulesetLang]: RuleViewInfo;
153
+ };
154
+ export declare function getAssetTypeFromQuery(query?: AssetQuery): string | undefined;
155
+ export declare function getAssetIdsFromQuery(query?: AssetQuery): any[] | undefined;
156
+ export declare const getAssetTypes: () => Promise<string[]>;
157
+ export declare function getAssetInfos(config: RulesConfig | undefined, useActionConfig: boolean): Promise<AssetTypeInfo[]>;
158
+ export declare function getAssetsByType(type: string, realm?: string, loadedAssets?: Map<string, Asset[]>): Promise<{
159
+ assets?: Asset[];
160
+ loadedAssets?: Map<string, Asset[]>;
161
+ }>;
162
+ export declare class OrRulesRuleChangedEvent extends CustomEvent<boolean> {
163
+ static readonly NAME = "or-rules-rule-changed";
164
+ constructor(valid: boolean);
165
+ }
166
+ export declare class OrRulesRuleUnsupportedEvent extends CustomEvent<void> {
167
+ static readonly NAME = "or-rules-rule-unsupported";
168
+ constructor();
169
+ }
170
+ export interface NodeSelectEventDetail {
171
+ oldNodes: RulesetNode[];
172
+ newNodes: RulesetNode[];
173
+ }
174
+ export declare class OrRulesRequestSelectionEvent extends CustomEvent<RequestEventDetail<NodeSelectEventDetail>> {
175
+ static readonly NAME = "or-rules-request-selection";
176
+ constructor(request: NodeSelectEventDetail);
177
+ }
178
+ export declare class OrRulesSelectionEvent extends CustomEvent<NodeSelectEventDetail> {
179
+ static readonly NAME = "or-rules-selection";
180
+ constructor(nodes: NodeSelectEventDetail);
181
+ }
182
+ export type AddEventDetail = {
183
+ ruleset: RulesetUnion;
184
+ sourceRuleset?: RulesetUnion;
185
+ };
186
+ export declare class OrRulesRequestAddEvent extends CustomEvent<RequestEventDetail<AddEventDetail>> {
187
+ static readonly NAME = "or-rules-request-add";
188
+ constructor(detail: AddEventDetail);
189
+ }
190
+ export declare class OrRulesAddEvent extends CustomEvent<AddEventDetail> {
191
+ static readonly NAME = "or-rules-add";
192
+ constructor(detail: AddEventDetail);
193
+ }
194
+ export declare class OrRulesRequestDeleteEvent extends CustomEvent<RequestEventDetail<RulesetNode[]>> {
195
+ static readonly NAME = "or-rules-request-delete";
196
+ constructor(request: RulesetNode[]);
197
+ }
198
+ export type SaveResult = {
199
+ success: boolean;
200
+ ruleset: RulesetUnion;
201
+ isNew: boolean;
202
+ };
203
+ export declare class OrRulesRequestSaveEvent extends CustomEvent<RequestEventDetail<RulesetUnion>> {
204
+ static readonly NAME = "or-rules-request-save";
205
+ constructor(ruleset: RulesetUnion);
206
+ }
207
+ export declare class OrRulesSaveEvent extends CustomEvent<SaveResult> {
208
+ static readonly NAME = "or-rules-save";
209
+ constructor(result: SaveResult);
210
+ }
211
+ export declare class OrRulesDeleteEvent extends CustomEvent<RulesetUnion[]> {
212
+ static readonly NAME = "or-rules-delete";
213
+ constructor(rulesets: RulesetUnion[]);
214
+ }
215
+ declare global {
216
+ export interface HTMLElementEventMap {
217
+ [OrRulesRuleUnsupportedEvent.NAME]: OrRulesRuleUnsupportedEvent;
218
+ [OrRulesRuleChangedEvent.NAME]: OrRulesRuleChangedEvent;
219
+ [OrRulesRequestSelectionEvent.NAME]: OrRulesRequestSelectionEvent;
220
+ [OrRulesSelectionEvent.NAME]: OrRulesSelectionEvent;
221
+ [OrRulesRequestAddEvent.NAME]: OrRulesRequestAddEvent;
222
+ [OrRulesAddEvent.NAME]: OrRulesAddEvent;
223
+ [OrRulesRequestDeleteEvent.NAME]: OrRulesRequestDeleteEvent;
224
+ [OrRulesRequestSaveEvent.NAME]: OrRulesRequestSaveEvent;
225
+ [OrRulesSaveEvent.NAME]: OrRulesSaveEvent;
226
+ [OrRulesDeleteEvent.NAME]: OrRulesDeleteEvent;
227
+ }
228
+ }
229
+ export declare const style: import("lit").CSSResult;
230
+ declare const OrRules_base: (new (...args: any[]) => {
231
+ _i18nextJustInitialized: boolean;
232
+ connectedCallback(): void;
233
+ disconnectedCallback(): void;
234
+ shouldUpdate(changedProps: import("lit").PropertyValueMap<any> | Map<PropertyKey, unknown>): any;
235
+ initCallback: (options: import("i18next").InitOptions) => void;
236
+ langChangedCallback: () => void;
237
+ readonly isConnected: boolean;
238
+ }) & typeof LitElement;
239
+ export declare class OrRules extends OrRules_base {
240
+ static DEFAULT_RULESET_NAME: string;
241
+ static get styles(): import("lit").CSSResult[];
242
+ readonly?: boolean;
243
+ config?: RulesConfig;
244
+ realm?: string;
245
+ language?: RulesetLang;
246
+ selectedIds?: number[];
247
+ private _isValidRule?;
248
+ private _rulesList;
249
+ private _viewer;
250
+ constructor();
251
+ protected render(): TemplateResult<1>;
252
+ refresh(): void;
253
+ protected isReadonly(): boolean;
254
+ protected _confirmContinue(action: () => void): void;
255
+ protected _onRuleSelectionRequested(event: OrRulesRequestSelectionEvent): void;
256
+ protected _onRuleSelectionChanged(event: OrRulesSelectionEvent): void;
257
+ protected _onRuleAdd(event: OrRulesAddEvent): void;
258
+ protected _onRuleSave(event: OrRulesSaveEvent): Promise<void>;
259
+ }
package/lib/index.js ADDED
@@ -0,0 +1,52 @@
1
+ var __decorate=this&&this.__decorate||function(e,t,r,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var l=e.length-1;l>=0;l--)(o=e[l])&&(i=(n<3?o(i):n>3?o(t,r,i):o(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i},__awaiter=this&&this.__awaiter||function(e,t,r,s){return new(r||(r=Promise))((function(o,n){function i(e){try{a(s.next(e))}catch(e){n(e)}}function l(e){try{a(s.throw(e))}catch(e){n(e)}}function a(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,l)}a((s=s.apply(e,t||[])).next())}))};import{css,html,LitElement,unsafeCSS}from"lit";import{customElement,property,query}from"lit/decorators.js";import manager,{DefaultBoxShadow,DefaultColor1,DefaultColor2,DefaultColor3,DefaultColor4,DefaultColor5,DefaultColor6,Util}from"@openremote/core";import i18next from"i18next";import"@openremote/or-icon";import{AssetModelUtil}from"@openremote/model";import"@openremote/or-translate";import"@openremote/or-mwc-components/or-mwc-drawer";import{translate}from"@openremote/or-translate";import"./or-rule-list";import"./or-rule-viewer";import"./flow-viewer/flow-viewer";import{showOkCancelDialog}from"@openremote/or-mwc-components/or-mwc-dialog";export{buttonStyle}from"./style";export var TimeTriggerType;!function(e){e.TIME_OF_DAY="TIME_OF_DAY"}(TimeTriggerType||(TimeTriggerType={}));export var AssetQueryOperator;!function(e){e.VALUE_EMPTY="empty",e.VALUE_NOT_EMPTY="notEmpty",e.EQUALS="equals",e.NOT_EQUALS="notEquals",e.GREATER_THAN="greaterThan",e.GREATER_EQUALS="greaterEquals",e.LESS_THAN="lessThan",e.LESS_EQUALS="lessEquals",e.BETWEEN="between",e.NOT_BETWEEN="notBetween",e.CONTAINS="contains",e.NOT_CONTAINS="notContains",e.STARTS_WITH="startsWith",e.NOT_STARTS_WITH="notStartsWith",e.ENDS_WITH="endsWith",e.NOT_ENDS_WITH="notEndsWith",e.CONTAINS_KEY="containsKey",e.NOT_CONTAINS_KEY="notContainsKey",e.INDEX_CONTAINS="indexContains",e.NOT_INDEX_CONTAINS="notIndexContains",e.LENGTH_EQUALS="lengthEquals",e.NOT_LENGTH_EQUALS="notLengthEquals",e.LENGTH_GREATER_THAN="lengthGreaterThan",e.LENGTH_LESS_THAN="lengthLessThan",e.IS_TRUE="true",e.IS_FALSE="false",e.WITHIN_RADIUS="withinRadius",e.OUTSIDE_RADIUS="outsideRadius",e.WITHIN_RECTANGLE="withinRectangle",e.OUTSIDE_RECTANGLE="outsideRectangle"}(AssetQueryOperator||(AssetQueryOperator={}));export const RuleViewInfoMap={JSON:{viewTemplateProvider:(e,t,r)=>html`<or-rule-json-viewer id="rule-view" .ruleset="${e}" .config="${t}" .readonly="${r}"></or-rule-json-viewer>`},FLOW:{viewTemplateProvider:(e,t,r)=>html`<flow-editor id="rule-view" .ruleset="${e}" .readonly="${r}"></flow-editor>`},GROOVY:{viewTemplateProvider:(e,t,r)=>html`
2
+ <or-rule-text-viewer id="rule-view" .ruleset="${e}" .config="${t}" .readonly="${r}"></or-rule-text-viewer>
3
+ `,viewRulesetTemplate:'package demo.rules\n\nimport org.openremote.manager.rules.RulesBuilder\nimport org.openremote.model.notification.*\nimport org.openremote.model.attribute.AttributeInfo\nimport org.openremote.model.asset.Asset\nimport org.openremote.model.asset.impl.*\nimport org.openremote.model.query.*\nimport org.openremote.model.query.filter.*\nimport org.openremote.model.rules.Assets\nimport org.openremote.model.rules.Notifications\nimport org.openremote.model.rules.Users\n\nimport java.util.logging.Logger\nimport java.util.stream.Collectors\n\nLogger LOG = binding.LOG\nRulesBuilder rules = binding.rules\nNotifications notifications = binding.notifications\nUsers users = binding.users\nAssets assets = binding.assets\n\n/*\n* A groovy rule is made up of a when closure (LHS) which must return a boolean indicating whether the then closure (RHS)\n* should be executed. The rule engine will periodically evaluate the when closure and if it evaluates to true then the\n* rule then closure will execute.\n*\n* NOTE: DO NOT MODIFY THE FACTS IN THE WHEN CLOSURE THIS SHOULD BE DONE IN THE THEN CLOSURE\n*\n* To avoid an infinite rule loop the when closure should not continually return true for subsequent executions\n* so either the then closure should perform an action that prevents the when closure from matching on subsequent\n* evaluations, or custom facts should be used, some ideas:\n*\n* - Change the value of an attribute being matched in the when closure (which will prevent it matching on subsequent evaluations)\n* - Insert a custom fact on first match and test this fact in the when closure to determine when the rule should match again (for\n* example if a rule should match whenever the asset state changes the asset state timestamp can be used)\n*/\n\nrules.add()\n .name("Example rule")\n .when({\n facts ->\n\n // Find first matching asset state using an asset query\n\n facts.matchFirstAssetState(\n\n // Find asset state by asset type and attribute name\n new AssetQuery().types(ThingAsset).attributeNames("someAttribute")\n\n // Find asset state by asset ID and attribute name\n //new AssetQuery().ids("7CaBoyiDhtdf2kn1Xso1w5").attributeNames("someAttribute")\n\n // Find asset state by asset type, attribute name and value string predicate\n //new AssetQuery().types(ThingAsset).attributes(\n // new AttributePredicate()\n // .name("someAttribute")\n // .value(new StringPredicate()\n // .value("someValue")\n // .match(AssetQuery.Match.EXACT)\n // .caseSensitive(true)))\n\n // Find asset state by asset type and location attribute predicate\n //new AssetQuery().types(ThingAsset).attributes(\n // new AttributePredicate()\n // .name(Asset.LOCATION)\n // .value(new RadialGeofencePredicate()\n // .radius(100)\n // .lat(50.0)\n // .lng(0.0)))\n\n ).map { assetState ->\n\n // Use logging to help with debugging if needed //LOG.info("ATTRIBUTE FOUND")\n\n // Check if this rule really should fire this time\n Optional<Long> lastFireTimestamp = facts.getOptional("someAttribute")\n if (lastFireTimestamp.isPresent() && assetState.getTimestamp() <= lastFireTimestamp.get()) {\n return false\n }\n\n // OK to fire if we reach here\n\n // Compute and bind any facts required for the then closure\n facts.bind("assetState", assetState)\n true\n }.orElseGet {\n // Asset state didn\'t match so clear out any custom facts to allow the rule to fire next time the when closure matches\n facts.remove("someAttribute")\n false\n }\n\n})\n .then({\n facts ->\n\n // Extract any binded facts\n AttributeInfo assetState = facts.bound("assetState")\n\n // Insert the custom fact to prevent rule loop\n facts.put("someAttribute", assetState.getTimestamp())\n\n // Write to attributes\n def otherAttributeValue = null\n if (assetState.getValue().orElse{null} == "Value 1") {\n otherAttributeValue = "Converted Value 1"\n } else if (assetState.getValue().orElse{null} == "Value 2") {\n otherAttributeValue = "Converted Value 2"\n } else {\n otherAttributeValue = "Unknown"\n }\n assets.dispatch(assetState.id, "otherAttribute", otherAttributeValue)\n\n // Generate notifications (useful for rules that check if an attribute is out of range)\n //notifications.send(new Notification()\n // .setName("Attribute alert")\n // .setMessage(new EmailNotificationMessage()\n // .setTo("no-reply@openremote.io")\n // .setSubject("Attribute out of range: Attribute=${assetState.name} Asset ID=${assetState.id}")\n // .setText("Some text body")\n // .setHtml("<p>Or some HTML body</p>")\n // )\n //)\n})'},JAVASCRIPT:{viewTemplateProvider:(e,t,r)=>html`
4
+ <or-rule-text-viewer id="rule-view" .ruleset="${e}" .config="${t}" .readonly="${r}"></or-rule-text-viewer>
5
+ `,viewRulesetTemplate:'rules = [ // An array of rules, add more objects to add more rules\n {\n name: "Set bar to foo on someAttribute",\n description: "An example rule that sets \'bar\' on someAttribute when it is \'foo\'",\n when: function(facts) {\n return facts.matchAssetState(\n new AssetQuery().types(AssetType.THING).attributeValue("someAttribute", "foo")\n ).map(function(thing) {\n facts.bind("assetId", thing.id);\n return true;\n }).orElse(false);\n },\n then: function(facts) {\n facts.updateAssetState(\n facts.bound("assetId"), "someAttribute", "bar"\n );\n }\n }\n]'}};function getAssetDescriptorFromSection(e,t,r){if(!t||!t.descriptors)return;const s=r?t.descriptors.action:t.descriptors.when,o=t.descriptors.all;return(s&&s.assets?s.assets[e]?s.assets[e]:s.assets["*"]:void 0)||(o&&o.assets?o.assets[e]?o.assets[e]:o.assets["*"]:void 0)}export function getAssetTypeFromQuery(e){return e&&e.types&&e.types.length>0&&e.types[0]?e.types[0]:void 0}export function getAssetIdsFromQuery(e){return e&&e.ids?[...e.ids]:void 0}export const getAssetTypes=()=>__awaiter(void 0,void 0,void 0,(function*(){return AssetModelUtil.getAssetTypeInfos().map((e=>e.assetDescriptor.name))}));export function getAssetInfos(e,t){const r=AssetModelUtil.getAssetDescriptors();return getAssetTypes().then((s=>{let o=s||[],n=[];if(!e||!e.descriptors)return r.map((e=>AssetModelUtil.getAssetTypeInfo(e)));const i=t?e.descriptors.action:e.descriptors.when;return(i&&i.includeAssets||e.descriptors.all&&e.descriptors.all.includeAssets)&&(o=[],i&&i.includeAssets&&(o=[...i.includeAssets]),e.descriptors.all&&e.descriptors.all.includeAssets&&(o=[...e.descriptors.all.includeAssets])),i&&i.excludeAssets&&(n=[...i.excludeAssets]),e.descriptors.all&&e.descriptors.all.excludeAssets&&(n=n.concat(e.descriptors.all.excludeAssets)),r.filter((e=>!(o.length>0&&o.indexOf(e.name)<0)&&n.indexOf(e.name)<0)).map((r=>{let s=AssetModelUtil.getAssetTypeInfo(r);const o=getAssetDescriptorFromSection(r.name,e,t);if(!o)return s;const n={assetDescriptor:s.assetDescriptor?Object.assign({},s.assetDescriptor):{descriptorType:"asset"},attributeDescriptors:s.attributeDescriptors?[...s.attributeDescriptors]:[],metaItemDescriptors:s.metaItemDescriptors?[...s.metaItemDescriptors]:[],valueDescriptors:s.valueDescriptors?[...s.valueDescriptors]:[]};if(o.icon&&(n.assetDescriptor.icon=o.icon),o.color&&(n.assetDescriptor.colour=o.color),n.attributeDescriptors){const t=void 0!==o.includeAttributes?o.includeAttributes:void 0,r=void 0!==o.excludeAttributes?o.excludeAttributes:void 0;(t||r)&&(n.attributeDescriptors=n.attributeDescriptors.filter((e=>(!t||t.some((t=>Util.stringMatch(t,e.name))))&&(!r||!r.some((t=>Util.stringMatch(t,e.name))))))),o.attributeDescriptors&&n.attributeDescriptors.map((t=>{let r=o.attributeDescriptors[t.name];r||(r=i&&i.attributeDescriptors?i.attributeDescriptors[t.name]:void 0),r||(r=e.descriptors.all&&e.descriptors.all.attributeDescriptors?e.descriptors.all.attributeDescriptors[t.name]:void 0),r&&(r.type&&(t.type=r.type),r.format&&(t.format=r.format),r.units&&(t.units=r.units),r.constraints&&(t.constraints=t.constraints?[...r.constraints,...t.constraints]:r.constraints))}))}return n}))}))}export function getAssetsByType(e,t,r){return __awaiter(this,void 0,void 0,(function*(){if(null==r?void 0:r.has(e))return{assets:null==r?void 0:r.get(e),loadedAssets:r};{r||(r=new Map);const s={types:[e],orderBy:{property:"NAME"}};null!=t&&(s.realm={name:t});const o=yield manager.rest.api.AssetResource.queryAssets(s);return r.set(e,o.data),{assets:o.data,loadedAssets:r}}}))}export class OrRulesRuleChangedEvent extends CustomEvent{constructor(e){super(OrRulesRuleChangedEvent.NAME,{bubbles:!0,composed:!0,detail:e})}}OrRulesRuleChangedEvent.NAME="or-rules-rule-changed";export class OrRulesRuleUnsupportedEvent extends CustomEvent{constructor(){super(OrRulesRuleUnsupportedEvent.NAME,{bubbles:!0,composed:!0})}}OrRulesRuleUnsupportedEvent.NAME="or-rules-rule-unsupported";export class OrRulesRequestSelectionEvent extends CustomEvent{constructor(e){super(OrRulesRequestSelectionEvent.NAME,{bubbles:!0,composed:!0,detail:{detail:e,allow:!0}})}}OrRulesRequestSelectionEvent.NAME="or-rules-request-selection";export class OrRulesSelectionEvent extends CustomEvent{constructor(e){super(OrRulesSelectionEvent.NAME,{bubbles:!0,composed:!0,detail:e})}}OrRulesSelectionEvent.NAME="or-rules-selection";export class OrRulesRequestAddEvent extends CustomEvent{constructor(e){super(OrRulesRequestAddEvent.NAME,{bubbles:!0,composed:!0,detail:{detail:e,allow:!0}})}}OrRulesRequestAddEvent.NAME="or-rules-request-add";export class OrRulesAddEvent extends CustomEvent{constructor(e){super(OrRulesAddEvent.NAME,{bubbles:!0,composed:!0,detail:e})}}OrRulesAddEvent.NAME="or-rules-add";export class OrRulesRequestDeleteEvent extends CustomEvent{constructor(e){super(OrRulesRequestDeleteEvent.NAME,{bubbles:!0,composed:!0,detail:{detail:e,allow:!0}})}}OrRulesRequestDeleteEvent.NAME="or-rules-request-delete";export class OrRulesRequestSaveEvent extends CustomEvent{constructor(e){super(OrRulesRequestSaveEvent.NAME,{bubbles:!0,composed:!0,detail:{allow:!0,detail:e}})}}OrRulesRequestSaveEvent.NAME="or-rules-request-save";export class OrRulesSaveEvent extends CustomEvent{constructor(e){super(OrRulesSaveEvent.NAME,{bubbles:!0,composed:!0,detail:e})}}OrRulesSaveEvent.NAME="or-rules-save";export class OrRulesDeleteEvent extends CustomEvent{constructor(e){super(OrRulesDeleteEvent.NAME,{bubbles:!0,composed:!0,detail:e})}}OrRulesDeleteEvent.NAME="or-rules-delete";export const style=css`
6
+
7
+ :host {
8
+ display: flex;
9
+ height: 100%;
10
+ width: 100%;
11
+
12
+ --internal-or-rules-background-color: var(--or-rules-background-color, var(--or-app-color2, ${unsafeCSS(DefaultColor2)}));
13
+ --internal-or-rules-text-color: var(--or-rules-text-color, inherit);
14
+ --internal-or-rules-button-color: var(--or-rules-button-color, var(--or-app-color4, ${unsafeCSS(DefaultColor4)}));
15
+ --internal-or-rules-invalid-color: var(--or-rules-invalid-color, var(--or-app-color6, ${unsafeCSS(DefaultColor6)}));
16
+ --internal-or-rules-panel-color: var(--or-rules-panel-color, var(--or-app-color1, ${unsafeCSS(DefaultColor1)}));
17
+ --internal-or-rules-line-color: var(--or-rules-line-color, var(--or-app-color5, ${unsafeCSS(DefaultColor5)}));
18
+
19
+ --internal-or-rules-list-selected-color: var(--or-rules-list-selected-color, var(--or-app-color2, ${unsafeCSS(DefaultColor2)}));
20
+ --internal-or-rules-list-text-color: var(--or-rules-list-text-color, var(--or-app-color3, ${unsafeCSS(DefaultColor3)}));
21
+ --internal-or-rules-list-text-size: var(--or-rules-list-text-size, 15px);
22
+ --internal-or-rules-list-header-height: var(--or-rules-list-header-height, 48px);
23
+
24
+ --internal-or-rules-list-icon-color-error: var(--or-rules-list-icon-color-error, var(--or-app-color6, ${unsafeCSS(DefaultColor6)}));
25
+ --internal-or-rules-list-icon-color-ok: var(--or-rules-list-icon-color-ok, var(--or-app-color5, ${unsafeCSS(DefaultColor5)}));
26
+
27
+ --internal-or-rules-list-button-size: var(--or-rules-list-button-size, 24px);
28
+
29
+ --internal-or-rules-header-background-color: var(--or-rules-header-background-color, var(--or-app-color3, ${unsafeCSS(DefaultColor3)}));
30
+ --internal-or-rules-header-height: var(--or-rules-header-height, unset);
31
+
32
+ --or-panel-background-color: var(--internal-or-rules-panel-color);
33
+ }
34
+
35
+ or-rule-list {
36
+ min-width: 300px;
37
+ width: 300px;
38
+ z-index: 2;
39
+ display: flex;
40
+ flex-direction: column;
41
+ background-color: var(--internal-or-rules-panel-color);
42
+ color: var(--internal-or-rules-list-text-color);
43
+ box-shadow: ${unsafeCSS(DefaultBoxShadow)};
44
+ }
45
+
46
+ or-rule-viewer {
47
+ z-index: 1;
48
+ }
49
+ `;let OrRules=class extends(translate(i18next)(LitElement)){static get styles(){return[style]}constructor(){super(),this.addEventListener(OrRulesRequestSelectionEvent.NAME,this._onRuleSelectionRequested),this.addEventListener(OrRulesSelectionEvent.NAME,this._onRuleSelectionChanged),this.addEventListener(OrRulesAddEvent.NAME,this._onRuleAdd),this.addEventListener(OrRulesSaveEvent.NAME,this._onRuleSave)}render(){return html`
50
+ <or-rule-list id="rule-list" .config="${this.config}" .language="${this.language}" .selectedIds="${this.selectedIds}"></or-rule-list>
51
+ <or-rule-viewer id="rule-viewer" .config="${this.config}" .readonly="${this.isReadonly()}"></or-rule-viewer>
52
+ `}refresh(){this._viewer.ruleset=void 0,this._rulesList.refresh()}isReadonly(){return this.readonly||!manager.hasRole("write:rules")}_confirmContinue(e){this._viewer.modified?showOkCancelDialog(i18next.t("loseChanges"),i18next.t("confirmContinueRulesetModified"),i18next.t("discard")).then((t=>{t&&e()})):e()}_onRuleSelectionRequested(e){this._viewer.modified&&(e.detail.allow=!1,this._confirmContinue((()=>{const t=e.detail.detail.newNodes;Util.objectsEqual(t,e.detail.detail.oldNodes)?this._viewer.ruleset=Object.assign({},t[0].ruleset):(this.selectedIds=t.map((e=>e.ruleset.id)),this._viewer.ruleset=1===t.length?t[0].ruleset:void 0)})))}_onRuleSelectionChanged(e){const t=e.detail.newNodes;this.selectedIds=t.map((e=>e.ruleset.id)),this._viewer.ruleset=1===t.length?Object.assign({},t[0].ruleset):void 0}_onRuleAdd(e){this._viewer.ruleset=e.detail.ruleset}_onRuleSave(e){return __awaiter(this,void 0,void 0,(function*(){yield this._rulesList.refresh(),e.detail.success&&e.detail.isNew&&(this.selectedIds=[e.detail.ruleset.id])}))}};OrRules.DEFAULT_RULESET_NAME="",__decorate([property({type:Boolean})],OrRules.prototype,"readonly",void 0),__decorate([property({type:Object})],OrRules.prototype,"config",void 0),__decorate([property({type:String})],OrRules.prototype,"realm",void 0),__decorate([property({type:String})],OrRules.prototype,"language",void 0),__decorate([property({type:Array})],OrRules.prototype,"selectedIds",void 0),__decorate([property({attribute:!1})],OrRules.prototype,"_isValidRule",void 0),__decorate([query("#rule-list")],OrRules.prototype,"_rulesList",void 0),__decorate([query("#rule-viewer")],OrRules.prototype,"_viewer",void 0),OrRules=__decorate([customElement("or-rules")],OrRules);export{OrRules};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAkB,SAAS,EAAC,MAAM,KAAK,CAAC;AACrE,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACjE,OAAO,OAAO,EAAE,EACZ,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,IAAI,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EACH,cAAc,EAiBjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,0BAA0B,CAAC;AAClC,OAAO,6CAA6C,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AACnD,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,2BAA2B,CAAC;AAKnC,OAAO,EAAC,kBAAkB,EAAC,MAAM,6CAA6C,CAAC;AAE/E,OAAO,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAepC,MAAM,CAAN,IAAY,eAEX;AAFD,WAAY,eAAe;IACvB,8CAA2B,CAAA;AAC/B,CAAC,EAFW,eAAe,KAAf,eAAe,QAE1B;AACD,MAAM,CAAN,IAAY,kBA+BX;AA/BD,WAAY,kBAAkB;IAC1B,2CAAqB,CAAA;IACrB,kDAA4B,CAAA;IAC5B,uCAAiB,CAAA;IACjB,8CAAwB,CAAA;IACxB,kDAA4B,CAAA;IAC5B,sDAAgC,CAAA;IAChC,4CAAsB,CAAA;IACtB,gDAA0B,CAAA;IAC1B,yCAAmB,CAAA;IACnB,gDAA0B,CAAA;IAC1B,2CAAqB,CAAA;IACrB,kDAA4B,CAAA;IAC5B,gDAA0B,CAAA;IAC1B,uDAAiC,CAAA;IACjC,4CAAsB,CAAA;IACtB,mDAA6B,CAAA;IAC7B,kDAA4B,CAAA;IAC5B,yDAAmC,CAAA;IACnC,sDAAgC,CAAA;IAChC,6DAAuC,CAAA;IACvC,oDAA8B,CAAA;IAC9B,2DAAqC,CAAA;IACrC,+DAAyC,CAAA;IACzC,yDAAmC,CAAA;IACnC,sCAAgB,CAAA;IAChB,wCAAkB,CAAA;IAClB,oDAA8B,CAAA;IAC9B,sDAAgC,CAAA;IAChC,0DAAoC,CAAA;IACpC,4DAAsC,CAAA;AAC1C,CAAC,EA/BW,kBAAkB,KAAlB,kBAAkB,QA+B7B;AA2FD,MAAM,CAAC,MAAM,eAAe,GAAyC;IACjE,IAAI,EAAE;QACF,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAA,iDAAiD,OAAO,cAAc,MAAM,gBAAgB,QAAQ,0BAA0B;KAC1L;IACD,IAAI,EAAE;QACF,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAA,yCAAyC,OAAO,gBAAgB,QAAQ,kBAAkB;KACtJ;IACD,MAAM,EAAE;QACJ,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAA;4DACL,OAAO,cAAc,MAAM,gBAAgB,QAAQ;SACtG;QACD,mBAAmB,EAAE,sBAAsB;YACvC,IAAI;YACJ,oDAAoD;YACpD,8CAA8C;YAC9C,uDAAuD;YACvD,2CAA2C;YAC3C,4CAA4C;YAC5C,uCAAuC;YACvC,8CAA8C;YAC9C,4CAA4C;YAC5C,mDAAmD;YACnD,2CAA2C;YAC3C,IAAI;YACJ,mCAAmC;YACnC,sCAAsC;YACtC,IAAI;YACJ,4BAA4B;YAC5B,sCAAsC;YACtC,uDAAuD;YACvD,+BAA+B;YAC/B,kCAAkC;YAClC,IAAI;YACJ,MAAM;YACN,4HAA4H;YAC5H,0HAA0H;YAC1H,qCAAqC;YACrC,KAAK;YACL,+FAA+F;YAC/F,KAAK;YACL,kHAAkH;YAClH,oHAAoH;YACpH,8DAA8D;YAC9D,KAAK;YACL,qIAAqI;YACrI,qIAAqI;YACrI,8GAA8G;YAC9G,MAAM;YACN,IAAI;YACJ,eAAe;YACf,mCAAmC;YACnC,mBAAmB;YACnB,gBAAgB;YAChB,IAAI;YACJ,mEAAmE;YACnE,IAAI;YACJ,uCAAuC;YACvC,IAAI;YACJ,wEAAwE;YACxE,wFAAwF;YACxF,IAAI;YACJ,sEAAsE;YACtE,wGAAwG;YACxG,IAAI;YACJ,gGAAgG;YAChG,oEAAoE;YACpE,sDAAsD;YACtD,8DAA8D;YAC9D,kEAAkE;YAClE,uEAAuE;YACvE,gFAAgF;YAChF,wEAAwE;YACxE,IAAI;YACJ,sFAAsF;YACtF,oEAAoE;YACpE,sDAAsD;YACtD,2DAA2D;YAC3D,0EAA0E;YAC1E,8DAA8D;YAC9D,4DAA4D;YAC5D,6DAA6D;YAC7D,IAAI;YACJ,iCAAiC;YACjC,IAAI;YACJ,6DAA6D;YAC7D,+CAA+C;YAC/C,IAAI;YACJ,kEAAkE;YAClE,uFAAuF;YACvF,4GAA4G;YAC5G,gCAAgC;YAChC,iBAAiB;YACjB,IAAI;YACJ,8CAA8C;YAC9C,IAAI;YACJ,2EAA2E;YAC3E,sDAAsD;YACtD,oBAAoB;YACpB,yBAAyB;YACzB,sIAAsI;YACtI,+CAA+C;YAC/C,qBAAqB;YACrB,aAAa;YACb,IAAI;YACJ,MAAM;YACN,mBAAmB;YACnB,gBAAgB;YAChB,IAAI;YACJ,uCAAuC;YACvC,kEAAkE;YAClE,IAAI;YACJ,0DAA0D;YAC1D,mEAAmE;YACnE,IAAI;YACJ,kCAAkC;YAClC,0CAA0C;YAC1C,oEAAoE;YACpE,2DAA2D;YAC3D,2EAA2E;YAC3E,2DAA2D;YAC3D,oBAAoB;YACpB,iDAAiD;YACjD,aAAa;YACb,mFAAmF;YACnF,IAAI;YACJ,mGAAmG;YACnG,mDAAmD;YACnD,mDAAmD;YACnD,gEAAgE;YAChE,gEAAgE;YAChE,6HAA6H;YAC7H,0DAA0D;YAC1D,oEAAoE;YACpE,uBAAuB;YACvB,eAAe;YACf,IAAI;KACX;IACD,UAAU,EAAE;QACR,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAA;4DACL,OAAO,cAAc,MAAM,gBAAgB,QAAQ;SACtG;QACD,mBAAmB,EAAE,sEAAsE;YACvF,SAAS;YACT,sDAAsD;YACtD,+FAA+F;YAC/F,mCAAmC;YACnC,6CAA6C;YAC7C,sGAAsG;YACtG,uCAAuC;YACvC,sDAAsD;YACtD,gCAAgC;YAChC,iCAAiC;YACjC,cAAc;YACd,mCAAmC;YACnC,uCAAuC;YACvC,wEAAwE;YACxE,kBAAkB;YAClB,aAAa;YACb,SAAS;YACT,GAAG;KACV;CACJ,CAAA;AAED,SAAS,6BAA6B,CAAC,SAAiB,EAAE,MAA+B,EAAE,eAAwB;IAC/G,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO;IACX,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;IACtF,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;IAE1C,MAAM,UAAU,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvI,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,OAAO,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9I,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAkB;IACpD,OAAO,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzG,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAkB;IACnD,OAAO,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAA4B,GAAS,EAAE;IAC7D,2GAA2G;IAC3G,+GAA+G;IAC/G,OAAO,cAAc,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAgB,CAAC,IAAK,CAAC,CAAC;IACjF,sEAAsE;IACtE,gBAAgB;IAChB,yBAAyB;IACzB,SAAS;IACT,eAAe;IACf,sCAAsC;IACtC,SAAS;IACT,sBAAsB;IACtB,MAAM;IACN,EAAE;IACF,mCAAmC;IACnC,sDAAsD;IACtD,IAAI;AACR,CAAC,CAAA,CAAA;AAED,MAAM,UAAU,aAAa,CAAC,MAA+B,EAAE,eAAwB;IACnF,MAAM,gBAAgB,GAAsB,cAAc,CAAC,mBAAmB,EAAE,CAAC;IAEjF,OAAO,aAAa,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;QAC9C,IAAI,iBAAiB,GAAa,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,IAAI,kBAAkB,GAAa,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACjC,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAE,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAEtF,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YACzG,iBAAiB,GAAG,EAAE,CAAC;YAEvB,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBACnC,iBAAiB,GAAG,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBACjE,iBAAiB,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAClE,CAAC;QACL,CAAC;QAED,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACnC,kBAAkB,GAAG,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACjE,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzF,CAAC;QAED,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YAClC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,IAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1E,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,OAAO,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,IAAK,CAAC,GAAG,CAAC,CAAC;QAEpD,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAEV,IAAI,QAAQ,GAAG,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAE,CAAC;YAEpD,wDAAwD;YACxD,MAAM,gBAAgB,GAAG,6BAA6B,CAAC,EAAE,CAAC,IAAK,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;YAC1F,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpB,OAAO,QAAQ,CAAC;YACpB,CAAC;YAED,MAAM,gBAAgB,GAAkB;gBACpC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,mBAAK,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,EAAC,cAAc,EAAE,OAAO,EAAC;gBACrG,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC7F,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC1F,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE;aACpF,CAAC;YAEF,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC;gBACxB,gBAAgB,CAAC,eAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC;YACnE,CAAC;YACD,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBACzB,gBAAgB,CAAC,eAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC;YACtE,CAAC;YAED,iCAAiC;YACjC,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;gBACxC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7H,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;gBAE7H,IAAI,kBAAkB,IAAI,kBAAkB,EAAE,CAAC;oBAC3C,gBAAgB,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACzF,CAAC,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAG,GAAG,CAAC,IAAK,CAAC,CAAC,CAAC;2BACzF,CAAC,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAG,GAAG,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1G,CAAC;gBAED,qCAAqC;gBACrC,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;oBACxC,gBAAgB,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,EAAE;wBAC9D,IAAI,yBAAyB,GAAqC,gBAAgB,CAAC,oBAAqB,CAAC,mBAAmB,CAAC,IAAK,CAAC,CAAC;wBACpI,IAAI,CAAC,yBAAyB,EAAE,CAAC;4BAC7B,yBAAyB,GAAG,OAAO,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;wBAC9I,CAAC;wBACD,IAAI,CAAC,yBAAyB,EAAE,CAAC;4BAC7B,yBAAyB,GAAG,MAAM,CAAC,WAAY,CAAC,GAAG,IAAI,MAAM,CAAC,WAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,WAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;wBAC9L,CAAC;wBACD,IAAI,yBAAyB,EAAE,CAAC;4BAC5B,IAAI,yBAAyB,CAAC,IAAI,EAAE,CAAC;gCACjC,mBAAmB,CAAC,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC;4BAC9D,CAAC;4BACD,IAAI,yBAAyB,CAAC,MAAM,EAAE,CAAC;gCACnC,mBAAmB,CAAC,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC;4BAClE,CAAC;4BACD,IAAI,yBAAyB,CAAC,KAAK,EAAE,CAAC;gCAClC,mBAAmB,CAAC,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC;4BAChE,CAAC;4BACD,IAAI,yBAAyB,CAAC,WAAW,EAAE,CAAC;gCACxC,mBAAmB,CAAC,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,WAAW,EAAC,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,WAAW,CAAC;4BAC9L,CAAC;wBACL,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;YACD,OAAO,gBAAgB,CAAC;QAC5B,CAAC,CAAC,CAAC;IAEP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,sCAAsC;AACtC,+FAA+F;AAC/F,MAAM,UAAgB,eAAe,CAAC,IAAY,EAAE,KAAc,EAAE,YAAmC;;QACnG,IAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO;gBACH,MAAM,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,CAAC,IAAI,CAAC;gBAC/B,YAAY,EAAE,YAAY;aAC7B,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,IAAG,CAAC,YAAY,EAAE,CAAC;gBACf,YAAY,GAAG,IAAI,GAAG,EAAiB,CAAC;YAC5C,CAAC;YACD,MAAM,UAAU,GAAe;gBAC3B,KAAK,EAAE,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE;oBACL,QAAQ,8CAAiC;iBAC5C;aACJ,CAAA;YACD,IAAG,KAAK,IAAI,SAAS,EAAE,CAAC;gBACpB,UAAU,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;YACtC,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC9E,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO;gBACH,MAAM,EAAE,QAAQ,CAAC,IAAI;gBACrB,YAAY,EAAE,YAAY;aAC7B,CAAC;QACN,CAAC;IAEL,CAAC;CAAA;AAED,MAAM,OAAO,uBAAwB,SAAQ,WAAoB;IAI7D,YAAY,KAAc;QACtB,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE;YAChC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,KAAK;SAChB,CAAC,CAAC;IACP,CAAC;;AARsB,4BAAI,GAAG,uBAAuB,CAAC;AAW1D,MAAM,OAAO,2BAA4B,SAAQ,WAAiB;IAI9D;QACI,KAAK,CAAC,2BAA2B,CAAC,IAAI,EAAE;YACpC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;IACP,CAAC;;AAPsB,gCAAI,GAAG,2BAA2B,CAAC;AAe9D,MAAM,OAAO,4BAA6B,SAAQ,WAAsD;IAIpG,YAAY,OAA8B;QACtC,KAAK,CAAC,4BAA4B,CAAC,IAAI,EAAE;YACrC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACJ,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,IAAI;aACd;SACJ,CAAC,CAAC;IACP,CAAC;;AAXsB,iCAAI,GAAG,4BAA4B,CAAC;AAc/D,MAAM,OAAO,qBAAsB,SAAQ,WAAkC;IAIzE,YAAY,KAA4B;QACpC,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE;YAC9B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,KAAK;SAChB,CAAC,CAAC;IACP,CAAC;;AARsB,0BAAI,GAAG,oBAAoB,CAAC;AAgBvD,MAAM,OAAO,sBAAuB,SAAQ,WAA+C;IAIvF,YAAY,MAAsB;QAC9B,KAAK,CAAC,sBAAsB,CAAC,IAAI,EAAE;YAC/B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACJ,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,IAAI;aACd;SACJ,CAAC,CAAC;IACP,CAAC;;AAXsB,2BAAI,GAAG,sBAAsB,CAAC;AAczD,MAAM,OAAO,eAAgB,SAAQ,WAA2B;IAI5D,YAAY,MAAsB;QAC9B,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE;YACxB,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;IACP,CAAC;;AARsB,oBAAI,GAAG,cAAc,CAAC;AAWjD,MAAM,OAAO,yBAA0B,SAAQ,WAA8C;IAIzF,YAAY,OAAsB;QAC9B,KAAK,CAAC,yBAAyB,CAAC,IAAI,EAAE;YAClC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACJ,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,IAAI;aACd;SACJ,CAAC,CAAC;IACP,CAAC;;AAXsB,8BAAI,GAAG,yBAAyB,CAAC;AAoB5D,MAAM,OAAO,uBAAwB,SAAQ,WAA6C;IAItF,YAAY,OAAqB;QAC7B,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE;YAChC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACJ,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,OAAO;aAClB;SACJ,CAAC,CAAC;IACP,CAAC;;AAXsB,4BAAI,GAAG,uBAAuB,CAAC;AAc1D,MAAM,OAAO,gBAAiB,SAAQ,WAAuB;IAIzD,YAAY,MAAkB;QAC1B,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE;YACzB,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;IACP,CAAC;;AARsB,qBAAI,GAAG,eAAe,CAAC;AAWlD,MAAM,OAAO,kBAAmB,SAAQ,WAA2B;IAI/D,YAAY,QAAwB;QAChC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE;YAC3B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,QAAQ;SACnB,CAAC,CAAC;IACP,CAAC;;AARsB,uBAAI,GAAG,iBAAiB,CAAC;AA0BpD,eAAe;AACf,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;sGAO8E,SAAS,CAAC,aAAa,CAAC;;8FAEhC,SAAS,CAAC,aAAa,CAAC;gGACtB,SAAS,CAAC,aAAa,CAAC;4FAC5B,SAAS,CAAC,aAAa,CAAC;0FAC1B,SAAS,CAAC,aAAa,CAAC;;4GAEN,SAAS,CAAC,aAAa,CAAC;oGAChC,SAAS,CAAC,aAAa,CAAC;;;;gHAIZ,SAAS,CAAC,aAAa,CAAC;0GAC9B,SAAS,CAAC,aAAa,CAAC;;;;oHAId,SAAS,CAAC,aAAa,CAAC;;;;;;;;;;;;;;sBActH,SAAS,CAAC,gBAAgB,CAAC;;;;;;CAMhD,CAAC;AAGK,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,SAAS,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAIvD,MAAM,KAAK,MAAM;QACb,OAAO;YACH,KAAK;SACR,CAAC;IACN,CAAC;IA0BD;QACI,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACzF,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAChF,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACnE,CAAC;IAES,MAAM;QAEZ,OAAO,IAAI,CAAA;oDACiC,IAAI,CAAC,MAAM,gBAAgB,IAAI,CAAC,QAAQ,mBAAmB,IAAI,CAAC,WAAW;wDACvE,IAAI,CAAC,MAAM,gBAAgB,IAAI,CAAC,UAAU,EAAE;SAC3F,CAAC;IACN,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAES,UAAU;QAChB,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,4CAAwB,CAAC;IACrE,CAAC;IAES,gBAAgB,CAAC,MAAkB;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACxB,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,gCAAgC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;iBAC1G,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBACT,IAAI,EAAE,EAAE,CAAC;oBACL,MAAM,EAAE,CAAC;gBACb,CAAC;YACL,CAAC,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACJ,MAAM,EAAE,CAAC;QACb,CAAC;IACL,CAAC;IAES,yBAAyB,CAAC,KAAmC;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAEzC,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO;QACX,CAAC;QAED,8DAA8D;QAC9D,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAE3B,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;YACvB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzD,0DAA0D;gBAC1D,IAAI,CAAC,OAAO,CAAC,OAAO,qBAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAG,CAAC,CAAC;gBACzD,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAES,uBAAuB,CAAC,KAA4B;QAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAG,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,mBAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;IAClF,CAAC;IAES,UAAU,CAAC,KAAsB;QACvC,mCAAmC;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;IAChD,CAAC;IAEe,WAAW,CAAC,KAAuB;;YAC/C,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC7C,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAG,CAAC,CAAC;YAClD,CAAC;QACL,CAAC;KAAA;;AA7Ga,4BAAoB,GAAG,EAAE,AAAL,CAAM;AASjC;IADN,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;yCACA;AAGnB;IADN,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;uCACG;AAGrB;IADN,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;sCACH;AAGf;IADN,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;yCACK;AAGvB;IADN,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;4CACM;AAGtB;IADP,QAAQ,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;6CACE;AAGvB;IADP,KAAK,CAAC,YAAY,CAAC;2CACY;AAGxB;IADP,KAAK,CAAC,cAAc,CAAC;wCACS;AAhCtB,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAgHnB"}